@prisma/orm-framework 8.0.0-rc.15-dev.1 → 8.0.0-rc.15-dev.3

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.
Files changed (77) hide show
  1. package/dist/{authoring-CcT010vl.d.mts → authoring-DZ6xCFkL.d.mts} +2 -2
  2. package/dist/{authoring-CcT010vl.d.mts.map → authoring-DZ6xCFkL.d.mts.map} +1 -1
  3. package/dist/authoring-DcJL9g8s.mjs +352 -0
  4. package/dist/authoring-DcJL9g8s.mjs.map +1 -0
  5. package/dist/{binder-Dz5zT7tr-Dc_RkyB2.d.mts → binder-CfxKD8hm-CtG0Bs3W.d.mts} +30 -13
  6. package/dist/binder-CfxKD8hm-CtG0Bs3W.d.mts.map +1 -0
  7. package/dist/codec-U-xbQys_.mjs.map +1 -1
  8. package/dist/{components-CK8GHz8l.d.mts → components-DFGmVWZ7.d.mts} +2 -2
  9. package/dist/{components-CK8GHz8l.d.mts.map → components-DFGmVWZ7.d.mts.map} +1 -1
  10. package/dist/components.d.mts +8 -8
  11. package/dist/components.mjs +7 -6
  12. package/dist/components__authoring.d.mts +3 -3
  13. package/dist/components__authoring.mjs +3 -3
  14. package/dist/components__codec.mjs +2 -1
  15. package/dist/components__components.d.mts +2 -2
  16. package/dist/components__control.d.mts +3 -3
  17. package/dist/components__control.mjs +2 -2
  18. package/dist/components__execution.d.mts +1 -1
  19. package/dist/{config-types-D-P60plU.d.mts → config-types-CHO5rbVo.d.mts} +10 -8
  20. package/dist/config-types-CHO5rbVo.d.mts.map +1 -0
  21. package/dist/config.d.mts +1 -1
  22. package/dist/config__config-types.d.mts +1 -1
  23. package/dist/contract-authoring.d.mts +1 -1
  24. package/dist/contract-authoring.mjs +1 -1
  25. package/dist/{control-BIv_-3QB.mjs → control-DZJQzwlC.mjs} +8 -4
  26. package/dist/control-DZJQzwlC.mjs.map +1 -0
  27. package/dist/{control-C1x8zzHb.d.mts → control-_4dB7KvO.d.mts} +7 -7
  28. package/dist/{control-C1x8zzHb.d.mts.map → control-_4dB7KvO.d.mts.map} +1 -1
  29. package/dist/{resolve-codec-vOfdHcIJ-IeNjz3Tm.mjs → data-type-4xQlxYB5-DD158cOq.mjs} +3 -70
  30. package/dist/data-type-4xQlxYB5-DD158cOq.mjs.map +1 -0
  31. package/dist/{declarations-DDT0hm5r-BZoOKiu1.mjs → declarations-5xLxC310-R3-Z4vcK.mjs} +6 -6
  32. package/dist/{declarations-DDT0hm5r-BZoOKiu1.mjs.map → declarations-5xLxC310-R3-Z4vcK.mjs.map} +1 -1
  33. package/dist/errors.d.mts +1 -1
  34. package/dist/errors__execution.d.mts +1 -1
  35. package/dist/{execution-gjfB1CvH.d.mts → execution-CYxp6gvp.d.mts} +2 -2
  36. package/dist/{execution-gjfB1CvH.d.mts.map → execution-CYxp6gvp.d.mts.map} +1 -1
  37. package/dist/{execution-o-z5gzZh.d.mts → execution-Utsq8aY6.d.mts} +2 -2
  38. package/dist/{execution-o-z5gzZh.d.mts.map → execution-Utsq8aY6.d.mts.map} +1 -1
  39. package/dist/{framework-components-DDr6lZoZ-EpXYrZj7.d.mts → framework-components-BY_7sg-B-ChOD-ovL.d.mts} +3 -3
  40. package/dist/{framework-components-DDr6lZoZ-EpXYrZj7.d.mts.map → framework-components-BY_7sg-B-ChOD-ovL.d.mts.map} +1 -1
  41. package/dist/{mutation-default-types-D_M8NC3U-BQNexfRU.d.mts → mutation-default-types-CMx8Y9zx-yQN8l2GU.d.mts} +4 -10
  42. package/dist/mutation-default-types-CMx8Y9zx-yQN8l2GU.d.mts.map +1 -0
  43. package/dist/{parse-ymgXJUnk-CwVCe8ZD.mjs → parse-Cjjj1-m4-Coaz3UzQ.mjs} +3 -3
  44. package/dist/{parse-ymgXJUnk-CwVCe8ZD.mjs.map → parse-Cjjj1-m4-Coaz3UzQ.mjs.map} +1 -1
  45. package/dist/{parse-eSQ_clQv-YWR_NQoq.d.mts → parse-GXhoypXR-CeQ_TuEg.d.mts} +7 -7
  46. package/dist/{parse-eSQ_clQv-YWR_NQoq.d.mts.map → parse-GXhoypXR-CeQ_TuEg.d.mts.map} +1 -1
  47. package/dist/psl-parser.d.mts +36 -7
  48. package/dist/psl-parser.d.mts.map +1 -1
  49. package/dist/psl-parser.mjs +161 -18
  50. package/dist/psl-parser.mjs.map +1 -1
  51. package/dist/psl-parser__format.d.mts +1 -1
  52. package/dist/psl-parser__format.mjs +2 -2
  53. package/dist/psl-parser__format.mjs.map +1 -1
  54. package/dist/psl-parser__interpret.d.mts +4 -4
  55. package/dist/psl-parser__interpret.mjs +1 -1
  56. package/dist/psl-parser__syntax.d.mts +1 -1
  57. package/dist/psl-parser__syntax.mjs +2 -2
  58. package/dist/psl-parser__syntax.mjs.map +1 -1
  59. package/dist/psl-printer.d.mts +1 -1
  60. package/dist/psl-printer.mjs +1 -1
  61. package/dist/resolve-codec-qqMjZrmn-Cok8elAo.mjs +74 -0
  62. package/dist/resolve-codec-qqMjZrmn-Cok8elAo.mjs.map +1 -0
  63. package/dist/{temporal-presets-DIo9uYtS-Odk6WBk8.mjs → temporal-presets-DUCEijgt-CODhqGVy.mjs} +20 -11
  64. package/dist/{temporal-presets-DIo9uYtS-Odk6WBk8.mjs.map → temporal-presets-DUCEijgt-CODhqGVy.mjs.map} +1 -1
  65. package/dist/utils.d.mts +1 -1
  66. package/dist/written-value-BB9UYfrg-OiFCVcz2.d.mts +278 -0
  67. package/dist/written-value-BB9UYfrg-OiFCVcz2.d.mts.map +1 -0
  68. package/package.json +15 -15
  69. package/dist/authoring-iMWszF7p.mjs +0 -157
  70. package/dist/authoring-iMWszF7p.mjs.map +0 -1
  71. package/dist/binder-Dz5zT7tr-Dc_RkyB2.d.mts.map +0 -1
  72. package/dist/config-types-D-P60plU.d.mts.map +0 -1
  73. package/dist/control-BIv_-3QB.mjs.map +0 -1
  74. package/dist/mutation-default-types-D_M8NC3U-BQNexfRU.d.mts.map +0 -1
  75. package/dist/resolve-codec-vOfdHcIJ-IeNjz3Tm.mjs.map +0 -1
  76. package/dist/temporal-presets-CLsu00ZK-CAx-cLAM.d.mts +0 -160
  77. package/dist/temporal-presets-CLsu00ZK-CAx-cLAM.d.mts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { V as JsonValue } from "./domain-envelope-C2vVIWGK-C5x7cBpU.mjs";
2
2
  import { i as Codec } from "./codec-types-8NKqm4AQ-DyNSay3e.mjs";
3
3
  import { F as ParsedPslExtensionBlock, a as AuthoringContributions, et as instantiateAuthoringTypeConstructor, k as AuthoringTypeNamespace, p as AuthoringFieldPresetDescriptor, s as AuthoringEntityContext } from "./framework-authoring-DRrZ8_s0-CJ7XXqvx.mjs";
4
- import "./temporal-presets-CLsu00ZK-CAx-cLAM.mjs";
4
+ import "./written-value-BB9UYfrg-OiFCVcz2.mjs";
5
5
  //#region ../../../1-framework/1-core/framework-components/dist/authoring.d.mts
6
6
  //#region src/shared/authoring-type-constructor-call.d.ts
7
7
  /** What a type constructor call produces for a column. */
