@astrale-os/kernel-protocol 0.5.0-beta.6 → 0.5.0-beta.8
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/errors/payload.d.ts.map +1 -1
- package/dist/errors/payload.js +3 -2
- package/dist/errors/payload.js.map +1 -1
- package/dist/errors/protocol-error.d.ts.map +1 -1
- package/dist/errors/protocol-error.js +4 -2
- package/dist/errors/protocol-error.js.map +1 -1
- package/dist/invocation/admission.d.ts.map +1 -1
- package/dist/invocation/admission.js +2 -5
- package/dist/invocation/admission.js.map +1 -1
- package/dist/invocation/schema.d.ts +1 -1
- package/dist/invocation/schema.d.ts.map +1 -1
- package/dist/invocation/service-reason.d.ts +1 -1
- package/dist/invocation/service-reason.d.ts.map +1 -1
- package/dist/invocation/target.d.ts +2 -2
- package/dist/invocation/target.d.ts.map +1 -1
- package/dist/invocation/websocket/binary.js +1 -1
- package/dist/invocation/websocket/binary.js.map +1 -1
- package/dist/publication/bindings/callable.d.ts.map +1 -1
- package/dist/publication/bindings/callable.js +8 -5
- package/dist/publication/bindings/callable.js.map +1 -1
- package/dist/publication/bindings/view.js +1 -1
- package/dist/publication/bindings/view.js.map +1 -1
- package/dist/publication/bundle-admission.js +12 -12
- package/dist/publication/bundle-admission.js.map +1 -1
- package/dist/publication/bundle.d.ts +1 -1
- package/dist/publication/bundle.d.ts.map +1 -1
- package/dist/publication/bundle.js +3 -3
- package/dist/publication/bundle.js.map +1 -1
- package/dist/publication/delivery/claims.d.ts +1 -1
- package/dist/publication/delivery/claims.d.ts.map +1 -1
- package/dist/publication/manifest.d.ts +2 -2
- package/dist/publication/manifest.d.ts.map +1 -1
- package/dist/publication/manifest.js +10 -5
- package/dist/publication/manifest.js.map +1 -1
- package/dist/publication/publication.js +4 -1
- package/dist/publication/publication.js.map +1 -1
- package/dist/publication/reference.d.ts +1 -1
- package/dist/publication/reference.d.ts.map +1 -1
- package/dist/publication/requirements.d.ts +2 -2
- package/dist/publication/requirements.d.ts.map +1 -1
- package/dist/publication/requirements.js +25 -29
- package/dist/publication/requirements.js.map +1 -1
- package/dist/publication/schema.d.ts +1 -1
- package/dist/publication/schema.d.ts.map +1 -1
- package/dist/routes/admission.js +5 -5
- package/dist/routes/admission.js.map +1 -1
- package/dist/routes/binding.d.ts +3 -3
- package/dist/routes/binding.d.ts.map +1 -1
- package/dist/routes/binding.js +5 -5
- package/dist/routes/binding.js.map +1 -1
- package/dist/routes/compiler.d.ts +2 -2
- package/dist/routes/compiler.d.ts.map +1 -1
- package/dist/routes/compiler.js +12 -9
- package/dist/routes/compiler.js.map +1 -1
- package/dist/routes/decode.d.ts +2 -2
- package/dist/routes/decode.d.ts.map +1 -1
- package/dist/routes/decode.js +15 -19
- package/dist/routes/decode.js.map +1 -1
- package/dist/routes/encode.d.ts +2 -2
- package/dist/routes/encode.d.ts.map +1 -1
- package/dist/routes/encode.js +10 -14
- package/dist/routes/encode.js.map +1 -1
- package/dist/routes/evidence.d.ts +3 -3
- package/dist/routes/evidence.d.ts.map +1 -1
- package/dist/routes/evidence.js +14 -13
- package/dist/routes/evidence.js.map +1 -1
- package/dist/routes/placement.d.ts.map +1 -1
- package/dist/routes/placement.js +1 -1
- package/dist/routes/placement.js.map +1 -1
- package/dist/routes/plan.d.ts +5 -4
- package/dist/routes/plan.d.ts.map +1 -1
- package/dist/routes/request.d.ts.map +1 -1
- package/dist/routes/request.js +3 -1
- package/dist/routes/request.js.map +1 -1
- package/dist/routes/scalar.d.ts +3 -3
- package/dist/routes/scalar.d.ts.map +1 -1
- package/dist/routes/scalar.js +5 -5
- package/dist/routes/scalar.js.map +1 -1
- package/dist/runtime/artifact.d.ts +2 -2
- package/dist/runtime/artifact.d.ts.map +1 -1
- package/dist/runtime/artifact.js +3 -3
- package/dist/runtime/artifact.js.map +1 -1
- package/dist/schema/installation/introspection/codec.js +1 -1
- package/dist/schema/installation/introspection/codec.js.map +1 -1
- package/package.json +21 -9
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { KernelSchema } from '@astrale-os/kernel-core/schema';
|
|
2
1
|
import { AuthorityOperationOrder } from '@astrale-os/kernel-core/schema/authority/operation';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { acceptDefinitionRef, callableAddress, Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
|
+
import { revision } from '@astrale-os/kernel-dsl/v1/schema/revision';
|
|
5
4
|
import { array, deepFreeze, exact, record, unique } from './content.js';
|
|
6
5
|
import { fail } from './error.js';
|
|
7
6
|
export const ClassOperationOrder = Object.freeze([
|
|
@@ -49,13 +48,12 @@ export function validateRequirements(root, closure, requirements) {
|
|
|
49
48
|
const dependencies = exactDependencyClosure(root, closure);
|
|
50
49
|
for (const callable of requirements.capabilities.functions ?? []) {
|
|
51
50
|
const dependency = capabilityOwner(root, dependencies, callable, 'Function');
|
|
52
|
-
|
|
53
|
-
if (!hasCallable(dependency, reference)) {
|
|
51
|
+
if (!hasCallable(dependency, callable)) {
|
|
54
52
|
fail('PUBLICATION_INVALID', 'Function capability requirement names an unknown dependency callable.');
|
|
55
53
|
}
|
|
56
54
|
}
|
|
57
55
|
for (const requirement of requirements.capabilities.classes ?? []) {
|
|
58
|
-
const key = Key.
|
|
56
|
+
const key = Key.of(requirement.class);
|
|
59
57
|
const dependency = capabilityOwner(root, dependencies, key, 'Class');
|
|
60
58
|
if (dependency.classes[requirement.class.name] === undefined) {
|
|
61
59
|
fail('PUBLICATION_INVALID', 'Class capability requirement names an unknown dependency Class.');
|
|
@@ -68,7 +66,7 @@ function exactDependencyClosure(root, closure) {
|
|
|
68
66
|
const visit = (owner) => {
|
|
69
67
|
for (const coordinate of owner.dependencies) {
|
|
70
68
|
const dependency = supplied.get(coordinate.origin);
|
|
71
|
-
if (dependency === undefined ||
|
|
69
|
+
if (dependency === undefined || revision(dependency) !== coordinate.revision) {
|
|
72
70
|
fail('PUBLICATION_INVALID', 'Publication Bundle omits an exact dependency.');
|
|
73
71
|
}
|
|
74
72
|
if (reachable.has(dependency.origin))
|
|
@@ -84,8 +82,10 @@ function admitCallable(input) {
|
|
|
84
82
|
if (typeof input !== 'string' || !Key.is(input)) {
|
|
85
83
|
return fail('PUBLICATION_INVALID', 'Function capability reference is invalid.');
|
|
86
84
|
}
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
try {
|
|
86
|
+
callableAddress(input);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
89
|
return fail('PUBLICATION_INVALID', 'Function capability reference must name a Function or Method.');
|
|
90
90
|
}
|
|
91
91
|
return input;
|
|
@@ -123,16 +123,16 @@ function admitAuthorityOperations(input, kind) {
|
|
|
123
123
|
return Object.freeze(values);
|
|
124
124
|
}
|
|
125
125
|
function admitClassRef(input) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
typeof value.name !== 'string' ||
|
|
132
|
-
!patterns.memberName.test(value.name)) {
|
|
126
|
+
let value;
|
|
127
|
+
try {
|
|
128
|
+
value = acceptDefinitionRef(input);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
133
131
|
fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
|
|
134
132
|
}
|
|
135
|
-
|
|
133
|
+
if (value.kind !== 'class')
|
|
134
|
+
fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
|
|
135
|
+
return value;
|
|
136
136
|
}
|
|
137
137
|
function nonEmpty(input, label) {
|
|
138
138
|
const values = [...array(input, 'PUBLICATION_INVALID')];
|
|
@@ -158,28 +158,24 @@ function compare(left, right) {
|
|
|
158
158
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
159
159
|
}
|
|
160
160
|
function classKey(input) {
|
|
161
|
-
return String(Key.
|
|
161
|
+
return String(Key.of(input));
|
|
162
162
|
}
|
|
163
163
|
function capabilityOwner(root, dependencies, key, label) {
|
|
164
164
|
const origin = Key.origin(key);
|
|
165
165
|
if (origin === root.origin)
|
|
166
166
|
fail('PUBLICATION_INVALID', `${label} capability target cannot be local.`);
|
|
167
|
-
if (origin === KernelSchema.origin)
|
|
168
|
-
return KernelSchema;
|
|
169
167
|
const dependency = dependencies.get(origin);
|
|
170
168
|
if (dependency === undefined) {
|
|
171
169
|
fail('PUBLICATION_INVALID', `${label} capability target must belong to the exact dependency closure.`);
|
|
172
170
|
}
|
|
173
171
|
return dependency;
|
|
174
172
|
}
|
|
175
|
-
function hasCallable(dependency,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
const declaration = ownerKind === 'class' ? dependency.classes[owner] : dependency.interfaces[owner];
|
|
183
|
-
return declaration?.family === 'node' && declaration.methods[method] !== undefined;
|
|
173
|
+
function hasCallable(dependency, callable) {
|
|
174
|
+
const coordinate = callableAddress(callable);
|
|
175
|
+
if (coordinate.kind === 'function')
|
|
176
|
+
return dependency.functions[coordinate.name] !== undefined;
|
|
177
|
+
const declaration = dependency.classes[coordinate.owner.name];
|
|
178
|
+
const method = declaration?.kind === 'node' ? declaration.methods[coordinate.name] : undefined;
|
|
179
|
+
return method !== undefined && method.inheritance !== 'abstract';
|
|
184
180
|
}
|
|
185
181
|
//# sourceMappingURL=requirements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../publication/requirements.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../publication/requirements.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAA;AAC5F,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAA;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAA;AAEpE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,QAAQ;IACR,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;CACA,CAAC,CAAA;AAwBX,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,uCAAuC,CAAC,CAAA;IAClG,KAAK,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAE5D,MAAM,YAAY,GAAG,MAAM,CACzB,YAAY,CAAC,YAAY,EACzB,qBAAqB,EACrB,kDAAkD,CACnD,CAAA;IACD,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAE7E,MAAM,SAAS,GACb,YAAY,CAAC,SAAS,KAAK,SAAS;QAClC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC7F,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,SAAS,EAAE,qBAAqB,EAAE,iCAAiC,CAAC,CAAA;QAC3E,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,kCAAkC,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,OAAO,GACX,YAAY,CAAC,OAAO,KAAK,SAAS;QAChC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IAChG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CACJ,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC7C,qBAAqB,EACrB,8BAA8B,CAC/B,CAAA;QACD,SAAS,CACP,OAAO,EACP,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACrE,+BAA+B,CAChC,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GACT,YAAY,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAE3F,OAAO,UAAU,CAAC;QAChB,YAAY,EAAE;YACZ,GAAG,CAAC,SAAS,KAAK,SAAS;gBACzB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAmC,EAAE,CAAC;YAC9E,GAAG,CAAC,OAAO,KAAK,SAAS;gBACvB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAyC,EAAE,CAAC;YAChF,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;SAC1C;KACF,CAAC,CAAA;AACJ,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB,CAClC,IAAyB,EACzB,OAAuC,EACvC,YAAqC;IAErC,MAAM,YAAY,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1D,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;QAC5E,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CACF,qBAAqB,EACrB,uEAAuE,CACxE,CAAA;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAClE,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QACpE,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7D,IAAI,CAAC,qBAAqB,EAAE,iEAAiE,CAAC,CAAA;QAChG,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAyB,EACzB,OAAuC;IAEvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IACtF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAA;IACxD,MAAM,KAAK,GAAG,CAAC,KAA0B,EAAQ,EAAE;QACjD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAClD,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAC7E,IAAI,CAAC,qBAAqB,EAAE,+CAA+C,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAQ;YAC9C,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAC5C,KAAK,CAAC,UAAU,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,CAAA;IACX,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,qBAAqB,EAAE,2CAA2C,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,CAAC;QACH,eAAe,CAAC,KAA6B,CAAC,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CACT,qBAAqB,EACrB,+DAA+D,CAChE,CAAA;IACH,CAAC;IACD,OAAO,KAA6B,CAAA;AACtC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,WAAW,GAAG,MAAM,CACxB,KAAK,EACL,qBAAqB,EACrB,0CAA0C,CAC3C,CAAA;IACD,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,6BAA6B,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/F,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,4BAA4B,CAAC,CACrD,CAAA;IACrB,MAAM,CAAC,UAAU,EAAE,qBAAqB,EAAE,4BAA4B,CAAC,CAAA;IACvE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,mBAAmB,CAAC,EAAE,6BAA6B,CAAC,CAAA;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;QACvC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAA6B;KAClE,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,KAAK,GAAG,MAAM,CAClB,KAAK,EACL,qBAAqB,EACrB,qDAAqD,CACtD,CAAA;IACD,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAA;IACxD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5D,IAAI,CAAC,qBAAqB,EAAE,yDAAyD,CAAC,CAAA;IACxF,CAAC;IACD,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5C,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc,EACd,IAAwB;IAExB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,kBAAkB,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAChF,cAAc,CAAC,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,IAAI,YAAY,CAAC,CAC3D,CAAA;IACzB,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,kBAAkB,IAAI,YAAY,CAAC,CAAA;IACzE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,IAAI,aAAa,CAAC,CAAA;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAiC,CAAA;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAA6C,CAAA;IACjD,IAAI,CAAC;QACH,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,qBAAqB,EAAE,wCAAwC,CAAC,CAAA;IACvE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,IAAI,CAAC,qBAAqB,EAAE,wCAAwC,CAAC,CAAA;IACjG,OAAO,KAAiB,CAAA;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAa;IAC7C,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAA;IACvD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,qBAAqB,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAA;IACjF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,cAAc,CACrB,KAAc,EACd,UAA4B,EAC5B,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAc,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC,qBAAqB,EAAE,GAAG,KAAK,cAAc,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,KAAc,CAAA;AACvB,CAAC;AAED,SAAS,SAAS,CAChB,MAAwB,EACxB,UAAiD,EACjD,KAAa;IAEb,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3F,IAAI,CAAC,qBAAqB,EAAE,GAAG,KAAK,8BAA8B,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAuB,KAAuB;IAC5D,OAAO,CAAC,IAAW,EAAE,KAAY,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC1F,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa;IAC1C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAe;IAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,eAAe,CACtB,IAAyB,EACzB,YAAsD,EACtD,GAAgB,EAChB,KAAa;IAEb,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM;QACxB,IAAI,CAAC,qBAAqB,EAAE,GAAG,KAAK,qCAAqC,CAAC,CAAA;IAC5E,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CACF,qBAAqB,EACrB,GAAG,KAAK,iEAAiE,CAC1E,CAAA;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,UAA+B,EAAE,QAA8B;IAClF,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS,CAAA;IAC9F,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7D,MAAM,MAAM,GAAG,WAAW,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9F,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,CAAA;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../publication/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../publication/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAIpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;CAClC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUlD"}
|
package/dist/routes/admission.js
CHANGED
|
@@ -2,7 +2,7 @@ import { accept as acceptPortable } from '@astrale-os/kernel-dsl/value';
|
|
|
2
2
|
import { acceptReference } from '../publication/reference.js';
|
|
3
3
|
import { admitRoute } from '../publication/route.js';
|
|
4
4
|
import { fail } from './error.js';
|
|
5
|
-
const
|
|
5
|
+
const AUTH = new Set(['anonymous', 'authenticated', 'authorized']);
|
|
6
6
|
const OUTPUT = new Set(['value', 'stream', 'binary']);
|
|
7
7
|
/** Admit one emitted portable Table before Server composition. */
|
|
8
8
|
export function acceptTable(input) {
|
|
@@ -19,11 +19,11 @@ export function acceptTable(input) {
|
|
|
19
19
|
}
|
|
20
20
|
function acceptRoute(input, origin) {
|
|
21
21
|
const value = object(input, 'Route Table entry');
|
|
22
|
-
exact(value, ['name', 'callable', 'target', '
|
|
22
|
+
exact(value, ['name', 'callable', 'target', 'auth', 'output', 'href', 'method', 'default'], 'Route Table entry', ['requestMethod', 'query', 'headers', 'body', 'credential']);
|
|
23
23
|
if (typeof value.default !== 'boolean')
|
|
24
24
|
invalid('Route Table default');
|
|
25
|
-
if (typeof value.
|
|
26
|
-
invalid('Route Table
|
|
25
|
+
if (typeof value.auth !== 'string' || !AUTH.has(value.auth)) {
|
|
26
|
+
invalid('Route Table auth');
|
|
27
27
|
}
|
|
28
28
|
if (typeof value.output !== 'string' || !OUTPUT.has(value.output))
|
|
29
29
|
invalid('Route Table output');
|
|
@@ -44,7 +44,7 @@ function acceptRoute(input, origin) {
|
|
|
44
44
|
return Object.freeze({
|
|
45
45
|
...common,
|
|
46
46
|
target: target(value.target),
|
|
47
|
-
|
|
47
|
+
auth: value.auth,
|
|
48
48
|
output: value.output,
|
|
49
49
|
default: value.default,
|
|
50
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../routes/admission.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAKvE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,MAAM,
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../routes/admission.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/binding.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type { Publication } from '../publication/publication.js';
|
|
3
3
|
import type { Plan } from './plan.js';
|
|
4
4
|
import type { Table } from './table.js';
|
|
5
|
-
/** Bind one Plan to an exact placed Publication and matching
|
|
6
|
-
export declare function bind(plan: Plan, deployed: Publication,
|
|
5
|
+
/** Bind one Plan to an exact placed Publication and matching resolved Domain. */
|
|
6
|
+
export declare function bind(plan: Plan, deployed: Publication, domain: Domain): Table;
|
|
7
7
|
//# sourceMappingURL=binding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../routes/binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,YAAY,CAAA;AAO9C,
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../routes/binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,YAAY,CAAA;AAO9C,iFAAiF;AACjF,wBAAgB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAwB7E"}
|
package/dist/routes/binding.js
CHANGED
|
@@ -3,13 +3,13 @@ import { reference } from '../publication/reference.js';
|
|
|
3
3
|
import { fail } from './error.js';
|
|
4
4
|
import { place } from './placement.js';
|
|
5
5
|
import { rejectReserved } from './reservation.js';
|
|
6
|
-
/** Bind one Plan to an exact placed Publication and matching
|
|
7
|
-
export function bind(plan, deployed,
|
|
6
|
+
/** Bind one Plan to an exact placed Publication and matching resolved Domain. */
|
|
7
|
+
export function bind(plan, deployed, domain) {
|
|
8
8
|
if (plan.origin !== deployed.origin ||
|
|
9
|
-
plan.origin !==
|
|
9
|
+
plan.origin !== domain.origin ||
|
|
10
10
|
plan.revision !== deployed.schema.revision ||
|
|
11
|
-
plan.revision !==
|
|
12
|
-
fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and
|
|
11
|
+
plan.revision !== domain.revision) {
|
|
12
|
+
fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and Domain identity differ.');
|
|
13
13
|
}
|
|
14
14
|
if (json.serialize(place(plan, deployed.identity.issuer)) !==
|
|
15
15
|
json.serialize(deployed.routes)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../routes/binding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAA;AAMnD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../routes/binding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAA;AAMnD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,iFAAiF;AACjF,MAAM,UAAU,IAAI,CAAC,IAAU,EAAE,QAAqB,EAAE,MAAc;IACpE,IACE,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAC/B,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC7B,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC,QAAQ;QAC1C,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EACjC,CAAC;QACD,IAAI,CAAC,8BAA8B,EAAE,sDAAsD,CAAC,CAAA;IAC9F,CAAC;IACD,IACE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAU,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAe,CAAC,EACxC,CAAC;QACD,IAAI,CAAC,8BAA8B,EAAE,uDAAuD,CAAC,CAAA;IAC/F,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAS,EAAE;QACvD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAA;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAChC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type * as publication from '../publication/index.js';
|
|
3
3
|
import type { Plan } from './plan.js';
|
|
4
4
|
export interface CompileInput {
|
|
5
5
|
readonly routes: readonly publication.HttpRouteDeclaration[];
|
|
6
|
-
readonly
|
|
6
|
+
readonly domain: Domain;
|
|
7
7
|
}
|
|
8
8
|
export declare function compile(input: CompileInput): Plan;
|
|
9
9
|
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../routes/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../routes/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,2BAA2B,CAAA;AAEvE,OAAO,KAAK,KAAK,WAAW,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAa,MAAM,WAAW,CAAA;AAShD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,oBAAoB,EAAE,CAAA;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA0CjD"}
|
package/dist/routes/compiler.js
CHANGED
|
@@ -8,41 +8,44 @@ export function compile(input) {
|
|
|
8
8
|
if (input === null || typeof input !== 'object' || !Array.isArray(input.routes)) {
|
|
9
9
|
throw new TypeError('Route compilation input is invalid.');
|
|
10
10
|
}
|
|
11
|
-
const authored = input.routes.map((entry) => admitRouteDeclaration(entry, input.
|
|
11
|
+
const authored = input.routes.map((entry) => admitRouteDeclaration(entry, input.domain.origin));
|
|
12
12
|
const entries = authored.map((declaration) => {
|
|
13
|
-
const meaning = input.
|
|
13
|
+
const meaning = input.domain.callable(declaration.callable);
|
|
14
14
|
if (meaning === undefined) {
|
|
15
15
|
fail('NATIVE_ROUTE_BINDING_INVALID', `Unknown callable ${declaration.callable}.`);
|
|
16
16
|
}
|
|
17
17
|
const href = placePath(declaration.path, 'https://routes.invalid');
|
|
18
18
|
const route = { ...declaration, href };
|
|
19
19
|
validateTemplate(href);
|
|
20
|
-
validateMapping(route, meaning.
|
|
20
|
+
validateMapping(route, meaning.inputFields, isMethod(meaning) && !meaning.static);
|
|
21
21
|
validateWireMapping(route);
|
|
22
22
|
validateCredentialMapping(route);
|
|
23
23
|
if (route.method === 'GET' && route.body !== undefined) {
|
|
24
24
|
fail('NATIVE_ROUTE_DECLARATION_INVALID', `GET route ${route.name} cannot declare a body.`);
|
|
25
25
|
}
|
|
26
|
-
const target = meaning
|
|
26
|
+
const target = !isMethod(meaning)
|
|
27
27
|
? { kind: 'function' }
|
|
28
|
-
: meaning.
|
|
28
|
+
: meaning.static
|
|
29
29
|
? { kind: 'method', dispatch: 'static' }
|
|
30
30
|
: { kind: 'method', dispatch: 'instance', receiver: route.receiver };
|
|
31
31
|
const { href: _href, receiver: _receiver, ...portable } = route;
|
|
32
32
|
return Object.freeze({
|
|
33
33
|
...portable,
|
|
34
34
|
target,
|
|
35
|
-
|
|
36
|
-
output: meaning.output,
|
|
35
|
+
auth: meaning.auth,
|
|
36
|
+
output: meaning.output.mode,
|
|
37
37
|
path: declaration.path,
|
|
38
38
|
default: declaration.default === true,
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
41
|
rejectCollisions(entries.map((entry) => ({ ...entry, href: placePath(entry.path, 'https://routes.invalid') })));
|
|
42
42
|
return Object.freeze({
|
|
43
|
-
origin: input.
|
|
44
|
-
revision: input.
|
|
43
|
+
origin: input.domain.origin,
|
|
44
|
+
revision: input.domain.revision,
|
|
45
45
|
entries: Object.freeze(entries),
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
+
function isMethod(meaning) {
|
|
49
|
+
return 'owner' in meaning;
|
|
50
|
+
}
|
|
48
51
|
//# sourceMappingURL=compiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../routes/compiler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAOhD,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAA;IAC5D,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../routes/compiler.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/decode.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type { PublicationRef } from '../publication/index.js';
|
|
3
3
|
import type { HttpRequest, Invocation } from './request.js';
|
|
4
4
|
import type { Route } from './table.js';
|
|
5
|
-
export declare function decode(entry: Route, request: HttpRequest,
|
|
5
|
+
export declare function decode(entry: Route, request: HttpRequest, domain: Domain, served: PublicationRef): Invocation;
|
|
6
6
|
//# sourceMappingURL=decode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../routes/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAYvC,wBAAgB,MAAM,CACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../routes/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAYvC,wBAAgB,MAAM,CACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,UAAU,CA2HZ"}
|
package/dist/routes/decode.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NodePath, Path } from '@astrale-os/kernel-core/path';
|
|
2
|
-
import {
|
|
2
|
+
import { callableAddress } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
3
|
import * as portable from '@astrale-os/kernel-dsl/value';
|
|
4
4
|
import { readCredential, specificHeaderWires, withoutCredentialHeaders } from './credential.js';
|
|
5
5
|
import { fail, invalidRequest } from './error.js';
|
|
@@ -10,7 +10,7 @@ import { decodeRouting } from './routing.js';
|
|
|
10
10
|
import { decodeScalar } from './scalar.js';
|
|
11
11
|
import { requiresReceiver } from './target.js';
|
|
12
12
|
import { matchTemplate, PLACEHOLDER } from './template.js';
|
|
13
|
-
export function decode(entry, request,
|
|
13
|
+
export function decode(entry, request, domain, served) {
|
|
14
14
|
if (!methodMatches(entry, request.method))
|
|
15
15
|
invalidRequest('HTTP method does not match the route.');
|
|
16
16
|
const matched = matchTemplate(entry.href, request.url);
|
|
@@ -18,10 +18,10 @@ export function decode(entry, request, validator, served) {
|
|
|
18
18
|
invalidRequest('URL does not match the route template.');
|
|
19
19
|
const values = {};
|
|
20
20
|
for (const [name, value] of Object.entries(matched)) {
|
|
21
|
-
values[name] = decodeScalar(entry, name, value,
|
|
21
|
+
values[name] = decodeScalar(entry, name, value, domain);
|
|
22
22
|
}
|
|
23
23
|
if (entry.requestMethod !== undefined) {
|
|
24
|
-
values[entry.requestMethod] = decodeScalar(entry, entry.requestMethod, request.method.toUpperCase(),
|
|
24
|
+
values[entry.requestMethod] = decodeScalar(entry, entry.requestMethod, request.method.toUpperCase(), domain);
|
|
25
25
|
}
|
|
26
26
|
let url;
|
|
27
27
|
try {
|
|
@@ -41,7 +41,7 @@ export function decode(entry, request, validator, served) {
|
|
|
41
41
|
const found = url.searchParams.getAll(wire);
|
|
42
42
|
if (found.length !== 1)
|
|
43
43
|
invalidRequest(`Query parameter ${wire} must occur exactly once.`);
|
|
44
|
-
values[name] = decodeScalar(entry, name, found[0],
|
|
44
|
+
values[name] = decodeScalar(entry, name, found[0], domain);
|
|
45
45
|
}
|
|
46
46
|
for (const [name, pick] of Object.entries(entry.headers ?? {})) {
|
|
47
47
|
if (pick === '*') {
|
|
@@ -55,12 +55,12 @@ export function decode(entry, request, validator, served) {
|
|
|
55
55
|
const value = headers[pick.toLowerCase()];
|
|
56
56
|
if (value === undefined)
|
|
57
57
|
invalidRequest(`Missing header ${pick}.`);
|
|
58
|
-
values[name] = decodeScalar(entry, name, value,
|
|
58
|
+
values[name] = decodeScalar(entry, name, value, domain);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
if (entry.body === '*') {
|
|
62
62
|
const body = parseJsonObject(request.body);
|
|
63
|
-
const allowed = remainderFields(entry,
|
|
63
|
+
const allowed = remainderFields(entry, domain);
|
|
64
64
|
for (const name of Object.keys(body)) {
|
|
65
65
|
if (!allowed.has(name)) {
|
|
66
66
|
invalidRequest(`JSON body field ${name} is not owned by the route remainder mapping.`);
|
|
@@ -112,19 +112,15 @@ export function decode(entry, request, validator, served) {
|
|
|
112
112
|
}
|
|
113
113
|
throw cause;
|
|
114
114
|
}
|
|
115
|
-
const
|
|
116
|
-
const target =
|
|
115
|
+
const coordinate = callableAddress(entry.callable);
|
|
116
|
+
const target = coordinate.kind === 'method'
|
|
117
117
|
? receiver === undefined
|
|
118
|
-
? Path.staticMethod(Path.project(
|
|
119
|
-
|
|
120
|
-
kind: Ref.namespace(ref),
|
|
121
|
-
name: Ref.member(ref),
|
|
122
|
-
}), Ref.child(ref)).raw
|
|
123
|
-
: Path.instanceMethod(Path.from(receiver), Ref.child(ref)).raw
|
|
118
|
+
? Path.staticMethod(Path.project(coordinate.owner), coordinate.name).raw
|
|
119
|
+
: Path.instanceMethod(Path.from(receiver), coordinate.name).raw
|
|
124
120
|
: Path.project({
|
|
125
|
-
origin:
|
|
121
|
+
origin: coordinate.origin,
|
|
126
122
|
kind: 'function',
|
|
127
|
-
name:
|
|
123
|
+
name: coordinate.name,
|
|
128
124
|
}).raw;
|
|
129
125
|
return Object.freeze({
|
|
130
126
|
call: Object.freeze({ target, input }),
|
|
@@ -132,14 +128,14 @@ export function decode(entry, request, validator, served) {
|
|
|
132
128
|
...(routing === undefined ? {} : { routing }),
|
|
133
129
|
});
|
|
134
130
|
}
|
|
135
|
-
function remainderFields(entry,
|
|
131
|
+
function remainderFields(entry, domain) {
|
|
136
132
|
const claimed = new Set([
|
|
137
133
|
...[...entry.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
|
|
138
134
|
...(entry.requestMethod === undefined ? [] : [entry.requestMethod]),
|
|
139
135
|
...Object.keys(entry.query ?? {}),
|
|
140
136
|
...Object.keys(entry.headers ?? {}),
|
|
141
137
|
]);
|
|
142
|
-
const fields =
|
|
138
|
+
const fields = domain.callable(entry.callable)?.inputFields ?? [];
|
|
143
139
|
const allowed = new Set(fields.filter((name) => !claimed.has(name)));
|
|
144
140
|
const receiver = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
|
|
145
141
|
? entry.target.receiver
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../routes/decode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../routes/decode.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/encode.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type { Invocation, Request } from './request.js';
|
|
3
3
|
import type { Route } from './table.js';
|
|
4
|
-
export declare function encode(entry: Route, invocation: Invocation,
|
|
4
|
+
export declare function encode(entry: Route, invocation: Invocation, domain: Domain): Request;
|
|
5
5
|
//# sourceMappingURL=encode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../routes/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMvD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAevC,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../routes/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMvD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAevC,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAyIpF"}
|
package/dist/routes/encode.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Path } from '@astrale-os/kernel-core/path';
|
|
2
|
-
import {
|
|
2
|
+
import { callableAddress } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
3
|
import * as portable from '@astrale-os/kernel-dsl/value';
|
|
4
4
|
import { firstCredentialIsAmbient, putCredential, specificHeaderWires, withoutCredentialHeaders, } from './credential.js';
|
|
5
5
|
import { fail, invalidRequest } from './error.js';
|
|
@@ -8,26 +8,22 @@ import { encodeStrongEtag, HTTP_ROUTE_ISSUER, HTTP_ROUTE_PUBLICATION } from './r
|
|
|
8
8
|
import { asObject, encodeScalar, scalar } from './scalar.js';
|
|
9
9
|
import { requiresReceiver } from './target.js';
|
|
10
10
|
import { authorityEnd, encodeTemplate, PLACEHOLDER } from './template.js';
|
|
11
|
-
export function encode(entry, invocation,
|
|
11
|
+
export function encode(entry, invocation, domain) {
|
|
12
12
|
const input = asObject(invocation.call.input);
|
|
13
13
|
const target = Path.from(invocation.call.target);
|
|
14
14
|
const needsReceiver = requiresReceiver(entry);
|
|
15
|
-
const
|
|
16
|
-
const methodName =
|
|
15
|
+
const coordinate = callableAddress(entry.callable);
|
|
16
|
+
const methodName = coordinate.kind === 'method' ? coordinate.name : undefined;
|
|
17
17
|
const receiver = needsReceiver ? instanceSource(target, methodName) : undefined;
|
|
18
18
|
const source = receiver?.raw;
|
|
19
19
|
const expected = needsReceiver
|
|
20
20
|
? Path.instanceMethod(receiver, methodName).raw
|
|
21
|
-
:
|
|
22
|
-
? Path.staticMethod(Path.project(
|
|
23
|
-
origin: Key.origin(entry.callable),
|
|
24
|
-
kind: Ref.namespace(ref),
|
|
25
|
-
name: Ref.member(ref),
|
|
26
|
-
}), methodName).raw
|
|
21
|
+
: coordinate.kind === 'method'
|
|
22
|
+
? Path.staticMethod(Path.project(coordinate.owner), methodName).raw
|
|
27
23
|
: Path.project({
|
|
28
|
-
origin:
|
|
24
|
+
origin: coordinate.origin,
|
|
29
25
|
kind: 'function',
|
|
30
|
-
name:
|
|
26
|
+
name: coordinate.name,
|
|
31
27
|
}).raw;
|
|
32
28
|
if (target.raw !== expected)
|
|
33
29
|
invalidRequest('Invocation Path does not match the selected route.');
|
|
@@ -35,7 +31,7 @@ export function encode(entry, invocation, validator) {
|
|
|
35
31
|
? entry.target.receiver
|
|
36
32
|
: undefined;
|
|
37
33
|
const field = (name) => (name === receiverName ? source : input[name]);
|
|
38
|
-
const wireField = (name) => encodeScalar(entry, name, field(name),
|
|
34
|
+
const wireField = (name) => encodeScalar(entry, name, field(name), domain);
|
|
39
35
|
const hostEnd = authorityEnd(entry.href);
|
|
40
36
|
let url = entry.href.replaceAll(PLACEHOLDER, (_whole, name, catchall, offset) => encodeTemplate(wireField(name), catchall, offset < hostEnd));
|
|
41
37
|
const parsed = new URL(url);
|
|
@@ -113,7 +109,7 @@ export function encode(entry, invocation, validator) {
|
|
|
113
109
|
url = parsed.toString();
|
|
114
110
|
const mappedMethod = entry.requestMethod === undefined
|
|
115
111
|
? undefined
|
|
116
|
-
: encodeScalar(entry, entry.requestMethod, input[entry.requestMethod],
|
|
112
|
+
: encodeScalar(entry, entry.requestMethod, input[entry.requestMethod], domain).toUpperCase();
|
|
117
113
|
const requestedMethod = invocation.method?.toUpperCase();
|
|
118
114
|
if (mappedMethod !== undefined &&
|
|
119
115
|
requestedMethod !== undefined &&
|