@dryvcode/author 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +341 -0
- package/dist/behavior/duration.d.ts +7 -0
- package/dist/behavior/duration.d.ts.map +1 -0
- package/dist/behavior/duration.js +20 -0
- package/dist/behavior/duration.js.map +1 -0
- package/dist/behavior/event.d.ts +23 -0
- package/dist/behavior/event.d.ts.map +1 -0
- package/dist/behavior/event.js +57 -0
- package/dist/behavior/event.js.map +1 -0
- package/dist/behavior/failure.d.ts +19 -0
- package/dist/behavior/failure.d.ts.map +1 -0
- package/dist/behavior/failure.js +48 -0
- package/dist/behavior/failure.js.map +1 -0
- package/dist/behavior/index.d.ts +6 -0
- package/dist/behavior/index.d.ts.map +1 -0
- package/dist/behavior/index.js +6 -0
- package/dist/behavior/index.js.map +1 -0
- package/dist/behavior/operation.d.ts +72 -0
- package/dist/behavior/operation.d.ts.map +1 -0
- package/dist/behavior/operation.js +193 -0
- package/dist/behavior/operation.js.map +1 -0
- package/dist/behavior/policy.d.ts +29 -0
- package/dist/behavior/policy.d.ts.map +1 -0
- package/dist/behavior/policy.js +80 -0
- package/dist/behavior/policy.js.map +1 -0
- package/dist/composition/application.d.ts +28 -0
- package/dist/composition/application.d.ts.map +1 -0
- package/dist/composition/application.js +64 -0
- package/dist/composition/application.js.map +1 -0
- package/dist/composition/feature.d.ts +37 -0
- package/dist/composition/feature.d.ts.map +1 -0
- package/dist/composition/feature.js +82 -0
- package/dist/composition/feature.js.map +1 -0
- package/dist/composition/index.d.ts +3 -0
- package/dist/composition/index.d.ts.map +1 -0
- package/dist/composition/index.js +3 -0
- package/dist/composition/index.js.map +1 -0
- package/dist/contracts/behavior.d.ts +106 -0
- package/dist/contracts/behavior.d.ts.map +1 -0
- package/dist/contracts/behavior.js +2 -0
- package/dist/contracts/behavior.js.map +1 -0
- package/dist/contracts/composition.d.ts +20 -0
- package/dist/contracts/composition.d.ts.map +1 -0
- package/dist/contracts/composition.js +2 -0
- package/dist/contracts/composition.js.map +1 -0
- package/dist/contracts/definitions.d.ts +286 -0
- package/dist/contracts/definitions.d.ts.map +1 -0
- package/dist/contracts/definitions.js +35 -0
- package/dist/contracts/definitions.js.map +1 -0
- package/dist/contracts/expressions.d.ts +44 -0
- package/dist/contracts/expressions.d.ts.map +1 -0
- package/dist/contracts/expressions.js +2 -0
- package/dist/contracts/expressions.js.map +1 -0
- package/dist/contracts/foundation.d.ts +141 -0
- package/dist/contracts/foundation.d.ts.map +1 -0
- package/dist/contracts/foundation.js +2 -0
- package/dist/contracts/foundation.js.map +1 -0
- package/dist/contracts/index.d.ts +10 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +10 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/interaction.d.ts +52 -0
- package/dist/contracts/interaction.d.ts.map +1 -0
- package/dist/contracts/interaction.js +2 -0
- package/dist/contracts/interaction.js.map +1 -0
- package/dist/contracts/interfaces.d.ts +73 -0
- package/dist/contracts/interfaces.d.ts.map +1 -0
- package/dist/contracts/interfaces.js +2 -0
- package/dist/contracts/interfaces.js.map +1 -0
- package/dist/contracts/orchestration.d.ts +56 -0
- package/dist/contracts/orchestration.d.ts.map +1 -0
- package/dist/contracts/orchestration.js +2 -0
- package/dist/contracts/orchestration.js.map +1 -0
- package/dist/contracts/project.d.ts +70 -0
- package/dist/contracts/project.d.ts.map +1 -0
- package/dist/contracts/project.js +2 -0
- package/dist/contracts/project.js.map +1 -0
- package/dist/data/index.d.ts +2 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +2 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/storage.d.ts +23 -0
- package/dist/data/storage.d.ts.map +1 -0
- package/dist/data/storage.js +93 -0
- package/dist/data/storage.js.map +1 -0
- package/dist/definitions/expressions/expression.d.ts +49 -0
- package/dist/definitions/expressions/expression.d.ts.map +1 -0
- package/dist/definitions/expressions/expression.js +181 -0
- package/dist/definitions/expressions/expression.js.map +1 -0
- package/dist/definitions/expressions/index.d.ts +2 -0
- package/dist/definitions/expressions/index.d.ts.map +1 -0
- package/dist/definitions/expressions/index.js +2 -0
- package/dist/definitions/expressions/index.js.map +1 -0
- package/dist/definitions/index.d.ts +7 -0
- package/dist/definitions/index.d.ts.map +1 -0
- package/dist/definitions/index.js +7 -0
- package/dist/definitions/index.js.map +1 -0
- package/dist/definitions/properties/advanced.d.ts +27 -0
- package/dist/definitions/properties/advanced.d.ts.map +1 -0
- package/dist/definitions/properties/advanced.js +95 -0
- package/dist/definitions/properties/advanced.js.map +1 -0
- package/dist/definitions/properties/base.d.ts +29 -0
- package/dist/definitions/properties/base.d.ts.map +1 -0
- package/dist/definitions/properties/base.js +60 -0
- package/dist/definitions/properties/base.js.map +1 -0
- package/dist/definitions/properties/composite.d.ts +14 -0
- package/dist/definitions/properties/composite.d.ts.map +1 -0
- package/dist/definitions/properties/composite.js +41 -0
- package/dist/definitions/properties/composite.js.map +1 -0
- package/dist/definitions/properties/enumeration.d.ts +17 -0
- package/dist/definitions/properties/enumeration.d.ts.map +1 -0
- package/dist/definitions/properties/enumeration.js +48 -0
- package/dist/definitions/properties/enumeration.js.map +1 -0
- package/dist/definitions/properties/generic.d.ts +22 -0
- package/dist/definitions/properties/generic.d.ts.map +1 -0
- package/dist/definitions/properties/generic.js +61 -0
- package/dist/definitions/properties/generic.js.map +1 -0
- package/dist/definitions/properties/index.d.ts +12 -0
- package/dist/definitions/properties/index.d.ts.map +1 -0
- package/dist/definitions/properties/index.js +3 -0
- package/dist/definitions/properties/index.js.map +1 -0
- package/dist/definitions/properties/metadata.d.ts +6 -0
- package/dist/definitions/properties/metadata.d.ts.map +1 -0
- package/dist/definitions/properties/metadata.js +4 -0
- package/dist/definitions/properties/metadata.js.map +1 -0
- package/dist/definitions/properties/primitive.d.ts +66 -0
- package/dist/definitions/properties/primitive.d.ts.map +1 -0
- package/dist/definitions/properties/primitive.js +266 -0
- package/dist/definitions/properties/primitive.js.map +1 -0
- package/dist/definitions/properties/property.d.ts +171 -0
- package/dist/definitions/properties/property.d.ts.map +1 -0
- package/dist/definitions/properties/property.js +211 -0
- package/dist/definitions/properties/property.js.map +1 -0
- package/dist/definitions/properties/temporal.d.ts +37 -0
- package/dist/definitions/properties/temporal.d.ts.map +1 -0
- package/dist/definitions/properties/temporal.js +115 -0
- package/dist/definitions/properties/temporal.js.map +1 -0
- package/dist/definitions/schemas/field.d.ts +123 -0
- package/dist/definitions/schemas/field.d.ts.map +1 -0
- package/dist/definitions/schemas/field.js +329 -0
- package/dist/definitions/schemas/field.js.map +1 -0
- package/dist/definitions/schemas/index.d.ts +6 -0
- package/dist/definitions/schemas/index.d.ts.map +1 -0
- package/dist/definitions/schemas/index.js +6 -0
- package/dist/definitions/schemas/index.js.map +1 -0
- package/dist/definitions/schemas/projection.d.ts +90 -0
- package/dist/definitions/schemas/projection.d.ts.map +1 -0
- package/dist/definitions/schemas/projection.js +146 -0
- package/dist/definitions/schemas/projection.js.map +1 -0
- package/dist/definitions/schemas/relation.d.ts +12 -0
- package/dist/definitions/schemas/relation.d.ts.map +1 -0
- package/dist/definitions/schemas/relation.js +27 -0
- package/dist/definitions/schemas/relation.js.map +1 -0
- package/dist/definitions/schemas/schema.d.ts +46 -0
- package/dist/definitions/schemas/schema.d.ts.map +1 -0
- package/dist/definitions/schemas/schema.js +134 -0
- package/dist/definitions/schemas/schema.js.map +1 -0
- package/dist/definitions/schemas/source.d.ts +30 -0
- package/dist/definitions/schemas/source.d.ts.map +1 -0
- package/dist/definitions/schemas/source.js +73 -0
- package/dist/definitions/schemas/source.js.map +1 -0
- package/dist/definitions/types/expressions.d.ts +28 -0
- package/dist/definitions/types/expressions.d.ts.map +1 -0
- package/dist/definitions/types/expressions.js +81 -0
- package/dist/definitions/types/expressions.js.map +1 -0
- package/dist/definitions/types/index.d.ts +4 -0
- package/dist/definitions/types/index.d.ts.map +1 -0
- package/dist/definitions/types/index.js +4 -0
- package/dist/definitions/types/index.js.map +1 -0
- package/dist/definitions/types/parameter.d.ts +9 -0
- package/dist/definitions/types/parameter.d.ts.map +1 -0
- package/dist/definitions/types/parameter.js +24 -0
- package/dist/definitions/types/parameter.js.map +1 -0
- package/dist/definitions/types/spec.d.ts +26 -0
- package/dist/definitions/types/spec.d.ts.map +1 -0
- package/dist/definitions/types/spec.js +74 -0
- package/dist/definitions/types/spec.js.map +1 -0
- package/dist/foundation/declaration.d.ts +24 -0
- package/dist/foundation/declaration.d.ts.map +1 -0
- package/dist/foundation/declaration.js +43 -0
- package/dist/foundation/declaration.js.map +1 -0
- package/dist/foundation/group.d.ts +55 -0
- package/dist/foundation/group.d.ts.map +1 -0
- package/dist/foundation/group.js +199 -0
- package/dist/foundation/group.js.map +1 -0
- package/dist/foundation/index.d.ts +7 -0
- package/dist/foundation/index.d.ts.map +1 -0
- package/dist/foundation/index.js +7 -0
- package/dist/foundation/index.js.map +1 -0
- package/dist/foundation/metadata.d.ts +22 -0
- package/dist/foundation/metadata.d.ts.map +1 -0
- package/dist/foundation/metadata.js +43 -0
- package/dist/foundation/metadata.js.map +1 -0
- package/dist/foundation/ref.d.ts +200 -0
- package/dist/foundation/ref.d.ts.map +1 -0
- package/dist/foundation/ref.js +230 -0
- package/dist/foundation/ref.js.map +1 -0
- package/dist/foundation/scope.d.ts +13 -0
- package/dist/foundation/scope.d.ts.map +1 -0
- package/dist/foundation/scope.js +63 -0
- package/dist/foundation/scope.js.map +1 -0
- package/dist/foundation/value-declaration.d.ts +9 -0
- package/dist/foundation/value-declaration.d.ts.map +1 -0
- package/dist/foundation/value-declaration.js +2 -0
- package/dist/foundation/value-declaration.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/index.d.ts +3 -0
- package/dist/interaction/index.d.ts.map +1 -0
- package/dist/interaction/index.js +3 -0
- package/dist/interaction/index.js.map +1 -0
- package/dist/interaction/part.d.ts +58 -0
- package/dist/interaction/part.d.ts.map +1 -0
- package/dist/interaction/part.js +178 -0
- package/dist/interaction/part.js.map +1 -0
- package/dist/interaction/view.d.ts +34 -0
- package/dist/interaction/view.d.ts.map +1 -0
- package/dist/interaction/view.js +109 -0
- package/dist/interaction/view.js.map +1 -0
- package/dist/interfaces/facet.d.ts +6 -0
- package/dist/interfaces/facet.d.ts.map +1 -0
- package/dist/interfaces/facet.js +2 -0
- package/dist/interfaces/facet.js.map +1 -0
- package/dist/interfaces/http.d.ts +39 -0
- package/dist/interfaces/http.d.ts.map +1 -0
- package/dist/interfaces/http.js +109 -0
- package/dist/interfaces/http.js.map +1 -0
- package/dist/interfaces/index.d.ts +7 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +7 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/representation.d.ts +14 -0
- package/dist/interfaces/representation.d.ts.map +1 -0
- package/dist/interfaces/representation.js +25 -0
- package/dist/interfaces/representation.js.map +1 -0
- package/dist/interfaces/schedule.d.ts +14 -0
- package/dist/interfaces/schedule.d.ts.map +1 -0
- package/dist/interfaces/schedule.js +46 -0
- package/dist/interfaces/schedule.js.map +1 -0
- package/dist/interfaces/surface.d.ts +22 -0
- package/dist/interfaces/surface.d.ts.map +1 -0
- package/dist/interfaces/surface.js +44 -0
- package/dist/interfaces/surface.js.map +1 -0
- package/dist/interfaces/websocket.d.ts +11 -0
- package/dist/interfaces/websocket.d.ts.map +1 -0
- package/dist/interfaces/websocket.js +25 -0
- package/dist/interfaces/websocket.js.map +1 -0
- package/dist/orchestration/index.d.ts +4 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +4 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/steps.d.ts +41 -0
- package/dist/orchestration/steps.d.ts.map +1 -0
- package/dist/orchestration/steps.js +105 -0
- package/dist/orchestration/steps.js.map +1 -0
- package/dist/orchestration/value-source.d.ts +8 -0
- package/dist/orchestration/value-source.d.ts.map +1 -0
- package/dist/orchestration/value-source.js +10 -0
- package/dist/orchestration/value-source.js.map +1 -0
- package/dist/orchestration/workflow.d.ts +38 -0
- package/dist/orchestration/workflow.d.ts.map +1 -0
- package/dist/orchestration/workflow.js +116 -0
- package/dist/orchestration/workflow.js.map +1 -0
- package/dist/project/index.d.ts +2 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +2 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/project.d.ts +27 -0
- package/dist/project/project.d.ts.map +1 -0
- package/dist/project/project.js +161 -0
- package/dist/project/project.js.map +1 -0
- package/dist/project/registry.d.ts +33 -0
- package/dist/project/registry.d.ts.map +1 -0
- package/dist/project/registry.js +58 -0
- package/dist/project/registry.js.map +1 -0
- package/dist/project/snapshot.d.ts +4 -0
- package/dist/project/snapshot.d.ts.map +1 -0
- package/dist/project/snapshot.js +15 -0
- package/dist/project/snapshot.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { requireText } from "../../foundation/metadata.js";
|
|
2
|
+
function normalizeUsage(value) {
|
|
3
|
+
if (value.array !== undefined && value.array !== false) {
|
|
4
|
+
const { min, max } = value.array;
|
|
5
|
+
for (const [name, item] of [
|
|
6
|
+
["min", min],
|
|
7
|
+
["max", max],
|
|
8
|
+
]) {
|
|
9
|
+
if (item !== undefined && (!Number.isInteger(item) || item < 0)) {
|
|
10
|
+
throw new TypeError(`projection array ${name} must be a non-negative integer`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
if (min !== undefined && max !== undefined && min > max) {
|
|
14
|
+
throw new TypeError("projection array min must not exceed max");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
...(value.optional === undefined ? {} : { optional: value.optional }),
|
|
19
|
+
...(value.nullable === undefined ? {} : { nullable: value.nullable }),
|
|
20
|
+
...(value.array === undefined
|
|
21
|
+
? {}
|
|
22
|
+
: {
|
|
23
|
+
array: value.array === false ? false : { ...value.array },
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Author-only projection selector. Pick/omit/rename/usage are intentionally
|
|
29
|
+
* resolved by the compiler into Runtime IR's explicit projection.fields map.
|
|
30
|
+
*/
|
|
31
|
+
export class ProjectionDeclaration {
|
|
32
|
+
#source;
|
|
33
|
+
_purpose = "custom";
|
|
34
|
+
_policies = [];
|
|
35
|
+
_pick;
|
|
36
|
+
_omit;
|
|
37
|
+
_rename = {};
|
|
38
|
+
_usage = {};
|
|
39
|
+
constructor(source) {
|
|
40
|
+
this.#source = source;
|
|
41
|
+
}
|
|
42
|
+
sourceField(name) {
|
|
43
|
+
for (const [source, output] of Object.entries(this._rename)) {
|
|
44
|
+
if (output === name)
|
|
45
|
+
return source;
|
|
46
|
+
}
|
|
47
|
+
return name;
|
|
48
|
+
}
|
|
49
|
+
purpose(value) {
|
|
50
|
+
this._purpose = value;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
read() {
|
|
54
|
+
return this.purpose("read");
|
|
55
|
+
}
|
|
56
|
+
create() {
|
|
57
|
+
return this.purpose("create");
|
|
58
|
+
}
|
|
59
|
+
edit() {
|
|
60
|
+
return this.purpose("edit");
|
|
61
|
+
}
|
|
62
|
+
query() {
|
|
63
|
+
return this.purpose("query");
|
|
64
|
+
}
|
|
65
|
+
custom() {
|
|
66
|
+
return this.purpose("custom");
|
|
67
|
+
}
|
|
68
|
+
policies(...values) {
|
|
69
|
+
this._policies = [...values];
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
pick(...fields) {
|
|
73
|
+
if (this._omit !== undefined) {
|
|
74
|
+
throw new TypeError("projection cannot combine pick and omit selectors");
|
|
75
|
+
}
|
|
76
|
+
if (fields.length === 0) {
|
|
77
|
+
throw new TypeError("projection pick requires at least one field");
|
|
78
|
+
}
|
|
79
|
+
if (new Set(fields).size !== fields.length) {
|
|
80
|
+
throw new TypeError("projection pick fields must be unique");
|
|
81
|
+
}
|
|
82
|
+
this._pick = fields.map((field) => this.sourceField(field));
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
omit(...fields) {
|
|
86
|
+
if (this._pick !== undefined) {
|
|
87
|
+
throw new TypeError("projection cannot combine pick and omit selectors");
|
|
88
|
+
}
|
|
89
|
+
if (fields.length === 0) {
|
|
90
|
+
throw new TypeError("projection omit requires at least one field");
|
|
91
|
+
}
|
|
92
|
+
if (new Set(fields).size !== fields.length) {
|
|
93
|
+
throw new TypeError("projection omit fields must be unique");
|
|
94
|
+
}
|
|
95
|
+
this._omit = fields.map((field) => this.sourceField(field));
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
rename(values) {
|
|
99
|
+
const outputs = new Set();
|
|
100
|
+
for (const [current, output] of Object.entries(values).sort(([a], [b]) => a.localeCompare(b))) {
|
|
101
|
+
if (output === undefined)
|
|
102
|
+
continue;
|
|
103
|
+
const name = requireText(output, "projection output field");
|
|
104
|
+
if (outputs.has(name)) {
|
|
105
|
+
throw new TypeError(`duplicate projection output field: ${name}`);
|
|
106
|
+
}
|
|
107
|
+
outputs.add(name);
|
|
108
|
+
const source = this.sourceField(current);
|
|
109
|
+
this._rename[source] = name;
|
|
110
|
+
}
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
usage(values) {
|
|
114
|
+
const mapped = { ...this._usage };
|
|
115
|
+
for (const [field, usage] of Object.entries(values).sort(([a], [b]) => a.localeCompare(b))) {
|
|
116
|
+
if (usage !== undefined) {
|
|
117
|
+
mapped[this.sourceField(field)] = normalizeUsage(usage);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
this._usage = mapped;
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
toState() {
|
|
124
|
+
return {
|
|
125
|
+
source: this.#source.ref(),
|
|
126
|
+
purpose: this._purpose,
|
|
127
|
+
...(this._policies.length === 0
|
|
128
|
+
? {}
|
|
129
|
+
: { policies: this._policies.map((value) => value.ref()) }),
|
|
130
|
+
selection: {
|
|
131
|
+
...(this._pick === undefined ? {} : { pick: [...this._pick] }),
|
|
132
|
+
...(this._omit === undefined ? {} : { omit: [...this._omit] }),
|
|
133
|
+
...(Object.keys(this._rename).length === 0
|
|
134
|
+
? {}
|
|
135
|
+
: { rename: { ...this._rename } }),
|
|
136
|
+
...(Object.keys(this._usage).length === 0
|
|
137
|
+
? {}
|
|
138
|
+
: { usage: { ...this._usage } }),
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export function projection(source) {
|
|
144
|
+
return new ProjectionDeclaration(source);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/definitions/schemas/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RelationCardinalityState, RelationLifecycleState } from "../../contracts/index.js";
|
|
2
|
+
export declare const relation: Readonly<{
|
|
3
|
+
oneToOne(): RelationCardinalityState;
|
|
4
|
+
oneToMany(): RelationCardinalityState;
|
|
5
|
+
manyToOne(): RelationCardinalityState;
|
|
6
|
+
manyToMany(): RelationCardinalityState;
|
|
7
|
+
restrict(): RelationLifecycleState;
|
|
8
|
+
cascade(): RelationLifecycleState;
|
|
9
|
+
detach(): RelationLifecycleState;
|
|
10
|
+
reset(): RelationLifecycleState;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=relation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../../src/definitions/schemas/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,QAAQ;gBACP,wBAAwB;iBAGvB,wBAAwB;iBAGxB,wBAAwB;kBAGvB,wBAAwB;gBAG1B,sBAAsB;eAGvB,sBAAsB;cAGvB,sBAAsB;aAGvB,sBAAsB;EAG/B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const relation = Object.freeze({
|
|
2
|
+
oneToOne() {
|
|
3
|
+
return "one-to-one";
|
|
4
|
+
},
|
|
5
|
+
oneToMany() {
|
|
6
|
+
return "one-to-many";
|
|
7
|
+
},
|
|
8
|
+
manyToOne() {
|
|
9
|
+
return "many-to-one";
|
|
10
|
+
},
|
|
11
|
+
manyToMany() {
|
|
12
|
+
return "many-to-many";
|
|
13
|
+
},
|
|
14
|
+
restrict() {
|
|
15
|
+
return "restrict";
|
|
16
|
+
},
|
|
17
|
+
cascade() {
|
|
18
|
+
return "cascade";
|
|
19
|
+
},
|
|
20
|
+
detach() {
|
|
21
|
+
return "detach";
|
|
22
|
+
},
|
|
23
|
+
reset() {
|
|
24
|
+
return "reset";
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=relation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../../src/definitions/schemas/relation.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,QAAQ;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,SAAS;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,SAAS;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,UAAU;QACR,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,QAAQ;QACN,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO;QACL,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM;QACJ,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,KAAK;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SchemaRoleState } from "../../contracts/index.js";
|
|
2
|
+
import type { CanonicalValue, ExplanationKindState, SchemaState } from "../../contracts/index.js";
|
|
3
|
+
import { type InferSchemaFields, type SchemaFieldMap } from "./field.js";
|
|
4
|
+
import type { ProjectionDeclaration, ProjectionOutputFields, ProjectionSelectionMap } from "./projection.js";
|
|
5
|
+
import type { StorageFacet } from "../../data/storage.js";
|
|
6
|
+
import { Declaration } from "../../foundation/declaration.js";
|
|
7
|
+
import type { ExpressionRef, RefFieldMap, SchemaRef } from "../../foundation/ref.js";
|
|
8
|
+
export interface SchemaFacetsInput<K extends string = string> {
|
|
9
|
+
readonly storage?: StorageFacet<K>;
|
|
10
|
+
}
|
|
11
|
+
export declare class SchemaDeclaration<TLocal extends SchemaFieldMap = SchemaFieldMap, TEffective extends SchemaFieldMap = TLocal> extends Declaration<"schema"> {
|
|
12
|
+
readonly __fields?: TEffective;
|
|
13
|
+
readonly __value?: InferSchemaFields<TEffective>;
|
|
14
|
+
private _fields;
|
|
15
|
+
private _description?;
|
|
16
|
+
private _role?;
|
|
17
|
+
private _abstract;
|
|
18
|
+
private _extends?;
|
|
19
|
+
private _projection?;
|
|
20
|
+
private _examples;
|
|
21
|
+
private _invariants;
|
|
22
|
+
private _facets?;
|
|
23
|
+
private _tags;
|
|
24
|
+
private _explanations;
|
|
25
|
+
constructor(fieldsValue: TLocal);
|
|
26
|
+
description(value: string): this;
|
|
27
|
+
role(value: SchemaRoleState): this;
|
|
28
|
+
tags(...values: readonly string[]): this;
|
|
29
|
+
explain(kind: ExplanationKindState, text: string): this;
|
|
30
|
+
abstract(value?: boolean): this;
|
|
31
|
+
extends<TParentEffective extends SchemaFieldMap>(value: SchemaRef<TParentEffective>): SchemaDeclaration<TLocal, TEffective & TParentEffective>;
|
|
32
|
+
projection<TSourceFields extends RefFieldMap, TSelection extends ProjectionSelectionMap>(value: ProjectionDeclaration<TSourceFields, TSelection>): SchemaDeclaration<TLocal, TEffective & ProjectionOutputFields<TSelection>>;
|
|
33
|
+
facets(value: SchemaFacetsInput<Extract<keyof TEffective, string>>): this;
|
|
34
|
+
/**
|
|
35
|
+
* A rule every valid value satisfies. Read this schema's fields with
|
|
36
|
+
* `expression.context("value", "fieldName")`.
|
|
37
|
+
*/
|
|
38
|
+
invariant(name: string, rule: ExpressionRef<boolean>, options?: {
|
|
39
|
+
readonly message?: string;
|
|
40
|
+
}): this;
|
|
41
|
+
examples(values: readonly CanonicalValue[]): this;
|
|
42
|
+
add<const T extends SchemaFieldMap>(values: T): SchemaDeclaration<TLocal & T, TEffective & T>;
|
|
43
|
+
toState(): SchemaState;
|
|
44
|
+
}
|
|
45
|
+
export declare function schema<const T extends SchemaFieldMap>(fieldsValue: T): SchemaDeclaration<T, T>;
|
|
46
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/definitions/schemas/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EAIpB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUvD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CACpC;AAED,qBAAa,iBAAiB,CAC5B,MAAM,SAAS,cAAc,GAAG,cAAc,EAC9C,UAAU,SAAS,cAAc,GAAG,MAAM,CAC1C,SAAQ,WAAW,CAAC,QAAQ,CAAC;IAC7B,SAAiB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACvC,SAAiB,OAAO,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACzD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAC,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,WAAW,CAAC,CAGlB;IACF,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAAC,CAA4B;IAC5C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,aAAa,CAA0B;IAE/C,YAAY,WAAW,EAAE,MAAM,EAG9B;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAG/B;IAED,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAGjC;IAED,IAAI,CAAC,GAAG,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAGvC;IAED,OAAO,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGtD;IAED,QAAQ,CAAC,KAAK,UAAO,GAAG,IAAI,CAG3B;IAED,OAAO,CAAC,gBAAgB,SAAS,cAAc,EAC7C,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,GACjC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAAC,CAM1D;IAED,UAAU,CACR,aAAa,SAAS,WAAW,EACjC,UAAU,SAAS,sBAAsB,EAEzC,KAAK,EAAE,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,GACtD,iBAAiB,CAClB,MAAM,EACN,UAAU,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAChD,CASA;IAED,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAMxE;IAED;;;OAGG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,OAAO,GAAE;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAC1C,IAAI,CAoBN;IAED,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAGhD;IAED,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,cAAc,EAChC,MAAM,EAAE,CAAC,GACR,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAG/C;IAEQ,OAAO,IAAI,WAAW,CAoD9B;CACF;AAED,wBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,cAAc,EACnD,WAAW,EAAE,CAAC,GACb,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAEzB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { definitionMetadata } from "../properties/metadata.js";
|
|
2
|
+
import {} from "./field.js";
|
|
3
|
+
import { Declaration } from "../../foundation/declaration.js";
|
|
4
|
+
import { explanation, normalizeTags, optionalDescription, optionalOwner, optionalOrigin, optionalSemanticMetadata, requireText, } from "../../foundation/metadata.js";
|
|
5
|
+
export class SchemaDeclaration extends Declaration {
|
|
6
|
+
_fields;
|
|
7
|
+
_description;
|
|
8
|
+
_role;
|
|
9
|
+
_abstract = false;
|
|
10
|
+
_extends;
|
|
11
|
+
_projection;
|
|
12
|
+
_examples = [];
|
|
13
|
+
_invariants = [];
|
|
14
|
+
_facets;
|
|
15
|
+
_tags = [];
|
|
16
|
+
_explanations = [];
|
|
17
|
+
constructor(fieldsValue) {
|
|
18
|
+
super("schema");
|
|
19
|
+
this._fields = { ...fieldsValue };
|
|
20
|
+
}
|
|
21
|
+
description(value) {
|
|
22
|
+
this._description = requireText(value, "schema description");
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
role(value) {
|
|
26
|
+
this._role = value;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
tags(...values) {
|
|
30
|
+
this._tags = [...normalizeTags(values, "schema tags")];
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
explain(kind, text) {
|
|
34
|
+
this._explanations.push(explanation(kind, text, "schema explanation"));
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
abstract(value = true) {
|
|
38
|
+
this._abstract = value;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
extends(value) {
|
|
42
|
+
this._extends = value;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
projection(value) {
|
|
46
|
+
this._projection = value;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
facets(value) {
|
|
50
|
+
if (value.storage === undefined) {
|
|
51
|
+
throw new TypeError("schema facets requires at least one semantic facet");
|
|
52
|
+
}
|
|
53
|
+
this._facets = value;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A rule every valid value satisfies. Read this schema's fields with
|
|
58
|
+
* `expression.context("value", "fieldName")`.
|
|
59
|
+
*/
|
|
60
|
+
invariant(name, rule, options = {}) {
|
|
61
|
+
const invariantName = requireText(name, "invariant name");
|
|
62
|
+
if (!/^[A-Za-z][A-Za-z0-9]*$/.test(invariantName)) {
|
|
63
|
+
throw new TypeError(`invariant name ${JSON.stringify(invariantName)} must be alphanumeric and start with a letter`);
|
|
64
|
+
}
|
|
65
|
+
if (this._invariants.some((item) => item.name === invariantName)) {
|
|
66
|
+
throw new TypeError(`duplicate invariant ${JSON.stringify(invariantName)}`);
|
|
67
|
+
}
|
|
68
|
+
this._invariants.push({
|
|
69
|
+
name: invariantName,
|
|
70
|
+
rule: rule.ref(),
|
|
71
|
+
...(options.message === undefined
|
|
72
|
+
? {}
|
|
73
|
+
: { message: requireText(options.message, "invariant message") }),
|
|
74
|
+
});
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
examples(values) {
|
|
78
|
+
this._examples = [...values];
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
add(values) {
|
|
82
|
+
this._fields = { ...this._fields, ...values };
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
toState() {
|
|
86
|
+
const projection = this._projection?.toState();
|
|
87
|
+
const storage = this._facets?.storage?.toState();
|
|
88
|
+
if (projection !== undefined) {
|
|
89
|
+
if (this._abstract) {
|
|
90
|
+
throw new TypeError("projected schemas cannot be abstract");
|
|
91
|
+
}
|
|
92
|
+
if (this._extends !== undefined) {
|
|
93
|
+
throw new TypeError("projected schemas cannot extend another schema");
|
|
94
|
+
}
|
|
95
|
+
if (storage !== undefined) {
|
|
96
|
+
throw new TypeError("projected schemas cannot define storage facets");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (storage !== undefined) {
|
|
100
|
+
if (this._abstract && storage.name !== undefined) {
|
|
101
|
+
throw new TypeError("abstract schemas may define inherited storage rules but cannot have a concrete storage name");
|
|
102
|
+
}
|
|
103
|
+
if (!this._abstract && storage.name === undefined) {
|
|
104
|
+
throw new TypeError("concrete schemas using the storage facet require a storage name");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const mapped = {};
|
|
108
|
+
for (const key of Object.keys(this._fields).sort()) {
|
|
109
|
+
mapped[key] = this._fields[key].toState();
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
identity: this.identity,
|
|
113
|
+
kind: "schema",
|
|
114
|
+
...(this._role === undefined ? {} : { role: this._role }),
|
|
115
|
+
fields: mapped,
|
|
116
|
+
...(this._abstract ? { abstract: true } : {}),
|
|
117
|
+
...(this._extends === undefined ? {} : { extends: this._extends.ref() }),
|
|
118
|
+
...(projection === undefined ? {} : { projection }),
|
|
119
|
+
...(storage === undefined ? {} : { facets: { storage } }),
|
|
120
|
+
...(this._invariants.length === 0
|
|
121
|
+
? {}
|
|
122
|
+
: { invariants: [...this._invariants] }),
|
|
123
|
+
...optionalDescription(this._description),
|
|
124
|
+
...definitionMetadata(this._examples),
|
|
125
|
+
...optionalOwner(this._group, this._feature),
|
|
126
|
+
...optionalSemanticMetadata(this._tags, this._explanations),
|
|
127
|
+
...optionalOrigin(this._origin),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export function schema(fieldsValue) {
|
|
132
|
+
return new SchemaDeclaration(fieldsValue);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/definitions/schemas/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { FieldSourceInputState, FieldSourcePurposeState, FieldSourceState } from "../../contracts/index.js";
|
|
2
|
+
import type { OperationRef, SchemaFieldRef, TupleIndex, ValueRefTuple } from "../../foundation/ref.js";
|
|
3
|
+
export declare class SourceInputValue {
|
|
4
|
+
toState(): FieldSourceInputState;
|
|
5
|
+
}
|
|
6
|
+
export declare class SourceInputField {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(resolve: () => SchemaFieldRef<unknown>);
|
|
9
|
+
toState(): FieldSourceInputState;
|
|
10
|
+
}
|
|
11
|
+
export type SourceInput = SourceInputValue | SourceInputField;
|
|
12
|
+
export declare class FieldSourceDeclaration<TInputs extends ValueRefTuple = ValueRefTuple, TOutputs extends ValueRefTuple = ValueRefTuple> {
|
|
13
|
+
#private;
|
|
14
|
+
private _output?;
|
|
15
|
+
private _inputs;
|
|
16
|
+
constructor(purpose: FieldSourcePurposeState, operation: OperationRef<TInputs, TOutputs>);
|
|
17
|
+
output<I extends TupleIndex<TOutputs>>(index: I): this;
|
|
18
|
+
input<I extends TupleIndex<TInputs>>(index: I, sourceInput: SourceInput): this;
|
|
19
|
+
toState(): FieldSourceState;
|
|
20
|
+
}
|
|
21
|
+
declare function sourceValue<TInputs extends ValueRefTuple, TOutputs extends ValueRefTuple>(operation: OperationRef<TInputs, TOutputs>): FieldSourceDeclaration<TInputs, TOutputs>;
|
|
22
|
+
declare function sourceValue(): SourceInputValue;
|
|
23
|
+
export declare const source: Readonly<{
|
|
24
|
+
value: typeof sourceValue;
|
|
25
|
+
resolve<TInputs extends ValueRefTuple, TOutputs extends ValueRefTuple>(operation: OperationRef<TInputs, TOutputs>): FieldSourceDeclaration<TInputs, TOutputs>;
|
|
26
|
+
options<TInputs extends ValueRefTuple, TOutputs extends ValueRefTuple>(operation: OperationRef<TInputs, TOutputs>): FieldSourceDeclaration<TInputs, TOutputs>;
|
|
27
|
+
field(resolve: () => SchemaFieldRef<unknown>): SourceInputField;
|
|
28
|
+
}>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/definitions/schemas/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAEV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,gBAAgB;IAC3B,OAAO,IAAI,qBAAqB,CAE/B;CACF;AAED,qBAAa,gBAAgB;;IAG3B,YAAY,OAAO,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC,EAEjD;IAED,OAAO,IAAI,qBAAqB,CAE/B;CACF;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE9D,qBAAa,sBAAsB,CACjC,OAAO,SAAS,aAAa,GAAG,aAAa,EAC7C,QAAQ,SAAS,aAAa,GAAG,aAAa;;IAI9C,OAAO,CAAC,OAAO,CAAC,CAAsC;IACtD,OAAO,CAAC,OAAO,CAGN;IAET,YACE,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EAI3C;IAED,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAGrD;IAED,KAAK,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EACjC,KAAK,EAAE,CAAC,EACR,WAAW,EAAE,WAAW,GACvB,IAAI,CAMN;IAED,OAAO,IAAI,gBAAgB,CAgB1B;CACF;AAYD,iBAAS,WAAW,CAClB,OAAO,SAAS,aAAa,EAC7B,QAAQ,SAAS,aAAa,EAE9B,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GACzC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC7C,iBAAS,WAAW,IAAI,gBAAgB,CAAC;AAYzC,eAAO,MAAM,MAAM;;YAET,OAAO,SAAS,aAAa,EAAE,QAAQ,SAAS,aAAa,aACxD,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GACzC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC;YAGpC,OAAO,SAAS,aAAa,EAAE,QAAQ,SAAS,aAAa,aACxD,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GACzC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC;mBAG7B,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,gBAAgB;EAG/D,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export class SourceInputValue {
|
|
2
|
+
toState() {
|
|
3
|
+
return { kind: "value" };
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
export class SourceInputField {
|
|
7
|
+
#resolve;
|
|
8
|
+
constructor(resolve) {
|
|
9
|
+
this.#resolve = resolve;
|
|
10
|
+
}
|
|
11
|
+
toState() {
|
|
12
|
+
return { kind: "field", value: this.#resolve().toState() };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class FieldSourceDeclaration {
|
|
16
|
+
#purpose;
|
|
17
|
+
#operation;
|
|
18
|
+
_output;
|
|
19
|
+
_inputs = [];
|
|
20
|
+
constructor(purpose, operation) {
|
|
21
|
+
this.#purpose = purpose;
|
|
22
|
+
this.#operation = operation;
|
|
23
|
+
}
|
|
24
|
+
output(index) {
|
|
25
|
+
this._output = this.#operation.output(index);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
input(index, sourceInput) {
|
|
29
|
+
this._inputs.push({
|
|
30
|
+
target: this.#operation.input(index),
|
|
31
|
+
source: sourceInput,
|
|
32
|
+
});
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
toState() {
|
|
36
|
+
if (this._output === undefined) {
|
|
37
|
+
throw new TypeError("field source requires .output(index)");
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
purpose: this.#purpose,
|
|
41
|
+
output: this._output.toState(),
|
|
42
|
+
...(this._inputs.length === 0
|
|
43
|
+
? {}
|
|
44
|
+
: {
|
|
45
|
+
inputs: this._inputs.map(({ target, source }) => ({
|
|
46
|
+
target: target.toState(),
|
|
47
|
+
source: source.toState(),
|
|
48
|
+
})),
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function operationSource(purpose, operation) {
|
|
54
|
+
return new FieldSourceDeclaration(purpose, operation);
|
|
55
|
+
}
|
|
56
|
+
function sourceValue(operation) {
|
|
57
|
+
return operation === undefined
|
|
58
|
+
? new SourceInputValue()
|
|
59
|
+
: operationSource("value", operation);
|
|
60
|
+
}
|
|
61
|
+
export const source = Object.freeze({
|
|
62
|
+
value: sourceValue,
|
|
63
|
+
resolve(operation) {
|
|
64
|
+
return operationSource("resolve", operation);
|
|
65
|
+
},
|
|
66
|
+
options(operation) {
|
|
67
|
+
return operationSource("options", operation);
|
|
68
|
+
},
|
|
69
|
+
field(resolve) {
|
|
70
|
+
return new SourceInputField(resolve);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/definitions/schemas/source.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,gBAAgB;IAC3B,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IAClB,QAAQ,CAAgC;IAEjD,YAAY,OAAsC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7D,CAAC;CACF;AAID,MAAM,OAAO,sBAAsB;IAIxB,QAAQ,CAA0B;IAClC,UAAU,CAAkC;IAC7C,OAAO,CAAuC;IAC9C,OAAO,GAGT,EAAE,CAAC;IAET,YACE,OAAgC,EAChC,SAA0C;QAE1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,MAAM,CAAiC,KAAQ;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CACH,KAAQ,EACR,WAAwB;QAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAC3B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;wBAChD,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;wBACxB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;qBACzB,CAAC,CAAC;iBACJ,CAAC;SACP,CAAC;IACJ,CAAC;CACF;AAED,SAAS,eAAe,CAItB,OAAgC,EAChC,SAA0C;IAE1C,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC;AASD,SAAS,WAAW,CAIlB,SAA2C;IAE3C,OAAO,SAAS,KAAK,SAAS;QAC5B,CAAC,CAAC,IAAI,gBAAgB,EAAE;QACxB,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,WAAW;IAClB,OAAO,CACL,SAA0C;QAE1C,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CACL,SAA0C;QAE1C,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,OAAsC;QAC1C,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CanonicalScalar, LengthConstraintState, PrimitiveTypeName, PropertyDeclarationKind, QueryDomain } from "../../contracts/index.js";
|
|
2
|
+
import type { InferRefFields, PropertyRef, RefFieldMap, SchemaRef } from "../../foundation/ref.js";
|
|
3
|
+
import type { TypeParameter } from "./parameter.js";
|
|
4
|
+
import { TypeSpec, type InferSpec, type InferSpecMap, type SpecMap } from "./spec.js";
|
|
5
|
+
export declare function string(): TypeSpec<string>;
|
|
6
|
+
export declare function number(): TypeSpec<number>;
|
|
7
|
+
export declare function boolean(): TypeSpec<boolean>;
|
|
8
|
+
export declare function literal<const T extends CanonicalScalar | null>(value: T): TypeSpec<T>;
|
|
9
|
+
export declare function list<T>(value: TypeSpec<T>, length?: LengthConstraintState): TypeSpec<readonly T[]>;
|
|
10
|
+
export declare const array: typeof list;
|
|
11
|
+
export declare function optional<T>(value: TypeSpec<T>): TypeSpec<T | undefined>;
|
|
12
|
+
export declare function required<T>(value: TypeSpec<T>): TypeSpec<Exclude<T, undefined>>;
|
|
13
|
+
export declare function nullable<T>(value: TypeSpec<T>): TypeSpec<T | null>;
|
|
14
|
+
export declare function tupleOf<const T extends readonly TypeSpec<unknown>[]>(...items: T): TypeSpec<{
|
|
15
|
+
readonly [K in keyof T]: InferSpec<T[K]>;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function record<K, V>(keys: TypeSpec<K>, values: TypeSpec<V>): TypeSpec<Readonly<Record<string, V>>>;
|
|
18
|
+
export declare function objectType<const T extends SpecMap>(fields: T): TypeSpec<InferSpecMap<T>>;
|
|
19
|
+
export declare function union<const T extends readonly [
|
|
20
|
+
TypeSpec<unknown>,
|
|
21
|
+
TypeSpec<unknown>,
|
|
22
|
+
...TypeSpec<unknown>[]
|
|
23
|
+
]>(...members: T): TypeSpec<InferSpec<T[number]>>;
|
|
24
|
+
export declare function primitiveType(name: PrimitiveTypeName): TypeSpec<string | number | boolean>;
|
|
25
|
+
export declare function parameter<const N extends string>(value: TypeParameter<N>): TypeSpec<unknown>;
|
|
26
|
+
export declare function ref<K extends PropertyDeclarationKind, T, D extends QueryDomain>(target: PropertyRef<K, T, D>): TypeSpec<T>;
|
|
27
|
+
export declare function ref<TFields extends RefFieldMap>(target: SchemaRef<TFields>): TypeSpec<InferRefFields<TFields>>;
|
|
28
|
+
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/definitions/types/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,EACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,QAAQ,EACR,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAEzC;AAED,wBAAgB,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAEzC;AAED,wBAAgB,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE3C;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,eAAe,GAAG,IAAI,EAC5D,KAAK,EAAE,CAAC,GACP,QAAQ,CAAC,CAAC,CAAC,CAEb;AAED,wBAAgB,IAAI,CAAC,CAAC,EACpB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAClB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAExB;AAED,eAAO,MAAM,KAAK,aAAO,CAAC;AAE1B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAEvE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GACjB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAEjC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAElE;AAED,wBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE,EAClE,GAAG,KAAK,EAAE,CAAC,GACV,QAAQ,CAAC;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAKxD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EACzB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAClB,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAMvC;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,OAAO,EAChD,MAAM,EAAE,CAAC,GACR,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAgB3B;AAED,wBAAgB,KAAK,CACnB,KAAK,CAAC,CAAC,SAAS,SAAS;IACvB,QAAQ,CAAC,OAAO,CAAC;IACjB,QAAQ,CAAC,OAAO,CAAC;IACjB,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE;CACvB,EACD,GAAG,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAK/C;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,iBAAiB,GACtB,QAAQ,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAIrC;AAED,wBAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAC9C,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,QAAQ,CAAC,OAAO,CAAC,CAKnB;AAED,wBAAgB,GAAG,CACjB,CAAC,SAAS,uBAAuB,EACjC,CAAC,EACD,CAAC,SAAS,WAAW,EACrB,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7C,wBAAgB,GAAG,CAAC,OAAO,SAAS,WAAW,EAC7C,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,GACzB,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { TypeSpec, } from "./spec.js";
|
|
2
|
+
export function string() {
|
|
3
|
+
return new TypeSpec({ kind: "primitive", name: "string" });
|
|
4
|
+
}
|
|
5
|
+
export function number() {
|
|
6
|
+
return new TypeSpec({ kind: "primitive", name: "number" });
|
|
7
|
+
}
|
|
8
|
+
export function boolean() {
|
|
9
|
+
return new TypeSpec({ kind: "primitive", name: "boolean" });
|
|
10
|
+
}
|
|
11
|
+
export function literal(value) {
|
|
12
|
+
return new TypeSpec({ kind: "literal", value });
|
|
13
|
+
}
|
|
14
|
+
export function list(value, length) {
|
|
15
|
+
return value.array(length);
|
|
16
|
+
}
|
|
17
|
+
export const array = list;
|
|
18
|
+
export function optional(value) {
|
|
19
|
+
return value.optional();
|
|
20
|
+
}
|
|
21
|
+
export function required(value) {
|
|
22
|
+
return value.required();
|
|
23
|
+
}
|
|
24
|
+
export function nullable(value) {
|
|
25
|
+
return value.nullable();
|
|
26
|
+
}
|
|
27
|
+
export function tupleOf(...items) {
|
|
28
|
+
return new TypeSpec({
|
|
29
|
+
kind: "tuple",
|
|
30
|
+
items: items.map((item) => item.toTypeState()),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function record(keys, values) {
|
|
34
|
+
return new TypeSpec({
|
|
35
|
+
kind: "record",
|
|
36
|
+
keys: keys.toTypeState(),
|
|
37
|
+
values: values.toTypeState(),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function objectType(fields) {
|
|
41
|
+
const requiredFields = [];
|
|
42
|
+
const mapped = {};
|
|
43
|
+
for (const key of Object.keys(fields).sort()) {
|
|
44
|
+
const state = fields[key].toState();
|
|
45
|
+
if (state.default !== undefined) {
|
|
46
|
+
throw new TypeError("object type fields cannot define usage defaults");
|
|
47
|
+
}
|
|
48
|
+
if (state.presence === "required")
|
|
49
|
+
requiredFields.push(key);
|
|
50
|
+
mapped[key] = state.type;
|
|
51
|
+
}
|
|
52
|
+
return new TypeSpec({
|
|
53
|
+
kind: "object",
|
|
54
|
+
fields: mapped,
|
|
55
|
+
required: requiredFields,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function union(...members) {
|
|
59
|
+
return new TypeSpec({
|
|
60
|
+
kind: "union",
|
|
61
|
+
members: members.map((member) => member.toTypeState()),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function primitiveType(name) {
|
|
65
|
+
if (name === "string")
|
|
66
|
+
return string();
|
|
67
|
+
if (name === "boolean")
|
|
68
|
+
return boolean();
|
|
69
|
+
return number();
|
|
70
|
+
}
|
|
71
|
+
export function parameter(value) {
|
|
72
|
+
return new TypeSpec({
|
|
73
|
+
kind: "parameter",
|
|
74
|
+
parameter: value.toState(),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
export function ref(target) {
|
|
78
|
+
const valueTarget = target.ref();
|
|
79
|
+
return new TypeSpec({ kind: "reference", target: valueTarget });
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/definitions/types/expressions.ts"],"names":[],"mappings":"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"}
|