@toa.io/extensions.exposition 1.0.0-alpha.13 → 1.0.0-alpha.15
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/components/identity.bans/manifest.toa.yaml +13 -5
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.roles/manifest.toa.yaml +4 -4
- package/components/identity.roles/operations/grant.d.ts +1 -1
- package/components/identity.roles/operations/grant.js +6 -5
- package/components/identity.roles/operations/grant.js.map +1 -1
- package/components/identity.roles/operations/lib/Entity.d.ts +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +7 -6
- package/components/identity.roles/source/lib/Entity.ts +1 -1
- package/components/identity.tokens/manifest.toa.yaml +1 -0
- package/components/identity.tokens/operations/authenticate.js +5 -2
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +4 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +1 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.ts +5 -2
- package/components/identity.tokens/source/encrypt.ts +4 -1
- package/components/identity.tokens/source/types.ts +1 -2
- package/documentation/access.md +13 -3
- package/documentation/components.md +17 -3
- package/documentation/vary.md +9 -3
- package/features/access.feature +16 -48
- package/features/errors.feature +3 -1
- package/features/identity.bans.feature +128 -0
- package/features/identity.basic.feature +4 -7
- package/features/identity.federation.feature +1 -0
- package/features/identity.roles.feature +54 -1
- package/features/identity.tokens.feature +1 -0
- package/features/io.feature +29 -0
- package/features/steps/Database.ts +16 -10
- package/features/steps/IdP.ts +28 -23
- package/features/steps/components/echo/manifest.toa.yaml +5 -1
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/users/manifest.toa.yaml +0 -1
- package/features/vary.feature +23 -0
- package/package.json +11 -9
- package/source/Directive.ts +3 -1
- package/source/Gateway.ts +1 -1
- package/source/HTTP/exceptions.ts +1 -1
- package/source/RTD/factory.ts +1 -1
- package/source/Tenant.ts +0 -8
- package/source/directives/auth/Authorization.ts +1 -1
- package/source/directives/auth/Delegate.ts +4 -1
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +22 -14
- package/source/directives/auth/types.ts +1 -1
- package/source/directives/cache/Cache.ts +1 -1
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/octets/Octets.ts +1 -1
- package/source/directives/vary/Directive.ts +2 -1
- package/source/directives/vary/Embed.ts +14 -8
- package/source/directives/vary/Vary.ts +6 -4
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/Parameter.ts +14 -0
- package/source/directives/vary/embeddings/index.ts +3 -3
- package/source/exceptions.ts +13 -6
- package/transpiled/Directive.js +3 -1
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Gateway.js +1 -1
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +1 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/RTD/factory.js +1 -1
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/Tenant.d.ts +0 -1
- package/transpiled/Tenant.js +0 -6
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/directives/auth/Authorization.js +1 -1
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.js +3 -1
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +20 -14
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/cache/Cache.js +1 -1
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/octets/Octets.js +1 -1
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/vary/Directive.d.ts +2 -1
- package/transpiled/directives/vary/Embed.d.ts +2 -1
- package/transpiled/directives/vary/Embed.js +8 -6
- package/transpiled/directives/vary/Embed.js.map +1 -1
- package/transpiled/directives/vary/Vary.d.ts +2 -2
- package/transpiled/directives/vary/Vary.js +3 -3
- package/transpiled/directives/vary/Vary.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
- package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
- package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
- package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
- package/transpiled/directives/vary/embeddings/index.js +5 -3
- package/transpiled/directives/vary/embeddings/index.js.map +1 -1
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +7 -1
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Role = void 0;
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
4
8
|
class Role {
|
|
5
9
|
static remote = null;
|
|
6
10
|
roles;
|
|
7
11
|
discovery;
|
|
12
|
+
dynamic;
|
|
8
13
|
constructor(roles, discovery) {
|
|
9
14
|
this.roles = typeof roles === 'string' ? [roles] : roles;
|
|
10
15
|
this.discovery = discovery;
|
|
16
|
+
this.dynamic = this.roles.some((role) => role.includes('{'));
|
|
11
17
|
}
|
|
12
18
|
static async set(identity, discovery) {
|
|
13
19
|
this.remote ??= await discovery;
|
|
@@ -17,30 +23,30 @@ class Role {
|
|
|
17
23
|
};
|
|
18
24
|
identity.roles = await this.remote.invoke('list', { query });
|
|
19
25
|
}
|
|
20
|
-
async authorize(identity) {
|
|
26
|
+
async authorize(identity, _, parameters) {
|
|
21
27
|
if (identity === null)
|
|
22
28
|
return false;
|
|
23
29
|
await Role.set(identity, this.discovery);
|
|
24
|
-
if (identity.roles ===
|
|
30
|
+
if (identity.roles.length === 0) // Role.set()
|
|
25
31
|
return false;
|
|
26
|
-
return this.match(identity.roles);
|
|
32
|
+
return this.match(identity.roles, parameters);
|
|
27
33
|
}
|
|
28
|
-
match(roles) {
|
|
34
|
+
match(roles, parameters) {
|
|
35
|
+
const required = this.dynamic ? this.substitute(parameters) : this.roles;
|
|
29
36
|
for (const role of roles) {
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
37
|
+
const ok = required.some((expected) => expected === role || expected.startsWith(role + ':'));
|
|
38
|
+
if (ok)
|
|
32
39
|
return true;
|
|
33
40
|
}
|
|
34
41
|
return false;
|
|
35
42
|
}
|
|
43
|
+
substitute(parameters) {
|
|
44
|
+
return this.roles.map((role) => role.replaceAll(/{(\w+)}/g, (_, key) => {
|
|
45
|
+
const value = parameters.find((parameter) => parameter.name === key)?.value;
|
|
46
|
+
node_assert_1.default.ok(value !== undefined, `Role '${role}' requires '${key}' route parameter.`);
|
|
47
|
+
return value;
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
36
50
|
}
|
|
37
51
|
exports.Role = Role;
|
|
38
|
-
function compare(expected, actual) {
|
|
39
|
-
const exp = expected.split(':');
|
|
40
|
-
const act = actual.split(':');
|
|
41
|
-
for (let i = 0; i < act.length; i++)
|
|
42
|
-
if (exp[i] !== act[i])
|
|
43
|
-
return false;
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
52
|
//# sourceMappingURL=Role.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../source/directives/auth/Role.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../source/directives/auth/Role.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAKhC,MAAa,IAAI;IACR,MAAM,CAAC,MAAM,GAAqB,IAAI,CAAA;IAC5B,KAAK,CAAU;IACf,SAAS,CAAoB;IAC7B,OAAO,CAAS;IAEjC,YAAoB,KAAwB,EAAE,SAA6B;QACzE,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAE,QAAkB,EAAE,SAA6B;QACxE,IAAI,CAAC,MAAM,KAAK,MAAM,SAAS,CAAA;QAE/B,MAAM,KAAK,GAAU;YACnB,QAAQ,EAAE,aAAa,QAAQ,CAAC,EAAE,EAAE;YACpC,KAAK,EAAE,IAAI;SACZ,CAAA;QAED,QAAQ,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9D,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,QAAyB,EAAE,CAAU,EAAE,UAAuB;QAC7D,IAAI,QAAQ,KAAK,IAAI;YACnB,OAAO,KAAK,CAAA;QAEd,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAExC,IAAI,QAAQ,CAAC,KAAM,CAAC,MAAM,KAAK,CAAC,EAAE,aAAa;YAE7C,OAAO,KAAK,CAAA;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAM,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAE,KAAe,EAAE,UAAuB;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;QAExE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;YAE5F,IAAI,EAAE;gBACJ,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,UAAU,CAAE,UAAuB;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACrE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,CAAA;YAE3E,qBAAM,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,EAC3B,SAAS,IAAI,eAAe,GAAG,oBAAoB,CAAC,CAAA;YAEtD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;;AA3DH,oBA4DC"}
|
|
@@ -9,7 +9,7 @@ class Cache {
|
|
|
9
9
|
create(name, value) {
|
|
10
10
|
const Class = constructors[name];
|
|
11
11
|
if (Class === undefined)
|
|
12
|
-
throw new Error(`Directive '
|
|
12
|
+
throw new Error(`Directive 'cache:${name}' is not implemented.`);
|
|
13
13
|
return new Class(value);
|
|
14
14
|
}
|
|
15
15
|
preflight() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../source/directives/cache/Cache.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AACnC,mCAA+B;AAM/B,MAAa,KAAK;IACA,IAAI,GAAW,OAAO,CAAA;IACtB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAU;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../source/directives/cache/Cache.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AACnC,mCAA+B;AAM/B,MAAa,KAAK;IACA,IAAI,GAAW,OAAO,CAAA;IACtB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAU;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,uBAAuB,CAAC,CAAA;QAElE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,KAAK,CAAC,MAAM,CAClB,UAAuB,EAAE,KAAY,EAAE,QAA8B;QACpE,QAAQ,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,CAAA;QAClC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;CACF;AAtBD,sBAsBC;AAED,MAAM,YAAY,GAAkD;IAClE,OAAO,EAAE,iBAAO;IAChB,KAAK,EAAE,aAAK;CACb,CAAA"}
|
|
@@ -9,7 +9,7 @@ class Development {
|
|
|
9
9
|
create(name, value) {
|
|
10
10
|
const Class = constructors[name];
|
|
11
11
|
if (Class === undefined)
|
|
12
|
-
throw new Error(`Directive '
|
|
12
|
+
throw new Error(`Directive 'dev:${name}' is not implemented.`);
|
|
13
13
|
return new Class(value);
|
|
14
14
|
}
|
|
15
15
|
preflight(directives, input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Development.js","sourceRoot":"","sources":["../../../source/directives/dev/Development.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,mCAA+B;AAK/B,MAAa,WAAW;IACN,IAAI,GAAW,KAAK,CAAA;IACpB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAc;QACzC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Development.js","sourceRoot":"","sources":["../../../source/directives/dev/Development.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,mCAA+B;AAK/B,MAAa,WAAW;IACN,IAAI,GAAW,KAAK,CAAA;IACpB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAc;QACzC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,uBAAuB,CAAC,CAAA;QAEhE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,SAAS,CAAE,UAAuB,EAAE,KAAY;QACrD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAErC,IAAI,MAAM,KAAK,IAAI;gBACjB,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAvBD,kCAuBC;AAED,MAAM,YAAY,GAAkD;IAClE,IAAI,EAAE,WAAI;IACV,KAAK,EAAE,aAAK;CACb,CAAA"}
|
|
@@ -16,7 +16,7 @@ class Octets {
|
|
|
16
16
|
create(name, value, remotes) {
|
|
17
17
|
const Class = DIRECTIVES[name];
|
|
18
18
|
if (Class === undefined)
|
|
19
|
-
throw new Error(`Directive '
|
|
19
|
+
throw new Error(`Directive 'octets:${name}' is not implemented.`);
|
|
20
20
|
this.discovery ??= remotes.discover('octets', 'storage');
|
|
21
21
|
return new Class(value, this.discovery, remotes);
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Octets.js","sourceRoot":"","sources":["../../../source/directives/octets/Octets.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,uCAAmC;AACnC,mCAA+B;AAC/B,mCAA+B;AAC/B,iCAA6B;AAC7B,qCAAiC;AACjC,uCAAmC;AACnC,yCAA8C;AAQ9C,MAAa,MAAM;IACD,IAAI,GAAW,QAAQ,CAAA;IACvB,SAAS,GAAY,KAAK,CAAA;IAElC,SAAS,GAAG,IAAqC,CAAA;IAElD,MAAM,CAAE,IAAY,EAAE,KAAU,EAAE,OAAgB;QACvD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAE9B,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Octets.js","sourceRoot":"","sources":["../../../source/directives/octets/Octets.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,uCAAmC;AACnC,mCAA+B;AAC/B,mCAA+B;AAC/B,iCAA6B;AAC7B,qCAAiC;AACjC,uCAAmC;AACnC,yCAA8C;AAQ9C,MAAa,MAAM;IACD,IAAI,GAAW,QAAQ,CAAA;IACvB,SAAS,GAAY,KAAK,CAAA;IAElC,SAAS,GAAG,IAAqC,CAAA;IAElD,MAAM,CAAE,IAAY,EAAE,KAAU,EAAE,OAAgB;QACvD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAE9B,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,uBAAuB,CAAC,CAAA;QAEnE,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAExD,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,UAAuB,EAAE,KAAY,EAAE,UAAuB;QAC7D,IAAI,OAAO,GAAmB,IAAI,CAAA;QAClC,IAAI,MAAM,GAAqB,IAAI,CAAA;QAEnC,KAAK,MAAM,SAAS,IAAI,UAAU;YAChC,IAAI,SAAS,YAAY,iBAAO;gBAC9B,OAAO,KAAK,SAAS,CAAA;iBAClB,IAAI,MAAM,KAAK,IAAI;gBACtB,MAAM,GAAG,SAAS,CAAA;;gBAElB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAElD,IAAI,MAAM,KAAK,IAAI;YACjB,OAAO,IAAI,CAAA;QAEb,4CAA4C;QAC5C,IAAI,OAAO,KAAK,IAAI;YAClB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAEnD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAA;QAExE,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ;YAC9B,MAAM,IAAI,eAAQ,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAA;QAExF,uCAAuC;QACvC,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;IAClG,CAAC;CACF;AA7CD,wBA6CC;AAED,MAAM,UAAU,GAAgC;IAC9C,OAAO,EAAE,iBAAO;IAChB,KAAK,EAAE,aAAK;IACZ,KAAK,EAAE,aAAK;IACZ,IAAI,EAAE,WAAI;IACV,MAAM,EAAE,eAAM;IACd,OAAO,EAAE,iBAAO;IAChB,QAAQ,EAAE,4BAAiB;CAC5B,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Properties } from './Properties';
|
|
2
2
|
import type { Input } from '../../io';
|
|
3
|
+
import type { Parameter } from '../../RTD';
|
|
3
4
|
export interface Directive {
|
|
4
|
-
preflight: (
|
|
5
|
+
preflight: (context: Input, properties: Properties, parameters: Parameter[]) => void;
|
|
5
6
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { Input } from '../../io';
|
|
2
2
|
import type { Directive } from './Directive';
|
|
3
3
|
import type { Properties } from './Properties';
|
|
4
|
+
import type * as RTD from '../../RTD';
|
|
4
5
|
export declare class Embed implements Directive {
|
|
5
6
|
private readonly embeddings;
|
|
6
7
|
constructor(map: Record<string, string | string[]>);
|
|
7
|
-
preflight(
|
|
8
|
+
preflight(context: Input, properties: Properties, parameters: RTD.Parameter[]): void;
|
|
8
9
|
private resolve;
|
|
9
10
|
private embedding;
|
|
10
11
|
}
|
|
@@ -14,26 +14,28 @@ class Embed {
|
|
|
14
14
|
const instances = names.map((name) => {
|
|
15
15
|
if (name[0] === ':')
|
|
16
16
|
return new embeddings_1.Header(name.slice(1));
|
|
17
|
+
if (name.slice(0, 2) === '/:')
|
|
18
|
+
return new embeddings_1.Parameter(name.slice(2));
|
|
17
19
|
node_assert_1.default.ok(name in embeddings_1.embeddings, `Unknown embedding: ${name}`);
|
|
18
20
|
return new embeddings_1.embeddings[name]();
|
|
19
21
|
});
|
|
20
22
|
this.embeddings.push([key, instances]);
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
|
-
preflight(
|
|
25
|
+
preflight(context, properties, parameters) {
|
|
24
26
|
const values = {};
|
|
25
27
|
for (const [key, instances] of this.embeddings)
|
|
26
|
-
values[key] = this.resolve(instances,
|
|
27
|
-
|
|
28
|
+
values[key] = this.resolve(instances, context, properties, parameters);
|
|
29
|
+
context.pipelines.body.push(this.embedding(values));
|
|
28
30
|
}
|
|
29
|
-
|
|
31
|
+
// eslint-disable-next-line max-params
|
|
32
|
+
resolve(instances, input, properties, parameters) {
|
|
30
33
|
let value;
|
|
31
34
|
for (const instance of instances) {
|
|
32
|
-
value = instance.resolve(input, properties);
|
|
35
|
+
value = instance.resolve(input, properties, parameters);
|
|
33
36
|
if (value !== undefined)
|
|
34
37
|
break;
|
|
35
38
|
}
|
|
36
|
-
node_assert_1.default.ok(value !== undefined, 'Neither embedding resolved a value.');
|
|
37
39
|
return value;
|
|
38
40
|
}
|
|
39
41
|
embedding(values) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Embed.js","sourceRoot":"","sources":["../../../source/directives/vary/Embed.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"Embed.js","sourceRoot":"","sources":["../../../source/directives/vary/Embed.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAChC,6CAA4D;AAO5D,MAAa,KAAK;IACC,UAAU,GAAiC,EAAE,CAAA;IAE9D,YAAoB,GAAsC;QACxD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAEvD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;oBACjB,OAAO,IAAI,mBAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBAElC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI;oBAC3B,OAAO,IAAI,sBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBAErC,qBAAM,CAAC,EAAE,CAAC,IAAI,IAAI,uBAAU,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAA;gBAE3D,OAAO,IAAI,uBAAU,CAAC,IAAI,CAAC,EAAE,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAEM,SAAS,CAAE,OAAc,EAAE,UAAsB,EAAE,UAA2B;QACnF,MAAM,MAAM,GAA4B,EAAE,CAAA;QAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;QAExE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,sCAAsC;IAC9B,OAAO,CAAE,SAAsB,EACrC,KAAY,EACZ,UAAsB,EACtB,UAA2B;QAC3B,IAAI,KAAK,CAAA;QAET,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;YAEvD,IAAI,KAAK,KAAK,SAAS;gBACrB,MAAK;QACT,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,SAAS,CAAE,MAA+B;QAChD,OAAO,CAAC,IAAa,EAAU,EAAE;YAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBACjE,OAAO,MAAM,CAAA;YAEf,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAE3B,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;IACH,CAAC;CACF;AA3DD,sBA2DC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Property } from './Properties';
|
|
2
2
|
import type { Directive } from './Directive';
|
|
3
|
-
import type { DirectiveFamily } from '../../RTD';
|
|
3
|
+
import type { DirectiveFamily, Parameter } from '../../RTD';
|
|
4
4
|
import type { Input, Output } from '../../io';
|
|
5
5
|
export declare class Vary implements DirectiveFamily {
|
|
6
6
|
readonly name = "vary";
|
|
7
7
|
readonly mandatory = false;
|
|
8
8
|
create(name: string, value: unknown): Property | Directive;
|
|
9
|
-
preflight(instances: Array<Directive | Property>,
|
|
9
|
+
preflight(instances: Array<Directive | Property>, context: Input, parameters: Parameter[]): Output;
|
|
10
10
|
}
|
|
@@ -9,10 +9,10 @@ class Vary {
|
|
|
9
9
|
mandatory = false;
|
|
10
10
|
create(name, value) {
|
|
11
11
|
return (0, matchacho_1.match)(name, () => name in Properties_1.properties, (name) => new Properties_1.Property(name, value), () => name in directives, (name) => new directives[name](value), () => {
|
|
12
|
-
throw new Error(`
|
|
12
|
+
throw new Error(`Directive 'vary:${name}' is not implemented.`);
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
|
-
preflight(instances,
|
|
15
|
+
preflight(instances, context, parameters) {
|
|
16
16
|
/*
|
|
17
17
|
To stop constructing `properties` object on each request, Directive Families must be refactored
|
|
18
18
|
from singleton factories to per-Node instances on the Tree.
|
|
@@ -25,7 +25,7 @@ class Vary {
|
|
|
25
25
|
else
|
|
26
26
|
directives.push(instance);
|
|
27
27
|
for (const directive of directives)
|
|
28
|
-
directive.preflight(
|
|
28
|
+
directive.preflight(context, properties, parameters);
|
|
29
29
|
return null;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vary.js","sourceRoot":"","sources":["../../../source/directives/vary/Vary.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,6CAAmD;AACnD,mCAA+B;AAM/B,MAAa,IAAI;IACC,IAAI,GAAG,MAAM,CAAA;IACb,SAAS,GAAG,KAAK,CAAA;IAE1B,MAAM,CAAE,IAAY,EAAE,KAAc;QACzC,OAAO,IAAA,iBAAK,EAAC,IAAI,EACf,GAAG,EAAE,CAAC,IAAI,IAAI,uBAAU,EAAE,CAAC,IAAQ,EAAE,EAAE,CAAC,IAAI,qBAAQ,CAAC,IAAI,EAAE,KAAW,CAAC,EACvE,GAAG,EAAE,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC,IAA6B,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EACxF,GAAG,EAAE;YACH,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Vary.js","sourceRoot":"","sources":["../../../source/directives/vary/Vary.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,6CAAmD;AACnD,mCAA+B;AAM/B,MAAa,IAAI;IACC,IAAI,GAAG,MAAM,CAAA;IACb,SAAS,GAAG,KAAK,CAAA;IAE1B,MAAM,CAAE,IAAY,EAAE,KAAc;QACzC,OAAO,IAAA,iBAAK,EAAC,IAAI,EACf,GAAG,EAAE,CAAC,IAAI,IAAI,uBAAU,EAAE,CAAC,IAAQ,EAAE,EAAE,CAAC,IAAI,qBAAQ,CAAC,IAAI,EAAE,KAAW,CAAC,EACvE,GAAG,EAAE,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC,IAA6B,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EACxF,GAAG,EAAE;YACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,uBAAuB,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,SAAS,CAAE,SAAsC,EACtD,OAAc,EACd,UAAuB;QACvB;;;WAGG;QACH,MAAM,UAAU,GAAe,EAAE,CAAA;QACjC,MAAM,UAAU,GAAgB,EAAE,CAAA;QAElC,KAAK,MAAM,QAAQ,IAAI,SAAS;YAC9B,IAAI,QAAQ,YAAY,qBAAQ;gBAC9B,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAA;;gBAE1C,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE7B,KAAK,MAAM,SAAS,IAAI,UAAU;YAChC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;QAEtD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAlCD,oBAkCC;AAKD,MAAM,UAAU,GAAkD;IAChE,KAAK,EAAE,aAAK;CACb,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Properties } from '../Properties';
|
|
2
2
|
import type { Input } from '../../../io';
|
|
3
|
+
import type { Parameter } from '../../../RTD';
|
|
3
4
|
export interface Embedding {
|
|
4
|
-
resolve: (input: Input, properties: Properties) => string | undefined;
|
|
5
|
+
resolve: (input: Input, properties: Properties, parameters: Parameter[]) => string | undefined;
|
|
5
6
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Embedding } from './Embedding';
|
|
2
|
+
import type * as RTD from '../../../RTD';
|
|
3
|
+
export declare class Parameter implements Embedding {
|
|
4
|
+
private readonly name;
|
|
5
|
+
constructor(name: string);
|
|
6
|
+
resolve(_: unknown, __: unknown, parameters: RTD.Parameter[]): string | undefined;
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Parameter = void 0;
|
|
4
|
+
class Parameter {
|
|
5
|
+
name;
|
|
6
|
+
constructor(name) {
|
|
7
|
+
this.name = name;
|
|
8
|
+
}
|
|
9
|
+
resolve(_, __, parameters) {
|
|
10
|
+
return parameters.find((parameter) => parameter.name === this.name)?.value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.Parameter = Parameter;
|
|
14
|
+
//# sourceMappingURL=Parameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Parameter.js","sourceRoot":"","sources":["../../../../source/directives/vary/embeddings/Parameter.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAS;IACH,IAAI,CAAQ;IAE7B,YAAoB,IAAY;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,OAAO,CAAE,CAAU,EAAE,EAAW,EAAE,UAA2B;QAClE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IAC5E,CAAC;CACF;AAVD,8BAUC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Header } from './Header';
|
|
2
1
|
import type { Embedding } from './Embedding';
|
|
3
2
|
export declare const embeddings: Record<string, new () => Embedding>;
|
|
4
|
-
export { Header };
|
|
5
3
|
export type { Embedding };
|
|
4
|
+
export { Header } from './Header';
|
|
5
|
+
export { Parameter } from './Parameter';
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Header = exports.embeddings = void 0;
|
|
3
|
+
exports.Parameter = exports.Header = exports.embeddings = void 0;
|
|
4
4
|
const Language_1 = require("./Language");
|
|
5
|
-
const Header_1 = require("./Header");
|
|
6
|
-
Object.defineProperty(exports, "Header", { enumerable: true, get: function () { return Header_1.Header; } });
|
|
7
5
|
exports.embeddings = {
|
|
8
6
|
language: Language_1.Language
|
|
9
7
|
};
|
|
8
|
+
var Header_1 = require("./Header");
|
|
9
|
+
Object.defineProperty(exports, "Header", { enumerable: true, get: function () { return Header_1.Header; } });
|
|
10
|
+
var Parameter_1 = require("./Parameter");
|
|
11
|
+
Object.defineProperty(exports, "Parameter", { enumerable: true, get: function () { return Parameter_1.Parameter; } });
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../source/directives/vary/embeddings/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../source/directives/vary/embeddings/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAGxB,QAAA,UAAU,GAAwC;IAC7D,QAAQ,EAAE,mBAAQ;CACnB,CAAA;AAID,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,yCAAuC;AAA9B,sGAAA,SAAS,OAAA"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Exception as HTTPException } from './HTTP';
|
|
2
|
+
import type { Exception } from '@toa.io/core';
|
|
3
|
+
export declare function rethrow(exception: Exception | HTTPException): void;
|
package/transpiled/exceptions.js
CHANGED
|
@@ -26,9 +26,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.rethrow = void 0;
|
|
27
27
|
const matchacho_1 = require("matchacho");
|
|
28
28
|
const http = __importStar(require("./HTTP"));
|
|
29
|
+
const HTTP_1 = require("./HTTP");
|
|
29
30
|
function rethrow(exception) {
|
|
31
|
+
if (exception instanceof HTTP_1.Exception)
|
|
32
|
+
throw exception;
|
|
30
33
|
// see /runtime/core/src/exceptions.js
|
|
31
|
-
throw (0, matchacho_1.match)(exception.code, badRequest, () => new http.BadRequest(exception.message), 302, NOT_FOUND, 303, PRECONDITION_FAILED, 306, () => new http.Conflict(
|
|
34
|
+
throw (0, matchacho_1.match)(exception.code, badRequest, () => new http.BadRequest(exception.message), 302, NOT_FOUND, 303, PRECONDITION_FAILED, 306, () => new http.Conflict(), () => {
|
|
35
|
+
console.error(exception);
|
|
36
|
+
return exception;
|
|
37
|
+
});
|
|
32
38
|
}
|
|
33
39
|
exports.rethrow = rethrow;
|
|
34
40
|
function badRequest(code) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../source/exceptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../source/exceptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAiC;AACjC,6CAA8B;AAC9B,iCAAmD;AAGnD,SAAgB,OAAO,CAAE,SAAoC;IAC3D,IAAI,SAAS,YAAY,gBAAa;QACpC,MAAM,SAAS,CAAA;IAEjB,sCAAsC;IACtC,MAAM,IAAA,iBAAK,EAAC,SAAS,CAAC,IAAI,EACxB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EACxD,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAC9B,GAAG,EAAE;QACH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAExB,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,CAAA;AACN,CAAC;AAfD,0BAeC;AAED,SAAS,UAAU,CAAE,IAAY;IAC/B,OAAO,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,CAAA;AACpD,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;AACrC,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAA"}
|