@toa.io/extensions.exposition 1.0.0-alpha.317 → 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.
- package/components/identity.bans/operations/transit.js +6 -6
- package/components/identity.bans/source/transit.ts +5 -5
- package/components/identity.grants/operations/revoke.js +8 -8
- package/components/identity.grants/source/revoke.ts +6 -6
- package/components/identity.keys/operations/create.js +7 -7
- package/components/identity.keys/operations/disable.js +4 -4
- package/components/identity.keys/source/create.ts +6 -6
- package/components/identity.keys/source/disable.ts +3 -3
- package/components/identity.otp/migrations/0003-unique-username.yaml +34 -0
- package/components/identity.passkeys/operations/create.js +11 -11
- package/components/identity.passkeys/operations/use.js +6 -6
- package/components/identity.passkeys/source/create.ts +10 -10
- package/components/identity.passkeys/source/use.ts +5 -5
- package/components/identity.roles/operations/grant.js +7 -7
- package/components/identity.roles/operations/list.js +2 -2
- package/components/identity.roles/source/grant.ts +6 -6
- package/components/identity.roles/source/list.ts +2 -2
- package/components/identity.tokens/operations/revoke.js +3 -3
- package/components/identity.tokens/source/revoke.ts +2 -2
- package/package.json +4 -4
- package/transpiled/Discovery/Explorer.d.ts +4 -1
- package/transpiled/Discovery/Explorer.js +9 -2
- package/transpiled/Discovery/Explorer.js.map +1 -1
- package/transpiled/Discovery/tree.d.ts +2 -0
- package/transpiled/Endpoint.js +1 -1
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Gateway.js +1 -1
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Server.js +7 -0
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +3 -0
- package/transpiled/HTTP/exceptions.js +5 -0
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/messages.js +2 -1
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/MCP/Server.d.ts +5 -0
- package/transpiled/MCP/Server.js +8 -0
- package/transpiled/MCP/Server.js.map +1 -1
- package/transpiled/Mapping.d.ts +1 -1
- package/transpiled/Mapping.js +2 -2
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +9 -1
- package/transpiled/Query.js +33 -2
- package/transpiled/Query.js.map +1 -1
- package/transpiled/directives/cors/CORS.js +9 -1
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/exceptions.js +5 -1
- package/transpiled/exceptions.js.map +1 -1
- package/ui/dist/_app/immutable/chunks/{epHR7byE.js → 2_kob6rZ.js} +8 -8
- package/ui/dist/_app/immutable/chunks/{Dy498eC3.js → DJgzedTC.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{Di9uMjua.js → DZLgLFja.js} +2 -2
- package/ui/dist/_app/immutable/chunks/{Cb9xUxR3.js → i2vgl_1B.js} +1 -1
- package/ui/dist/_app/immutable/entry/{app.DaMnbd3o.js → app.B__PY1eA.js} +2 -2
- package/ui/dist/_app/immutable/entry/start.DMIoqYy7.js +1 -0
- package/ui/dist/_app/immutable/nodes/{0.ChDlqcyk.js → 0.CJ3iyeda.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{1.dt327mDc.js → 1.BWBn5QaI.js} +1 -1
- package/ui/dist/_app/immutable/nodes/2.BTsgBNkG.js +8 -0
- package/ui/dist/_app/immutable/nodes/{3.D6lGfZtB.js → 3.C81e564W.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{4.Qut-QZBu.js → 4.Ck9ITYe_.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{5.DAyWeYwy.js → 5.D6mfY2w_.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{6.45Ays8G3.js → 6.NPQUU_Ix.js} +1 -1
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +10 -10
- package/ui/dist/_app/immutable/entry/start.DDLpIS5x.js +0 -1
- package/ui/dist/_app/immutable/nodes/2.Bxs8DCx9.js +0 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export function transition(input,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return
|
|
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,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS90cmFuc2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLEtBQWE7SUFDcEQsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQzNCLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUE7SUFDdEMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO0lBRTdCLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyJ9
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export function transition(input: Input,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
|
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,
|
|
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 (
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
if (entry.VERSION === 0 ||
|
|
15
|
+
entry.authority !== input.authority ||
|
|
16
|
+
entry.identity !== input.identity)
|
|
17
17
|
return ERR_NOT_FOUND;
|
|
18
|
-
if (
|
|
19
|
-
await this.keys.disable({ query: { id:
|
|
20
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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 (
|
|
27
|
+
if (entry.kid !== undefined) await this.keys.disable({ query: { id: entry.kid } })
|
|
28
28
|
|
|
29
|
-
|
|
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,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
9
|
-
return { id:
|
|
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,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3pDLE1BQU0sT0FBTyxVQUFVO0lBQ2QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFZLEVBQUUsS0FBVTtRQUMzQyxLQUFLLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDakQsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFBO1FBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtRQUV6QixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztZQUFFLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUM3RCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export function transition(_,
|
|
2
|
-
|
|
3
|
-
return
|
|
1
|
+
export function transition(_, entry) {
|
|
2
|
+
entry.revokedAt ??= Date.now();
|
|
3
|
+
return entry;
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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)
|
|
10
|
+
if (input.expires !== undefined) entry.expires = input.expires
|
|
11
11
|
|
|
12
|
-
return { id:
|
|
12
|
+
return { id: entry.id, label: entry.label, key: entry.key }
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
@@ -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,
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return
|
|
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,
|
|
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,
|
|
13
|
+
async execute(input, entry) {
|
|
14
14
|
const { origin, ...rest } = input;
|
|
15
15
|
const response = { ...rest, rawId: input.id };
|
|
16
|
-
const credential = toCredential(
|
|
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(
|
|
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
|
-
|
|
33
|
-
return
|
|
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,
|
|
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,
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
|
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,
|
|
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(
|
|
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(
|
|
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
|
-
|
|
45
|
+
entry.counter = verified.authenticationInfo.newCounter
|
|
46
46
|
|
|
47
|
-
return
|
|
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,
|
|
1
|
+
export async function transition(input, entry) {
|
|
2
2
|
if (input.grantor === undefined)
|
|
3
|
-
return Object.assign(
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return
|
|
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,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvZ3JhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsS0FBWSxFQUFFLEtBQWE7SUFDMUQsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBRW5FLG9GQUFvRjtJQUNwRixpQkFBaUI7SUFDakIsSUFDRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDeEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRTlFLE9BQU8sc0JBQXNCLENBQUE7SUFFL0IsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO0lBQ3ZCLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQTtJQUMvQixLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFBO0lBRWhDLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLElBQVksRUFBRSxNQUFnQjtJQUM1QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUMvRSxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUE7QUFFMUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxzQkFBdUIsU0FBUSxLQUFLO0lBQzVELElBQUksR0FBRyxvQkFBb0IsQ0FBQTtDQUM1QyxDQUFDLEVBQUUsQ0FBQSJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function observation(_,
|
|
2
|
-
return
|
|
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,
|
|
4
|
-
if (input.grantor === undefined) return Object.assign(
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
entry.role = input.role
|
|
15
|
+
entry.identity = input.identity
|
|
16
|
+
entry.grantor = input.grantor.id
|
|
17
17
|
|
|
18
|
-
return
|
|
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,
|
|
4
|
-
return
|
|
3
|
+
export function observation(_: unknown, entries: Entity[]): string[] {
|
|
4
|
+
return entries.map(({ role }) => role)
|
|
5
5
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function transition(_,
|
|
2
|
-
|
|
1
|
+
export function transition(_, entry) {
|
|
2
|
+
entry.revokedAt = Date.now();
|
|
3
3
|
}
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc291cmNlL3Jldm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQVUsRUFBRSxLQUFhO0lBQ2xELEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0FBQzlCLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toa.io/extensions.exposition",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
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.
|
|
32
|
-
"@toa.io/definitions": "1.0.0-alpha.
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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;
|
|
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 {
|
package/transpiled/Endpoint.js
CHANGED
|
@@ -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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"}
|
package/transpiled/Gateway.js
CHANGED
|
@@ -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) {
|