@contentful/experiences-validators 3.8.10-dev-20260703T1126-b50ca20.0 → 3.8.11-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +38 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +379 -1350
- package/dist/index.js +38 -37
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -137,7 +137,7 @@ const breakpointsRefinement = (value, ctx) => {
|
|
|
137
137
|
});
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
|
-
const ValuesByBreakpointSchema = zod.z.record(zod.z.lazy(() => PrimitiveValueSchema));
|
|
140
|
+
const ValuesByBreakpointSchema = zod.z.record(zod.z.string(), zod.z.lazy(() => PrimitiveValueSchema));
|
|
141
141
|
const BindingSourceTypeEnumSchema = zod.z
|
|
142
142
|
.array(zod.z.enum(['entry', 'asset', 'manual', 'experience']))
|
|
143
143
|
.nonempty();
|
|
@@ -311,11 +311,10 @@ const VariableMappingSchema = zod.z.object({
|
|
|
311
311
|
pathsByContentType: zod.z
|
|
312
312
|
.record(zod.z.string(), zod.z.object({ path: zod.z.string() }))
|
|
313
313
|
.superRefine((paths, ctx) => {
|
|
314
|
-
const variableId = ctx.path[ctx.path.length - 2];
|
|
315
314
|
if (Object.keys(paths).length > MAX_ALLOWED_PATHS) {
|
|
316
315
|
ctx.addIssue({
|
|
317
316
|
code: zod.z.ZodIssueCode.custom,
|
|
318
|
-
message: `Too many paths defined for variable mapping
|
|
317
|
+
message: `Too many paths defined for variable mapping, maximum allowed is ${MAX_ALLOWED_PATHS}`,
|
|
319
318
|
});
|
|
320
319
|
}
|
|
321
320
|
}),
|
|
@@ -490,7 +489,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
490
489
|
if (typeof val.defaultValue !== 'undefined') {
|
|
491
490
|
ctx.addIssue({
|
|
492
491
|
code: zod.z.ZodIssueCode.custom,
|
|
493
|
-
message: `defaultValue is not supported for "Array" type
|
|
492
|
+
message: `defaultValue is not supported for "Array" type`,
|
|
494
493
|
fatal: false,
|
|
495
494
|
});
|
|
496
495
|
}
|
|
@@ -499,7 +498,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
499
498
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'boolean') {
|
|
500
499
|
ctx.addIssue({
|
|
501
500
|
code: zod.z.ZodIssueCode.custom,
|
|
502
|
-
message: `defaultValue must be a boolean when type is "Boolean"
|
|
501
|
+
message: `defaultValue must be a boolean when type is "Boolean", got ${typeof val.defaultValue} instead`,
|
|
503
502
|
fatal: false,
|
|
504
503
|
});
|
|
505
504
|
}
|
|
@@ -508,7 +507,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
508
507
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {
|
|
509
508
|
ctx.addIssue({
|
|
510
509
|
code: zod.z.ZodIssueCode.custom,
|
|
511
|
-
message: `defaultValue must be a string when type is "Date"
|
|
510
|
+
message: `defaultValue must be a string when type is "Date", got ${typeof val.defaultValue} instead`,
|
|
512
511
|
fatal: false,
|
|
513
512
|
});
|
|
514
513
|
}
|
|
@@ -517,7 +516,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
517
516
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {
|
|
518
517
|
ctx.addIssue({
|
|
519
518
|
code: zod.z.ZodIssueCode.custom,
|
|
520
|
-
message: `defaultValue must be a string when type is "Hyperlink"
|
|
519
|
+
message: `defaultValue must be a string when type is "Hyperlink", got ${typeof val.defaultValue} instead`,
|
|
521
520
|
fatal: false,
|
|
522
521
|
});
|
|
523
522
|
}
|
|
@@ -526,7 +525,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
526
525
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {
|
|
527
526
|
ctx.addIssue({
|
|
528
527
|
code: zod.z.ZodIssueCode.custom,
|
|
529
|
-
message: `defaultValue is not supported for "Link" type
|
|
528
|
+
message: `defaultValue is not supported for "Link" type`,
|
|
530
529
|
fatal: false,
|
|
531
530
|
});
|
|
532
531
|
}
|
|
@@ -535,7 +534,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
535
534
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {
|
|
536
535
|
ctx.addIssue({
|
|
537
536
|
code: zod.z.ZodIssueCode.custom,
|
|
538
|
-
message: `defaultValue must be an object when type is "Location"
|
|
537
|
+
message: `defaultValue must be an object when type is "Location", got ${typeof val.defaultValue} instead`,
|
|
539
538
|
fatal: false,
|
|
540
539
|
});
|
|
541
540
|
}
|
|
@@ -544,7 +543,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
544
543
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {
|
|
545
544
|
ctx.addIssue({
|
|
546
545
|
code: zod.z.ZodIssueCode.custom,
|
|
547
|
-
message: `defaultValue must be a string when type is "Media"
|
|
546
|
+
message: `defaultValue must be a string when type is "Media", got ${typeof val.defaultValue} instead`,
|
|
548
547
|
fatal: false,
|
|
549
548
|
});
|
|
550
549
|
}
|
|
@@ -553,7 +552,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
553
552
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'number') {
|
|
554
553
|
ctx.addIssue({
|
|
555
554
|
code: zod.z.ZodIssueCode.custom,
|
|
556
|
-
message: `defaultValue must be a number when type is "Number"
|
|
555
|
+
message: `defaultValue must be a number when type is "Number", got ${typeof val.defaultValue} instead`,
|
|
557
556
|
fatal: false,
|
|
558
557
|
});
|
|
559
558
|
}
|
|
@@ -562,7 +561,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
562
561
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {
|
|
563
562
|
ctx.addIssue({
|
|
564
563
|
code: zod.z.ZodIssueCode.custom,
|
|
565
|
-
message: `defaultValue must be an object when type is "Object"
|
|
564
|
+
message: `defaultValue must be an object when type is "Object", got ${typeof val.defaultValue} instead`,
|
|
566
565
|
fatal: false,
|
|
567
566
|
});
|
|
568
567
|
}
|
|
@@ -571,7 +570,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
571
570
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {
|
|
572
571
|
ctx.addIssue({
|
|
573
572
|
code: zod.z.ZodIssueCode.custom,
|
|
574
|
-
message: `defaultValue must be an object when type is "RichText"
|
|
573
|
+
message: `defaultValue must be an object when type is "RichText", got ${typeof val.defaultValue} instead`,
|
|
575
574
|
fatal: false,
|
|
576
575
|
});
|
|
577
576
|
}
|
|
@@ -580,7 +579,7 @@ const ComponentDefinitionSchema = zod.z
|
|
|
580
579
|
if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {
|
|
581
580
|
ctx.addIssue({
|
|
582
581
|
code: zod.z.ZodIssueCode.custom,
|
|
583
|
-
message: `defaultValue must be a string when type is "Text"
|
|
582
|
+
message: `defaultValue must be a string when type is "Text", got ${typeof val.defaultValue} instead`,
|
|
584
583
|
fatal: false,
|
|
585
584
|
});
|
|
586
585
|
}
|
|
@@ -621,15 +620,19 @@ var CodeNames;
|
|
|
621
620
|
CodeNames["Custom"] = "custom";
|
|
622
621
|
})(CodeNames || (CodeNames = {}));
|
|
623
622
|
const convertInvalidType = (issue) => {
|
|
624
|
-
|
|
625
|
-
|
|
623
|
+
// Zod v4 omits 'input'/'received' from invalid_type issues; parse message instead.
|
|
624
|
+
// Message format: "Invalid input: expected X, received Y"
|
|
625
|
+
const received = issue.message?.match(/received (\S+)$/)?.[1] ?? 'undefined';
|
|
626
|
+
const isMissing = received === 'undefined';
|
|
627
|
+
const name = isMissing ? CodeNames.Required : CodeNames.Type;
|
|
628
|
+
const details = isMissing
|
|
626
629
|
? `The property "${issue.path.slice(-1)}" is required here`
|
|
627
630
|
: `The type of "${issue.path.slice(-1)}" is incorrect, expected type: ${issue.expected}`;
|
|
628
631
|
return {
|
|
629
|
-
details
|
|
630
|
-
name
|
|
632
|
+
details,
|
|
633
|
+
name,
|
|
631
634
|
path: issue.path,
|
|
632
|
-
value:
|
|
635
|
+
value: received,
|
|
633
636
|
};
|
|
634
637
|
};
|
|
635
638
|
const convertUnrecognizedKeys = (issue) => {
|
|
@@ -645,26 +648,17 @@ const convertUnrecognizedKeys = (issue) => {
|
|
|
645
648
|
const convertInvalidString = (issue) => {
|
|
646
649
|
return {
|
|
647
650
|
details: issue.message || 'Invalid string',
|
|
648
|
-
name: issue.
|
|
651
|
+
name: issue.format === 'regex' ? CodeNames.Regex : CodeNames.Unexpected,
|
|
649
652
|
path: issue.path,
|
|
650
653
|
};
|
|
651
654
|
};
|
|
652
|
-
const
|
|
655
|
+
const convertInvalidValue = (issue) => {
|
|
653
656
|
return {
|
|
654
657
|
details: issue.message || 'Value must be one of expected values',
|
|
655
658
|
name: CodeNames.In,
|
|
656
659
|
path: issue.path,
|
|
657
|
-
value: issue.
|
|
658
|
-
expected: issue.
|
|
659
|
-
};
|
|
660
|
-
};
|
|
661
|
-
const convertInvalidLiteral = (issue) => {
|
|
662
|
-
return {
|
|
663
|
-
details: issue.message || 'Value must be one of expected values',
|
|
664
|
-
name: CodeNames.In,
|
|
665
|
-
path: issue.path,
|
|
666
|
-
value: issue.received,
|
|
667
|
-
expected: [issue.expected],
|
|
660
|
+
value: String(issue.input ?? ''),
|
|
661
|
+
expected: issue.values,
|
|
668
662
|
};
|
|
669
663
|
};
|
|
670
664
|
const convertTooBig = (issue) => {
|
|
@@ -696,16 +690,23 @@ const zodToContentfulError = (issue) => {
|
|
|
696
690
|
return convertInvalidType(issue);
|
|
697
691
|
case zod.ZodIssueCode.unrecognized_keys:
|
|
698
692
|
return convertUnrecognizedKeys(issue);
|
|
699
|
-
case zod.ZodIssueCode.
|
|
700
|
-
return
|
|
701
|
-
case zod.ZodIssueCode.
|
|
693
|
+
case zod.ZodIssueCode.invalid_value:
|
|
694
|
+
return convertInvalidValue(issue);
|
|
695
|
+
case zod.ZodIssueCode.invalid_format:
|
|
702
696
|
return convertInvalidString(issue);
|
|
703
697
|
case zod.ZodIssueCode.too_small:
|
|
704
698
|
return convertTooSmall(issue);
|
|
705
699
|
case zod.ZodIssueCode.too_big:
|
|
706
700
|
return convertTooBig(issue);
|
|
707
|
-
case zod.ZodIssueCode.
|
|
708
|
-
|
|
701
|
+
case zod.ZodIssueCode.invalid_key: {
|
|
702
|
+
// Zod v4 wraps record key validation failures; forward to the inner issue
|
|
703
|
+
const innerIssues = issue.issues;
|
|
704
|
+
const innerIssue = innerIssues?.[0];
|
|
705
|
+
if (innerIssue) {
|
|
706
|
+
return zodToContentfulError({ ...innerIssue, path: issue.path });
|
|
707
|
+
}
|
|
708
|
+
return defaultConversion(issue);
|
|
709
|
+
}
|
|
709
710
|
default:
|
|
710
711
|
return defaultConversion(issue);
|
|
711
712
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/schemas/schemaVersions.ts","../src/schemas/v2023_09_28/common.ts","../src/schemas/v2023_09_28/experience.ts","../src/utils/treeVisit.ts","../src/schemas/v2023_09_28/pattern.ts","../src/schemas/componentDefinition.ts","../src/utils/zodToContentfulError.ts","../src/validators/validateBreakpointDefinitions.ts","../src/validators/validateComponentDefinition.ts","../src/validators/validatePatternFields.ts","../src/validators/validateExperienceFields.ts"],"sourcesContent":["import { z } from 'zod';\n// If more than one version is supported, use z.union\nexport const SchemaVersions = z.literal('2023-09-28');\n\nexport type SchemaVersions = z.infer<typeof SchemaVersions>;\n\n// Keep deprecated versions here just for reference\nexport const UnsupportedSchemaVersions = z.union([\n z.literal('2023-08-23'),\n z.literal('2023-07-26'),\n z.literal('2023-06-27'),\n]);\n","import { z, ZodTypeAny } from 'zod';\nimport { Breakpoint } from '@/schemas/v2023_09_28/experience';\nimport { SchemaVersions } from '@/schemas/schemaVersions';\n\nexport const DefinitionPropertyTypeSchema = z.enum([\n 'Text',\n 'RichText',\n 'Number',\n 'Date',\n 'Boolean',\n 'Location',\n 'Media',\n 'Object',\n 'Hyperlink',\n 'Array',\n 'Link',\n]);\n\nexport const DefinitionPropertyKeySchema = z\n .string()\n .regex(/^[a-zA-Z0-9-_]{1,32}$/, { message: 'Property needs to match: /^[a-zA-Z0-9-_]{1,32}$/' });\n\nexport const PrimitiveValueSchema = z.union([\n z.string(),\n z.boolean(),\n z.number(),\n z.record(z.any(), z.any()),\n z.undefined(),\n]);\n\nexport const UsedComponentsSchema = z.array(\n z.object({\n sys: z.object({\n type: z.literal('Link'),\n id: z.string(),\n linkType: z.literal('Entry'),\n }),\n }),\n);\n\nexport const uuidKeySchema = z\n .string()\n .regex(/^[a-zA-Z0-9-_]{1,21}$/, { message: 'Does not match /^[a-zA-Z0-9-_]{1,21}$/' });\n\nexport const DataSourceSchema = z.record(\n uuidKeySchema,\n z.object({\n sys: z.object({\n type: z.literal('Link'),\n id: z.string(),\n linkType: z.enum(['Entry', 'Asset']),\n }),\n }),\n);\n\nexport const UnboundValuesSchema = z.record(\n uuidKeySchema,\n z.object({\n value: PrimitiveValueSchema,\n }),\n);\n\n/**\n * Property keys for imported components have a limit of 32 characters (to be implemented) while\n * property keys for patterns have a limit of 54 characters (<32-char-variable-name>_<21-char-nanoid-id>).\n * Because we cannot distinguish between the two in the componentTree, we will use the larger limit for both.\n */\nexport const propertyKeySchema = z\n .string()\n .regex(/^[a-zA-Z0-9-_]{1,54}$/, { message: 'Does not match /^[a-zA-Z0-9-_]{1,54}$/' });\n\nexport const ComponentTreeNodeIdSchema = z\n .string()\n .regex(/^[a-zA-Z0-9]{1,8}$/, { message: 'Does not match /^[a-zA-Z0-9]{1,8}$/' });\n\nexport const breakpointsRefinement = (value: Breakpoint[], ctx: z.RefinementCtx) => {\n if (!value.length || value[0].query !== '*') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The first breakpoint should include the following attributes: { \"query\": \"*\" }`,\n });\n return;\n }\n\n // Return early if there's only one generic breakpoint\n const hasNoBreakpointsStrategy = value.length === 1;\n if (hasNoBreakpointsStrategy) {\n return;\n }\n\n // Check if any breakpoint id occurs twice\n const ids = value.map((breakpoint) => breakpoint.id);\n const hasDuplicateIds = new Set(ids).size !== ids.length;\n if (hasDuplicateIds) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Breakpoint IDs must be unique`,\n });\n return;\n }\n\n // Skip the first one which is guaranteed to be a wildcard query\n const nonBaseBreakpoints = value.slice(1);\n const isMobileFirstStrategy = nonBaseBreakpoints[0].query.startsWith('>');\n const isDesktopFirstStrategy = nonBaseBreakpoints[0].query.startsWith('<');\n\n if (isMobileFirstStrategy) {\n const areOperatorsEqual = nonBaseBreakpoints.every(({ query }) => query.startsWith('>'));\n if (!areOperatorsEqual) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Breakpoint queries must be in the format \">[size]px\" for mobile-first strategy`,\n });\n }\n\n // Extract the queries boundary by removing the special characters around it\n const queries = nonBaseBreakpoints.map((bp) => parseInt(bp.query.replace(/px|<|>/, '')));\n\n // Starting with the third breakpoint, check that every query is higher than the one above\n const isIncreasing = queries.every(\n (value, index, array) => index === 0 || value > array[index - 1],\n );\n if (!isIncreasing) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `When using a mobile-first strategy, all breakpoints must have strictly increasing pixel values`,\n });\n }\n } else if (isDesktopFirstStrategy) {\n const areOperatorsEqual = nonBaseBreakpoints.every(({ query }) => query.startsWith('<'));\n if (!areOperatorsEqual) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Breakpoint queries must be in the format \"<[size]px\" for desktop-first strategy`,\n });\n }\n\n // Extract the queries boundary by removing the special characters around it\n const queries = nonBaseBreakpoints.map((bp) => parseInt(bp.query.replace(/px|<|>/, '')));\n\n // Starting with the third breakpoint, check that every query is lower than the one above\n const isDecreasing = queries.every(\n (value, index, array) => index === 0 || value < array[index - 1],\n );\n if (!isDecreasing) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `When using a desktop-first strategy, all breakpoints must have strictly decreasing pixel values`,\n });\n }\n } else if (!isMobileFirstStrategy && !isDesktopFirstStrategy) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `You may only use a mobile-first or desktop-first strategy for breakpoints using '<' or '>' queries`,\n });\n }\n};\n\nexport const ValuesByBreakpointSchema = z.record(z.lazy(() => PrimitiveValueSchema));\n\nexport const BindingSourceTypeEnumSchema = z\n .array(z.enum(['entry', 'asset', 'manual', 'experience']))\n .nonempty();\n\nexport const DesignValueSchema = z\n .object({\n type: z.literal('DesignValue'),\n valuesByBreakpoint: ValuesByBreakpointSchema,\n })\n .strict();\n\nexport const BoundValueSchema = z\n .object({\n type: z.literal('BoundValue'),\n path: z.string(),\n })\n .strict();\n\nexport const HyperlinkValueSchema = z\n .object({\n type: z.literal('HyperlinkValue'),\n linkTargetKey: z.string(),\n /** Allows to override parts of the URL, e.g. the locale */\n overrides: z.object({}).optional(),\n })\n .strict();\n\nexport const UnboundValueSchema = z\n .object({\n type: z.literal('UnboundValue'),\n key: z.string(),\n })\n .strict();\n\nexport const ComponentValueSchema = z\n .object({\n type: z.literal('ComponentValue'),\n key: z.string(),\n })\n .strict();\n\nexport const NoValueSchema = z.object({ type: z.literal('NoValue') }).strict();\n\nexport const ComponentPropertyValueSchema = z.discriminatedUnion('type', [\n DesignValueSchema,\n BoundValueSchema,\n UnboundValueSchema,\n HyperlinkValueSchema,\n ComponentValueSchema,\n NoValueSchema,\n]);\n\nexport type ComponentPropertyValue = z.infer<typeof ComponentPropertyValueSchema>;\n\n// TODO: finalize schema structure before release\n// https://contentful.atlassian.net/browse/LUMOS-523\nexport const ParameterSchema = z.object({\n type: z.literal('BoundValue'),\n path: z.string(),\n});\n\nexport const ParametersSchema = z.record(propertyKeySchema, ParameterSchema);\n\ntype BreakpointQuery = '*' | `>${number}px` | `<${number}px`;\nconst BREAKPOINT_QUERY_REGEX = /^\\*$|^[<>][0-9]+px$/;\n\nexport const BreakpointSchema = z\n .object({\n id: propertyKeySchema,\n // Can be replaced with z.templateLiteral when upgrading to zod v4\n query: z.string().refine((s): s is BreakpointQuery => BREAKPOINT_QUERY_REGEX.test(s)),\n previewSize: z.string().optional(),\n displayName: z.string(),\n displayIcon: z.enum(['desktop', 'tablet', 'mobile']).optional(),\n })\n .strict();\n\n// Use helper schema to define a recursive schema with its type correctly below\nconst BaseComponentTreeNodeSchema = z.object({\n id: ComponentTreeNodeIdSchema.optional(),\n definitionId: DefinitionPropertyKeySchema,\n prebindingId: z.string().optional(),\n displayName: z.string().optional(),\n slotId: z.string().optional(),\n variables: z.record(propertyKeySchema, ComponentPropertyValueSchema),\n parameters: ParametersSchema.optional(),\n});\n\nexport type ComponentTreeNode = z.infer<typeof BaseComponentTreeNodeSchema> & {\n children: ComponentTreeNode[];\n};\n\nexport const ComponentVariableSchema = z.object({\n displayName: z.string().optional(),\n type: DefinitionPropertyTypeSchema,\n description: z.string().optional(),\n group: z.string().optional(),\n defaultValue: PrimitiveValueSchema.or(ComponentPropertyValueSchema).optional(),\n validations: z\n .object({\n bindingSourceType: BindingSourceTypeEnumSchema.optional(),\n required: z.boolean().optional(),\n format: z.literal('URL').optional(),\n in: z\n .array(\n z.object({\n value: z.union([z.string(), z.number()]),\n displayName: z.string().optional(),\n }),\n )\n .optional(),\n })\n .optional(),\n});\n\nexport const ComponentTreeNodeSchema: z.ZodType<ComponentTreeNode> =\n BaseComponentTreeNodeSchema.extend({\n children: z.lazy(() => ComponentTreeNodeSchema.array()),\n }).superRefine(({ id, prebindingId, parameters }, ctx) => {\n // We don't fail if parameters are present but prebindingId is not because\n // older experiences (updated before 21-09-2025) always included parameters\n // and they will start failing if we do.\n if (prebindingId && !parameters) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Found \"prebindingId\" but no \"parameters\" for node with id: \"${id}\"`,\n });\n }\n });\n\nexport const ComponentTreeSchema = z\n .object({\n breakpoints: z.array(BreakpointSchema).superRefine(breakpointsRefinement),\n children: z.array(ComponentTreeNodeSchema),\n schemaVersion: SchemaVersions,\n })\n .strict();\nexport const localeWrapper = (fieldSchema: ZodTypeAny) => z.record(z.string(), fieldSchema);\n","import { z } from 'zod';\nimport {\n BindingSourceTypeEnumSchema,\n BoundValueSchema,\n BreakpointSchema,\n breakpointsRefinement,\n ComponentTreeSchema,\n ComponentValueSchema,\n DataSourceSchema,\n DesignValueSchema,\n HyperlinkValueSchema,\n localeWrapper,\n NoValueSchema,\n ParameterSchema,\n PrimitiveValueSchema,\n UnboundValueSchema,\n UnboundValuesSchema,\n UsedComponentsSchema,\n ValuesByBreakpointSchema,\n} from './common';\n\nexport const ExperienceFieldsCMAShapeSchema = z.object({\n componentTree: localeWrapper(ComponentTreeSchema),\n dataSource: localeWrapper(DataSourceSchema),\n unboundValues: localeWrapper(UnboundValuesSchema),\n usedComponents: localeWrapper(UsedComponentsSchema).optional(),\n});\n\nexport type ExperienceFields = z.infer<typeof ExperienceFieldsCMAShapeSchema>;\nexport type ExperienceDataSource = z.infer<typeof DataSourceSchema>;\nexport type ExperienceUnboundValues = z.infer<typeof UnboundValuesSchema>;\nexport type ExperienceUsedComponents = z.infer<typeof UsedComponentsSchema>;\nexport type ExperienceComponentTree = z.infer<typeof ComponentTreeSchema>;\nexport type ValuesByBreakpoint = z.infer<typeof ValuesByBreakpointSchema>;\nexport type Breakpoint = z.infer<typeof BreakpointSchema>;\nexport type PrimitiveValue = z.infer<typeof PrimitiveValueSchema>;\nexport type DesignValue = z.infer<typeof DesignValueSchema>;\nexport type BoundValue = z.infer<typeof BoundValueSchema>;\nexport type NoValue = z.infer<typeof NoValueSchema>;\nexport type UnboundValue = z.infer<typeof UnboundValueSchema>;\nexport type HyperlinkValue = z.infer<typeof HyperlinkValueSchema>;\nexport type ComponentValue = z.infer<typeof ComponentValueSchema>;\nexport type BindingSourceTypeEnum = z.infer<typeof BindingSourceTypeEnumSchema>;\nexport type Parameter = z.infer<typeof ParameterSchema>;\nexport { breakpointsRefinement };\n","type NodeWithChildren<T> = {\n children: T[];\n};\n\nexport function treeVisit<T extends NodeWithChildren<T>>(\n initialNode: T | T[],\n onNode: (node: T) => void,\n) {\n const _treeVisit = (currentNode: T): void => {\n const children = [...currentNode.children];\n onNode(currentNode);\n for (const child of children) {\n _treeVisit(child);\n }\n };\n if (Array.isArray(initialNode)) {\n for (const node of initialNode) {\n _treeVisit(node);\n }\n } else {\n _treeVisit(initialNode);\n }\n}\n","import { z } from 'zod';\nimport {\n ComponentTreeSchema,\n ComponentVariableSchema,\n DataSourceSchema,\n localeWrapper,\n propertyKeySchema,\n UnboundValuesSchema,\n UsedComponentsSchema,\n} from '../v2023_09_28/common';\nimport { treeVisit } from '@/utils/treeVisit';\n\nexport const MAX_ALLOWED_PATHS = 200;\n\nexport const THUMBNAIL_IDS = [\n 'columns',\n 'columnsPlusRight',\n 'imagesSquare',\n 'subtitles',\n 'rowsPlusBottom',\n 'userRectangle',\n 'textbox',\n 'monitorPlay',\n 'article',\n 'table',\n 'star',\n 'heartStraight',\n 'frameCorners',\n 'rows',\n 'dotsThreeOutline',\n 'listDashes',\n 'checkerBoard',\n 'gridFour',\n 'slideshow',\n 'diamondsFour',\n 'cards',\n 'textColumns',\n 'duplex',\n] as const;\n\n// TODO: finalize schema structure before release\n// https://contentful.atlassian.net/browse/LUMOS-523\nconst VariableMappingSchema = z.object({\n parameterId: propertyKeySchema,\n type: z.literal('ContentTypeMapping'),\n pathsByContentType: z\n .record(z.string(), z.object({ path: z.string() }))\n .superRefine((paths, ctx) => {\n const variableId = ctx.path[ctx.path.length - 2];\n if (Object.keys(paths).length > MAX_ALLOWED_PATHS) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Too many paths defined for variable mapping with id \"${variableId}\", maximum allowed is ${MAX_ALLOWED_PATHS}`,\n });\n }\n }),\n});\n\nexport const PassToNodeSchema = z\n .object({\n nodeId: propertyKeySchema,\n parameterId: propertyKeySchema,\n prebindingId: propertyKeySchema,\n })\n .strict();\n\nconst ParameterDefinitionSchema = z.object({\n defaultSource: z\n .strictObject({\n type: z.enum(['Entry']),\n contentTypeId: z.string(),\n link: z.strictObject({\n sys: z.strictObject({\n type: z.literal('Link'),\n id: z.string(),\n linkType: z.enum(['Entry']),\n }),\n }),\n })\n .optional(),\n contentTypes: z.array(z.string()).min(1),\n passToNodes: z\n .array(PassToNodeSchema)\n .max(1, 'At most one \"passToNodes\" element is allowed per parameter definition.'),\n});\n\nexport const ParameterDefinitionsSchema = z.record(propertyKeySchema, ParameterDefinitionSchema);\n\nconst VariableMappingsSchema = z.record(propertyKeySchema, VariableMappingSchema);\n\nexport const ComponentVariablesSchema = z.record(\n z.string().regex(/^[a-zA-Z0-9-_]{1,54}$/), // Here the key is <variableName>_<nanoidId> so we need to allow for a longer length\n ComponentVariableSchema,\n);\n\nexport const PrebindingDefinitionSchema = z\n .object({\n id: propertyKeySchema,\n parameterDefinitions: ParameterDefinitionsSchema,\n variableMappings: VariableMappingsSchema.optional(),\n allowedVariableOverrides: z.array(z.string()).optional(),\n })\n .strict();\n\nconst ComponentSettingsSchema = z\n .object({\n variableDefinitions: ComponentVariablesSchema,\n thumbnailId: z.enum(THUMBNAIL_IDS).optional(),\n category: z.string().max(50, 'Category must contain at most 50 characters').optional(),\n prebindingDefinitions: z.array(PrebindingDefinitionSchema).length(1).optional(),\n })\n .strict()\n .superRefine((componentSettings, ctx) => {\n const { variableDefinitions, prebindingDefinitions } = componentSettings;\n if (!prebindingDefinitions || prebindingDefinitions.length === 0) {\n return;\n }\n const { parameterDefinitions, variableMappings, allowedVariableOverrides } =\n prebindingDefinitions[0];\n\n validateAtMostOneNativeParameterDefinition(parameterDefinitions, ctx);\n validateNoOverlapBetweenMappingAndOverrides(variableMappings, allowedVariableOverrides, ctx);\n validateMappingsAgainstVariableDefinitions(\n variableMappings,\n allowedVariableOverrides,\n variableDefinitions,\n ctx,\n );\n validateMappingsAgainstParameterDefinitions(variableMappings, parameterDefinitions, ctx);\n });\n\nexport const PatternFieldsCMAShapeSchema = z\n .object({\n componentTree: localeWrapper(ComponentTreeSchema),\n dataSource: localeWrapper(DataSourceSchema),\n unboundValues: localeWrapper(UnboundValuesSchema),\n usedComponents: localeWrapper(UsedComponentsSchema).optional(),\n componentSettings: localeWrapper(ComponentSettingsSchema),\n })\n .superRefine((patternFields, ctx) => {\n const { componentTree, componentSettings } = patternFields;\n\n // values at this point are wrapped under locale code\n const nonLocalisedComponentTree = Object.values(componentTree)[0];\n const nonLocalisedComponentSettings = Object.values(componentSettings)[0];\n\n if (!nonLocalisedComponentSettings || !nonLocalisedComponentTree) {\n return;\n }\n\n validatePassToNodes(\n nonLocalisedComponentTree.children || ([] as z.infer<typeof ComponentTreeSchema>['children']),\n nonLocalisedComponentSettings || ({} as PatternComponentSettings),\n ctx,\n );\n });\n\nconst validateAtMostOneNativeParameterDefinition = (\n parameterDefinitions: Record<string, ParameterDefinition>,\n ctx: z.RefinementCtx,\n) => {\n const nativeParamDefinitions = Object.values(parameterDefinitions).filter(\n (paramDefinition) => !(paramDefinition.passToNodes && paramDefinition.passToNodes.length > 0),\n );\n\n if (nativeParamDefinitions.length > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Only one native parameter definition (parameter definition without passToNodes) is allowed per prebinding definition.`,\n });\n }\n};\n\nconst validateNoOverlapBetweenMappingAndOverrides = (\n variableMappings: VariableMappings | undefined,\n allowedVariableOverrides: string[] | undefined,\n ctx: z.RefinementCtx,\n) => {\n const variableMappingKeys = Object.keys(variableMappings || {});\n const overridesSet = new Set(allowedVariableOverrides || []);\n const overlap = variableMappingKeys.filter((key) => overridesSet.has(key));\n if (overlap.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Found both variable mapping and allowed override for the following keys: ${overlap.map((key) => `\"${key}\"`).join(', ')}.`,\n });\n }\n};\n\nconst validateMappingsAgainstVariableDefinitions = (\n variableMappings: VariableMappings | undefined,\n allowedVariableOverrides: string[] | undefined,\n variableDefinitions: Record<string, z.infer<typeof ComponentVariableSchema>>,\n ctx: z.RefinementCtx,\n) => {\n const nonDesignVariableDefinitionKeys = Object.entries(variableDefinitions)\n .filter(([_, def]) => def.group !== 'style')\n .map(([key]) => key);\n\n const variableMappingKeys = Object.keys(variableMappings || {});\n\n const allKeys = [...variableMappingKeys, ...(allowedVariableOverrides || [])];\n const invalidMappings = allKeys.filter((key) => !nonDesignVariableDefinitionKeys.includes(key));\n if (invalidMappings.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The following variable mappings or overrides are missing from the variable definitions: ${invalidMappings.map((key) => `\"${key}\"`).join(', ')}.`,\n });\n }\n};\n\nconst validateMappingsAgainstParameterDefinitions = (\n variableMappings: VariableMappings | undefined,\n parameterDefinitions: ParameterDefinitions,\n ctx: z.RefinementCtx,\n) => {\n const parameterDefinitionKeys = Object.keys(parameterDefinitions || {});\n for (const [mappingKey, mappingValue] of Object.entries(variableMappings || {})) {\n if (!parameterDefinitionKeys.includes(mappingValue.parameterId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The variable mapping with id \"${mappingKey}\" references a non-existing parameterId \"${mappingValue.parameterId}\".`,\n });\n }\n }\n};\n\nconst validatePassToNodes = (\n rootChildren: z.infer<typeof ComponentTreeSchema>['children'],\n componentSettings: PatternComponentSettings,\n ctx: z.RefinementCtx,\n) => {\n if (\n !componentSettings.prebindingDefinitions ||\n componentSettings.prebindingDefinitions.length === 0\n ) {\n return;\n }\n const { parameterDefinitions } = componentSettings.prebindingDefinitions[0];\n\n const nodeIds: Set<string> = new Set();\n for (const paramDef of Object.values(parameterDefinitions || {})) {\n paramDef.passToNodes?.forEach((n) => nodeIds.add(n.nodeId));\n }\n\n treeVisit(rootChildren, (node) => {\n if (!node.id) return;\n if (nodeIds.has(node.id)) {\n nodeIds.delete(node.id);\n }\n });\n\n if (nodeIds.size > 0) {\n const stringifiedNodeIds = Array.from(nodeIds)\n .map((id) => `\"${id}\"`)\n .join(', ');\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The following node IDs referenced in passToNodes are not present in the component tree: ${stringifiedNodeIds}.`,\n });\n }\n};\n\nexport type PatternFields = z.infer<typeof PatternFieldsCMAShapeSchema>;\nexport type ParameterDefinition = z.infer<typeof ParameterDefinitionSchema>;\nexport type ParameterDefinitions = z.infer<typeof ParameterDefinitionsSchema>;\nexport type VariableMapping = z.infer<typeof VariableMappingSchema>;\nexport type VariableMappings = z.infer<typeof VariableMappingsSchema>;\nexport type PatternComponentSettings = z.infer<typeof ComponentSettingsSchema>;\nexport type PrebindingDefinition = z.infer<typeof PrebindingDefinitionSchema>;\n","import { z } from 'zod';\nimport {\n ComponentVariableSchema,\n DefinitionPropertyKeySchema,\n DefinitionPropertyTypeSchema,\n PrimitiveValueSchema,\n} from './v2023_09_28/common';\n\nexport const ComponentDefinitionSchema = z\n .object({\n id: DefinitionPropertyKeySchema,\n name: z.string(),\n category: z.string().optional(),\n thumbnailUrl: z.string().optional(),\n thumbnailId: z.string().optional(),\n hyperlinkPattern: z.string().optional(),\n children: z.boolean().optional(),\n slots: z\n .record(DefinitionPropertyKeySchema, z.object({ displayName: z.string().optional() }))\n .optional(),\n builtInStyles: z.array(z.string()).optional(),\n tooltip: z.object({ imageUrl: z.string().optional(), description: z.string() }).optional(),\n variables: z.record(\n DefinitionPropertyKeySchema,\n ComponentVariableSchema.extend({\n defaultValue: PrimitiveValueSchema.optional(),\n }).superRefine((val, ctx) => {\n switch (val.type) {\n case 'Array':\n if (typeof val.defaultValue !== 'undefined') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue is not supported for \"Array\" type for ${ctx.path.join('.')}`,\n fatal: false,\n });\n }\n break;\n case 'Boolean':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'boolean') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a boolean when type is \"Boolean\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Date':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Date\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Hyperlink':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Hyperlink\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Link':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue is not supported for \"Link\" type for ${ctx.path.join('.')}`,\n fatal: false,\n });\n }\n break;\n case 'Location':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be an object when type is \"Location\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Media':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Media\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Number':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'number') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a number when type is \"Number\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Object':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be an object when type is \"Object\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'RichText':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be an object when type is \"RichText\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Text':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Text\" for ${ctx.path.join('.')}, got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n }\n }),\n ),\n })\n .superRefine((val, ctx) => {\n if (val.children === true && (!!val.variables.children || !!val.slots?.children)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Cannot activate 'children: true' and name a variable or slot 'children' at the same time`,\n fatal: false,\n });\n }\n // Ensure that slots and variables don't use the same names\n if (val.variables && val.slots) {\n Object.keys(val.variables).forEach((name) => {\n if (val.slots![name]) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Variable and slot cannot have the same name: ${name}`,\n fatal: false,\n });\n }\n });\n }\n });\n\nexport type ComponentDefinitionPropertyType = z.infer<typeof DefinitionPropertyTypeSchema>;\nexport type ComponentDefinitionType = z.infer<typeof ComponentDefinitionSchema>;\n","import { ZodIssueCode, ZodIssue, z } from 'zod';\n\nexport enum CodeNames {\n Type = 'type',\n Required = 'required',\n Unexpected = 'unexpected',\n Regex = 'regex',\n In = 'in',\n Size = 'size',\n Custom = 'custom',\n}\n\nexport type ContentfulErrorDetails = {\n details: string;\n min?: number | bigint;\n max?: number | bigint;\n name: (typeof CodeNames)[keyof typeof CodeNames];\n path: (string | number)[];\n value?: string;\n expected?: (string | number)[];\n};\n\nconst convertInvalidType = (issue: z.ZodInvalidTypeIssue): ContentfulErrorDetails => {\n const name = issue.received === 'undefined' ? CodeNames.Required : CodeNames.Type;\n const details =\n issue.received === 'undefined'\n ? `The property \"${issue.path.slice(-1)}\" is required here`\n : `The type of \"${issue.path.slice(-1)}\" is incorrect, expected type: ${issue.expected}`;\n\n return {\n details: details,\n name: name,\n path: issue.path,\n value: issue.received.toString(),\n };\n};\n\nconst convertUnrecognizedKeys = (issue: z.ZodUnrecognizedKeysIssue): ContentfulErrorDetails => {\n const missingProperties = issue.keys.map((k) => `\"${k}\"`).join(', ');\n return {\n details:\n issue.keys.length > 1\n ? `The properties ${missingProperties} are not expected`\n : `The property ${missingProperties} is not expected`,\n name: CodeNames.Unexpected,\n path: issue.path,\n };\n};\n\nconst convertInvalidString = (issue: z.ZodInvalidStringIssue): ContentfulErrorDetails => {\n return {\n details: issue.message || 'Invalid string',\n name: issue.validation === 'regex' ? CodeNames.Regex : CodeNames.Unexpected,\n path: issue.path,\n };\n};\nconst convertInvalidEnumValue = (issue: z.ZodInvalidEnumValueIssue): ContentfulErrorDetails => {\n return {\n details: issue.message || 'Value must be one of expected values',\n name: CodeNames.In,\n path: issue.path,\n value: issue.received.toString(),\n expected: issue.options,\n };\n};\nconst convertInvalidLiteral = (issue: z.ZodInvalidLiteralIssue): ContentfulErrorDetails => {\n return {\n details: issue.message || 'Value must be one of expected values',\n name: CodeNames.In,\n path: issue.path,\n value: issue.received as string,\n expected: [issue.expected as string],\n };\n};\n\nconst convertTooBig = (issue: z.ZodTooBigIssue): ContentfulErrorDetails => {\n return {\n details: issue.message || `Size should be at most ${issue.maximum}`,\n name: CodeNames.Size,\n path: issue.path,\n max: issue.maximum,\n };\n};\n\nconst convertTooSmall = (issue: z.ZodTooSmallIssue): ContentfulErrorDetails => {\n return {\n details: issue.message || `Size should be at least ${issue.minimum}`,\n name: CodeNames.Size,\n path: issue.path,\n min: issue.minimum,\n };\n};\nconst defaultConversion = (issue: ZodIssue): ContentfulErrorDetails => {\n return {\n details: issue.message || 'An unexpected error occurred',\n name: CodeNames.Custom,\n path: issue.path.map(String),\n };\n};\n\nexport const zodToContentfulError = (issue: ZodIssue): ContentfulErrorDetails => {\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n return convertInvalidType(issue);\n case ZodIssueCode.unrecognized_keys:\n return convertUnrecognizedKeys(issue);\n case ZodIssueCode.invalid_enum_value:\n return convertInvalidEnumValue(issue);\n case ZodIssueCode.invalid_string:\n return convertInvalidString(issue);\n case ZodIssueCode.too_small:\n return convertTooSmall(issue);\n case ZodIssueCode.too_big:\n return convertTooBig(issue);\n case ZodIssueCode.invalid_literal:\n return convertInvalidLiteral(issue);\n default:\n return defaultConversion(issue);\n }\n};\n","import { z } from 'zod';\nimport { Breakpoint, BreakpointSchema, breakpointsRefinement } from '../schemas/latest';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { zodToContentfulError } from '@/utils/zodToContentfulError';\n\nexport const validateBreakpointsDefinition = (breakpoints: Breakpoint[]): ValidatorReturnValue => {\n const result = z\n .array(BreakpointSchema)\n .superRefine(breakpointsRefinement)\n .safeParse(breakpoints);\n if (!result.success) {\n return {\n success: false,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n","import { ComponentDefinitionSchema } from '../schemas';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { zodToContentfulError } from '../utils/zodToContentfulError';\n\nexport const validateComponentDefinition = (definition): ValidatorReturnValue => {\n const result = ComponentDefinitionSchema.safeParse(definition);\n if (!result.success) {\n return {\n success: false,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n","import { type SchemaVersions } from '../types';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { PatternSchema_2023_09_28 } from '../schemas';\nimport { zodToContentfulError, CodeNames } from '@/utils/zodToContentfulError';\n\nconst VERSION_SCHEMAS = {\n '2023-09-28': PatternSchema_2023_09_28,\n};\n\n/**\n *\n * @param pattern The pattern entry to validate\n * @param schemaVersionOverride Optional override for the schema version to validate against.\n * By default, the schema version is read from the pattern entry\n * @returns object with success property and optional errors array\n */\nexport const validatePatternFields = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches KeyValueMap in EntryProps['fields']\n pattern: { fields: Record<string, any> },\n schemaVersionOverride?: SchemaVersions,\n): ValidatorReturnValue => {\n let schemaVersion: SchemaVersions | undefined;\n\n if (schemaVersionOverride) {\n schemaVersion = schemaVersionOverride;\n } else if (pattern.fields.componentTree) {\n const locale = Object.keys(pattern.fields.componentTree)[0];\n schemaVersion = pattern.fields.componentTree[locale].schemaVersion;\n }\n\n const schema = schemaVersion && VERSION_SCHEMAS[schemaVersion];\n\n if (!schema) {\n return {\n success: false,\n errors: [\n {\n name: schemaVersion ? CodeNames.In : CodeNames.Required,\n expected: Object.keys(VERSION_SCHEMAS),\n value: schemaVersion,\n path: ['fields', 'componentTree', 'schemaVersion'],\n details: schemaVersion\n ? 'Unsupported schema version'\n : 'The property \"schemaVersion\" is required here',\n },\n ],\n };\n }\n\n const fieldsToValidate = {\n componentTree: pattern.fields.componentTree,\n dataSource: pattern.fields.dataSource,\n unboundValues: pattern.fields.unboundValues,\n usedComponents: pattern.fields.usedComponents,\n componentSettings: pattern.fields.componentSettings,\n };\n\n const result = schema.safeParse(fieldsToValidate);\n if (!result.success) {\n return {\n success: result.success,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n","import { type SchemaVersions } from '../types';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { ExperienceSchema_2023_09_28 } from '../schemas';\nimport { zodToContentfulError, CodeNames } from '@/utils/zodToContentfulError';\nimport { validatePatternFields } from '@/validators/validatePatternFields';\n\nconst VERSION_SCHEMAS = {\n '2023-09-28': ExperienceSchema_2023_09_28,\n};\n\n// TODO: fix typing when the Entry type is exposed\nfunction isPattern(experience: any): boolean {\n return experience.fields.componentSettings !== undefined;\n}\n\n/**\n *\n * @param experience The experience entry to validate\n * @param schemaVersionOverride Optional override for the schema version to validate against.\n * By default, the schema version is read from the experience entry\n * @returns object with success property and optional errors array\n */\nexport const validateExperienceFields = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches KeyValueMap in EntryProps['fields']\n experience: { fields: Record<string, any> },\n schemaVersionOverride?: SchemaVersions,\n): ValidatorReturnValue => {\n // If this is a pattern, use the pattern validator\n if (isPattern(experience)) {\n return validatePatternFields(experience, schemaVersionOverride);\n }\n\n let schemaVersion: SchemaVersions | undefined;\n if (schemaVersionOverride) {\n schemaVersion = schemaVersionOverride;\n } else if (experience.fields.componentTree) {\n const locale = Object.keys(experience.fields.componentTree)[0];\n schemaVersion = experience.fields.componentTree[locale].schemaVersion;\n }\n\n const schema = schemaVersion && VERSION_SCHEMAS[schemaVersion];\n\n if (!schema) {\n return {\n success: false,\n errors: [\n {\n name: schemaVersion ? CodeNames.In : CodeNames.Required,\n expected: ['2023-09-28'],\n value: schemaVersion,\n path: ['fields', 'componentTree', 'schemaVersion'],\n details: schemaVersion\n ? 'Unsupported schema version'\n : 'The property \"schemaVersion\" is required here',\n },\n ],\n };\n }\n\n const fieldsToValidate = {\n componentTree: experience.fields.componentTree,\n dataSource: experience.fields.dataSource,\n unboundValues: experience.fields.unboundValues,\n usedComponents: experience.fields.usedComponents,\n };\n\n const result = schema.safeParse(fieldsToValidate);\n if (!result.success) {\n return {\n success: result.success,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n"],"names":["z","ZodIssueCode","VERSION_SCHEMAS","PatternSchema_2023_09_28","ExperienceSchema_2023_09_28"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/schemas/schemaVersions.ts","../src/schemas/v2023_09_28/common.ts","../src/schemas/v2023_09_28/experience.ts","../src/utils/treeVisit.ts","../src/schemas/v2023_09_28/pattern.ts","../src/schemas/componentDefinition.ts","../src/utils/zodToContentfulError.ts","../src/validators/validateBreakpointDefinitions.ts","../src/validators/validateComponentDefinition.ts","../src/validators/validatePatternFields.ts","../src/validators/validateExperienceFields.ts"],"sourcesContent":["import { z } from 'zod';\n// If more than one version is supported, use z.union\nexport const SchemaVersions = z.literal('2023-09-28');\n\nexport type SchemaVersions = z.infer<typeof SchemaVersions>;\n\n// Keep deprecated versions here just for reference\nexport const UnsupportedSchemaVersions = z.union([\n z.literal('2023-08-23'),\n z.literal('2023-07-26'),\n z.literal('2023-06-27'),\n]);\n","import { z, ZodTypeAny } from 'zod';\nimport { Breakpoint } from '@/schemas/v2023_09_28/experience';\nimport { SchemaVersions } from '@/schemas/schemaVersions';\n\nexport const DefinitionPropertyTypeSchema = z.enum([\n 'Text',\n 'RichText',\n 'Number',\n 'Date',\n 'Boolean',\n 'Location',\n 'Media',\n 'Object',\n 'Hyperlink',\n 'Array',\n 'Link',\n]);\n\nexport const DefinitionPropertyKeySchema = z\n .string()\n .regex(/^[a-zA-Z0-9-_]{1,32}$/, { message: 'Property needs to match: /^[a-zA-Z0-9-_]{1,32}$/' });\n\nexport const PrimitiveValueSchema = z.union([\n z.string(),\n z.boolean(),\n z.number(),\n z.record(z.any(), z.any()),\n z.undefined(),\n]);\n\nexport const UsedComponentsSchema = z.array(\n z.object({\n sys: z.object({\n type: z.literal('Link'),\n id: z.string(),\n linkType: z.literal('Entry'),\n }),\n }),\n);\n\nexport const uuidKeySchema = z\n .string()\n .regex(/^[a-zA-Z0-9-_]{1,21}$/, { message: 'Does not match /^[a-zA-Z0-9-_]{1,21}$/' });\n\nexport const DataSourceSchema = z.record(\n uuidKeySchema,\n z.object({\n sys: z.object({\n type: z.literal('Link'),\n id: z.string(),\n linkType: z.enum(['Entry', 'Asset']),\n }),\n }),\n);\n\nexport const UnboundValuesSchema = z.record(\n uuidKeySchema,\n z.object({\n value: PrimitiveValueSchema,\n }),\n);\n\n/**\n * Property keys for imported components have a limit of 32 characters (to be implemented) while\n * property keys for patterns have a limit of 54 characters (<32-char-variable-name>_<21-char-nanoid-id>).\n * Because we cannot distinguish between the two in the componentTree, we will use the larger limit for both.\n */\nexport const propertyKeySchema = z\n .string()\n .regex(/^[a-zA-Z0-9-_]{1,54}$/, { message: 'Does not match /^[a-zA-Z0-9-_]{1,54}$/' });\n\nexport const ComponentTreeNodeIdSchema = z\n .string()\n .regex(/^[a-zA-Z0-9]{1,8}$/, { message: 'Does not match /^[a-zA-Z0-9]{1,8}$/' });\n\nexport const breakpointsRefinement = (value: Breakpoint[], ctx: z.RefinementCtx) => {\n if (!value.length || value[0].query !== '*') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The first breakpoint should include the following attributes: { \"query\": \"*\" }`,\n });\n return;\n }\n\n // Return early if there's only one generic breakpoint\n const hasNoBreakpointsStrategy = value.length === 1;\n if (hasNoBreakpointsStrategy) {\n return;\n }\n\n // Check if any breakpoint id occurs twice\n const ids = value.map((breakpoint) => breakpoint.id);\n const hasDuplicateIds = new Set(ids).size !== ids.length;\n if (hasDuplicateIds) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Breakpoint IDs must be unique`,\n });\n return;\n }\n\n // Skip the first one which is guaranteed to be a wildcard query\n const nonBaseBreakpoints = value.slice(1);\n const isMobileFirstStrategy = nonBaseBreakpoints[0].query.startsWith('>');\n const isDesktopFirstStrategy = nonBaseBreakpoints[0].query.startsWith('<');\n\n if (isMobileFirstStrategy) {\n const areOperatorsEqual = nonBaseBreakpoints.every(({ query }) => query.startsWith('>'));\n if (!areOperatorsEqual) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Breakpoint queries must be in the format \">[size]px\" for mobile-first strategy`,\n });\n }\n\n // Extract the queries boundary by removing the special characters around it\n const queries = nonBaseBreakpoints.map((bp) => parseInt(bp.query.replace(/px|<|>/, '')));\n\n // Starting with the third breakpoint, check that every query is higher than the one above\n const isIncreasing = queries.every(\n (value, index, array) => index === 0 || value > array[index - 1],\n );\n if (!isIncreasing) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `When using a mobile-first strategy, all breakpoints must have strictly increasing pixel values`,\n });\n }\n } else if (isDesktopFirstStrategy) {\n const areOperatorsEqual = nonBaseBreakpoints.every(({ query }) => query.startsWith('<'));\n if (!areOperatorsEqual) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Breakpoint queries must be in the format \"<[size]px\" for desktop-first strategy`,\n });\n }\n\n // Extract the queries boundary by removing the special characters around it\n const queries = nonBaseBreakpoints.map((bp) => parseInt(bp.query.replace(/px|<|>/, '')));\n\n // Starting with the third breakpoint, check that every query is lower than the one above\n const isDecreasing = queries.every(\n (value, index, array) => index === 0 || value < array[index - 1],\n );\n if (!isDecreasing) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `When using a desktop-first strategy, all breakpoints must have strictly decreasing pixel values`,\n });\n }\n } else if (!isMobileFirstStrategy && !isDesktopFirstStrategy) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `You may only use a mobile-first or desktop-first strategy for breakpoints using '<' or '>' queries`,\n });\n }\n};\n\nexport const ValuesByBreakpointSchema = z.record(\n z.string(),\n z.lazy(() => PrimitiveValueSchema),\n);\n\nexport const BindingSourceTypeEnumSchema = z\n .array(z.enum(['entry', 'asset', 'manual', 'experience']))\n .nonempty();\n\nexport const DesignValueSchema = z\n .object({\n type: z.literal('DesignValue'),\n valuesByBreakpoint: ValuesByBreakpointSchema,\n })\n .strict();\n\nexport const BoundValueSchema = z\n .object({\n type: z.literal('BoundValue'),\n path: z.string(),\n })\n .strict();\n\nexport const HyperlinkValueSchema = z\n .object({\n type: z.literal('HyperlinkValue'),\n linkTargetKey: z.string(),\n /** Allows to override parts of the URL, e.g. the locale */\n overrides: z.object({}).optional(),\n })\n .strict();\n\nexport const UnboundValueSchema = z\n .object({\n type: z.literal('UnboundValue'),\n key: z.string(),\n })\n .strict();\n\nexport const ComponentValueSchema = z\n .object({\n type: z.literal('ComponentValue'),\n key: z.string(),\n })\n .strict();\n\nexport const NoValueSchema = z.object({ type: z.literal('NoValue') }).strict();\n\nexport const ComponentPropertyValueSchema = z.discriminatedUnion('type', [\n DesignValueSchema,\n BoundValueSchema,\n UnboundValueSchema,\n HyperlinkValueSchema,\n ComponentValueSchema,\n NoValueSchema,\n]);\n\nexport type ComponentPropertyValue = z.infer<typeof ComponentPropertyValueSchema>;\n\n// TODO: finalize schema structure before release\n// https://contentful.atlassian.net/browse/LUMOS-523\nexport const ParameterSchema = z.object({\n type: z.literal('BoundValue'),\n path: z.string(),\n});\n\nexport const ParametersSchema = z.record(propertyKeySchema, ParameterSchema);\n\ntype BreakpointQuery = '*' | `>${number}px` | `<${number}px`;\nconst BREAKPOINT_QUERY_REGEX = /^\\*$|^[<>][0-9]+px$/;\n\nexport const BreakpointSchema = z\n .object({\n id: propertyKeySchema,\n // Can be replaced with z.templateLiteral when upgrading to zod v4\n query: z.string().refine((s): s is BreakpointQuery => BREAKPOINT_QUERY_REGEX.test(s)),\n previewSize: z.string().optional(),\n displayName: z.string(),\n displayIcon: z.enum(['desktop', 'tablet', 'mobile']).optional(),\n })\n .strict();\n\n// Use helper schema to define a recursive schema with its type correctly below\nconst BaseComponentTreeNodeSchema = z.object({\n id: ComponentTreeNodeIdSchema.optional(),\n definitionId: DefinitionPropertyKeySchema,\n prebindingId: z.string().optional(),\n displayName: z.string().optional(),\n slotId: z.string().optional(),\n variables: z.record(propertyKeySchema, ComponentPropertyValueSchema),\n parameters: ParametersSchema.optional(),\n});\n\nexport type ComponentTreeNode = z.infer<typeof BaseComponentTreeNodeSchema> & {\n children: ComponentTreeNode[];\n};\n\nexport const ComponentVariableSchema = z.object({\n displayName: z.string().optional(),\n type: DefinitionPropertyTypeSchema,\n description: z.string().optional(),\n group: z.string().optional(),\n defaultValue: PrimitiveValueSchema.or(ComponentPropertyValueSchema).optional(),\n validations: z\n .object({\n bindingSourceType: BindingSourceTypeEnumSchema.optional(),\n required: z.boolean().optional(),\n format: z.literal('URL').optional(),\n in: z\n .array(\n z.object({\n value: z.union([z.string(), z.number()]),\n displayName: z.string().optional(),\n }),\n )\n .optional(),\n })\n .optional(),\n});\n\nexport const ComponentTreeNodeSchema: z.ZodType<ComponentTreeNode> =\n BaseComponentTreeNodeSchema.extend({\n children: z.lazy(() => ComponentTreeNodeSchema.array()),\n }).superRefine(({ id, prebindingId, parameters }, ctx) => {\n // We don't fail if parameters are present but prebindingId is not because\n // older experiences (updated before 21-09-2025) always included parameters\n // and they will start failing if we do.\n if (prebindingId && !parameters) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Found \"prebindingId\" but no \"parameters\" for node with id: \"${id}\"`,\n });\n }\n });\n\nexport const ComponentTreeSchema = z\n .object({\n breakpoints: z.array(BreakpointSchema).superRefine(breakpointsRefinement),\n children: z.array(ComponentTreeNodeSchema),\n schemaVersion: SchemaVersions,\n })\n .strict();\nexport const localeWrapper = <T extends ZodTypeAny>(fieldSchema: T) =>\n z.record(z.string(), fieldSchema);\n","import { z } from 'zod';\nimport {\n BindingSourceTypeEnumSchema,\n BoundValueSchema,\n BreakpointSchema,\n breakpointsRefinement,\n ComponentTreeSchema,\n ComponentValueSchema,\n DataSourceSchema,\n DesignValueSchema,\n HyperlinkValueSchema,\n localeWrapper,\n NoValueSchema,\n ParameterSchema,\n PrimitiveValueSchema,\n UnboundValueSchema,\n UnboundValuesSchema,\n UsedComponentsSchema,\n ValuesByBreakpointSchema,\n} from './common';\n\nexport const ExperienceFieldsCMAShapeSchema = z.object({\n componentTree: localeWrapper(ComponentTreeSchema),\n dataSource: localeWrapper(DataSourceSchema),\n unboundValues: localeWrapper(UnboundValuesSchema),\n usedComponents: localeWrapper(UsedComponentsSchema).optional(),\n});\n\nexport type ExperienceFields = z.infer<typeof ExperienceFieldsCMAShapeSchema>;\nexport type ExperienceDataSource = z.infer<typeof DataSourceSchema>;\nexport type ExperienceUnboundValues = z.infer<typeof UnboundValuesSchema>;\nexport type ExperienceUsedComponents = z.infer<typeof UsedComponentsSchema>;\nexport type ExperienceComponentTree = z.infer<typeof ComponentTreeSchema>;\nexport type ValuesByBreakpoint = z.infer<typeof ValuesByBreakpointSchema>;\nexport type Breakpoint = z.infer<typeof BreakpointSchema>;\nexport type PrimitiveValue = z.infer<typeof PrimitiveValueSchema>;\nexport type DesignValue = z.infer<typeof DesignValueSchema>;\nexport type BoundValue = z.infer<typeof BoundValueSchema>;\nexport type NoValue = z.infer<typeof NoValueSchema>;\nexport type UnboundValue = z.infer<typeof UnboundValueSchema>;\nexport type HyperlinkValue = z.infer<typeof HyperlinkValueSchema>;\nexport type ComponentValue = z.infer<typeof ComponentValueSchema>;\nexport type BindingSourceTypeEnum = z.infer<typeof BindingSourceTypeEnumSchema>;\nexport type Parameter = z.infer<typeof ParameterSchema>;\nexport { breakpointsRefinement };\n","type NodeWithChildren<T> = {\n children: T[];\n};\n\nexport function treeVisit<T extends NodeWithChildren<T>>(\n initialNode: T | T[],\n onNode: (node: T) => void,\n) {\n const _treeVisit = (currentNode: T): void => {\n const children = [...currentNode.children];\n onNode(currentNode);\n for (const child of children) {\n _treeVisit(child);\n }\n };\n if (Array.isArray(initialNode)) {\n for (const node of initialNode) {\n _treeVisit(node);\n }\n } else {\n _treeVisit(initialNode);\n }\n}\n","import { z } from 'zod';\nimport {\n ComponentTreeSchema,\n ComponentVariableSchema,\n DataSourceSchema,\n localeWrapper,\n propertyKeySchema,\n UnboundValuesSchema,\n UsedComponentsSchema,\n} from '../v2023_09_28/common';\nimport { treeVisit } from '@/utils/treeVisit';\n\nexport const MAX_ALLOWED_PATHS = 200;\n\nexport const THUMBNAIL_IDS = [\n 'columns',\n 'columnsPlusRight',\n 'imagesSquare',\n 'subtitles',\n 'rowsPlusBottom',\n 'userRectangle',\n 'textbox',\n 'monitorPlay',\n 'article',\n 'table',\n 'star',\n 'heartStraight',\n 'frameCorners',\n 'rows',\n 'dotsThreeOutline',\n 'listDashes',\n 'checkerBoard',\n 'gridFour',\n 'slideshow',\n 'diamondsFour',\n 'cards',\n 'textColumns',\n 'duplex',\n] as const;\n\n// TODO: finalize schema structure before release\n// https://contentful.atlassian.net/browse/LUMOS-523\nconst VariableMappingSchema = z.object({\n parameterId: propertyKeySchema,\n type: z.literal('ContentTypeMapping'),\n pathsByContentType: z\n .record(z.string(), z.object({ path: z.string() }))\n .superRefine((paths, ctx) => {\n if (Object.keys(paths).length > MAX_ALLOWED_PATHS) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Too many paths defined for variable mapping, maximum allowed is ${MAX_ALLOWED_PATHS}`,\n });\n }\n }),\n});\n\nexport const PassToNodeSchema = z\n .object({\n nodeId: propertyKeySchema,\n parameterId: propertyKeySchema,\n prebindingId: propertyKeySchema,\n })\n .strict();\n\nconst ParameterDefinitionSchema = z.object({\n defaultSource: z\n .strictObject({\n type: z.enum(['Entry']),\n contentTypeId: z.string(),\n link: z.strictObject({\n sys: z.strictObject({\n type: z.literal('Link'),\n id: z.string(),\n linkType: z.enum(['Entry']),\n }),\n }),\n })\n .optional(),\n contentTypes: z.array(z.string()).min(1),\n passToNodes: z\n .array(PassToNodeSchema)\n .max(1, 'At most one \"passToNodes\" element is allowed per parameter definition.'),\n});\n\nexport const ParameterDefinitionsSchema = z.record(propertyKeySchema, ParameterDefinitionSchema);\n\nconst VariableMappingsSchema = z.record(propertyKeySchema, VariableMappingSchema);\n\nexport const ComponentVariablesSchema = z.record(\n z.string().regex(/^[a-zA-Z0-9-_]{1,54}$/), // Here the key is <variableName>_<nanoidId> so we need to allow for a longer length\n ComponentVariableSchema,\n);\n\nexport const PrebindingDefinitionSchema = z\n .object({\n id: propertyKeySchema,\n parameterDefinitions: ParameterDefinitionsSchema,\n variableMappings: VariableMappingsSchema.optional(),\n allowedVariableOverrides: z.array(z.string()).optional(),\n })\n .strict();\n\nconst ComponentSettingsSchema = z\n .object({\n variableDefinitions: ComponentVariablesSchema,\n thumbnailId: z.enum(THUMBNAIL_IDS).optional(),\n category: z.string().max(50, 'Category must contain at most 50 characters').optional(),\n prebindingDefinitions: z.array(PrebindingDefinitionSchema).length(1).optional(),\n })\n .strict()\n .superRefine((componentSettings, ctx) => {\n const { variableDefinitions, prebindingDefinitions } = componentSettings;\n if (!prebindingDefinitions || prebindingDefinitions.length === 0) {\n return;\n }\n const { parameterDefinitions, variableMappings, allowedVariableOverrides } =\n prebindingDefinitions[0];\n\n validateAtMostOneNativeParameterDefinition(parameterDefinitions, ctx);\n validateNoOverlapBetweenMappingAndOverrides(variableMappings, allowedVariableOverrides, ctx);\n validateMappingsAgainstVariableDefinitions(\n variableMappings,\n allowedVariableOverrides,\n variableDefinitions,\n ctx,\n );\n validateMappingsAgainstParameterDefinitions(variableMappings, parameterDefinitions, ctx);\n });\n\nexport const PatternFieldsCMAShapeSchema = z\n .object({\n componentTree: localeWrapper(ComponentTreeSchema),\n dataSource: localeWrapper(DataSourceSchema),\n unboundValues: localeWrapper(UnboundValuesSchema),\n usedComponents: localeWrapper(UsedComponentsSchema).optional(),\n componentSettings: localeWrapper(ComponentSettingsSchema),\n })\n .superRefine((patternFields, ctx) => {\n const { componentTree, componentSettings } = patternFields;\n\n // values at this point are wrapped under locale code\n const nonLocalisedComponentTree = Object.values(componentTree)[0];\n const nonLocalisedComponentSettings = Object.values(componentSettings)[0];\n\n if (!nonLocalisedComponentSettings || !nonLocalisedComponentTree) {\n return;\n }\n\n validatePassToNodes(\n nonLocalisedComponentTree.children || ([] as z.infer<typeof ComponentTreeSchema>['children']),\n nonLocalisedComponentSettings || ({} as PatternComponentSettings),\n ctx,\n );\n });\n\nconst validateAtMostOneNativeParameterDefinition = (\n parameterDefinitions: Record<string, ParameterDefinition>,\n ctx: z.RefinementCtx,\n) => {\n const nativeParamDefinitions = Object.values(parameterDefinitions).filter(\n (paramDefinition) => !(paramDefinition.passToNodes && paramDefinition.passToNodes.length > 0),\n );\n\n if (nativeParamDefinitions.length > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Only one native parameter definition (parameter definition without passToNodes) is allowed per prebinding definition.`,\n });\n }\n};\n\nconst validateNoOverlapBetweenMappingAndOverrides = (\n variableMappings: VariableMappings | undefined,\n allowedVariableOverrides: string[] | undefined,\n ctx: z.RefinementCtx,\n) => {\n const variableMappingKeys = Object.keys(variableMappings || {});\n const overridesSet = new Set(allowedVariableOverrides || []);\n const overlap = variableMappingKeys.filter((key) => overridesSet.has(key));\n if (overlap.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Found both variable mapping and allowed override for the following keys: ${overlap.map((key) => `\"${key}\"`).join(', ')}.`,\n });\n }\n};\n\nconst validateMappingsAgainstVariableDefinitions = (\n variableMappings: VariableMappings | undefined,\n allowedVariableOverrides: string[] | undefined,\n variableDefinitions: Record<string, z.infer<typeof ComponentVariableSchema>>,\n ctx: z.RefinementCtx,\n) => {\n const nonDesignVariableDefinitionKeys = Object.entries(variableDefinitions)\n .filter(([_, def]) => def.group !== 'style')\n .map(([key]) => key);\n\n const variableMappingKeys = Object.keys(variableMappings || {});\n\n const allKeys = [...variableMappingKeys, ...(allowedVariableOverrides || [])];\n const invalidMappings = allKeys.filter((key) => !nonDesignVariableDefinitionKeys.includes(key));\n if (invalidMappings.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The following variable mappings or overrides are missing from the variable definitions: ${invalidMappings.map((key) => `\"${key}\"`).join(', ')}.`,\n });\n }\n};\n\nconst validateMappingsAgainstParameterDefinitions = (\n variableMappings: VariableMappings | undefined,\n parameterDefinitions: ParameterDefinitions,\n ctx: z.RefinementCtx,\n) => {\n const parameterDefinitionKeys = Object.keys(parameterDefinitions || {});\n for (const [mappingKey, mappingValue] of Object.entries(variableMappings || {})) {\n if (!parameterDefinitionKeys.includes(mappingValue.parameterId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The variable mapping with id \"${mappingKey}\" references a non-existing parameterId \"${mappingValue.parameterId}\".`,\n });\n }\n }\n};\n\nconst validatePassToNodes = (\n rootChildren: z.infer<typeof ComponentTreeSchema>['children'],\n componentSettings: PatternComponentSettings,\n ctx: z.RefinementCtx,\n) => {\n if (\n !componentSettings.prebindingDefinitions ||\n componentSettings.prebindingDefinitions.length === 0\n ) {\n return;\n }\n const { parameterDefinitions } = componentSettings.prebindingDefinitions[0];\n\n const nodeIds: Set<string> = new Set();\n for (const paramDef of Object.values(parameterDefinitions || {})) {\n paramDef.passToNodes?.forEach((n) => nodeIds.add(n.nodeId));\n }\n\n treeVisit(rootChildren, (node) => {\n if (!node.id) return;\n if (nodeIds.has(node.id)) {\n nodeIds.delete(node.id);\n }\n });\n\n if (nodeIds.size > 0) {\n const stringifiedNodeIds = Array.from(nodeIds)\n .map((id) => `\"${id}\"`)\n .join(', ');\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The following node IDs referenced in passToNodes are not present in the component tree: ${stringifiedNodeIds}.`,\n });\n }\n};\n\nexport type PatternFields = z.infer<typeof PatternFieldsCMAShapeSchema>;\nexport type ParameterDefinition = z.infer<typeof ParameterDefinitionSchema>;\nexport type ParameterDefinitions = z.infer<typeof ParameterDefinitionsSchema>;\nexport type VariableMapping = z.infer<typeof VariableMappingSchema>;\nexport type VariableMappings = z.infer<typeof VariableMappingsSchema>;\nexport type PatternComponentSettings = z.infer<typeof ComponentSettingsSchema>;\nexport type PrebindingDefinition = z.infer<typeof PrebindingDefinitionSchema>;\n","import { z } from 'zod';\nimport {\n ComponentVariableSchema,\n DefinitionPropertyKeySchema,\n DefinitionPropertyTypeSchema,\n PrimitiveValueSchema,\n} from './v2023_09_28/common';\n\nexport const ComponentDefinitionSchema = z\n .object({\n id: DefinitionPropertyKeySchema,\n name: z.string(),\n category: z.string().optional(),\n thumbnailUrl: z.string().optional(),\n thumbnailId: z.string().optional(),\n hyperlinkPattern: z.string().optional(),\n children: z.boolean().optional(),\n slots: z\n .record(DefinitionPropertyKeySchema, z.object({ displayName: z.string().optional() }))\n .optional(),\n builtInStyles: z.array(z.string()).optional(),\n tooltip: z.object({ imageUrl: z.string().optional(), description: z.string() }).optional(),\n variables: z.record(\n DefinitionPropertyKeySchema,\n ComponentVariableSchema.extend({\n defaultValue: PrimitiveValueSchema.optional(),\n }).superRefine((val, ctx) => {\n switch (val.type) {\n case 'Array':\n if (typeof val.defaultValue !== 'undefined') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue is not supported for \"Array\" type`,\n fatal: false,\n });\n }\n break;\n case 'Boolean':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'boolean') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a boolean when type is \"Boolean\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Date':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Date\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Hyperlink':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Hyperlink\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Link':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue is not supported for \"Link\" type`,\n fatal: false,\n });\n }\n break;\n case 'Location':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be an object when type is \"Location\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Media':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Media\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Number':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'number') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a number when type is \"Number\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Object':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be an object when type is \"Object\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'RichText':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'object') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be an object when type is \"RichText\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n case 'Text':\n if (typeof val.defaultValue !== 'undefined' && typeof val.defaultValue !== 'string') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultValue must be a string when type is \"Text\", got ${typeof val.defaultValue} instead`,\n fatal: false,\n });\n }\n break;\n }\n }),\n ),\n })\n .superRefine((val, ctx) => {\n if (val.children === true && (!!val.variables.children || !!val.slots?.children)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Cannot activate 'children: true' and name a variable or slot 'children' at the same time`,\n fatal: false,\n });\n }\n // Ensure that slots and variables don't use the same names\n if (val.variables && val.slots) {\n Object.keys(val.variables).forEach((name) => {\n if (val.slots![name]) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Variable and slot cannot have the same name: ${name}`,\n fatal: false,\n });\n }\n });\n }\n });\n\nexport type ComponentDefinitionPropertyType = z.infer<typeof DefinitionPropertyTypeSchema>;\nexport type ComponentDefinitionType = z.infer<typeof ComponentDefinitionSchema>;\n","import { ZodIssueCode, ZodIssue } from 'zod';\n\nexport enum CodeNames {\n Type = 'type',\n Required = 'required',\n Unexpected = 'unexpected',\n Regex = 'regex',\n In = 'in',\n Size = 'size',\n Custom = 'custom',\n}\n\nexport type ContentfulErrorDetails = {\n details: string;\n min?: number | bigint;\n max?: number | bigint;\n name: (typeof CodeNames)[keyof typeof CodeNames];\n path: (string | number)[];\n value?: string;\n expected?: (string | number)[];\n};\n\nconst getInputTypeName = (input: unknown): string => {\n if (input === null) return 'null';\n if (Array.isArray(input)) return 'array';\n return typeof input;\n};\n\nconst convertInvalidType = (\n issue: Extract<ZodIssue, { code: 'invalid_type' }>,\n): ContentfulErrorDetails => {\n // Zod v4 omits 'input'/'received' from invalid_type issues; parse message instead.\n // Message format: \"Invalid input: expected X, received Y\"\n const received = issue.message?.match(/received (\\S+)$/)?.[1] ?? 'undefined';\n const isMissing = received === 'undefined';\n const name = isMissing ? CodeNames.Required : CodeNames.Type;\n const details = isMissing\n ? `The property \"${issue.path.slice(-1)}\" is required here`\n : `The type of \"${issue.path.slice(-1)}\" is incorrect, expected type: ${issue.expected}`;\n\n return {\n details,\n name,\n path: issue.path as (string | number)[],\n value: received,\n };\n};\n\nconst convertUnrecognizedKeys = (\n issue: Extract<ZodIssue, { code: 'unrecognized_keys' }>,\n): ContentfulErrorDetails => {\n const missingProperties = issue.keys.map((k) => `\"${k}\"`).join(', ');\n return {\n details:\n issue.keys.length > 1\n ? `The properties ${missingProperties} are not expected`\n : `The property ${missingProperties} is not expected`,\n name: CodeNames.Unexpected,\n path: issue.path as (string | number)[],\n };\n};\n\nconst convertInvalidString = (\n issue: Extract<ZodIssue, { code: 'invalid_format' }>,\n): ContentfulErrorDetails => {\n return {\n details: issue.message || 'Invalid string',\n name: issue.format === 'regex' ? CodeNames.Regex : CodeNames.Unexpected,\n path: issue.path as (string | number)[],\n };\n};\n\nconst convertInvalidValue = (\n issue: Extract<ZodIssue, { code: 'invalid_value' }>,\n): ContentfulErrorDetails => {\n return {\n details: issue.message || 'Value must be one of expected values',\n name: CodeNames.In,\n path: issue.path as (string | number)[],\n value: String(issue.input ?? ''),\n expected: issue.values as (string | number)[],\n };\n};\n\nconst convertTooBig = (issue: Extract<ZodIssue, { code: 'too_big' }>): ContentfulErrorDetails => {\n return {\n details: issue.message || `Size should be at most ${issue.maximum}`,\n name: CodeNames.Size,\n path: issue.path as (string | number)[],\n max: issue.maximum,\n };\n};\n\nconst convertTooSmall = (\n issue: Extract<ZodIssue, { code: 'too_small' }>,\n): ContentfulErrorDetails => {\n return {\n details: issue.message || `Size should be at least ${issue.minimum}`,\n name: CodeNames.Size,\n path: issue.path as (string | number)[],\n min: issue.minimum,\n };\n};\n\nconst defaultConversion = (issue: ZodIssue): ContentfulErrorDetails => {\n return {\n details: issue.message || 'An unexpected error occurred',\n name: CodeNames.Custom,\n path: issue.path.map(String),\n };\n};\n\nexport const zodToContentfulError = (issue: ZodIssue): ContentfulErrorDetails => {\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n return convertInvalidType(issue);\n case ZodIssueCode.unrecognized_keys:\n return convertUnrecognizedKeys(issue);\n case ZodIssueCode.invalid_value:\n return convertInvalidValue(issue);\n case ZodIssueCode.invalid_format:\n return convertInvalidString(issue);\n case ZodIssueCode.too_small:\n return convertTooSmall(issue);\n case ZodIssueCode.too_big:\n return convertTooBig(issue);\n case ZodIssueCode.invalid_key: {\n // Zod v4 wraps record key validation failures; forward to the inner issue\n const innerIssues = (issue as { issues?: ZodIssue[] }).issues;\n const innerIssue = innerIssues?.[0];\n if (innerIssue) {\n return zodToContentfulError({ ...innerIssue, path: issue.path } as ZodIssue);\n }\n return defaultConversion(issue);\n }\n default:\n return defaultConversion(issue);\n }\n};\n","import { z } from 'zod';\nimport { Breakpoint, BreakpointSchema, breakpointsRefinement } from '../schemas/latest';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { zodToContentfulError } from '@/utils/zodToContentfulError';\n\nexport const validateBreakpointsDefinition = (breakpoints: Breakpoint[]): ValidatorReturnValue => {\n const result = z\n .array(BreakpointSchema)\n .superRefine(breakpointsRefinement)\n .safeParse(breakpoints);\n if (!result.success) {\n return {\n success: false,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n","import { ComponentDefinitionSchema } from '../schemas';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { zodToContentfulError } from '../utils/zodToContentfulError';\n\nexport const validateComponentDefinition = (definition): ValidatorReturnValue => {\n const result = ComponentDefinitionSchema.safeParse(definition);\n if (!result.success) {\n return {\n success: false,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n","import { type SchemaVersions } from '../types';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { PatternSchema_2023_09_28 } from '../schemas';\nimport { zodToContentfulError, CodeNames } from '@/utils/zodToContentfulError';\n\nconst VERSION_SCHEMAS = {\n '2023-09-28': PatternSchema_2023_09_28,\n};\n\n/**\n *\n * @param pattern The pattern entry to validate\n * @param schemaVersionOverride Optional override for the schema version to validate against.\n * By default, the schema version is read from the pattern entry\n * @returns object with success property and optional errors array\n */\nexport const validatePatternFields = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches KeyValueMap in EntryProps['fields']\n pattern: { fields: Record<string, any> },\n schemaVersionOverride?: SchemaVersions,\n): ValidatorReturnValue => {\n let schemaVersion: SchemaVersions | undefined;\n\n if (schemaVersionOverride) {\n schemaVersion = schemaVersionOverride;\n } else if (pattern.fields.componentTree) {\n const locale = Object.keys(pattern.fields.componentTree)[0];\n schemaVersion = pattern.fields.componentTree[locale].schemaVersion;\n }\n\n const schema = schemaVersion && VERSION_SCHEMAS[schemaVersion];\n\n if (!schema) {\n return {\n success: false,\n errors: [\n {\n name: schemaVersion ? CodeNames.In : CodeNames.Required,\n expected: Object.keys(VERSION_SCHEMAS),\n value: schemaVersion,\n path: ['fields', 'componentTree', 'schemaVersion'],\n details: schemaVersion\n ? 'Unsupported schema version'\n : 'The property \"schemaVersion\" is required here',\n },\n ],\n };\n }\n\n const fieldsToValidate = {\n componentTree: pattern.fields.componentTree,\n dataSource: pattern.fields.dataSource,\n unboundValues: pattern.fields.unboundValues,\n usedComponents: pattern.fields.usedComponents,\n componentSettings: pattern.fields.componentSettings,\n };\n\n const result = schema.safeParse(fieldsToValidate);\n if (!result.success) {\n return {\n success: result.success,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n","import { type SchemaVersions } from '../types';\nimport { ValidatorReturnValue } from './ValidatorReturnValue';\nimport { ExperienceSchema_2023_09_28 } from '../schemas';\nimport { zodToContentfulError, CodeNames } from '@/utils/zodToContentfulError';\nimport { validatePatternFields } from '@/validators/validatePatternFields';\n\nconst VERSION_SCHEMAS = {\n '2023-09-28': ExperienceSchema_2023_09_28,\n};\n\n// TODO: fix typing when the Entry type is exposed\nfunction isPattern(experience: any): boolean {\n return experience.fields.componentSettings !== undefined;\n}\n\n/**\n *\n * @param experience The experience entry to validate\n * @param schemaVersionOverride Optional override for the schema version to validate against.\n * By default, the schema version is read from the experience entry\n * @returns object with success property and optional errors array\n */\nexport const validateExperienceFields = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches KeyValueMap in EntryProps['fields']\n experience: { fields: Record<string, any> },\n schemaVersionOverride?: SchemaVersions,\n): ValidatorReturnValue => {\n // If this is a pattern, use the pattern validator\n if (isPattern(experience)) {\n return validatePatternFields(experience, schemaVersionOverride);\n }\n\n let schemaVersion: SchemaVersions | undefined;\n if (schemaVersionOverride) {\n schemaVersion = schemaVersionOverride;\n } else if (experience.fields.componentTree) {\n const locale = Object.keys(experience.fields.componentTree)[0];\n schemaVersion = experience.fields.componentTree[locale].schemaVersion;\n }\n\n const schema = schemaVersion && VERSION_SCHEMAS[schemaVersion];\n\n if (!schema) {\n return {\n success: false,\n errors: [\n {\n name: schemaVersion ? CodeNames.In : CodeNames.Required,\n expected: ['2023-09-28'],\n value: schemaVersion,\n path: ['fields', 'componentTree', 'schemaVersion'],\n details: schemaVersion\n ? 'Unsupported schema version'\n : 'The property \"schemaVersion\" is required here',\n },\n ],\n };\n }\n\n const fieldsToValidate = {\n componentTree: experience.fields.componentTree,\n dataSource: experience.fields.dataSource,\n unboundValues: experience.fields.unboundValues,\n usedComponents: experience.fields.usedComponents,\n };\n\n const result = schema.safeParse(fieldsToValidate);\n if (!result.success) {\n return {\n success: result.success,\n errors: result.error.issues.map(zodToContentfulError),\n };\n }\n return { success: true };\n};\n"],"names":["z","ZodIssueCode","VERSION_SCHEMAS","PatternSchema_2023_09_28","ExperienceSchema_2023_09_28"],"mappings":"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"}
|