@@ -42,4 +42,4 @@ declare function fieldPresetSpellings(contributions: AuthoringContributions | un
42
42
  declare function getAuthoringFieldPreset(contributions: AuthoringContributions | undefined, path: readonly string[]): AuthoringFieldPresetDescriptor | undefined;
43
43
  //#endregion
44
44
  export { findAuthoringTypeConstructorCall as a, fieldPresetSpellings as i, AuthoringTypeConstructorOutput as n, getAuthoringFieldPreset as o, EnumBlockMember as r, readEnumBlockMembers as s, AuthoringTypeConstructorCall as t };
45
- //# sourceMappingURL=authoring-CcT010vl.d.mts.map
45
+ //# sourceMappingURL=authoring-DZ6xCFkL.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authoring-CcT010vl.d.mts","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/authoring.d.mts"],"mappings":";;;;;;;KAMK,iCAAiC,kBAAkB;;UAE9C;WACC;WACA;;;;;;;;iBAQM,iCAAiC,WAAW,wBAAwB,QAAQ,iCAAiC;;;UAGpH;WACC;WACA;;;;;;;iBAOM,qBAAqB,OAAO,wBAAwB,SAAS,eAAe,0BAA0B,iBAAiB,OAAO,OAAO,KAAK,kCAAkC;;;;;;iBAM5K,qBAAqB,eAAe,oCAAoC;;;;iBAIxE,wBAAwB,eAAe,oCAAoC,0BAA0B"}
1
+ {"version":3,"file":"authoring-DZ6xCFkL.d.mts","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/authoring.d.mts"],"mappings":";;;;;;;KAMK,iCAAiC,kBAAkB;;UAE9C;WACC;WACA;;;;;;;;iBAQM,iCAAiC,WAAW,wBAAwB,QAAQ,iCAAiC;;;UAGpH;WACC;WACA;;;;;;;iBAOM,qBAAqB,OAAO,wBAAwB,SAAS,eAAe,0BAA0B,iBAAiB,OAAO,OAAO,KAAK,kCAAkC;;;;;;iBAM5K,qBAAqB,eAAe,oCAAoC;;;;iBAIxE,wBAAwB,eAAe,oCAAoC,0BAA0B"}
@@ -0,0 +1,352 @@
1
+ import { r as isInternalError } from "./internal-error-ChGYPVpq-DhUD05u0.mjs";
2
+ import { t as canonicalStringify } from "./canonical-stringify-DY4NaAJi.mjs";
3
+ import { n as notOk, r as ok } from "./result-8OXF26MN.mjs";
4
+ import { a as dataTypeId } from "./data-type-4xQlxYB5-DD158cOq.mjs";
5
+ import { t as canonicalizeJson } from "./canonicalize-json-ZPawceQR-Dua1VNEB.mjs";
6
+ import { C as isAuthoringTypeConstructorDescriptor, D as printTaggedLiteral, O as printedTaggedLiteralReadsBack, _ as instantiateAuthoringTypeConstructor, b as isAuthoringFieldPresetDescriptor, s as authoringEntryType, v as isAuthoringArgRef } from "./temporal-presets-DUCEijgt-CODhqGVy.mjs";
7
+ //#region ../../../1-framework/1-core/framework-components/dist/authoring.mjs
8
+ function* typeConstructors(namespace, path = []) {
9
+ for (const [name, value] of Object.entries(namespace)) if (isAuthoringTypeConstructorDescriptor(value)) yield {
10
+ path: [...path, name],
11
+ descriptor: value
12
+ };
13
+ else yield* typeConstructors(value, [...path, name]);
14
+ }
15
+ function produces(produced, wanted) {
16
+ const wantedFields = {
17
+ ...wanted,
18
+ typeParams: wanted.typeParams ?? {}
19
+ };
20
+ return Object.entries({
21
+ ...produced,
22
+ typeParams: produced.typeParams ?? {}
23
+ }).every(([key, value]) => canonicalizeJson(value) === canonicalizeJson(wantedFields[key]));
24
+ }
25
+ /**
26
+ * The arguments that make `descriptor` produce exactly `output`, when each of its type parameters
27
+ * comes straight from one argument; `undefined` when it cannot produce `output`, including when
28
+ * `output` has no value for an argument the constructor requires.
29
+ */
30
+ function argumentsFor(descriptor, output) {
31
+ if (descriptor.entityRefArg !== void 0 || descriptor.output.codecId !== output.codecId) return;
32
+ const args = [];
33
+ for (const [key, template] of Object.entries(descriptor.output.typeParams ?? {})) {
34
+ const value = output.typeParams?.[key];
35
+ if (value !== void 0 && isAuthoringArgRef(template) && template.path === void 0) args[template.index] = value;
36
+ }
37
+ const requiredArgs = (descriptor.args ?? []).filter((arg) => arg.optional !== true).length;
38
+ if (args.length < requiredArgs || Array.from(args).includes(void 0)) return void 0;
39
+ try {
40
+ return produces(instantiateAuthoringTypeConstructor(descriptor, args), output) ? args : void 0;
41
+ } catch {
42
+ return;
43
+ }
44
+ }
45
+ /**
46
+ * The first call, in namespace order, to a type constructor in `namespace` that produces exactly
47
+ * `output`. The inverse of {@link instantiateAuthoringTypeConstructor} for constructors whose type
48
+ * parameters each come straight from one argument. A constructor whose argument names another
49
+ * entity is never chosen. `undefined` when no call produces `output`.
50
+ */
51
+ function findAuthoringTypeConstructorCall(namespace, output) {
52
+ for (const { path, descriptor } of typeConstructors(namespace)) {
53
+ const args = argumentsFor(descriptor, output);
54
+ if (args !== void 0) return {
55
+ path,
56
+ args
57
+ };
58
+ }
59
+ }
60
+ /**
61
+ * Reads the members of an `enum` block through its codec. A member written as a number literal is read from its source text as a column default is read, when the family gives a reader for it (`ctx.readWrittenNumber`), so no digit is lost; when that reader refuses the number, the codec's `decodeJson` reads it, and only if the codec refuses it too is the reader's reason reported. Every other member goes to the codec's `decodeJson`, and a bare member is read from its own name.
62
+ * Pushes a diagnostic and returns `undefined` when the codec refuses a member, when two members
63
+ * store the same value, or when the block has no members. Shared by every family's enum factory.
64
+ */
65
+ function readEnumBlockMembers(block, codecId, codec, ctx) {
66
+ const sourceId = ctx.sourceId ?? "unknown";
67
+ const diagnostics = ctx.diagnostics;
68
+ const memberByStoredValue = /* @__PURE__ */ new Map();
69
+ const members = [];
70
+ let memberError = false;
71
+ for (const [memberName, memberValue] of Object.entries(block.values)) {
72
+ const span = block.parameterSpans[memberName] ?? block.span;
73
+ const reading = typeof memberValue === "number" ? ctx.readWrittenNumber?.({
74
+ text: block.numberTexts?.[memberName] ?? String(memberValue),
75
+ codecId,
76
+ subject: `enum "${block.name}" member "${memberName}"`
77
+ }) : void 0;
78
+ const written = reading?.ok ? reading.value : memberValue === void 0 ? memberName : memberValue;
79
+ let read;
80
+ try {
81
+ read = codec.decodeJson(written);
82
+ } catch (err) {
83
+ if (isInternalError(err)) throw err;
84
+ diagnostics?.push(reading !== void 0 && !reading.ok ? {
85
+ code: "PSL_EXTENSION_INVALID_VALUE",
86
+ message: reading.message,
87
+ sourceId,
88
+ span
89
+ } : memberValue === void 0 ? {
90
+ code: "PSL_ENUM_BARE_MEMBER_NON_STRING_CODEC",
91
+ message: `enum "${block.name}" member "${memberName}" has no value and codec "${codecId}" does not accept a bare name as input`,
92
+ sourceId,
93
+ span
94
+ } : {
95
+ code: "PSL_EXTENSION_INVALID_VALUE",
96
+ message: `enum "${block.name}" member "${memberName}" was rejected by codec "${codecId}": ${err instanceof Error ? err.message : String(err)}`,
97
+ sourceId,
98
+ span
99
+ });
100
+ memberError = true;
101
+ continue;
102
+ }
103
+ const stored = codec.encodeJson(read);
104
+ const storedKey = canonicalStringify(stored);
105
+ const earlier = memberByStoredValue.get(storedKey);
106
+ if (earlier !== void 0) {
107
+ diagnostics?.push({
108
+ code: "PSL_ENUM_DUPLICATE_MEMBER_VALUE",
109
+ message: `enum "${block.name}": members "${earlier}" and "${memberName}" both store ${JSON.stringify(stored)}`,
110
+ sourceId,
111
+ span
112
+ });
113
+ memberError = true;
114
+ continue;
115
+ }
116
+ memberByStoredValue.set(storedKey, memberName);
117
+ members.push({
118
+ name: memberName,
119
+ value: read
120
+ });
121
+ }
122
+ if (memberError) return void 0;
123
+ if (members.length === 0) {
124
+ diagnostics?.push({
125
+ code: "PSL_ENUM_MISSING_TYPE",
126
+ message: `enum "${block.name}" must have at least one member`,
127
+ sourceId,
128
+ span: block.span
129
+ });
130
+ return;
131
+ }
132
+ return members;
133
+ }
134
+ function presetSpellingsUnder(members, prefix) {
135
+ return Object.entries(members).flatMap(([name, member]) => isAuthoringFieldPresetDescriptor(member) ? [`${prefix}.${name}(${(member.args ?? []).map((arg, index) => arg.name ?? `argument${index + 1}`).join(", ")})`] : presetSpellingsUnder(member, `${prefix}.${name}`));
136
+ }
137
+ /**
138
+ * How each field preset registered under `namespace`, at any depth, is written, with the names of its arguments: `temporal.timestamp(onCreate, onUpdate)`.
139
+ */
140
+ function fieldPresetSpellings(contributions, namespace) {
141
+ const members = contributions?.field?.[namespace];
142
+ if (members === void 0 || isAuthoringFieldPresetDescriptor(members)) return [];
143
+ return presetSpellingsUnder(members, namespace);
144
+ }
145
+ /**
146
+ * Walks `authoringContributions.field` segment by segment and returns the field-preset descriptor at the path, or `undefined` when none is registered there.
147
+ */
148
+ function getAuthoringFieldPreset(contributions, path) {
149
+ let current = contributions?.field;
150
+ for (const segment of path) {
151
+ if (typeof current !== "object" || current === null || "kind" in current) return;
152
+ current = current[segment];
153
+ }
154
+ return current !== void 0 && isAuthoringFieldPresetDescriptor(current) ? current : void 0;
155
+ }
156
+ /**
157
+ * Words a refusal of the cast rule. The message leads with what to write; the types are named only when the value has a form the position admits and its type is still refused, such as a number too large for the receiving type.
158
+ */
159
+ function describeRefusal(refusal, support, guidance) {
160
+ switch (refusal.kind) {
161
+ case "unknown-tag": return {
162
+ code: "PSL_UNKNOWN_LITERAL_TAG",
163
+ message: `Unknown literal tag "${refusal.tag}". Known tags: ${refusal.known.join(", ")}.`
164
+ };
165
+ case "unwritable": return {
166
+ code: "PSL_VALUE_TYPE_INCOMPATIBLE",
167
+ message: `${describeExpected(guidance.forms)}; this target has no data type for a ${refusal.syntax} value`
168
+ };
169
+ case "unreadable": return {
170
+ code: "PSL_INVALID_LITERAL",
171
+ message: refusal.message
172
+ };
173
+ case "no-cast": return {
174
+ code: "PSL_VALUE_TYPE_INCOMPATIBLE",
175
+ message: describeRefusedValueType(refusal, support, guidance)
176
+ };
177
+ }
178
+ }
179
+ /** `Expected <forms>`, the forms joined with `or`: the start of every refusal that says what to write. */
180
+ function describeExpected(forms) {
181
+ return `Expected ${joinForms(forms)}`;
182
+ }
183
+ /**
184
+ * Words a value of type `valueType` that `receivingType` refuses, where `guidance.forms` may be written. The types are named only when the value has one of those forms.
185
+ */
186
+ function describeRefusedValueType(refused, support, guidance) {
187
+ const expected = describeExpected(guidance.forms);
188
+ const valueForm = writtenForm(support, refused.valueType);
189
+ if (valueForm !== void 0 && guidance.forms.some((form) => isSameForm(form, valueForm))) return `${expected} that ${refused.receivingType} can hold; got ${refused.valueType}`;
190
+ return guidance.rewrite === void 0 ? expected : `${expected}; write ${guidance.rewrite}`;
191
+ }
192
+ function isSameForm(a, b) {
193
+ return a.kind === "tag" && b.kind === "tag" ? a.tag === b.tag : a.kind === b.kind;
194
+ }
195
+ /**
196
+ * The literal to write in place of a quoted string that `receivingType` refuses: the string as a literal of the first tag the type admits. `undefined` when the value is not a quoted string, the type admits no tag, the literal would not read back as the same text, or the type would refuse the literal too.
197
+ */
198
+ function exactRewrite(support, receivingType, written) {
199
+ const [tag] = admittedTags(support, receivingType);
200
+ if (written.kind !== "string" || tag === void 0) return void 0;
201
+ if (!printedTaggedLiteralReadsBack(written.text)) return void 0;
202
+ const read = readWrittenValue(support, {
203
+ kind: "tag",
204
+ tag,
205
+ text: written.text
206
+ });
207
+ if (!read.ok || !castTypedValue(support, receivingType, read.value).ok) return void 0;
208
+ return printTaggedLiteral(tag, written.text);
209
+ }
210
+ function findEntry(support, matches) {
211
+ for (const [key, entry] of Object.entries(support.entries)) if (matches(entry)) return {
212
+ key,
213
+ entry
214
+ };
215
+ }
216
+ /** The entry a tag names, or `undefined` when no pack registered that tag. */
217
+ function entryForTag(support, tag) {
218
+ return findEntry(support, ({ written }) => written.kind === "tag" && written.tag === tag);
219
+ }
220
+ /** The entry that reads a plain string, boolean or number, or `undefined` when none does. */
221
+ function entryForPlain(support, syntax) {
222
+ return findEntry(support, ({ written }) => written.kind === "plain" && written.syntax === syntax);
223
+ }
224
+ /** Every tag a stack registers, in the order the entries were merged. */
225
+ function knownTags(support) {
226
+ return Object.values(support.entries).flatMap((entry) => entry.written.kind === "tag" ? [entry.written.tag] : []);
227
+ }
228
+ function textOf(written) {
229
+ return written.kind === "boolean" ? String(written.value) : written.text;
230
+ }
231
+ function messageOf(error) {
232
+ return error instanceof Error ? error.message : String(error);
233
+ }
234
+ /** Read one written value through the authoring entry for its syntax. */
235
+ function readWrittenValue(support, written) {
236
+ const found = written.kind === "tag" ? entryForTag(support, written.tag) : entryForPlain(support, written.kind);
237
+ if (found === void 0) return written.kind === "tag" ? notOk({
238
+ kind: "unknown-tag",
239
+ tag: written.tag,
240
+ known: knownTags(support)
241
+ }) : notOk({
242
+ kind: "unwritable",
243
+ syntax: written.kind
244
+ });
245
+ const text = textOf(written);
246
+ const form = found.entry.written;
247
+ if (form.kind === "plain" && form.syntax === "number") {
248
+ const classified = form.classify(text);
249
+ return classified === void 0 ? notOk({
250
+ kind: "unreadable",
251
+ message: `no data type of this target holds the number ${text}`
252
+ }) : ok(classified);
253
+ }
254
+ try {
255
+ return ok({
256
+ type: dataTypeId(authoringEntryType(found.key, found.entry)),
257
+ value: form.parse(text)
258
+ });
259
+ } catch (error) {
260
+ if (isInternalError(error)) throw error;
261
+ return notOk({
262
+ kind: "unreadable",
263
+ message: messageOf(error)
264
+ });
265
+ }
266
+ }
267
+ /** Take a typed value into the receiving type, directly or through the cast that type declares. */
268
+ function castTypedValue(support, receivingType, typed) {
269
+ if (typed.type === receivingType) return ok({
270
+ type: receivingType,
271
+ value: typed.value
272
+ });
273
+ const declaration = support.lookup.get(receivingType);
274
+ const cast = declaration?.casts[typed.type];
275
+ if (cast === void 0) return notOk({
276
+ kind: "no-cast",
277
+ receivingType,
278
+ valueType: typed.type,
279
+ casts: Object.keys(declaration?.casts ?? {})
280
+ });
281
+ try {
282
+ return ok({
283
+ type: receivingType,
284
+ value: cast(typed.value)
285
+ });
286
+ } catch (error) {
287
+ if (isInternalError(error)) throw error;
288
+ return notOk({
289
+ kind: "unreadable",
290
+ message: messageOf(error)
291
+ });
292
+ }
293
+ }
294
+ /** The type itself, then each type it casts from, in key order. */
295
+ function admittedTypes(support, dataType) {
296
+ return [dataType, ...Object.keys(support.lookup.get(dataType)?.casts ?? {})];
297
+ }
298
+ /** The tags a position of `dataType` admits: its own tag, then the tags of the types it casts from. */
299
+ function admittedTags(support, dataType) {
300
+ const tags = admittedTypes(support, dataType).flatMap((type) => {
301
+ const written = support.entries[type]?.written;
302
+ return written?.kind === "tag" ? [written.tag] : [];
303
+ });
304
+ return [...new Set(tags)];
305
+ }
306
+ /** The form a value of a tagged literal's type is written in. */
307
+ function tagForm(tag) {
308
+ return {
309
+ kind: "tag",
310
+ tag,
311
+ phrase: `${tag}\`...\``
312
+ };
313
+ }
314
+ const PLAIN_PHRASES = {
315
+ string: "a quoted string",
316
+ boolean: "true or false",
317
+ number: "a number"
318
+ };
319
+ function writtenForm(support, type) {
320
+ const written = support.entries[type]?.written;
321
+ if (written?.kind === "tag") return tagForm(written.tag);
322
+ if (written?.kind === "plain" && written.syntax !== "number") return {
323
+ kind: written.syntax,
324
+ phrase: PLAIN_PHRASES[written.syntax]
325
+ };
326
+ return Object.entries(support.entries).some(([key, entry]) => entry.written.kind === "plain" && entry.written.syntax === "number" && (key === type || entry.written.types.some((listed) => listed === type))) ? {
327
+ kind: "number",
328
+ phrase: PLAIN_PHRASES.number
329
+ } : void 0;
330
+ }
331
+ /** What {@link describeAdmittedForms} returns for a type that nothing writes. */
332
+ const NO_WRITTEN_FORM = "no written form";
333
+ /** Each form a position receiving every one of `receivingTypes` admits, once, in order: ``sql`...` ``, `true or false`. */
334
+ function admittedForms(support, receivingTypes) {
335
+ const forms = [];
336
+ for (const type of receivingTypes.flatMap((receiving) => admittedTypes(support, receiving))) {
337
+ const form = writtenForm(support, type);
338
+ if (form !== void 0 && !forms.some((listed) => isSameForm(listed, form))) forms.push(form);
339
+ }
340
+ return forms;
341
+ }
342
+ function joinForms(forms) {
343
+ return forms.length === 0 ? NO_WRITTEN_FORM : forms.map((form) => form.phrase).join(" or ");
344
+ }
345
+ /** How a position of `dataType` can be written, for a diagnostic: ``sql`...` ``, `true or false`. */
346
+ function describeAdmittedForms(support, dataType) {
347
+ return joinForms(admittedForms(support, [dataType]));
348
+ }
349
+ //#endregion
350
+ export { tagForm as _, describeExpected as a, entryForPlain as c, fieldPresetSpellings as d, findAuthoringTypeConstructorCall as f, readWrittenValue as g, readEnumBlockMembers as h, describeAdmittedForms as i, entryForTag as l, knownTags as m, admittedTags as n, describeRefusal as o, getAuthoringFieldPreset as p, castTypedValue as r, describeRefusedValueType as s, admittedForms as t, exactRewrite as u };
351
+
352
+ //# sourceMappingURL=authoring-DcJL9g8s.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-DcJL9g8s.mjs","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/authoring.mjs"],"sourcesContent":["import { a as dataTypeId } from \"./data-type-4xQlxYB5.mjs\";\nimport { t as canonicalizeJson } from \"./canonicalize-json-ZPawceQR.mjs\";\nimport { A as isAuthoringPslBlockDescriptor, C as instantiateAuthoringEntityType, D as isAuthoringEntityTypeDescriptor, E as isAuthoringArgRef, F as resolveAuthoringTemplateValue, I as resolveEnumCodecId, L as tagEntryKey, M as isTagEntryKey, O as isAuthoringFieldPresetDescriptor, P as mergeAuthoringNamespaces, R as validateAuthoringHelperArguments, S as getAuthoringTypeConstructor, T as instantiateAuthoringTypeConstructor, _ as authoringEntryType, a as temporalCodecPreset, b as collectScalarTypeConstructors, d as printTaggedLiteral, f as printedTaggedLiteralReadsBack, g as assertResolvableTypeConstructorTemplates, h as assertNoCrossRegistryCollisions, i as temporalAuthoringPresets, j as isAuthoringTypeConstructorDescriptor, k as isAuthoringModelAttributeDescriptor, n as TEMPORAL_ON_UPDATE_ARG, o as temporalPhaseTemplate, r as TIMESTAMP_NOW_GENERATOR_ID, t as TEMPORAL_ON_CREATE_ARG, v as classifyEnumMemberType, w as instantiateAuthoringFieldPreset, x as flushAuthoringWarnings, z as validateAuthoringTypeParams } from \"./temporal-presets-DUCEijgt.mjs\";\nimport { isInternalError } from \"@internal/utils/internal-error\";\nimport { canonicalStringify } from \"@internal/utils/canonical-stringify\";\nimport { notOk, ok } from \"@internal/utils/result\";\n//#region src/shared/authoring-type-constructor-call.ts\nfunction* typeConstructors(namespace, path = []) {\n\tfor (const [name, value] of Object.entries(namespace)) if (isAuthoringTypeConstructorDescriptor(value)) yield {\n\t\tpath: [...path, name],\n\t\tdescriptor: value\n\t};\n\telse yield* typeConstructors(value, [...path, name]);\n}\nfunction produces(produced, wanted) {\n\tconst wantedFields = {\n\t\t...wanted,\n\t\ttypeParams: wanted.typeParams ?? {}\n\t};\n\treturn Object.entries({\n\t\t...produced,\n\t\ttypeParams: produced.typeParams ?? {}\n\t}).every(([key, value]) => canonicalizeJson(value) === canonicalizeJson(wantedFields[key]));\n}\n/**\n* The arguments that make `descriptor` produce exactly `output`, when each of its type parameters\n* comes straight from one argument; `undefined` when it cannot produce `output`, including when\n* `output` has no value for an argument the constructor requires.\n*/\nfunction argumentsFor(descriptor, output) {\n\tif (descriptor.entityRefArg !== void 0 || descriptor.output.codecId !== output.codecId) return;\n\tconst args = [];\n\tfor (const [key, template] of Object.entries(descriptor.output.typeParams ?? {})) {\n\t\tconst value = output.typeParams?.[key];\n\t\tif (value !== void 0 && isAuthoringArgRef(template) && template.path === void 0) args[template.index] = value;\n\t}\n\tconst requiredArgs = (descriptor.args ?? []).filter((arg) => arg.optional !== true).length;\n\tif (args.length < requiredArgs || Array.from(args).includes(void 0)) return void 0;\n\ttry {\n\t\treturn produces(instantiateAuthoringTypeConstructor(descriptor, args), output) ? args : void 0;\n\t} catch {\n\t\treturn;\n\t}\n}\n/**\n* The first call, in namespace order, to a type constructor in `namespace` that produces exactly\n* `output`. The inverse of {@link instantiateAuthoringTypeConstructor} for constructors whose type\n* parameters each come straight from one argument. A constructor whose argument names another\n* entity is never chosen. `undefined` when no call produces `output`.\n*/\nfunction findAuthoringTypeConstructorCall(namespace, output) {\n\tfor (const { path, descriptor } of typeConstructors(namespace)) {\n\t\tconst args = argumentsFor(descriptor, output);\n\t\tif (args !== void 0) return {\n\t\t\tpath,\n\t\t\targs\n\t\t};\n\t}\n}\n//#endregion\n//#region src/shared/enum-block-members.ts\n/**\n* Reads the members of an `enum` block through its codec. A member written as a number literal is read from its source text as a column default is read, when the family gives a reader for it (`ctx.readWrittenNumber`), so no digit is lost; when that reader refuses the number, the codec's `decodeJson` reads it, and only if the codec refuses it too is the reader's reason reported. Every other member goes to the codec's `decodeJson`, and a bare member is read from its own name.\n* Pushes a diagnostic and returns `undefined` when the codec refuses a member, when two members\n* store the same value, or when the block has no members. Shared by every family's enum factory.\n*/\nfunction readEnumBlockMembers(block, codecId, codec, ctx) {\n\tconst sourceId = ctx.sourceId ?? \"unknown\";\n\tconst diagnostics = ctx.diagnostics;\n\tconst memberByStoredValue = /* @__PURE__ */ new Map();\n\tconst members = [];\n\tlet memberError = false;\n\tfor (const [memberName, memberValue] of Object.entries(block.values)) {\n\t\tconst span = block.parameterSpans[memberName] ?? block.span;\n\t\tconst reading = typeof memberValue === \"number\" ? ctx.readWrittenNumber?.({\n\t\t\ttext: block.numberTexts?.[memberName] ?? String(memberValue),\n\t\t\tcodecId,\n\t\t\tsubject: `enum \"${block.name}\" member \"${memberName}\"`\n\t\t}) : void 0;\n\t\tconst written = reading?.ok ? reading.value : memberValue === void 0 ? memberName : memberValue;\n\t\tlet read;\n\t\ttry {\n\t\t\tread = codec.decodeJson(written);\n\t\t} catch (err) {\n\t\t\tif (isInternalError(err)) throw err;\n\t\t\tdiagnostics?.push(reading !== void 0 && !reading.ok ? {\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: reading.message,\n\t\t\t\tsourceId,\n\t\t\t\tspan\n\t\t\t} : memberValue === void 0 ? {\n\t\t\t\tcode: \"PSL_ENUM_BARE_MEMBER_NON_STRING_CODEC\",\n\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" has no value and codec \"${codecId}\" does not accept a bare name as input`,\n\t\t\t\tsourceId,\n\t\t\t\tspan\n\t\t\t} : {\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" was rejected by codec \"${codecId}\": ${err instanceof Error ? err.message : String(err)}`,\n\t\t\t\tsourceId,\n\t\t\t\tspan\n\t\t\t});\n\t\t\tmemberError = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst stored = codec.encodeJson(read);\n\t\tconst storedKey = canonicalStringify(stored);\n\t\tconst earlier = memberByStoredValue.get(storedKey);\n\t\tif (earlier !== void 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_ENUM_DUPLICATE_MEMBER_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\": members \"${earlier}\" and \"${memberName}\" both store ${JSON.stringify(stored)}`,\n\t\t\t\tsourceId,\n\t\t\t\tspan\n\t\t\t});\n\t\t\tmemberError = true;\n\t\t\tcontinue;\n\t\t}\n\t\tmemberByStoredValue.set(storedKey, memberName);\n\t\tmembers.push({\n\t\t\tname: memberName,\n\t\t\tvalue: read\n\t\t});\n\t}\n\tif (memberError) return void 0;\n\tif (members.length === 0) {\n\t\tdiagnostics?.push({\n\t\t\tcode: \"PSL_ENUM_MISSING_TYPE\",\n\t\t\tmessage: `enum \"${block.name}\" must have at least one member`,\n\t\t\tsourceId,\n\t\t\tspan: block.span\n\t\t});\n\t\treturn;\n\t}\n\treturn members;\n}\n//#endregion\n//#region src/shared/field-preset-resolution.ts\nfunction presetSpellingsUnder(members, prefix) {\n\treturn Object.entries(members).flatMap(([name, member]) => isAuthoringFieldPresetDescriptor(member) ? [`${prefix}.${name}(${(member.args ?? []).map((arg, index) => arg.name ?? `argument${index + 1}`).join(\", \")})`] : presetSpellingsUnder(member, `${prefix}.${name}`));\n}\n/**\n* How each field preset registered under `namespace`, at any depth, is written, with the names of its arguments: `temporal.timestamp(onCreate, onUpdate)`.\n*/\nfunction fieldPresetSpellings(contributions, namespace) {\n\tconst members = contributions?.field?.[namespace];\n\tif (members === void 0 || isAuthoringFieldPresetDescriptor(members)) return [];\n\treturn presetSpellingsUnder(members, namespace);\n}\n/**\n* Walks `authoringContributions.field` segment by segment and returns the field-preset descriptor at the path, or `undefined` when none is registered there.\n*/\nfunction getAuthoringFieldPreset(contributions, path) {\n\tlet current = contributions?.field;\n\tfor (const segment of path) {\n\t\tif (typeof current !== \"object\" || current === null || \"kind\" in current) return;\n\t\tcurrent = current[segment];\n\t}\n\treturn current !== void 0 && isAuthoringFieldPresetDescriptor(current) ? current : void 0;\n}\n//#endregion\n//#region src/shared/written-value.ts\n/**\n* Words a refusal of the cast rule. The message leads with what to write; the types are named only when the value has a form the position admits and its type is still refused, such as a number too large for the receiving type.\n*/\nfunction describeRefusal(refusal, support, guidance) {\n\tswitch (refusal.kind) {\n\t\tcase \"unknown-tag\": return {\n\t\t\tcode: \"PSL_UNKNOWN_LITERAL_TAG\",\n\t\t\tmessage: `Unknown literal tag \"${refusal.tag}\". Known tags: ${refusal.known.join(\", \")}.`\n\t\t};\n\t\tcase \"unwritable\": return {\n\t\t\tcode: \"PSL_VALUE_TYPE_INCOMPATIBLE\",\n\t\t\tmessage: `${describeExpected(guidance.forms)}; this target has no data type for a ${refusal.syntax} value`\n\t\t};\n\t\tcase \"unreadable\": return {\n\t\t\tcode: \"PSL_INVALID_LITERAL\",\n\t\t\tmessage: refusal.message\n\t\t};\n\t\tcase \"no-cast\": return {\n\t\t\tcode: \"PSL_VALUE_TYPE_INCOMPATIBLE\",\n\t\t\tmessage: describeRefusedValueType(refusal, support, guidance)\n\t\t};\n\t}\n}\n/** `Expected <forms>`, the forms joined with `or`: the start of every refusal that says what to write. */\nfunction describeExpected(forms) {\n\treturn `Expected ${joinForms(forms)}`;\n}\n/**\n* Words a value of type `valueType` that `receivingType` refuses, where `guidance.forms` may be written. The types are named only when the value has one of those forms.\n*/\nfunction describeRefusedValueType(refused, support, guidance) {\n\tconst expected = describeExpected(guidance.forms);\n\tconst valueForm = writtenForm(support, refused.valueType);\n\tif (valueForm !== void 0 && guidance.forms.some((form) => isSameForm(form, valueForm))) return `${expected} that ${refused.receivingType} can hold; got ${refused.valueType}`;\n\treturn guidance.rewrite === void 0 ? expected : `${expected}; write ${guidance.rewrite}`;\n}\nfunction isSameForm(a, b) {\n\treturn a.kind === \"tag\" && b.kind === \"tag\" ? a.tag === b.tag : a.kind === b.kind;\n}\n/**\n* The literal to write in place of a quoted string that `receivingType` refuses: the string as a literal of the first tag the type admits. `undefined` when the value is not a quoted string, the type admits no tag, the literal would not read back as the same text, or the type would refuse the literal too.\n*/\nfunction exactRewrite(support, receivingType, written) {\n\tconst [tag] = admittedTags(support, receivingType);\n\tif (written.kind !== \"string\" || tag === void 0) return void 0;\n\tif (!printedTaggedLiteralReadsBack(written.text)) return void 0;\n\tconst read = readWrittenValue(support, {\n\t\tkind: \"tag\",\n\t\ttag,\n\t\ttext: written.text\n\t});\n\tif (!read.ok || !castTypedValue(support, receivingType, read.value).ok) return void 0;\n\treturn printTaggedLiteral(tag, written.text);\n}\nfunction findEntry(support, matches) {\n\tfor (const [key, entry] of Object.entries(support.entries)) if (matches(entry)) return {\n\t\tkey,\n\t\tentry\n\t};\n}\n/** The entry a tag names, or `undefined` when no pack registered that tag. */\nfunction entryForTag(support, tag) {\n\treturn findEntry(support, ({ written }) => written.kind === \"tag\" && written.tag === tag);\n}\n/** The entry that reads a plain string, boolean or number, or `undefined` when none does. */\nfunction entryForPlain(support, syntax) {\n\treturn findEntry(support, ({ written }) => written.kind === \"plain\" && written.syntax === syntax);\n}\n/** Every tag a stack registers, in the order the entries were merged. */\nfunction knownTags(support) {\n\treturn Object.values(support.entries).flatMap((entry) => entry.written.kind === \"tag\" ? [entry.written.tag] : []);\n}\nfunction textOf(written) {\n\treturn written.kind === \"boolean\" ? String(written.value) : written.text;\n}\nfunction messageOf(error) {\n\treturn error instanceof Error ? error.message : String(error);\n}\n/** Read one written value through the authoring entry for its syntax. */\nfunction readWrittenValue(support, written) {\n\tconst found = written.kind === \"tag\" ? entryForTag(support, written.tag) : entryForPlain(support, written.kind);\n\tif (found === void 0) return written.kind === \"tag\" ? notOk({\n\t\tkind: \"unknown-tag\",\n\t\ttag: written.tag,\n\t\tknown: knownTags(support)\n\t}) : notOk({\n\t\tkind: \"unwritable\",\n\t\tsyntax: written.kind\n\t});\n\tconst text = textOf(written);\n\tconst form = found.entry.written;\n\tif (form.kind === \"plain\" && form.syntax === \"number\") {\n\t\tconst classified = form.classify(text);\n\t\treturn classified === void 0 ? notOk({\n\t\t\tkind: \"unreadable\",\n\t\t\tmessage: `no data type of this target holds the number ${text}`\n\t\t}) : ok(classified);\n\t}\n\ttry {\n\t\treturn ok({\n\t\t\ttype: dataTypeId(authoringEntryType(found.key, found.entry)),\n\t\t\tvalue: form.parse(text)\n\t\t});\n\t} catch (error) {\n\t\tif (isInternalError(error)) throw error;\n\t\treturn notOk({\n\t\t\tkind: \"unreadable\",\n\t\t\tmessage: messageOf(error)\n\t\t});\n\t}\n}\n/** Take a typed value into the receiving type, directly or through the cast that type declares. */\nfunction castTypedValue(support, receivingType, typed) {\n\tif (typed.type === receivingType) return ok({\n\t\ttype: receivingType,\n\t\tvalue: typed.value\n\t});\n\tconst declaration = support.lookup.get(receivingType);\n\tconst cast = declaration?.casts[typed.type];\n\tif (cast === void 0) return notOk({\n\t\tkind: \"no-cast\",\n\t\treceivingType,\n\t\tvalueType: typed.type,\n\t\tcasts: Object.keys(declaration?.casts ?? {})\n\t});\n\ttry {\n\t\treturn ok({\n\t\t\ttype: receivingType,\n\t\t\tvalue: cast(typed.value)\n\t\t});\n\t} catch (error) {\n\t\tif (isInternalError(error)) throw error;\n\t\treturn notOk({\n\t\t\tkind: \"unreadable\",\n\t\t\tmessage: messageOf(error)\n\t\t});\n\t}\n}\n/** The type itself, then each type it casts from, in key order. */\nfunction admittedTypes(support, dataType) {\n\treturn [dataType, ...Object.keys(support.lookup.get(dataType)?.casts ?? {})];\n}\n/** The tags a position of `dataType` admits: its own tag, then the tags of the types it casts from. */\nfunction admittedTags(support, dataType) {\n\tconst tags = admittedTypes(support, dataType).flatMap((type) => {\n\t\tconst written = support.entries[type]?.written;\n\t\treturn written?.kind === \"tag\" ? [written.tag] : [];\n\t});\n\treturn [...new Set(tags)];\n}\n/** The form a value of a tagged literal's type is written in. */\nfunction tagForm(tag) {\n\treturn {\n\t\tkind: \"tag\",\n\t\ttag,\n\t\tphrase: `${tag}\\`...\\``\n\t};\n}\nconst PLAIN_PHRASES = {\n\tstring: \"a quoted string\",\n\tboolean: \"true or false\",\n\tnumber: \"a number\"\n};\nfunction writtenForm(support, type) {\n\tconst written = support.entries[type]?.written;\n\tif (written?.kind === \"tag\") return tagForm(written.tag);\n\tif (written?.kind === \"plain\" && written.syntax !== \"number\") return {\n\t\tkind: written.syntax,\n\t\tphrase: PLAIN_PHRASES[written.syntax]\n\t};\n\treturn Object.entries(support.entries).some(([key, entry]) => entry.written.kind === \"plain\" && entry.written.syntax === \"number\" && (key === type || entry.written.types.some((listed) => listed === type))) ? {\n\t\tkind: \"number\",\n\t\tphrase: PLAIN_PHRASES.number\n\t} : void 0;\n}\n/** What {@link describeAdmittedForms} returns for a type that nothing writes. */\nconst NO_WRITTEN_FORM = \"no written form\";\n/** Each form a position receiving every one of `receivingTypes` admits, once, in order: ``sql`...` ``, `true or false`. */\nfunction admittedForms(support, receivingTypes) {\n\tconst forms = [];\n\tfor (const type of receivingTypes.flatMap((receiving) => admittedTypes(support, receiving))) {\n\t\tconst form = writtenForm(support, type);\n\t\tif (form !== void 0 && !forms.some((listed) => isSameForm(listed, form))) forms.push(form);\n\t}\n\treturn forms;\n}\nfunction joinForms(forms) {\n\treturn forms.length === 0 ? NO_WRITTEN_FORM : forms.map((form) => form.phrase).join(\" or \");\n}\n/** How a position of `dataType` can be written, for a diagnostic: ``sql`...` ``, `true or false`. */\nfunction describeAdmittedForms(support, dataType) {\n\treturn joinForms(admittedForms(support, [dataType]));\n}\n//#endregion\nexport { TEMPORAL_ON_CREATE_ARG, TEMPORAL_ON_UPDATE_ARG, TIMESTAMP_NOW_GENERATOR_ID, admittedForms, admittedTags, assertNoCrossRegistryCollisions, assertResolvableTypeConstructorTemplates, authoringEntryType, castTypedValue, classifyEnumMemberType, collectScalarTypeConstructors, describeAdmittedForms, describeExpected, describeRefusal, describeRefusedValueType, entryForPlain, entryForTag, exactRewrite, fieldPresetSpellings, findAuthoringTypeConstructorCall, flushAuthoringWarnings, getAuthoringFieldPreset, getAuthoringTypeConstructor, instantiateAuthoringEntityType, instantiateAuthoringFieldPreset, instantiateAuthoringTypeConstructor, isAuthoringArgRef, isAuthoringEntityTypeDescriptor, isAuthoringFieldPresetDescriptor, isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor, isAuthoringTypeConstructorDescriptor, isTagEntryKey, knownTags, mergeAuthoringNamespaces, printTaggedLiteral, readEnumBlockMembers, readWrittenValue, resolveAuthoringTemplateValue, resolveEnumCodecId, tagEntryKey, tagForm, temporalAuthoringPresets, temporalCodecPreset, temporalPhaseTemplate, validateAuthoringHelperArguments, validateAuthoringTypeParams };\n\n//# sourceMappingURL=authoring.mjs.map"],"mappings":"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"}
@@ -1,15 +1,17 @@
1
1
  import { V as JsonValue } from "./domain-envelope-C2vVIWGK-C5x7cBpU.mjs";
