@walkeros/transformer-demo 3.4.2 → 4.0.0-next-1777463920154

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dev.d.mts CHANGED
@@ -41,7 +41,7 @@ declare namespace env {
41
41
  export { env_init as init, env_push as push, env_simulation as simulation };
42
42
  }
43
43
 
44
- /** Default passthrough logs the event and returns void (no modification). */
44
+ /** Default passthrough - logs the event and returns void (no modification). */
45
45
  declare const passthrough: Flow.StepExample;
46
46
  /** addProcessedFlag enriches the event with _processed metadata. */
47
47
  declare const addProcessedFlag: Flow.StepExample;
package/dist/dev.d.ts CHANGED
@@ -41,7 +41,7 @@ declare namespace env {
41
41
  export { env_init as init, env_push as push, env_simulation as simulation };
42
42
  }
43
43
 
44
- /** Default passthrough logs the event and returns void (no modification). */
44
+ /** Default passthrough - logs the event and returns void (no modification). */
45
45
  declare const passthrough: Flow.StepExample;
46
46
  /** addProcessedFlag enriches the event with _processed metadata. */
47
47
  declare const addProcessedFlag: Flow.StepExample;
package/dist/dev.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s=(e,r)=>{for(var o in r)t(e,o,{get:r[o],enumerable:!0})},i={};s(i,{examples:()=>u,schemas:()=>d}),module.exports=(e=i,((e,s,i,d)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let n of o(s))a.call(e,n)||n===i||t(e,n,{get:()=>s[n],enumerable:!(d=r(s,n))||d.enumerable});return e})(t({},"__esModule",{value:!0}),e));var d={};s(d,{SettingsSchema:()=>g,settings:()=>p});var n=require("@walkeros/core/dev"),c=require("@walkeros/core/dev"),g=c.z.object({name:c.z.string().optional().describe('Custom name for logging prefix. Default: "transformer-demo"'),fields:c.z.array(c.z.string()).optional().describe("Dot-notation paths to log from the event. If omitted, logs entire event."),addProcessedFlag:c.z.boolean().optional().describe("If true, adds _processed and _processedBy flags to event.data")}).describe("Demo transformer: logs events and optionally adds processed flag"),p=(0,n.zodToSchema)(g),u={};s(u,{env:()=>l,step:()=>y});var l={};s(l,{init:()=>m,push:()=>v,simulation:()=>f});var m={log:void 0},v={log:Object.assign(()=>{},{})},f=["call:log"],y={};s(y,{addProcessedFlag:()=>h,passthrough:()=>b});var b={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"1700000600-gr0up-1",trigger:"load",entity:"page",action:"view",timestamp:1700000600,group:"gr0up",count:1,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[]},h={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}}]]};//# sourceMappingURL=dev.js.map
1
+ "use strict";var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s=(e,r)=>{for(var o in r)t(e,o,{get:r[o],enumerable:!0})},d={};s(d,{examples:()=>m,schemas:()=>i}),module.exports=(e=d,((e,s,d,i)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let n of o(s))a.call(e,n)||n===d||t(e,n,{get:()=>s[n],enumerable:!(i=r(s,n))||i.enumerable});return e})(t({},"__esModule",{value:!0}),e));var i={};s(i,{SettingsSchema:()=>p,settings:()=>l});var n=require("@walkeros/core/dev"),c=require("@walkeros/core/dev"),p=c.z.object({name:c.z.string().optional().describe('Custom name for logging prefix. Default: "transformer-demo"'),fields:c.z.array(c.z.string()).optional().describe("Dot-notation paths to log from the event. If omitted, logs entire event."),addProcessedFlag:c.z.boolean().optional().describe("If true, adds _processed and _processedBy flags to event.data")}).describe("Demo transformer: logs events and optionally adds processed flag"),l=(0,n.zodToSchema)(p),m={};s(m,{env:()=>g,step:()=>b});var g={};s(g,{init:()=>u,push:()=>f,simulation:()=>v});var u={log:void 0},f={log:Object.assign(()=>{},{})},v=["call:log"],b={};s(b,{addProcessedFlag:()=>h,passthrough:()=>y});var y={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"ev-1700000600",trigger:"load",entity:"page",action:"view",timestamp:1700000600,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[]},h={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}}]]};//# sourceMappingURL=dev.js.map
package/dist/dev.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/settings.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport * as examples from './examples';\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * Demo transformer settings schema.\n *\n * Mirrors: types.ts Settings\n */\nexport const SettingsSchema = z\n .object({\n name: z\n .string()\n .optional()\n .describe('Custom name for logging prefix. Default: \"transformer-demo\"'),\n fields: z\n .array(z.string())\n .optional()\n .describe(\n 'Dot-notation paths to log from the event. If omitted, logs entire event.',\n ),\n addProcessedFlag: z\n .boolean()\n .optional()\n .describe(\n 'If true, adds _processed and _processedBy flags to event.data',\n ),\n })\n .describe('Demo transformer: logs events and optionally adds processed flag');\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: '1700000600-gr0up-1',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n group: 'gr0up',\n count: 1,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n ],\n ],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,cAA4B;;;ACA5B,iBAAkB;AAOX,IAAM,iBAAiB,aAC3B,OAAO;AAAA,EACN,MAAM,aACH,OAAO,EACP,SAAS,EACT,SAAS,6DAA6D;AAAA,EACzE,QAAQ,aACL,MAAM,aAAE,OAAO,CAAC,EAChB,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,kBAAkB,aACf,QAAQ,EACR,SAAS,EACT;AAAA,IACC;AAAA,EACF;AACJ,CAAC,EACA,SAAS,kEAAkE;;;ADtBvE,IAAM,eAAW,yBAAY,cAAc;;;AEJlD;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,IAAM,OAAO,MAAM;AAAC;AAEb,IAAM,OAAwB;AAAA,EACnC,KAAK;AACP;AAEO,IAAM,OAAY;AAAA,EACvB,KAAK,OAAO,OAAO,MAAM,CAAC,CAAC;AAC7B;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACnBrC;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,cAAgC;AAAA,EAC3C,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,mBAAmB,IAAI,wBAAwB;AAAA,IAC9D,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,EACjD;AAAA,EACA,KAAK,CAAC;AACR;AAGO,IAAM,mBAAqC;AAAA,EAChD,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,MAAM,uBAAuB,OAAO,IAAI;AAAA,IAChD,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,EACjD;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACF;","names":["import_dev"]}
1
+ {"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/settings.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport * as examples from './examples';\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * Demo transformer settings schema.\n *\n * Mirrors: types.ts Settings\n */\nexport const SettingsSchema = z\n .object({\n name: z\n .string()\n .optional()\n .describe('Custom name for logging prefix. Default: \"transformer-demo\"'),\n fields: z\n .array(z.string())\n .optional()\n .describe(\n 'Dot-notation paths to log from the event. If omitted, logs entire event.',\n ),\n addProcessedFlag: z\n .boolean()\n .optional()\n .describe(\n 'If true, adds _processed and _processedBy flags to event.data',\n ),\n })\n .describe('Demo transformer: logs events and optionally adds processed flag');\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough - logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: 'ev-1700000600',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: {\n type: 'browser',\n platform: 'web',\n url: 'https://example.com/',\n },\n },\n ],\n ],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,cAA4B;;;ACA5B,iBAAkB;AAOX,IAAM,iBAAiB,aAC3B,OAAO;AAAA,EACN,MAAM,aACH,OAAO,EACP,SAAS,EACT,SAAS,6DAA6D;AAAA,EACzE,QAAQ,aACL,MAAM,aAAE,OAAO,CAAC,EAChB,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,kBAAkB,aACf,QAAQ,EACR,SAAS,EACT;AAAA,IACC;AAAA,EACF;AACJ,CAAC,EACA,SAAS,kEAAkE;;;ADtBvE,IAAM,eAAW,yBAAY,cAAc;;;AEJlD;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,IAAM,OAAO,MAAM;AAAC;AAEb,IAAM,OAAwB;AAAA,EACnC,KAAK;AACP;AAEO,IAAM,OAAY;AAAA,EACvB,KAAK,OAAO,OAAO,MAAM,CAAC,CAAC;AAC7B;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACnBrC;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,cAAgC;AAAA,EAC3C,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,mBAAmB,IAAI,wBAAwB;AAAA,IAC9D,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ,EAAE,MAAM,WAAW,UAAU,OAAO,KAAK,uBAAuB;AAAA,EAC1E;AAAA,EACA,KAAK,CAAC;AACR;AAGO,IAAM,mBAAqC;AAAA,EAChD,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,MAAM,uBAAuB,OAAO,IAAI;AAAA,IAChD,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ,EAAE,MAAM,WAAW,UAAU,OAAO,KAAK,uBAAuB;AAAA,EAC1E;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":["import_dev"]}
package/dist/dev.mjs CHANGED
@@ -1 +1 @@
1
- var e=Object.defineProperty,t=(t,r)=>{for(var o in r)e(t,o,{get:r[o],enumerable:!0})},r={};t(r,{SettingsSchema:()=>i,settings:()=>s});import{zodToSchema as o}from"@walkeros/core/dev";import{z as a}from"@walkeros/core/dev";var i=a.object({name:a.string().optional().describe('Custom name for logging prefix. Default: "transformer-demo"'),fields:a.array(a.string()).optional().describe("Dot-notation paths to log from the event. If omitted, logs entire event."),addProcessedFlag:a.boolean().optional().describe("If true, adds _processed and _processedBy flags to event.data")}).describe("Demo transformer: logs events and optionally adds processed flag"),s=o(i),d={};t(d,{env:()=>n,step:()=>u});var n={};t(n,{init:()=>g,push:()=>c,simulation:()=>p});var g={log:void 0},c={log:Object.assign(()=>{},{})},p=["call:log"],u={};t(u,{addProcessedFlag:()=>m,passthrough:()=>l});var l={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"1700000600-gr0up-1",trigger:"load",entity:"page",action:"view",timestamp:1700000600,group:"gr0up",count:1,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[]},m={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}}]]};export{d as examples,r as schemas};//# sourceMappingURL=dev.mjs.map
1
+ var e=Object.defineProperty,t=(t,a)=>{for(var r in a)e(t,r,{get:a[r],enumerable:!0})},a={};t(a,{SettingsSchema:()=>s,settings:()=>d});import{zodToSchema as r}from"@walkeros/core/dev";import{z as o}from"@walkeros/core/dev";var s=o.object({name:o.string().optional().describe('Custom name for logging prefix. Default: "transformer-demo"'),fields:o.array(o.string()).optional().describe("Dot-notation paths to log from the event. If omitted, logs entire event."),addProcessedFlag:o.boolean().optional().describe("If true, adds _processed and _processedBy flags to event.data")}).describe("Demo transformer: logs events and optionally adds processed flag"),d=r(s),i={};t(i,{env:()=>n,step:()=>m});var n={};t(n,{init:()=>c,push:()=>p,simulation:()=>l});var c={log:void 0},p={log:Object.assign(()=>{},{})},l=["call:log"],m={};t(m,{addProcessedFlag:()=>u,passthrough:()=>g});var g={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"ev-1700000600",trigger:"load",entity:"page",action:"view",timestamp:1700000600,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[]},u={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}}]]};export{i as examples,a as schemas};//# sourceMappingURL=dev.mjs.map
package/dist/dev.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * Demo transformer settings schema.\n *\n * Mirrors: types.ts Settings\n */\nexport const SettingsSchema = z\n .object({\n name: z\n .string()\n .optional()\n .describe('Custom name for logging prefix. Default: \"transformer-demo\"'),\n fields: z\n .array(z.string())\n .optional()\n .describe(\n 'Dot-notation paths to log from the event. If omitted, logs entire event.',\n ),\n addProcessedFlag: z\n .boolean()\n .optional()\n .describe(\n 'If true, adds _processed and _processedBy flags to event.data',\n ),\n })\n .describe('Demo transformer: logs events and optionally adds processed flag');\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: '1700000600-gr0up-1',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n group: 'gr0up',\n count: 1,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n ],\n ],\n};\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,mBAAmB;;;ACA5B,SAAS,SAAS;AAOX,IAAM,iBAAiB,EAC3B,OAAO;AAAA,EACN,MAAM,EACH,OAAO,EACP,SAAS,EACT,SAAS,6DAA6D;AAAA,EACzE,QAAQ,EACL,MAAM,EAAE,OAAO,CAAC,EAChB,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,kBAAkB,EACf,QAAQ,EACR,SAAS,EACT;AAAA,IACC;AAAA,EACF;AACJ,CAAC,EACA,SAAS,kEAAkE;;;ADtBvE,IAAM,WAAW,YAAY,cAAc;;;AEJlD;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,IAAM,OAAO,MAAM;AAAC;AAEb,IAAM,OAAwB;AAAA,EACnC,KAAK;AACP;AAEO,IAAM,OAAY;AAAA,EACvB,KAAK,OAAO,OAAO,MAAM,CAAC,CAAC;AAC7B;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACnBrC;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,cAAgC;AAAA,EAC3C,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,mBAAmB,IAAI,wBAAwB;AAAA,IAC9D,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,EACjD;AAAA,EACA,KAAK,CAAC;AACR;AAGO,IAAM,mBAAqC;AAAA,EAChD,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,MAAM,uBAAuB,OAAO,IAAI;AAAA,IAChD,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,EACjD;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * Demo transformer settings schema.\n *\n * Mirrors: types.ts Settings\n */\nexport const SettingsSchema = z\n .object({\n name: z\n .string()\n .optional()\n .describe('Custom name for logging prefix. Default: \"transformer-demo\"'),\n fields: z\n .array(z.string())\n .optional()\n .describe(\n 'Dot-notation paths to log from the event. If omitted, logs entire event.',\n ),\n addProcessedFlag: z\n .boolean()\n .optional()\n .describe(\n 'If true, adds _processed and _processedBy flags to event.data',\n ),\n })\n .describe('Demo transformer: logs events and optionally adds processed flag');\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough - logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: 'ev-1700000600',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: {\n type: 'browser',\n platform: 'web',\n url: 'https://example.com/',\n },\n },\n ],\n ],\n};\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,mBAAmB;;;ACA5B,SAAS,SAAS;AAOX,IAAM,iBAAiB,EAC3B,OAAO;AAAA,EACN,MAAM,EACH,OAAO,EACP,SAAS,EACT,SAAS,6DAA6D;AAAA,EACzE,QAAQ,EACL,MAAM,EAAE,OAAO,CAAC,EAChB,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,kBAAkB,EACf,QAAQ,EACR,SAAS,EACT;AAAA,IACC;AAAA,EACF;AACJ,CAAC,EACA,SAAS,kEAAkE;;;ADtBvE,IAAM,WAAW,YAAY,cAAc;;;AEJlD;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,IAAM,OAAO,MAAM;AAAC;AAEb,IAAM,OAAwB;AAAA,EACnC,KAAK;AACP;AAEO,IAAM,OAAY;AAAA,EACvB,KAAK,OAAO,OAAO,MAAM,CAAC,CAAC;AAC7B;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACnBrC;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,cAAgC;AAAA,EAC3C,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,mBAAmB,IAAI,wBAAwB;AAAA,IAC9D,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ,EAAE,MAAM,WAAW,UAAU,OAAO,KAAK,uBAAuB;AAAA,EAC1E;AAAA,EACA,KAAK,CAAC;AACR;AAGO,IAAM,mBAAqC;AAAA,EAChD,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,MAAM,uBAAuB,OAAO,IAAI;AAAA,IAChD,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ,EAAE,MAAM,WAAW,UAAU,OAAO,KAAK,uBAAuB;AAAA,EAC1E;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
package/dist/index.d.mts CHANGED
@@ -41,7 +41,7 @@ declare namespace env {
41
41
  export { env_init as init, env_push as push, env_simulation as simulation };
42
42
  }
