@toa.io/extensions.exposition 1.0.0-alpha.5 → 1.0.0-alpha.51
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/context.toa.yaml +2 -2
- package/components/identity.bans/manifest.toa.yaml +15 -7
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +22 -9
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +5 -2
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- package/components/identity.basic/operations/incept.d.ts +12 -0
- package/components/identity.basic/operations/incept.js +26 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +4 -4
- package/components/identity.basic/operations/transit.js +5 -3
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/types.d.ts +8 -4
- package/components/identity.basic/source/authenticate.ts +16 -5
- package/components/identity.basic/source/incept.ts +38 -0
- package/components/identity.basic/source/transit.ts +8 -6
- package/components/identity.basic/source/types.ts +8 -4
- package/components/identity.federation/manifest.toa.yaml +32 -22
- package/components/identity.federation/operations/authenticate.d.ts +2 -2
- package/components/identity.federation/operations/authenticate.js +4 -11
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/{create.js → incept.js} +6 -7
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/jwt.d.ts +4 -5
- package/components/identity.federation/operations/lib/jwt.js +12 -7
- package/components/identity.federation/operations/lib/jwt.js.map +1 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/operations/types/configuration.d.ts +14 -0
- package/components/identity.federation/operations/types/configuration.js +3 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +15 -7
- package/components/identity.federation/operations/types/context.js +3 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/types/entity.js +3 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +6 -19
- package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
- package/components/identity.federation/source/lib/jwt.test.ts +50 -4
- package/components/identity.federation/source/lib/jwt.ts +20 -12
- package/components/identity.federation/source/types/configuration.ts +15 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +3 -0
- package/components/identity.federation/tsconfig.json +2 -2
- package/components/identity.roles/manifest.toa.yaml +18 -6
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +1 -4
- package/components/identity.roles/operations/list.js.map +1 -1
- package/components/identity.roles/operations/principal.d.ts +4 -6
- package/components/identity.roles/operations/principal.js +6 -1
- package/components/identity.roles/operations/principal.js.map +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +32 -0
- package/components/identity.roles/source/lib/Entity.ts +5 -0
- package/components/identity.roles/source/list.ts +2 -4
- package/components/identity.roles/source/principal.ts +10 -8
- package/components/identity.tokens/manifest.toa.yaml +19 -5
- package/components/identity.tokens/operations/authenticate.d.ts +2 -2
- package/components/identity.tokens/operations/authenticate.js +12 -5
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.js +1 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +5 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +8 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +14 -6
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +0 -7
- package/documentation/access.md +75 -38
- package/documentation/authorities.md +49 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +47 -22
- package/documentation/flow.md +31 -0
- package/documentation/identity.md +17 -22
- package/documentation/introspection.md +68 -0
- package/documentation/io.md +56 -0
- package/documentation/octets.md +34 -23
- package/documentation/protocol.md +3 -0
- package/documentation/query.md +17 -11
- package/documentation/require.md +15 -0
- package/documentation/tree.md +35 -4
- package/documentation/vary.md +14 -14
- package/features/access.feature +89 -47
- package/features/annotation.feature +2 -0
- package/features/auth.claim.feature +170 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +4 -0
- package/features/cache.feature +112 -5
- package/features/cors.feature +5 -0
- package/features/debug.feature +34 -0
- package/features/directives.feature +5 -0
- package/features/dynamic.feature +18 -7
- package/features/errors.feature +18 -4
- package/features/etag.feature +7 -0
- package/features/flow.feature +45 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +142 -19
- package/features/identity.feature +7 -2
- package/features/identity.federation.feature +68 -15
- package/features/identity.roles.feature +251 -7
- package/features/identity.tokens.feature +57 -4
- package/features/introspection.feature +76 -0
- package/features/io.feature +205 -0
- package/features/octets.entries.feature +10 -1
- package/features/octets.feature +60 -64
- package/features/octets.meta.feature +7 -3
- package/features/octets.workflows.feature +240 -19
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +50 -3
- package/features/require.feature +67 -0
- package/features/response.feature +12 -3
- package/features/routes.feature +110 -12
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +23 -6
- package/features/steps/IdP.ts +30 -25
- package/features/steps/components/echo/manifest.toa.yaml +12 -1
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +22 -1
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/baz.js +1 -2
- package/features/steps/components/octets.tester/operations/diversify.js +3 -1
- package/features/steps/components/octets.tester/operations/foo.js +2 -2
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +16 -3
- package/features/steps/components/users.properties/manifest.toa.yaml +2 -1
- package/features/streams.feature +1 -0
- package/features/timing.feature +27 -1
- package/features/vary.feature +104 -3
- package/package.json +12 -11
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/io/input.cos.yaml +3 -0
- package/schemas/io/message.cos.yaml +5 -0
- package/schemas/io/output.cos.yaml +5 -0
- package/schemas/node.cos.yaml +1 -0
- package/source/Annotation.ts +3 -3
- package/source/Composition.ts +2 -2
- package/source/Directive.ts +4 -5
- package/source/Endpoint.ts +18 -12
- package/source/Factory.ts +10 -11
- package/source/Gateway.ts +55 -20
- package/source/HTTP/Context.ts +24 -2
- package/source/HTTP/Server.ts +51 -43
- package/source/HTTP/exceptions.ts +7 -1
- package/source/HTTP/messages.test.ts +39 -2
- package/source/HTTP/messages.ts +7 -3
- package/source/Mapping.ts +6 -1
- package/source/Query.test.ts +1 -1
- package/source/Query.ts +35 -24
- package/source/RTD/Endpoint.ts +3 -0
- package/source/RTD/Method.ts +4 -0
- package/source/RTD/Node.ts +10 -2
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/factory.ts +5 -2
- package/source/RTD/syntax/parse.ts +37 -24
- package/source/RTD/syntax/types.ts +2 -1
- package/source/Remotes.ts +4 -4
- package/source/Tenant.ts +0 -8
- package/source/deployment.ts +32 -22
- package/source/directives/auth/Authorization.ts +40 -17
- package/source/directives/auth/Delegate.ts +42 -0
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Incept.ts +4 -3
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +22 -14
- package/source/directives/auth/types.ts +1 -1
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/flow/Fetch.ts +88 -0
- package/source/directives/flow/Flow.ts +34 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +6 -0
- package/source/directives/index.ts +6 -3
- package/source/directives/io/Directive.ts +11 -0
- package/source/directives/io/IO.ts +43 -0
- package/source/directives/io/Input.ts +50 -0
- package/source/directives/io/Message.ts +1 -0
- package/source/directives/io/Output.ts +69 -0
- package/source/directives/io/index.ts +3 -0
- package/source/directives/io/schemas.ts +12 -0
- package/source/directives/octets/Context.ts +4 -3
- package/source/directives/octets/Delete.ts +4 -2
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Fetch.ts +14 -12
- package/source/directives/octets/List.ts +9 -7
- package/source/directives/octets/Octets.ts +4 -5
- package/source/directives/octets/Store.ts +4 -2
- package/source/directives/octets/Workflow.ts +10 -3
- package/source/directives/octets/schemas.ts +4 -4
- package/source/directives/octets/types.ts +0 -7
- package/source/directives/octets/workflows/Execution.ts +59 -8
- package/source/directives/octets/workflows/Workflow.ts +2 -1
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/directives/vary/Directive.ts +2 -1
- package/source/directives/vary/Embed.ts +14 -8
- package/source/directives/vary/Vary.ts +6 -4
- package/source/directives/vary/embeddings/Authority.ts +8 -0
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/Header.ts +8 -6
- package/source/directives/vary/embeddings/Parameter.ts +14 -0
- package/source/directives/vary/embeddings/index.ts +6 -4
- package/source/exceptions.ts +22 -11
- package/source/manifest.ts +8 -9
- package/source/root.ts +5 -0
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -3
- package/transpiled/Composition.js +2 -2
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Directive.js +4 -4
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +5 -4
- package/transpiled/Endpoint.js +8 -4
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +1 -1
- package/transpiled/Factory.js +9 -8
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +2 -0
- package/transpiled/Gateway.js +39 -12
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +8 -1
- package/transpiled/HTTP/Context.js +15 -2
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +13 -2
- package/transpiled/HTTP/Server.js +38 -35
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +4 -1
- package/transpiled/HTTP/exceptions.js +7 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +1 -0
- package/transpiled/HTTP/messages.js +9 -3
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Mapping.js +4 -1
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +1 -0
- package/transpiled/Query.js +21 -20
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Endpoint.d.ts +1 -0
- package/transpiled/RTD/Method.d.ts +1 -0
- package/transpiled/RTD/Method.js +3 -0
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +2 -0
- package/transpiled/RTD/Node.js +9 -2
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +1 -1
- package/transpiled/RTD/Route.js +0 -1
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/factory.js +5 -2
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/syntax/parse.js +34 -22
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +1 -0
- package/transpiled/RTD/syntax/types.js +1 -1
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.d.ts +2 -2
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +0 -1
- package/transpiled/Tenant.js +0 -6
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -20
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Authorization.js +28 -12
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +10 -0
- package/transpiled/directives/auth/Delegate.js +34 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/Federation.d.ts +16 -0
- package/transpiled/directives/auth/Federation.js +57 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Incept.js +4 -3
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +20 -14
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +10 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +2 -1
- package/transpiled/directives/cache/Control.js +29 -12
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/flow/Fetch.d.ts +13 -0
- package/transpiled/directives/flow/Fetch.js +59 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +27 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +5 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.js +6 -3
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Directive.d.ts +8 -0
- package/transpiled/directives/io/Directive.js +3 -0
- package/transpiled/directives/io/Directive.js.map +1 -0
- package/transpiled/directives/io/IO.d.ts +9 -0
- package/transpiled/directives/io/IO.js +33 -0
- package/transpiled/directives/io/IO.js.map +1 -0
- package/transpiled/directives/io/Input.d.ts +11 -0
- package/transpiled/directives/{octets/Permute.js → io/Input.js} +33 -26
- package/transpiled/directives/io/Input.js.map +1 -0
- package/transpiled/directives/io/Message.d.ts +1 -0
- package/transpiled/directives/io/Message.js +3 -0
- package/transpiled/directives/io/Message.js.map +1 -0
- package/transpiled/directives/io/Output.d.ts +13 -0
- package/transpiled/directives/io/Output.js +76 -0
- package/transpiled/directives/io/Output.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +2 -0
- package/transpiled/directives/io/index.js +6 -0
- package/transpiled/directives/io/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +7 -0
- package/transpiled/directives/io/schemas.js +14 -0
- package/transpiled/directives/io/schemas.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +3 -3
- package/transpiled/directives/octets/Context.js +4 -2
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.d.ts +3 -2
- package/transpiled/directives/octets/Delete.js +3 -1
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.d.ts +8 -0
- package/transpiled/directives/octets/Directive.js +8 -0
- package/transpiled/directives/octets/Directive.js.map +1 -0
- package/transpiled/directives/octets/Fetch.d.ts +6 -5
- package/transpiled/directives/octets/Fetch.js +10 -8
- package/transpiled/directives/octets/Fetch.js.map +1 -1
- package/transpiled/directives/octets/List.d.ts +6 -5
- package/transpiled/directives/octets/List.js +6 -4
- package/transpiled/directives/octets/List.js.map +1 -1
- package/transpiled/directives/octets/Octets.d.ts +2 -1
- package/transpiled/directives/octets/Octets.js +2 -4
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/Store.d.ts +3 -2
- package/transpiled/directives/octets/Store.js +3 -1
- package/transpiled/directives/octets/Store.js.map +1 -1
- package/transpiled/directives/octets/Workflow.d.ts +3 -2
- package/transpiled/directives/octets/Workflow.js +9 -2
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/schemas.d.ts +4 -4
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +0 -5
- package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
- package/transpiled/directives/octets/workflows/Execution.js +43 -9
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -1
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/directives/vary/Directive.d.ts +2 -1
- package/transpiled/directives/vary/Embed.d.ts +2 -1
- package/transpiled/directives/vary/Embed.js +8 -6
- package/transpiled/directives/vary/Embed.js.map +1 -1
- package/transpiled/directives/vary/Vary.d.ts +2 -2
- package/transpiled/directives/vary/Vary.js +3 -3
- package/transpiled/directives/vary/Vary.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
- package/transpiled/directives/vary/embeddings/Authority.js +10 -0
- package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
- package/transpiled/directives/vary/embeddings/Header.js +8 -6
- package/transpiled/directives/vary/embeddings/Header.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
- package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
- package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
- package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
- package/transpiled/directives/vary/embeddings/index.js +8 -4
- package/transpiled/directives/vary/embeddings/index.js.map +1 -1
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +13 -7
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +8 -9
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +5 -0
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +1 -1
- package/transpiled/schemas.js +2 -2
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/create.d.ts +0 -10
- package/components/identity.basic/operations/create.js +0 -10
- package/components/identity.basic/operations/create.js.map +0 -1
- package/components/identity.basic/source/create.ts +0 -18
- package/components/identity.federation/operations/create.d.ts +0 -10
- package/components/identity.federation/operations/create.js.map +0 -1
- package/components/identity.federation/operations/schemas.d.ts +0 -59
- package/components/identity.federation/operations/schemas.js +0 -9
- package/components/identity.federation/operations/schemas.js.map +0 -1
- package/components/identity.federation/operations/types.js.map +0 -1
- package/components/identity.federation/source/schemas.ts +0 -61
- package/components/octets.storage/operations/permute.js +0 -7
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Permute.ts +0 -43
- package/transpiled/directives/octets/Permute.d.ts +0 -10
- package/transpiled/directives/octets/Permute.js.map +0 -1
- /package/{components/identity.federation/operations → transpiled/directives/flow}/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../source/directives/auth/Role.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../source/directives/auth/Role.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAKhC,MAAa,IAAI;IACR,MAAM,CAAC,MAAM,GAAqB,IAAI,CAAA;IAC5B,KAAK,CAAU;IACf,SAAS,CAAoB;IAC7B,OAAO,CAAS;IAEjC,YAAoB,KAAwB,EAAE,SAA6B;QACzE,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAE,QAAkB,EAAE,SAA6B;QACxE,IAAI,CAAC,MAAM,KAAK,MAAM,SAAS,CAAA;QAE/B,MAAM,KAAK,GAAU;YACnB,QAAQ,EAAE,aAAa,QAAQ,CAAC,EAAE,EAAE;YACpC,KAAK,EAAE,IAAI;SACZ,CAAA;QAED,QAAQ,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9D,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,QAAyB,EAAE,CAAU,EAAE,UAAuB;QAC7D,IAAI,QAAQ,KAAK,IAAI;YACnB,OAAO,KAAK,CAAA;QAEd,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAExC,IAAI,QAAQ,CAAC,KAAM,CAAC,MAAM,KAAK,CAAC,EAAE,aAAa;YAE7C,OAAO,KAAK,CAAA;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAM,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAE,KAAe,EAAE,UAAuB;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;QAExE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;YAE5F,IAAI,EAAE;gBACJ,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,UAAU,CAAE,UAAuB;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACrE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,CAAA;YAE3E,qBAAM,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,EAC3B,SAAS,IAAI,eAAe,GAAG,oBAAoB,CAAC,CAAA;YAEtD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;;AA3DH,oBA4DC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Directive } from './types';
|
|
1
|
+
import type { Output } from '../../io';
|
|
2
|
+
import type { AuthenticatedContext, Directive } from './types';
|
|
3
3
|
import type { DirectiveFamily } from '../../RTD';
|
|
4
4
|
import type * as http from '../../HTTP';
|
|
5
5
|
export declare class Cache implements DirectiveFamily<Directive> {
|
|
@@ -7,5 +7,5 @@ export declare class Cache implements DirectiveFamily<Directive> {
|
|
|
7
7
|
readonly mandatory: boolean;
|
|
8
8
|
create(name: string, value: any): Directive;
|
|
9
9
|
preflight(): Output;
|
|
10
|
-
settle(directives: Directive[],
|
|
10
|
+
settle(directives: Directive[], context: AuthenticatedContext, response: http.OutgoingMessage): Promise<void>;
|
|
11
11
|
}
|
|
@@ -5,19 +5,25 @@ const Control_1 = require("./Control");
|
|
|
5
5
|
const Exact_1 = require("./Exact");
|
|
6
6
|
class Cache {
|
|
7
7
|
name = 'cache';
|
|
8
|
-
mandatory =
|
|
8
|
+
mandatory = true;
|
|
9
9
|
create(name, value) {
|
|
10
10
|
const Class = constructors[name];
|
|
11
11
|
if (Class === undefined)
|
|
12
|
-
throw new Error(`Directive '
|
|
12
|
+
throw new Error(`Directive 'cache:${name}' is not implemented.`);
|
|
13
13
|
return new Class(value);
|
|
14
14
|
}
|
|
15
15
|
preflight() {
|
|
16
16
|
return null;
|
|
17
17
|
}
|
|
18
|
-
async settle(directives,
|
|
18
|
+
async settle(directives, context, response) {
|
|
19
|
+
const directive = directives[0];
|
|
19
20
|
response.headers ??= new Headers();
|
|
20
|
-
|
|
21
|
+
if (directive === undefined) {
|
|
22
|
+
if (context.identity !== null && !Control_1.Control.disabled(response.headers))
|
|
23
|
+
response.headers.set('cache-control', 'private');
|
|
24
|
+
}
|
|
25
|
+
else
|
|
26
|
+
directive.set(context, response.headers);
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
exports.Cache = Cache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../source/directives/cache/Cache.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AACnC,mCAA+B;AAM/B,MAAa,KAAK;IACA,IAAI,GAAW,OAAO,CAAA;IACtB,SAAS,GAAY,
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../source/directives/cache/Cache.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AACnC,mCAA+B;AAM/B,MAAa,KAAK;IACA,IAAI,GAAW,OAAO,CAAA;IACtB,SAAS,GAAY,IAAI,CAAA;IAElC,MAAM,CAAE,IAAY,EAAE,KAAU;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,uBAAuB,CAAC,CAAA;QAElE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,KAAK,CAAC,MAAM,CAClB,UAAuB,EAAE,OAA6B,EAAE,QAA8B;QACrF,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAE/B,QAAQ,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,CAAA;QAElC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,iBAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAClE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;QACpD,CAAC;;YACC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;CACF;AA7BD,sBA6BC;AAED,MAAM,YAAY,GAAkD;IAClE,OAAO,EAAE,iBAAO;IAChB,KAAK,EAAE,aAAK;CACb,CAAA"}
|
|
@@ -2,8 +2,9 @@ import type { AuthenticatedContext, Directive } from './types';
|
|
|
2
2
|
export declare class Control implements Directive {
|
|
3
3
|
protected readonly value: string;
|
|
4
4
|
private cache;
|
|
5
|
+
private vary;
|
|
5
6
|
constructor(value: string);
|
|
7
|
+
static disabled(headers: Headers): boolean;
|
|
6
8
|
set(context: AuthenticatedContext, headers: Headers): void;
|
|
7
9
|
protected resolve(request: AuthenticatedContext): string;
|
|
8
|
-
private mask;
|
|
9
10
|
}
|
|
@@ -5,38 +5,55 @@ const matchacho_1 = require("matchacho");
|
|
|
5
5
|
class Control {
|
|
6
6
|
value;
|
|
7
7
|
cache = null;
|
|
8
|
+
vary = false;
|
|
8
9
|
constructor(value) {
|
|
9
10
|
this.value = value;
|
|
10
11
|
}
|
|
12
|
+
static disabled(headers) {
|
|
13
|
+
const value = headers.get('cache-control');
|
|
14
|
+
if (value === null)
|
|
15
|
+
return false;
|
|
16
|
+
const directives = mask(value);
|
|
17
|
+
return (directives & NO_STORE) === NO_STORE;
|
|
18
|
+
}
|
|
11
19
|
set(context, headers) {
|
|
12
20
|
if (!['GET', 'HEAD', 'OPTIONS'].includes(context.request.method))
|
|
13
21
|
return;
|
|
14
22
|
this.cache ??= this.resolve(context);
|
|
23
|
+
if (Control.disabled(headers))
|
|
24
|
+
return;
|
|
15
25
|
headers.set('cache-control', this.cache);
|
|
26
|
+
if (this.vary !== null)
|
|
27
|
+
headers.append('vary', 'authorization');
|
|
16
28
|
}
|
|
17
29
|
resolve(request) {
|
|
18
30
|
if (request.identity === null)
|
|
19
31
|
return this.value;
|
|
20
|
-
const directives = this.
|
|
32
|
+
const directives = mask(this.value);
|
|
33
|
+
if ((directives & PRIVATE) === PRIVATE)
|
|
34
|
+
this.vary = true;
|
|
21
35
|
if ((directives & (PUBLIC | NO_CACHE)) === PUBLIC)
|
|
22
36
|
return 'no-cache, ' + this.value;
|
|
23
|
-
if ((directives & (PUBLIC | PRIVATE)) === 0)
|
|
37
|
+
if ((directives & (PUBLIC | PRIVATE)) === 0) {
|
|
38
|
+
this.vary = true;
|
|
24
39
|
return 'private, ' + this.value;
|
|
40
|
+
}
|
|
25
41
|
return this.value;
|
|
26
42
|
}
|
|
27
|
-
mask() {
|
|
28
|
-
const directives = this.value.match(DIRECTIVES_RX);
|
|
29
|
-
if (directives === null)
|
|
30
|
-
return 0;
|
|
31
|
-
let mask = 0;
|
|
32
|
-
for (const directive of directives)
|
|
33
|
-
mask |= (0, matchacho_1.match)(directive, 'private', PRIVATE, 'public', PUBLIC, 'no-cache', NO_CACHE, 0);
|
|
34
|
-
return mask;
|
|
35
|
-
}
|
|
36
43
|
}
|
|
37
44
|
exports.Control = Control;
|
|
38
|
-
|
|
45
|
+
function mask(value) {
|
|
46
|
+
const directives = value.match(DIRECTIVES_RX);
|
|
47
|
+
if (directives === null)
|
|
48
|
+
return 0;
|
|
49
|
+
let mask = 0;
|
|
50
|
+
for (const directive of directives)
|
|
51
|
+
mask |= (0, matchacho_1.match)(directive, 'private', PRIVATE, 'public', PUBLIC, 'no-cache', NO_CACHE, 'no-store', NO_STORE, 0);
|
|
52
|
+
return mask;
|
|
53
|
+
}
|
|
54
|
+
const DIRECTIVES_RX = /\b(private|public|no-cache|no-store)\b/ig;
|
|
39
55
|
const PUBLIC = 1;
|
|
40
56
|
const PRIVATE = 2;
|
|
41
57
|
const NO_CACHE = 4;
|
|
58
|
+
const NO_STORE = 8;
|
|
42
59
|
//# sourceMappingURL=Control.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Control.js","sourceRoot":"","sources":["../../../source/directives/cache/Control.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,MAAa,OAAO;IACC,KAAK,CAAQ;IACxB,KAAK,GAAkB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"Control.js","sourceRoot":"","sources":["../../../source/directives/cache/Control.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,MAAa,OAAO;IACC,KAAK,CAAQ;IACxB,KAAK,GAAkB,IAAI,CAAA;IAC3B,IAAI,GAAY,KAAK,CAAA;IAE7B,YAAoB,KAAa;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,OAAgB;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAE1C,IAAI,KAAK,KAAK,IAAI;YAChB,OAAO,KAAK,CAAA;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAE9B,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,QAAQ,CAAA;IAC7C,CAAC;IAEM,GAAG,CAAE,OAA6B,EAAE,OAAgB;QACzD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9D,OAAM;QAER,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEpC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,OAAM;QAER,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAExC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC3C,CAAC;IAES,OAAO,CAAE,OAA6B;QAC9C,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAA;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEnC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,OAAO;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAElB,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,KAAK,MAAM;YAC/C,OAAO,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;QAElC,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;YAEhB,OAAO,WAAW,GAAG,IAAI,CAAC,KAAK,CAAA;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF;AAvDD,0BAuDC;AAED,SAAS,IAAI,CAAE,KAAa;IAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAE7C,IAAI,UAAU,KAAK,IAAI;QACrB,OAAO,CAAC,CAAA;IAEV,IAAI,IAAI,GAAG,CAAC,CAAA;IAEZ,KAAK,MAAM,SAAS,IAAI,UAAU;QAChC,IAAI,IAAI,IAAA,iBAAK,EAAS,SAAS,EAC7B,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,EACpB,CAAC,CAAC,CAAA;IAEN,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,aAAa,GAAG,0CAA0C,CAAA;AAEhE,MAAM,MAAM,GAAG,CAAC,CAAA;AAChB,MAAM,OAAO,GAAG,CAAC,CAAA;AACjB,MAAM,QAAQ,GAAG,CAAC,CAAA;AAClB,MAAM,QAAQ,GAAG,CAAC,CAAA"}
|
|
@@ -9,7 +9,7 @@ class Development {
|
|
|
9
9
|
create(name, value) {
|
|
10
10
|
const Class = constructors[name];
|
|
11
11
|
if (Class === undefined)
|
|
12
|
-
throw new Error(`Directive '
|
|
12
|
+
throw new Error(`Directive 'dev:${name}' is not implemented.`);
|
|
13
13
|
return new Class(value);
|
|
14
14
|
}
|
|
15
15
|
preflight(directives, input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Development.js","sourceRoot":"","sources":["../../../source/directives/dev/Development.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,mCAA+B;AAK/B,MAAa,WAAW;IACN,IAAI,GAAW,KAAK,CAAA;IACpB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAc;QACzC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"Development.js","sourceRoot":"","sources":["../../../source/directives/dev/Development.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,mCAA+B;AAK/B,MAAa,WAAW;IACN,IAAI,GAAW,KAAK,CAAA;IACpB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAc;QACzC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,uBAAuB,CAAC,CAAA;QAEhE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,SAAS,CAAE,UAAuB,EAAE,KAAY;QACrD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAErC,IAAI,MAAM,KAAK,IAAI;gBACjB,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAvBD,kCAuBC;AAED,MAAM,YAAY,GAAkD;IAClE,IAAI,EAAE,WAAI;IACV,KAAK,EAAE,aAAK;CACb,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Directive } from './types';
|
|
2
|
+
import type { Remotes } from '../../Remotes';
|
|
3
|
+
import type { Output } from '../../io';
|
|
4
|
+
import type { Input } from '../octets/types';
|
|
5
|
+
import type { Parameter } from '../../RTD';
|
|
6
|
+
export declare class Fetch implements Directive {
|
|
7
|
+
readonly targeted = true;
|
|
8
|
+
private readonly connecting;
|
|
9
|
+
private remote;
|
|
10
|
+
private readonly operation;
|
|
11
|
+
constructor(endpoint: string, discovery: Remotes);
|
|
12
|
+
apply(input: Input, parameters: Parameter[]): Promise<Output>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Fetch = void 0;
|
|
7
|
+
const node_stream_1 = require("node:stream");
|
|
8
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
9
|
+
const matchacho_1 = require("matchacho");
|
|
10
|
+
const HTTP_1 = require("../../HTTP");
|
|
11
|
+
class Fetch {
|
|
12
|
+
targeted = true;
|
|
13
|
+
connecting;
|
|
14
|
+
remote = null;
|
|
15
|
+
operation;
|
|
16
|
+
constructor(endpoint, discovery) {
|
|
17
|
+
node_assert_1.default.equal(typeof endpoint, 'string', '`flow:redirect` must be a string');
|
|
18
|
+
const [operation, name, namespace = 'default'] = endpoint.split('.').reverse();
|
|
19
|
+
this.operation = operation;
|
|
20
|
+
this.connecting = discovery.discover(namespace, name);
|
|
21
|
+
}
|
|
22
|
+
async apply(input, parameters) {
|
|
23
|
+
if ('if-none-match' in input.request.headers)
|
|
24
|
+
return { status: 304 };
|
|
25
|
+
this.remote ??= await this.connecting;
|
|
26
|
+
const request = await this.remote.invoke(this.operation, {
|
|
27
|
+
input: {
|
|
28
|
+
authority: input.authority,
|
|
29
|
+
path: input.request.url,
|
|
30
|
+
parameters: Object.fromEntries(parameters.map(({ name, value }) => [name, value]))
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
if (request instanceof Error)
|
|
34
|
+
throw new HTTP_1.NotFound(request);
|
|
35
|
+
const { url, options } = (0, matchacho_1.match)(request, String, { url: request }, (request) => ({
|
|
36
|
+
url: request.url,
|
|
37
|
+
options: {
|
|
38
|
+
method: request.options?.method ?? 'GET',
|
|
39
|
+
body: request.options?.body,
|
|
40
|
+
headers: request.options?.headers
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
const response = await fetch(url, options);
|
|
44
|
+
if (!response.ok)
|
|
45
|
+
throw new HTTP_1.NotFound();
|
|
46
|
+
const headers = new Headers();
|
|
47
|
+
for (const header of ['content-type', 'content-length', 'etag']) {
|
|
48
|
+
const value = response.headers.get(header);
|
|
49
|
+
if (value !== null)
|
|
50
|
+
headers.set(header, value);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
headers,
|
|
54
|
+
body: response.body === null ? null : node_stream_1.Readable.fromWeb(response.body)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.Fetch = Fetch;
|
|
59
|
+
//# sourceMappingURL=Fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fetch.js","sourceRoot":"","sources":["../../../source/directives/flow/Fetch.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAsC;AACtC,8DAAgC;AAChC,yCAAiC;AACjC,qCAAqC;AAUrC,MAAa,KAAK;IACA,QAAQ,GAAG,IAAI,CAAA;IAEd,UAAU,CAAoB;IACvC,MAAM,GAAqB,IAAI,CAAA;IACtB,SAAS,CAAQ;IAElC,YAAoB,QAAgB,EAAE,SAAkB;QACtD,qBAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,EAAE,QAAQ,EAAE,kCAAkC,CAAC,CAAA;QAE3E,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QAE9E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC;IAEM,KAAK,CAAC,KAAK,CAAE,KAAY,EAAE,UAAuB;QACvD,IAAI,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO;YAC1C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;QAExB,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,UAAU,CAAA;QAErC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAA0B,IAAI,CAAC,SAAS,EAAE;YAChF,KAAK,EAAE;gBACL,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;gBACvB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACnF;SACF,CAAC,CAAA;QAEF,IAAI,OAAO,YAAY,KAAK;YAC1B,MAAM,IAAI,eAAQ,CAAC,OAAO,CAAC,CAAA;QAE7B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAA,iBAAK,EAAU,OAAO,EAC7C,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EACxB,CAAC,OAAgB,EAAW,EAAE,CAAC,CAAC;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE;gBACP,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK;gBACxC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI;gBAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO;aAClC;SACF,CAAC,CAAC,CAAA;QAEL,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAE1C,IAAI,CAAC,QAAQ,CAAC,EAAE;YACd,MAAM,IAAI,eAAQ,EAAE,CAAA;QAEtB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAE7B,KAAK,MAAM,MAAM,IAAI,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAE1C,IAAI,KAAK,KAAK,IAAI;gBAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC9B,CAAC;QAED,OAAO;YACL,OAAO;YACP,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAsB,CAAC;SACxF,CAAA;IACH,CAAC;CACF;AA/DD,sBA+DC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Directive } from './types';
|
|
2
|
+
import type { Input, Output } from '../../io';
|
|
3
|
+
import type { DirectiveFamily, Parameter } from '../../RTD';
|
|
4
|
+
import type { Remotes } from '../../Remotes';
|
|
5
|
+
export declare class Flow implements DirectiveFamily<Directive> {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly mandatory: boolean;
|
|
8
|
+
create(name: string, value: unknown, remotes: Remotes): Directive;
|
|
9
|
+
preflight(directives: Directive[], input: Input, parameters: Parameter[]): Promise<Output>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Flow = void 0;
|
|
4
|
+
const Fetch_1 = require("./Fetch");
|
|
5
|
+
class Flow {
|
|
6
|
+
name = 'flow';
|
|
7
|
+
mandatory = false;
|
|
8
|
+
create(name, value, remotes) {
|
|
9
|
+
const Class = constructors[name];
|
|
10
|
+
if (Class === undefined)
|
|
11
|
+
throw new Error(`Directive '${this.name}:${name}' is not implemented.`);
|
|
12
|
+
return new Class(value, remotes);
|
|
13
|
+
}
|
|
14
|
+
async preflight(directives, input, parameters) {
|
|
15
|
+
for (const directive of directives) {
|
|
16
|
+
const output = await directive.apply(input, parameters);
|
|
17
|
+
if (output !== null)
|
|
18
|
+
return output;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.Flow = Flow;
|
|
24
|
+
const constructors = {
|
|
25
|
+
fetch: Fetch_1.Fetch
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=Flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flow.js","sourceRoot":"","sources":["../../../source/directives/flow/Flow.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAM/B,MAAa,IAAI;IACC,IAAI,GAAW,MAAM,CAAA;IACrB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAc,EAAE,OAAgB;QAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,IAAI,uBAAuB,CAAC,CAAA;QAEzE,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,SAAS,CAAE,UAAuB,EAAE,KAAY,EAAE,UAAuB;QACpF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;YAEvD,IAAI,MAAM,KAAK,IAAI;gBACjB,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAvBD,oBAuBC;AAED,MAAM,YAAY,GAAsE;IACtF,KAAK,EAAE,aAAK;CACb,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/directives/flow/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAEhB,QAAA,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/directives/flow/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.interceptors = exports.families = void 0;
|
|
4
|
-
const dev_1 = require("./dev");
|
|
5
4
|
const auth_1 = require("./auth");
|
|
6
5
|
const cache_1 = require("./cache");
|
|
7
|
-
const octets_1 = require("./octets");
|
|
8
6
|
const cors_1 = require("./cors");
|
|
7
|
+
const dev_1 = require("./dev");
|
|
8
|
+
const octets_1 = require("./octets");
|
|
9
|
+
const io_1 = require("./io");
|
|
9
10
|
const vary_1 = require("./vary");
|
|
10
|
-
|
|
11
|
+
const require_1 = require("./require");
|
|
12
|
+
const flow_1 = require("./flow");
|
|
13
|
+
exports.families = [auth_1.authorization, io_1.io, cache_1.cache, vary_1.vary, require_1.req, flow_1.flow, octets_1.octets, dev_1.dev];
|
|
11
14
|
exports.interceptors = [cors_1.cors];
|
|
12
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/directives/index.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/directives/index.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AACtC,mCAA+B;AAC/B,iCAA6B;AAC7B,+BAA2B;AAC3B,qCAAiC;AACjC,6BAAyB;AACzB,iCAA6B;AAC7B,uCAA+B;AAC/B,iCAA6B;AAIhB,QAAA,QAAQ,GAAsB,CAAC,oBAAa,EAAE,OAAE,EAAE,aAAK,EAAE,WAAI,EAAE,aAAG,EAAE,WAAI,EAAE,eAAM,EAAE,SAAG,CAAC,CAAA;AACtF,QAAA,YAAY,GAAkB,CAAC,WAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Directive.js","sourceRoot":"","sources":["../../../source/directives/io/Directive.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Directive } from './Directive';
|
|
2
|
+
import type { Input as Context } from '../../io';
|
|
3
|
+
import type { DirectiveFamily } from '../../RTD';
|
|
4
|
+
export declare class IO implements DirectiveFamily<Directive> {
|
|
5
|
+
readonly name = "io";
|
|
6
|
+
readonly mandatory = true;
|
|
7
|
+
create(name: string, value: unknown): Directive;
|
|
8
|
+
preflight(directives: Directive[], context: Context): null;
|
|
9
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IO = void 0;
|
|
4
|
+
const Output_1 = require("./Output");
|
|
5
|
+
const Input_1 = require("./Input");
|
|
6
|
+
class IO {
|
|
7
|
+
name = 'io';
|
|
8
|
+
mandatory = true;
|
|
9
|
+
create(name, value) {
|
|
10
|
+
if (!(name in constructors))
|
|
11
|
+
throw new Error(`Directive 'io:${name}' is not implemented.`);
|
|
12
|
+
const Directive = constructors[name];
|
|
13
|
+
Directive.validate(value);
|
|
14
|
+
return new Directive(value);
|
|
15
|
+
}
|
|
16
|
+
preflight(directives, context) {
|
|
17
|
+
let restricted = false;
|
|
18
|
+
for (const directive of directives) {
|
|
19
|
+
restricted ||= directive instanceof Output_1.Output;
|
|
20
|
+
directive.attach(context);
|
|
21
|
+
}
|
|
22
|
+
if (!restricted)
|
|
23
|
+
DENIAL.attach(context);
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.IO = IO;
|
|
28
|
+
const constructors = {
|
|
29
|
+
output: Output_1.Output,
|
|
30
|
+
input: Input_1.Input
|
|
31
|
+
};
|
|
32
|
+
const DENIAL = new Output_1.Output([]);
|
|
33
|
+
//# sourceMappingURL=IO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IO.js","sourceRoot":"","sources":["../../../source/directives/io/IO.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AACjC,mCAA+B;AAK/B,MAAa,EAAE;IACG,IAAI,GAAG,IAAI,CAAA;IACX,SAAS,GAAG,IAAI,CAAA;IAEzB,MAAM,CAAE,IAAY,EAAE,KAAc;QACzC,IAAI,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,uBAAuB,CAAC,CAAA;QAE/D,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEpC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEzB,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAEM,SAAS,CAAE,UAAuB,EAAE,OAAgB;QACzD,IAAI,UAAU,GAAG,KAAK,CAAA;QAEtB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,UAAU,KAAK,SAAS,YAAY,eAAM,CAAA;YAE1C,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC,UAAU;YACb,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA7BD,gBA6BC;AAED,MAAM,YAAY,GAAgC;IAChD,MAAM,EAAE,eAAM;IACd,KAAK,EAAE,aAAK;CACb,CAAA;AAED,MAAM,MAAM,GAAW,IAAI,eAAM,CAAC,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Directive } from './Directive';
|
|
2
|
+
import type { Input as Context } from '../../io';
|
|
3
|
+
export declare class Input implements Directive {
|
|
4
|
+
private readonly permissions;
|
|
5
|
+
constructor(permissions: Permissions);
|
|
6
|
+
static validate(permissions: unknown): asserts permissions is Permissions;
|
|
7
|
+
attach(context: Context): void;
|
|
8
|
+
private check;
|
|
9
|
+
private violation;
|
|
10
|
+
}
|
|
11
|
+
export type Permissions = string[];
|
|
@@ -23,34 +23,41 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.Input = void 0;
|
|
27
27
|
const HTTP_1 = require("../../HTTP");
|
|
28
28
|
const schemas = __importStar(require("./schemas"));
|
|
29
|
-
class
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
constructor(value, discovery) {
|
|
34
|
-
schemas.permute.validate(value);
|
|
35
|
-
this.discovery = discovery;
|
|
29
|
+
class Input {
|
|
30
|
+
permissions;
|
|
31
|
+
constructor(permissions) {
|
|
32
|
+
this.permissions = permissions;
|
|
36
33
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
34
|
+
static validate(permissions) {
|
|
35
|
+
schemas.input.validate(permissions, 'Incorrect \'io:input\' format');
|
|
36
|
+
}
|
|
37
|
+
attach(context) {
|
|
38
|
+
context.pipelines.body.push((body) => this.check(body));
|
|
39
|
+
}
|
|
40
|
+
check(body) {
|
|
41
|
+
try {
|
|
42
|
+
schemas.message.validate(body);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
throw new HTTP_1.BadRequest('Invalid request body.');
|
|
46
|
+
}
|
|
47
|
+
const property = this.violation(body);
|
|
48
|
+
if (property !== undefined)
|
|
49
|
+
throw new HTTP_1.BadRequest(`Unexpected input: ${property}.`);
|
|
50
|
+
return body;
|
|
51
|
+
}
|
|
52
|
+
violation(value) {
|
|
53
|
+
if (!Array.isArray(value))
|
|
54
|
+
return Object.keys(value).find((key) => !this.permissions.includes(key));
|
|
55
|
+
for (const item of value) {
|
|
56
|
+
const property = this.violation(item);
|
|
57
|
+
if (property !== undefined)
|
|
58
|
+
return property;
|
|
59
|
+
}
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
|
-
exports.
|
|
56
|
-
//# sourceMappingURL=
|
|
62
|
+
exports.Input = Input;
|
|
63
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../source/directives/io/Input.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAuC;AACvC,mDAAoC;AAKpC,MAAa,KAAK;IACC,WAAW,CAAa;IAEzC,YAAoB,WAAwB;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,WAAoB;QAC1C,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAA;IACtE,CAAC;IAEM,MAAM,CAAE,OAAgB;QAC7B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,CAAC;IAEO,KAAK,CAAE,IAAa;QAC1B,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,QAAQ,KAAK,SAAS;YACxB,MAAM,IAAI,iBAAU,CAAC,qBAAqB,QAAQ,GAAG,CAAC,CAAA;QAExD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,SAAS,CAAE,KAA0B;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACvB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAE1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAErC,IAAI,QAAQ,KAAK,SAAS;gBACxB,OAAO,QAAQ,CAAA;QACnB,CAAC;IACH,CAAC;CACF;AAzCD,sBAyCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Message = Record<string, unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../source/directives/io/Message.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Directive } from './Directive';
|
|
2
|
+
import type { Input as Context } from '../../io';
|
|
3
|
+
export declare class Output implements Directive {
|
|
4
|
+
private readonly disabled;
|
|
5
|
+
private readonly omitted;
|
|
6
|
+
private readonly permissions;
|
|
7
|
+
constructor(permissions: Permissions);
|
|
8
|
+
static validate(permissions: unknown): asserts permissions is Permissions;
|
|
9
|
+
attach(context: Context): void;
|
|
10
|
+
private restriction;
|
|
11
|
+
private fit;
|
|
12
|
+
}
|
|
13
|
+
export type Permissions = string[] | boolean;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.Output = void 0;
|
|
27
|
+
const node_stream_1 = require("node:stream");
|
|
28
|
+
const schemas = __importStar(require("./schemas"));
|
|
29
|
+
class Output {
|
|
30
|
+
disabled = false;
|
|
31
|
+
omitted = true;
|
|
32
|
+
permissions = [];
|
|
33
|
+
constructor(permissions) {
|
|
34
|
+
if (typeof permissions === 'boolean')
|
|
35
|
+
if (permissions)
|
|
36
|
+
this.disabled = true;
|
|
37
|
+
else
|
|
38
|
+
this.omitted = false;
|
|
39
|
+
else
|
|
40
|
+
this.permissions = permissions;
|
|
41
|
+
}
|
|
42
|
+
static validate(permissions) {
|
|
43
|
+
schemas.output.validate(permissions, 'Incorrect \'io:output\' format');
|
|
44
|
+
}
|
|
45
|
+
attach(context) {
|
|
46
|
+
context.pipelines.response.push(this.restriction(context));
|
|
47
|
+
}
|
|
48
|
+
restriction(context) {
|
|
49
|
+
return (message) => {
|
|
50
|
+
const error = message.status !== undefined && message.status >= 300;
|
|
51
|
+
const stream = message.body instanceof node_stream_1.Stream;
|
|
52
|
+
const none = message.body === undefined || message.body === null;
|
|
53
|
+
if (this.disabled || error || stream || none)
|
|
54
|
+
return;
|
|
55
|
+
if (typeof message.body !== 'object' || this.permissions.length === 0) {
|
|
56
|
+
if (this.omitted)
|
|
57
|
+
console.warn('Permissions for \'io:output\' are not specified properly ' +
|
|
58
|
+
`(${context.request.url}). Response omitted.`);
|
|
59
|
+
delete message.body;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
schemas.message.validate(message.body, '\'io:output\' expects response to be an object or array of objects');
|
|
63
|
+
if (Array.isArray(message.body))
|
|
64
|
+
message.body = message.body.map((entity) => this.fit(entity));
|
|
65
|
+
else
|
|
66
|
+
message.body = this.fit(message.body);
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
fit(message) {
|
|
70
|
+
const entries = Object.entries(message)
|
|
71
|
+
.filter(([key]) => this.permissions.includes(key));
|
|
72
|
+
return Object.fromEntries(entries);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.Output = Output;
|
|
76
|
+
//# sourceMappingURL=Output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Output.js","sourceRoot":"","sources":["../../../source/directives/io/Output.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAoC;AACpC,mDAAoC;AAMpC,MAAa,MAAM;IACA,QAAQ,GAAY,KAAK,CAAA;IACzB,OAAO,GAAY,IAAI,CAAA;IACvB,WAAW,GAAa,EAAE,CAAA;IAE3C,YAAoB,WAAwB;QAC1C,IAAI,OAAO,WAAW,KAAK,SAAS;YAClC,IAAI,WAAW;gBACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;;gBAEpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;;YAGtB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAClC,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAE,WAAoB;QAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAA;IACxE,CAAC;IAEM,MAAM,CAAE,OAAgB;QAC7B,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5D,CAAC;IAEO,WAAW,CAAE,OAAgB;QACnC,OAAO,CAAC,OAAwB,EAAQ,EAAE;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,CAAA;YACnE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,YAAY,oBAAM,CAAA;YAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAA;YAEhE,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI;gBAC1C,OAAM;YAER,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtE,IAAI,IAAI,CAAC,OAAO;oBACd,OAAO,CAAC,IAAI,CAAC,2DAA2D;wBACtE,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC,CAAA;gBAElD,OAAO,OAAO,CAAC,IAAI,CAAA;gBAEnB,OAAM;YACR,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EACnC,oEAAoE,CAAC,CAAA;YAEvE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC7B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;;gBAE7D,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC,CAAA;IACH,CAAC;IAEO,GAAG,CAAE,OAAgB;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAEpD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;CACF;AA3DD,wBA2DC"}
|