{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/primitives.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport * from './primitives';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\nimport { PixelId } from './primitives';\n\nexport const SettingsSchema = z.object({\n  pixelId: PixelId.describe(\n    'Your Meta Pixel ID from Facebook Business Manager (like 1234567890)',\n  ),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\n/**\n * Meta Pixel ID\n * Must be a numeric string (Facebook Pixel IDs are numeric)\n */\nexport const PixelId = z\n  .string()\n  .min(1)\n  .regex(/^[0-9]+$/, 'Pixel ID must contain only digits');\n\n/**\n * Meta Pixel Standard Event Names\n * https://developers.facebook.com/docs/meta-pixel/reference\n */\nexport const StandardEventName = z.enum([\n  'PageView',\n  'AddPaymentInfo',\n  'AddToCart',\n  'AddToWishlist',\n  'CompleteRegistration',\n  'Contact',\n  'CustomizeProduct',\n  'Donate',\n  'FindLocation',\n  'InitiateCheckout',\n  'Lead',\n  'Purchase',\n  'Schedule',\n  'Search',\n  'StartTrial',\n  'SubmitApplication',\n  'Subscribe',\n  'ViewContent',\n]);\n\n/**\n * Custom Event Name\n * Any string for custom tracking\n */\nexport const CustomEventName = z.string().min(1);\n","import { z } from '@walkeros/core/dev';\nimport { StandardEventName, CustomEventName } from './primitives';\n\nexport const MappingSchema = z.object({\n  track: StandardEventName.describe(\n    'Meta Pixel standard event name to send (like PageView or Purchase)',\n  ).optional(),\n  trackCustom: CustomEventName.describe(\n    'Custom event name for tracking non-standard events (like NewsletterSignup)',\n  ).optional(),\n});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\n","import type { Env } from '../types';\n\n/**\n * Example environment configurations for Meta Pixel destination\n *\n * These environments provide standardized mock structures for testing\n * and development without requiring external dependencies.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\nexport const init: Env | undefined = {\n  // Environment before initialization (fbq/_fbq absent until setup() runs)\n  window: {},\n  document: {\n    createElement: () => ({\n      src: '',\n      async: false,\n      setAttribute: () => {},\n      removeAttribute: () => {},\n    }),\n    head: { appendChild: () => {} },\n  },\n};\n\nexport const push: Env = {\n  // Standard mock environment for testing\n  window: {\n    fbq: Object.assign(noop, {\n      // Add Meta Pixel specific properties\n      callMethod: noop,\n      queue: [],\n      push: noop,\n      loaded: true,\n      version: '2.0',\n    }),\n    _fbq: Object.assign(noop, {\n      callMethod: noop,\n      queue: [],\n      push: noop,\n      loaded: true,\n      version: '2.0',\n    }),\n  },\n  document: {\n    createElement: () => ({\n      src: '',\n      async: false,\n      setAttribute: () => {},\n      removeAttribute: () => {},\n    }),\n    head: { appendChild: () => {} },\n  },\n};\n\n/**\n * Simulation tracking paths\n * Specifies which function calls to track during simulation\n */\nexport const simulation = [\n  'call:window.fbq', // Track fbq function calls\n];\n\n// Future: error scenarios (v2)\n// export const error: Env = { ... };\n","import type { Flow, WalkerOS } from '@walkeros/core';\nimport { getEvent, isObject } from '@walkeros/core';\n\n/**\n * Destination bootstrap.\n * Given the canonical settings, init loads the Meta Pixel script and calls\n * fbq('init', pixelId). Reproduce by passing the same settings to\n * `startFlow` as the destination config.\n */\nexport const init: Flow.StepExample = {\n  title: 'Pixel init',\n  description:\n    'The destination loads the Meta Pixel script and initializes it with the configured pixelId.',\n  in: {\n    loadScript: true,\n    settings: {\n      pixelId: '1234567890',\n    },\n  },\n  out: [['fbq', 'init', '1234567890']],\n};\n\nexport const purchase: Flow.StepExample = {\n  title: 'Purchase',\n  description:\n    'An order complete event is mapped to the Meta Pixel Purchase standard event with value, currency, and product contents.',\n  in: getEvent('order complete', {\n    timestamp: 1700000000,\n    id: '1700000000-gr0up-1',\n  }),\n  mapping: {\n    name: 'Purchase',\n    data: {\n      map: {\n        value: 'data.total',\n        currency: { value: 'EUR' },\n        contents: {\n          loop: [\n            'nested',\n            {\n              condition: (entity: unknown) =>\n                isObject(entity) && entity.entity === 'product',\n              map: {\n                id: 'data.id',\n                quantity: { key: 'data.quantity', value: 1 },\n              },\n            },\n          ],\n        },\n        content_type: { value: 'product' },\n        num_items: {\n          fn: (event: unknown) =>\n            (event as WalkerOS.Event).nested.filter(\n              (item) => item.entity === 'product',\n            ).length,\n        },\n      },\n    },\n  },\n  out: [\n    [\n      'fbq',\n      'track',\n      'Purchase',\n      {\n        value: 555,\n        currency: 'EUR',\n        contents: [\n          { id: 'ers', quantity: 1 },\n          { id: 'cc', quantity: 1 },\n        ],\n        content_type: 'product',\n        num_items: 2,\n      },\n      { eventID: '1700000000-gr0up-1' },\n    ],\n  ],\n};\n\nexport const addToCart: Flow.StepExample = {\n  title: 'Add to cart',\n  description:\n    'A product add event is mapped to the Meta Pixel AddToCart standard event with product contents and value.',\n  in: getEvent('product add', {\n    timestamp: 1700000001,\n    id: '1700000001-gr0up-1',\n  }),\n  mapping: {\n    name: 'AddToCart',\n    data: {\n      map: {\n        value: 'data.price',\n        currency: { value: 'EUR' },\n        contents: {\n          set: [\n            {\n              map: {\n                id: 'data.id',\n                quantity: { key: 'data.quantity', value: 1 },\n              },\n            },\n          ],\n        },\n        content_type: { value: 'product' },\n      },\n    },\n  },\n  out: [\n    [\n      'fbq',\n      'track',\n      'AddToCart',\n      {\n        currency: 'EUR',\n        value: 420,\n        contents: [{ id: 'ers', quantity: 1 }],\n        content_type: 'product',\n      },\n      { eventID: '1700000001-gr0up-1' },\n    ],\n  ],\n};\n\nexport const viewContent: Flow.StepExample = {\n  title: 'View content',\n  description:\n    'A product view event is mapped to the Meta Pixel ViewContent standard event with single-product contents.',\n  in: getEvent('product view', {\n    timestamp: 1700000002,\n    id: '1700000002-gr0up-1',\n  }),\n  mapping: {\n    name: 'ViewContent',\n    data: {\n      map: {\n        value: 'data.price',\n        currency: { value: 'EUR' },\n        content_type: { value: 'product' },\n        contents: {\n          set: [\n            {\n              map: {\n                id: 'data.id',\n                quantity: { key: 'data.quantity', value: 1 },\n              },\n            },\n          ],\n        },\n      },\n    },\n  },\n  out: [\n    [\n      'fbq',\n      'track',\n      'ViewContent',\n      {\n        currency: 'EUR',\n        value: 420,\n        contents: [{ id: 'ers', quantity: 1 }],\n        content_type: 'product',\n      },\n      { eventID: '1700000002-gr0up-1' },\n    ],\n  ],\n};\n\nexport const initiateCheckout: Flow.StepExample = {\n  title: 'Initiate checkout',\n  description:\n    'A cart view event is mapped to the Meta Pixel InitiateCheckout standard event with value and product contents.',\n  in: getEvent('cart view', {\n    timestamp: 1700000003,\n    id: '1700000003-gr0up-1',\n  }),\n  mapping: {\n    name: 'InitiateCheckout',\n    data: {\n      map: {\n        value: 'data.value',\n        currency: { value: 'EUR' },\n        contents: {\n          loop: [\n            'nested',\n            {\n              condition: (entity: unknown) =>\n                isObject(entity) && entity.entity === 'product',\n              map: {\n                id: 'data.id',\n                quantity: { key: 'data.quantity', value: 1 },\n              },\n            },\n          ],\n        },\n        num_items: {\n          fn: (event: unknown) =>\n            (event as WalkerOS.Event).nested.filter(\n              (item) => item.entity === 'product',\n            ).length,\n        },\n      },\n    },\n  },\n  out: [\n    [\n      'fbq',\n      'track',\n      'InitiateCheckout',\n      {\n        currency: 'EUR',\n        value: 840,\n        contents: [{ id: 'ers', quantity: 2 }],\n        num_items: 1,\n      },\n      { eventID: '1700000003-gr0up-1' },\n    ],\n  ],\n};\n\nexport const pageView: Flow.StepExample = {\n  title: 'Page view',\n  description:\n    'A page view event is forwarded to Meta Pixel as the PageView standard event with no extra parameters.',\n  in: getEvent('page view', {\n    timestamp: 1700000004,\n    id: '1700000004-gr0up-1',\n  }),\n  mapping: undefined,\n  out: [['fbq', 'track', 'PageView', {}, { eventID: '1700000004-gr0up-1' }]],\n};\n\nexport const customEventWithTrackCustom: Flow.StepExample = {\n  title: 'Custom event',\n  description:\n    'A video complete event is sent as a Meta Pixel trackCustom call with a custom event name and parameters.',\n  in: getEvent('video complete', {\n    timestamp: 1700000005,\n    id: '1700000005-gr0up-1',\n    data: { video_id: 'v1d30', duration: 120 },\n  }),\n  mapping: {\n    settings: { trackCustom: 'VideoComplete' },\n    data: {\n      map: {\n        video_id: 'data.video_id',\n        duration: 'data.duration',\n      },\n    },\n  },\n  out: [\n    [\n      'fbq',\n      'trackCustom',\n      'VideoComplete',\n      { video_id: 'v1d30', duration: 120 },\n      { eventID: '1700000005-gr0up-1' },\n    ],\n  ],\n};\n"],"mappings":"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","names":["z","z","z","z","init"]}