2
+ import { y as DataTypeId } from "./codec-types-8NKqm4AQ-DyNSay3e.mjs";
2
3
  import { D as AuthoringTypeConstructorDescriptor, U as PslSpan, p as AuthoringFieldPresetDescriptor } from "./framework-authoring-DRrZ8_s0-CJ7XXqvx.mjs";
3
- import { i as ControlMutationDefaults } from "./mutation-default-types-D_M8NC3U-BQNexfRU.mjs";
4
- import { o as TaggedLiteralCanonicalization } from "./temporal-presets-CLsu00ZK-CAx-cLAM.mjs";
5
- import "./authoring-CcT010vl.mjs";
4
+ import { i as ControlMutationDefaults } from "./mutation-default-types-CMx8Y9zx-yQN8l2GU.mjs";
6
5
  import { r as Result } from "./result-BYCOANWy.mjs";
7
- import "./control-C1x8zzHb.mjs";
6
+ import { d as TaggedLiteralCanonicalization, f as TypedValue } from "./written-value-BB9UYfrg-OiFCVcz2.mjs";
7
+ import "./authoring-DZ6xCFkL.mjs";
8
+ import "./codec-51beiCY-.mjs";
9
+ import "./control-_4dB7KvO.mjs";
8
10
  import "./psl-ast-a1L1ep0a.mjs";
