{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.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 { 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';\n\nexport const SettingsSchema = z.object({\n  appId: z\n    .string()\n    .min(1)\n    .describe('ID of the Piwik PRO site (like XXX-XXX-XXX-XXX-XXX)'),\n  url: z\n    .string()\n    .url()\n    .describe(\n      'URL of your Piwik PRO account (like https://your_account_name.piwik.pro/)',\n    ),\n  linkTracking: z\n    .boolean()\n    .default(false)\n    .describe('Enables/Disables download and outlink tracking'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({\n  goalId: z.string().describe('ID to count the event as a goal (like 1)'),\n  goalValue: z\n    .string()\n    .describe('Property to be used as the goal value (like data.value)')\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 PiwikPro destination\n *\n * These environments provide standardized mock structures for testing\n * and development without requiring external dependencies.\n */\n\nexport const init: Env | undefined = {\n  window: {\n    // _paq absent: init() is expected to install the queue.\n  },\n  document: {\n    createElement: () => ({\n      type: '',\n      src: '',\n      async: false,\n      defer: false,\n    }),\n    head: { appendChild: () => {} },\n  },\n};\n\nexport const push: Env = {\n  window: {\n    _paq: [],\n  },\n  document: {\n    createElement: () => ({\n      type: '',\n      src: '',\n      async: false,\n      defer: false,\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._paq.push', // Track _paq.push calls\n];\n","import type { Flow } from '@walkeros/core';\nimport { getEvent, isObject } from '@walkeros/core';\n\n/**\n * Destination bootstrap.\n * Given the canonical settings, init loads the PiwikPro script and configures\n * the tracker URL, app id, and link tracking. Reproduce by passing the same\n * settings to `startFlow` as the destination config.\n */\nexport const init: Flow.StepExample = {\n  title: 'Initialization',\n  description:\n    'Destination bootstrap loads the Piwik PRO tracker and configures the tracker URL and app id.',\n  in: {\n    loadScript: true,\n    settings: {\n      appId: 'XXX-XXX-XXX-XXX-XXX',\n      url: 'https://your_account_name.piwik.pro/',\n    },\n  },\n  out: [\n    [\n      '_paq.push',\n      ['setTrackerUrl', 'https://your_account_name.piwik.pro/ppms.php'],\n    ],\n    ['_paq.push', ['setSiteId', 'XXX-XXX-XXX-XXX-XXX']],\n    ['_paq.push', ['enableLinkTracking']],\n  ],\n};\n\nexport const ecommerceOrder: Flow.StepExample = {\n  title: 'Ecommerce order',\n  description:\n    'A completed order calls Piwik PRO ecommerceOrder with line items, order totals, and currency code.',\n  in: getEvent('order complete', { timestamp: 1700000300 }),\n  mapping: {\n    name: 'ecommerceOrder',\n    data: {\n      set: [\n        {\n          loop: [\n            'nested',\n            {\n              condition: (entity: unknown) =>\n                isObject(entity) && entity.entity === 'product',\n              map: {\n                sku: 'data.id',\n                name: 'data.name',\n                price: 'data.price',\n                quantity: { value: 1 },\n                variant: { key: 'data.color' },\n                customDimensions: {\n                  map: {\n                    1: 'data.size',\n                  },\n                },\n              },\n            },\n          ],\n        },\n        {\n          map: {\n            orderId: 'data.id',\n            grandTotal: 'data.total',\n            tax: 'data.taxes',\n            shipping: 'data.shipping',\n          },\n        },\n        {\n          map: {\n            currencyCode: { value: 'EUR' },\n          },\n        },\n      ],\n    },\n  },\n  out: [\n    [\n      'ecommerceOrder',\n      [\n        {\n          sku: 'ers',\n          name: 'Everyday Ruck Snack',\n          price: 420,\n          quantity: 1,\n          variant: 'black',\n          customDimensions: { 1: 'l' },\n        },\n        {\n          sku: 'cc',\n          name: 'Cool Cap',\n          price: 42,\n          quantity: 1,\n          variant: undefined,\n          customDimensions: { 1: 'one size' },\n        },\n      ],\n      {\n        orderId: '0rd3r1d',\n        grandTotal: 555,\n        tax: 73.76,\n        shipping: 5.22,\n      },\n      { currencyCode: 'EUR' },\n    ],\n  ],\n};\n\nexport const ecommerceAddToCart: Flow.StepExample = {\n  title: 'Add to cart',\n  description:\n    'A product add fires Piwik PRO ecommerceAddToCart with the added item and currency code.',\n  in: getEvent('product add', { timestamp: 1700000301 }),\n  mapping: {\n    name: 'ecommerceAddToCart',\n    data: {\n      set: [\n        {\n          set: [\n            {\n              map: {\n                sku: 'data.id',\n                name: 'data.name',\n                price: 'data.price',\n                quantity: { value: 1 },\n                variant: { key: 'data.color' },\n                customDimensions: {\n                  map: {\n                    1: 'data.size',\n                  },\n                },\n              },\n            },\n          ],\n        },\n        {\n          map: {\n            currencyCode: { value: 'EUR' },\n          },\n        },\n      ],\n    },\n  },\n  out: [\n    [\n      'ecommerceAddToCart',\n      [\n        {\n          sku: 'ers',\n          name: 'Everyday Ruck Snack',\n          price: 420,\n          quantity: 1,\n          variant: 'black',\n          customDimensions: { 1: 'l' },\n        },\n      ],\n      { currencyCode: 'EUR' },\n    ],\n  ],\n};\n\nexport const productDetailView: Flow.StepExample = {\n  title: 'Product detail view',\n  description:\n    'A product view fires Piwik PRO ecommerceProductDetailView with a single-item array and currency code.',\n  in: getEvent('product view', { timestamp: 1700000302 }),\n  mapping: {\n    name: 'ecommerceProductDetailView',\n    data: {\n      set: [\n        {\n          set: [\n            {\n              map: {\n                sku: 'data.id',\n                name: 'data.name',\n                price: 'data.price',\n                quantity: { value: 1 },\n                variant: { key: 'data.color' },\n                customDimensions: {\n                  map: {\n                    1: 'data.size',\n                  },\n                },\n              },\n            },\n          ],\n        },\n        {\n          map: {\n            currencyCode: { value: 'EUR' },\n          },\n        },\n      ],\n    },\n  },\n  out: [\n    [\n      'ecommerceProductDetailView',\n      [\n        {\n          sku: 'ers',\n          name: 'Everyday Ruck Snack',\n          price: 420,\n          quantity: 1,\n          variant: 'black',\n          customDimensions: { 1: 'l' },\n        },\n      ],\n      { currencyCode: 'EUR' },\n    ],\n  ],\n};\n\nexport const cartUpdate: Flow.StepExample = {\n  title: 'Cart update',\n  description:\n    'A cart view fires Piwik PRO ecommerceCartUpdate with nested products, total value, and currency code.',\n  in: getEvent('cart view', { timestamp: 1700000303 }),\n  mapping: {\n    name: 'ecommerceCartUpdate',\n    data: {\n      set: [\n        {\n          loop: [\n            'nested',\n            {\n              condition: (entity: unknown) =>\n                isObject(entity) && entity.entity === 'product',\n              map: {\n                sku: 'data.id',\n                name: 'data.name',\n                price: 'data.price',\n                quantity: { value: 1 },\n                variant: { key: 'data.color' },\n                customDimensions: {\n                  map: {\n                    1: 'data.size',\n                  },\n                },\n              },\n            },\n          ],\n        },\n        'data.value',\n        {\n          map: {\n            currencyCode: { value: 'EUR' },\n          },\n        },\n      ],\n    },\n  },\n  out: [\n    [\n      'ecommerceCartUpdate',\n      [\n        {\n          sku: 'ers',\n          name: 'Everyday Ruck Snack',\n          price: 420,\n          quantity: 1,\n          variant: 'black',\n          customDimensions: { 1: 'l' },\n        },\n      ],\n      840,\n      { currencyCode: 'EUR' },\n    ],\n  ],\n};\n\nexport const customEvent: Flow.StepExample = {\n  title: 'Custom event with goal',\n  description:\n    'A promotion visible event fires Piwik PRO trackEvent and then trackGoal to record a goal conversion.',\n  in: getEvent('promotion visible', { timestamp: 1700000304 }),\n  mapping: {\n    name: 'trackEvent',\n    settings: {\n      goalId: 'goal_1',\n    },\n    data: {\n      set: ['data.name', 'data.position'],\n    },\n  },\n  out: [\n    ['trackEvent', 'Setting up tracking easily', 'hero'],\n    ['trackGoal', 'goal_1', undefined],\n  ],\n};\n\nexport const pageViewWithTitle: Flow.StepExample = {\n  title: 'Page view',\n  description:\n    'A page view fires Piwik PRO trackPageView with the page title resolved from event data.',\n  in: getEvent('page view', { timestamp: 1700000305 }),\n  mapping: {\n    data: 'data.title',\n  },\n  out: [['trackPageView', 'walkerOS documentation']],\n};\n"],"mappings":"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","names":["z","init"]}