@superbuilders/primer-tives 1.1.0 → 1.1.1

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.
@@ -69,12 +69,9 @@ var RendererSubmissionSchema = z2.union([
69
69
  FractionAdditionPciSubmissionSchema
70
70
  ]);
71
71
  function invalid(issues) {
72
- return { ok: false, issues: Array.isArray(issues) ? issues : [issues] };
73
- }
74
- function valid(submission) {
75
72
  return {
76
- ok: true,
77
- value: submission
73
+ ok: false,
74
+ issues: Array.isArray(issues) ? issues : [issues]
78
75
  };
79
76
  }
80
77
  function duplicates(values, keyOf) {
@@ -102,14 +99,20 @@ function countByIdentifier(pairs, side) {
102
99
  const counts = new Map;
103
100
  for (const pair of pairs) {
104
101
  const key = pair[side];
105
- counts.set(key, (counts.get(key) ?? 0) + 1);
102
+ const currentCount = counts.get(key);
103
+ if (currentCount === undefined) {
104
+ counts.set(key, 1);
105
+ continue;
106
+ }
107
+ counts.set(key, currentCount + 1);
106
108
  }
107
109
  return counts;
108
110
  }
109
111
  function validateUsageBounds(choices, counts, side) {
110
112
  const issues = [];
111
113
  for (const choice of choices) {
112
- const count = counts.get(choice.identifier) ?? 0;
114
+ const maybeCount = counts.get(choice.identifier);
115
+ const count = maybeCount === undefined ? 0 : maybeCount;
113
116
  if (choice.matchMax !== 0 && count > choice.matchMax) {
114
117
  issues.push(`${side} '${choice.identifier}' used ${count} times, max ${choice.matchMax}`);
115
118
  }
@@ -126,6 +129,8 @@ function pciSubmissionSchema(pciId) {
126
129
  case "urn:primer:pci:fraction-addition":
127
130
  return FractionAdditionSubmissionSchema;
128
131
  }
132
+ const exhaustiveCheck = pciId;
133
+ return exhaustiveCheck;
129
134
  }
130
135
  function validateChoiceSubmission(interaction, submission) {
131
136
  if (submission.type !== "choice") {
@@ -151,13 +156,19 @@ function validateChoiceSubmission(interaction, submission) {
151
156
  if (issues.length > 0) {
152
157
  return invalid(issues);
153
158
  }
154
- return valid(submission);
159
+ return {
160
+ ok: true,
161
+ value: { ...submission }
162
+ };
155
163
  }
156
164
  function validateTextEntrySubmission(interaction, submission) {
157
165
  if (submission.type !== "text-entry") {
158
166
  return invalid(`submission type '${submission.type}' does not match interaction type 'text-entry'`);
159
167
  }
160
- return valid(submission);
168
+ return {
169
+ ok: true,
170
+ value: { ...submission }
171
+ };
161
172
  }
162
173
  function validateExtendedTextSubmission(interaction, submission) {
163
174
  if (submission.type !== "extended-text") {
@@ -185,7 +196,10 @@ function validateExtendedTextSubmission(interaction, submission) {
185
196
  if (issues.length > 0) {
186
197
  return invalid(issues);
187
198
  }
188
- return valid(submission);
199
+ return {
200
+ ok: true,
201
+ value: { ...submission }
202
+ };
189
203
  }
190
204
  function validateOrderSubmission(interaction, submission) {
191
205
  if (submission.type !== "order") {
@@ -211,7 +225,10 @@ function validateOrderSubmission(interaction, submission) {
211
225
  if (issues.length > 0) {
212
226
  return invalid(issues);
213
227
  }
214
- return valid(submission);
228
+ return {
229
+ ok: true,
230
+ value: { ...submission }
231
+ };
215
232
  }
216
233
  function validateMatchSubmission(interaction, submission) {
217
234
  if (submission.type !== "match") {
@@ -251,7 +268,10 @@ function validateMatchSubmission(interaction, submission) {
251
268
  if (issues.length > 0) {
252
269
  return invalid(issues);
253
270
  }
254
- return valid(submission);
271
+ return {
272
+ ok: true,
273
+ value: { ...submission }
274
+ };
255
275
  }
256
276
  function validatePortableCustomSubmission(interaction, submission) {
257
277
  if (submission.type !== "portable-custom") {
@@ -267,7 +287,10 @@ function validatePortableCustomSubmission(interaction, submission) {
267
287
  return issue.message;
268
288
  }));
269
289
  }
270
- return valid(submission);
290
+ return {
291
+ ok: true,
292
+ value: { ...submission }
293
+ };
271
294
  }
272
295
  function validateSubmissionForInteraction(interaction, submission) {
273
296
  switch (interaction.type) {
@@ -302,4 +325,4 @@ export {
302
325
  ChoiceSubmissionSchema
303
326
  };
304
327
 
305
- //# debugId=0930645C3AABD28F64756E2164756E21
328
+ //# debugId=C9252672E8B51E1C64756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/contracts/validation.ts", "../src/contracts/pci-schemas.ts"],
4
4
  "sourcesContent": [
5
- "import { z } from \"zod\"\n\nimport {\n\tDivisionRemainderSubmissionSchema,\n\tFractionAdditionSubmissionSchema\n} from \"@superbuilders/primer-tives/contracts/pci-schemas\"\nimport type {\n\tMatchPair,\n\tPciInteraction,\n\tRendererChoice,\n\tRendererInteraction,\n\tRendererMatchChoice,\n\tRendererSubmission\n} from \"@superbuilders/primer-tives/contracts/types\"\nimport type { PciId } from \"@superbuilders/primer-tives/client/pci\"\n\nconst MatchPairSchema = z.object({\n\tsource: z.string(),\n\ttarget: z.string()\n})\n\nconst ChoiceSubmissionSchema = z.object({\n\ttype: z.literal(\"choice\"),\n\tselectedKeys: z.array(z.string())\n})\n\nconst TextEntrySubmissionSchema = z.object({\n\ttype: z.literal(\"text-entry\"),\n\tvalue: z.string()\n})\n\nconst ExtendedTextSubmissionSchema = z.object({\n\ttype: z.literal(\"extended-text\"),\n\tvalues: z.array(z.string()).min(1)\n})\n\nconst OrderSubmissionSchema = z.object({\n\ttype: z.literal(\"order\"),\n\torderedKeys: z.array(z.string())\n})\n\nconst MatchSubmissionSchema = z.object({\n\ttype: z.literal(\"match\"),\n\tpairs: z.array(MatchPairSchema)\n})\n\nconst DivisionRemainderPciSubmissionSchema = z.object({\n\ttype: z.literal(\"portable-custom\"),\n\tpciId: z.literal(\"urn:primer:pci:division-remainder\"),\n\tvalue: DivisionRemainderSubmissionSchema\n})\n\nconst FractionAdditionPciSubmissionSchema = z.object({\n\ttype: z.literal(\"portable-custom\"),\n\tpciId: z.literal(\"urn:primer:pci:fraction-addition\"),\n\tvalue: FractionAdditionSubmissionSchema\n})\n\nconst RendererSubmissionSchema = z.union([\n\tChoiceSubmissionSchema,\n\tTextEntrySubmissionSchema,\n\tExtendedTextSubmissionSchema,\n\tOrderSubmissionSchema,\n\tMatchSubmissionSchema,\n\tDivisionRemainderPciSubmissionSchema,\n\tFractionAdditionPciSubmissionSchema\n])\n\ndeclare const validatedSubmissionBrand: unique symbol\n\ntype RendererSubmissionFor<I extends RendererInteraction = RendererInteraction> = I extends {\n\ttype: \"choice\"\n}\n\t? { type: \"choice\"; selectedKeys: string[] }\n\t: I extends { type: \"text-entry\" }\n\t\t? { type: \"text-entry\"; value: string }\n\t\t: I extends { type: \"extended-text\" }\n\t\t\t? { type: \"extended-text\"; values: string[] }\n\t\t\t: I extends { type: \"order\" }\n\t\t\t\t? { type: \"order\"; orderedKeys: string[] }\n\t\t\t\t: I extends { type: \"match\" }\n\t\t\t\t\t? { type: \"match\"; pairs: MatchPair[] }\n\t\t\t\t\t: I extends PciInteraction<infer SupportedPcis extends PciId>\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t[K in SupportedPcis]: {\n\t\t\t\t\t\t\t\t\ttype: \"portable-custom\"\n\t\t\t\t\t\t\t\t\tpciId: K\n\t\t\t\t\t\t\t\t\tvalue: Extract<RendererSubmission, { type: \"portable-custom\"; pciId: K }>[\"value\"]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}[SupportedPcis]\n\t\t\t\t\t\t: never\n\ntype ValidatedRendererSubmission<I extends RendererInteraction = RendererInteraction> =\n\tRendererSubmissionFor<I> & { readonly [validatedSubmissionBrand]: true }\n\ntype SubmissionValidationSuccess<I extends RendererInteraction = RendererInteraction> = {\n\tok: true\n\tvalue: ValidatedRendererSubmission<I>\n}\n\ntype SubmissionValidationFailure = {\n\tok: false\n\tissues: string[]\n}\n\ntype SubmissionValidationResult<I extends RendererInteraction = RendererInteraction> =\n\t| SubmissionValidationSuccess<I>\n\t| SubmissionValidationFailure\n\nfunction invalid(issues: string | string[]): SubmissionValidationFailure {\n\treturn { ok: false, issues: Array.isArray(issues) ? issues : [issues] }\n}\n\nfunction valid<I extends RendererInteraction>(\n\tsubmission: RendererSubmissionFor<I>\n): SubmissionValidationSuccess<I> {\n\treturn {\n\t\tok: true,\n\t\tvalue: submission as ValidatedRendererSubmission<I>\n\t}\n}\n\nfunction duplicates<T>(values: readonly T[], keyOf: (value: T) => string): string[] {\n\tconst seen = new Set<string>()\n\tconst duplicated = new Set<string>()\n\tfor (const value of values) {\n\t\tconst key = keyOf(value)\n\t\tif (seen.has(key)) {\n\t\t\tduplicated.add(key)\n\t\t\tcontinue\n\t\t}\n\t\tseen.add(key)\n\t}\n\treturn [...duplicated]\n}\n\nfunction findUnknownIds(values: readonly string[], choices: RendererChoice[]): string[] {\n\tconst ids = new Set(\n\t\tchoices.map(function getId(choice) {\n\t\t\treturn choice.identifier\n\t\t})\n\t)\n\treturn values.filter(function isUnknown(value) {\n\t\treturn !ids.has(value)\n\t})\n}\n\nfunction countByIdentifier(pairs: MatchPair[], side: \"source\" | \"target\"): Map<string, number> {\n\tconst counts = new Map<string, number>()\n\tfor (const pair of pairs) {\n\t\tconst key = pair[side]\n\t\tcounts.set(key, (counts.get(key) ?? 0) + 1)\n\t}\n\treturn counts\n}\n\nfunction validateUsageBounds(\n\tchoices: RendererMatchChoice[],\n\tcounts: Map<string, number>,\n\tside: \"source\" | \"target\"\n): string[] {\n\tconst issues: string[] = []\n\tfor (const choice of choices) {\n\t\tconst count = counts.get(choice.identifier) ?? 0\n\t\tif (choice.matchMax !== 0 && count > choice.matchMax) {\n\t\t\tissues.push(`${side} '${choice.identifier}' used ${count} times, max ${choice.matchMax}`)\n\t\t}\n\t\tif (count < choice.matchMin) {\n\t\t\tissues.push(`${side} '${choice.identifier}' used ${count} times, min ${choice.matchMin}`)\n\t\t}\n\t}\n\treturn issues\n}\n\nfunction pciSubmissionSchema(pciId: PciId) {\n\tswitch (pciId) {\n\t\tcase \"urn:primer:pci:division-remainder\":\n\t\t\treturn DivisionRemainderSubmissionSchema\n\t\tcase \"urn:primer:pci:fraction-addition\":\n\t\t\treturn FractionAdditionSubmissionSchema\n\t}\n}\n\nfunction validateChoiceSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"choice\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"choice\" }>> {\n\tif (submission.type !== \"choice\") {\n\t\treturn invalid(`submission type '${submission.type}' does not match interaction type 'choice'`)\n\t}\n\tconst issues: string[] = []\n\tif (submission.selectedKeys.length < interaction.minChoices) {\n\t\tissues.push(`need at least ${interaction.minChoices} selections`)\n\t}\n\tif (submission.selectedKeys.length > interaction.maxChoices) {\n\t\tissues.push(`at most ${interaction.maxChoices} selections`)\n\t}\n\tconst duplicateKeys = duplicates(submission.selectedKeys, function keyOf(value) {\n\t\treturn value\n\t})\n\tif (duplicateKeys.length > 0) {\n\t\tissues.push(\"duplicate selections\")\n\t}\n\tconst unknownKeys = findUnknownIds(submission.selectedKeys, interaction.options)\n\tif (unknownKeys.length > 0) {\n\t\tissues.push(`unknown options: ${unknownKeys.join(\", \")}`)\n\t}\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn valid(submission)\n}\n\nfunction validateTextEntrySubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"text-entry\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"text-entry\") {\n\t\treturn invalid(\n\t\t\t`submission type '${submission.type}' does not match interaction type 'text-entry'`\n\t\t)\n\t}\n\treturn valid(submission)\n}\n\nfunction validateExtendedTextSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"extended-text\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"extended-text\") {\n\t\treturn invalid(\n\t\t\t`submission type '${submission.type}' does not match interaction type 'extended-text'`\n\t\t)\n\t}\n\tconst issues: string[] = []\n\tif (interaction.cardinality === \"single\") {\n\t\tif (submission.values.length !== 1) {\n\t\t\tissues.push(\"single-cardinality extended-text requires exactly one value\")\n\t\t}\n\t} else {\n\t\tif (submission.values.length < interaction.minStrings) {\n\t\t\tissues.push(`need at least ${interaction.minStrings} values`)\n\t\t}\n\t\tif (submission.values.length > interaction.maxStrings) {\n\t\t\tissues.push(`at most ${interaction.maxStrings} values`)\n\t\t}\n\t\tconst duplicateValues = duplicates(submission.values, function keyOf(value) {\n\t\t\treturn value\n\t\t})\n\t\tif (duplicateValues.length > 0) {\n\t\t\tissues.push(\"duplicate values are not allowed for multiple-cardinality extended-text\")\n\t\t}\n\t}\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn valid(submission)\n}\n\nfunction validateOrderSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"order\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"order\") {\n\t\treturn invalid(`submission type '${submission.type}' does not match interaction type 'order'`)\n\t}\n\tconst issues: string[] = []\n\tif (submission.orderedKeys.length < interaction.minChoices) {\n\t\tissues.push(`need at least ${interaction.minChoices} selections`)\n\t}\n\tif (submission.orderedKeys.length > interaction.maxChoices) {\n\t\tissues.push(`at most ${interaction.maxChoices} selections`)\n\t}\n\tconst duplicateKeys = duplicates(submission.orderedKeys, function keyOf(value) {\n\t\treturn value\n\t})\n\tif (duplicateKeys.length > 0) {\n\t\tissues.push(\"duplicate selections\")\n\t}\n\tconst unknownKeys = findUnknownIds(submission.orderedKeys, interaction.choices)\n\tif (unknownKeys.length > 0) {\n\t\tissues.push(`unknown choices: ${unknownKeys.join(\", \")}`)\n\t}\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn valid(submission)\n}\n\nfunction validateMatchSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"match\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"match\") {\n\t\treturn invalid(`submission type '${submission.type}' does not match interaction type 'match'`)\n\t}\n\tconst issues: string[] = []\n\tif (submission.pairs.length < interaction.minAssociations) {\n\t\tissues.push(`need at least ${interaction.minAssociations} associations`)\n\t}\n\tif (submission.pairs.length > interaction.maxAssociations) {\n\t\tissues.push(`at most ${interaction.maxAssociations} associations`)\n\t}\n\tconst duplicatePairs = duplicates(submission.pairs, function keyOf(pair) {\n\t\treturn `${pair.source}->${pair.target}`\n\t})\n\tif (duplicatePairs.length > 0) {\n\t\tissues.push(\"duplicate associations are not allowed\")\n\t}\n\tconst sourceIds = new Set(\n\t\tinteraction.sourceChoices.map(function getId(choice) {\n\t\t\treturn choice.identifier\n\t\t})\n\t)\n\tconst targetIds = new Set(\n\t\tinteraction.targetChoices.map(function getId(choice) {\n\t\t\treturn choice.identifier\n\t\t})\n\t)\n\tfor (const pair of submission.pairs) {\n\t\tif (!sourceIds.has(pair.source)) {\n\t\t\tissues.push(`unknown source '${pair.source}'`)\n\t\t}\n\t\tif (!targetIds.has(pair.target)) {\n\t\t\tissues.push(`unknown target '${pair.target}'`)\n\t\t}\n\t}\n\tconst sourceCounts = countByIdentifier(submission.pairs, \"source\")\n\tconst targetCounts = countByIdentifier(submission.pairs, \"target\")\n\tissues.push(...validateUsageBounds(interaction.sourceChoices, sourceCounts, \"source\"))\n\tissues.push(...validateUsageBounds(interaction.targetChoices, targetCounts, \"target\"))\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn valid(submission)\n}\n\nfunction validatePortableCustomSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"portable-custom\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"portable-custom\") {\n\t\treturn invalid(\n\t\t\t`submission type '${submission.type}' does not match interaction type 'portable-custom'`\n\t\t)\n\t}\n\tif (submission.pciId !== interaction.pciId) {\n\t\treturn invalid(\n\t\t\t`submission PCI '${submission.pciId}' does not match interaction PCI '${interaction.pciId}'`\n\t\t)\n\t}\n\tconst schema = pciSubmissionSchema(interaction.pciId)\n\tconst result = schema.safeParse(submission.value)\n\tif (!result.success) {\n\t\treturn invalid(\n\t\t\tresult.error.issues.map(function toIssue(issue) {\n\t\t\t\treturn issue.message\n\t\t\t})\n\t\t)\n\t}\n\treturn valid(submission)\n}\n\nfunction validateSubmissionForInteraction<I extends RendererInteraction>(\n\tinteraction: I,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<I> {\n\tswitch (interaction.type) {\n\t\tcase \"choice\":\n\t\t\treturn validateChoiceSubmission(interaction, submission) as SubmissionValidationResult<I>\n\t\tcase \"text-entry\":\n\t\t\treturn validateTextEntrySubmission(interaction, submission) as SubmissionValidationResult<I>\n\t\tcase \"extended-text\":\n\t\t\treturn validateExtendedTextSubmission(\n\t\t\t\tinteraction,\n\t\t\t\tsubmission\n\t\t\t) as SubmissionValidationResult<I>\n\t\tcase \"order\":\n\t\t\treturn validateOrderSubmission(interaction, submission) as SubmissionValidationResult<I>\n\t\tcase \"match\":\n\t\t\treturn validateMatchSubmission(interaction, submission) as SubmissionValidationResult<I>\n\t\tcase \"portable-custom\":\n\t\t\treturn validatePortableCustomSubmission(\n\t\t\t\tinteraction,\n\t\t\t\tsubmission\n\t\t\t) as SubmissionValidationResult<I>\n\t}\n}\n\nfunction submissionValidationMessage(result: SubmissionValidationFailure): string {\n\treturn result.issues.join(\"; \")\n}\n\nexport {\n\tChoiceSubmissionSchema,\n\tDivisionRemainderPciSubmissionSchema,\n\tExtendedTextSubmissionSchema,\n\tFractionAdditionPciSubmissionSchema,\n\tMatchPairSchema,\n\tMatchSubmissionSchema,\n\tOrderSubmissionSchema,\n\tRendererSubmissionSchema,\n\tTextEntrySubmissionSchema,\n\tsubmissionValidationMessage,\n\tvalidateSubmissionForInteraction\n}\nexport type {\n\tRendererSubmissionFor,\n\tSubmissionValidationFailure,\n\tSubmissionValidationResult,\n\tSubmissionValidationSuccess,\n\tValidatedRendererSubmission\n}\n",
5
+ "import { z } from \"zod\"\n\nimport type { PciId } from \"@superbuilders/primer-tives/client/pci\"\n\nimport {\n\tDivisionRemainderSubmissionSchema,\n\tFractionAdditionSubmissionSchema\n} from \"@superbuilders/primer-tives/contracts/pci-schemas\"\nimport type {\n\tMatchPair,\n\tPciInteraction,\n\tRendererChoice,\n\tRendererInteraction,\n\tRendererMatchChoice,\n\tRendererSubmission\n} from \"@superbuilders/primer-tives/contracts/types\"\n\nconst MatchPairSchema = z.object({\n\tsource: z.string(),\n\ttarget: z.string()\n})\n\nconst ChoiceSubmissionSchema = z.object({\n\ttype: z.literal(\"choice\"),\n\tselectedKeys: z.array(z.string())\n})\n\nconst TextEntrySubmissionSchema = z.object({\n\ttype: z.literal(\"text-entry\"),\n\tvalue: z.string()\n})\n\nconst ExtendedTextSubmissionSchema = z.object({\n\ttype: z.literal(\"extended-text\"),\n\tvalues: z.array(z.string()).min(1)\n})\n\nconst OrderSubmissionSchema = z.object({\n\ttype: z.literal(\"order\"),\n\torderedKeys: z.array(z.string())\n})\n\nconst MatchSubmissionSchema = z.object({\n\ttype: z.literal(\"match\"),\n\tpairs: z.array(MatchPairSchema)\n})\n\nconst DivisionRemainderPciSubmissionSchema = z.object({\n\ttype: z.literal(\"portable-custom\"),\n\tpciId: z.literal(\"urn:primer:pci:division-remainder\"),\n\tvalue: DivisionRemainderSubmissionSchema\n})\n\nconst FractionAdditionPciSubmissionSchema = z.object({\n\ttype: z.literal(\"portable-custom\"),\n\tpciId: z.literal(\"urn:primer:pci:fraction-addition\"),\n\tvalue: FractionAdditionSubmissionSchema\n})\n\nconst RendererSubmissionSchema = z.union([\n\tChoiceSubmissionSchema,\n\tTextEntrySubmissionSchema,\n\tExtendedTextSubmissionSchema,\n\tOrderSubmissionSchema,\n\tMatchSubmissionSchema,\n\tDivisionRemainderPciSubmissionSchema,\n\tFractionAdditionPciSubmissionSchema\n])\n\ntype RendererSubmissionFor<I extends RendererInteraction = RendererInteraction> = I extends {\n\ttype: \"choice\"\n}\n\t? { type: \"choice\"; selectedKeys: string[] }\n\t: I extends { type: \"text-entry\" }\n\t\t? { type: \"text-entry\"; value: string }\n\t\t: I extends { type: \"extended-text\" }\n\t\t\t? { type: \"extended-text\"; values: string[] }\n\t\t\t: I extends { type: \"order\" }\n\t\t\t\t? { type: \"order\"; orderedKeys: string[] }\n\t\t\t\t: I extends { type: \"match\" }\n\t\t\t\t\t? { type: \"match\"; pairs: MatchPair[] }\n\t\t\t\t\t: I extends PciInteraction<infer SupportedPcis extends PciId>\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t[K in SupportedPcis]: {\n\t\t\t\t\t\t\t\t\ttype: \"portable-custom\"\n\t\t\t\t\t\t\t\t\tpciId: K\n\t\t\t\t\t\t\t\t\tvalue: Extract<RendererSubmission, { type: \"portable-custom\"; pciId: K }>[\"value\"]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}[SupportedPcis]\n\t\t\t\t\t\t: never\n\ntype SubmissionValidationSuccess<I extends RendererInteraction = RendererInteraction> = {\n\tok: true\n\tvalue: RendererSubmissionFor<I>\n}\n\ntype SubmissionValidationFailure = {\n\tok: false\n\tissues: string[]\n}\n\ntype SubmissionValidationResult<I extends RendererInteraction = RendererInteraction> =\n\t| SubmissionValidationSuccess<I>\n\t| SubmissionValidationFailure\n\nfunction invalid(issues: string | string[]): SubmissionValidationFailure {\n\treturn {\n\t\tok: false,\n\t\tissues: Array.isArray(issues) ? issues : [issues]\n\t}\n}\n\nfunction duplicates<T>(values: readonly T[], keyOf: (value: T) => string): string[] {\n\tconst seen = new Set<string>()\n\tconst duplicated = new Set<string>()\n\tfor (const value of values) {\n\t\tconst key = keyOf(value)\n\t\tif (seen.has(key)) {\n\t\t\tduplicated.add(key)\n\t\t\tcontinue\n\t\t}\n\t\tseen.add(key)\n\t}\n\treturn [...duplicated]\n}\n\nfunction findUnknownIds(values: readonly string[], choices: RendererChoice[]): string[] {\n\tconst ids = new Set(\n\t\tchoices.map(function getId(choice) {\n\t\t\treturn choice.identifier\n\t\t})\n\t)\n\treturn values.filter(function isUnknown(value) {\n\t\treturn !ids.has(value)\n\t})\n}\n\nfunction countByIdentifier(pairs: MatchPair[], side: \"source\" | \"target\"): Map<string, number> {\n\tconst counts = new Map<string, number>()\n\tfor (const pair of pairs) {\n\t\tconst key = pair[side]\n\t\tconst currentCount = counts.get(key)\n\t\tif (currentCount === undefined) {\n\t\t\tcounts.set(key, 1)\n\t\t\tcontinue\n\t\t}\n\t\tcounts.set(key, currentCount + 1)\n\t}\n\treturn counts\n}\n\nfunction validateUsageBounds(\n\tchoices: RendererMatchChoice[],\n\tcounts: Map<string, number>,\n\tside: \"source\" | \"target\"\n): string[] {\n\tconst issues: string[] = []\n\tfor (const choice of choices) {\n\t\tconst maybeCount = counts.get(choice.identifier)\n\t\tconst count = maybeCount === undefined ? 0 : maybeCount\n\t\tif (choice.matchMax !== 0 && count > choice.matchMax) {\n\t\t\tissues.push(`${side} '${choice.identifier}' used ${count} times, max ${choice.matchMax}`)\n\t\t}\n\t\tif (count < choice.matchMin) {\n\t\t\tissues.push(`${side} '${choice.identifier}' used ${count} times, min ${choice.matchMin}`)\n\t\t}\n\t}\n\treturn issues\n}\n\nfunction pciSubmissionSchema(pciId: PciId) {\n\tswitch (pciId) {\n\t\tcase \"urn:primer:pci:division-remainder\":\n\t\t\treturn DivisionRemainderSubmissionSchema\n\t\tcase \"urn:primer:pci:fraction-addition\":\n\t\t\treturn FractionAdditionSubmissionSchema\n\t}\n\tconst exhaustiveCheck: never = pciId\n\treturn exhaustiveCheck\n}\n\nfunction validateChoiceSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"choice\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"choice\" }>> {\n\tif (submission.type !== \"choice\") {\n\t\treturn invalid(`submission type '${submission.type}' does not match interaction type 'choice'`)\n\t}\n\tconst issues: string[] = []\n\tif (submission.selectedKeys.length < interaction.minChoices) {\n\t\tissues.push(`need at least ${interaction.minChoices} selections`)\n\t}\n\tif (submission.selectedKeys.length > interaction.maxChoices) {\n\t\tissues.push(`at most ${interaction.maxChoices} selections`)\n\t}\n\tconst duplicateKeys = duplicates(submission.selectedKeys, function keyOf(value) {\n\t\treturn value\n\t})\n\tif (duplicateKeys.length > 0) {\n\t\tissues.push(\"duplicate selections\")\n\t}\n\tconst unknownKeys = findUnknownIds(submission.selectedKeys, interaction.options)\n\tif (unknownKeys.length > 0) {\n\t\tissues.push(`unknown options: ${unknownKeys.join(\", \")}`)\n\t}\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn {\n\t\tok: true,\n\t\tvalue: { ...submission }\n\t}\n}\n\nfunction validateTextEntrySubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"text-entry\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"text-entry\") {\n\t\treturn invalid(\n\t\t\t`submission type '${submission.type}' does not match interaction type 'text-entry'`\n\t\t)\n\t}\n\treturn {\n\t\tok: true,\n\t\tvalue: { ...submission }\n\t}\n}\n\nfunction validateExtendedTextSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"extended-text\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"extended-text\") {\n\t\treturn invalid(\n\t\t\t`submission type '${submission.type}' does not match interaction type 'extended-text'`\n\t\t)\n\t}\n\tconst issues: string[] = []\n\tif (interaction.cardinality === \"single\") {\n\t\tif (submission.values.length !== 1) {\n\t\t\tissues.push(\"single-cardinality extended-text requires exactly one value\")\n\t\t}\n\t} else {\n\t\tif (submission.values.length < interaction.minStrings) {\n\t\t\tissues.push(`need at least ${interaction.minStrings} values`)\n\t\t}\n\t\tif (submission.values.length > interaction.maxStrings) {\n\t\t\tissues.push(`at most ${interaction.maxStrings} values`)\n\t\t}\n\t\tconst duplicateValues = duplicates(submission.values, function keyOf(value) {\n\t\t\treturn value\n\t\t})\n\t\tif (duplicateValues.length > 0) {\n\t\t\tissues.push(\"duplicate values are not allowed for multiple-cardinality extended-text\")\n\t\t}\n\t}\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn {\n\t\tok: true,\n\t\tvalue: { ...submission }\n\t}\n}\n\nfunction validateOrderSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"order\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"order\") {\n\t\treturn invalid(`submission type '${submission.type}' does not match interaction type 'order'`)\n\t}\n\tconst issues: string[] = []\n\tif (submission.orderedKeys.length < interaction.minChoices) {\n\t\tissues.push(`need at least ${interaction.minChoices} selections`)\n\t}\n\tif (submission.orderedKeys.length > interaction.maxChoices) {\n\t\tissues.push(`at most ${interaction.maxChoices} selections`)\n\t}\n\tconst duplicateKeys = duplicates(submission.orderedKeys, function keyOf(value) {\n\t\treturn value\n\t})\n\tif (duplicateKeys.length > 0) {\n\t\tissues.push(\"duplicate selections\")\n\t}\n\tconst unknownKeys = findUnknownIds(submission.orderedKeys, interaction.choices)\n\tif (unknownKeys.length > 0) {\n\t\tissues.push(`unknown choices: ${unknownKeys.join(\", \")}`)\n\t}\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn {\n\t\tok: true,\n\t\tvalue: { ...submission }\n\t}\n}\n\nfunction validateMatchSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"match\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"match\") {\n\t\treturn invalid(`submission type '${submission.type}' does not match interaction type 'match'`)\n\t}\n\tconst issues: string[] = []\n\tif (submission.pairs.length < interaction.minAssociations) {\n\t\tissues.push(`need at least ${interaction.minAssociations} associations`)\n\t}\n\tif (submission.pairs.length > interaction.maxAssociations) {\n\t\tissues.push(`at most ${interaction.maxAssociations} associations`)\n\t}\n\tconst duplicatePairs = duplicates(submission.pairs, function keyOf(pair) {\n\t\treturn `${pair.source}->${pair.target}`\n\t})\n\tif (duplicatePairs.length > 0) {\n\t\tissues.push(\"duplicate associations are not allowed\")\n\t}\n\tconst sourceIds = new Set(\n\t\tinteraction.sourceChoices.map(function getId(choice) {\n\t\t\treturn choice.identifier\n\t\t})\n\t)\n\tconst targetIds = new Set(\n\t\tinteraction.targetChoices.map(function getId(choice) {\n\t\t\treturn choice.identifier\n\t\t})\n\t)\n\tfor (const pair of submission.pairs) {\n\t\tif (!sourceIds.has(pair.source)) {\n\t\t\tissues.push(`unknown source '${pair.source}'`)\n\t\t}\n\t\tif (!targetIds.has(pair.target)) {\n\t\t\tissues.push(`unknown target '${pair.target}'`)\n\t\t}\n\t}\n\tconst sourceCounts = countByIdentifier(submission.pairs, \"source\")\n\tconst targetCounts = countByIdentifier(submission.pairs, \"target\")\n\tissues.push(...validateUsageBounds(interaction.sourceChoices, sourceCounts, \"source\"))\n\tissues.push(...validateUsageBounds(interaction.targetChoices, targetCounts, \"target\"))\n\tif (issues.length > 0) {\n\t\treturn invalid(issues)\n\t}\n\treturn {\n\t\tok: true,\n\t\tvalue: { ...submission }\n\t}\n}\n\nfunction validatePortableCustomSubmission(\n\tinteraction: Extract<RendererInteraction, { type: \"portable-custom\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<typeof interaction> {\n\tif (submission.type !== \"portable-custom\") {\n\t\treturn invalid(\n\t\t\t`submission type '${submission.type}' does not match interaction type 'portable-custom'`\n\t\t)\n\t}\n\tif (submission.pciId !== interaction.pciId) {\n\t\treturn invalid(\n\t\t\t`submission PCI '${submission.pciId}' does not match interaction PCI '${interaction.pciId}'`\n\t\t)\n\t}\n\tconst schema = pciSubmissionSchema(interaction.pciId)\n\tconst result = schema.safeParse(submission.value)\n\tif (!result.success) {\n\t\treturn invalid(\n\t\t\tresult.error.issues.map(function toIssue(issue) {\n\t\t\t\treturn issue.message\n\t\t\t})\n\t\t)\n\t}\n\treturn {\n\t\tok: true,\n\t\tvalue: { ...submission }\n\t}\n}\n\nfunction validateSubmissionForInteraction(\n\tinteraction: Extract<RendererInteraction, { type: \"choice\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"choice\" }>>\nfunction validateSubmissionForInteraction(\n\tinteraction: Extract<RendererInteraction, { type: \"text-entry\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"text-entry\" }>>\nfunction validateSubmissionForInteraction(\n\tinteraction: Extract<RendererInteraction, { type: \"extended-text\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"extended-text\" }>>\nfunction validateSubmissionForInteraction(\n\tinteraction: Extract<RendererInteraction, { type: \"order\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"order\" }>>\nfunction validateSubmissionForInteraction(\n\tinteraction: Extract<RendererInteraction, { type: \"match\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"match\" }>>\nfunction validateSubmissionForInteraction(\n\tinteraction: Extract<RendererInteraction, { type: \"portable-custom\" }>,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<Extract<RendererInteraction, { type: \"portable-custom\" }>>\nfunction validateSubmissionForInteraction<I extends RendererInteraction>(\n\tinteraction: I,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult<I>\nfunction validateSubmissionForInteraction(\n\tinteraction: RendererInteraction,\n\tsubmission: RendererSubmission\n): SubmissionValidationResult {\n\tswitch (interaction.type) {\n\t\tcase \"choice\":\n\t\t\treturn validateChoiceSubmission(interaction, submission)\n\t\tcase \"text-entry\":\n\t\t\treturn validateTextEntrySubmission(interaction, submission)\n\t\tcase \"extended-text\":\n\t\t\treturn validateExtendedTextSubmission(interaction, submission)\n\t\tcase \"order\":\n\t\t\treturn validateOrderSubmission(interaction, submission)\n\t\tcase \"match\":\n\t\t\treturn validateMatchSubmission(interaction, submission)\n\t\tcase \"portable-custom\":\n\t\t\treturn validatePortableCustomSubmission(interaction, submission)\n\t}\n}\n\nfunction submissionValidationMessage(result: SubmissionValidationFailure): string {\n\treturn result.issues.join(\"; \")\n}\n\nexport {\n\tChoiceSubmissionSchema,\n\tDivisionRemainderPciSubmissionSchema,\n\tExtendedTextSubmissionSchema,\n\tFractionAdditionPciSubmissionSchema,\n\tMatchPairSchema,\n\tMatchSubmissionSchema,\n\tOrderSubmissionSchema,\n\tRendererSubmissionSchema,\n\tTextEntrySubmissionSchema,\n\tsubmissionValidationMessage,\n\tvalidateSubmissionForInteraction\n}\nexport type {\n\tRendererSubmissionFor,\n\tSubmissionValidationFailure,\n\tSubmissionValidationResult,\n\tSubmissionValidationSuccess\n}\n",
6
6
  "import { z } from \"zod\"\n\nconst DivisionRemainderPropsSchema = z.object({\n\tdividend: z.number(),\n\tdivisor: z.number()\n})\n\nconst DivisionRemainderSubmissionSchema = z.object({\n\tquotient: z.string(),\n\tremainder: z.string()\n})\n\nconst FractionOperandSchema = z.object({\n\tnumerator: z.number(),\n\tdenominator: z.number()\n})\n\nconst FractionAdditionPropsSchema = z.object({\n\tleft: FractionOperandSchema,\n\tright: FractionOperandSchema\n})\n\nconst FractionAdditionSubmissionSchema = z.object({\n\tnumerator: z.string(),\n\tdenominator: z.string()\n})\n\nexport {\n\tDivisionRemainderPropsSchema,\n\tDivisionRemainderSubmissionSchema,\n\tFractionAdditionPropsSchema,\n\tFractionAdditionSubmissionSchema\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "0930645C3AABD28F64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "C9252672E8B51E1C64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import type { MatchPair, PciInteraction, RendererInteraction, RendererSubmission } from "./types";
3
2
  import type { PciId } from "../client/pci";
3
+ import type { MatchPair, PciInteraction, RendererInteraction, RendererSubmission } from "./types";
4
4
  declare const MatchPairSchema: z.ZodObject<{
5
5
  source: z.ZodString;
6
6
  target: z.ZodString;
@@ -77,7 +77,6 @@ declare const RendererSubmissionSchema: z.ZodUnion<readonly [z.ZodObject<{
77
77
  denominator: z.ZodString;
78
78
  }, z.core.$strip>;
79
79
  }, z.core.$strip>]>;
80
- declare const validatedSubmissionBrand: unique symbol;
81
80
  type RendererSubmissionFor<I extends RendererInteraction = RendererInteraction> = I extends {
82
81
  type: "choice";
83
82
  } ? {
@@ -113,20 +112,47 @@ type RendererSubmissionFor<I extends RendererInteraction = RendererInteraction>
113
112
  }>["value"];
114
113
  };
115
114
  }[SupportedPcis] : never;
116
- type ValidatedRendererSubmission<I extends RendererInteraction = RendererInteraction> = RendererSubmissionFor<I> & {
117
- readonly [validatedSubmissionBrand]: true;
118
- };
119
115
  type SubmissionValidationSuccess<I extends RendererInteraction = RendererInteraction> = {
120
116
  ok: true;
121
- value: ValidatedRendererSubmission<I>;
117
+ value: RendererSubmissionFor<I>;
122
118
  };
123
119
  type SubmissionValidationFailure = {
124
120
  ok: false;
125
121
  issues: string[];
126
122
  };
127
123
  type SubmissionValidationResult<I extends RendererInteraction = RendererInteraction> = SubmissionValidationSuccess<I> | SubmissionValidationFailure;
124
+ declare function validateSubmissionForInteraction(interaction: Extract<RendererInteraction, {
125
+ type: "choice";
126
+ }>, submission: RendererSubmission): SubmissionValidationResult<Extract<RendererInteraction, {
127
+ type: "choice";
128
+ }>>;
129
+ declare function validateSubmissionForInteraction(interaction: Extract<RendererInteraction, {
130
+ type: "text-entry";
131
+ }>, submission: RendererSubmission): SubmissionValidationResult<Extract<RendererInteraction, {
132
+ type: "text-entry";
133
+ }>>;
134
+ declare function validateSubmissionForInteraction(interaction: Extract<RendererInteraction, {
135
+ type: "extended-text";
136
+ }>, submission: RendererSubmission): SubmissionValidationResult<Extract<RendererInteraction, {
137
+ type: "extended-text";
138
+ }>>;
139
+ declare function validateSubmissionForInteraction(interaction: Extract<RendererInteraction, {
140
+ type: "order";
141
+ }>, submission: RendererSubmission): SubmissionValidationResult<Extract<RendererInteraction, {
142
+ type: "order";
143
+ }>>;
144
+ declare function validateSubmissionForInteraction(interaction: Extract<RendererInteraction, {
145
+ type: "match";
146
+ }>, submission: RendererSubmission): SubmissionValidationResult<Extract<RendererInteraction, {
147
+ type: "match";
148
+ }>>;
149
+ declare function validateSubmissionForInteraction(interaction: Extract<RendererInteraction, {
150
+ type: "portable-custom";
151
+ }>, submission: RendererSubmission): SubmissionValidationResult<Extract<RendererInteraction, {
152
+ type: "portable-custom";
153
+ }>>;
128
154
  declare function validateSubmissionForInteraction<I extends RendererInteraction>(interaction: I, submission: RendererSubmission): SubmissionValidationResult<I>;
129
155
  declare function submissionValidationMessage(result: SubmissionValidationFailure): string;
130
156
  export { ChoiceSubmissionSchema, DivisionRemainderPciSubmissionSchema, ExtendedTextSubmissionSchema, FractionAdditionPciSubmissionSchema, MatchPairSchema, MatchSubmissionSchema, OrderSubmissionSchema, RendererSubmissionSchema, TextEntrySubmissionSchema, submissionValidationMessage, validateSubmissionForInteraction };
131
- export type { RendererSubmissionFor, SubmissionValidationFailure, SubmissionValidationResult, SubmissionValidationSuccess, ValidatedRendererSubmission };
157
+ export type { RendererSubmissionFor, SubmissionValidationFailure, SubmissionValidationResult, SubmissionValidationSuccess };
132
158
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/contracts/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/contracts/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./contracts";
2
+ export * from "./errors";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA"}