{"version":3,"sources":["../src/types.ts","../src/index.ts"],"sourcesContent":["import type { Transformer as CoreTransformer } from '@walkeros/core';\n\nexport interface Settings {\n  name?: string;\n  /** Fields to log from the event (dot notation paths). If omitted, logs entire event. */\n  fields?: string[];\n  /** If true, modifies the event by adding a 'processed' flag. */\n  addProcessedFlag?: boolean;\n}\n\nexport interface Env extends CoreTransformer.BaseEnv {\n  log?: (msg: string) => void;\n}\n\nexport type Types = CoreTransformer.Types<Settings, Env>;\n\nexport type Transformer = CoreTransformer.Instance<Types>;\nexport type Config = CoreTransformer.Config<Types>;\nexport type InitFn = CoreTransformer.InitFn<Types>;\nexport type Fn = CoreTransformer.Fn<Types>;\n","import type { Transformer, WalkerOS } from '@walkeros/core';\nimport type { Types } from './types';\n\nexport * as TransformerDemo from './types';\n\n/**\n * Demo transformer for walkerOS\n *\n * Logs events using env.log (or console.log fallback) and passes them through.\n * Perfect for testing and demonstrations without external dependencies.\n *\n * Configuration options:\n * - name: Custom name for logging prefix (default: 'transformer-demo')\n * - fields: Array of dot-notation paths to log from the event (default: entire event)\n * - addProcessedFlag: If true, adds a 'processed' flag to the event data\n */\nexport const transformerDemo: Transformer.Init<Types> = (initContext) => {\n  const { config, env } = initContext;\n  const settings = {\n    name: 'transformer-demo',\n    ...config?.settings,\n  };\n\n  return {\n    type: 'demo',\n    config: { ...config, settings },\n\n    init(context: Transformer.Context<Types>) {\n      // eslint-disable-next-line no-console\n      const log = env?.log || console.log;\n      context.logger.debug('initialized');\n      log(`[${settings.name}] initialized`);\n    },\n\n    push(\n      event: WalkerOS.DeepPartialEvent,\n      context: Transformer.Context<Types>,\n    ) {\n      // eslint-disable-next-line no-console\n      const log = env?.log || console.log;\n\n      const output = settings.fields\n        ? extractValues(\n            event as unknown as Record<string, unknown>,\n            settings.fields,\n          )\n        : event;\n\n      log(`[${settings.name}] ${JSON.stringify(output, null, 2)}`);\n      context.logger.debug('processed event', {\n        event: (event as { name?: string }).name,\n      });\n\n      // Optionally modify the event\n      if (settings.addProcessedFlag) {\n        return {\n          event: {\n            ...event,\n            data: {\n              ...(event.data || {}),\n              _processed: true,\n              _processedBy: settings.name,\n            },\n          } as WalkerOS.DeepPartialEvent,\n        };\n      }\n\n      // Return void for passthrough (event unchanged)\n      return;\n    },\n  };\n};\n\n/**\n * Extract values from object using dot notation paths\n */\nfunction extractValues(\n  obj: Record<string, unknown>,\n  paths: string[],\n): Record<string, unknown> {\n  const result: Record<string, unknown> = {};\n\n  for (const path of paths) {\n    const value = path\n      .split('.')\n      .reduce<unknown>(\n        (acc, key) => (acc as Record<string, unknown>)?.[key],\n        obj,\n      );\n    if (value !== undefined) {\n      result[path] = value;\n    }\n  }\n\n  return result;\n}\n\nexport default transformerDemo;\n"],"mappings":";AAAA;;;ACgBO,IAAM,kBAA2C,CAAC,gBAAgB;AACvE,QAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,QAAM,WAAW;AAAA,IACf,MAAM;AAAA,IACN,GAAG,QAAQ;AAAA,EACb;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,GAAG,QAAQ,SAAS;AAAA,IAE9B,KAAK,SAAqC;AAExC,YAAM,MAAM,KAAK,OAAO,QAAQ;AAChC,cAAQ,OAAO,MAAM,aAAa;AAClC,UAAI,IAAI,SAAS,IAAI,eAAe;AAAA,IACtC;AAAA,IAEA,KACE,OACA,SACA;AAEA,YAAM,MAAM,KAAK,OAAO,QAAQ;AAEhC,YAAM,SAAS,SAAS,SACpB;AAAA,QACE;AAAA,QACA,SAAS;AAAA,MACX,IACA;AAEJ,UAAI,IAAI,SAAS,IAAI,KAAK,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC,EAAE;AAC3D,cAAQ,OAAO,MAAM,mBAAmB;AAAA,QACtC,OAAQ,MAA4B;AAAA,MACtC,CAAC;AAGD,UAAI,SAAS,kBAAkB;AAC7B,eAAO;AAAA,UACL,OAAO;AAAA,YACL,GAAG;AAAA,YACH,MAAM;AAAA,cACJ,GAAI,MAAM,QAAQ,CAAC;AAAA,cACnB,YAAY;AAAA,cACZ,cAAc,SAAS;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA;AAAA,IACF;AAAA,EACF;AACF;AAKA,SAAS,cACP,KACA,OACyB;AACzB,QAAM,SAAkC,CAAC;AAEzC,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KACX,MAAM,GAAG,EACT;AAAA,MACC,CAAC,KAAK,QAAS,MAAkC,GAAG;AAAA,MACpD;AAAA,IACF;AACF,QAAI,UAAU,QAAW;AACvB,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAO,gBAAQ;","names":[]}