Edits history of script submission #13996 for ' Email trigger script with preprocessor template (windmill)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    /**
     * 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)`
     *
     * @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
     * @returns Processed data for `main()`
     */
    export async function preprocessor(
      event: {
        kind: 'email';
        parsed_email: any;
        raw_email: string;
        email_extra_args?: Record<string, string>
      }
    ) {
      if (event.kind === 'email') {
        return {
          parsed_email: event.parsed_email,
          raw_email: event.raw_email,
          email_extra_args: event.email_extra_args,
        };
      }
    
      throw new Error(`Expected email trigger kind, got: ${event.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER `preprocessor()`, with its return values.
     *
     * @param parsed_email - Parsed email
     * @param raw_email - Raw email as string
     * @param email_extra_args - Extra email arguments
     */
    export async function main(
      parsed_email: any,
      raw_email: string,
      email_extra_args?: Record<string, string>
    ) {
      // Implement the main function logic here
    }
    

    Submitted by hugo697 245 days ago

  • bun
    /**
     * 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)`
     *
     * @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
     * @returns Processed data for `main()`
     */
    export async function preprocessor(
      event: {
        kind: 'email';
        parsed_email: any;
        raw_email: string;
        email_extra_args?: Record<string, string>
      }
    ) {
      if (event.kind === 'email') {
        return {
          parsed_email: event.parsed_email,
          raw_email: event.raw_email,
          email_extra_args: event.email_extra_args,
        };
      }
    
      throw new Error(`Expected email trigger kind, got: ${event.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER `preprocessor()`, with its return values.
     *
     * @param parsed_email - Parsed email
     * @param raw_email - Raw email as string
     * @param email_extra_args - Extra email arguments
     */
    export async function main(
      parsed_email: any,
      raw_email: string,
      email_extra_args?: Record<string, string>
    ) {
      // Implement the main function logic here
    }
    

    Submitted by hugo697 245 days ago