9
- import { n as ContractSourceContext } from "./config-types-D-P60plU.mjs";
10
- import { D as NamedTypeDeclarationAst, E as ModelDeclarationAst, L as PslDiagnostic, N as ParseDiagnostic, O as NamespaceDeclarationAst, T as ModelAttributeAst, Z as TypeAnnotationAst, _ as GenericBlockDeclarationAst, f as DocumentAst, h as FieldDeclarationAst, l as CompositeTypeDeclarationAst, m as FieldAttributeAst, n as AstNode, p as ExpressionAst, q as SyntaxNode, z as PslSources } from "./parse-eSQ_clQv-YWR_NQoq.mjs";
11
+ import { n as ContractSourceContext } from "./config-types-CHO5rbVo.mjs";
12
+ import { D as NamedTypeDeclarationAst, E as ModelDeclarationAst, L as PslDiagnostic, N as ParseDiagnostic, O as NamespaceDeclarationAst, T as ModelAttributeAst, Z as TypeAnnotationAst, _ as GenericBlockDeclarationAst, f as DocumentAst, h as FieldDeclarationAst, l as CompositeTypeDeclarationAst, m as FieldAttributeAst, n as AstNode, p as ExpressionAst, q as SyntaxNode, z as PslSources } from "./parse-GXhoypXR-CeQ_TuEg.mjs";
11
13
  import { n as UnionToIntersection, t as Simplify } from "./types-DGxlljKG.mjs";
