/**
* 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)`
* - `{http}` → `main(http)`
*
* @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
* @returns Processed data for `main()`
*/
export async function preprocessor(
event: {
kind: 'http';
body: any;
raw_string: string | null;
route: string;
path: string;
method: string;
params: Record<string, string>; // path params
query: Record<string, string>; // query params
headers: Record<string, string>;
}
) {
if (event.kind === 'http') {
return {
body: event.body,
params: event.params,
query: event.query,
};
}
throw new Error(`Expected http trigger kind, got: ${event.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER `preprocessor()`, with its return values.
*
* @param body - HTTP request body
* @param params - Path parameters from the HTTP request
* @param query - Query parameters from the HTTP request
*/
export async function main(
body: any,
params: Record<string, string>,
query: Record<string, string>
) {
// Implement the main function logic here
}
Submitted by hugo697 361 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)`
* - `{http}` → `main(http)`
*
* @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
* @returns Processed data for `main()`
*/
export async function preprocessor(
event: {
kind: 'http';
body: any;
route: string;
path: string;
method: string;
params: Record<string, string>; // path params
query: Record<string, string>; // query params
headers: Record<string, string>;
}
) {
if (event.kind === 'http') {
return {
body: event.body,
params: event.params,
query: event.query,
};
}
throw new Error(`Expected http trigger kind, got: ${event.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER `preprocessor()`, with its return values.
*
* @param body - HTTP request body
* @param params - Path parameters from the HTTP request
* @param query - Query parameters from the HTTP request
*/
export async function main(
body: any,
params: Record<string, string>,
query: 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)`
* - `{http}` → `main(http)`
*
* @param wm_trigger - Trigger details (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
* @returns Processed data for `main()`
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs',
http?: {
route: string;
path: string;
method: string;
params: Record<string, string>;
query: Record<string, string>;
headers: Record<string, string>;
};
}
) {
if (wm_trigger.kind === 'http' && wm_trigger.http) {
return {
http: wm_trigger.http
};
}
throw new Error(`Expected http trigger kind, got: ${wm_trigger.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER `preprocessor()`, with its return values.
*
* @param http - HTTP request details
*/
export async function main(
http: {
route: string;
path: string;
method: string;
params: Record<string, string>;
query: Record<string, string>;
headers: Record<string, 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) 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)`
* - `{payload}` → `main(payload)`
*
* @param wm_trigger - Trigger details (e.g., MQTT, HTTP)
* @returns Processed data for `main()`
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs' | 'mqtt',
http?: {
route: string, // The route path, e.g., "/users/:id"
path: string, // The actual path called, e.g., "/users/123"
method: string,
params: Record<string, string>,
query: Record<string, string>,
headers: Record<string, string>
}
}
) {
if (wm_trigger.kind === 'http' && wm_trigger.http) {
return {
method: wm_trigger.http.method,
route: wm_trigger.http.route,
path: wm_trigger.http.path,
params: wm_trigger.http.params,
query: wm_trigger.http.query,
headers: wm_trigger.http.headers
};
}
throw new Error(`Expected http trigger kind got: ${wm_trigger.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER `preprocessor()`, with its return values.
*
* @param method - HTTP method (GET, POST, etc.)
* @param route - Defined route pattern
* @param path - Actual request path
* @param params - Route parameters
* @param query - Query parameters
* @param headers - Request headers
*/
export async function main(
method: string,
route: string,
path: string,
params: Record<string, string>,
query: Record<string, string>,
headers: Record<string, 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) 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)`
* - `{payload}` → `main(payload)`
*
* @param wm_trigger - Trigger details (e.g., MQTT, HTTP)
* @returns Processed data for `main()`
*/
export async function preprocessor(
wm_trigger: {
kind: 'http' | 'email' | 'webhook',
http?: {
route: string, // The route path, e.g., "/users/:id"
path: string, // The actual path called, e.g., "/users/123"
method: string,
params: Record<string, string>,
query: Record<string, string>,
headers: Record<string, string>
}
}
) {
if (wm_trigger.kind === 'http' && wm_trigger.http) {
return {
method: wm_trigger.http.method,
route: wm_trigger.http.route,
path: wm_trigger.http.path,
params: wm_trigger.http.params,
query: wm_trigger.http.query,
headers: wm_trigger.http.headers
};
}
throw new Error(`Expected http trigger kind got: ${wm_trigger.kind}`);
}
/**
* Main Function - Handles processed trigger events
*
* ⚠️ Called AFTER `preprocessor()`, with its return values.
*
* @param method - HTTP method (GET, POST, etc.)
* @param route - Defined route pattern
* @param path - Actual request path
* @param params - Route parameters
* @param query - Query parameters
* @param headers - Request headers
*/
export async function main(
method: string,
route: string,
path: string,
params: Record<string, string>,
query: Record<string, string>,
headers: Record<string, string>
) {
// Implement the main function logic here
}
Submitted by dieriba.pro916 435 days ago