@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.
- package/dist/{authoring-CcT010vl.d.mts → authoring-DZ6xCFkL.d.mts} +2 -2
- package/dist/{authoring-CcT010vl.d.mts.map → authoring-DZ6xCFkL.d.mts.map} +1 -1
- package/dist/authoring-DcJL9g8s.mjs +352 -0
- package/dist/authoring-DcJL9g8s.mjs.map +1 -0
- package/dist/{binder-Dz5zT7tr-Dc_RkyB2.d.mts → binder-CfxKD8hm-CtG0Bs3W.d.mts} +30 -13
- package/dist/binder-CfxKD8hm-CtG0Bs3W.d.mts.map +1 -0
- package/dist/codec-U-xbQys_.mjs.map +1 -1
- package/dist/{components-CK8GHz8l.d.mts → components-DFGmVWZ7.d.mts} +2 -2
- package/dist/{components-CK8GHz8l.d.mts.map → components-DFGmVWZ7.d.mts.map} +1 -1
- package/dist/components.d.mts +8 -8
- package/dist/components.mjs +7 -6
- package/dist/components__authoring.d.mts +3 -3
- package/dist/components__authoring.mjs +3 -3
- package/dist/components__codec.mjs +2 -1
- package/dist/components__components.d.mts +2 -2
- package/dist/components__control.d.mts +3 -3
- package/dist/components__control.mjs +2 -2
- package/dist/components__execution.d.mts +1 -1
- package/dist/{config-types-D-P60plU.d.mts → config-types-CHO5rbVo.d.mts} +10 -8
- package/dist/config-types-CHO5rbVo.d.mts.map +1 -0
- package/dist/config.d.mts +1 -1
- package/dist/config__config-types.d.mts +1 -1
- package/dist/contract-authoring.d.mts +1 -1
- package/dist/contract-authoring.mjs +1 -1
- package/dist/{control-BIv_-3QB.mjs → control-DZJQzwlC.mjs} +8 -4
- package/dist/control-DZJQzwlC.mjs.map +1 -0
- package/dist/{control-C1x8zzHb.d.mts → control-_4dB7KvO.d.mts} +7 -7
- package/dist/{control-C1x8zzHb.d.mts.map → control-_4dB7KvO.d.mts.map} +1 -1
- package/dist/{resolve-codec-vOfdHcIJ-IeNjz3Tm.mjs → data-type-4xQlxYB5-DD158cOq.mjs} +3 -70
- package/dist/data-type-4xQlxYB5-DD158cOq.mjs.map +1 -0
- package/dist/{declarations-DDT0hm5r-BZoOKiu1.mjs → declarations-5xLxC310-R3-Z4vcK.mjs} +6 -6
- package/dist/{declarations-DDT0hm5r-BZoOKiu1.mjs.map → declarations-5xLxC310-R3-Z4vcK.mjs.map} +1 -1
- package/dist/errors.d.mts +1 -1
- package/dist/errors__execution.d.mts +1 -1
- package/dist/{execution-gjfB1CvH.d.mts → execution-CYxp6gvp.d.mts} +2 -2
- package/dist/{execution-gjfB1CvH.d.mts.map → execution-CYxp6gvp.d.mts.map} +1 -1
- package/dist/{execution-o-z5gzZh.d.mts → execution-Utsq8aY6.d.mts} +2 -2
- package/dist/{execution-o-z5gzZh.d.mts.map → execution-Utsq8aY6.d.mts.map} +1 -1
- package/dist/{framework-components-DDr6lZoZ-EpXYrZj7.d.mts → framework-components-BY_7sg-B-ChOD-ovL.d.mts} +3 -3
- package/dist/{framework-components-DDr6lZoZ-EpXYrZj7.d.mts.map → framework-components-BY_7sg-B-ChOD-ovL.d.mts.map} +1 -1
- package/dist/{mutation-default-types-D_M8NC3U-BQNexfRU.d.mts → mutation-default-types-CMx8Y9zx-yQN8l2GU.d.mts} +4 -10
- package/dist/mutation-default-types-CMx8Y9zx-yQN8l2GU.d.mts.map +1 -0
- package/dist/{parse-ymgXJUnk-CwVCe8ZD.mjs → parse-Cjjj1-m4-Coaz3UzQ.mjs} +3 -3
- package/dist/{parse-ymgXJUnk-CwVCe8ZD.mjs.map → parse-Cjjj1-m4-Coaz3UzQ.mjs.map} +1 -1
- package/dist/{parse-eSQ_clQv-YWR_NQoq.d.mts → parse-GXhoypXR-CeQ_TuEg.d.mts} +7 -7
- package/dist/{parse-eSQ_clQv-YWR_NQoq.d.mts.map → parse-GXhoypXR-CeQ_TuEg.d.mts.map} +1 -1
- package/dist/psl-parser.d.mts +36 -7
- package/dist/psl-parser.d.mts.map +1 -1
- package/dist/psl-parser.mjs +161 -18
- package/dist/psl-parser.mjs.map +1 -1
- package/dist/psl-parser__format.d.mts +1 -1
- package/dist/psl-parser__format.mjs +2 -2
- package/dist/psl-parser__format.mjs.map +1 -1
- package/dist/psl-parser__interpret.d.mts +4 -4
- package/dist/psl-parser__interpret.mjs +1 -1
- package/dist/psl-parser__syntax.d.mts +1 -1
- package/dist/psl-parser__syntax.mjs +2 -2
- package/dist/psl-parser__syntax.mjs.map +1 -1
- package/dist/psl-printer.d.mts +1 -1
- package/dist/psl-printer.mjs +1 -1
- package/dist/resolve-codec-qqMjZrmn-Cok8elAo.mjs +74 -0
- package/dist/resolve-codec-qqMjZrmn-Cok8elAo.mjs.map +1 -0
- package/dist/{temporal-presets-DIo9uYtS-Odk6WBk8.mjs → temporal-presets-DUCEijgt-CODhqGVy.mjs} +20 -11
- package/dist/{temporal-presets-DIo9uYtS-Odk6WBk8.mjs.map → temporal-presets-DUCEijgt-CODhqGVy.mjs.map} +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/written-value-BB9UYfrg-OiFCVcz2.d.mts +278 -0
- package/dist/written-value-BB9UYfrg-OiFCVcz2.d.mts.map +1 -0
- package/package.json +15 -15
- package/dist/authoring-iMWszF7p.mjs +0 -157
- package/dist/authoring-iMWszF7p.mjs.map +0 -1
- package/dist/binder-Dz5zT7tr-Dc_RkyB2.d.mts.map +0 -1
- package/dist/config-types-D-P60plU.d.mts.map +0 -1
- package/dist/control-BIv_-3QB.mjs.map +0 -1
- package/dist/mutation-default-types-D_M8NC3U-BQNexfRU.d.mts.map +0 -1
- package/dist/resolve-codec-vOfdHcIJ-IeNjz3Tm.mjs.map +0 -1
- package/dist/temporal-presets-CLsu00ZK-CAx-cLAM.d.mts +0 -160
- 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 "./
|
|
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-
|
|
45
|
+
//# sourceMappingURL=authoring-DZ6xCFkL.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-
|
|
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":";;;;;;;AAOA,UAAU,iBAAiB,WAAW,OAAO,CAAC,GAAG;CAChD,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,SAAS,GAAG,IAAI,qCAAqC,KAAK,GAAG,MAAM;EAC7G,MAAM,CAAC,GAAG,MAAM,IAAI;EACpB,YAAY;CACb;MACK,OAAO,iBAAiB,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC;AACpD;AACA,SAAS,SAAS,UAAU,QAAQ;CACnC,MAAM,eAAe;EACpB,GAAG;EACH,YAAY,OAAO,cAAc,CAAC;CACnC;CACA,OAAO,OAAO,QAAQ;EACrB,GAAG;EACH,YAAY,SAAS,cAAc,CAAC;CACrC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,WAAW,iBAAiB,KAAK,MAAM,iBAAiB,aAAa,IAAI,CAAC;AAC3F;;;;;;AAMA,SAAS,aAAa,YAAY,QAAQ;CACzC,IAAI,WAAW,iBAAiB,KAAK,KAAK,WAAW,OAAO,YAAY,OAAO,SAAS;CACxF,MAAM,OAAO,CAAC;CACd,KAAK,MAAM,CAAC,KAAK,aAAa,OAAO,QAAQ,WAAW,OAAO,cAAc,CAAC,CAAC,GAAG;EACjF,MAAM,QAAQ,OAAO,aAAa;EAClC,IAAI,UAAU,KAAK,KAAK,kBAAkB,QAAQ,KAAK,SAAS,SAAS,KAAK,GAAG,KAAK,SAAS,SAAS;CACzG;CACA,MAAM,gBAAgB,WAAW,QAAQ,CAAC,EAAA,CAAG,QAAQ,QAAQ,IAAI,aAAa,IAAI,CAAC,CAAC;CACpF,IAAI,KAAK,SAAS,gBAAgB,MAAM,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,OAAO,KAAK;CACjF,IAAI;EACH,OAAO,SAAS,oCAAoC,YAAY,IAAI,GAAG,MAAM,IAAI,OAAO,KAAK;CAC9F,QAAQ;EACP;CACD;AACD;;;;;;;AAOA,SAAS,iCAAiC,WAAW,QAAQ;CAC5D,KAAK,MAAM,EAAE,MAAM,gBAAgB,iBAAiB,SAAS,GAAG;EAC/D,MAAM,OAAO,aAAa,YAAY,MAAM;EAC5C,IAAI,SAAS,KAAK,GAAG,OAAO;GAC3B;GACA;EACD;CACD;AACD;;;;;;AAQA,SAAS,qBAAqB,OAAO,SAAS,OAAO,KAAK;CACzD,MAAM,WAAW,IAAI,YAAY;CACjC,MAAM,cAAc,IAAI;CACxB,MAAM,sCAAsC,IAAI,IAAI;CACpD,MAAM,UAAU,CAAC;CACjB,IAAI,cAAc;CAClB,KAAK,MAAM,CAAC,YAAY,gBAAgB,OAAO,QAAQ,MAAM,MAAM,GAAG;EACrE,MAAM,OAAO,MAAM,eAAe,eAAe,MAAM;EACvD,MAAM,UAAU,OAAO,gBAAgB,WAAW,IAAI,oBAAoB;GACzE,MAAM,MAAM,cAAc,eAAe,OAAO,WAAW;GAC3D;GACA,SAAS,SAAS,MAAM,KAAK,YAAY,WAAW;EACrD,CAAC,IAAI,KAAK;EACV,MAAM,UAAU,SAAS,KAAK,QAAQ,QAAQ,gBAAgB,KAAK,IAAI,aAAa;EACpF,IAAI;EACJ,IAAI;GACH,OAAO,MAAM,WAAW,OAAO;EAChC,SAAS,KAAK;GACb,IAAI,gBAAgB,GAAG,GAAG,MAAM;GAChC,aAAa,KAAK,YAAY,KAAK,KAAK,CAAC,QAAQ,KAAK;IACrD,MAAM;IACN,SAAS,QAAQ;IACjB;IACA;GACD,IAAI,gBAAgB,KAAK,IAAI;IAC5B,MAAM;IACN,SAAS,SAAS,MAAM,KAAK,YAAY,WAAW,4BAA4B,QAAQ;IACxF;IACA;GACD,IAAI;IACH,MAAM;IACN,SAAS,SAAS,MAAM,KAAK,YAAY,WAAW,2BAA2B,QAAQ,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;IAC3I;IACA;GACD,CAAC;GACD,cAAc;GACd;EACD;EACA,MAAM,SAAS,MAAM,WAAW,IAAI;EACpC,MAAM,YAAY,mBAAmB,MAAM;EAC3C,MAAM,UAAU,oBAAoB,IAAI,SAAS;EACjD,IAAI,YAAY,KAAK,GAAG;GACvB,aAAa,KAAK;IACjB,MAAM;IACN,SAAS,SAAS,MAAM,KAAK,cAAc,QAAQ,SAAS,WAAW,eAAe,KAAK,UAAU,MAAM;IAC3G;IACA;GACD,CAAC;GACD,cAAc;GACd;EACD;EACA,oBAAoB,IAAI,WAAW,UAAU;EAC7C,QAAQ,KAAK;GACZ,MAAM;GACN,OAAO;EACR,CAAC;CACF;CACA,IAAI,aAAa,OAAO,KAAK;CAC7B,IAAI,QAAQ,WAAW,GAAG;EACzB,aAAa,KAAK;GACjB,MAAM;GACN,SAAS,SAAS,MAAM,KAAK;GAC7B;GACA,MAAM,MAAM;EACb,CAAC;EACD;CACD;CACA,OAAO;AACR;AAGA,SAAS,qBAAqB,SAAS,QAAQ;CAC9C,OAAO,OAAO,QAAQ,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,YAAY,iCAAiC,MAAM,IAAI,CAAC,GAAG,OAAO,GAAG,KAAK,IAAI,OAAO,QAAQ,CAAC,EAAA,CAAG,KAAK,KAAK,UAAU,IAAI,QAAQ,WAAW,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,qBAAqB,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3Q;;;;AAIA,SAAS,qBAAqB,eAAe,WAAW;CACvD,MAAM,UAAU,eAAe,QAAQ;CACvC,IAAI,YAAY,KAAK,KAAK,iCAAiC,OAAO,GAAG,OAAO,CAAC;CAC7E,OAAO,qBAAqB,SAAS,SAAS;AAC/C;;;;AAIA,SAAS,wBAAwB,eAAe,MAAM;CACrD,IAAI,UAAU,eAAe;CAC7B,KAAK,MAAM,WAAW,MAAM;EAC3B,IAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,UAAU,SAAS;EAC1E,UAAU,QAAQ;CACnB;CACA,OAAO,YAAY,KAAK,KAAK,iCAAiC,OAAO,IAAI,UAAU,KAAK;AACzF;;;;AAMA,SAAS,gBAAgB,SAAS,SAAS,UAAU;CACpD,QAAQ,QAAQ,MAAhB;EACC,KAAK,eAAe,OAAO;GAC1B,MAAM;GACN,SAAS,wBAAwB,QAAQ,IAAI,iBAAiB,QAAQ,MAAM,KAAK,IAAI,EAAE;EACxF;EACA,KAAK,cAAc,OAAO;GACzB,MAAM;GACN,SAAS,GAAG,iBAAiB,SAAS,KAAK,EAAE,uCAAuC,QAAQ,OAAO;EACpG;EACA,KAAK,cAAc,OAAO;GACzB,MAAM;GACN,SAAS,QAAQ;EAClB;EACA,KAAK,WAAW,OAAO;GACtB,MAAM;GACN,SAAS,yBAAyB,SAAS,SAAS,QAAQ;EAC7D;CACD;AACD;;AAEA,SAAS,iBAAiB,OAAO;CAChC,OAAO,YAAY,UAAU,KAAK;AACnC;;;;AAIA,SAAS,yBAAyB,SAAS,SAAS,UAAU;CAC7D,MAAM,WAAW,iBAAiB,SAAS,KAAK;CAChD,MAAM,YAAY,YAAY,SAAS,QAAQ,SAAS;CACxD,IAAI,cAAc,KAAK,KAAK,SAAS,MAAM,MAAM,SAAS,WAAW,MAAM,SAAS,CAAC,GAAG,OAAO,GAAG,SAAS,QAAQ,QAAQ,cAAc,iBAAiB,QAAQ;CAClK,OAAO,SAAS,YAAY,KAAK,IAAI,WAAW,GAAG,SAAS,UAAU,SAAS;AAChF;AACA,SAAS,WAAW,GAAG,GAAG;CACzB,OAAO,EAAE,SAAS,SAAS,EAAE,SAAS,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;AAC9E;;;;AAIA,SAAS,aAAa,SAAS,eAAe,SAAS;CACtD,MAAM,CAAC,OAAO,aAAa,SAAS,aAAa;CACjD,IAAI,QAAQ,SAAS,YAAY,QAAQ,KAAK,GAAG,OAAO,KAAK;CAC7D,IAAI,CAAC,8BAA8B,QAAQ,IAAI,GAAG,OAAO,KAAK;CAC9D,MAAM,OAAO,iBAAiB,SAAS;EACtC,MAAM;EACN;EACA,MAAM,QAAQ;CACf,CAAC;CACD,IAAI,CAAC,KAAK,MAAM,CAAC,eAAe,SAAS,eAAe,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK;CACpF,OAAO,mBAAmB,KAAK,QAAQ,IAAI;AAC5C;AACA,SAAS,UAAU,SAAS,SAAS;CACpC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,OAAO,GAAG,IAAI,QAAQ,KAAK,GAAG,OAAO;EACtF;EACA;CACD;AACD;;AAEA,SAAS,YAAY,SAAS,KAAK;CAClC,OAAO,UAAU,UAAU,EAAE,cAAc,QAAQ,SAAS,SAAS,QAAQ,QAAQ,GAAG;AACzF;;AAEA,SAAS,cAAc,SAAS,QAAQ;CACvC,OAAO,UAAU,UAAU,EAAE,cAAc,QAAQ,SAAS,WAAW,QAAQ,WAAW,MAAM;AACjG;;AAEA,SAAS,UAAU,SAAS;CAC3B,OAAO,OAAO,OAAO,QAAQ,OAAO,CAAC,CAAC,SAAS,UAAU,MAAM,QAAQ,SAAS,QAAQ,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC;AACjH;AACA,SAAS,OAAO,SAAS;CACxB,OAAO,QAAQ,SAAS,YAAY,OAAO,QAAQ,KAAK,IAAI,QAAQ;AACrE;AACA,SAAS,UAAU,OAAO;CACzB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC7D;;AAEA,SAAS,iBAAiB,SAAS,SAAS;CAC3C,MAAM,QAAQ,QAAQ,SAAS,QAAQ,YAAY,SAAS,QAAQ,GAAG,IAAI,cAAc,SAAS,QAAQ,IAAI;CAC9G,IAAI,UAAU,KAAK,GAAG,OAAO,QAAQ,SAAS,QAAQ,MAAM;EAC3D,MAAM;EACN,KAAK,QAAQ;EACb,OAAO,UAAU,OAAO;CACzB,CAAC,IAAI,MAAM;EACV,MAAM;EACN,QAAQ,QAAQ;CACjB,CAAC;CACD,MAAM,OAAO,OAAO,OAAO;CAC3B,MAAM,OAAO,MAAM,MAAM;CACzB,IAAI,KAAK,SAAS,WAAW,KAAK,WAAW,UAAU;EACtD,MAAM,aAAa,KAAK,SAAS,IAAI;EACrC,OAAO,eAAe,KAAK,IAAI,MAAM;GACpC,MAAM;GACN,SAAS,gDAAgD;EAC1D,CAAC,IAAI,GAAG,UAAU;CACnB;CACA,IAAI;EACH,OAAO,GAAG;GACT,MAAM,WAAW,mBAAmB,MAAM,KAAK,MAAM,KAAK,CAAC;GAC3D,OAAO,KAAK,MAAM,IAAI;EACvB,CAAC;CACF,SAAS,OAAO;EACf,IAAI,gBAAgB,KAAK,GAAG,MAAM;EAClC,OAAO,MAAM;GACZ,MAAM;GACN,SAAS,UAAU,KAAK;EACzB,CAAC;CACF;AACD;;AAEA,SAAS,eAAe,SAAS,eAAe,OAAO;CACtD,IAAI,MAAM,SAAS,eAAe,OAAO,GAAG;EAC3C,MAAM;EACN,OAAO,MAAM;CACd,CAAC;CACD,MAAM,cAAc,QAAQ,OAAO,IAAI,aAAa;CACpD,MAAM,OAAO,aAAa,MAAM,MAAM;CACtC,IAAI,SAAS,KAAK,GAAG,OAAO,MAAM;EACjC,MAAM;EACN;EACA,WAAW,MAAM;EACjB,OAAO,OAAO,KAAK,aAAa,SAAS,CAAC,CAAC;CAC5C,CAAC;CACD,IAAI;EACH,OAAO,GAAG;GACT,MAAM;GACN,OAAO,KAAK,MAAM,KAAK;EACxB,CAAC;CACF,SAAS,OAAO;EACf,IAAI,gBAAgB,KAAK,GAAG,MAAM;EAClC,OAAO,MAAM;GACZ,MAAM;GACN,SAAS,UAAU,KAAK;EACzB,CAAC;CACF;AACD;;AAEA,SAAS,cAAc,SAAS,UAAU;CACzC,OAAO,CAAC,UAAU,GAAG,OAAO,KAAK,QAAQ,OAAO,IAAI,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5E;;AAEA,SAAS,aAAa,SAAS,UAAU;CACxC,MAAM,OAAO,cAAc,SAAS,QAAQ,CAAC,CAAC,SAAS,SAAS;EAC/D,MAAM,UAAU,QAAQ,QAAQ,KAAK,EAAE;EACvC,OAAO,SAAS,SAAS,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;CACnD,CAAC;CACD,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AACzB;;AAEA,SAAS,QAAQ,KAAK;CACrB,OAAO;EACN,MAAM;EACN;EACA,QAAQ,GAAG,IAAI;CAChB;AACD;AACA,MAAM,gBAAgB;CACrB,QAAQ;CACR,SAAS;CACT,QAAQ;AACT;AACA,SAAS,YAAY,SAAS,MAAM;CACnC,MAAM,UAAU,QAAQ,QAAQ,KAAK,EAAE;CACvC,IAAI,SAAS,SAAS,OAAO,OAAO,QAAQ,QAAQ,GAAG;CACvD,IAAI,SAAS,SAAS,WAAW,QAAQ,WAAW,UAAU,OAAO;EACpE,MAAM,QAAQ;EACd,QAAQ,cAAc,QAAQ;CAC/B;CACA,OAAO,OAAO,QAAQ,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,WAAW,MAAM,QAAQ,SAAS,WAAW,MAAM,QAAQ,WAAW,aAAa,QAAQ,QAAQ,MAAM,QAAQ,MAAM,MAAM,WAAW,WAAW,IAAI,EAAE,IAAI;EAC/M,MAAM;EACN,QAAQ,cAAc;CACvB,IAAI,KAAK;AACV;;AAEA,MAAM,kBAAkB;;AAExB,SAAS,cAAc,SAAS,gBAAgB;CAC/C,MAAM,QAAQ,CAAC;CACf,KAAK,MAAM,QAAQ,eAAe,SAAS,cAAc,cAAc,SAAS,SAAS,CAAC,GAAG;EAC5F,MAAM,OAAO,YAAY,SAAS,IAAI;EACtC,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,MAAM,WAAW,WAAW,QAAQ,IAAI,CAAC,GAAG,MAAM,KAAK,IAAI;CAC1F;CACA,OAAO;AACR;AACA,SAAS,UAAU,OAAO;CACzB,OAAO,MAAM,WAAW,IAAI,kBAAkB,MAAM,KAAK,SAAS,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM;AAC3F;;AAEA,SAAS,sBAAsB,SAAS,UAAU;CACjD,OAAO,UAAU,cAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpD"}
|
|
@@ -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-
|
|
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 "./
|
|
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-
|
|
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-
|
|
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-
|
|
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;
|
|
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 {
|
|
479
|
-
//# sourceMappingURL=binder-
|
|
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":";;;;;;;;AAWA,IAAI,YAAY,MAAM;CACrB;;;;CAIA,YAAY,YAAY;EACvB,KAAK,aAAa;CACnB;CACA,IAAI,KAAK;EACR,OAAO,KAAK,WAAW;CACxB;AACD;;;;AAMA,SAAS,gBAAgB,OAAO,WAAW;CAC1C,OAAO,MAAM,mBAAmB,UAAU,IAAI,MAAM,QAAQ,CAAC,EAAE;AAChE;;;;;;;;AAQA,IAAI,8BAA8B,MAAM;CACvC,IAAI,kBAAkB;EACrB,OAAO,KAAK,iBAAiB,KAAK;CACnC;;CAEA;AACD;;;;;;;;;AASA,IAAI,sBAAsB,cAAc,4BAA4B,CAAC;;;;AAMrE,SAAS,OAAO,cAAc,SAAS,YAAY;CAClD,OAAO;EACN;EACA;EACA;CACD;AACD;;;;AAMA,MAAM,yBAAyB;;AAE/B,SAAS,gBAAgB,MAAM;CAC9B,QAAQ,OAAO,SAAS,WAAW,OAAO,IAAI,IAAI,KAAK,UAAU,IAAI,EAAA,CAAG,MAAM,GAAG,sBAAsB;AACxG;;;;AAIA,SAAS,gBAAgB,SAAS,UAAU,MAAM;CACjD,MAAM,gBAAgB,yBAAyB,GAAG,QAAQ,sBAAsB,YAAY,EAAE,MAAM;EACnG;EACA,UAAU,gBAAgB,IAAI;CAC/B,EAAE,CAAC;AACJ;AACA,SAAS,iBAAiB,SAAS,MAAM;CACxC,IAAI,OAAO,SAAS,UAAU,OAAO,gBAAgB,SAAS,YAAY,IAAI;CAC9E,OAAO;AACR;;AAEA,SAAS,mBAAmB,SAAS,MAAM,SAAS,MAAM;CACzD,IAAI,OAAO,SAAS,YAAY,CAAC,QAAQ,KAAK,IAAI,GAAG,OAAO,gBAAgB,SAAS,MAAM,IAAI;CAC/F,OAAO;AACR;AACA,SAAS,kBAAkB,SAAS,MAAM;CACzC,IAAI,OAAO,SAAS,WAAW,OAAO,gBAAgB,SAAS,aAAa,IAAI;CAChF,OAAO;AACR;;AAEA,SAAS,YAAY,OAAO,OAAO;CAClC,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,SAAS,MAAM,OAAO,SAAS,MAAM;AACrG;;AAEA,MAAM,qBAAqB;CAC1B,KAAK,OAAO;CACZ,KAAK,OAAO;AACb;;AAEA,MAAM,cAAc;CACnB,KAAK,EAAE,KAAK;CACZ,KAAK,KAAK,KAAK;AAChB;AACA,SAAS,kBAAkB,SAAS,MAAM,OAAO;CAChD,IAAI,CAAC,YAAY,MAAM,KAAK,GAAG,OAAO,gBAAgB,SAAS,mBAAmB,MAAM,IAAI,MAAM,MAAM,OAAO,IAAI;CACnH,OAAO;AACR;;AAEA,MAAM,cAAc;CACnB,KAAK,EAAE,MAAM;CACb,KAAK,MAAM,MAAM;AAClB;;AAEA,MAAM,4BAA4B;CACjC,KAAK,OAAO,OAAO,gBAAgB;CACnC,KAAK,OAAO,OAAO,gBAAgB;AACpC;AACA,MAAM,uBAAuB;;AAE7B,SAAS,sBAAsB,SAAS,MAAM,OAAO;CACpD,MAAM,WAAW,UAAU,KAAK,IAAI,6BAA6B,iCAAiC,MAAM,IAAI,MAAM,MAAM;CACxH,MAAM,QAAQ,OAAO,mBAAmB,SAAS,MAAM,sBAAsB,QAAQ,CAAC;CACtF,IAAI,UAAU,KAAK,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,OAAO,gBAAgB,SAAS,UAAU,IAAI;CAChH,OAAO;AACR;AACA,MAAM,kCAAkC,IAAI,IAAI;CAC/C;CACA;CACA;AACD,CAAC;;AAED,SAAS,gBAAgB,MAAM;CAC9B,OAAO,gBAAgB,IAAI,IAAI;AAChC;;AAEA,SAAS,gBAAgB,OAAO;CAC/B,OAAO,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,KAAK;AACrD;AACA,SAAS,gBAAgB,SAAS,MAAM;CACvC,IAAI,OAAO,SAAS,YAAY,OAAO,SAAS,IAAI,GAAG,OAAO;CAC9D,IAAI,OAAO,SAAS,YAAY,gBAAgB,IAAI,GAAG,OAAO,OAAO,IAAI;CACzE,OAAO,gBAAgB,SAAS,0DAA0D,IAAI;AAC/F;;;;;;;;;;AAYA,SAAS,gBAAgB,OAAO;CAC/B,IAAI,OAAO,UAAU,UAAU,OAAO,gBAAgB,KAAK;CAC3D,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW,OAAO,OAAO,KAAK;AACjF"}
|