@walkeros/web-source-cmp-cookiepro 3.4.0 → 3.4.1-next-1776790594143
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev.js +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/examples/index.js +6 -0
- package/dist/examples/index.mjs +6 -0
- package/dist/index.browser.js +1 -1
- package/dist/index.es5.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/walkerOS.json +8 -2
- package/package.json +3 -3
package/dist/dev.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,a=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},s={};a(s,{examples:()=>i,schemas:()=>I}),module.exports=(e=s,((e,a,s,i)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let l of o(a))r.call(e,l)||l===s||t(e,l,{get:()=>a[l],enumerable:!(i=n(a,l))||i.enumerable});return e})(t({},"__esModule",{value:!0}),e));var i={};a(i,{analyticsOnlyConsent:()=>
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,a=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},s={};a(s,{examples:()=>i,schemas:()=>I}),module.exports=(e=s,((e,a,s,i)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let l of o(a))r.call(e,l)||l===s||t(e,l,{get:()=>a[l],enumerable:!(i=n(a,l))||i.enumerable});return e})(t({},"__esModule",{value:!0}),e));var i={};a(i,{analyticsOnlyConsent:()=>g,analyticsOnlyMapped:()=>k,createMockElbFn:()=>b,createMockOneTrustAPI:()=>h,createTrigger:()=>j,customCategoryConsent:()=>d,emptyConsent:()=>C,fullConsent:()=>l,fullConsentMapped:()=>m,marketingOnlyConsent:()=>u,marketingOnlyMapped:()=>w,minimalConsent:()=>p,minimalConsentMapped:()=>f,noopLogger:()=>M,partialConsent:()=>c,partialConsentMapped:()=>y,step:()=>v,trigger:()=>z});var l=",C0001,C0002,C0003,C0004,C0005,",c=",C0001,C0003,",p=",C0001,",g=",C0001,C0002,",u=",C0001,C0004,",C="",d=",C0001,CUSTOM01,CUSTOM02,",m={functional:!0,analytics:!0,marketing:!0},y={functional:!0,analytics:!1,marketing:!1},f={functional:!0,analytics:!1,marketing:!1},k={functional:!0,analytics:!0,marketing:!1},w={functional:!0,analytics:!1,marketing:!0},O=()=>{},b=()=>()=>Promise.resolve({ok:!0}),M={error:O,warn:O,info:O,debug:O,throw:e=>{throw"string"==typeof e?new Error(e):e},json:O,scope:()=>M},h=(e=!1)=>({IsAlertBoxClosed:()=>e}),v={};a(v,{categoryMapOverride:()=>S,fullConsent:()=>P,minimalConsent:()=>T,sdkLoadedDetection:()=>A});var P={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},T={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},S={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},A={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},x=require("@walkeros/collector"),j=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{var o;const r=window;if(r.OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:()=>!0},!t){const n=await(0,x.startFlow)({...e,run:null==(o=e.run)||o});t={collector:n.collector,elb:n.elb}}}}},z=(e,t)=>{const n=t.window;"string"==typeof e&&(n.OptanonActiveGroups=e,n.OneTrust={IsAlertBoxClosed:()=>!0})},I={};a(I,{SettingsSchema:()=>q,settings:()=>F});var D=require("@walkeros/core/dev"),B=require("@walkeros/core/dev"),q=B.z.object({categoryMap:B.z.record(B.z.string(),B.z.string()).describe("Map the CMP's consent categories (keys) to walkerOS consent groups (values).").optional(),explicitOnly:B.z.boolean().describe("Only process consent after the user closed the OneTrust banner (IsAlertBoxClosed). Default: true.").optional(),globalName:B.z.string().describe("Custom name for the OneTrust global on window. Default: 'OneTrust'.").optional()}).meta({id:"CookieProSettings",title:"Settings",description:"Settings for the CookiePro / OneTrust CMP source."}),F=(0,D.zodToSchema)(q);//# sourceMappingURL=dev.js.map
|
package/dist/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dev.ts","../src/examples/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/schemas/index.ts","../src/schemas/settings.ts"],"sourcesContent":["/**\n * Development exports for testing and tooling.\n */\nexport * as examples from './examples';\nexport * as schemas from './schemas';\n","export * from './inputs';\nexport * from './outputs';\nexport * from './env';\nexport * as step from './step';\nexport { createTrigger, trigger } from './trigger';\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\n// Export Zod schemas and types\nexport { SettingsSchema, type Settings } from './settings';\n\n// JSON Schema exports (for website PropertyTable and documentation tools)\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * CookiePro / OneTrust source settings schema\n */\nexport const SettingsSchema = z\n .object({\n categoryMap: z\n .record(z.string(), z.string())\n .describe(\n \"Map the CMP's consent categories (keys) to walkerOS consent groups (values).\",\n )\n .optional(),\n\n explicitOnly: z\n .boolean()\n .describe(\n 'Only process consent after the user closed the OneTrust banner (IsAlertBoxClosed). Default: true.',\n )\n .optional(),\n\n globalName: z\n .string()\n .describe(\n \"Custom name for the OneTrust global on window. Default: 'OneTrust'.\",\n )\n .optional(),\n })\n .meta({\n id: 'CookieProSettings',\n title: 'Settings',\n description: 'Settings for the CookiePro / OneTrust CMP source.',\n });\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger","import_dev"]}
|
|
1
|
+
{"version":3,"sources":["../src/dev.ts","../src/examples/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/schemas/index.ts","../src/schemas/settings.ts"],"sourcesContent":["/**\n * Development exports for testing and tooling.\n */\nexport * as examples from './examples';\nexport * as schemas from './schemas';\n","export * from './inputs';\nexport * from './outputs';\nexport * from './env';\nexport * as step from './step';\nexport { createTrigger, trigger } from './trigger';\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n title: 'Minimal consent',\n description:\n 'Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.',\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n title: 'SDK loaded detection',\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\n// Export Zod schemas and types\nexport { SettingsSchema, type Settings } from './settings';\n\n// JSON Schema exports (for website PropertyTable and documentation tools)\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * CookiePro / OneTrust source settings schema\n */\nexport const SettingsSchema = z\n .object({\n categoryMap: z\n .record(z.string(), z.string())\n .describe(\n \"Map the CMP's consent categories (keys) to walkerOS consent groups (values).\",\n )\n .optional(),\n\n explicitOnly: z\n .boolean()\n .describe(\n 'Only process consent after the user closed the OneTrust banner (IsAlertBoxClosed). Default: true.',\n )\n .optional(),\n\n globalName: z\n .string()\n .describe(\n \"Custom name for the OneTrust global on window. Default: 'OneTrust'.\",\n )\n .optional(),\n })\n .meta({\n id: 'CookieProSettings',\n title: 'Settings',\n description: 'Settings for the CookiePro / OneTrust CMP source.',\n });\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger","import_dev"]}
|
package/dist/dev.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{analyticsOnlyConsent:()=>s,analyticsOnlyMapped:()=>
|
|
1
|
+
var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{analyticsOnlyConsent:()=>s,analyticsOnlyMapped:()=>m,createMockElbFn:()=>y,createMockOneTrustAPI:()=>f,createTrigger:()=>T,customCategoryConsent:()=>c,emptyConsent:()=>l,fullConsent:()=>o,fullConsentMapped:()=>g,marketingOnlyConsent:()=>i,marketingOnlyMapped:()=>u,minimalConsent:()=>a,minimalConsentMapped:()=>C,noopLogger:()=>k,partialConsent:()=>r,partialConsentMapped:()=>p,step:()=>w,trigger:()=>S});var o=",C0001,C0002,C0003,C0004,C0005,",r=",C0001,C0003,",a=",C0001,",s=",C0001,C0002,",i=",C0001,C0004,",l="",c=",C0001,CUSTOM01,CUSTOM02,",g={functional:!0,analytics:!0,marketing:!0},p={functional:!0,analytics:!1,marketing:!1},C={functional:!0,analytics:!1,marketing:!1},m={functional:!0,analytics:!0,marketing:!1},u={functional:!0,analytics:!1,marketing:!0},d=()=>{},y=()=>()=>Promise.resolve({ok:!0}),k={error:d,warn:d,info:d,debug:d,throw:e=>{throw"string"==typeof e?new Error(e):e},json:d,scope:()=>k},f=(e=!1)=>({IsAlertBoxClosed:()=>e}),w={};t(w,{categoryMapOverride:()=>M,fullConsent:()=>O,minimalConsent:()=>b,sdkLoadedDetection:()=>v});var O={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},b={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},M={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},v={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]};import{startFlow as h}from"@walkeros/collector";var T=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{var o;const r=window;if(r.OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:()=>!0},!t){const n=await h({...e,run:null==(o=e.run)||o});t={collector:n.collector,elb:n.elb}}}}},S=(e,t)=>{const n=t.window;"string"==typeof e&&(n.OptanonActiveGroups=e,n.OneTrust={IsAlertBoxClosed:()=>!0})},A={};t(A,{SettingsSchema:()=>I,settings:()=>B});import{zodToSchema as P}from"@walkeros/core/dev";import{z as x}from"@walkeros/core/dev";var I=x.object({categoryMap:x.record(x.string(),x.string()).describe("Map the CMP's consent categories (keys) to walkerOS consent groups (values).").optional(),explicitOnly:x.boolean().describe("Only process consent after the user closed the OneTrust banner (IsAlertBoxClosed). Default: true.").optional(),globalName:x.string().describe("Custom name for the OneTrust global on window. Default: 'OneTrust'.").optional()}).meta({id:"CookieProSettings",title:"Settings",description:"Settings for the CookiePro / OneTrust CMP source."}),B=P(I);export{n as examples,A as schemas};//# sourceMappingURL=dev.mjs.map
|
package/dist/dev.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/examples/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/schemas/index.ts","../src/schemas/settings.ts"],"sourcesContent":["export * from './inputs';\nexport * from './outputs';\nexport * from './env';\nexport * as step from './step';\nexport { createTrigger, trigger } from './trigger';\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\n// Export Zod schemas and types\nexport { SettingsSchema, type Settings } from './settings';\n\n// JSON Schema exports (for website PropertyTable and documentation tools)\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * CookiePro / OneTrust source settings schema\n */\nexport const SettingsSchema = z\n .object({\n categoryMap: z\n .record(z.string(), z.string())\n .describe(\n \"Map the CMP's consent categories (keys) to walkerOS consent groups (values).\",\n )\n .optional(),\n\n explicitOnly: z\n .boolean()\n .describe(\n 'Only process consent after the user closed the OneTrust banner (IsAlertBoxClosed). Default: true.',\n )\n .optional(),\n\n globalName: z\n .string()\n .describe(\n \"Custom name for the OneTrust global on window. Default: 'OneTrust'.\",\n )\n .optional(),\n })\n .meta({\n id: 'CookieProSettings',\n title: 'Settings',\n description: 'Settings for the CookiePro / OneTrust CMP source.',\n });\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger"]}
|
|
1
|
+
{"version":3,"sources":["../src/examples/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/schemas/index.ts","../src/schemas/settings.ts"],"sourcesContent":["export * from './inputs';\nexport * from './outputs';\nexport * from './env';\nexport * as step from './step';\nexport { createTrigger, trigger } from './trigger';\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n title: 'Minimal consent',\n description:\n 'Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.',\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n title: 'SDK loaded detection',\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\n// Export Zod schemas and types\nexport { SettingsSchema, type Settings } from './settings';\n\n// JSON Schema exports (for website PropertyTable and documentation tools)\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\n/**\n * CookiePro / OneTrust source settings schema\n */\nexport const SettingsSchema = z\n .object({\n categoryMap: z\n .record(z.string(), z.string())\n .describe(\n \"Map the CMP's consent categories (keys) to walkerOS consent groups (values).\",\n )\n .optional(),\n\n explicitOnly: z\n .boolean()\n .describe(\n 'Only process consent after the user closed the OneTrust banner (IsAlertBoxClosed). Default: true.',\n )\n .optional(),\n\n globalName: z\n .string()\n .describe(\n \"Custom name for the OneTrust global on window. Default: 'OneTrust'.\",\n )\n .optional(),\n })\n .meta({\n id: 'CookieProSettings',\n title: 'Settings',\n description: 'Settings for the CookiePro / OneTrust CMP source.',\n });\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger"]}
|
package/dist/examples/index.js
CHANGED
|
@@ -110,6 +110,8 @@ __export(step_exports, {
|
|
|
110
110
|
sdkLoadedDetection: () => sdkLoadedDetection
|
|
111
111
|
});
|
|
112
112
|
var fullConsent2 = {
|
|
113
|
+
title: "Full consent",
|
|
114
|
+
description: "A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",
|
|
113
115
|
trigger: { type: "consent" },
|
|
114
116
|
in: ",C0001,C0002,C0003,C0004,C0005,",
|
|
115
117
|
out: [
|
|
@@ -125,6 +127,8 @@ var fullConsent2 = {
|
|
|
125
127
|
]
|
|
126
128
|
};
|
|
127
129
|
var minimalConsent2 = {
|
|
130
|
+
title: "Minimal consent",
|
|
131
|
+
description: "Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",
|
|
128
132
|
trigger: { type: "consent" },
|
|
129
133
|
in: ",C0001,",
|
|
130
134
|
out: [
|
|
@@ -140,6 +144,7 @@ var minimalConsent2 = {
|
|
|
140
144
|
]
|
|
141
145
|
};
|
|
142
146
|
var categoryMapOverride = {
|
|
147
|
+
title: "Category map override",
|
|
143
148
|
description: "Custom categoryMap remaps C0002 from analytics to statistics",
|
|
144
149
|
trigger: { type: "consent" },
|
|
145
150
|
in: ",C0001,C0002,",
|
|
@@ -157,6 +162,7 @@ var categoryMapOverride = {
|
|
|
157
162
|
]
|
|
158
163
|
};
|
|
159
164
|
var sdkLoadedDetection = {
|
|
165
|
+
title: "SDK loaded detection",
|
|
160
166
|
description: "Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",
|
|
161
167
|
trigger: { type: "consent" },
|
|
162
168
|
in: ",C0001,C0003,C0004,",
|
package/dist/examples/index.mjs
CHANGED
|
@@ -73,6 +73,8 @@ __export(step_exports, {
|
|
|
73
73
|
sdkLoadedDetection: () => sdkLoadedDetection
|
|
74
74
|
});
|
|
75
75
|
var fullConsent2 = {
|
|
76
|
+
title: "Full consent",
|
|
77
|
+
description: "A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",
|
|
76
78
|
trigger: { type: "consent" },
|
|
77
79
|
in: ",C0001,C0002,C0003,C0004,C0005,",
|
|
78
80
|
out: [
|
|
@@ -88,6 +90,8 @@ var fullConsent2 = {
|
|
|
88
90
|
]
|
|
89
91
|
};
|
|
90
92
|
var minimalConsent2 = {
|
|
93
|
+
title: "Minimal consent",
|
|
94
|
+
description: "Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",
|
|
91
95
|
trigger: { type: "consent" },
|
|
92
96
|
in: ",C0001,",
|
|
93
97
|
out: [
|
|
@@ -103,6 +107,7 @@ var minimalConsent2 = {
|
|
|
103
107
|
]
|
|
104
108
|
};
|
|
105
109
|
var categoryMapOverride = {
|
|
110
|
+
title: "Category map override",
|
|
106
111
|
description: "Custom categoryMap remaps C0002 from analytics to statistics",
|
|
107
112
|
trigger: { type: "consent" },
|
|
108
113
|
in: ",C0001,C0002,",
|
|
@@ -120,6 +125,7 @@ var categoryMapOverride = {
|
|
|
120
125
|
]
|
|
121
126
|
};
|
|
122
127
|
var sdkLoadedDetection = {
|
|
128
|
+
title: "SDK loaded detection",
|
|
123
129
|
description: "Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",
|
|
124
130
|
trigger: { type: "consent" },
|
|
125
131
|
in: ",C0001,C0003,C0004,",
|
package/dist/index.browser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var SourceCookiePro=(()=>{var e=Object.defineProperty,n=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(n,t)=>{for(var o in t)e(n,o,{get:t[o],enumerable:!0})},s={};r(s,{DEFAULT_CATEGORY_MAP:()=>Ue,SourceCookiePro:()=>i,analyticsOnlyConsent:()=>l,analyticsOnlyMapped:()=>m,createMockElbFn:()=>w,createMockOneTrustAPI:()=>O,createTrigger:()=>Be,customCategoryConsent:()=>g,default:()=>Le,emptyConsent:()=>d,fullConsent:()=>a,fullConsentMapped:()=>p,marketingOnlyConsent:()=>f,marketingOnlyMapped:()=>h,minimalConsent:()=>u,minimalConsentMapped:()=>y,noopLogger:()=>k,partialConsent:()=>c,partialConsentMapped:()=>v,sourceCookiePro:()=>We,step:()=>j,trigger:()=>He});var i={},a=",C0001,C0002,C0003,C0004,C0005,",c=",C0001,C0003,",u=",C0001,",l=",C0001,C0002,",f=",C0001,C0004,",d="",g=",C0001,CUSTOM01,CUSTOM02,",p={functional:!0,analytics:!0,marketing:!0},v={functional:!0,analytics:!1,marketing:!1},y={functional:!0,analytics:!1,marketing:!1},m={functional:!0,analytics:!0,marketing:!1},h={functional:!0,analytics:!1,marketing:!0},b=()=>{},w=()=>()=>Promise.resolve({ok:!0}),k={error:b,warn:b,info:b,debug:b,throw:e=>{throw"string"==typeof e?new Error(e):e},json:b,scope:()=>k},O=(e=!1)=>({IsAlertBoxClosed:()=>e}),j={};r(j,{categoryMapOverride:()=>A,fullConsent:()=>C,minimalConsent:()=>x,sdkLoadedDetection:()=>S});var C={trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},x={trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},A={description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},S={description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},P=Object.defineProperty;((e,n)=>{for(var t in n)P(e,t,{get:n[t],enumerable:!0})})({},{Level:()=>q});var E,q=((E=q||{})[E.ERROR=0]="ERROR",E[E.WARN=1]="WARN",E[E.INFO=2]="INFO",E[E.DEBUG=3]="DEBUG",E);function $(e){return{_meta:{hops:0,path:[e]}}}var M={merge:!0,shallow:!0,extend:!0};function D(e,n={},t={}){t={...M,...t};const o=Object.entries(n).reduce((n,[o,r])=>{const s=e[o];return t.merge&&Array.isArray(s)&&Array.isArray(r)?n[o]=r.reduce((e,n)=>e.includes(n)?e:[...e,n],[...s]):(t.extend||o in e)&&(n[o]=r),n},{});return t.shallow?{...e,...o}:(Object.assign(e,o),e)}function I(e){return Array.isArray(e)}function _(e){return void 0!==e}function T(e){return"function"==typeof e}function R(e){return"object"==typeof e&&null!==e&&!I(e)&&"[object Object]"===Object.prototype.toString.call(e)}function N(e){return"string"==typeof e}function G(e,n=new WeakMap){if("object"!=typeof e||null===e)return e;if(n.has(e))return n.get(e);const t=Object.prototype.toString.call(e);if("[object Object]"===t){const t={};n.set(e,t);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=G(e[o],n));return t}if("[object Array]"===t){const t=[];return n.set(e,t),e.forEach(e=>{t.push(G(e,n))}),t}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){const n=e;return new RegExp(n.source,n.flags)}return e}function B(e,n="",t){const o=n.split(".");let r=e;for(let e=0;e<o.length;e++){const n=o[e];if("*"===n&&I(r)){const n=o.slice(e+1).join("."),s=[];for(const e of r){const o=B(e,n,t);s.push(o)}return s}if(r=r instanceof Object?r[n]:void 0,void 0===r)break}return _(r)?r:t}function H(e,n,t){if(!R(e))return e;const o=G(e),r=n.split(".");let s=o;for(let e=0;e<r.length;e++){const n=r[e];e===r.length-1?s[n]=t:(n in s&&"object"==typeof s[n]&&null!==s[n]||(s[n]={}),s=s[n])}return o}var U={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,version:e=>e.version,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,group:e.group,count:e.count,timing:e.timing})};function W(e,n={},t={}){const o={...n,...t},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(n=>{o[n]&&(r[n]=!0,e&&e[n]&&(s=!0))}),!!s&&r}function L(e=6,n){if(n){const t=n.length;let o="";for(let r=0;r<e;r++)o+=n[Math.random()*t|0];return o}let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function F(e,n=1e3,t=!1){let o,r=null,s=!1;return(...i)=>new Promise(a=>{const c=t&&!s;r&&clearTimeout(r),r=setTimeout(()=>{r=null,t&&!s||(o=e(...i),a(o))},n),c&&(s=!0,o=e(...i),a(o))})}function K(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function z(e,n){let t,o={};return e instanceof Error?(t=e.message,o.error=K(e)):t=e,void 0!==n&&(n instanceof Error?o.error=K(n):"object"==typeof n&&null!==n?(o={...o,...n},"error"in o&&o.error instanceof Error&&(o.error=K(o.error))):o.value=n),{message:t,context:o}}var J=(e,n,t,o)=>{const r=`${q[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(t).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,n,t):i(r,n)};function V(e={}){return Y({level:void 0!==e.level?(n=e.level,"string"==typeof n?q[n]:n):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var n}function Y(e){const{level:n,handler:t,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=n){const n=z(o,s);t?t(e,n.message,n.context,r,J):J(e,n.message,n.context,r)}};return{error:(e,n)=>s(0,e,n),warn:(e,n)=>s(1,e,n),info:(e,n)=>s(2,e,n),debug:(e,n)=>s(3,e,n),throw:(e,n)=>{const o=z(e,n);throw t?t(0,o.message,o.context,r,J):J(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>Y({level:n,handler:t,jsonHandler:o,scope:[...r,e]})}}function Q(e){return function(e){return"boolean"==typeof e}(e)||N(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!_(e)||I(e)&&e.every(Q)||R(e)&&Object.values(e).every(Q)}function X(e){return Q(e)?e:void 0}function Z(e,n,t){return function(...o){try{return e(...o)}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}}function ee(e,n,t){return async function(...o){try{return await e(...o)}catch(e){if(!n)return;return await n(e)}finally{await(null==t?void 0:t())}}}async function ne(e,n={},t={}){var o;if(!_(e))return;const r=R(e)&&e.consent||t.consent||(null==(o=t.collector)?void 0:o.consent),s=I(n)?n:[n];for(const n of s){const o=await ee(te)(e,n,{...t,consent:r});if(_(o))return o}}async function te(e,n,t={}){const{collector:o,consent:r}=t;return(I(n)?n:[n]).reduce(async(n,s)=>{const i=await n;if(i)return i;const a=N(s)?{key:s}:s;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:d,map:g,set:p,validate:v,value:y}=a;if(c&&!await ee(c)(e,s,o))return;if(u&&!W(u,r))return y;let m=_(y)?y:e;if(l&&(m=await ee(l)(e,s,t)),f&&(m=B(e,f,y)),d){const[n,o]=d,r="this"===n?[e]:await ne(e,n,t);I(r)&&(m=(await Promise.all(r.map(e=>ne(e,o,t)))).filter(_))}else g?m=await Object.entries(g).reduce(async(n,[o,r])=>{const s=await n,i=await ne(e,r,t);return _(i)&&(s[o]=i),s},Promise.resolve({})):p&&(m=await Promise.all(p.map(n=>te(e,n,t))));v&&!await ee(v)(m)&&(m=void 0);const h=X(m);return _(h)?h:X(y)},Promise.resolve(void 0))}async function oe(e,n,t){var o;n.policy&&await Promise.all(Object.entries(n.policy).map(async([n,o])=>{const r=await ne(e,o,{collector:t});e=H(e,n,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,n){var t;const[o,r]=(e.name||"").split(" ");if(!n||!o||!r)return{};let s,i="",a=o,c=r;const u=n=>{if(n)return(n=I(n)?n:[n]).find(n=>!n.condition||n.condition(e))};n[a]||(a="*");const l=n[a];return l&&(l[c]||(c="*"),s=u(l[c])),s||(a="*",c="*",s=u(null==(t=n[a])?void 0:t[c])),s&&(i=`${a} ${c}`),{eventMapping:s,mappingKey:i}}(e,n.mapping);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([n,o])=>{const r=await ne(e,o,{collector:t});e=H(e,n,r)}));let i=n.data&&await ne(e,n.data,{collector:t});const a=Boolean(null==r?void 0:r.skip);if(r){if(r.ignore)return{event:e,data:i,mapping:r,mappingKey:s,ignore:!0,skip:a};if(r.name&&(e.name=r.name),r.data){const n=r.data&&await ne(e,r.data,{collector:t});i=R(i)&&R(n)?D(i,n):n}}const c=null!=(o=null==r?void 0:r.include)?o:n.include;if(c&&c.length>0){const n=function(e,n){const t={},o=n.includes("all")?Object.keys(U):n;for(const n of o){const o=U[n];if(!o)continue;const r=o(e);if(R(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===n&&Array.isArray(o)?o[0]:o;t[`${n}_${e}`]=r}}return t}(e,c);Object.keys(n).length>0&&(i=R(i)?D(n,i):null!=i?i:n)}return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,skip:a}}function re(e,n,t){return function(...o){let r;const s="post"+n,i=t["pre"+n],a=t[s];return r=i?i({fn:e},...o):e(...o),a&&(r=a({fn:e,result:r},...o)),r}}function se(e){if("*"===e)return()=>!0;if("and"in e){const n=e.and.map(se);return e=>n.every(n=>n(e))}if("or"in e){const n=e.or.map(se);return e=>n.some(n=>n(e))}return function(e){const{key:n,operator:t,value:o,not:r}=e,s=function(e,n){switch(e){case"eq":return e=>String(null!=e?e:"")===n;case"contains":return e=>String(null!=e?e:"").includes(n);case"prefix":return e=>String(null!=e?e:"").startsWith(n);case"suffix":return e=>String(null!=e?e:"").endsWith(n);case"regex":{const e=new RegExp(n);return n=>e.test(String(null!=n?n:""))}case"gt":{const e=Number(n);return n=>Number(n)>e}case"lt":{const e=Number(n);return n=>Number(n)<e}case"exists":return e=>null!=e}}(t,o);return e=>{const t=B(e,n),o=s(t);return r?!o:o}}(e)}function ie(e){return Array.isArray(e)&&e.length>0&&"object"==typeof e[0]&&null!==e[0]&&"match"in e[0]}function ae(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return ie(e)?{type:"routes",routes:e.map(e=>({match:se(e.match),next:ae(e.next)}))}:{type:"chain",value:e}}}}function ce(e,n={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;for(const t of e.routes)if(t.match(n))return ce(t.next,n)}}function ue(e,n){const t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t}function le(e){var n;return{full:null!=(n=e.full)&&n,storeId:e.store,rules:e.rules.map(e=>({match:se(e.match),key:e.key,ttl:e.ttl,update:e.update}))}}function fe(e,n,t,o){const r=e.rules.find(e=>e.match(t));if(!r)return null;const s=r.key.map(e=>{var n;return String(null!=(n=B(t,e))?n:"")});if(s.every(e=>""===e))return null;const i=`${o}:${s.join(":")}`,a=n.get(i);return void 0!==a?{status:"HIT",key:i,value:a,rule:r}:{status:"MISS",key:i,rule:r}}function de(e,n,t,o){e.set(n,t,1e3*o)}async function ge(e,n,t){if(!n)return e;let o=e;for(const[e,r]of Object.entries(n))o=H(o,e,await ne(t,r));return o}var pe={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function ve(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache}function ye(e){var n;const t={};for(const[o,r]of Object.entries(e)){const e=null==(n=r.config)?void 0:n.next;e&&!ie(e)?t[o]={next:e}:t[o]={}}return t}function me(e,n){const t=e.config||{},o=e[n];return void 0!==o?{config:{...t,[n]:o},chainValue:o}:{config:t,chainValue:void 0}}function he(e,n={}){if(!e)return[];if(Array.isArray(e))return e;const t=[],o=new Set;let r=e;for(;r&&n[r]&&!o.has(r);){o.add(r),t.push(r);const e=n[r].next;if(Array.isArray(e)){t.push(...e);break}r=e}return t}async function be(e,n,t){if(n.init&&!n.config.init){const o=n.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:t,ingest:$(t),config:n.config,env:Oe(n.config.env)};r.debug("init");const i=await re(n.init,"TransformerInit",e.hooks)(s);if(!1===i)return!1;n.config={...i||n.config,env:(null==i?void 0:i.env)||n.config.env,init:!0},r.debug("init done")}return!0}async function we(e,n,t,o,r,s){const i=n.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:t,ingest:r,config:n.config,env:{...Oe(n.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const u=await re(n.push,"TransformerPush",e.hooks)(o,c);return a.debug("push done"),u}async function ke(e,n,t,o,r,s,i){var a,c,u,l,f,d;i&&(null==r?void 0:r._meta)&&(r._meta.chainPath=i);let g=o,p=s;for(const o of t){const s=n[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:p};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await ee(be)(e,s,o))return e.logger.error(`Transformer init failed: ${o}`),{event:null,respond:p};if(i&&void 0!==(null==(c=null==(a=s.config)?void 0:a.chainMocks)?void 0:c[i])){const n=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),g=n;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),g=s.config.mock;continue}if(null==(l=s.config)?void 0:l.disabled)continue;const v=null==(f=s.config)?void 0:f.cache,y=v?le(v):void 0,m=y?ve(y,e):void 0;let h;if(y&&m){const e=fe(y,m,ue(r,g),`t:${o}`);if("HIT"===(null==e?void 0:e.status)&&e.value){if(g=e.value,y.full)return{event:g,respond:p};continue}"MISS"===(null==e?void 0:e.status)&&(h={key:e.key,ttl:e.rule.ttl})}const b=s.config.before;if(b){const t=he("string"==typeof b||Array.isArray(b)&&!ie(b)?b:ce(ae(b),ue(r,g))||void 0,ye(n));if(t.length>0){const o=await ke(e,n,t,g,r,p,i);if(null===o.event)return{event:null,respond:null!=(d=o.respond)?d:p};o.respond&&(p=o.respond),g=Array.isArray(o.event)?o.event[0]:o.event}}const w=await ee(we,n=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:n}),!1))(e,s,o,g,r,p);if(!1===w)return{event:null,respond:p};if(Array.isArray(w)){const s=t.slice(t.indexOf(o)+1),a=await Promise.all(w.map(async t=>{const o=t.event||g,a=r?{...r,_meta:{...r._meta,path:[...r._meta.path]}}:$("unknown");if(t.next){let r=t.next;if(ie(t.next)){r=ce(ae(t.next),ue(a,o))}if(r){const t=he(r,ye(n));if(t.length>0)return ke(e,n,t,o,a,p,i)}return{event:o,respond:p}}return s.length>0?ke(e,n,s,o,a,p,i):{event:o,respond:p}}));let c=p;const u=[];for(const e of a.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const n=e;if(n.respond&&(c=n.respond),null===n.event)continue;Array.isArray(n.event)?u.push(...n.event):u.push(n.event)}else u.push(e);return 0===u.length?{event:null,respond:c}:1===u.length?{event:u[0],respond:c}:{event:u,respond:c}}if(w&&"object"==typeof w){const{event:t,respond:o,next:s}=w;if(o&&(p=o),s){let o=s;if(ie(s)){if(o=ce(ae(s),ue(r,g)),!o){t&&(g=t);continue}}const a=he(o,ye(n));return a.length>0?ke(e,n,a,t||g,r,p,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:p})}t&&(g=t)}if(h&&m&&de(m,h.key,g,h.ttl),(!w||"object"==typeof w&&!w.next)&&s.config.next&&ie(s.config.next)){const t=ce(ae(s.config.next),ue(r,g));if(t){const o=he(t,ye(n));if(o.length>0)return ke(e,n,o,g,r,p,i)}return{event:g,respond:p}}}return{event:g,respond:p}}function Oe(e){return e&&R(e)?e:{}}async function je(e,n,t){var o;const{code:r,config:s={},env:i={},primary:a,next:c,before:u,cache:l}=t;let f,d=$(n);const g=l?le({...l,full:null==(o=l.full)||o}):void 0,p=ae(c),v=Array.isArray(c)&&ie(c)||!p?void 0:he(ce(p),ye(e.transformers)),y=ae(u),m=Array.isArray(u)&&ie(u)||!y?void 0:he(ce(y),ye(e.transformers)),h=e.logger.scope("source").scope(n),b={push:async(t,o={})=>{let r,i=t;const a=null!=m?m:y?he(ce(y,ue(d)),ye(e.transformers)):[];if(a.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await ke(e,e.transformers,a,i,d,f,`source.${n}.before`);if(null===t.event)return{ok:!0};t.respond&&(f=t.respond),i=Array.isArray(t.event)?t.event[0]:t.event}if(g){const t=ve(g,e);if(t){const e=ue(d),o=fe(g,t,e,`s:${n}`);if(o){if("HIT"===o.status&&void 0!==o.value&&g.full){let n=o.value;return o.rule.update&&(n=await ge(n,o.rule.update,{...e,cache:{status:"HIT"}})),null==f||f(n),{ok:!0}}if("MISS"===o.status&&g.full&&f){const n=f,s=o.rule.update,i={...e,cache:{status:"MISS"}},a=o.key,c=o.rule.ttl;f=e=>{de(t,a,e,c),s?r=(async()=>{const t=await ge(e,s,i);n(t)})():n(e)}}"MISS"!==o.status||g.full||de(t,o.key,!0,o.rule.ttl)}}}const c=null!=v?v:p?he(ce(p,ue(d)),ye(e.transformers)):[],u=await e.push(i,{...o,id:n,ingest:d,respond:f,mapping:s,preChain:c});return r&&await r,u},command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:h,...i},w={collector:e,logger:h,id:n,config:s,env:b,setIngest:async t=>{if(!s.ingest)return void(d=$(n));const o=await ne(t,s.ingest,{collector:e}),r=$(n);d={...r,...o,_meta:r._meta}},setRespond:e=>{f=e}},k=await ee(r)(w);if(!k)return;const O=k.type||"unknown",j=e.logger.scope(O).scope(n);return b.logger=j,a&&(k.config={...k.config,primary:a}),k}function Ce(e,n,t,o,r){if(!n.on)return;const s=n.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:t,config:n.config,data:r,env:De(n.env,n.config.env)};Z(n.on)(o,a)}function xe(e,n,t,o){let r;switch(n){case pe.Consent:r=o||e.consent;break;case pe.Session:r=e.session;break;case pe.User:r=o||e.user;break;case pe.Custom:r=o||e.custom;break;case pe.Globals:r=o||e.globals;break;case pe.Config:r=o||e.config;break;case pe.Ready:case pe.Run:default:r=void 0}if(t.length)switch(n){case pe.Consent:!function(e,n,t){const o=t||e.consent;n.forEach(n=>{Object.keys(o).filter(e=>e in n).forEach(t=>{Z(n[t])(e,o)})})}(e,t,o);break;case pe.Ready:case pe.Run:i=t,(s=e).allowed&&i.forEach(e=>{Z(e)(s)});break;case pe.Session:!function(e,n){e.session&&n.forEach(n=>{Z(n)(e,e.session)})}(e,t);break;default:t.forEach(n=>{"function"==typeof n&&Z(n)(e,r)})}var s,i}function Ae(e,n,t,o){if(!e)return[];if(n){const e=ce(n,ue(o));return e?he(e,ye(t)):[]}return he(e,ye(t))}async function Se(e,n,t){const{code:o,config:r={},env:s={},before:i,next:a,cache:c}=n;if(!T(o.push))return $e({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=t||r||{init:!1};let l=i?{...u,before:i}:{...u};a&&(l={...l,next:a}),c&&(l={...l,cache:c});const f={...o,config:l,env:De(o.env,s)};let d=f.config.id;if(!d)do{d=L(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),Pe(e,void 0,{},{[d]:f})}async function Pe(e,n,t={},o){const{allowed:r,consent:s,globals:i,user:a}=e;if(!r)return $e({ok:!1});n&&(e.queue.push(n),e.status.in++),o||(o=e.destinations);const c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var c,u,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let f=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],n&&f.push(G(n));const d=t.ingest?{...t.ingest,_meta:{...t.ingest._meta,path:[...t.ingest._meta.path]}}:$("unknown");if(!f.length&&!(null==(c=r.queueOn)?void 0:c.length))return{id:o,destination:r,skipped:!0};if(!f.length&&(null==(u=r.queueOn)?void 0:u.length)){const n=await ee(Ee)(e,r,o);return{id:o,destination:r,skipped:!n}}const g=[],p=f.filter(e=>{const n=W(r.config.consent,s,e.consent);return!n||(e.consent=n,g.push(e),!1)});if(r.queuePush.push(...p),!g.length)return{id:o,destination:r,queue:f};if(!await ee(Ee)(e,r,o))return{id:o,destination:r,queue:f};let v,y;r.dlq||(r.dlq=[]);const m=r.config.before,h=Ae(m,m&&ie(m)?ae(m):void 0,e.transformers,d),b=r.config.next,w=b&&ie(b)?ae(b):void 0,k=null==(l=r.config)?void 0:l.cache,O=k?le(k):void 0,j=O?ve(O,e):void 0;let C=0;return await Promise.all(g.map(async n=>{let s;if(n.globals=D(i,n.globals),n.user=D(a,n.user),(null==O?void 0:O.full)&&j){const e=ue(d,n),t=fe(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}let c=n,u=t.respond;if(h.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ke(e,e.transformers,h,n,d,t.respond,`destination.${o}.before`);if(null===r.event)return n;r.respond&&(u=r.respond),c=Array.isArray(r.event)?r.event[0]:r.event}if(O&&!O.full&&j){const e=ue(d,c),t=fe(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}const l=Date.now();let f=!1;const g=await ee(qe,n=>{const t=r.type||"unknown";e.logger.scope(t).error("Push failed",{error:n,event:c.name}),v=n,f=!0,r.dlq.push([c,n])})(e,r,o,c,d,u);if(C+=Date.now()-l,s&&j&&void 0===r.config.mock&&de(j,s.key,null==g||g,s.ttl),void 0!==g&&(y=g),!f&&b){void 0!==g&&(d._response=g);const n=Ae(b,w,e.transformers,d);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await ke(e,e.transformers,n,c,d,u,`destination.${o}.next`);t.respond&&(u=t.respond)}}return n})),{id:o,destination:r,error:v,response:y,totalDuration:C}})),u={},l={},f={};for(const n of c){if(n.skipped)continue;const t={type:n.destination.type||"unknown",data:n.response};e.status.destinations[n.id]||(e.status.destinations[n.id]={count:0,failed:0,duration:0});const o=e.status.destinations[n.id],r=Date.now();n.error?(t.error=n.error,f[n.id]=t,o.failed++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.failed++):n.queue&&n.queue.length?l[n.id]=t:(u[n.id]=t,o.count++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.out++)}return $e({event:n,...Object.keys(u).length&&{done:u},...Object.keys(l).length&&{queued:l},...Object.keys(f).length&&{failed:f}})}async function Ee(e,n,t){var o;if(n.init&&!n.config.init){const r=n.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:t,config:n.config,env:De(n.env,n.config.env)};s.debug("init");const a=await re(n.init,"DestinationInit",e.hooks)(i);if(!1===a)return a;if(n.config={...a||n.config,init:!0},null==(o=n.queueOn)?void 0:o.length){const o=n.queueOn;n.queueOn=[];for(const{type:r,data:s}of o)Ce(e,n,t,r,s)}s.debug("init done")}return!0}async function qe(e,n,t,o,r,s){const{config:i}=n,a=await oe(o,i,e);if(a.ignore)return!1;const c=n.type||"unknown",u=e.logger.scope(c),l={collector:e,logger:u,id:t,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...De(n.env,i.env),...s?{respond:s}:{}}};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const f=a.mapping,d=a.mappingKey||"* *";if(!(null==f?void 0:f.batch)||!n.pushBatch||void 0!==i.mock){u.debug("push",{event:a.event.name});const t=await re(n.push,"DestinationPush",e.hooks)(a.event,l);return u.debug("push done"),t}{if(n.batches=n.batches||{},!n.batches[d]){const o={key:d,events:[],data:[]};n.batches[d]={batched:o,batchFn:F(()=>{const o=n.batches[d].batched,a={collector:e,logger:u,id:t,config:i,data:void 0,rule:f,ingest:r,env:{...De(n.env,i.env),...s?{respond:s}:{}}};u.debug("push batch",{events:o.events.length}),re(n.pushBatch,"DestinationPushBatch",e.hooks)(o,a),u.debug("push batch done"),o.events=[],o.data=[]},f.batch)}}const o=n.batches[d];o.batched.events.push(a.event),_(a.data)&&o.batched.data.push(a.data),o.batchFn()}return!0}function $e(e){return{ok:!(null==e?void 0:e.failed),...e}}function Me(e){const{code:n,config:t={},env:o={},cache:r}=e,{config:s}=me(e,"before"),{config:i}=me({...e,config:s},"next"),a={...n.config,...t,...i};r&&(a.cache=r);const c=De(n.env,o);return{...n,config:a,env:c}}function De(e,n){return e||n?n?e&&R(e)&&R(n)?{...e,...n}:n:e:{}}async function Ie(e,n,t){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=t.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(c),new Promise((t,o)=>setTimeout(()=>o(new Error(`${n} '${e}' destroy timed out`)),5e3))])}catch(t){a.error(`${n} '${e}' destroy failed: ${t}`)}});await Promise.allSettled(o)}async function _e(e,n,t,o){let r,s,i=!1;switch(n){case pe.Config:R(t)&&(D(e.config,t,{shallow:!1}),s=t,i=!0);break;case pe.Consent:if(R(t)){const{update:n}=function(e,n){const t={};return Object.entries(n).forEach(([e,n])=>{t[e]=!!n}),e.consent=D(e.consent,t),{update:t}}(e,t);s=n,i=!0}break;case pe.Custom:R(t)&&(e.custom=D(e.custom,t),s=t,i=!0);break;case pe.Destination:R(t)&&("code"in t&&R(t.code)?r=await Se(e,t,o):T(t.push)&&(r=await Se(e,{code:t},o)));break;case pe.Globals:R(t)&&(e.globals=D(e.globals,t),s=t,i=!0);break;case pe.On:N(t)&&await async function(e,n,t){const o=e.on,r=o[n]||[],s=I(t)?t:[t];s.forEach(e=>{r.push(e)}),o[n]=r,xe(e,n,s)}(e,t,o);break;case pe.Ready:i=!0;break;case pe.Run:r=await async function(e,n){return e.allowed=!0,e.count=0,e.group=L(),e.timing=Date.now(),n&&(n.consent&&(e.consent=D(e.consent,n.consent)),n.user&&(e.user=D(e.user,n.user)),n.globals&&(e.globals=D(e.config.globalsStatic||{},n.globals)),n.custom&&(e.custom=D(e.custom,n.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Pe(e)}(e,t),i=!0;break;case pe.Session:i=!0;break;case pe.Shutdown:await async function(e){const n=e.logger;await Ie(e.sources,"source",n),await Ie(e.destinations,"destination",n),await Ie(e.transformers,"transformer",n),await Ie(e.stores,"store",n)}(e);break;case pe.User:R(t)&&(D(e.user,t,{shallow:!1}),s=t,i=!0)}return i&&(await async function(e,n,t,o){let r,s=t||[];switch(t||(s=e.on[n]||[]),n){case pe.Consent:r=o||e.consent;break;case pe.Session:r=e.session;break;case pe.User:r=o||e.user;break;case pe.Custom:r=o||e.custom;break;case pe.Globals:r=o||e.globals;break;case pe.Config:r=o||e.config;break;case pe.Ready:case pe.Run:default:r=void 0}let i=!1;for(const t of Object.values(e.sources))t.on&&!1===await ee(t.on)(n,r)&&(i=!0);return Object.entries(e.destinations).forEach(([t,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:n,data:r});Ce(e,o,t,n,r)}}),(Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0)&&await async function(e,n){var t,o;for(const[o,r]of Object.entries(e.pending.sources)){if(!e.pending.sources[o]||e.sources[o])continue;const s=null==(t=r.config)?void 0:t.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.sources[o];const a=await je(e,o,r);a&&(e.sources[o]=a)}for(const[t,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const s=null==(o=r.config)?void 0:o.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[t];const a=Me(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[t]=a}}(e,n),xe(e,n,s,o),!i}(e,n,void 0,s),r=await Pe(e)),r||$e({ok:!0})}function Te(e,n){if(!n.name)throw new Error("Event name is required");const[t,o]=n.name.split(" ");if(!t||!o)throw new Error("Event name is invalid");++e.count;const{timestamp:r=Date.now(),group:s=e.group,count:i=e.count}=n,{name:a=`${t} ${o}`,data:c={},context:u={},globals:l=e.globals,custom:f={},user:d=e.user,nested:g=[],consent:p=e.consent,id:v=`${r}-${s}-${i}`,trigger:y="",entity:m=t,action:h=o,timing:b=0,version:w={source:e.version,tagging:e.config.tagging||0},source:k={type:"collector",id:"",previous_id:""}}=n;return{name:a,data:c,context:u,globals:l,custom:f,user:d,nested:g,consent:p,id:v,trigger:y,entity:m,action:h,timestamp:r,timing:b,group:s,count:i,version:w,source:k}}async function Re(e){var n,t;const o=D({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},e,{merge:!1,extend:!1}),r=V({level:null==(n=e.logger)?void 0:n.level,handler:null==(t=e.logger)?void 0:t.handler}),s={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},count:0,custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,group:"",hooks:e.hooks||{},logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:e.user||{},version:"3.4.0",sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0};var a,c;i.push=function(e,n){return re(async(t,o={})=>await ee(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:u,preChain:l,include:f,exclude:d}=o;let g=c,p=t;const v=f||d?function(e,n,t){let o=e;return n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>n.includes(e)))),t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!t.includes(e)))),o}(e.destinations,f,d):void 0,y=null!=a?a:$(i||"unknown");if(u){const n=await oe(p,u,e);if(n.ignore)return $e({ok:!0});if(u.consent&&!W(u.consent,e.consent,n.event.consent))return $e({ok:!0});p=n.event}if((null==l?void 0:l.length)&&e.transformers&&Object.keys(e.transformers).length>0){const t=await ke(e,e.transformers,l,p,y,g,i?`source.${i}.next`:void 0);if(null===t.event)return $e({ok:!0});if(t.respond&&(g=t.respond),Array.isArray(t.event)){const o=await Promise.all(t.event.map(async t=>{const o=n(t),r=Te(e,o);return Pe(e,r,{id:i,ingest:y,respond:g},v)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count+=t.event.length,n.lastAt=Date.now(),n.duration+=Date.now()-s}return null!=(r=o[0])?r:$e({ok:!0})}p=t.event}const m=n(p),h=Te(e,m),b=await Pe(e,h,{id:i,ingest:y,respond:g},v);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count++,n.lastAt=Date.now(),n.duration+=Date.now()-s}return b},()=>$e({ok:!1}))(),"Push",e.hooks)}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",id:"",previous_id:""},...e})),i.command=(c=_e,re(async(e,n,t)=>await ee(async()=>await c(a,e,n,t),()=>$e({ok:!1}))(),"Command",(a=i).hooks));const u=e.stores||{};if(i.stores=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i},u=await n(c),l=u.get,f=u.set,d=u.delete;u.get=re(l,"StoreGet",e.hooks),u.set=re(f,"StoreSet",e.hooks),u.delete=re(d,"StoreDelete",e.hooks),t[o]=u}return t}(i,u),function(e,n,t){const o=new Map;for(const[t,r]of Object.entries(e))n[t]&&o.set(r,n[t]);if(0!==o.size)for(const e of[t.transformers,t.destinations,t.sources])if(e)for(const n of Object.values(e))r(n.env);function r(e){if(e)for(const[n,t]of Object.entries(e))if("object"==typeof t&&null!==t){const r=o.get(t);r&&(e[n]=r)}}}(u,i.stores,e),!i.stores.__cache){const e=new Map;i.stores.__cache={type:"memory",config:{},get:n=>{const t=e.get(n);if(t){if(!(t.expires&&Date.now()>t.expires))return t.value;e.delete(n)}},set:(n,t,o)=>{e.set(n,{value:t,expires:o?Date.now()+o:void 0})},delete:n=>{e.delete(n)}}}return i.destinations=await async function(e,n={}){var t,o;const r={};for(const[s,i]of Object.entries(n))(null==(o=null==(t=i.config)?void 0:t.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Me(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,env:s={}}=r,{config:i}=me(r,"before"),{config:a}=me({...r,config:i},"next"),c=Object.keys(s).length>0?{...a,env:s}:a,{cache:u}=r,l=u?{...c,cache:u}:c,f=e.logger.scope("transformer").scope(o),d={collector:e,logger:f,id:o,ingest:$(o),config:l,env:s},g=await n(d);t[o]=g}return t}(i,e.transformers||{}),i}async function Ne(e){e=e||{};const n=await Re(e),t=(o=n,{type:"elb",config:{},push:async(e,n,t,r,s,i)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,n,t)}let a;if("string"==typeof e)a={name:e},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!e||"object"!=typeof e)return $e({ok:!1});a=e,n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return r&&"object"==typeof r&&(a.context=r),s&&Array.isArray(s)&&(a.nested=s),i&&"object"==typeof i&&(a.custom=i),o.push(a)}});var o;n.sources.elb=t;const r=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{config:n={}}=r;if(n.require&&n.require.length>0){e.pending.sources[o]=r;continue}const s=await je(e,o,r);s&&(t[o]=s)}return t}(n,e.sources||{});Object.assign(n.sources,r);const{consent:s,user:i,globals:a,custom:c}=e;s&&await n.command("consent",s),i&&await n.command("user",i),a&&Object.assign(n.globals,a),c&&Object.assign(n.custom,c),n.config.run&&await n.command("run");let u=t.push;const l=Object.values(n.sources).filter(e=>"elb"!==e.type),f=l.find(e=>e.config.primary);return f?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u}}var Ge,Be=async e=>{let n;return{get flow(){return n},trigger:()=>async t=>{var o;const r=window;if(r.OptanonActiveGroups=t,r.OneTrust={IsAlertBoxClosed:()=>!0},!n){const t=await Ne({...e,run:null==(o=e.run)||o});n={collector:t.collector,elb:t.elb}}}}},He=(e,n)=>{const t=n.window;"string"==typeof e&&(t.OptanonActiveGroups=e,t.OneTrust={IsAlertBoxClosed:()=>!0})},Ue={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},We=async e=>{var n,t,o,r,s,i,a,c;const{config:u,env:l}=e,{elb:f}=l,d=null!=(n=l.window)?n:void 0!==globalThis.window?globalThis.window:void 0,g={...Ue,...null!=(o=null==(t=null==u?void 0:u.settings)?void 0:t.categoryMap)?o:{}},p={};Object.entries(g).forEach(([e,n])=>{p[e.toLowerCase()]=n});const v={categoryMap:g,explicitOnly:null==(s=null==(r=null==u?void 0:u.settings)?void 0:r.explicitOnly)||s,globalName:null!=(a=null==(i=null==u?void 0:u.settings)?void 0:i.globalName)?a:"OneTrust"},y={settings:v};let m,h,b=!1;if(d){const e=null!=(c=v.globalName)?c:"OneTrust",n=new Set(Object.values(p)),t=e=>{const t={};return n.forEach(e=>{t[e]=!1}),e.split(",").filter(e=>e.length>0).forEach(e=>{const n=p[e.toLowerCase()];n&&(t[n]=!0)}),t},o=()=>{const n=d.OptanonActiveGroups;if(null==n)return;if(v.explicitOnly){const n=d[e];if((null==n?void 0:n.IsAlertBoxClosed)&&!n.IsAlertBoxClosed())return}const o=t(n);Object.keys(o).length>0&&f("walker consent",o)},r=d[e];r&&void 0!==d.OptanonActiveGroups&&o(),r||(h=d.OptanonWrapper,b=!0,d.OptanonWrapper=()=>{h&&h(),o(),d.OptanonWrapper=h,b=!1}),m=()=>{o()},d.addEventListener("OneTrustGroupsUpdated",m)}return{type:"cookiepro",config:y,push:f,destroy:async e=>{d&&m&&d.removeEventListener("OneTrustGroupsUpdated",m),d&&b&&(d.OptanonWrapper=h)}}},Le=We;return Ge=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of t(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),Ge)})();
|
|
1
|
+
"use strict";var SourceCookiePro=(()=>{var e=Object.defineProperty,n=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(n,t)=>{for(var o in t)e(n,o,{get:t[o],enumerable:!0})},s={};r(s,{DEFAULT_CATEGORY_MAP:()=>Ue,SourceCookiePro:()=>i,analyticsOnlyConsent:()=>l,analyticsOnlyMapped:()=>m,createMockElbFn:()=>w,createMockOneTrustAPI:()=>O,createTrigger:()=>Be,customCategoryConsent:()=>d,default:()=>Le,emptyConsent:()=>g,fullConsent:()=>a,fullConsentMapped:()=>p,marketingOnlyConsent:()=>f,marketingOnlyMapped:()=>h,minimalConsent:()=>u,minimalConsentMapped:()=>y,noopLogger:()=>k,partialConsent:()=>c,partialConsentMapped:()=>v,sourceCookiePro:()=>We,step:()=>j,trigger:()=>He});var i={},a=",C0001,C0002,C0003,C0004,C0005,",c=",C0001,C0003,",u=",C0001,",l=",C0001,C0002,",f=",C0001,C0004,",g="",d=",C0001,CUSTOM01,CUSTOM02,",p={functional:!0,analytics:!0,marketing:!0},v={functional:!0,analytics:!1,marketing:!1},y={functional:!0,analytics:!1,marketing:!1},m={functional:!0,analytics:!0,marketing:!1},h={functional:!0,analytics:!1,marketing:!0},b=()=>{},w=()=>()=>Promise.resolve({ok:!0}),k={error:b,warn:b,info:b,debug:b,throw:e=>{throw"string"==typeof e?new Error(e):e},json:b,scope:()=>k},O=(e=!1)=>({IsAlertBoxClosed:()=>e}),j={};r(j,{categoryMapOverride:()=>A,fullConsent:()=>C,minimalConsent:()=>x,sdkLoadedDetection:()=>S});var C={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},x={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},A={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},S={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},P=Object.defineProperty;((e,n)=>{for(var t in n)P(e,t,{get:n[t],enumerable:!0})})({},{Level:()=>$});var E,$=((E=$||{})[E.ERROR=0]="ERROR",E[E.WARN=1]="WARN",E[E.INFO=2]="INFO",E[E.DEBUG=3]="DEBUG",E);function q(e){return{_meta:{hops:0,path:[e]}}}var M={merge:!0,shallow:!0,extend:!0};function D(e,n={},t={}){t={...M,...t};const o=Object.entries(n).reduce((n,[o,r])=>{const s=e[o];return t.merge&&Array.isArray(s)&&Array.isArray(r)?n[o]=r.reduce((e,n)=>e.includes(n)?e:[...e,n],[...s]):(t.extend||o in e)&&(n[o]=r),n},{});return t.shallow?{...e,...o}:(Object.assign(e,o),e)}function I(e){return Array.isArray(e)}function _(e){return void 0!==e}function T(e){return"function"==typeof e}function R(e){return"object"==typeof e&&null!==e&&!I(e)&&"[object Object]"===Object.prototype.toString.call(e)}function N(e){return"string"==typeof e}function G(e,n=new WeakMap){if("object"!=typeof e||null===e)return e;if(n.has(e))return n.get(e);const t=Object.prototype.toString.call(e);if("[object Object]"===t){const t={};n.set(e,t);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=G(e[o],n));return t}if("[object Array]"===t){const t=[];return n.set(e,t),e.forEach(e=>{t.push(G(e,n))}),t}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){const n=e;return new RegExp(n.source,n.flags)}return e}function B(e,n="",t){const o=n.split(".");let r=e;for(let e=0;e<o.length;e++){const n=o[e];if("*"===n&&I(r)){const n=o.slice(e+1).join("."),s=[];for(const e of r){const o=B(e,n,t);s.push(o)}return s}if(r=r instanceof Object?r[n]:void 0,void 0===r)break}return _(r)?r:t}function H(e,n,t){if(!R(e))return e;const o=G(e),r=n.split(".");let s=o;for(let e=0;e<r.length;e++){const n=r[e];e===r.length-1?s[n]=t:(n in s&&"object"==typeof s[n]&&null!==s[n]||(s[n]={}),s=s[n])}return o}var U={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,version:e=>e.version,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,group:e.group,count:e.count,timing:e.timing})};function W(e,n={},t={}){const o={...n,...t},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(n=>{o[n]&&(r[n]=!0,e&&e[n]&&(s=!0))}),!!s&&r}function L(e=6,n){if(n){const t=n.length;let o="";for(let r=0;r<e;r++)o+=n[Math.random()*t|0];return o}let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function F(e,n=1e3,t=!1){let o,r=null,s=!1;return(...i)=>new Promise(a=>{const c=t&&!s;r&&clearTimeout(r),r=setTimeout(()=>{r=null,t&&!s||(o=e(...i),a(o))},n),c&&(s=!0,o=e(...i),a(o))})}function K(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function z(e,n){let t,o={};return e instanceof Error?(t=e.message,o.error=K(e)):t=e,void 0!==n&&(n instanceof Error?o.error=K(n):"object"==typeof n&&null!==n?(o={...o,...n},"error"in o&&o.error instanceof Error&&(o.error=K(o.error))):o.value=n),{message:t,context:o}}var J=(e,n,t,o)=>{const r=`${$[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(t).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,n,t):i(r,n)};function V(e={}){return Y({level:void 0!==e.level?(n=e.level,"string"==typeof n?$[n]:n):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var n}function Y(e){const{level:n,handler:t,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=n){const n=z(o,s);t?t(e,n.message,n.context,r,J):J(e,n.message,n.context,r)}};return{error:(e,n)=>s(0,e,n),warn:(e,n)=>s(1,e,n),info:(e,n)=>s(2,e,n),debug:(e,n)=>s(3,e,n),throw:(e,n)=>{const o=z(e,n);throw t?t(0,o.message,o.context,r,J):J(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>Y({level:n,handler:t,jsonHandler:o,scope:[...r,e]})}}function Q(e){return function(e){return"boolean"==typeof e}(e)||N(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!_(e)||I(e)&&e.every(Q)||R(e)&&Object.values(e).every(Q)}function X(e){return Q(e)?e:void 0}function Z(e,n,t){return function(...o){try{return e(...o)}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}}function ee(e,n,t){return async function(...o){try{return await e(...o)}catch(e){if(!n)return;return await n(e)}finally{await(null==t?void 0:t())}}}async function ne(e,n={},t={}){var o;if(!_(e))return;const r=R(e)&&e.consent||t.consent||(null==(o=t.collector)?void 0:o.consent),s=I(n)?n:[n];for(const n of s){const o=await ee(te)(e,n,{...t,consent:r});if(_(o))return o}}async function te(e,n,t={}){const{collector:o,consent:r}=t;return(I(n)?n:[n]).reduce(async(n,s)=>{const i=await n;if(i)return i;const a=N(s)?{key:s}:s;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:g,map:d,set:p,validate:v,value:y}=a;if(c&&!await ee(c)(e,s,o))return;if(u&&!W(u,r))return y;let m=_(y)?y:e;if(l&&(m=await ee(l)(e,s,t)),f&&(m=B(e,f,y)),g){const[n,o]=g,r="this"===n?[e]:await ne(e,n,t);I(r)&&(m=(await Promise.all(r.map(e=>ne(e,o,t)))).filter(_))}else d?m=await Object.entries(d).reduce(async(n,[o,r])=>{const s=await n,i=await ne(e,r,t);return _(i)&&(s[o]=i),s},Promise.resolve({})):p&&(m=await Promise.all(p.map(n=>te(e,n,t))));v&&!await ee(v)(m)&&(m=void 0);const h=X(m);return _(h)?h:X(y)},Promise.resolve(void 0))}async function oe(e,n,t){var o;n.policy&&await Promise.all(Object.entries(n.policy).map(async([n,o])=>{const r=await ne(e,o,{collector:t});e=H(e,n,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,n){var t;const[o,r]=(e.name||"").split(" ");if(!n||!o||!r)return{};let s,i="",a=o,c=r;const u=n=>{if(n)return(n=I(n)?n:[n]).find(n=>!n.condition||n.condition(e))};n[a]||(a="*");const l=n[a];return l&&(l[c]||(c="*"),s=u(l[c])),s||(a="*",c="*",s=u(null==(t=n[a])?void 0:t[c])),s&&(i=`${a} ${c}`),{eventMapping:s,mappingKey:i}}(e,n.mapping);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([n,o])=>{const r=await ne(e,o,{collector:t});e=H(e,n,r)}));let i=n.data&&await ne(e,n.data,{collector:t});const a=Boolean(null==r?void 0:r.skip);if(r){if(r.ignore)return{event:e,data:i,mapping:r,mappingKey:s,ignore:!0,skip:a};if(r.name&&(e.name=r.name),r.data){const n=r.data&&await ne(e,r.data,{collector:t});i=R(i)&&R(n)?D(i,n):n}}const c=null!=(o=null==r?void 0:r.include)?o:n.include;if(c&&c.length>0){const n=function(e,n){const t={},o=n.includes("all")?Object.keys(U):n;for(const n of o){const o=U[n];if(!o)continue;const r=o(e);if(R(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===n&&Array.isArray(o)?o[0]:o;t[`${n}_${e}`]=r}}return t}(e,c);Object.keys(n).length>0&&(i=R(i)?D(n,i):null!=i?i:n)}return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,skip:a}}function re(e,n,t,o){return function(...r){let s;const i="pre"+n,a="post"+n,c=t[i],u=t[a],l=(e,n)=>{o?o.warn(e,{error:n}):console.warn(e,n)};if(c)try{s=c({fn:e},...r)}catch(n){l(`Hook ${String(i)} failed, falling back to original function`,n),s=e(...r)}else s=e(...r);if(u)try{s=u({fn:e,result:s},...r)}catch(e){l(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function se(e){if("*"===e)return()=>!0;if("and"in e){const n=e.and.map(se);return e=>n.every(n=>n(e))}if("or"in e){const n=e.or.map(se);return e=>n.some(n=>n(e))}return function(e){const{key:n,operator:t,value:o,not:r}=e,s=function(e,n){switch(e){case"eq":return e=>String(null!=e?e:"")===n;case"contains":return e=>String(null!=e?e:"").includes(n);case"prefix":return e=>String(null!=e?e:"").startsWith(n);case"suffix":return e=>String(null!=e?e:"").endsWith(n);case"regex":{const e=new RegExp(n);return n=>e.test(String(null!=n?n:""))}case"gt":{const e=Number(n);return n=>Number(n)>e}case"lt":{const e=Number(n);return n=>Number(n)<e}case"exists":return e=>null!=e}}(t,o);return e=>{const t=B(e,n),o=s(t);return r?!o:o}}(e)}function ie(e){return Array.isArray(e)&&e.length>0&&"object"==typeof e[0]&&null!==e[0]&&"match"in e[0]}function ae(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return ie(e)?{type:"routes",routes:e.map(e=>({match:se(e.match),next:ae(e.next)}))}:{type:"chain",value:e}}}}function ce(e,n={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;for(const t of e.routes)if(t.match(n))return ce(t.next,n)}}function ue(e,n){const t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t}function le(e){var n;return{full:null!=(n=e.full)&&n,storeId:e.store,rules:e.rules.map(e=>({match:se(e.match),key:e.key,ttl:e.ttl,update:e.update}))}}function fe(e,n,t,o){const r=e.rules.find(e=>e.match(t));if(!r)return null;const s=r.key.map(e=>{var n;return String(null!=(n=B(t,e))?n:"")});if(s.every(e=>""===e))return null;const i=`${o}:${s.join(":")}`,a=n.get(i);return void 0!==a?{status:"HIT",key:i,value:a,rule:r}:{status:"MISS",key:i,rule:r}}function ge(e,n,t,o){e.set(n,t,1e3*o)}async function de(e,n,t){if(!n)return e;let o=e;for(const[e,r]of Object.entries(n))o=H(o,e,await ne(t,r));return o}var pe={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function ve(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache}function ye(e){var n;const t={};for(const[o,r]of Object.entries(e)){const e=null==(n=r.config)?void 0:n.next;e&&!ie(e)?t[o]={next:e}:t[o]={}}return t}function me(e,n){const t=e.config||{},o=e[n];return void 0!==o?{config:{...t,[n]:o},chainValue:o}:{config:t,chainValue:void 0}}function he(e,n={}){if(!e)return[];if(Array.isArray(e))return e;const t=[],o=new Set;let r=e;for(;r&&n[r]&&!o.has(r);){o.add(r),t.push(r);const e=n[r].next;if(Array.isArray(e)){t.push(...e);break}r=e}return t}async function be(e,n,t){if(n.init&&!n.config.init){const o=n.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:t,ingest:q(t),config:n.config,env:Oe(n.config.env)};r.debug("init");const i=await re(n.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;n.config={...i||n.config,env:(null==i?void 0:i.env)||n.config.env,init:!0},r.debug("init done")}return!0}async function we(e,n,t,o,r,s){const i=n.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:t,ingest:r,config:n.config,env:{...Oe(n.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const u=await re(n.push,"TransformerPush",e.hooks,e.logger)(o,c);return a.debug("push done"),u}async function ke(e,n,t,o,r,s,i){var a,c,u,l,f,g;i&&(null==r?void 0:r._meta)&&(r._meta.chainPath=i);let d=o,p=s;for(const o of t){const s=n[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:p};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await ee(be)(e,s,o))return e.logger.error(`Transformer init failed: ${o}`),{event:null,respond:p};if(i&&void 0!==(null==(c=null==(a=s.config)?void 0:a.chainMocks)?void 0:c[i])){const n=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),d=n;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),d=s.config.mock;continue}if(null==(l=s.config)?void 0:l.disabled)continue;const v=null==(f=s.config)?void 0:f.cache,y=v?le(v):void 0,m=y?ve(y,e):void 0;let h;if(y&&m){const e=fe(y,m,ue(r,d),`t:${o}`);if("HIT"===(null==e?void 0:e.status)&&e.value){if(d=e.value,y.full)return{event:d,respond:p};continue}"MISS"===(null==e?void 0:e.status)&&(h={key:e.key,ttl:e.rule.ttl})}const b=s.config.before;if(b){const t=he("string"==typeof b||Array.isArray(b)&&!ie(b)?b:ce(ae(b),ue(r,d))||void 0,ye(n));if(t.length>0){const o=await ke(e,n,t,d,r,p,i);if(null===o.event)return{event:null,respond:null!=(g=o.respond)?g:p};o.respond&&(p=o.respond),d=Array.isArray(o.event)?o.event[0]:o.event}}const w=await ee(we,n=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:n}),!1))(e,s,o,d,r,p);if(!1===w)return{event:null,respond:p};if(Array.isArray(w)){const s=t.slice(t.indexOf(o)+1),a=await Promise.all(w.map(async t=>{const o=t.event||d,a=r?{...r,_meta:{...r._meta,path:[...r._meta.path]}}:q("unknown");if(t.next){let r=t.next;if(ie(t.next)){r=ce(ae(t.next),ue(a,o))}if(r){const t=he(r,ye(n));if(t.length>0)return ke(e,n,t,o,a,p,i)}return{event:o,respond:p}}return s.length>0?ke(e,n,s,o,a,p,i):{event:o,respond:p}}));let c=p;const u=[];for(const e of a.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const n=e;if(n.respond&&(c=n.respond),null===n.event)continue;Array.isArray(n.event)?u.push(...n.event):u.push(n.event)}else u.push(e);return 0===u.length?{event:null,respond:c}:1===u.length?{event:u[0],respond:c}:{event:u,respond:c}}if(w&&"object"==typeof w){const{event:t,respond:o,next:s}=w;if(o&&(p=o),s){let o=s;if(ie(s)){if(o=ce(ae(s),ue(r,d)),!o){t&&(d=t);continue}}const a=he(o,ye(n));return a.length>0?ke(e,n,a,t||d,r,p,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:p})}t&&(d=t)}if(h&&m&&ge(m,h.key,d,h.ttl),(!w||"object"==typeof w&&!w.next)&&s.config.next&&ie(s.config.next)){const t=ce(ae(s.config.next),ue(r,d));if(t){const o=he(t,ye(n));if(o.length>0)return ke(e,n,o,d,r,p,i)}return{event:d,respond:p}}}return{event:d,respond:p}}function Oe(e){return e&&R(e)?e:{}}async function je(e,n,t){var o;const{code:r,config:s={},env:i={},primary:a,next:c,before:u,cache:l}=t;let f,g=q(n);const d=l?le({...l,full:null==(o=l.full)||o}):void 0,p=ae(c),v=Array.isArray(c)&&ie(c)||!p?void 0:he(ce(p),ye(e.transformers)),y=ae(u),m=Array.isArray(u)&&ie(u)||!y?void 0:he(ce(y),ye(e.transformers)),h=e.logger.scope("source").scope(n),b={push:async(t,o={})=>{let r,i=t;const a=null!=m?m:y?he(ce(y,ue(g)),ye(e.transformers)):[];if(a.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await ke(e,e.transformers,a,i,g,f,`source.${n}.before`);if(null===t.event)return{ok:!0};t.respond&&(f=t.respond),i=Array.isArray(t.event)?t.event[0]:t.event}if(d){const t=ve(d,e);if(t){const e=ue(g),o=fe(d,t,e,`s:${n}`);if(o){if("HIT"===o.status&&void 0!==o.value&&d.full){let n=o.value;return o.rule.update&&(n=await de(n,o.rule.update,{...e,cache:{status:"HIT"}})),null==f||f(n),{ok:!0}}if("MISS"===o.status&&d.full&&f){const n=f,s=o.rule.update,i={...e,cache:{status:"MISS"}},a=o.key,c=o.rule.ttl;f=e=>{ge(t,a,e,c),s?r=(async()=>{const t=await de(e,s,i);n(t)})():n(e)}}"MISS"!==o.status||d.full||ge(t,o.key,!0,o.rule.ttl)}}}const c=null!=v?v:p?he(ce(p,ue(g)),ye(e.transformers)):[],u=await e.push(i,{...o,id:n,ingest:g,respond:f,mapping:s,preChain:c});return r&&await r,u},command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:h,...i},w={collector:e,logger:h,id:n,config:s,env:b,setIngest:async t=>{if(!s.ingest)return void(g=q(n));const o=await ne(t,s.ingest,{collector:e}),r=q(n);g={...r,...o,_meta:r._meta}},setRespond:e=>{f=e}},k=await ee(r)(w);if(!k)return;const O=k.type||"unknown",j=e.logger.scope(O).scope(n);return b.logger=j,a&&(k.config={...k.config,primary:a}),k}function Ce(e,n,t,o,r){if(!n.on)return;const s=n.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:t,config:n.config,data:r,env:De(n.env,n.config.env)};Z(n.on)(o,a)}function xe(e,n,t,o){let r;switch(n){case pe.Consent:r=o||e.consent;break;case pe.Session:r=e.session;break;case pe.User:r=o||e.user;break;case pe.Custom:r=o||e.custom;break;case pe.Globals:r=o||e.globals;break;case pe.Config:r=o||e.config;break;case pe.Ready:case pe.Run:default:r=void 0}if(t.length)switch(n){case pe.Consent:!function(e,n,t){const o=t||e.consent;n.forEach(n=>{Object.keys(o).filter(e=>e in n).forEach(t=>{Z(n[t])(e,o)})})}(e,t,o);break;case pe.Ready:case pe.Run:i=t,(s=e).allowed&&i.forEach(e=>{Z(e)(s)});break;case pe.Session:!function(e,n){e.session&&n.forEach(n=>{Z(n)(e,e.session)})}(e,t);break;default:t.forEach(n=>{"function"==typeof n&&Z(n)(e,r)})}var s,i}function Ae(e,n,t,o){if(!e)return[];if(n){const e=ce(n,ue(o));return e?he(e,ye(t)):[]}return he(e,ye(t))}async function Se(e,n,t){const{code:o,config:r={},env:s={},before:i,next:a,cache:c}=n;if(!T(o.push))return qe({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=t||r||{init:!1};let l=i?{...u,before:i}:{...u};a&&(l={...l,next:a}),c&&(l={...l,cache:c});const f={...o,config:l,env:De(o.env,s)};let g=f.config.id;if(!g)do{g=L(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[g]);return e.destinations[g]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),Pe(e,void 0,{},{[g]:f})}async function Pe(e,n,t={},o){const{allowed:r,consent:s,globals:i,user:a}=e;if(!r)return qe({ok:!1});n&&(e.queue.push(n),e.status.in++),o||(o=e.destinations);const c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var c,u,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let f=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],n&&f.push(G(n));const g=t.ingest?{...t.ingest,_meta:{...t.ingest._meta,path:[...t.ingest._meta.path]}}:q("unknown");if(!f.length&&!(null==(c=r.queueOn)?void 0:c.length))return{id:o,destination:r,skipped:!0};if(!f.length&&(null==(u=r.queueOn)?void 0:u.length)){const n=await ee(Ee)(e,r,o);return{id:o,destination:r,skipped:!n}}const d=[],p=f.filter(e=>{const n=W(r.config.consent,s,e.consent);return!n||(e.consent=n,d.push(e),!1)});if(r.queuePush.push(...p),!d.length)return{id:o,destination:r,queue:f};if(!await ee(Ee)(e,r,o))return{id:o,destination:r,queue:f};let v,y;r.dlq||(r.dlq=[]);const m=r.config.before,h=Ae(m,m&&ie(m)?ae(m):void 0,e.transformers,g),b=r.config.next,w=b&&ie(b)?ae(b):void 0,k=null==(l=r.config)?void 0:l.cache,O=k?le(k):void 0,j=O?ve(O,e):void 0;let C=0;return await Promise.all(d.map(async n=>{let s;if(n.globals=D(i,n.globals),n.user=D(a,n.user),(null==O?void 0:O.full)&&j){const e=ue(g,n),t=fe(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}let c=n,u=t.respond;if(h.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ke(e,e.transformers,h,n,g,t.respond,`destination.${o}.before`);if(null===r.event)return n;r.respond&&(u=r.respond),c=Array.isArray(r.event)?r.event[0]:r.event}if(O&&!O.full&&j){const e=ue(g,c),t=fe(O,j,e,`d:${o}`);if("HIT"===(null==t?void 0:t.status))return n;"MISS"===(null==t?void 0:t.status)&&(s={key:t.key,ttl:t.rule.ttl})}const l=Date.now();let f=!1;const d=await ee($e,n=>{const t=r.type||"unknown";e.logger.scope(t).error("Push failed",{error:n,event:c.name}),v=n,f=!0,r.dlq.push([c,n])})(e,r,o,c,g,u);if(C+=Date.now()-l,s&&j&&void 0===r.config.mock&&ge(j,s.key,null==d||d,s.ttl),void 0!==d&&(y=d),!f&&b){void 0!==d&&(g._response=d);const n=Ae(b,w,e.transformers,g);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const t=await ke(e,e.transformers,n,c,g,u,`destination.${o}.next`);t.respond&&(u=t.respond)}}return n})),{id:o,destination:r,error:v,response:y,totalDuration:C}})),u={},l={},f={};for(const n of c){if(n.skipped)continue;const t={type:n.destination.type||"unknown",data:n.response};e.status.destinations[n.id]||(e.status.destinations[n.id]={count:0,failed:0,duration:0});const o=e.status.destinations[n.id],r=Date.now();n.error?(t.error=n.error,f[n.id]=t,o.failed++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.failed++):n.queue&&n.queue.length?l[n.id]=t:(u[n.id]=t,o.count++,o.lastAt=r,o.duration+=n.totalDuration||0,e.status.out++)}return qe({event:n,...Object.keys(u).length&&{done:u},...Object.keys(l).length&&{queued:l},...Object.keys(f).length&&{failed:f}})}async function Ee(e,n,t){var o;if(n.init&&!n.config.init){const r=n.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:t,config:n.config,env:De(n.env,n.config.env)};s.debug("init");const a=await re(n.init,"DestinationInit",e.hooks,e.logger)(i);if(!1===a)return a;if(n.config={...a||n.config,init:!0},null==(o=n.queueOn)?void 0:o.length){const o=n.queueOn;n.queueOn=[];for(const{type:r,data:s}of o)Ce(e,n,t,r,s)}s.debug("init done")}return!0}async function $e(e,n,t,o,r,s){const{config:i}=n,a=await oe(o,i,e);if(a.ignore)return!1;const c=n.type||"unknown",u=e.logger.scope(c),l={collector:e,logger:u,id:t,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...De(n.env,i.env),...s?{respond:s}:{}}};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const f=a.mapping,g=a.mappingKey||"* *";if(!(null==f?void 0:f.batch)||!n.pushBatch||void 0!==i.mock){u.debug("push",{event:a.event.name});const t=await re(n.push,"DestinationPush",e.hooks,e.logger)(a.event,l);return u.debug("push done"),t}{if(n.batches=n.batches||{},!n.batches[g]){const o={key:g,events:[],data:[]};n.batches[g]={batched:o,batchFn:F(()=>{const o=n.batches[g].batched,a={collector:e,logger:u,id:t,config:i,data:void 0,rule:f,ingest:r,env:{...De(n.env,i.env),...s?{respond:s}:{}}};u.debug("push batch",{events:o.events.length}),re(n.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,a),u.debug("push batch done"),o.events=[],o.data=[]},f.batch)}}const o=n.batches[g];o.batched.events.push(a.event),_(a.data)&&o.batched.data.push(a.data),o.batchFn()}return!0}function qe(e){return{ok:!(null==e?void 0:e.failed),...e}}function Me(e){const{code:n,config:t={},env:o={},cache:r}=e,{config:s}=me(e,"before"),{config:i}=me({...e,config:s},"next"),a={...n.config,...t,...i};r&&(a.cache=r);const c=De(n.env,o);return{...n,config:a,env:c}}function De(e,n){return e||n?n?e&&R(e)&&R(n)?{...e,...n}:n:e:{}}async function Ie(e,n,t){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=t.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(c),new Promise((t,o)=>setTimeout(()=>o(new Error(`${n} '${e}' destroy timed out`)),5e3))])}catch(t){a.error(`${n} '${e}' destroy failed: ${t}`)}});await Promise.allSettled(o)}async function _e(e,n,t,o){let r,s,i=!1;switch(n){case pe.Config:R(t)&&(D(e.config,t,{shallow:!1}),s=t,i=!0);break;case pe.Consent:if(R(t)){const{update:n}=function(e,n){const t={};return Object.entries(n).forEach(([e,n])=>{t[e]=!!n}),e.consent=D(e.consent,t),{update:t}}(e,t);s=n,i=!0}break;case pe.Custom:R(t)&&(e.custom=D(e.custom,t),s=t,i=!0);break;case pe.Destination:R(t)&&("code"in t&&R(t.code)?r=await Se(e,t,o):T(t.push)&&(r=await Se(e,{code:t},o)));break;case pe.Globals:R(t)&&(e.globals=D(e.globals,t),s=t,i=!0);break;case pe.On:N(t)&&await async function(e,n,t){const o=e.on,r=o[n]||[],s=I(t)?t:[t];s.forEach(e=>{r.push(e)}),o[n]=r,xe(e,n,s)}(e,t,o);break;case pe.Ready:i=!0;break;case pe.Run:r=await async function(e,n){return e.allowed=!0,e.count=0,e.group=L(),e.timing=Date.now(),n&&(n.consent&&(e.consent=D(e.consent,n.consent)),n.user&&(e.user=D(e.user,n.user)),n.globals&&(e.globals=D(e.config.globalsStatic||{},n.globals)),n.custom&&(e.custom=D(e.custom,n.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Pe(e)}(e,t),i=!0;break;case pe.Session:i=!0;break;case pe.Shutdown:await async function(e){const n=e.logger;await Ie(e.sources,"source",n),await Ie(e.destinations,"destination",n),await Ie(e.transformers,"transformer",n),await Ie(e.stores,"store",n)}(e);break;case pe.User:R(t)&&(D(e.user,t,{shallow:!1}),s=t,i=!0)}return i&&(await async function(e,n,t,o){let r,s=t||[];switch(t||(s=e.on[n]||[]),n){case pe.Consent:r=o||e.consent;break;case pe.Session:r=e.session;break;case pe.User:r=o||e.user;break;case pe.Custom:r=o||e.custom;break;case pe.Globals:r=o||e.globals;break;case pe.Config:r=o||e.config;break;case pe.Ready:case pe.Run:default:r=void 0}let i=!1;for(const t of Object.values(e.sources))t.on&&!1===await ee(t.on)(n,r)&&(i=!0);return Object.entries(e.destinations).forEach(([t,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:n,data:r});Ce(e,o,t,n,r)}}),(Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0)&&await async function(e,n){var t,o;for(const[o,r]of Object.entries(e.pending.sources)){if(!e.pending.sources[o]||e.sources[o])continue;const s=null==(t=r.config)?void 0:t.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.sources[o];const a=await je(e,o,r);a&&(e.sources[o]=a)}for(const[t,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const s=null==(o=r.config)?void 0:o.require;if(!s)continue;const i=s.indexOf(n);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[t];const a=Me(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[t]=a}}(e,n),xe(e,n,s,o),!i}(e,n,void 0,s),r=await Pe(e)),r||qe({ok:!0})}function Te(e,n){if(!n.name)throw new Error("Event name is required");const[t,o]=n.name.split(" ");if(!t||!o)throw new Error("Event name is invalid");++e.count;const{timestamp:r=Date.now(),group:s=e.group,count:i=e.count}=n,{name:a=`${t} ${o}`,data:c={},context:u={},globals:l=e.globals,custom:f={},user:g=e.user,nested:d=[],consent:p=e.consent,id:v=`${r}-${s}-${i}`,trigger:y="",entity:m=t,action:h=o,timing:b=0,version:w={source:e.version,tagging:e.config.tagging||0},source:k={type:"collector",id:"",previous_id:""}}=n;return{name:a,data:c,context:u,globals:l,custom:f,user:g,nested:d,consent:p,id:v,trigger:y,entity:m,action:h,timestamp:r,timing:b,group:s,count:i,version:w,source:k}}async function Re(e){var n,t;const o=D({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},e,{merge:!1,extend:!1}),r=V({level:null==(n=e.logger)?void 0:n.level,handler:null==(t=e.logger)?void 0:t.handler}),s={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},count:0,custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,group:"",hooks:e.hooks||{},logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:e.user||{},version:"3.4.1-next-1776790594143",sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0};var a,c;i.push=function(e,n){return re(async(t,o={})=>await ee(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:u,preChain:l,include:f,exclude:g}=o;let d=c,p=t;const v=f||g?function(e,n,t){let o=e;return n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>n.includes(e)))),t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!t.includes(e)))),o}(e.destinations,f,g):void 0,y=null!=a?a:q(i||"unknown");if(u){const n=await oe(p,u,e);if(n.ignore)return qe({ok:!0});if(u.consent&&!W(u.consent,e.consent,n.event.consent))return qe({ok:!0});p=n.event}if((null==l?void 0:l.length)&&e.transformers&&Object.keys(e.transformers).length>0){const t=await ke(e,e.transformers,l,p,y,d,i?`source.${i}.next`:void 0);if(null===t.event)return qe({ok:!0});if(t.respond&&(d=t.respond),Array.isArray(t.event)){const o=await Promise.all(t.event.map(async t=>{const o=n(t),r=Te(e,o);return Pe(e,r,{id:i,ingest:y,respond:d},v)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count+=t.event.length,n.lastAt=Date.now(),n.duration+=Date.now()-s}return null!=(r=o[0])?r:qe({ok:!0})}p=t.event}const m=n(p),h=Te(e,m),b=await Pe(e,h,{id:i,ingest:y,respond:d},v);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const n=e.status.sources[i];n.count++,n.lastAt=Date.now(),n.duration+=Date.now()-s}return b},()=>qe({ok:!1}))(),"Push",e.hooks,e.logger)}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",id:"",previous_id:""},...e})),i.command=(c=_e,re(async(e,n,t)=>await ee(async()=>await c(a,e,n,t),()=>qe({ok:!1}))(),"Command",(a=i).hooks,a.logger));const u=e.stores||{};if(i.stores=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i},u=await n(c),l=u.get,f=u.set,g=u.delete;u.get=re(l,"StoreGet",e.hooks,e.logger),u.set=re(f,"StoreSet",e.hooks,e.logger),u.delete=re(g,"StoreDelete",e.hooks,e.logger),t[o]=u}return t}(i,u),function(e,n,t){const o=new Map;for(const[t,r]of Object.entries(e))n[t]&&o.set(r,n[t]);if(0!==o.size)for(const e of[t.transformers,t.destinations,t.sources])if(e)for(const n of Object.values(e))r(n.env);function r(e){if(e)for(const[n,t]of Object.entries(e))if("object"==typeof t&&null!==t){const r=o.get(t);r&&(e[n]=r)}}}(u,i.stores,e),!i.stores.__cache){const e=new Map;i.stores.__cache={type:"memory",config:{},get:n=>{const t=e.get(n);if(t){if(!(t.expires&&Date.now()>t.expires))return t.value;e.delete(n)}},set:(n,t,o)=>{e.set(n,{value:t,expires:o?Date.now()+o:void 0})},delete:n=>{e.delete(n)}}}return i.destinations=await async function(e,n={}){var t,o;const r={};for(const[s,i]of Object.entries(n))(null==(o=null==(t=i.config)?void 0:t.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Me(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{code:n,env:s={}}=r,{config:i}=me(r,"before"),{config:a}=me({...r,config:i},"next"),c=Object.keys(s).length>0?{...a,env:s}:a,{cache:u}=r,l=u?{...c,cache:u}:c,f=e.logger.scope("transformer").scope(o),g={collector:e,logger:f,id:o,ingest:q(o),config:l,env:s},d=await n(g);t[o]=d}return t}(i,e.transformers||{}),i}async function Ne(e){e=e||{};const n=await Re(e),t=(o=n,{type:"elb",config:{},push:async(e,n,t,r,s,i)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,n,t)}let a;if("string"==typeof e)a={name:e},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!e||"object"!=typeof e)return qe({ok:!1});a=e,n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return r&&"object"==typeof r&&(a.context=r),s&&Array.isArray(s)&&(a.nested=s),i&&"object"==typeof i&&(a.custom=i),o.push(a)}});var o;n.sources.elb=t;const r=await async function(e,n={}){const t={};for(const[o,r]of Object.entries(n)){const{config:n={}}=r;if(n.require&&n.require.length>0){e.pending.sources[o]=r;continue}const s=await je(e,o,r);s&&(t[o]=s)}return t}(n,e.sources||{});Object.assign(n.sources,r);const{consent:s,user:i,globals:a,custom:c}=e;s&&await n.command("consent",s),i&&await n.command("user",i),a&&Object.assign(n.globals,a),c&&Object.assign(n.custom,c),n.config.run&&await n.command("run");let u=t.push;const l=Object.values(n.sources).filter(e=>"elb"!==e.type),f=l.find(e=>e.config.primary);return f?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u}}var Ge,Be=async e=>{let n;return{get flow(){return n},trigger:()=>async t=>{var o;const r=window;if(r.OptanonActiveGroups=t,r.OneTrust={IsAlertBoxClosed:()=>!0},!n){const t=await Ne({...e,run:null==(o=e.run)||o});n={collector:t.collector,elb:t.elb}}}}},He=(e,n)=>{const t=n.window;"string"==typeof e&&(t.OptanonActiveGroups=e,t.OneTrust={IsAlertBoxClosed:()=>!0})},Ue={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},We=async e=>{var n,t,o,r,s,i,a,c;const{config:u,env:l}=e,{elb:f}=l,g=null!=(n=l.window)?n:void 0!==globalThis.window?globalThis.window:void 0,d={...Ue,...null!=(o=null==(t=null==u?void 0:u.settings)?void 0:t.categoryMap)?o:{}},p={};Object.entries(d).forEach(([e,n])=>{p[e.toLowerCase()]=n});const v={categoryMap:d,explicitOnly:null==(s=null==(r=null==u?void 0:u.settings)?void 0:r.explicitOnly)||s,globalName:null!=(a=null==(i=null==u?void 0:u.settings)?void 0:i.globalName)?a:"OneTrust"},y={settings:v};let m,h,b=!1;if(g){const e=null!=(c=v.globalName)?c:"OneTrust",n=new Set(Object.values(p)),t=e=>{const t={};return n.forEach(e=>{t[e]=!1}),e.split(",").filter(e=>e.length>0).forEach(e=>{const n=p[e.toLowerCase()];n&&(t[n]=!0)}),t},o=()=>{const n=g.OptanonActiveGroups;if(null==n)return;if(v.explicitOnly){const n=g[e];if((null==n?void 0:n.IsAlertBoxClosed)&&!n.IsAlertBoxClosed())return}const o=t(n);Object.keys(o).length>0&&f("walker consent",o)},r=g[e];r&&void 0!==g.OptanonActiveGroups&&o(),r||(h=g.OptanonWrapper,b=!0,g.OptanonWrapper=()=>{h&&h(),o(),g.OptanonWrapper=h,b=!1}),m=()=>{o()},g.addEventListener("OneTrustGroupsUpdated",m)}return{type:"cookiepro",config:y,push:f,destroy:async e=>{g&&m&&g.removeEventListener("OneTrustGroupsUpdated",m),g&&b&&(g.OptanonWrapper=h)}}},Le=We;return Ge=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of t(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),Ge)})();
|
package/dist/index.es5.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";function _array_like_to_array(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function asyncGeneratorStep(e,n,t,r,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void t(e)}i.done?n(c):Promise.resolve(c).then(r,o)}function _async_to_generator(e){return function(){var n=this,t=arguments;return new Promise(function(r,o){var a=e.apply(n,t);function s(e){asyncGeneratorStep(a,r,o,s,i,"next",e)}function i(e){asyncGeneratorStep(a,r,o,s,i,"throw",e)}s(void 0)})}}function _define_property(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function _instanceof(e,n){return null!=n&&"undefined"!=typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,a=[],s=!0,i=!1;try{for(t=t.call(e);!(s=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==t.return||t.return()}finally{if(i)throw o}}return a}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){_define_property(e,n,t[n])})}return e}function ownKeys(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,r)}return t}function _object_spread_props(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e}function _sliced_to_array(e,n){return _array_with_holes(e)||_iterable_to_array_limit(e,n)||_unsupported_iterable_to_array(e,n)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,n){if(e){if("string"==typeof e)return _array_like_to_array(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(t):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_array_like_to_array(e,n):void 0}}function _ts_generator(e,n){var t,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:c(0)}),i(s,"throw",{value:c(1)}),i(s,"return",{value:c(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function c(i){return function(c){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(t=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=n.call(e,a)}catch(e){i=[6,e],r=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function _ts_values(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],r=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}var SourceCookiePro=function(){var e=function(e){return{_meta:{hops:0,path:[e]}}},n=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t=_object_spread({},De,t);var r=Object.entries(n).reduce(function(n,r){var o=_sliced_to_array(r,2),a=o[0],s=o[1],i=e[a];return t.merge&&Array.isArray(i)&&Array.isArray(s)?n[a]=s.reduce(function(e,n){return e.includes(n)?e:_to_consumable_array(e).concat([n])},_to_consumable_array(i)):(t.extend||a in e)&&(n[a]=s),n},{});return t.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},t=function(e){return Array.isArray(e)},r=function(e){return void 0!==e},o=function(e){return"function"==typeof e},a=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!t(e)&&"[object Object]"===Object.prototype.toString.call(e)},s=function(e){return"string"==typeof e},i=function(e,n,t){if(!a(e))return e;for(var r=qe(e),o=n.split("."),s=r,i=0;i<o.length;i++){var c=o[i];i===o.length-1?s[c]=t:(c in s&&"object"==_type_of(s[c])&&null!==s[c]||(s[c]={}),s=s[c])}return r},c=function(e){var n=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),t={},r=!e||0===Object.keys(e).length;return Object.keys(n).forEach(function(o){n[o]&&(t[o]=!0,e&&e[o]&&(r=!0))}),!!r&&t},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,n=arguments.length>1?arguments[1]:void 0;if(n){for(var t=n.length,r="",o=0;o<e;o++)r+=n[Math.random()*t|0];return r}for(var a="";a.length<e;)a+=(36*Math.random()|0).toString(36);return a},l=function(e){var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=null,a=!1;return function(){for(var s=arguments.length,i=new Array(s),c=0;c<s;c++)i[c]=arguments[c];return new Promise(function(s){var c=r&&!a;o&&clearTimeout(o),o=setTimeout(function(){o=null,r&&!a||(n=e.apply(void 0,_to_consumable_array(i)),s(n))},t),c&&(a=!0,n=e.apply(void 0,_to_consumable_array(i)),s(n))})}},f=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},d=function(e,n){var t,r={};return _instanceof(e,Error)?(t=e.message,r.error=f(e)):t=e,void 0!==n&&(_instanceof(n,Error)?r.error=f(n):"object"==(void 0===n?"undefined":_type_of(n))&&null!==n?"error"in(r=_object_spread({},r,n))&&_instanceof(r.error,Error)&&(r.error=f(r.error)):r.value=n),{message:t,context:r}},_=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Ge({level:void 0!==n.level?(e=n.level,"string"==typeof e?Ie[e]:e):0,handler:n.handler,jsonHandler:n.jsonHandler,scope:[]})},p=function(e){return Ne(e)?e:void 0},v=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}},g=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return _async_to_generator(function(){var r;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return r=a.sent(),n?[4,n(r)]:[2];case 4:return[4,null==t?void 0:t()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},y=function(e,n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d;return _ts_generator(this,function(_){return o=_sliced_to_array((e.name||"").split(" "),2),a=o[0],s=o[1],n&&a&&s?(c="",l=s,f=function(n){if(n)return(n=t(n)?n:[n]).find(function(n){return!n.condition||n.condition(e)})},n[u=a]||(u="*"),[2,((d=n[u])&&(d[l]||(l="*"),i=f(d[l])),i||(u="*",l="*",i=f(null===(r=n[u])||void 0===r?void 0:r[l])),i&&(c="".concat(u," ").concat(l)),{eventMapping:i,mappingKey:c})]):[2,{}]})})()},b=function(e){return _async_to_generator(function(e){var n,o,s,i,c,u,l,f,d,_,p,v,y,b=arguments;return _ts_generator(this,function(h){switch(h.label){case 0:if(n=b.length>1&&void 0!==b[1]?b[1]:{},o=b.length>2&&void 0!==b[2]?b[2]:{},!r(e))return[2];i=a(e)&&e.consent||o.consent||(null===(s=o.collector)||void 0===s?void 0:s.consent),c=t(n)?n:[n],u=!0,l=!1,f=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),d=c[Symbol.iterator](),h.label=2;case 2:return(u=(_=d.next()).done)?[3,5]:(p=_.value,[4,g(Be)(e,p,_object_spread_props(_object_spread({},o),{consent:i}))]);case 3:if(v=h.sent(),r(v))return[2,v];h.label=4;case 4:return u=!0,[3,2];case 5:return[3,8];case 6:return y=h.sent(),l=!0,f=y,[3,8];case 7:try{u||null==d.return||d.return()}finally{if(l)throw f}return[7];case 8:return[2]}})}).apply(this,arguments)},h=function(e,t,r){return _async_to_generator(function(){var o,s,c,u,l,f,d,_,p,v,g;return _ts_generator(this,function(h){switch(h.label){case 0:return t.policy?[4,Promise.all(Object.entries(t.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,2];case 1:h.sent(),h.label=2;case 2:return[4,y(e,t.mapping)];case 3:return s=h.sent(),c=s.eventMapping,u=s.mappingKey,(null==c?void 0:c.policy)?[4,Promise.all(Object.entries(c.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,5];case 4:h.sent(),h.label=5;case 5:return(f=t.data)?[4,b(e,t.data,{collector:r})]:[3,7];case 6:f=h.sent(),h.label=7;case 7:return l=f,d=Boolean(null==c?void 0:c.skip),c?c.ignore?[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!0,skip:d}]:(c.name&&(e.name=c.name),c.data?(p=c.data)?[4,b(e,c.data,{collector:r})]:[3,9]:[3,10]):[3,10];case 8:p=h.sent(),h.label=9;case 9:_=p,l=a(l)&&a(_)?n(l,_):_,h.label=10;case 10:return(v=null!==(o=null==c?void 0:c.include)&&void 0!==o?o:t.include)&&v.length>0&&(g=function(e,n){var t={},r=n.includes("all")?Object.keys(Te):n,o=!0,s=!1,i=void 0;try{for(var c,u=r[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){var l=c.value,f=Te[l];if(f){var d=f(e),_=!0,p=!1,v=void 0;if(a(d))try{for(var g,y=Object.entries(d)[Symbol.iterator]();!(_=(g=y.next()).done);_=!0){var b=_sliced_to_array(g.value,2),h=b[0],m=b[1];if(void 0!==m){var w="context"===l&&Array.isArray(m)?m[0]:m;t["".concat(l,"_").concat(h)]=w}}}catch(e){p=!0,v=e}finally{try{_||null==y.return||y.return()}finally{if(p)throw v}}}}}catch(e){s=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(s)throw i}}return t}(e,v),Object.keys(g).length>0&&(l=a(l)?n(g,l):null!=l?l:g)),[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!1,skip:d}]}})})()},m=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var s,i="post"+n,c=t["pre"+n],u=t[i];return s=c?c.apply(void 0,[{fn:e}].concat(_to_consumable_array(o))):e.apply(void 0,_to_consumable_array(o)),u&&(s=u.apply(void 0,[{fn:e,result:s}].concat(_to_consumable_array(o)))),s}},w=function(e){return Array.isArray(e)&&e.length>0&&"object"==_type_of(e[0])&&null!==e[0]&&"match"in e[0]},j=function(e,n){var t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t},k=function(e){var n;return{full:null!==(n=e.full)&&void 0!==n&&n,storeId:e.store,rules:e.rules.map(function(e){return{match:Ue(e.match),key:e.key,ttl:e.ttl,update:e.update}})}},O=function(e,n,t,r){var o=e.rules.find(function(e){return e.match(t)});if(!o)return null;var a=o.key.map(function(e){var n;return String(null!==(n=Me(t,e))&&void 0!==n?n:"")});if(a.every(function(e){return""===e}))return null;var s="".concat(r,":").concat(a.join(":")),i=n.get(s);return void 0!==i?{status:"HIT",key:s,value:i,rule:o}:{status:"MISS",key:s,rule:o}},C=function(e,n,t,r){e.set(n,t,1e3*r)},S=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,c,u,l,f,d,_,p;return _ts_generator(this,function(v){switch(v.label){case 0:if(!n)return[2,e];r=e,o=!0,a=!1,s=void 0,v.label=1;case 1:v.trys.push([1,6,7,8]),c=Object.entries(n)[Symbol.iterator](),v.label=2;case 2:return(o=(u=c.next()).done)?[3,5]:(l=_sliced_to_array(u.value,2),f=l[0],d=l[1],_=[r,f],[4,b(t,d)]);case 3:r=i.apply(void 0,_.concat([v.sent()])),v.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return p=v.sent(),a=!0,s=p,[3,8];case 7:try{o||null==c.return||c.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})})()},x=function(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache},A=function(e){var n={},t=!0,r=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i,c=_sliced_to_array(a.value,2),u=c[0],l=null===(i=c[1].config)||void 0===i?void 0:i.next;l&&!w(l)?n[u]={next:l}:n[u]={}}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}return n},P=function(e,n){var t=e.config||{},r=e[n];return void 0!==r?{config:_object_spread_props(_object_spread({},t),_define_property({},n,r)),chainValue:r}:{config:t,chainValue:void 0}},E=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return[];if(Array.isArray(e))return e;for(var t=[],r=new Set,o=e;o&&n[o]&&!r.has(o);){r.add(o),t.push(o);var a=n[o].next;if(Array.isArray(a)){var s;(s=t).push.apply(s,_to_consumable_array(a));break}o=a}return t},I=function(n,t,r){return _async_to_generator(function(){var o,a,s,i;return _ts_generator(this,function(c){switch(c.label){case 0:return!t.init||t.config.init?[3,2]:(o=t.type||"unknown",a=n.logger.scope("transformer:".concat(o)),s={collector:n,logger:a,id:r,ingest:e(r),config:t.config,env:q(t.config.env)},a.debug("init"),[4,m(t.init,"TransformerInit",n.hooks)(s)]);case 1:if(!1===(i=c.sent()))return[2,!1];t.config=_object_spread_props(_object_spread({},i||t.config),{env:(null==i?void 0:i.env)||t.config.env,init:!0}),a.debug("init done"),c.label=2;case 2:return[2,!0]}})})()},D=function(e,n,t,r,o,a){return _async_to_generator(function(){var s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return s=n.type||"unknown",i=e.logger.scope("transformer:".concat(s)),c={collector:e,logger:i,id:t,ingest:o,config:n.config,env:_object_spread({},q(n.config.env),a?{respond:a}:{})},i.debug("push",{event:r.name}),[4,m(n.push,"TransformerPush",e.hooks)(r,c)];case 1:return u=l.sent(),[2,(i.debug("push done"),u)]}})})()},q=function(e){return e&&a(e)?e:{}},M=function(n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,p,v,y,h,m,P,I,D,q,M,T,R,G;return _ts_generator(this,function(N){switch(N.label){case 0:return a=r.code,s=r.config,i=void 0===s?{}:s,c=r.env,u=void 0===c?{}:c,l=r.primary,f=r.next,d=r.before,_=r.cache,v=e(t),y=_?k(_object_spread_props(_object_spread({},_),{full:null===(o=_.full)||void 0===o||o})):void 0,h=He(f),m=Array.isArray(f)&&w(f)||!h?void 0:E(We(h),A(n.transformers)),P=He(d),I=Array.isArray(d)&&w(d)||!P?void 0:E(We(P),A(n.transformers)),D=n.logger.scope("source").scope(t),q=_object_spread({push:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,g,b,w,k,D,q;return _ts_generator(this,function(M){switch(M.label){case 0:return a=e,(s=null!=I?I:P?E(We(P,j(v)),A(n.transformers)):[]).length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,s,a,v,p,"source.".concat(t,".before"))]:[3,2];case 1:if(null===(c=M.sent()).event)return[2,{ok:!0}];c.respond&&(p=c.respond),a=Array.isArray(c.event)?c.event[0]:c.event,M.label=2;case 2:return y&&(u=x(y,n))?(l=j(v),(f=O(y,u,l,"s:".concat(t)))?"HIT"===f.status&&void 0!==f.value&&y.full?(d=f.value,f.rule.update?[4,S(d,f.rule.update,_object_spread_props(_object_spread({},l),{cache:{status:"HIT"}}))]:[3,4]):[3,5]:[3,6]):[3,6];case 3:d=M.sent(),M.label=4;case 4:return[2,(null==p||p(d),{ok:!0})];case 5:"MISS"===f.status&&y.full&&p&&(_=p,g=f.rule.update,b=_object_spread_props(_object_spread({},l),{cache:{status:"MISS"}}),w=f.key,k=f.rule.ttl,p=function(e){C(u,w,e,k),g?o=_async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,S(e,g,b)];case 1:return n=t.sent(),_(n),[2]}})})():_(e)}),"MISS"!==f.status||y.full||C(u,f.key,!0,f.rule.ttl),M.label=6;case 6:return D=null!=m?m:h?E(We(h,j(v)),A(n.transformers)):[],[4,n.push(a,_object_spread_props(_object_spread({},r),{id:t,ingest:v,respond:p,mapping:i,preChain:D}))];case 7:return q=M.sent(),o?[4,o]:[3,9];case 8:M.sent(),M.label=9;case 9:return[2,q]}})})()},command:n.command,sources:n.sources,elb:n.sources.elb.push,logger:D},u),M={collector:n,logger:D,id:t,config:i,env:q,setIngest:function(r){return _async_to_generator(function(){var o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return i.ingest?[4,b(r,i.ingest,{collector:n})]:[2,void(v=e(t))];case 1:return o=s.sent(),a=e(t),v=_object_spread_props(_object_spread({},a,o),{_meta:a._meta}),[2]}})})()},setRespond:function(e){p=e}},[4,g(a)(M)];case 1:return(T=N.sent())?(R=T.type||"unknown",G=n.logger.scope(R).scope(t),[2,(q.logger=G,l&&(T.config=_object_spread_props(_object_spread({},T.config),{primary:l})),T)]):[2]}})})()},T=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,p,v=arguments;return _ts_generator(this,function(g){switch(g.label){case 0:n=v.length>1&&void 0!==v[1]?v[1]:{},t={},r=!0,o=!1,a=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),g.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.config,(d=void 0===f?{}:f).require&&d.require.length>0?(e.pending.sources[u]=l,[3,4]):[4,M(e,u,l)]);case 3:(_=g.sent())&&(t[u]=_),g.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return p=g.sent(),o=!0,a=p,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)},R=function(e,n,r){return _async_to_generator(function(){var o,a,s;return _ts_generator(this,function(i){return o=e.on,a=o[n]||[],(s=t(r)?r:[r]).forEach(function(e){a.push(e)}),o[n]=a,N(e,n,s),[2]})})()},G=function(e,n,t,r,o){if(n.on){var a=n.type||"unknown",s=e.logger.scope(a).scope("on").scope(r),i={collector:e,logger:s,id:t,config:n.config,data:o,env:V(n.env,n.config.env)};v(n.on)(r,i)}},N=function(e,n,t,r){var o,a,s,i;switch(n){case Le.Commands.Consent:o=r||e.consent;break;case Le.Commands.Session:o=e.session;break;case Le.Commands.User:o=r||e.user;break;case Le.Commands.Custom:o=r||e.custom;break;case Le.Commands.Globals:o=r||e.globals;break;case Le.Commands.Config:o=r||e.config;break;case Le.Commands.Ready:case Le.Commands.Run:default:o=void 0}if(t.length)switch(n){case Le.Commands.Consent:a=e,s=t,i=r||a.consent,s.forEach(function(e){Object.keys(i).filter(function(n){return n in e}).forEach(function(n){v(e[n])(a,i)})});break;case Le.Commands.Ready:case Le.Commands.Run:!function(e,n){e.allowed&&n.forEach(function(n){v(n)(e)})}(e,t);break;case Le.Commands.Session:!function(e,n){e.session&&n.forEach(function(n){v(n)(e,e.session)})}(e,t);break;default:t.forEach(function(n){"function"==typeof n&&v(n)(e,o)})}},B=function(e,n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,p;return _ts_generator(this,function(v){switch(v.label){case 0:switch(a=t||[],t||(a=e.on[n]||[]),n){case Le.Commands.Consent:o=r||e.consent;break;case Le.Commands.Session:o=e.session;break;case Le.Commands.User:o=r||e.user;break;case Le.Commands.Custom:o=r||e.custom;break;case Le.Commands.Globals:o=r||e.globals;break;case Le.Commands.Config:o=r||e.config;break;case Le.Commands.Ready:case Le.Commands.Run:default:o=void 0}s=!1,i=!0,c=!1,u=void 0,v.label=1;case 1:v.trys.push([1,6,7,8]),l=Object.values(e.sources)[Symbol.iterator](),v.label=2;case 2:return(i=(f=l.next()).done)?[3,5]:(d=f.value).on?(_=!1,[4,g(d.on)(n,o)]):[3,4];case 3:_===v.sent()&&(s=!0),v.label=4;case 4:return i=!0,[3,2];case 5:return[3,8];case 6:return p=v.sent(),c=!0,u=p,[3,8];case 7:try{i||null==l.return||l.return()}finally{if(c)throw u}return[7];case 8:return Object.entries(e.destinations).forEach(function(t){var r=_sliced_to_array(t,2),a=r[0],s=r[1];if(s.on){if(!s.config.init)return s.queueOn=s.queueOn||[],void s.queueOn.push({type:n,data:o});G(e,s,a,n,o)}}),Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0?[4,(y=e,b=n,_async_to_generator(function(){var e,n,t,r,o,a,s,i,c,u,l,f,d,_,p,v,g,h,m,w,j,k,O,C,S;return _ts_generator(this,function(x){switch(x.label){case 0:e=!0,n=!1,t=void 0,x.label=1;case 1:x.trys.push([1,6,7,8]),r=Object.entries(y.pending.sources)[Symbol.iterator](),x.label=2;case 2:return(e=(o=r.next()).done)?[3,5]:(a=_sliced_to_array(o.value,2),s=a[0],i=a[1],!y.pending.sources[s]||y.sources[s]?[3,4]:(u=null===(c=i.config)||void 0===c?void 0:c.require)?-1===(l=u.indexOf(b))?[3,4]:(u.splice(l,1),u.length>0?[3,4]:(delete y.pending.sources[s],[4,M(y,s,i)])):[3,4]);case 3:(f=x.sent())&&(y.sources[s]=f),x.label=4;case 4:return e=!0,[3,2];case 5:return[3,8];case 6:return d=x.sent(),n=!0,t=d,[3,8];case 7:try{e||null==r.return||r.return()}finally{if(n)throw t}return[7];case 8:_=!0,p=!1,v=void 0;try{for(g=Object.entries(y.pending.destinations)[Symbol.iterator]();!(_=(h=g.next()).done);_=!0)m=_sliced_to_array(h.value,2),w=m[0],j=m[1],y.pending.destinations[w]&&!y.destinations[w]&&(O=null===(k=j.config)||void 0===k?void 0:k.require)&&-1!==(C=O.indexOf(b))&&(O.splice(C,1),O.length>0||(delete y.pending.destinations[w],!1!==(S=z(j)).config.queue&&(S.queuePush=_to_consumable_array(y.queue)),y.destinations[w]=S))}catch(e){p=!0,v=e}finally{try{_||null==g.return||g.return()}finally{if(p)throw v}}return[2]}})})())]:[3,10];case 9:v.sent(),v.label=10;case 10:return[2,(N(e,n,a,r),!s)]}var y,b})})()},U=function(e,n,t,r){if(!e)return[];if(n){var o=We(n,j(r));return o?E(o,A(t)):[]}return E(e,A(t))},H=function(e,n,t){return _async_to_generator(function(){var r,a,s,i,c,l,f,d,_,p,v,g;return _ts_generator(this,function(y){if(r=n.code,a=n.config,s=void 0===a?{}:a,i=n.env,c=void 0===i?{}:i,l=n.before,f=n.next,d=n.cache,!o(r.push))return[2,F({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}})];if(_=t||s||{init:!1},p=l?_object_spread_props(_object_spread({},_),{before:l}):_object_spread({},_),f&&(p=_object_spread_props(_object_spread({},p),{next:f})),d&&(p=_object_spread_props(_object_spread({},p),{cache:d})),v=_object_spread_props(_object_spread({},r),{config:p,env:V(r.env,c)}),!(g=v.config.id))do{g=u(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[g]);return[2,(e.destinations[g]=v,!1!==v.config.queue&&(v.queuePush=_to_consumable_array(e.queue)),W(e,void 0,{},_define_property({},g,v)))]})})()},W=function(t,r,o){return _async_to_generator(function(t,r){var o,a,s,i,u,l,f,d,_,p,v,y,b,h,m,S,A,P,E,I=arguments;return _ts_generator(this,function(D){switch(D.label){case 0:return o=I.length>2&&void 0!==I[2]?I[2]:{},a=I.length>3?I[3]:void 0,s=t.allowed,i=t.consent,u=t.globals,l=t.user,s?(r&&(t.queue.push(r),t.status.in++),a||(a=t.destinations),[4,Promise.all(Object.entries(a||{}).map(function(a){var s=_sliced_to_array(a,2),f=s[0],d=s[1];return _async_to_generator(function(){var a,s,_,p,v,y,b,h,m,S,A,P,E,I,D,q,M,T,R;return _ts_generator(this,function(G){switch(G.label){case 0:return d.config.disabled?[2,{id:f,destination:d,skipped:!0}]:(v=(d.queuePush||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:i})}),d.queuePush=[],r&&v.push(qe(r)),y=o.ingest?_object_spread_props(_object_spread({},o.ingest),{_meta:_object_spread_props(_object_spread({},o.ingest._meta),{path:_to_consumable_array(o.ingest._meta.path)})}):e("unknown"),v.length||(null===(s=d.queueOn)||void 0===s?void 0:s.length)?v.length||!(null===(_=d.queueOn)||void 0===_?void 0:_.length)?[3,2]:[4,g(L)(t,d,f)]:[2,{id:f,destination:d,skipped:!0}]);case 1:return b=G.sent(),[2,{id:f,destination:d,skipped:!b}];case 2:return h=[],m=v.filter(function(e){var n=c(d.config.consent,i,e.consent);return!n||(e.consent=n,h.push(e),!1)}),(a=d.queuePush).push.apply(a,_to_consumable_array(m)),h.length?[4,g(L)(t,d,f)]:[2,{id:f,destination:d,queue:v}];case 3:return G.sent()?(d.dlq||(d.dlq=[]),P=d.config.before,E=U(P,P&&w(P)?He(P):void 0,t.transformers,y),I=d.config.next,D=I&&w(I)?He(I):void 0,q=null===(p=d.config)||void 0===p?void 0:p.cache,M=q?k(q):void 0,T=M?x(M,t):void 0,R=0,[4,Promise.all(h.map(function(e){return _async_to_generator(function(){var r,a,s,i,c,_,p,v,b,h,m,w,k;return _ts_generator(this,function(x){switch(x.label){case 0:if(e.globals=n(u,e.globals),e.user=n(l,e.user),(null==M?void 0:M.full)&&T){if(a=j(y,e),"HIT"===(null==(s=O(M,T,a,"d:".concat(f)))?void 0:s.status))return[2,e];"MISS"===(null==s?void 0:s.status)&&(r={key:s.key,ttl:s.rule.ttl})}return i=e,c=o.respond,E.length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,E,e,y,o.respond,"destination.".concat(f,".before"))]:[3,2];case 1:if(null===(_=x.sent()).event)return[2,e];_.respond&&(c=_.respond),i=Array.isArray(_.event)?_.event[0]:_.event,x.label=2;case 2:if(M&&!M.full&&T){if(p=j(y,i),"HIT"===(null==(v=O(M,T,p,"d:".concat(f)))?void 0:v.status))return[2,e];"MISS"===(null==v?void 0:v.status)&&(r={key:v.key,ttl:v.rule.ttl})}return b=Date.now(),h=!1,[4,g(K,function(e){var n=d.type||"unknown";t.logger.scope(n).error("Push failed",{error:e,event:i.name}),S=e,h=!0,d.dlq.push([i,e])})(t,d,f,i,y,c)];case 3:return m=x.sent(),R+=Date.now()-b,r&&T&&void 0===d.config.mock&&C(T,r.key,null==m||m,r.ttl),void 0!==m&&(A=m),h||!I?[3,5]:(void 0!==m&&(y._response=m),(w=U(I,D,t.transformers,y)).length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,w,i,y,c,"destination.".concat(f,".next"))]:[3,5]);case 4:(k=x.sent()).respond&&(c=k.respond),x.label=5;case 5:return[2,e]}})})()}))]):[2,{id:f,destination:d,queue:v}];case 4:return[2,(G.sent(),{id:f,destination:d,error:S,response:A,totalDuration:R})]}})})()}))]):[2,F({ok:!1})];case 1:f=D.sent(),d={},_={},p={},v=!0,y=!1,b=void 0;try{for(h=f[Symbol.iterator]();!(v=(m=h.next()).done);v=!0)(S=m.value).skipped||(A={type:S.destination.type||"unknown",data:S.response},t.status.destinations[S.id]||(t.status.destinations[S.id]={count:0,failed:0,duration:0}),P=t.status.destinations[S.id],E=Date.now(),S.error?(A.error=S.error,p[S.id]=A,P.failed++,P.lastAt=E,P.duration+=S.totalDuration||0,t.status.failed++):S.queue&&S.queue.length?_[S.id]=A:(d[S.id]=A,P.count++,P.lastAt=E,P.duration+=S.totalDuration||0,t.status.out++))}catch(e){y=!0,b=e}finally{try{v||null==h.return||h.return()}finally{if(y)throw b}}return[2,F(_object_spread({event:r},Object.keys(d).length&&{done:d},Object.keys(_).length&&{queued:_},Object.keys(p).length&&{failed:p}))]}})}).apply(this,arguments)},L=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,p,v,g;return _ts_generator(this,function(y){switch(y.label){case 0:return!n.init||n.config.init?[3,2]:(o=n.type||"unknown",a=e.logger.scope(o),s={collector:e,logger:a,id:t,config:n.config,env:V(n.env,n.config.env)},a.debug("init"),[4,m(n.init,"DestinationInit",e.hooks)(s)]);case 1:if(!1===(i=y.sent()))return[2,i];if(n.config=_object_spread_props(_object_spread({},i||n.config),{init:!0}),null===(r=n.queueOn)||void 0===r?void 0:r.length){c=n.queueOn,n.queueOn=[],u=!0,l=!1,f=void 0;try{for(d=c[Symbol.iterator]();!(u=(_=d.next()).done);u=!0)p=_.value,v=p.type,g=p.data,G(e,n,t,v,g)}catch(e){l=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw f}}}a.debug("init done"),y.label=2;case 2:return[2,!0]}})})()},K=function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c,u,f,d,_,p,v,g,y;return _ts_generator(this,function(b){switch(b.label){case 0:return i=n.config,[4,h(o,i,e)];case 1:return(c=b.sent()).ignore?[2,!1]:(u=n.type||"unknown",f=e.logger.scope(u),d={collector:e,logger:f,id:t,config:i,data:c.data,rule:c.mapping,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})},void 0!==i.mock?[2,(f.debug("mock",{event:c.event.name}),i.mock)]:(_=c.mapping,p=c.mappingKey||"* *",(null==_?void 0:_.batch)&&n.pushBatch&&void 0===i.mock?[3,3]:(f.debug("push",{event:c.event.name}),[4,m(n.push,"DestinationPush",e.hooks)(c.event,d)])));case 2:return v=b.sent(),[2,(f.debug("push done"),v)];case 3:return n.batches=n.batches||{},n.batches[p]||(g={key:p,events:[],data:[]},n.batches[p]={batched:g,batchFn:l(function(){var r=n.batches[p].batched,o={collector:e,logger:f,id:t,config:i,data:void 0,rule:_,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})};f.debug("push batch",{events:r.events.length}),m(n.pushBatch,"DestinationPushBatch",e.hooks)(r,o),f.debug("push batch done"),r.events=[],r.data=[]},_.batch)}),(y=n.batches[p]).batched.events.push(c.event),r(c.data)&&y.batched.data.push(c.data),y.batchFn(),[2,!0]}})})()},F=function(e){return _object_spread({ok:!(null==e?void 0:e.failed)},e)},z=function(e){var n=e.code,t=e.config,r=void 0===t?{}:t,o=e.env,a=void 0===o?{}:o,s=e.cache,i=P(e,"before").config,c=P(_object_spread_props(_object_spread({},e),{config:i}),"next").config,u=_object_spread({},n.config,r,c);s&&(u.cache=s);var l=V(n.env,a);return _object_spread_props(_object_spread({},n),{config:u,env:l})},J=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_=arguments;return _ts_generator(this,function(p){n=_.length>1&&void 0!==_[1]?_[1]:{},o={},a=!0,s=!1,i=void 0;try{for(c=Object.entries(n)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(r=d.config)||void 0===r||null===(t=r.require)||void 0===t?void 0:t.length)?e.pending.destinations[f]=d:o[f]=z(d)}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}return[2,o]})}).apply(this,arguments)},V=function(e,n){return e||n?n?e&&a(e)&&a(n)?_object_spread({},e,n):n:e:{}},Y=function(e,n,t){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return r=Object.entries(e).map(function(e){var r=_sliced_to_array(e,2),o=r[0],a=r[1];return _async_to_generator(function(){var e,r,s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:if(!(r=a.destroy))return[2];s=a.type||"unknown",i=t.scope(s),c={id:o,config:a.config,env:null!==(e=a.env)&&void 0!==e?e:{},logger:i},l.label=1;case 1:return l.trys.push([1,3,,4]),[4,Promise.race([r(c),new Promise(function(e,t){return setTimeout(function(){return t(new Error("".concat(n," '").concat(o,"' destroy timed out")))},5e3)})])];case 2:return l.sent(),[3,4];case 3:return u=l.sent(),i.error("".concat(n," '").concat(o,"' destroy failed: ").concat(u)),[3,4];case 4:return[2]}})})()}),[4,Promise.allSettled(r)];case 1:return o.sent(),[2]}})})()},$=function(e,t,r,i){return _async_to_generator(function(){var c,u,l,f,d,_,p;return _ts_generator(this,function(v){switch(v.label){case 0:switch(l=!1,t){case Le.Commands.Config:return[3,1];case Le.Commands.Consent:return[3,2];case Le.Commands.Custom:return[3,3];case Le.Commands.Destination:return[3,4];case Le.Commands.Globals:return[3,11];case Le.Commands.On:return[3,12];case Le.Commands.Ready:return[3,15];case Le.Commands.Run:return[3,16];case Le.Commands.Session:return[3,18];case Le.Commands.Shutdown:return[3,19];case Le.Commands.User:return[3,21]}return[3,22];case 1:return a(r)&&(n(e.config,r,{shallow:!1}),u=r,l=!0),[3,22];case 2:return a(r)&&(f=function(e,t){var r={};return Object.entries(t).forEach(function(e){var n=_sliced_to_array(e,2),t=n[0],o=n[1];r[t]=!!o}),e.consent=n(e.consent,r),{update:r}}(e,r),d=f.update,u=d,l=!0),[3,22];case 3:return a(r)&&(e.custom=n(e.custom,r),u=r,l=!0),[3,22];case 4:return a(r)?"code"in r&&a(r.code)?[4,H(e,r,i)]:[3,6]:[3,10];case 5:return _=c=v.sent(),[3,9];case 6:return(p=o(r.push))?[4,H(e,{code:r},i)]:[3,8];case 7:p=c=v.sent(),v.label=8;case 8:_=p,v.label=9;case 9:v.label=10;case 10:return[3,22];case 11:return a(r)&&(e.globals=n(e.globals,r),u=r,l=!0),[3,22];case 12:return s(r)?[4,R(e,r,i)]:[3,14];case 13:v.sent(),v.label=14;case 14:return[3,22];case 15:return l=!0,[3,22];case 16:return[4,X(e,r)];case 17:return c=v.sent(),l=!0,[3,22];case 18:return l=!0,[3,22];case 19:return[4,(g=e,_async_to_generator(function(){var e;return _ts_generator(this,function(n){switch(n.label){case 0:return e=g.logger,[4,Y(g.sources,"source",e)];case 1:return n.sent(),[4,Y(g.destinations,"destination",e)];case 2:return n.sent(),[4,Y(g.transformers,"transformer",e)];case 3:return n.sent(),[4,Y(g.stores,"store",e)];case 4:return n.sent(),[2]}})})())];case 20:return v.sent(),[3,22];case 21:a(r)&&(n(e.user,r,{shallow:!1}),u=r,l=!0),v.label=22;case 22:return l?[4,B(e,t,void 0,u)]:[3,25];case 23:return v.sent(),[4,W(e)];case 24:c=v.sent(),v.label=25;case 25:return[2,c||F({ok:!0})]}var g})})()},Q=function(e,n){if(!n.name)throw new Error("Event name is required");var t=_sliced_to_array(n.name.split(" "),2),r=t[0],o=t[1];if(!r||!o)throw new Error("Event name is invalid");++e.count;var a=n.timestamp,s=void 0===a?Date.now():a,i=n.group,c=void 0===i?e.group:i,u=n.count,l=void 0===u?e.count:u,f=n.name,d=void 0===f?"".concat(r," ").concat(o):f,_=n.data,p=void 0===_?{}:_,v=n.context,g=void 0===v?{}:v,y=n.globals,b=void 0===y?e.globals:y,h=n.custom,m=void 0===h?{}:h,w=n.user,j=void 0===w?e.user:w,k=n.nested,O=void 0===k?[]:k,C=n.consent,S=void 0===C?e.consent:C,x=n.id,A=void 0===x?"".concat(s,"-").concat(c,"-").concat(l):x,P=n.trigger,E=void 0===P?"":P,I=n.entity,D=void 0===I?r:I,q=n.action,M=void 0===q?o:q,T=n.timing,R=void 0===T?0:T,G=n.version,N=void 0===G?{source:e.version,tagging:e.config.tagging||0}:G,B=n.source;return{name:d,data:p,context:g,globals:b,custom:m,user:j,nested:O,consent:S,id:A,trigger:E,entity:D,action:M,timestamp:s,timing:R,group:c,count:l,version:N,source:void 0===B?{type:"collector",id:"",previous_id:""}:B}},X=function(e,t){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return e.allowed=!0,e.count=0,e.group=u(),e.timing=Date.now(),t&&(t.consent&&(e.consent=n(e.consent,t.consent)),t.user&&(e.user=n(e.user,t.user)),t.globals&&(e.globals=n(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=n(e.custom,t.custom))),Object.values(e.destinations).forEach(function(e){e.queuePush=[]}),e.queue=[],e.round++,[4,W(e)];case 1:return[2,r.sent()]}})})()},Z=function(t){return _async_to_generator(function(){var r,o,a,s,i,u,l,f,d;return _ts_generator(this,function(p){switch(p.label){case 0:return a=n({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},t,{merge:!1,extend:!1}),s={level:null===(r=t.logger)||void 0===r?void 0:r.level,handler:null===(o=t.logger)||void 0===o?void 0:o.handler},i=_(s),u=_object_spread({},a.globalsStatic,t.globals),(l={allowed:!1,config:a,consent:t.consent||{},count:0,custom:t.custom||{},destinations:{},transformers:{},stores:{},globals:u,group:"",hooks:t.hooks||{},logger:i,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:t.user||{},version:"3.4.0",sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0}).push=function(n,t){return m(function(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,g(function(){return _async_to_generator(function(){var a,s,i,u,l,f,d,_,p,v,g,y,b,m,w,j,k,O,C,S,x;return _ts_generator(this,function(A){switch(A.label){case 0:return a=Date.now(),s=o.id,i=o.ingest,u=o.respond,l=o.mapping,f=o.preChain,d=o.include,_=o.exclude,p=u,v=r,g=d||_?function(e,n,t){var r=e;return n&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var t=_sliced_to_array(e,1)[0];return n.includes(t)}))),t&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var n=_sliced_to_array(e,1)[0];return!t.includes(n)}))),r}(n.destinations,d,_):void 0,y=null!=i?i:e(s||"unknown"),l?[4,h(v,l,n)]:[3,2];case 1:if((b=A.sent()).ignore)return[2,F({ok:!0})];if(l.consent&&!c(l.consent,n.consent,b.event.consent))return[2,F({ok:!0})];v=b.event,A.label=2;case 2:return(null==f?void 0:f.length)&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,f,v,y,p,s?"source.".concat(s,".next"):void 0)]:[3,6];case 3:return null===(m=A.sent()).event?[2,F({ok:!0})]:(m.respond&&(p=m.respond),Array.isArray(m.event)?[4,Promise.all(m.event.map(function(e){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){return r=t(e),o=Q(n,r),[2,W(n,o,{id:s,ingest:y,respond:p},g)]})})()}))]:[3,5]);case 4:return j=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(k=n.status.sources[s]).count+=m.event.length,k.lastAt=Date.now(),k.duration+=Date.now()-a),[2,null!==(w=j[0])&&void 0!==w?w:F({ok:!0})];case 5:v=m.event,A.label=6;case 6:return O=t(v),C=Q(n,O),[4,W(n,C,{id:s,ingest:y,respond:p},g)];case 7:return S=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(x=n.status.sources[s]).count++,x.lastAt=Date.now(),x.duration+=Date.now()-a),[2,S]}})})()},function(){return F({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Push",n.hooks)}(l,function(e){return _object_spread({timing:Math.round((Date.now()-l.timing)/10)/100,source:{type:"collector",id:"",previous_id:""}},e)}),l.command=function(e,n){return m(function(t,r,o){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,g(function(){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,n(e,t,r,o)];case 1:return[2,a.sent()]}})})()},function(){return F({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Command",e.hooks)}(l,$),f=t.stores||{},[4,function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,p,v,g,y,b,h,w,j,k=arguments;return _ts_generator(this,function(O){switch(O.label){case 0:n=k.length>1&&void 0!==k[1]?k[1]:{},t={},r=!0,o=!1,a=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),O.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.code,d=l.config,_=void 0===d?{}:d,p=l.env,v=void 0===p?{}:p,g=e.logger.scope("store").scope(u),[4,f({collector:e,logger:g,id:u,config:_,env:v})]);case 3:y=O.sent(),b=y.get,h=y.set,w=y.delete,y.get=m(b,"StoreGet",e.hooks),y.set=m(h,"StoreSet",e.hooks),y.delete=m(w,"StoreDelete",e.hooks),t[u]=y,O.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),o=!0,a=j,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)}(l,f)];case 1:return l.stores=p.sent(),function(e,n,t){var r=new Map,o=!0,a=!1,s=void 0;try{for(var i,c=Object.entries(e)[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=_sliced_to_array(i.value,2),l=u[0],f=u[1];n[l]&&r.set(f,n[l])}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}if(0!==r.size)for(var d=!0,_=!1,p=void 0,v=0,g=[t.transformers,t.destinations,t.sources];v<g.length;v++){var y=g[v];if(y)try{for(var b,h=Object.values(y)[Symbol.iterator]();!(d=(b=h.next()).done);d=!0){m(b.value.env)}}catch(e){_=!0,p=e}finally{try{d||null==h.return||h.return()}finally{if(_)throw p}}}function m(e){if(e){var n=!0,t=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=_sliced_to_array(a.value,2),c=i[0],u=i[1];if("object"==(void 0===u?"undefined":_type_of(u))&&null!==u){var l=r.get(u);l&&(e[c]=l)}}}catch(e){t=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(t)throw o}}}}}(f,l.stores,t),l.stores.__cache||(d=new Map,l.stores.__cache={type:"memory",config:{},get:function(e){var n=d.get(e);if(n){if(!(n.expires&&Date.now()>n.expires))return n.value;d.delete(e)}},set:function(e,n,t){d.set(e,{value:n,expires:t?Date.now()+t:void 0})},delete:function(e){d.delete(e)}}),[4,J(l,t.destinations||{})];case 2:return l.destinations=p.sent(),[4,function(n){return _async_to_generator(function(n){var t,r,o,a,s,i,c,u,l,f,d,_,p,v,g,y,b,h,m,w,j,k,O,C,S=arguments;return _ts_generator(this,function(x){switch(x.label){case 0:t=S.length>1&&void 0!==S[1]?S[1]:{},r={},o=!0,a=!1,s=void 0,x.label=1;case 1:x.trys.push([1,6,7,8]),i=Object.entries(t)[Symbol.iterator](),x.label=2;case 2:return(o=(c=i.next()).done)?[3,5]:(u=_sliced_to_array(c.value,2),l=u[0],f=u[1],d=f.code,_=f.env,p=void 0===_?{}:_,v=P(f,"before"),g=v.config,y=P(_object_spread_props(_object_spread({},f),{config:g}),"next"),b=y.config,h=Object.keys(p).length>0?_object_spread_props(_object_spread({},b),{env:p}):b,m=f.cache,w=m?_object_spread_props(_object_spread({},h),{cache:m}):h,j=n.logger.scope("transformer").scope(l),k={collector:n,logger:j,id:l,ingest:e(l),config:w,env:p},[4,d(k)]);case 3:O=x.sent(),r[l]=O,x.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return C=x.sent(),a=!0,s=C,[3,8];case 7:try{o||null==i.return||i.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})}).apply(this,arguments)}(l,t.transformers||{})];case 3:return[2,(l.transformers=p.sent(),l)]}})})()},ee=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:return[4,Z(e=e||{})];case 1:return n=d.sent(),r=n,t={type:"elb",config:{},push:function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c;return _ts_generator(this,function(u){if("string"==typeof e&&e.startsWith("walker "))return i=e.replace("walker ",""),[2,r.command(i,n,t)];if("string"==typeof e)c={name:e},n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=n);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,F({ok:!1})];c=e,n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=_object_spread({},c.data||{},n))}return[2,(o&&"object"==(void 0===o?"undefined":_type_of(o))&&(c.context=o),a&&Array.isArray(a)&&(c.nested=a),s&&"object"==(void 0===s?"undefined":_type_of(s))&&(c.custom=s),r.push(c))]})})()}},n.sources.elb=t,[4,T(n,e.sources||{})];case 2:return o=d.sent(),Object.assign(n.sources,o),a=e.consent,s=e.user,i=e.globals,c=e.custom,a?[4,n.command("consent",a)]:[3,4];case 3:d.sent(),d.label=4;case 4:return s?[4,n.command("user",s)]:[3,6];case 5:d.sent(),d.label=6;case 6:return i&&Object.assign(n.globals,i),c&&Object.assign(n.custom,c),n.config.run?[4,n.command("run")]:[3,8];case 7:d.sent(),d.label=8;case 8:return u=t.push,l=Object.values(n.sources).filter(function(e){return"elb"!==e.type}),[2,((f=l.find(function(e){return e.config.primary}))?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u})]}})})()},ne=Object.defineProperty,te=Object.getOwnPropertyDescriptor,re=Object.getOwnPropertyNames,oe=Object.prototype.hasOwnProperty,ae=function(e,n){for(var t in n)ne(e,t,{get:n[t],enumerable:!0})},se={};ae(se,{DEFAULT_CATEGORY_MAP:function(){return Ve},SourceCookiePro:function(){return ie},analyticsOnlyConsent:function(){return fe},analyticsOnlyMapped:function(){return be},createMockElbFn:function(){return we},createMockOneTrustAPI:function(){return ke},createTrigger:function(){return ze},customCategoryConsent:function(){return pe},default:function(){return $e},emptyConsent:function(){return _e},fullConsent:function(){return ce},fullConsentMapped:function(){return ve},marketingOnlyConsent:function(){return de},marketingOnlyMapped:function(){return he},minimalConsent:function(){return le},minimalConsentMapped:function(){return ye},noopLogger:function(){return je},partialConsent:function(){return ue},partialConsentMapped:function(){return ge},sourceCookiePro:function(){return Ye},step:function(){return Oe},trigger:function(){return Je}});var ie={},ce=",C0001,C0002,C0003,C0004,C0005,",ue=",C0001,C0003,",le=",C0001,",fe=",C0001,C0002,",de=",C0001,C0004,",_e="",pe=",C0001,CUSTOM01,CUSTOM02,",ve={functional:!0,analytics:!0,marketing:!0},ge={functional:!0,analytics:!1,marketing:!1},ye={functional:!0,analytics:!1,marketing:!1},be={functional:!0,analytics:!0,marketing:!1},he={functional:!0,analytics:!1,marketing:!0},me=function(){},we=function(){return function(){return Promise.resolve({ok:!0})}},je={error:me,warn:me,info:me,debug:me,throw:function(e){throw"string"==typeof e?new Error(e):e},json:me,scope:function(){return je}},ke=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return{IsAlertBoxClosed:function(){return e}}},Oe={};ae(Oe,{categoryMapOverride:function(){return xe},fullConsent:function(){return Ce},minimalConsent:function(){return Se},sdkLoadedDetection:function(){return Ae}});var Ce={trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},Se={trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},xe={description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},Ae={description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},Pe=Object.defineProperty;!function(e,n){for(var t in n)Pe(e,t,{get:n[t],enumerable:!0})}({},{Level:function(){return Ie}});var Ee,Ie=((Ee=Ie||{})[Ee.ERROR=0]="ERROR",Ee[Ee.WARN=1]="WARN",Ee[Ee.INFO=2]="INFO",Ee[Ee.DEBUG=3]="DEBUG",Ee),De={merge:!0,shallow:!0,extend:!0};function qe(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)return e;if(n.has(e))return n.get(e);var t=Object.prototype.toString.call(e);if("[object Object]"===t){var r={};for(var o in n.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=qe(e[o],n));return r}if("[object Array]"===t){var a=[];return n.set(e,a),e.forEach(function(e){a.push(qe(e,n))}),a}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){var s=e;return new RegExp(s.source,s.flags)}return e}function Me(e){for(var n=arguments.length>2?arguments[2]:void 0,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),a=e,s=0;s<o.length;s++){var i=o[s];if("*"===i&&t(a)){var c=o.slice(s+1).join("."),u=[],l=!0,f=!1,d=void 0;try{for(var _,p=a[Symbol.iterator]();!(l=(_=p.next()).done);l=!0){var v=Me(_.value,c,n);u.push(v)}}catch(e){f=!0,d=e}finally{try{l||null==p.return||p.return()}finally{if(f)throw d}}return u}if(void 0===(a=_instanceof(a,Object)?a[i]:void 0))break}return r(a)?a:n}var Te={data:function(e){return e.data},globals:function(e){return e.globals},context:function(e){return e.context},user:function(e){return e.user},source:function(e){return e.source},version:function(e){return e.version},event:function(e){return{entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,group:e.group,count:e.count,timing:e.timing}}},Re=function(e,n,t,r){var o="".concat(Ie[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(t).length>0,s=0===e?console.error:1===e?console.warn:console.log;a?s(o,n,t):s(o,n)};function Ge(e){var n=e.level,t=e.handler,r=e.jsonHandler,o=e.scope,a=function(e,r,a){if(e<=n){var s=d(r,a);t?t(e,s.message,s.context,o,Re):Re(e,s.message,s.context,o)}};return{error:function(e,n){return a(0,e,n)},warn:function(e,n){return a(1,e,n)},info:function(e,n){return a(2,e,n)},debug:function(e,n){return a(3,e,n)},throw:function(e,n){var r=d(e,n);throw t?t(0,r.message,r.context,o,Re):Re(0,r.message,r.context,o),new Error(r.message)},json:function(e){r?r(e):console.log(JSON.stringify(e,null,2))},scope:function(e){return Ge({level:n,handler:t,jsonHandler:r,scope:_to_consumable_array(o).concat([e])})}}}function Ne(e){return function(e){return"boolean"==typeof e}(e)||s(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!r(e)||t(e)&&e.every(Ne)||a(e)&&Object.values(e).every(Ne)}function Be(e,n){return _async_to_generator(function(e,n){var o,a,i,u=arguments;return _ts_generator(this,function(l){return a=(o=u.length>2&&void 0!==u[2]?u[2]:{}).collector,i=o.consent,[2,(t(n)?n:[n]).reduce(function(n,u){return _async_to_generator(function(){var l,f,d,_,v,y,h,m,w,j,k,O,C,S,x,A,P,E,I,D,q;return _ts_generator(this,function(M){switch(M.label){case 0:return[4,n];case 1:return(l=M.sent())?[2,l]:(f=s(u)?{key:u}:u,Object.keys(f).length?(d=f.condition,_=f.consent,v=f.fn,y=f.key,h=f.loop,m=f.map,w=f.set,j=f.validate,k=f.value,(O=d)?[4,g(d)(e,u,a)]:[3,3]):[2]);case 2:O=!M.sent(),M.label=3;case 3:return O?[2]:_&&!c(_,i)?[2,k]:(C=r(k)?k:e,v?[4,g(v)(e,u,o)]:[3,5]);case 4:C=M.sent(),M.label=5;case 5:return y&&(C=Me(e,y,k)),h?(S=_sliced_to_array(h,2),x=S[0],A=S[1],"this"!==x?[3,6]:(E=[e],[3,8])):[3,11];case 6:return[4,b(e,x,o)];case 7:E=M.sent(),M.label=8;case 8:return t(P=E)?[4,Promise.all(P.map(function(e){return b(e,A,o)}))]:[3,10];case 9:C=M.sent().filter(r),M.label=10;case 10:return[3,17];case 11:return m?[4,Object.entries(m).reduce(function(n,t){var a=_sliced_to_array(t,2),s=a[0],i=a[1];return _async_to_generator(function(){var t,a;return _ts_generator(this,function(c){switch(c.label){case 0:return[4,n];case 1:return t=c.sent(),[4,b(e,i,o)];case 2:return a=c.sent(),[2,(r(a)&&(t[s]=a),t)]}})})()},Promise.resolve({}))]:[3,13];case 12:return C=M.sent(),[3,16];case 13:return(I=w)?[4,Promise.all(w.map(function(n){return Be(e,n,o)}))]:[3,15];case 14:I=C=M.sent(),M.label=15;case 15:M.label=16;case 16:M.label=17;case 17:return(D=j)?[4,g(j)(C)]:[3,19];case 18:D=!M.sent(),M.label=19;case 19:return D&&(C=void 0),q=p(C),[2,r(q)?q:p(k)]}})})()},Promise.resolve(void 0))]})}).apply(this,arguments)}function Ue(e){if("*"===e)return function(){return!0};if("and"in e){var n=e.and.map(Ue);return function(e){return n.every(function(n){return n(e)})}}if("or"in e){var t=e.or.map(Ue);return function(e){return t.some(function(n){return n(e)})}}return function(e){var n=e.key,t=e.operator,r=e.value,o=e.not,a=function(e,n){switch(e){case"eq":return function(e){return String(null!=e?e:"")===n};case"contains":return function(e){return String(null!=e?e:"").includes(n)};case"prefix":return function(e){return String(null!=e?e:"").startsWith(n)};case"suffix":return function(e){return String(null!=e?e:"").endsWith(n)};case"regex":var t=new RegExp(n);return function(e){return t.test(String(null!=e?e:""))};case"gt":var r=Number(n);return function(e){return Number(e)>r};case"lt":var o=Number(n);return function(e){return Number(e)<o};case"exists":return function(e){return null!=e}}}(t,r);return function(e){var t=Me(e,n),r=a(t);return o?!r:r}}(e)}function He(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return w(e)?{type:"routes",routes:e.map(function(e){return{match:Ue(e.match),next:He(e.next)}})}:{type:"chain",value:e}}}}function We(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;var t=!0,r=!1,o=void 0;try{for(var a,s=e.routes[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i=a.value;if(i.match(n))return We(i.next,n)}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}}}var Le={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function Ke(n,t,r,o,a,s,i){return _async_to_generator(function(){var c,u,l,f,d,_,p,v,y,b;return _ts_generator(this,function(h){switch(h.label){case 0:i&&(null==a?void 0:a._meta)&&(a._meta.chainPath=i),c=o,u=s,l=!0,f=!1,d=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),_=function(){var o,s,l,f,d,_,p,y,b,h,m,S,P,q,M,T,R,G,N,B,U,H,W,L,K,F,z,J,V,Y,$,Q,X,Z,ee,ne,te,re,oe,ae,se;return _ts_generator(this,function(ie){switch(ie.label){case 0:return o=v.value,(p=t[o])?a&&a._meta&&a._meta.path.length>256?[2,{v:(n.logger.error("Max path length exceeded at ".concat(o)),{event:null,respond:u})}]:(a&&a._meta&&(a._meta.hops++,a._meta.path.push(o)),[4,g(I)(n,p,o)]):(n.logger.warn("Transformer not found: ".concat(o)),[2,"continue"]);case 1:if(!ie.sent())return[2,{v:(n.logger.error("Transformer init failed: ".concat(o)),{event:null,respond:u})}];if(i&&void 0!==(null===(l=p.config)||void 0===l||null===(s=l.chainMocks)||void 0===s?void 0:s[i]))return y=p.config.chainMocks[i],n.logger.scope("transformer:".concat(p.type||"unknown")).debug("chainMock",{chain:i}),c=y,[2,"continue"];if(void 0!==(null===(f=p.config)||void 0===f?void 0:f.mock))return n.logger.scope("transformer:".concat(p.type||"unknown")).debug("mock"),c=p.config.mock,[2,"continue"];if(null===(d=p.config)||void 0===d?void 0:d.disabled)return[2,"continue"];if(b=null===(_=p.config)||void 0===_?void 0:_.cache,h=b?k(b):void 0,m=h?x(h,n):void 0,S=void 0,h&&m){if(P=j(a,c),"HIT"===(null==(q=O(h,m,P,"t:".concat(o)))?void 0:q.status)&&q.value)return c=q.value,h.full?[2,{v:{event:c,respond:u}}]:[2,"continue"];"MISS"===(null==q?void 0:q.status)&&(S={key:q.key,ttl:q.rule.ttl})}return(M=p.config.before)&&(T=E("string"==typeof M||Array.isArray(M)&&!w(M)?M:We(He(M),j(a,c))||void 0,A(t))).length>0?[4,Ke(n,t,T,c,a,u,i)]:[3,3];case 2:if(null===(G=ie.sent()).event)return[2,{v:{event:null,respond:null!==(R=G.respond)&&void 0!==R?R:u}}];G.respond&&(u=G.respond),c=Array.isArray(G.event)?G.event[0]:G.event,ie.label=3;case 3:return[4,g(D,function(e){return n.logger.scope("transformer:".concat(p.type||"unknown")).error("Push failed",{error:e}),!1})(n,p,o,c,a,u)];case 4:return!1===(N=ie.sent())?[2,{v:{event:null,respond:u}}]:Array.isArray(N)?(B=r.slice(r.indexOf(o)+1),[4,Promise.all(N.map(function(r){return _async_to_generator(function(){var o,s,l,f,d;return _ts_generator(this,function(_){return o=r.event||c,s=a?_object_spread_props(_object_spread({},a),{_meta:_object_spread_props(_object_spread({},a._meta),{path:_to_consumable_array(a._meta.path)})}):e("unknown"),r.next?(l=r.next,w(r.next)&&(f=He(r.next),l=We(f,j(s,o))),l&&(d=E(l,A(t))).length>0?[2,Ke(n,t,d,o,s,u,i)]:[2,{event:o,respond:u}]):[2,B.length>0?Ke(n,t,B,o,s,u,i):{event:o,respond:u}]})})()}))]):[3,6];case 5:U=ie.sent(),H=u,W=[],L=!0,K=!1,F=void 0;try{for(z=U.flat()[Symbol.iterator]();!(L=(J=z.next()).done);L=!0)if(null!==(V=J.value))if(V&&"object"==(void 0===V?"undefined":_type_of(V))&&"event"in V){if(($=V).respond&&(H=$.respond),null===$.event)continue;Array.isArray($.event)?(Y=W).push.apply(Y,_to_consumable_array($.event)):W.push($.event)}else W.push(V)}catch(e){K=!0,F=e}finally{try{L||null==z.return||z.return()}finally{if(K)throw F}}return[2,{v:0===W.length?{event:null,respond:H}:1===W.length?{event:W[0],respond:H}:{event:W,respond:H}}];case 6:if(N&&"object"==(void 0===N?"undefined":_type_of(N))){if(Q=N.event,X=N.respond,Z=N.next,X&&(u=X),Z)return ee=Z,!w(Z)||(ne=He(Z),ee=We(ne,j(a,c)))?[2,{v:(te=E(ee,A(t))).length>0?Ke(n,t,te,Q||c,a,u,i):(n.logger.warn("Branch target not found: ".concat(JSON.stringify(Z))),{event:null,respond:u})}]:(Q&&(c=Q),[2,"continue"]);Q&&(c=Q)}return S&&m&&C(m,S.key,c,S.ttl),(!N||"object"==(void 0===N?"undefined":_type_of(N))&&!N.next)&&p.config.next&&w(p.config.next)?(re=p.config.next,oe=He(re),(ae=We(oe,j(a,c)))&&(se=E(ae,A(t))).length>0?[2,{v:Ke(n,t,se,c,a,u,i)}]:[2,{v:{event:c,respond:u}}]):[2]}})},p=r[Symbol.iterator](),h.label=2;case 2:return(l=(v=p.next()).done)?[3,5]:[5,_ts_values(_())];case 3:if("object"===_type_of(y=h.sent()))return[2,y.v];h.label=4;case 4:return l=!0,[3,2];case 5:return[3,8];case 6:return b=h.sent(),f=!0,d=b,[3,8];case 7:try{l||null==p.return||p.return()}finally{if(f)throw d}return[7];case 8:return[2,{event:c,respond:u}]}})})()}var Fe,ze=function(e){return _async_to_generator(function(){var n,t;return _ts_generator(this,function(r){return t=function(){return function(t){return _async_to_generator(function(){var r,o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return(r=window).OptanonActiveGroups=t,r.OneTrust={IsAlertBoxClosed:function(){return!0}},n?[3,2]:[4,ee(_object_spread_props(_object_spread({},e),{run:null===(o=e.run)||void 0===o||o}))];case 1:a=s.sent(),n={collector:a.collector,elb:a.elb},s.label=2;case 2:return[2]}})})()}},[2,{get flow(){return n},trigger:t}]})})()},Je=function(e,n){var t=n.window;"string"==typeof e&&(t.OptanonActiveGroups=e,t.OneTrust={IsAlertBoxClosed:function(){return!0}})},Ve={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},Ye=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f,d,_,p,v,g,y,b,h,m,w,j,k,O;return _ts_generator(this,function(C){return c=e.config,u=e.env,l=u.elb,f=null!==(n=u.window)&&void 0!==n?n:void 0!==globalThis.window?globalThis.window:void 0,d=_object_spread({},Ve,null!==(t=null==c||null===(a=c.settings)||void 0===a?void 0:a.categoryMap)&&void 0!==t?t:{}),_={},Object.entries(d).forEach(function(e){var n=_sliced_to_array(e,2),t=n[0],r=n[1];_[t.toLowerCase()]=r}),p={categoryMap:d,explicitOnly:null===(r=null==c||null===(s=c.settings)||void 0===s?void 0:s.explicitOnly)||void 0===r||r,globalName:null!==(o=null==c||null===(i=c.settings)||void 0===i?void 0:i.globalName)&&void 0!==o?o:"OneTrust"},v={settings:p},b=!1,f&&(m=null!==(h=p.globalName)&&void 0!==h?h:"OneTrust",w=new Set(Object.values(_)),j=function(e){var n={};return w.forEach(function(e){n[e]=!1}),e.split(",").filter(function(e){return e.length>0}).forEach(function(e){var t=_[e.toLowerCase()];t&&(n[t]=!0)}),n},k=function(){var e=f.OptanonActiveGroups;if(null!=e){if(p.explicitOnly){var n=f[m];if((null==n?void 0:n.IsAlertBoxClosed)&&!n.IsAlertBoxClosed())return}var t=j(e);Object.keys(t).length>0&&l("walker consent",t)}},(O=f[m])&&void 0!==f.OptanonActiveGroups&&k(),O||(y=f.OptanonWrapper,b=!0,f.OptanonWrapper=function(){y&&y(),k(),f.OptanonWrapper=y,b=!1}),g=function(){k()},f.addEventListener("OneTrustGroupsUpdated",g)),[2,{type:"cookiepro",config:v,push:l,destroy:function(e){return _async_to_generator(function(){return _ts_generator(this,function(e){return f&&g&&f.removeEventListener("OneTrustGroupsUpdated",g),f&&b&&(f.OptanonWrapper=y),[2]})})()}}]})})()},$e=Ye;return Fe=se,function(e,n,t,r){if(n&&"object"===(void 0===n?"undefined":_type_of(n))||"function"==typeof n){var o=!0,a=!1,s=void 0;try{for(var i,c=function(){var o=i.value;oe.call(e,o)||o===t||ne(e,o,{get:function(){return n[o]},enumerable:!(r=te(n,o))||r.enumerable})},u=re(n)[Symbol.iterator]();!(o=(i=u.next()).done);o=!0)c()}catch(e){a=!0,s=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw s}}}return e}(ne({},"__esModule",{value:!0}),Fe)}();
|
|
1
|
+
"use strict";function _array_like_to_array(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function asyncGeneratorStep(e,n,t,r,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void t(e)}i.done?n(c):Promise.resolve(c).then(r,o)}function _async_to_generator(e){return function(){var n=this,t=arguments;return new Promise(function(r,o){var a=e.apply(n,t);function s(e){asyncGeneratorStep(a,r,o,s,i,"next",e)}function i(e){asyncGeneratorStep(a,r,o,s,i,"throw",e)}s(void 0)})}}function _define_property(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function _instanceof(e,n){return null!=n&&"undefined"!=typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,a=[],s=!0,i=!1;try{for(t=t.call(e);!(s=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==t.return||t.return()}finally{if(i)throw o}}return a}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){_define_property(e,n,t[n])})}return e}function ownKeys(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,r)}return t}function _object_spread_props(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e}function _sliced_to_array(e,n){return _array_with_holes(e)||_iterable_to_array_limit(e,n)||_unsupported_iterable_to_array(e,n)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,n){if(e){if("string"==typeof e)return _array_like_to_array(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(t):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_array_like_to_array(e,n):void 0}}function _ts_generator(e,n){var t,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:c(0)}),i(s,"throw",{value:c(1)}),i(s,"return",{value:c(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function c(i){return function(c){return function(i){if(t)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(t=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=n.call(e,a)}catch(e){i=[6,e],r=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function _ts_values(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],r=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}var SourceCookiePro=function(){var e=function(e){return{_meta:{hops:0,path:[e]}}},n=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t=_object_spread({},De,t);var r=Object.entries(n).reduce(function(n,r){var o=_sliced_to_array(r,2),a=o[0],s=o[1],i=e[a];return t.merge&&Array.isArray(i)&&Array.isArray(s)?n[a]=s.reduce(function(e,n){return e.includes(n)?e:_to_consumable_array(e).concat([n])},_to_consumable_array(i)):(t.extend||a in e)&&(n[a]=s),n},{});return t.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},t=function(e){return Array.isArray(e)},r=function(e){return void 0!==e},o=function(e){return"function"==typeof e},a=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!t(e)&&"[object Object]"===Object.prototype.toString.call(e)},s=function(e){return"string"==typeof e},i=function(e,n,t){if(!a(e))return e;for(var r=qe(e),o=n.split("."),s=r,i=0;i<o.length;i++){var c=o[i];i===o.length-1?s[c]=t:(c in s&&"object"==_type_of(s[c])&&null!==s[c]||(s[c]={}),s=s[c])}return r},c=function(e){var n=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),t={},r=!e||0===Object.keys(e).length;return Object.keys(n).forEach(function(o){n[o]&&(t[o]=!0,e&&e[o]&&(r=!0))}),!!r&&t},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,n=arguments.length>1?arguments[1]:void 0;if(n){for(var t=n.length,r="",o=0;o<e;o++)r+=n[Math.random()*t|0];return r}for(var a="";a.length<e;)a+=(36*Math.random()|0).toString(36);return a},l=function(e){var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=null,a=!1;return function(){for(var s=arguments.length,i=new Array(s),c=0;c<s;c++)i[c]=arguments[c];return new Promise(function(s){var c=r&&!a;o&&clearTimeout(o),o=setTimeout(function(){o=null,r&&!a||(n=e.apply(void 0,_to_consumable_array(i)),s(n))},t),c&&(a=!0,n=e.apply(void 0,_to_consumable_array(i)),s(n))})}},f=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},d=function(e,n){var t,r={};return _instanceof(e,Error)?(t=e.message,r.error=f(e)):t=e,void 0!==n&&(_instanceof(n,Error)?r.error=f(n):"object"==(void 0===n?"undefined":_type_of(n))&&null!==n?"error"in(r=_object_spread({},r,n))&&_instanceof(r.error,Error)&&(r.error=f(r.error)):r.value=n),{message:t,context:r}},_=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Ge({level:void 0!==n.level?(e=n.level,"string"==typeof e?Ie[e]:e):0,handler:n.handler,jsonHandler:n.jsonHandler,scope:[]})},p=function(e){return Ne(e)?e:void 0},g=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!n)return;return n(e)}finally{null==t||t()}}},v=function(e,n,t){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return _async_to_generator(function(){var r;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return r=a.sent(),n?[4,n(r)]:[2];case 4:return[4,null==t?void 0:t()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},y=function(e,n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d;return _ts_generator(this,function(_){return o=_sliced_to_array((e.name||"").split(" "),2),a=o[0],s=o[1],n&&a&&s?(c="",l=s,f=function(n){if(n)return(n=t(n)?n:[n]).find(function(n){return!n.condition||n.condition(e)})},n[u=a]||(u="*"),[2,((d=n[u])&&(d[l]||(l="*"),i=f(d[l])),i||(u="*",l="*",i=f(null===(r=n[u])||void 0===r?void 0:r[l])),i&&(c="".concat(u," ").concat(l)),{eventMapping:i,mappingKey:c})]):[2,{}]})})()},b=function(e){return _async_to_generator(function(e){var n,o,s,i,c,u,l,f,d,_,p,g,y,b=arguments;return _ts_generator(this,function(h){switch(h.label){case 0:if(n=b.length>1&&void 0!==b[1]?b[1]:{},o=b.length>2&&void 0!==b[2]?b[2]:{},!r(e))return[2];i=a(e)&&e.consent||o.consent||(null===(s=o.collector)||void 0===s?void 0:s.consent),c=t(n)?n:[n],u=!0,l=!1,f=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),d=c[Symbol.iterator](),h.label=2;case 2:return(u=(_=d.next()).done)?[3,5]:(p=_.value,[4,v(Be)(e,p,_object_spread_props(_object_spread({},o),{consent:i}))]);case 3:if(g=h.sent(),r(g))return[2,g];h.label=4;case 4:return u=!0,[3,2];case 5:return[3,8];case 6:return y=h.sent(),l=!0,f=y,[3,8];case 7:try{u||null==d.return||d.return()}finally{if(l)throw f}return[7];case 8:return[2]}})}).apply(this,arguments)},h=function(e,t,r){return _async_to_generator(function(){var o,s,c,u,l,f,d,_,p,g,v;return _ts_generator(this,function(h){switch(h.label){case 0:return t.policy?[4,Promise.all(Object.entries(t.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,2];case 1:h.sent(),h.label=2;case 2:return[4,y(e,t.mapping)];case 3:return s=h.sent(),c=s.eventMapping,u=s.mappingKey,(null==c?void 0:c.policy)?[4,Promise.all(Object.entries(c.policy).map(function(n){var t=_sliced_to_array(n,2),o=t[0],a=t[1];return _async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,b(e,a,{collector:r})];case 1:return n=t.sent(),e=i(e,o,n),[2]}})})()}))]:[3,5];case 4:h.sent(),h.label=5;case 5:return(f=t.data)?[4,b(e,t.data,{collector:r})]:[3,7];case 6:f=h.sent(),h.label=7;case 7:return l=f,d=Boolean(null==c?void 0:c.skip),c?c.ignore?[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!0,skip:d}]:(c.name&&(e.name=c.name),c.data?(p=c.data)?[4,b(e,c.data,{collector:r})]:[3,9]:[3,10]):[3,10];case 8:p=h.sent(),h.label=9;case 9:_=p,l=a(l)&&a(_)?n(l,_):_,h.label=10;case 10:return(g=null!==(o=null==c?void 0:c.include)&&void 0!==o?o:t.include)&&g.length>0&&(v=function(e,n){var t={},r=n.includes("all")?Object.keys(Te):n,o=!0,s=!1,i=void 0;try{for(var c,u=r[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){var l=c.value,f=Te[l];if(f){var d=f(e),_=!0,p=!1,g=void 0;if(a(d))try{for(var v,y=Object.entries(d)[Symbol.iterator]();!(_=(v=y.next()).done);_=!0){var b=_sliced_to_array(v.value,2),h=b[0],m=b[1];if(void 0!==m){var w="context"===l&&Array.isArray(m)?m[0]:m;t["".concat(l,"_").concat(h)]=w}}}catch(e){p=!0,g=e}finally{try{_||null==y.return||y.return()}finally{if(p)throw g}}}}}catch(e){s=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(s)throw i}}return t}(e,g),Object.keys(v).length>0&&(l=a(l)?n(v,l):null!=l?l:v)),[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!1,skip:d}]}})})()},m=function(e,n,t,r){return function(){for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];var i,c="pre"+n,u="post"+n,l=t[c],f=t[u],d=function(e,n){r?r.warn(e,{error:n}):console.warn(e,n)};if(l)try{i=l.apply(void 0,[{fn:e}].concat(_to_consumable_array(a)))}catch(n){d("Hook ".concat(String(c)," failed, falling back to original function"),n),i=e.apply(void 0,_to_consumable_array(a))}else i=e.apply(void 0,_to_consumable_array(a));if(f)try{i=f.apply(void 0,[{fn:e,result:i}].concat(_to_consumable_array(a)))}catch(e){d("Hook ".concat(String(u)," failed, keeping original result"),e)}return i}},w=function(e){return Array.isArray(e)&&e.length>0&&"object"==_type_of(e[0])&&null!==e[0]&&"match"in e[0]},j=function(e,n){var t={ingest:null!=e?e:{}};return void 0!==n&&(t.event=n),t},k=function(e){var n;return{full:null!==(n=e.full)&&void 0!==n&&n,storeId:e.store,rules:e.rules.map(function(e){return{match:He(e.match),key:e.key,ttl:e.ttl,update:e.update}})}},O=function(e,n,t,r){var o=e.rules.find(function(e){return e.match(t)});if(!o)return null;var a=o.key.map(function(e){var n;return String(null!==(n=Me(t,e))&&void 0!==n?n:"")});if(a.every(function(e){return""===e}))return null;var s="".concat(r,":").concat(a.join(":")),i=n.get(s);return void 0!==i?{status:"HIT",key:s,value:i,rule:o}:{status:"MISS",key:s,rule:o}},C=function(e,n,t,r){e.set(n,t,1e3*r)},S=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,c,u,l,f,d,_,p;return _ts_generator(this,function(g){switch(g.label){case 0:if(!n)return[2,e];r=e,o=!0,a=!1,s=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),c=Object.entries(n)[Symbol.iterator](),g.label=2;case 2:return(o=(u=c.next()).done)?[3,5]:(l=_sliced_to_array(u.value,2),f=l[0],d=l[1],_=[r,f],[4,b(t,d)]);case 3:r=i.apply(void 0,_.concat([g.sent()])),g.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return p=g.sent(),a=!0,s=p,[3,8];case 7:try{o||null==c.return||c.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})})()},x=function(e,n){return e.storeId&&n.stores[e.storeId]?n.stores[e.storeId]:n.stores.__cache},A=function(e){var n={},t=!0,r=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i,c=_sliced_to_array(a.value,2),u=c[0],l=null===(i=c[1].config)||void 0===i?void 0:i.next;l&&!w(l)?n[u]={next:l}:n[u]={}}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}return n},P=function(e,n){var t=e.config||{},r=e[n];return void 0!==r?{config:_object_spread_props(_object_spread({},t),_define_property({},n,r)),chainValue:r}:{config:t,chainValue:void 0}},E=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return[];if(Array.isArray(e))return e;for(var t=[],r=new Set,o=e;o&&n[o]&&!r.has(o);){r.add(o),t.push(o);var a=n[o].next;if(Array.isArray(a)){var s;(s=t).push.apply(s,_to_consumable_array(a));break}o=a}return t},I=function(n,t,r){return _async_to_generator(function(){var o,a,s,i;return _ts_generator(this,function(c){switch(c.label){case 0:return!t.init||t.config.init?[3,2]:(o=t.type||"unknown",a=n.logger.scope("transformer:".concat(o)),s={collector:n,logger:a,id:r,ingest:e(r),config:t.config,env:q(t.config.env)},a.debug("init"),[4,m(t.init,"TransformerInit",n.hooks,n.logger)(s)]);case 1:if(!1===(i=c.sent()))return[2,!1];t.config=_object_spread_props(_object_spread({},i||t.config),{env:(null==i?void 0:i.env)||t.config.env,init:!0}),a.debug("init done"),c.label=2;case 2:return[2,!0]}})})()},D=function(e,n,t,r,o,a){return _async_to_generator(function(){var s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return s=n.type||"unknown",i=e.logger.scope("transformer:".concat(s)),c={collector:e,logger:i,id:t,ingest:o,config:n.config,env:_object_spread({},q(n.config.env),a?{respond:a}:{})},i.debug("push",{event:r.name}),[4,m(n.push,"TransformerPush",e.hooks,e.logger)(r,c)];case 1:return u=l.sent(),[2,(i.debug("push done"),u)]}})})()},q=function(e){return e&&a(e)?e:{}},M=function(n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,p,g,y,h,m,P,I,D,q,M,T,R,G;return _ts_generator(this,function(N){switch(N.label){case 0:return a=r.code,s=r.config,i=void 0===s?{}:s,c=r.env,u=void 0===c?{}:c,l=r.primary,f=r.next,d=r.before,_=r.cache,g=e(t),y=_?k(_object_spread_props(_object_spread({},_),{full:null===(o=_.full)||void 0===o||o})):void 0,h=Ue(f),m=Array.isArray(f)&&w(f)||!h?void 0:E(We(h),A(n.transformers)),P=Ue(d),I=Array.isArray(d)&&w(d)||!P?void 0:E(We(P),A(n.transformers)),D=n.logger.scope("source").scope(t),q=_object_spread({push:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,v,b,w,k,D,q;return _ts_generator(this,function(M){switch(M.label){case 0:return a=e,(s=null!=I?I:P?E(We(P,j(g)),A(n.transformers)):[]).length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,s,a,g,p,"source.".concat(t,".before"))]:[3,2];case 1:if(null===(c=M.sent()).event)return[2,{ok:!0}];c.respond&&(p=c.respond),a=Array.isArray(c.event)?c.event[0]:c.event,M.label=2;case 2:return y&&(u=x(y,n))?(l=j(g),(f=O(y,u,l,"s:".concat(t)))?"HIT"===f.status&&void 0!==f.value&&y.full?(d=f.value,f.rule.update?[4,S(d,f.rule.update,_object_spread_props(_object_spread({},l),{cache:{status:"HIT"}}))]:[3,4]):[3,5]:[3,6]):[3,6];case 3:d=M.sent(),M.label=4;case 4:return[2,(null==p||p(d),{ok:!0})];case 5:"MISS"===f.status&&y.full&&p&&(_=p,v=f.rule.update,b=_object_spread_props(_object_spread({},l),{cache:{status:"MISS"}}),w=f.key,k=f.rule.ttl,p=function(e){C(u,w,e,k),v?o=_async_to_generator(function(){var n;return _ts_generator(this,function(t){switch(t.label){case 0:return[4,S(e,v,b)];case 1:return n=t.sent(),_(n),[2]}})})():_(e)}),"MISS"!==f.status||y.full||C(u,f.key,!0,f.rule.ttl),M.label=6;case 6:return D=null!=m?m:h?E(We(h,j(g)),A(n.transformers)):[],[4,n.push(a,_object_spread_props(_object_spread({},r),{id:t,ingest:g,respond:p,mapping:i,preChain:D}))];case 7:return q=M.sent(),o?[4,o]:[3,9];case 8:M.sent(),M.label=9;case 9:return[2,q]}})})()},command:n.command,sources:n.sources,elb:n.sources.elb.push,logger:D},u),M={collector:n,logger:D,id:t,config:i,env:q,setIngest:function(r){return _async_to_generator(function(){var o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return i.ingest?[4,b(r,i.ingest,{collector:n})]:[2,void(g=e(t))];case 1:return o=s.sent(),a=e(t),g=_object_spread_props(_object_spread({},a,o),{_meta:a._meta}),[2]}})})()},setRespond:function(e){p=e}},[4,v(a)(M)];case 1:return(T=N.sent())?(R=T.type||"unknown",G=n.logger.scope(R).scope(t),[2,(q.logger=G,l&&(T.config=_object_spread_props(_object_spread({},T.config),{primary:l})),T)]):[2]}})})()},T=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,p,g=arguments;return _ts_generator(this,function(v){switch(v.label){case 0:n=g.length>1&&void 0!==g[1]?g[1]:{},t={},r=!0,o=!1,a=void 0,v.label=1;case 1:v.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),v.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.config,(d=void 0===f?{}:f).require&&d.require.length>0?(e.pending.sources[u]=l,[3,4]):[4,M(e,u,l)]);case 3:(_=v.sent())&&(t[u]=_),v.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return p=v.sent(),o=!0,a=p,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)},R=function(e,n,r){return _async_to_generator(function(){var o,a,s;return _ts_generator(this,function(i){return o=e.on,a=o[n]||[],(s=t(r)?r:[r]).forEach(function(e){a.push(e)}),o[n]=a,N(e,n,s),[2]})})()},G=function(e,n,t,r,o){if(n.on){var a=n.type||"unknown",s=e.logger.scope(a).scope("on").scope(r),i={collector:e,logger:s,id:t,config:n.config,data:o,env:V(n.env,n.config.env)};g(n.on)(r,i)}},N=function(e,n,t,r){var o,a,s,i;switch(n){case Le.Commands.Consent:o=r||e.consent;break;case Le.Commands.Session:o=e.session;break;case Le.Commands.User:o=r||e.user;break;case Le.Commands.Custom:o=r||e.custom;break;case Le.Commands.Globals:o=r||e.globals;break;case Le.Commands.Config:o=r||e.config;break;case Le.Commands.Ready:case Le.Commands.Run:default:o=void 0}if(t.length)switch(n){case Le.Commands.Consent:a=e,s=t,i=r||a.consent,s.forEach(function(e){Object.keys(i).filter(function(n){return n in e}).forEach(function(n){g(e[n])(a,i)})});break;case Le.Commands.Ready:case Le.Commands.Run:!function(e,n){e.allowed&&n.forEach(function(n){g(n)(e)})}(e,t);break;case Le.Commands.Session:!function(e,n){e.session&&n.forEach(function(n){g(n)(e,e.session)})}(e,t);break;default:t.forEach(function(n){"function"==typeof n&&g(n)(e,o)})}},B=function(e,n,t,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,p;return _ts_generator(this,function(g){switch(g.label){case 0:switch(a=t||[],t||(a=e.on[n]||[]),n){case Le.Commands.Consent:o=r||e.consent;break;case Le.Commands.Session:o=e.session;break;case Le.Commands.User:o=r||e.user;break;case Le.Commands.Custom:o=r||e.custom;break;case Le.Commands.Globals:o=r||e.globals;break;case Le.Commands.Config:o=r||e.config;break;case Le.Commands.Ready:case Le.Commands.Run:default:o=void 0}s=!1,i=!0,c=!1,u=void 0,g.label=1;case 1:g.trys.push([1,6,7,8]),l=Object.values(e.sources)[Symbol.iterator](),g.label=2;case 2:return(i=(f=l.next()).done)?[3,5]:(d=f.value).on?(_=!1,[4,v(d.on)(n,o)]):[3,4];case 3:_===g.sent()&&(s=!0),g.label=4;case 4:return i=!0,[3,2];case 5:return[3,8];case 6:return p=g.sent(),c=!0,u=p,[3,8];case 7:try{i||null==l.return||l.return()}finally{if(c)throw u}return[7];case 8:return Object.entries(e.destinations).forEach(function(t){var r=_sliced_to_array(t,2),a=r[0],s=r[1];if(s.on){if(!s.config.init)return s.queueOn=s.queueOn||[],void s.queueOn.push({type:n,data:o});G(e,s,a,n,o)}}),Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0?[4,(y=e,b=n,_async_to_generator(function(){var e,n,t,r,o,a,s,i,c,u,l,f,d,_,p,g,v,h,m,w,j,k,O,C,S;return _ts_generator(this,function(x){switch(x.label){case 0:e=!0,n=!1,t=void 0,x.label=1;case 1:x.trys.push([1,6,7,8]),r=Object.entries(y.pending.sources)[Symbol.iterator](),x.label=2;case 2:return(e=(o=r.next()).done)?[3,5]:(a=_sliced_to_array(o.value,2),s=a[0],i=a[1],!y.pending.sources[s]||y.sources[s]?[3,4]:(u=null===(c=i.config)||void 0===c?void 0:c.require)?-1===(l=u.indexOf(b))?[3,4]:(u.splice(l,1),u.length>0?[3,4]:(delete y.pending.sources[s],[4,M(y,s,i)])):[3,4]);case 3:(f=x.sent())&&(y.sources[s]=f),x.label=4;case 4:return e=!0,[3,2];case 5:return[3,8];case 6:return d=x.sent(),n=!0,t=d,[3,8];case 7:try{e||null==r.return||r.return()}finally{if(n)throw t}return[7];case 8:_=!0,p=!1,g=void 0;try{for(v=Object.entries(y.pending.destinations)[Symbol.iterator]();!(_=(h=v.next()).done);_=!0)m=_sliced_to_array(h.value,2),w=m[0],j=m[1],y.pending.destinations[w]&&!y.destinations[w]&&(O=null===(k=j.config)||void 0===k?void 0:k.require)&&-1!==(C=O.indexOf(b))&&(O.splice(C,1),O.length>0||(delete y.pending.destinations[w],!1!==(S=z(j)).config.queue&&(S.queuePush=_to_consumable_array(y.queue)),y.destinations[w]=S))}catch(e){p=!0,g=e}finally{try{_||null==v.return||v.return()}finally{if(p)throw g}}return[2]}})})())]:[3,10];case 9:g.sent(),g.label=10;case 10:return[2,(N(e,n,a,r),!s)]}var y,b})})()},H=function(e,n,t,r){if(!e)return[];if(n){var o=We(n,j(r));return o?E(o,A(t)):[]}return E(e,A(t))},U=function(e,n,t){return _async_to_generator(function(){var r,a,s,i,c,l,f,d,_,p,g,v;return _ts_generator(this,function(y){if(r=n.code,a=n.config,s=void 0===a?{}:a,i=n.env,c=void 0===i?{}:i,l=n.before,f=n.next,d=n.cache,!o(r.push))return[2,F({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}})];if(_=t||s||{init:!1},p=l?_object_spread_props(_object_spread({},_),{before:l}):_object_spread({},_),f&&(p=_object_spread_props(_object_spread({},p),{next:f})),d&&(p=_object_spread_props(_object_spread({},p),{cache:d})),g=_object_spread_props(_object_spread({},r),{config:p,env:V(r.env,c)}),!(v=g.config.id))do{v=u(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[v]);return[2,(e.destinations[v]=g,!1!==g.config.queue&&(g.queuePush=_to_consumable_array(e.queue)),W(e,void 0,{},_define_property({},v,g)))]})})()},W=function(t,r,o){return _async_to_generator(function(t,r){var o,a,s,i,u,l,f,d,_,p,g,y,b,h,m,S,A,P,E,I=arguments;return _ts_generator(this,function(D){switch(D.label){case 0:return o=I.length>2&&void 0!==I[2]?I[2]:{},a=I.length>3?I[3]:void 0,s=t.allowed,i=t.consent,u=t.globals,l=t.user,s?(r&&(t.queue.push(r),t.status.in++),a||(a=t.destinations),[4,Promise.all(Object.entries(a||{}).map(function(a){var s=_sliced_to_array(a,2),f=s[0],d=s[1];return _async_to_generator(function(){var a,s,_,p,g,y,b,h,m,S,A,P,E,I,D,q,M,T,R;return _ts_generator(this,function(G){switch(G.label){case 0:return d.config.disabled?[2,{id:f,destination:d,skipped:!0}]:(g=(d.queuePush||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:i})}),d.queuePush=[],r&&g.push(qe(r)),y=o.ingest?_object_spread_props(_object_spread({},o.ingest),{_meta:_object_spread_props(_object_spread({},o.ingest._meta),{path:_to_consumable_array(o.ingest._meta.path)})}):e("unknown"),g.length||(null===(s=d.queueOn)||void 0===s?void 0:s.length)?g.length||!(null===(_=d.queueOn)||void 0===_?void 0:_.length)?[3,2]:[4,v(L)(t,d,f)]:[2,{id:f,destination:d,skipped:!0}]);case 1:return b=G.sent(),[2,{id:f,destination:d,skipped:!b}];case 2:return h=[],m=g.filter(function(e){var n=c(d.config.consent,i,e.consent);return!n||(e.consent=n,h.push(e),!1)}),(a=d.queuePush).push.apply(a,_to_consumable_array(m)),h.length?[4,v(L)(t,d,f)]:[2,{id:f,destination:d,queue:g}];case 3:return G.sent()?(d.dlq||(d.dlq=[]),P=d.config.before,E=H(P,P&&w(P)?Ue(P):void 0,t.transformers,y),I=d.config.next,D=I&&w(I)?Ue(I):void 0,q=null===(p=d.config)||void 0===p?void 0:p.cache,M=q?k(q):void 0,T=M?x(M,t):void 0,R=0,[4,Promise.all(h.map(function(e){return _async_to_generator(function(){var r,a,s,i,c,_,p,g,b,h,m,w,k;return _ts_generator(this,function(x){switch(x.label){case 0:if(e.globals=n(u,e.globals),e.user=n(l,e.user),(null==M?void 0:M.full)&&T){if(a=j(y,e),"HIT"===(null==(s=O(M,T,a,"d:".concat(f)))?void 0:s.status))return[2,e];"MISS"===(null==s?void 0:s.status)&&(r={key:s.key,ttl:s.rule.ttl})}return i=e,c=o.respond,E.length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,E,e,y,o.respond,"destination.".concat(f,".before"))]:[3,2];case 1:if(null===(_=x.sent()).event)return[2,e];_.respond&&(c=_.respond),i=Array.isArray(_.event)?_.event[0]:_.event,x.label=2;case 2:if(M&&!M.full&&T){if(p=j(y,i),"HIT"===(null==(g=O(M,T,p,"d:".concat(f)))?void 0:g.status))return[2,e];"MISS"===(null==g?void 0:g.status)&&(r={key:g.key,ttl:g.rule.ttl})}return b=Date.now(),h=!1,[4,v(K,function(e){var n=d.type||"unknown";t.logger.scope(n).error("Push failed",{error:e,event:i.name}),S=e,h=!0,d.dlq.push([i,e])})(t,d,f,i,y,c)];case 3:return m=x.sent(),R+=Date.now()-b,r&&T&&void 0===d.config.mock&&C(T,r.key,null==m||m,r.ttl),void 0!==m&&(A=m),h||!I?[3,5]:(void 0!==m&&(y._response=m),(w=H(I,D,t.transformers,y)).length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ke(t,t.transformers,w,i,y,c,"destination.".concat(f,".next"))]:[3,5]);case 4:(k=x.sent()).respond&&(c=k.respond),x.label=5;case 5:return[2,e]}})})()}))]):[2,{id:f,destination:d,queue:g}];case 4:return[2,(G.sent(),{id:f,destination:d,error:S,response:A,totalDuration:R})]}})})()}))]):[2,F({ok:!1})];case 1:f=D.sent(),d={},_={},p={},g=!0,y=!1,b=void 0;try{for(h=f[Symbol.iterator]();!(g=(m=h.next()).done);g=!0)(S=m.value).skipped||(A={type:S.destination.type||"unknown",data:S.response},t.status.destinations[S.id]||(t.status.destinations[S.id]={count:0,failed:0,duration:0}),P=t.status.destinations[S.id],E=Date.now(),S.error?(A.error=S.error,p[S.id]=A,P.failed++,P.lastAt=E,P.duration+=S.totalDuration||0,t.status.failed++):S.queue&&S.queue.length?_[S.id]=A:(d[S.id]=A,P.count++,P.lastAt=E,P.duration+=S.totalDuration||0,t.status.out++))}catch(e){y=!0,b=e}finally{try{g||null==h.return||h.return()}finally{if(y)throw b}}return[2,F(_object_spread({event:r},Object.keys(d).length&&{done:d},Object.keys(_).length&&{queued:_},Object.keys(p).length&&{failed:p}))]}})}).apply(this,arguments)},L=function(e,n,t){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,p,g,v;return _ts_generator(this,function(y){switch(y.label){case 0:return!n.init||n.config.init?[3,2]:(o=n.type||"unknown",a=e.logger.scope(o),s={collector:e,logger:a,id:t,config:n.config,env:V(n.env,n.config.env)},a.debug("init"),[4,m(n.init,"DestinationInit",e.hooks,e.logger)(s)]);case 1:if(!1===(i=y.sent()))return[2,i];if(n.config=_object_spread_props(_object_spread({},i||n.config),{init:!0}),null===(r=n.queueOn)||void 0===r?void 0:r.length){c=n.queueOn,n.queueOn=[],u=!0,l=!1,f=void 0;try{for(d=c[Symbol.iterator]();!(u=(_=d.next()).done);u=!0)p=_.value,g=p.type,v=p.data,G(e,n,t,g,v)}catch(e){l=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw f}}}a.debug("init done"),y.label=2;case 2:return[2,!0]}})})()},K=function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c,u,f,d,_,p,g,v,y;return _ts_generator(this,function(b){switch(b.label){case 0:return i=n.config,[4,h(o,i,e)];case 1:return(c=b.sent()).ignore?[2,!1]:(u=n.type||"unknown",f=e.logger.scope(u),d={collector:e,logger:f,id:t,config:i,data:c.data,rule:c.mapping,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})},void 0!==i.mock?[2,(f.debug("mock",{event:c.event.name}),i.mock)]:(_=c.mapping,p=c.mappingKey||"* *",(null==_?void 0:_.batch)&&n.pushBatch&&void 0===i.mock?[3,3]:(f.debug("push",{event:c.event.name}),[4,m(n.push,"DestinationPush",e.hooks,e.logger)(c.event,d)])));case 2:return g=b.sent(),[2,(f.debug("push done"),g)];case 3:return n.batches=n.batches||{},n.batches[p]||(v={key:p,events:[],data:[]},n.batches[p]={batched:v,batchFn:l(function(){var r=n.batches[p].batched,o={collector:e,logger:f,id:t,config:i,data:void 0,rule:_,ingest:a,env:_object_spread({},V(n.env,i.env),s?{respond:s}:{})};f.debug("push batch",{events:r.events.length}),m(n.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(r,o),f.debug("push batch done"),r.events=[],r.data=[]},_.batch)}),(y=n.batches[p]).batched.events.push(c.event),r(c.data)&&y.batched.data.push(c.data),y.batchFn(),[2,!0]}})})()},F=function(e){return _object_spread({ok:!(null==e?void 0:e.failed)},e)},z=function(e){var n=e.code,t=e.config,r=void 0===t?{}:t,o=e.env,a=void 0===o?{}:o,s=e.cache,i=P(e,"before").config,c=P(_object_spread_props(_object_spread({},e),{config:i}),"next").config,u=_object_spread({},n.config,r,c);s&&(u.cache=s);var l=V(n.env,a);return _object_spread_props(_object_spread({},n),{config:u,env:l})},J=function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_=arguments;return _ts_generator(this,function(p){n=_.length>1&&void 0!==_[1]?_[1]:{},o={},a=!0,s=!1,i=void 0;try{for(c=Object.entries(n)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(r=d.config)||void 0===r||null===(t=r.require)||void 0===t?void 0:t.length)?e.pending.destinations[f]=d:o[f]=z(d)}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}return[2,o]})}).apply(this,arguments)},V=function(e,n){return e||n?n?e&&a(e)&&a(n)?_object_spread({},e,n):n:e:{}},Y=function(e,n,t){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return r=Object.entries(e).map(function(e){var r=_sliced_to_array(e,2),o=r[0],a=r[1];return _async_to_generator(function(){var e,r,s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:if(!(r=a.destroy))return[2];s=a.type||"unknown",i=t.scope(s),c={id:o,config:a.config,env:null!==(e=a.env)&&void 0!==e?e:{},logger:i},l.label=1;case 1:return l.trys.push([1,3,,4]),[4,Promise.race([r(c),new Promise(function(e,t){return setTimeout(function(){return t(new Error("".concat(n," '").concat(o,"' destroy timed out")))},5e3)})])];case 2:return l.sent(),[3,4];case 3:return u=l.sent(),i.error("".concat(n," '").concat(o,"' destroy failed: ").concat(u)),[3,4];case 4:return[2]}})})()}),[4,Promise.allSettled(r)];case 1:return o.sent(),[2]}})})()},$=function(e,t,r,i){return _async_to_generator(function(){var c,u,l,f,d,_,p;return _ts_generator(this,function(g){switch(g.label){case 0:switch(l=!1,t){case Le.Commands.Config:return[3,1];case Le.Commands.Consent:return[3,2];case Le.Commands.Custom:return[3,3];case Le.Commands.Destination:return[3,4];case Le.Commands.Globals:return[3,11];case Le.Commands.On:return[3,12];case Le.Commands.Ready:return[3,15];case Le.Commands.Run:return[3,16];case Le.Commands.Session:return[3,18];case Le.Commands.Shutdown:return[3,19];case Le.Commands.User:return[3,21]}return[3,22];case 1:return a(r)&&(n(e.config,r,{shallow:!1}),u=r,l=!0),[3,22];case 2:return a(r)&&(f=function(e,t){var r={};return Object.entries(t).forEach(function(e){var n=_sliced_to_array(e,2),t=n[0],o=n[1];r[t]=!!o}),e.consent=n(e.consent,r),{update:r}}(e,r),d=f.update,u=d,l=!0),[3,22];case 3:return a(r)&&(e.custom=n(e.custom,r),u=r,l=!0),[3,22];case 4:return a(r)?"code"in r&&a(r.code)?[4,U(e,r,i)]:[3,6]:[3,10];case 5:return _=c=g.sent(),[3,9];case 6:return(p=o(r.push))?[4,U(e,{code:r},i)]:[3,8];case 7:p=c=g.sent(),g.label=8;case 8:_=p,g.label=9;case 9:g.label=10;case 10:return[3,22];case 11:return a(r)&&(e.globals=n(e.globals,r),u=r,l=!0),[3,22];case 12:return s(r)?[4,R(e,r,i)]:[3,14];case 13:g.sent(),g.label=14;case 14:return[3,22];case 15:return l=!0,[3,22];case 16:return[4,X(e,r)];case 17:return c=g.sent(),l=!0,[3,22];case 18:return l=!0,[3,22];case 19:return[4,(v=e,_async_to_generator(function(){var e;return _ts_generator(this,function(n){switch(n.label){case 0:return e=v.logger,[4,Y(v.sources,"source",e)];case 1:return n.sent(),[4,Y(v.destinations,"destination",e)];case 2:return n.sent(),[4,Y(v.transformers,"transformer",e)];case 3:return n.sent(),[4,Y(v.stores,"store",e)];case 4:return n.sent(),[2]}})})())];case 20:return g.sent(),[3,22];case 21:a(r)&&(n(e.user,r,{shallow:!1}),u=r,l=!0),g.label=22;case 22:return l?[4,B(e,t,void 0,u)]:[3,25];case 23:return g.sent(),[4,W(e)];case 24:c=g.sent(),g.label=25;case 25:return[2,c||F({ok:!0})]}var v})})()},Q=function(e,n){if(!n.name)throw new Error("Event name is required");var t=_sliced_to_array(n.name.split(" "),2),r=t[0],o=t[1];if(!r||!o)throw new Error("Event name is invalid");++e.count;var a=n.timestamp,s=void 0===a?Date.now():a,i=n.group,c=void 0===i?e.group:i,u=n.count,l=void 0===u?e.count:u,f=n.name,d=void 0===f?"".concat(r," ").concat(o):f,_=n.data,p=void 0===_?{}:_,g=n.context,v=void 0===g?{}:g,y=n.globals,b=void 0===y?e.globals:y,h=n.custom,m=void 0===h?{}:h,w=n.user,j=void 0===w?e.user:w,k=n.nested,O=void 0===k?[]:k,C=n.consent,S=void 0===C?e.consent:C,x=n.id,A=void 0===x?"".concat(s,"-").concat(c,"-").concat(l):x,P=n.trigger,E=void 0===P?"":P,I=n.entity,D=void 0===I?r:I,q=n.action,M=void 0===q?o:q,T=n.timing,R=void 0===T?0:T,G=n.version,N=void 0===G?{source:e.version,tagging:e.config.tagging||0}:G,B=n.source;return{name:d,data:p,context:v,globals:b,custom:m,user:j,nested:O,consent:S,id:A,trigger:E,entity:D,action:M,timestamp:s,timing:R,group:c,count:l,version:N,source:void 0===B?{type:"collector",id:"",previous_id:""}:B}},X=function(e,t){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return e.allowed=!0,e.count=0,e.group=u(),e.timing=Date.now(),t&&(t.consent&&(e.consent=n(e.consent,t.consent)),t.user&&(e.user=n(e.user,t.user)),t.globals&&(e.globals=n(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=n(e.custom,t.custom))),Object.values(e.destinations).forEach(function(e){e.queuePush=[]}),e.queue=[],e.round++,[4,W(e)];case 1:return[2,r.sent()]}})})()},Z=function(t){return _async_to_generator(function(){var r,o,a,s,i,u,l,f,d;return _ts_generator(this,function(p){switch(p.label){case 0:return a=n({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},t,{merge:!1,extend:!1}),s={level:null===(r=t.logger)||void 0===r?void 0:r.level,handler:null===(o=t.logger)||void 0===o?void 0:o.handler},i=_(s),u=_object_spread({},a.globalsStatic,t.globals),(l={allowed:!1,config:a,consent:t.consent||{},count:0,custom:t.custom||{},destinations:{},transformers:{},stores:{},globals:u,group:"",hooks:t.hooks||{},logger:i,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:t.user||{},version:"3.4.1-next-1776790594143",sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0}).push=function(n,t){return m(function(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,v(function(){return _async_to_generator(function(){var a,s,i,u,l,f,d,_,p,g,v,y,b,m,w,j,k,O,C,S,x;return _ts_generator(this,function(A){switch(A.label){case 0:return a=Date.now(),s=o.id,i=o.ingest,u=o.respond,l=o.mapping,f=o.preChain,d=o.include,_=o.exclude,p=u,g=r,v=d||_?function(e,n,t){var r=e;return n&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var t=_sliced_to_array(e,1)[0];return n.includes(t)}))),t&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var n=_sliced_to_array(e,1)[0];return!t.includes(n)}))),r}(n.destinations,d,_):void 0,y=null!=i?i:e(s||"unknown"),l?[4,h(g,l,n)]:[3,2];case 1:if((b=A.sent()).ignore)return[2,F({ok:!0})];if(l.consent&&!c(l.consent,n.consent,b.event.consent))return[2,F({ok:!0})];g=b.event,A.label=2;case 2:return(null==f?void 0:f.length)&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ke(n,n.transformers,f,g,y,p,s?"source.".concat(s,".next"):void 0)]:[3,6];case 3:return null===(m=A.sent()).event?[2,F({ok:!0})]:(m.respond&&(p=m.respond),Array.isArray(m.event)?[4,Promise.all(m.event.map(function(e){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){return r=t(e),o=Q(n,r),[2,W(n,o,{id:s,ingest:y,respond:p},v)]})})()}))]:[3,5]);case 4:return j=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(k=n.status.sources[s]).count+=m.event.length,k.lastAt=Date.now(),k.duration+=Date.now()-a),[2,null!==(w=j[0])&&void 0!==w?w:F({ok:!0})];case 5:g=m.event,A.label=6;case 6:return O=t(g),C=Q(n,O),[4,W(n,C,{id:s,ingest:y,respond:p},v)];case 7:return S=A.sent(),s&&(n.status.sources[s]||(n.status.sources[s]={count:0,duration:0}),(x=n.status.sources[s]).count++,x.lastAt=Date.now(),x.duration+=Date.now()-a),[2,S]}})})()},function(){return F({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Push",n.hooks,n.logger)}(l,function(e){return _object_spread({timing:Math.round((Date.now()-l.timing)/10)/100,source:{type:"collector",id:"",previous_id:""}},e)}),l.command=function(e,n){return m(function(t,r,o){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,v(function(){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,n(e,t,r,o)];case 1:return[2,a.sent()]}})})()},function(){return F({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Command",e.hooks,e.logger)}(l,$),f=t.stores||{},[4,function(e){return _async_to_generator(function(e){var n,t,r,o,a,s,i,c,u,l,f,d,_,p,g,v,y,b,h,w,j,k=arguments;return _ts_generator(this,function(O){switch(O.label){case 0:n=k.length>1&&void 0!==k[1]?k[1]:{},t={},r=!0,o=!1,a=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),s=Object.entries(n)[Symbol.iterator](),O.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.code,d=l.config,_=void 0===d?{}:d,p=l.env,g=void 0===p?{}:p,v=e.logger.scope("store").scope(u),[4,f({collector:e,logger:v,id:u,config:_,env:g})]);case 3:y=O.sent(),b=y.get,h=y.set,w=y.delete,y.get=m(b,"StoreGet",e.hooks,e.logger),y.set=m(h,"StoreSet",e.hooks,e.logger),y.delete=m(w,"StoreDelete",e.hooks,e.logger),t[u]=y,O.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),o=!0,a=j,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,t]}})}).apply(this,arguments)}(l,f)];case 1:return l.stores=p.sent(),function(e,n,t){var r=new Map,o=!0,a=!1,s=void 0;try{for(var i,c=Object.entries(e)[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=_sliced_to_array(i.value,2),l=u[0],f=u[1];n[l]&&r.set(f,n[l])}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}if(0!==r.size)for(var d=!0,_=!1,p=void 0,g=0,v=[t.transformers,t.destinations,t.sources];g<v.length;g++){var y=v[g];if(y)try{for(var b,h=Object.values(y)[Symbol.iterator]();!(d=(b=h.next()).done);d=!0){m(b.value.env)}}catch(e){_=!0,p=e}finally{try{d||null==h.return||h.return()}finally{if(_)throw p}}}function m(e){if(e){var n=!0,t=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=_sliced_to_array(a.value,2),c=i[0],u=i[1];if("object"==(void 0===u?"undefined":_type_of(u))&&null!==u){var l=r.get(u);l&&(e[c]=l)}}}catch(e){t=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(t)throw o}}}}}(f,l.stores,t),l.stores.__cache||(d=new Map,l.stores.__cache={type:"memory",config:{},get:function(e){var n=d.get(e);if(n){if(!(n.expires&&Date.now()>n.expires))return n.value;d.delete(e)}},set:function(e,n,t){d.set(e,{value:n,expires:t?Date.now()+t:void 0})},delete:function(e){d.delete(e)}}),[4,J(l,t.destinations||{})];case 2:return l.destinations=p.sent(),[4,function(n){return _async_to_generator(function(n){var t,r,o,a,s,i,c,u,l,f,d,_,p,g,v,y,b,h,m,w,j,k,O,C,S=arguments;return _ts_generator(this,function(x){switch(x.label){case 0:t=S.length>1&&void 0!==S[1]?S[1]:{},r={},o=!0,a=!1,s=void 0,x.label=1;case 1:x.trys.push([1,6,7,8]),i=Object.entries(t)[Symbol.iterator](),x.label=2;case 2:return(o=(c=i.next()).done)?[3,5]:(u=_sliced_to_array(c.value,2),l=u[0],f=u[1],d=f.code,_=f.env,p=void 0===_?{}:_,g=P(f,"before"),v=g.config,y=P(_object_spread_props(_object_spread({},f),{config:v}),"next"),b=y.config,h=Object.keys(p).length>0?_object_spread_props(_object_spread({},b),{env:p}):b,m=f.cache,w=m?_object_spread_props(_object_spread({},h),{cache:m}):h,j=n.logger.scope("transformer").scope(l),k={collector:n,logger:j,id:l,ingest:e(l),config:w,env:p},[4,d(k)]);case 3:O=x.sent(),r[l]=O,x.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return C=x.sent(),a=!0,s=C,[3,8];case 7:try{o||null==i.return||i.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})}).apply(this,arguments)}(l,t.transformers||{})];case 3:return[2,(l.transformers=p.sent(),l)]}})})()},ee=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:return[4,Z(e=e||{})];case 1:return n=d.sent(),r=n,t={type:"elb",config:{},push:function(e,n,t,o,a,s){return _async_to_generator(function(){var i,c;return _ts_generator(this,function(u){if("string"==typeof e&&e.startsWith("walker "))return i=e.replace("walker ",""),[2,r.command(i,n,t)];if("string"==typeof e)c={name:e},n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=n);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,F({ok:!1})];c=e,n&&"object"==(void 0===n?"undefined":_type_of(n))&&!Array.isArray(n)&&(c.data=_object_spread({},c.data||{},n))}return[2,(o&&"object"==(void 0===o?"undefined":_type_of(o))&&(c.context=o),a&&Array.isArray(a)&&(c.nested=a),s&&"object"==(void 0===s?"undefined":_type_of(s))&&(c.custom=s),r.push(c))]})})()}},n.sources.elb=t,[4,T(n,e.sources||{})];case 2:return o=d.sent(),Object.assign(n.sources,o),a=e.consent,s=e.user,i=e.globals,c=e.custom,a?[4,n.command("consent",a)]:[3,4];case 3:d.sent(),d.label=4;case 4:return s?[4,n.command("user",s)]:[3,6];case 5:d.sent(),d.label=6;case 6:return i&&Object.assign(n.globals,i),c&&Object.assign(n.custom,c),n.config.run?[4,n.command("run")]:[3,8];case 7:d.sent(),d.label=8;case 8:return u=t.push,l=Object.values(n.sources).filter(function(e){return"elb"!==e.type}),[2,((f=l.find(function(e){return e.config.primary}))?u=f.push:l.length>0&&(u=l[0].push),{collector:n,elb:u})]}})})()},ne=Object.defineProperty,te=Object.getOwnPropertyDescriptor,re=Object.getOwnPropertyNames,oe=Object.prototype.hasOwnProperty,ae=function(e,n){for(var t in n)ne(e,t,{get:n[t],enumerable:!0})},se={};ae(se,{DEFAULT_CATEGORY_MAP:function(){return Ve},SourceCookiePro:function(){return ie},analyticsOnlyConsent:function(){return fe},analyticsOnlyMapped:function(){return be},createMockElbFn:function(){return we},createMockOneTrustAPI:function(){return ke},createTrigger:function(){return ze},customCategoryConsent:function(){return pe},default:function(){return $e},emptyConsent:function(){return _e},fullConsent:function(){return ce},fullConsentMapped:function(){return ge},marketingOnlyConsent:function(){return de},marketingOnlyMapped:function(){return he},minimalConsent:function(){return le},minimalConsentMapped:function(){return ye},noopLogger:function(){return je},partialConsent:function(){return ue},partialConsentMapped:function(){return ve},sourceCookiePro:function(){return Ye},step:function(){return Oe},trigger:function(){return Je}});var ie={},ce=",C0001,C0002,C0003,C0004,C0005,",ue=",C0001,C0003,",le=",C0001,",fe=",C0001,C0002,",de=",C0001,C0004,",_e="",pe=",C0001,CUSTOM01,CUSTOM02,",ge={functional:!0,analytics:!0,marketing:!0},ve={functional:!0,analytics:!1,marketing:!1},ye={functional:!0,analytics:!1,marketing:!1},be={functional:!0,analytics:!0,marketing:!1},he={functional:!0,analytics:!1,marketing:!0},me=function(){},we=function(){return function(){return Promise.resolve({ok:!0})}},je={error:me,warn:me,info:me,debug:me,throw:function(e){throw"string"==typeof e?new Error(e):e},json:me,scope:function(){return je}},ke=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return{IsAlertBoxClosed:function(){return e}}},Oe={};ae(Oe,{categoryMapOverride:function(){return xe},fullConsent:function(){return Ce},minimalConsent:function(){return Se},sdkLoadedDetection:function(){return Ae}});var Ce={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},Se={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},xe={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},Ae={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},Pe=Object.defineProperty;!function(e,n){for(var t in n)Pe(e,t,{get:n[t],enumerable:!0})}({},{Level:function(){return Ie}});var Ee,Ie=((Ee=Ie||{})[Ee.ERROR=0]="ERROR",Ee[Ee.WARN=1]="WARN",Ee[Ee.INFO=2]="INFO",Ee[Ee.DEBUG=3]="DEBUG",Ee),De={merge:!0,shallow:!0,extend:!0};function qe(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)return e;if(n.has(e))return n.get(e);var t=Object.prototype.toString.call(e);if("[object Object]"===t){var r={};for(var o in n.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=qe(e[o],n));return r}if("[object Array]"===t){var a=[];return n.set(e,a),e.forEach(function(e){a.push(qe(e,n))}),a}if("[object Date]"===t)return new Date(e.getTime());if("[object RegExp]"===t){var s=e;return new RegExp(s.source,s.flags)}return e}function Me(e){for(var n=arguments.length>2?arguments[2]:void 0,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),a=e,s=0;s<o.length;s++){var i=o[s];if("*"===i&&t(a)){var c=o.slice(s+1).join("."),u=[],l=!0,f=!1,d=void 0;try{for(var _,p=a[Symbol.iterator]();!(l=(_=p.next()).done);l=!0){var g=Me(_.value,c,n);u.push(g)}}catch(e){f=!0,d=e}finally{try{l||null==p.return||p.return()}finally{if(f)throw d}}return u}if(void 0===(a=_instanceof(a,Object)?a[i]:void 0))break}return r(a)?a:n}var Te={data:function(e){return e.data},globals:function(e){return e.globals},context:function(e){return e.context},user:function(e){return e.user},source:function(e){return e.source},version:function(e){return e.version},event:function(e){return{entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,group:e.group,count:e.count,timing:e.timing}}},Re=function(e,n,t,r){var o="".concat(Ie[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(t).length>0,s=0===e?console.error:1===e?console.warn:console.log;a?s(o,n,t):s(o,n)};function Ge(e){var n=e.level,t=e.handler,r=e.jsonHandler,o=e.scope,a=function(e,r,a){if(e<=n){var s=d(r,a);t?t(e,s.message,s.context,o,Re):Re(e,s.message,s.context,o)}};return{error:function(e,n){return a(0,e,n)},warn:function(e,n){return a(1,e,n)},info:function(e,n){return a(2,e,n)},debug:function(e,n){return a(3,e,n)},throw:function(e,n){var r=d(e,n);throw t?t(0,r.message,r.context,o,Re):Re(0,r.message,r.context,o),new Error(r.message)},json:function(e){r?r(e):console.log(JSON.stringify(e,null,2))},scope:function(e){return Ge({level:n,handler:t,jsonHandler:r,scope:_to_consumable_array(o).concat([e])})}}}function Ne(e){return function(e){return"boolean"==typeof e}(e)||s(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!r(e)||t(e)&&e.every(Ne)||a(e)&&Object.values(e).every(Ne)}function Be(e,n){return _async_to_generator(function(e,n){var o,a,i,u=arguments;return _ts_generator(this,function(l){return a=(o=u.length>2&&void 0!==u[2]?u[2]:{}).collector,i=o.consent,[2,(t(n)?n:[n]).reduce(function(n,u){return _async_to_generator(function(){var l,f,d,_,g,y,h,m,w,j,k,O,C,S,x,A,P,E,I,D,q;return _ts_generator(this,function(M){switch(M.label){case 0:return[4,n];case 1:return(l=M.sent())?[2,l]:(f=s(u)?{key:u}:u,Object.keys(f).length?(d=f.condition,_=f.consent,g=f.fn,y=f.key,h=f.loop,m=f.map,w=f.set,j=f.validate,k=f.value,(O=d)?[4,v(d)(e,u,a)]:[3,3]):[2]);case 2:O=!M.sent(),M.label=3;case 3:return O?[2]:_&&!c(_,i)?[2,k]:(C=r(k)?k:e,g?[4,v(g)(e,u,o)]:[3,5]);case 4:C=M.sent(),M.label=5;case 5:return y&&(C=Me(e,y,k)),h?(S=_sliced_to_array(h,2),x=S[0],A=S[1],"this"!==x?[3,6]:(E=[e],[3,8])):[3,11];case 6:return[4,b(e,x,o)];case 7:E=M.sent(),M.label=8;case 8:return t(P=E)?[4,Promise.all(P.map(function(e){return b(e,A,o)}))]:[3,10];case 9:C=M.sent().filter(r),M.label=10;case 10:return[3,17];case 11:return m?[4,Object.entries(m).reduce(function(n,t){var a=_sliced_to_array(t,2),s=a[0],i=a[1];return _async_to_generator(function(){var t,a;return _ts_generator(this,function(c){switch(c.label){case 0:return[4,n];case 1:return t=c.sent(),[4,b(e,i,o)];case 2:return a=c.sent(),[2,(r(a)&&(t[s]=a),t)]}})})()},Promise.resolve({}))]:[3,13];case 12:return C=M.sent(),[3,16];case 13:return(I=w)?[4,Promise.all(w.map(function(n){return Be(e,n,o)}))]:[3,15];case 14:I=C=M.sent(),M.label=15;case 15:M.label=16;case 16:M.label=17;case 17:return(D=j)?[4,v(j)(C)]:[3,19];case 18:D=!M.sent(),M.label=19;case 19:return D&&(C=void 0),q=p(C),[2,r(q)?q:p(k)]}})})()},Promise.resolve(void 0))]})}).apply(this,arguments)}function He(e){if("*"===e)return function(){return!0};if("and"in e){var n=e.and.map(He);return function(e){return n.every(function(n){return n(e)})}}if("or"in e){var t=e.or.map(He);return function(e){return t.some(function(n){return n(e)})}}return function(e){var n=e.key,t=e.operator,r=e.value,o=e.not,a=function(e,n){switch(e){case"eq":return function(e){return String(null!=e?e:"")===n};case"contains":return function(e){return String(null!=e?e:"").includes(n)};case"prefix":return function(e){return String(null!=e?e:"").startsWith(n)};case"suffix":return function(e){return String(null!=e?e:"").endsWith(n)};case"regex":var t=new RegExp(n);return function(e){return t.test(String(null!=e?e:""))};case"gt":var r=Number(n);return function(e){return Number(e)>r};case"lt":var o=Number(n);return function(e){return Number(e)<o};case"exists":return function(e){return null!=e}}}(t,r);return function(e){var t=Me(e,n),r=a(t);return o?!r:r}}(e)}function Ue(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return w(e)?{type:"routes",routes:e.map(function(e){return{match:He(e.match),next:Ue(e.next)}})}:{type:"chain",value:e}}}}function We(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;var t=!0,r=!1,o=void 0;try{for(var a,s=e.routes[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i=a.value;if(i.match(n))return We(i.next,n)}}catch(e){r=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw o}}}}var Le={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function Ke(n,t,r,o,a,s,i){return _async_to_generator(function(){var c,u,l,f,d,_,p,g,y,b;return _ts_generator(this,function(h){switch(h.label){case 0:i&&(null==a?void 0:a._meta)&&(a._meta.chainPath=i),c=o,u=s,l=!0,f=!1,d=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),_=function(){var o,s,l,f,d,_,p,y,b,h,m,S,P,q,M,T,R,G,N,B,H,U,W,L,K,F,z,J,V,Y,$,Q,X,Z,ee,ne,te,re,oe,ae,se;return _ts_generator(this,function(ie){switch(ie.label){case 0:return o=g.value,(p=t[o])?a&&a._meta&&a._meta.path.length>256?[2,{v:(n.logger.error("Max path length exceeded at ".concat(o)),{event:null,respond:u})}]:(a&&a._meta&&(a._meta.hops++,a._meta.path.push(o)),[4,v(I)(n,p,o)]):(n.logger.warn("Transformer not found: ".concat(o)),[2,"continue"]);case 1:if(!ie.sent())return[2,{v:(n.logger.error("Transformer init failed: ".concat(o)),{event:null,respond:u})}];if(i&&void 0!==(null===(l=p.config)||void 0===l||null===(s=l.chainMocks)||void 0===s?void 0:s[i]))return y=p.config.chainMocks[i],n.logger.scope("transformer:".concat(p.type||"unknown")).debug("chainMock",{chain:i}),c=y,[2,"continue"];if(void 0!==(null===(f=p.config)||void 0===f?void 0:f.mock))return n.logger.scope("transformer:".concat(p.type||"unknown")).debug("mock"),c=p.config.mock,[2,"continue"];if(null===(d=p.config)||void 0===d?void 0:d.disabled)return[2,"continue"];if(b=null===(_=p.config)||void 0===_?void 0:_.cache,h=b?k(b):void 0,m=h?x(h,n):void 0,S=void 0,h&&m){if(P=j(a,c),"HIT"===(null==(q=O(h,m,P,"t:".concat(o)))?void 0:q.status)&&q.value)return c=q.value,h.full?[2,{v:{event:c,respond:u}}]:[2,"continue"];"MISS"===(null==q?void 0:q.status)&&(S={key:q.key,ttl:q.rule.ttl})}return(M=p.config.before)&&(T=E("string"==typeof M||Array.isArray(M)&&!w(M)?M:We(Ue(M),j(a,c))||void 0,A(t))).length>0?[4,Ke(n,t,T,c,a,u,i)]:[3,3];case 2:if(null===(G=ie.sent()).event)return[2,{v:{event:null,respond:null!==(R=G.respond)&&void 0!==R?R:u}}];G.respond&&(u=G.respond),c=Array.isArray(G.event)?G.event[0]:G.event,ie.label=3;case 3:return[4,v(D,function(e){return n.logger.scope("transformer:".concat(p.type||"unknown")).error("Push failed",{error:e}),!1})(n,p,o,c,a,u)];case 4:return!1===(N=ie.sent())?[2,{v:{event:null,respond:u}}]:Array.isArray(N)?(B=r.slice(r.indexOf(o)+1),[4,Promise.all(N.map(function(r){return _async_to_generator(function(){var o,s,l,f,d;return _ts_generator(this,function(_){return o=r.event||c,s=a?_object_spread_props(_object_spread({},a),{_meta:_object_spread_props(_object_spread({},a._meta),{path:_to_consumable_array(a._meta.path)})}):e("unknown"),r.next?(l=r.next,w(r.next)&&(f=Ue(r.next),l=We(f,j(s,o))),l&&(d=E(l,A(t))).length>0?[2,Ke(n,t,d,o,s,u,i)]:[2,{event:o,respond:u}]):[2,B.length>0?Ke(n,t,B,o,s,u,i):{event:o,respond:u}]})})()}))]):[3,6];case 5:H=ie.sent(),U=u,W=[],L=!0,K=!1,F=void 0;try{for(z=H.flat()[Symbol.iterator]();!(L=(J=z.next()).done);L=!0)if(null!==(V=J.value))if(V&&"object"==(void 0===V?"undefined":_type_of(V))&&"event"in V){if(($=V).respond&&(U=$.respond),null===$.event)continue;Array.isArray($.event)?(Y=W).push.apply(Y,_to_consumable_array($.event)):W.push($.event)}else W.push(V)}catch(e){K=!0,F=e}finally{try{L||null==z.return||z.return()}finally{if(K)throw F}}return[2,{v:0===W.length?{event:null,respond:U}:1===W.length?{event:W[0],respond:U}:{event:W,respond:U}}];case 6:if(N&&"object"==(void 0===N?"undefined":_type_of(N))){if(Q=N.event,X=N.respond,Z=N.next,X&&(u=X),Z)return ee=Z,!w(Z)||(ne=Ue(Z),ee=We(ne,j(a,c)))?[2,{v:(te=E(ee,A(t))).length>0?Ke(n,t,te,Q||c,a,u,i):(n.logger.warn("Branch target not found: ".concat(JSON.stringify(Z))),{event:null,respond:u})}]:(Q&&(c=Q),[2,"continue"]);Q&&(c=Q)}return S&&m&&C(m,S.key,c,S.ttl),(!N||"object"==(void 0===N?"undefined":_type_of(N))&&!N.next)&&p.config.next&&w(p.config.next)?(re=p.config.next,oe=Ue(re),(ae=We(oe,j(a,c)))&&(se=E(ae,A(t))).length>0?[2,{v:Ke(n,t,se,c,a,u,i)}]:[2,{v:{event:c,respond:u}}]):[2]}})},p=r[Symbol.iterator](),h.label=2;case 2:return(l=(g=p.next()).done)?[3,5]:[5,_ts_values(_())];case 3:if("object"===_type_of(y=h.sent()))return[2,y.v];h.label=4;case 4:return l=!0,[3,2];case 5:return[3,8];case 6:return b=h.sent(),f=!0,d=b,[3,8];case 7:try{l||null==p.return||p.return()}finally{if(f)throw d}return[7];case 8:return[2,{event:c,respond:u}]}})})()}var Fe,ze=function(e){return _async_to_generator(function(){var n,t;return _ts_generator(this,function(r){return t=function(){return function(t){return _async_to_generator(function(){var r,o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return(r=window).OptanonActiveGroups=t,r.OneTrust={IsAlertBoxClosed:function(){return!0}},n?[3,2]:[4,ee(_object_spread_props(_object_spread({},e),{run:null===(o=e.run)||void 0===o||o}))];case 1:a=s.sent(),n={collector:a.collector,elb:a.elb},s.label=2;case 2:return[2]}})})()}},[2,{get flow(){return n},trigger:t}]})})()},Je=function(e,n){var t=n.window;"string"==typeof e&&(t.OptanonActiveGroups=e,t.OneTrust={IsAlertBoxClosed:function(){return!0}})},Ve={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},Ye=function(e){return _async_to_generator(function(){var n,t,r,o,a,s,i,c,u,l,f,d,_,p,g,v,y,b,h,m,w,j,k,O;return _ts_generator(this,function(C){return c=e.config,u=e.env,l=u.elb,f=null!==(n=u.window)&&void 0!==n?n:void 0!==globalThis.window?globalThis.window:void 0,d=_object_spread({},Ve,null!==(t=null==c||null===(a=c.settings)||void 0===a?void 0:a.categoryMap)&&void 0!==t?t:{}),_={},Object.entries(d).forEach(function(e){var n=_sliced_to_array(e,2),t=n[0],r=n[1];_[t.toLowerCase()]=r}),p={categoryMap:d,explicitOnly:null===(r=null==c||null===(s=c.settings)||void 0===s?void 0:s.explicitOnly)||void 0===r||r,globalName:null!==(o=null==c||null===(i=c.settings)||void 0===i?void 0:i.globalName)&&void 0!==o?o:"OneTrust"},g={settings:p},b=!1,f&&(m=null!==(h=p.globalName)&&void 0!==h?h:"OneTrust",w=new Set(Object.values(_)),j=function(e){var n={};return w.forEach(function(e){n[e]=!1}),e.split(",").filter(function(e){return e.length>0}).forEach(function(e){var t=_[e.toLowerCase()];t&&(n[t]=!0)}),n},k=function(){var e=f.OptanonActiveGroups;if(null!=e){if(p.explicitOnly){var n=f[m];if((null==n?void 0:n.IsAlertBoxClosed)&&!n.IsAlertBoxClosed())return}var t=j(e);Object.keys(t).length>0&&l("walker consent",t)}},(O=f[m])&&void 0!==f.OptanonActiveGroups&&k(),O||(y=f.OptanonWrapper,b=!0,f.OptanonWrapper=function(){y&&y(),k(),f.OptanonWrapper=y,b=!1}),v=function(){k()},f.addEventListener("OneTrustGroupsUpdated",v)),[2,{type:"cookiepro",config:g,push:l,destroy:function(e){return _async_to_generator(function(){return _ts_generator(this,function(e){return f&&v&&f.removeEventListener("OneTrustGroupsUpdated",v),f&&b&&(f.OptanonWrapper=y),[2]})})()}}]})})()},$e=Ye;return Fe=se,function(e,n,t,r){if(n&&"object"===(void 0===n?"undefined":_type_of(n))||"function"==typeof n){var o=!0,a=!1,s=void 0;try{for(var i,c=function(){var o=i.value;oe.call(e,o)||o===t||ne(e,o,{get:function(){return n[o]},enumerable:!(r=te(n,o))||r.enumerable})},u=re(n)[Symbol.iterator]();!(o=(i=u.next()).done);o=!0)c()}catch(e){a=!0,s=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw s}}}return e}(ne({},"__esModule",{value:!0}),Fe)}();
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,a=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},l={};a(l,{DEFAULT_CATEGORY_MAP:()=>G,SourceCookiePro:()=>i,analyticsOnlyConsent:()=>u,analyticsOnlyMapped:()=>O,createMockElbFn:()=>
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,a=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},l={};a(l,{DEFAULT_CATEGORY_MAP:()=>G,SourceCookiePro:()=>i,analyticsOnlyConsent:()=>u,analyticsOnlyMapped:()=>O,createMockElbFn:()=>v,createMockOneTrustAPI:()=>M,createTrigger:()=>E,customCategoryConsent:()=>d,default:()=>B,emptyConsent:()=>C,fullConsent:()=>s,fullConsentMapped:()=>y,marketingOnlyConsent:()=>g,marketingOnlyMapped:()=>w,minimalConsent:()=>p,minimalConsentMapped:()=>f,noopLogger:()=>b,partialConsent:()=>c,partialConsentMapped:()=>m,sourceCookiePro:()=>L,step:()=>h,trigger:()=>I}),module.exports=(e=l,((e,a,l,i)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let s of o(a))r.call(e,s)||s===l||t(e,s,{get:()=>a[s],enumerable:!(i=n(a,s))||i.enumerable});return e})(t({},"__esModule",{value:!0}),e));var i={},s=",C0001,C0002,C0003,C0004,C0005,",c=",C0001,C0003,",p=",C0001,",u=",C0001,C0002,",g=",C0001,C0004,",C="",d=",C0001,CUSTOM01,CUSTOM02,",y={functional:!0,analytics:!0,marketing:!0},m={functional:!0,analytics:!1,marketing:!1},f={functional:!0,analytics:!1,marketing:!1},O={functional:!0,analytics:!0,marketing:!1},w={functional:!0,analytics:!1,marketing:!0},k=()=>{},v=()=>()=>Promise.resolve({ok:!0}),b={error:k,warn:k,info:k,debug:k,throw:e=>{throw"string"==typeof e?new Error(e):e},json:k,scope:()=>b},M=(e=!1)=>({IsAlertBoxClosed:()=>e}),h={};a(h,{categoryMapOverride:()=>P,fullConsent:()=>A,minimalConsent:()=>T,sdkLoadedDetection:()=>x});var A={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},T={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},P={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},x={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]},j=require("@walkeros/collector"),E=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{var o;const r=window;if(r.OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:()=>!0},!t){const n=await(0,j.startFlow)({...e,run:null==(o=e.run)||o});t={collector:n.collector,elb:n.elb}}}}},I=(e,t)=>{const n=t.window;"string"==typeof e&&(n.OptanonActiveGroups=e,n.OneTrust={IsAlertBoxClosed:()=>!0})},G={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},L=async e=>{var t,n,o,r,a,l,i,s;const{config:c,env:p}=e,{elb:u}=p,g=null!=(t=p.window)?t:void 0!==globalThis.window?globalThis.window:void 0,C={...G,...null!=(o=null==(n=null==c?void 0:c.settings)?void 0:n.categoryMap)?o:{}},d={};Object.entries(C).forEach(([e,t])=>{d[e.toLowerCase()]=t});const y={categoryMap:C,explicitOnly:null==(a=null==(r=null==c?void 0:c.settings)?void 0:r.explicitOnly)||a,globalName:null!=(i=null==(l=null==c?void 0:c.settings)?void 0:l.globalName)?i:"OneTrust"},m={settings:y};let f,O,w=!1;if(g){const e=null!=(s=y.globalName)?s:"OneTrust",t=new Set(Object.values(d)),n=e=>{const n={};return t.forEach(e=>{n[e]=!1}),e.split(",").filter(e=>e.length>0).forEach(e=>{const t=d[e.toLowerCase()];t&&(n[t]=!0)}),n},o=()=>{const t=g.OptanonActiveGroups;if(null==t)return;if(y.explicitOnly){const t=g[e];if((null==t?void 0:t.IsAlertBoxClosed)&&!t.IsAlertBoxClosed())return}const o=n(t);Object.keys(o).length>0&&u("walker consent",o)},r=g[e];r&&void 0!==g.OptanonActiveGroups&&o(),r||(O=g.OptanonWrapper,w=!0,g.OptanonWrapper=()=>{O&&O(),o(),g.OptanonWrapper=O,w=!1}),f=()=>{o()},g.addEventListener("OneTrustGroupsUpdated",f)}return{type:"cookiepro",config:m,push:u,destroy:async e=>{g&&f&&g.removeEventListener("OneTrustGroupsUpdated",f),g&&w&&(g.OptanonWrapper=O)}}},B=L;//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import type { Source, WalkerOS } from '@walkeros/core';\nimport type { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n if (actualWindow) {\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n }\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n","import type { Source, Elb } from '@walkeros/core';\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACWO,IAAM,cAAc;AAKpB,IAAM,iBAAiB;AAKvB,IAAM,iBAAiB;AAKvB,IAAM,uBAAuB;AAK7B,IAAM,uBAAuB;AAK7B,IAAM,eAAe;AAKrB,IAAM,wBAAwB;;;ACnB9B,IAAM,oBAAsC;AAAA,EACjD,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AACb;AAOO,IAAM,uBAAyC;AAAA,EACpD,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AACb;AAOO,IAAM,uBAAyC;AAAA,EACpD,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AACb;AAOO,IAAM,sBAAwC;AAAA,EACnD,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AACb;AAOO,IAAM,sBAAwC;AAAA,EACnD,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AACb;;;AC/DA,IAAM,OAAO,MAAM;AAAC;AAKb,IAAM,kBAAkB,MAAc;AAC3C,QAAM,MAAM,MACV,QAAQ,QAAQ;AAAA,IACd,IAAI;AAAA,EACN,CAAC;AACH,SAAO;AACT;AAKO,IAAM,aAA8B;AAAA,EACzC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAKO,IAAM,wBAAwB,CACnC,mBAAmB,WACF;AAAA,EACjB,kBAAkB,MAAM;AAC1B;;;AC1CA;AAAA;AAAA;AAAA,qBAAAA;AAAA,EAAA,sBAAAC;AAAA,EAAA;AAAA;AAEO,IAAMD,eAAgC;AAAA,EAC3C,SAAS,EAAE,MAAM,UAAU;AAAA,EAC3B,IAAI;AAAA,EACJ,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,QACE,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAMC,kBAAmC;AAAA,EAC9C,SAAS,EAAE,MAAM,UAAU;AAAA,EAC3B,IAAI;AAAA,EACJ,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,QACE,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,sBAAwC;AAAA,EACnD,aAAa;AAAA,EACb,SAAS,EAAE,MAAM,UAAU;AAAA,EAC3B,IAAI;AAAA,EACJ,SAAS,EAAE,aAAa,EAAE,OAAO,aAAa,EAAE;AAAA,EAChD,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,QACE,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,qBAAuC;AAAA,EAClD,aACE;AAAA,EACF,SAAS,EAAE,MAAM,UAAU;AAAA,EAC3B,IAAI;AAAA,EACJ,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,QACE,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;;;ACnEA,uBAA0B;AAE1B,IAAM,gBAAgD,OACpD,WACG;AACH,MAAI;AAEJ,QAAMC,WAAoC,MAAM,OAAO,YAAoB;AAR7E;AAUI,UAAM,MAAM;AACZ,QAAI,sBAAsB;AAC1B,QAAI,WAAW,EAAE,kBAAkB,MAAM,KAAK;AAG9C,QAAI,CAAC,MAAM;AACT,YAAM,SAAS,UAAM,4BAAU,EAAE,GAAG,QAAQ,MAAK,YAAO,QAAP,YAAc,KAAK,CAAC;AACrE,aAAO,EAAE,WAAW,OAAO,WAAW,KAAK,OAAO,IAAI;AAAA,IACxD;AAAA,EACF;AAEA,SAAO;AAAA,IACL,IAAI,OAAO;AACT,aAAO;AAAA,IACT;AAAA,IACA,SAAAA;AAAA,EACF;AACF;AAGA,IAAM,UAAU,CAAC,OAAgB,QAAuC;AACtE,QAAM,MAAM,IAAI;AAChB,MAAI,OAAO,UAAU,SAAU;AAC/B,MAAI,sBAAsB;AAC1B,MAAI,WAAW,EAAE,kBAAkB,MAAM,KAAK;AAChD;;;ANbO,IAAM,uBAA+C;AAAA,EAC1D,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AAiCO,IAAM,kBAAsC,OAAO,YAAY;AA7DtE;AA8DE,QAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,QAAM,EAAE,IAAI,IAAI;AAGhB,QAAM,gBACJ,SAAI,WAAJ,YACC,OAAO,WAAW,WAAW,cAAc,WAAW,SAAS;AAGlE,QAAM,oBAAoB;AAAA,IACxB,GAAG;AAAA,IACH,IAAI,4CAAQ,aAAR,mBAAkB,gBAAlB,YAAiC,CAAC;AAAA,EACxC;AAGA,QAAM,gBAAwC,CAAC;AAC/C,SAAO,QAAQ,iBAAiB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC1D,kBAAc,IAAI,YAAY,CAAC,IAAI;AAAA,EACrC,CAAC;AAED,QAAM,WAAqB;AAAA,IACzB,aAAa;AAAA;AAAA,IACb,eAAc,4CAAQ,aAAR,mBAAkB,iBAAlB,YAAkC;AAAA,IAChD,aAAY,4CAAQ,aAAR,mBAAkB,eAAlB,YAAgC;AAAA,EAC9C;AAEA,QAAM,aAAmC,EAAE,SAAS;AAGpD,MAAI;AACJ,MAAI;AACJ,MAAI,wBAAwB;AAE5B,MAAI,cAAc;AAChB,UAAM,cAAa,cAAS,eAAT,YAAuB;AAM1C,UAAM,kBAAkB,IAAI,IAAI,OAAO,OAAO,aAAa,CAAC;AAW5D,UAAM,oBAAoB,CAAC,iBAA2C;AACpE,YAAM,QAA0B,CAAC;AAGjC,sBAAgB,QAAQ,CAAC,UAAU;AACjC,cAAM,KAAK,IAAI;AAAA,MACjB,CAAC;AAGD,mBACG,MAAM,GAAG,EACT,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,EAC5B,QAAQ,CAAC,OAAO;AACf,cAAM,SAAS,cAAc,GAAG,YAAY,CAAC;AAC7C,YAAI,QAAQ;AACV,gBAAM,MAAM,IAAI;AAAA,QAClB;AAAA,MACF,CAAC;AAEH,aAAO;AAAA,IACT;AAMA,UAAM,gBAAgB,MAAM;AAC1B,YAAM,eAAe,aAAa;AAClC,UAAI,iBAAiB,UAAa,iBAAiB,KAAM;AAGzD,UAAI,SAAS,cAAc;AACzB,cAAMC,OAAM,aAAa,UAAU;AACnC,aAAIA,QAAA,gBAAAA,KAAK,qBAAoB,CAACA,KAAI,iBAAiB,EAAG;AAAA,MACxD;AAEA,YAAM,QAAQ,kBAAkB,YAAY;AAG5C,UAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AACjC,YAAI,kBAAkB,KAAK;AAAA,MAC7B;AAAA,IACF;AAGA,UAAM,MAAM,aAAa,UAAU;AACnC,QAAI,OAAO,aAAa,wBAAwB,QAAW;AACzD,oBAAc;AAAA,IAChB;AAMA,QAAI,CAAC,KAAK;AACR,+BAAyB,aAAa;AACtC,8BAAwB;AAExB,mBAAa,iBAAiB,MAAM;AAElC,YAAI,uBAAwB,wBAAuB;AACnD,sBAAc;AAGd,qBAAa,iBAAiB;AAC9B,gCAAwB;AAAA,MAC1B;AAAA,IACF;AAGA,oBAAgB,MAAM;AACpB,oBAAc;AAAA,IAChB;AACA,iBAAa,iBAAiB,yBAAyB,aAAa;AAAA,EACtE;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS,OAAO,aAAa;AAE3B,UAAI,gBAAgB,eAAe;AACjC,qBAAa;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,gBAAgB,uBAAuB;AACzC,qBAAa,iBAAiB;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,gBAAQ;","names":["fullConsent","minimalConsent","trigger","cmp"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import type { Source, WalkerOS } from '@walkeros/core';\nimport type { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n if (actualWindow) {\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n }\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n","import type { Source, Elb } from '@walkeros/core';\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n title: 'Minimal consent',\n description:\n 'Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.',\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n title: 'SDK loaded detection',\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger","cmp"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var t=Object.defineProperty,
|
|
1
|
+
var t=Object.defineProperty,e={},n=",C0001,C0002,C0003,C0004,C0005,",o=",C0001,C0003,",r=",C0001,",a=",C0001,C0002,",i=",C0001,C0004,",l="",s=",C0001,CUSTOM01,CUSTOM02,",c={functional:!0,analytics:!0,marketing:!0},u={functional:!0,analytics:!1,marketing:!1},p={functional:!0,analytics:!1,marketing:!1},d={functional:!0,analytics:!0,marketing:!1},g={functional:!0,analytics:!1,marketing:!0},C=()=>{},y=()=>()=>Promise.resolve({ok:!0}),m={error:C,warn:C,info:C,debug:C,throw:t=>{throw"string"==typeof t?new Error(t):t},json:C,scope:()=>m},f=(t=!1)=>({IsAlertBoxClosed:()=>t}),w={};((e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})})(w,{categoryMapOverride:()=>O,fullConsent:()=>k,minimalConsent:()=>v,sdkLoadedDetection:()=>b});var k={title:"Full consent",description:"A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",trigger:{type:"consent"},in:",C0001,C0002,C0003,C0004,C0005,",out:[["elb","walker consent",{functional:!0,analytics:!0,marketing:!0}]]},v={title:"Minimal consent",description:"Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",trigger:{type:"consent"},in:",C0001,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!1}]]},O={title:"Category map override",description:"Custom categoryMap remaps C0002 from analytics to statistics",trigger:{type:"consent"},in:",C0001,C0002,",mapping:{categoryMap:{C0002:"statistics"}},out:[["elb","walker consent",{functional:!0,statistics:!0,marketing:!1}]]},b={title:"SDK loaded detection",description:"Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",trigger:{type:"consent"},in:",C0001,C0003,C0004,",out:[["elb","walker consent",{functional:!0,analytics:!1,marketing:!0}]]};import{startFlow as h}from"@walkeros/collector";var A=async t=>{let e;return{get flow(){return e},trigger:()=>async n=>{var o;const r=window;if(r.OptanonActiveGroups=n,r.OneTrust={IsAlertBoxClosed:()=>!0},!e){const n=await h({...t,run:null==(o=t.run)||o});e={collector:n.collector,elb:n.elb}}}}},T=(t,e)=>{const n=e.window;"string"==typeof t&&(n.OptanonActiveGroups=t,n.OneTrust={IsAlertBoxClosed:()=>!0})},x={C0001:"functional",C0002:"analytics",C0003:"functional",C0004:"marketing",C0005:"marketing"},M=async t=>{var e,n,o,r,a,i,l,s;const{config:c,env:u}=t,{elb:p}=u,d=null!=(e=u.window)?e:void 0!==globalThis.window?globalThis.window:void 0,g={...x,...null!=(o=null==(n=null==c?void 0:c.settings)?void 0:n.categoryMap)?o:{}},C={};Object.entries(g).forEach(([t,e])=>{C[t.toLowerCase()]=e});const y={categoryMap:g,explicitOnly:null==(a=null==(r=null==c?void 0:c.settings)?void 0:r.explicitOnly)||a,globalName:null!=(l=null==(i=null==c?void 0:c.settings)?void 0:i.globalName)?l:"OneTrust"},m={settings:y};let f,w,k=!1;if(d){const t=null!=(s=y.globalName)?s:"OneTrust",e=new Set(Object.values(C)),n=t=>{const n={};return e.forEach(t=>{n[t]=!1}),t.split(",").filter(t=>t.length>0).forEach(t=>{const e=C[t.toLowerCase()];e&&(n[e]=!0)}),n},o=()=>{const e=d.OptanonActiveGroups;if(null==e)return;if(y.explicitOnly){const e=d[t];if((null==e?void 0:e.IsAlertBoxClosed)&&!e.IsAlertBoxClosed())return}const o=n(e);Object.keys(o).length>0&&p("walker consent",o)},r=d[t];r&&void 0!==d.OptanonActiveGroups&&o(),r||(w=d.OptanonWrapper,k=!0,d.OptanonWrapper=()=>{w&&w(),o(),d.OptanonWrapper=w,k=!1}),f=()=>{o()},d.addEventListener("OneTrustGroupsUpdated",f)}return{type:"cookiepro",config:m,push:p,destroy:async t=>{d&&f&&d.removeEventListener("OneTrustGroupsUpdated",f),d&&k&&(d.OptanonWrapper=w)}}},I=M;export{x as DEFAULT_CATEGORY_MAP,e as SourceCookiePro,a as analyticsOnlyConsent,d as analyticsOnlyMapped,y as createMockElbFn,f as createMockOneTrustAPI,A as createTrigger,s as customCategoryConsent,I as default,l as emptyConsent,n as fullConsent,c as fullConsentMapped,i as marketingOnlyConsent,g as marketingOnlyMapped,r as minimalConsent,p as minimalConsentMapped,m as noopLogger,o as partialConsent,u as partialConsentMapped,M as sourceCookiePro,w as step,T as trigger};//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/index.ts"],"sourcesContent":["import type { Source, Elb } from '@walkeros/core';\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n","import type { Source, WalkerOS } from '@walkeros/core';\nimport type { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n if (actualWindow) {\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n }\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger","cmp"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/index.ts","../src/examples/inputs.ts","../src/examples/outputs.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/index.ts"],"sourcesContent":["import type { Source, Elb } from '@walkeros/core';\n\n/**\n * OneTrust global API interface.\n *\n * Represents the subset of the OneTrust SDK we interact with.\n * The full SDK is much larger, but we only need consent-related methods.\n */\nexport interface OneTrustAPI {\n /** Returns true if user has made an explicit consent choice */\n IsAlertBoxClosed: () => boolean;\n /** Register a callback for consent changes (callback receives event with detail: string[]) */\n OnConsentChanged?: (fn: (event: { detail: string[] }) => void) => void;\n}\n\ndeclare global {\n interface Window {\n /** OneTrust SDK global object */\n OneTrust?: OneTrustAPI;\n /** Comma-separated string of active consent category IDs (e.g. \",C0001,C0003,\") */\n OptanonActiveGroups?: string;\n /** OneTrust callback function, called on SDK load and consent changes */\n OptanonWrapper?: () => void;\n /** CookiePro legacy alias for OneTrust */\n Optanon?: unknown;\n [key: string]: OneTrustAPI | unknown;\n }\n\n interface WindowEventMap {\n /** event.detail is an array of active group ID strings (e.g. [\"C0001\", \"C0002\"]) */\n OneTrustGroupsUpdated: CustomEvent<string[]>;\n }\n}\n\n/**\n * Settings for CookiePro/OneTrust source\n */\nexport interface Settings {\n /**\n * Map CookiePro category IDs to walkerOS consent groups.\n * Keys: CookiePro category IDs (e.g. 'C0001', 'C0002')\n * Values: walkerOS consent group names\n *\n * Comparison is case-insensitive (keys are normalized to lowercase during init).\n *\n * Default provides sensible mapping for standard OneTrust categories:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\n categoryMap?: Record<string, string>;\n\n /**\n * Only process explicit consent (user made a choice).\n * When true: Checks OneTrust.IsAlertBoxClosed() -- only processes\n * consent if user has actively interacted with the banner.\n * When false: Processes any consent state including defaults.\n *\n * Default: true\n */\n explicitOnly?: boolean;\n\n /**\n * Custom name for window.OneTrust object.\n * Some implementations use a different global name.\n *\n * Default: 'OneTrust'\n */\n globalName?: string;\n}\n\n/**\n * User input settings (all optional)\n */\nexport type InitSettings = Partial<Settings>;\n\n/**\n * No mapping configuration for this source\n */\nexport interface Mapping {}\n\n/**\n * Push function type - uses elb for consent commands\n */\nexport type Push = Elb.Fn;\n\n/**\n * Environment interface for CookiePro source\n */\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\n/**\n * Types bundle for CookiePro source\n */\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\n/**\n * Config type alias\n */\nexport type Config = Source.Config<Types>;\n","/**\n * Example CookiePro OptanonActiveGroups strings.\n *\n * These represent real consent states from CookiePro/OneTrust CMP.\n * Format: comma-separated active category IDs with leading/trailing commas.\n * Only active groups are listed. Absence means denied.\n */\n\n/**\n * Full consent - user accepted all categories\n */\nexport const fullConsent = ',C0001,C0002,C0003,C0004,C0005,';\n\n/**\n * Partial consent - necessary + functional only\n */\nexport const partialConsent = ',C0001,C0003,';\n\n/**\n * Minimal consent - only strictly necessary (always active)\n */\nexport const minimalConsent = ',C0001,';\n\n/**\n * Analytics only - necessary + performance\n */\nexport const analyticsOnlyConsent = ',C0001,C0002,';\n\n/**\n * Marketing only - necessary + targeting\n */\nexport const marketingOnlyConsent = ',C0001,C0004,';\n\n/**\n * Empty string - no consent yet or cleared\n */\nexport const emptyConsent = '';\n\n/**\n * Custom category IDs - some installations use custom IDs\n */\nexport const customCategoryConsent = ',C0001,CUSTOM01,CUSTOM02,';\n","import type { WalkerOS } from '@walkeros/core';\n\n/**\n * Expected walkerOS consent outputs.\n *\n * These represent the consent state after parsing OptanonActiveGroups\n * and mapping through the default categoryMap.\n *\n * Default map:\n * - C0001 -> functional\n * - C0002 -> analytics\n * - C0003 -> functional\n * - C0004 -> marketing\n * - C0005 -> marketing\n *\n * All mapped walkerOS groups get explicit true/false values.\n * Active groups -> true, absent groups -> false.\n */\n\n/**\n * Full consent mapped to walkerOS groups\n */\nexport const fullConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: true,\n};\n\n/**\n * Partial consent - necessary + functional mapped\n * C0001 -> functional (true), C0003 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const partialConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Minimal consent - only strictly necessary\n * C0001 -> functional (true)\n * analytics and marketing absent -> false\n */\nexport const minimalConsentMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: false,\n};\n\n/**\n * Analytics only - necessary + performance\n * C0001 -> functional (true), C0002 -> analytics (true)\n * marketing absent -> false\n */\nexport const analyticsOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: true,\n marketing: false,\n};\n\n/**\n * Marketing only - necessary + targeting\n * C0001 -> functional (true), C0004 -> marketing (true)\n * analytics absent -> false\n */\nexport const marketingOnlyMapped: WalkerOS.Consent = {\n functional: true,\n analytics: false,\n marketing: true,\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\nimport type { OneTrustAPI } from '../types';\n\n/**\n * Example environment configurations for CookiePro source testing.\n */\n\nconst noop = () => {};\n\n/**\n * Create a properly typed elb/push function mock\n */\nexport const createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n/**\n * Simple no-op logger for demo purposes\n */\nexport const noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Create a mock OneTrust API object\n */\nexport const createMockOneTrustAPI = (\n isAlertBoxClosed = false,\n): OneTrustAPI => ({\n IsAlertBoxClosed: () => isAlertBoxClosed,\n});\n","import type { Flow } from '@walkeros/core';\n\nexport const fullConsent: Flow.StepExample = {\n title: 'Full consent',\n description:\n 'A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,C0003,C0004,C0005,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: true,\n marketing: true,\n },\n ],\n ],\n};\n\nexport const minimalConsent: Flow.StepExample = {\n title: 'Minimal consent',\n description:\n 'Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.',\n trigger: { type: 'consent' },\n in: ',C0001,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const categoryMapOverride: Flow.StepExample = {\n title: 'Category map override',\n description: 'Custom categoryMap remaps C0002 from analytics to statistics',\n trigger: { type: 'consent' },\n in: ',C0001,C0002,',\n mapping: { categoryMap: { C0002: 'statistics' } },\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n statistics: true,\n marketing: false,\n },\n ],\n ],\n};\n\nexport const sdkLoadedDetection: Flow.StepExample = {\n title: 'SDK loaded detection',\n description:\n 'Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true',\n trigger: { type: 'consent' },\n in: ',C0001,C0003,C0004,',\n out: [\n [\n 'elb',\n 'walker consent',\n {\n functional: true,\n analytics: false,\n marketing: true,\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<string, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<string, void> = () => async (content: string) => {\n // Pre-init: set OneTrust globals (source reads these during init)\n const win = window as unknown as Record<string, unknown>;\n win.OptanonActiveGroups = content;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n\n // Lazy startFlow — source checks globals immediately during init\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Sets OptanonActiveGroups and OneTrust globals before source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & Record<string, unknown>;\n if (typeof input !== 'string') return;\n win.OptanonActiveGroups = input;\n win.OneTrust = { IsAlertBoxClosed: () => true };\n};\n\nexport { createTrigger, trigger };\n","import type { Source, WalkerOS } from '@walkeros/core';\nimport type { Types, Settings, OneTrustAPI } from './types';\n\n// Export types for external usage\nexport * as SourceCookiePro from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * Default category mapping from CookiePro/OneTrust to walkerOS consent groups.\n *\n * Keys use OneTrust's standard uppercase IDs (as shown in CookiePro dashboard).\n * Lookups are case-insensitive (normalized during init).\n *\n * Maps OneTrust's standard category IDs to walkerOS convention:\n * - C0001 (Strictly Necessary) -> functional\n * - C0002 (Performance) -> analytics\n * - C0003 (Functional) -> functional\n * - C0004 (Targeting) -> marketing\n * - C0005 (Social Media) -> marketing\n */\nexport const DEFAULT_CATEGORY_MAP: Record<string, string> = {\n C0001: 'functional',\n C0002: 'analytics',\n C0003: 'functional',\n C0004: 'marketing',\n C0005: 'marketing',\n};\n\n/**\n * CookiePro/OneTrust consent management source for walkerOS.\n *\n * This source listens to CookiePro/OneTrust CMP events and translates\n * consent states to walkerOS consent commands.\n *\n * Three detection paths:\n * 1. Already loaded: window.OneTrust + window.OptanonActiveGroups\n * 2. Init: Wraps OptanonWrapper (preserves existing)\n * 3. Change: OneTrustGroupsUpdated window event\n *\n * @example\n * ```typescript\n * import { sourceCookiePro } from '@walkeros/web-source-cmp-cookiepro';\n *\n * await startFlow({\n * sources: {\n * consent: {\n * code: sourceCookiePro,\n * config: {\n * settings: {\n * categoryMap: {\n * C0002: 'statistics', // Custom mapping\n * },\n * },\n * },\n * },\n * },\n * });\n * ```\n */\nexport const sourceCookiePro: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb } = env;\n\n // Resolve window with fallback to globalThis\n const actualWindow =\n env.window ??\n (typeof globalThis.window !== 'undefined' ? globalThis.window : undefined);\n\n // Merge user settings with defaults (user overrides win)\n const mergedCategoryMap = {\n ...DEFAULT_CATEGORY_MAP,\n ...(config?.settings?.categoryMap ?? {}),\n };\n\n // Build normalized (lowercase) lookup map for case-insensitive matching\n const normalizedMap: Record<string, string> = {};\n Object.entries(mergedCategoryMap).forEach(([key, value]) => {\n normalizedMap[key.toLowerCase()] = value;\n });\n\n const settings: Settings = {\n categoryMap: mergedCategoryMap, // Preserves original casing for config\n explicitOnly: config?.settings?.explicitOnly ?? true,\n globalName: config?.settings?.globalName ?? 'OneTrust',\n };\n\n const fullConfig: Source.Config<Types> = { settings };\n\n // Track references for cleanup\n let eventListener: (() => void) | undefined;\n let originalOptanonWrapper: (() => void) | undefined;\n let wrappedOptanonWrapper = false;\n\n if (actualWindow) {\n const globalName = settings.globalName ?? 'OneTrust';\n\n /**\n * Collect all unique walkerOS group names from the normalizedMap.\n * Used to set explicit false for absent groups.\n */\n const allMappedGroups = new Set(Object.values(normalizedMap));\n\n /**\n * Parse OptanonActiveGroups string into walkerOS consent state.\n *\n * OptanonActiveGroups format: \",C0001,C0003,\" (comma-separated, leading/trailing commas)\n * Only active groups are listed. Absence means denied.\n * Uses case-insensitive comparison for category IDs via normalizedMap.\n * Only mapped categories produce consent entries (unmapped IDs are ignored).\n * Sets explicit false for all mapped groups not in the active list.\n */\n const parseActiveGroups = (activeGroups: string): WalkerOS.Consent => {\n const state: WalkerOS.Consent = {};\n\n // Initialize all mapped groups to false\n allMappedGroups.forEach((group) => {\n state[group] = false;\n });\n\n // Set active groups to true (case-insensitive via normalizedMap)\n activeGroups\n .split(',')\n .filter((id) => id.length > 0)\n .forEach((id) => {\n const mapped = normalizedMap[id.toLowerCase()];\n if (mapped) {\n state[mapped] = true;\n }\n });\n\n return state;\n };\n\n /**\n * Handle consent by reading current OptanonActiveGroups from window.\n * Checks explicitOnly against IsAlertBoxClosed when available.\n */\n const handleConsent = () => {\n const activeGroups = actualWindow.OptanonActiveGroups;\n if (activeGroups === undefined || activeGroups === null) return;\n\n // Check explicit consent if required\n if (settings.explicitOnly) {\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp?.IsAlertBoxClosed && !cmp.IsAlertBoxClosed()) return;\n }\n\n const state = parseActiveGroups(activeGroups);\n\n // Only call if we have consent state to report\n if (Object.keys(state).length > 0) {\n elb('walker consent', state);\n }\n };\n\n // --- Detection path 1: Already loaded ---\n const cmp = actualWindow[globalName] as OneTrustAPI | undefined;\n if (cmp && actualWindow.OptanonActiveGroups !== undefined) {\n handleConsent();\n }\n\n // --- Detection path 2: OptanonWrapper ---\n // Only wrap if SDK is not yet loaded (no already-loaded path).\n // Self-unwraps after first call -- the event listener handles all\n // subsequent changes, avoiding double-firing.\n if (!cmp) {\n originalOptanonWrapper = actualWindow.OptanonWrapper;\n wrappedOptanonWrapper = true;\n\n actualWindow.OptanonWrapper = () => {\n // Call original wrapper if it existed\n if (originalOptanonWrapper) originalOptanonWrapper();\n handleConsent();\n // Self-unwrap: restore original after first call (SDK init).\n // The OneTrustGroupsUpdated listener handles all future changes.\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n wrappedOptanonWrapper = false;\n };\n }\n\n // --- Detection path 3: OneTrustGroupsUpdated event ---\n eventListener = () => {\n handleConsent();\n };\n actualWindow.addEventListener('OneTrustGroupsUpdated', eventListener);\n }\n\n return {\n type: 'cookiepro',\n config: fullConfig,\n push: elb,\n destroy: async (_context) => {\n // Remove event listener\n if (actualWindow && eventListener) {\n actualWindow.removeEventListener(\n 'OneTrustGroupsUpdated',\n eventListener,\n );\n }\n // Restore original OptanonWrapper\n if (actualWindow && wrappedOptanonWrapper) {\n actualWindow.OptanonWrapper = originalOptanonWrapper;\n }\n },\n };\n};\n\nexport default sourceCookiePro;\n"],"mappings":"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","names":["fullConsent","minimalConsent","trigger","cmp"]}
|
package/dist/walkerOS.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$meta": {
|
|
3
3
|
"package": "@walkeros/web-source-cmp-cookiepro",
|
|
4
|
-
"version": "3.4.
|
|
4
|
+
"version": "3.4.1-next-1776790594143",
|
|
5
5
|
"type": "source",
|
|
6
6
|
"platform": [
|
|
7
7
|
"web"
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"$code": "()=>{}"
|
|
97
97
|
},
|
|
98
98
|
"scope": {
|
|
99
|
-
"$code": "()=>
|
|
99
|
+
"$code": "()=>k"
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
102
|
"partialConsent": ",C0001,C0003,",
|
|
@@ -107,6 +107,7 @@
|
|
|
107
107
|
},
|
|
108
108
|
"step": {
|
|
109
109
|
"categoryMapOverride": {
|
|
110
|
+
"title": "Category map override",
|
|
110
111
|
"description": "Custom categoryMap remaps C0002 from analytics to statistics",
|
|
111
112
|
"trigger": {
|
|
112
113
|
"type": "consent"
|
|
@@ -130,6 +131,8 @@
|
|
|
130
131
|
]
|
|
131
132
|
},
|
|
132
133
|
"fullConsent": {
|
|
134
|
+
"title": "Full consent",
|
|
135
|
+
"description": "A CookiePro OptanonConsent cookie listing all groups is translated into a walker consent command with all true.",
|
|
133
136
|
"trigger": {
|
|
134
137
|
"type": "consent"
|
|
135
138
|
},
|
|
@@ -147,6 +150,8 @@
|
|
|
147
150
|
]
|
|
148
151
|
},
|
|
149
152
|
"minimalConsent": {
|
|
153
|
+
"title": "Minimal consent",
|
|
154
|
+
"description": "Only the necessary CookiePro group is granted so analytics and marketing map to false in the walker consent command.",
|
|
150
155
|
"trigger": {
|
|
151
156
|
"type": "consent"
|
|
152
157
|
},
|
|
@@ -164,6 +169,7 @@
|
|
|
164
169
|
]
|
|
165
170
|
},
|
|
166
171
|
"sdkLoadedDetection": {
|
|
172
|
+
"title": "SDK loaded detection",
|
|
167
173
|
"description": "Immediate detection when OneTrust SDK is already loaded with IsAlertBoxClosed() = true",
|
|
168
174
|
"trigger": {
|
|
169
175
|
"type": "consent"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/web-source-cmp-cookiepro",
|
|
3
3
|
"description": "CookiePro/OneTrust consent management source for walkerOS",
|
|
4
|
-
"version": "3.4.
|
|
4
|
+
"version": "3.4.1-next-1776790594143",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"walkerOS": {
|
|
7
7
|
"type": "source",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"update": "npx npm-check-updates -u && npm update"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@walkeros/core": "3.4.
|
|
49
|
-
"@walkeros/collector": "3.4.
|
|
48
|
+
"@walkeros/core": "3.4.1-next-1776790594143",
|
|
49
|
+
"@walkeros/collector": "3.4.1-next-1776790594143"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {},
|
|
52
52
|
"repository": {
|