{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n  apiKey: z\n    .string()\n    .min(1)\n    .describe(\n      'Your Mixpanel project token. Find it in your Mixpanel project settings under \"Project Settings\" and \"Access Keys\". Passed to mixpanel.init() as the first argument (like a1b2c3d4e5f6789012345678abcdef12).',\n    ),\n  api_host: z\n    .string()\n    .describe(\n      'Mixpanel ingestion host. Default: https://api-js.mixpanel.com. Use https://api-eu.mixpanel.com for EU residency.',\n    )\n    .optional(),\n  persistence: z\n    .enum(['cookie', 'localStorage'])\n    .describe('Client-side persistence backend. Default: cookie.')\n    .optional(),\n  cross_subdomain_cookie: z\n    .boolean()\n    .describe('Share cookie across subdomains. Default: true.')\n    .optional(),\n  cookie_expiration: z\n    .number()\n    .int()\n    .nonnegative()\n    .describe('Cookie expiration in days. Default: 365.')\n    .optional(),\n  secure_cookie: z\n    .boolean()\n    .describe('Only send cookie over HTTPS. Default: false.')\n    .optional(),\n  ip: z\n    .boolean()\n    .describe('Enable server-side IP geolocation. Default: true.')\n    .optional(),\n  batch_requests: z\n    .boolean()\n    .describe(\n      'Use the /batch endpoint instead of individual requests. Default: true.',\n    )\n    .optional(),\n  batch_size: z\n    .number()\n    .int()\n    .positive()\n    .describe('Max events per batch. Default: 50.')\n    .optional(),\n  batch_flush_interval_ms: z\n    .number()\n    .int()\n    .positive()\n    .describe('Batch flush interval in ms. Default: 5000.')\n    .optional(),\n  debug: z\n    .boolean()\n    .describe('Enable verbose SDK logging. Default: false.')\n    .optional(),\n  opt_out_tracking_by_default: z\n    .boolean()\n    .describe(\n      'Start in opted-out state until opt_in_tracking() is called. Default: false.',\n    )\n    .optional(),\n  track_pageview: z\n    .union([z.boolean(), z.string()])\n    .describe(\n      'Enable Mixpanel auto-pageview tracking. walkerOS default: false — walkerOS sources handle page views.',\n    )\n    .optional(),\n  autocapture: z\n    .unknown()\n    .describe(\n      'Enable Mixpanel web autocapture. walkerOS default: false — walkerOS sources handle event capture.',\n    )\n    .optional(),\n  record_sessions_percent: z\n    .number()\n    .min(0)\n    .max(100)\n    .describe(\n      'Session replay sampling rate (0-100). Default: 0 (disabled). Session replay is bundled in the npm build.',\n    )\n    .optional(),\n  record_mask_all_inputs: z\n    .boolean()\n    .describe('Mask all input values in session replay. Default: true.')\n    .optional(),\n  identify: z\n    .unknown()\n    .describe(\n      'walkerOS mapping value resolving to an identity object. Keys: distinctId.',\n    )\n    .optional(),\n  group: z\n    .unknown()\n    .describe(\n      'walkerOS mapping value resolving to { key, id } → mixpanel.set_group(key, id). Runs on destination init or per-event.',\n    )\n    .optional(),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({\n  identify: z\n    .unknown()\n    .describe(\n      'Per-event identity mapping. Resolves to { distinctId } → mixpanel.identify(distinctId).',\n    )\n    .optional(),\n  people: z\n    .unknown()\n    .describe(\n      'Per-event people operations. Resolves to an object with any of: set, set_once, increment, append, union, remove, unset, delete_user. Each key fires a separate mixpanel.people.* call.',\n    )\n    .optional(),\n  group: z\n    .unknown()\n    .describe(\n      'Per-event group assignment. Resolves to { key, id } → mixpanel.set_group(key, id).',\n    )\n    .optional(),\n  groupProfile: z\n    .unknown()\n    .describe(\n      'Per-event group profile operations. Resolves to { key, id, set?, set_once?, unset?, union?, remove?, delete? } → mixpanel.get_group(key, id).set/... calls.',\n    )\n    .optional(),\n  reset: z\n    .unknown()\n    .describe(\n      'Logout trigger. Resolves to a truthy value → mixpanel.reset(). Typically used with silent: true on a user logout rule.',\n    )\n    .optional(),\n});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\n","import type { Env, MixpanelGroup } from '../types';\n\nconst noop = () => {};\n\n/**\n * A recording group handle that accumulates calls so tests can assert on them.\n * Each method records its arguments and returns `this` for chaining.\n */\nclass RecordingGroup implements MixpanelGroup {\n  _calls: Array<{ method: string; args: unknown[] }> = [];\n\n  private _record(method: string, ...args: unknown[]) {\n    this._calls.push({ method, args });\n  }\n\n  set(...args: unknown[]) {\n    this._record('set', ...args);\n  }\n  set_once(...args: unknown[]) {\n    this._record('set_once', ...args);\n  }\n  unset(...args: unknown[]) {\n    this._record('unset', ...args);\n  }\n  union(...args: unknown[]) {\n    this._record('union', ...args);\n  }\n  remove(...args: unknown[]) {\n    this._record('remove', ...args);\n  }\n  delete(...args: unknown[]) {\n    this._record('delete', ...args);\n  }\n}\n\n/**\n * A no-op group handle returned by the stub get_group(). Tests replace the\n * get_group function in the spy runner so this stub is never actually seen.\n */\nconst noopGroup: MixpanelGroup = {\n  set: noop,\n  set_once: noop,\n  unset: noop,\n  union: noop,\n  remove: noop,\n  delete: noop,\n};\n\n/**\n * Pre-init env — all methods are no-ops until the test runner wires spies.\n */\nexport const init: Env | undefined = {\n  mixpanel: {\n    init: noop,\n    track: noop,\n    identify: noop,\n    reset: noop,\n    set_group: noop,\n    get_group: () => noopGroup,\n    opt_in_tracking: noop,\n    opt_out_tracking: noop,\n    stop_batch_senders: noop,\n    people: {\n      set: noop,\n      set_once: noop,\n      increment: noop,\n      append: noop,\n      union: noop,\n      remove: noop,\n      unset: noop,\n      delete_user: noop,\n    },\n  },\n};\n\n/**\n * Post-init env — same shape. The test runner clones this and replaces\n * individual methods with jest.fn() so it can assert on calls.\n */\nexport const push: Env = {\n  mixpanel: {\n    init: noop,\n    track: noop,\n    identify: noop,\n    reset: noop,\n    set_group: noop,\n    get_group: () => noopGroup,\n    opt_in_tracking: noop,\n    opt_out_tracking: noop,\n    stop_batch_senders: noop,\n    people: {\n      set: noop,\n      set_once: noop,\n      increment: noop,\n      append: noop,\n      union: noop,\n      remove: noop,\n      unset: noop,\n      delete_user: noop,\n    },\n  },\n};\n\n/** Simulation tracking paths for CLI --simulate. */\nexport const simulation = [\n  'call:mixpanel.init',\n  'call:mixpanel.track',\n  'call:mixpanel.identify',\n  'call:mixpanel.reset',\n  'call:mixpanel.set_group',\n  'call:mixpanel.get_group',\n  'call:mixpanel.opt_in_tracking',\n  'call:mixpanel.opt_out_tracking',\n  'call:mixpanel.people.set',\n  'call:mixpanel.people.set_once',\n  'call:mixpanel.people.increment',\n  'call:mixpanel.people.append',\n  'call:mixpanel.people.union',\n  'call:mixpanel.people.remove',\n  'call:mixpanel.people.unset',\n  'call:mixpanel.people.delete_user',\n];\n","import type { Flow, WalkerOS } from '@walkeros/core';\nimport { getEvent } from '@walkeros/core';\nimport type { Settings } from '../types';\n\n/**\n * Examples may optionally carry destination-level settings. The test runner\n * reads `settings` from the example and merges it into the base destination\n * settings on top of the fixed apiKey.\n */\nexport type MixpanelStepExample = Flow.StepExample & {\n  settings?: Partial<Settings>;\n  configInclude?: string[];\n  /** Consent granted before `in` so a gated destination is loaded first. */\n  before?: WalkerOS.Consent;\n};\n\n/**\n * Default event forwarding - every walkerOS event becomes\n * mixpanel.track(event.name, properties). With no mapping and no\n * destination-level include, properties is `{}`.\n */\nexport const defaultEventForwarding: MixpanelStepExample = {\n  title: 'Default track',\n  description:\n    'A walker event becomes a Mixpanel track call with the event name and empty properties.',\n  in: getEvent('product view', { timestamp: 1700000100 }),\n  out: [['mixpanel.track', 'product view', {}]],\n};\n\n/**\n * Wildcard ignore - walkerOS's standard way to drop events. The rule\n * matches but does nothing. The destination fires zero SDK calls.\n */\nexport const wildcardIgnored: MixpanelStepExample = {\n  public: false,\n  in: getEvent('debug noise', { timestamp: 1700000101 }),\n  mapping: { ignore: true },\n  out: [],\n};\n\n/**\n * Destination-level settings.include flattens the walkerOS `data` section\n * into prefixed track() properties on every push.\n */\nexport const destinationLevelInclude: MixpanelStepExample = {\n  title: 'Include data',\n  description:\n    'Destination-level include flattens the event data section into prefixed Mixpanel track properties.',\n  in: getEvent('product view', { timestamp: 1700000102 }),\n  configInclude: ['data'],\n  out: [\n    [\n      'mixpanel.track',\n      'product view',\n      {\n        data_id: 'ers',\n        data_name: 'Everyday Ruck Snack',\n        data_color: 'black',\n        data_size: 'l',\n        data_price: 420,\n      },\n    ],\n  ],\n};\n\n/**\n * Per-rule settings.include REPLACES destination-level include for the\n * matched rule. Here destination-level sends `data`, but the rule\n * overrides it with `globals` only.\n */\nexport const ruleIncludeReplaces: MixpanelStepExample = {\n  title: 'Rule include overrides',\n  description:\n    'A per-rule include replaces the destination-level include for this event, forwarding only globals here.',\n  in: getEvent('order complete', { timestamp: 1700000103 }),\n  configInclude: ['data'],\n  mapping: {\n    include: ['globals'],\n  },\n  out: [\n    [\n      'mixpanel.track',\n      'order complete',\n      {\n        globals_pagegroup: 'shop',\n      },\n    ],\n  ],\n};\n\n/**\n * Destination-level settings.identify fires on the first push. The\n * destination resolves { distinctId } and calls mixpanel.identify(distinctId),\n * then tracks the result in runtime state. Subsequent pushes with unchanged\n * distinctId do NOT re-fire identify().\n */\nexport const destinationLevelIdentify: MixpanelStepExample = {\n  title: 'Destination identify',\n  description:\n    'Destination-level identify calls mixpanel.identify with a resolved distinctId before firing the default track.',\n  in: getEvent('page view', { timestamp: 1700000104 }),\n  settings: {\n    identify: {\n      map: {\n        distinctId: 'user.id',\n      },\n    },\n  },\n  out: [\n    ['mixpanel.identify', 'us3r'],\n    ['mixpanel.track', 'page view', {}],\n  ],\n};\n\n/**\n * Per-event identify + people operations - the canonical \"user login\"\n * pattern. `silent: true` suppresses the default mixpanel.track() call\n * because we're running identity side effects only.\n */\nexport const userLoginIdentifyAndPeople: MixpanelStepExample = {\n  title: 'User login identify',\n  description:\n    'A user login identifies the user and fires Mixpanel people set, set_once, and increment operations.',\n  in: getEvent('user login', {\n    timestamp: 1700000105,\n    data: {\n      user_id: 'new-user-123',\n      plan: 'premium',\n      company: 'Acme',\n      email: 'user@acme.com',\n    },\n  }),\n  mapping: {\n    silent: true,\n    settings: {\n      identify: {\n        map: {\n          distinctId: 'data.user_id',\n        },\n      },\n      people: {\n        map: {\n          set: {\n            map: {\n              plan: 'data.plan',\n              company: 'data.company',\n              email: 'data.email',\n            },\n          },\n          set_once: {\n            map: {\n              first_login: 'timestamp',\n            },\n          },\n          increment: {\n            map: {\n              login_count: { value: 1 },\n            },\n          },\n        },\n      },\n    },\n  },\n  out: [\n    ['mixpanel.identify', 'new-user-123'],\n    [\n      'mixpanel.people.set',\n      {\n        plan: 'premium',\n        company: 'Acme',\n        email: 'user@acme.com',\n      },\n    ],\n    [\n      'mixpanel.people.set_once',\n      {\n        first_login: 1700000105,\n      },\n    ],\n    [\n      'mixpanel.people.increment',\n      {\n        login_count: 1,\n      },\n    ],\n  ],\n};\n\n/**\n * Full people operation vocabulary - a profile update rule that exercises\n * set, set_once, increment, append, union, remove, and unset in a single\n * rule. `silent: true` because only side effects are needed.\n */\nexport const profileUpdateAllPeopleOperations: MixpanelStepExample = {\n  title: 'All people operations',\n  description:\n    'A profile update exercises the full Mixpanel people vocabulary including set, increment, append, union, and remove.',\n  in: getEvent('profile update', {\n    timestamp: 1700000106,\n    data: {\n      name: 'Jane Doe',\n      email: 'jane@acme.com',\n      page: '/docs/getting-started',\n      removed_tag: 'trial',\n      source: 'referral',\n    },\n  }),\n  mapping: {\n    silent: true,\n    settings: {\n      people: {\n        map: {\n          set: {\n            map: {\n              name: 'data.name',\n              email: 'data.email',\n            },\n          },\n          set_once: {\n            map: {\n              signup_source: 'data.source',\n            },\n          },\n          increment: {\n            map: {\n              page_views: { value: 1 },\n            },\n          },\n          append: {\n            map: {\n              visited_pages: 'data.page',\n            },\n          },\n          union: {\n            map: {\n              unique_tags: { value: ['active'] },\n            },\n          },\n          remove: {\n            map: {\n              tags: 'data.removed_tag',\n            },\n          },\n          unset: { value: ['old_plan'] },\n        },\n      },\n    },\n  },\n  out: [\n    ['mixpanel.people.set', { name: 'Jane Doe', email: 'jane@acme.com' }],\n    ['mixpanel.people.set_once', { signup_source: 'referral' }],\n    ['mixpanel.people.increment', { page_views: 1 }],\n    ['mixpanel.people.append', { visited_pages: '/docs/getting-started' }],\n    ['mixpanel.people.union', { unique_tags: ['active'] }],\n    ['mixpanel.people.remove', { tags: 'trial' }],\n    ['mixpanel.people.unset', ['old_plan']],\n  ],\n};\n\n/**\n * people.delete_user - destructive operation. The resolved people object\n * uses `{ delete_user: true }` to trigger the call.\n */\nexport const accountDeleteUser: MixpanelStepExample = {\n  title: 'Delete user',\n  description:\n    'An account delete fires Mixpanel people.delete_user to remove the user profile from the project.',\n  in: getEvent('account delete', { timestamp: 1700000107 }),\n  mapping: {\n    silent: true,\n    settings: {\n      people: {\n        map: {\n          delete_user: { value: true },\n        },\n      },\n    },\n  },\n  out: [['mixpanel.people.delete_user']],\n};\n\n/**\n * User logout - reset: true fires mixpanel.reset(), which clears all\n * persistence and generates a new anonymous distinct_id.\n */\nexport const userLogoutReset: MixpanelStepExample = {\n  title: 'User logout reset',\n  description:\n    'A user logout calls mixpanel.reset to clear persistence and generate a new anonymous distinct id.',\n  in: getEvent('user logout', { timestamp: 1700000108 }),\n  mapping: {\n    silent: true,\n    settings: {\n      reset: true,\n    },\n  },\n  out: [['mixpanel.reset']],\n};\n\n/**\n * User-group association - settings.group resolves to { key, id } and\n * calls mixpanel.set_group(key, id). Fires default track too.\n */\nexport const userGroupAssociation: MixpanelStepExample = {\n  title: 'Group association',\n  description:\n    'A user login associates the user to a company group via mixpanel.set_group and fires the default track.',\n  in: getEvent('user login', {\n    timestamp: 1700000109,\n    data: {\n      user_id: 'user-456',\n      company_id: 'acme-inc',\n    },\n  }),\n  mapping: {\n    settings: {\n      group: {\n        map: {\n          key: { value: 'company_id' },\n          id: 'data.company_id',\n        },\n      },\n    },\n  },\n  out: [\n    ['mixpanel.set_group', 'company_id', 'acme-inc'],\n    ['mixpanel.track', 'user login', {}],\n  ],\n};\n\n/**\n * Group profile properties - settings.groupProfile resolves to\n * { key, id, set?, set_once?, ... } and calls\n * mixpanel.get_group(key, id).set(...), .set_once(...), etc.\n */\nexport const companyUpdateGroupProfile: MixpanelStepExample = {\n  title: 'Group profile',\n  description:\n    'A company update sets Mixpanel group profile properties via get_group.set and get_group.set_once.',\n  in: getEvent('company update', {\n    timestamp: 1700000110,\n    data: {\n      company_id: 'acme-inc',\n      company_name: 'Acme, Inc.',\n      plan: 'enterprise',\n      employee_count: 250,\n      founded_year: 2010,\n    },\n  }),\n  mapping: {\n    silent: true,\n    settings: {\n      groupProfile: {\n        map: {\n          key: { value: 'company_id' },\n          id: 'data.company_id',\n          set: {\n            map: {\n              name: 'data.company_name',\n              plan: 'data.plan',\n              employee_count: 'data.employee_count',\n            },\n          },\n          set_once: {\n            map: {\n              founded: 'data.founded_year',\n            },\n          },\n        },\n      },\n    },\n  },\n  out: [\n    [\n      'mixpanel.get_group.set',\n      'company_id',\n      'acme-inc',\n      { name: 'Acme, Inc.', plan: 'enterprise', employee_count: 250 },\n    ],\n    [\n      'mixpanel.get_group.set_once',\n      'company_id',\n      'acme-inc',\n      { founded: 2010 },\n    ],\n  ],\n};\n\n/**\n * Consent revoked → mixpanel.opt_out_tracking(). After analytics consent is\n * granted (Mixpanel loads and opts in), revoking it calls\n * mixpanel.opt_out_tracking() via the consent handler. The destination is\n * never loaded under denied consent, so the opt-out is a real revocation of an\n * already-granted destination.\n */\nexport const consentRevokeOptOut: MixpanelStepExample = {\n  title: 'Consent revoked',\n  description:\n    'A walker consent command with analytics denied calls mixpanel.opt_out_tracking to stop event capture.',\n  command: 'consent',\n  before: { analytics: true },\n  in: { analytics: false } as WalkerOS.Consent,\n  settings: {} as Partial<Settings>,\n  out: [['mixpanel.opt_in_tracking'], ['mixpanel.opt_out_tracking']],\n};\n\n/**\n * Consent granted → mixpanel.opt_in_tracking().\n */\nexport const consentGrantOptIn: MixpanelStepExample = {\n  title: 'Consent granted',\n  description:\n    'A walker consent command with analytics granted calls mixpanel.opt_in_tracking to resume event capture.',\n  command: 'consent',\n  in: { analytics: true } as WalkerOS.Consent,\n  settings: {} as Partial<Settings>,\n  out: [['mixpanel.opt_in_tracking']],\n};\n"],"mappings":"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","names":["z"]}