@toa.io/extensions.exposition 1.0.0-alpha.314 → 1.0.0-alpha.315
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/exposition.octets/package.json +2 -2
- package/components/exposition.octets/types/toa.d.ts +5 -5
- package/components/identity.bans/types/toa.d.ts +8 -8
- package/components/identity.basic/types/toa.d.ts +15 -15
- package/components/identity.clients/types/toa.d.ts +10 -10
- package/components/identity.credentials/types/toa.d.ts +1 -2
- package/components/identity.federation/types/toa.d.ts +14 -14
- package/components/identity.grants/types/toa.d.ts +12 -12
- package/components/identity.keys/types/toa.d.ts +10 -10
- package/components/identity.otp/types/toa.d.ts +9 -9
- package/components/identity.passkeys/types/toa.d.ts +13 -13
- package/components/identity.roles/types/toa.d.ts +10 -10
- package/components/identity.tokens/types/toa.d.ts +12 -12
- package/package.json +5 -5
- package/readme.md +1 -1
- package/transpiled/Branch.d.ts +2 -1
- package/transpiled/Branch.js +11 -2
- package/transpiled/Branch.js.map +1 -1
- package/transpiled/Discovery/Site.d.ts +4 -1
- package/transpiled/Discovery/Site.js +7 -1
- package/transpiled/Discovery/Site.js.map +1 -1
- package/transpiled/Gateway.js +6 -0
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +1 -1
- package/transpiled/HTTP/Server.js +13 -1
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/MCP/Server.d.ts +4 -0
- package/transpiled/MCP/Server.js +7 -0
- package/transpiled/MCP/Server.js.map +1 -1
- package/transpiled/directives/oauth/Discovery.d.ts +2 -0
- package/transpiled/directives/oauth/Discovery.js +19 -5
- package/transpiled/directives/oauth/Discovery.js.map +1 -1
- package/transpiled/directives/oauth/documents.d.ts +7 -0
- package/transpiled/directives/oauth/documents.js +24 -5
- package/transpiled/directives/oauth/documents.js.map +1 -1
- package/ui/dist/_app/immutable/chunks/{DnwsDdVR.js → CrrzcO_n.js} +2 -2
- package/ui/dist/_app/immutable/chunks/{gT7UvzUs.js → Dn8TFlEA.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{CubNYXGc.js → DsJRRk2v.js} +4 -2
- package/ui/dist/_app/immutable/chunks/QdCaNCs3.js +1 -0
- package/ui/dist/_app/immutable/entry/{app.BuIzcMse.js → app.Bbk6xMXP.js} +2 -2
- package/ui/dist/_app/immutable/entry/start.CqOWE7rl.js +1 -0
- package/ui/dist/_app/immutable/nodes/{0.CwHL4JQh.js → 0.B7HjOukA.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{1.DgOr0IJQ.js → 1.Cn1-wv-1.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{2.1ODUSz5b.js → 2.BLFOkU7I.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{3._pT85mpt.js → 3.RZt-1voh.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{4.DiXgB9MQ.js → 4.CTut5zBR.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{5.D7U8VR0l.js → 5.CF4unczk.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{6.CiZdC04N.js → 6.D7SlcY9P.js} +1 -1
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +10 -10
- package/ui/dist/_app/immutable/chunks/3z-MngL5.js +0 -1
- package/ui/dist/_app/immutable/entry/start.Djj5Mm5B.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { RemoteError } from '@toa.io/core/types'
|
|
5
5
|
|
|
6
6
|
export type PutInput = {
|
|
7
7
|
location?: string
|
|
@@ -34,8 +34,8 @@ export type DeleteInput = {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export interface Component {
|
|
37
|
-
put: (request: { input: PutInput, task?: boolean }
|
|
38
|
-
get: (request: { input: GetInput, task?: boolean }
|
|
39
|
-
head: (request: { input: HeadInput, task?: boolean }
|
|
40
|
-
delete: (request: { input: DeleteInput, task?: boolean }
|
|
37
|
+
put: (request: { input: PutInput, task?: boolean }) => Promise<unknown | RemoteError<"LOCATION_UNTRUSTED" | "LOCATION_LENGTH" | "LOCATION_UNAVAILABLE" | "INVALID_ID" | "NOT_FOUND" | "LIMIT_EXCEEDED" | "NOT_ACCEPTABLE" | "TYPE_MISMATCH">>
|
|
38
|
+
get: (request: { input: GetInput, task?: boolean }) => Promise<unknown | RemoteError<"NOT_FOUND" | "LIMIT_EXCEEDED" | "NOT_ACCEPTABLE" | "TYPE_MISMATCH">>
|
|
39
|
+
head: (request: { input: HeadInput, task?: boolean }) => Promise<unknown | RemoteError<"NOT_FOUND" | "LIMIT_EXCEEDED" | "NOT_ACCEPTABLE" | "TYPE_MISMATCH">>
|
|
40
|
+
delete: (request: { input: DeleteInput, task?: boolean }) => Promise<unknown | RemoteError<"NOT_FOUND" | "LIMIT_EXCEEDED" | "NOT_ACCEPTABLE" | "TYPE_MISMATCH">>
|
|
41
41
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query } from '@toa.io/core/types'
|
|
5
5
|
import type { Readable } from 'node:stream'
|
|
6
6
|
|
|
7
7
|
export interface Entity {
|
|
@@ -25,11 +25,11 @@ export type TransitInput = {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export interface Component {
|
|
28
|
-
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }
|
|
29
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
30
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
31
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
32
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
33
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
34
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
28
|
+
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
29
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
30
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
31
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
32
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
33
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
34
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
35
35
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { Secret } from '@toa.io/extensions.configuration'
|
|
6
6
|
import type { FetchInit } from '@toa.io/extensions.fetch'
|
|
7
7
|
import type { Logs, Metrics, Span } from '@toa.io/extensions.telemetry'
|
|
@@ -92,20 +92,20 @@ export type DeleteInput = {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
export interface Component {
|
|
95
|
-
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }
|
|
96
|
-
create: (request: { input: CreateInput, task?: boolean }
|
|
97
|
-
add: (request: { input: AddInput, task?: boolean }
|
|
98
|
-
incept: (request: { input: InceptInput, task?: boolean }
|
|
99
|
-
authenticate: (request: { input: AuthenticateInput, task?: boolean }
|
|
100
|
-
check: (request: { input: CheckInput, task?: boolean }
|
|
101
|
-
info: (request: { input: InfoInput, task?: boolean }
|
|
102
|
-
delete: (request: { input: DeleteInput, task?: boolean }
|
|
103
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
104
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
105
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
106
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
107
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
108
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
95
|
+
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }) => Promise<TransitOutput | RemoteError<"PRINCIPAL_LOCKED" | "INVALID_USERNAME" | "INVALID_PASSWORD" | "EXISTS">>
|
|
96
|
+
create: (request: { input: CreateInput, task?: boolean }) => Promise<CreateOutput | RemoteError<"PRINCIPAL_LOCKED" | "INVALID_USERNAME" | "INVALID_PASSWORD" | "EXISTS">>
|
|
97
|
+
add: (request: { input: AddInput, task?: boolean }) => Promise<unknown | RemoteError<"PRINCIPAL_LOCKED" | "INVALID_USERNAME" | "INVALID_PASSWORD" | "EXISTS">>
|
|
98
|
+
incept: (request: { input: InceptInput, task?: boolean }) => Promise<InceptOutput | RemoteError<"INVALID_CREDENTIALS">>
|
|
99
|
+
authenticate: (request: { input: AuthenticateInput, task?: boolean }) => Promise<AuthenticateOutput | RemoteError<"NOT_FOUND" | "PASSWORD_MISMATCH">>
|
|
100
|
+
check: (request: { input: CheckInput, task?: boolean }) => Promise<CheckOutput>
|
|
101
|
+
info: (request: { input: InfoInput, task?: boolean }) => Promise<InfoOutput>
|
|
102
|
+
delete: (request: { input: DeleteInput, task?: boolean }) => Promise<unknown>
|
|
103
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
104
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
105
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
106
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
107
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
108
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
export interface Configuration {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { FetchInit } from '@toa.io/extensions.fetch'
|
|
6
6
|
import type { Stash } from '@toa.io/extensions.stash'
|
|
7
7
|
import type { Logs, Metrics, Span } from '@toa.io/extensions.telemetry'
|
|
@@ -85,15 +85,15 @@ export type DescribeOutput = {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
export interface Component {
|
|
88
|
-
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }
|
|
89
|
-
register: (request: { input: RegisterInput, task?: boolean }
|
|
90
|
-
describe: (request: { input: DescribeInput, task?: boolean }
|
|
91
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
92
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
93
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
94
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
95
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
96
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
88
|
+
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
89
|
+
register: (request: { input: RegisterInput, task?: boolean }) => Promise<RegisterOutput>
|
|
90
|
+
describe: (request: { input: DescribeInput, task?: boolean }) => Promise<DescribeOutput | RemoteError<"UNKNOWN_CLIENT">>
|
|
91
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
92
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
93
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
94
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
95
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
96
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
export interface Configuration {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type { Options } from '@toa.io/core/types'
|
|
5
4
|
|
|
6
5
|
export type ListInput = {
|
|
7
6
|
authority: string
|
|
@@ -27,5 +26,5 @@ export type ListOutput = {
|
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
export interface Component {
|
|
30
|
-
list: (request: { input: ListInput, task?: boolean }
|
|
29
|
+
list: (request: { input: ListInput, task?: boolean }) => Promise<ListOutput>
|
|
31
30
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { Secret } from '@toa.io/extensions.configuration'
|
|
6
6
|
import type { FetchInit } from '@toa.io/extensions.fetch'
|
|
7
7
|
import type { Logs, Metrics, Span } from '@toa.io/extensions.telemetry'
|
|
@@ -88,19 +88,19 @@ export type DeleteInput = {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
export interface Component {
|
|
91
|
-
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }
|
|
92
|
-
create: (request: { input: CreateInput, task?: boolean }
|
|
93
|
-
incept: (request: { input: InceptInput, task?: boolean }
|
|
94
|
-
authenticate: (request: { input: AuthenticateInput, task?: boolean }
|
|
95
|
-
decode: (request: { input: DecodeInput, task?: boolean }
|
|
96
|
-
list: (request: { input: ListInput, task?: boolean }
|
|
97
|
-
delete: (request: { input: DeleteInput, task?: boolean }
|
|
98
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
99
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
100
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
101
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
102
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
103
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
91
|
+
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
92
|
+
create: (request: { input: CreateInput, task?: boolean }) => Promise<unknown | RemoteError<"EXISTS" | "TOKEN" | "TRUST" | "RESPONSE" | "CONFIG" | "NO_TOKEN" | "ISS" | "SUB" | "EXP" | "REPLAY" | "CODE_NOT_ENABLED" | "CODE_SCHEMA">>
|
|
93
|
+
incept: (request: { input: InceptInput, task?: boolean }) => Promise<InceptOutput | RemoteError<"EXISTS" | "TOKEN" | "TRUST" | "RESPONSE" | "CONFIG" | "NO_TOKEN" | "ISS" | "SUB" | "EXP" | "REPLAY" | "CODE_NOT_ENABLED" | "CODE_SCHEMA">>
|
|
94
|
+
authenticate: (request: { input: AuthenticateInput, task?: boolean }) => Promise<AuthenticateOutput | RemoteError<"NOT_FOUND" | "TOKEN" | "TRUST" | "RESPONSE" | "CONFIG" | "NO_TOKEN" | "ISS" | "SUB" | "EXP" | "REPLAY" | "CODE_NOT_ENABLED" | "CODE_SCHEMA">>
|
|
95
|
+
decode: (request: { input: DecodeInput, task?: boolean }) => Promise<DecodeOutput>
|
|
96
|
+
list: (request: { input: ListInput, task?: boolean }) => Promise<unknown>
|
|
97
|
+
delete: (request: { input: DeleteInput, task?: boolean }) => Promise<unknown>
|
|
98
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
99
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
100
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
101
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
102
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
103
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
export interface Configuration {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { FetchInit } from '@toa.io/extensions.fetch'
|
|
6
6
|
import type { Stash } from '@toa.io/extensions.stash'
|
|
7
7
|
import type { Logs, Metrics, Span } from '@toa.io/extensions.telemetry'
|
|
@@ -88,17 +88,17 @@ export type RevokeInput = {
|
|
|
88
88
|
export type RevokeOutput = null
|
|
89
89
|
|
|
90
90
|
export interface Component {
|
|
91
|
-
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }
|
|
92
|
-
authorize: (request: { input: AuthorizeInput, task?: boolean }
|
|
93
|
-
exchange: (request: { input: ExchangeInput, task?: boolean }
|
|
94
|
-
list: (request: { input: ListInput, task?: boolean }
|
|
95
|
-
revoke: (request: { input: RevokeInput, query?: Query<Entity>, task?: boolean }
|
|
96
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
97
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
98
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
99
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
100
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
101
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
91
|
+
transit: (request: { input: TransitInput, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
92
|
+
authorize: (request: { input: AuthorizeInput, task?: boolean }) => Promise<AuthorizeOutput>
|
|
93
|
+
exchange: (request: { input: ExchangeInput, task?: boolean }) => Promise<ExchangeOutput>
|
|
94
|
+
list: (request: { input: ListInput, task?: boolean }) => Promise<unknown>
|
|
95
|
+
revoke: (request: { input: RevokeInput, query?: Query<Entity>, task?: boolean }) => Promise<RevokeOutput | RemoteError<"NOT_FOUND">>
|
|
96
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
97
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
98
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
99
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
100
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
101
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
export interface Configuration {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query } from '@toa.io/core/types'
|
|
5
5
|
import type { Readable } from 'node:stream'
|
|
6
6
|
|
|
7
7
|
export interface Entity {
|
|
@@ -36,13 +36,13 @@ export type RevokeInput = {
|
|
|
36
36
|
export type RevokeOutput = null
|
|
37
37
|
|
|
38
38
|
export interface Component {
|
|
39
|
-
create: (request: { input: CreateInput, task?: boolean }
|
|
40
|
-
revoke: (request: { input: RevokeInput, task?: boolean }
|
|
41
|
-
disable: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
42
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
43
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
44
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
45
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
46
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
47
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
39
|
+
create: (request: { input: CreateInput, task?: boolean }) => Promise<CreateOutput>
|
|
40
|
+
revoke: (request: { input: RevokeInput, task?: boolean }) => Promise<RevokeOutput>
|
|
41
|
+
disable: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<unknown>
|
|
42
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
43
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
44
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
45
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
46
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
47
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
48
48
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { FetchInit } from '@toa.io/extensions.fetch'
|
|
6
6
|
import type { Stash } from '@toa.io/extensions.stash'
|
|
7
7
|
import type { Logs, Metrics, Span } from '@toa.io/extensions.telemetry'
|
|
@@ -39,14 +39,14 @@ export type AuthenticateOutput = {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export interface Component {
|
|
42
|
-
issue: (request: { input: IssueInput, task?: boolean }
|
|
43
|
-
authenticate: (request: { input: AuthenticateInput, task?: boolean }
|
|
44
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
45
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
46
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
47
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
48
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
49
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
42
|
+
issue: (request: { input: IssueInput, task?: boolean }) => Promise<unknown>
|
|
43
|
+
authenticate: (request: { input: AuthenticateInput, task?: boolean }) => Promise<AuthenticateOutput | RemoteError<"INVALID_CREDENTIALS" | "EXPIRED" | "TOO_MANY_ATTEMPTS" | "NOT_FOUND">>
|
|
44
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
45
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
46
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
47
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
48
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
49
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
export interface Configuration {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { FetchInit } from '@toa.io/extensions.fetch'
|
|
6
6
|
import type { Stash } from '@toa.io/extensions.stash'
|
|
7
7
|
import type { Logs, Metrics, Span } from '@toa.io/extensions.telemetry'
|
|
@@ -97,18 +97,18 @@ export type DeleteInput = {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
export interface Component {
|
|
100
|
-
challenge: (request: { input: ChallengeInput, task?: boolean }
|
|
101
|
-
create: (request: { input: CreateInput, task?: boolean }
|
|
102
|
-
use: (request: { input: UseInput, query: Query<Entity>, task?: boolean }
|
|
103
|
-
authenticate: (request: { input: AuthenticateInput, task?: boolean }
|
|
104
|
-
list: (request: { input: ListInput, task?: boolean }
|
|
105
|
-
delete: (request: { input: DeleteInput, task?: boolean }
|
|
106
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
107
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
108
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
109
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
110
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
111
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
100
|
+
challenge: (request: { input: ChallengeInput, task?: boolean }) => Promise<unknown>
|
|
101
|
+
create: (request: { input: CreateInput, task?: boolean }) => Promise<unknown | RemoteError<"FAILED" | "INVALID">>
|
|
102
|
+
use: (request: { input: UseInput, query: Query<Entity>, task?: boolean }) => Promise<unknown | RemoteError<"FAILED" | "INVALID">>
|
|
103
|
+
authenticate: (request: { input: AuthenticateInput, task?: boolean }) => Promise<unknown | RemoteError<"MISS" | "FAILED" | "INVALID">>
|
|
104
|
+
list: (request: { input: ListInput, task?: boolean }) => Promise<unknown>
|
|
105
|
+
delete: (request: { input: DeleteInput, task?: boolean }) => Promise<unknown>
|
|
106
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
107
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
108
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
109
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
110
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
111
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
export interface Configuration {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { Readable } from 'node:stream'
|
|
6
6
|
|
|
7
7
|
export interface Entity {
|
|
@@ -32,13 +32,13 @@ export type PrincipalInput = {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export interface Component {
|
|
35
|
-
grant: (request: { input: GrantInput, task?: boolean }
|
|
36
|
-
list: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
37
|
-
principal: (request: { input: PrincipalInput, task?: boolean }
|
|
38
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
39
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
40
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
41
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
42
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
43
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
35
|
+
grant: (request: { input: GrantInput, task?: boolean }) => Promise<unknown | RemoteError<"INACCESSIBLE_SCOPE">>
|
|
36
|
+
list: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<ListOutput>
|
|
37
|
+
principal: (request: { input: PrincipalInput, task?: boolean }) => Promise<unknown>
|
|
38
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
39
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
40
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
41
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
42
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
43
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
44
44
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Written by `toa types`. Every run rewrites it.
|
|
2
2
|
// What a manifest does not state belongs in a file of your own.
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { Query, RemoteError } from '@toa.io/core/types'
|
|
5
5
|
import type { Secret } from '@toa.io/extensions.configuration'
|
|
6
6
|
import type { FetchInit } from '@toa.io/extensions.fetch'
|
|
7
7
|
import type { Logs, Metrics, Span } from '@toa.io/extensions.telemetry'
|
|
@@ -89,17 +89,17 @@ export type IssueOutput = {
|
|
|
89
89
|
export type RevokeOutput = null
|
|
90
90
|
|
|
91
91
|
export interface Component {
|
|
92
|
-
encrypt: (request: { input: EncryptInput, task?: boolean }
|
|
93
|
-
decrypt: (request: { input: DecryptInput, task?: boolean }
|
|
94
|
-
authenticate: (request: { input: AuthenticateInput, task?: boolean }
|
|
95
|
-
issue: (request: { input: IssueInput, task?: boolean }
|
|
96
|
-
revoke: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
97
|
-
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
98
|
-
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
99
|
-
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
100
|
-
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
101
|
-
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
102
|
-
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }
|
|
92
|
+
encrypt: (request: { input: EncryptInput, task?: boolean }) => Promise<EncryptOutput | RemoteError<"INACCESSIBLE_SCOPE">>
|
|
93
|
+
decrypt: (request: { input: DecryptInput, task?: boolean }) => Promise<DecryptOutput | RemoteError<"INVALID_TOKEN" | "INVALID_KEY" | "FORGED_KEY" | "REVOKED_KEY">>
|
|
94
|
+
authenticate: (request: { input: AuthenticateInput, task?: boolean }) => Promise<AuthenticateOutput | RemoteError<"UNRECOGNIZED" | "AUTHORITY_MISMATCH" | "TOKEN_REVOKED" | "INVALID_TOKEN" | "INVALID_KEY" | "FORGED_KEY" | "REVOKED_KEY">>
|
|
95
|
+
issue: (request: { input: IssueInput, task?: boolean }) => Promise<IssueOutput | RemoteError<"INACCESSIBLE_SCOPE">>
|
|
96
|
+
revoke: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<RevokeOutput>
|
|
97
|
+
assign: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
98
|
+
ensure: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
99
|
+
enumerate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity[]>
|
|
100
|
+
observe: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity | null>
|
|
101
|
+
stream: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Readable>
|
|
102
|
+
terminate: (request: { input?: null, query?: Query<Entity>, task?: boolean }) => Promise<Entity>
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export interface Configuration {
|
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.315",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Toa Exposition",
|
|
6
6
|
"author": "temich <tema.gurtovoy@gmail.com>",
|
|
@@ -28,12 +28,12 @@
|
|
|
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.315",
|
|
32
|
+
"@toa.io/definitions": "1.0.0-alpha.315",
|
|
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",
|
|
36
|
-
"content-type": "3.1.
|
|
36
|
+
"content-type": "3.1.1",
|
|
37
37
|
"ioredis": "6.0.0",
|
|
38
38
|
"matchacho": "0.6.1",
|
|
39
39
|
"minimatch": "10.2.6",
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
"lru-cache": "11.5.2",
|
|
75
75
|
"paseto": "4.0.1"
|
|
76
76
|
},
|
|
77
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "d88ed286bf44bf95b5f3d9db6e7d4621261dbb99"
|
|
78
78
|
}
|
package/readme.md
CHANGED
|
@@ -142,7 +142,7 @@ exposition:
|
|
|
142
142
|
| `oauth` | Authorization server exposed to OAuth clients. See [OAuth](documentation/oauth.md). |
|
|
143
143
|
| `protocol` | `h1` or `h2c`. See [Protocol](documentation/protocol.md). |
|
|
144
144
|
| `rpc` | JSON-RPC at `/.rpc`; none is served without it. See [JSON-RPC](documentation/rpc.md). |
|
|
145
|
-
| `mcp` | MCP at `/.mcp
|
|
145
|
+
| `mcp` | MCP at `/.mcp`, and on a host of its own where one is named; none is served without it. See [MCP](documentation/mcp.md). |
|
|
146
146
|
|
|
147
147
|
### Observability
|
|
148
148
|
|
package/transpiled/Branch.d.ts
CHANGED
|
@@ -41,7 +41,8 @@ export interface Exposed {
|
|
|
41
41
|
*
|
|
42
42
|
* - `refresh`: the same component and the same routes, so its expiration is extended and its
|
|
43
43
|
* endpoints left alone
|
|
44
|
-
* - `superseded`: it came from a tenant that started before the one exposed now
|
|
44
|
+
* - `superseded`: it came from a tenant that started before the one exposed now, while the
|
|
45
|
+
* exposed branch is still served
|
|
45
46
|
* - `merge`: everything else
|
|
46
47
|
*/
|
|
47
48
|
export declare function decide(exposed: Exposed, branch: Branch): Decision;
|
package/transpiled/Branch.js
CHANGED
|
@@ -3,14 +3,23 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - `refresh`: the same component and the same routes, so its expiration is extended and its
|
|
5
5
|
* endpoints left alone
|
|
6
|
-
* - `superseded`: it came from a tenant that started before the one exposed now
|
|
6
|
+
* - `superseded`: it came from a tenant that started before the one exposed now, while the
|
|
7
|
+
* exposed branch is still served
|
|
7
8
|
* - `merge`: everything else
|
|
8
9
|
*/
|
|
9
10
|
export function decide(exposed, branch) {
|
|
10
11
|
if (exposed.version === branch.version && exposed.routes === branch.routes)
|
|
11
12
|
return 'refresh';
|
|
12
|
-
if (branch.timestamp < exposed.timestamp)
|
|
13
|
+
if (branch.timestamp < exposed.timestamp && !expired(exposed))
|
|
13
14
|
return 'superseded';
|
|
14
15
|
return 'merge';
|
|
15
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* A tenant that has gone without saying so stops refreshing its branch, and once the branch
|
|
19
|
+
* expires, nothing it held off is served. What started before it is all there is left to expose.
|
|
20
|
+
*/
|
|
21
|
+
function expired(exposed) {
|
|
22
|
+
const now = Date.now();
|
|
23
|
+
return exposed.nodes.length > 0 && exposed.nodes.every((node) => now >= node.expiration);
|
|
24
|
+
}
|
|
16
25
|
//# sourceMappingURL=Branch.js.map
|
package/transpiled/Branch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Branch.js","sourceRoot":"","sources":["../source/Branch.ts"],"names":[],"mappings":"AAgDA
|
|
1
|
+
{"version":3,"file":"Branch.js","sourceRoot":"","sources":["../source/Branch.ts"],"names":[],"mappings":"AAgDA;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,MAAc;IACrD,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAE5F,IAAI,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,YAAY,CAAA;IAElF,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,OAAgB;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEtB,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;AAC1F,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as http from '../HTTP/index.ts';
|
|
1
2
|
import type { Input, Output } from '../io.ts';
|
|
2
3
|
import type { Interceptor } from '../Interception.ts';
|
|
3
4
|
/**
|
|
@@ -21,13 +22,15 @@ export declare class Site implements Interceptor {
|
|
|
21
22
|
/** What a test points at a fixture; the build otherwise. */
|
|
22
23
|
private readonly override;
|
|
23
24
|
private root;
|
|
25
|
+
/** Hosts MCP is served at the root of, where this page is not served. */
|
|
26
|
+
private roots;
|
|
24
27
|
constructor(root?: string);
|
|
25
28
|
/**
|
|
26
29
|
* Resolved here rather than at construction because this is a module singleton, built
|
|
27
30
|
* when the module loads and before anything has said where the page is. Said once, too,
|
|
28
31
|
* because a page that is not built is otherwise a `503` per request and nothing else.
|
|
29
32
|
*/
|
|
30
|
-
mount(): void;
|
|
33
|
+
mount(options: http.Options): void;
|
|
31
34
|
intercept(input: Input): Output;
|
|
32
35
|
/**
|
|
33
36
|
* The file a request lands on, or `null` when nothing does. A path that exists is served
|
|
@@ -25,6 +25,8 @@ export class Site {
|
|
|
25
25
|
/** What a test points at a fixture; the build otherwise. */
|
|
26
26
|
override;
|
|
27
27
|
root;
|
|
28
|
+
/** Hosts MCP is served at the root of, where this page is not served. */
|
|
29
|
+
roots = new Set();
|
|
28
30
|
constructor(root) {
|
|
29
31
|
this.override = root;
|
|
30
32
|
this.root = root ?? site();
|
|
@@ -34,8 +36,9 @@ export class Site {
|
|
|
34
36
|
* when the module loads and before anything has said where the page is. Said once, too,
|
|
35
37
|
* because a page that is not built is otherwise a `503` per request and nothing else.
|
|
36
38
|
*/
|
|
37
|
-
mount() {
|
|
39
|
+
mount(options) {
|
|
38
40
|
this.root = this.override ?? site();
|
|
41
|
+
this.roots = new Set(Object.values(options.mcp?.hosts ?? {}).map((host) => host.toLowerCase()));
|
|
39
42
|
if (!isFile(path.join(this.root, 'index.html')))
|
|
40
43
|
console.warn('Discovery UI is not built', { root: this.root });
|
|
41
44
|
}
|
|
@@ -43,6 +46,9 @@ export class Site {
|
|
|
43
46
|
const { pathname } = input.url;
|
|
44
47
|
if (pathname !== DISCOVERY && !pathname.startsWith(DISCOVERY + '/'))
|
|
45
48
|
return null;
|
|
49
|
+
// the gateway answers for such a host, and what it answers there is `404`
|
|
50
|
+
if (this.roots.has(input.url.host))
|
|
51
|
+
return null;
|
|
46
52
|
// the prefix itself, as opposed to something under it
|
|
47
53
|
const bare = pathname === DISCOVERY || pathname === DISCOVERY + '/';
|
|
48
54
|
const method = input.request.method;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Site.js","sourceRoot":"","sources":["../../source/Discovery/Site.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,IAAI,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAIrE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,IAAI;IACC,IAAI,GAAG,WAAW,CAAA;IAElC,4DAA4D;IAC3C,QAAQ,CAAoB;IACrC,IAAI,CAAQ;IAEpB,YAAmB,IAAa;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;IAC5B,CAAC;IAED;;;;OAIG;IACI,KAAK;
|
|
1
|
+
{"version":3,"file":"Site.js","sourceRoot":"","sources":["../../source/Discovery/Site.ts"],"names":[],"mappings":"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"}
|