{"version":3,"sources":["../../src/lib/schemas/audience.schema.ts","../../src/lib/schemas/step.schema.ts","../../src/lib/schemas/tour.schema.ts","../../src/lib/schemas/parse.ts"],"names":["audienceConditionSchema","z","audienceSchema","PLACEMENT_VALUES","placementEnum","tourStepDefinitionSchema","tourDefinitionSchema","flowSourceSchema","parseTourDefinition","input","safeParseTourDefinition","createTourStepDefinitionSchema","opts"],"mappings":"oCASO,IAAMA,CAAAA,CAA0BC,MAAE,MAAA,CAAO,CAC9C,GAAA,CAAKA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CACrB,QAAA,CAAUA,KAAAA,CAAE,IAAA,CAAK,CACf,QAAA,CACA,YAAA,CACA,UAAA,CACA,cAAA,CACA,IAAA,CACA,QAAA,CACA,QAAA,CACA,YACF,CAAC,CAAA,CACD,KAAA,CAAOA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EACrB,CAAC,CAAA,CAOYC,CAAAA,CAAiBD,KAAAA,CAAE,KAAA,CAAM,CACpCA,KAAAA,CAAE,MAAMD,CAAuB,CAAA,CAC/BC,KAAAA,CAAE,MAAA,CAAO,CAAE,OAAA,CAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAE,CAAC,CACzC,CAAC,ECxBD,IAAME,EAAmB,CACvB,KAAA,CACA,WAAA,CACA,YAAA,CACA,SAAA,CACA,OAAA,CACA,cACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,eAAA,CACA,YAAA,CACA,MAAA,CACA,YAAA,CACA,aAAA,CACA,UACF,CAAA,CAMA,IAAMC,CAAAA,CAAgBH,KAAAA,CAAE,KAAKE,CAAgB,CAAA,CAOhCE,CAAAA,CAA2BJ,KAAAA,CAAE,MAAA,CAAO,CAC/C,EAAA,CAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CACpB,IAAA,CAAMA,MAAE,IAAA,CAAK,CAAC,SAAA,CAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAC7C,MAAA,CAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,EACxB,KAAA,CAAOA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS,CAC5B,YAAaA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS,CAClC,OAAA,CAASA,MAAE,OAAA,EAAQ,CACnB,QAAA,CAAUC,CAAAA,CAAe,QAAA,EAAS,CAClC,SAAA,CAAWE,CAAAA,CAAc,QAAA,EAC3B,CAAC,ECtCM,IAAME,CAAAA,CAAuBL,KAAAA,CAAE,MAAA,CAAO,CAC3C,EAAA,CAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CACpB,KAAA,CAAOA,MAAE,KAAA,CAAMI,CAAwB,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAC9C,QAAA,CAAUH,CAAAA,CAAe,QAAA,EAAS,CAClC,SAAA,CAAWD,KAAAA,CAAE,OAAA,EAAQ,CAAE,UAAS,CAChC,OAAA,CAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,WAAA,EAAY,CAAE,QAAA,EAC1C,CAAC,CAAA,CAMYM,EAAmBN,KAAAA,CAAE,MAAA,CAAO,CACvC,KAAA,CAAOA,KAAAA,CAAE,KAAA,CAAMK,CAAoB,CACrC,CAAC,ECXM,SAASE,CAAAA,CAAoBC,CAAAA,CAAgC,CAClE,OAAOH,CAAAA,CAAqB,KAAA,CAAMG,CAAK,CACzC,CAMO,SAASC,CAAAA,CAAwBD,CAAAA,CAAgB,CACtD,OAAOH,CAAAA,CAAqB,SAAA,CAAUG,CAAK,CAC7C,CAUO,SAASE,CAAAA,CAA8DC,CAAAA,CAE3E,CACD,OAAOP,CAAAA,CAAyB,MAAA,CAAO,CAAE,OAAA,CAASO,CAAAA,CAAK,aAAc,CAAC,CACxE","file":"index.cjs","sourcesContent":["// Confirmed: zod ^3.25.0 || ^4.0.0 (peer range per zod.dev/v4/versioning).\n// Use the root `zod` import — Zod 4 lives at the package root.\nimport { z } from 'zod'\n\n/**\n * One condition inside the array form of `AudienceDefinition`. JSON-safe subset\n * of the runtime `AudienceCondition` (no `type` discriminator — consumers attach\n * it after parsing if they need to bridge to the runtime shape).\n */\nexport const audienceConditionSchema = z.object({\n  key: z.string().min(1),\n  operator: z.enum([\n    'equals',\n    'not_equals',\n    'contains',\n    'not_contains',\n    'in',\n    'not_in',\n    'exists',\n    'not_exists',\n  ]),\n  value: z.unknown().optional(),\n})\n\n/**\n * Audience filter — accepts either the legacy condition-array form or the\n * named-segment object form. Mirrors `AudienceProp` from `types/step.ts` but\n * skips the runtime `type` discriminator on each condition.\n */\nexport const audienceSchema = z.union([\n  z.array(audienceConditionSchema),\n  z.object({ segment: z.string().min(1) }),\n])\n","import { z } from 'zod'\nimport type { Placement } from '../../types/config'\nimport { audienceSchema } from './audience.schema'\n\n// `satisfies readonly Placement[]` makes the literal list assignable to\n// Placement (one direction); the `_AssertCoversPlacement` check below proves\n// the other direction. Together they reject silent drift if `Placement` gains\n// a new literal — typecheck:types fails until this array is updated.\nconst PLACEMENT_VALUES = [\n  'top',\n  'top-start',\n  'top-center',\n  'top-end',\n  'right',\n  'right-start',\n  'right-center',\n  'right-end',\n  'bottom',\n  'bottom-start',\n  'bottom-center',\n  'bottom-end',\n  'left',\n  'left-start',\n  'left-center',\n  'left-end',\n] as const satisfies readonly Placement[]\n\ntype _AssertCoversPlacement = Placement extends (typeof PLACEMENT_VALUES)[number] ? true : never\nconst _placementCoverage: _AssertCoversPlacement = true\nvoid _placementCoverage\n\nconst placementEnum = z.enum(PLACEMENT_VALUES)\n\n/**\n * JSON-safe step shape. Mirrors `TourStepDefinition` 1:1 — when a new key is\n * added to `TourStepDefinition`, add it here AND update `TourStepJsonSafeKeys`\n * in `parity.test-d.ts`, or the compile-time parity assertion will fail.\n */\nexport const tourStepDefinitionSchema = z.object({\n  id: z.string().min(1),\n  kind: z.enum(['visible', 'hidden']).optional(),\n  target: z.string().min(1),\n  title: z.unknown().optional(),\n  description: z.unknown().optional(),\n  content: z.unknown(),\n  audience: audienceSchema.optional(),\n  placement: placementEnum.optional(),\n})\n","import { z } from 'zod'\nimport { audienceSchema } from './audience.schema'\nimport { tourStepDefinitionSchema } from './step.schema'\n\n/**\n * Top-level JSON-safe tour shape. Mirrors `TourDefinition` 1:1 — when a new\n * key is added to `TourDefinition`, add it here AND update `TourJsonSafeKeys`\n * in `parity.test-d.ts`, or the compile-time parity assertion will fail.\n */\nexport const tourDefinitionSchema = z.object({\n  id: z.string().min(1),\n  steps: z.array(tourStepDefinitionSchema).min(1),\n  audience: audienceSchema.optional(),\n  autoStart: z.boolean().optional(),\n  startAt: z.number().int().nonnegative().optional(),\n})\n\n/**\n * Top-level container shape for a JSON file or CMS payload that ships multiple\n * tours at once: `{ \"tours\": [...] }`.\n */\nexport const flowSourceSchema = z.object({\n  tours: z.array(tourDefinitionSchema),\n})\n","import type { z } from 'zod'\nimport type { TourDefinition } from '../../types/tour-definition'\nimport { tourStepDefinitionSchema } from './step.schema'\nimport { tourDefinitionSchema } from './tour.schema'\n\n/**\n * Parse a JSON-authored tour definition. Throws `ZodError` on invalid input.\n *\n * The runtime parse result has the same key shape as `TourDefinition`, but\n * the inferred Zod type is slightly different (e.g. `content: unknown`). We\n * cast once at the boundary so consumers see a clean `TourDefinition` type.\n */\nexport function parseTourDefinition(input: unknown): TourDefinition {\n  return tourDefinitionSchema.parse(input) as TourDefinition\n}\n\n/**\n * Non-throwing parse. Returns Zod's tagged union:\n * `{ success: true, data } | { success: false, error: ZodError }`.\n */\nexport function safeParseTourDefinition(input: unknown) {\n  return tourDefinitionSchema.safeParse(input)\n}\n\n/**\n * Build a stricter STEP schema where `content` is validated by the caller's\n * schema (e.g. a CMS content-block shape). Useful when the JSON payload has\n * a known content discriminator and you want full-tree validation.\n *\n * Returns a step-level schema — wrap it in `z.array(...).min(1)` and feed it\n * to a custom tour schema if you want a full validation pipeline.\n */\nexport function createTourStepDefinitionSchema<TContent extends z.ZodTypeAny>(opts: {\n  contentSchema: TContent\n}) {\n  return tourStepDefinitionSchema.extend({ content: opts.contentSchema })\n}\n"]}