@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,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* S2 SDK Types
|
|
4
|
+
*
|
|
5
|
+
* All public SDK types are defined here. Types use camelCase field names
|
|
6
|
+
* for idiomatic JavaScript/TypeScript usage.
|
|
7
|
+
*
|
|
8
|
+
* Generated types (snake_case, matching API wire format) are available
|
|
9
|
+
* from "./generated/types.gen.js" as the `API` namespace.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AppendInput = exports.MAX_APPEND_BYTES = exports.MAX_APPEND_RECORDS = exports.AppendRecord = void 0;
|
|
13
|
+
const error_js_1 = require("./error.js");
|
|
14
|
+
const utils_js_1 = require("./utils.js");
|
|
15
|
+
const textEncoder = new TextEncoder();
|
|
16
|
+
/**
|
|
17
|
+
* Factory functions for creating AppendRecord instances.
|
|
18
|
+
*/
|
|
19
|
+
var AppendRecord;
|
|
20
|
+
(function (AppendRecord) {
|
|
21
|
+
/**
|
|
22
|
+
* Create a string-format append record with pre-calculated metered size.
|
|
23
|
+
*/
|
|
24
|
+
function string(params) {
|
|
25
|
+
// Create record with placeholder, then calculate actual size
|
|
26
|
+
const record = {
|
|
27
|
+
body: params.body,
|
|
28
|
+
headers: params.headers,
|
|
29
|
+
timestamp: params.timestamp,
|
|
30
|
+
meteredBytes: 0,
|
|
31
|
+
};
|
|
32
|
+
// Safe to cast: we're setting a readonly property during construction
|
|
33
|
+
record.meteredBytes =
|
|
34
|
+
(0, utils_js_1.meteredBytes)(record);
|
|
35
|
+
return record;
|
|
36
|
+
}
|
|
37
|
+
AppendRecord.string = string;
|
|
38
|
+
/**
|
|
39
|
+
* Create a bytes-format append record with pre-calculated metered size.
|
|
40
|
+
*/
|
|
41
|
+
function bytes(params) {
|
|
42
|
+
// Create record with placeholder, then calculate actual size
|
|
43
|
+
const record = {
|
|
44
|
+
body: params.body,
|
|
45
|
+
headers: params.headers,
|
|
46
|
+
timestamp: params.timestamp,
|
|
47
|
+
meteredBytes: 0,
|
|
48
|
+
};
|
|
49
|
+
// Safe to cast: we're setting a readonly property during construction
|
|
50
|
+
record.meteredBytes =
|
|
51
|
+
(0, utils_js_1.meteredBytes)(record);
|
|
52
|
+
return record;
|
|
53
|
+
}
|
|
54
|
+
AppendRecord.bytes = bytes;
|
|
55
|
+
/**
|
|
56
|
+
* Create a fence command record.
|
|
57
|
+
*/
|
|
58
|
+
function fence(fencingToken, timestamp) {
|
|
59
|
+
return string({
|
|
60
|
+
body: fencingToken,
|
|
61
|
+
headers: [["", "fence"]],
|
|
62
|
+
timestamp,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
AppendRecord.fence = fence;
|
|
66
|
+
/**
|
|
67
|
+
* Create a trim command record.
|
|
68
|
+
*/
|
|
69
|
+
function trim(seqNum, timestamp) {
|
|
70
|
+
const buffer = new Uint8Array(8);
|
|
71
|
+
const view = new DataView(buffer.buffer);
|
|
72
|
+
view.setBigUint64(0, BigInt(seqNum), false);
|
|
73
|
+
return bytes({
|
|
74
|
+
body: buffer,
|
|
75
|
+
headers: [[textEncoder.encode(""), textEncoder.encode("trim")]],
|
|
76
|
+
timestamp,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
AppendRecord.trim = trim;
|
|
80
|
+
})(AppendRecord || (exports.AppendRecord = AppendRecord = {}));
|
|
81
|
+
// =============================================================================
|
|
82
|
+
// Append Input
|
|
83
|
+
// =============================================================================
|
|
84
|
+
/** Maximum number of records in a single append batch. */
|
|
85
|
+
exports.MAX_APPEND_RECORDS = 1000;
|
|
86
|
+
/** Maximum total metered bytes for records in a single append batch (1 MiB). */
|
|
87
|
+
exports.MAX_APPEND_BYTES = 1024 * 1024;
|
|
88
|
+
/**
|
|
89
|
+
* Factory functions for creating AppendInput instances.
|
|
90
|
+
*/
|
|
91
|
+
var AppendInput;
|
|
92
|
+
(function (AppendInput) {
|
|
93
|
+
/**
|
|
94
|
+
* Create an AppendInput with validation.
|
|
95
|
+
*
|
|
96
|
+
* @throws {S2Error} If validation fails (empty, too many records, or too large)
|
|
97
|
+
*/
|
|
98
|
+
function create(records, options) {
|
|
99
|
+
if (records.length === 0) {
|
|
100
|
+
throw new error_js_1.S2Error({
|
|
101
|
+
message: "AppendInput must contain at least one record",
|
|
102
|
+
origin: "sdk",
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (records.length > exports.MAX_APPEND_RECORDS) {
|
|
106
|
+
throw new error_js_1.S2Error({
|
|
107
|
+
message: `AppendInput cannot contain more than ${exports.MAX_APPEND_RECORDS} records (got ${records.length})`,
|
|
108
|
+
origin: "sdk",
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
const totalBytes = records.reduce((sum, r) => sum + r.meteredBytes, 0);
|
|
112
|
+
if (totalBytes > exports.MAX_APPEND_BYTES) {
|
|
113
|
+
throw new error_js_1.S2Error({
|
|
114
|
+
message: `AppendInput exceeds maximum of ${exports.MAX_APPEND_BYTES} bytes (got ${totalBytes} bytes)`,
|
|
115
|
+
origin: "sdk",
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
records,
|
|
120
|
+
matchSeqNum: options?.matchSeqNum === undefined
|
|
121
|
+
? undefined
|
|
122
|
+
: Math.floor(options.matchSeqNum),
|
|
123
|
+
fencingToken: options?.fencingToken,
|
|
124
|
+
meteredBytes: totalBytes,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
AppendInput.create = create;
|
|
128
|
+
})(AppendInput || (exports.AppendInput = AppendInput = {}));
|
|
129
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AppendRecord, ReadRecord } from "./lib/stream/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the UTF-8 byte length of a string.
|
|
4
|
+
* Handles all Unicode characters including surrogate pairs correctly.
|
|
5
|
+
*
|
|
6
|
+
* @param str The string to measure
|
|
7
|
+
* @returns The byte length when encoded as UTF-8
|
|
8
|
+
*/
|
|
9
|
+
export declare function utf8ByteLength(str: string): number;
|
|
10
|
+
/**
|
|
11
|
+
* Calculate the metered size in bytes of a record (append or read).
|
|
12
|
+
* This includes the body and headers, but not metadata like timestamp.
|
|
13
|
+
*
|
|
14
|
+
* This function calculates how many bytes the record will occupy
|
|
15
|
+
* after being received and deserialized as raw bytes on the S2 side.
|
|
16
|
+
* For strings, it calculates UTF-8 byte length. For Uint8Array, it uses
|
|
17
|
+
* the array length directly (same value as would be used when encoding
|
|
18
|
+
* to base64 for transmission).
|
|
19
|
+
*
|
|
20
|
+
* @param record The record to measure
|
|
21
|
+
* @returns The size in bytes
|
|
22
|
+
*/
|
|
23
|
+
export declare function meteredBytes<Format extends "string" | "bytes">(record: AppendRecord | ReadRecord<Format>): number;
|
|
24
|
+
export declare function computeAppendRecordFormat(record: AppendRecord): "string" | "bytes";
|
|
25
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiClD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS,QAAQ,GAAG,OAAO,EAC7D,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,GACvC,MAAM,CAgCR;AAED,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,YAAY,GAClB,QAAQ,GAAG,OAAO,CAiBpB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.utf8ByteLength = utf8ByteLength;
|
|
4
|
+
exports.meteredBytes = meteredBytes;
|
|
5
|
+
exports.computeAppendRecordFormat = computeAppendRecordFormat;
|
|
6
|
+
/**
|
|
7
|
+
* Calculate the UTF-8 byte length of a string.
|
|
8
|
+
* Handles all Unicode characters including surrogate pairs correctly.
|
|
9
|
+
*
|
|
10
|
+
* @param str The string to measure
|
|
11
|
+
* @returns The byte length when encoded as UTF-8
|
|
12
|
+
*/
|
|
13
|
+
function utf8ByteLength(str) {
|
|
14
|
+
let bytes = 0;
|
|
15
|
+
for (let i = 0; i < str.length; i++) {
|
|
16
|
+
const code = str.charCodeAt(i);
|
|
17
|
+
if (code <= 0x7f) {
|
|
18
|
+
bytes += 1;
|
|
19
|
+
}
|
|
20
|
+
else if (code <= 0x7ff) {
|
|
21
|
+
bytes += 2;
|
|
22
|
+
}
|
|
23
|
+
else if (code >= 0xd800 && code <= 0xdbff) {
|
|
24
|
+
// high surrogate
|
|
25
|
+
if (i + 1 < str.length) {
|
|
26
|
+
const next = str.charCodeAt(i + 1);
|
|
27
|
+
if (next >= 0xdc00 && next <= 0xdfff) {
|
|
28
|
+
// valid surrogate pair → 4 bytes in UTF-8
|
|
29
|
+
bytes += 4;
|
|
30
|
+
i++; // skip low surrogate
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// unpaired high surrogate → treat as 3 bytes (replacement-style)
|
|
34
|
+
bytes += 3;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// unpaired high surrogate at end of string
|
|
39
|
+
bytes += 3;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (code >= 0xdc00 && code <= 0xdfff) {
|
|
43
|
+
// lone low surrogate — treat as 3 bytes
|
|
44
|
+
bytes += 3;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
bytes += 3;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return bytes;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Calculate the metered size in bytes of a record (append or read).
|
|
54
|
+
* This includes the body and headers, but not metadata like timestamp.
|
|
55
|
+
*
|
|
56
|
+
* This function calculates how many bytes the record will occupy
|
|
57
|
+
* after being received and deserialized as raw bytes on the S2 side.
|
|
58
|
+
* For strings, it calculates UTF-8 byte length. For Uint8Array, it uses
|
|
59
|
+
* the array length directly (same value as would be used when encoding
|
|
60
|
+
* to base64 for transmission).
|
|
61
|
+
*
|
|
62
|
+
* @param record The record to measure
|
|
63
|
+
* @returns The size in bytes
|
|
64
|
+
*/
|
|
65
|
+
function meteredBytes(record) {
|
|
66
|
+
// Calculate header size based on actual data types
|
|
67
|
+
let numHeaders = 0;
|
|
68
|
+
let headersSize = 0;
|
|
69
|
+
if (record.headers) {
|
|
70
|
+
if (Array.isArray(record.headers)) {
|
|
71
|
+
numHeaders = record.headers.length;
|
|
72
|
+
headersSize = record.headers.reduce((sum, [k, v]) => {
|
|
73
|
+
// Infer format from key type: string = UTF-8 bytes, Uint8Array = byte length
|
|
74
|
+
const keySize = typeof k === "string" ? utf8ByteLength(k) : k.length;
|
|
75
|
+
const valueSize = typeof v === "string" ? utf8ByteLength(v) : v.length;
|
|
76
|
+
return sum + keySize + valueSize;
|
|
77
|
+
}, 0);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Record<string, string> format (only for string format)
|
|
81
|
+
const entries = Object.entries(record.headers);
|
|
82
|
+
numHeaders = entries.length;
|
|
83
|
+
headersSize = entries.reduce((sum, [k, v]) => {
|
|
84
|
+
return sum + utf8ByteLength(k) + utf8ByteLength(v);
|
|
85
|
+
}, 0);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Calculate body size based on actual data type
|
|
89
|
+
const bodySize = record.body
|
|
90
|
+
? typeof record.body === "string"
|
|
91
|
+
? utf8ByteLength(record.body)
|
|
92
|
+
: record.body.length
|
|
93
|
+
: 0;
|
|
94
|
+
return 8 + 2 * numHeaders + headersSize + bodySize;
|
|
95
|
+
}
|
|
96
|
+
function computeAppendRecordFormat(record) {
|
|
97
|
+
let result = "string";
|
|
98
|
+
if (record.body && typeof record.body !== "string") {
|
|
99
|
+
result = "bytes";
|
|
100
|
+
}
|
|
101
|
+
if (record.headers &&
|
|
102
|
+
Array.isArray(record.headers) &&
|
|
103
|
+
record.headers.some(([k, v]) => typeof k !== "string" || typeof v !== "string")) {
|
|
104
|
+
result = "bytes";
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,OAAO,WAAW,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VERSION = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Library version.
|
|
6
|
+
*
|
|
7
|
+
* This file is auto-generated from package.json by scripts/generate-version.ts.
|
|
8
|
+
* Do not edit manually.
|
|
9
|
+
*/
|
|
10
|
+
exports.VERSION = "0.22.2";
|
|
11
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACU,QAAA,OAAO,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { RetryConfig, S2RequestOptions } from "./common.js";
|
|
2
|
+
import type { Client } from "./generated/client/types.gen.js";
|
|
3
|
+
import type * as Types from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Account-scoped helper for listing, issuing, and revoking access tokens.
|
|
6
|
+
*
|
|
7
|
+
* Acquire via {@link S2.accessTokens}. Use {@link S2AccessTokens.listAll} for async iteration.
|
|
8
|
+
*/
|
|
9
|
+
export declare class S2AccessTokens {
|
|
10
|
+
readonly client: Client;
|
|
11
|
+
private readonly retryConfig?;
|
|
12
|
+
constructor(client: Client, retryConfig?: RetryConfig);
|
|
13
|
+
/**
|
|
14
|
+
* List access tokens.
|
|
15
|
+
*
|
|
16
|
+
* @param args.prefix Filter to IDs beginning with this prefix
|
|
17
|
+
* @param args.startAfter Filter to IDs lexicographically after this value
|
|
18
|
+
* @param args.limit Max results (up to 1000)
|
|
19
|
+
*/
|
|
20
|
+
list(args?: Types.ListAccessTokensInput, options?: S2RequestOptions): Promise<Types.ListAccessTokensResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* List all access tokens with automatic pagination.
|
|
23
|
+
* Returns a lazy async iterable that fetches pages as needed.
|
|
24
|
+
*
|
|
25
|
+
* @param args - Optional filtering options: `prefix` to filter by ID prefix, `limit` for max results per page
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* for await (const token of s2.accessTokens.listAll({ prefix: "service-" })) {
|
|
30
|
+
* console.log(token.id);
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
listAll(args?: Types.ListAllAccessTokensInput, options?: S2RequestOptions): AsyncIterable<Types.AccessTokenInfo>;
|
|
35
|
+
/**
|
|
36
|
+
* Issue a new access token.
|
|
37
|
+
*
|
|
38
|
+
* @param args.id Unique token ID (1-96 bytes)
|
|
39
|
+
* @param args.scope Token scope (operations and resource sets)
|
|
40
|
+
* @param args.autoPrefixStreams Namespace stream names by configured prefix scope
|
|
41
|
+
* @param args.expiresAt Expiration time (Date or RFC 3339 string); defaults to requestor's token expiry
|
|
42
|
+
*/
|
|
43
|
+
issue(args: Types.IssueAccessTokenInput, options?: S2RequestOptions): Promise<Types.IssueAccessTokenResponse>;
|
|
44
|
+
/**
|
|
45
|
+
* Revoke an access token by ID.
|
|
46
|
+
*
|
|
47
|
+
* @param args.id Token ID to revoke
|
|
48
|
+
*/
|
|
49
|
+
revoke(args: Types.RevokeAccessTokenInput, options?: S2RequestOptions): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=accessTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessTokens.d.ts","sourceRoot":"","sources":["../../src/accessTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAS9D,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAC;AA4BzC;;;;GAIG;AACH,qBAAa,cAAc;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;gBAE/B,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;;;;OAMG;IACU,IAAI,CAChB,IAAI,CAAC,EAAE,KAAK,CAAC,qBAAqB,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAiB1C;;;;;;;;;;;;OAYG;IACI,OAAO,CACb,IAAI,CAAC,EAAE,KAAK,CAAC,wBAAwB,EACrC,OAAO,CAAC,EAAE,gBAAgB,GACxB,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC;IAYvC;;;;;;;OAOG;IACU,KAAK,CACjB,IAAI,EAAE,KAAK,CAAC,qBAAqB,EACjC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC;IAkB1C;;;;OAIG;IACU,MAAM,CAClB,IAAI,EAAE,KAAK,CAAC,sBAAsB,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC;CAWhB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { withS2Data } from "./error.js";
|
|
2
|
+
import { issueAccessToken, listAccessTokens, revokeAccessToken, } from "./generated/index.js";
|
|
3
|
+
import { toCamelCase, toSnakeCase } from "./internal/case-transform.js";
|
|
4
|
+
import { paginate } from "./lib/paginate.js";
|
|
5
|
+
import { withRetries } from "./lib/retry.js";
|
|
6
|
+
/** Convert expiresAt input (Date, milliseconds, or string) to RFC 3339 string for API. */
|
|
7
|
+
function toISOString(value) {
|
|
8
|
+
if (value === null)
|
|
9
|
+
return null;
|
|
10
|
+
if (value === undefined)
|
|
11
|
+
return undefined;
|
|
12
|
+
if (value instanceof Date)
|
|
13
|
+
return value.toISOString();
|
|
14
|
+
if (typeof value === "number")
|
|
15
|
+
return new Date(value).toISOString();
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
/** Convert expiresAt from API (ISO string) to Date. */
|
|
19
|
+
function toDate(value) {
|
|
20
|
+
if (value === null)
|
|
21
|
+
return null;
|
|
22
|
+
if (value === undefined)
|
|
23
|
+
return undefined;
|
|
24
|
+
return new Date(value);
|
|
25
|
+
}
|
|
26
|
+
/** Transform AccessTokenInfo response: convert expiresAt to Date. */
|
|
27
|
+
function transformTokenInfo(token) {
|
|
28
|
+
return {
|
|
29
|
+
...token,
|
|
30
|
+
expiresAt: toDate(token.expiresAt),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Account-scoped helper for listing, issuing, and revoking access tokens.
|
|
35
|
+
*
|
|
36
|
+
* Acquire via {@link S2.accessTokens}. Use {@link S2AccessTokens.listAll} for async iteration.
|
|
37
|
+
*/
|
|
38
|
+
export class S2AccessTokens {
|
|
39
|
+
client;
|
|
40
|
+
retryConfig;
|
|
41
|
+
constructor(client, retryConfig) {
|
|
42
|
+
this.client = client;
|
|
43
|
+
this.retryConfig = retryConfig;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* List access tokens.
|
|
47
|
+
*
|
|
48
|
+
* @param args.prefix Filter to IDs beginning with this prefix
|
|
49
|
+
* @param args.startAfter Filter to IDs lexicographically after this value
|
|
50
|
+
* @param args.limit Max results (up to 1000)
|
|
51
|
+
*/
|
|
52
|
+
async list(args, options) {
|
|
53
|
+
const response = await withRetries(this.retryConfig, async () => {
|
|
54
|
+
return await withS2Data(() => listAccessTokens({
|
|
55
|
+
client: this.client,
|
|
56
|
+
query: toSnakeCase(args),
|
|
57
|
+
...options,
|
|
58
|
+
}));
|
|
59
|
+
});
|
|
60
|
+
const camelCased = toCamelCase(response);
|
|
61
|
+
return {
|
|
62
|
+
...camelCased,
|
|
63
|
+
accessTokens: camelCased.accessTokens.map(transformTokenInfo),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* List all access tokens with automatic pagination.
|
|
68
|
+
* Returns a lazy async iterable that fetches pages as needed.
|
|
69
|
+
*
|
|
70
|
+
* @param args - Optional filtering options: `prefix` to filter by ID prefix, `limit` for max results per page
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* for await (const token of s2.accessTokens.listAll({ prefix: "service-" })) {
|
|
75
|
+
* console.log(token.id);
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
listAll(args, options) {
|
|
80
|
+
return paginate((a) => this.list(a, options).then((r) => ({
|
|
81
|
+
items: r.accessTokens,
|
|
82
|
+
hasMore: r.hasMore,
|
|
83
|
+
})), args ?? {}, (token) => token.id);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Issue a new access token.
|
|
87
|
+
*
|
|
88
|
+
* @param args.id Unique token ID (1-96 bytes)
|
|
89
|
+
* @param args.scope Token scope (operations and resource sets)
|
|
90
|
+
* @param args.autoPrefixStreams Namespace stream names by configured prefix scope
|
|
91
|
+
* @param args.expiresAt Expiration time (Date or RFC 3339 string); defaults to requestor's token expiry
|
|
92
|
+
*/
|
|
93
|
+
async issue(args, options) {
|
|
94
|
+
// Convert Date to ISO string for API
|
|
95
|
+
const apiArgs = {
|
|
96
|
+
...args,
|
|
97
|
+
expiresAt: toISOString(args.expiresAt),
|
|
98
|
+
};
|
|
99
|
+
const response = await withRetries(this.retryConfig, async () => {
|
|
100
|
+
return await withS2Data(() => issueAccessToken({
|
|
101
|
+
client: this.client,
|
|
102
|
+
body: toSnakeCase(apiArgs),
|
|
103
|
+
...options,
|
|
104
|
+
}));
|
|
105
|
+
});
|
|
106
|
+
return toCamelCase(response);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Revoke an access token by ID.
|
|
110
|
+
*
|
|
111
|
+
* @param args.id Token ID to revoke
|
|
112
|
+
*/
|
|
113
|
+
async revoke(args, options) {
|
|
114
|
+
await withRetries(this.retryConfig, async () => {
|
|
115
|
+
return await withS2Data(() => revokeAccessToken({
|
|
116
|
+
client: this.client,
|
|
117
|
+
path: args,
|
|
118
|
+
...options,
|
|
119
|
+
}));
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=accessTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessTokens.js","sourceRoot":"","sources":["../../src/accessTokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type BiscuitTokenOptions = {
|
|
2
|
+
/** P256 private key as base58-encoded 32 bytes */
|
|
3
|
+
privateKey: string;
|
|
4
|
+
/** Public key to bind the token to (base58). If not provided, derives from privateKey. */
|
|
5
|
+
publicKey?: string;
|
|
6
|
+
/** Token expiry in seconds from now (default: 3600 = 1 hour) */
|
|
7
|
+
expiresIn?: number;
|
|
8
|
+
/** Operation groups to grant (default: all read+write) */
|
|
9
|
+
opGroups?: Array<{
|
|
10
|
+
level: string;
|
|
11
|
+
access: string;
|
|
12
|
+
}>;
|
|
13
|
+
/** Basin scope (default: prefix "" = all basins) */
|
|
14
|
+
basinScope?: {
|
|
15
|
+
type: "prefix" | "exact" | "none";
|
|
16
|
+
value: string;
|
|
17
|
+
};
|
|
18
|
+
/** Stream scope (default: prefix "" = all streams) */
|
|
19
|
+
streamScope?: {
|
|
20
|
+
type: "prefix" | "exact" | "none";
|
|
21
|
+
value: string;
|
|
22
|
+
};
|
|
23
|
+
/** Access token scope (default: prefix "" = all tokens) */
|
|
24
|
+
accessTokenScope?: {
|
|
25
|
+
type: "prefix" | "exact" | "none";
|
|
26
|
+
value: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Creates an admin Biscuit token from a root private key.
|
|
31
|
+
* This enables bootstrap mode where the admin can operate without a pre-existing token.
|
|
32
|
+
*
|
|
33
|
+
* @returns Base64-encoded Biscuit token
|
|
34
|
+
*/
|
|
35
|
+
export declare function createBiscuitToken(options: BiscuitTokenOptions): Promise<string>;
|
|
36
|
+
/**
|
|
37
|
+
* Derives the public key from a private key.
|
|
38
|
+
* @param privateKey Base58-encoded P256 private key (32 bytes)
|
|
39
|
+
* @returns Base58-encoded compressed public key (33 bytes)
|
|
40
|
+
*/
|
|
41
|
+
export declare function derivePublicKey(privateKey: string): string;
|
|
42
|
+
//# sourceMappingURL=biscuit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biscuit.d.ts","sourceRoot":"","sources":["../../../src/auth/biscuit.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,mBAAmB,GAAG;IACjC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,oDAAoD;IACpD,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,sDAAsD;IACtD,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDtF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { base64 } from "@scure/base";
|
|
2
|
+
import { SigningKey } from "./signing-key.js";
|
|
3
|
+
// Dynamic import for biscuit-wasm to handle WASM initialization
|
|
4
|
+
let biscuitModule = null;
|
|
5
|
+
let initPromise = null;
|
|
6
|
+
async function getBiscuit() {
|
|
7
|
+
if (!biscuitModule) {
|
|
8
|
+
biscuitModule = await import("@biscuit-auth/biscuit-wasm");
|
|
9
|
+
if (!initPromise) {
|
|
10
|
+
initPromise = Promise.resolve(biscuitModule.init());
|
|
11
|
+
}
|
|
12
|
+
await initPromise;
|
|
13
|
+
}
|
|
14
|
+
return biscuitModule;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Creates an admin Biscuit token from a root private key.
|
|
18
|
+
* This enables bootstrap mode where the admin can operate without a pre-existing token.
|
|
19
|
+
*
|
|
20
|
+
* @returns Base64-encoded Biscuit token
|
|
21
|
+
*/
|
|
22
|
+
export async function createBiscuitToken(options) {
|
|
23
|
+
const { privateKey, publicKey: providedPublicKey, expiresIn = 3600, opGroups = [
|
|
24
|
+
{ level: "account", access: "read" },
|
|
25
|
+
{ level: "account", access: "write" },
|
|
26
|
+
{ level: "basin", access: "read" },
|
|
27
|
+
{ level: "basin", access: "write" },
|
|
28
|
+
{ level: "stream", access: "read" },
|
|
29
|
+
{ level: "stream", access: "write" },
|
|
30
|
+
], basinScope = { type: "prefix", value: "" }, streamScope = { type: "prefix", value: "" }, accessTokenScope = { type: "prefix", value: "" }, } = options;
|
|
31
|
+
const biscuit = await getBiscuit();
|
|
32
|
+
// Use SigningKey for validation and key derivation
|
|
33
|
+
const signingKey = SigningKey.fromBase58(privateKey);
|
|
34
|
+
const privateKeyBytes = signingKey.getPrivateKeyBytes();
|
|
35
|
+
const publicKeyBase58 = providedPublicKey ?? signingKey.publicKeyBase58();
|
|
36
|
+
// Create Biscuit private key (P256 = secp256r1)
|
|
37
|
+
const biscuitPrivateKey = biscuit.PrivateKey.fromBytes(privateKeyBytes, biscuit.SignatureAlgorithm.Secp256r1);
|
|
38
|
+
// Build the token
|
|
39
|
+
const expiresTs = Math.floor(Date.now() / 1000) + expiresIn;
|
|
40
|
+
const builder = biscuit.biscuit `
|
|
41
|
+
public_key(${publicKeyBase58});
|
|
42
|
+
expires(${expiresTs});
|
|
43
|
+
`;
|
|
44
|
+
builder.merge(biscuit.block `
|
|
45
|
+
check if time($t), $t < ${expiresTs};
|
|
46
|
+
`);
|
|
47
|
+
for (const { level, access } of opGroups) {
|
|
48
|
+
builder.merge(biscuit.block `
|
|
49
|
+
op_group(${level}, ${access});
|
|
50
|
+
`);
|
|
51
|
+
}
|
|
52
|
+
builder.merge(biscuit.block `
|
|
53
|
+
basin_scope(${basinScope.type}, ${basinScope.value});
|
|
54
|
+
stream_scope(${streamScope.type}, ${streamScope.value});
|
|
55
|
+
access_token_scope(${accessTokenScope.type}, ${accessTokenScope.value});
|
|
56
|
+
`);
|
|
57
|
+
const token = builder.build(biscuitPrivateKey);
|
|
58
|
+
return base64.encode(token.toBytes());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Derives the public key from a private key.
|
|
62
|
+
* @param privateKey Base58-encoded P256 private key (32 bytes)
|
|
63
|
+
* @returns Base58-encoded compressed public key (33 bytes)
|
|
64
|
+
*/
|
|
65
|
+
export function derivePublicKey(privateKey) {
|
|
66
|
+
return SigningKey.fromBase58(privateKey).publicKeyBase58();
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=biscuit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"biscuit.js","sourceRoot":"","sources":["../../../src/auth/biscuit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createBiscuitToken, derivePublicKey, type BiscuitTokenOptions } from "./biscuit.js";
|
|
2
|
+
export { signRequest, signHeaders, type SignRequestOptions, type SignHeadersOptions } from "./sign.js";
|
|
3
|
+
export { createPkiAuth, type PkiAuthConfig, type PkiAuthContext } from "./pki-auth.js";
|
|
4
|
+
export { SigningKey } from "./signing-key.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACvG,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAA4B,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAoD,MAAM,WAAW,CAAC;AACvG,OAAO,EAAE,aAAa,EAA2C,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|