@walkeros/web-destination-piwikpro 3.4.0 → 3.4.1

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.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,a=Object.defineProperty,t=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,n=(e,t)=>{for(var i in t)a(e,i,{get:t[i],enumerable:!0})},o={};n(o,{examples:()=>k,schemas:()=>c}),module.exports=(e=o,((e,n,o,c)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let d of i(n))r.call(e,d)||d===o||a(e,d,{get:()=>n[d],enumerable:!(c=t(n,d))||c.enumerable});return e})(a({},"__esModule",{value:!0}),e));var c={};n(c,{MappingSchema:()=>u,SettingsSchema:()=>p,mapping:()=>v,settings:()=>l});var d=require("@walkeros/core/dev"),s=require("@walkeros/core/dev"),p=s.z.object({appId:s.z.string().min(1).describe("ID of the Piwik PRO site (like XXX-XXX-XXX-XXX-XXX)"),url:s.z.string().url().describe("URL of your Piwik PRO account (like https://your_account_name.piwik.pro/)"),linkTracking:s.z.boolean().default(!1).describe("Enables/Disables download and outlink tracking")}),m=require("@walkeros/core/dev"),u=m.z.object({goalId:m.z.string().describe("ID to count the event as a goal (like 1)"),goalValue:m.z.string().describe("Property to be used as the goal value (like data.value)").optional()}),l=(0,d.zodToSchema)(p),v=(0,d.zodToSchema)(u),k={};n(k,{env:()=>y,step:()=>b});var y={};n(y,{init:()=>g,push:()=>X,simulation:()=>w});var g={window:{_paq:void 0},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},X={window:{_paq:[]},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},w=["call:window._paq.push"],b={};n(b,{cartUpdate:()=>_,customEvent:()=>O,ecommerceAddToCart:()=>C,ecommerceOrder:()=>q,init:()=>E,pageViewWithTitle:()=>R,productDetailView:()=>D});var h=require("@walkeros/core"),E={in:{loadScript:!0,settings:{appId:"XXX-XXX-XXX-XXX-XXX",url:"https://your_account_name.piwik.pro/"}},out:[["_paq.push",["setTrackerUrl","https://your_account_name.piwik.pro/ppms.php"]],["_paq.push",["setSiteId","XXX-XXX-XXX-XXX-XXX"]],["_paq.push",["enableLinkTracking"]]]},q={in:(0,h.getEvent)("order complete",{timestamp:1700000300}),mapping:{name:"ecommerceOrder",data:{set:[{loop:["nested",{condition:e=>(0,h.isObject)(e)&&"product"===e.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{orderId:"data.id",grandTotal:"data.total",tax:"data.taxes",shipping:"data.shipping"}},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceOrder",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}},{sku:"cc",name:"Cool Cap",price:42,quantity:1,variant:void 0,customDimensions:{1:"one size"}}],{orderId:"0rd3r1d",grandTotal:555,tax:73.76,shipping:5.22},{currencyCode:"EUR"}]]},C={in:(0,h.getEvent)("product add",{timestamp:1700000301}),mapping:{name:"ecommerceAddToCart",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceAddToCart",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},D={in:(0,h.getEvent)("product view",{timestamp:1700000302}),mapping:{name:"ecommerceProductDetailView",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceProductDetailView",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},_={in:(0,h.getEvent)("cart view",{timestamp:1700000303}),mapping:{name:"ecommerceCartUpdate",data:{set:[{loop:["nested",{condition:e=>(0,h.isObject)(e)&&"product"===e.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},"data.value",{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceCartUpdate",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],840,{currencyCode:"EUR"}]]},O={in:(0,h.getEvent)("promotion visible",{timestamp:1700000304}),mapping:{name:"trackEvent",settings:{goalId:"goal_1"},data:{set:["data.name","data.position"]}},out:[["trackEvent","Setting up tracking easily","hero"],["trackGoal","goal_1",void 0]]},R={in:(0,h.getEvent)("page view",{timestamp:1700000305}),mapping:{data:"data.title"},out:[["trackPageView","walkerOS documentation"]]};//# sourceMappingURL=dev.js.map
1
+ "use strict";var e,a=Object.defineProperty,t=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,o=(e,t)=>{for(var i in t)a(e,i,{get:t[i],enumerable:!0})},n={};o(n,{examples:()=>k,schemas:()=>c}),module.exports=(e=n,((e,o,n,c)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let d of i(o))r.call(e,d)||d===n||a(e,d,{get:()=>o[d],enumerable:!(c=t(o,d))||c.enumerable});return e})(a({},"__esModule",{value:!0}),e));var c={};o(c,{MappingSchema:()=>u,SettingsSchema:()=>p,mapping:()=>v,settings:()=>l});var d=require("@walkeros/core/dev"),s=require("@walkeros/core/dev"),p=s.z.object({appId:s.z.string().min(1).describe("ID of the Piwik PRO site (like XXX-XXX-XXX-XXX-XXX)"),url:s.z.string().url().describe("URL of your Piwik PRO account (like https://your_account_name.piwik.pro/)"),linkTracking:s.z.boolean().default(!1).describe("Enables/Disables download and outlink tracking")}),m=require("@walkeros/core/dev"),u=m.z.object({goalId:m.z.string().describe("ID to count the event as a goal (like 1)"),goalValue:m.z.string().describe("Property to be used as the goal value (like data.value)").optional()}),l=(0,d.zodToSchema)(p),v=(0,d.zodToSchema)(u),k={};o(k,{env:()=>g,step:()=>h});var g={};o(g,{init:()=>y,push:()=>w,simulation:()=>X});var y={window:{_paq:void 0},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},w={window:{_paq:[]},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},X=["call:window._paq.push"],h={};o(h,{cartUpdate:()=>C,customEvent:()=>f,ecommerceAddToCart:()=>O,ecommerceOrder:()=>E,init:()=>b,pageViewWithTitle:()=>q,productDetailView:()=>R});var P=require("@walkeros/core"),b={title:"Initialization",description:"Destination bootstrap loads the Piwik PRO tracker and configures the tracker URL and app id.",in:{loadScript:!0,settings:{appId:"XXX-XXX-XXX-XXX-XXX",url:"https://your_account_name.piwik.pro/"}},out:[["_paq.push",["setTrackerUrl","https://your_account_name.piwik.pro/ppms.php"]],["_paq.push",["setSiteId","XXX-XXX-XXX-XXX-XXX"]],["_paq.push",["enableLinkTracking"]]]},E={title:"Ecommerce order",description:"A completed order calls Piwik PRO ecommerceOrder with line items, order totals, and currency code.",in:(0,P.getEvent)("order complete",{timestamp:1700000300}),mapping:{name:"ecommerceOrder",data:{set:[{loop:["nested",{condition:e=>(0,P.isObject)(e)&&"product"===e.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{orderId:"data.id",grandTotal:"data.total",tax:"data.taxes",shipping:"data.shipping"}},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceOrder",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}},{sku:"cc",name:"Cool Cap",price:42,quantity:1,variant:void 0,customDimensions:{1:"one size"}}],{orderId:"0rd3r1d",grandTotal:555,tax:73.76,shipping:5.22},{currencyCode:"EUR"}]]},O={title:"Add to cart",description:"A product add fires Piwik PRO ecommerceAddToCart with the added item and currency code.",in:(0,P.getEvent)("product add",{timestamp:1700000301}),mapping:{name:"ecommerceAddToCart",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceAddToCart",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},R={title:"Product detail view",description:"A product view fires Piwik PRO ecommerceProductDetailView with a single-item array and currency code.",in:(0,P.getEvent)("product view",{timestamp:1700000302}),mapping:{name:"ecommerceProductDetailView",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceProductDetailView",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},C={title:"Cart update",description:"A cart view fires Piwik PRO ecommerceCartUpdate with nested products, total value, and currency code.",in:(0,P.getEvent)("cart view",{timestamp:1700000303}),mapping:{name:"ecommerceCartUpdate",data:{set:[{loop:["nested",{condition:e=>(0,P.isObject)(e)&&"product"===e.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},"data.value",{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceCartUpdate",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],840,{currencyCode:"EUR"}]]},f={title:"Custom event with goal",description:"A promotion visible event fires Piwik PRO trackEvent and then trackGoal to record a goal conversion.",in:(0,P.getEvent)("promotion visible",{timestamp:1700000304}),mapping:{name:"trackEvent",settings:{goalId:"goal_1"},data:{set:["data.name","data.position"]}},out:[["trackEvent","Setting up tracking easily","hero"],["trackGoal","goal_1",void 0]]},q={title:"Page view",description:"A page view fires Piwik PRO trackPageView with the page title resolved from event data.",in:(0,P.getEvent)("page view",{timestamp:1700000305}),mapping:{data:"data.title"},out:[["trackPageView","walkerOS documentation"]]};//# 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/schemas/mapping.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';\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: undefined as unknown as Env['window']['_paq'],\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: [] as unknown[],\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 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 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 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 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 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 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 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":["import_dev","import_dev","init"]}
1
+ {"version":3,"sources":["../src/dev.ts","../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":["export * as schemas from './schemas';\nexport * as examples from './examples';\n","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: undefined as unknown as Env['window']['_paq'],\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: [] as unknown[],\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":["import_dev","import_dev","init"]}
package/dist/dev.mjs CHANGED
@@ -1 +1 @@
1
- var a=Object.defineProperty,e=(e,t)=>{for(var i in t)a(e,i,{get:t[i],enumerable:!0})},t={};e(t,{MappingSchema:()=>c,SettingsSchema:()=>n,mapping:()=>s,settings:()=>d});import{zodToSchema as i}from"@walkeros/core/dev";import{z as r}from"@walkeros/core/dev";var n=r.object({appId:r.string().min(1).describe("ID of the Piwik PRO site (like XXX-XXX-XXX-XXX-XXX)"),url:r.string().url().describe("URL of your Piwik PRO account (like https://your_account_name.piwik.pro/)"),linkTracking:r.boolean().default(!1).describe("Enables/Disables download and outlink tracking")});import{z as o}from"@walkeros/core/dev";var c=o.object({goalId:o.string().describe("ID to count the event as a goal (like 1)"),goalValue:o.string().describe("Property to be used as the goal value (like data.value)").optional()}),d=i(n),s=i(c),m={};e(m,{env:()=>p,step:()=>v});var p={};e(p,{init:()=>u,push:()=>l,simulation:()=>k});var u={window:{_paq:void 0},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},l={window:{_paq:[]},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},k=["call:window._paq.push"],v={};e(v,{cartUpdate:()=>E,customEvent:()=>C,ecommerceAddToCart:()=>h,ecommerceOrder:()=>w,init:()=>g,pageViewWithTitle:()=>q,productDetailView:()=>b});import{getEvent as X,isObject as y}from"@walkeros/core";var g={in:{loadScript:!0,settings:{appId:"XXX-XXX-XXX-XXX-XXX",url:"https://your_account_name.piwik.pro/"}},out:[["_paq.push",["setTrackerUrl","https://your_account_name.piwik.pro/ppms.php"]],["_paq.push",["setSiteId","XXX-XXX-XXX-XXX-XXX"]],["_paq.push",["enableLinkTracking"]]]},w={in:X("order complete",{timestamp:1700000300}),mapping:{name:"ecommerceOrder",data:{set:[{loop:["nested",{condition:a=>y(a)&&"product"===a.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{orderId:"data.id",grandTotal:"data.total",tax:"data.taxes",shipping:"data.shipping"}},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceOrder",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}},{sku:"cc",name:"Cool Cap",price:42,quantity:1,variant:void 0,customDimensions:{1:"one size"}}],{orderId:"0rd3r1d",grandTotal:555,tax:73.76,shipping:5.22},{currencyCode:"EUR"}]]},h={in:X("product add",{timestamp:1700000301}),mapping:{name:"ecommerceAddToCart",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceAddToCart",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},b={in:X("product view",{timestamp:1700000302}),mapping:{name:"ecommerceProductDetailView",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceProductDetailView",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},E={in:X("cart view",{timestamp:1700000303}),mapping:{name:"ecommerceCartUpdate",data:{set:[{loop:["nested",{condition:a=>y(a)&&"product"===a.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},"data.value",{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceCartUpdate",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],840,{currencyCode:"EUR"}]]},C={in:X("promotion visible",{timestamp:1700000304}),mapping:{name:"trackEvent",settings:{goalId:"goal_1"},data:{set:["data.name","data.position"]}},out:[["trackEvent","Setting up tracking easily","hero"],["trackGoal","goal_1",void 0]]},q={in:X("page view",{timestamp:1700000305}),mapping:{data:"data.title"},out:[["trackPageView","walkerOS documentation"]]};export{m as examples,t as schemas};//# sourceMappingURL=dev.mjs.map
1
+ var e=Object.defineProperty,a=(a,t)=>{for(var i in t)e(a,i,{get:t[i],enumerable:!0})},t={};a(t,{MappingSchema:()=>c,SettingsSchema:()=>o,mapping:()=>s,settings:()=>d});import{zodToSchema as i}from"@walkeros/core/dev";import{z as r}from"@walkeros/core/dev";var o=r.object({appId:r.string().min(1).describe("ID of the Piwik PRO site (like XXX-XXX-XXX-XXX-XXX)"),url:r.string().url().describe("URL of your Piwik PRO account (like https://your_account_name.piwik.pro/)"),linkTracking:r.boolean().default(!1).describe("Enables/Disables download and outlink tracking")});import{z as n}from"@walkeros/core/dev";var c=n.object({goalId:n.string().describe("ID to count the event as a goal (like 1)"),goalValue:n.string().describe("Property to be used as the goal value (like data.value)").optional()}),d=i(o),s=i(c),p={};a(p,{env:()=>m,step:()=>v});var m={};a(m,{init:()=>u,push:()=>l,simulation:()=>k});var u={window:{_paq:void 0},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},l={window:{_paq:[]},document:{createElement:()=>({type:"",src:"",async:!1,defer:!1}),head:{appendChild:()=>{}}}},k=["call:window._paq.push"],v={};a(v,{cartUpdate:()=>R,customEvent:()=>b,ecommerceAddToCart:()=>h,ecommerceOrder:()=>X,init:()=>w,pageViewWithTitle:()=>C,productDetailView:()=>P});import{getEvent as y,isObject as g}from"@walkeros/core";var w={title:"Initialization",description:"Destination bootstrap loads the Piwik PRO tracker and configures the tracker URL and app id.",in:{loadScript:!0,settings:{appId:"XXX-XXX-XXX-XXX-XXX",url:"https://your_account_name.piwik.pro/"}},out:[["_paq.push",["setTrackerUrl","https://your_account_name.piwik.pro/ppms.php"]],["_paq.push",["setSiteId","XXX-XXX-XXX-XXX-XXX"]],["_paq.push",["enableLinkTracking"]]]},X={title:"Ecommerce order",description:"A completed order calls Piwik PRO ecommerceOrder with line items, order totals, and currency code.",in:y("order complete",{timestamp:1700000300}),mapping:{name:"ecommerceOrder",data:{set:[{loop:["nested",{condition:e=>g(e)&&"product"===e.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{orderId:"data.id",grandTotal:"data.total",tax:"data.taxes",shipping:"data.shipping"}},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceOrder",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}},{sku:"cc",name:"Cool Cap",price:42,quantity:1,variant:void 0,customDimensions:{1:"one size"}}],{orderId:"0rd3r1d",grandTotal:555,tax:73.76,shipping:5.22},{currencyCode:"EUR"}]]},h={title:"Add to cart",description:"A product add fires Piwik PRO ecommerceAddToCart with the added item and currency code.",in:y("product add",{timestamp:1700000301}),mapping:{name:"ecommerceAddToCart",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceAddToCart",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},P={title:"Product detail view",description:"A product view fires Piwik PRO ecommerceProductDetailView with a single-item array and currency code.",in:y("product view",{timestamp:1700000302}),mapping:{name:"ecommerceProductDetailView",data:{set:[{set:[{map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceProductDetailView",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],{currencyCode:"EUR"}]]},R={title:"Cart update",description:"A cart view fires Piwik PRO ecommerceCartUpdate with nested products, total value, and currency code.",in:y("cart view",{timestamp:1700000303}),mapping:{name:"ecommerceCartUpdate",data:{set:[{loop:["nested",{condition:e=>g(e)&&"product"===e.entity,map:{sku:"data.id",name:"data.name",price:"data.price",quantity:{value:1},variant:{key:"data.color"},customDimensions:{map:{1:"data.size"}}}}]},"data.value",{map:{currencyCode:{value:"EUR"}}}]}},out:[["ecommerceCartUpdate",[{sku:"ers",name:"Everyday Ruck Snack",price:420,quantity:1,variant:"black",customDimensions:{1:"l"}}],840,{currencyCode:"EUR"}]]},b={title:"Custom event with goal",description:"A promotion visible event fires Piwik PRO trackEvent and then trackGoal to record a goal conversion.",in:y("promotion visible",{timestamp:1700000304}),mapping:{name:"trackEvent",settings:{goalId:"goal_1"},data:{set:["data.name","data.position"]}},out:[["trackEvent","Setting up tracking easily","hero"],["trackGoal","goal_1",void 0]]},C={title:"Page view",description:"A page view fires Piwik PRO trackPageView with the page title resolved from event data.",in:y("page view",{timestamp:1700000305}),mapping:{data:"data.title"},out:[["trackPageView","walkerOS documentation"]]};export{p as examples,t 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/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: undefined as unknown as Env['window']['_paq'],\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: [] as unknown[],\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 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 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 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 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 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 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 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"]}
1
+ {"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: undefined as unknown as Env['window']['_paq'],\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: [] as unknown[],\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"]}
@@ -80,6 +80,8 @@ __export(step_exports, {
80
80
  });
81
81
  var import_core = require("@walkeros/core");
82
82
  var init2 = {
83
+ title: "Initialization",
84
+ description: "Destination bootstrap loads the Piwik PRO tracker and configures the tracker URL and app id.",
83
85
  in: {
84
86
  loadScript: true,
85
87
  settings: {
@@ -97,6 +99,8 @@ var init2 = {
97
99
  ]
98
100
  };
99
101
  var ecommerceOrder = {
102
+ title: "Ecommerce order",
103
+ description: "A completed order calls Piwik PRO ecommerceOrder with line items, order totals, and currency code.",
100
104
  in: (0, import_core.getEvent)("order complete", { timestamp: 1700000300 }),
101
105
  mapping: {
102
106
  name: "ecommerceOrder",
@@ -170,6 +174,8 @@ var ecommerceOrder = {
170
174
  ]
171
175
  };
172
176
  var ecommerceAddToCart = {
177
+ title: "Add to cart",
178
+ description: "A product add fires Piwik PRO ecommerceAddToCart with the added item and currency code.",
173
179
  in: (0, import_core.getEvent)("product add", { timestamp: 1700000301 }),
174
180
  mapping: {
175
181
  name: "ecommerceAddToCart",
@@ -219,6 +225,8 @@ var ecommerceAddToCart = {
219
225
  ]
220
226
  };
221
227
  var productDetailView = {
228
+ title: "Product detail view",
229
+ description: "A product view fires Piwik PRO ecommerceProductDetailView with a single-item array and currency code.",
222
230
  in: (0, import_core.getEvent)("product view", { timestamp: 1700000302 }),
223
231
  mapping: {
224
232
  name: "ecommerceProductDetailView",
@@ -268,6 +276,8 @@ var productDetailView = {
268
276
  ]
269
277
  };
270
278
  var cartUpdate = {
279
+ title: "Cart update",
280
+ description: "A cart view fires Piwik PRO ecommerceCartUpdate with nested products, total value, and currency code.",
271
281
  in: (0, import_core.getEvent)("cart view", { timestamp: 1700000303 }),
272
282
  mapping: {
273
283
  name: "ecommerceCartUpdate",
@@ -321,6 +331,8 @@ var cartUpdate = {
321
331
  ]
322
332
  };
323
333
  var customEvent = {
334
+ title: "Custom event with goal",
335
+ description: "A promotion visible event fires Piwik PRO trackEvent and then trackGoal to record a goal conversion.",
324
336
  in: (0, import_core.getEvent)("promotion visible", { timestamp: 1700000304 }),
325
337
  mapping: {
326
338
  name: "trackEvent",
@@ -337,6 +349,8 @@ var customEvent = {
337
349
  ]
338
350
  };
339
351
  var pageViewWithTitle = {
352
+ title: "Page view",
353
+ description: "A page view fires Piwik PRO trackPageView with the page title resolved from event data.",
340
354
  in: (0, import_core.getEvent)("page view", { timestamp: 1700000305 }),
341
355
  mapping: {
342
356
  data: "data.title"
@@ -59,6 +59,8 @@ __export(step_exports, {
59
59
  });
60
60
  import { getEvent, isObject } from "@walkeros/core";
61
61
  var init2 = {
62
+ title: "Initialization",
63
+ description: "Destination bootstrap loads the Piwik PRO tracker and configures the tracker URL and app id.",
62
64
  in: {
63
65
  loadScript: true,
64
66
  settings: {
@@ -76,6 +78,8 @@ var init2 = {
76
78
  ]
77
79
  };
78
80
  var ecommerceOrder = {
81
+ title: "Ecommerce order",
82
+ description: "A completed order calls Piwik PRO ecommerceOrder with line items, order totals, and currency code.",
79
83
  in: getEvent("order complete", { timestamp: 1700000300 }),
80
84
  mapping: {
81
85
  name: "ecommerceOrder",
@@ -149,6 +153,8 @@ var ecommerceOrder = {
149
153
  ]
150
154
  };
151
155
  var ecommerceAddToCart = {
156
+ title: "Add to cart",
157
+ description: "A product add fires Piwik PRO ecommerceAddToCart with the added item and currency code.",
152
158
  in: getEvent("product add", { timestamp: 1700000301 }),
153
159
  mapping: {
154
160
  name: "ecommerceAddToCart",
@@ -198,6 +204,8 @@ var ecommerceAddToCart = {
198
204
  ]
199
205
  };
200
206
  var productDetailView = {
207
+ title: "Product detail view",
208
+ description: "A product view fires Piwik PRO ecommerceProductDetailView with a single-item array and currency code.",
201
209
  in: getEvent("product view", { timestamp: 1700000302 }),
202
210
  mapping: {
203
211
  name: "ecommerceProductDetailView",
@@ -247,6 +255,8 @@ var productDetailView = {
247
255
  ]
248
256
  };
249
257
  var cartUpdate = {
258
+ title: "Cart update",
259
+ description: "A cart view fires Piwik PRO ecommerceCartUpdate with nested products, total value, and currency code.",
250
260
  in: getEvent("cart view", { timestamp: 1700000303 }),
251
261
  mapping: {
252
262
  name: "ecommerceCartUpdate",
@@ -300,6 +310,8 @@ var cartUpdate = {
300
310
  ]
301
311
  };
302
312
  var customEvent = {
313
+ title: "Custom event with goal",
314
+ description: "A promotion visible event fires Piwik PRO trackEvent and then trackGoal to record a goal conversion.",
303
315
  in: getEvent("promotion visible", { timestamp: 1700000304 }),
304
316
  mapping: {
305
317
  name: "trackEvent",
@@ -316,6 +328,8 @@ var customEvent = {
316
328
  ]
317
329
  };
318
330
  var pageViewWithTitle = {
331
+ title: "Page view",
332
+ description: "A page view fires Piwik PRO trackPageView with the page title resolved from event data.",
319
333
  in: getEvent("page view", { timestamp: 1700000305 }),
320
334
  mapping: {
321
335
  data: "data.title"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/web-destination-piwikpro",
4
- "version": "3.4.0",
4
+ "version": "3.4.1",
5
5
  "type": "destination",
6
6
  "platform": [
7
7
  "web"
@@ -92,6 +92,8 @@
92
92
  },
93
93
  "step": {
94
94
  "cartUpdate": {
95
+ "title": "Cart update",
96
+ "description": "A cart view fires Piwik PRO ecommerceCartUpdate with nested products, total value, and currency code.",
95
97
  "in": {
96
98
  "name": "cart view",
97
99
  "data": {
@@ -147,7 +149,7 @@
147
149
  "group": "gr0up",
148
150
  "count": 1,
149
151
  "version": {
150
- "source": "3.4.0",
152
+ "source": "3.4.1",
151
153
  "tagging": 1
152
154
  },
153
155
  "source": {
@@ -165,7 +167,7 @@
165
167
  "nested",
166
168
  {
167
169
  "condition": {
168
- "$code": "a=>y(a)&&\"product\"===a.entity"
170
+ "$code": "e=>g(e)&&\"product\"===e.entity"
169
171
  },
170
172
  "map": {
171
173
  "sku": "data.id",
@@ -220,6 +222,8 @@
220
222
  ]
221
223
  },
222
224
  "customEvent": {
225
+ "title": "Custom event with goal",
226
+ "description": "A promotion visible event fires Piwik PRO trackEvent and then trackGoal to record a goal conversion.",
223
227
  "in": {
224
228
  "name": "promotion visible",
225
229
  "data": {
@@ -270,7 +274,7 @@
270
274
  "group": "gr0up",
271
275
  "count": 1,
272
276
  "version": {
273
- "source": "3.4.0",
277
+ "source": "3.4.1",
274
278
  "tagging": 1
275
279
  },
276
280
  "source": {
@@ -305,6 +309,8 @@
305
309
  ]
306
310
  },
307
311
  "ecommerceAddToCart": {
312
+ "title": "Add to cart",
313
+ "description": "A product add fires Piwik PRO ecommerceAddToCart with the added item and currency code.",
308
314
  "in": {
309
315
  "name": "product add",
310
316
  "data": {
@@ -344,7 +350,7 @@
344
350
  "group": "gr0up",
345
351
  "count": 1,
346
352
  "version": {
347
- "source": "3.4.0",
353
+ "source": "3.4.1",
348
354
  "tagging": 1
349
355
  },
350
356
  "source": {
@@ -411,6 +417,8 @@
411
417
  ]
412
418
  },
413
419
  "ecommerceOrder": {
420
+ "title": "Ecommerce order",
421
+ "description": "A completed order calls Piwik PRO ecommerceOrder with line items, order totals, and currency code.",
414
422
  "in": {
415
423
  "name": "order complete",
416
424
  "data": {
@@ -497,7 +505,7 @@
497
505
  "group": "gr0up",
498
506
  "count": 1,
499
507
  "version": {
500
- "source": "3.4.0",
508
+ "source": "3.4.1",
501
509
  "tagging": 1
502
510
  },
503
511
  "source": {
@@ -515,7 +523,7 @@
515
523
  "nested",
516
524
  {
517
525
  "condition": {
518
- "$code": "a=>y(a)&&\"product\"===a.entity"
526
+ "$code": "e=>g(e)&&\"product\"===e.entity"
519
527
  },
520
528
  "map": {
521
529
  "sku": "data.id",
@@ -591,6 +599,8 @@
591
599
  ]
592
600
  },
593
601
  "init": {
602
+ "title": "Initialization",
603
+ "description": "Destination bootstrap loads the Piwik PRO tracker and configures the tracker URL and app id.",
594
604
  "in": {
595
605
  "loadScript": true,
596
606
  "settings": {
@@ -622,6 +632,8 @@
622
632
  ]
623
633
  },
624
634
  "pageViewWithTitle": {
635
+ "title": "Page view",
636
+ "description": "A page view fires Piwik PRO trackPageView with the page title resolved from event data.",
625
637
  "in": {
626
638
  "name": "page view",
627
639
  "data": {
@@ -676,7 +688,7 @@
676
688
  "group": "gr0up",
677
689
  "count": 1,
678
690
  "version": {
679
- "source": "3.4.0",
691
+ "source": "3.4.1",
680
692
  "tagging": 1
681
693
  },
682
694
  "source": {
@@ -696,6 +708,8 @@
696
708
  ]
697
709
  },
698
710
  "productDetailView": {
711
+ "title": "Product detail view",
712
+ "description": "A product view fires Piwik PRO ecommerceProductDetailView with a single-item array and currency code.",
699
713
  "in": {
700
714
  "name": "product view",
701
715
  "data": {
@@ -735,7 +749,7 @@
735
749
  "group": "gr0up",
736
750
  "count": 1,
737
751
  "version": {
738
- "source": "3.4.0",
752
+ "source": "3.4.1",
739
753
  "tagging": 1
740
754
  },
741
755
  "source": {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/web-destination-piwikpro",
3
3
  "description": "Piwik PRO destination for walkerOS",
4
- "version": "3.4.0",
4
+ "version": "3.4.1",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
@@ -37,11 +37,11 @@
37
37
  "update": "npx npm-check-updates -u && npm update"
38
38
  },
39
39
  "dependencies": {
40
- "@walkeros/core": "3.4.0",
41
- "@walkeros/web-core": "3.4.0"
40
+ "@walkeros/core": "3.4.1",
41
+ "@walkeros/web-core": "3.4.1"
42
42
  },
43
43
  "devDependencies": {
44
- "@walkeros/collector": "3.4.0"
44
+ "@walkeros/collector": "3.4.1"
45
45
  },
46
46
  "repository": {
47
47
  "url": "git+https://github.com/elbwalker/walkerOS.git",