43
43
 
44
- /** Default passthrough logs the event and returns void (no modification). */
44
+ /** Default passthrough - logs the event and returns void (no modification). */
45
45
  declare const passthrough: Flow.StepExample;
46
46
  /** addProcessedFlag enriches the event with _processed metadata. */
47
47
  declare const addProcessedFlag: Flow.StepExample;
package/dist/index.d.ts CHANGED
@@ -41,7 +41,7 @@ declare namespace env {
41
41
  export { env_init as init, env_push as push, env_simulation as simulation };
42
42
  }
43
43
 
44
- /** Default passthrough logs the event and returns void (no modification). */
44
+ /** Default passthrough - logs the event and returns void (no modification). */
45
45
  declare const passthrough: Flow.StepExample;
46
46
  /** addProcessedFlag enriches the event with _processed metadata. */
47
47
  declare const addProcessedFlag: Flow.StepExample;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,i=(e,r)=>{for(var o in r)t(e,o,{get:r[o],enumerable:!0})},a={};i(a,{TransformerDemo:()=>s,default:()=>y,examples:()=>d,transformerDemo:()=>f}),module.exports=(e=a,((e,i,a,s)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let d of o(i))n.call(e,d)||d===a||t(e,d,{get:()=>i[d],enumerable:!(s=r(i,d))||s.enumerable});return e})(t({},"__esModule",{value:!0}),e));var s={},d={};i(d,{env:()=>c,step:()=>l});var c={};i(c,{init:()=>g,push:()=>p,simulation:()=>u});var g={log:void 0},p={log:Object.assign(()=>{},{})},u=["call:log"],l={};i(l,{addProcessedFlag:()=>v,passthrough:()=>m});var m={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"1700000600-gr0up-1",trigger:"load",entity:"page",action:"view",timestamp:1700000600,group:"gr0up",count:1,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[]},v={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}}]]},f=e=>{const{config:t,env:r}=e,o={name:"transformer-demo",...t?.settings};return{type:"demo",config:{...t,settings:o},init(e){const t=r?.log||console.log;e.logger.debug("initialized"),t(`[${o.name}] initialized`)},push(e,t){const n=r?.log||console.log,i=o.fields?function(e,t){const r={};for(const o of t){const t=o.split(".").reduce((e,t)=>e?.[t],e);void 0!==t&&(r[o]=t)}return r}(e,o.fields):e;if(n(`[${o.name}] ${JSON.stringify(i,null,2)}`),t.logger.debug("processed event",{event:e.name}),o.addProcessedFlag)return{event:{...e,data:{...e.data||{},_processed:!0,_processedBy:o.name}}}}}};var y=f;//# sourceMappingURL=index.js.map
