@toa.io/extensions.exposition 1.0.0-alpha.291 → 1.0.0-alpha.293
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.basic/package.json +8 -0
- package/components/identity.federation/package.json +8 -0
- package/components/identity.passkeys/package.json +8 -0
- package/components/identity.tokens/package.json +10 -0
- package/package.json +25 -13
- package/transpiled/Discovery/Explorer.js +1 -1
- package/transpiled/Discovery/Explorer.js.map +1 -1
- package/transpiled/Discovery/Site.js +1 -1
- package/transpiled/Discovery/Site.js.map +1 -1
- package/transpiled/Discovery/trunk.js +1 -1
- package/transpiled/Discovery/trunk.js.map +1 -1
- package/transpiled/Endpoint.js +3 -0
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.js +1 -1
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.js +1 -1
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +1 -1
- package/transpiled/HTTP/Server.js +1 -1
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/Introspection.d.ts +6 -0
- package/transpiled/Introspection.js +1 -0
- package/transpiled/Introspection.js.map +1 -1
- package/transpiled/MCP/Server.d.ts +1 -1
- package/transpiled/MCP/Server.js +1 -1
- package/transpiled/MCP/Server.js.map +1 -1
- package/transpiled/MCP/discover.d.ts +1 -1
- package/transpiled/MCP/schema.js +2 -2
- package/transpiled/Query.d.ts +2 -12
- package/transpiled/Query.js +3 -13
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RPC/Dispatcher.d.ts +1 -1
- package/transpiled/RPC/Dispatcher.js +2 -2
- package/transpiled/RPC/Dispatcher.js.map +1 -1
- package/transpiled/RTD/Endpoint.d.ts +2 -3
- package/transpiled/RTD/Tree.js +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js +1 -1
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/syntax/index.d.ts +1 -2
- package/transpiled/RTD/syntax/index.js +1 -2
- package/transpiled/RTD/syntax/index.js.map +1 -1
- package/transpiled/Tenant.js +1 -1
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/directives/auth/Authorization.js +1 -1
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/io/IO.js +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/oauth/documents.d.ts +1 -1
- package/transpiled/index.d.ts +0 -2
- package/transpiled/index.js +0 -2
- package/transpiled/index.js.map +1 -1
- package/transpiled/service.js +1 -1
- package/transpiled/service.js.map +1 -1
- package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
- package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
- package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
- package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
- package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
- package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
- package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
- package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
- package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
- package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
- package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
- package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
- package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
- package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
- package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
- package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +12 -12
- package/CHANGELOG.md +0 -35
- package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
- package/components/identity.basic/source/lib/credentials.test.ts +0 -18
- package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
- package/components/identity.clients/source/lib/canonical.test.ts +0 -43
- package/components/identity.clients/source/lib/cimd.test.ts +0 -122
- package/components/identity.clients/source/lib/redirect.test.ts +0 -47
- package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
- package/components/identity.credentials/source/list.test.ts +0 -70
- package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
- package/components/identity.federation/source/lib/discovery.test.ts +0 -60
- package/components/identity.federation/source/list.test.ts +0 -41
- package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
- package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
- package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
- package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
- package/components/identity.passkeys/source/errors.test.ts +0 -34
- package/components/identity.passkeys/source/webauthn.test.ts +0 -26
- package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
- package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
- package/components/identity.tokens/source/authenticate.test.ts +0 -112
- package/components/identity.tokens/source/decrypt.test.ts +0 -216
- package/components/identity.tokens/source/encrypt.test.ts +0 -150
- package/components/identity.tokens/source/issue.test.ts +0 -73
- package/components/identity.tokens/source/lib/form.test.ts +0 -25
- package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
- package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
- package/context.toa.yaml +0 -31
- package/cucumber.mjs +0 -7
- package/documentation/.assets/ia3-dark.jpg +0 -0
- package/documentation/.assets/ia3-light.jpg +0 -0
- package/documentation/.assets/overview-dark.jpg +0 -0
- package/documentation/.assets/overview-light.jpg +0 -0
- package/documentation/.assets/role-scopes-dark.jpg +0 -0
- package/documentation/.assets/role-scopes-light.jpg +0 -0
- package/documentation/.assets/rtd-dark.jpg +0 -0
- package/documentation/.assets/rtd-light.jpg +0 -0
- package/documentation/access.md +0 -350
- package/documentation/authorities.md +0 -51
- package/documentation/cache.md +0 -72
- package/documentation/components.md +0 -472
- package/documentation/consent.md +0 -101
- package/documentation/credentials.md +0 -88
- package/documentation/dev.md +0 -30
- package/documentation/discovery.md +0 -81
- package/documentation/flow.md +0 -44
- package/documentation/help.md +0 -122
- package/documentation/identity.md +0 -304
- package/documentation/introspection.md +0 -123
- package/documentation/io.md +0 -167
- package/documentation/ip.md +0 -24
- package/documentation/map.md +0 -123
- package/documentation/mcp.md +0 -183
- package/documentation/notes/desync.jpg +0 -0
- package/documentation/notes/peers.md +0 -59
- package/documentation/notes/sse.md +0 -71
- package/documentation/notes/throttling.md +0 -122
- package/documentation/oauth.md +0 -180
- package/documentation/octets.md +0 -334
- package/documentation/passkeys.md +0 -11
- package/documentation/protocol.md +0 -120
- package/documentation/query.md +0 -324
- package/documentation/require.md +0 -15
- package/documentation/rpc.md +0 -154
- package/documentation/tracing.md +0 -70
- package/documentation/tree.md +0 -199
- package/features/access.feature +0 -596
- package/features/annotation.feature +0 -32
- package/features/auth.assert.feature +0 -55
- package/features/auth.bearer.feature +0 -120
- package/features/auth.claims.feature +0 -171
- package/features/auth.incept.feature +0 -166
- package/features/auth.input.feature +0 -59
- package/features/authorities.basic.feature +0 -141
- package/features/authorities.feature +0 -71
- package/features/authorities.federation.feature +0 -100
- package/features/authorities.tokens.feature +0 -117
- package/features/body.feature +0 -76
- package/features/cache.feature +0 -368
- package/features/configuration.feature +0 -206
- package/features/cors.feature +0 -127
- package/features/credentials.feature +0 -106
- package/features/debug.feature +0 -34
- package/features/dev.feature +0 -90
- package/features/directives.feature +0 -61
- package/features/discovery.feature +0 -213
- package/features/discovery.ui.feature +0 -213
- package/features/dynamic.feature +0 -192
- package/features/errors.feature +0 -258
- package/features/etag.feature +0 -239
- package/features/flow.feature +0 -148
- package/features/help.feature +0 -512
- package/features/identity.bans.feature +0 -200
- package/features/identity.basic.feature +0 -666
- package/features/identity.feature +0 -240
- package/features/identity.federation.feature +0 -396
- package/features/identity.otp.feature +0 -142
- package/features/identity.roles.feature +0 -568
- package/features/identity.tokens.custom.feature +0 -430
- package/features/identity.tokens.feature +0 -131
- package/features/interruptions.feature +0 -20
- package/features/introspection.feature +0 -565
- package/features/introspection.map.feature +0 -108
- package/features/io.feature +0 -204
- package/features/io.throttle.feature +0 -166
- package/features/map.feature +0 -360
- package/features/mcp.feature +0 -753
- package/features/methods.feature +0 -48
- package/features/oauth.clients.feature +0 -195
- package/features/oauth.discovery.feature +0 -164
- package/features/oauth.grants.feature +0 -301
- package/features/octets.cloudinary.feature +0 -233
- package/features/octets.download.feature +0 -194
- package/features/octets.entries.feature +0 -83
- package/features/octets.feature +0 -306
- package/features/octets.head.feature +0 -40
- package/features/octets.location.feature +0 -83
- package/features/octets.meta.feature +0 -117
- package/features/octets.workflows.feature +0 -565
- package/features/passkeys.feature +0 -66
- package/features/probes.feature +0 -18
- package/features/query.feature +0 -389
- package/features/realtime.feature +0 -34
- package/features/require.feature +0 -66
- package/features/response.feature +0 -103
- package/features/routes.feature +0 -224
- package/features/rpc.feature +0 -429
- package/features/server.feature +0 -21
- package/features/site/_app/immutable/asset.js +0 -1
- package/features/site/favicon.ico +0 -0
- package/features/site/index.html +0 -10
- package/features/steps/.env.example +0 -5
- package/features/steps/Captures.ts +0 -20
- package/features/steps/Cloudinary.ts +0 -12
- package/features/steps/Common.ts +0 -38
- package/features/steps/Components.ts +0 -115
- package/features/steps/Database.ts +0 -106
- package/features/steps/Gateway.ts +0 -240
- package/features/steps/HTTP.ts +0 -96
- package/features/steps/IDP.ts +0 -361
- package/features/steps/Identity.ts +0 -54
- package/features/steps/OTP.ts +0 -42
- package/features/steps/Parameters.ts +0 -162
- package/features/steps/Probe.ts +0 -38
- package/features/steps/Realtime.ts +0 -175
- package/features/steps/Workspace.ts +0 -48
- package/features/steps/components/audit/manifest.toa.yaml +0 -20
- package/features/steps/components/audit/operations/record.js +0 -5
- package/features/steps/components/echo/manifest.toa.yaml +0 -59
- package/features/steps/components/echo/operations/affect.js +0 -3
- package/features/steps/components/echo/operations/compute.js +0 -3
- package/features/steps/components/echo/operations/echo.js +0 -3
- package/features/steps/components/echo/operations/error.js +0 -7
- package/features/steps/components/echo/operations/identity.js +0 -3
- package/features/steps/components/echo/operations/parameters.js +0 -3
- package/features/steps/components/echo/operations/ping.js +0 -3
- package/features/steps/components/echo/operations/unwrap.js +0 -3
- package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
- package/features/steps/components/echo.beacon/operations/hello.js +0 -3
- package/features/steps/components/greeter/manifest.toa.yaml +0 -5
- package/features/steps/components/greeter/operations/greet.js +0 -3
- package/features/steps/components/notify/manifest.toa.yaml +0 -20
- package/features/steps/components/notify/operations/send.js +0 -5
- package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
- package/features/steps/components/octets.tester/operations/authority.js +0 -3
- package/features/steps/components/octets.tester/operations/bar.js +0 -9
- package/features/steps/components/octets.tester/operations/baz.js +0 -9
- package/features/steps/components/octets.tester/operations/concat.js +0 -5
- package/features/steps/components/octets.tester/operations/echo.js +0 -5
- package/features/steps/components/octets.tester/operations/err.js +0 -14
- package/features/steps/components/octets.tester/operations/foo.js +0 -5
- package/features/steps/components/octets.tester/operations/id.js +0 -5
- package/features/steps/components/octets.tester/operations/identity.js +0 -5
- package/features/steps/components/octets.tester/operations/lenna.png +0 -0
- package/features/steps/components/octets.tester/operations/redirect.js +0 -17
- package/features/steps/components/octets.tester/operations/yex.js +0 -14
- package/features/steps/components/octets.tester/operations/yield.js +0 -11
- package/features/steps/components/orders/manifest.toa.yaml +0 -30
- package/features/steps/components/orders/operations/create.js +0 -7
- package/features/steps/components/pots/manifest.toa.yaml +0 -91
- package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
- package/features/steps/components/pricing/manifest.toa.yaml +0 -13
- package/features/steps/components/pricing/operations/quote.js +0 -3
- package/features/steps/components/sequences/manifest.toa.yaml +0 -11
- package/features/steps/components/sequences/operations/numbers.js +0 -5
- package/features/steps/components/sequences/operations/tokens.js +0 -14
- package/features/steps/components/users/manifest.toa.yaml +0 -30
- package/features/steps/components/users/operations/create.js +0 -11
- package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
- package/features/steps/map.ts +0 -30
- package/features/steps/tsconfig.json +0 -9
- package/features/streams.feature +0 -35
- package/features/timestamps.feature +0 -41
- package/features/timing.feature +0 -49
- package/features/tracing.feature +0 -123
- package/schemas/annotation.cos.yaml +0 -125
- package/schemas/call.cos.yaml +0 -18
- package/schemas/directive.cos.yaml +0 -7
- package/schemas/method.cos.yaml +0 -23
- package/schemas/node.cos.yaml +0 -22
- package/schemas/query.cos.yaml +0 -31
- package/schemas/querystring.cos.yaml +0 -19
- package/schemas/range.cos.yaml +0 -10
- package/schemas/route.cos.yaml +0 -6
- package/source/Annotation.ts +0 -89
- package/source/Branch.test.ts +0 -40
- package/source/Branch.ts +0 -44
- package/source/Composition.ts +0 -51
- package/source/Context.ts +0 -11
- package/source/Directive.test.ts +0 -199
- package/source/Directive.ts +0 -248
- package/source/Discovery/Explorer.ts +0 -34
- package/source/Discovery/Site.test.ts +0 -147
- package/source/Discovery/Site.ts +0 -202
- package/source/Discovery/index.ts +0 -3
- package/source/Discovery/tree.test.ts +0 -175
- package/source/Discovery/tree.ts +0 -77
- package/source/Discovery/trunk.ts +0 -33
- package/source/Endpoint.test.ts +0 -67
- package/source/Endpoint.ts +0 -157
- package/source/Factory.ts +0 -42
- package/source/Gateway.ts +0 -390
- package/source/HTTP/Context.ts +0 -143
- package/source/HTTP/Probe.ts +0 -99
- package/source/HTTP/Server.ts +0 -430
- package/source/HTTP/Timing.ts +0 -14
- package/source/HTTP/address.test.ts +0 -28
- package/source/HTTP/address.ts +0 -16
- package/source/HTTP/exceptions.ts +0 -99
- package/source/HTTP/formats/form.ts +0 -21
- package/source/HTTP/formats/index.ts +0 -36
- package/source/HTTP/formats/json.ts +0 -14
- package/source/HTTP/formats/msgpack.ts +0 -14
- package/source/HTTP/formats/text.ts +0 -10
- package/source/HTTP/formats/yaml.test.ts +0 -22
- package/source/HTTP/formats/yaml.ts +0 -40
- package/source/HTTP/index.ts +0 -6
- package/source/HTTP/messages.test.ts +0 -196
- package/source/HTTP/messages.ts +0 -186
- package/source/HTTP/types.ts +0 -39
- package/source/Interception.ts +0 -37
- package/source/Introspection.ts +0 -179
- package/source/MCP/Server.ts +0 -335
- package/source/MCP/discover.ts +0 -51
- package/source/MCP/errors.ts +0 -80
- package/source/MCP/index.ts +0 -1
- package/source/MCP/schema.test.ts +0 -91
- package/source/MCP/schema.ts +0 -94
- package/source/MCP/tools.ts +0 -144
- package/source/MCP/types.ts +0 -84
- package/source/Mapping.ts +0 -101
- package/source/Query.test.ts +0 -54
- package/source/Query.ts +0 -277
- package/source/RPC/Context.ts +0 -75
- package/source/RPC/Dispatcher.ts +0 -150
- package/source/RPC/errors.test.ts +0 -77
- package/source/RPC/errors.ts +0 -82
- package/source/RPC/index.ts +0 -1
- package/source/RPC/names.test.ts +0 -141
- package/source/RPC/names.ts +0 -176
- package/source/RPC/types.ts +0 -34
- package/source/RTD/Context.ts +0 -16
- package/source/RTD/Directives.ts +0 -126
- package/source/RTD/Endpoint.ts +0 -27
- package/source/RTD/Match.ts +0 -11
- package/source/RTD/Method.ts +0 -39
- package/source/RTD/Node.ts +0 -169
- package/source/RTD/Route.ts +0 -93
- package/source/RTD/Tree.ts +0 -137
- package/source/RTD/expiration.test.ts +0 -81
- package/source/RTD/factory.ts +0 -105
- package/source/RTD/index.ts +0 -8
- package/source/RTD/segment.test.ts +0 -35
- package/source/RTD/segment.ts +0 -51
- package/source/RTD/syntax/index.ts +0 -2
- package/source/RTD/syntax/parse.test.ts +0 -196
- package/source/RTD/syntax/parse.ts +0 -171
- package/source/RTD/syntax/types.ts +0 -69
- package/source/RTD/walk.test.ts +0 -147
- package/source/Remotes.test.ts +0 -79
- package/source/Remotes.ts +0 -39
- package/source/Tenant.ts +0 -73
- package/source/const.ts +0 -45
- package/source/deployment.ts +0 -96
- package/source/directives/auth/Anonymous.test.ts +0 -70
- package/source/directives/auth/Anonymous.ts +0 -36
- package/source/directives/auth/Anyone.ts +0 -23
- package/source/directives/auth/Assert.ts +0 -43
- package/source/directives/auth/Authorization.test.ts +0 -24
- package/source/directives/auth/Authorization.ts +0 -388
- package/source/directives/auth/Delegate.test.ts +0 -36
- package/source/directives/auth/Delegate.ts +0 -54
- package/source/directives/auth/Echo.ts +0 -24
- package/source/directives/auth/Federation.ts +0 -104
- package/source/directives/auth/Id.ts +0 -37
- package/source/directives/auth/Incept.ts +0 -117
- package/source/directives/auth/Input.ts +0 -92
- package/source/directives/auth/Role.test.ts +0 -147
- package/source/directives/auth/Role.ts +0 -99
- package/source/directives/auth/Rule.ts +0 -59
- package/source/directives/auth/Scheme.ts +0 -31
- package/source/directives/auth/create.ts +0 -11
- package/source/directives/auth/index.ts +0 -3
- package/source/directives/auth/schemes.test.ts +0 -18
- package/source/directives/auth/schemes.ts +0 -39
- package/source/directives/auth/split.ts +0 -14
- package/source/directives/auth/types.ts +0 -75
- package/source/directives/cache/Cache.ts +0 -92
- package/source/directives/cache/Control.ts +0 -81
- package/source/directives/cache/Exact.ts +0 -7
- package/source/directives/cache/etag.ts +0 -38
- package/source/directives/cache/index.ts +0 -3
- package/source/directives/cache/types.ts +0 -9
- package/source/directives/cors/CORS.test.ts +0 -75
- package/source/directives/cors/CORS.ts +0 -88
- package/source/directives/cors/index.ts +0 -3
- package/source/directives/dev/Development.ts +0 -41
- package/source/directives/dev/Faulty.ts +0 -31
- package/source/directives/dev/Sleep.ts +0 -53
- package/source/directives/dev/Stub.ts +0 -14
- package/source/directives/dev/Throw.ts +0 -14
- package/source/directives/dev/index.ts +0 -3
- package/source/directives/dev/types.ts +0 -5
- package/source/directives/flow/Compose.ts +0 -98
- package/source/directives/flow/Fetch.ts +0 -86
- package/source/directives/flow/Flow.ts +0 -43
- package/source/directives/flow/index.ts +0 -3
- package/source/directives/flow/types.ts +0 -7
- package/source/directives/help/Family.ts +0 -122
- package/source/directives/help/Help.test.ts +0 -227
- package/source/directives/help/Help.ts +0 -47
- package/source/directives/help/Parameters.ts +0 -47
- package/source/directives/help/described.ts +0 -57
- package/source/directives/help/index.ts +0 -45
- package/source/directives/index.ts +0 -33
- package/source/directives/io/Directive.ts +0 -17
- package/source/directives/io/IO.ts +0 -118
- package/source/directives/io/Input.ts +0 -55
- package/source/directives/io/Message.ts +0 -1
- package/source/directives/io/Output.ts +0 -81
- package/source/directives/io/Status.test.ts +0 -88
- package/source/directives/io/Status.ts +0 -47
- package/source/directives/io/Throttle.ts +0 -30
- package/source/directives/io/index.ts +0 -3
- package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
- package/source/directives/io/lib/throttle/Configuration.ts +0 -68
- package/source/directives/io/lib/throttle/Keys.ts +0 -53
- package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
- package/source/directives/io/lib/throttle/Quotas.ts +0 -190
- package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
- package/source/directives/io/lib/throttle/Sync.ts +0 -93
- package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
- package/source/directives/io/lib/throttle/Warning.ts +0 -29
- package/source/directives/io/lib/throttle/components/Component.ts +0 -7
- package/source/directives/io/lib/throttle/components/IP.ts +0 -30
- package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
- package/source/directives/io/lib/throttle/components/Path.ts +0 -8
- package/source/directives/io/lib/throttle/components/Route.ts +0 -19
- package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
- package/source/directives/io/lib/throttle/components/index.ts +0 -19
- package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
- package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
- package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
- package/source/directives/io/lib/throttle/index.ts +0 -4
- package/source/directives/io/schemas.test.ts +0 -40
- package/source/directives/io/schemas.ts +0 -16
- package/source/directives/map/Authority.ts +0 -15
- package/source/directives/map/Buffer.ts +0 -15
- package/source/directives/map/Claims.ts +0 -63
- package/source/directives/map/Directive.ts +0 -4
- package/source/directives/map/Headers.ts +0 -60
- package/source/directives/map/Language.ts +0 -45
- package/source/directives/map/Languages.ts +0 -17
- package/source/directives/map/Map.ts +0 -85
- package/source/directives/map/Mapping.ts +0 -45
- package/source/directives/map/Properties.ts +0 -15
- package/source/directives/map/Segments.ts +0 -52
- package/source/directives/map/index.ts +0 -3
- package/source/directives/mcp/MCP.ts +0 -33
- package/source/directives/mcp/Tool.test.ts +0 -56
- package/source/directives/mcp/Tool.ts +0 -32
- package/source/directives/mcp/index.ts +0 -6
- package/source/directives/oauth/Discovery.ts +0 -66
- package/source/directives/oauth/documents.ts +0 -110
- package/source/directives/oauth/index.ts +0 -3
- package/source/directives/octets/Context.ts +0 -23
- package/source/directives/octets/Delete.ts +0 -96
- package/source/directives/octets/Directive.ts +0 -21
- package/source/directives/octets/Get.ts +0 -88
- package/source/directives/octets/Octets.ts +0 -82
- package/source/directives/octets/Put.ts +0 -186
- package/source/directives/octets/Workflow.ts +0 -60
- package/source/directives/octets/bytes.test.ts +0 -33
- package/source/directives/octets/bytes.ts +0 -18
- package/source/directives/octets/index.ts +0 -3
- package/source/directives/octets/schemas.test.ts +0 -20
- package/source/directives/octets/schemas.ts +0 -15
- package/source/directives/octets/types.ts +0 -9
- package/source/directives/octets/workflows/Execution.ts +0 -130
- package/source/directives/octets/workflows/Workflow.ts +0 -51
- package/source/directives/octets/workflows/index.ts +0 -1
- package/source/directives/require/Directive.ts +0 -5
- package/source/directives/require/Headers.ts +0 -19
- package/source/directives/require/Require.ts +0 -27
- package/source/directives/require/index.ts +0 -3
- package/source/discovery.ts +0 -1
- package/source/exceptions.ts +0 -47
- package/source/index.ts +0 -12
- package/source/io.ts +0 -4
- package/source/manifest.test.ts +0 -56
- package/source/manifest.ts +0 -56
- package/source/octets.d.ts +0 -17
- package/source/root.ts +0 -59
- package/source/schemas.test.ts +0 -31
- package/source/schemas.ts +0 -15
- package/source/service.ts +0 -94
- package/source/shortcuts.ts +0 -14
- package/source/userland.ts +0 -47
- package/transpiled/Annotation.d.ts +0 -70
- package/transpiled/Annotation.js +0 -2
- package/transpiled/Annotation.js.map +0 -1
- package/transpiled/RTD/syntax/parse.d.ts +0 -4
- package/transpiled/RTD/syntax/parse.js +0 -112
- package/transpiled/RTD/syntax/parse.js.map +0 -1
- package/transpiled/RTD/syntax/types.d.ts +0 -52
- package/transpiled/RTD/syntax/types.js +0 -11
- package/transpiled/RTD/syntax/types.js.map +0 -1
- package/transpiled/const.d.ts +0 -36
- package/transpiled/const.js +0 -37
- package/transpiled/const.js.map +0 -1
- package/transpiled/deployment.d.ts +0 -6
- package/transpiled/deployment.js +0 -76
- package/transpiled/deployment.js.map +0 -1
- package/transpiled/manifest.d.ts +0 -3
- package/transpiled/manifest.js +0 -39
- package/transpiled/manifest.js.map +0 -1
- package/transpiled/schemas.d.ts +0 -9
- package/transpiled/schemas.js +0 -9
- package/transpiled/schemas.js.map +0 -1
- package/transpiled/shortcuts.d.ts +0 -3
- package/transpiled/shortcuts.js +0 -13
- package/transpiled/shortcuts.js.map +0 -1
- package/tsconfig.json +0 -13
- package/tsconfig.tsbuildinfo +0 -1
- package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
- package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
- package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
- package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
- package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
- package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
- package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
- package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
- package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
- package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
package/schemas/node.cos.yaml
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
properties:
|
|
2
|
-
protected:
|
|
3
|
-
type: boolean
|
|
4
|
-
isolated:
|
|
5
|
-
type: boolean
|
|
6
|
-
forward:
|
|
7
|
-
type: string
|
|
8
|
-
routes:
|
|
9
|
-
type: array
|
|
10
|
-
items:
|
|
11
|
-
$ref: route
|
|
12
|
-
methods:
|
|
13
|
-
type: array
|
|
14
|
-
items:
|
|
15
|
-
$ref: method
|
|
16
|
-
directives:
|
|
17
|
-
type: array
|
|
18
|
-
items:
|
|
19
|
-
$ref: directive
|
|
20
|
-
version:
|
|
21
|
-
type: string
|
|
22
|
-
type: object
|
package/schemas/query.cos.yaml
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
properties:
|
|
2
|
-
id:
|
|
3
|
-
type: string
|
|
4
|
-
criteria:
|
|
5
|
-
type: string
|
|
6
|
-
sort:
|
|
7
|
-
type: string
|
|
8
|
-
search:
|
|
9
|
-
type: boolean
|
|
10
|
-
sample:
|
|
11
|
-
type: integer
|
|
12
|
-
omit:
|
|
13
|
-
$ref: range
|
|
14
|
-
limit:
|
|
15
|
-
$ref: range
|
|
16
|
-
selectors:
|
|
17
|
-
type: array
|
|
18
|
-
items:
|
|
19
|
-
type: string
|
|
20
|
-
projection:
|
|
21
|
-
type: array
|
|
22
|
-
items:
|
|
23
|
-
type: string
|
|
24
|
-
parameters:
|
|
25
|
-
type: array
|
|
26
|
-
items:
|
|
27
|
-
type: string
|
|
28
|
-
deleted:
|
|
29
|
-
type: boolean
|
|
30
|
-
nullable: true
|
|
31
|
-
type: object
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
properties:
|
|
2
|
-
id:
|
|
3
|
-
type: string
|
|
4
|
-
criteria:
|
|
5
|
-
type: string
|
|
6
|
-
search:
|
|
7
|
-
type: string
|
|
8
|
-
sample:
|
|
9
|
-
type: number
|
|
10
|
-
sort:
|
|
11
|
-
type: string
|
|
12
|
-
omit:
|
|
13
|
-
type: number
|
|
14
|
-
limit:
|
|
15
|
-
type: number
|
|
16
|
-
version:
|
|
17
|
-
type: number
|
|
18
|
-
additionalProperties: false
|
|
19
|
-
type: object
|
package/schemas/range.cos.yaml
DELETED
package/schemas/route.cos.yaml
DELETED
package/source/Annotation.ts
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import type { Resources } from '@toa.io/operations'
|
|
2
|
-
import type { Protocol } from './HTTP/index.js'
|
|
3
|
-
|
|
4
|
-
export interface Annotation {
|
|
5
|
-
authorities: Record<string, string>
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* `h2c` requires an ingress controller that proxies cleartext HTTP/2 upstream.
|
|
9
|
-
* See `documentation/protocol.md`.
|
|
10
|
-
*/
|
|
11
|
-
protocol?: Protocol
|
|
12
|
-
class?: string
|
|
13
|
-
resources?: Resources
|
|
14
|
-
annotations?: Record<string, string>
|
|
15
|
-
|
|
16
|
-
/** The Service, as opposed to the Ingress that `annotations` above describes. */
|
|
17
|
-
service?: { annotations?: Record<string, string> }
|
|
18
|
-
|
|
19
|
-
debug?: boolean
|
|
20
|
-
|
|
21
|
-
/** The header the client address is read from; the connection's without one. See `ip.md`. */
|
|
22
|
-
ip?: string
|
|
23
|
-
|
|
24
|
-
/** Failed authentications an address may make; none are metered unless set. See `identity.md`. */
|
|
25
|
-
bouncer?: Bouncer
|
|
26
|
-
|
|
27
|
-
/** The authorization server this context exposes; none is exposed without it. */
|
|
28
|
-
oauth?: OAuth
|
|
29
|
-
|
|
30
|
-
/** JSON-RPC at `/.rpc`; none is served without it. See `documentation/rpc.md`. */
|
|
31
|
-
rpc?: RPC
|
|
32
|
-
|
|
33
|
-
/** MCP at `/.mcp`; none is served without it. See `documentation/mcp.md`. */
|
|
34
|
-
mcp?: MCP
|
|
35
|
-
'/'?: object // parsed and validated by RTD.syntax.parse
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface OAuth {
|
|
39
|
-
/**
|
|
40
|
-
* Where a client sends the user to consent. The one endpoint of the flow that needs a
|
|
41
|
-
* person, and so the one this extension does not serve: an application builds it.
|
|
42
|
-
*/
|
|
43
|
-
authorize: string
|
|
44
|
-
|
|
45
|
-
/** Paths a token may be restricted to, each advertised as a protected resource. */
|
|
46
|
-
resources?: string[]
|
|
47
|
-
|
|
48
|
-
/** What a client may ask for. Each is a role, or a scope within one. */
|
|
49
|
-
scopes?: string[]
|
|
50
|
-
|
|
51
|
-
/** Origins whose Client ID Metadata Documents may be read. None are without it. */
|
|
52
|
-
trust?: string[]
|
|
53
|
-
|
|
54
|
-
/** Dynamic Client Registration, off unless opened. */
|
|
55
|
-
registration?: 'open' | 'closed'
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface RPC {
|
|
59
|
-
/**
|
|
60
|
-
* Calls one request may carry, 32 by default. One request is one authentication and one
|
|
61
|
-
* reply however many calls it makes, so what a caller may ask for at once is bounded.
|
|
62
|
-
*/
|
|
63
|
-
batch?: number
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export interface MCP {
|
|
67
|
-
/** What the server calls itself, which a client shows a user. */
|
|
68
|
-
name: string
|
|
69
|
-
|
|
70
|
-
/** What a model is told before it calls anything here. */
|
|
71
|
-
instructions?: string
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Browser origins the endpoint answers, which the revision requires against DNS rebinding.
|
|
75
|
-
* None are admitted without it; a request carrying no `Origin` is not a browser's.
|
|
76
|
-
*/
|
|
77
|
-
origins?: string[]
|
|
78
|
-
|
|
79
|
-
/** Whether the endpoint answers without a credential. It does not unless it says so. */
|
|
80
|
-
anonymous?: boolean
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface Bouncer {
|
|
84
|
-
/** what an address may fail at once, 20 by default */
|
|
85
|
-
attempts?: number
|
|
86
|
-
|
|
87
|
-
/** seconds it takes to earn them back, 60 by default */
|
|
88
|
-
interval?: number
|
|
89
|
-
}
|
package/source/Branch.test.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { it } from 'node:test'
|
|
2
|
-
import assert from 'node:assert/strict'
|
|
3
|
-
|
|
4
|
-
import { decide } from './Branch.js'
|
|
5
|
-
import type { Branch, Exposed } from './Branch.js'
|
|
6
|
-
|
|
7
|
-
function branch(version: string, timestamp: number): Branch {
|
|
8
|
-
return {
|
|
9
|
-
namespace: 'default',
|
|
10
|
-
component: 'one',
|
|
11
|
-
isolated: false,
|
|
12
|
-
node: { routes: [], methods: [], directives: [] },
|
|
13
|
-
version,
|
|
14
|
-
timestamp
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function exposed(version: string, timestamp: number): Exposed {
|
|
19
|
-
return { version, timestamp, nodes: [] }
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
it('should refresh the same version', () => {
|
|
23
|
-
assert.deepStrictEqual(decide(exposed('a', 1), branch('a', 2)), 'refresh')
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
it('should refresh the same version announced by an older tenant', () => {
|
|
27
|
-
assert.deepStrictEqual(decide(exposed('a', 2), branch('a', 1)), 'refresh')
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
it('should merge a newer tenant', () => {
|
|
31
|
-
assert.deepStrictEqual(decide(exposed('a', 1), branch('b', 2)), 'merge')
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
it('should not merge a tenant that started earlier', () => {
|
|
35
|
-
assert.deepStrictEqual(decide(exposed('b', 2), branch('a', 1)), 'superseded')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('should merge when tenants started at the same time', () => {
|
|
39
|
-
assert.deepStrictEqual(decide(exposed('a', 1), branch('b', 1)), 'merge')
|
|
40
|
-
})
|
package/source/Branch.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type * as RTD from './RTD/syntax/index.js'
|
|
2
|
-
import type { Node } from './RTD/index.js'
|
|
3
|
-
|
|
4
|
-
export interface Branch {
|
|
5
|
-
namespace: string
|
|
6
|
-
component: string
|
|
7
|
-
isolated: boolean
|
|
8
|
-
node: RTD.Node
|
|
9
|
-
version: string
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* When the tenant that announced it started, by its own clock. A replica on its way
|
|
13
|
-
* out announces the same component with an older stamp than the one replacing it, and
|
|
14
|
-
* that is what tells the two apart when their versions differ.
|
|
15
|
-
*/
|
|
16
|
-
timestamp: number
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/** A branch the gateway has merged, and the tenant it came from. */
|
|
20
|
-
export interface Exposed {
|
|
21
|
-
version: string
|
|
22
|
-
|
|
23
|
-
/** The start time of the tenant this branch came from. */
|
|
24
|
-
timestamp: number
|
|
25
|
-
|
|
26
|
-
nodes: Node[]
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* What to do with an announcement about a component that already has a branch exposed.
|
|
31
|
-
*
|
|
32
|
-
* - `refresh`: the same version, so its expiration is extended and its endpoints left alone
|
|
33
|
-
* - `superseded`: it came from a tenant that started before the one exposed now
|
|
34
|
-
* - `merge`: everything else
|
|
35
|
-
*/
|
|
36
|
-
export function decide(exposed: Exposed, branch: Branch): Decision {
|
|
37
|
-
if (exposed.version === branch.version) return 'refresh'
|
|
38
|
-
|
|
39
|
-
if (branch.timestamp < exposed.timestamp) return 'superseded'
|
|
40
|
-
|
|
41
|
-
return 'merge'
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export type Decision = 'merge' | 'refresh' | 'superseded'
|
package/source/Composition.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { readdirSync, type Dirent } from 'node:fs'
|
|
2
|
-
import { resolve } from 'node:path'
|
|
3
|
-
import { Connector } from '@toa.io/core'
|
|
4
|
-
import { type Host } from './Factory.js'
|
|
5
|
-
|
|
6
|
-
export class Composition extends Connector {
|
|
7
|
-
private readonly host: Host
|
|
8
|
-
|
|
9
|
-
public constructor(host: Host) {
|
|
10
|
-
super()
|
|
11
|
-
this.host = host
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
protected override async open(): Promise<void> {
|
|
15
|
-
const paths = find()
|
|
16
|
-
const composition = await this.host.composition(paths)
|
|
17
|
-
|
|
18
|
-
await composition.connect()
|
|
19
|
-
|
|
20
|
-
this.depends(composition)
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function find(): string[] {
|
|
25
|
-
return entries().map((entry) => resolve(ROOT, entry.name))
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function entries(): Dirent[] {
|
|
29
|
-
const entries = readdirSync(ROOT, { withFileTypes: true })
|
|
30
|
-
|
|
31
|
-
return entries.filter((entry) => entry.isDirectory())
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function components(): Components {
|
|
35
|
-
const labels: string[] = []
|
|
36
|
-
const paths: string[] = []
|
|
37
|
-
|
|
38
|
-
for (const entry of entries()) {
|
|
39
|
-
labels.push(entry.name.replace('.', '-'))
|
|
40
|
-
paths.push(resolve(ROOT, entry.name))
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return { labels, paths }
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
interface Components {
|
|
47
|
-
labels: string[]
|
|
48
|
-
paths: string[]
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const ROOT = resolve(import.meta.dirname, '../components/')
|
package/source/Context.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type * as RTD from './RTD/index.js'
|
|
2
|
-
|
|
3
|
-
// the trunk is built from the context annotation and belongs to no branch,
|
|
4
|
-
// thus its endpoints must be fully qualified and are not versioned
|
|
5
|
-
export type Context = RTD.Context<Extension | undefined>
|
|
6
|
-
|
|
7
|
-
interface Extension {
|
|
8
|
-
namespace: string
|
|
9
|
-
component: string
|
|
10
|
-
version: string
|
|
11
|
-
}
|
package/source/Directive.test.ts
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import { describe, it, beforeEach, mock } from 'node:test'
|
|
2
|
-
import assert from 'node:assert/strict'
|
|
3
|
-
|
|
4
|
-
import { generate } from 'randomstring'
|
|
5
|
-
import { DirectivesFactory } from './Directive.js'
|
|
6
|
-
import type { syntax, DirectiveFamily } from './RTD/index.js'
|
|
7
|
-
import type { Remotes } from './Remotes.js'
|
|
8
|
-
import type { Host } from './Factory.js'
|
|
9
|
-
import type { Context } from './HTTP/index.js'
|
|
10
|
-
|
|
11
|
-
const sequence: string[] = []
|
|
12
|
-
|
|
13
|
-
const families: Array<DirectiveFamily> = [
|
|
14
|
-
{
|
|
15
|
-
name: 'foo',
|
|
16
|
-
mandatory: true,
|
|
17
|
-
create: mock.fn((_0: any, _1: any, _2: any) => generate() as any),
|
|
18
|
-
arrange: mock.fn(),
|
|
19
|
-
precall: mock.fn(() => {
|
|
20
|
-
sequence.push('foo')
|
|
21
|
-
return null
|
|
22
|
-
}),
|
|
23
|
-
settle: mock.fn(),
|
|
24
|
-
dispose: mock.fn()
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: 'qux',
|
|
28
|
-
mandatory: true,
|
|
29
|
-
create: mock.fn((_0: any, _1: any, _2: any) => generate() as any),
|
|
30
|
-
arrange: mock.fn(),
|
|
31
|
-
precall: mock.fn(() => {
|
|
32
|
-
sequence.push('qux')
|
|
33
|
-
return null
|
|
34
|
-
}),
|
|
35
|
-
settle: mock.fn(),
|
|
36
|
-
dispose: mock.fn()
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: 'bar',
|
|
40
|
-
mandatory: false,
|
|
41
|
-
create: mock.fn((_0: string, _1: any, _2: any) => generate() as any),
|
|
42
|
-
arrange: mock.fn(),
|
|
43
|
-
precall: mock.fn(() => {
|
|
44
|
-
sequence.push('bar')
|
|
45
|
-
return null
|
|
46
|
-
}),
|
|
47
|
-
settle: mock.fn(),
|
|
48
|
-
dispose: mock.fn()
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
|
|
52
|
-
let factory: DirectivesFactory
|
|
53
|
-
|
|
54
|
-
beforeEach(() => {
|
|
55
|
-
resetCalls()
|
|
56
|
-
sequence.length = 0
|
|
57
|
-
|
|
58
|
-
for (const family of families) {
|
|
59
|
-
assert.ok(family.precall !== undefined)
|
|
60
|
-
|
|
61
|
-
family.precall.mock.mockImplementation(() => {
|
|
62
|
-
sequence.push(family.name)
|
|
63
|
-
return null
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
factory = new DirectivesFactory(
|
|
68
|
-
families,
|
|
69
|
-
{} as unknown as Remotes,
|
|
70
|
-
{} as unknown as Host,
|
|
71
|
-
{ authorities: {} }
|
|
72
|
-
)
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
it('should create directive', async () => {
|
|
76
|
-
const declarations: syntax.Directive[] = [
|
|
77
|
-
{
|
|
78
|
-
family: 'foo',
|
|
79
|
-
name: generate(),
|
|
80
|
-
value: generate()
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
family: 'bar',
|
|
84
|
-
name: generate(),
|
|
85
|
-
value: generate()
|
|
86
|
-
}
|
|
87
|
-
]
|
|
88
|
-
|
|
89
|
-
factory.create(declarations)
|
|
90
|
-
|
|
91
|
-
for (const declaration of declarations) {
|
|
92
|
-
const family = families.find(({ name }) => name === declaration.family)!
|
|
93
|
-
|
|
94
|
-
assert.strictEqual(family.create.mock.calls[0].arguments[0], declaration.name)
|
|
95
|
-
assert.strictEqual(family.create.mock.calls[0].arguments[1], declaration.value)
|
|
96
|
-
}
|
|
97
|
-
})
|
|
98
|
-
|
|
99
|
-
it('should pass the route to the families', async () => {
|
|
100
|
-
const route = '/' + generate()
|
|
101
|
-
|
|
102
|
-
factory.create([{ family: 'foo', name: generate(), value: generate() }], route)
|
|
103
|
-
|
|
104
|
-
assert.strictEqual(families[0].create.mock.calls[0].arguments[3], route)
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
it('should throw error if directive family is not found', async () => {
|
|
108
|
-
const declaration: syntax.Directive = {
|
|
109
|
-
family: generate(),
|
|
110
|
-
name: generate(),
|
|
111
|
-
value: generate()
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
assert.throws(
|
|
115
|
-
() => factory.create([declaration]),
|
|
116
|
-
(error: Error) =>
|
|
117
|
-
error.message.includes(`Directive family '${declaration.family}' is not found`)
|
|
118
|
-
)
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
it('should apply directive', async () => {
|
|
122
|
-
const declaration: syntax.Directive = {
|
|
123
|
-
family: 'foo',
|
|
124
|
-
name: generate(),
|
|
125
|
-
value: generate()
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
const directives = factory.create([declaration])
|
|
129
|
-
const request = generate() as unknown as Context
|
|
130
|
-
const directive = families[0].create.mock.calls[0].result
|
|
131
|
-
|
|
132
|
-
await directives.precall(request, [])
|
|
133
|
-
|
|
134
|
-
assert.ok(families[0].precall !== undefined)
|
|
135
|
-
|
|
136
|
-
assert.deepStrictEqual(families[0].precall.mock.calls[0].arguments[0], [directive])
|
|
137
|
-
assert.deepStrictEqual(families[0].precall.mock.calls[0].arguments[1], request)
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
it('should apply mandatory families', async () => {
|
|
141
|
-
const directives = factory.create([])
|
|
142
|
-
const request = generate() as unknown as Context
|
|
143
|
-
|
|
144
|
-
await directives.precall(request, [])
|
|
145
|
-
|
|
146
|
-
assert.ok(families[0].precall.mock.callCount() > 0)
|
|
147
|
-
})
|
|
148
|
-
|
|
149
|
-
describe('order', () => {
|
|
150
|
-
// the order the families actually ran, as each precall recorded it
|
|
151
|
-
function order(): string[] {
|
|
152
|
-
return sequence
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
it('should run mandatory families in their own order, whatever a manifest says', async () => {
|
|
156
|
-
// `qux` declared first, but `foo` is registered first and both are mandatory
|
|
157
|
-
const directives = factory.create([
|
|
158
|
-
{ family: 'qux', name: generate(), value: generate() },
|
|
159
|
-
{ family: 'foo', name: generate(), value: generate() }
|
|
160
|
-
])
|
|
161
|
-
|
|
162
|
-
await directives.precall(generate() as unknown as Context, [])
|
|
163
|
-
|
|
164
|
-
assert.deepStrictEqual(order(), ['foo', 'qux'])
|
|
165
|
-
})
|
|
166
|
-
|
|
167
|
-
it('should run a mandatory family before a declared one it is not declared with', async () => {
|
|
168
|
-
// only `qux` is declared: `foo` still has to run first, not merely first of
|
|
169
|
-
// whatever had no declarations
|
|
170
|
-
const directives = factory.create([
|
|
171
|
-
{ family: 'qux', name: generate(), value: generate() }
|
|
172
|
-
])
|
|
173
|
-
|
|
174
|
-
await directives.precall(generate() as unknown as Context, [])
|
|
175
|
-
|
|
176
|
-
assert.deepStrictEqual(order(), ['foo', 'qux'])
|
|
177
|
-
})
|
|
178
|
-
|
|
179
|
-
it('should run mandatory families before the rest', async () => {
|
|
180
|
-
const directives = factory.create([
|
|
181
|
-
{ family: 'bar', name: generate(), value: generate() },
|
|
182
|
-
{ family: 'qux', name: generate(), value: generate() }
|
|
183
|
-
])
|
|
184
|
-
|
|
185
|
-
await directives.precall(generate() as unknown as Context, [])
|
|
186
|
-
|
|
187
|
-
assert.deepStrictEqual(order(), ['foo', 'qux', 'bar'])
|
|
188
|
-
})
|
|
189
|
-
})
|
|
190
|
-
|
|
191
|
-
function resetCalls(target = [families], seen = new Set()) {
|
|
192
|
-
if (target === null || typeof target !== 'object' || seen.has(target)) return
|
|
193
|
-
|
|
194
|
-
seen.add(target)
|
|
195
|
-
|
|
196
|
-
for (const value of Object.values(target))
|
|
197
|
-
if (typeof value === 'function' && value.mock !== undefined) value.mock.resetCalls()
|
|
198
|
-
else resetCalls(value, seen)
|
|
199
|
-
}
|