@toa.io/extensions.exposition 1.0.0-alpha.318 → 1.0.0-alpha.319

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/components/identity.bans/operations/transit.js +6 -6
  2. package/components/identity.bans/source/transit.ts +5 -5
  3. package/components/identity.grants/operations/revoke.js +8 -8
  4. package/components/identity.grants/source/revoke.ts +6 -6
  5. package/components/identity.keys/operations/create.js +7 -7
  6. package/components/identity.keys/operations/disable.js +4 -4
  7. package/components/identity.keys/source/create.ts +6 -6
  8. package/components/identity.keys/source/disable.ts +3 -3
  9. package/components/identity.otp/migrations/0003-unique-username.yaml +34 -0
  10. package/components/identity.passkeys/operations/create.js +11 -11
  11. package/components/identity.passkeys/operations/use.js +6 -6
  12. package/components/identity.passkeys/source/create.ts +10 -10
  13. package/components/identity.passkeys/source/use.ts +5 -5
  14. package/components/identity.roles/operations/grant.js +7 -7
  15. package/components/identity.roles/operations/list.js +2 -2
  16. package/components/identity.roles/source/grant.ts +6 -6
  17. package/components/identity.roles/source/list.ts +2 -2
  18. package/components/identity.tokens/operations/revoke.js +3 -3
  19. package/components/identity.tokens/source/revoke.ts +2 -2
  20. package/package.json +4 -4
  21. package/transpiled/Discovery/Explorer.d.ts +4 -1
  22. package/transpiled/Discovery/Explorer.js +9 -2
  23. package/transpiled/Discovery/Explorer.js.map +1 -1
  24. package/transpiled/Discovery/tree.d.ts +2 -0
  25. package/transpiled/Endpoint.js +1 -1
  26. package/transpiled/Endpoint.js.map +1 -1
  27. package/transpiled/Gateway.js +1 -1
  28. package/transpiled/Gateway.js.map +1 -1
  29. package/transpiled/HTTP/Server.js +7 -0
  30. package/transpiled/HTTP/Server.js.map +1 -1
  31. package/transpiled/HTTP/exceptions.d.ts +3 -0
  32. package/transpiled/HTTP/exceptions.js +5 -0
  33. package/transpiled/HTTP/exceptions.js.map +1 -1
  34. package/transpiled/HTTP/messages.js +2 -1
  35. package/transpiled/HTTP/messages.js.map +1 -1
  36. package/transpiled/MCP/Server.d.ts +5 -0
  37. package/transpiled/MCP/Server.js +8 -0
  38. package/transpiled/MCP/Server.js.map +1 -1
  39. package/transpiled/Mapping.d.ts +1 -1
  40. package/transpiled/Mapping.js +2 -2
  41. package/transpiled/Mapping.js.map +1 -1
  42. package/transpiled/Query.d.ts +9 -1
  43. package/transpiled/Query.js +33 -2
  44. package/transpiled/Query.js.map +1 -1
  45. package/transpiled/directives/cors/CORS.js +9 -1
  46. package/transpiled/directives/cors/CORS.js.map +1 -1
  47. package/transpiled/exceptions.js +5 -1
  48. package/transpiled/exceptions.js.map +1 -1
  49. package/ui/dist/_app/immutable/chunks/{BNMvhEUz.js → 2_kob6rZ.js} +8 -8
  50. package/ui/dist/_app/immutable/chunks/{BtpXMUly.js → DJgzedTC.js} +1 -1
  51. package/ui/dist/_app/immutable/chunks/{B4krdyC2.js → DZLgLFja.js} +2 -2
  52. package/ui/dist/_app/immutable/chunks/{CkIK62AA.js → i2vgl_1B.js} +1 -1
  53. package/ui/dist/_app/immutable/entry/{app.B-R_GJE3.js → app.B__PY1eA.js} +2 -2
  54. package/ui/dist/_app/immutable/entry/start.DMIoqYy7.js +1 -0
  55. package/ui/dist/_app/immutable/nodes/{0.CkEuFt3v.js → 0.CJ3iyeda.js} +1 -1
  56. package/ui/dist/_app/immutable/nodes/{1.txDB_Gch.js → 1.BWBn5QaI.js} +1 -1
  57. package/ui/dist/_app/immutable/nodes/2.BTsgBNkG.js +8 -0
  58. package/ui/dist/_app/immutable/nodes/{3.J51RJk8c.js → 3.C81e564W.js} +1 -1
  59. package/ui/dist/_app/immutable/nodes/{4.CK33uH6s.js → 4.Ck9ITYe_.js} +1 -1
  60. package/ui/dist/_app/immutable/nodes/{5.CfA90vVL.js → 5.D6mfY2w_.js} +1 -1
  61. package/ui/dist/_app/immutable/nodes/{6.DvGe9TLX.js → 6.NPQUU_Ix.js} +1 -1
  62. package/ui/dist/_app/version.json +1 -1
  63. package/ui/dist/index.html +10 -10
  64. package/ui/dist/_app/immutable/entry/start.BT2KXMJY.js +0 -1
  65. package/ui/dist/_app/immutable/nodes/2.GRV8mDjA.js +0 -8
