@zshannon/streamstore 0.22.3
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/LICENSE +21 -0
- package/README.md +93 -0
- package/dist/cjs/accessTokens.d.ts +51 -0
- package/dist/cjs/accessTokens.d.ts.map +1 -0
- package/dist/cjs/accessTokens.js +127 -0
- package/dist/cjs/accessTokens.js.map +1 -0
- package/dist/cjs/auth/biscuit.d.ts +42 -0
- package/dist/cjs/auth/biscuit.d.ts.map +1 -0
- package/dist/cjs/auth/biscuit.js +72 -0
- package/dist/cjs/auth/biscuit.js.map +1 -0
- package/dist/cjs/auth/index.d.ts +5 -0
- package/dist/cjs/auth/index.d.ts.map +1 -0
- package/dist/cjs/auth/index.js +14 -0
- package/dist/cjs/auth/index.js.map +1 -0
- package/dist/cjs/auth/pki-auth.d.ts +60 -0
- package/dist/cjs/auth/pki-auth.d.ts.map +1 -0
- package/dist/cjs/auth/pki-auth.js +102 -0
- package/dist/cjs/auth/pki-auth.js.map +1 -0
- package/dist/cjs/auth/sign.d.ts +39 -0
- package/dist/cjs/auth/sign.d.ts.map +1 -0
- package/dist/cjs/auth/sign.js +128 -0
- package/dist/cjs/auth/sign.js.map +1 -0
- package/dist/cjs/auth/signing-key.d.ts +42 -0
- package/dist/cjs/auth/signing-key.d.ts.map +1 -0
- package/dist/cjs/auth/signing-key.js +66 -0
- package/dist/cjs/auth/signing-key.js.map +1 -0
- package/dist/cjs/basin.d.ts +33 -0
- package/dist/cjs/basin.d.ts.map +1 -0
- package/dist/cjs/basin.js +54 -0
- package/dist/cjs/basin.js.map +1 -0
- package/dist/cjs/basins.d.ts +62 -0
- package/dist/cjs/basins.d.ts.map +1 -0
- package/dist/cjs/basins.js +201 -0
- package/dist/cjs/basins.js.map +1 -0
- package/dist/cjs/batch-transform.d.ts +60 -0
- package/dist/cjs/batch-transform.d.ts.map +1 -0
- package/dist/cjs/batch-transform.js +171 -0
- package/dist/cjs/batch-transform.js.map +1 -0
- package/dist/cjs/common.d.ts +156 -0
- package/dist/cjs/common.d.ts.map +1 -0
- package/dist/cjs/common.js +54 -0
- package/dist/cjs/common.js.map +1 -0
- package/dist/cjs/endpoints.d.ts +63 -0
- package/dist/cjs/endpoints.d.ts.map +1 -0
- package/dist/cjs/endpoints.js +120 -0
- package/dist/cjs/endpoints.js.map +1 -0
- package/dist/cjs/error.d.ts +119 -0
- package/dist/cjs/error.d.ts.map +1 -0
- package/dist/cjs/error.js +373 -0
- package/dist/cjs/error.js.map +1 -0
- package/dist/cjs/generated/client/client.gen.d.ts +3 -0
- package/dist/cjs/generated/client/client.gen.d.ts.map +1 -0
- package/dist/cjs/generated/client/client.gen.js +209 -0
- package/dist/cjs/generated/client/client.gen.js.map +1 -0
- package/dist/cjs/generated/client/index.d.ts +9 -0
- package/dist/cjs/generated/client/index.d.ts.map +1 -0
- package/dist/cjs/generated/client/index.js +18 -0
- package/dist/cjs/generated/client/index.js.map +1 -0
- package/dist/cjs/generated/client/types.gen.d.ts +125 -0
- package/dist/cjs/generated/client/types.gen.d.ts.map +1 -0
- package/dist/cjs/generated/client/types.gen.js +4 -0
- package/dist/cjs/generated/client/types.gen.js.map +1 -0
- package/dist/cjs/generated/client/utils.gen.d.ts +34 -0
- package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -0
- package/dist/cjs/generated/client/utils.gen.js +243 -0
- package/dist/cjs/generated/client/utils.gen.js.map +1 -0
- package/dist/cjs/generated/client.gen.d.ts +13 -0
- package/dist/cjs/generated/client.gen.d.ts.map +1 -0
- package/dist/cjs/generated/client.gen.js +9 -0
- package/dist/cjs/generated/client.gen.js.map +1 -0
- package/dist/cjs/generated/core/auth.gen.d.ts +19 -0
- package/dist/cjs/generated/core/auth.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/auth.gen.js +19 -0
- package/dist/cjs/generated/core/auth.gen.js.map +1 -0
- package/dist/cjs/generated/core/bodySerializer.gen.d.ts +26 -0
- package/dist/cjs/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/bodySerializer.gen.js +61 -0
- package/dist/cjs/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/cjs/generated/core/params.gen.d.ts +44 -0
- package/dist/cjs/generated/core/params.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/params.gen.js +105 -0
- package/dist/cjs/generated/core/params.gen.js.map +1 -0
- package/dist/cjs/generated/core/pathSerializer.gen.d.ts +34 -0
- package/dist/cjs/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/pathSerializer.gen.js +124 -0
- package/dist/cjs/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/cjs/generated/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/cjs/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/queryKeySerializer.gen.js +106 -0
- package/dist/cjs/generated/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/cjs/generated/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/cjs/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/serverSentEvents.gen.js +140 -0
- package/dist/cjs/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/cjs/generated/core/types.gen.d.ts +79 -0
- package/dist/cjs/generated/core/types.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/types.gen.js +4 -0
- package/dist/cjs/generated/core/types.gen.js.map +1 -0
- package/dist/cjs/generated/core/utils.gen.d.ts +20 -0
- package/dist/cjs/generated/core/utils.gen.d.ts.map +1 -0
- package/dist/cjs/generated/core/utils.gen.js +94 -0
- package/dist/cjs/generated/core/utils.gen.js.map +1 -0
- package/dist/cjs/generated/index.d.ts +3 -0
- package/dist/cjs/generated/index.d.ts.map +1 -0
- package/dist/cjs/generated/index.js +19 -0
- package/dist/cjs/generated/index.js.map +1 -0
- package/dist/cjs/generated/proto/s2.d.ts +250 -0
- package/dist/cjs/generated/proto/s2.d.ts.map +1 -0
- package/dist/cjs/generated/proto/s2.js +426 -0
- package/dist/cjs/generated/proto/s2.js.map +1 -0
- package/dist/cjs/generated/sdk.gen.d.ts +100 -0
- package/dist/cjs/generated/sdk.gen.d.ts.map +1 -0
- package/dist/cjs/generated/sdk.gen.js +374 -0
- package/dist/cjs/generated/sdk.gen.js.map +1 -0
- package/dist/cjs/generated/types.gen.d.ts +1064 -0
- package/dist/cjs/generated/types.gen.d.ts.map +1 -0
- package/dist/cjs/generated/types.gen.js +4 -0
- package/dist/cjs/generated/types.gen.js.map +1 -0
- package/dist/cjs/index.d.ts +42 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +81 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/case-transform.d.ts +59 -0
- package/dist/cjs/internal/case-transform.d.ts.map +1 -0
- package/dist/cjs/internal/case-transform.js +80 -0
- package/dist/cjs/internal/case-transform.js.map +1 -0
- package/dist/cjs/internal/mappers.d.ts +51 -0
- package/dist/cjs/internal/mappers.d.ts.map +1 -0
- package/dist/cjs/internal/mappers.js +225 -0
- package/dist/cjs/internal/mappers.js.map +1 -0
- package/dist/cjs/internal/sdk-types.d.ts +127 -0
- package/dist/cjs/internal/sdk-types.d.ts.map +1 -0
- package/dist/cjs/internal/sdk-types.js +9 -0
- package/dist/cjs/internal/sdk-types.js.map +1 -0
- package/dist/cjs/lib/base64.d.ts +12 -0
- package/dist/cjs/lib/base64.d.ts.map +1 -0
- package/dist/cjs/lib/base64.js +172 -0
- package/dist/cjs/lib/base64.js.map +1 -0
- package/dist/cjs/lib/event-stream.d.ts +26 -0
- package/dist/cjs/lib/event-stream.d.ts.map +1 -0
- package/dist/cjs/lib/event-stream.js +154 -0
- package/dist/cjs/lib/event-stream.js.map +1 -0
- package/dist/cjs/lib/paginate.d.ts +61 -0
- package/dist/cjs/lib/paginate.d.ts.map +1 -0
- package/dist/cjs/lib/paginate.js +51 -0
- package/dist/cjs/lib/paginate.js.map +1 -0
- package/dist/cjs/lib/redacted.d.ts +17 -0
- package/dist/cjs/lib/redacted.d.ts.map +1 -0
- package/dist/cjs/lib/redacted.js +34 -0
- package/dist/cjs/lib/redacted.js.map +1 -0
- package/dist/cjs/lib/result.d.ts +57 -0
- package/dist/cjs/lib/result.d.ts.map +1 -0
- package/dist/cjs/lib/result.js +43 -0
- package/dist/cjs/lib/result.js.map +1 -0
- package/dist/cjs/lib/retry.d.ts +167 -0
- package/dist/cjs/lib/retry.d.ts.map +1 -0
- package/dist/cjs/lib/retry.js +1011 -0
- package/dist/cjs/lib/retry.js.map +1 -0
- package/dist/cjs/lib/stream/factory.d.ts +14 -0
- package/dist/cjs/lib/stream/factory.d.ts.map +1 -0
- package/dist/cjs/lib/stream/factory.js +35 -0
- package/dist/cjs/lib/stream/factory.js.map +1 -0
- package/dist/cjs/lib/stream/runtime.d.ts +27 -0
- package/dist/cjs/lib/stream/runtime.d.ts.map +1 -0
- package/dist/cjs/lib/stream/runtime.js +70 -0
- package/dist/cjs/lib/stream/runtime.js.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts +64 -0
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/index.js +462 -0
- package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +11 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.js +118 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -0
- package/dist/cjs/lib/stream/transport/proto.d.ts +9 -0
- package/dist/cjs/lib/stream/transport/proto.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/proto.js +118 -0
- package/dist/cjs/lib/stream/transport/proto.js.map +1 -0
- package/dist/cjs/lib/stream/transport/s2s/framing.d.ts +47 -0
- package/dist/cjs/lib/stream/transport/s2s/framing.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/s2s/framing.js +123 -0
- package/dist/cjs/lib/stream/transport/s2s/framing.js.map +1 -0
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts +24 -0
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/s2s/index.js +823 -0
- package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -0
- package/dist/cjs/lib/stream/types.d.ts +199 -0
- package/dist/cjs/lib/stream/types.d.ts.map +1 -0
- package/dist/cjs/lib/stream/types.js +21 -0
- package/dist/cjs/lib/stream/types.js.map +1 -0
- package/dist/cjs/metrics.d.ts +46 -0
- package/dist/cjs/metrics.d.ts.map +1 -0
- package/dist/cjs/metrics.js +127 -0
- package/dist/cjs/metrics.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/producer.d.ts +82 -0
- package/dist/cjs/producer.d.ts.map +1 -0
- package/dist/cjs/producer.js +305 -0
- package/dist/cjs/producer.js.map +1 -0
- package/dist/cjs/s2.d.ts +41 -0
- package/dist/cjs/s2.d.ts.map +1 -0
- package/dist/cjs/s2.js +119 -0
- package/dist/cjs/s2.js.map +1 -0
- package/dist/cjs/stream.d.ts +78 -0
- package/dist/cjs/stream.d.ts.map +1 -0
- package/dist/cjs/stream.js +176 -0
- package/dist/cjs/stream.js.map +1 -0
- package/dist/cjs/streams.d.ts +61 -0
- package/dist/cjs/streams.d.ts.map +1 -0
- package/dist/cjs/streams.js +201 -0
- package/dist/cjs/streams.js.map +1 -0
- package/dist/cjs/types.d.ts +633 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +129 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +25 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +108 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/version.d.ts +8 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +11 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/accessTokens.d.ts +51 -0
- package/dist/esm/accessTokens.d.ts.map +1 -0
- package/dist/esm/accessTokens.js +123 -0
- package/dist/esm/accessTokens.js.map +1 -0
- package/dist/esm/auth/biscuit.d.ts +42 -0
- package/dist/esm/auth/biscuit.d.ts.map +1 -0
- package/dist/esm/auth/biscuit.js +68 -0
- package/dist/esm/auth/biscuit.js.map +1 -0
- package/dist/esm/auth/index.d.ts +5 -0
- package/dist/esm/auth/index.d.ts.map +1 -0
- package/dist/esm/auth/index.js +5 -0
- package/dist/esm/auth/index.js.map +1 -0
- package/dist/esm/auth/pki-auth.d.ts +60 -0
- package/dist/esm/auth/pki-auth.d.ts.map +1 -0
- package/dist/esm/auth/pki-auth.js +99 -0
- package/dist/esm/auth/pki-auth.js.map +1 -0
- package/dist/esm/auth/sign.d.ts +39 -0
- package/dist/esm/auth/sign.d.ts.map +1 -0
- package/dist/esm/auth/sign.js +125 -0
- package/dist/esm/auth/sign.js.map +1 -0
- package/dist/esm/auth/signing-key.d.ts +42 -0
- package/dist/esm/auth/signing-key.d.ts.map +1 -0
- package/dist/esm/auth/signing-key.js +62 -0
- package/dist/esm/auth/signing-key.js.map +1 -0
- package/dist/esm/basin.d.ts +33 -0
- package/dist/esm/basin.d.ts.map +1 -0
- package/dist/esm/basin.js +50 -0
- package/dist/esm/basin.js.map +1 -0
- package/dist/esm/basins.d.ts +62 -0
- package/dist/esm/basins.d.ts.map +1 -0
- package/dist/esm/basins.js +197 -0
- package/dist/esm/basins.js.map +1 -0
- package/dist/esm/batch-transform.d.ts +60 -0
- package/dist/esm/batch-transform.d.ts.map +1 -0
- package/dist/esm/batch-transform.js +167 -0
- package/dist/esm/batch-transform.js.map +1 -0
- package/dist/esm/common.d.ts +156 -0
- package/dist/esm/common.d.ts.map +1 -0
- package/dist/esm/common.js +49 -0
- package/dist/esm/common.js.map +1 -0
- package/dist/esm/endpoints.d.ts +63 -0
- package/dist/esm/endpoints.d.ts.map +1 -0
- package/dist/esm/endpoints.js +115 -0
- package/dist/esm/endpoints.js.map +1 -0
- package/dist/esm/error.d.ts +119 -0
- package/dist/esm/error.d.ts.map +1 -0
- package/dist/esm/error.js +358 -0
- package/dist/esm/error.js.map +1 -0
- package/dist/esm/generated/client/client.gen.d.ts +3 -0
- package/dist/esm/generated/client/client.gen.d.ts.map +1 -0
- package/dist/esm/generated/client/client.gen.js +205 -0
- package/dist/esm/generated/client/client.gen.js.map +1 -0
- package/dist/esm/generated/client/index.d.ts +9 -0
- package/dist/esm/generated/client/index.d.ts.map +1 -0
- package/dist/esm/generated/client/index.js +7 -0
- package/dist/esm/generated/client/index.js.map +1 -0
- package/dist/esm/generated/client/types.gen.d.ts +125 -0
- package/dist/esm/generated/client/types.gen.d.ts.map +1 -0
- package/dist/esm/generated/client/types.gen.js +3 -0
- package/dist/esm/generated/client/types.gen.js.map +1 -0
- package/dist/esm/generated/client/utils.gen.d.ts +34 -0
- package/dist/esm/generated/client/utils.gen.d.ts.map +1 -0
- package/dist/esm/generated/client/utils.gen.js +232 -0
- package/dist/esm/generated/client/utils.gen.js.map +1 -0
- package/dist/esm/generated/client.gen.d.ts +13 -0
- package/dist/esm/generated/client.gen.d.ts.map +1 -0
- package/dist/esm/generated/client.gen.js +6 -0
- package/dist/esm/generated/client.gen.js.map +1 -0
- package/dist/esm/generated/core/auth.gen.d.ts +19 -0
- package/dist/esm/generated/core/auth.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/auth.gen.js +15 -0
- package/dist/esm/generated/core/auth.gen.js.map +1 -0
- package/dist/esm/generated/core/bodySerializer.gen.d.ts +26 -0
- package/dist/esm/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/bodySerializer.gen.js +58 -0
- package/dist/esm/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/esm/generated/core/params.gen.d.ts +44 -0
- package/dist/esm/generated/core/params.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/params.gen.js +101 -0
- package/dist/esm/generated/core/params.gen.js.map +1 -0
- package/dist/esm/generated/core/pathSerializer.gen.d.ts +34 -0
- package/dist/esm/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/pathSerializer.gen.js +115 -0
- package/dist/esm/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/esm/generated/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/esm/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/queryKeySerializer.gen.js +100 -0
- package/dist/esm/generated/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/esm/generated/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/esm/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/serverSentEvents.gen.js +136 -0
- package/dist/esm/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/esm/generated/core/types.gen.d.ts +79 -0
- package/dist/esm/generated/core/types.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/types.gen.js +3 -0
- package/dist/esm/generated/core/types.gen.js.map +1 -0
- package/dist/esm/generated/core/utils.gen.d.ts +20 -0
- package/dist/esm/generated/core/utils.gen.d.ts.map +1 -0
- package/dist/esm/generated/core/utils.gen.js +88 -0
- package/dist/esm/generated/core/utils.gen.js.map +1 -0
- package/dist/esm/generated/index.d.ts +3 -0
- package/dist/esm/generated/index.d.ts.map +1 -0
- package/dist/esm/generated/index.js +3 -0
- package/dist/esm/generated/index.js.map +1 -0
- package/dist/esm/generated/proto/s2.d.ts +250 -0
- package/dist/esm/generated/proto/s2.d.ts.map +1 -0
- package/dist/esm/generated/proto/s2.js +423 -0
- package/dist/esm/generated/proto/s2.js.map +1 -0
- package/dist/esm/generated/sdk.gen.d.ts +100 -0
- package/dist/esm/generated/sdk.gen.d.ts.map +1 -0
- package/dist/esm/generated/sdk.gen.js +350 -0
- package/dist/esm/generated/sdk.gen.js.map +1 -0
- package/dist/esm/generated/types.gen.d.ts +1064 -0
- package/dist/esm/generated/types.gen.d.ts.map +1 -0
- package/dist/esm/generated/types.gen.js +3 -0
- package/dist/esm/generated/types.gen.js.map +1 -0
- package/dist/esm/index.d.ts +42 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +47 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/case-transform.d.ts +59 -0
- package/dist/esm/internal/case-transform.d.ts.map +1 -0
- package/dist/esm/internal/case-transform.js +76 -0
- package/dist/esm/internal/case-transform.js.map +1 -0
- package/dist/esm/internal/mappers.d.ts +51 -0
- package/dist/esm/internal/mappers.d.ts.map +1 -0
- package/dist/esm/internal/mappers.js +218 -0
- package/dist/esm/internal/mappers.js.map +1 -0
- package/dist/esm/internal/sdk-types.d.ts +127 -0
- package/dist/esm/internal/sdk-types.d.ts.map +1 -0
- package/dist/esm/internal/sdk-types.js +8 -0
- package/dist/esm/internal/sdk-types.js.map +1 -0
- package/dist/esm/lib/base64.d.ts +12 -0
- package/dist/esm/lib/base64.d.ts.map +1 -0
- package/dist/esm/lib/base64.js +165 -0
- package/dist/esm/lib/base64.js.map +1 -0
- package/dist/esm/lib/event-stream.d.ts +26 -0
- package/dist/esm/lib/event-stream.d.ts.map +1 -0
- package/dist/esm/lib/event-stream.js +150 -0
- package/dist/esm/lib/event-stream.js.map +1 -0
- package/dist/esm/lib/paginate.d.ts +61 -0
- package/dist/esm/lib/paginate.d.ts.map +1 -0
- package/dist/esm/lib/paginate.js +48 -0
- package/dist/esm/lib/paginate.js.map +1 -0
- package/dist/esm/lib/redacted.d.ts +17 -0
- package/dist/esm/lib/redacted.d.ts.map +1 -0
- package/dist/esm/lib/redacted.js +28 -0
- package/dist/esm/lib/redacted.js.map +1 -0
- package/dist/esm/lib/result.d.ts +57 -0
- package/dist/esm/lib/result.d.ts.map +1 -0
- package/dist/esm/lib/result.js +37 -0
- package/dist/esm/lib/result.js.map +1 -0
- package/dist/esm/lib/retry.d.ts +167 -0
- package/dist/esm/lib/retry.d.ts.map +1 -0
- package/dist/esm/lib/retry.js +1003 -0
- package/dist/esm/lib/retry.js.map +1 -0
- package/dist/esm/lib/stream/factory.d.ts +14 -0
- package/dist/esm/lib/stream/factory.d.ts.map +1 -0
- package/dist/esm/lib/stream/factory.js +32 -0
- package/dist/esm/lib/stream/factory.js.map +1 -0
- package/dist/esm/lib/stream/runtime.d.ts +27 -0
- package/dist/esm/lib/stream/runtime.d.ts.map +1 -0
- package/dist/esm/lib/stream/runtime.js +71 -0
- package/dist/esm/lib/stream/runtime.js.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/index.d.ts +64 -0
- package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/index.js +456 -0
- package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts +11 -0
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/shared.js +114 -0
- package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -0
- package/dist/esm/lib/stream/transport/proto.d.ts +9 -0
- package/dist/esm/lib/stream/transport/proto.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/proto.js +110 -0
- package/dist/esm/lib/stream/transport/proto.js.map +1 -0
- package/dist/esm/lib/stream/transport/s2s/framing.d.ts +47 -0
- package/dist/esm/lib/stream/transport/s2s/framing.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/s2s/framing.js +118 -0
- package/dist/esm/lib/stream/transport/s2s/framing.js.map +1 -0
- package/dist/esm/lib/stream/transport/s2s/index.d.ts +24 -0
- package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/s2s/index.js +819 -0
- package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -0
- package/dist/esm/lib/stream/types.d.ts +199 -0
- package/dist/esm/lib/stream/types.d.ts.map +1 -0
- package/dist/esm/lib/stream/types.js +18 -0
- package/dist/esm/lib/stream/types.js.map +1 -0
- package/dist/esm/metrics.d.ts +46 -0
- package/dist/esm/metrics.d.ts.map +1 -0
- package/dist/esm/metrics.js +122 -0
- package/dist/esm/metrics.js.map +1 -0
- package/dist/esm/producer.d.ts +82 -0
- package/dist/esm/producer.d.ts.map +1 -0
- package/dist/esm/producer.js +300 -0
- package/dist/esm/producer.js.map +1 -0
- package/dist/esm/s2.d.ts +41 -0
- package/dist/esm/s2.d.ts.map +1 -0
- package/dist/esm/s2.js +115 -0
- package/dist/esm/s2.js.map +1 -0
- package/dist/esm/stream.d.ts +78 -0
- package/dist/esm/stream.d.ts.map +1 -0
- package/dist/esm/stream.js +172 -0
- package/dist/esm/stream.js.map +1 -0
- package/dist/esm/streams.d.ts +61 -0
- package/dist/esm/streams.d.ts.map +1 -0
- package/dist/esm/streams.js +197 -0
- package/dist/esm/streams.js.map +1 -0
- package/dist/esm/types.d.ts +633 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +126 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +25 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +103 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/version.d.ts +8 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +8 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basins.js","sourceRoot":"","sources":["../../src/basins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { AppendInput, type AppendRecord } from "./types.js";
|
|
2
|
+
export interface BatchTransformOptions {
|
|
3
|
+
/** Duration in milliseconds to wait before flushing a batch (default: 5ms) */
|
|
4
|
+
lingerDurationMillis?: number;
|
|
5
|
+
/** Maximum number of records in a batch (default: 1000, max: 1000) */
|
|
6
|
+
maxBatchRecords?: number;
|
|
7
|
+
/** Maximum batch size in metered bytes (default: 1 MiB, max: 1 MiB) */
|
|
8
|
+
maxBatchBytes?: number;
|
|
9
|
+
/** Optional fencing token to enforce (remains static across batches) */
|
|
10
|
+
fencingToken?: string;
|
|
11
|
+
/** Optional sequence number to match for first batch (auto-increments for subsequent batches) */
|
|
12
|
+
matchSeqNum?: number;
|
|
13
|
+
}
|
|
14
|
+
/** Batch output type with optional fencing token and matchSeqNum */
|
|
15
|
+
export type BatchOutput = AppendInput;
|
|
16
|
+
/**
|
|
17
|
+
* A TransformStream that batches AppendRecords based on time, record count, and byte size.
|
|
18
|
+
*
|
|
19
|
+
* Input: AppendRecord (individual records)
|
|
20
|
+
* Output: { records: AppendRecord[], fencingToken?: string, matchSeqNum?: number }
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const batcher = new BatchTransform<"string">({
|
|
25
|
+
* lingerDurationMillis: 20,
|
|
26
|
+
* maxBatchRecords: 100,
|
|
27
|
+
* maxBatchBytes: 256 * 1024,
|
|
28
|
+
* matchSeqNum: 0 // Optional: auto-increments per batch
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Pipe through the batcher and session to get acks
|
|
32
|
+
* readable.pipeThrough(batcher).pipeThrough(session).pipeTo(writable);
|
|
33
|
+
*
|
|
34
|
+
* // Or use manually
|
|
35
|
+
* const writer = batcher.writable.getWriter();
|
|
36
|
+
* writer.write(AppendRecord.string({ body: "foo" }));
|
|
37
|
+
* await writer.close();
|
|
38
|
+
*
|
|
39
|
+
* for await (const batch of batcher.readable) {
|
|
40
|
+
* console.log(`Got batch of ${batch.records.length} records`);
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare class BatchTransform extends TransformStream<AppendRecord, BatchOutput> {
|
|
45
|
+
private currentBatch;
|
|
46
|
+
private currentBatchSize;
|
|
47
|
+
private lingerTimer;
|
|
48
|
+
private controller;
|
|
49
|
+
private readonly maxBatchRecords;
|
|
50
|
+
private readonly maxBatchBytes;
|
|
51
|
+
private readonly lingerDuration;
|
|
52
|
+
private readonly fencingToken?;
|
|
53
|
+
private nextMatchSeqNum?;
|
|
54
|
+
constructor(args?: BatchTransformOptions);
|
|
55
|
+
private handleRecord;
|
|
56
|
+
private flush;
|
|
57
|
+
private startLingerTimer;
|
|
58
|
+
private cancelLingerTimer;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=batch-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-transform.d.ts","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,qBAAqB;IACrC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAe,SAAQ,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7E,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,UAAU,CACZ;IACN,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,eAAe,CAAC,CAAS;gBAErB,IAAI,CAAC,EAAE,qBAAqB;IAyDxC,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,KAAK;IA2Bb,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAMzB"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BatchTransform = void 0;
|
|
4
|
+
const error_js_1 = require("./error.js");
|
|
5
|
+
const types_js_1 = require("./types.js");
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
/**
|
|
8
|
+
* A TransformStream that batches AppendRecords based on time, record count, and byte size.
|
|
9
|
+
*
|
|
10
|
+
* Input: AppendRecord (individual records)
|
|
11
|
+
* Output: { records: AppendRecord[], fencingToken?: string, matchSeqNum?: number }
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const batcher = new BatchTransform<"string">({
|
|
16
|
+
* lingerDurationMillis: 20,
|
|
17
|
+
* maxBatchRecords: 100,
|
|
18
|
+
* maxBatchBytes: 256 * 1024,
|
|
19
|
+
* matchSeqNum: 0 // Optional: auto-increments per batch
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // Pipe through the batcher and session to get acks
|
|
23
|
+
* readable.pipeThrough(batcher).pipeThrough(session).pipeTo(writable);
|
|
24
|
+
*
|
|
25
|
+
* // Or use manually
|
|
26
|
+
* const writer = batcher.writable.getWriter();
|
|
27
|
+
* writer.write(AppendRecord.string({ body: "foo" }));
|
|
28
|
+
* await writer.close();
|
|
29
|
+
*
|
|
30
|
+
* for await (const batch of batcher.readable) {
|
|
31
|
+
* console.log(`Got batch of ${batch.records.length} records`);
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
class BatchTransform extends TransformStream {
|
|
36
|
+
currentBatch = [];
|
|
37
|
+
currentBatchSize = 0;
|
|
38
|
+
lingerTimer = null;
|
|
39
|
+
controller = null;
|
|
40
|
+
maxBatchRecords;
|
|
41
|
+
maxBatchBytes;
|
|
42
|
+
lingerDuration;
|
|
43
|
+
fencingToken;
|
|
44
|
+
nextMatchSeqNum;
|
|
45
|
+
constructor(args) {
|
|
46
|
+
let controller;
|
|
47
|
+
super({
|
|
48
|
+
start: (c) => {
|
|
49
|
+
controller = c;
|
|
50
|
+
},
|
|
51
|
+
transform: (chunk, c) => {
|
|
52
|
+
// Store controller reference on first transform
|
|
53
|
+
if (!this.controller) {
|
|
54
|
+
this.controller = c;
|
|
55
|
+
}
|
|
56
|
+
this.handleRecord(chunk);
|
|
57
|
+
},
|
|
58
|
+
flush: () => {
|
|
59
|
+
this.flush();
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
// Validate configuration
|
|
63
|
+
if (args?.maxBatchRecords !== undefined) {
|
|
64
|
+
if (args.maxBatchRecords < 1 || args.maxBatchRecords > 1000) {
|
|
65
|
+
throw new error_js_1.S2Error({
|
|
66
|
+
message: `maxBatchRecords must be between 1 and 1000 (inclusive); got ${args.maxBatchRecords}`,
|
|
67
|
+
status: 400,
|
|
68
|
+
origin: "sdk",
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (args?.maxBatchBytes !== undefined) {
|
|
73
|
+
const max = 1024 * 1024;
|
|
74
|
+
if (args.maxBatchBytes < 1 || args.maxBatchBytes > max) {
|
|
75
|
+
throw new error_js_1.S2Error({
|
|
76
|
+
message: `maxBatchBytes must be between 1 and ${max} (1 MiB) bytes (inclusive); got ${args.maxBatchBytes}`,
|
|
77
|
+
status: 400,
|
|
78
|
+
origin: "sdk",
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (args?.lingerDurationMillis !== undefined) {
|
|
83
|
+
if (args.lingerDurationMillis < 0) {
|
|
84
|
+
throw new error_js_1.S2Error({
|
|
85
|
+
message: `lingerDurationMillis must be >= 0; got ${args.lingerDurationMillis}`,
|
|
86
|
+
status: 400,
|
|
87
|
+
origin: "sdk",
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Apply defaults
|
|
92
|
+
this.maxBatchRecords = args?.maxBatchRecords ?? 1000;
|
|
93
|
+
this.maxBatchBytes = args?.maxBatchBytes ?? 1024 * 1024;
|
|
94
|
+
this.lingerDuration = args?.lingerDurationMillis ?? 5;
|
|
95
|
+
this.fencingToken = args?.fencingToken;
|
|
96
|
+
this.nextMatchSeqNum = args?.matchSeqNum;
|
|
97
|
+
}
|
|
98
|
+
handleRecord(record) {
|
|
99
|
+
const recordSize = (0, utils_js_1.meteredBytes)(record);
|
|
100
|
+
// Reject individual records that exceed the max batch size
|
|
101
|
+
if (recordSize > this.maxBatchBytes) {
|
|
102
|
+
throw new error_js_1.S2Error({
|
|
103
|
+
message: `Record size ${recordSize} bytes exceeds maximum batch size of ${this.maxBatchBytes} bytes`,
|
|
104
|
+
status: 400,
|
|
105
|
+
origin: "sdk",
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Start linger timer on first record added to an empty batch
|
|
109
|
+
if (this.currentBatch.length === 0 && this.lingerDuration > 0) {
|
|
110
|
+
this.startLingerTimer();
|
|
111
|
+
}
|
|
112
|
+
// Check if adding this record would exceed limits
|
|
113
|
+
const wouldExceedRecords = this.currentBatch.length + 1 > this.maxBatchRecords;
|
|
114
|
+
const wouldExceedBytes = this.currentBatchSize + recordSize > this.maxBatchBytes;
|
|
115
|
+
if (wouldExceedRecords || wouldExceedBytes) {
|
|
116
|
+
this.flush();
|
|
117
|
+
// Restart linger timer for new batch
|
|
118
|
+
if (this.lingerDuration > 0) {
|
|
119
|
+
this.startLingerTimer();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Add record to current batch
|
|
123
|
+
this.currentBatch.push(record);
|
|
124
|
+
this.currentBatchSize += recordSize;
|
|
125
|
+
// Check if we've now reached the limits
|
|
126
|
+
const nowExceedsRecords = this.currentBatch.length >= this.maxBatchRecords;
|
|
127
|
+
const nowExceedsBytes = this.currentBatchSize >= this.maxBatchBytes;
|
|
128
|
+
if (nowExceedsRecords || nowExceedsBytes) {
|
|
129
|
+
this.flush();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
flush() {
|
|
133
|
+
this.cancelLingerTimer();
|
|
134
|
+
if (this.currentBatch.length === 0) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// Auto-increment matchSeqNum for next batch
|
|
138
|
+
const matchSeqNum = this.nextMatchSeqNum;
|
|
139
|
+
if (this.nextMatchSeqNum !== undefined) {
|
|
140
|
+
this.nextMatchSeqNum += this.currentBatch.length;
|
|
141
|
+
}
|
|
142
|
+
// Emit the batch downstream with optional fencing token and matchSeqNum
|
|
143
|
+
if (this.controller) {
|
|
144
|
+
const batch = types_js_1.AppendInput.create([...this.currentBatch], {
|
|
145
|
+
fencingToken: this.fencingToken,
|
|
146
|
+
matchSeqNum,
|
|
147
|
+
});
|
|
148
|
+
this.controller.enqueue(batch);
|
|
149
|
+
}
|
|
150
|
+
// Reset batch
|
|
151
|
+
this.currentBatch = [];
|
|
152
|
+
this.currentBatchSize = 0;
|
|
153
|
+
}
|
|
154
|
+
startLingerTimer() {
|
|
155
|
+
this.cancelLingerTimer();
|
|
156
|
+
this.lingerTimer = setTimeout(() => {
|
|
157
|
+
this.lingerTimer = null;
|
|
158
|
+
if (this.currentBatch.length > 0) {
|
|
159
|
+
this.flush();
|
|
160
|
+
}
|
|
161
|
+
}, this.lingerDuration);
|
|
162
|
+
}
|
|
163
|
+
cancelLingerTimer() {
|
|
164
|
+
if (this.lingerTimer) {
|
|
165
|
+
clearTimeout(this.lingerTimer);
|
|
166
|
+
this.lingerTimer = null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.BatchTransform = BatchTransform;
|
|
171
|
+
//# sourceMappingURL=batch-transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-transform.js","sourceRoot":"","sources":["../../src/batch-transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { PkiAuthContext } from "./auth/pki-auth.js";
|
|
2
|
+
import { S2Endpoints, type S2EndpointsInit } from "./endpoints.js";
|
|
3
|
+
import type { Client } from "./generated/client/types.gen.js";
|
|
4
|
+
/**
|
|
5
|
+
* Policy for retrying append operations.
|
|
6
|
+
*
|
|
7
|
+
* - `all`: Retry all append operations, including those that may have side effects (default)
|
|
8
|
+
* - `noSideEffects`: Only retry append operations that are guaranteed to have no side effects
|
|
9
|
+
*/
|
|
10
|
+
export type AppendRetryPolicy = "all" | "noSideEffects";
|
|
11
|
+
/**
|
|
12
|
+
* Auth provider that abstracts token-based and PKI-based authentication.
|
|
13
|
+
*/
|
|
14
|
+
export type AuthProvider = {
|
|
15
|
+
type: "token";
|
|
16
|
+
token: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: "pki";
|
|
19
|
+
context: PkiAuthContext;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Retry configuration for handling transient failures.
|
|
23
|
+
*/
|
|
24
|
+
export type RetryConfig = {
|
|
25
|
+
/**
|
|
26
|
+
* Total number of attempts, including the initial try.
|
|
27
|
+
* Must be >= 1. A value of 1 means no retries.
|
|
28
|
+
* @default 3
|
|
29
|
+
*/
|
|
30
|
+
maxAttempts?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Minimum delay in milliseconds for exponential backoff.
|
|
33
|
+
* The first retry will have a delay in the range [minBaseDelayMillis, 2*minBaseDelayMillis).
|
|
34
|
+
* @default 100
|
|
35
|
+
*/
|
|
36
|
+
minBaseDelayMillis?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Maximum base delay in milliseconds for exponential backoff.
|
|
39
|
+
* Once the exponential backoff reaches this value, it stays capped here.
|
|
40
|
+
* Note: actual delay with jitter can be up to 2*maxBaseDelayMillis.
|
|
41
|
+
* @default 1000
|
|
42
|
+
*/
|
|
43
|
+
maxBaseDelayMillis?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Policy for retrying append operations.
|
|
46
|
+
* @default "all"
|
|
47
|
+
*/
|
|
48
|
+
appendRetryPolicy?: AppendRetryPolicy;
|
|
49
|
+
/**
|
|
50
|
+
* Maximum time in milliseconds to wait for an append ack before considering
|
|
51
|
+
* the attempt timed out and applying retry logic.
|
|
52
|
+
*
|
|
53
|
+
* Used by retrying append sessions. When unset, defaults to 5000ms.
|
|
54
|
+
*
|
|
55
|
+
* @deprecated Use `requestTimeoutMillis` on {@link S2ClientOptions} instead.
|
|
56
|
+
*/
|
|
57
|
+
requestTimeoutMillis?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Maximum time in milliseconds to wait for connection establishment.
|
|
60
|
+
* This is a "fail fast" timeout that aborts slow connections early.
|
|
61
|
+
* Connection time counts toward requestTimeoutMillis.
|
|
62
|
+
*
|
|
63
|
+
* Only applies to S2S (HTTP/2) transport when establishing new connections.
|
|
64
|
+
* Reused pooled connections are not subject to this timeout.
|
|
65
|
+
*
|
|
66
|
+
* @default 3000
|
|
67
|
+
* @deprecated Use `connectionTimeoutMillis` on {@link S2ClientOptions} instead.
|
|
68
|
+
*/
|
|
69
|
+
connectionTimeoutMillis?: number;
|
|
70
|
+
};
|
|
71
|
+
export type S2EnvironmentConfig = Partial<S2ClientOptions>;
|
|
72
|
+
export declare class S2Environment {
|
|
73
|
+
static parse(): S2EnvironmentConfig;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Configuration for constructing the top-level `S2` client.
|
|
77
|
+
*
|
|
78
|
+
* Provide one of:
|
|
79
|
+
* - `accessToken` for Bearer token auth (legacy)
|
|
80
|
+
* - `rootKey` for PKI bootstrap mode (limited to admin operations)
|
|
81
|
+
* - `authContext` for PKI proper auth (full access)
|
|
82
|
+
*/
|
|
83
|
+
export type S2ClientOptions = {
|
|
84
|
+
/**
|
|
85
|
+
* Access token used for HTTP Bearer authentication.
|
|
86
|
+
* Typically obtained via your S2 account or created using `s2.accessTokens.issue`.
|
|
87
|
+
*
|
|
88
|
+
* Mutually exclusive with `rootKey` and `authContext`.
|
|
89
|
+
*/
|
|
90
|
+
accessToken?: string;
|
|
91
|
+
/**
|
|
92
|
+
* P256 private key as base58-encoded 32 bytes for PKI bootstrap mode.
|
|
93
|
+
* When provided, the SDK generates short-lived Biscuit tokens on-the-fly
|
|
94
|
+
* and signs all requests with RFC 9421 HTTP message signatures.
|
|
95
|
+
*
|
|
96
|
+
* Bootstrap mode is limited to admin operations (list basins, issue tokens).
|
|
97
|
+
* For full access including stream operations, use `authContext` instead.
|
|
98
|
+
*
|
|
99
|
+
* Mutually exclusive with `accessToken` and `authContext`.
|
|
100
|
+
*/
|
|
101
|
+
rootKey?: string;
|
|
102
|
+
/**
|
|
103
|
+
* Pre-created PKI auth context for proper auth mode.
|
|
104
|
+
* Create with `createPkiAuth({ token, signingKey })`.
|
|
105
|
+
*
|
|
106
|
+
* This is the recommended mode for full access to all operations including streams.
|
|
107
|
+
*
|
|
108
|
+
* Mutually exclusive with `accessToken` and `rootKey`.
|
|
109
|
+
*/
|
|
110
|
+
authContext?: PkiAuthContext;
|
|
111
|
+
/**
|
|
112
|
+
* Endpoint configuration for the S2 environment.
|
|
113
|
+
*
|
|
114
|
+
* Defaults to AWS (`aws.s2.dev` and `{basin}.b.aws.s2.dev`) with the API base path inferred as `/v1`.
|
|
115
|
+
*/
|
|
116
|
+
endpoints?: S2Endpoints | S2EndpointsInit;
|
|
117
|
+
/**
|
|
118
|
+
* Maximum time in milliseconds to wait for an append ack before considering
|
|
119
|
+
* the attempt timed out and applying retry logic.
|
|
120
|
+
*
|
|
121
|
+
* Used by retrying append sessions. When unset, defaults to 5000ms.
|
|
122
|
+
*/
|
|
123
|
+
requestTimeoutMillis?: number;
|
|
124
|
+
/**
|
|
125
|
+
* Maximum time in milliseconds to wait for connection establishment.
|
|
126
|
+
* This is a "fail fast" timeout that aborts slow connections early.
|
|
127
|
+
* Connection time counts toward requestTimeoutMillis.
|
|
128
|
+
*
|
|
129
|
+
* Only applies to S2S (HTTP/2) transport when establishing new connections.
|
|
130
|
+
* Reused pooled connections are not subject to this timeout.
|
|
131
|
+
*
|
|
132
|
+
* @default 3000
|
|
133
|
+
*/
|
|
134
|
+
connectionTimeoutMillis?: number;
|
|
135
|
+
/**
|
|
136
|
+
* Retry configuration for handling transient failures.
|
|
137
|
+
* Applies to management operations (basins, streams, tokens) and stream operations (read, append).
|
|
138
|
+
* @default { maxAttempts: 3, minBaseDelayMillis: 100, maxBaseDelayMillis: 1000, appendRetryPolicy: "all" }
|
|
139
|
+
*/
|
|
140
|
+
retry?: RetryConfig;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Per-request options that apply to all SDK operations.
|
|
144
|
+
*/
|
|
145
|
+
export type S2RequestOptions = {
|
|
146
|
+
/**
|
|
147
|
+
* Optional abort signal to cancel the underlying HTTP request.
|
|
148
|
+
*/
|
|
149
|
+
signal?: AbortSignal;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Creates a client configured with the given auth provider.
|
|
153
|
+
* Adds request interceptor for PKI signing when using PKI auth.
|
|
154
|
+
*/
|
|
155
|
+
export declare function createAuthenticatedClient(baseUrl: string, authProvider: AuthProvider, headers: Record<string, string>): Client;
|
|
156
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,YAAY,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAE3D,qBAAa,aAAa;WACX,KAAK,IAAI,mBAAmB;CAyB1C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC;IAC1C;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;OASG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAsBR"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.S2Environment = void 0;
|
|
4
|
+
exports.createAuthenticatedClient = createAuthenticatedClient;
|
|
5
|
+
const endpoints_js_1 = require("./endpoints.js");
|
|
6
|
+
const index_js_1 = require("./generated/client/index.js");
|
|
7
|
+
class S2Environment {
|
|
8
|
+
static parse() {
|
|
9
|
+
const config = {};
|
|
10
|
+
const token = process.env.S2_ACCESS_TOKEN;
|
|
11
|
+
if (token) {
|
|
12
|
+
config.accessToken = token;
|
|
13
|
+
}
|
|
14
|
+
const rootKey = process.env.S2_ROOT_KEY;
|
|
15
|
+
if (rootKey) {
|
|
16
|
+
config.rootKey = rootKey;
|
|
17
|
+
}
|
|
18
|
+
const accountEndpoint = process.env.S2_ACCOUNT_ENDPOINT;
|
|
19
|
+
const basinEndpoint = process.env.S2_BASIN_ENDPOINT;
|
|
20
|
+
if (accountEndpoint || basinEndpoint) {
|
|
21
|
+
const endpointsInit = {
|
|
22
|
+
account: accountEndpoint || undefined,
|
|
23
|
+
basin: basinEndpoint || undefined,
|
|
24
|
+
};
|
|
25
|
+
config.endpoints = new endpoints_js_1.S2Endpoints(endpointsInit);
|
|
26
|
+
}
|
|
27
|
+
return config;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.S2Environment = S2Environment;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a client configured with the given auth provider.
|
|
33
|
+
* Adds request interceptor for PKI signing when using PKI auth.
|
|
34
|
+
*/
|
|
35
|
+
function createAuthenticatedClient(baseUrl, authProvider, headers) {
|
|
36
|
+
const client = (0, index_js_1.createClient)((0, index_js_1.createConfig)({
|
|
37
|
+
baseUrl,
|
|
38
|
+
auth: async () => {
|
|
39
|
+
if (authProvider.type === "pki") {
|
|
40
|
+
return authProvider.context.getToken();
|
|
41
|
+
}
|
|
42
|
+
return authProvider.token;
|
|
43
|
+
},
|
|
44
|
+
headers,
|
|
45
|
+
}));
|
|
46
|
+
if (authProvider.type === "pki") {
|
|
47
|
+
const pkiContext = authProvider.context;
|
|
48
|
+
client.interceptors.request.use(async (request) => {
|
|
49
|
+
return pkiContext.signRequest(request);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return client;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":";;;AA4LA,8DA0BC;AArND,iDAAmE;AACnE,0DAAyE;AA4EzE,MAAa,aAAa;IAClB,MAAM,CAAC,KAAK;QAClB,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACxD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACpD,IAAI,eAAe,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,aAAa,GAAoB;gBACtC,OAAO,EAAE,eAAe,IAAI,SAAS;gBACrC,KAAK,EAAE,aAAa,IAAI,SAAS;aACjC,CAAC;YACF,MAAM,CAAC,SAAS,GAAG,IAAI,0BAAW,CAAC,aAAa,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AA1BD,sCA0BC;AAgFD;;;GAGG;AACH,SAAgB,yBAAyB,CACxC,OAAe,EACf,YAA0B,EAC1B,OAA+B;IAE/B,MAAM,MAAM,GAAG,IAAA,uBAAY,EAC1B,IAAA,uBAAY,EAAC;QACZ,OAAO;QACP,IAAI,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,YAAY,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACjC,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxC,CAAC;YACD,OAAO,YAAY,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,OAAO;KACP,CAAC,CACF,CAAC;IAEF,IAAI,YAAY,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC;QACxC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACjD,OAAO,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
type Scheme = "http" | "https";
|
|
2
|
+
export type EndpointTemplateInit = {
|
|
3
|
+
/**
|
|
4
|
+
* Endpoint string. May be:
|
|
5
|
+
* - `host`
|
|
6
|
+
* - `host:port`
|
|
7
|
+
* - `https://host[:port][/path]`
|
|
8
|
+
* - `http://host[:port][/path]`
|
|
9
|
+
*
|
|
10
|
+
* For basin endpoints, may include `{basin}` placeholder in hostname and/or path.
|
|
11
|
+
*/
|
|
12
|
+
endpoint: string;
|
|
13
|
+
};
|
|
14
|
+
export declare class EndpointTemplate {
|
|
15
|
+
readonly raw: string;
|
|
16
|
+
readonly scheme: Scheme;
|
|
17
|
+
readonly hostTemplate: string;
|
|
18
|
+
readonly port: string;
|
|
19
|
+
readonly pathTemplate: string;
|
|
20
|
+
readonly hasBasinPlaceholder: boolean;
|
|
21
|
+
readonly explicitPathProvided: boolean;
|
|
22
|
+
constructor({ endpoint }: EndpointTemplateInit);
|
|
23
|
+
/**
|
|
24
|
+
* Resolve the template into a base URL string.
|
|
25
|
+
*
|
|
26
|
+
* - If `{basin}` appears in the hostname, it is substituted verbatim (basin names are validated by S2.basin()).
|
|
27
|
+
* - If `{basin}` appears in the path/query/hash, it is substituted via `encodeURIComponent`.
|
|
28
|
+
*/
|
|
29
|
+
baseUrl(basin?: string): string;
|
|
30
|
+
}
|
|
31
|
+
export type S2EndpointsInit = {
|
|
32
|
+
/**
|
|
33
|
+
* Account endpoint (authority with optional scheme/port, optional path).
|
|
34
|
+
* If no path is present, `/v1` is used.
|
|
35
|
+
*/
|
|
36
|
+
account?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Basin endpoint (authority with optional scheme/port, optional path).
|
|
39
|
+
* Supports `{basin}` placeholder anywhere. If no path is present, `/v1` is used.
|
|
40
|
+
*/
|
|
41
|
+
basin?: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Endpoint configuration for the S2 environment.
|
|
45
|
+
*
|
|
46
|
+
* This mirrors the Rust SDK's endpoint model, with an additional capability:
|
|
47
|
+
* the basin endpoint may include `{basin}` anywhere (hostname and/or path).
|
|
48
|
+
*/
|
|
49
|
+
export declare class S2Endpoints {
|
|
50
|
+
readonly account: EndpointTemplate;
|
|
51
|
+
readonly basin: EndpointTemplate;
|
|
52
|
+
/**
|
|
53
|
+
* When true, include `s2-basin: <name>` header on basin-scoped requests.
|
|
54
|
+
*
|
|
55
|
+
* Per project convention: enabled whenever a non-default basin endpoint is provided.
|
|
56
|
+
*/
|
|
57
|
+
readonly includeBasinHeader: boolean;
|
|
58
|
+
constructor(init?: S2EndpointsInit);
|
|
59
|
+
accountBaseUrl(): string;
|
|
60
|
+
basinBaseUrl(basin: string): string;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/endpoints.ts"],"names":[],"mappings":"AAAA,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAwC/B,MAAM,MAAM,oBAAoB,GAAG;IAClC;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,gBAAgB;IAC5B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAC7C,SAAgB,oBAAoB,EAAE,OAAO,CAAC;gBAElC,EAAE,QAAQ,EAAE,EAAE,oBAAoB;IAwC9C;;;;;OAKG;IACI,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CAYtC;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAKF;;;;;GAKG;AACH,qBAAa,WAAW;IACvB,SAAgB,OAAO,EAAE,gBAAgB,CAAC;IAC1C,SAAgB,KAAK,EAAE,gBAAgB,CAAC;IACxC;;;;OAIG;IACH,SAAgB,kBAAkB,EAAE,OAAO,CAAC;gBAEhC,IAAI,CAAC,EAAE,eAAe;IAU3B,cAAc,IAAI,MAAM;IAIxB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAG1C"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.S2Endpoints = exports.EndpointTemplate = void 0;
|
|
4
|
+
const DEFAULT_SCHEME = "https";
|
|
5
|
+
const DEFAULT_API_PATH = "/v1";
|
|
6
|
+
const BASIN_PLACEHOLDER_SENTINEL = "__basin__";
|
|
7
|
+
function hasScheme(input) {
|
|
8
|
+
return /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(input);
|
|
9
|
+
}
|
|
10
|
+
function firstDelimiterIndex(value, fromIndex) {
|
|
11
|
+
const slash = value.indexOf("/", fromIndex);
|
|
12
|
+
const query = value.indexOf("?", fromIndex);
|
|
13
|
+
const hash = value.indexOf("#", fromIndex);
|
|
14
|
+
const candidates = [slash, query, hash].filter((idx) => idx !== -1);
|
|
15
|
+
return candidates.length ? Math.min(...candidates) : -1;
|
|
16
|
+
}
|
|
17
|
+
function hasExplicitPath(input) {
|
|
18
|
+
const trimmed = input.trim();
|
|
19
|
+
const schemeMatch = trimmed.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):\/\//);
|
|
20
|
+
const authorityStart = schemeMatch ? schemeMatch[0].length : 0;
|
|
21
|
+
const delim = firstDelimiterIndex(trimmed, authorityStart);
|
|
22
|
+
return delim !== -1 && trimmed[delim] === "/";
|
|
23
|
+
}
|
|
24
|
+
function normalizeForUrlParsing(input) {
|
|
25
|
+
const trimmed = input.trim();
|
|
26
|
+
const withScheme = hasScheme(trimmed)
|
|
27
|
+
? trimmed
|
|
28
|
+
: `${DEFAULT_SCHEME}://${trimmed}`;
|
|
29
|
+
return withScheme.replaceAll("{basin}", BASIN_PLACEHOLDER_SENTINEL);
|
|
30
|
+
}
|
|
31
|
+
function asScheme(protocol) {
|
|
32
|
+
const normalized = protocol.replace(":", "").toLowerCase();
|
|
33
|
+
if (normalized === "http" || normalized === "https")
|
|
34
|
+
return normalized;
|
|
35
|
+
throw new Error(`Unsupported scheme: ${protocol}`);
|
|
36
|
+
}
|
|
37
|
+
class EndpointTemplate {
|
|
38
|
+
raw;
|
|
39
|
+
scheme;
|
|
40
|
+
hostTemplate;
|
|
41
|
+
port;
|
|
42
|
+
pathTemplate;
|
|
43
|
+
hasBasinPlaceholder;
|
|
44
|
+
explicitPathProvided;
|
|
45
|
+
constructor({ endpoint }) {
|
|
46
|
+
const raw = endpoint.trim();
|
|
47
|
+
if (!raw) {
|
|
48
|
+
throw new Error("Endpoint cannot be empty");
|
|
49
|
+
}
|
|
50
|
+
const explicitPathProvided = hasExplicitPath(raw);
|
|
51
|
+
const parsed = new URL(normalizeForUrlParsing(raw));
|
|
52
|
+
this.raw = raw;
|
|
53
|
+
this.scheme = asScheme(parsed.protocol);
|
|
54
|
+
this.hostTemplate = parsed.hostname.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
55
|
+
this.port = parsed.port;
|
|
56
|
+
const parsedPath = parsed.pathname.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
57
|
+
const parsedQuery = parsed.search.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
58
|
+
const parsedHash = parsed.hash.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
59
|
+
this.pathTemplate = explicitPathProvided
|
|
60
|
+
? `${parsedPath}${parsedQuery}${parsedHash}`
|
|
61
|
+
: DEFAULT_API_PATH;
|
|
62
|
+
this.explicitPathProvided = explicitPathProvided;
|
|
63
|
+
this.hasBasinPlaceholder =
|
|
64
|
+
this.raw.includes("{basin}") ||
|
|
65
|
+
this.hostTemplate.includes("{basin}") ||
|
|
66
|
+
this.pathTemplate.includes("{basin}");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve the template into a base URL string.
|
|
70
|
+
*
|
|
71
|
+
* - If `{basin}` appears in the hostname, it is substituted verbatim (basin names are validated by S2.basin()).
|
|
72
|
+
* - If `{basin}` appears in the path/query/hash, it is substituted via `encodeURIComponent`.
|
|
73
|
+
*/
|
|
74
|
+
baseUrl(basin) {
|
|
75
|
+
const host = basin
|
|
76
|
+
? this.hostTemplate.replaceAll("{basin}", basin)
|
|
77
|
+
: this.hostTemplate;
|
|
78
|
+
const path = basin
|
|
79
|
+
? this.pathTemplate.replaceAll("{basin}", encodeURIComponent(basin))
|
|
80
|
+
: this.pathTemplate;
|
|
81
|
+
const authority = this.port ? `${host}:${this.port}` : host;
|
|
82
|
+
return `${this.scheme}://${authority}${path}`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.EndpointTemplate = EndpointTemplate;
|
|
86
|
+
const DEFAULT_ACCOUNT_ENDPOINT = "aws.s2.dev";
|
|
87
|
+
const DEFAULT_BASIN_ENDPOINT = "{basin}.b.aws.s2.dev";
|
|
88
|
+
/**
|
|
89
|
+
* Endpoint configuration for the S2 environment.
|
|
90
|
+
*
|
|
91
|
+
* This mirrors the Rust SDK's endpoint model, with an additional capability:
|
|
92
|
+
* the basin endpoint may include `{basin}` anywhere (hostname and/or path).
|
|
93
|
+
*/
|
|
94
|
+
class S2Endpoints {
|
|
95
|
+
account;
|
|
96
|
+
basin;
|
|
97
|
+
/**
|
|
98
|
+
* When true, include `s2-basin: <name>` header on basin-scoped requests.
|
|
99
|
+
*
|
|
100
|
+
* Per project convention: enabled whenever a non-default basin endpoint is provided.
|
|
101
|
+
*/
|
|
102
|
+
includeBasinHeader;
|
|
103
|
+
constructor(init) {
|
|
104
|
+
this.account = new EndpointTemplate({
|
|
105
|
+
endpoint: init?.account ?? DEFAULT_ACCOUNT_ENDPOINT,
|
|
106
|
+
});
|
|
107
|
+
this.basin = new EndpointTemplate({
|
|
108
|
+
endpoint: init?.basin ?? DEFAULT_BASIN_ENDPOINT,
|
|
109
|
+
});
|
|
110
|
+
this.includeBasinHeader = init?.basin !== undefined;
|
|
111
|
+
}
|
|
112
|
+
accountBaseUrl() {
|
|
113
|
+
return this.account.baseUrl();
|
|
114
|
+
}
|
|
115
|
+
basinBaseUrl(basin) {
|
|
116
|
+
return this.basin.baseUrl(basin);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.S2Endpoints = S2Endpoints;
|
|
120
|
+
//# sourceMappingURL=endpoints.js.map
|