1
+ "use strict";var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s=(e,r)=>{for(var o in r)t(e,o,{get:r[o],enumerable:!0})},n={};s(n,{TransformerDemo:()=>d,default:()=>y,examples:()=>i,transformerDemo:()=>v}),module.exports=(e=n,((e,s,n,d)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let i of o(s))a.call(e,i)||i===n||t(e,i,{get:()=>s[i],enumerable:!(d=r(s,i))||d.enumerable});return e})(t({},"__esModule",{value:!0}),e));var d={},i={};s(i,{env:()=>c,step:()=>u});var c={};s(c,{init:()=>l,push:()=>p,simulation:()=>g});var l={log:void 0},p={log:Object.assign(()=>{},{})},g=["call:log"],u={};s(u,{addProcessedFlag:()=>f,passthrough:()=>m});var m={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"ev-1700000600",trigger:"load",entity:"page",action:"view",timestamp:1700000600,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[]},f={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}}]]},v=e=>{const{config:t,env:r}=e,o={name:"transformer-demo",...t?.settings};return{type:"demo",config:{...t,settings:o},init(e){const t=r?.log||console.log;e.logger.debug("initialized"),t(`[${o.name}] initialized`)},push(e,t){const a=r?.log||console.log,s=o.fields?function(e,t){const r={};for(const o of t){const t=o.split(".").reduce((e,t)=>e?.[t],e);void 0!==t&&(r[o]=t)}return r}(e,o.fields):e;if(a(`[${o.name}] ${JSON.stringify(s,null,2)}`),t.logger.debug("processed event",{event:e.name}),o.addProcessedFlag)return{event:{...e,data:{...e.data||{},_processed:!0,_processedBy:o.name}}}}}};var y=v;//# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["import type { Transformer, WalkerOS } from '@walkeros/core';\nimport type { Types } from './types';\n\nexport * as TransformerDemo from './types';\nexport * as examples from './examples';\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","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","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: '1700000600-gr0up-1',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n group: 'gr0up',\n count: 1,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n ],\n ],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,IAAM,OAAO,MAAM;AAAC;AAEb,IAAM,OAAwB;AAAA,EACnC,KAAK;AACP;AAEO,IAAM,OAAY;AAAA,EACvB,KAAK,OAAO,OAAO,MAAM,CAAC,CAAC;AAC7B;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACnBrC;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,cAAgC;AAAA,EAC3C,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,mBAAmB,IAAI,wBAAwB;AAAA,IAC9D,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,EACjD;AAAA,EACA,KAAK,CAAC;AACR;AAGO,IAAM,mBAAqC;AAAA,EAChD,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,MAAM,uBAAuB,OAAO,IAAI;AAAA,IAChD,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS,EAAE,SAAS,EAAE;AAAA,IACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,EACjD;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,QAAQ,EAAE,MAAM,OAAO,IAAI,IAAI,aAAa,GAAG;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACF;;;AJ9CO,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":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["import type { Transformer, WalkerOS } from '@walkeros/core';\nimport type { Types } from './types';\n\nexport * as TransformerDemo from './types';\nexport * as examples from './examples';\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","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","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough - logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: 'ev-1700000600',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: {\n type: 'browser',\n platform: 'web',\n url: 'https://example.com/',\n },\n },\n ],\n ],\n};\n"],"mappings":"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","names":[]}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var e=Object.defineProperty,t=(t,r)=>{for(var o in r)e(t,o,{get:r[o],enumerable:!0})},r={},o={};t(o,{env:()=>i,step:()=>d});var i={};t(i,{init:()=>a,push:()=>n,simulation:()=>s});var a={log:void 0},n={log:Object.assign(()=>{},{})},s=["call:log"],d={};t(d,{addProcessedFlag:()=>c,passthrough:()=>g});var g={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"1700000600-gr0up-1",trigger:"load",entity:"page",action:"view",timestamp:1700000600,group:"gr0up",count:1,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[]},c={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"1700000601-gr0up-2",trigger:"click",entity:"product",action:"add",timestamp:1700000601,group:"gr0up",count:2,version:{tagging:1},source:{type:"web",id:"",previous_id:""}}]]},p=e=>{const{config:t,env:r}=e,o={name:"transformer-demo",...t?.settings};return{type:"demo",config:{...t,settings:o},init(e){const t=r?.log||console.log;e.logger.debug("initialized"),t(`[${o.name}] initialized`)},push(e,t){const i=r?.log||console.log,a=o.fields?function(e,t){const r={};for(const o of t){const t=o.split(".").reduce((e,t)=>e?.[t],e);void 0!==t&&(r[o]=t)}return r}(e,o.fields):e;if(i(`[${o.name}] ${JSON.stringify(a,null,2)}`),t.logger.debug("processed event",{event:e.name}),o.addProcessedFlag)return{event:{...e,data:{...e.data||{},_processed:!0,_processedBy:o.name}}}}}};var u=p;export{r as TransformerDemo,u as default,o as examples,p as transformerDemo};//# sourceMappingURL=index.mjs.map
1
+ var e=Object.defineProperty,t=(t,a)=>{for(var r in a)e(t,r,{get:a[r],enumerable:!0})},a={},r={};t(r,{env:()=>o,step:()=>i});var o={};t(o,{init:()=>s,push:()=>d,simulation:()=>n});var s={log:void 0},d={log:Object.assign(()=>{},{})},n=["call:log"],i={};t(i,{addProcessedFlag:()=>l,passthrough:()=>c});var c={public:!1,description:"Default config: logs event, passes through unchanged",in:{name:"page view",data:{title:"Getting Started",id:"/docs/getting-started"},id:"ev-1700000600",trigger:"load",entity:"page",action:"view",timestamp:1700000600,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[]},l={title:"Add processed flag",description:"With addProcessedFlag: true, adds _processed and _processedBy to event.data",in:{name:"product add",data:{name:"Everyday Ruck Snack",price:420},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}},out:[["return",{name:"product add",data:{name:"Everyday Ruck Snack",price:420,_processed:!0,_processedBy:"transformer-demo"},id:"ev-1700000601",trigger:"click",entity:"product",action:"add",timestamp:1700000601,source:{type:"browser",platform:"web",url:"https://example.com/"}}]]},p=e=>{const{config:t,env:a}=e,r={name:"transformer-demo",...t?.settings};return{type:"demo",config:{...t,settings:r},init(e){const t=a?.log||console.log;e.logger.debug("initialized"),t(`[${r.name}] initialized`)},push(e,t){const o=a?.log||console.log,s=r.fields?function(e,t){const a={};for(const r of t){const t=r.split(".").reduce((e,t)=>e?.[t],e);void 0!==t&&(a[r]=t)}return a}(e,r.fields):e;if(o(`[${r.name}] ${JSON.stringify(s,null,2)}`),t.logger.debug("processed event",{event:e.name}),r.addProcessedFlag)return{event:{...e,data:{...e.data||{},_processed:!0,_processedBy:r.name}}}}}};var g=p;export{a as TransformerDemo,g as default,r as examples,p as transformerDemo};//# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.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","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: '1700000600-gr0up-1',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n group: 'gr0up',\n count: 1,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: '1700000601-gr0up-2',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n group: 'gr0up',\n count: 2,\n version: { tagging: 1 },\n source: { type: 'web', id: '', previous_id: '' },\n },\n ],\n ],\n};\n","import type { Transformer, WalkerOS } from '@walkeros/core';\nimport type { Types } from './types';\n\nexport * as TransformerDemo from './types';\nexport * as examples from './examples';\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":"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","names":[]}
1
+ {"version":3,"sources":["../src/types.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.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","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for transformer demo\n */\n\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n log: undefined,\n};\n\nexport const push: Env = {\n log: Object.assign(noop, {}) as Env['log'],\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:log'];\n","import type { Flow } from '@walkeros/core';\n\n/** Default passthrough - logs the event and returns void (no modification). */\nexport const passthrough: Flow.StepExample = {\n public: false,\n description: 'Default config: logs event, passes through unchanged',\n in: {\n name: 'page view',\n data: { title: 'Getting Started', id: '/docs/getting-started' },\n id: 'ev-1700000600',\n trigger: 'load',\n entity: 'page',\n action: 'view',\n timestamp: 1700000600,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [],\n};\n\n/** addProcessedFlag enriches the event with _processed metadata. */\nexport const addProcessedFlag: Flow.StepExample = {\n title: 'Add processed flag',\n description:\n 'With addProcessedFlag: true, adds _processed and _processedBy to event.data',\n in: {\n name: 'product add',\n data: { name: 'Everyday Ruck Snack', price: 420 },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: { type: 'browser', platform: 'web', url: 'https://example.com/' },\n },\n out: [\n [\n 'return',\n {\n name: 'product add',\n data: {\n name: 'Everyday Ruck Snack',\n price: 420,\n _processed: true,\n _processedBy: 'transformer-demo',\n },\n id: 'ev-1700000601',\n trigger: 'click',\n entity: 'product',\n action: 'add',\n timestamp: 1700000601,\n source: {\n type: 'browser',\n platform: 'web',\n url: 'https://example.com/',\n },\n },\n ],\n ],\n};\n","import type { Transformer, WalkerOS } from '@walkeros/core';\nimport type { Types } from './types';\n\nexport * as TransformerDemo from './types';\nexport * as examples from './examples';\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":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/transformer-demo",
4
- "version": "3.4.2",
4
+ "version": "4.0.0-next-1777463920154",
5
5
  "type": "transformer",
6
6
  "platform": [
7
7
  "web",
@@ -57,20 +57,15 @@
57
57
  "name": "Everyday Ruck Snack",
58
58
  "price": 420
59
59
  },
60
- "id": "1700000601-gr0up-2",
60
+ "id": "ev-1700000601",
61
61
  "trigger": "click",
62
62
  "entity": "product",
63
63
  "action": "add",
64
64
  "timestamp": 1700000601,
65
- "group": "gr0up",
66
- "count": 2,
67
- "version": {
68
- "tagging": 1
69
- },
70
65
  "source": {
71
- "type": "web",
72
- "id": "",
73
- "previous_id": ""
66
+ "type": "browser",
67
+ "platform": "web",
68
+ "url": "https://example.com/"
74
69
  }
75
70
  },
76
71
  "out": [
@@ -84,20 +79,15 @@
84
79
  "_processed": true,
85
80
  "_processedBy": "transformer-demo"
86
81
  },
87
- "id": "1700000601-gr0up-2",
82
+ "id": "ev-1700000601",
88
83
  "trigger": "click",
89
84
  "entity": "product",
90
85
  "action": "add",
91
86
  "timestamp": 1700000601,
92
- "group": "gr0up",
93
- "count": 2,
94
- "version": {
95
- "tagging": 1
96
- },
97
87
  "source": {
98
- "type": "web",
99
- "id": "",
100
- "previous_id": ""
88
+ "type": "browser",
89
+ "platform": "web",
90
+ "url": "https://example.com/"
101
91
  }
102
92
  }
