/**
* General Trigger Preprocessor
*
* ⚠️ This function runs BEFORE the main function.
*
* It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS) 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, Kafka, NATS)
* @returns Processed data for main()
*/
export async function preprocessor(
event: {
kind: 'nats',
payload: string, // base64 encoded payload
servers: string[],
subject: string,
headers?: Record<string, string[]>,
status?: number,
description?: string,
length: number
},
) {
if (event.kind === 'nats') {
try {
const msg = atob(event.payload)
// Assuming the message received is a JSON value
const data = JSON.parse(msg);
return {
msg,
data,
nats: event.headers
};
} catch (error) {
throw new Error("Failed to parse NATS message as JSON");
}
}
throw new Error(`Expected nats trigger kind, got: ${event.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER preprocessor(), with its return values.
*
* @param msg - Decoded message content
* @param data - Parsed JSON data from the NATS message
* @param headers - messages headers
*/
export async function main(
msg: string,
data: any,
headers?: Record<string, string[]>
) {
// 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, Kafka, NATS) 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, Kafka, NATS)
* @returns Processed data for main()
*/
export async function preprocessor(
event: {
kind: 'nats',
payload: string, // base64 encoded payload
servers: string[],
subject: string,
headers?: Record<string, string[]>,
status?: number,
description?: string,
length: number
},
) {
if (event.kind === 'nats') {
try {
const msg = atob(event.payload)
// Assuming the message received is a JSON value
const data = JSON.parse(msg);
return {
msg,
data,
nats: event.headers
};
} catch (error) {
throw new Error("Failed to parse NATS message as JSON");
}
}
throw new Error(`Expected nats 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 NATS message
* @param headers - messages headers
*/
export async function main(
msg: string,
data: any,
headers?: Record<string, string[]>
) {
// 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, Kafka, NATS) 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, Kafka, NATS)
* @param msg - Message received from NATS
* @returns Processed data for main()
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs' | 'mqtt',
nats?: {
servers: string[],
subject: string,
headers?: Record<string, string[]>,
status?: number,
description?: string,
length: number
}
},
msg: string
) {
if (wm_trigger.kind === 'nats' && wm_trigger.nats) {
let data;
try {
// Assuming the message received is a JSON value
data = JSON.parse(msg);
} catch (error) {
throw new Error("Failed to parse NATS message as JSON");
}
return {
msg,
data,
nats: wm_trigger.nats
};
}
throw new Error(`Expected nats 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 NATS message
* @param nats - NATS metadata object
*/
export async function main(
msg: string,
data: any,
nats: {
servers: string[],
subject: string,
headers?: Record<string, string[]>,
status?: number,
description?: string,
length: number
}
) {
// 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, Kafka, NATS) 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, Kafka, NATS)
* @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',
nats?: {
servers: string[],
subject: string,
headers?: Record<string, string[]>,
status?: number,
description?: string,
length: number
}
},
msg: string
) {
if (wm_trigger.kind === 'nats' && wm_trigger.nats) {
let data;
try {
// Assuming the message received is a JSON value
data = JSON.parse(msg);
} catch (error) {
throw new Error("Failed to parse NATS message as JSON");
}
return {
msg,
data,
nats: wm_trigger.nats
};
}
throw new Error(`Expected nats 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 NATS message
* @param nats - NATS metadata object
*/
export async function main(
msg: string,
data: any,
nats: {
servers: string[],
subject: string,
headers?: Record<string, string[]>,
status?: number,
description?: string,
length: number
}
) {
// 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, Kafka, NATS) 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, Kafka, NATS)
* @param msg - Raw trigger data from NATS
* @returns Processed data for `main()`
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs',
nats?: {
servers: string[];
subject: string;
headers?: Record<string, string[]>;
status?: number;
description?: string;
length: number;
};
},
msg: string
) {
if (wm_trigger.kind === 'nats' && wm_trigger.nats) {
return {
nats: wm_trigger.nats,
msg
};
}
throw new Error(`Expected nats trigger kind, got: ${wm_trigger.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER `preprocessor()`, with its return values.
*
* @param msg - Raw message from NATS
* @param nats - NATS event metadata
*/
export async function main(
msg: string,
nats: {
servers: string[];
subject: string;
headers?: Record<string, string[]>;
status?: number;
description?: string;
length: number;
}
) {
// Implement the main function logic here
}
Submitted by dieriba.pro916 435 days ago