@superbuilders/primer-tives 0.9.0 → 1.1.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/README.md +298 -63
- package/dist/client/choice-state.d.ts.map +1 -1
- package/dist/client/extended-text-state.d.ts.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +338 -179
- package/dist/client/index.js.map +13 -11
- package/dist/client/match-state.d.ts.map +1 -1
- package/dist/client/order-state.d.ts.map +1 -1
- package/dist/client/session.d.ts.map +1 -1
- package/dist/client/text-entry-state.d.ts.map +1 -1
- package/dist/client/transport.d.ts +1 -1
- package/dist/client/transport.d.ts.map +1 -1
- package/dist/client/types.d.ts +2 -115
- package/dist/client/types.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +4 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +305 -0
- package/dist/contracts/index.js.map +11 -0
- package/dist/contracts/pci-schemas.d.ts +25 -0
- package/dist/contracts/pci-schemas.d.ts.map +1 -0
- package/dist/contracts/types.d.ts +118 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/validation.d.ts +132 -0
- package/dist/contracts/validation.d.ts.map +1 -0
- package/dist/errors.d.ts +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +48 -0
- package/dist/errors.js.map +10 -0
- package/dist/server/create-server.d.ts +21 -19
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/exchange.d.ts +10 -5
- package/dist/server/exchange.d.ts.map +1 -1
- package/dist/server/hints.d.ts +25 -0
- package/dist/server/hints.d.ts.map +1 -0
- package/dist/server/index.d.ts +4 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +355 -83
- package/dist/server/index.js.map +9 -8
- package/dist/server/students.d.ts +3 -5
- package/dist/server/students.d.ts.map +1 -1
- package/package.json +17 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { BodyStimulus, ImageStimulus, MatchPair, PciInteraction, PciSubmission, RendererChoice, RendererInteraction, RendererMatchChoice, RendererStimulus, RendererSubmission, StandardRendererInteraction } from "./types";
|
|
2
|
+
export { ChoiceSubmissionSchema, DivisionRemainderPciSubmissionSchema, ExtendedTextSubmissionSchema, FractionAdditionPciSubmissionSchema, MatchPairSchema, MatchSubmissionSchema, OrderSubmissionSchema, RendererSubmissionSchema, TextEntrySubmissionSchema, submissionValidationMessage, validateSubmissionForInteraction } from "./validation";
|
|
3
|
+
export type { RendererSubmissionFor, SubmissionValidationFailure, SubmissionValidationResult, SubmissionValidationSuccess, ValidatedRendererSubmission } from "./validation";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EACN,sBAAsB,EACtB,oCAAoC,EACpC,4BAA4B,EAC5B,mCAAmC,EACnC,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,gCAAgC,EAChC,MAAM,kDAAkD,CAAA;AAEzD,YAAY,EACX,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,MAAM,kDAAkD,CAAA"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
// src/contracts/validation.ts
|
|
2
|
+
import { z as z2 } from "zod";
|
|
3
|
+
|
|
4
|
+
// src/contracts/pci-schemas.ts
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
var DivisionRemainderPropsSchema = z.object({
|
|
7
|
+
dividend: z.number(),
|
|
8
|
+
divisor: z.number()
|
|
9
|
+
});
|
|
10
|
+
var DivisionRemainderSubmissionSchema = z.object({
|
|
11
|
+
quotient: z.string(),
|
|
12
|
+
remainder: z.string()
|
|
13
|
+
});
|
|
14
|
+
var FractionOperandSchema = z.object({
|
|
15
|
+
numerator: z.number(),
|
|
16
|
+
denominator: z.number()
|
|
17
|
+
});
|
|
18
|
+
var FractionAdditionPropsSchema = z.object({
|
|
19
|
+
left: FractionOperandSchema,
|
|
20
|
+
right: FractionOperandSchema
|
|
21
|
+
});
|
|
22
|
+
var FractionAdditionSubmissionSchema = z.object({
|
|
23
|
+
numerator: z.string(),
|
|
24
|
+
denominator: z.string()
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// src/contracts/validation.ts
|
|
28
|
+
var MatchPairSchema = z2.object({
|
|
29
|
+
source: z2.string(),
|
|
30
|
+
target: z2.string()
|
|
31
|
+
});
|
|
32
|
+
var ChoiceSubmissionSchema = z2.object({
|
|
33
|
+
type: z2.literal("choice"),
|
|
34
|
+
selectedKeys: z2.array(z2.string())
|
|
35
|
+
});
|
|
36
|
+
var TextEntrySubmissionSchema = z2.object({
|
|
37
|
+
type: z2.literal("text-entry"),
|
|
38
|
+
value: z2.string()
|
|
39
|
+
});
|
|
40
|
+
var ExtendedTextSubmissionSchema = z2.object({
|
|
41
|
+
type: z2.literal("extended-text"),
|
|
42
|
+
values: z2.array(z2.string()).min(1)
|
|
43
|
+
});
|
|
44
|
+
var OrderSubmissionSchema = z2.object({
|
|
45
|
+
type: z2.literal("order"),
|
|
46
|
+
orderedKeys: z2.array(z2.string())
|
|
47
|
+
});
|
|
48
|
+
var MatchSubmissionSchema = z2.object({
|
|
49
|
+
type: z2.literal("match"),
|
|
50
|
+
pairs: z2.array(MatchPairSchema)
|
|
51
|
+
});
|
|
52
|
+
var DivisionRemainderPciSubmissionSchema = z2.object({
|
|
53
|
+
type: z2.literal("portable-custom"),
|
|
54
|
+
pciId: z2.literal("urn:primer:pci:division-remainder"),
|
|
55
|
+
value: DivisionRemainderSubmissionSchema
|
|
56
|
+
});
|
|
57
|
+
var FractionAdditionPciSubmissionSchema = z2.object({
|
|
58
|
+
type: z2.literal("portable-custom"),
|
|
59
|
+
pciId: z2.literal("urn:primer:pci:fraction-addition"),
|
|
60
|
+
value: FractionAdditionSubmissionSchema
|
|
61
|
+
});
|
|
62
|
+
var RendererSubmissionSchema = z2.union([
|
|
63
|
+
ChoiceSubmissionSchema,
|
|
64
|
+
TextEntrySubmissionSchema,
|
|
65
|
+
ExtendedTextSubmissionSchema,
|
|
66
|
+
OrderSubmissionSchema,
|
|
67
|
+
MatchSubmissionSchema,
|
|
68
|
+
DivisionRemainderPciSubmissionSchema,
|
|
69
|
+
FractionAdditionPciSubmissionSchema
|
|
70
|
+
]);
|
|
71
|
+
function invalid(issues) {
|
|
72
|
+
return { ok: false, issues: Array.isArray(issues) ? issues : [issues] };
|
|
73
|
+
}
|
|
74
|
+
function valid(submission) {
|
|
75
|
+
return {
|
|
76
|
+
ok: true,
|
|
77
|
+
value: submission
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function duplicates(values, keyOf) {
|
|
81
|
+
const seen = new Set;
|
|
82
|
+
const duplicated = new Set;
|
|
83
|
+
for (const value of values) {
|
|
84
|
+
const key = keyOf(value);
|
|
85
|
+
if (seen.has(key)) {
|
|
86
|
+
duplicated.add(key);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
seen.add(key);
|
|
90
|
+
}
|
|
91
|
+
return [...duplicated];
|
|
92
|
+
}
|
|
93
|
+
function findUnknownIds(values, choices) {
|
|
94
|
+
const ids = new Set(choices.map(function getId(choice) {
|
|
95
|
+
return choice.identifier;
|
|
96
|
+
}));
|
|
97
|
+
return values.filter(function isUnknown(value) {
|
|
98
|
+
return !ids.has(value);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function countByIdentifier(pairs, side) {
|
|
102
|
+
const counts = new Map;
|
|
103
|
+
for (const pair of pairs) {
|
|
104
|
+
const key = pair[side];
|
|
105
|
+
counts.set(key, (counts.get(key) ?? 0) + 1);
|
|
106
|
+
}
|
|
107
|
+
return counts;
|
|
108
|
+
}
|
|
109
|
+
function validateUsageBounds(choices, counts, side) {
|
|
110
|
+
const issues = [];
|
|
111
|
+
for (const choice of choices) {
|
|
112
|
+
const count = counts.get(choice.identifier) ?? 0;
|
|
113
|
+
if (choice.matchMax !== 0 && count > choice.matchMax) {
|
|
114
|
+
issues.push(`${side} '${choice.identifier}' used ${count} times, max ${choice.matchMax}`);
|
|
115
|
+
}
|
|
116
|
+
if (count < choice.matchMin) {
|
|
117
|
+
issues.push(`${side} '${choice.identifier}' used ${count} times, min ${choice.matchMin}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return issues;
|
|
121
|
+
}
|
|
122
|
+
function pciSubmissionSchema(pciId) {
|
|
123
|
+
switch (pciId) {
|
|
124
|
+
case "urn:primer:pci:division-remainder":
|
|
125
|
+
return DivisionRemainderSubmissionSchema;
|
|
126
|
+
case "urn:primer:pci:fraction-addition":
|
|
127
|
+
return FractionAdditionSubmissionSchema;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function validateChoiceSubmission(interaction, submission) {
|
|
131
|
+
if (submission.type !== "choice") {
|
|
132
|
+
return invalid(`submission type '${submission.type}' does not match interaction type 'choice'`);
|
|
133
|
+
}
|
|
134
|
+
const issues = [];
|
|
135
|
+
if (submission.selectedKeys.length < interaction.minChoices) {
|
|
136
|
+
issues.push(`need at least ${interaction.minChoices} selections`);
|
|
137
|
+
}
|
|
138
|
+
if (submission.selectedKeys.length > interaction.maxChoices) {
|
|
139
|
+
issues.push(`at most ${interaction.maxChoices} selections`);
|
|
140
|
+
}
|
|
141
|
+
const duplicateKeys = duplicates(submission.selectedKeys, function keyOf(value) {
|
|
142
|
+
return value;
|
|
143
|
+
});
|
|
144
|
+
if (duplicateKeys.length > 0) {
|
|
145
|
+
issues.push("duplicate selections");
|
|
146
|
+
}
|
|
147
|
+
const unknownKeys = findUnknownIds(submission.selectedKeys, interaction.options);
|
|
148
|
+
if (unknownKeys.length > 0) {
|
|
149
|
+
issues.push(`unknown options: ${unknownKeys.join(", ")}`);
|
|
150
|
+
}
|
|
151
|
+
if (issues.length > 0) {
|
|
152
|
+
return invalid(issues);
|
|
153
|
+
}
|
|
154
|
+
return valid(submission);
|
|
155
|
+
}
|
|
156
|
+
function validateTextEntrySubmission(interaction, submission) {
|
|
157
|
+
if (submission.type !== "text-entry") {
|
|
158
|
+
return invalid(`submission type '${submission.type}' does not match interaction type 'text-entry'`);
|
|
159
|
+
}
|
|
160
|
+
return valid(submission);
|
|
161
|
+
}
|
|
162
|
+
function validateExtendedTextSubmission(interaction, submission) {
|
|
163
|
+
if (submission.type !== "extended-text") {
|
|
164
|
+
return invalid(`submission type '${submission.type}' does not match interaction type 'extended-text'`);
|
|
165
|
+
}
|
|
166
|
+
const issues = [];
|
|
167
|
+
if (interaction.cardinality === "single") {
|
|
168
|
+
if (submission.values.length !== 1) {
|
|
169
|
+
issues.push("single-cardinality extended-text requires exactly one value");
|
|
170
|
+
}
|
|
171
|
+
} else {
|
|
172
|
+
if (submission.values.length < interaction.minStrings) {
|
|
173
|
+
issues.push(`need at least ${interaction.minStrings} values`);
|
|
174
|
+
}
|
|
175
|
+
if (submission.values.length > interaction.maxStrings) {
|
|
176
|
+
issues.push(`at most ${interaction.maxStrings} values`);
|
|
177
|
+
}
|
|
178
|
+
const duplicateValues = duplicates(submission.values, function keyOf(value) {
|
|
179
|
+
return value;
|
|
180
|
+
});
|
|
181
|
+
if (duplicateValues.length > 0) {
|
|
182
|
+
issues.push("duplicate values are not allowed for multiple-cardinality extended-text");
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (issues.length > 0) {
|
|
186
|
+
return invalid(issues);
|
|
187
|
+
}
|
|
188
|
+
return valid(submission);
|
|
189
|
+
}
|
|
190
|
+
function validateOrderSubmission(interaction, submission) {
|
|
191
|
+
if (submission.type !== "order") {
|
|
192
|
+
return invalid(`submission type '${submission.type}' does not match interaction type 'order'`);
|
|
193
|
+
}
|
|
194
|
+
const issues = [];
|
|
195
|
+
if (submission.orderedKeys.length < interaction.minChoices) {
|
|
196
|
+
issues.push(`need at least ${interaction.minChoices} selections`);
|
|
197
|
+
}
|
|
198
|
+
if (submission.orderedKeys.length > interaction.maxChoices) {
|
|
199
|
+
issues.push(`at most ${interaction.maxChoices} selections`);
|
|
200
|
+
}
|
|
201
|
+
const duplicateKeys = duplicates(submission.orderedKeys, function keyOf(value) {
|
|
202
|
+
return value;
|
|
203
|
+
});
|
|
204
|
+
if (duplicateKeys.length > 0) {
|
|
205
|
+
issues.push("duplicate selections");
|
|
206
|
+
}
|
|
207
|
+
const unknownKeys = findUnknownIds(submission.orderedKeys, interaction.choices);
|
|
208
|
+
if (unknownKeys.length > 0) {
|
|
209
|
+
issues.push(`unknown choices: ${unknownKeys.join(", ")}`);
|
|
210
|
+
}
|
|
211
|
+
if (issues.length > 0) {
|
|
212
|
+
return invalid(issues);
|
|
213
|
+
}
|
|
214
|
+
return valid(submission);
|
|
215
|
+
}
|
|
216
|
+
function validateMatchSubmission(interaction, submission) {
|
|
217
|
+
if (submission.type !== "match") {
|
|
218
|
+
return invalid(`submission type '${submission.type}' does not match interaction type 'match'`);
|
|
219
|
+
}
|
|
220
|
+
const issues = [];
|
|
221
|
+
if (submission.pairs.length < interaction.minAssociations) {
|
|
222
|
+
issues.push(`need at least ${interaction.minAssociations} associations`);
|
|
223
|
+
}
|
|
224
|
+
if (submission.pairs.length > interaction.maxAssociations) {
|
|
225
|
+
issues.push(`at most ${interaction.maxAssociations} associations`);
|
|
226
|
+
}
|
|
227
|
+
const duplicatePairs = duplicates(submission.pairs, function keyOf(pair) {
|
|
228
|
+
return `${pair.source}->${pair.target}`;
|
|
229
|
+
});
|
|
230
|
+
if (duplicatePairs.length > 0) {
|
|
231
|
+
issues.push("duplicate associations are not allowed");
|
|
232
|
+
}
|
|
233
|
+
const sourceIds = new Set(interaction.sourceChoices.map(function getId(choice) {
|
|
234
|
+
return choice.identifier;
|
|
235
|
+
}));
|
|
236
|
+
const targetIds = new Set(interaction.targetChoices.map(function getId(choice) {
|
|
237
|
+
return choice.identifier;
|
|
238
|
+
}));
|
|
239
|
+
for (const pair of submission.pairs) {
|
|
240
|
+
if (!sourceIds.has(pair.source)) {
|
|
241
|
+
issues.push(`unknown source '${pair.source}'`);
|
|
242
|
+
}
|
|
243
|
+
if (!targetIds.has(pair.target)) {
|
|
244
|
+
issues.push(`unknown target '${pair.target}'`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const sourceCounts = countByIdentifier(submission.pairs, "source");
|
|
248
|
+
const targetCounts = countByIdentifier(submission.pairs, "target");
|
|
249
|
+
issues.push(...validateUsageBounds(interaction.sourceChoices, sourceCounts, "source"));
|
|
250
|
+
issues.push(...validateUsageBounds(interaction.targetChoices, targetCounts, "target"));
|
|
251
|
+
if (issues.length > 0) {
|
|
252
|
+
return invalid(issues);
|
|
253
|
+
}
|
|
254
|
+
return valid(submission);
|
|
255
|
+
}
|
|
256
|
+
function validatePortableCustomSubmission(interaction, submission) {
|
|
257
|
+
if (submission.type !== "portable-custom") {
|
|
258
|
+
return invalid(`submission type '${submission.type}' does not match interaction type 'portable-custom'`);
|
|
259
|
+
}
|
|
260
|
+
if (submission.pciId !== interaction.pciId) {
|
|
261
|
+
return invalid(`submission PCI '${submission.pciId}' does not match interaction PCI '${interaction.pciId}'`);
|
|
262
|
+
}
|
|
263
|
+
const schema = pciSubmissionSchema(interaction.pciId);
|
|
264
|
+
const result = schema.safeParse(submission.value);
|
|
265
|
+
if (!result.success) {
|
|
266
|
+
return invalid(result.error.issues.map(function toIssue(issue) {
|
|
267
|
+
return issue.message;
|
|
268
|
+
}));
|
|
269
|
+
}
|
|
270
|
+
return valid(submission);
|
|
271
|
+
}
|
|
272
|
+
function validateSubmissionForInteraction(interaction, submission) {
|
|
273
|
+
switch (interaction.type) {
|
|
274
|
+
case "choice":
|
|
275
|
+
return validateChoiceSubmission(interaction, submission);
|
|
276
|
+
case "text-entry":
|
|
277
|
+
return validateTextEntrySubmission(interaction, submission);
|
|
278
|
+
case "extended-text":
|
|
279
|
+
return validateExtendedTextSubmission(interaction, submission);
|
|
280
|
+
case "order":
|
|
281
|
+
return validateOrderSubmission(interaction, submission);
|
|
282
|
+
case "match":
|
|
283
|
+
return validateMatchSubmission(interaction, submission);
|
|
284
|
+
case "portable-custom":
|
|
285
|
+
return validatePortableCustomSubmission(interaction, submission);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function submissionValidationMessage(result) {
|
|
289
|
+
return result.issues.join("; ");
|
|
290
|
+
}
|
|
291
|
+
export {
|
|
292
|
+
validateSubmissionForInteraction,
|
|
293
|
+
submissionValidationMessage,
|
|
294
|
+
TextEntrySubmissionSchema,
|
|
295
|
+
RendererSubmissionSchema,
|
|
296
|
+
OrderSubmissionSchema,
|
|
297
|
+
MatchSubmissionSchema,
|
|
298
|
+
MatchPairSchema,
|
|
299
|
+
FractionAdditionPciSubmissionSchema,
|
|
300
|
+
ExtendedTextSubmissionSchema,
|
|
301
|
+
DivisionRemainderPciSubmissionSchema,
|
|
302
|
+
ChoiceSubmissionSchema
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
//# debugId=0930645C3AABD28F64756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/contracts/validation.ts", "../src/contracts/pci-schemas.ts"],
|
|
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",
|
|
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
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "0930645C3AABD28F64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const DivisionRemainderPropsSchema: z.ZodObject<{
|
|
3
|
+
dividend: z.ZodNumber;
|
|
4
|
+
divisor: z.ZodNumber;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
declare const DivisionRemainderSubmissionSchema: z.ZodObject<{
|
|
7
|
+
quotient: z.ZodString;
|
|
8
|
+
remainder: z.ZodString;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
declare const FractionAdditionPropsSchema: z.ZodObject<{
|
|
11
|
+
left: z.ZodObject<{
|
|
12
|
+
numerator: z.ZodNumber;
|
|
13
|
+
denominator: z.ZodNumber;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
right: z.ZodObject<{
|
|
16
|
+
numerator: z.ZodNumber;
|
|
17
|
+
denominator: z.ZodNumber;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
declare const FractionAdditionSubmissionSchema: z.ZodObject<{
|
|
21
|
+
numerator: z.ZodString;
|
|
22
|
+
denominator: z.ZodString;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export { DivisionRemainderPropsSchema, DivisionRemainderSubmissionSchema, FractionAdditionPropsSchema, FractionAdditionSubmissionSchema };
|
|
25
|
+
//# sourceMappingURL=pci-schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pci-schemas.d.ts","sourceRoot":"","sources":["../../src/contracts/pci-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,QAAA,MAAM,4BAA4B;;;iBAGhC,CAAA;AAEF,QAAA,MAAM,iCAAiC;;;iBAGrC,CAAA;AAOF,QAAA,MAAM,2BAA2B;;;;;;;;;iBAG/B,CAAA;AAEF,QAAA,MAAM,gCAAgC;;;iBAGpC,CAAA;AAEF,OAAO,EACN,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EAChC,CAAA"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { ContentBlock, ContentInline } from "../client/content";
|
|
2
|
+
import type { PciId, PciProps, PciValue } from "../client/pci";
|
|
3
|
+
interface MatchPair {
|
|
4
|
+
source: string;
|
|
5
|
+
target: string;
|
|
6
|
+
}
|
|
7
|
+
interface BodyStimulus {
|
|
8
|
+
type: "body";
|
|
9
|
+
body: ContentBlock[];
|
|
10
|
+
}
|
|
11
|
+
interface ImageStimulus {
|
|
12
|
+
type: "image";
|
|
13
|
+
description: ContentInline[];
|
|
14
|
+
src: string;
|
|
15
|
+
}
|
|
16
|
+
type RendererStimulus = BodyStimulus | ImageStimulus;
|
|
17
|
+
interface RendererChoice {
|
|
18
|
+
identifier: string;
|
|
19
|
+
content: ContentInline[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A choice in a match interaction — QTI 3.0 simpleAssociableChoice.
|
|
23
|
+
*
|
|
24
|
+
* matchMax: maximum number of pairs this choice may participate in.
|
|
25
|
+
* 0 = unbounded (QTI convention).
|
|
26
|
+
* matchMin: minimum number of pairs this choice must participate in.
|
|
27
|
+
* 0 = no minimum (QTI default).
|
|
28
|
+
*/
|
|
29
|
+
interface RendererMatchChoice {
|
|
30
|
+
identifier: string;
|
|
31
|
+
content: ContentInline[];
|
|
32
|
+
matchMax: number;
|
|
33
|
+
matchMin: number;
|
|
34
|
+
}
|
|
35
|
+
type PciInteraction<Pcis extends PciId = PciId> = {
|
|
36
|
+
[K in Pcis]: {
|
|
37
|
+
type: "portable-custom";
|
|
38
|
+
prompt: ContentInline[];
|
|
39
|
+
pciId: K;
|
|
40
|
+
properties: PciProps<K>;
|
|
41
|
+
};
|
|
42
|
+
}[Pcis];
|
|
43
|
+
type StandardRendererInteraction = {
|
|
44
|
+
type: "choice";
|
|
45
|
+
prompt: ContentInline[];
|
|
46
|
+
options: RendererChoice[];
|
|
47
|
+
shuffle: boolean;
|
|
48
|
+
maxChoices: number;
|
|
49
|
+
minChoices: number;
|
|
50
|
+
} | {
|
|
51
|
+
type: "text-entry";
|
|
52
|
+
prompt: ContentInline[];
|
|
53
|
+
base: 10;
|
|
54
|
+
expectedLength?: number;
|
|
55
|
+
patternMask?: string;
|
|
56
|
+
placeholderText?: string;
|
|
57
|
+
} | {
|
|
58
|
+
type: "extended-text";
|
|
59
|
+
cardinality: "single";
|
|
60
|
+
prompt: ContentInline[];
|
|
61
|
+
format: "plain";
|
|
62
|
+
expectedLength?: number;
|
|
63
|
+
expectedLines?: number;
|
|
64
|
+
patternMask?: string;
|
|
65
|
+
placeholderText?: string;
|
|
66
|
+
} | {
|
|
67
|
+
type: "extended-text";
|
|
68
|
+
cardinality: "multiple";
|
|
69
|
+
prompt: ContentInline[];
|
|
70
|
+
format: "plain";
|
|
71
|
+
expectedLength?: number;
|
|
72
|
+
expectedLines?: number;
|
|
73
|
+
patternMask?: string;
|
|
74
|
+
placeholderText?: string;
|
|
75
|
+
minStrings: number;
|
|
76
|
+
maxStrings: number;
|
|
77
|
+
} | {
|
|
78
|
+
type: "order";
|
|
79
|
+
prompt: ContentInline[];
|
|
80
|
+
choices: RendererChoice[];
|
|
81
|
+
shuffle: boolean;
|
|
82
|
+
minChoices: number;
|
|
83
|
+
maxChoices: number;
|
|
84
|
+
} | {
|
|
85
|
+
type: "match";
|
|
86
|
+
prompt: ContentInline[];
|
|
87
|
+
sourceChoices: RendererMatchChoice[];
|
|
88
|
+
targetChoices: RendererMatchChoice[];
|
|
89
|
+
shuffle: boolean;
|
|
90
|
+
minAssociations: number;
|
|
91
|
+
maxAssociations: number;
|
|
92
|
+
};
|
|
93
|
+
type RendererInteraction<Pcis extends PciId = PciId> = StandardRendererInteraction | PciInteraction<Pcis>;
|
|
94
|
+
type PciSubmission<Pcis extends PciId = PciId> = {
|
|
95
|
+
[K in Pcis]: {
|
|
96
|
+
type: "portable-custom";
|
|
97
|
+
pciId: K;
|
|
98
|
+
value: PciValue<K>;
|
|
99
|
+
};
|
|
100
|
+
}[Pcis];
|
|
101
|
+
type RendererSubmission<Pcis extends PciId = PciId> = {
|
|
102
|
+
type: "choice";
|
|
103
|
+
selectedKeys: string[];
|
|
104
|
+
} | {
|
|
105
|
+
type: "text-entry";
|
|
106
|
+
value: string;
|
|
107
|
+
} | {
|
|
108
|
+
type: "extended-text";
|
|
109
|
+
values: string[];
|
|
110
|
+
} | {
|
|
111
|
+
type: "order";
|
|
112
|
+
orderedKeys: string[];
|
|
113
|
+
} | {
|
|
114
|
+
type: "match";
|
|
115
|
+
pairs: MatchPair[];
|
|
116
|
+
} | PciSubmission<Pcis>;
|
|
117
|
+
export type { BodyStimulus, ImageStimulus, MatchPair, PciInteraction, PciSubmission, RendererChoice, RendererInteraction, RendererMatchChoice, RendererStimulus, RendererSubmission, StandardRendererInteraction };
|
|
118
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"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"}
|