@@ -1,7 +1,7 @@
1
- export function transition(input, object) {
2
- object.banned = input.banned;
3
- object.originator = input.originator.id;
4
- object.comment = input.comment;
5
- return object;
1
+ export function transition(input, entry) {
2
+ entry.banned = input.banned;
3
+ entry.originator = input.originator.id;
4
+ entry.comment = input.comment;
5
+ return entry;
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS90cmFuc2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLE1BQWM7SUFDckQsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUE7SUFDdkMsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO0lBRTlCLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyJ9
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS90cmFuc2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLEtBQWE7SUFDcEQsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQzNCLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUE7SUFDdEMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO0lBRTdCLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyJ9
@@ -1,9 +1,9 @@
1
- export function transition(input: Input, object: Entity): Entity {
2
- object.banned = input.banned
3
- object.originator = input.originator.id
4
- object.comment = input.comment
1
+ export function transition(input: Input, entry: Entity): Entity {
2
+ entry.banned = input.banned
3
+ entry.originator = input.originator.id
4
+ entry.comment = input.comment
5
5
 
6
- return object
6
+ return entry
7
7
  }
8
8
 
9
9
  interface Entity {
@@ -8,19 +8,19 @@ export class Transition {
8
8
  mount(context) {
9
9
  this.keys = context.remote.identity.keys;
10
10
  }
11
- async execute(input, object) {
11
+ async execute(input, entry) {
12
12
  // the id is a route parameter, so a grant of another identity is asked for by anyone
13
13
  // who guesses one; the authority and the identity are what say it is theirs
14
- if (object.VERSION === 0 ||
15
- object.authority !== input.authority ||
16
- object.identity !== input.identity)
14
+ if (entry.VERSION === 0 ||
15
+ entry.authority !== input.authority ||
16
+ entry.identity !== input.identity)
17
17
  return ERR_NOT_FOUND;
18
- if (object.kid !== undefined)
19
- await this.keys.disable({ query: { id: object.kid } });
20
- object.revokedAt = Date.now();
18
+ if (entry.kid !== undefined)
19
+ await this.keys.disable({ query: { id: entry.kid } });
20
+ entry.revokedAt = Date.now();
21
21
  }
22
22
  }
23
23
  const ERR_NOT_FOUND = new (class NotFoundError extends Error {
24
24
  code = 'NOT_FOUND';
25
25
  })();
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3Jldm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDYixJQUFJLENBQXdDO0lBRTdDLEtBQUssQ0FBQyxPQUFnQjtRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQTtJQUMxQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUMvQyxxRkFBcUY7UUFDckYsNEVBQTRFO1FBQzVFLElBQ0UsTUFBTSxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLFNBQVM7WUFDcEMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUTtZQUVsQyxPQUFPLGFBQWEsQ0FBQTtRQUV0QixJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssU0FBUztZQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVwRixNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxhQUFjLFNBQVEsS0FBSztJQUMxQyxJQUFJLEdBQUcsV0FBVyxDQUFBO0NBQ25DLENBQUMsRUFBRSxDQUFBIn0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3Jldm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDYixJQUFJLENBQXdDO0lBRTdDLEtBQUssQ0FBQyxPQUFnQjtRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQTtJQUMxQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFZLEVBQUUsS0FBYTtRQUM5QyxxRkFBcUY7UUFDckYsNEVBQTRFO1FBQzVFLElBQ0UsS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQ25CLEtBQUssQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLFNBQVM7WUFDbkMsS0FBSyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUTtZQUVqQyxPQUFPLGFBQWEsQ0FBQTtRQUV0QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUztZQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVsRixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxhQUFjLFNBQVEsS0FBSztJQUMxQyxJQUFJLEdBQUcsV0FBVyxDQUFBO0NBQ25DLENBQUMsRUFBRSxDQUFBIn0=
@@ -14,19 +14,19 @@ export class Transition implements Operation {
14
14
  this.keys = context.remote.identity.keys
15
15
  }
16
16
 
17
- public async execute(input: Input, object: Entity): Promise<Maybe<void>> {
17
+ public async execute(input: Input, entry: Entity): Promise<Maybe<void>> {
18
18
  // the id is a route parameter, so a grant of another identity is asked for by anyone
19
19
  // who guesses one; the authority and the identity are what say it is theirs
20
20
  if (
21
- object.VERSION === 0 ||
22
- object.authority !== input.authority ||
23
- object.identity !== input.identity
21
+ entry.VERSION === 0 ||
22
+ entry.authority !== input.authority ||
23
+ entry.identity !== input.identity
24
24
  )
25
25
  return ERR_NOT_FOUND
26
26
 
27
- if (object.kid !== undefined) await this.keys.disable({ query: { id: object.kid } })
27
+ if (entry.kid !== undefined) await this.keys.disable({ query: { id: entry.kid } })
28
28
 
29
- object.revokedAt = Date.now()
29
+ entry.revokedAt = Date.now()
30
30
  }
31
31
  }
32
32
 
@@ -1,12 +1,12 @@
1
1
  import { randomBytes } from 'node:crypto';
2
2
  export class Transition {
3
- async execute(input, object) {
4
- object.key = randomBytes(32).toString('base64url');
5
- object.identity = input.identity;
6
- object.label = input.label;
3
+ async execute(input, entry) {
4
+ entry.key = randomBytes(32).toString('base64url');
5
+ entry.identity = input.identity;
6
+ entry.label = input.label;
7
7
  if (input.expires !== undefined)
8
- object.expires = input.expires;
9
- return { id: object.id, label: object.label, key: object.key };
8
+ entry.expires = input.expires;
9
+ return { id: entry.id, label: entry.label, key: entry.key };
10
10
  }
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3pDLE1BQU0sT0FBTyxVQUFVO0lBQ2QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFZLEVBQUUsTUFBVztRQUM1QyxNQUFNLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDbEQsTUFBTSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFBO1FBQ2hDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtRQUUxQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztZQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUUvRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUNoRSxDQUFDO0NBQ0YifQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3pDLE1BQU0sT0FBTyxVQUFVO0lBQ2QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFZLEVBQUUsS0FBVTtRQUMzQyxLQUFLLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDakQsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFBO1FBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtRQUV6QixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztZQUFFLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUM3RCxDQUFDO0NBQ0YifQ==
@@ -1,5 +1,5 @@
1
- export function transition(_, object) {
2
- object.revokedAt ??= Date.now();
3
- return object;
1
+ export function transition(_, entry) {
2
+ entry.revokedAt ??= Date.now();
3
+ return entry;
4
4
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9kaXNhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBVSxFQUFFLE1BQVc7SUFDaEQsTUFBTSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFL0IsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIn0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9kaXNhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBVSxFQUFFLEtBQVU7SUFDL0MsS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFOUIsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDIn0=
@@ -2,14 +2,14 @@ import { randomBytes } from 'node:crypto'
2
2
  import type { Operation } from '@toa.io/bridges.node'
3
3
 
4
4
  export class Transition implements Operation {
5
- public async execute(input: Input, object: Key): Promise<Output> {
6
- object.key = randomBytes(32).toString('base64url')
7
- object.identity = input.identity
8
- object.label = input.label
5
+ public async execute(input: Input, entry: Key): Promise<Output> {
6
+ entry.key = randomBytes(32).toString('base64url')
7
+ entry.identity = input.identity
8
+ entry.label = input.label
9
9
 
10
- if (input.expires !== undefined) object.expires = input.expires
10
+ if (input.expires !== undefined) entry.expires = input.expires
11
11
 
12
- return { id: object.id, label: object.label, key: object.key }
12
+ return { id: entry.id, label: entry.label, key: entry.key }
13
13
  }
14
14
  }
15
15
 
@@ -1,7 +1,7 @@
1
- export function transition(_: unknown, object: Key): Key {
2
- object.revokedAt ??= Date.now()
1
+ export function transition(_: unknown, entry: Key): Key {
2
+ entry.revokedAt ??= Date.now()
3
3
 
4
- return object
4
+ return entry
5
5
  }
6
6
 
7
7
  interface Key {
@@ -0,0 +1,34 @@
1
+ # A username is one identity.
2
+ #
3
+ # `authenticate` finds the record of a username or makes it, and two of them arriving together
4
+ # for a username not yet seen would each make one — two identities behind one username, and
5
+ # which one a later authentication resolves to is whichever the query meets first. With the key
6
+ # unique, the second insert collides and the server retries it as the match it now is.
7
+ #
8
+ # The name is the one 0002 gave it, deliberately: an index whose declaration changed is dropped
9
+ # and made again.
10
+ #
11
+ # A database that already holds a username twice does not take the index, and the component
12
+ # does not start:
13
+ #
14
+ # E11000 duplicate key error collection: <db>.identity_otp index: index_username
15
+ #
16
+ # Which record a username keeps is the deployment's to decide, so this migration leaves the
17
+ # records alone. The one `authenticate` has been resolving to is the oldest. To keep it and
18
+ # tombstone the rest, in mongosh, before deploying:
19
+ #
20
+ # db.identity_otp.aggregate([
21
+ # { $match: { DELETED: null } },
22
+ # { $sort: { CREATED: 1, _id: 1 } },
23
+ # { $group: { _id: { authority: '$authority', username: '$username' }, ids: { $push: '$_id' } } },
24
+ # { $match: { 'ids.1': { $exists: true } } }
25
+ # ]).forEach(({ ids: [, ...rest] }) =>
26
+ # db.identity_otp.updateMany({ _id: { $in: rest } }, { $set: { DELETED: new Date() } }))
27
+ - index:
28
+ name: index_username
29
+ keys:
30
+ authority: asc
31
+ username: asc
32
+ unique: true
33
+ partial:
34
+ DELETED: null
@@ -13,7 +13,7 @@ export class Transition {
13
13
  this.stash = context.stash;
14
14
  this.logs = context.logs;
15
15
  }
16
- async execute(input, object) {
16
+ async execute(input, entry) {
17
17
  const { authority, identity, label, ...response } = input;
18
18
  // rawId is not sent from the client
19
19
  response.rawId = response.id;
@@ -33,15 +33,15 @@ export class Transition {
33
33
  if (!verified.verified || verified.registrationInfo?.credential === undefined)
34
34
  return ERR_INVALID;
35
35
  const reg = verified.registrationInfo;
36
- object.authority = authority;
37
- object.identity = identity;
38
- object.kid = reg.credential.id;
39
- object.aid = reg.aaguid;
40
- object.synced = reg.credentialBackedUp;
41
- object.key = Buffer.from(reg.credential.publicKey).toString('base64url');
42
- object.transports = reg.credential.transports;
43
- object.label = label;
44
- return object;
36
+ entry.authority = authority;
37
+ entry.identity = identity;
38
+ entry.kid = reg.credential.id;
39
+ entry.aid = reg.aaguid;
40
+ entry.synced = reg.credentialBackedUp;
41
+ entry.key = Buffer.from(reg.credential.publicKey).toString('base64url');
42
+ entry.transports = reg.credential.transports;
43
+ entry.label = label;
44
+ return entry;
45
45
  }
46
46
  async verifyChallenge(authority, challenge) {
47
47
  const n = await this.stash.del(`challenge:${authority}:${challenge}`);
@@ -54,4 +54,4 @@ const ERR_FAILED = new (class FailedError extends Error {
54
54
  const ERR_INVALID = new (class InvalidError extends Error {
55
55
  code = 'INVALID';
56
56
  })();
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMEJBQTBCLEVBRTNCLE1BQU0sd0JBQXdCLENBQUE7QUFJL0IsOEhBQThIO0FBRTlILE1BQU0sT0FBTyxVQUFVO0lBQ2IsVUFBVSxDQUFXO0lBQ3JCLEtBQUssQ0FBbUI7SUFDeEIsSUFBSSxDQUFrQjtJQUN0QixZQUFZLENBQVU7SUFDdEIsUUFBUSxDQUFVO0lBRW5CLEtBQUssQ0FBQyxPQUFnQjtRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFBO1FBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFBO1FBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFBO1FBQzlELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7SUFDMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBWSxFQUFFLE1BQWU7UUFDaEQsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFBO1FBRXpELG9DQUFvQztRQUNwQyxRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUE7UUFFNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQztZQUNoRCxRQUFRO1lBQ1IsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQzVCLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztZQUNsRixxQkFBcUIsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN0Qyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMxQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUVoRixPQUFPLFVBQW1CLENBQUE7UUFDNUIsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLFFBQVEsWUFBWSxLQUFLO1lBQUUsT0FBTyxRQUFRLENBQUE7UUFFOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsS0FBSyxTQUFTO1lBQzNFLE9BQU8sV0FBVyxDQUFBO1FBRXBCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQTtRQUVyQyxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUM1QixNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUMxQixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFBO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtRQUN2QixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQTtRQUN0QyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDeEUsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQTtRQUM3QyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUVwQixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDaEUsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXJFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxXQUFZLFNBQVEsS0FBSztJQUNyQyxJQUFJLEdBQUcsUUFBUSxDQUFBO0NBQ2hDLENBQUMsRUFBRSxDQUFBO0FBRUosTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sWUFBYSxTQUFRLEtBQUs7SUFDdkMsSUFBSSxHQUFHLFNBQVMsQ0FBQTtDQUNqQyxDQUFDLEVBQUUsQ0FBQSJ9
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMEJBQTBCLEVBRTNCLE1BQU0sd0JBQXdCLENBQUE7QUFJL0IsOEhBQThIO0FBRTlILE1BQU0sT0FBTyxVQUFVO0lBQ2IsVUFBVSxDQUFXO0lBQ3JCLEtBQUssQ0FBbUI7SUFDeEIsSUFBSSxDQUFrQjtJQUN0QixZQUFZLENBQVU7SUFDdEIsUUFBUSxDQUFVO0lBRW5CLEtBQUssQ0FBQyxPQUFnQjtRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFBO1FBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFBO1FBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFBO1FBQzlELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7SUFDMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBWSxFQUFFLEtBQWM7UUFDL0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFBO1FBRXpELG9DQUFvQztRQUNwQyxRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUE7UUFFNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQztZQUNoRCxRQUFRO1lBQ1IsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQzVCLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztZQUNsRixxQkFBcUIsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN0Qyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMxQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUVoRixPQUFPLFVBQW1CLENBQUE7UUFDNUIsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLFFBQVEsWUFBWSxLQUFLO1lBQUUsT0FBTyxRQUFRLENBQUE7UUFFOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsS0FBSyxTQUFTO1lBQzNFLE9BQU8sV0FBVyxDQUFBO1FBRXBCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQTtRQUVyQyxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMzQixLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN6QixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFBO1FBQzdCLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtRQUN0QixLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQTtRQUNyQyxLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdkUsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQTtRQUM1QyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUVuQixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDaEUsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXJFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxXQUFZLFNBQVEsS0FBSztJQUNyQyxJQUFJLEdBQUcsUUFBUSxDQUFBO0NBQ2hDLENBQUMsRUFBRSxDQUFBO0FBRUosTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sWUFBYSxTQUFRLEtBQUs7SUFDdkMsSUFBSSxHQUFHLFNBQVMsQ0FBQTtDQUNqQyxDQUFDLEVBQUUsQ0FBQSJ9
@@ -10,16 +10,16 @@ export class Transition {
10
10
  this.verification = context.configuration.verification === 'required';
11
11
  this.presence = context.configuration.residence === 'required';
12
12
  }
13
- async execute(input, object) {
13
+ async execute(input, entry) {
14
14
  const { origin, ...rest } = input;
15
15
  const response = { ...rest, rawId: input.id };
16
- const credential = toCredential(object);
16
+ const credential = toCredential(entry);
17
17
  const verified = await verifyAuthenticationResponse({
18
18
  response,
19
19
  credential,
20
20
  expectedOrigin: origin,
21
21
  expectedRPID: new URL(origin).hostname,
22
- expectedChallenge: async (challenge) => this.verifyChallenge(object.authority, challenge),
22
+ expectedChallenge: async (challenge) => this.verifyChallenge(entry.authority, challenge),
23
23
  requireUserVerification: this.verification
24
24
  }).catch((e) => {
25
25
  this.logs.info('Failed to verify authentication response', { message: e.message });
@@ -29,8 +29,8 @@ export class Transition {
29
29
  return verified;
30
30
  if (!verified.verified)
31
31
  return ERR_INVALID;
32
- object.counter = verified.authenticationInfo.newCounter;
33
- return object.identity;
32
+ entry.counter = verified.authenticationInfo.newCounter;
33
+ return entry.identity;
34
34
  }
35
35
  async verifyChallenge(authority, challenge) {
36
36
  const key = `challenge:${authority}:${challenge}`;
@@ -53,4 +53,4 @@ const ERR_FAILED = new (class FailedError extends Error {
53
53
  const ERR_INVALID = new (class InvalidError extends Error {
54
54
  code = 'INVALID';
55
55
  })();
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3VzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQVFyRSxNQUFNLE9BQU8sVUFBVTtJQUNiLEtBQUssQ0FBbUI7SUFDeEIsSUFBSSxDQUFrQjtJQUN0QixZQUFZLENBQVU7SUFDdEIsUUFBUSxDQUFVO0lBRW5CLEtBQUssQ0FBQyxPQUFnQjtRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFBO1FBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFBO0lBQ2hFLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQVksRUFBRSxNQUFlO1FBQ2hELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDakMsTUFBTSxRQUFRLEdBQStCLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQTtRQUN6RSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQztZQUNsRCxRQUFRO1lBQ1IsVUFBVTtZQUNWLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRO1lBQ3RDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO1lBQ25ELHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZO1NBQzNDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBRWxGLE9BQU8sVUFBbUIsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksUUFBUSxZQUFZLEtBQUs7WUFBRSxPQUFPLFFBQVEsQ0FBQTtRQUU5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFBRSxPQUFPLFdBQVcsQ0FBQTtRQUUxQyxNQUFNLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUE7UUFFdkQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFBO0lBQ3hCLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDaEUsTUFBTSxHQUFHLEdBQUcsYUFBYSxTQUFTLElBQUksU0FBUyxFQUFFLENBQUE7UUFDakQsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXJFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRW5GLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQixDQUFDO0NBQ0Y7QUFFRCxTQUFTLFlBQVksQ0FBQyxPQUFnQjtJQUNwQyxPQUFPO1FBQ0wsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2QsU0FBUyxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO0tBQy9CLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sV0FBWSxTQUFRLEtBQUs7SUFDckMsSUFBSSxHQUFHLFFBQVEsQ0FBQTtDQUNoQyxDQUFDLEVBQUUsQ0FBQTtBQUVKLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLFlBQWEsU0FBUSxLQUFLO0lBQ3ZDLElBQUksR0FBRyxTQUFTLENBQUE7Q0FDakMsQ0FBQyxFQUFFLENBQUEifQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3VzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQVFyRSxNQUFNLE9BQU8sVUFBVTtJQUNiLEtBQUssQ0FBbUI7SUFDeEIsSUFBSSxDQUFrQjtJQUN0QixZQUFZLENBQVU7SUFDdEIsUUFBUSxDQUFVO0lBRW5CLEtBQUssQ0FBQyxPQUFnQjtRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFBO1FBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFBO0lBQ2hFLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQVksRUFBRSxLQUFjO1FBQy9DLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDakMsTUFBTSxRQUFRLEdBQStCLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQTtRQUN6RSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSw0QkFBNEIsQ0FBQztZQUNsRCxRQUFRO1lBQ1IsVUFBVTtZQUNWLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRO1lBQ3RDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO1lBQ2xELHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZO1NBQzNDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBRWxGLE9BQU8sVUFBbUIsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksUUFBUSxZQUFZLEtBQUs7WUFBRSxPQUFPLFFBQVEsQ0FBQTtRQUU5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFBRSxPQUFPLFdBQVcsQ0FBQTtRQUUxQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUE7UUFFdEQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFBO0lBQ3ZCLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDaEUsTUFBTSxHQUFHLEdBQUcsYUFBYSxTQUFTLElBQUksU0FBUyxFQUFFLENBQUE7UUFDakQsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXJFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRW5GLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQixDQUFDO0NBQ0Y7QUFFRCxTQUFTLFlBQVksQ0FBQyxPQUFnQjtJQUNwQyxPQUFPO1FBQ0wsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2QsU0FBUyxFQUFFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO0tBQy9CLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sV0FBWSxTQUFRLEtBQUs7SUFDckMsSUFBSSxHQUFHLFFBQVEsQ0FBQTtDQUNoQyxDQUFDLEVBQUUsQ0FBQTtBQUVKLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLFlBQWEsU0FBUSxLQUFLO0lBQ3ZDLElBQUksR0FBRyxTQUFTLENBQUE7Q0FDakMsQ0FBQyxFQUFFLENBQUEifQ==
@@ -22,7 +22,7 @@ export class Transition implements Operation {
22
22
  this.logs = context.logs
23
23
  }
24
24
 
25
- public async execute(input: Input, object: Passkey): Promise<Passkey | Error> {
25
+ public async execute(input: Input, entry: Passkey): Promise<Passkey | Error> {
26
26
  const { authority, identity, label, ...response } = input
27
27
 
28
28
  // rawId is not sent from the client
@@ -48,16 +48,16 @@ export class Transition implements Operation {
48
48
 
49
49
  const reg = verified.registrationInfo
50
50
 
51
- object.authority = authority
52
- object.identity = identity
53
- object.kid = reg.credential.id
54
- object.aid = reg.aaguid
55
- object.synced = reg.credentialBackedUp
56
- object.key = Buffer.from(reg.credential.publicKey).toString('base64url')
57
- object.transports = reg.credential.transports
58
- object.label = label
51
+ entry.authority = authority
52
+ entry.identity = identity
53
+ entry.kid = reg.credential.id
54
+ entry.aid = reg.aaguid
55
+ entry.synced = reg.credentialBackedUp
56
+ entry.key = Buffer.from(reg.credential.publicKey).toString('base64url')
57
+ entry.transports = reg.credential.transports
58
+ entry.label = label
59
59
 
60
- return object
60
+ return entry
61
61
  }
62
62
 
63
63
  private async verifyChallenge(authority: string, challenge: string): Promise<boolean> {
@@ -19,10 +19,10 @@ export class Transition implements Operation {
19
19
  this.presence = context.configuration.residence === 'required'
20
20
  }
21
21
 
22
- public async execute(input: Input, object: Passkey): Promise<Output> {
22
+ public async execute(input: Input, entry: Passkey): Promise<Output> {
23
23
  const { origin, ...rest } = input
24
24
  const response: AuthenticationResponseJSON = { ...rest, rawId: input.id }
25
- const credential = toCredential(object)
25
+ const credential = toCredential(entry)
26
26
 
27
27
  const verified = await verifyAuthenticationResponse({
28
28
  response,
@@ -30,7 +30,7 @@ export class Transition implements Operation {
30
30
  expectedOrigin: origin,
31
31
  expectedRPID: new URL(origin).hostname,
32
32
  expectedChallenge: async (challenge) =>
33
- this.verifyChallenge(object.authority, challenge),
33
+ this.verifyChallenge(entry.authority, challenge),
34
34
  requireUserVerification: this.verification
35
35
  }).catch((e) => {
36
36
  this.logs.info('Failed to verify authentication response', { message: e.message })
@@ -42,9 +42,9 @@ export class Transition implements Operation {
42
42
 
43
43
  if (!verified.verified) return ERR_INVALID
44
44
 
45
- object.counter = verified.authenticationInfo.newCounter
45
+ entry.counter = verified.authenticationInfo.newCounter
46
46
 
47
- return object.identity
47
+ return entry.identity
48
48
  }
49
49
 
50
50
  private async verifyChallenge(authority: string, challenge: string): Promise<boolean> {
@@ -1,15 +1,15 @@
1
- export async function transition(input, object) {
1
+ export async function transition(input, entry) {
2
2
  if (input.grantor === undefined)
3
- return Object.assign(object, input);
3
+ return Object.assign(entry, input);
4
4
  // a manager grants any role; a delegate grants within its own scopes, and never the
5
5
  // right to grant
6
6
  if (!within(MANAGEMENT, input.grantor.roles) &&
7
7
  (!within(input.role, input.grantor.roles) || within(input.role, [MANAGEMENT])))
8
8
  return ERR_INACCESSIBLE_SCOPE;
9
- object.role = input.role;
10
- object.identity = input.identity;
11
- object.grantor = input.grantor.id;
12
- return object;
9
+ entry.role = input.role;
10
+ entry.identity = input.identity;
11
+ entry.grantor = input.grantor.id;
12
+ return entry;
13
13
  }
14
14
  function within(role, scopes) {
15
15
  return scopes.some((scope) => role === scope || role.startsWith(scope + ':'));
@@ -18,4 +18,4 @@ const MANAGEMENT = 'system:identity:roles';
18
18
  const ERR_INACCESSIBLE_SCOPE = new (class InaccessibleScopeError extends Error {
19
19
  code = 'INACCESSIBLE_SCOPE';
20
20
  })();
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvZ3JhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLE1BQWM7SUFDM0QsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBRXBFLG9GQUFvRjtJQUNwRixpQkFBaUI7SUFDakIsSUFDRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDeEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRTlFLE9BQU8sc0JBQXNCLENBQUE7SUFFL0IsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO0lBQ3hCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQTtJQUNoQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFBO0lBRWpDLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLElBQVksRUFBRSxNQUFnQjtJQUM1QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUMvRSxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUE7QUFFMUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxzQkFBdUIsU0FBUSxLQUFLO0lBQzVELElBQUksR0FBRyxvQkFBb0IsQ0FBQTtDQUM1QyxDQUFDLEVBQUUsQ0FBQSJ9
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvZ3JhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLEtBQWE7SUFDMUQsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBRW5FLG9GQUFvRjtJQUNwRixpQkFBaUI7SUFDakIsSUFDRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDeEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRTlFLE9BQU8sc0JBQXNCLENBQUE7SUFFL0IsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO0lBQ3ZCLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQTtJQUMvQixLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFBO0lBRWhDLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLElBQVksRUFBRSxNQUFnQjtJQUM1QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUMvRSxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUE7QUFFMUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxzQkFBdUIsU0FBUSxLQUFLO0lBQzVELElBQUksR0FBRyxvQkFBb0IsQ0FBQTtDQUM1QyxDQUFDLEVBQUUsQ0FBQSJ9
@@ -1,4 +1,4 @@
1
- export function observation(_, objects) {
2
- return objects.map(({ role }) => role);
1
+ export function observation(_, entries) {
2
+ return entries.map(({ role }) => role);
3
3
  }
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBVSxFQUFFLE9BQWlCO0lBQ3ZELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3hDLENBQUMifQ==
@@ -1,7 +1,7 @@
1
1
  import type { Entity } from './lib/Entity.ts'
2
2
 
3
- export async function transition(input: Input, object: Entity): Promise<Entity | Error> {
4
- if (input.grantor === undefined) return Object.assign(object, input)
3
+ export async function transition(input: Input, entry: Entity): Promise<Entity | Error> {
4
+ if (input.grantor === undefined) return Object.assign(entry, input)
5
5
 
6
6
  // a manager grants any role; a delegate grants within its own scopes, and never the
7
7
  // right to grant
@@ -11,11 +11,11 @@ export async function transition(input: Input, object: Entity): Promise<Entity |
11
11
  )
12
12
  return ERR_INACCESSIBLE_SCOPE
13
13
 
14
- object.role = input.role
15
- object.identity = input.identity
16
- object.grantor = input.grantor.id
14
+ entry.role = input.role
15
+ entry.identity = input.identity
16
+ entry.grantor = input.grantor.id
17
17
 
18
- return object
18
+ return entry
19
19
  }
20
20
 
21
21
  function within(role: string, scopes: string[]): boolean {
@@ -1,5 +1,5 @@
1
1
  import type { Entity } from './lib/Entity.ts'
2
2
 
3
- export function observation(_: unknown, objects: Entity[]): string[] {
4
- return objects.map(({ role }) => role)
3
+ export function observation(_: unknown, entries: Entity[]): string[] {
4
+ return entries.map(({ role }) => role)
5
5
  }
@@ -1,4 +1,4 @@
1
- export function transition(_, object) {
2
- object.revokedAt = Date.now();
1
+ export function transition(_, entry) {
2
+ entry.revokedAt = Date.now();
3
3
  }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3Jldm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQVUsRUFBRSxNQUFjO0lBQ25ELE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0FBQy9CLENBQUMifQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3Jldm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQVUsRUFBRSxLQUFhO0lBQ2xELEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0FBQzlCLENBQUMifQ==
@@ -1,5 +1,5 @@
1
1
  import type { Entity } from './lib/index.ts'
2
2
 
3
- export function transition(_: unknown, object: Entity): void {
4
- object.revokedAt = Date.now()
3
+ export function transition(_: unknown, entry: Entity): void {
4
+ entry.revokedAt = Date.now()
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/extensions.exposition",
3
- "version": "1.0.0-alpha.318",
3
+ "version": "1.0.0-alpha.319",
4
4
  "type": "module",
5
5
  "description": "Toa Exposition",
6
6
  "author": "temich <tema.gurtovoy@gmail.com>",
@@ -28,8 +28,8 @@
28
28
  "!**/.env*"
29
29
  ],
30
30
  "dependencies": {
31
- "@toa.io/core": "1.0.0-alpha.315",
32
- "@toa.io/definitions": "1.0.0-alpha.318",
31
+ "@toa.io/core": "1.0.0-alpha.319",
32
+ "@toa.io/definitions": "1.0.0-alpha.319",
33
33
  "@toa.io/generic": "1.0.0-alpha.311",
34
34
  "@toa.io/pointer": "1.0.0-alpha.311",
35
35
  "@toa.io/schemas": "1.0.0-alpha.311",
@@ -74,5 +74,5 @@
74
74
  "lru-cache": "11.5.2",
75
75
  "paseto": "4.0.1"
76
76
  },
77
- "gitHead": "82895af77cf22e8529925ba97193d73ee2139297"
77
+ "gitHead": "ee4901f2bc12c33fc2098a62f2af0c29838a2c2c"
78
78
  }
@@ -1,11 +1,14 @@
1
1
  import * as http from '../HTTP/index.ts';
2
2
  import type { Tree } from '../RTD/index.ts';
3
+ import type { Server as MCP } from '../MCP/index.ts';
3
4
  /**
4
5
  * What an application serves, for every route at once. Each entry is what `OPTIONS` on that
5
6
  * path answers, so a key taken from here is a request that can be made.
6
7
  */
7
8
  export declare class Explorer {
8
9
  private readonly tree;
9
- constructor(tree: Tree);
10
+ /** Where a model is pointed, which is the tree's to say when it is not `/.mcp` beside it. */
11
+ private readonly mcp;
12
+ constructor(tree: Tree, mcp: MCP | null);
10
13
  process(context: http.Context): Promise<http.OutgoingMessage>;
11
14
  }
@@ -7,14 +7,21 @@ import { describe } from './tree.js';
7
7
  */
8
8
  export class Explorer {
9
9
  tree;
10
- constructor(tree) {
10
+ /** Where a model is pointed, which is the tree's to say when it is not `/.mcp` beside it. */
11
+ mcp;
12
+ constructor(tree, mcp) {
11
13
  this.tree = tree;
14
+ this.mcp = mcp;
12
15
  }
13
16
  async process(context) {
14
17
  if (context.request.method !== 'OPTIONS')
15
18
  throw new http.MethodNotAllowed(new Headers({ allow: ALLOW }));
19
+ const discovered = await describe(this.tree, context);
20
+ const address = this.mcp?.address(context.authority) ?? null;
21
+ if (address !== null)
22
+ discovered.mcp = address;
16
23
  return {
17
- body: await describe(this.tree, context),
24
+ body: discovered,
18
25
  headers: new Headers({
19
26
  allow: ALLOW,
20
27
  // it stands until a branch expires, and it is filtered by who asked
@@ -1 +1 @@
1
- {"version":3,"file":"Explorer.js","sourceRoot":"","sources":["../../source/Discovery/Explorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACF,IAAI,CAAM;IAE3B,YAAmB,IAAU;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAqB;QACxC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS;YACtC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhE,OAAO;YACL,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACxC,OAAO,EAAE,IAAI,OAAO,CAAC;gBACnB,KAAK,EAAE,KAAK;gBACZ,oEAAoE;gBACpE,eAAe,EAAE,oBAAoB,UAAU,GAAG,IAAI,EAAE;gBACxD,IAAI,EAAE,eAAe;aACtB,CAAC;SACH,CAAA;IACH,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,KAAK,GAAG,oBAAoB,CAAA"}
1
+ {"version":3,"file":"Explorer.js","sourceRoot":"","sources":["../../source/Discovery/Explorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAIpC;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACF,IAAI,CAAM;IAE3B,6FAA6F;IAC5E,GAAG,CAAY;IAEhC,YAAmB,IAAU,EAAE,GAAe;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAqB;QACxC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS;YACtC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAA;QAE5D,IAAI,OAAO,KAAK,IAAI;YAAE,UAAU,CAAC,GAAG,GAAG,OAAO,CAAA;QAE9C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,IAAI,OAAO,CAAC;gBACnB,KAAK,EAAE,KAAK;gBACZ,oEAAoE;gBACpE,eAAe,EAAE,oBAAoB,UAAU,GAAG,IAAI,EAAE;gBACxD,IAAI,EAAE,eAAe;aACtB,CAAC;SACH,CAAA;IACH,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,KAAK,GAAG,oBAAoB,CAAA"}
@@ -19,6 +19,8 @@ export declare function describe(tree: Tree, request: http.Context): Promise<Dis
19
19
  /** What the tree answers. An object, so that what is said of the whole of it has somewhere to go. */
20
20
  export interface Discovered {
21
21
  routes: Record<string, Resource>;
22
+ /** Where MCP is served for the authority asked, where that is a host of its own. */
23
+ mcp?: string;
22
24
  }
23
25
  /** What one resource is, and what it serves; a verb is upper case, and nothing else here is. */
24
26
  export interface Resource extends Described {
@@ -129,7 +129,7 @@ export class EndpointsFactory {
129
129
  create(method, context) {
130
130
  if (method.mapping === undefined)
131
131
  throw new Error('Cannot create Endpoint without mapping');
132
- const mapping = Mapping.create(method.mapping.query, method.mapping.paged);
132
+ const mapping = Mapping.create(method.mapping.query, method.mapping.paged, method.mapping.streamed);
133
133
  const branch = context.extension;
134
134
  const namespace = method.mapping.namespace ?? branch?.namespace;
135
135
  const component = method.mapping.component ?? branch?.component;
@@ -1 +1 @@
1
- {"version":3,"file":"Endpoint.js","sourceRoot":"","sources":["../source/Endpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Endpoint.js","sourceRoot":"","sources":["../source/Endpoint.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export class Gateway extends Connector {
35
35
  this.directives = directives;
36
36
  this.dispatcher = dispatcher;
37
37
  this.mcp = mcp;
38
- this.explorer = new Explorer(tree);
38
+ this.explorer = new Explorer(tree, mcp);
39
39
  this.depends(broadcast);
40
40
  }
41
41
  async process(context) {