12
- //#region ../../../1-framework/2-authoring/psl-parser/dist/binder-Dz5zT7tr.d.mts
14
+ //#region ../../../1-framework/2-authoring/psl-parser/dist/binder-CfxKD8hm.d.mts
13
15
  //#region src/resolve.d.ts
14
16
  interface ResolvedAttributeArg {
15
17
  readonly kind: 'positional' | 'named';
@@ -168,11 +170,13 @@ interface BlockAttributeCtx extends AttributeCtx {
168
170
  interface FieldAttributeCtx extends ModelAttributeCtx {
169
171
  readonly field: FieldSymbol;
170
172
  }
171
- type ArgTypeKind = 'bool' | 'entityRef' | 'fieldRef' | 'funcCall' | 'identifier' | 'int' | 'json' | 'null' | 'list' | 'num' | 'oneOf' | 'record' | 'referencedFieldRef' | 'rejecting' | 'str' | 'taggedLiteral';
173
+ type ArgTypeKind = 'bool' | 'dataTypeValue' | 'entityRef' | 'fieldRef' | 'funcCall' | 'identifier' | 'int' | 'json' | 'null' | 'list' | 'num' | 'oneOf' | 'record' | 'referencedFieldRef' | 'rejecting' | 'str' | 'taggedLiteral';
172
174
  type ArgTypeContext = 'attribute' | 'field' | 'model';
173
175
  interface ArgTypeOutput<T, Ctx extends AttributeCtx> {
174
176
  readonly label: string;
175
177
  readonly _out?: T;
178
+ /** True when the argument has this type's shape, so that its diagnostics are about the argument. `oneOf` returns the result of the one alternative that claims the argument. */
179
+ readonly claims?: (arg: ExpressionAst) => boolean;
176
180
  readonly parse: (arg: ExpressionAst, ctx: Ctx) => Result<T, readonly PslDiagnostic[]>;
177
181
  }
178
182
  interface BoolArgType<Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<boolean, Ctx> {
@@ -202,6 +206,7 @@ interface FuncCallArgType<Name extends string = string, Ctx extends AttributeCtx
202
206
  readonly kind: 'funcCall';
203
207
  readonly name: Name;
204
208
  readonly signature: Signature;
209
+ readonly claims: (arg: ExpressionAst) => boolean;
205
210
  }
206
211
  interface FixedIdentifierArgType<Name extends string = string, Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<Name, Ctx> {
207
212
  readonly kind: 'identifier';
@@ -274,7 +279,7 @@ interface FixedStrArgType<T extends string = string, Ctx extends AttributeCtx =
274
279
  }
275
280
  /**
276
281
  * A tagged literal argument as parsed: its tag, the canonicalization of its string literal, and its
277
- * span. Neither the tag nor the canonicalization has been checked; lowering does both.
282
+ * span. Neither the tag nor the canonicalization has been checked; the consumer checks both.
278
283
  */
279
284
  interface ParsedTaggedLiteral {
280
285
  readonly tag: string;
@@ -286,6 +291,18 @@ interface TaggedLiteralArgType<Ctx extends AttributeCtx = AttributeCtx> extends
286
291
  readonly tags: readonly string[];
287
292
  readonly documentation: string;
288
293
  }
294
+ /** A typed value parsed from an argument, with the argument's span. */
295
+ interface ParsedTypedValue extends TypedValue {
296
+ readonly span: PslSpan;
297
+ }
298
+ interface DataTypeValueArgType<Ctx extends AttributeCtx = AttributeCtx> extends ArgTypeOutput<ParsedTypedValue, Ctx> {
299
+ readonly kind: 'dataTypeValue';
300
+ readonly dataType: DataTypeId;
301
+ /** The tags a position of this type admits, for completion. */
302
+ readonly tags: readonly string[];
303
+ /** The documentation of this type's authoring entry, or '' when it has none. */
304
+ readonly documentation: string;
305
+ }
289
306
  type ArgTypeMetadata<Type> = Type extends object ? Omit<Type, keyof ArgTypeOutput<unknown, never>> : never;
290
307
  type ArgType<T, Ctx extends AttributeCtx> = ArgTypeOutput<T, Ctx> & ArgTypeMetadata<ArgTypeVariant<Ctx>>;
291
308
  type AnyArgType = ArgType<unknown, AttributeCtx> | ArgType<unknown, ModelAttributeCtx> | ArgType<unknown, FieldAttributeCtx>;
@@ -293,7 +310,7 @@ type CtxOf<P> = P extends ArgTypeOutput<unknown, infer Ctx> ? Ctx : never;
293
310
  type RequiredContextFor<Ctx extends AttributeCtx> = [Extract<Ctx, FieldAttributeCtx>] extends [never] ? [Extract<Ctx, ModelAttributeCtx>] extends [never] ? 'attribute' : 'model' : 'field';
294
311
  type ContextForRequirement<Req extends ArgTypeContext> = Req extends 'field' ? FieldAttributeCtx : Req extends 'model' ? ModelAttributeCtx : AttributeCtx;
295
312
  type InspectableArgType<Ctx extends AttributeCtx> = ArgType<unknown, Ctx>;
296
- type ArgTypeVariant<Ctx extends AttributeCtx> = BoolArgType<Ctx> | EntityRefArgType<EntityDeclaration, Ctx> | FieldRefArgType<ModelAttributeCtx & Ctx> | FuncCallArgType<string, Ctx> | IdentifierArgType<string, Ctx> | IntArgType<Ctx> | JsonArgType<Ctx> | NullArgType<Ctx> | ListArgType<unknown, Ctx> | FixedNumArgType<number, Ctx> | UnrestrictedNumArgType<Ctx> | NumLiteralArgType<Ctx> | OneOfMetadata | RecordArgType<unknown, Ctx> | ReferencedFieldRefArgType<FieldAttributeCtx & Ctx> | RejectingArgType<never, Ctx> | FixedStrArgType<string, Ctx> | UnrestrictedStrArgType<Ctx> | TaggedLiteralArgType<Ctx>;
313
+ type ArgTypeVariant<Ctx extends AttributeCtx> = BoolArgType<Ctx> | DataTypeValueArgType<Ctx> | EntityRefArgType<EntityDeclaration, Ctx> | FieldRefArgType<ModelAttributeCtx & Ctx> | FuncCallArgType<string, Ctx> | IdentifierArgType<string, Ctx> | IntArgType<Ctx> | JsonArgType<Ctx> | NullArgType<Ctx> | ListArgType<unknown, Ctx> | FixedNumArgType<number, Ctx> | UnrestrictedNumArgType<Ctx> | NumLiteralArgType<Ctx> | OneOfMetadata | RecordArgType<unknown, Ctx> | ReferencedFieldRefArgType<FieldAttributeCtx & Ctx> | RejectingArgType<never, Ctx> | FixedStrArgType<string, Ctx> | UnrestrictedStrArgType<Ctx> | TaggedLiteralArgType<Ctx>;
297
314
  type OptionalArgType<T, Ctx extends AttributeCtx, Type extends object = ArgType<T, Ctx>, HasDefault extends boolean = boolean> = Type & {
298
315
  readonly optional: true;
299
316
  readonly hasDefault: HasDefault;
@@ -459,7 +476,7 @@ interface UnresolvedTypeReference {
459
476
  readonly written: string;
460
477
  }
461
478
  type DescribeUnresolvedType = (unresolved: UnresolvedTypeReference) => string | undefined;
462
- interface BinderContext extends Pick<ContractSourceContext, 'authoringContributions' | 'pslDiagnostics'> {
479
+ interface BinderContext extends Pick<ContractSourceContext, 'authoringContributions' | 'pslDiagnostics' | 'dataTypes'> {
463
480
  readonly controlMutationDefaults: Pick<ControlMutationDefaults, 'defaultFunctionRegistry'>;
464
481
  }
465
482
  interface CreateBinderInput {
@@ -475,5 +492,5 @@ declare function typeReferenceNode(symbol: FieldSymbol | NamedTypeSymbol): Synta
475
492
  declare function contributedTypeOf(resolution: Resolution | undefined, binder: Binder): ContributedTypeSymbol | undefined;
476
493
  declare function createBinder(input: CreateBinderInput): BinderResult;
477
494
  //#endregion
478
- export { NamedTypeSymbol as $, DescribeUnsupportedAttribute as A, TypedFuncCall as At, FuncCallArgType as B, isNamespaceLike as Bt, ContributedTypeNamespace as C, ResolvedTypeConstructorCall as Ct, CtxOf as D, SymbolTableResult as Dt, CreateBinderInput as E, SymbolTable as Et, FieldRefArgType as F, UnsupportedAttribute as Ft, InspectableArgType as G, readResolvedAttribute as Gt, FunctionSymbol as H, matchesSelector as Ht, FieldSymbol as I, buildSymbolTable as It, JsonValueArgType as J, typeReferenceNode as Jt, IntArgType as K, readResolvedAttributes as Kt, FixedIdentifierArgType as L, contributedTypeOf as Lt, EntityRefArgType as M, UnrestrictedIdentifierArgType as Mt, EntitySelector as N, UnrestrictedNumArgType as Nt, DeclarationFor as O, TaggedLiteralArgType as Ot, FieldAttributeCtx as P, UnrestrictedStrArgType as Pt, NamedOut as Q, FixedNumArgType as R, createBinder as Rt, ContributedTypeDescriptor as S, ResolvedNamedTypeBinding as St, ContributedTypeSymbol as T, ScopeResolution as Tt, IdentifierArgType as U, memberEntries as Ut, FuncCallSig as V, keywordPslSpan as Vt, InferAttr as W, nodePslSpan as Wt, ModelAttributeCtx as X, ListArgType as Y, ModelSymbol as Z, CompositeTypeSymbol as _, RequiredContextFor as _t, AttributeLevel as a, OptionalArgType as at, ContributedMember as b, ResolvedAttributeArg as bt, AttributeSymbol as c, Param as ct, BinderResult as d, PosOut as dt, NamespaceSymbol as et, BlockAttributeCtx as f, PositionalParam as ft, BuildSymbolTableOptions as g, RejectingArgType as gt, BoundSpec as h, ReferencedFieldRefArgType as ht, AttributeCtx as i, OneOfArgType as it, EntityDeclaration as j, UnresolvedTypeReference as jt, DescribeUnresolvedType as k, TopLevelScope as kt, Binder as l, ParameterSymbol as lt, BoolArgType as m, RecordArgType as mt, ArgType as n, NumLiteral as nt, AttributeOut as o, OutOf as ot, BlockSymbol as p, PslSymbol as pt, JsonArgType as q, readResolvedConstructorCall as qt, ArgTypeKind as r, NumLiteralArgType as rt, AttributeSpec as s, PSL_UNRESOLVED_REFERENCE as st, AnyArgType as t, NullArgType as tt, BinderContext as u, ParsedTaggedLiteral as ut, ConstantSymbol as v, Resolution as vt, ContributedTypeScope as w, Scope as wt, ContributedNamespaceSymbol as x, ResolvedEntityReference as xt, ContextForRequirement as y, ResolvedAttribute as yt, FixedStrArgType as z, entityReference as zt };
479
- //# sourceMappingURL=binder-Dz5zT7tr-Dc_RkyB2.d.mts.map
495
+ export { NamedOut as $, DescribeUnresolvedType as A, TaggedLiteralArgType as At, FixedStrArgType as B, createBinder as Bt, ContributedTypeNamespace as C, ResolvedEntityReference as Ct, CtxOf as D, ScopeResolution as Dt, CreateBinderInput as E, Scope as Et, FieldAttributeCtx as F, UnrestrictedNumArgType as Ft, InferAttr as G, memberEntries as Gt, FuncCallSig as H, isNamespaceLike as Ht, FieldRefArgType as I, UnrestrictedStrArgType as It, JsonArgType as J, readResolvedAttributes as Jt, InspectableArgType as K, nodePslSpan as Kt, FieldSymbol as L, UnsupportedAttribute as Lt, EntityDeclaration as M, TypedFuncCall as Mt, EntityRefArgType as N, UnresolvedTypeReference as Nt, DataTypeValueArgType as O, SymbolTable as Ot, EntitySelector as P, UnrestrictedIdentifierArgType as Pt, ModelSymbol as Q, FixedIdentifierArgType as R, buildSymbolTable as Rt, ContributedTypeDescriptor as S, ResolvedAttributeArg as St, ContributedTypeSymbol as T, ResolvedTypeConstructorCall as Tt, FunctionSymbol as U, keywordPslSpan as Ut, FuncCallArgType as V, entityReference as Vt, IdentifierArgType as W, matchesSelector as Wt, ListArgType as X, typeReferenceNode as Xt, JsonValueArgType as Y, readResolvedConstructorCall as Yt, ModelAttributeCtx as Z, CompositeTypeSymbol as _, ReferencedFieldRefArgType as _t, AttributeLevel as a, OneOfArgType as at, ContributedMember as b, Resolution as bt, AttributeSymbol as c, PSL_UNRESOLVED_REFERENCE as ct, BinderResult as d, ParsedTaggedLiteral as dt, NamedTypeSymbol as et, BlockAttributeCtx as f, ParsedTypedValue as ft, BuildSymbolTableOptions as g, RecordArgType as gt, BoundSpec as h, PslSymbol as ht, AttributeCtx as i, NumLiteralArgType as it, DescribeUnsupportedAttribute as j, TopLevelScope as jt, DeclarationFor as k, SymbolTableResult as kt, Binder as l, Param as lt, BoolArgType as m, PositionalParam as mt, ArgType as n, NullArgType as nt, AttributeOut as o, OptionalArgType as ot, BlockSymbol as p, PosOut as pt, IntArgType as q, readResolvedAttribute as qt, ArgTypeKind as r, NumLiteral as rt, AttributeSpec as s, OutOf as st, AnyArgType as t, NamespaceSymbol as tt, BinderContext as u, ParameterSymbol as ut, ConstantSymbol as v, RejectingArgType as vt, ContributedTypeScope as w, ResolvedNamedTypeBinding as wt, ContributedNamespaceSymbol as x, ResolvedAttribute as xt, ContextForRequirement as y, RequiredContextFor as yt, FixedNumArgType as z, contributedTypeOf as zt };
496
+ //# sourceMappingURL=binder-CfxKD8hm-CtG0Bs3W.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binder-CfxKD8hm-CtG0Bs3W.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/binder-CfxKD8hm.d.mts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codec-U-xbQys_.mjs","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/codec.mjs"],"sourcesContent":["import { t as emptyCodecLookup } from \"./codec-types-BXLUbk-Y.mjs\";\nimport { a as resolveCodecDescriptorOrThrow, c as assembleDataTypes, d as dataTypeId, f as objectSchemaKeys, i as materializeCodec, l as createDataTypeLookup, m as requiredSchemaKeys, o as validateCodecTypeParams, p as requiredParamKeys, r as codecForRef, s as DATA_TYPE_ID_PATTERN, t as CONTRACT_CODEC_DESCRIPTOR_MISSING, u as dataType } from \"./resolve-codec-vOfdHcIJ.mjs\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { tsStringLiteral } from \"@internal/ts-render\";\n//#region src/shared/codec.ts\n/**\n* Abstract base class for concrete codec implementations.\n*\n* Codec authors extend this class with their typed `Id`, `TTraits`, `TWire`, `TInput` and override all four abstract conversion methods: `encode`, `decode`, `encodeJson`, and `decodeJson`. The runtime instance carries only its `id` (proxied through the descriptor so alias subclasses inherit the descriptor's id automatically) and the conversion methods — static metadata lives on the {@link CodecDescriptor}.\n*/\nvar CodecImpl = class {\n\tdescriptor;\n\t/**\n\t* Variance-erased descriptor reference. Concrete codec subclasses receive the typed descriptor in their own constructors and forward it via `super(descriptor)`; the variance erasure lives at this base because the abstract surface can't carry the concrete `TParams`.\n\t*/\n\tconstructor(descriptor) {\n\t\tthis.descriptor = descriptor;\n\t}\n\tget id() {\n\t\treturn this.descriptor.codecId;\n\t}\n};\n//#endregion\n//#region src/shared/codec-descriptor.ts\n/**\n* The canonical form of the values of a column whose codec is `codec` (ADR 254): the codec's own when it declares one, else its data type's. Whatever reads, compares or writes a stored value of a column takes its canonical form from here.\n*/\nfunction canonicalFormOf(codec, dataTypes) {\n\treturn codec.toCanonicalForm ?? dataTypes.get(codec.dataType)?.toCanonicalForm;\n}\n/**\n* Abstract base class for concrete codec descriptors.\n*\n* Codec authors extend this class with their typed `TParams` and declare `codecId`, `traits`, `paramsSchema`, the curried `factory(params)`, and (optionally) `renderOutputType`.\n*\n* Implements the {@link CodecDescriptor} interface so a concrete subclass instance is directly usable wherever the framework expects a `CodecDescriptor<P>`.\n*/\nvar CodecDescriptorTemplateImpl = class {\n\tget isParameterized() {\n\t\treturn this.paramsSchema !== void 0;\n\t}\n\t/** Optional canonical form of the codec's values. See {@link CodecDescriptorTemplate.toCanonicalForm}. */\n\ttoCanonicalForm;\n};\n/**\n* Abstract base for a concrete codec descriptor: a {@link CodecDescriptorTemplateImpl} that also\n* names the data type its codec represents.\n*\n* A codec whose data type depends on the target that adopts it extends\n* {@link CodecDescriptorTemplateImpl} instead, and the target names the type when it adapts the\n* template.\n*/\nvar CodecDescriptorImpl = class extends CodecDescriptorTemplateImpl {};\n//#endregion\n//#region src/shared/column-spec.ts\n/**\n* Trivial column packager. Per-codec helpers call this directly with the result of `descriptor.factory(params)` — direct method invocation binds the descriptor's method-level generic at the call site and the literal flows through `R`.\n*/\nfunction column(codecFactory, codecId, typeParams) {\n\treturn {\n\t\tcodecFactory,\n\t\tcodecId,\n\t\ttypeParams\n\t};\n}\n//#endregion\n//#region src/shared/decode-json.ts\n/**\n* Readers for the JSON forms codecs share, each built as {@link Codec.decodeJson} requires: it returns the application value for a stored form of the codec's type and refuses anything else with {@link refuseJsonValue}.\n*/\nconst RECEIVED_PREVIEW_LIMIT = 100;\n/** The value a refusal names: its JSON text, or its digits for a number JSON cannot write, cut to 100 characters. */\nfunction receivedPreview(json) {\n\treturn (typeof json === \"number\" ? String(json) : JSON.stringify(json)).slice(0, RECEIVED_PREVIEW_LIMIT);\n}\n/**\n* The refusal every `decodeJson` raises: `RUNTIME.DECODE_FAILED`, `<codecId> JSON value must be <expected>`, with `meta.codecId` and `meta.received`, the value it was given as JSON text, cut to 100 characters.\n*/\nfunction refuseJsonValue(codecId, expected, json) {\n\tthrow structuredError(\"RUNTIME.DECODE_FAILED\", `${codecId} JSON value must be ${expected}`, { meta: {\n\t\tcodecId,\n\t\treceived: receivedPreview(json)\n\t} });\n}\nfunction decodeJsonString(codecId, json) {\n\tif (typeof json !== \"string\") return refuseJsonValue(codecId, \"a string\", json);\n\treturn json;\n}\n/** Reads a JSON string that matches `pattern`; `form` names what the pattern accepts, for the refusal. */\nfunction decodeJsonMatching(codecId, json, pattern, form) {\n\tif (typeof json !== \"string\" || !pattern.test(json)) return refuseJsonValue(codecId, form, json);\n\treturn json;\n}\nfunction decodeJsonBoolean(codecId, json) {\n\tif (typeof json !== \"boolean\") return refuseJsonValue(codecId, \"a boolean\", json);\n\treturn json;\n}\n/** Whether `value` is an integer within `range`, its ends included. */\nfunction isIntegerIn(value, range) {\n\treturn typeof value === \"number\" && Number.isInteger(value) && value >= range.min && value <= range.max;\n}\n/** The integers a JavaScript `number` holds exactly. */\nconst SAFE_INTEGER_RANGE = {\n\tmin: Number.MIN_SAFE_INTEGER,\n\tmax: Number.MAX_SAFE_INTEGER\n};\n/** The integers a signed 32-bit integer holds. */\nconst INT32_RANGE = {\n\tmin: -(2 ** 31),\n\tmax: 2 ** 31 - 1\n};\nfunction decodeJsonInteger(codecId, json, range) {\n\tif (!isIntegerIn(json, range)) return refuseJsonValue(codecId, `an integer from ${range.min} to ${range.max}`, json);\n\treturn json;\n}\n/** The integers a signed 64-bit integer holds. */\nconst INT64_RANGE = {\n\tmin: -(2n ** 63n),\n\tmax: 2n ** 63n - 1n\n};\n/** The integers a JavaScript `number` holds exactly, as a `bigint` range. */\nconst SAFE_INTEGER_BIGINT_RANGE = {\n\tmin: BigInt(Number.MIN_SAFE_INTEGER),\n\tmax: BigInt(Number.MAX_SAFE_INTEGER)\n};\nconst DECIMAL_INTEGER_TEXT = /^-?\\d+$/;\n/** Reads an integer a codec writes as decimal text, because a JSON number cannot hold every value of its type. */\nfunction decodeJsonIntegerText(codecId, json, range) {\n\tconst expected = range === void 0 ? \"a decimal integer string\" : `a decimal integer string from ${range.min} to ${range.max}`;\n\tconst value = BigInt(decodeJsonMatching(codecId, json, DECIMAL_INTEGER_TEXT, expected));\n\tif (range !== void 0 && (value < range.min || value > range.max)) return refuseJsonValue(codecId, expected, json);\n\treturn value;\n}\nconst NON_FINITE_TEXT = /* @__PURE__ */ new Set([\n\t\"NaN\",\n\t\"Infinity\",\n\t\"-Infinity\"\n]);\n/** Whether `text` is `NaN`, `Infinity` or `-Infinity`, the text a float's JSON form writes for a value JSON has no number for. */\nfunction isNonFiniteText(text) {\n\treturn NON_FINITE_TEXT.has(text);\n}\n/** JSON has no number for NaN or an infinity, so a float's JSON form writes them as the text `NaN`, `Infinity` and `-Infinity`. */\nfunction encodeJsonFloat(value) {\n\treturn Number.isFinite(value) ? value : String(value);\n}\nfunction decodeJsonFloat(codecId, json) {\n\tif (typeof json === \"number\" && Number.isFinite(json)) return json;\n\tif (typeof json === \"string\" && isNonFiniteText(json)) return Number(json);\n\treturn refuseJsonValue(codecId, \"a finite number or the text NaN, Infinity or -Infinity\", json);\n}\n//#endregion\n//#region src/shared/render-ts-literal.ts\n/**\n* Renders a codec-encoded value as a TypeScript literal (e.g. `\"low\"`, `1`, `true`), or `undefined`\n* when the value isn't literal-expressible (objects, arrays, null).\n*\n* Valid **only for identity codecs** whose `encodeJson` output equals their decoded output type\n* (text, int, float, bool). A non-identity codec (e.g. one that encodes to an int but decodes to a\n* string literal) must NOT use this: it has to `decodeJson` first, then render, in its own\n* `renderValueLiteral`.\n*/\nfunction renderTsLiteral(value) {\n\tif (typeof value === \"string\") return tsStringLiteral(value);\n\tif (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n}\n//#endregion\nexport { CONTRACT_CODEC_DESCRIPTOR_MISSING, CodecDescriptorImpl, CodecDescriptorTemplateImpl, CodecImpl, DATA_TYPE_ID_PATTERN, INT32_RANGE, INT64_RANGE, SAFE_INTEGER_BIGINT_RANGE, SAFE_INTEGER_RANGE, assembleDataTypes, canonicalFormOf, codecForRef, column, createDataTypeLookup, dataType, dataTypeId, decodeJsonBoolean, decodeJsonFloat, decodeJsonInteger, decodeJsonIntegerText, decodeJsonMatching, decodeJsonString, emptyCodecLookup, encodeJsonFloat, isIntegerIn, isNonFiniteText, materializeCodec, objectSchemaKeys, refuseJsonValue, renderTsLiteral, requiredParamKeys, requiredSchemaKeys, resolveCodecDescriptorOrThrow, validateCodecTypeParams };\n\n//# sourceMappingURL=codec.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"codec-U-xbQys_.mjs","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/codec.mjs"],"sourcesContent":["import { t as emptyCodecLookup } from \"./codec-types-BXLUbk-Y.mjs\";\nimport { a as dataTypeId, c as requiredSchemaKeys, i as dataType, n as assembleDataTypes, o as objectSchemaKeys, r as createDataTypeLookup, s as requiredParamKeys, t as DATA_TYPE_ID_PATTERN } from \"./data-type-4xQlxYB5.mjs\";\nimport { a as resolveCodecDescriptorOrThrow, i as materializeCodec, o as validateCodecTypeParams, r as codecForRef, t as CONTRACT_CODEC_DESCRIPTOR_MISSING } from \"./resolve-codec-qqMjZrmn.mjs\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { tsStringLiteral } from \"@internal/ts-render\";\n//#region src/shared/codec.ts\n/**\n* Abstract base class for concrete codec implementations.\n*\n* Codec authors extend this class with their typed `Id`, `TTraits`, `TWire`, `TInput` and override all four abstract conversion methods: `encode`, `decode`, `encodeJson`, and `decodeJson`. The runtime instance carries only its `id` (proxied through the descriptor so alias subclasses inherit the descriptor's id automatically) and the conversion methods — static metadata lives on the {@link CodecDescriptor}.\n*/\nvar CodecImpl = class {\n\tdescriptor;\n\t/**\n\t* Variance-erased descriptor reference. Concrete codec subclasses receive the typed descriptor in their own constructors and forward it via `super(descriptor)`; the variance erasure lives at this base because the abstract surface can't carry the concrete `TParams`.\n\t*/\n\tconstructor(descriptor) {\n\t\tthis.descriptor = descriptor;\n\t}\n\tget id() {\n\t\treturn this.descriptor.codecId;\n\t}\n};\n//#endregion\n//#region src/shared/codec-descriptor.ts\n/**\n* The canonical form of the values of a column whose codec is `codec` (ADR 254): the codec's own when it declares one, else its data type's. Whatever reads, compares or writes a stored value of a column takes its canonical form from here.\n*/\nfunction canonicalFormOf(codec, dataTypes) {\n\treturn codec.toCanonicalForm ?? dataTypes.get(codec.dataType)?.toCanonicalForm;\n}\n/**\n* Abstract base class for concrete codec descriptors.\n*\n* Codec authors extend this class with their typed `TParams` and declare `codecId`, `traits`, `paramsSchema`, the curried `factory(params)`, and (optionally) `renderOutputType`.\n*\n* Implements the {@link CodecDescriptor} interface so a concrete subclass instance is directly usable wherever the framework expects a `CodecDescriptor<P>`.\n*/\nvar CodecDescriptorTemplateImpl = class {\n\tget isParameterized() {\n\t\treturn this.paramsSchema !== void 0;\n\t}\n\t/** Optional canonical form of the codec's values. See {@link CodecDescriptorTemplate.toCanonicalForm}. */\n\ttoCanonicalForm;\n};\n/**\n* Abstract base for a concrete codec descriptor: a {@link CodecDescriptorTemplateImpl} that also\n* names the data type its codec represents.\n*\n* A codec whose data type depends on the target that adopts it extends\n* {@link CodecDescriptorTemplateImpl} instead, and the target names the type when it adapts the\n* template.\n*/\nvar CodecDescriptorImpl = class extends CodecDescriptorTemplateImpl {};\n//#endregion\n//#region src/shared/column-spec.ts\n/**\n* Trivial column packager. Per-codec helpers call this directly with the result of `descriptor.factory(params)` — direct method invocation binds the descriptor's method-level generic at the call site and the literal flows through `R`.\n*/\nfunction column(codecFactory, codecId, typeParams) {\n\treturn {\n\t\tcodecFactory,\n\t\tcodecId,\n\t\ttypeParams\n\t};\n}\n//#endregion\n//#region src/shared/decode-json.ts\n/**\n* Readers for the JSON forms codecs share, each built as {@link Codec.decodeJson} requires: it returns the application value for a stored form of the codec's type and refuses anything else with {@link refuseJsonValue}.\n*/\nconst RECEIVED_PREVIEW_LIMIT = 100;\n/** The value a refusal names: its JSON text, or its digits for a number JSON cannot write, cut to 100 characters. */\nfunction receivedPreview(json) {\n\treturn (typeof json === \"number\" ? String(json) : JSON.stringify(json)).slice(0, RECEIVED_PREVIEW_LIMIT);\n}\n/**\n* The refusal every `decodeJson` raises: `RUNTIME.DECODE_FAILED`, `<codecId> JSON value must be <expected>`, with `meta.codecId` and `meta.received`, the value it was given as JSON text, cut to 100 characters.\n*/\nfunction refuseJsonValue(codecId, expected, json) {\n\tthrow structuredError(\"RUNTIME.DECODE_FAILED\", `${codecId} JSON value must be ${expected}`, { meta: {\n\t\tcodecId,\n\t\treceived: receivedPreview(json)\n\t} });\n}\nfunction decodeJsonString(codecId, json) {\n\tif (typeof json !== \"string\") return refuseJsonValue(codecId, \"a string\", json);\n\treturn json;\n}\n/** Reads a JSON string that matches `pattern`; `form` names what the pattern accepts, for the refusal. */\nfunction decodeJsonMatching(codecId, json, pattern, form) {\n\tif (typeof json !== \"string\" || !pattern.test(json)) return refuseJsonValue(codecId, form, json);\n\treturn json;\n}\nfunction decodeJsonBoolean(codecId, json) {\n\tif (typeof json !== \"boolean\") return refuseJsonValue(codecId, \"a boolean\", json);\n\treturn json;\n}\n/** Whether `value` is an integer within `range`, its ends included. */\nfunction isIntegerIn(value, range) {\n\treturn typeof value === \"number\" && Number.isInteger(value) && value >= range.min && value <= range.max;\n}\n/** The integers a JavaScript `number` holds exactly. */\nconst SAFE_INTEGER_RANGE = {\n\tmin: Number.MIN_SAFE_INTEGER,\n\tmax: Number.MAX_SAFE_INTEGER\n};\n/** The integers a signed 32-bit integer holds. */\nconst INT32_RANGE = {\n\tmin: -(2 ** 31),\n\tmax: 2 ** 31 - 1\n};\nfunction decodeJsonInteger(codecId, json, range) {\n\tif (!isIntegerIn(json, range)) return refuseJsonValue(codecId, `an integer from ${range.min} to ${range.max}`, json);\n\treturn json;\n}\n/** The integers a signed 64-bit integer holds. */\nconst INT64_RANGE = {\n\tmin: -(2n ** 63n),\n\tmax: 2n ** 63n - 1n\n};\n/** The integers a JavaScript `number` holds exactly, as a `bigint` range. */\nconst SAFE_INTEGER_BIGINT_RANGE = {\n\tmin: BigInt(Number.MIN_SAFE_INTEGER),\n\tmax: BigInt(Number.MAX_SAFE_INTEGER)\n};\nconst DECIMAL_INTEGER_TEXT = /^-?\\d+$/;\n/** Reads an integer a codec writes as decimal text, because a JSON number cannot hold every value of its type. */\nfunction decodeJsonIntegerText(codecId, json, range) {\n\tconst expected = range === void 0 ? \"a decimal integer string\" : `a decimal integer string from ${range.min} to ${range.max}`;\n\tconst value = BigInt(decodeJsonMatching(codecId, json, DECIMAL_INTEGER_TEXT, expected));\n\tif (range !== void 0 && (value < range.min || value > range.max)) return refuseJsonValue(codecId, expected, json);\n\treturn value;\n}\nconst NON_FINITE_TEXT = /* @__PURE__ */ new Set([\n\t\"NaN\",\n\t\"Infinity\",\n\t\"-Infinity\"\n]);\n/** Whether `text` is `NaN`, `Infinity` or `-Infinity`, the text a float's JSON form writes for a value JSON has no number for. */\nfunction isNonFiniteText(text) {\n\treturn NON_FINITE_TEXT.has(text);\n}\n/** JSON has no number for NaN or an infinity, so a float's JSON form writes them as the text `NaN`, `Infinity` and `-Infinity`. */\nfunction encodeJsonFloat(value) {\n\treturn Number.isFinite(value) ? value : String(value);\n}\nfunction decodeJsonFloat(codecId, json) {\n\tif (typeof json === \"number\" && Number.isFinite(json)) return json;\n\tif (typeof json === \"string\" && isNonFiniteText(json)) return Number(json);\n\treturn refuseJsonValue(codecId, \"a finite number or the text NaN, Infinity or -Infinity\", json);\n}\n//#endregion\n//#region src/shared/render-ts-literal.ts\n/**\n* Renders a codec-encoded value as a TypeScript literal (e.g. `\"low\"`, `1`, `true`), or `undefined`\n* when the value isn't literal-expressible (objects, arrays, null).\n*\n* Valid **only for identity codecs** whose `encodeJson` output equals their decoded output type\n* (text, int, float, bool). A non-identity codec (e.g. one that encodes to an int but decodes to a\n* string literal) must NOT use this: it has to `decodeJson` first, then render, in its own\n* `renderValueLiteral`.\n*/\nfunction renderTsLiteral(value) {\n\tif (typeof value === \"string\") return tsStringLiteral(value);\n\tif (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n}\n//#endregion\nexport { CONTRACT_CODEC_DESCRIPTOR_MISSING, CodecDescriptorImpl, CodecDescriptorTemplateImpl, CodecImpl, DATA_TYPE_ID_PATTERN, INT32_RANGE, INT64_RANGE, SAFE_INTEGER_BIGINT_RANGE, SAFE_INTEGER_RANGE, assembleDataTypes, canonicalFormOf, codecForRef, column, createDataTypeLookup, dataType, dataTypeId, decodeJsonBoolean, decodeJsonFloat, decodeJsonInteger, decodeJsonIntegerText, decodeJsonMatching, decodeJsonString, emptyCodecLookup, encodeJsonFloat, isIntegerIn, isNonFiniteText, materializeCodec, objectSchemaKeys, refuseJsonValue, renderTsLiteral, requiredParamKeys, requiredSchemaKeys, resolveCodecDescriptorOrThrow, validateCodecTypeParams };\n\n//# sourceMappingURL=codec.mjs.map"],"mappings":"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"}