/**
* General Trigger Preprocessor
*
* ⚠️ This function runs BEFORE the main function.
*
* It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket) before passing it to main().
* Common tasks:
* - Convert binary payloads to string/JSON
* - Extract metadata
* - Filter messages
* - Add timestamps/context
*
* The returned object determines main() parameters:
* - {a: 1, b: 2} → main(a, b)
* - {msg} → main(msg)
*
* @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket)
* @returns Processed data for main()
*/
export async function preprocessor(
event: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs' | 'mqtt',
msg: string
url: string // The WebSocket URL
},
) {
if (event.kind === 'websocket') {
let data;
try {
// Assuming the message received is a JSON value
data = JSON.parse(event.msg);
} catch (error) {
throw new Error("Failed to parse WebSocket message as JSON");
}
return {
msg: event.msg,
data,
};
}
throw new Error(`Expected websocket trigger kind, got: ${event.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER preprocessor(), with its return values.
*
* @param msg - Raw message content
* @param data - Parsed JSON data from the WebSocket message
*/
export async function main(
msg: string,
data: any,
) {
// Implement the main function logic here
}
Submitted by hugo697 369 days ago
/**
* General Trigger Preprocessor
*
* ⚠️ This function runs BEFORE the main function.
*
* It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket) before passing it to main().
* Common tasks:
* - Convert binary payloads to string/JSON
* - Extract metadata
* - Filter messages
* - Add timestamps/context
*
* The returned object determines main() parameters:
* - {a: 1, b: 2} → main(a, b)
* - {msg} → main(msg)
*
* @param wm_trigger - Trigger details (e.g., MQTT, HTTP, SQS, WebSocket)
* @param msg - Message received from WebSocket server
* @returns Processed data for main()
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs' | 'mqtt',
websocket?: {
url: string // The WebSocket URL
}
},
msg: string
) {
if (wm_trigger.kind === 'websocket' && wm_trigger.websocket) {
let data;
try {
// Assuming the message received is a JSON value
data = JSON.parse(msg);
} catch (error) {
throw new Error("Failed to parse WebSocket message as JSON");
}
return {
msg,
data,
websocket: wm_trigger.websocket
};
}
throw new Error(`Expected websocket trigger kind, got: ${wm_trigger.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER preprocessor(), with its return values.
*
* @param msg - Raw message content
* @param data - Parsed JSON data from the WebSocket message
* @param websocket - WebSocket metadata object
*/
export async function main(
msg: string,
data: any,
websocket: {
url: string
}
) {
// Implement the main function logic here
}
Submitted by dieriba.pro916 435 days ago
/**
* General Trigger Preprocessor
*
* ⚠️ This function runs BEFORE the main function.
*
* It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket) before passing it to main().
* Common tasks:
* - Convert binary payloads to string/JSON
* - Extract metadata
* - Filter messages
* - Add timestamps/context
*
* The returned object determines main() parameters:
* - {a: 1, b: 2} → main(a, b)
* - {msg} → main(msg)
*
* @param wm_trigger - Trigger details (e.g., MQTT, HTTP, SQS, WebSocket)
* @param msg - Raw trigger data (format varies by trigger type)
* @returns Processed data for main()
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs' | 'mqtt',
websocket?: {
url: string // The WebSocket URL
}
},
msg: string
) {
if (wm_trigger.kind === 'websocket' && wm_trigger.websocket) {
let data;
try {
// Assuming the message received is a JSON value
data = JSON.parse(msg);
} catch (error) {
throw new Error("Failed to parse WebSocket message as JSON");
}
return {
msg,
data,
websocket: wm_trigger.websocket
};
}
throw new Error(`Expected websocket trigger kind, got: ${wm_trigger.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER preprocessor(), with its return values.
*
* @param msg - Raw message content
* @param data - Parsed JSON data from the WebSocket message
* @param websocket - WebSocket metadata object
*/
export async function main(
msg: string,
data: any,
websocket: {
url: string
}
) {
// Implement the main function logic here
}
Submitted by dieriba.pro916 435 days ago
/**
* General Trigger Preprocessor
*
* ⚠️ This function runs BEFORE the main function.
*
* It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket) before passing it to `main()`.
* Common tasks:
* - Convert binary payloads to string/JSON
* - Extract metadata
* - Filter messages
* - Add timestamps/context
*
* The returned object determines `main()` parameters:
* - `{a: 1, b: 2}` → `main(a, b)`
* - `{msg}` → `main(msg)`
*
* @param wm_trigger - Trigger details (e.g., MQTT, HTTP, SQS, WebSocket)
* @param msg - Raw trigger data from WebSocket server
* @returns Processed data for `main()`
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs',
websocket?: {
url: string; // The websocket url
};
},
msg: string
) {
if (wm_trigger.kind === 'websocket' && wm_trigger.websocket) {
return {
url: wm_trigger.websocket.url,
msg
};
}
throw new Error(`Expected websocket trigger kind, got: ${wm_trigger.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER `preprocessor()`, with its return values.
*
* @param url - The WebSocket URL
* @param msg - The WebSocket message received
*/
export async function main(url: string, msg: string) {
// Implement the main function logic here
}
Submitted by dieriba.pro916 435 days ago