103
93
  ]
@@ -112,20 +102,15 @@
112
102
  "title": "Getting Started",
113
103
  "id": "/docs/getting-started"
114
104
  },
115
- "id": "1700000600-gr0up-1",
105
+ "id": "ev-1700000600",
116
106
  "trigger": "load",
117
107
  "entity": "page",
118
108
  "action": "view",
119
109
  "timestamp": 1700000600,
120
- "group": "gr0up",
121
- "count": 1,
122
- "version": {
123
- "tagging": 1
124
- },
125
110
  "source": {
126
- "type": "web",
127
- "id": "",
128
- "previous_id": ""
111
+ "type": "browser",
112
+ "platform": "web",
113
+ "url": "https://example.com/"
129
114
  }
130
115
  },
131
116
  "out": []
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/transformer-demo",
3
3
  "description": "Demo transformer for walkerOS - logs and passes through events",
4
- "version": "3.4.2",
4
+ "version": "4.0.0-next-1777463920154",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
@@ -25,7 +25,7 @@
25
25
  "test": "jest"
26
26
  },
27
27
  "dependencies": {
28
- "@walkeros/core": "3.4.2"
28
+ "@walkeros/core": "4.0.0-next-1777463920154"
29
29
  },
30
30
  "repository": {
31
31
  "url": "git+https://github.com/elbwalker/walkerOS.git",