@walkeros/cli 4.7.0-next-1790245733116 → 4.7.0
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/CHANGELOG.md +136 -48
- package/README.md +11 -5
- package/dist/cli.js +9186 -6548
- package/dist/dev.d.ts +7 -0
- package/dist/dev.js +17 -2
- package/dist/dev.js.map +1 -1
- package/dist/examples/README.md +47 -213
- package/dist/examples/customers/README.md +18 -0
- package/dist/examples/customers/cust-1001 +1 -0
- package/dist/examples/customers/cust-42 +1 -0
- package/dist/examples/flow-complete.json +4760 -592
- package/dist/examples/flow-complete.md +884 -225
- package/dist/examples/index.d.ts +2681 -1
- package/dist/examples/index.js +6882 -659
- package/dist/examples/index.js.map +1 -1
- package/dist/examples/shared/README.md +22 -0
- package/dist/index.d.ts +297 -24
- package/dist/index.js +2767 -884
- package/dist/index.js.map +1 -1
- package/examples/README.md +47 -213
- package/examples/customers/README.md +18 -0
- package/examples/customers/cust-1001 +1 -0
- package/examples/customers/cust-42 +1 -0
- package/examples/flow-complete.json +4760 -592
- package/examples/flow-complete.md +884 -225
- package/examples/shared/README.md +22 -0
- package/package.json +31 -8
- package/dist/examples/docker-compose.runner.yml +0 -44
- package/examples/docker-compose.runner.yml +0 -44
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/validators.ts","../../examples/flow-complete.json","../../examples/flow-simple.json","../../src/examples/index.ts"],"sourcesContent":["/**\n * Configuration Type Guards and Validators\n *\n * Type checking utilities for configuration validation.\n * Uses Zod schemas from @walkeros/core for Flow.Json validation.\n */\n\nimport type { Flow } from '@walkeros/core';\nimport { isObject } from '@walkeros/core';\nimport { schemas } from '@walkeros/core/dev';\n\nconst { safeParseConfig } = schemas;\n\n/**\n * Detect platform from a single flow.\n *\n * Platform is determined by `flow.config.platform`.\n */\nexport function detectPlatform(\n flow: Record<string, unknown>,\n): 'web' | 'server' | undefined {\n const config = flow.config;\n if (!isObject(config)) return undefined;\n const platform = config.platform;\n if (platform === 'web' || platform === 'server') return platform;\n return undefined;\n}\n\n/**\n * Type guard: Check if config is a valid Flow.Json structure.\n *\n * @remarks\n * Uses Zod validation from @walkeros/core.\n * Returns false instead of throwing on invalid input.\n *\n * @example\n * ```typescript\n * if (isFlowConfig(config)) {\n * const flowSettings = getFlowSettings(config, 'production');\n * }\n * ```\n */\nexport function isFlowConfig(data: unknown): data is Flow.Json {\n const result = safeParseConfig(data);\n return result.success;\n}\n\n/**\n * Validate Flow.Json and throw descriptive error if invalid.\n *\n * @remarks\n * Uses Zod validation from @walkeros/core.\n * Provides detailed error messages from Zod.\n *\n * @param data - Raw configuration data\n * @returns Validated Flow.Json\n * @throws Error with descriptive message if validation fails\n */\nexport function validateFlowConfig(data: unknown): Flow.Json {\n // After successful Zod parse, the data conforms structurally to Flow.Json.\n // The existing `isFlowConfig` guard re-narrows `unknown` to `Flow.Json` via\n // the same schema — TS can't see through `safeParseConfig` because it\n // returns a Zod-inferred type that differs nominally (not structurally)\n // from the Flow.Json interface.\n if (isFlowConfig(data)) return data;\n\n // Not parseable — format Zod errors for CLI display.\n const result = safeParseConfig(data);\n if (result.success) {\n // Defensive: isFlowConfig and safeParseConfig disagreed (cannot happen).\n throw new Error('Invalid configuration: failed Flow.Json type guard.');\n }\n const errors = result.error.issues\n .map((issue) => {\n const path =\n issue.path.length > 0 ? issue.path.map(String).join('.') : 'root';\n return ` - ${path}: ${issue.message}`;\n })\n .join('\\n');\n throw new Error(`Invalid configuration:\\n${errors}`);\n}\n\n/**\n * Get available flow names from a Flow.Json.\n *\n * @param config - Flow.Json configuration\n * @returns Array of flow names\n */\nexport function getAvailableFlows(config: Flow.Json): string[] {\n return Object.keys(config.flows);\n}\n","{\n \"$schema\": \"https://walkeros.io/schema/flow/v4.json\",\n \"version\": 4,\n \"variables\": {\n \"currency\": \"EUR\",\n \"flowVersion\": \"1.0.0\",\n \"ga4MeasurementId\": \"$env.GA4_MEASUREMENT_ID:G-DEMO123456\",\n \"apiUrl\": \"$env.API_URL:http://localhost:8080/collect\",\n \"ga4ItemsLoop\": {\n \"loop\": [\n \"nested\",\n {\n \"condition\": \"$code:(value, context) => value.entity === 'product'\",\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"price\": \"data.price\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n },\n \"metaContentsLoop\": {\n \"loop\": [\n \"nested\",\n {\n \"map\": {\n \"id\": \"data.id\",\n \"item_price\": \"data.price\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n }\n },\n \"contract\": {\n \"default\": {\n \"description\": \"Web shop tracking contract\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"globals\": {\n \"type\": \"object\",\n \"properties\": {\n \"environment\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n }\n },\n \"consent\": {\n \"type\": \"object\",\n \"required\": [\"functional\"],\n \"properties\": {\n \"functional\": {\n \"type\": \"boolean\",\n \"const\": true\n }\n }\n }\n }\n },\n \"events\": {\n \"product\": {\n \"*\": {\n \"description\": \"A product in the catalog\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"name\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Product SKU\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Display name\"\n }\n }\n }\n }\n },\n \"add\": {\n \"description\": \"Product added to cart\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"quantity\"],\n \"properties\": {\n \"quantity\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n }\n }\n }\n }\n },\n \"order\": {\n \"complete\": {\n \"description\": \"Purchase completed\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"total\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"total\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n }\n }\n }\n }\n },\n \"flows\": {\n \"web\": {\n \"sources\": {\n \"browser\": {\n \"package\": \"@walkeros/web-source-browser\",\n \"primary\": true,\n \"config\": {\n \"settings\": {\n \"prefix\": \"data-elb\",\n \"pageview\": true,\n \"session\": {\n \"consent\": {\n \"marketing\": true\n }\n },\n \"elb\": \"elb\",\n \"elbLayer\": true\n }\n }\n },\n \"dataLayer\": {\n \"package\": \"@walkeros/web-source-datalayer\",\n \"next\": \"enricher\",\n \"config\": {\n \"require\": [\"session\"],\n \"settings\": {\n \"name\": \"dataLayer\",\n \"prefix\": \"gtag\"\n },\n \"mapping\": {\n \"gtag\": {\n \"add_to_cart\": {\n \"name\": \"product add\",\n \"data\": {\n \"map\": {\n \"id\": \"items.0.item_id\",\n \"name\": \"items.0.item_name\",\n \"price\": \"items.0.price\",\n \"currency\": \"currency\",\n \"quantity\": {\n \"key\": \"items.0.quantity\",\n \"value\": 1\n }\n }\n }\n },\n \"purchase\": {\n \"name\": \"order complete\",\n \"data\": {\n \"map\": {\n \"id\": \"transaction_id\",\n \"total\": \"value\",\n \"currency\": \"currency\",\n \"tax\": \"tax\",\n \"shipping\": \"shipping\"\n }\n }\n }\n }\n }\n }\n },\n \"demo\": {\n \"package\": \"@walkeros/source-demo\",\n \"config\": {\n \"settings\": {\n \"events\": [\n {\n \"name\": \"page view\",\n \"data\": {\n \"title\": \"Home\",\n \"path\": \"/\"\n },\n \"delay\": 0\n },\n {\n \"name\": \"product view\",\n \"data\": {\n \"id\": \"SKU-001\",\n \"name\": \"Blue Shirt\",\n \"price\": 49.99,\n \"currency\": \"EUR\",\n \"category\": \"Clothing\"\n },\n \"delay\": 300\n },\n {\n \"name\": \"product add\",\n \"data\": {\n \"id\": \"SKU-001\",\n \"name\": \"Blue Shirt\",\n \"price\": 49.99,\n \"currency\": \"EUR\",\n \"quantity\": 2\n },\n \"delay\": 600\n },\n {\n \"name\": \"test debug\",\n \"data\": {\n \"message\": \"This should be ignored\"\n },\n \"delay\": 800\n },\n {\n \"name\": \"order complete\",\n \"data\": {\n \"id\": \"ORD-123\",\n \"total\": 149.97,\n \"currency\": \"EUR\",\n \"tax\": 12.5,\n \"shipping\": 5.99\n },\n \"user\": {\n \"email\": \"customer@example.com\",\n \"id\": \"U-456\",\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-001\",\n \"name\": \"Blue Shirt\",\n \"price\": 49.99,\n \"quantity\": 2\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-002\",\n \"name\": \"Red Cap\",\n \"price\": 24.99,\n \"quantity\": 1\n }\n }\n ],\n \"delay\": 1000\n }\n ]\n }\n }\n }\n },\n \"transformers\": {\n \"enricher\": {\n \"code\": {\n \"type\": \"enricher\",\n \"push\": \"$code:(event) => ({ ...event, context: { ...event.context, enrichedAt: Date.now() } })\"\n },\n \"config\": {}\n }\n },\n \"destinations\": {\n \"ga4\": {\n \"package\": \"@walkeros/web-destination-gtag\",\n \"config\": {\n \"require\": [\"consent\", \"user\"],\n \"consent\": {\n \"marketing\": true\n },\n \"settings\": {\n \"ga4\": {\n \"measurementId\": \"$var.ga4MeasurementId\"\n }\n },\n \"mapping\": {\n \"page\": {\n \"view\": {\n \"name\": \"page_view\",\n \"data\": {\n \"map\": {\n \"page_title\": \"data.title\",\n \"page_location\": \"data.path\"\n }\n }\n }\n },\n \"product\": {\n \"view\": {\n \"name\": \"view_item\",\n \"data\": {\n \"map\": {\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"$var.currency\"\n },\n \"value\": \"data.price\",\n \"items\": {\n \"loop\": [\n \"this\",\n {\n \"map\": {\n \"item_id\": [\n {\n \"key\": \"data.sku\"\n },\n {\n \"key\": \"data.id\"\n }\n ],\n \"item_name\": \"data.name\",\n \"item_category\": \"data.category\",\n \"price\": \"data.price\"\n }\n }\n ]\n }\n }\n }\n },\n \"add\": {\n \"name\": \"add_to_cart\",\n \"data\": {\n \"map\": {\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"$var.currency\"\n },\n \"value\": \"data.price\",\n \"items\": {\n \"loop\": [\n \"this\",\n {\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n }\n }\n }\n }\n },\n \"order\": {\n \"complete\": {\n \"name\": \"purchase\",\n \"data\": {\n \"map\": {\n \"transaction_id\": \"data.id\",\n \"value\": {\n \"fn\": \"$code:(event) => Math.round(event.data.total * 100)\"\n },\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"$var.currency\"\n },\n \"tax\": \"data.tax\",\n \"shipping\": \"data.shipping\",\n \"items\": \"$var.ga4ItemsLoop\"\n }\n }\n }\n },\n \"test\": {\n \"*\": {\n \"ignore\": true\n }\n }\n }\n },\n \"examples\": {\n \"page-view\": {\n \"in\": {\n \"name\": \"page view\",\n \"data\": {\n \"title\": \"Home\",\n \"path\": \"/\"\n },\n \"entity\": \"page\",\n \"action\": \"view\"\n },\n \"mapping\": {\n \"name\": \"page_view\",\n \"data\": {\n \"map\": {\n \"page_title\": \"data.title\",\n \"page_location\": \"data.path\"\n }\n }\n },\n \"out\": [\n \"event\",\n \"page_view\",\n {\n \"page_title\": \"Home\",\n \"page_location\": \"/\"\n }\n ]\n },\n \"product-add\": {\n \"in\": {\n \"name\": \"product add\",\n \"data\": {\n \"id\": \"SKU-001\",\n \"name\": \"Blue Shirt\",\n \"price\": 49.99,\n \"currency\": \"EUR\",\n \"quantity\": 2\n },\n \"entity\": \"product\",\n \"action\": \"add\"\n },\n \"mapping\": {\n \"name\": \"add_to_cart\",\n \"data\": {\n \"map\": {\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"EUR\"\n },\n \"value\": \"data.price\",\n \"items\": {\n \"loop\": [\n \"this\",\n {\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n }\n }\n }\n },\n \"out\": [\n \"event\",\n \"add_to_cart\",\n {\n \"currency\": \"EUR\",\n \"value\": 49.99,\n \"items\": [\n {\n \"item_id\": \"SKU-001\",\n \"item_name\": \"Blue Shirt\",\n \"quantity\": 2\n }\n ]\n }\n ]\n },\n \"test-ignored\": {\n \"in\": {\n \"name\": \"test debug\",\n \"data\": {\n \"message\": \"This should be ignored\"\n },\n \"entity\": \"test\",\n \"action\": \"debug\"\n },\n \"out\": false\n }\n }\n },\n \"api\": {\n \"package\": \"@walkeros/web-destination-api\",\n \"config\": {\n \"settings\": {\n \"url\": \"$var.apiUrl\",\n \"batch\": 5,\n \"transform\": \"$code:(data) => JSON.stringify(data)\"\n },\n \"data\": {\n \"map\": {\n \"sent_at\": {\n \"fn\": \"$code:() => Date.now()\"\n },\n \"flow_version\": \"$var.flowVersion\"\n }\n },\n \"mapping\": {\n \"order\": {\n \"complete\": {\n \"data\": {\n \"map\": {\n \"transaction_id\": \"data.id\",\n \"value\": \"data.total\",\n \"currency\": \"data.currency\",\n \"user_email\": {\n \"key\": \"user.email\",\n \"consent\": {\n \"marketing\": true\n }\n },\n \"items\": \"$var.ga4ItemsLoop\"\n }\n }\n }\n },\n \"test\": {\n \"*\": {\n \"ignore\": true\n }\n }\n }\n }\n },\n \"debug\": {\n \"code\": {\n \"type\": \"debug-logger\",\n \"push\": \"$code:(event, ctx) => { ctx.logger.info('[DEBUG]', event.name, event.data); }\"\n },\n \"config\": {\n \"consent\": {}\n }\n }\n },\n \"collector\": {\n \"consent\": {\n \"functional\": true,\n \"marketing\": false\n },\n \"user\": {\n \"id\": \"anonymous\"\n },\n \"globals\": {\n \"environment\": \"demo\",\n \"version\": \"$var.flowVersion\"\n },\n \"custom\": {\n \"campaign\": \"flow-demo\"\n }\n },\n \"config\": {\n \"platform\": \"web\",\n \"bundle\": {\n \"packages\": {\n \"@walkeros/collector\": {},\n \"@walkeros/web-source-browser\": {},\n \"@walkeros/web-source-datalayer\": {},\n \"@walkeros/source-demo\": {},\n \"@walkeros/web-destination-gtag\": {},\n \"@walkeros/web-destination-api\": {}\n }\n }\n }\n },\n \"server\": {\n \"variables\": {\n \"metaPixelId\": \"$env.META_PIXEL_ID:123456789012345\",\n \"metaAccessToken\": \"$env.META_ACCESS_TOKEN:demo_token\"\n },\n \"sources\": {\n \"http\": {\n \"package\": \"@walkeros/server-source-express\",\n \"primary\": true,\n \"next\": [\"filter\"],\n \"cache\": {\n \"rules\": [\n {\n \"match\": {\n \"key\": \"ingest.method\",\n \"operator\": \"eq\",\n \"value\": \"GET\"\n },\n \"key\": [\"ingest.method\", \"ingest.path\"],\n \"ttl\": 300,\n \"update\": {\n \"headers.X-Cache\": {\n \"key\": \"cache.status\"\n }\n }\n }\n ]\n },\n \"config\": {\n \"settings\": {\n \"path\": \"/collect\",\n \"port\": 8080,\n \"cors\": true,\n \"healthCheck\": true\n },\n \"ingest\": {\n \"map\": {\n \"method\": { \"key\": \"method\" },\n \"path\": { \"key\": \"path\" },\n \"context\": {\n \"map\": {\n \"ip\": { \"key\": \"ip\" },\n \"userAgent\": { \"key\": \"headers.user-agent\" },\n \"language\": { \"key\": \"headers.accept-language\" },\n \"referer\": { \"key\": \"headers.referer\" },\n \"anonymizedIp\": {\n \"fn\": \"$code:(req) => req.ip ? req.ip.replace(/\\\\.\\\\d+$/, '.0') : ''\"\n }\n }\n }\n }\n }\n },\n \"examples\": {\n \"post-event\": {\n \"in\": {\n \"method\": \"POST\",\n \"path\": \"/collect\",\n \"headers\": {\n \"content-type\": \"application/json\"\n },\n \"body\": {\n \"name\": \"page view\",\n \"data\": {\n \"title\": \"Home\",\n \"url\": \"https://example.com\"\n }\n }\n },\n \"out\": {\n \"name\": \"page view\",\n \"data\": {\n \"title\": \"Home\",\n \"url\": \"https://example.com\"\n },\n \"entity\": \"page\",\n \"action\": \"view\"\n }\n }\n }\n }\n },\n \"transformers\": {\n \"filter\": {\n \"code\": {\n \"type\": \"filter\",\n \"push\": \"$code:(event) => event.name.startsWith('internal_') || event.name.startsWith('debug_') ? false : event\"\n },\n \"next\": \"fingerprint\",\n \"config\": {},\n \"examples\": {\n \"passes-normal\": {\n \"in\": {\n \"name\": \"page view\",\n \"data\": {\n \"title\": \"Home\"\n },\n \"entity\": \"page\",\n \"action\": \"view\"\n },\n \"out\": {\n \"name\": \"page view\",\n \"data\": {\n \"title\": \"Home\"\n },\n \"entity\": \"page\",\n \"action\": \"view\"\n }\n },\n \"filters-internal\": {\n \"in\": {\n \"name\": \"internal_heartbeat\",\n \"data\": {},\n \"entity\": \"internal\",\n \"action\": \"heartbeat\"\n },\n \"out\": false\n }\n }\n },\n \"fingerprint\": {\n \"package\": \"@walkeros/server-transformer-fingerprint\",\n \"config\": {\n \"settings\": {\n \"fields\": [\n \"context.ip\",\n \"context.userAgent\",\n \"context.language\",\n {\n \"fn\": \"$code:() => new Date().toISOString().slice(0, 10)\"\n }\n ],\n \"output\": \"user.hash\",\n \"length\": 16\n }\n }\n }\n },\n \"destinations\": {\n \"meta\": {\n \"package\": \"@walkeros/server-destination-meta\",\n \"before\": \"fingerprint\",\n \"config\": {\n \"settings\": {\n \"pixelId\": \"$var.metaPixelId\",\n \"accessToken\": \"$var.metaAccessToken\",\n \"user_data\": {\n \"external_id\": {\n \"set\": [\"user.device\", \"user.session\"]\n }\n }\n },\n \"policy\": {\n \"user_data.em\": {\n \"key\": \"user.email\",\n \"consent\": {\n \"marketing\": true\n }\n },\n \"user_data.external_id\": \"user.id\",\n \"custom_data.server_processed\": {\n \"value\": true\n },\n \"custom_data.request_meta\": {\n \"map\": {\n \"ip\": \"context.ip\",\n \"ua\": \"context.userAgent\"\n }\n }\n },\n \"mapping\": {\n \"page\": {\n \"view\": {\n \"name\": \"PageView\",\n \"data\": \"data\"\n }\n },\n \"product\": {\n \"view\": {\n \"name\": \"ViewContent\",\n \"data\": {\n \"map\": {\n \"value\": \"data.price\",\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"$var.currency\"\n },\n \"content_type\": {\n \"value\": \"product\"\n },\n \"content_ids\": {\n \"set\": [\"data.id\"]\n }\n }\n }\n },\n \"add\": {\n \"name\": \"AddToCart\",\n \"data\": {\n \"map\": {\n \"value\": \"data.price\",\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"$var.currency\"\n },\n \"content_type\": {\n \"value\": \"product\"\n },\n \"contents\": {\n \"loop\": [\n \"this\",\n {\n \"map\": {\n \"id\": \"data.id\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n }\n }\n }\n }\n },\n \"order\": {\n \"complete\": {\n \"name\": \"Purchase\",\n \"data\": {\n \"map\": {\n \"value\": \"data.total\",\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"$var.currency\"\n },\n \"order_id\": \"data.id\",\n \"contents\": \"$var.metaContentsLoop\"\n }\n }\n }\n },\n \"test\": {\n \"*\": {\n \"ignore\": true\n }\n },\n \"*\": {\n \"click\": {\n \"name\": \"CustomEvent\",\n \"data\": \"data\"\n }\n }\n }\n },\n \"examples\": {\n \"purchase\": {\n \"in\": {\n \"name\": \"order complete\",\n \"data\": {\n \"id\": \"ORD-123\",\n \"total\": 149.97,\n \"currency\": \"EUR\"\n },\n \"entity\": \"order\",\n \"action\": \"complete\"\n },\n \"mapping\": {\n \"name\": \"Purchase\",\n \"data\": {\n \"map\": {\n \"value\": \"data.total\",\n \"currency\": {\n \"key\": \"data.currency\",\n \"value\": \"EUR\"\n },\n \"order_id\": \"data.id\"\n }\n }\n },\n \"out\": {\n \"data\": [\n {\n \"event_name\": \"Purchase\",\n \"custom_data\": {\n \"value\": 149.97,\n \"currency\": \"EUR\",\n \"order_id\": \"ORD-123\"\n }\n }\n ]\n }\n }\n }\n },\n \"demo\": {\n \"package\": \"@walkeros/destination-demo\",\n \"config\": {\n \"settings\": {\n \"name\": \"Server Events\",\n \"values\": [\"name\", \"data\", \"nested\", \"user\", \"consent\", \"context\"]\n }\n }\n }\n },\n \"collector\": {\n \"consent\": {\n \"functional\": true\n },\n \"globals\": {\n \"environment\": \"demo\",\n \"version\": \"$var.flowVersion\",\n \"platform\": \"server\",\n \"startedAt\": \"$code:Date.now()\"\n }\n },\n \"config\": {\n \"platform\": \"server\",\n \"bundle\": {\n \"packages\": {\n \"@walkeros/core\": {\n \"path\": \"../../core\"\n },\n \"@walkeros/collector\": {\n \"path\": \"../../collector\"\n },\n \"@walkeros/server-source-express\": {},\n \"@walkeros/server-destination-meta\": {},\n \"@walkeros/destination-demo\": {},\n \"@walkeros/server-transformer-fingerprint\": {}\n }\n }\n }\n }\n }\n}\n","{\n \"version\": 4,\n \"flows\": {\n \"default\": {\n \"destinations\": {\n \"demo\": {\n \"package\": \"@walkeros/destination-demo\",\n \"config\": {\n \"settings\": {\n \"name\": \"Simple Demo\",\n \"values\": [\"name\", \"data\", \"user\", \"consent\"]\n }\n }\n }\n },\n \"config\": {\n \"platform\": \"web\",\n \"bundle\": {\n \"packages\": {\n \"@walkeros/collector\": {\n \"version\": \"latest\",\n \"imports\": [\"startFlow\"]\n },\n \"@walkeros/destination-demo\": {\n \"version\": \"latest\"\n }\n }\n }\n }\n }\n }\n}\n","/**\n * Typed re-exports of bundled example flow configurations.\n *\n * Importing JSON files via `resolveJsonModule` produces a deeply structural\n * type whose literals are widened (`version: number` instead of `4`,\n * `platform: string` instead of `'web' | 'server'`). That widened shape is\n * not assignable to `Flow.Json` and forces every consumer to cast away to\n * `Record<string, unknown>`, losing all type information about the example.\n *\n * Routing the imports through `validateFlowConfig` (a real type guard backed\n * by the canonical Zod schema in `@walkeros/core`) launders the JSON into a\n * proper `Flow.Json` value with no `as` cast at any call site:\n *\n * - The Zod parser checks the structure at module load time. If an example\n * drifts away from the schema, the package fails to load loudly instead\n * of producing a silently broken value.\n * - The return type is `Flow.Json` (the canonical interface), not the Zod\n * inferred shape, because `validateFlowConfig` uses `isFlowConfig` as a\n * `data is Flow.Json` type predicate.\n *\n * Pattern choice (`: Flow.Json` annotation via runtime validator) was picked\n * over `satisfies Flow.Json` and `as const satisfies Flow.Json` because:\n *\n * - `: Flow.Json` annotation alone fails: the JSON's widened literals do\n * not satisfy the literal constraints (`version: 4`, platform unions).\n * - `satisfies Flow.Json` fails for the same reason.\n * - `as const satisfies Flow.Json` cannot be applied to a JSON import\n * (TypeScript does not support `as const` on imported values).\n * - A wrapper-function or runtime-validator approach is the only pattern\n * that produces a `Flow.Json`-typed value without an `as` cast anywhere\n * in the chain. It also gives consumers a load-time correctness check\n * for free.\n *\n * Cost: one Zod parse per example at module init. Examples are loaded by\n * tests, MCP servers, and dev seed scripts. None are perf-critical.\n */\n\nimport { validateFlowConfig } from '../config/validators.js';\n\nimport flowCompleteImport from '../../examples/flow-complete.json';\nimport flowSimpleImport from '../../examples/flow-simple.json';\n\nexport const flowComplete = validateFlowConfig(flowCompleteImport);\nexport const flowSimple = validateFlowConfig(flowSimpleImport);\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/config/validators.ts","../../examples/flow-complete.json","../../examples/flow-simple.json","../../src/examples/flow-complete.manifest.ts","../../src/examples/index.ts"],"sourcesContent":["/**\n * Configuration Type Guards and Validators\n *\n * Type checking utilities for configuration validation.\n * Uses Zod schemas from @walkeros/core for Flow.Json validation.\n */\n\nimport type { Flow } from '@walkeros/core';\nimport { isObject } from '@walkeros/core';\nimport { schemas } from '@walkeros/core/dev';\n\nconst { safeParseConfig } = schemas;\n\n/**\n * Detect platform from a single flow.\n *\n * Platform is determined by `flow.config.platform`.\n */\nexport function detectPlatform(\n flow: Record<string, unknown>,\n): 'web' | 'server' | undefined {\n const config = flow.config;\n if (!isObject(config)) return undefined;\n const platform = config.platform;\n if (platform === 'web' || platform === 'server') return platform;\n return undefined;\n}\n\n/**\n * Type guard: Check if config is a valid Flow.Json structure.\n *\n * @remarks\n * Uses Zod validation from @walkeros/core.\n * Returns false instead of throwing on invalid input.\n *\n * @example\n * ```typescript\n * if (isFlowConfig(config)) {\n * const flowSettings = getFlowSettings(config, 'production');\n * }\n * ```\n */\nexport function isFlowConfig(data: unknown): data is Flow.Json {\n const result = safeParseConfig(data);\n return result.success;\n}\n\n/**\n * Validate Flow.Json and throw descriptive error if invalid.\n *\n * @remarks\n * Uses Zod validation from @walkeros/core.\n * Provides detailed error messages from Zod.\n *\n * @param data - Raw configuration data\n * @returns Validated Flow.Json\n * @throws Error with descriptive message if validation fails\n */\nexport function validateFlowConfig(data: unknown): Flow.Json {\n // After successful Zod parse, the data conforms structurally to Flow.Json.\n // The existing `isFlowConfig` guard re-narrows `unknown` to `Flow.Json` via\n // the same schema — TS can't see through `safeParseConfig` because it\n // returns a Zod-inferred type that differs nominally (not structurally)\n // from the Flow.Json interface.\n if (isFlowConfig(data)) return data;\n\n // Not parseable — format Zod errors for CLI display.\n const result = safeParseConfig(data);\n if (result.success) {\n // Defensive: isFlowConfig and safeParseConfig disagreed (cannot happen).\n throw new Error('Invalid configuration: failed Flow.Json type guard.');\n }\n const errors = result.error.issues\n .map((issue) => {\n const path =\n issue.path.length > 0 ? issue.path.map(String).join('.') : 'root';\n return ` - ${path}: ${issue.message}`;\n })\n .join('\\n');\n throw new Error(`Invalid configuration:\\n${errors}`);\n}\n\n/**\n * Get available flow names from a Flow.Json.\n *\n * @param config - Flow.Json configuration\n * @returns Array of flow names\n */\nexport function getAvailableFlows(config: Flow.Json): string[] {\n return Object.keys(config.flows);\n}\n","{\n \"$schema\": \"https://walkeros.io/schema/flow/v4.json\",\n \"version\": 4,\n \"include\": [\"./shared\"],\n \"variables\": {\n \"currency\": \"EUR\",\n \"gcp\": {\n \"project\": \"$env.GCP_PROJECT:demo-project\",\n \"dataset\": \"$env.BQ_DATASET:walkeros\",\n \"topic\": \"$env.PUBSUB_TOPIC:walkeros-events\"\n }\n },\n \"contract\": {\n \"default\": {\n \"description\": \"Every event from the shop: explicit consent, a page language, and complete ecommerce data.\",\n \"tagging\": 1,\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\"consent\", \"globals\"],\n \"properties\": {\n \"consent\": {\n \"type\": \"object\",\n \"required\": [\"functional\"],\n \"properties\": {\n \"functional\": {\n \"const\": true\n },\n \"marketing\": {\n \"const\": true\n }\n }\n },\n \"globals\": {\n \"type\": \"object\",\n \"required\": [\"language\"],\n \"properties\": {\n \"language\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z]{2}$\"\n }\n }\n },\n \"user\": {\n \"type\": \"object\",\n \"properties\": {\n \"device\": {\n \"type\": \"string\"\n },\n \"session\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"events\": {\n \"product\": {\n \"*\": {\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"name\", \"price\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"price\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n },\n \"impression\": {\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"name\", \"price\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"price\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"list\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"position\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n }\n }\n }\n },\n \"add\": {\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"name\", \"price\", \"quantity\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"price\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"quantity\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n }\n }\n }\n }\n },\n \"order\": {\n \"complete\": {\n \"required\": [\"nested\"],\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"id\", \"total\", \"currency\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"total\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"currency\": {\n \"enum\": [\"EUR\", \"GBP\", \"USD\"]\n }\n }\n },\n \"nested\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity\": {\n \"const\": \"product\"\n }\n }\n }\n }\n }\n }\n },\n \"session\": {\n \"start\": {\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\"id\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"isNew\": {\n \"type\": \"boolean\"\n },\n \"count\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"marketing\": {\n \"const\": true\n }\n }\n }\n }\n }\n }\n }\n },\n \"server\": {\n \"extend\": \"default\",\n \"description\": \"What the server adds before any vendor sees an event.\",\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\"user\"],\n \"properties\": {\n \"user\": {\n \"type\": \"object\",\n \"required\": [\"hash\"],\n \"properties\": {\n \"hash\": {\n \"type\": \"string\",\n \"description\": \"Cookieless visitor id: HMAC-SHA256 with a secret salt over the anonymized IP, browser with major version, OS and site. Rotates daily (UTC) and is per site, so count visitors per day.\"\n },\n \"ltv\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"segment\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n },\n \"flows\": {\n \"web\": {\n \"config\": {\n \"platform\": \"web\",\n \"url\": \"$env.SITE_URL:https://www.example.com\",\n \"settings\": {\n \"windowCollector\": \"walkerCollector\"\n },\n \"observe\": {\n \"url\": \"$env.OBSERVE_URL:https://app.walkeros.io/observe\",\n \"binding\": \"$env.OBSERVE_BINDING:obs-web\"\n },\n \"bundle\": {\n \"packages\": {\n \"@walkeros/collector\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/web-source-cmp-usercentrics\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/web-source-session\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/web-source-datalayer\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/web-source-browser\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/web-destination-gtag\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/web-destination-api\": {\n \"version\": \"4.7.0\"\n }\n },\n \"env\": {\n \"ENVIRONMENT\": \"production\"\n }\n }\n },\n \"collector\": {\n \"globals\": {\n \"language\": \"en\"\n },\n \"globalsStatic\": {\n \"site\": \"$env.SITE_ID:shop\"\n },\n \"custom\": {\n \"environment\": \"$env.ENVIRONMENT\"\n },\n \"next\": \"pageGroup\"\n },\n \"sources\": {\n \"usercentrics\": {\n \"package\": \"@walkeros/web-source-cmp-usercentrics\",\n \"config\": {\n \"settings\": {\n \"explicitOnly\": true,\n \"categoryMap\": {\n \"essential\": \"functional\",\n \"functional\": \"functional\",\n \"marketing\": \"marketing\"\n }\n }\n },\n \"examples\": {\n \"explicitDecision\": {\n \"title\": \"Explicit decision\",\n \"description\": \"The user accepts every category in the banner. categoryMap turns essential and functional into functional, so the collector receives exactly the consent keys the contract names.\",\n \"public\": true,\n \"trigger\": {\n \"type\": \"consent\",\n \"options\": {\n \"dispatch\": \"cmp\"\n }\n },\n \"in\": [\n {\n \"categorySlug\": \"essential\",\n \"consent\": {\n \"status\": true,\n \"history\": [\n {\n \"type\": \"explicit\",\n \"status\": true\n }\n ]\n }\n },\n {\n \"categorySlug\": \"functional\",\n \"consent\": {\n \"status\": true,\n \"history\": [\n {\n \"type\": \"explicit\",\n \"status\": true\n }\n ]\n }\n },\n {\n \"categorySlug\": \"marketing\",\n \"consent\": {\n \"status\": true,\n \"history\": [\n {\n \"type\": \"explicit\",\n \"status\": true\n }\n ]\n }\n }\n ],\n \"out\": [\n [\n \"elb\",\n \"walker consent\",\n {\n \"functional\": true,\n \"marketing\": true\n }\n ]\n ]\n },\n \"implicitSuppressed\": {\n \"title\": \"First visit, no decision yet\",\n \"description\": \"A page load with only implicit defaults publishes nothing: explicitOnly keeps consent absent until the user decides, so consent.functional present always means a real decision.\",\n \"trigger\": {\n \"type\": \"consent\",\n \"options\": {\n \"dispatch\": \"init\"\n }\n },\n \"in\": [\n {\n \"categorySlug\": \"essential\",\n \"consent\": {\n \"status\": true,\n \"history\": [\n {\n \"type\": \"implicit\",\n \"status\": true\n }\n ]\n }\n },\n {\n \"categorySlug\": \"functional\",\n \"consent\": {\n \"status\": false,\n \"history\": [\n {\n \"type\": \"implicit\",\n \"status\": false\n }\n ]\n }\n },\n {\n \"categorySlug\": \"marketing\",\n \"consent\": {\n \"status\": false,\n \"history\": [\n {\n \"type\": \"implicit\",\n \"status\": false\n }\n ]\n }\n }\n ],\n \"out\": []\n }\n }\n },\n \"session\": {\n \"package\": \"@walkeros/web-source-session\",\n \"config\": {\n \"settings\": {\n \"storage\": true,\n \"consent\": \"functional\",\n \"length\": 30\n }\n },\n \"examples\": {\n \"marketingSession\": {\n \"title\": \"New session from an ad click\",\n \"description\": \"A visit from a Google Ads click starts a session: the source sets user.session and user.device and emits session start with the raw gclid, which the server keeps for the conversion.\",\n \"public\": true,\n \"trigger\": {\n \"type\": \"load\",\n \"options\": {\n \"url\": \"https://www.example.com/?utm_source=google&utm_medium=cpc&utm_campaign=trail&gclid=gclid-abc123\",\n \"referrer\": \"https://www.google.com/\"\n }\n },\n \"in\": {\n \"storage\": true\n },\n \"out\": [\n [\n \"elb\",\n \"user\",\n {\n \"session\": \"s3ss10n\",\n \"device\": \"d3v1c3\"\n }\n ],\n [\n \"elb\",\n \"session\",\n {\n \"id\": \"s3ss10n\",\n \"start\": 1790251200000,\n \"isNew\": true,\n \"count\": 1,\n \"runs\": 1,\n \"isStart\": true,\n \"storage\": true,\n \"referrer\": \"www.google.com\",\n \"campaign\": \"trail\",\n \"medium\": \"cpc\",\n \"source\": \"google\",\n \"gclid\": \"gclid-abc123\",\n \"clickId\": \"gclid\",\n \"platform\": \"google\",\n \"marketing\": true,\n \"device\": \"d3v1c3\",\n \"updated\": 1790251200000\n }\n ],\n [\n \"elb\",\n {\n \"name\": \"session start\",\n \"data\": {\n \"id\": \"s3ss10n\",\n \"start\": 1790251200000,\n \"isNew\": true,\n \"count\": 1,\n \"runs\": 1,\n \"isStart\": true,\n \"storage\": true,\n \"referrer\": \"www.google.com\",\n \"campaign\": \"trail\",\n \"medium\": \"cpc\",\n \"source\": \"google\",\n \"gclid\": \"gclid-abc123\",\n \"clickId\": \"gclid\",\n \"platform\": \"google\",\n \"marketing\": true,\n \"device\": \"d3v1c3\",\n \"updated\": 1790251200000\n },\n \"source\": {\n \"type\": \"session\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/?utm_source=google&utm_medium=cpc&utm_campaign=trail&gclid=gclid-abc123\",\n \"referrer\": \"https://www.google.com/\"\n }\n }\n ]\n ]\n }\n }\n },\n \"dataLayer\": {\n \"package\": \"@walkeros/web-source-datalayer\",\n \"config\": {\n \"require\": [\"consent\", \"session\"],\n \"settings\": {\n \"filter\": \"$code:(e) => { const a = e && typeof e === 'object' && !Array.isArray(e) && Object.prototype.toString.call(e) === '[object Arguments]'; const n = e && typeof e.event === 'string' ? e.event : ''; return a || n.startsWith('elb '); }\"\n },\n \"mapping\": {\n \"dataLayer\": {\n \"add_to_cart\": {\n \"name\": \"product add\",\n \"data\": {\n \"map\": {\n \"id\": \"data.items.0.item_id\",\n \"name\": \"data.items.0.item_name\",\n \"price\": \"data.items.0.price\",\n \"quantity\": {\n \"key\": \"data.items.0.quantity\",\n \"value\": 1\n }\n }\n }\n }\n }\n }\n },\n \"examples\": {\n \"gtagAddToCart\": {\n \"title\": \"Existing gtag add_to_cart\",\n \"description\": \"The shop already calls gtag(\\\"event\\\", \\\"add_to_cart\\\", ...). The source emits it as dataLayer add_to_cart; its mapping then renames it to product add with id, name, price and quantity, so nothing on the page changes.\",\n \"public\": true,\n \"trigger\": {\n \"type\": \"gtag\"\n },\n \"in\": [\n \"event\",\n \"add_to_cart\",\n {\n \"currency\": \"EUR\",\n \"value\": 129.9,\n \"items\": [\n {\n \"item_id\": \"SKU-1\",\n \"item_name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n ]\n }\n ],\n \"out\": [\n [\n \"elb\",\n {\n \"name\": \"dataLayer add_to_cart\",\n \"data\": {\n \"currency\": \"EUR\",\n \"value\": 129.9,\n \"items\": [\n {\n \"item_id\": \"SKU-1\",\n \"item_name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n ]\n },\n \"source\": {\n \"type\": \"dataLayer\",\n \"platform\": \"web\",\n \"url\": \"http://localhost/\",\n \"referrer\": \"\"\n }\n }\n ]\n ]\n },\n \"ownPushSkipped\": {\n \"title\": \"Own GTM push skipped\",\n \"description\": \"The gtm destination pushes \\\"elb product add\\\" into the same dataLayer. The filter skips that prefix (and gtag arguments pushes), so walkerOS never reads back what it wrote.\",\n \"trigger\": {\n \"type\": \"direct\"\n },\n \"in\": {\n \"event\": \"elb product add\",\n \"data\": {\n \"id\": \"SKU-1\"\n }\n },\n \"out\": []\n }\n }\n },\n \"browser\": {\n \"package\": \"@walkeros/web-source-browser\",\n \"primary\": true,\n \"config\": {\n \"settings\": {\n \"prefix\": \"data-elb\",\n \"pageview\": true,\n \"elb\": \"elb\"\n }\n },\n \"examples\": {\n \"pageView\": {\n \"title\": \"Page view\",\n \"description\": \"The page load becomes a page view with domain, title and path; pageview: true needs no tagging.\",\n \"public\": true,\n \"trigger\": {\n \"type\": \"load\",\n \"options\": {\n \"url\": \"https://www.example.com/product/trail-runner\",\n \"title\": \"Trail Runner\",\n \"referrer\": \"https://www.example.com/\"\n }\n },\n \"in\": \"\",\n \"out\": [\n [\n \"elb\",\n {\n \"name\": \"page view\",\n \"data\": {\n \"domain\": \"www.example.com\",\n \"title\": \"Trail Runner\",\n \"referrer\": \"https://www.example.com/\",\n \"id\": \"/product/trail-runner\"\n },\n \"context\": {},\n \"globals\": {},\n \"trigger\": \"load\",\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/product/trail-runner\",\n \"referrer\": \"https://www.example.com/\"\n }\n }\n ]\n ]\n },\n \"productImpression\": {\n \"title\": \"Product impression\",\n \"description\": \"A product tile scrolled into view fires a product impression with the list and position from its data-elb attributes.\",\n \"trigger\": {\n \"type\": \"impression\",\n \"options\": \"div\"\n },\n \"in\": \"<div data-elb=\\\"product\\\" data-elb-product=\\\"id:SKU-1;name:Trail Runner;price:129.9;list:Running;position:1\\\" data-elbaction=\\\"impression:impression\\\"></div>\",\n \"out\": [\n [\n \"elb\",\n {\n \"name\": \"product impression\",\n \"entity\": \"product\",\n \"action\": \"impression\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"list\": \"Running\",\n \"position\": 1\n },\n \"trigger\": \"impression\",\n \"context\": {},\n \"nested\": [],\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"http://localhost/\",\n \"referrer\": \"\"\n },\n \"globals\": {}\n }\n ]\n ]\n },\n \"productAdd\": {\n \"title\": \"Add to cart click\",\n \"description\": \"A click on the tagged add-to-cart button becomes a product add with the product data and quantity.\",\n \"trigger\": {\n \"type\": \"click\",\n \"options\": \"button\"\n },\n \"in\": \"<button data-elb=\\\"product\\\" data-elb-product=\\\"id:SKU-1;name:Trail Runner;price:129.9;quantity:1\\\" data-elbaction=\\\"click:add\\\">Add to cart</button>\",\n \"out\": [\n [\n \"elb\",\n {\n \"name\": \"product add\",\n \"entity\": \"product\",\n \"action\": \"add\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n },\n \"trigger\": \"click\",\n \"context\": {},\n \"nested\": [],\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"http://localhost/\",\n \"referrer\": \"\"\n },\n \"globals\": {}\n }\n ]\n ]\n }\n }\n }\n },\n \"transformers\": {\n \"pageGroup\": {\n \"code\": {\n \"type\": \"pageGroup\",\n \"push\": \"$code:(event) => { const url = event.source && event.source.url ? event.source.url : ''; const path = url ? new URL(url).pathname : ''; const pageGroup = path.startsWith('/product') ? 'product' : path.startsWith('/checkout') ? 'checkout' : 'content'; return { event: { ...event, globals: { ...event.globals, pageGroup } } }; }\"\n },\n \"examples\": {\n \"checkout\": {\n \"title\": \"Checkout page group\",\n \"description\": \"The inline code step derives globals.pageGroup from the page path once per event, so every destination can group pages the same way.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n },\n \"product\": {\n \"title\": \"Product page group\",\n \"description\": \"A product detail path gets the product group.\",\n \"in\": {\n \"name\": \"product view\",\n \"entity\": \"product\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9\n },\n \"id\": \"ev-product-view\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/product/trail-runner\"\n }\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"product view\",\n \"entity\": \"product\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9\n },\n \"id\": \"ev-product-view\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"product\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/product/trail-runner\"\n }\n }\n }\n ]\n ]\n }\n }\n }\n },\n \"destinations\": {\n \"ga4\": {\n \"package\": \"@walkeros/web-destination-gtag\",\n \"config\": {\n \"loadScript\": true,\n \"consent\": {\n \"functional\": true\n },\n \"include\": [\"globals\"],\n \"policy\": {\n \"data.currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ]\n },\n \"settings\": {\n \"ga4\": {\n \"measurementId\": \"$env.GA4_MEASUREMENT_ID:G-MAINSITE\"\n },\n \"como\": true\n },\n \"mapping\": {\n \"product\": {\n \"view\": {\n \"name\": \"view_item\",\n \"data\": {\n \"map\": {\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"value\": \"data.price\",\n \"items\": {\n \"set\": [\n {\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"price\": \"data.price\"\n }\n }\n ]\n }\n }\n }\n }\n },\n \"order\": {\n \"complete\": {\n \"name\": \"purchase\",\n \"condition\": \"$code:(event) => event.data && event.data.total > 0\",\n \"data\": {\n \"map\": {\n \"transaction_id\": \"data.id\",\n \"value\": {\n \"fn\": \"$code:(event) => Math.round(Number(event.data.total) * 100) / 100\"\n },\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"coupon\": {\n \"key\": \"data.coupon\",\n \"condition\": \"$code:(event) => Boolean(event.data && event.data.coupon)\"\n },\n \"items\": {\n \"loop\": [\n \"nested\",\n {\n \"condition\": \"$code:(entity) => entity && entity.entity === 'product'\",\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"price\": \"data.price\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n }\n }\n },\n \"consent\": {\n \"functional\": true\n }\n }\n }\n }\n },\n \"examples\": {\n \"purchase\": {\n \"title\": \"Purchase with items\",\n \"description\": \"order complete becomes a GA4 purchase: value rounded by fn, items looped from nested products, coupon only when present, the page group sent as a global.\",\n \"public\": true,\n \"mapping\": {\n \"name\": \"purchase\",\n \"condition\": \"$code:(event) => event.data && event.data.total > 0\",\n \"data\": {\n \"map\": {\n \"transaction_id\": \"data.id\",\n \"value\": {\n \"fn\": \"$code:(event) => Math.round(Number(event.data.total) * 100) / 100\"\n },\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"coupon\": {\n \"key\": \"data.coupon\",\n \"condition\": \"$code:(event) => Boolean(event.data && event.data.coupon)\"\n },\n \"items\": {\n \"loop\": [\n \"nested\",\n {\n \"condition\": \"$code:(entity) => entity && entity.entity === 'product'\",\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"price\": \"data.price\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n }\n }\n },\n \"consent\": {\n \"functional\": true\n }\n },\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"window.gtag\",\n \"consent\",\n \"default\",\n {\n \"ad_storage\": \"denied\",\n \"ad_user_data\": \"denied\",\n \"ad_personalization\": \"denied\",\n \"analytics_storage\": \"denied\"\n }\n ],\n [\"window.gtag\", \"config\", \"G-MAINSITE\", {}],\n [\n \"window.gtag\",\n \"event\",\n \"purchase\",\n {\n \"globals_site\": \"shop\",\n \"globals_language\": \"en\",\n \"globals_pageGroup\": \"checkout\",\n \"transaction_id\": \"ORD-100\",\n \"value\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\",\n \"items\": [\n {\n \"item_id\": \"SKU-1\",\n \"item_name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n },\n {\n \"item_id\": \"SKU-2\",\n \"item_name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n ],\n \"send_to\": \"G-MAINSITE\"\n }\n ]\n ]\n },\n \"purchaseWithoutCoupon\": {\n \"title\": \"Purchase without coupon\",\n \"description\": \"The coupon condition leaves the parameter out when the order has none.\",\n \"mapping\": {\n \"name\": \"purchase\",\n \"condition\": \"$code:(event) => event.data && event.data.total > 0\",\n \"data\": {\n \"map\": {\n \"transaction_id\": \"data.id\",\n \"value\": {\n \"fn\": \"$code:(event) => Math.round(Number(event.data.total) * 100) / 100\"\n },\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"coupon\": {\n \"key\": \"data.coupon\",\n \"condition\": \"$code:(event) => Boolean(event.data && event.data.coupon)\"\n },\n \"items\": {\n \"loop\": [\n \"nested\",\n {\n \"condition\": \"$code:(entity) => entity && entity.entity === 'product'\",\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"price\": \"data.price\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n }\n }\n },\n \"consent\": {\n \"functional\": true\n }\n },\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-101\",\n \"total\": 129.9,\n \"currency\": \"EUR\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n }\n ]\n },\n \"out\": [\n [\n \"window.gtag\",\n \"consent\",\n \"default\",\n {\n \"ad_storage\": \"denied\",\n \"ad_user_data\": \"denied\",\n \"ad_personalization\": \"denied\",\n \"analytics_storage\": \"denied\"\n }\n ],\n [\"window.gtag\", \"config\", \"G-MAINSITE\", {}],\n [\n \"window.gtag\",\n \"event\",\n \"purchase\",\n {\n \"globals_site\": \"shop\",\n \"globals_language\": \"en\",\n \"globals_pageGroup\": \"checkout\",\n \"transaction_id\": \"ORD-101\",\n \"value\": 129.9,\n \"currency\": \"EUR\",\n \"items\": [\n {\n \"item_id\": \"SKU-1\",\n \"item_name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n ],\n \"send_to\": \"G-MAINSITE\"\n }\n ]\n ]\n },\n \"productView\": {\n \"title\": \"Product view\",\n \"description\": \"product view becomes view_item; the currency falls back to the flow variable.\",\n \"mapping\": {\n \"name\": \"view_item\",\n \"data\": {\n \"map\": {\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"value\": \"data.price\",\n \"items\": {\n \"set\": [\n {\n \"map\": {\n \"item_id\": \"data.id\",\n \"item_name\": \"data.name\",\n \"price\": \"data.price\"\n }\n }\n ]\n }\n }\n }\n },\n \"in\": {\n \"name\": \"product view\",\n \"entity\": \"product\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9\n },\n \"id\": \"ev-product-view\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"product\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/product/trail-runner\"\n }\n },\n \"out\": [\n [\n \"window.gtag\",\n \"consent\",\n \"default\",\n {\n \"ad_storage\": \"denied\",\n \"ad_user_data\": \"denied\",\n \"ad_personalization\": \"denied\",\n \"analytics_storage\": \"denied\"\n }\n ],\n [\"window.gtag\", \"config\", \"G-MAINSITE\", {}],\n [\n \"window.gtag\",\n \"event\",\n \"view_item\",\n {\n \"globals_site\": \"shop\",\n \"globals_language\": \"en\",\n \"globals_pageGroup\": \"product\",\n \"currency\": \"EUR\",\n \"value\": 129.9,\n \"items\": [\n {\n \"item_id\": \"SKU-1\",\n \"item_name\": \"Trail Runner\",\n \"price\": 129.9\n }\n ],\n \"send_to\": \"G-MAINSITE\"\n }\n ]\n ]\n },\n \"consentUpdate\": {\n \"title\": \"Consent Mode update\",\n \"description\": \"como: true turns the walker consent command into gtag consent default and update calls.\",\n \"command\": \"consent\",\n \"in\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"out\": [\n [\n \"window.gtag\",\n \"consent\",\n \"default\",\n {\n \"ad_storage\": \"denied\",\n \"ad_user_data\": \"denied\",\n \"ad_personalization\": \"denied\",\n \"analytics_storage\": \"denied\"\n }\n ],\n [\"window.gtag\", \"config\", \"G-MAINSITE\", {}],\n [\n \"window.gtag\",\n \"consent\",\n \"update\",\n {\n \"analytics_storage\": \"granted\",\n \"ad_storage\": \"granted\",\n \"ad_user_data\": \"granted\",\n \"ad_personalization\": \"granted\"\n }\n ]\n ]\n }\n }\n },\n \"gtm\": {\n \"package\": \"@walkeros/web-destination-gtag\",\n \"before\": {\n \"match\": {\n \"key\": \"event.source.type\",\n \"operator\": \"eq\",\n \"value\": \"dataLayer\"\n },\n \"stop\": true\n },\n \"config\": {\n \"consent\": {\n \"marketing\": true\n },\n \"require\": [\"consent\"],\n \"queue\": true,\n \"data\": {\n \"map\": {\n \"consent\": \"consent\",\n \"globals\": \"globals\",\n \"user\": \"user\",\n \"data\": \"data\"\n }\n },\n \"settings\": {\n \"gtm\": {\n \"containerId\": \"$env.GTM_ID:GTM-SHOP01\"\n }\n },\n \"mapping\": {\n \"product\": {\n \"add\": {\n \"name\": \"elb product add\"\n }\n },\n \"order\": {\n \"complete\": {\n \"name\": \"elb order complete\"\n }\n }\n }\n },\n \"examples\": {\n \"productAdd\": {\n \"title\": \"Feed GTM with the whole event\",\n \"description\": \"The container keeps its triggers: every mapped event arrives as \\\"elb <event>\\\" with consent, globals, user and data, so GTM variables read what walkerOS already knows.\",\n \"public\": true,\n \"mapping\": {\n \"name\": \"elb product add\"\n },\n \"in\": {\n \"name\": \"product add\",\n \"entity\": \"product\",\n \"action\": \"add\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n },\n \"id\": \"ev-product-add\",\n \"trigger\": \"click\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"product\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/product/trail-runner\"\n }\n },\n \"out\": [\n [\n \"window.gtag\",\n \"consent\",\n \"default\",\n {\n \"ad_storage\": \"denied\",\n \"ad_user_data\": \"denied\",\n \"ad_personalization\": \"denied\",\n \"analytics_storage\": \"denied\"\n }\n ],\n [\n \"window.gtag\",\n \"consent\",\n \"update\",\n {\n \"analytics_storage\": \"granted\",\n \"ad_storage\": \"granted\",\n \"ad_user_data\": \"granted\",\n \"ad_personalization\": \"granted\"\n }\n ],\n [\n \"window.dataLayer.push\",\n {\n \"event\": \"elb product add\",\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"site\": \"shop\",\n \"language\": \"en\",\n \"pageGroup\": \"product\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n }\n ]\n ]\n },\n \"dataLayerEcho\": {\n \"title\": \"No echo back to GTM\",\n \"description\": \"An event the dataLayer source read from GTM itself is stopped in before, so GTM never receives its own push twice.\",\n \"in\": {\n \"name\": \"product add\",\n \"entity\": \"product\",\n \"action\": \"add\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n },\n \"id\": \"ev-product-add\",\n \"trigger\": \"click\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"product\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"dataLayer\",\n \"platform\": \"web\"\n }\n },\n \"out\": [\n [\n \"window.gtag\",\n \"consent\",\n \"default\",\n {\n \"ad_storage\": \"denied\",\n \"ad_user_data\": \"denied\",\n \"ad_personalization\": \"denied\",\n \"analytics_storage\": \"denied\"\n }\n ],\n [\n \"window.gtag\",\n \"consent\",\n \"update\",\n {\n \"analytics_storage\": \"granted\",\n \"ad_storage\": \"granted\",\n \"ad_user_data\": \"granted\",\n \"ad_personalization\": \"granted\"\n }\n ]\n ]\n }\n }\n },\n \"collect\": {\n \"package\": \"@walkeros/web-destination-api\",\n \"config\": {\n \"batch\": {\n \"wait\": 1000\n },\n \"policy\": {\n \"user.email\": {\n \"key\": \"user.email\",\n \"consent\": {\n \"marketing\": true\n }\n }\n },\n \"settings\": {\n \"url\": \"$flow.server.url\",\n \"transport\": \"beacon\",\n \"transform\": \"$code:(event) => { const { timing, ...rest } = event; return rest; }\"\n },\n \"mapping\": {\n \"product\": {\n \"impression\": {\n \"batch\": {\n \"wait\": 5000,\n \"size\": 50\n }\n }\n }\n }\n },\n \"examples\": {\n \"orderComplete\": {\n \"title\": \"Order to the server\",\n \"description\": \"The event goes to the first-party server as JSON; the email stays because marketing consent is granted.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"sendWeb\",\n \"http://localhost:8080/collect\",\n \"[{\\\"name\\\":\\\"order complete\\\",\\\"data\\\":{\\\"id\\\":\\\"ORD-100\\\",\\\"total\\\":149.8,\\\"currency\\\":\\\"EUR\\\",\\\"coupon\\\":\\\"WELCOME10\\\"},\\\"context\\\":{},\\\"globals\\\":{\\\"site\\\":\\\"shop\\\",\\\"language\\\":\\\"en\\\",\\\"pageGroup\\\":\\\"checkout\\\"},\\\"custom\\\":{},\\\"user\\\":{\\\"device\\\":\\\"d3v1c3\\\",\\\"session\\\":\\\"s3ss10n\\\",\\\"id\\\":\\\"cust-42\\\",\\\"email\\\":\\\"jane@example.com\\\"},\\\"nested\\\":[{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-1\\\",\\\"name\\\":\\\"Trail Runner\\\",\\\"price\\\":129.9,\\\"quantity\\\":1}},{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-2\\\",\\\"name\\\":\\\"Running Socks\\\",\\\"price\\\":9.95,\\\"quantity\\\":2}}],\\\"consent\\\":{\\\"functional\\\":true,\\\"marketing\\\":true},\\\"id\\\":\\\"ev-order-complete\\\",\\\"trigger\\\":\\\"load\\\",\\\"entity\\\":\\\"order\\\",\\\"action\\\":\\\"complete\\\",\\\"timestamp\\\":1700000000000,\\\"source\\\":{\\\"type\\\":\\\"browser\\\",\\\"platform\\\":\\\"web\\\",\\\"url\\\":\\\"https://www.example.com/checkout/thanks\\\",\\\"count\\\":1,\\\"release\\\":{\\\"web\\\":\\\"4.6.1\\\"}}}]\",\n {\n \"transport\": \"beacon\"\n }\n ]\n ]\n },\n \"emailWithoutMarketing\": {\n \"title\": \"Email removed without marketing consent\",\n \"description\": \"The config policy resolves user.email with consent marketing, so without it the email never leaves the browser.\",\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"sendWeb\",\n \"http://localhost:8080/collect\",\n \"[{\\\"name\\\":\\\"order complete\\\",\\\"data\\\":{\\\"id\\\":\\\"ORD-100\\\",\\\"total\\\":149.8,\\\"currency\\\":\\\"EUR\\\",\\\"coupon\\\":\\\"WELCOME10\\\"},\\\"context\\\":{},\\\"globals\\\":{\\\"site\\\":\\\"shop\\\",\\\"language\\\":\\\"en\\\",\\\"pageGroup\\\":\\\"checkout\\\"},\\\"custom\\\":{},\\\"user\\\":{\\\"device\\\":\\\"d3v1c3\\\",\\\"session\\\":\\\"s3ss10n\\\",\\\"id\\\":\\\"cust-42\\\"},\\\"nested\\\":[{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-1\\\",\\\"name\\\":\\\"Trail Runner\\\",\\\"price\\\":129.9,\\\"quantity\\\":1}},{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-2\\\",\\\"name\\\":\\\"Running Socks\\\",\\\"price\\\":9.95,\\\"quantity\\\":2}}],\\\"consent\\\":{\\\"functional\\\":true},\\\"id\\\":\\\"ev-order-complete\\\",\\\"trigger\\\":\\\"load\\\",\\\"entity\\\":\\\"order\\\",\\\"action\\\":\\\"complete\\\",\\\"timestamp\\\":1700000000000,\\\"source\\\":{\\\"type\\\":\\\"browser\\\",\\\"platform\\\":\\\"web\\\",\\\"url\\\":\\\"https://www.example.com/checkout/thanks\\\",\\\"count\\\":1,\\\"release\\\":{\\\"web\\\":\\\"4.6.1\\\"}}}]\",\n {\n \"transport\": \"beacon\"\n }\n ]\n ]\n }\n }\n }\n }\n },\n \"server\": {\n \"config\": {\n \"platform\": \"server\",\n \"url\": \"$env.SERVER_URL:http://localhost:8080/collect\",\n \"observe\": {\n \"level\": \"standard\",\n \"sample\": 0.1\n },\n \"bundle\": {\n \"packages\": {\n \"@walkeros/collector\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-source-express\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/transformer-ga4\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/transformer-validate\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-transformer-bot\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-transformer-fingerprint\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-transformer-file\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-store-fs\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-destination-gcp\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-destination-meta\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-destination-piwikpro\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-destination-datamanager\": {\n \"version\": \"4.7.0\"\n }\n }\n }\n },\n \"variables\": {\n \"logLevel\": \"$env.LOG_LEVEL:INFO\"\n },\n \"collector\": {\n \"logger\": {\n \"level\": \"$var.logLevel\"\n },\n \"next\": [\n \"fingerprint\",\n \"bot\",\n {\n \"match\": {\n \"key\": \"event.trigger\",\n \"operator\": \"regex\",\n \"value\": \"^(impression|visible)$\",\n \"not\": true\n },\n \"next\": \"enrich\"\n }\n ]\n },\n \"stores\": {\n \"assets\": {\n \"package\": \"@walkeros/server-store-fs\",\n \"config\": {\n \"file\": true,\n \"settings\": {\n \"basePath\": \"$env.ASSETS_DIR:./shared\"\n }\n }\n },\n \"customers\": {\n \"package\": \"@walkeros/server-store-fs\",\n \"config\": {\n \"settings\": {\n \"basePath\": \"$env.CUSTOMERS_DIR:./customers\"\n }\n },\n \"cache\": {\n \"rules\": [\n {\n \"ttl\": 300\n }\n ]\n }\n }\n },\n \"sources\": {\n \"express\": {\n \"package\": \"@walkeros/server-source-express\",\n \"primary\": true,\n \"config\": {\n \"settings\": {\n \"port\": 8080,\n \"paths\": [\n {\n \"path\": \"/collect\",\n \"methods\": [\"POST\"]\n },\n {\n \"path\": \"/g/collect\",\n \"methods\": [\"GET\", \"POST\"]\n },\n {\n \"path\": \"/walker.js\",\n \"methods\": [\"GET\"]\n }\n ],\n \"cors\": {\n \"origin\": \"$env.SITE_ORIGIN:https://www.example.com\",\n \"methods\": [\"GET\", \"POST\"],\n \"headers\": [\"Content-Type\"],\n \"credentials\": false,\n \"maxAge\": 600\n }\n },\n \"async\": {\n \"POST\": true,\n \"GET\": false\n },\n \"ingest\": {\n \"map\": {\n \"ip\": \"ip\",\n \"path\": \"path\",\n \"method\": \"method\",\n \"url\": \"url\",\n \"body\": \"body\",\n \"origin\": \"headers.origin\",\n \"userAgent\": \"headers.user-agent\",\n \"acceptLanguage\": \"headers.accept-language\"\n }\n }\n },\n \"before\": {\n \"one\": [\n {\n \"match\": {\n \"and\": [\n {\n \"key\": \"ingest.path\",\n \"operator\": \"prefix\",\n \"value\": \"/g/collect\"\n },\n {\n \"key\": \"ingest.url\",\n \"operator\": \"regex\",\n \"value\": \"[?&]tid=G-SUBSITE(&|$)\"\n }\n ]\n },\n \"next\": \"ga4Decode\"\n },\n {\n \"match\": {\n \"key\": \"ingest.path\",\n \"operator\": \"suffix\",\n \"value\": \".js\"\n },\n \"next\": \"file\"\n },\n {\n \"match\": {\n \"key\": \"ingest.path\",\n \"operator\": \"prefix\",\n \"value\": \"/g/collect\"\n },\n \"stop\": true\n }\n ]\n },\n \"next\": \"dedup\",\n \"examples\": {\n \"postCollect\": {\n \"title\": \"Event from the web flow\",\n \"description\": \"A POST from the browser collect destination becomes one event; ingest keeps ip, user agent and language for later steps.\",\n \"public\": true,\n \"trigger\": {\n \"type\": \"POST\"\n },\n \"in\": {\n \"method\": \"POST\",\n \"path\": \"/collect\",\n \"headers\": {\n \"content-type\": \"application/json\",\n \"user-agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36\",\n \"accept-language\": \"en-GB,en;q=0.9\",\n \"origin\": \"https://www.example.com\"\n },\n \"body\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n },\n \"out\": [\n [\n \"elb\",\n {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"browser\",\n \"platform\": \"web\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n ]\n ]\n }\n }\n }\n },\n \"transformers\": {\n \"ga4Decode\": {\n \"package\": \"@walkeros/transformer-ga4\",\n \"config\": {\n \"settings\": {\n \"mapping\": {\n \"purchase\": {\n \"extend\": {\n \"data\": {\n \"map\": {\n \"currency\": {\n \"key\": \"params.ep.currency\",\n \"value\": \"EUR\"\n }\n }\n }\n },\n \"remove\": [\"coupon\"]\n }\n }\n }\n },\n \"next\": \"ga4Consent\",\n \"examples\": {\n \"subsitePurchase\": {\n \"title\": \"Purchase from a sub-site not yet migrated\",\n \"description\": \"A GA4 hit from the sub-site property (tid G-SUBSITE, not the main site measurement id) with analytics and ads storage granted (gcs G111) becomes order complete; ga4Consent turns analytics into functional. Its gtag transport points here, the main site uses collect, so nothing counts twice.\",\n \"public\": true,\n \"in\": {\n \"url\": \"https://collect.example.com/g/collect?v=2&tid=G-SUBSITE&_p=p7&cid=cid-9&sid=1700000000&_s=3&gcs=G111&en=purchase&dl=https%3A%2F%2Fshop.example.org%2Fthanks&ep.transaction_id=SUB-77&epn.value=59.9&ep.coupon=SUMMER\"\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"SUB-77\",\n \"currency\": \"EUR\",\n \"total\": 59.9\n },\n \"user\": {\n \"device\": \"cid-9\",\n \"session\": \"1700000000\"\n },\n \"source\": {\n \"type\": \"ga4\",\n \"url\": \"https://shop.example.org/thanks\",\n \"pageLoadId\": \"p7\",\n \"hitSequence\": \"3\"\n },\n \"consent\": {\n \"marketing\": true,\n \"analytics\": true,\n \"functional\": true\n },\n \"globals\": {\n \"language\": \"na\"\n },\n \"id\": \"3825861be3baea76\",\n \"timestamp\": 1790285717017,\n \"timing\": 0,\n \"trigger\": \"ga4\"\n }\n }\n ]\n ]\n },\n \"subsitePageView\": {\n \"title\": \"Page view from the sub-site\",\n \"description\": \"A sub-site page_view becomes a page view; no currency default applies outside purchase.\",\n \"in\": {\n \"url\": \"https://collect.example.com/g/collect?v=2&tid=G-SUBSITE&_p=p7&cid=cid-9&sid=1700000000&_s=1&gcs=G111&en=page_view&dl=https%3A%2F%2Fshop.example.org%2F&dt=Sub%20shop\"\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"page view\",\n \"entity\": \"page\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"https://shop.example.org/\",\n \"title\": \"Sub shop\"\n },\n \"user\": {\n \"device\": \"cid-9\",\n \"session\": \"1700000000\"\n },\n \"source\": {\n \"type\": \"ga4\",\n \"url\": \"https://shop.example.org/\",\n \"pageLoadId\": \"p7\",\n \"hitSequence\": \"1\"\n },\n \"consent\": {\n \"marketing\": true,\n \"analytics\": true,\n \"functional\": true\n },\n \"globals\": {\n \"language\": \"na\"\n },\n \"id\": \"5db509431efb0b8c\",\n \"timestamp\": 1790285717022,\n \"timing\": 0,\n \"trigger\": \"ga4\"\n }\n }\n ]\n ]\n },\n \"subsiteRefused\": {\n \"title\": \"Cookieless ping, consent refused\",\n \"description\": \"With analytics and ads storage refused (gcs G100) GA4 still sends a cookieless ping. It decodes with functional false, so it fails the contract and stays in the warehouse.\",\n \"in\": {\n \"url\": \"https://collect.example.com/g/collect?v=2&tid=G-SUBSITE&_p=p7&cid=cid-9&sid=1700000000&_s=2&gcs=G100&en=page_view&dl=https%3A%2F%2Fshop.example.org%2F&dt=Sub%20shop\"\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"page view\",\n \"entity\": \"page\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"https://shop.example.org/\",\n \"title\": \"Sub shop\"\n },\n \"user\": {\n \"device\": \"cid-9\",\n \"session\": \"1700000000\"\n },\n \"source\": {\n \"type\": \"ga4\",\n \"url\": \"https://shop.example.org/\",\n \"pageLoadId\": \"p7\",\n \"hitSequence\": \"2\"\n },\n \"consent\": {\n \"marketing\": false,\n \"analytics\": false,\n \"functional\": false\n },\n \"globals\": {\n \"language\": \"na\"\n },\n \"id\": \"853ff68a89ce43af\",\n \"timestamp\": 1790285717026,\n \"timing\": 0,\n \"trigger\": \"ga4\"\n }\n }\n ]\n ]\n }\n }\n },\n \"ga4Consent\": {\n \"mapping\": {\n \"policy\": {\n \"consent.functional\": \"consent.analytics\",\n \"globals.language\": {\n \"fn\": \"$code:(event) => { const lang = String(event.user?.language ?? '').slice(0, 2).toLowerCase(); return /^[a-z]{2}$/.test(lang) ? lang : undefined; }\",\n \"value\": \"na\"\n }\n }\n },\n \"examples\": {\n \"analyticsGranted\": {\n \"title\": \"Analytics storage granted\",\n \"public\": true,\n \"description\": \"The decoder reads gcs into consent.analytics and consent.marketing and the browser language (ul) into user.language. This mapping hop copies analytics into functional and derives the page language the contract asks for from the browser language (en-us becomes en). No consent is stamped.\",\n \"in\": {\n \"name\": \"page view\",\n \"entity\": \"page\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"https://shop.example.org/\",\n \"title\": \"Sub shop\"\n },\n \"user\": {\n \"device\": \"cid-9\",\n \"session\": \"1700000000\",\n \"language\": \"en-us\"\n },\n \"source\": {\n \"type\": \"ga4\",\n \"url\": \"https://shop.example.org/\",\n \"pageLoadId\": \"p7\",\n \"hitSequence\": \"1\"\n },\n \"consent\": {\n \"marketing\": true,\n \"analytics\": true\n },\n \"id\": \"5db509431efb0b8c\",\n \"timestamp\": 1790000000000,\n \"timing\": 0,\n \"trigger\": \"ga4\"\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"page view\",\n \"entity\": \"page\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"https://shop.example.org/\",\n \"title\": \"Sub shop\"\n },\n \"user\": {\n \"device\": \"cid-9\",\n \"session\": \"1700000000\",\n \"language\": \"en-us\"\n },\n \"source\": {\n \"type\": \"ga4\",\n \"url\": \"https://shop.example.org/\",\n \"pageLoadId\": \"p7\",\n \"hitSequence\": \"1\"\n },\n \"consent\": {\n \"marketing\": true,\n \"analytics\": true,\n \"functional\": true\n },\n \"globals\": {\n \"language\": \"en\"\n },\n \"id\": \"5db509431efb0b8c\",\n \"timestamp\": 1790000000000,\n \"timing\": 0,\n \"trigger\": \"ga4\"\n }\n }\n ]\n ]\n },\n \"analyticsRefused\": {\n \"title\": \"Analytics storage refused\",\n \"description\": \"Refused analytics storage becomes functional false, so the event fails the contract and vendors never see it. A hit without a browser language gets the language na.\",\n \"in\": {\n \"name\": \"page view\",\n \"entity\": \"page\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"https://shop.example.org/\",\n \"title\": \"Sub shop\"\n },\n \"user\": {\n \"device\": \"cid-9\",\n \"session\": \"1700000000\"\n },\n \"source\": {\n \"type\": \"ga4\",\n \"url\": \"https://shop.example.org/\",\n \"pageLoadId\": \"p7\",\n \"hitSequence\": \"2\"\n },\n \"consent\": {\n \"marketing\": false,\n \"analytics\": false\n },\n \"id\": \"853ff68a89ce43af\",\n \"timestamp\": 1790000000000,\n \"timing\": 0,\n \"trigger\": \"ga4\"\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"page view\",\n \"entity\": \"page\",\n \"action\": \"view\",\n \"data\": {\n \"id\": \"https://shop.example.org/\",\n \"title\": \"Sub shop\"\n },\n \"user\": {\n \"device\": \"cid-9\",\n \"session\": \"1700000000\"\n },\n \"source\": {\n \"type\": \"ga4\",\n \"url\": \"https://shop.example.org/\",\n \"pageLoadId\": \"p7\",\n \"hitSequence\": \"2\"\n },\n \"consent\": {\n \"marketing\": false,\n \"analytics\": false,\n \"functional\": false\n },\n \"globals\": {\n \"language\": \"na\"\n },\n \"id\": \"853ff68a89ce43af\",\n \"timestamp\": 1790000000000,\n \"timing\": 0,\n \"trigger\": \"ga4\"\n }\n }\n ]\n ]\n }\n }\n },\n \"file\": {\n \"package\": \"@walkeros/server-transformer-file\",\n \"env\": {\n \"store\": \"$store.assets\"\n },\n \"config\": {\n \"settings\": {\n \"headers\": {\n \"Cache-Control\": \"public, max-age=300\",\n \"Cross-Origin-Resource-Policy\": \"same-site\"\n }\n }\n },\n \"next\": {\n \"stop\": true\n },\n \"examples\": {\n \"walkerJs\": {\n \"title\": \"Serve walker.js first party\",\n \"description\": \"GET /walker.js is answered from the assets store with the configured headers; the step returns false and its next stops, so a script request never becomes an event. Proven over HTTP in the flow test.\",\n \"public\": true,\n \"in\": {\n \"name\": \"page view\",\n \"entity\": \"page\",\n \"action\": \"view\",\n \"data\": {\n \"domain\": \"www.example.com\",\n \"title\": \"Trail Runner\",\n \"id\": \"/product/trail-runner\"\n },\n \"id\": \"ev-page-view\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"product\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\"\n }\n }\n }\n }\n },\n \"dedup\": {\n \"cache\": {\n \"stop\": true,\n \"namespace\": \"dedup\",\n \"rules\": [\n {\n \"key\": [\"event.id\"],\n \"ttl\": 3600\n }\n ]\n },\n \"examples\": {\n \"firstDelivery\": {\n \"title\": \"First delivery passes\",\n \"description\": \"The first event with this id passes and its id is remembered for an hour. A resend with the same id is stopped (second request, proven in the flow test).\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n },\n \"fingerprint\": {\n \"package\": \"@walkeros/server-transformer-fingerprint\",\n \"config\": {\n \"settings\": {\n \"salt\": \"$env.FINGERPRINT_SALT\",\n \"length\": 16,\n \"site\": [\"event.source.url\", \"ingest.origin\"]\n }\n },\n \"examples\": {\n \"cookielessId\": {\n \"title\": \"Cookieless visitor id\",\n \"description\": \"user.hash is an HMAC over the anonymized IP, browser with major version, OS and site with the secret salt, rotating daily. It is a visitor id for Piwik PRO, not hashing of personal data.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"7f1b2860213c9d3d\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n },\n \"bot\": {\n \"package\": \"@walkeros/server-transformer-bot\",\n \"examples\": {\n \"human\": {\n \"title\": \"Human browser\",\n \"description\": \"A current Chrome with matching headers scores 0 as human; bot only annotates, it never drops.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n },\n \"curl\": {\n \"title\": \"Scripted client\",\n \"description\": \"curl scores 80 as automation, so eventFilter keeps it away from vendors while the warehouse still gets it.\",\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"botScore\": 80,\n \"botCategory\": \"automation\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n },\n \"enrich\": {\n \"next\": [\n {\n \"match\": {\n \"key\": \"event.user.id\",\n \"operator\": \"exists\",\n \"value\": \"\"\n },\n \"next\": \"loadUser\"\n },\n {\n \"match\": {\n \"key\": \"event.name\",\n \"operator\": \"eq\",\n \"value\": \"session start\"\n },\n \"next\": \"sessionSave\"\n },\n {\n \"match\": {\n \"key\": \"event.name\",\n \"operator\": \"eq\",\n \"value\": \"order complete\"\n },\n \"next\": \"sessionLoad\"\n },\n \"validate\"\n ],\n \"examples\": {\n \"orderComplete\": {\n \"title\": \"Enrich an order\",\n \"description\": \"A logged-in order loads the customer lifetime value, restores the session with its gclid and is validated against the server contract, in that order.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420,\n \"segment\": \"loyal\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n },\n \"loadUser\": {\n \"state\": {\n \"mode\": \"get\",\n \"store\": \"customers\",\n \"key\": \"event.user.id\",\n \"value\": \"event.user\",\n \"mapping\": {\n \"map\": {\n \"ltv\": \"ltv\",\n \"segment\": \"segment\"\n }\n }\n },\n \"examples\": {\n \"knownCustomer\": {\n \"title\": \"Known customer\",\n \"description\": \"The customer id is looked up in the customers store (fs demo data, cached for five minutes) and its lifetime value and segment are merged into user, next to the id and hash already there.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420,\n \"segment\": \"loyal\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n },\n \"sessionSave\": {\n \"state\": {\n \"mode\": \"set\",\n \"key\": [\"event.user.session\", \"event.user.hash\"],\n \"value\": {\n \"map\": {\n \"gclid\": \"event.data.gclid\",\n \"started\": \"event.timestamp\"\n }\n }\n },\n \"examples\": {\n \"sessionStart\": {\n \"title\": \"Remember the session\",\n \"description\": \"session start stores gclid and start time under the session and visitor hash in the built-in cache; the event passes unchanged. The later order reads it (flow test).\",\n \"public\": true,\n \"in\": {\n \"name\": \"session start\",\n \"entity\": \"session\",\n \"action\": \"start\",\n \"data\": {\n \"id\": \"s3ss10n\",\n \"isNew\": true,\n \"count\": 1,\n \"marketing\": true,\n \"gclid\": \"gclid-abc123\"\n },\n \"id\": \"ev-session-start\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"content\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/\"\n }\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"session start\",\n \"entity\": \"session\",\n \"action\": \"start\",\n \"data\": {\n \"id\": \"s3ss10n\",\n \"isNew\": true,\n \"count\": 1,\n \"marketing\": true,\n \"gclid\": \"gclid-abc123\"\n },\n \"id\": \"ev-session-start\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"content\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/\"\n }\n }\n }\n ]\n ]\n }\n }\n },\n \"sessionLoad\": {\n \"state\": {\n \"mode\": \"get\",\n \"key\": [\"event.user.session\", \"event.user.hash\"],\n \"value\": \"event.data.session\"\n },\n \"examples\": {\n \"orderWithoutSession\": {\n \"title\": \"Order without a stored session\",\n \"description\": \"No session start was seen for this session in this instance, so nothing is restored and the event passes unchanged. With a stored session data.session carries the gclid (flow test).\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n },\n \"validate\": {\n \"package\": \"@walkeros/transformer-validate\",\n \"config\": {\n \"settings\": {\n \"contract\": [\"$contract.server\"],\n \"mode\": \"pass\"\n }\n },\n \"examples\": {\n \"validOrder\": {\n \"title\": \"Order matches the server contract\",\n \"description\": \"The order has everything the server contract asks for, so source.valid is true and the event continues.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n },\n \"missingHash\": {\n \"title\": \"Order without visitor id\",\n \"description\": \"Without user.hash the event breaks the server contract. mode pass keeps it for the warehouse and writes source.valid false; eventFilter keeps it from vendors.\",\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\"\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": false\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n },\n \"eventFilter\": {\n \"next\": {\n \"match\": {\n \"or\": [\n {\n \"key\": \"event.trigger\",\n \"operator\": \"regex\",\n \"value\": \"^(impression|visible)$\"\n },\n {\n \"key\": \"event.user.botScore\",\n \"operator\": \"gt\",\n \"value\": \"50\"\n },\n {\n \"key\": \"event.source.valid\",\n \"operator\": \"eq\",\n \"value\": \"false\"\n }\n ]\n },\n \"stop\": true\n },\n \"examples\": {\n \"validPasses\": {\n \"title\": \"Valid human order passes\",\n \"description\": \"A valid event from a human reaches the vendor.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n },\n \"impressionStopped\": {\n \"title\": \"Impressions stay out of vendors\",\n \"description\": \"An impression is stopped before Meta, Piwik PRO and Data Manager; Pub/Sub has no eventFilter and keeps it.\",\n \"in\": {\n \"name\": \"product impression\",\n \"entity\": \"product\",\n \"action\": \"impression\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"list\": \"Running\",\n \"position\": 1\n },\n \"id\": \"ev-product-impression\",\n \"trigger\": \"impression\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"content\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\"\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/\"\n }\n },\n \"out\": [[\"return\", false]]\n },\n \"botStopped\": {\n \"title\": \"Likely bot stopped\",\n \"description\": \"A botScore above 50 is stopped for vendors.\",\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 80,\n \"botCategory\": \"automation\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [[\"return\", false]]\n },\n \"invalidStopped\": {\n \"title\": \"Invalid event stopped\",\n \"description\": \"source.valid false (contract broken) is stopped for vendors; the warehouse keeps it.\",\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": false\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [[\"return\", false]]\n }\n }\n },\n \"pseudonymize\": {\n \"package\": \"@walkeros/server-transformer-fingerprint\",\n \"config\": {\n \"settings\": {\n \"salt\": \"$env.EMAIL_SALT\",\n \"rotate\": \"none\",\n \"output\": \"user.email\",\n \"fields\": [\n {\n \"fn\": \"$code:({ event }) => String(event.user.email).trim().toLowerCase()\"\n }\n ]\n }\n },\n \"examples\": {\n \"emailToWarehouse\": {\n \"title\": \"Email pseudonymised for the warehouse\",\n \"public\": true,\n \"description\": \"Before Pub/Sub the email is normalized (trimmed, lowercase) and replaced by an HMAC-SHA256 keyed with EMAIL_SALT, stable over time, so analysts can join on it without reading it. Meta and Data Manager still get the raw email and hash it themselves. Events without an email skip this step (pubsub before).\",\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"Jane.Doe@Example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"return\",\n {\n \"event\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"31b4ae339b671c9e81adbe27e74b38f09a4756300de6b81998c83a3964cbb849\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n }\n ]\n ]\n }\n }\n }\n },\n \"destinations\": {\n \"pubsub\": {\n \"package\": \"@walkeros/server-destination-gcp\",\n \"import\": \"destinationPubSub\",\n \"before\": {\n \"match\": {\n \"key\": \"event.user.email\",\n \"operator\": \"exists\",\n \"value\": \"\"\n },\n \"next\": \"pseudonymize\"\n },\n \"config\": {\n \"credentials\": \"$secret.GCP_SA\",\n \"setup\": {\n \"messageStoragePolicy\": {\n \"allowedPersistenceRegions\": [\n \"europe-west1\",\n \"europe-west3\",\n \"europe-west4\"\n ]\n }\n },\n \"settings\": {\n \"projectId\": \"$var.gcp.project\",\n \"topic\": \"$var.gcp.topic\"\n },\n \"breaker\": {\n \"threshold\": 5,\n \"cooldown\": 30000\n },\n \"timeout\": 10000,\n \"dlqMax\": 1000\n },\n \"examples\": {\n \"everyEvent\": {\n \"title\": \"Every event to the topic\",\n \"description\": \"Pub/Sub publishes each event raw, impressions and bots included, as the warehouse input.\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"PubSub.topic.publishMessage\",\n {\n \"data\": \"{\\\"name\\\":\\\"order complete\\\",\\\"data\\\":{\\\"id\\\":\\\"ORD-100\\\",\\\"total\\\":149.8,\\\"currency\\\":\\\"EUR\\\",\\\"coupon\\\":\\\"WELCOME10\\\"},\\\"context\\\":{},\\\"globals\\\":{\\\"language\\\":\\\"en\\\",\\\"pageGroup\\\":\\\"checkout\\\"},\\\"custom\\\":{},\\\"user\\\":{\\\"device\\\":\\\"d3v1c3\\\",\\\"session\\\":\\\"s3ss10n\\\",\\\"id\\\":\\\"cust-42\\\",\\\"email\\\":\\\"4cdea64501d6109d0a25750a7ce1d5c87e5fc927c61b674f191b73e28b582c93\\\",\\\"hash\\\":\\\"cea3ca84340feb4a\\\",\\\"botScore\\\":null,\\\"botCategory\\\":\\\"unknown\\\",\\\"ltv\\\":420,\\\"segment\\\":\\\"loyal\\\"},\\\"nested\\\":[{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-1\\\",\\\"name\\\":\\\"Trail Runner\\\",\\\"price\\\":129.9,\\\"quantity\\\":1}},{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-2\\\",\\\"name\\\":\\\"Running Socks\\\",\\\"price\\\":9.95,\\\"quantity\\\":2}}],\\\"consent\\\":{\\\"functional\\\":true,\\\"marketing\\\":true},\\\"id\\\":\\\"ev-order-complete\\\",\\\"trigger\\\":\\\"load\\\",\\\"entity\\\":\\\"order\\\",\\\"action\\\":\\\"complete\\\",\\\"timestamp\\\":1700000000000,\\\"timing\\\":0,\\\"source\\\":{\\\"type\\\":\\\"express\\\",\\\"platform\\\":\\\"server\\\",\\\"url\\\":\\\"https://www.example.com/checkout/thanks\\\",\\\"valid\\\":true,\\\"count\\\":1,\\\"release\\\":{\\\"server\\\":\\\"4.6.1\\\"}}}\"\n }\n ]\n ]\n }\n }\n },\n \"meta\": {\n \"package\": \"@walkeros/server-destination-meta\",\n \"before\": \"eventFilter\",\n \"config\": {\n \"consent\": {\n \"marketing\": true\n },\n \"settings\": {\n \"pixelId\": \"$env.META_PIXEL_ID:1234567890\",\n \"accessToken\": \"$env.META_ACCESS_TOKEN\",\n \"action_source\": \"website\",\n \"user_data\": {\n \"em\": {\n \"key\": \"user.email\",\n \"validate\": \"$code:(value) => typeof value === 'string' && value.includes('@')\"\n }\n }\n },\n \"mapping\": {\n \"product\": {\n \"add\": {\n \"name\": \"AddToCart\",\n \"data\": {\n \"map\": {\n \"content_ids\": {\n \"set\": [\"data.id\"]\n },\n \"value\": \"data.price\",\n \"currency\": {\n \"value\": \"$var.currency\"\n }\n }\n }\n }\n },\n \"order\": {\n \"complete\": {\n \"name\": \"Purchase\",\n \"policy\": {\n \"id\": \"data.id\"\n },\n \"data\": {\n \"map\": {\n \"value\": \"data.total\",\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"order_id\": \"data.id\"\n }\n }\n }\n },\n \"*\": {\n \"*\": {\n \"ignore\": true\n }\n }\n },\n \"breaker\": {\n \"threshold\": 5,\n \"cooldown\": 30000\n },\n \"timeout\": 5000\n },\n \"cache\": {\n \"stop\": true,\n \"rules\": [\n {\n \"match\": {\n \"key\": \"event.name\",\n \"operator\": \"eq\",\n \"value\": \"order complete\"\n },\n \"key\": [\"event.data.id\"],\n \"ttl\": 86400\n }\n ]\n },\n \"examples\": {\n \"purchase\": {\n \"title\": \"Purchase to Conversions API\",\n \"description\": \"order complete becomes Purchase with the order id as event_id (rule policy), value and currency; em is normalized and hashed by the package.\",\n \"public\": true,\n \"mapping\": {\n \"name\": \"Purchase\",\n \"policy\": {\n \"id\": \"data.id\"\n },\n \"data\": {\n \"map\": {\n \"value\": \"data.total\",\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"order_id\": \"data.id\"\n }\n }\n },\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"sendServer\",\n \"https://graph.facebook.com/v22.0/1234567890/events\",\n \"{\\\"data\\\":[{\\\"event_name\\\":\\\"Purchase\\\",\\\"event_id\\\":\\\"ORD-100\\\",\\\"event_time\\\":1700000000,\\\"action_source\\\":\\\"website\\\",\\\"value\\\":149.8,\\\"currency\\\":\\\"EUR\\\",\\\"order_id\\\":\\\"ORD-100\\\",\\\"user_data\\\":{\\\"client_ip_address\\\":\\\"203.0.113.42\\\",\\\"client_user_agent\\\":\\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36\\\",\\\"em\\\":\\\"8c87b489ce35cf2e2f39f80e282cb2e804932a56a213983eeeb428407d43b52d\\\"},\\\"event_source_url\\\":\\\"https://www.example.com/checkout/thanks\\\"}]}\",\n {\n \"headers\": {\n \"Authorization\": \"Bearer meta-access-token\"\n }\n }\n ]\n ]\n }\n }\n },\n \"piwikpro\": {\n \"package\": \"@walkeros/server-destination-piwikpro\",\n \"before\": \"eventFilter\",\n \"variables\": {\n \"siteId\": \"$env.PIWIK_SITE_ID:e8f3a1c2-0b4d-4e5f-9a6b-7c8d9e0f1a2b\"\n },\n \"config\": {\n \"consent\": {\n \"functional\": true\n },\n \"settings\": {\n \"url\": \"$env.PIWIK_URL:https://example.piwik.pro/\",\n \"appId\": \"$var.siteId\",\n \"visitorId\": [\n \"event.user.device\",\n \"event.user.session\",\n \"event.user.hash\"\n ]\n },\n \"mapping\": {\n \"page\": {\n \"view\": {\n \"data\": \"data.title\"\n }\n },\n \"product\": {\n \"view\": {\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\": {\n \"value\": 1\n }\n }\n }\n ]\n }\n ]\n }\n },\n \"add\": {\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\": \"data.quantity\"\n }\n }\n ]\n }\n ]\n }\n }\n },\n \"order\": {\n \"complete\": {\n \"name\": \"ecommerceOrder\",\n \"settings\": {\n \"goalId\": \"$env.PIWIK_ORDER_GOAL:6a0f4c1e-3b2d-4e8f-a7c9-1d2e3f4a5b6c\",\n \"goalValue\": \"data.total\"\n },\n \"data\": {\n \"set\": [\n {\n \"loop\": [\n \"nested\",\n {\n \"map\": {\n \"sku\": \"data.id\",\n \"name\": \"data.name\",\n \"price\": \"data.price\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n },\n {\n \"map\": {\n \"orderId\": \"data.id\",\n \"grandTotal\": \"data.total\"\n }\n }\n ]\n }\n }\n }\n },\n \"breaker\": {\n \"threshold\": 5,\n \"cooldown\": 30000\n },\n \"timeout\": 5000\n },\n \"examples\": {\n \"orderWithGoal\": {\n \"title\": \"Order with goal\",\n \"description\": \"order complete becomes an ecommerce order plus a goal hit with the order value; the visitor id falls back to the cookieless hash.\",\n \"public\": true,\n \"mapping\": {\n \"name\": \"ecommerceOrder\",\n \"settings\": {\n \"goalId\": \"$env.PIWIK_ORDER_GOAL:6a0f4c1e-3b2d-4e8f-a7c9-1d2e3f4a5b6c\",\n \"goalValue\": \"data.total\"\n },\n \"data\": {\n \"set\": [\n {\n \"loop\": [\n \"nested\",\n {\n \"map\": {\n \"sku\": \"data.id\",\n \"name\": \"data.name\",\n \"price\": \"data.price\",\n \"quantity\": {\n \"key\": \"data.quantity\",\n \"value\": 1\n }\n }\n }\n ]\n },\n {\n \"map\": {\n \"orderId\": \"data.id\",\n \"grandTotal\": \"data.total\"\n }\n }\n ]\n }\n },\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"sendServer\",\n \"https://example.piwik.pro/ppms.php\",\n \"{\\\"requests\\\":[\\\"?idsite=e8f3a1c2-0b4d-4e5f-9a6b-7c8d9e0f1a2b&rec=1&send_image=0&ts_n=walkerOS&ts_v=4.6.1&e_t=order&ec_id=ORD-100&revenue=149.8&ec_products=%5B%5B%22SKU-1%22%2C%22Trail+Runner%22%2Cnull%2C129.9%2C1%2Cnull%2Cnull%2Cnull%5D%2C%5B%22SKU-2%22%2C%22Running+Socks%22%2Cnull%2C9.95%2C2%2Cnull%2Cnull%2Cnull%5D%5D&url=https%3A%2F%2Fwww.example.com%2Fcheckout%2Fthanks&cip=203.0.113.42&ua=Mozilla%2F5.0+%28Macintosh%3B+Intel+Mac+OS+X+10_15_7%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F128.0.0.0+Safari%2F537.36&_id=174c88fbd5a4b357&uid=cust-42&cdt=1700000000\\\",\\\"?idsite=e8f3a1c2-0b4d-4e5f-9a6b-7c8d9e0f1a2b&rec=1&send_image=0&ts_n=walkerOS&ts_v=4.6.1&idgoal=6a0f4c1e-3b2d-4e8f-a7c9-1d2e3f4a5b6c&revenue=149.8&url=https%3A%2F%2Fwww.example.com%2Fcheckout%2Fthanks&cip=203.0.113.42&ua=Mozilla%2F5.0+%28Macintosh%3B+Intel+Mac+OS+X+10_15_7%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F128.0.0.0+Safari%2F537.36&_id=174c88fbd5a4b357&uid=cust-42&cdt=1700000000\\\"]}\",\n {\n \"timeout\": 5000\n }\n ]\n ]\n }\n }\n },\n \"datamanager\": {\n \"package\": \"@walkeros/server-destination-datamanager\",\n \"before\": \"eventFilter\",\n \"config\": {\n \"consent\": {\n \"marketing\": true\n },\n \"credentials\": \"$secret.GCP_SA\",\n \"settings\": {\n \"destinations\": [\n {\n \"operatingAccount\": {\n \"accountId\": \"$env.GADS_ACCOUNT_ID:123-456-7890\",\n \"accountType\": \"GOOGLE_ADS\"\n },\n \"productDestinationId\": \"$env.GADS_CONVERSION_ACTION:AW-CONVERSION-123\"\n }\n ]\n },\n \"mapping\": {\n \"order\": {\n \"complete\": {\n \"name\": \"purchase\",\n \"data\": {\n \"map\": {\n \"transactionId\": \"data.id\",\n \"conversionValue\": \"data.total\",\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"gclid\": \"data.session.gclid\"\n }\n }\n }\n },\n \"*\": {\n \"*\": {\n \"ignore\": true\n }\n }\n },\n \"breaker\": {\n \"threshold\": 5,\n \"cooldown\": 30000\n },\n \"timeout\": 10000\n },\n \"examples\": {\n \"conversionWithGclid\": {\n \"title\": \"Conversion with the restored gclid\",\n \"description\": \"The purchase goes to Google Ads through the Data Manager API with the gclid sessionLoad restored from session start.\",\n \"public\": true,\n \"mapping\": {\n \"name\": \"purchase\",\n \"data\": {\n \"map\": {\n \"transactionId\": \"data.id\",\n \"conversionValue\": \"data.total\",\n \"currency\": [\n \"data.currency\",\n {\n \"value\": \"$var.currency\"\n }\n ],\n \"gclid\": \"data.session.gclid\"\n }\n }\n },\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\",\n \"session\": {\n \"gclid\": \"gclid-abc123\",\n \"started\": 1700000000000\n }\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"jane@example.com\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"fetch\",\n \"https://datamanager.googleapis.com/v1/events:ingest\",\n {\n \"method\": \"POST\",\n \"headers\": {\n \"Authorization\": \"Bearer ya29.c.test_token\",\n \"Content-Type\": \"application/json\"\n },\n \"body\": \"{\\\"events\\\":[{\\\"eventTimestamp\\\":\\\"2023-11-14T22:13:20.000Z\\\",\\\"transactionId\\\":\\\"ORD-100\\\",\\\"adIdentifiers\\\":{\\\"gclid\\\":\\\"gclid-abc123\\\"},\\\"conversionValue\\\":149.8,\\\"currency\\\":\\\"EUR\\\",\\\"eventDeviceInfo\\\":{\\\"ipAddress\\\":\\\"203.0.113.42\\\",\\\"userAgent\\\":\\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36\\\"},\\\"consent\\\":{\\\"adUserData\\\":\\\"CONSENT_GRANTED\\\"},\\\"eventSource\\\":\\\"WEB\\\"}],\\\"destinations\\\":[{\\\"operatingAccount\\\":{\\\"accountId\\\":\\\"123-456-7890\\\",\\\"accountType\\\":\\\"GOOGLE_ADS\\\"},\\\"productDestinationId\\\":\\\"AW-CONVERSION-123\\\"}],\\\"encoding\\\":\\\"HEX\\\"}\"\n }\n ]\n ]\n }\n }\n }\n }\n },\n \"warehouse\": {\n \"config\": {\n \"platform\": \"server\",\n \"bundle\": {\n \"packages\": {\n \"@walkeros/collector\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-source-gcp\": {\n \"version\": \"4.7.0\"\n },\n \"@walkeros/server-destination-gcp\": {\n \"version\": \"4.7.0\"\n }\n }\n }\n },\n \"sources\": {\n \"pubsub\": {\n \"package\": \"@walkeros/server-source-gcp\",\n \"import\": \"sourcePubSubPull\",\n \"config\": {\n \"credentials\": \"$secret.GCP_SA\",\n \"settings\": {\n \"projectId\": \"$var.gcp.project\",\n \"subscription\": \"$env.PUBSUB_SUBSCRIPTION:walkeros-warehouse\",\n \"topic\": \"$var.gcp.topic\"\n },\n \"setup\": {\n \"ackDeadlineSeconds\": 60,\n \"deadLetterPolicy\": {\n \"deadLetterTopic\": \"projects/$var.gcp.project/topics/walkeros-dead-letter\",\n \"maxDeliveryAttempts\": 5,\n \"createDeadLetterTopic\": true\n }\n }\n },\n \"examples\": {\n \"message\": {\n \"title\": \"Message from the topic\",\n \"description\": \"Each Pub/Sub message holds one event as JSON, the email already pseudonymised; the source decodes it, forwards it and acks.\",\n \"public\": true,\n \"in\": {\n \"id\": \"msg-1\",\n \"dataString\": \"{\\\"name\\\":\\\"order complete\\\",\\\"entity\\\":\\\"order\\\",\\\"action\\\":\\\"complete\\\",\\\"data\\\":{\\\"id\\\":\\\"ORD-100\\\",\\\"total\\\":149.8,\\\"currency\\\":\\\"EUR\\\",\\\"coupon\\\":\\\"WELCOME10\\\"},\\\"id\\\":\\\"ev-order-complete\\\",\\\"trigger\\\":\\\"load\\\",\\\"timestamp\\\":1700000000000,\\\"consent\\\":{\\\"functional\\\":true,\\\"marketing\\\":true},\\\"globals\\\":{\\\"language\\\":\\\"en\\\",\\\"pageGroup\\\":\\\"checkout\\\"},\\\"user\\\":{\\\"device\\\":\\\"d3v1c3\\\",\\\"session\\\":\\\"s3ss10n\\\",\\\"id\\\":\\\"cust-42\\\",\\\"email\\\":\\\"31b4ae339b671c9e81adbe27e74b38f09a4756300de6b81998c83a3964cbb849\\\",\\\"hash\\\":\\\"5f1c0a9e7d3b2c41\\\",\\\"botScore\\\":0,\\\"botCategory\\\":\\\"human\\\",\\\"ltv\\\":420},\\\"source\\\":{\\\"type\\\":\\\"express\\\",\\\"platform\\\":\\\"server\\\",\\\"url\\\":\\\"https://www.example.com/checkout/thanks\\\",\\\"valid\\\":true},\\\"nested\\\":[{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-1\\\",\\\"name\\\":\\\"Trail Runner\\\",\\\"price\\\":129.9,\\\"quantity\\\":1}},{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-2\\\",\\\"name\\\":\\\"Running Socks\\\",\\\"price\\\":9.95,\\\"quantity\\\":2}}]}\",\n \"attributes\": {}\n },\n \"out\": [\n [\n \"elb\",\n {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"email\": \"31b4ae339b671c9e81adbe27e74b38f09a4756300de6b81998c83a3964cbb849\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n }\n ]\n ]\n }\n }\n }\n },\n \"destinations\": {\n \"bigquery\": {\n \"package\": \"@walkeros/server-destination-gcp\",\n \"import\": \"destinationBigQuery\",\n \"config\": {\n \"credentials\": \"$secret.GCP_SA\",\n \"setup\": true,\n \"settings\": {\n \"projectId\": \"$var.gcp.project\",\n \"datasetId\": \"$var.gcp.dataset\",\n \"tableId\": \"events\"\n },\n \"batch\": {\n \"size\": 500,\n \"age\": 10000\n },\n \"breaker\": {\n \"threshold\": 5,\n \"cooldown\": 60000\n },\n \"timeout\": 30000,\n \"dlqMax\": 10000\n },\n \"examples\": {\n \"row\": {\n \"title\": \"Event row\",\n \"description\": \"Every event becomes one BigQuery row, contract violations and bots included, batched by size and age. This order has no email (guest checkout).\",\n \"public\": true,\n \"in\": {\n \"name\": \"order complete\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"data\": {\n \"id\": \"ORD-100\",\n \"total\": 149.8,\n \"currency\": \"EUR\",\n \"coupon\": \"WELCOME10\"\n },\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"timestamp\": 1700000000000,\n \"consent\": {\n \"functional\": true,\n \"marketing\": true\n },\n \"globals\": {\n \"language\": \"en\",\n \"pageGroup\": \"checkout\"\n },\n \"user\": {\n \"device\": \"d3v1c3\",\n \"session\": \"s3ss10n\",\n \"id\": \"cust-42\",\n \"hash\": \"5f1c0a9e7d3b2c41\",\n \"botScore\": 0,\n \"botCategory\": \"human\",\n \"ltv\": 420\n },\n \"source\": {\n \"type\": \"express\",\n \"platform\": \"server\",\n \"url\": \"https://www.example.com/checkout/thanks\",\n \"valid\": true\n },\n \"nested\": [\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-1\",\n \"name\": \"Trail Runner\",\n \"price\": 129.9,\n \"quantity\": 1\n }\n },\n {\n \"entity\": \"product\",\n \"data\": {\n \"id\": \"SKU-2\",\n \"name\": \"Running Socks\",\n \"price\": 9.95,\n \"quantity\": 2\n }\n }\n ]\n },\n \"out\": [\n [\n \"JSONWriter.appendRows\",\n [\n {\n \"name\": \"order complete\",\n \"data\": \"{\\\"id\\\":\\\"ORD-100\\\",\\\"total\\\":149.8,\\\"currency\\\":\\\"EUR\\\",\\\"coupon\\\":\\\"WELCOME10\\\"}\",\n \"context\": null,\n \"globals\": \"{\\\"language\\\":\\\"en\\\",\\\"pageGroup\\\":\\\"checkout\\\"}\",\n \"custom\": null,\n \"user\": \"{\\\"device\\\":\\\"d3v1c3\\\",\\\"session\\\":\\\"s3ss10n\\\",\\\"id\\\":\\\"cust-42\\\",\\\"hash\\\":\\\"5f1c0a9e7d3b2c41\\\",\\\"botScore\\\":0,\\\"botCategory\\\":\\\"human\\\",\\\"ltv\\\":420}\",\n \"nested\": \"[{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-1\\\",\\\"name\\\":\\\"Trail Runner\\\",\\\"price\\\":129.9,\\\"quantity\\\":1}},{\\\"entity\\\":\\\"product\\\",\\\"data\\\":{\\\"id\\\":\\\"SKU-2\\\",\\\"name\\\":\\\"Running Socks\\\",\\\"price\\\":9.95,\\\"quantity\\\":2}}]\",\n \"consent\": \"{\\\"functional\\\":true,\\\"marketing\\\":true}\",\n \"id\": \"ev-order-complete\",\n \"trigger\": \"load\",\n \"entity\": \"order\",\n \"action\": \"complete\",\n \"timestamp\": 1700000000000000,\n \"timing\": 0,\n \"source\": \"{\\\"type\\\":\\\"express\\\",\\\"platform\\\":\\\"server\\\",\\\"url\\\":\\\"https://www.example.com/checkout/thanks\\\",\\\"valid\\\":true,\\\"count\\\":1,\\\"trace\\\":\\\"d9a1bb9e9520c6d831dd6ebce1940593\\\",\\\"release\\\":{\\\"server\\\":\\\"4.6.1\\\"}}\"\n }\n ]\n ]\n ]\n }\n }\n }\n }\n }\n }\n}\n","{\n \"version\": 4,\n \"flows\": {\n \"default\": {\n \"destinations\": {\n \"demo\": {\n \"package\": \"@walkeros/destination-demo\",\n \"config\": {\n \"settings\": {\n \"name\": \"Simple Demo\",\n \"values\": [\"name\", \"data\", \"user\", \"consent\"]\n }\n }\n }\n },\n \"config\": {\n \"platform\": \"web\",\n \"bundle\": {\n \"packages\": {\n \"@walkeros/collector\": {\n \"version\": \"latest\",\n \"imports\": [\"startFlow\"]\n },\n \"@walkeros/destination-demo\": {\n \"version\": \"latest\"\n }\n }\n }\n }\n }\n }\n}\n","/**\n * Feature manifest of `examples/flow-complete.json`.\n *\n * Two layers:\n *\n * - Teaching: one entry per feature, keyed by a stable id. The id never\n * changes; the JSON Pointer (RFC 6901) says where the feature lives in the\n * file and may move. The guide, the website and the talk render features by\n * id.\n * - Coverage: one record per key union of the core flow types. Every key is\n * either taught by a feature, excluded with a one-line reason, or inherited.\n * A new key in `@walkeros/core` fails to compile here until it is listed.\n */\n\nimport type {\n Cache,\n Collector,\n Destination,\n Flow,\n Mapping,\n Matcher,\n Source,\n State,\n Store,\n Transformer,\n} from '@walkeros/core';\n\nexport type ChapterId =\n | 'tour'\n | 'web-entry'\n | 'server-entry'\n | 'step-envelope'\n | 'mapping'\n | 'consent-privacy'\n | 'gtm-fed'\n | 'references'\n | 'chains-routing'\n | 'contract'\n | 'quality'\n | 'state-stores'\n | 'delivery'\n | 'build-run'\n | 'operate';\n\nexport type UseCaseId =\n | 'consent'\n | 'gtm-migration'\n | 'gtm-fed'\n | 'ga4-migration'\n | 'capi'\n | 'privacy-analytics'\n | 'cookieless-id'\n | 'pii-policy'\n | 'dedup'\n | 'bot'\n | 'sessions'\n | 'contracts'\n | 'impressions'\n | 'warehouse'\n | 'reliability'\n | 'observability'\n | 'deploy'\n | 'testing'\n | 'agent-editing'\n | 'script-serving'\n | 'multi-flow';\n\nexport type PromptId = 'p1' | 'p2' | 'p3' | 'p4' | 'p5';\n\nexport type Level = 'beginner' | 'intermediate' | 'advanced';\n\n/** A feature entry without its id (the id is the record key). */\nexport interface TeachingEntry {\n /** RFC 6901 JSON Pointer into flow-complete.json. */\n pointer: string;\n chapter: ChapterId;\n level: Level;\n useCases: UseCaseId[];\n /** One line, rendered by the guide and the docs alike. */\n note: string;\n docs: { page: string; anchor?: string }[];\n cli?: string[];\n mcp?: string[];\n /** How the same need is met in GTM, one line. */\n gtm?: string;\n /** A step example that shows the feature at work. */\n example?: { step: string; name: string };\n /** The London prompt this feature answers. */\n prompt?: PromptId;\n}\n\nexport interface Excluded {\n excluded: string;\n}\n\nexport interface Inherited {\n inherited: 'Mapping.Config';\n}\n\nconst FILE = 'packages/cli/examples/flow-complete.json';\n\n/**\n * Resolves an RFC 6901 JSON Pointer against a document: `~1` decodes to `/`\n * before `~0` decodes to `~`, array tokens must be canonical indices.\n * Returns undefined when any token is missing.\n */\nexport function resolvePointer(doc: unknown, pointer: string): unknown {\n if (pointer === '') return doc;\n if (!pointer.startsWith('/')) return undefined;\n let current: unknown = doc;\n for (const part of pointer.slice(1).split('/')) {\n const token = part.replace(/~1/g, '/').replace(/~0/g, '~');\n if (Array.isArray(current)) {\n if (!/^(0|[1-9]\\d*)$/.test(token)) return undefined;\n current = current[Number(token)];\n } else if (\n typeof current === 'object' &&\n current !== null &&\n Object.prototype.hasOwnProperty.call(current, token)\n ) {\n current = Reflect.get(current, token);\n } else return undefined;\n }\n return current;\n}\nconst ROUTE_CASES =\n 'no genuine use in this scenario, see routeCases in @walkeros/core/dev';\n\nconst teaching = {\n // tour\n 'schema-url': {\n pointer: '/$schema',\n chapter: 'tour',\n level: 'beginner',\n useCases: ['agent-editing'],\n note: 'The JSON Schema gives editors and agents completion and checks for every field.',\n docs: [],\n },\n 'format-version': {\n pointer: '/version',\n chapter: 'tour',\n level: 'beginner',\n useCases: [],\n note: 'version 4 is the flow file format this file is written in.',\n docs: [],\n },\n 'flows-multi': {\n pointer: '/flows',\n chapter: 'tour',\n level: 'beginner',\n useCases: ['multi-flow'],\n note: 'One file holds three flows: web in the browser, server behind it, warehouse reading the topic.',\n docs: [{ page: 'getting-started/flow/index' }],\n cli: [`walkeros validate ${FILE} --strict`],\n },\n platform: {\n pointer: '/flows/web/config/platform',\n chapter: 'tour',\n level: 'beginner',\n useCases: [],\n note: 'platform decides how a flow is built: a browser bundle or a server artifact.',\n docs: [{ page: 'getting-started/flow/index' }],\n },\n 'flow-config': {\n pointer: '/flows/web/config',\n chapter: 'tour',\n level: 'beginner',\n useCases: [],\n note: 'config holds what the build needs: platform, url, settings, bundle, observe.',\n docs: [{ page: 'getting-started/flow/index' }],\n },\n 'flow-sources': {\n pointer: '/flows/web/sources',\n chapter: 'tour',\n level: 'beginner',\n useCases: [],\n note: 'Sources turn whatever happens (a CMP decision, a dataLayer push, a click) into events.',\n docs: [{ page: 'getting-started/flow/index' }],\n },\n 'flow-transformers': {\n pointer: '/flows/server/transformers',\n chapter: 'tour',\n level: 'beginner',\n useCases: [],\n note: 'Transformers are named hops that validate, enrich, filter or remember events.',\n docs: [{ page: 'getting-started/flow/index' }],\n },\n 'flow-destinations': {\n pointer: '/flows/server/destinations',\n chapter: 'tour',\n level: 'beginner',\n useCases: [],\n note: 'Destinations fan out: every event reaches each destination that accepts it.',\n docs: [{ page: 'getting-started/flow/index' }],\n },\n 'flow-stores': {\n pointer: '/flows/server/stores',\n chapter: 'state-stores',\n level: 'intermediate',\n useCases: ['script-serving'],\n note: 'Stores hold data the steps read: script files and customer records.',\n docs: [],\n },\n 'flow-collector': {\n pointer: '/flows/server/collector',\n chapter: 'tour',\n level: 'beginner',\n useCases: [],\n note: 'The collector sits between sources and destinations and runs its own chain once per event.',\n docs: [{ page: 'collector/index' }],\n },\n\n // web-entry\n 'cmp-usercentrics': {\n pointer: '/flows/web/sources/usercentrics',\n chapter: 'web-entry',\n level: 'beginner',\n useCases: ['consent'],\n note: 'The Usercentrics source turns the banner decision into a walker consent command.',\n docs: [],\n example: { step: 'usercentrics', name: 'explicitDecision' },\n gtm: 'A consent initialization trigger plus a CMP template.',\n },\n 'cmp-category-map': {\n pointer: '/flows/web/sources/usercentrics/config/settings/categoryMap',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['consent'],\n note: 'categoryMap maps CMP categories onto exactly the consent keys the contract names.',\n docs: [],\n },\n 'cmp-explicit-only': {\n pointer: '/flows/web/sources/usercentrics/config/settings/explicitOnly',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['consent'],\n note: 'explicitOnly publishes consent only after a real decision, so consent.functional present means the user decided.',\n docs: [],\n example: { step: 'usercentrics', name: 'implicitSuppressed' },\n },\n 'session-source': {\n pointer: '/flows/web/sources/session',\n chapter: 'web-entry',\n level: 'beginner',\n useCases: ['sessions'],\n note: 'The session source sets user.session and user.device and emits session start with the raw click id.',\n docs: [{ page: 'guides/session' }],\n example: { step: 'session', name: 'marketingSession' },\n },\n 'session-consent': {\n pointer: '/flows/web/sources/session/config/settings/consent',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['consent', 'sessions'],\n note: 'Storage for session ids waits for the functional consent key.',\n docs: [{ page: 'guides/session' }],\n },\n 'datalayer-source': {\n pointer: '/flows/web/sources/dataLayer',\n chapter: 'web-entry',\n level: 'beginner',\n useCases: ['gtm-migration'],\n note: 'The dataLayer source reads the pushes the shop already makes, so nothing on the page changes.',\n docs: [],\n example: { step: 'dataLayer', name: 'gtagAddToCart' },\n gtm: 'The container reads the same dataLayer; walkerOS reads it too.',\n },\n 'source-require': {\n pointer: '/flows/web/sources/dataLayer/config/require',\n chapter: 'web-entry',\n level: 'intermediate',\n useCases: ['consent', 'sessions'],\n note: 'require holds the source until consent and session are known.',\n docs: [],\n },\n 'source-mapping': {\n pointer: '/flows/web/sources/dataLayer/config/mapping',\n chapter: 'web-entry',\n level: 'intermediate',\n useCases: ['gtm-migration'],\n note: 'Source mapping renames dataLayer add_to_cart to product add and picks its fields.',\n docs: [],\n },\n 'browser-source': {\n pointer: '/flows/web/sources/browser',\n chapter: 'web-entry',\n level: 'beginner',\n useCases: ['impressions'],\n note: 'The browser source reads data-elb tagging: page views, clicks and impressions.',\n docs: [],\n example: { step: 'browser', name: 'pageView' },\n },\n 'source-primary': {\n pointer: '/flows/web/sources/browser/primary',\n chapter: 'web-entry',\n level: 'intermediate',\n useCases: [],\n note: 'primary names the source whose instance the flow exposes, here the browser elb.',\n docs: [],\n },\n 'browser-pageview': {\n pointer: '/flows/web/sources/browser/config/settings/pageview',\n chapter: 'web-entry',\n level: 'beginner',\n useCases: [],\n note: 'pageview: true sends a page view on load without tagging.',\n docs: [],\n },\n 'collector-globals': {\n pointer: '/flows/web/collector/globals',\n chapter: 'web-entry',\n level: 'beginner',\n useCases: ['contracts'],\n note: 'globals.language is the default the page can override; the contract requires it.',\n docs: [{ page: 'collector/index' }],\n },\n 'collector-globals-static': {\n pointer: '/flows/web/collector/globalsStatic',\n chapter: 'web-entry',\n level: 'intermediate',\n useCases: [],\n note: 'globalsStatic survives a run reset; the site id belongs there.',\n docs: [{ page: 'collector/index' }],\n },\n 'collector-custom': {\n pointer: '/flows/web/collector/custom',\n chapter: 'web-entry',\n level: 'intermediate',\n useCases: [],\n note: 'custom carries values for the pipeline that are not event data.',\n docs: [{ page: 'collector/index' }],\n },\n 'config-url': {\n pointer: '/flows/web/config/url',\n chapter: 'web-entry',\n level: 'beginner',\n useCases: [],\n note: 'url says where a flow lives; other flows reach it with $flow.',\n docs: [],\n },\n 'config-settings': {\n pointer: '/flows/web/config/settings',\n chapter: 'web-entry',\n level: 'intermediate',\n useCases: [],\n note: 'Platform settings: windowCollector names the global collector instance.',\n docs: [],\n },\n 'web-collector-next': {\n pointer: '/flows/web/collector/next',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'On the web collector.next runs the inline pageGroup step once per event.',\n docs: [{ page: 'getting-started/flow/routing' }],\n example: { step: 'pageGroup', name: 'checkout' },\n },\n\n // server-entry\n 'server-url': {\n pointer: '/flows/server/config/url',\n chapter: 'server-entry',\n level: 'beginner',\n useCases: [],\n note: 'The full collect endpoint, local by default, SERVER_URL in production.',\n docs: [],\n },\n 'express-paths': {\n pointer: '/flows/server/sources/express/config/settings/paths',\n chapter: 'server-entry',\n level: 'beginner',\n useCases: ['script-serving', 'ga4-migration'],\n note: 'One route per job, each with its own methods: /collect, /g/collect, /walker.js.',\n docs: [],\n example: { step: 'express', name: 'postCollect' },\n },\n 'express-port': {\n pointer: '/flows/server/sources/express/config/settings/port',\n chapter: 'server-entry',\n level: 'beginner',\n useCases: [],\n note: 'port lets push --simulate start the source; runneros mounts the handler on its own port.',\n docs: [],\n },\n 'express-cors': {\n pointer: '/flows/server/sources/express/config/settings/cors',\n chapter: 'server-entry',\n level: 'intermediate',\n useCases: ['script-serving'],\n note: 'CORS response headers for the shop origin; express adds X-Content-Type-Options itself.',\n docs: [],\n },\n 'source-ingest': {\n pointer: '/flows/server/sources/express/config/ingest',\n chapter: 'server-entry',\n level: 'intermediate',\n useCases: ['bot', 'cookieless-id', 'capi'],\n note: 'ingest keeps the request context (ip, path, headers) for later steps without putting it on the event.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ingest-headers': {\n pointer: '/flows/server/sources/express/config/ingest/map/userAgent',\n chapter: 'server-entry',\n level: 'intermediate',\n useCases: ['bot'],\n note: 'Request headers are read by path: headers.user-agent, headers.accept-language.',\n docs: [],\n },\n 'source-async': {\n pointer: '/flows/server/sources/express/config/async',\n chapter: 'server-entry',\n level: 'advanced',\n useCases: ['script-serving'],\n note: 'POST answers at once; GET waits so a step can answer with real content.',\n docs: [],\n },\n 'ga4-decode': {\n pointer: '/flows/server/transformers/ga4Decode',\n chapter: 'server-entry',\n level: 'intermediate',\n useCases: ['ga4-migration'],\n note: 'GA4 hits from a sub-site not yet migrated (its own property) become events; the main site never sends here and hits of any other property are not decoded, so nothing counts twice.',\n docs: [],\n example: { step: 'ga4Decode', name: 'subsitePurchase' },\n gtm: 'A server container client for GA4.',\n },\n\n 'ga4-consent-map': {\n pointer: '/flows/server/transformers/ga4Consent',\n chapter: 'consent-privacy',\n level: 'advanced',\n useCases: ['ga4-migration', 'consent'],\n note: 'A mapping hop after the decoder copies GA4 analytics storage into functional and derives the page language from the browser language (na when the hit has none); refused pings stay functional false and fail the contract.',\n docs: [],\n example: { step: 'ga4Consent', name: 'analyticsRefused' },\n },\n 'ga4-other-dropped': {\n pointer: '/flows/server/sources/express/before/one/2',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['ga4-migration'],\n note: 'GA4 hits for any other property stop at the route instead of reaching the collector undecoded.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n\n // step-envelope\n 'step-package': {\n pointer: '/flows/server/destinations/meta/package',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: [],\n note: 'package names the npm package that implements a step.',\n docs: [],\n },\n 'step-import': {\n pointer: '/flows/server/destinations/pubsub/import',\n chapter: 'step-envelope',\n level: 'intermediate',\n useCases: [],\n note: 'import picks a named export when one package ships several steps.',\n docs: [],\n },\n 'step-code': {\n pointer: '/flows/web/transformers/pageGroup/code',\n chapter: 'step-envelope',\n level: 'intermediate',\n useCases: [],\n note: 'code defines a step inline, no package needed.',\n docs: [],\n },\n 'code-push': {\n pointer: '/flows/web/transformers/pageGroup/code/push',\n chapter: 'step-envelope',\n level: 'intermediate',\n useCases: [],\n note: 'push is the step function, written as $code.',\n docs: [],\n },\n 'code-type': {\n pointer: '/flows/web/transformers/pageGroup/code/type',\n chapter: 'step-envelope',\n level: 'intermediate',\n useCases: ['observability'],\n note: 'type names the inline step in logs and Observe.',\n docs: [],\n },\n 'step-config': {\n pointer: '/flows/server/destinations/meta/config',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: [],\n note: 'config is the same envelope for every step kind: settings, mapping, consent, reliability.',\n docs: [],\n },\n 'step-settings': {\n pointer: '/flows/server/destinations/meta/config/settings',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: [],\n note: 'settings are the package options, checked against the package schema.',\n docs: [],\n cli: [`walkeros validate ${FILE} -f web --path destinations.collect`],\n },\n 'step-env': {\n pointer: '/flows/server/transformers/file/env',\n chapter: 'step-envelope',\n level: 'advanced',\n useCases: ['script-serving'],\n note: 'env injects what a step uses at runtime, here the assets store.',\n docs: [],\n },\n 'step-examples': {\n pointer: '/flows/web/destinations/ga4/examples',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: ['testing', 'agent-editing'],\n note: 'examples are the contract of a step: this in gives this out, checked by simulation.',\n docs: [{ page: 'getting-started/flow/step-examples' }],\n cli: [\n `walkeros push ${FILE} -f web -e '{\"name\":\"order complete\",\"data\":{\"id\":\"ORD-100\",\"total\":149.8,\"currency\":\"EUR\"}}' --simulate destination.ga4`,\n ],\n },\n 'example-title': {\n pointer: '/flows/web/destinations/ga4/examples/purchase/title',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: [],\n note: 'title names the example.',\n docs: [],\n },\n 'example-description': {\n pointer: '/flows/web/destinations/ga4/examples/purchase/description',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: [],\n note: 'description is the one teaching sentence the docs render.',\n docs: [],\n },\n 'example-public': {\n pointer: '/flows/web/destinations/ga4/examples/purchase/public',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: [],\n note: 'public marks the one example per step the docs show first.',\n docs: [],\n },\n 'example-in': {\n pointer: '/flows/web/destinations/ga4/examples/purchase/in',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: ['testing'],\n note: 'in is what the step receives.',\n docs: [],\n },\n 'example-out': {\n pointer: '/flows/web/destinations/ga4/examples/purchase/out',\n chapter: 'step-envelope',\n level: 'beginner',\n useCases: ['testing'],\n note: 'out is what the step does, as effects: gtag calls, a return, a request.',\n docs: [],\n },\n 'example-mapping': {\n pointer: '/flows/web/destinations/ga4/examples/purchase/mapping',\n chapter: 'step-envelope',\n level: 'intermediate',\n useCases: [],\n note: 'mapping shows the rule the example exercises.',\n docs: [],\n },\n 'example-trigger': {\n pointer: '/flows/web/sources/browser/examples/productImpression/trigger',\n chapter: 'step-envelope',\n level: 'intermediate',\n useCases: ['impressions'],\n note: 'trigger says how a source example fires: load, click, impression.',\n docs: [],\n },\n 'example-command': {\n pointer: '/flows/web/destinations/ga4/examples/consentUpdate/command',\n chapter: 'step-envelope',\n level: 'advanced',\n useCases: ['consent'],\n note: 'command routes in through a walker command instead of an event, here consent.',\n docs: [],\n },\n\n // mapping\n 'ga4-purchase': {\n pointer: '/flows/web/destinations/ga4/config/mapping/order/complete',\n chapter: 'mapping',\n level: 'beginner',\n useCases: [],\n note: 'order complete becomes a GA4 purchase with value, currency and items.',\n docs: [],\n example: { step: 'ga4', name: 'purchase' },\n prompt: 'p2',\n gtm: 'A GA4 event tag with an ecommerce variable per field.',\n },\n 'destination-mapping': {\n pointer: '/flows/web/destinations/ga4/config/mapping',\n chapter: 'mapping',\n level: 'beginner',\n useCases: [],\n note: 'mapping holds one rule per entity and action.',\n docs: [],\n },\n 'rule-name': {\n pointer: '/flows/web/destinations/ga4/config/mapping/order/complete/name',\n chapter: 'mapping',\n level: 'beginner',\n useCases: [],\n note: 'name is the vendor event name.',\n docs: [],\n },\n 'rule-data': {\n pointer: '/flows/web/destinations/ga4/config/mapping/order/complete/data',\n chapter: 'mapping',\n level: 'beginner',\n useCases: [],\n note: 'data builds the vendor parameters from the event.',\n docs: [],\n },\n 'value-map': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/data/map',\n chapter: 'mapping',\n level: 'beginner',\n useCases: [],\n note: 'map builds an object key by key.',\n docs: [],\n },\n 'value-key': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/data/map/coupon/key',\n chapter: 'mapping',\n level: 'beginner',\n useCases: [],\n note: 'key reads a path from the event.',\n docs: [],\n },\n 'value-fn': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/data/map/value/fn',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'fn computes a value from the event, here the total rounded to cents. fn and key are alternatives: next to a key, fn never runs.',\n docs: [],\n },\n 'value-loop': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/data/map/items/loop',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'loop turns nested products into GA4 items.',\n docs: [],\n },\n 'value-condition': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/data/map/coupon/condition',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'A value condition sends coupon only when the order has one.',\n docs: [],\n example: { step: 'ga4', name: 'purchaseWithoutCoupon' },\n },\n 'value-fallback': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/data/map/currency',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'An array of values is a fallback list: the event currency, else the flow default.',\n docs: [],\n },\n 'value-set': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/product/view/data/map/items/set',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'set builds an array, here the one item of a product view.',\n docs: [],\n example: { step: 'ga4', name: 'productView' },\n },\n 'value-value': {\n pointer:\n '/flows/server/destinations/meta/config/mapping/product/add/data/map/currency/value',\n chapter: 'mapping',\n level: 'beginner',\n useCases: [],\n note: 'value is a constant.',\n docs: [],\n },\n 'rule-condition': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/condition',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'A rule condition skips the rule, here for orders without a total.',\n docs: [],\n },\n 'rule-settings': {\n pointer:\n '/flows/server/destinations/piwikpro/config/mapping/order/complete/settings',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'Rule settings are per-event package options: the Piwik PRO goal for orders.',\n docs: [],\n example: { step: 'piwikpro', name: 'orderWithGoal' },\n },\n 'mapping-wildcard-ignore': {\n pointer: '/flows/server/destinations/meta/config/mapping/*/*/ignore',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: ['capi'],\n note: 'A wildcard rule with ignore sends Meta only what is mapped.',\n docs: [],\n },\n 'destination-include': {\n pointer: '/flows/web/destinations/ga4/config/include',\n chapter: 'mapping',\n level: 'intermediate',\n useCases: [],\n note: 'include flattens whole sections into parameters, here the globals.',\n docs: [],\n },\n 'rule-extend': {\n pointer:\n '/flows/server/transformers/ga4Decode/config/settings/mapping/purchase/extend',\n chapter: 'mapping',\n level: 'advanced',\n useCases: ['ga4-migration'],\n note: 'extend patches a package default rule instead of replacing it.',\n docs: [],\n },\n 'rule-remove': {\n pointer:\n '/flows/server/transformers/ga4Decode/config/settings/mapping/purchase/remove',\n chapter: 'mapping',\n level: 'advanced',\n useCases: ['ga4-migration'],\n note: 'remove drops fields from the default rule output.',\n docs: [],\n },\n 'collect-api': {\n pointer: '/flows/web/destinations/collect',\n chapter: 'delivery',\n level: 'beginner',\n useCases: ['warehouse'],\n note: 'collect sends every event to the first-party server.',\n docs: [],\n example: { step: 'collect', name: 'orderComplete' },\n },\n 'collect-transform': {\n pointer: '/flows/web/destinations/collect/config/settings/transform',\n chapter: 'delivery',\n level: 'advanced',\n useCases: [],\n note: 'transform trims the payload before it leaves the browser.',\n docs: [],\n },\n\n // consent-privacy\n 'destination-consent': {\n pointer: '/flows/server/destinations/meta/config/consent',\n chapter: 'consent-privacy',\n level: 'beginner',\n useCases: ['consent', 'capi'],\n note: 'Destination consent: Meta only gets events with marketing consent.',\n docs: [],\n },\n 'rule-consent': {\n pointer:\n '/flows/web/destinations/ga4/config/mapping/order/complete/consent',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['consent'],\n note: 'Rule consent on purchases: functional, like the destination; marketing consent belongs to Meta and Data Manager.',\n docs: [],\n },\n 'value-consent': {\n pointer: '/flows/web/destinations/collect/config/policy/user.email/consent',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['consent', 'pii-policy'],\n note: 'Field consent: the email is only kept with marketing consent.',\n docs: [],\n example: { step: 'collect', name: 'emailWithoutMarketing' },\n },\n 'destination-policy': {\n pointer: '/flows/web/destinations/ga4/config/policy',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['pii-policy'],\n note: 'policy rewrites the event before mapping, here a currency fallback.',\n docs: [],\n },\n 'rule-policy': {\n pointer:\n '/flows/server/destinations/meta/config/mapping/order/complete/policy',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['dedup', 'capi'],\n note: 'Rule policy sets the event id to the order id, so Meta can match it with the browser pixel.',\n docs: [],\n },\n 'meta-hashing': {\n pointer: '/flows/server/destinations/meta/config/settings/user_data/em',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['capi', 'pii-policy'],\n note: 'Meta normalizes and hashes em itself; the flow never handles a hash.',\n docs: [],\n example: { step: 'meta', name: 'purchase' },\n },\n 'value-validate': {\n pointer:\n '/flows/server/destinations/meta/config/settings/user_data/em/validate',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['pii-policy'],\n note: 'validate drops a value that does not look like an email.',\n docs: [],\n },\n 'ingest-ip-raw': {\n pointer: '/flows/server/sources/express/config/ingest/map/ip',\n chapter: 'consent-privacy',\n level: 'advanced',\n useCases: ['capi', 'cookieless-id'],\n note: 'The raw ip stays in ingest: Meta needs it, fingerprint anonymizes it itself.',\n docs: [],\n },\n\n 'email-pseudonymize': {\n pointer: '/flows/server/transformers/pseudonymize',\n chapter: 'consent-privacy',\n level: 'advanced',\n useCases: ['pii-policy', 'warehouse'],\n note: 'Before Pub/Sub the email becomes a stable keyed hash (HMAC-SHA256, EMAIL_SALT); Meta and Data Manager keep the raw email and hash it themselves.',\n docs: [],\n example: { step: 'pseudonymize', name: 'emailToWarehouse' },\n },\n 'pubsub-before': {\n pointer: '/flows/server/destinations/pubsub/before',\n chapter: 'consent-privacy',\n level: 'advanced',\n useCases: ['pii-policy'],\n note: 'A conditional next on Pub/Sub runs pseudonymize only when an email exists; other events pass untouched.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n\n // gtm-fed\n 'gtm-mode': {\n pointer: '/flows/web/destinations/gtm/config/settings/gtm',\n chapter: 'gtm-fed',\n level: 'intermediate',\n useCases: ['gtm-fed'],\n note: 'GTM stays: the gtag destination in GTM mode pushes walkerOS events into its dataLayer.',\n docs: [],\n example: { step: 'gtm', name: 'productAdd' },\n },\n 'destination-data': {\n pointer: '/flows/web/destinations/gtm/config/data',\n chapter: 'gtm-fed',\n level: 'intermediate',\n useCases: ['gtm-fed'],\n note: 'Destination data sends consent, globals, user and data with every GTM push.',\n docs: [],\n },\n 'gtm-names': {\n pointer: '/flows/web/destinations/gtm/config/mapping/product/add/name',\n chapter: 'gtm-fed',\n level: 'intermediate',\n useCases: ['gtm-fed'],\n note: 'GTM-bound names start with elb, so the dataLayer source can skip them.',\n docs: [],\n },\n 'datalayer-filter': {\n pointer: '/flows/web/sources/dataLayer/config/settings/filter',\n chapter: 'gtm-fed',\n level: 'advanced',\n useCases: ['gtm-fed'],\n note: 'The filter skips gtag arguments pushes and elb names: without it the page loops.',\n docs: [],\n example: { step: 'dataLayer', name: 'ownPushSkipped' },\n },\n 'gtm-echo-stop': {\n pointer: '/flows/web/destinations/gtm/before',\n chapter: 'gtm-fed',\n level: 'advanced',\n useCases: ['gtm-fed'],\n note: 'An event read from the dataLayer never goes back to GTM.',\n docs: [],\n example: { step: 'gtm', name: 'dataLayerEcho' },\n },\n 'ga4-como': {\n pointer: '/flows/web/destinations/ga4/config/settings/como',\n chapter: 'consent-privacy',\n level: 'intermediate',\n useCases: ['consent'],\n note: 'como turns walker consent into Google Consent Mode calls.',\n docs: [],\n example: { step: 'ga4', name: 'consentUpdate' },\n },\n 'load-script': {\n pointer: '/flows/web/destinations/ga4/config/loadScript',\n chapter: 'gtm-fed',\n level: 'beginner',\n useCases: [],\n note: 'loadScript lets the destination load gtag.js itself.',\n docs: [],\n },\n\n // references\n 'root-variables': {\n pointer: '/variables',\n chapter: 'references',\n level: 'beginner',\n useCases: [],\n note: 'Root variables are shared by all flows; a flow or a step can override them.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'flow-variables': {\n pointer: '/flows/server/variables',\n chapter: 'references',\n level: 'intermediate',\n useCases: [],\n note: 'Flow variables win over root variables for one flow.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'step-variables': {\n pointer: '/flows/server/destinations/piwikpro/variables',\n chapter: 'references',\n level: 'intermediate',\n useCases: [],\n note: 'Step variables win over flow and root variables for one step.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-var-whole': {\n pointer: '/flows/web/destinations/ga4/config/policy/data.currency/1/value',\n chapter: 'references',\n level: 'beginner',\n useCases: [],\n note: 'A whole-string $var keeps the variable type.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-var-deep': {\n pointer: '/flows/server/destinations/pubsub/config/settings/projectId',\n chapter: 'references',\n level: 'intermediate',\n useCases: [],\n note: '$var.gcp.project reads a path inside a variable.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-var-inline': {\n pointer:\n '/flows/warehouse/sources/pubsub/config/setup/deadLetterPolicy/deadLetterTopic',\n chapter: 'references',\n level: 'intermediate',\n useCases: [],\n note: 'Inside a longer string $var is replaced in place, here in a full topic name.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-env': {\n pointer: '/flows/server/transformers/fingerprint/config/settings/salt',\n chapter: 'references',\n level: 'intermediate',\n useCases: ['cookieless-id'],\n note: '$env without a default must be set: a secret salt never gets a public default.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-env-default': {\n pointer: '/variables/gcp/project',\n chapter: 'references',\n level: 'beginner',\n useCases: [],\n note: '$env.NAME:default works out of the box and takes the environment value when set.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-secret': {\n pointer: '/flows/server/destinations/pubsub/config/credentials',\n chapter: 'references',\n level: 'intermediate',\n useCases: ['deploy'],\n note: '$secret is read at start and never baked into an artifact; web flows reject it.',\n docs: [{ page: 'guides/reference-syntax' }],\n cli: ['runneros start dist/server.mjs -p 8080 --env-file .env'],\n },\n 'ref-flow': {\n pointer: '/flows/web/destinations/collect/config/settings/url',\n chapter: 'references',\n level: 'intermediate',\n useCases: ['multi-flow'],\n note: '$flow.server.url points the browser at the server flow; it is whole-string only.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-code': {\n pointer: '/flows/web/destinations/collect/config/settings/transform',\n chapter: 'references',\n level: 'intermediate',\n useCases: [],\n note: '$code: puts a function into JSON.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-contract': {\n pointer: '/flows/server/transformers/validate/config/settings/contract/0',\n chapter: 'references',\n level: 'intermediate',\n useCases: ['contracts'],\n note: '$contract.server hands the resolved contract to the validate step.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'ref-store': {\n pointer: '/flows/server/transformers/file/env/store',\n chapter: 'references',\n level: 'advanced',\n useCases: ['script-serving'],\n note: '$store.assets injects a store into a step.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n 'bundle-env': {\n pointer: '/flows/web/config/bundle/env',\n chapter: 'references',\n level: 'advanced',\n useCases: ['deploy'],\n note: 'Web $env is resolved at build time from this declared set, so every build is the same.',\n docs: [{ page: 'guides/reference-syntax' }],\n },\n\n // chains-routing\n 'source-before': {\n pointer: '/flows/server/sources/express/before',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['ga4-migration', 'script-serving'],\n note: 'source.before runs on the raw request, before an event exists.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'route-one': {\n pointer: '/flows/server/sources/express/before/one',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'one takes the first matching branch; no match falls through.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'match-and': {\n pointer: '/flows/server/sources/express/before/one/0/match/and',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'and needs every condition.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'op-prefix': {\n pointer: '/flows/server/sources/express/before/one/0/match/and/0/operator',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'prefix matches the start of a value.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'op-regex': {\n pointer: '/flows/server/sources/express/before/one/0/match/and/1/operator',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'regex matches a pattern: only hits of the sub-site property are decoded.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'op-suffix': {\n pointer: '/flows/server/sources/express/before/one/1/match/operator',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['script-serving'],\n note: 'suffix matches the end of a value: script requests end in .js.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'source-next': {\n pointer: '/flows/server/sources/express/next',\n chapter: 'chains-routing',\n level: 'beginner',\n useCases: [],\n note: 'source.next names the hop after the source, here dedup.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'collector-next': {\n pointer: '/flows/server/collector/next',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['bot', 'cookieless-id', 'impressions'],\n note: 'collector.next runs once per event before the fan-out: fingerprint and bot for all, enrich for all but impressions.',\n docs: [{ page: 'getting-started/flow/routing' }],\n prompt: 'p3',\n cli: [\n `walkeros push ${FILE} -f server -e '{\"name\":\"product impression\",\"trigger\":\"impression\",\"data\":{\"id\":\"SKU-1\"}}' --simulate collector.default`,\n ],\n },\n 'route-next-match': {\n pointer: '/flows/server/collector/next/2',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['impressions'],\n note: 'A conditional next (match plus next) runs the target only when the match holds; otherwise the chain goes on.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'match-not': {\n pointer: '/flows/server/collector/next/2/match/not',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['impressions'],\n note: 'not inverts a condition: everything that is not an impression.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'code-free-hop': {\n pointer: '/flows/server/transformers/enrich',\n chapter: 'chains-routing',\n level: 'advanced',\n useCases: [],\n note: 'A step with only next is a named chain other routes can call.',\n docs: [{ page: 'getting-started/flow/routing' }],\n example: { step: 'enrich', name: 'orderComplete' },\n },\n 'route-sequence': {\n pointer: '/flows/server/transformers/enrich/next',\n chapter: 'chains-routing',\n level: 'advanced',\n useCases: [],\n note: 'A list mixing conditional next entries and step ids is a sequence: each match decides in turn, validate always runs last.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'transformer-next': {\n pointer: '/flows/server/transformers/eventFilter/next',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'A transformer next continues the chain after the step.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'op-exists': {\n pointer: '/flows/server/transformers/enrich/next/0/match/operator',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'exists checks that a path has a value: only logged-in events load the customer.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'op-eq': {\n pointer: '/flows/server/transformers/enrich/next/1/match/operator',\n chapter: 'chains-routing',\n level: 'beginner',\n useCases: [],\n note: 'eq compares as strings.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'destination-before': {\n pointer: '/flows/server/destinations/meta/before',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'destination.before runs for one destination only; a stop there skips just that one.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'event-filter': {\n pointer: '/flows/server/transformers/eventFilter',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['impressions', 'bot', 'contracts'],\n note: 'eventFilter keeps impressions, likely bots and invalid events from Meta, Piwik PRO and Data Manager; Pub/Sub keeps everything.',\n docs: [{ page: 'getting-started/flow/routing' }],\n example: { step: 'eventFilter', name: 'validPasses' },\n },\n 'route-stop': {\n pointer: '/flows/server/transformers/eventFilter/next/stop',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'stop with a match drops the event at that point.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'match-or': {\n pointer: '/flows/server/transformers/eventFilter/next/match/or',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: [],\n note: 'or needs any condition.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'event-filter-impression': {\n pointer: '/flows/server/transformers/eventFilter/next/match/or/0',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['impressions'],\n note: 'Impressions stay out of Meta and Piwik PRO but reach the warehouse.',\n docs: [],\n example: { step: 'eventFilter', name: 'impressionStopped' },\n prompt: 'p3',\n },\n 'op-gt': {\n pointer: '/flows/server/transformers/eventFilter/next/match/or/1/operator',\n chapter: 'chains-routing',\n level: 'intermediate',\n useCases: ['bot'],\n note: 'gt compares numbers.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n 'stop-unconditional': {\n pointer: '/flows/server/transformers/file/next',\n chapter: 'chains-routing',\n level: 'advanced',\n useCases: ['script-serving'],\n note: 'An unconditional stop: a script request never becomes an event.',\n docs: [{ page: 'getting-started/flow/routing' }],\n },\n\n // contract\n 'contract-default': {\n pointer: '/contract/default',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts'],\n note: 'The contract names what every event must carry; the validate step and validate --strict read it.',\n docs: [{ page: 'getting-started/flow/contract' }],\n cli: [`walkeros validate ${FILE} -t contract`],\n },\n 'contract-extend': {\n pointer: '/contract/server/extend',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts'],\n note: 'server extends default with what the server adds: the visitor hash.',\n docs: [{ page: 'getting-started/flow/contract' }],\n },\n 'contract-server-hash': {\n pointer: '/contract/server/schema/properties/user/properties/hash',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts', 'cookieless-id'],\n note: 'The description tells analysts what user.hash is and how to count it.',\n docs: [{ page: 'getting-started/flow/contract' }],\n },\n 'contract-tagging': {\n pointer: '/contract/default/tagging',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts'],\n note: 'tagging is the contract version the tagging follows.',\n docs: [{ page: 'getting-started/flow/contract' }],\n },\n 'contract-description': {\n pointer: '/contract/default/description',\n chapter: 'contract',\n level: 'beginner',\n useCases: ['contracts'],\n note: 'description says what the contract is for.',\n docs: [{ page: 'getting-started/flow/contract' }],\n },\n 'contract-schema': {\n pointer: '/contract/default/schema',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts', 'consent'],\n note: 'schema applies to every event: functional consent is a hard gate, language a required global.',\n docs: [{ page: 'getting-started/flow/contract' }],\n },\n 'contract-events': {\n pointer: '/contract/default/events',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts'],\n note: 'events hold one JSON Schema per entity and action.',\n docs: [{ page: 'getting-started/flow/contract' }],\n },\n 'contract-wildcard': {\n pointer: '/contract/default/events/product/*',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts'],\n note: 'product * applies to every product action.',\n docs: [{ page: 'getting-started/flow/contract' }],\n },\n 'validate-transformer': {\n pointer: '/flows/server/transformers/validate',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts'],\n note: 'validate checks each event against $contract.server at runtime.',\n docs: [{ page: 'transformers/validate' }],\n example: { step: 'validate', name: 'validOrder' },\n },\n 'validate-pass': {\n pointer: '/flows/server/transformers/validate/config/settings/mode',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts', 'warehouse'],\n note: 'mode pass marks source.valid instead of dropping, so the warehouse keeps violations; strict is the hard gate.',\n docs: [{ page: 'transformers/validate' }],\n example: { step: 'validate', name: 'missingHash' },\n },\n 'event-filter-valid': {\n pointer: '/flows/server/transformers/eventFilter/next/match/or/2',\n chapter: 'contract',\n level: 'intermediate',\n useCases: ['contracts'],\n note: 'Only events that match the contract reach the vendors.',\n docs: [{ page: 'transformers/validate' }],\n example: { step: 'eventFilter', name: 'invalidStopped' },\n prompt: 'p4',\n },\n\n // quality\n 'dedup-by-event-id': {\n pointer: '/flows/server/transformers/dedup/cache',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['dedup'],\n note: 'A resend with the same event id is stopped for an hour.',\n docs: [{ page: 'collector/cache' }],\n example: { step: 'dedup', name: 'firstDelivery' },\n },\n 'cache-stop': {\n pointer: '/flows/server/transformers/dedup/cache/stop',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['dedup'],\n note: 'stop: true turns a cache hit into a drop.',\n docs: [{ page: 'collector/cache' }],\n },\n 'cache-namespace': {\n pointer: '/flows/server/transformers/dedup/cache/namespace',\n chapter: 'quality',\n level: 'advanced',\n useCases: ['dedup'],\n note: 'namespace keeps cache keys of different steps apart.',\n docs: [{ page: 'collector/cache' }],\n },\n 'cache-rules': {\n pointer: '/flows/server/transformers/dedup/cache/rules',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['dedup'],\n note: 'rules say which events are cached, by which key, for how long.',\n docs: [{ page: 'collector/cache' }],\n },\n 'cache-key': {\n pointer: '/flows/server/transformers/dedup/cache/rules/0/key',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['dedup'],\n note: 'key is a list of paths; together they identify a duplicate.',\n docs: [{ page: 'collector/cache' }],\n },\n 'cache-ttl': {\n pointer: '/flows/server/transformers/dedup/cache/rules/0/ttl',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['dedup'],\n note: 'ttl in seconds.',\n docs: [{ page: 'collector/cache' }],\n },\n 'order-dedup-meta': {\n pointer: '/flows/server/destinations/meta/cache',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['dedup', 'capi'],\n note: 'A thank-you page reload gets a new event id for the same order; Meta gets each order once.',\n docs: [{ page: 'collector/cache' }],\n prompt: 'p5',\n gtm: 'A custom template with a firestore lookup.',\n },\n 'cache-rule-match': {\n pointer: '/flows/server/destinations/meta/cache/rules/0/match',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['dedup'],\n note: 'A rule match limits the cache to order complete.',\n docs: [{ page: 'collector/cache' }],\n },\n 'bot-score': {\n pointer: '/flows/server/transformers/bot',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['bot'],\n note: 'bot annotates user.botScore and botCategory from the request; it never drops.',\n docs: [{ page: 'transformers/bot' }],\n example: { step: 'bot', name: 'curl' },\n cli: [\n `walkeros push ${FILE} -f server -e '{\"name\":\"page view\",\"data\":{\"title\":\"Home\"}}' --simulate collector.default --mock collector.next.bot='{\"name\":\"page view\",\"data\":{\"title\":\"Home\"},\"user\":{\"botScore\":80,\"botCategory\":\"automation\"}}'`,\n ],\n },\n 'event-filter-bot': {\n pointer: '/flows/server/transformers/eventFilter/next/match/or/1',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['bot'],\n note: 'A botScore above 50 keeps the event from the vendors.',\n docs: [],\n example: { step: 'eventFilter', name: 'botStopped' },\n },\n fingerprint: {\n pointer: '/flows/server/transformers/fingerprint',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['cookieless-id', 'privacy-analytics'],\n note: 'A cookieless visitor id rotating daily, for Piwik PRO; it is not hashing of personal data.',\n docs: [{ page: 'transformers/fingerprint' }],\n example: { step: 'fingerprint', name: 'cookielessId' },\n },\n 'piwik-visitor-id': {\n pointer: '/flows/server/destinations/piwikpro/config/settings/visitorId',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['cookieless-id', 'privacy-analytics'],\n note: 'Device, then session, then the cookieless hash: the first one present is the visitor id.',\n docs: [],\n },\n piwikpro: {\n pointer: '/flows/server/destinations/piwikpro',\n chapter: 'quality',\n level: 'intermediate',\n useCases: ['privacy-analytics'],\n note: 'Piwik PRO from the server, EU hosted, with the cookieless id as fallback.',\n docs: [],\n example: { step: 'piwikpro', name: 'orderWithGoal' },\n },\n\n // state-stores\n 'state-set': {\n pointer: '/flows/server/transformers/sessionSave/state',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: ['sessions'],\n note: 'state set remembers the gclid and start time of a session in the built-in cache.',\n docs: [{ page: 'collector/state' }],\n example: { step: 'sessionSave', name: 'sessionStart' },\n },\n 'state-get': {\n pointer: '/flows/server/transformers/sessionLoad/state',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: ['sessions'],\n note: 'state get restores it on the order, per instance.',\n docs: [{ page: 'collector/state' }],\n example: { step: 'sessionLoad', name: 'orderWithoutSession' },\n },\n 'state-key': {\n pointer: '/flows/server/transformers/sessionSave/state/key',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: ['sessions'],\n note: 'The key falls back from the session id to the visitor hash.',\n docs: [{ page: 'collector/state' }],\n },\n 'state-value': {\n pointer: '/flows/server/transformers/sessionSave/state/value',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: ['sessions'],\n note: 'value maps what is stored.',\n docs: [{ page: 'collector/state' }],\n },\n 'state-store': {\n pointer: '/flows/server/transformers/loadUser/state/store',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: [],\n note: 'store reads from a named store instead of the built-in cache.',\n docs: [{ page: 'collector/state' }],\n },\n 'state-mapping': {\n pointer: '/flows/server/transformers/loadUser/state/mapping',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: [],\n note: 'mapping picks fields from the stored row and merges them into the target.',\n docs: [{ page: 'collector/state' }],\n },\n 'load-user': {\n pointer: '/flows/server/transformers/loadUser',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: [],\n note: 'loadUser puts the customer lifetime value and segment on logged-in events.',\n docs: [{ page: 'collector/state' }],\n example: { step: 'loadUser', name: 'knownCustomer' },\n },\n 'store-fs': {\n pointer: '/flows/server/stores/assets',\n chapter: 'state-stores',\n level: 'intermediate',\n useCases: ['script-serving'],\n note: 'An fs store serves files from a folder.',\n docs: [],\n },\n 'store-file': {\n pointer: '/flows/server/stores/assets/config/file',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: ['script-serving'],\n note: 'file: true returns bytes exactly as stored.',\n docs: [],\n },\n 'store-customers': {\n pointer: '/flows/server/stores/customers',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: [],\n note: 'Customer records come from an fs store with fake demo data; in production a Sheets or GCS store takes its place, loadUser stays as it is.',\n docs: [],\n },\n 'store-cache': {\n pointer: '/flows/server/stores/customers/cache',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: [],\n note: 'Store cache memoizes customer reads for five minutes.',\n docs: [{ page: 'collector/cache' }],\n },\n 'file-transformer': {\n pointer: '/flows/server/transformers/file',\n chapter: 'state-stores',\n level: 'intermediate',\n useCases: ['script-serving'],\n note: 'walker.js is served first party from the server flow.',\n docs: [{ page: 'transformers/file' }],\n example: { step: 'file', name: 'walkerJs' },\n cli: [\n `walkeros bundle ${FILE} -f web -o packages/cli/examples/shared/walker.js`,\n ],\n },\n 'file-headers': {\n pointer: '/flows/server/transformers/file/config/settings/headers',\n chapter: 'state-stores',\n level: 'intermediate',\n useCases: ['script-serving'],\n note: 'Default response headers for served files: caching and resource policy.',\n docs: [{ page: 'transformers/file' }],\n },\n 'gclid-to-ads': {\n pointer:\n '/flows/server/destinations/datamanager/config/mapping/order/complete/data/map/gclid',\n chapter: 'state-stores',\n level: 'advanced',\n useCases: ['sessions'],\n note: 'The gclid saved at session start reaches Google Ads with the purchase.',\n docs: [],\n example: { step: 'datamanager', name: 'conversionWithGclid' },\n },\n\n // delivery\n 'pubsub-raw': {\n pointer: '/flows/server/destinations/pubsub',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['warehouse'],\n note: 'Pub/Sub gets every event raw, impressions, bots and violations included.',\n docs: [],\n example: { step: 'pubsub', name: 'everyEvent' },\n },\n 'destination-setup': {\n pointer: '/flows/server/destinations/pubsub/config/setup',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['deploy'],\n note: 'setup provisions the topic, EU storage regions included.',\n docs: [],\n cli: [`walkeros setup destination.pubsub -c ${FILE} -f server`],\n },\n 'destination-credentials': {\n pointer: '/flows/server/destinations/datamanager/config/credentials',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['deploy'],\n note: 'config.credentials takes the service account from $secret.',\n docs: [],\n },\n breaker: {\n pointer: '/flows/server/destinations/pubsub/config/breaker',\n chapter: 'delivery',\n level: 'advanced',\n useCases: ['reliability'],\n note: 'breaker pauses a failing destination instead of hammering it.',\n docs: [],\n },\n timeout: {\n pointer: '/flows/server/destinations/pubsub/config/timeout',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['reliability'],\n note: 'timeout bounds each push.',\n docs: [],\n },\n 'dlq-max': {\n pointer: '/flows/server/destinations/pubsub/config/dlqMax',\n chapter: 'delivery',\n level: 'advanced',\n useCases: ['reliability'],\n note: 'dlqMax bounds the dead letter queue of failed events.',\n docs: [],\n },\n batch: {\n pointer: '/flows/warehouse/destinations/bigquery/config/batch',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['warehouse'],\n note: 'batch buffers rows by size and age.',\n docs: [],\n },\n 'web-batch': {\n pointer: '/flows/web/destinations/collect/config/batch',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: [],\n note: 'The browser sends events in batches.',\n docs: [],\n },\n 'rule-batch': {\n pointer:\n '/flows/web/destinations/collect/config/mapping/product/impression/batch',\n chapter: 'delivery',\n level: 'advanced',\n useCases: ['impressions'],\n note: 'Impressions get their own, bigger buffer.',\n docs: [],\n },\n 'queue-backfill': {\n pointer: '/flows/web/destinations/gtm/config/queue',\n chapter: 'delivery',\n level: 'advanced',\n useCases: ['consent'],\n note: 'queue backfills events from before the destination started, not a retry queue.',\n docs: [],\n },\n 'destination-require': {\n pointer: '/flows/web/destinations/gtm/config/require',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['consent', 'gtm-fed'],\n note: 'require starts GTM only after the consent decision.',\n docs: [],\n },\n 'meta-capi': {\n pointer: '/flows/server/destinations/meta',\n chapter: 'delivery',\n level: 'beginner',\n useCases: ['capi'],\n note: 'Meta Conversions API from the server for add to cart and purchase.',\n docs: [],\n example: { step: 'meta', name: 'purchase' },\n prompt: 'p1',\n gtm: 'A server container with a Meta CAPI tag.',\n },\n datamanager: {\n pointer: '/flows/server/destinations/datamanager',\n chapter: 'delivery',\n level: 'advanced',\n useCases: ['capi'],\n note: 'Google Ads conversions through the Data Manager API.',\n docs: [],\n },\n 'warehouse-flow': {\n pointer: '/flows/warehouse',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['warehouse', 'multi-flow'],\n note: 'A separate flow reads the topic into BigQuery; the warehouse keeps everything.',\n docs: [],\n },\n 'pubsub-pull': {\n pointer: '/flows/warehouse/sources/pubsub',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['warehouse'],\n note: 'The pull source reads the subscription and acks after the push.',\n docs: [],\n },\n 'source-setup': {\n pointer: '/flows/warehouse/sources/pubsub/config/setup',\n chapter: 'delivery',\n level: 'advanced',\n useCases: ['deploy', 'reliability'],\n note: 'Source setup provisions the subscription with a dead letter topic.',\n docs: [],\n },\n 'source-credentials': {\n pointer: '/flows/warehouse/sources/pubsub/config/credentials',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['deploy'],\n note: 'Sources take credentials too.',\n docs: [],\n },\n bigquery: {\n pointer: '/flows/warehouse/destinations/bigquery',\n chapter: 'delivery',\n level: 'intermediate',\n useCases: ['warehouse'],\n note: 'Every event becomes one BigQuery row.',\n docs: [],\n },\n\n // build-run\n 'bundle-packages': {\n pointer: '/flows/server/config/bundle/packages',\n chapter: 'build-run',\n level: 'beginner',\n useCases: ['deploy'],\n note: 'bundle.packages lists what a flow is built from.',\n docs: [],\n cli: [\n `walkeros bundle ${FILE} -f web --stats`,\n `walkeros bundle ${FILE} --all -o dist/all`,\n `walkeros bundle ${FILE} -f server -o dist/server.mjs --release 2026-09-26`,\n 'walkeros cache info',\n ],\n },\n 'package-version': {\n pointer:\n '/flows/server/config/bundle/packages/@walkeros~1collector/version',\n chapter: 'build-run',\n level: 'beginner',\n useCases: ['deploy'],\n note: 'validate --strict warns for a listed package without a version; an unlisted step package is added as latest.',\n docs: [],\n },\n 'root-include': {\n pointer: '/include',\n chapter: 'build-run',\n level: 'intermediate',\n useCases: ['script-serving'],\n note: 'include ships the shared folder, walker.js included, with the server artifact.',\n docs: [],\n },\n\n // operate\n 'observe-public': {\n pointer: '/flows/web/config/observe',\n chapter: 'operate',\n level: 'intermediate',\n useCases: ['observability'],\n note: 'A web flow reports to Observe through a public url and binding.',\n docs: [],\n cli: ['walkeros observe start <flowId>'],\n },\n 'observe-level': {\n pointer: '/flows/server/config/observe/level',\n chapter: 'operate',\n level: 'intermediate',\n useCases: ['observability'],\n note: 'level standard reports step outcomes; trace adds payloads.',\n docs: [],\n },\n 'observe-sample': {\n pointer: '/flows/server/config/observe/sample',\n chapter: 'operate',\n level: 'intermediate',\n useCases: ['observability'],\n note: 'sample reports one event in ten.',\n docs: [],\n },\n 'collector-logger': {\n pointer: '/flows/server/collector/logger',\n chapter: 'operate',\n level: 'beginner',\n useCases: ['observability'],\n note: 'The log level comes from the flow variable, so LOG_LEVEL changes it per environment.',\n docs: [{ page: 'collector/logger' }],\n cli: [\n `walkeros flows create flow-complete -c ${FILE}`,\n `walkeros deploy create ${FILE}`,\n 'walkeros deploy start <flowId>',\n ],\n },\n} satisfies Record<string, TeachingEntry>;\n\nexport type FeatureId = keyof typeof teaching;\n\nexport type FeatureEntry = TeachingEntry & { id: FeatureId };\n\nexport function isFeatureId(id: string): id is FeatureId {\n return id in teaching;\n}\n\n/** Every feature, grouped by chapter in learning order. */\nexport const flowCompleteFeatures: FeatureEntry[] = Object.entries(\n teaching,\n).flatMap(([id, entry]) => (isFeatureId(id) ? [{ id, ...entry }] : []));\n\ntype Coverage<K extends PropertyKey> = Record<\n K,\n FeatureId | Excluded | Inherited\n>;\n\nconst INHERITED: Inherited = { inherited: 'Mapping.Config' };\nconst RUNTIME = (what: string): Excluded => ({\n excluded: `${what} is managed by the runtime or used in tests only`,\n});\nconst FLOW_LEVEL: Excluded = {\n excluded:\n 'declared on the flow (sources, destinations, transformers, stores), not under collector',\n};\n\n/**\n * Route shapes a chain field can take. Vocabulary: a \"conditional next\" is\n * `{ match, next }`; a \"gate\" is match-only (`RouteGateConfig`).\n */\nexport type RouteKind =\n | Exclude<\n keyof (\n | Transformer.RouteNextConfig\n | Transformer.RouteOneConfig\n | Transformer.RouteManyConfig\n | Transformer.RouteStopConfig\n ),\n 'match'\n >\n | 'gate'\n | 'sequence'\n | 'id';\n\nexport type Combinator = 'and' | 'or' | 'not';\n\nexport type ReferenceKind =\n | 'var'\n | 'varDeep'\n | 'varInline'\n | 'env'\n | 'envDefault'\n | 'secret'\n | 'flow'\n | 'code'\n | 'contract'\n | 'store';\n\nexport const flowCompleteCoverage = {\n flowJson: {\n version: 'format-version',\n $schema: 'schema-url',\n include: 'root-include',\n variables: 'root-variables',\n contract: 'contract-default',\n flows: 'flows-multi',\n } satisfies Coverage<keyof Flow.Json>,\n flow: {\n config: 'flow-config',\n sources: 'flow-sources',\n destinations: 'flow-destinations',\n transformers: 'flow-transformers',\n stores: 'flow-stores',\n collector: 'flow-collector',\n variables: 'flow-variables',\n } satisfies Coverage<keyof Flow>,\n config: {\n platform: 'platform',\n url: 'config-url',\n settings: 'config-settings',\n bundle: 'bundle-packages',\n observe: 'observe-public',\n } satisfies Coverage<keyof Flow.Config>,\n bundle: {\n packages: 'bundle-packages',\n overrides: { excluded: 'no transitive version conflict to resolve here' },\n traceInclude: { excluded: 'root include already ships the asset folder' },\n env: 'bundle-env',\n } satisfies Coverage<keyof Flow.Bundle>,\n bundlePackage: {\n version: 'package-version',\n imports: {\n excluded:\n 'no inline $code here needs a package utility; step import picks named exports',\n },\n path: { excluded: 'local development only; tests inject it in memory' },\n } satisfies Coverage<keyof Flow.BundlePackage>,\n observe: {\n level: 'observe-level',\n sample: 'observe-sample',\n url: 'observe-public',\n binding: 'observe-public',\n } satisfies Coverage<keyof Flow.Observe>,\n code: {\n push: 'code-push',\n type: 'code-type',\n init: { excluded: 'the inline pageGroup step needs no setup' },\n } satisfies Coverage<keyof Flow.Code>,\n source: {\n package: 'step-package',\n code: 'step-code',\n import: 'step-import',\n config: 'step-config',\n env: 'step-env',\n primary: 'source-primary',\n before: 'source-before',\n next: 'source-next',\n cache: {\n excluded:\n 'dedup runs as its own hop after the source (express.next), so no source carries a cache',\n },\n state: {\n excluded:\n 'state runs in collector.next after enrichment, where the visitor hash exists',\n },\n variables: 'step-variables',\n examples: 'step-examples',\n } satisfies Coverage<keyof Flow.Source>,\n transformer: {\n package: 'step-package',\n code: 'step-code',\n import: 'step-import',\n config: 'step-config',\n env: 'step-env',\n before: { excluded: ROUTE_CASES },\n next: 'transformer-next',\n cache: 'dedup-by-event-id',\n state: 'state-set',\n mapping: 'ga4-consent-map',\n variables: 'step-variables',\n examples: 'step-examples',\n } satisfies Coverage<keyof Flow.Transformer>,\n destination: {\n package: 'step-package',\n code: 'step-code',\n import: 'step-import',\n config: 'step-config',\n env: 'step-env',\n before: 'destination-before',\n next: { excluded: ROUTE_CASES },\n cache: 'order-dedup-meta',\n state: { excluded: 'session state is read once in collector.next' },\n variables: 'step-variables',\n examples: 'step-examples',\n } satisfies Coverage<keyof Flow.Destination>,\n store: {\n package: 'step-package',\n code: 'step-code',\n import: 'step-import',\n config: 'step-config',\n env: 'step-env',\n cache: 'store-cache',\n variables: 'step-variables',\n examples: {\n excluded:\n 'stores are shown through the steps that read them (file, loadUser)',\n },\n } satisfies Coverage<keyof Flow.Store>,\n contractRule: {\n extend: 'contract-extend',\n tagging: 'contract-tagging',\n description: 'contract-description',\n events: 'contract-events',\n schema: 'contract-schema',\n } satisfies Coverage<keyof Flow.ContractRule>,\n stepExample: {\n title: 'example-title',\n description: 'example-description',\n public: 'example-public',\n in: 'example-in',\n trigger: 'example-trigger',\n mapping: 'example-mapping',\n out: 'example-out',\n command: 'example-command',\n } satisfies Coverage<keyof Flow.StepExample>,\n sourceConfig: {\n settings: 'step-settings',\n credentials: 'source-credentials',\n env: 'step-env',\n id: RUNTIME('id'),\n logger: RUNTIME('step logger'),\n async: 'source-async',\n primary: 'source-primary',\n require: 'source-require',\n setup: 'source-setup',\n ingest: 'source-ingest',\n disabled: RUNTIME('disabled'),\n init: RUNTIME('init'),\n state: {\n excluded:\n 'state runs in collector.next after enrichment, where the visitor hash exists',\n },\n consent: INHERITED,\n data: INHERITED,\n include: INHERITED,\n mapping: 'source-mapping',\n policy: INHERITED,\n } satisfies Coverage<keyof Source.Config>,\n destinationConfig: {\n consent: 'destination-consent',\n settings: 'step-settings',\n credentials: 'destination-credentials',\n data: 'destination-data',\n include: 'destination-include',\n env: 'step-env',\n id: RUNTIME('id'),\n init: RUNTIME('init'),\n loadScript: 'load-script',\n logger: RUNTIME('step logger'),\n mapping: 'destination-mapping',\n policy: 'destination-policy',\n queue: 'queue-backfill',\n require: 'destination-require',\n setup: 'destination-setup',\n before: 'destination-before',\n next: { excluded: ROUTE_CASES },\n cache: 'order-dedup-meta',\n state: { excluded: 'session state is read once in collector.next' },\n disabled: RUNTIME('disabled'),\n timeout: 'timeout',\n mock: RUNTIME('mock'),\n queueMax: {\n excluded: 'the default bound fits; dlqMax is the knob this file turns',\n },\n dlqMax: 'dlq-max',\n batch: 'batch',\n breaker: 'breaker',\n } satisfies Coverage<keyof Destination.Config>,\n transformerConfig: {\n settings: 'step-settings',\n env: 'step-env',\n id: RUNTIME('id'),\n logger: RUNTIME('step logger'),\n before: { excluded: ROUTE_CASES },\n next: 'transformer-next',\n cache: 'dedup-by-event-id',\n state: 'state-set',\n init: RUNTIME('init'),\n disabled: RUNTIME('disabled'),\n mock: RUNTIME('mock'),\n chainMocks: RUNTIME('chainMocks'),\n mapping: 'ga4-consent-map',\n } satisfies Coverage<keyof Transformer.Config>,\n storeConfig: {\n settings: 'step-settings',\n credentials: {\n excluded:\n 'the fs demo store needs none; the Sheets or GCS store that replaces it in production takes config.credentials',\n },\n env: 'step-env',\n id: RUNTIME('id'),\n logger: RUNTIME('step logger'),\n setup: {\n excluded:\n 'the customers sheet is maintained by the team, not provisioned by the flow',\n },\n file: 'store-file',\n } satisfies Coverage<keyof Store.Config>,\n collector: {\n run: RUNTIME('run'),\n globalsStatic: 'collector-globals-static',\n sessionStatic: {\n excluded: 'the session source owns session data',\n },\n logger: 'collector-logger',\n queueMax: {\n excluded: 'the default bound fits; dlqMax is the knob this file turns',\n },\n name: RUNTIME('name'),\n release: {\n excluded: 'set by walkeros bundle --release, never written by hand',\n },\n next: 'collector-next',\n consent: {\n excluded: 'no consent defaults: only the CMP decision sets consent',\n },\n user: {\n excluded: 'set at runtime by the session source and the login command',\n },\n globals: 'collector-globals',\n sources: FLOW_LEVEL,\n destinations: FLOW_LEVEL,\n transformers: FLOW_LEVEL,\n stores: FLOW_LEVEL,\n custom: 'collector-custom',\n hooks: RUNTIME('hooks'),\n observe: RUNTIME('observe'),\n observers: RUNTIME('observers'),\n } satisfies Coverage<keyof Collector.InitConfig>,\n mappingConfig: {\n consent: 'destination-consent',\n data: 'destination-data',\n include: 'destination-include',\n mapping: 'destination-mapping',\n policy: 'destination-policy',\n } satisfies Coverage<keyof Mapping.Config>,\n mappingRule: {\n batch: 'rule-batch',\n condition: 'rule-condition',\n consent: 'rule-consent',\n settings: 'rule-settings',\n data: 'rule-data',\n include: {\n excluded: 'config include covers GA4; no rule needs a section of its own',\n },\n ignore: 'mapping-wildcard-ignore',\n silent: {\n excluded: 'no destination here has a side effect without a push',\n },\n name: 'rule-name',\n policy: 'rule-policy',\n extend: 'rule-extend',\n remove: 'rule-remove',\n } satisfies Coverage<keyof Mapping.Rule>,\n valueConfig: {\n condition: 'value-condition',\n consent: 'value-consent',\n fn: 'value-fn',\n key: 'value-key',\n loop: 'value-loop',\n map: 'value-map',\n set: 'value-set',\n validate: 'value-validate',\n value: 'value-value',\n } satisfies Coverage<keyof Mapping.ValueConfig>,\n cache: {\n stop: 'cache-stop',\n store: {\n excluded:\n 'every step cache here uses the built-in cache; store cache covers named stores',\n },\n namespace: 'cache-namespace',\n rules: 'cache-rules',\n } satisfies Coverage<keyof Cache.Cache>,\n eventCacheRule: {\n match: 'cache-rule-match',\n ttl: 'cache-ttl',\n key: 'cache-key',\n update: { excluded: 'no cached response needs rewriting on a hit' },\n } satisfies Coverage<keyof Cache.EventCacheRule>,\n storeCacheRule: {\n match: { excluded: 'one ttl fits every customer read' },\n ttl: 'store-cache',\n } satisfies Coverage<keyof Cache.StoreCacheRule>,\n state: {\n mode: 'state-set',\n store: 'state-store',\n key: 'state-key',\n value: 'state-value',\n mapping: 'state-mapping',\n } satisfies Coverage<keyof State>,\n matchOperator: {\n eq: 'op-eq',\n contains: {\n excluded: 'no substring test the other operators do not cover',\n },\n prefix: 'op-prefix',\n suffix: 'op-suffix',\n regex: 'op-regex',\n gt: 'op-gt',\n lt: { excluded: 'no upper bound to test; gt covers numeric comparison' },\n exists: 'op-exists',\n } satisfies Coverage<Matcher.MatchOperator>,\n route: {\n next: 'route-next-match',\n one: 'route-one',\n many: { excluded: ROUTE_CASES },\n stop: 'route-stop',\n gate: { excluded: ROUTE_CASES },\n sequence: 'route-sequence',\n id: 'source-next',\n } satisfies Coverage<RouteKind>,\n combinator: {\n and: 'match-and',\n or: 'match-or',\n not: 'match-not',\n } satisfies Coverage<Combinator>,\n reference: {\n var: 'ref-var-whole',\n varDeep: 'ref-var-deep',\n varInline: 'ref-var-inline',\n env: 'ref-env',\n envDefault: 'ref-env-default',\n secret: 'ref-secret',\n flow: 'ref-flow',\n code: 'ref-code',\n contract: 'ref-contract',\n store: 'ref-store',\n } satisfies Coverage<ReferenceKind>,\n};\n\nexport interface CliEntry {\n command: string;\n chapter: ChapterId;\n}\n\n/** Every command line the guide teaches, run against this file. */\nexport const flowCompleteCli: CliEntry[] = [\n { command: `walkeros validate ${FILE} --strict`, chapter: 'tour' },\n {\n command: `walkeros validate ${FILE} -t contract`,\n chapter: 'contract',\n },\n {\n command: `walkeros validate ${FILE} -f web --path destinations.collect`,\n chapter: 'step-envelope',\n },\n {\n command: `walkeros push ${FILE} -f web -e '{\"name\":\"page view\"}' --simulate source.browser`,\n chapter: 'tour',\n },\n {\n command: `walkeros push ${FILE} -f server -e '{\"name\":\"product impression\",\"trigger\":\"impression\",\"data\":{\"id\":\"SKU-1\"}}' --simulate transformer.eventFilter`,\n chapter: 'chains-routing',\n },\n {\n command: `walkeros push ${FILE} -f web -e '{\"name\":\"order complete\",\"data\":{\"id\":\"ORD-100\",\"total\":149.8,\"currency\":\"EUR\"}}' --simulate destination.ga4`,\n chapter: 'mapping',\n },\n {\n command: `walkeros push ${FILE} -f server -e '{\"name\":\"product impression\",\"trigger\":\"impression\",\"data\":{\"id\":\"SKU-1\"}}' --simulate collector.default`,\n chapter: 'chains-routing',\n },\n {\n command: `walkeros push ${FILE} -f server -e '{\"name\":\"page view\",\"data\":{\"title\":\"Home\"}}' --simulate collector.default --mock collector.next.bot='{\"name\":\"page view\",\"data\":{\"title\":\"Home\"},\"user\":{\"botScore\":80,\"botCategory\":\"automation\"}}'`,\n chapter: 'quality',\n },\n { command: `walkeros bundle ${FILE} -f web --stats`, chapter: 'build-run' },\n {\n command: `walkeros bundle ${FILE} --all -o dist/all`,\n chapter: 'build-run',\n },\n {\n command: `walkeros bundle ${FILE} -f server -o dist/server.mjs --release 2026-09-26`,\n chapter: 'build-run',\n },\n {\n command: `walkeros bundle ${FILE} -f web -o packages/cli/examples/shared/walker.js`,\n chapter: 'state-stores',\n },\n {\n command: 'runneros start dist/server.mjs -p 8080 --env-file .env',\n chapter: 'build-run',\n },\n {\n command: `walkeros setup destination.pubsub -c ${FILE} -f server`,\n chapter: 'delivery',\n },\n { command: 'walkeros cache info', chapter: 'build-run' },\n {\n command: `walkeros flows create flow-complete -c ${FILE}`,\n chapter: 'operate',\n },\n { command: `walkeros deploy create ${FILE}`, chapter: 'operate' },\n { command: 'walkeros deploy start <flowId>', chapter: 'operate' },\n { command: 'walkeros observe start <flowId>', chapter: 'operate' },\n];\n\nexport const flowCompleteManifest = {\n file: FILE,\n features: flowCompleteFeatures,\n coverage: flowCompleteCoverage,\n cli: flowCompleteCli,\n};\n","/**\n * Typed re-exports of bundled example flow configurations.\n *\n * Importing JSON files via `resolveJsonModule` produces a deeply structural\n * type whose literals are widened (`version: number` instead of `4`,\n * `platform: string` instead of `'web' | 'server'`). That widened shape is\n * not assignable to `Flow.Json` and forces every consumer to cast away to\n * `Record<string, unknown>`, losing all type information about the example.\n *\n * Routing the imports through `validateFlowConfig` (a real type guard backed\n * by the canonical Zod schema in `@walkeros/core`) launders the JSON into a\n * proper `Flow.Json` value with no `as` cast at any call site:\n *\n * - The Zod parser checks the structure at module load time. If an example\n * drifts away from the schema, the package fails to load loudly instead\n * of producing a silently broken value.\n * - The return type is `Flow.Json` (the canonical interface), not the Zod\n * inferred shape, because `validateFlowConfig` uses `isFlowConfig` as a\n * `data is Flow.Json` type predicate.\n *\n * Pattern choice (`: Flow.Json` annotation via runtime validator) was picked\n * over `satisfies Flow.Json` and `as const satisfies Flow.Json` because:\n *\n * - `: Flow.Json` annotation alone fails: the JSON's widened literals do\n * not satisfy the literal constraints (`version: 4`, platform unions).\n * - `satisfies Flow.Json` fails for the same reason.\n * - `as const satisfies Flow.Json` cannot be applied to a JSON import\n * (TypeScript does not support `as const` on imported values).\n * - A wrapper-function or runtime-validator approach is the only pattern\n * that produces a `Flow.Json`-typed value without an `as` cast anywhere\n * in the chain. It also gives consumers a load-time correctness check\n * for free.\n *\n * Cost: one Zod parse per example at module init. Examples are loaded by\n * tests, MCP servers, and dev seed scripts. None are perf-critical.\n */\n\nimport { validateFlowConfig } from '../config/validators.js';\n\nimport flowCompleteImport from '../../examples/flow-complete.json';\nimport flowSimpleImport from '../../examples/flow-simple.json';\n\nexport const flowComplete = validateFlowConfig(flowCompleteImport);\nexport const flowSimple = validateFlowConfig(flowSimpleImport);\n\nexport {\n flowCompleteManifest,\n flowCompleteFeatures,\n flowCompleteCoverage,\n flowCompleteCli,\n isFeatureId,\n resolvePointer,\n} from './flow-complete.manifest.js';\nexport type {\n ChapterId,\n UseCaseId,\n PromptId,\n Level,\n FeatureId,\n FeatureEntry,\n TeachingEntry,\n Excluded,\n Inherited,\n CliEntry,\n RouteKind,\n Combinator,\n ReferenceKind,\n} from './flow-complete.manifest.js';\n"],"mappings":"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","names":[]}
|