@toa.io/extensions.exposition 1.0.0-alpha.28 → 1.0.0-alpha.283
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/CHANGELOG.md +512 -0
- package/components/exposition.octets/manifest.toa.yaml +58 -0
- package/components/{octets.storage → exposition.octets}/operations/delete.js +1 -3
- package/components/exposition.octets/operations/get.js +5 -0
- package/components/exposition.octets/operations/head.js +5 -0
- package/components/exposition.octets/operations/put.js +150 -0
- package/components/exposition.octets/types/index.d.ts +3 -0
- package/components/exposition.octets/types/toa.d.ts +41 -0
- package/components/identity.bans/manifest.toa.yaml +26 -7
- package/components/identity.bans/operations/transit.js +1 -5
- package/components/identity.bans/operations/transit.js.map +1 -1
- package/components/identity.bans/tsconfig.json +1 -0
- package/components/identity.bans/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/types/index.d.ts +3 -0
- package/components/identity.bans/types/toa.d.ts +34 -0
- package/components/identity.basic/events/principal.js +6 -4
- package/components/identity.basic/manifest.toa.yaml +206 -27
- package/components/identity.basic/operations/add.d.ts +3 -0
- package/components/identity.basic/operations/add.js +13 -0
- package/components/identity.basic/operations/add.js.map +1 -0
- package/components/identity.basic/operations/authenticate.d.ts +2 -2
- package/components/identity.basic/operations/authenticate.js +19 -16
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- package/components/identity.basic/operations/check.d.ts +7 -0
- package/components/identity.basic/operations/check.js +12 -0
- package/components/identity.basic/operations/check.js.map +1 -0
- package/components/identity.basic/operations/delete.d.ts +7 -0
- package/components/identity.basic/operations/delete.js +7 -0
- package/components/identity.basic/operations/delete.js.map +1 -0
- package/components/identity.basic/operations/incept.d.ts +2 -2
- package/components/identity.basic/operations/incept.js +16 -14
- package/components/identity.basic/operations/incept.js.map +1 -1
- package/components/identity.basic/operations/info.d.ts +10 -0
- package/components/identity.basic/operations/info.js +7 -0
- package/components/identity.basic/operations/info.js.map +1 -0
- package/components/identity.basic/operations/lib/credentials.d.ts +5 -0
- package/components/identity.basic/operations/lib/credentials.js +12 -0
- package/components/identity.basic/operations/lib/credentials.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +5 -2
- package/components/identity.basic/operations/transit.js +42 -20
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/source/add.ts +15 -0
- package/components/identity.basic/source/authenticate.ts +21 -11
- package/components/identity.basic/source/check.ts +21 -0
- package/components/identity.basic/source/delete.ts +15 -0
- package/components/identity.basic/source/incept.ts +18 -11
- package/components/identity.basic/source/info.ts +19 -0
- package/components/identity.basic/source/lib/credentials.test.ts +18 -0
- package/components/identity.basic/source/lib/credentials.ts +13 -0
- package/components/identity.basic/source/transit.ts +48 -17
- package/components/identity.basic/tsconfig.json +1 -0
- package/components/identity.basic/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/types/index.d.ts +21 -0
- package/components/identity.basic/types/toa.d.ts +121 -0
- package/components/identity.clients/manifest.toa.yaml +243 -0
- package/components/identity.clients/operations/describe.d.ts +27 -0
- package/components/identity.clients/operations/describe.js +44 -0
- package/components/identity.clients/operations/describe.js.map +1 -0
- package/components/identity.clients/operations/lib/Context.d.ts +29 -0
- package/components/identity.clients/operations/lib/Context.js +2 -0
- package/components/identity.clients/operations/lib/Context.js.map +1 -0
- package/components/identity.clients/operations/lib/Entity.d.ts +29 -0
- package/components/identity.clients/operations/lib/Entity.js +2 -0
- package/components/identity.clients/operations/lib/Entity.js.map +1 -0
- package/components/identity.clients/operations/lib/canonical.d.ts +11 -0
- package/components/identity.clients/operations/lib/canonical.js +24 -0
- package/components/identity.clients/operations/lib/canonical.js.map +1 -0
- package/components/identity.clients/operations/lib/cimd.d.ts +8 -0
- package/components/identity.clients/operations/lib/cimd.js +86 -0
- package/components/identity.clients/operations/lib/cimd.js.map +1 -0
- package/components/identity.clients/operations/lib/errors.d.ts +7 -0
- package/components/identity.clients/operations/lib/errors.js +5 -0
- package/components/identity.clients/operations/lib/errors.js.map +1 -0
- package/components/identity.clients/operations/lib/index.d.ts +6 -0
- package/components/identity.clients/operations/lib/index.js +7 -0
- package/components/identity.clients/operations/lib/index.js.map +1 -0
- package/components/identity.clients/operations/lib/redirect.d.ts +10 -0
- package/components/identity.clients/operations/lib/redirect.js +32 -0
- package/components/identity.clients/operations/lib/redirect.js.map +1 -0
- package/components/identity.clients/operations/register.d.ts +37 -0
- package/components/identity.clients/operations/register.js +84 -0
- package/components/identity.clients/operations/register.js.map +1 -0
- package/components/identity.clients/source/describe.ts +65 -0
- package/components/identity.clients/source/lib/Context.ts +38 -0
- package/components/identity.clients/source/lib/Entity.ts +31 -0
- package/components/identity.clients/source/lib/canonical.test.ts +43 -0
- package/components/identity.clients/source/lib/canonical.ts +27 -0
- package/components/identity.clients/source/lib/cimd.test.ts +120 -0
- package/components/identity.clients/source/lib/cimd.ts +107 -0
- package/components/identity.clients/source/lib/errors.ts +4 -0
- package/components/identity.clients/source/lib/index.ts +6 -0
- package/components/identity.clients/source/lib/redirect.test.ts +41 -0
- package/components/identity.clients/source/lib/redirect.ts +35 -0
- package/components/identity.clients/source/register.ts +125 -0
- package/components/identity.clients/tsconfig.json +10 -0
- package/components/identity.clients/tsconfig.tsbuildinfo +1 -0
- package/components/identity.clients/types/index.d.ts +3 -0
- package/components/identity.clients/types/toa.d.ts +109 -0
- package/components/identity.credentials/manifest.toa.yaml +78 -0
- package/components/identity.credentials/operations/list.d.ts +52 -0
- package/components/identity.credentials/operations/list.js +28 -0
- package/components/identity.credentials/operations/list.js.map +1 -0
- package/components/identity.credentials/source/list.test.ts +51 -0
- package/components/identity.credentials/source/list.ts +88 -0
- package/components/identity.credentials/tsconfig.json +8 -0
- package/components/identity.credentials/tsconfig.tsbuildinfo +1 -0
- package/components/identity.credentials/types/index.d.ts +3 -0
- package/components/identity.credentials/types/toa.d.ts +30 -0
- package/components/identity.federation/events/principal.js +7 -8
- package/components/identity.federation/manifest.toa.yaml +248 -46
- package/components/identity.federation/operations/authenticate.d.ts +16 -3
- package/components/identity.federation/operations/authenticate.js +24 -19
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/create.d.ts +8 -0
- package/components/identity.federation/operations/create.js +29 -0
- package/components/identity.federation/operations/create.js.map +1 -0
- package/components/identity.federation/operations/decode.d.ts +3 -0
- package/components/identity.federation/operations/decode.js +9 -0
- package/components/identity.federation/operations/decode.js.map +1 -0
- package/components/identity.federation/operations/delete.d.ts +8 -0
- package/components/identity.federation/operations/delete.js +7 -0
- package/components/identity.federation/operations/delete.js.map +1 -0
- package/components/identity.federation/operations/incept.d.ts +6 -6
- package/components/identity.federation/operations/incept.js +4 -12
- package/components/identity.federation/operations/incept.js.map +1 -1
- package/components/identity.federation/operations/lib/Configuration.d.ts +39 -0
- package/components/identity.federation/operations/lib/Configuration.js +2 -0
- package/components/identity.federation/operations/lib/Configuration.js.map +1 -0
- package/components/identity.federation/operations/lib/Ctx.d.ts +8 -0
- package/components/identity.federation/operations/lib/Ctx.js +2 -0
- package/components/identity.federation/operations/lib/Ctx.js.map +1 -0
- package/components/identity.federation/operations/lib/Payload.d.ts +5 -0
- package/components/identity.federation/operations/lib/Payload.js +2 -0
- package/components/identity.federation/operations/lib/Payload.js.map +1 -0
- package/components/identity.federation/operations/lib/decode.d.ts +3 -0
- package/components/identity.federation/operations/lib/decode.js +36 -0
- package/components/identity.federation/operations/lib/decode.js.map +1 -0
- package/components/identity.federation/operations/lib/discovery.d.ts +5 -0
- package/components/identity.federation/operations/lib/discovery.js +34 -0
- package/components/identity.federation/operations/lib/discovery.js.map +1 -0
- package/components/identity.federation/operations/lib/errors.d.ts +77 -0
- package/components/identity.federation/operations/lib/errors.js +45 -0
- package/components/identity.federation/operations/lib/errors.js.map +1 -0
- package/components/identity.federation/operations/lib/exchange.d.ts +3 -0
- package/components/identity.federation/operations/lib/exchange.js +86 -0
- package/components/identity.federation/operations/lib/exchange.js.map +1 -0
- package/components/identity.federation/operations/lib/index.d.ts +4 -0
- package/components/identity.federation/operations/lib/index.js +4 -0
- package/components/identity.federation/operations/lib/index.js.map +1 -0
- package/components/identity.federation/operations/lib/jose.d.ts +1 -0
- package/components/identity.federation/operations/lib/jose.js +2 -0
- package/components/identity.federation/operations/lib/jose.js.map +1 -0
- package/components/identity.federation/operations/lib/resolve.d.ts +3 -0
- package/components/identity.federation/operations/lib/resolve.js +13 -0
- package/components/identity.federation/operations/lib/resolve.js.map +1 -0
- package/components/identity.federation/operations/list.d.ts +7 -0
- package/components/identity.federation/operations/list.js +12 -0
- package/components/identity.federation/operations/list.js.map +1 -0
- package/components/identity.federation/operations/types/Scheme.d.ts +1 -0
- package/components/identity.federation/operations/types/Scheme.js +2 -0
- package/components/identity.federation/operations/types/Scheme.js.map +1 -0
- package/components/identity.federation/operations/types/configuration.d.ts +22 -0
- package/components/identity.federation/operations/types/configuration.js +2 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/types/context.d.ts +36 -0
- package/components/identity.federation/operations/types/context.js +2 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +9 -0
- package/components/identity.federation/operations/types/entity.js +2 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +4 -0
- package/components/identity.federation/operations/types/index.js +5 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +43 -22
- package/components/identity.federation/source/create.ts +45 -0
- package/components/identity.federation/source/decode.ts +11 -0
- package/components/identity.federation/source/delete.ts +16 -0
- package/components/identity.federation/source/incept.ts +9 -17
- package/components/identity.federation/source/lib/Configuration.ts +39 -0
- package/components/identity.federation/source/lib/Ctx.ts +9 -0
- package/components/identity.federation/source/lib/Payload.ts +6 -0
- package/components/identity.federation/source/lib/decode.ts +47 -0
- package/components/identity.federation/source/lib/discovery.test.ts +50 -0
- package/components/identity.federation/source/lib/discovery.ts +49 -0
- package/components/identity.federation/source/lib/errors.ts +54 -0
- package/components/identity.federation/source/lib/exchange.ts +120 -0
- package/components/identity.federation/source/lib/index.ts +4 -0
- package/components/identity.federation/source/lib/jose.d.ts +1 -0
- package/components/identity.federation/source/lib/jose.js +1 -0
- package/components/identity.federation/source/lib/resolve.ts +17 -0
- package/components/identity.federation/source/list.test.ts +25 -0
- package/components/identity.federation/source/list.ts +18 -0
- package/components/identity.federation/source/types/Scheme.ts +1 -0
- package/components/identity.federation/source/types/configuration.ts +24 -0
- package/components/identity.federation/source/types/context.ts +39 -0
- package/components/identity.federation/source/types/entity.ts +9 -0
- package/components/identity.federation/source/types/index.ts +4 -0
- package/components/identity.federation/tsconfig.json +3 -4
- package/components/identity.federation/tsconfig.tsbuildinfo +1 -0
- package/components/identity.federation/types/index.d.ts +3 -0
- package/components/identity.federation/types/toa.d.ts +127 -0
- package/components/identity.grants/manifest.toa.yaml +245 -0
- package/components/identity.grants/operations/authorize.d.ts +35 -0
- package/components/identity.grants/operations/authorize.js +54 -0
- package/components/identity.grants/operations/authorize.js.map +1 -0
- package/components/identity.grants/operations/exchange.d.ts +37 -0
- package/components/identity.grants/operations/exchange.js +89 -0
- package/components/identity.grants/operations/exchange.js.map +1 -0
- package/components/identity.grants/operations/lib/code.d.ts +15 -0
- package/components/identity.grants/operations/lib/code.js +30 -0
- package/components/identity.grants/operations/lib/code.js.map +1 -0
- package/components/identity.grants/operations/lib/identify.d.ts +6 -0
- package/components/identity.grants/operations/lib/identify.js +15 -0
- package/components/identity.grants/operations/lib/identify.js.map +1 -0
- package/components/identity.grants/operations/lib/index.d.ts +3 -0
- package/components/identity.grants/operations/lib/index.js +3 -0
- package/components/identity.grants/operations/lib/index.js.map +1 -0
- package/components/identity.grants/operations/list.d.ts +13 -0
- package/components/identity.grants/operations/list.js +18 -0
- package/components/identity.grants/operations/list.js.map +1 -0
- package/components/identity.grants/operations/revoke.d.ts +18 -0
- package/components/identity.grants/operations/revoke.js +25 -0
- package/components/identity.grants/operations/revoke.js.map +1 -0
- package/components/identity.grants/source/authorize.ts +90 -0
- package/components/identity.grants/source/exchange.ts +130 -0
- package/components/identity.grants/source/lib/code.ts +39 -0
- package/components/identity.grants/source/lib/identify.ts +16 -0
- package/components/identity.grants/source/lib/index.ts +3 -0
- package/components/identity.grants/source/list.ts +28 -0
- package/components/identity.grants/source/revoke.ts +38 -0
- package/components/identity.grants/tsconfig.json +10 -0
- package/components/identity.grants/tsconfig.tsbuildinfo +1 -0
- package/components/identity.grants/types/index.d.ts +60 -0
- package/components/identity.grants/types/toa.d.ts +108 -0
- package/components/identity.keys/manifest.toa.yaml +84 -0
- package/components/identity.keys/operations/create.d.ts +22 -0
- package/components/identity.keys/operations/create.js +12 -0
- package/components/identity.keys/operations/create.js.map +1 -0
- package/components/identity.keys/operations/disable.d.ts +5 -0
- package/components/identity.keys/operations/disable.js +5 -0
- package/components/identity.keys/operations/disable.js.map +1 -0
- package/components/identity.keys/operations/revoke.d.ts +15 -0
- package/components/identity.keys/operations/revoke.js +12 -0
- package/components/identity.keys/operations/revoke.js.map +1 -0
- package/components/identity.keys/receivers/identity.bans.created.js +1 -0
- package/components/identity.keys/receivers/identity.bans.updated.js +1 -0
- package/components/identity.keys/receivers/identity.roles.deleted.js +1 -0
- package/components/identity.keys/source/create.ts +35 -0
- package/components/identity.keys/source/disable.ts +9 -0
- package/components/identity.keys/source/revoke.ts +30 -0
- package/components/identity.keys/tsconfig.json +10 -0
- package/components/identity.keys/tsconfig.tsbuildinfo +1 -0
- package/components/identity.keys/types/index.d.ts +3 -0
- package/components/identity.keys/types/toa.d.ts +47 -0
- package/components/identity.otp/manifest.toa.yaml +104 -0
- package/components/identity.otp/operations/authenticate.d.ts +12 -0
- package/components/identity.otp/operations/authenticate.js +44 -0
- package/components/identity.otp/operations/authenticate.js.map +1 -0
- package/components/identity.otp/operations/issue.d.ts +12 -0
- package/components/identity.otp/operations/issue.js +19 -0
- package/components/identity.otp/operations/issue.js.map +1 -0
- package/components/identity.otp/operations/lib/Context.d.ts +16 -0
- package/components/identity.otp/operations/lib/Context.js +2 -0
- package/components/identity.otp/operations/lib/Context.js.map +1 -0
- package/components/identity.otp/operations/lib/Entity.d.ts +6 -0
- package/components/identity.otp/operations/lib/Entity.js +2 -0
- package/components/identity.otp/operations/lib/Entity.js.map +1 -0
- package/components/identity.otp/operations/lib/index.d.ts +1 -0
- package/components/identity.otp/operations/lib/index.js +2 -0
- package/components/identity.otp/operations/lib/index.js.map +1 -0
- package/components/identity.otp/source/authenticate.ts +73 -0
- package/components/identity.otp/source/issue.ts +35 -0
- package/components/identity.otp/source/lib/Context.ts +17 -0
- package/components/identity.otp/source/lib/Entity.ts +6 -0
- package/components/identity.otp/source/lib/index.ts +1 -0
- package/components/identity.otp/tsconfig.json +10 -0
- package/components/identity.otp/tsconfig.tsbuildinfo +1 -0
- package/components/identity.otp/types/index.d.ts +3 -0
- package/components/identity.otp/types/toa.d.ts +56 -0
- package/components/identity.passkeys/manifest.toa.yaml +309 -0
- package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
- package/components/identity.passkeys/operations/authenticate.js +32 -0
- package/components/identity.passkeys/operations/authenticate.js.map +1 -0
- package/components/identity.passkeys/operations/challenge.d.ts +35 -0
- package/components/identity.passkeys/operations/challenge.js +69 -0
- package/components/identity.passkeys/operations/challenge.js.map +1 -0
- package/components/identity.passkeys/operations/create.d.ts +19 -0
- package/components/identity.passkeys/operations/create.js +57 -0
- package/components/identity.passkeys/operations/create.js.map +1 -0
- package/components/identity.passkeys/operations/delete.d.ts +8 -0
- package/components/identity.passkeys/operations/delete.js +9 -0
- package/components/identity.passkeys/operations/delete.js.map +1 -0
- package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
- package/components/identity.passkeys/operations/lib/const.js +2 -0
- package/components/identity.passkeys/operations/lib/const.js.map +1 -0
- package/components/identity.passkeys/operations/list.d.ts +7 -0
- package/components/identity.passkeys/operations/list.js +12 -0
- package/components/identity.passkeys/operations/list.js.map +1 -0
- package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
- package/components/identity.passkeys/operations/types/Configuration.js +2 -0
- package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
- package/components/identity.passkeys/operations/types/Context.d.ts +16 -0
- package/components/identity.passkeys/operations/types/Context.js +2 -0
- package/components/identity.passkeys/operations/types/Context.js.map +1 -0
- package/components/identity.passkeys/operations/types/Passkey.d.ts +12 -0
- package/components/identity.passkeys/operations/types/Passkey.js +2 -0
- package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
- package/components/identity.passkeys/operations/types/index.d.ts +2 -0
- package/components/identity.passkeys/operations/types/index.js +2 -0
- package/components/identity.passkeys/operations/types/index.js.map +1 -0
- package/components/identity.passkeys/operations/use.d.ts +16 -0
- package/components/identity.passkeys/operations/use.js +56 -0
- package/components/identity.passkeys/operations/use.js.map +1 -0
- package/components/identity.passkeys/source/authenticate.ts +50 -0
- package/components/identity.passkeys/source/challenge.ts +115 -0
- package/components/identity.passkeys/source/create.ts +81 -0
- package/components/identity.passkeys/source/delete.ts +16 -0
- package/components/identity.passkeys/source/lib/const.ts +1 -0
- package/components/identity.passkeys/source/list.ts +18 -0
- package/components/identity.passkeys/source/types/Configuration.ts +6 -0
- package/components/identity.passkeys/source/types/Context.ts +17 -0
- package/components/identity.passkeys/source/types/Passkey.ts +12 -0
- package/components/identity.passkeys/source/types/index.ts +2 -0
- package/components/identity.passkeys/source/use.ts +79 -0
- package/components/identity.passkeys/tsconfig.json +10 -0
- package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -0
- package/components/identity.passkeys/types/index.d.ts +3 -0
- package/components/identity.passkeys/types/toa.d.ts +120 -0
- package/components/identity.roles/manifest.toa.yaml +47 -10
- package/components/identity.roles/operations/grant.d.ts +1 -1
- package/components/identity.roles/operations/grant.js +10 -10
- package/components/identity.roles/operations/grant.js.map +1 -1
- package/components/identity.roles/operations/lib/Entity.js +1 -2
- package/components/identity.roles/operations/list.d.ts +1 -1
- package/components/identity.roles/operations/list.js +1 -5
- package/components/identity.roles/operations/list.js.map +1 -1
- package/components/identity.roles/operations/principal.d.ts +3 -3
- package/components/identity.roles/operations/principal.js +1 -5
- package/components/identity.roles/operations/principal.js.map +1 -1
- package/components/identity.roles/receivers/identity.federation.principal.js +4 -0
- package/components/identity.roles/source/grant.ts +11 -6
- package/components/identity.roles/source/list.ts +1 -1
- package/components/identity.roles/source/principal.ts +3 -3
- package/components/identity.roles/tsconfig.json +1 -0
- package/components/identity.roles/tsconfig.tsbuildinfo +1 -0
- package/components/identity.roles/types/index.d.ts +3 -0
- package/components/identity.roles/types/toa.d.ts +43 -0
- package/components/identity.tokens/manifest.toa.yaml +219 -28
- package/components/identity.tokens/operations/authenticate.d.ts +3 -2
- package/components/identity.tokens/operations/authenticate.js +28 -19
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.d.ts +16 -3
- package/components/identity.tokens/operations/decrypt.js +131 -24
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.d.ts +4 -3
- package/components/identity.tokens/operations/encrypt.js +33 -18
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/issue.d.ts +25 -0
- package/components/identity.tokens/operations/issue.js +57 -0
- package/components/identity.tokens/operations/issue.js.map +1 -0
- package/components/identity.tokens/operations/lib/form.d.ts +8 -0
- package/components/identity.tokens/operations/lib/form.js +24 -0
- package/components/identity.tokens/operations/lib/form.js.map +1 -0
- package/components/identity.tokens/operations/lib/index.d.ts +4 -0
- package/components/identity.tokens/operations/lib/index.js +4 -0
- package/components/identity.tokens/operations/lib/index.js.map +1 -0
- package/components/identity.tokens/operations/lib/jose.d.ts +1 -0
- package/components/identity.tokens/operations/lib/jose.js +2 -0
- package/components/identity.tokens/operations/lib/jose.js.map +1 -0
- package/components/identity.tokens/operations/lib/key.d.ts +1 -0
- package/components/identity.tokens/operations/lib/key.js +7 -0
- package/components/identity.tokens/operations/lib/key.js.map +1 -0
- package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
- package/components/identity.tokens/operations/lib/pad.js +2 -0
- package/components/identity.tokens/operations/lib/pad.js.map +1 -0
- package/components/identity.tokens/operations/revoke.d.ts +2 -2
- package/components/identity.tokens/operations/revoke.js +1 -5
- package/components/identity.tokens/operations/revoke.js.map +1 -1
- package/components/identity.tokens/receivers/identity.bans.created.js +1 -3
- package/components/identity.tokens/receivers/identity.bans.updated.js +1 -3
- package/components/identity.tokens/source/authenticate.test.ts +61 -18
- package/components/identity.tokens/source/authenticate.ts +33 -16
- package/components/identity.tokens/source/decrypt.test.ts +140 -18
- package/components/identity.tokens/source/decrypt.ts +177 -21
- package/components/identity.tokens/source/encrypt.test.ts +102 -16
- package/components/identity.tokens/source/encrypt.ts +46 -16
- package/components/identity.tokens/source/issue.test.ts +71 -0
- package/components/identity.tokens/source/issue.ts +85 -0
- package/components/identity.tokens/source/lib/form.test.ts +25 -0
- package/components/identity.tokens/source/lib/form.ts +31 -0
- package/components/identity.tokens/source/lib/index.ts +4 -0
- package/components/identity.tokens/source/lib/jose.d.ts +1 -0
- package/components/identity.tokens/source/lib/jose.js +1 -0
- package/components/identity.tokens/source/lib/key.ts +8 -0
- package/components/identity.tokens/source/lib/pad.ts +1 -0
- package/components/identity.tokens/source/lib/paseto.test.ts +51 -0
- package/components/identity.tokens/source/revoke.ts +2 -2
- package/components/identity.tokens/tsconfig.json +1 -0
- package/components/identity.tokens/tsconfig.tsbuildinfo +1 -0
- package/components/identity.tokens/types/index.d.ts +61 -0
- package/components/identity.tokens/types/toa.d.ts +113 -0
- package/{components/context.toa.yaml → context.toa.yaml} +6 -2
- package/cucumber.mjs +4 -0
- package/documentation/access.md +78 -27
- package/documentation/authorities.md +9 -11
- package/documentation/cache.md +10 -1
- package/documentation/components.md +200 -62
- package/documentation/consent.md +101 -0
- package/documentation/credentials.md +88 -0
- package/documentation/dev.md +30 -0
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +165 -17
- package/documentation/introspection.md +82 -0
- package/documentation/io.md +109 -4
- package/documentation/ip.md +24 -0
- package/documentation/map.md +115 -0
- package/documentation/notes/desync.jpg +0 -0
- package/documentation/notes/peers.md +59 -0
- package/documentation/notes/throttling.md +122 -0
- package/documentation/oauth.md +179 -0
- package/documentation/octets.md +122 -69
- package/documentation/passkeys.md +11 -0
- package/documentation/protocol.md +39 -4
- package/documentation/query.md +43 -0
- package/documentation/tracing.md +70 -0
- package/documentation/tree.md +13 -0
- package/features/access.feature +123 -3
- package/features/auth.assert.feature +55 -0
- package/features/auth.bearer.feature +120 -0
- package/features/auth.claims.feature +171 -0
- package/features/auth.incept.feature +166 -0
- package/features/auth.input.feature +59 -0
- package/features/authorities.feature +41 -2
- package/features/authorities.federation.feature +21 -20
- package/features/authorities.tokens.feature +1 -2
- package/features/body.feature +27 -0
- package/features/cache.feature +143 -8
- package/features/configuration.feature +207 -0
- package/features/cors.feature +29 -8
- package/features/credentials.feature +106 -0
- package/features/dev.feature +87 -0
- package/features/dynamic.feature +82 -1
- package/features/errors.feature +17 -5
- package/features/etag.feature +223 -1
- package/features/flow.feature +148 -0
- package/features/identity.bans.feature +63 -0
- package/features/identity.basic.feature +231 -10
- package/features/identity.feature +158 -0
- package/features/identity.federation.feature +226 -35
- package/features/identity.otp.feature +142 -0
- package/features/identity.roles.feature +305 -4
- package/features/identity.tokens.custom.feature +430 -0
- package/features/identity.tokens.feature +4 -102
- package/features/interruptions.feature +19 -0
- package/features/introspection.feature +146 -0
- package/features/introspection.map.feature +108 -0
- package/features/io.feature +0 -1
- package/features/io.throttle.feature +165 -0
- package/features/map.feature +359 -0
- package/features/methods.feature +47 -0
- package/features/oauth.clients.feature +195 -0
- package/features/oauth.discovery.feature +165 -0
- package/features/oauth.grants.feature +286 -0
- package/features/octets.cloudinary.feature +232 -0
- package/features/octets.download.feature +192 -0
- package/features/octets.entries.feature +13 -61
- package/features/octets.feature +52 -70
- package/features/octets.head.feature +40 -0
- package/features/octets.location.feature +83 -0
- package/features/octets.meta.feature +63 -16
- package/features/octets.workflows.feature +333 -68
- package/features/passkeys.feature +66 -0
- package/features/probes.feature +8 -4
- package/features/query.feature +128 -0
- package/features/realtime.feature +34 -0
- package/features/require.feature +2 -2
- package/features/response.feature +30 -1
- package/features/routes.feature +85 -0
- package/features/server.feature +21 -0
- package/features/steps/.env.example +5 -0
- package/features/steps/Captures.ts +15 -1
- package/features/steps/Common.ts +31 -2
- package/features/steps/Components.ts +63 -6
- package/features/steps/Database.ts +19 -3
- package/features/steps/Gateway.ts +129 -23
- package/features/steps/HTTP.ts +36 -11
- package/features/steps/IDP.ts +337 -0
- package/features/steps/Identity.ts +54 -0
- package/features/steps/OTP.ts +42 -0
- package/features/steps/Parameters.ts +103 -4
- package/features/steps/Probe.ts +36 -0
- package/features/steps/Realtime.ts +154 -0
- package/features/steps/Workspace.ts +10 -6
- package/features/steps/components/audit/manifest.toa.yaml +20 -0
- package/features/steps/components/audit/operations/record.js +5 -0
- package/features/steps/components/echo/manifest.toa.yaml +49 -5
- package/features/steps/components/echo/operations/affect.js +1 -5
- package/features/steps/components/echo/operations/compute.js +1 -5
- package/features/steps/components/echo/operations/echo.js +3 -0
- package/features/steps/components/echo/operations/error.js +1 -5
- package/features/steps/components/echo/operations/identity.js +1 -5
- package/features/steps/components/echo/operations/parameters.js +3 -0
- package/features/steps/components/echo/operations/ping.js +3 -0
- package/features/steps/components/echo/operations/unwrap.js +3 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +3 -0
- package/features/steps/components/greeter/manifest.toa.yaml +0 -1
- package/features/steps/components/greeter/operations/greet.js +1 -5
- package/features/steps/components/notify/manifest.toa.yaml +20 -0
- package/features/steps/components/notify/operations/send.js +5 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +60 -6
- package/features/steps/components/octets.tester/operations/authority.js +3 -0
- package/features/steps/components/octets.tester/operations/bar.js +1 -4
- package/features/steps/components/octets.tester/operations/baz.js +2 -4
- package/features/steps/components/octets.tester/operations/concat.js +1 -3
- package/features/steps/components/octets.tester/operations/echo.js +2 -4
- package/features/steps/components/octets.tester/operations/err.js +1 -3
- package/features/steps/components/octets.tester/operations/foo.js +3 -5
- package/features/steps/components/octets.tester/operations/id.js +5 -0
- package/features/steps/components/octets.tester/operations/identity.js +5 -0
- package/features/steps/components/octets.tester/operations/redirect.js +15 -0
- package/features/steps/components/octets.tester/operations/yex.js +14 -0
- package/features/steps/components/octets.tester/operations/yield.js +11 -0
- package/features/steps/components/orders/manifest.toa.yaml +32 -0
- package/features/steps/components/orders/operations/create.js +5 -0
- package/features/steps/components/pots/manifest.toa.yaml +79 -14
- package/features/steps/components/pricing/manifest.toa.yaml +13 -0
- package/features/steps/components/pricing/operations/quote.js +3 -0
- package/features/steps/components/sequences/manifest.toa.yaml +3 -2
- package/features/steps/components/sequences/operations/numbers.js +1 -3
- package/features/steps/components/sequences/operations/tokens.js +2 -4
- package/features/steps/components/users/manifest.toa.yaml +21 -3
- package/features/steps/components/users/operations/create.js +11 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +12 -3
- package/features/steps/map.ts +30 -0
- package/features/streams.feature +4 -0
- package/features/timestamps.feature +41 -0
- package/features/timing.feature +2 -22
- package/features/tracing.feature +123 -0
- package/package.json +33 -26
- package/readme.md +25 -1
- package/schemas/annotation.cos.yaml +94 -6
- package/schemas/directive.cos.yaml +7 -3
- package/schemas/io/throttle.cos.yaml +81 -0
- package/schemas/method.cos.yaml +21 -8
- package/schemas/node.cos.yaml +22 -5
- package/schemas/octets/delete.cos.yaml +15 -2
- package/schemas/octets/get.cos.yaml +5 -0
- package/schemas/octets/put.cos.yaml +31 -0
- package/schemas/octets/workflow.cos.yaml +0 -1
- package/schemas/query.cos.yaml +31 -17
- package/schemas/querystring.cos.yaml +19 -6
- package/schemas/range.cos.yaml +10 -2
- package/schemas/route.cos.yaml +6 -2
- package/source/Annotation.ts +51 -1
- package/source/Branch.test.ts +40 -0
- package/source/Branch.ts +39 -1
- package/source/Composition.ts +6 -12
- package/source/Context.ts +5 -2
- package/source/Directive.test.ts +111 -27
- package/source/Directive.ts +97 -20
- package/source/Endpoint.ts +118 -28
- package/source/Factory.ts +75 -28
- package/source/Gateway.ts +208 -18
- package/source/HTTP/Context.ts +79 -32
- package/source/HTTP/Probe.ts +112 -0
- package/source/HTTP/Server.ts +301 -66
- package/source/HTTP/Timing.ts +2 -13
- package/source/HTTP/address.test.ts +22 -0
- package/source/HTTP/address.ts +17 -0
- package/source/HTTP/exceptions.ts +38 -14
- package/source/HTTP/formats/form.ts +21 -0
- package/source/HTTP/formats/index.ts +24 -10
- package/source/HTTP/formats/json.ts +2 -4
- package/source/HTTP/formats/msgpack.ts +0 -1
- package/source/HTTP/formats/text.ts +2 -4
- package/source/HTTP/formats/yaml.test.ts +19 -0
- package/source/HTTP/formats/yaml.ts +25 -5
- package/source/HTTP/index.ts +6 -4
- package/source/HTTP/messages.test.ts +116 -19
- package/source/HTTP/messages.ts +158 -39
- package/source/HTTP/types.ts +39 -0
- package/source/Interception.ts +16 -2
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +67 -24
- package/source/Query.test.ts +22 -5
- package/source/Query.ts +114 -22
- package/source/RTD/Context.ts +7 -4
- package/source/RTD/Directives.ts +27 -5
- package/source/RTD/Endpoint.ts +7 -4
- package/source/RTD/Match.ts +1 -1
- package/source/RTD/Method.ts +18 -2
- package/source/RTD/Node.ts +68 -26
- package/source/RTD/Route.ts +21 -11
- package/source/RTD/Tree.ts +49 -16
- package/source/RTD/expiration.test.ts +81 -0
- package/source/RTD/factory.ts +36 -8
- package/source/RTD/index.ts +8 -8
- package/source/RTD/segment.test.ts +13 -10
- package/source/RTD/segment.ts +2 -0
- package/source/RTD/syntax/index.ts +2 -2
- package/source/RTD/syntax/parse.test.ts +30 -28
- package/source/RTD/syntax/parse.ts +39 -26
- package/source/RTD/syntax/types.ts +9 -4
- package/source/Remotes.test.ts +34 -18
- package/source/Remotes.ts +15 -11
- package/source/Tenant.ts +52 -14
- package/source/const.ts +4 -0
- package/source/deployment.ts +47 -22
- package/source/directives/auth/Anonymous.ts +3 -3
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Assert.ts +38 -0
- package/source/directives/auth/Authorization.test.ts +24 -0
- package/source/directives/auth/Authorization.ts +207 -49
- package/source/directives/auth/Delegate.ts +10 -6
- package/source/directives/auth/Echo.ts +16 -6
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Id.ts +3 -3
- package/source/directives/auth/Incept.ts +87 -25
- package/source/directives/auth/Input.ts +71 -0
- package/source/directives/auth/Role.test.ts +34 -22
- package/source/directives/auth/Role.ts +10 -14
- package/source/directives/auth/Rule.ts +4 -7
- package/source/directives/auth/Scheme.ts +7 -7
- package/source/directives/auth/create.ts +11 -0
- package/source/directives/auth/index.ts +1 -1
- package/source/directives/auth/schemes.test.ts +18 -0
- package/source/directives/auth/schemes.ts +36 -6
- package/source/directives/auth/split.ts +3 -3
- package/source/directives/auth/types.ts +23 -12
- package/source/directives/cache/Cache.ts +33 -11
- package/source/directives/cache/Control.ts +17 -20
- package/source/directives/cache/Exact.ts +1 -1
- package/source/directives/cache/index.ts +1 -1
- package/source/directives/cache/types.ts +1 -1
- package/source/directives/cors/CORS.ts +37 -20
- package/source/directives/cors/index.ts +1 -1
- package/source/directives/dev/Development.ts +19 -12
- package/source/directives/dev/Faulty.ts +26 -0
- package/source/directives/dev/Sleep.ts +55 -0
- package/source/directives/dev/Stub.ts +2 -2
- package/source/directives/dev/Throw.ts +2 -2
- package/source/directives/dev/index.ts +1 -1
- package/source/directives/dev/types.ts +2 -2
- package/source/directives/flow/Compose.ts +92 -0
- package/source/directives/flow/Fetch.ts +86 -0
- package/source/directives/flow/Flow.ts +42 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +7 -0
- package/source/directives/index.ts +14 -12
- package/source/directives/io/Directive.ts +9 -3
- package/source/directives/io/IO.ts +50 -13
- package/source/directives/io/Input.ts +22 -15
- package/source/directives/io/Output.ts +27 -15
- package/source/directives/io/Status.test.ts +84 -0
- package/source/directives/io/Status.ts +46 -0
- package/source/directives/io/Throttle.ts +31 -0
- package/source/directives/io/index.ts +1 -1
- package/source/directives/io/lib/throttle/Configuration.test.ts +63 -0
- package/source/directives/io/lib/throttle/Configuration.ts +63 -0
- package/source/directives/io/lib/throttle/Keys.ts +48 -0
- package/source/directives/io/lib/throttle/Quotas.test.ts +395 -0
- package/source/directives/io/lib/throttle/Quotas.ts +196 -0
- package/source/directives/io/lib/throttle/Sync.test.ts +159 -0
- package/source/directives/io/lib/throttle/Sync.ts +96 -0
- package/source/directives/io/lib/throttle/Warning.test.ts +32 -0
- package/source/directives/io/lib/throttle/Warning.ts +30 -0
- package/source/directives/io/lib/throttle/components/Component.ts +7 -0
- package/source/directives/io/lib/throttle/components/IP.ts +31 -0
- package/source/directives/io/lib/throttle/components/Identity.ts +19 -0
- package/source/directives/io/lib/throttle/components/Path.ts +8 -0
- package/source/directives/io/lib/throttle/components/Route.ts +19 -0
- package/source/directives/io/lib/throttle/components/Segment.ts +19 -0
- package/source/directives/io/lib/throttle/components/index.ts +19 -0
- package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
- package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
- package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
- package/source/directives/io/lib/throttle/index.ts +4 -0
- package/source/directives/io/schemas.test.ts +34 -0
- package/source/directives/io/schemas.ts +9 -5
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Buffer.ts +15 -0
- package/source/directives/map/Claims.ts +58 -0
- package/source/directives/map/Directive.ts +4 -0
- package/source/directives/map/Headers.ts +45 -0
- package/source/directives/map/Language.ts +42 -0
- package/source/directives/map/Languages.ts +11 -0
- package/source/directives/map/Map.ts +63 -0
- package/source/directives/map/Mapping.ts +19 -0
- package/source/directives/{vary → map}/Properties.ts +2 -4
- package/source/directives/map/Segments.ts +33 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/oauth/Discovery.ts +76 -0
- package/source/directives/oauth/documents.ts +113 -0
- package/source/directives/oauth/index.ts +3 -0
- package/source/directives/octets/Context.ts +5 -4
- package/source/directives/octets/Delete.ts +31 -28
- package/source/directives/octets/Directive.ts +3 -3
- package/source/directives/octets/Get.ts +96 -0
- package/source/directives/octets/Octets.ts +20 -22
- package/source/directives/octets/Put.ts +141 -0
- package/source/directives/octets/Workflow.ts +18 -12
- package/source/directives/octets/bytes.test.ts +33 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/index.ts +1 -1
- package/source/directives/octets/schemas.test.ts +10 -5
- package/source/directives/octets/schemas.ts +8 -12
- package/source/directives/octets/types.ts +3 -1
- package/source/directives/octets/workflows/Execution.ts +67 -11
- package/source/directives/octets/workflows/Workflow.ts +21 -10
- package/source/directives/octets/workflows/index.ts +1 -1
- package/source/directives/require/Directive.ts +1 -1
- package/source/directives/require/Headers.ts +3 -3
- package/source/directives/require/Require.ts +4 -4
- package/source/directives/require/index.ts +1 -1
- package/source/exceptions.ts +18 -6
- package/source/index.ts +11 -5
- package/source/io.ts +1 -1
- package/source/manifest.test.ts +12 -10
- package/source/manifest.ts +13 -14
- package/source/octets.d.ts +17 -0
- package/source/redact.test.ts +27 -0
- package/source/redact.ts +21 -0
- package/source/root.ts +19 -4
- package/source/schemas.test.ts +17 -0
- package/source/schemas.ts +5 -5
- package/source/userland.ts +47 -0
- package/transpiled/Annotation.d.ts +39 -1
- package/transpiled/Annotation.js +1 -2
- package/transpiled/Branch.d.ts +25 -1
- package/transpiled/Branch.js +14 -2
- package/transpiled/Branch.js.map +1 -1
- package/transpiled/Composition.d.ts +3 -4
- package/transpiled/Composition.js +13 -22
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Context.d.ts +3 -2
- package/transpiled/Context.js +1 -2
- package/transpiled/Directive.d.ts +14 -6
- package/transpiled/Directive.js +71 -23
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +11 -7
- package/transpiled/Endpoint.js +84 -52
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +6 -6
- package/transpiled/Factory.js +69 -62
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +35 -4
- package/transpiled/Gateway.js +159 -46
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +13 -12
- package/transpiled/HTTP/Context.js +61 -32
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Probe.d.ts +36 -0
- package/transpiled/HTTP/Probe.js +90 -0
- package/transpiled/HTTP/Probe.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +26 -9
- package/transpiled/HTTP/Server.js +235 -93
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/Timing.d.ts +1 -4
- package/transpiled/HTTP/Timing.js +6 -18
- package/transpiled/HTTP/Timing.js.map +1 -1
- package/transpiled/HTTP/address.d.ts +7 -0
- package/transpiled/HTTP/address.js +14 -0
- package/transpiled/HTTP/address.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +21 -9
- package/transpiled/HTTP/exceptions.js +40 -36
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/form.d.ts +9 -0
- package/transpiled/HTTP/formats/form.js +18 -0
- package/transpiled/HTTP/formats/form.js.map +1 -0
- package/transpiled/HTTP/formats/index.d.ts +10 -4
- package/transpiled/HTTP/formats/index.js +19 -35
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/formats/json.d.ts +1 -3
- package/transpiled/HTTP/formats/json.js +6 -12
- package/transpiled/HTTP/formats/json.js.map +1 -1
- package/transpiled/HTTP/formats/msgpack.d.ts +0 -2
- package/transpiled/HTTP/formats/msgpack.js +7 -12
- package/transpiled/HTTP/formats/msgpack.js.map +1 -1
- package/transpiled/HTTP/formats/text.d.ts +1 -3
- package/transpiled/HTTP/formats/text.js +6 -12
- package/transpiled/HTTP/formats/text.js.map +1 -1
- package/transpiled/HTTP/formats/yaml.d.ts +1 -3
- package/transpiled/HTTP/formats/yaml.js +23 -37
- package/transpiled/HTTP/formats/yaml.js.map +1 -1
- package/transpiled/HTTP/index.d.ts +6 -4
- package/transpiled/HTTP/index.js +6 -20
- package/transpiled/HTTP/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +19 -4
- package/transpiled/HTTP/messages.js +112 -41
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/HTTP/types.d.ts +37 -0
- package/transpiled/HTTP/types.js +2 -0
- package/transpiled/HTTP/types.js.map +1 -0
- package/transpiled/Interception.d.ts +7 -2
- package/transpiled/Interception.js +8 -6
- package/transpiled/Interception.js.map +1 -1
- package/transpiled/Introspection.d.ts +9 -0
- package/transpiled/Introspection.js +2 -0
- package/transpiled/Introspection.js.map +1 -0
- package/transpiled/Mapping.d.ts +14 -5
- package/transpiled/Mapping.js +48 -24
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +14 -4
- package/transpiled/Query.js +81 -45
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +6 -4
- package/transpiled/RTD/Context.js +1 -2
- package/transpiled/RTD/Directives.d.ts +23 -5
- package/transpiled/RTD/Directives.js +1 -2
- package/transpiled/RTD/Endpoint.d.ts +5 -4
- package/transpiled/RTD/Endpoint.js +1 -2
- package/transpiled/RTD/Match.d.ts +1 -1
- package/transpiled/RTD/Match.js +1 -2
- package/transpiled/RTD/Method.d.ts +6 -2
- package/transpiled/RTD/Method.js +12 -5
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +16 -5
- package/transpiled/RTD/Node.js +47 -22
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +7 -6
- package/transpiled/RTD/Route.js +11 -9
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +12 -5
- package/transpiled/RTD/Tree.js +37 -12
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.d.ts +4 -3
- package/transpiled/RTD/factory.js +31 -15
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/index.d.ts +8 -8
- package/transpiled/RTD/index.js +8 -37
- package/transpiled/RTD/index.js.map +1 -1
- package/transpiled/RTD/segment.d.ts +1 -0
- package/transpiled/RTD/segment.js +4 -7
- package/transpiled/RTD/segment.js.map +1 -1
- package/transpiled/RTD/syntax/index.d.ts +2 -2
- package/transpiled/RTD/syntax/index.js +2 -18
- package/transpiled/RTD/syntax/index.js.map +1 -1
- package/transpiled/RTD/syntax/parse.d.ts +1 -1
- package/transpiled/RTD/syntax/parse.js +38 -54
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +8 -3
- package/transpiled/RTD/syntax/types.js +1 -4
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.d.ts +7 -7
- package/transpiled/Remotes.js +15 -16
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +15 -4
- package/transpiled/Tenant.js +39 -14
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/const.d.ts +3 -0
- package/transpiled/const.js +4 -0
- package/transpiled/const.js.map +1 -0
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +42 -54
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.d.ts +2 -2
- package/transpiled/directives/auth/Anonymous.js +3 -7
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Anyone.d.ts +6 -0
- package/transpiled/directives/auth/Anyone.js +10 -0
- package/transpiled/directives/auth/Anyone.js.map +1 -0
- package/transpiled/directives/auth/Assert.d.ts +7 -0
- package/transpiled/directives/auth/Assert.js +29 -0
- package/transpiled/directives/auth/Assert.js.map +1 -0
- package/transpiled/directives/auth/Authorization.d.ts +18 -8
- package/transpiled/directives/auth/Authorization.js +171 -85
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +5 -4
- package/transpiled/directives/auth/Delegate.js +10 -10
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Echo.d.ts +4 -4
- package/transpiled/directives/auth/Echo.js +12 -9
- package/transpiled/directives/auth/Echo.js.map +1 -1
- package/transpiled/directives/auth/Federation.d.ts +16 -0
- package/transpiled/directives/auth/Federation.js +50 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Id.d.ts +3 -3
- package/transpiled/directives/auth/Id.js +1 -5
- package/transpiled/directives/auth/Id.js.map +1 -1
- package/transpiled/directives/auth/Incept.d.ts +11 -6
- package/transpiled/directives/auth/Incept.js +66 -50
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Input.d.ts +13 -0
- package/transpiled/directives/auth/Input.js +45 -0
- package/transpiled/directives/auth/Input.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +3 -3
- package/transpiled/directives/auth/Role.js +8 -16
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Rule.d.ts +3 -5
- package/transpiled/directives/auth/Rule.js +3 -7
- package/transpiled/directives/auth/Rule.js.map +1 -1
- package/transpiled/directives/auth/Scheme.d.ts +2 -2
- package/transpiled/directives/auth/Scheme.js +7 -34
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/create.d.ts +2 -0
- package/transpiled/directives/auth/create.js +10 -0
- package/transpiled/directives/auth/create.js.map +1 -0
- package/transpiled/directives/auth/index.d.ts +1 -1
- package/transpiled/directives/auth/index.js +2 -5
- package/transpiled/directives/auth/index.js.map +1 -1
- package/transpiled/directives/auth/schemes.d.ts +26 -3
- package/transpiled/directives/auth/schemes.js +32 -8
- package/transpiled/directives/auth/schemes.js.map +1 -1
- package/transpiled/directives/auth/split.d.ts +1 -1
- package/transpiled/directives/auth/split.js +3 -30
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +19 -12
- package/transpiled/directives/auth/types.js +1 -2
- package/transpiled/directives/cache/Cache.d.ts +5 -5
- package/transpiled/directives/cache/Cache.js +27 -13
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +3 -3
- package/transpiled/directives/cache/Control.js +15 -21
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cache/Exact.d.ts +1 -1
- package/transpiled/directives/cache/Exact.js +2 -6
- package/transpiled/directives/cache/Exact.js.map +1 -1
- package/transpiled/directives/cache/index.d.ts +1 -1
- package/transpiled/directives/cache/index.js +2 -5
- package/transpiled/directives/cache/index.js.map +1 -1
- package/transpiled/directives/cache/types.d.ts +1 -1
- package/transpiled/directives/cache/types.js +1 -2
- package/transpiled/directives/cors/CORS.d.ts +10 -3
- package/transpiled/directives/cors/CORS.js +31 -21
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/cors/index.d.ts +1 -1
- package/transpiled/directives/cors/index.js +2 -5
- package/transpiled/directives/cors/index.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +4 -4
- package/transpiled/directives/dev/Development.js +19 -15
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/dev/Faulty.d.ts +8 -0
- package/transpiled/directives/dev/Faulty.js +19 -0
- package/transpiled/directives/dev/Faulty.js.map +1 -0
- package/transpiled/directives/dev/Sleep.d.ts +9 -0
- package/transpiled/directives/dev/Sleep.js +41 -0
- package/transpiled/directives/dev/Sleep.js.map +1 -0
- package/transpiled/directives/dev/Stub.d.ts +2 -2
- package/transpiled/directives/dev/Stub.js +1 -5
- package/transpiled/directives/dev/Stub.js.map +1 -1
- package/transpiled/directives/dev/Throw.d.ts +2 -2
- package/transpiled/directives/dev/Throw.js +1 -5
- package/transpiled/directives/dev/Throw.js.map +1 -1
- package/transpiled/directives/dev/index.d.ts +1 -1
- package/transpiled/directives/dev/index.js +2 -5
- package/transpiled/directives/dev/index.js.map +1 -1
- package/transpiled/directives/dev/types.d.ts +2 -2
- package/transpiled/directives/dev/types.js +1 -2
- package/transpiled/directives/flow/Compose.d.ts +9 -0
- package/transpiled/directives/flow/Compose.js +67 -0
- package/transpiled/directives/flow/Compose.js.map +1 -0
- package/transpiled/directives/flow/Fetch.d.ts +12 -0
- package/transpiled/directives/flow/Fetch.js +51 -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 +29 -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 +3 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +6 -0
- package/transpiled/directives/flow/types.js +2 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.d.ts +2 -2
- package/transpiled/directives/index.js +12 -13
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Directive.d.ts +8 -3
- package/transpiled/directives/io/Directive.js +1 -2
- package/transpiled/directives/io/IO.d.ts +18 -5
- package/transpiled/directives/io/IO.js +40 -17
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.d.ts +4 -4
- package/transpiled/directives/io/Input.js +16 -37
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Message.js +1 -2
- package/transpiled/directives/io/Output.d.ts +5 -3
- package/transpiled/directives/io/Output.js +20 -38
- package/transpiled/directives/io/Output.js.map +1 -1
- package/transpiled/directives/io/Status.d.ts +19 -0
- package/transpiled/directives/io/Status.js +34 -0
- package/transpiled/directives/io/Status.js.map +1 -0
- package/transpiled/directives/io/Throttle.d.ts +11 -0
- package/transpiled/directives/io/Throttle.js +22 -0
- package/transpiled/directives/io/Throttle.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +1 -1
- package/transpiled/directives/io/index.js +2 -5
- package/transpiled/directives/io/index.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/Configuration.d.ts +26 -0
- package/transpiled/directives/io/lib/throttle/Configuration.js +25 -0
- package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Keys.d.ts +14 -0
- package/transpiled/directives/io/lib/throttle/Keys.js +32 -0
- package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Quotas.d.ts +70 -0
- package/transpiled/directives/io/lib/throttle/Quotas.js +141 -0
- package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Sync.d.ts +29 -0
- package/transpiled/directives/io/lib/throttle/Sync.js +70 -0
- package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Warning.d.ts +11 -0
- package/transpiled/directives/io/lib/throttle/Warning.js +24 -0
- package/transpiled/directives/io/lib/throttle/Warning.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Component.d.ts +6 -0
- package/transpiled/directives/io/lib/throttle/components/Component.js +2 -0
- package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/IP.d.ts +14 -0
- package/transpiled/directives/io/lib/throttle/components/IP.js +24 -0
- package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Identity.d.ts +11 -0
- package/transpiled/directives/io/lib/throttle/components/Identity.js +12 -0
- package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/components/Path.js +6 -0
- package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Route.d.ts +12 -0
- package/transpiled/directives/io/lib/throttle/components/Route.js +16 -0
- package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Segment.d.ts +9 -0
- package/transpiled/directives/io/lib/throttle/components/Segment.js +13 -0
- package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/components/index.js +13 -0
- package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.js +2 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.js +12 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.js +5 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/index.d.ts +4 -0
- package/transpiled/directives/io/lib/throttle/index.js +5 -0
- package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +6 -4
- package/transpiled/directives/io/schemas.js +8 -13
- package/transpiled/directives/io/schemas.js.map +1 -1
- package/transpiled/directives/map/Authority.d.ts +6 -0
- package/transpiled/directives/map/Authority.js +12 -0
- package/transpiled/directives/map/Authority.js.map +1 -0
- package/transpiled/directives/map/Buffer.d.ts +6 -0
- package/transpiled/directives/map/Buffer.js +12 -0
- package/transpiled/directives/map/Buffer.js.map +1 -0
- package/transpiled/directives/map/Claims.d.ts +10 -0
- package/transpiled/directives/map/Claims.js +37 -0
- package/transpiled/directives/map/Claims.js.map +1 -0
- package/transpiled/directives/map/Directive.d.ts +3 -0
- package/transpiled/directives/map/Directive.js +2 -0
- package/transpiled/directives/map/Directive.js.map +1 -0
- package/transpiled/directives/map/Headers.d.ts +7 -0
- package/transpiled/directives/map/Headers.js +33 -0
- package/transpiled/directives/map/Headers.js.map +1 -0
- package/transpiled/directives/map/Language.d.ts +10 -0
- package/transpiled/directives/map/Language.js +31 -0
- package/transpiled/directives/map/Language.js.map +1 -0
- package/transpiled/directives/map/Languages.d.ts +4 -0
- package/transpiled/directives/map/Languages.js +10 -0
- package/transpiled/directives/map/Languages.js.map +1 -0
- package/transpiled/directives/map/Map.d.ts +13 -0
- package/transpiled/directives/map/Map.js +44 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +13 -0
- package/transpiled/directives/map/Mapping.js +9 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
- package/transpiled/directives/map/Properties.js +10 -0
- package/transpiled/directives/map/Properties.js.map +1 -0
- package/transpiled/directives/map/Segments.d.ts +6 -0
- package/transpiled/directives/map/Segments.js +23 -0
- package/transpiled/directives/map/Segments.js.map +1 -0
- package/transpiled/directives/map/index.d.ts +2 -0
- package/transpiled/directives/map/index.js +3 -0
- package/transpiled/directives/map/index.js.map +1 -0
- package/transpiled/directives/oauth/Discovery.d.ts +23 -0
- package/transpiled/directives/oauth/Discovery.js +58 -0
- package/transpiled/directives/oauth/Discovery.js.map +1 -0
- package/transpiled/directives/oauth/documents.d.ts +9 -0
- package/transpiled/directives/oauth/documents.js +82 -0
- package/transpiled/directives/oauth/documents.js.map +1 -0
- package/transpiled/directives/oauth/index.d.ts +2 -0
- package/transpiled/directives/oauth/index.js +3 -0
- package/transpiled/directives/oauth/index.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +2 -2
- package/transpiled/directives/octets/Context.js +4 -31
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.d.ts +6 -6
- package/transpiled/directives/octets/Delete.js +23 -47
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.d.ts +3 -3
- package/transpiled/directives/octets/Directive.js +1 -5
- package/transpiled/directives/octets/Directive.js.map +1 -1
- package/transpiled/directives/octets/Get.d.ts +17 -0
- package/transpiled/directives/octets/Get.js +69 -0
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.d.ts +5 -5
- package/transpiled/directives/octets/Octets.js +19 -24
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +14 -8
- package/transpiled/directives/octets/Put.js +74 -0
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.d.ts +6 -6
- package/transpiled/directives/octets/Workflow.js +14 -36
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +14 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/index.d.ts +1 -1
- package/transpiled/directives/octets/index.js +2 -5
- package/transpiled/directives/octets/index.js.map +1 -1
- package/transpiled/directives/octets/schemas.d.ts +6 -10
- package/transpiled/directives/octets/schemas.js +8 -17
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +3 -1
- package/transpiled/directives/octets/types.js +1 -2
- package/transpiled/directives/octets/workflows/Execution.d.ts +9 -4
- package/transpiled/directives/octets/workflows/Execution.js +46 -13
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.d.ts +10 -5
- package/transpiled/directives/octets/workflows/Workflow.js +16 -14
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/octets/workflows/index.d.ts +1 -1
- package/transpiled/directives/octets/workflows/index.js +1 -5
- package/transpiled/directives/octets/workflows/index.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +1 -1
- package/transpiled/directives/require/Directive.js +1 -2
- package/transpiled/directives/require/Headers.d.ts +2 -2
- package/transpiled/directives/require/Headers.js +3 -7
- package/transpiled/directives/require/Headers.js.map +1 -1
- package/transpiled/directives/require/Require.d.ts +3 -3
- package/transpiled/directives/require/Require.js +6 -13
- package/transpiled/directives/require/Require.js.map +1 -1
- package/transpiled/directives/require/index.d.ts +1 -1
- package/transpiled/directives/require/index.js +2 -5
- package/transpiled/directives/require/index.js.map +1 -1
- package/transpiled/discovery.js +1 -2
- package/transpiled/exceptions.d.ts +1 -1
- package/transpiled/exceptions.js +16 -34
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/index.d.ts +7 -5
- package/transpiled/index.js +4 -11
- package/transpiled/index.js.map +1 -1
- package/transpiled/io.d.ts +1 -1
- package/transpiled/io.js +1 -2
- package/transpiled/manifest.d.ts +1 -1
- package/transpiled/manifest.js +17 -48
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/redact.d.ts +5 -0
- package/transpiled/redact.js +17 -0
- package/transpiled/redact.js.map +1 -0
- package/transpiled/root.d.ts +1 -1
- package/transpiled/root.js +21 -10
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +3 -3
- package/transpiled/schemas.js +7 -13
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/userland.d.ts +39 -0
- package/transpiled/userland.js +7 -0
- package/transpiled/userland.js.map +1 -0
- package/tsconfig.json +2 -1
- package/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.basic/operations/types.d.ts +0 -40
- package/components/identity.basic/operations/types.js +0 -3
- package/components/identity.basic/operations/types.js.map +0 -1
- package/components/identity.basic/source/types.ts +0 -44
- package/components/identity.federation/operations/lib/assertions-as-values.d.ts +0 -4
- package/components/identity.federation/operations/lib/assertions-as-values.js +0 -45
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +0 -1
- package/components/identity.federation/operations/lib/jwt.d.ts +0 -20
- package/components/identity.federation/operations/lib/jwt.js +0 -136
- package/components/identity.federation/operations/lib/jwt.js.map +0 -1
- package/components/identity.federation/operations/schemas.d.ts +0 -63
- package/components/identity.federation/operations/schemas.js +0 -9
- package/components/identity.federation/operations/schemas.js.map +0 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.federation/operations/types.d.ts +0 -56
- package/components/identity.federation/operations/types.js +0 -3
- package/components/identity.federation/operations/types.js.map +0 -1
- package/components/identity.federation/source/lib/assertions-as-values.ts +0 -19
- package/components/identity.federation/source/lib/jwt.test.ts +0 -56
- package/components/identity.federation/source/lib/jwt.ts +0 -171
- package/components/identity.federation/source/schemas.ts +0 -65
- package/components/identity.federation/source/types.ts +0 -62
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +0 -1
- package/components/identity.tokens/operations/types.d.ts +0 -46
- package/components/identity.tokens/operations/types.js +0 -3
- package/components/identity.tokens/operations/types.js.map +0 -1
- package/components/identity.tokens/source/types.ts +0 -55
- package/components/octets.storage/manifest.toa.yaml +0 -21
- package/components/octets.storage/operations/fetch.js +0 -46
- package/components/octets.storage/operations/get.js +0 -7
- package/components/octets.storage/operations/list.js +0 -7
- package/components/octets.storage/operations/store.js +0 -11
- package/cucumber.js +0 -7
- package/documentation/vary.md +0 -69
- package/features/steps/IdP.ts +0 -154
- package/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/features/vary.feature +0 -252
- package/schemas/octets/context.cos.yaml +0 -1
- package/schemas/octets/fetch.cos.yaml +0 -3
- package/schemas/octets/list.cos.yaml +0 -2
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/directives/octets/Fetch.ts +0 -100
- package/source/directives/octets/List.ts +0 -72
- package/source/directives/octets/Store.ts +0 -126
- package/source/directives/vary/Directive.ts +0 -7
- package/source/directives/vary/Embed.ts +0 -68
- package/source/directives/vary/Vary.ts +0 -50
- package/source/directives/vary/embeddings/Authority.ts +0 -8
- package/source/directives/vary/embeddings/Embedding.ts +0 -7
- package/source/directives/vary/embeddings/Header.ts +0 -32
- package/source/directives/vary/embeddings/Language.ts +0 -31
- package/source/directives/vary/embeddings/Parameter.ts +0 -14
- package/source/directives/vary/embeddings/index.ts +0 -13
- package/source/directives/vary/index.ts +0 -3
- package/source/index.test.ts +0 -9
- package/transpiled/directives/octets/Fetch.d.ts +0 -18
- package/transpiled/directives/octets/Fetch.js +0 -92
- package/transpiled/directives/octets/Fetch.js.map +0 -1
- package/transpiled/directives/octets/List.d.ts +0 -16
- package/transpiled/directives/octets/List.js +0 -74
- package/transpiled/directives/octets/List.js.map +0 -1
- package/transpiled/directives/octets/Store.js +0 -95
- package/transpiled/directives/octets/Store.js.map +0 -1
- package/transpiled/directives/vary/Directive.d.ts +0 -6
- package/transpiled/directives/vary/Directive.js +0 -3
- package/transpiled/directives/vary/Directive.js.map +0 -1
- package/transpiled/directives/vary/Embed.d.ts +0 -11
- package/transpiled/directives/vary/Embed.js +0 -51
- package/transpiled/directives/vary/Embed.js.map +0 -1
- package/transpiled/directives/vary/Properties.js +0 -16
- package/transpiled/directives/vary/Properties.js.map +0 -1
- package/transpiled/directives/vary/Vary.d.ts +0 -10
- package/transpiled/directives/vary/Vary.js +0 -36
- package/transpiled/directives/vary/Vary.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/Authority.js +0 -10
- package/transpiled/directives/vary/embeddings/Authority.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -6
- package/transpiled/directives/vary/embeddings/Embedding.js +0 -3
- package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Header.js +0 -28
- package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Language.js +0 -28
- package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Parameter.js +0 -14
- package/transpiled/directives/vary/embeddings/Parameter.js.map +0 -1
- package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/index.js +0 -14
- package/transpiled/directives/vary/embeddings/index.js.map +0 -1
- package/transpiled/directives/vary/index.d.ts +0 -2
- package/transpiled/directives/vary/index.js +0 -6
- package/transpiled/directives/vary/index.js.map +0 -1
- package/transpiled/tsconfig.tsbuildinfo +0 -1
|
@@ -6,6 +6,9 @@ identifier** of an individual, organization, application or device.
|
|
|
6
6
|
To prove its Identity, the request originator must provide a valid _credentials_ that are associated
|
|
7
7
|
with that Identity.
|
|
8
8
|
|
|
9
|
+
Persistent authentication methods and their management resources are described in
|
|
10
|
+
[Persistent credentials](credentials.md).
|
|
11
|
+
|
|
9
12
|
Identity is intrinsically linked to credentials, as an Identity is established only when the first
|
|
10
13
|
set of credentials for that Identity is created.
|
|
11
14
|
In other words, the creation of credentials marks the inception of an Identity.
|
|
@@ -38,23 +41,51 @@ See [`identity.basic` component](components.md#basic-credentials).
|
|
|
38
41
|
|
|
39
42
|
### Token scheme
|
|
40
43
|
|
|
41
|
-
Tokens issued by the Authentication system.
|
|
44
|
+
Tokens issued by the Authentication system. New tokens are compact
|
|
45
|
+
[JSON Web Encryption (JWE)](https://www.rfc-editor.org/rfc/rfc7516) values using direct symmetric
|
|
46
|
+
encryption (`alg: dir`) and AES-256-GCM (`enc: A256GCM`). Legacy PASETO V3.local tokens remain
|
|
47
|
+
accepted during migration and are always replaced on successful authentication.
|
|
42
48
|
|
|
43
49
|
```http
|
|
44
|
-
|
|
50
|
+
Authorization: Token eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwidHlwIjoiSldUIiwia2lkIjo...
|
|
45
51
|
```
|
|
46
52
|
|
|
47
53
|
The `Token` is the **primary** authentication scheme.
|
|
48
54
|
If request originators use an alternative authentication scheme, they will receive a response
|
|
49
|
-
containing `Token`credentials and will be required to switch to the `Token` scheme for any
|
|
55
|
+
containing `Token` credentials and will be required to switch to the `Token` scheme for any
|
|
50
56
|
subsequent requests.
|
|
51
|
-
Continued use of other authentication schemes will result in temporary blocking of requests.
|
|
52
57
|
|
|
53
|
-
See [`identity.tokens` component](components.md#
|
|
58
|
+
See [`identity.tokens` component](components.md#local-tokens).
|
|
59
|
+
|
|
60
|
+
### Failed authentications
|
|
61
|
+
|
|
62
|
+
Credentials that are rejected can be metered per client address, whatever the scheme. An address
|
|
63
|
+
may fail `attempts` at once and earns them back at `attempts` per `interval` seconds; a request
|
|
64
|
+
carrying credentials from an address with nothing left is answered `429 Too Many Requests` with
|
|
65
|
+
`Retry-After`. Nothing is metered unless the exposition annotation carries `bouncer`;
|
|
66
|
+
`attempts` and `interval` default to 20 and 60. The address is the one the request context
|
|
67
|
+
resolved, see [Client address](ip.md): `bouncer` requires `ip`, in the same environment, and a
|
|
68
|
+
request without an address is not metered.
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
# context.toa.yaml
|
|
72
|
+
|
|
73
|
+
exposition:
|
|
74
|
+
ip: cf-connecting-ip
|
|
75
|
+
bouncer:
|
|
76
|
+
attempts: 20
|
|
77
|
+
interval: 60
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The count is shared by the gateway replicas through
|
|
81
|
+
[atomicity](../../../connectors/atomicity/readme.md) and decided in each process; nothing is read on
|
|
82
|
+
the request path.
|
|
54
83
|
|
|
55
84
|
### Bearer scheme
|
|
56
85
|
|
|
57
|
-
OpenID tokens issued by trusted providers
|
|
86
|
+
OpenID tokens issued by trusted providers, and access tokens issued by
|
|
87
|
+
[this authorization server](oauth.md) to OAuth clients. Both are presented the same way, and each
|
|
88
|
+
provider says which credentials are its own; a credential neither claims is refused.
|
|
58
89
|
For more information, refer
|
|
59
90
|
to [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html),
|
|
60
91
|
[RFC6750](https://datatracker.ietf.org/doc/html/rfc6750).
|
|
@@ -63,8 +94,8 @@ to [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.ht
|
|
|
63
94
|
Authorization: Bearer eyJhbGciOiJIUzI1...
|
|
64
95
|
```
|
|
65
96
|
|
|
66
|
-
Trusted providers are specified using the `identity.federation`
|
|
67
|
-
|
|
97
|
+
Trusted providers are specified using the `identity.federation` configuration. Provider metadata
|
|
98
|
+
and signing keys are discovered using OpenID Connect discovery and JWKS.
|
|
68
99
|
|
|
69
100
|
```yaml
|
|
70
101
|
# context.toa.yaml
|
|
@@ -73,16 +104,97 @@ configuration:
|
|
|
73
104
|
identity.federation:
|
|
74
105
|
trust:
|
|
75
106
|
- iss: https://accounts.google.com
|
|
76
|
-
aud:
|
|
77
|
-
|
|
107
|
+
aud: <GOOGLE_CLIENT_ID>
|
|
108
|
+
|
|
109
|
+
- iss: https://appleid.apple.com
|
|
110
|
+
aud: <APPLE_CLIENT_ID>
|
|
111
|
+
secret: <APPLE_CLIENT_SECRET> # enables Authorization Code Flow
|
|
112
|
+
principal:
|
|
113
|
+
authority: example
|
|
114
|
+
iss: https://accounts.google.com
|
|
115
|
+
sub: 4218230498234
|
|
116
|
+
assert: true
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
`principal` specifies the authority and the values of the `iss` and `sub` claims of an Identity
|
|
120
|
+
that will be granted with a `system` role. The same subject in another authority is ordinary
|
|
121
|
+
credentials.
|
|
122
|
+
|
|
123
|
+
`assert` indicates whether the Identity should be implicitly created when valid credentials for a
|
|
124
|
+
non-existent Identity are provided (default `true`).
|
|
125
|
+
|
|
126
|
+
### Authorization Code Flow
|
|
78
127
|
|
|
128
|
+
[OAuth 2.0 RFC 6749, section 4.1](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
GET /identity/
|
|
132
|
+
authorization: Code <credentials>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
`<credentials>` is a base64-encoded JSON containing the following properties:
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
code: authorization code
|
|
139
|
+
iss: code issuer
|
|
140
|
+
for: redirect URI
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Trust configuration for the issuer requires either `secret` or `signature`
|
|
144
|
+
to enable the Authorization Code Flow.
|
|
145
|
+
|
|
146
|
+
> If `aud` is an array, the first value is used.
|
|
147
|
+
|
|
148
|
+
```yaml
|
|
149
|
+
# context.toa.yaml
|
|
150
|
+
configuration:
|
|
151
|
+
identity.federation:
|
|
152
|
+
trust:
|
|
153
|
+
- iss: https://accounts.google.com
|
|
154
|
+
aud: 1045282659797-n705sf85j4b2rodtpdn43od43tvseiet.apps.googleusercontent.com
|
|
155
|
+
secret: $GOOGLE_CLIENT_SECRET
|
|
79
156
|
- iss: https://appleid.apple.com
|
|
157
|
+
aud: io.toa.services.id
|
|
158
|
+
signature:
|
|
159
|
+
iss: team-id
|
|
160
|
+
kid: key-id
|
|
161
|
+
key: $APPLE_PRIVATE_KEY # PKCS8 PEM, as in the .p8 file
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### OTP scheme
|
|
165
|
+
|
|
166
|
+
One-time passwords.
|
|
167
|
+
|
|
168
|
+
Passwords can be issued by calling `identity.otp.issue` operation, with the following input:
|
|
169
|
+
|
|
170
|
+
```yaml
|
|
171
|
+
authority: string
|
|
172
|
+
username: string
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The reply will contain the `code` property of type `string` formed as a random 6-digit number,
|
|
176
|
+
valid for 60 seconds by default.
|
|
177
|
+
|
|
178
|
+
```yaml
|
|
179
|
+
code: 123456
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
OTP can be used with `OTP` authentication formatted as `base64(username:password)`.
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
GET /identity/ HTTP/1.1
|
|
186
|
+
authentication: OTP dXNlcm5hbWU6MTIzNDU2
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
OTP expiration time and the number of failed attempts a username is allowed within it can be
|
|
190
|
+
configured using the `identity.otp` configuration.
|
|
80
191
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
192
|
+
```yaml
|
|
193
|
+
# context.toa.yaml
|
|
194
|
+
configuration:
|
|
195
|
+
identity.otp:
|
|
196
|
+
lifetime: 60 # seconds
|
|
197
|
+
attempts: 5
|
|
86
198
|
```
|
|
87
199
|
|
|
88
200
|
## Identity inception
|
|
@@ -98,7 +210,10 @@ name: users
|
|
|
98
210
|
|
|
99
211
|
entity:
|
|
100
212
|
schema:
|
|
101
|
-
|
|
213
|
+
type: object
|
|
214
|
+
properties:
|
|
215
|
+
name:
|
|
216
|
+
type: string
|
|
102
217
|
|
|
103
218
|
exposition:
|
|
104
219
|
/:
|
|
@@ -110,7 +225,7 @@ exposition:
|
|
|
110
225
|
The value of the `auth:incept` directive refers to the name of the response property that will be
|
|
111
226
|
returned by the `POST` operation, containing the created entity identifier.
|
|
112
227
|
|
|
113
|
-
A request with Identity inception
|
|
228
|
+
A request with Identity inception may contain (non-existent) credentials that will be associated
|
|
114
229
|
with the created Identity.
|
|
115
230
|
|
|
116
231
|
```http
|
|
@@ -132,6 +247,39 @@ id: 2428c31ecb6e4a51a24ef52f0c4181b9
|
|
|
132
247
|
As a result of processing the above request, the provided Basic credentials associated with the
|
|
133
248
|
Identity `2428c31ecb6e4a51a24ef52f0c4181b9` are created.
|
|
134
249
|
|
|
250
|
+
> `auth:incept` directive may have a `null` value, which means that the Identity will be created
|
|
251
|
+
> without any associated entity.
|
|
252
|
+
|
|
253
|
+
Inception is supported for `Basic` and `Bearer` authentication schemes.
|
|
254
|
+
|
|
255
|
+
Inception goes ahead when the request carries no credentials, or credentials the scheme verified
|
|
256
|
+
and no Identity owns, which its `authenticate` operation reports as `NOT_FOUND`. Credentials
|
|
257
|
+
rejected for any other reason, a wrong password for one, are answered with `401 Unauthorized`
|
|
258
|
+
before the endpoint is called.
|
|
259
|
+
|
|
260
|
+
## Identity assertion
|
|
261
|
+
|
|
262
|
+
`auth:assert` directive is used to ensure that given credentials are associated with an existing
|
|
263
|
+
Identity or to create a new Identity if it does not exist.
|
|
264
|
+
The directive itself does not allow or deny access to the requested resource.
|
|
265
|
+
|
|
266
|
+
> Used authentication scheme must support inception.
|
|
267
|
+
|
|
268
|
+
```yaml
|
|
269
|
+
/accounts/echo:
|
|
270
|
+
auth:assert: true
|
|
271
|
+
auth:anyone: true
|
|
272
|
+
endpoint: echo
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
```http
|
|
276
|
+
GET /accounts/echo/
|
|
277
|
+
authorization: Basic new-or-existent-credentials
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
If new Identity is created and endpoint returns a successful response, the status code `201 Created`
|
|
281
|
+
is returned.
|
|
282
|
+
|
|
135
283
|
## FAQ
|
|
136
284
|
|
|
137
285
|
<dl>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Resource introspection
|
|
2
|
+
|
|
3
|
+
Any resource can be introspected by sending an `OPTIONS` request to the resource's path.
|
|
4
|
+
The response will contain the resource's input and output schemas for each supported method.
|
|
5
|
+
|
|
6
|
+
Introspection properties:
|
|
7
|
+
|
|
8
|
+
- `route` route parameters
|
|
9
|
+
- `query` query parameters
|
|
10
|
+
- `input` input schema
|
|
11
|
+
- `output` output schema
|
|
12
|
+
- `errors` error codes
|
|
13
|
+
|
|
14
|
+
```http
|
|
15
|
+
OPTIONS /pots/:id/ HTTP/1.1
|
|
16
|
+
accept: application/yaml
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```http
|
|
20
|
+
200 OK
|
|
21
|
+
Allow: GET, POST, OPTIONS
|
|
22
|
+
|
|
23
|
+
GET:
|
|
24
|
+
route:
|
|
25
|
+
id:
|
|
26
|
+
type: string
|
|
27
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
28
|
+
output:
|
|
29
|
+
type: array
|
|
30
|
+
items:
|
|
31
|
+
type: object
|
|
32
|
+
properties:
|
|
33
|
+
title:
|
|
34
|
+
type: string
|
|
35
|
+
maxLength: 64
|
|
36
|
+
volume:
|
|
37
|
+
type: number
|
|
38
|
+
exclusiveMinimum: 0
|
|
39
|
+
maximum: 1000
|
|
40
|
+
temperature:
|
|
41
|
+
type: number
|
|
42
|
+
exclusiveMinimum: 0
|
|
43
|
+
maximum: 300
|
|
44
|
+
additionalProperties: false
|
|
45
|
+
required:
|
|
46
|
+
- id
|
|
47
|
+
- title
|
|
48
|
+
- volume
|
|
49
|
+
POST:
|
|
50
|
+
route:
|
|
51
|
+
id:
|
|
52
|
+
type: string
|
|
53
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
54
|
+
input:
|
|
55
|
+
type: object
|
|
56
|
+
properties:
|
|
57
|
+
title:
|
|
58
|
+
type: string
|
|
59
|
+
maxLength: 64
|
|
60
|
+
temperature:
|
|
61
|
+
type: number
|
|
62
|
+
exclusiveMinimum: 0
|
|
63
|
+
maximum: 300
|
|
64
|
+
volume:
|
|
65
|
+
type: number
|
|
66
|
+
exclusiveMinimum: 0
|
|
67
|
+
maximum: 1000
|
|
68
|
+
additionalProperties: false
|
|
69
|
+
required:
|
|
70
|
+
- title
|
|
71
|
+
- volume
|
|
72
|
+
output:
|
|
73
|
+
type: object
|
|
74
|
+
properties:
|
|
75
|
+
id:
|
|
76
|
+
type: string
|
|
77
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
78
|
+
additionalProperties: false
|
|
79
|
+
errors:
|
|
80
|
+
- NO_WAY
|
|
81
|
+
- WONT_CREATE
|
|
82
|
+
```
|
package/documentation/io.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# I/O restrictions
|
|
2
2
|
|
|
3
3
|
The Exposition comes with `io` directives to control access to the operation's input and output
|
|
4
|
-
properties.
|
|
4
|
+
properties, and to let an operation state the status of its reply.
|
|
5
5
|
|
|
6
|
-
##
|
|
6
|
+
## Input
|
|
7
7
|
|
|
8
8
|
The `io:input` optional directive contains a list of properties that are allowed to be specified in
|
|
9
9
|
the request body.
|
|
@@ -22,7 +22,7 @@ not in the list, the request will be rejected with a `400` status code.
|
|
|
22
22
|
> Therefore, `io:input` is only applicable to operations which input is an object or an
|
|
23
23
|
> array of objects.
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Output
|
|
26
26
|
|
|
27
27
|
The `io:output` mandatory directive contains a list of properties that are allowed to be included in
|
|
28
28
|
the response body.
|
|
@@ -53,4 +53,109 @@ GET:
|
|
|
53
53
|
io:output: false
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
Output restrictions are not applied to stream responses
|
|
56
|
+
Output restrictions are not applied to stream responses, nor to a reply the gateway built out of an
|
|
57
|
+
exception — an operation that returns an error is answered with a code and a message of the
|
|
58
|
+
gateway's own, and a list of permitted properties has nothing to say about those. A reply the
|
|
59
|
+
operation returned is restricted whatever status it carries, see [Status](#status).
|
|
60
|
+
|
|
61
|
+
## Status
|
|
62
|
+
|
|
63
|
+
The `io:status` optional directive names a property of the reply that carries the status of the
|
|
64
|
+
response. The property is removed from the body.
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
POST:
|
|
68
|
+
endpoint: register
|
|
69
|
+
io:status: status
|
|
70
|
+
io:output: [client_id, client_name, error, error_description]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
return { status: 400, error: 'invalid_redirect_uri' }
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```http
|
|
78
|
+
400 Bad Request
|
|
79
|
+
|
|
80
|
+
error: invalid_redirect_uri
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
A reply that does not carry the property is answered with the status it would have been. A property
|
|
84
|
+
that is not a number is an error.
|
|
85
|
+
|
|
86
|
+
This is for an outcome the operation knows and the transport does not — a protocol that states its
|
|
87
|
+
error as a body rather than as a status of its own, or a request that created where it might have
|
|
88
|
+
updated. Such an operation returns no error: both replies are its output, and `io:output` permits
|
|
89
|
+
the properties of both. An operation that does return an error is unaffected — that reply is the
|
|
90
|
+
gateway's, and is not restricted.
|
|
91
|
+
|
|
92
|
+
## Throttling
|
|
93
|
+
|
|
94
|
+
The `io:throttle` directive limits the rate of requests meeting the specified criteria.
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
exposition:
|
|
98
|
+
/:
|
|
99
|
+
io:throttle:
|
|
100
|
+
key:
|
|
101
|
+
- route
|
|
102
|
+
- ip
|
|
103
|
+
condition:
|
|
104
|
+
status: 404
|
|
105
|
+
requests: 500
|
|
106
|
+
interval: 30
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Requests are metered per `key`. A key may spend `requests` at once, and earns them back at a rate of
|
|
110
|
+
`requests` per `interval` seconds. A request carrying a key with nothing left to spend is answered
|
|
111
|
+
`429 Too Many Requests`, with a `Retry-After` saying how long until one would be admitted again.
|
|
112
|
+
`interval` is in seconds.
|
|
113
|
+
|
|
114
|
+
So `requests` is the burst, and `requests / interval` the rate it is repaid at. There is no window to
|
|
115
|
+
save a budget up in and spend twice across the edge of, and no lockout to sit out: a key that has
|
|
116
|
+
overspent is admitted again as soon as it has earned a single request back, and a client that keeps
|
|
117
|
+
asking meanwhile is not penalised for it.
|
|
118
|
+
|
|
119
|
+
`requests` is a budget for the **whole group** of gateway instances, not for one of them. Instances
|
|
120
|
+
reconcile through Redis on a timer, so they converge on one number rather than each enforcing the
|
|
121
|
+
limit separately. Between two of those, an instance goes on what it alone has spent — so the group
|
|
122
|
+
can overshoot by what the other instances admit within that window, and by no more. The window is a
|
|
123
|
+
tenth of `interval`, between a quarter of a second and two seconds, whatever `interval` is. Precise
|
|
124
|
+
per-request enforcement is not what this is for.
|
|
125
|
+
|
|
126
|
+
An instance that cannot reach Redis keeps throttling on what it has seen itself and keeps serving,
|
|
127
|
+
and reports what it could not the next time it gets through.
|
|
128
|
+
|
|
129
|
+
### Key components
|
|
130
|
+
|
|
131
|
+
What a request is metered against. Give one, or a list — a list keys on the combination, so
|
|
132
|
+
`[route, ip]` meters each address separately on each route.
|
|
133
|
+
|
|
134
|
+
- `ip` — the client address, as the request context resolved it. See [Client address](ip.md) for
|
|
135
|
+
where it is read from and why.
|
|
136
|
+
- `path` — the path the request came in on, `/users/1`.
|
|
137
|
+
- `route` — the route as declared, `/users/:id`. Every path matching the route shares one budget,
|
|
138
|
+
which `path` cannot do: keyed on `path`, walking ids is a way around the limit.
|
|
139
|
+
- `identity` — the authenticated identity. Requests carrying none share a single budget between
|
|
140
|
+
them, so pair it with `ip` if that matters.
|
|
141
|
+
- `segment: <name>` — the value bound to a named route segment, `1` for `:id` in `/users/:id`.
|
|
142
|
+
|
|
143
|
+
### Conditions
|
|
144
|
+
|
|
145
|
+
What is metered, as opposed to what it is metered against. A request that fails a condition is served
|
|
146
|
+
and costs nothing. Conditions are evaluated against the response, so they cannot decide whether to
|
|
147
|
+
refuse a request — only whether it is charged for, once it has been answered.
|
|
148
|
+
|
|
149
|
+
- `status: <code>` — charge only for responses with this status.
|
|
150
|
+
|
|
151
|
+
```yaml
|
|
152
|
+
io:throttle:
|
|
153
|
+
key: ip
|
|
154
|
+
condition:
|
|
155
|
+
status: 404
|
|
156
|
+
requests: 20
|
|
157
|
+
interval: 600
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
An address may probe for twenty missing paths at once, and thereafter for one every thirty seconds.
|
|
161
|
+
Requests that find something are served and never counted against it.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Client address
|
|
2
|
+
|
|
3
|
+
The address a request comes from is resolved once, into the request context, and read from there
|
|
4
|
+
by whatever keys on it: the meter of [failed authentications](identity.md#failed-authentications)
|
|
5
|
+
and the `ip` key of [`io:throttle`](io.md#key-components).
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
# context.toa.yaml
|
|
9
|
+
|
|
10
|
+
exposition:
|
|
11
|
+
ip: cf-connecting-ip
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`ip` names the header the address is read from. In production the gateway sits behind a load
|
|
15
|
+
balancer, an ingress or a CDN: the connection it accepts comes from that machine, so every client
|
|
16
|
+
shares one address and nothing tells them apart. The edge is the one that saw the client connect,
|
|
17
|
+
and it writes the client's address into a header of its own, `CF-Connecting-IP`, `X-Real-IP` or
|
|
18
|
+
`X-Forwarded-For`, depending on the infrastructure. A client may send any of these headers too, so
|
|
19
|
+
the gateway trusts none of them on its own: the deployment names the one its edge overwrites, and
|
|
20
|
+
where the header holds a list, the last value is the one the edge appended.
|
|
21
|
+
|
|
22
|
+
The connection's address is never used. Without `ip`, or for a request that does not carry the
|
|
23
|
+
header, the request has no address: the bouncer and a throttle keyed on `ip` let it through and
|
|
24
|
+
say so in the log, once per hundred seconds rather than once per request.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# HTTP context mapping
|
|
2
|
+
|
|
3
|
+
The `map` directive family is used to map HTTP request parts to operation call input properties.
|
|
4
|
+
|
|
5
|
+
[Features](../features/map.feature).
|
|
6
|
+
|
|
7
|
+
## TL;DR
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
exposition:
|
|
11
|
+
/:group:
|
|
12
|
+
languages: [en, fr] # supported languages
|
|
13
|
+
GET:
|
|
14
|
+
map:authority: hostname # request authority (e.g., hostname)
|
|
15
|
+
map:language: lang # requested language
|
|
16
|
+
map:headers: # raw header values
|
|
17
|
+
token: x-access-token
|
|
18
|
+
map:buffer: body # unparsed request body
|
|
19
|
+
map:segments: # route parameters
|
|
20
|
+
group: group
|
|
21
|
+
map:claims: # Bearer token claims
|
|
22
|
+
address: email
|
|
23
|
+
verified: email_verified
|
|
24
|
+
endpoint: observe
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The operation input type must be an object.
|
|
28
|
+
If the input already contains the specified keys, they will be overwritten.
|
|
29
|
+
|
|
30
|
+
## Authority
|
|
31
|
+
|
|
32
|
+
The `map:authority` directive maps the [authority identifier](authorities.md) to an operation call
|
|
33
|
+
input property specified by the directive value.
|
|
34
|
+
|
|
35
|
+
### Language
|
|
36
|
+
|
|
37
|
+
The `map:language` mapping sets the [most matching](https://github.com/jshttp/negotiator) language
|
|
38
|
+
code based on the `accept-language` request header and a list of supported languages defined by
|
|
39
|
+
the `map:languages` directive, and also adds `accept-language` to the `Vary` HTTP response header
|
|
40
|
+
value.
|
|
41
|
+
|
|
42
|
+
If none of the supported languages match, the first supported language is used.
|
|
43
|
+
|
|
44
|
+
> `map:languages` has a shorthand form: `languages: [en, fr]`.
|
|
45
|
+
|
|
46
|
+
## Header values
|
|
47
|
+
|
|
48
|
+
The `map:headers` directive maps the values of HTTP request headers to operation call input
|
|
49
|
+
properties.
|
|
50
|
+
The value of the directive is a map where keys are the names of the input properties and values are
|
|
51
|
+
the names of the HTTP request headers.
|
|
52
|
+
|
|
53
|
+
The names of these headers are then included in the `Vary` HTTP response header
|
|
54
|
+
and [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)
|
|
55
|
+
of the [CORS](protocol.md#cors).
|
|
56
|
+
|
|
57
|
+
[Multiple header fields](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) are combined
|
|
58
|
+
as a comma-separated list.
|
|
59
|
+
|
|
60
|
+
## Raw body
|
|
61
|
+
|
|
62
|
+
The `map:buffer` directive maps the unparsed request body to an operation call input property.
|
|
63
|
+
The directive value is the name of the input property.
|
|
64
|
+
|
|
65
|
+
```yaml
|
|
66
|
+
/webhook:
|
|
67
|
+
POST:
|
|
68
|
+
map:buffer: body
|
|
69
|
+
map:headers:
|
|
70
|
+
signature: x-signature
|
|
71
|
+
endpoint: verify
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The body is read from the request stream as raw bytes and delivered as a UTF-8 string.
|
|
75
|
+
|
|
76
|
+
Body parsing is bypassed, so the route does not depend on a supported `Content-Type` or format decoding. The request stream is consumed; a route with `map:buffer` cannot also receive a parsed body from the same request.
|
|
77
|
+
|
|
78
|
+
## Route parameters
|
|
79
|
+
|
|
80
|
+
The `map:segments` directive maps the values of route parameters to operation call input properties.
|
|
81
|
+
The value of the directive is a map where keys are the names of the input properties, and values are
|
|
82
|
+
the names of the route parameters.
|
|
83
|
+
|
|
84
|
+
Parameter name may be prefixed with `~`
|
|
85
|
+
to indicate that the parameter should not be available to the
|
|
86
|
+
remaining directives or used as criteria in the operation call.
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
/:id/:tag:
|
|
90
|
+
POST:
|
|
91
|
+
map:segments:
|
|
92
|
+
id: id
|
|
93
|
+
tag: ~tag
|
|
94
|
+
endpoint: create
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Wildcard routes are supported by using `**` as the parameter name.
|
|
98
|
+
|
|
99
|
+
```yaml
|
|
100
|
+
/path/to/**:
|
|
101
|
+
GET:
|
|
102
|
+
map:segments:
|
|
103
|
+
path: '**'
|
|
104
|
+
endpoint: observe
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Bearer token claims
|
|
108
|
+
|
|
109
|
+
The `map:claims` directive maps the values of
|
|
110
|
+
the [token claims](https://datatracker.ietf.org/doc/html/rfc7519#section-4).
|
|
111
|
+
The value of the directive is a map where keys are the names of the input properties and values are
|
|
112
|
+
the names of the claims.
|
|
113
|
+
|
|
114
|
+
If the claim is not present in the token or the request is not authenticated using
|
|
115
|
+
the [`Bearer` scheme](identity.md#bearer-scheme), the input properties are not set.
|
|
Binary file
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Distributed Peer Discovery
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
Modulo partitioning algorithm `taks.id % replicas == index` requires
|
|
6
|
+
to know the number of task processing instances running in the cluster,
|
|
7
|
+
and the own index of the current instance.
|
|
8
|
+
|
|
9
|
+
## Forces
|
|
10
|
+
|
|
11
|
+
1. Static configuration is not an option (due to dynamic scaling / failover).
|
|
12
|
+
2. In a distributed system, there is no concept of a *global current time*.
|
|
13
|
+
|
|
14
|
+
## Solution
|
|
15
|
+
|
|
16
|
+
An algorithm that emits `(index, replicas)` once per `interval` seconds, using common Redis
|
|
17
|
+
key and atomic increment.
|
|
18
|
+
|
|
19
|
+
Define the following parameters:
|
|
20
|
+
|
|
21
|
+
- `name`: a name of the task processing (e.g. `mail-sender`)
|
|
22
|
+
- `interval`: indexing interval that is deliberately greater than the expected clock skew among
|
|
23
|
+
instances
|
|
24
|
+
|
|
25
|
+
At the start of each `interval` in [Unix epoch](https://en.wikipedia.org/wiki/Unix_time):
|
|
26
|
+
|
|
27
|
+
1. Calculate an ordinal number of the current interval: `number = ceil(now() / interval)`
|
|
28
|
+
2. Compose a `key` as `{name}:{number}`
|
|
29
|
+
3. Atomically increment a `key` in Redis ([INCR](https://redis.io/docs/latest/commands/incr/))
|
|
30
|
+
4. If `index` is defined (see 5)
|
|
31
|
+
|
|
32
|
+
- get the value of previous key `{name}:{number-1}` as `replicas`
|
|
33
|
+
- if the `replicas` is defined, emit `(index, replicas)` **algorithm result**
|
|
34
|
+
|
|
35
|
+
5. Store the response (3) in `index`.
|
|
36
|
+
|
|
37
|
+
## Safe index transition
|
|
38
|
+
|
|
39
|
+
If the `index` or `replicas` changes, the algorithm consumer must stop consuming new tasks
|
|
40
|
+
and execute _safe index transition_, to prevent task duplication or loss.
|
|
41
|
+
|
|
42
|
+
The transition can be implemented in a manner similar to the described algorithm, using a dedicated
|
|
43
|
+
`{name}:transition` key.
|
|
44
|
+
However, this process is considered outside the scope of this document.
|
|
45
|
+
|
|
46
|
+
## Extension
|
|
47
|
+
|
|
48
|
+
If the system clocks are too precisely synchronized (skew is less than a round-trip time to Redis),
|
|
49
|
+
this may result in continuous [index transitions](#safe-index-transition).
|
|
50
|
+
|
|
51
|
+
To mitigate this, the algorithm can be extended with a random delay:
|
|
52
|
+
|
|
53
|
+
1. Before starting the algorithm, define a random constant clock skew, significantly smaller than
|
|
54
|
+
`interval`: `skew = random() * (interval / 2)`
|
|
55
|
+
2. Start the algorithm at each `interval + skew`.
|
|
56
|
+
|
|
57
|
+
## Caveats
|
|
58
|
+
|
|
59
|
+
- The first result will become known between `interval` and `interval × 2` seconds.
|