@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,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,115 @@
|
|
|
1
|
+
const DEFAULT_SCHEME = "https";
|
|
2
|
+
const DEFAULT_API_PATH = "/v1";
|
|
3
|
+
const BASIN_PLACEHOLDER_SENTINEL = "__basin__";
|
|
4
|
+
function hasScheme(input) {
|
|
5
|
+
return /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(input);
|
|
6
|
+
}
|
|
7
|
+
function firstDelimiterIndex(value, fromIndex) {
|
|
8
|
+
const slash = value.indexOf("/", fromIndex);
|
|
9
|
+
const query = value.indexOf("?", fromIndex);
|
|
10
|
+
const hash = value.indexOf("#", fromIndex);
|
|
11
|
+
const candidates = [slash, query, hash].filter((idx) => idx !== -1);
|
|
12
|
+
return candidates.length ? Math.min(...candidates) : -1;
|
|
13
|
+
}
|
|
14
|
+
function hasExplicitPath(input) {
|
|
15
|
+
const trimmed = input.trim();
|
|
16
|
+
const schemeMatch = trimmed.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):\/\//);
|
|
17
|
+
const authorityStart = schemeMatch ? schemeMatch[0].length : 0;
|
|
18
|
+
const delim = firstDelimiterIndex(trimmed, authorityStart);
|
|
19
|
+
return delim !== -1 && trimmed[delim] === "/";
|
|
20
|
+
}
|
|
21
|
+
function normalizeForUrlParsing(input) {
|
|
22
|
+
const trimmed = input.trim();
|
|
23
|
+
const withScheme = hasScheme(trimmed)
|
|
24
|
+
? trimmed
|
|
25
|
+
: `${DEFAULT_SCHEME}://${trimmed}`;
|
|
26
|
+
return withScheme.replaceAll("{basin}", BASIN_PLACEHOLDER_SENTINEL);
|
|
27
|
+
}
|
|
28
|
+
function asScheme(protocol) {
|
|
29
|
+
const normalized = protocol.replace(":", "").toLowerCase();
|
|
30
|
+
if (normalized === "http" || normalized === "https")
|
|
31
|
+
return normalized;
|
|
32
|
+
throw new Error(`Unsupported scheme: ${protocol}`);
|
|
33
|
+
}
|
|
34
|
+
export class EndpointTemplate {
|
|
35
|
+
raw;
|
|
36
|
+
scheme;
|
|
37
|
+
hostTemplate;
|
|
38
|
+
port;
|
|
39
|
+
pathTemplate;
|
|
40
|
+
hasBasinPlaceholder;
|
|
41
|
+
explicitPathProvided;
|
|
42
|
+
constructor({ endpoint }) {
|
|
43
|
+
const raw = endpoint.trim();
|
|
44
|
+
if (!raw) {
|
|
45
|
+
throw new Error("Endpoint cannot be empty");
|
|
46
|
+
}
|
|
47
|
+
const explicitPathProvided = hasExplicitPath(raw);
|
|
48
|
+
const parsed = new URL(normalizeForUrlParsing(raw));
|
|
49
|
+
this.raw = raw;
|
|
50
|
+
this.scheme = asScheme(parsed.protocol);
|
|
51
|
+
this.hostTemplate = parsed.hostname.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
52
|
+
this.port = parsed.port;
|
|
53
|
+
const parsedPath = parsed.pathname.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
54
|
+
const parsedQuery = parsed.search.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
55
|
+
const parsedHash = parsed.hash.replaceAll(BASIN_PLACEHOLDER_SENTINEL, "{basin}");
|
|
56
|
+
this.pathTemplate = explicitPathProvided
|
|
57
|
+
? `${parsedPath}${parsedQuery}${parsedHash}`
|
|
58
|
+
: DEFAULT_API_PATH;
|
|
59
|
+
this.explicitPathProvided = explicitPathProvided;
|
|
60
|
+
this.hasBasinPlaceholder =
|
|
61
|
+
this.raw.includes("{basin}") ||
|
|
62
|
+
this.hostTemplate.includes("{basin}") ||
|
|
63
|
+
this.pathTemplate.includes("{basin}");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve the template into a base URL string.
|
|
67
|
+
*
|
|
68
|
+
* - If `{basin}` appears in the hostname, it is substituted verbatim (basin names are validated by S2.basin()).
|
|
69
|
+
* - If `{basin}` appears in the path/query/hash, it is substituted via `encodeURIComponent`.
|
|
70
|
+
*/
|
|
71
|
+
baseUrl(basin) {
|
|
72
|
+
const host = basin
|
|
73
|
+
? this.hostTemplate.replaceAll("{basin}", basin)
|
|
74
|
+
: this.hostTemplate;
|
|
75
|
+
const path = basin
|
|
76
|
+
? this.pathTemplate.replaceAll("{basin}", encodeURIComponent(basin))
|
|
77
|
+
: this.pathTemplate;
|
|
78
|
+
const authority = this.port ? `${host}:${this.port}` : host;
|
|
79
|
+
return `${this.scheme}://${authority}${path}`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const DEFAULT_ACCOUNT_ENDPOINT = "aws.s2.dev";
|
|
83
|
+
const DEFAULT_BASIN_ENDPOINT = "{basin}.b.aws.s2.dev";
|
|
84
|
+
/**
|
|
85
|
+
* Endpoint configuration for the S2 environment.
|
|
86
|
+
*
|
|
87
|
+
* This mirrors the Rust SDK's endpoint model, with an additional capability:
|
|
88
|
+
* the basin endpoint may include `{basin}` anywhere (hostname and/or path).
|
|
89
|
+
*/
|
|
90
|
+
export class S2Endpoints {
|
|
91
|
+
account;
|
|
92
|
+
basin;
|
|
93
|
+
/**
|
|
94
|
+
* When true, include `s2-basin: <name>` header on basin-scoped requests.
|
|
95
|
+
*
|
|
96
|
+
* Per project convention: enabled whenever a non-default basin endpoint is provided.
|
|
97
|
+
*/
|
|
98
|
+
includeBasinHeader;
|
|
99
|
+
constructor(init) {
|
|
100
|
+
this.account = new EndpointTemplate({
|
|
101
|
+
endpoint: init?.account ?? DEFAULT_ACCOUNT_ENDPOINT,
|
|
102
|
+
});
|
|
103
|
+
this.basin = new EndpointTemplate({
|
|
104
|
+
endpoint: init?.basin ?? DEFAULT_BASIN_ENDPOINT,
|
|
105
|
+
});
|
|
106
|
+
this.includeBasinHeader = init?.basin !== undefined;
|
|
107
|
+
}
|
|
108
|
+
accountBaseUrl() {
|
|
109
|
+
return this.account.baseUrl();
|
|
110
|
+
}
|
|
111
|
+
basinBaseUrl(basin) {
|
|
112
|
+
return this.basin.baseUrl(basin);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/endpoints.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAW,OAAO,CAAC;AACvC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,0BAA0B,GAAG,WAAW,CAAC;AAE/C,SAAS,SAAS,CAAC,KAAa;IAC/B,OAAO,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,SAAiB;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3D,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;AAC/C,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;QACpC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,cAAc,MAAM,OAAO,EAAE,CAAC;IACpC,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB;IACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3D,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,UAAU,CAAC;IACvE,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;AACpD,CAAC;AAeD,MAAM,OAAO,gBAAgB;IACZ,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,YAAY,CAAS;IACrB,IAAI,CAAS;IACb,YAAY,CAAS;IACrB,mBAAmB,CAAU;IAC7B,oBAAoB,CAAU;IAE9C,YAAY,EAAE,QAAQ,EAAwB;QAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC7C,0BAA0B,EAC1B,SAAS,CACT,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAExB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC5C,0BAA0B,EAC1B,SAAS,CACT,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAC3C,0BAA0B,EAC1B,SAAS,CACT,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CACxC,0BAA0B,EAC1B,SAAS,CACT,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,oBAAoB;YACvC,CAAC,CAAC,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,EAAE;YAC5C,CAAC,CAAC,gBAAgB,CAAC;QACpB,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,mBAAmB;YACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACI,OAAO,CAAC,KAAc;QAC5B,MAAM,IAAI,GAAG,KAAK;YACjB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAErB,MAAM,IAAI,GAAG,KAAK;YACjB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,OAAO,GAAG,IAAI,CAAC,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC;IAC/C,CAAC;CACD;AAeD,MAAM,wBAAwB,GAAG,YAAY,CAAC;AAC9C,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACP,OAAO,CAAmB;IAC1B,KAAK,CAAmB;IACxC;;;;OAIG;IACa,kBAAkB,CAAU;IAE5C,YAAY,IAAsB;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC;YACnC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,wBAAwB;SACnD,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC;YACjC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,sBAAsB;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC;IACrD,CAAC;IAEM,cAAc;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAEM,YAAY,CAAC,KAAa;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACD"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
export declare function s2Error(error: any): S2Error;
|
|
2
|
+
export declare function withS2Error<T>(fn: () => Promise<T>): Promise<T>;
|
|
3
|
+
/**
|
|
4
|
+
* Execute a generated client call and return its `data` on success.
|
|
5
|
+
* Throws S2Error when the response contains `error`, or when the
|
|
6
|
+
* response has no `data` and is not a 204 No Content.
|
|
7
|
+
*/
|
|
8
|
+
export declare function withS2Data<T>(fn: () => Promise<{
|
|
9
|
+
data?: T;
|
|
10
|
+
error?: unknown;
|
|
11
|
+
response?: {
|
|
12
|
+
status?: number;
|
|
13
|
+
statusText?: string;
|
|
14
|
+
};
|
|
15
|
+
} | T>): Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Rich error type used by the SDK to surface HTTP and protocol errors.
|
|
18
|
+
*
|
|
19
|
+
* - `code` is the service error code when available.
|
|
20
|
+
* - `status` is the HTTP status code.
|
|
21
|
+
* - `data` may include structured error details (e.g. for conditional failures).
|
|
22
|
+
*/
|
|
23
|
+
export declare class S2Error extends Error {
|
|
24
|
+
readonly code?: string;
|
|
25
|
+
/** HTTP status code. 0 for non-HTTP/internal errors. */
|
|
26
|
+
readonly status: number;
|
|
27
|
+
/** Optional structured error details for diagnostics. */
|
|
28
|
+
readonly data?: unknown;
|
|
29
|
+
/** Origin of the error: server (HTTP response) or sdk (local). */
|
|
30
|
+
readonly origin: "server" | "sdk";
|
|
31
|
+
constructor({ message, code, status, data, origin, }: {
|
|
32
|
+
message: string;
|
|
33
|
+
code?: string;
|
|
34
|
+
status?: number;
|
|
35
|
+
data?: unknown;
|
|
36
|
+
origin?: "server" | "sdk";
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/** Helper: construct a non-retryable invariant violation error (status 0). */
|
|
40
|
+
export declare function invariantViolation(message: string, details?: unknown): S2Error;
|
|
41
|
+
/** Helper: construct an internal SDK error (status 0, never retried). */
|
|
42
|
+
export declare function internalSdkError(message: string, details?: unknown): S2Error;
|
|
43
|
+
/** Helper: construct an aborted/cancelled error (499). */
|
|
44
|
+
export declare function abortedError(message?: string): S2Error;
|
|
45
|
+
/**
|
|
46
|
+
* Thrown when an append operation fails due to a sequence number mismatch.
|
|
47
|
+
*
|
|
48
|
+
* This occurs when you specify a `matchSeqNum` condition in your append request,
|
|
49
|
+
* but the current tail sequence number of the stream doesn't match.
|
|
50
|
+
*
|
|
51
|
+
* The `expectedSeqNum` property contains the actual next sequence number
|
|
52
|
+
* that should be used for a successful append.
|
|
53
|
+
*/
|
|
54
|
+
export declare class SeqNumMismatchError extends S2Error {
|
|
55
|
+
/** The expected next sequence number for the stream. */
|
|
56
|
+
readonly expectedSeqNum: number;
|
|
57
|
+
constructor({ message, code, status, expectedSeqNum, }: {
|
|
58
|
+
message: string;
|
|
59
|
+
code?: string;
|
|
60
|
+
status?: number;
|
|
61
|
+
expectedSeqNum: number;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Thrown when an append operation fails due to a fencing token mismatch.
|
|
66
|
+
*
|
|
67
|
+
* This occurs when you specify a `fencingToken` condition in your append request,
|
|
68
|
+
* but the current fencing token of the stream doesn't match.
|
|
69
|
+
*
|
|
70
|
+
* The `expectedFencingToken` property contains the actual fencing token
|
|
71
|
+
* that should be used for a successful append.
|
|
72
|
+
*/
|
|
73
|
+
export declare class FencingTokenMismatchError extends S2Error {
|
|
74
|
+
/** The expected fencing token for the stream. */
|
|
75
|
+
readonly expectedFencingToken: string;
|
|
76
|
+
constructor({ message, code, status, expectedFencingToken, }: {
|
|
77
|
+
message: string;
|
|
78
|
+
code?: string;
|
|
79
|
+
status?: number;
|
|
80
|
+
expectedFencingToken: string;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Thrown when a read operation fails because the requested position is beyond the stream tail.
|
|
85
|
+
*
|
|
86
|
+
* This occurs when you specify a `startSeqNum` that is greater than the current tail
|
|
87
|
+
* of the stream (HTTP 416 Range Not Satisfiable).
|
|
88
|
+
*
|
|
89
|
+
* The `tail` property contains the current tail position of the stream.
|
|
90
|
+
*
|
|
91
|
+
* To handle this gracefully, you can set `clamp: true` in your read options to
|
|
92
|
+
* automatically start from the tail instead of throwing an error.
|
|
93
|
+
*/
|
|
94
|
+
export declare class RangeNotSatisfiableError extends S2Error {
|
|
95
|
+
/** The current tail position of the stream. */
|
|
96
|
+
readonly tail?: {
|
|
97
|
+
seq_num: number;
|
|
98
|
+
timestamp: number;
|
|
99
|
+
};
|
|
100
|
+
constructor({ code, status, tail, }?: {
|
|
101
|
+
code?: string;
|
|
102
|
+
status?: number;
|
|
103
|
+
tail?: {
|
|
104
|
+
seq_num: number;
|
|
105
|
+
timestamp: number;
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build a generic S2Error from HTTP status and optional payload.
|
|
111
|
+
* If the payload contains a structured { message, code }, those are preferred.
|
|
112
|
+
*/
|
|
113
|
+
export declare function makeServerError(response: {
|
|
114
|
+
status?: number;
|
|
115
|
+
statusText?: string;
|
|
116
|
+
}, payload?: unknown): S2Error;
|
|
117
|
+
/** Map 412 Precondition Failed append errors to rich error types. */
|
|
118
|
+
export declare function makeAppendPreconditionError(status: number, json: any): S2Error;
|
|
119
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
function getErrorCode(error) {
|
|
2
|
+
if (!(error instanceof Error))
|
|
3
|
+
return undefined;
|
|
4
|
+
const err = error;
|
|
5
|
+
if (typeof err.code === "string")
|
|
6
|
+
return err.code;
|
|
7
|
+
if (err.cause && typeof err.cause === "object") {
|
|
8
|
+
const cause = err.cause;
|
|
9
|
+
if (typeof cause.code === "string") {
|
|
10
|
+
return cause.code;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
function isConnectionError(error) {
|
|
16
|
+
if (!(error instanceof Error)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (error.message.includes("fetch failed")) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const code = getErrorCode(error);
|
|
23
|
+
// Common connection error codes from Node.js net module
|
|
24
|
+
const connectionErrorCodes = [
|
|
25
|
+
"ECONNREFUSED", // Connection refused
|
|
26
|
+
"ENOTFOUND", // DNS lookup failed
|
|
27
|
+
"ETIMEDOUT", // Connection timeout
|
|
28
|
+
"ENETUNREACH", // Network unreachable
|
|
29
|
+
"EHOSTUNREACH", // Host unreachable
|
|
30
|
+
"ECONNRESET", // Connection reset by peer
|
|
31
|
+
"EPIPE", // Broken pipe
|
|
32
|
+
];
|
|
33
|
+
return typeof code === "string" && connectionErrorCodes.includes(code);
|
|
34
|
+
}
|
|
35
|
+
export function s2Error(error) {
|
|
36
|
+
if (error instanceof S2Error) {
|
|
37
|
+
return error;
|
|
38
|
+
}
|
|
39
|
+
// Connection error?
|
|
40
|
+
if (isConnectionError(error)) {
|
|
41
|
+
const code = getErrorCode(error) ?? "NETWORK_ERROR";
|
|
42
|
+
// DNS failures are typically not transient - don't retry
|
|
43
|
+
if (code === "ENOTFOUND") {
|
|
44
|
+
return new S2Error({
|
|
45
|
+
message: `DNS resolution failed (ENOTFOUND)`,
|
|
46
|
+
code,
|
|
47
|
+
status: 400, // Client error - not retryable
|
|
48
|
+
origin: "sdk",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
// Other connection errors are transient - retryable
|
|
52
|
+
return new S2Error({
|
|
53
|
+
message: `Connection failed: ${code}`,
|
|
54
|
+
code,
|
|
55
|
+
status: 502, // Bad Gateway for upstream/network issues
|
|
56
|
+
origin: "sdk",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// Abort error?
|
|
60
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
61
|
+
return new S2Error({
|
|
62
|
+
message: "Request cancelled",
|
|
63
|
+
status: 499, // Client Closed Request (nginx non-standard)
|
|
64
|
+
origin: "sdk",
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// Other unknown errors
|
|
68
|
+
return new S2Error({
|
|
69
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
70
|
+
status: 0, // Non-HTTP/internal error sentinel
|
|
71
|
+
origin: "sdk",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export async function withS2Error(fn) {
|
|
75
|
+
try {
|
|
76
|
+
const result = await fn();
|
|
77
|
+
// Support response-parsing mode (throwOnError=false):
|
|
78
|
+
// Generated client responses have shape { data, error?, response }
|
|
79
|
+
if (result &&
|
|
80
|
+
typeof result === "object" &&
|
|
81
|
+
Object.prototype.hasOwnProperty.call(result, "error")) {
|
|
82
|
+
const err = result.error;
|
|
83
|
+
if (err) {
|
|
84
|
+
const status = result.response?.status ?? 500;
|
|
85
|
+
const statusText = result.response?.statusText;
|
|
86
|
+
// If server provided structured error with message/code, use it
|
|
87
|
+
if (typeof err === "object" && "message" in err) {
|
|
88
|
+
const structured = err;
|
|
89
|
+
throw new S2Error({
|
|
90
|
+
message: typeof structured.message === "string"
|
|
91
|
+
? structured.message
|
|
92
|
+
: (statusText ?? "Error"),
|
|
93
|
+
code: typeof structured.code === "string" ? structured.code : undefined,
|
|
94
|
+
status,
|
|
95
|
+
origin: "server",
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// Fallback: synthesize from HTTP response metadata
|
|
99
|
+
throw new S2Error({
|
|
100
|
+
message: statusText ?? "Request failed",
|
|
101
|
+
status,
|
|
102
|
+
origin: "server",
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
// Network and other thrown errors
|
|
110
|
+
throw s2Error(error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Execute a generated client call and return its `data` on success.
|
|
115
|
+
* Throws S2Error when the response contains `error`, or when the
|
|
116
|
+
* response has no `data` and is not a 204 No Content.
|
|
117
|
+
*/
|
|
118
|
+
export async function withS2Data(fn) {
|
|
119
|
+
try {
|
|
120
|
+
const res = await fn();
|
|
121
|
+
if (res &&
|
|
122
|
+
typeof res === "object" &&
|
|
123
|
+
(Object.prototype.hasOwnProperty.call(res, "error") ||
|
|
124
|
+
Object.prototype.hasOwnProperty.call(res, "data") ||
|
|
125
|
+
Object.prototype.hasOwnProperty.call(res, "response"))) {
|
|
126
|
+
const status = res.response?.status ?? 500;
|
|
127
|
+
const statusText = res.response?.statusText;
|
|
128
|
+
if (res.error) {
|
|
129
|
+
const err = res.error;
|
|
130
|
+
if (typeof err === "object" && "message" in err) {
|
|
131
|
+
const structured = err;
|
|
132
|
+
throw new S2Error({
|
|
133
|
+
message: typeof structured.message === "string"
|
|
134
|
+
? structured.message
|
|
135
|
+
: (statusText ?? "Error"),
|
|
136
|
+
code: typeof structured.code === "string" ? structured.code : undefined,
|
|
137
|
+
status,
|
|
138
|
+
origin: "server",
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
throw new S2Error({
|
|
142
|
+
message: statusText ?? "Request failed",
|
|
143
|
+
status,
|
|
144
|
+
origin: "server",
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
// No error
|
|
148
|
+
if (typeof res.data !== "undefined")
|
|
149
|
+
return res.data;
|
|
150
|
+
// Treat 204 as success for void endpoints
|
|
151
|
+
if (status === 204)
|
|
152
|
+
return undefined;
|
|
153
|
+
throw new S2Error({
|
|
154
|
+
message: "Empty response",
|
|
155
|
+
status,
|
|
156
|
+
origin: "server",
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// Not a generated client response; return as-is
|
|
160
|
+
return res;
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
throw s2Error(error);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Rich error type used by the SDK to surface HTTP and protocol errors.
|
|
168
|
+
*
|
|
169
|
+
* - `code` is the service error code when available.
|
|
170
|
+
* - `status` is the HTTP status code.
|
|
171
|
+
* - `data` may include structured error details (e.g. for conditional failures).
|
|
172
|
+
*/
|
|
173
|
+
export class S2Error extends Error {
|
|
174
|
+
code;
|
|
175
|
+
/** HTTP status code. 0 for non-HTTP/internal errors. */
|
|
176
|
+
status;
|
|
177
|
+
/** Optional structured error details for diagnostics. */
|
|
178
|
+
data;
|
|
179
|
+
/** Origin of the error: server (HTTP response) or sdk (local). */
|
|
180
|
+
origin;
|
|
181
|
+
constructor({ message, code, status, data, origin, }) {
|
|
182
|
+
super(message);
|
|
183
|
+
this.code = code;
|
|
184
|
+
// Ensure status is always a number (0 for non-HTTP/internal errors)
|
|
185
|
+
this.status = typeof status === "number" ? status : 0;
|
|
186
|
+
this.data = data;
|
|
187
|
+
this.origin = origin ?? "sdk";
|
|
188
|
+
this.name = "S2Error";
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/** Helper: construct a non-retryable invariant violation error (status 0). */
|
|
192
|
+
export function invariantViolation(message, details) {
|
|
193
|
+
return new S2Error({
|
|
194
|
+
message: `Invariant violation: ${message}`,
|
|
195
|
+
code: "INTERNAL_ERROR",
|
|
196
|
+
status: 0,
|
|
197
|
+
origin: "sdk",
|
|
198
|
+
data: details,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
/** Helper: construct an internal SDK error (status 0, never retried). */
|
|
202
|
+
export function internalSdkError(message, details) {
|
|
203
|
+
return new S2Error({
|
|
204
|
+
message: `Internal SDK error: ${message}`,
|
|
205
|
+
code: "INTERNAL_SDK_ERROR",
|
|
206
|
+
status: 0,
|
|
207
|
+
origin: "sdk",
|
|
208
|
+
data: details,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
/** Helper: construct an aborted/cancelled error (499). */
|
|
212
|
+
export function abortedError(message = "Request cancelled") {
|
|
213
|
+
return new S2Error({
|
|
214
|
+
message,
|
|
215
|
+
code: "ABORTED",
|
|
216
|
+
status: 499,
|
|
217
|
+
origin: "sdk",
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Thrown when an append operation fails due to a sequence number mismatch.
|
|
222
|
+
*
|
|
223
|
+
* This occurs when you specify a `matchSeqNum` condition in your append request,
|
|
224
|
+
* but the current tail sequence number of the stream doesn't match.
|
|
225
|
+
*
|
|
226
|
+
* The `expectedSeqNum` property contains the actual next sequence number
|
|
227
|
+
* that should be used for a successful append.
|
|
228
|
+
*/
|
|
229
|
+
export class SeqNumMismatchError extends S2Error {
|
|
230
|
+
/** The expected next sequence number for the stream. */
|
|
231
|
+
expectedSeqNum;
|
|
232
|
+
constructor({ message, code, status, expectedSeqNum, }) {
|
|
233
|
+
super({
|
|
234
|
+
message: `${message}\nExpected sequence number: ${expectedSeqNum}`,
|
|
235
|
+
code,
|
|
236
|
+
status,
|
|
237
|
+
origin: "server",
|
|
238
|
+
});
|
|
239
|
+
this.name = "SeqNumMismatchError";
|
|
240
|
+
this.expectedSeqNum = expectedSeqNum;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Thrown when an append operation fails due to a fencing token mismatch.
|
|
245
|
+
*
|
|
246
|
+
* This occurs when you specify a `fencingToken` condition in your append request,
|
|
247
|
+
* but the current fencing token of the stream doesn't match.
|
|
248
|
+
*
|
|
249
|
+
* The `expectedFencingToken` property contains the actual fencing token
|
|
250
|
+
* that should be used for a successful append.
|
|
251
|
+
*/
|
|
252
|
+
export class FencingTokenMismatchError extends S2Error {
|
|
253
|
+
/** The expected fencing token for the stream. */
|
|
254
|
+
expectedFencingToken;
|
|
255
|
+
constructor({ message, code, status, expectedFencingToken, }) {
|
|
256
|
+
super({
|
|
257
|
+
message: `${message}\nExpected fencing token: ${expectedFencingToken}`,
|
|
258
|
+
code,
|
|
259
|
+
status,
|
|
260
|
+
origin: "server",
|
|
261
|
+
});
|
|
262
|
+
this.name = "FencingTokenMismatchError";
|
|
263
|
+
this.expectedFencingToken = expectedFencingToken;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Thrown when a read operation fails because the requested position is beyond the stream tail.
|
|
268
|
+
*
|
|
269
|
+
* This occurs when you specify a `startSeqNum` that is greater than the current tail
|
|
270
|
+
* of the stream (HTTP 416 Range Not Satisfiable).
|
|
271
|
+
*
|
|
272
|
+
* The `tail` property contains the current tail position of the stream.
|
|
273
|
+
*
|
|
274
|
+
* To handle this gracefully, you can set `clamp: true` in your read options to
|
|
275
|
+
* automatically start from the tail instead of throwing an error.
|
|
276
|
+
*/
|
|
277
|
+
export class RangeNotSatisfiableError extends S2Error {
|
|
278
|
+
/** The current tail position of the stream. */
|
|
279
|
+
tail;
|
|
280
|
+
constructor({ code, status = 416, tail, } = {}) {
|
|
281
|
+
const message = tail
|
|
282
|
+
? `Range not satisfiable: requested position is beyond the stream tail (seq_num=${tail.seq_num}). Use 'clamp: true' to start from the tail instead.`
|
|
283
|
+
: "Range not satisfiable: requested position is beyond the stream tail. Use 'clamp: true' to start from the tail instead.";
|
|
284
|
+
super({
|
|
285
|
+
message,
|
|
286
|
+
code,
|
|
287
|
+
status,
|
|
288
|
+
origin: "server",
|
|
289
|
+
});
|
|
290
|
+
this.name = "RangeNotSatisfiableError";
|
|
291
|
+
this.tail = tail;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Build a generic S2Error from HTTP status and optional payload.
|
|
296
|
+
* If the payload contains a structured { message, code }, those are preferred.
|
|
297
|
+
*/
|
|
298
|
+
export function makeServerError(response, payload) {
|
|
299
|
+
const status = typeof response.status === "number" ? response.status : 500;
|
|
300
|
+
// Pull message/code from structured payload when present
|
|
301
|
+
if (payload && typeof payload === "object" && "message" in payload) {
|
|
302
|
+
const structured = payload;
|
|
303
|
+
return new S2Error({
|
|
304
|
+
message: typeof structured.message === "string"
|
|
305
|
+
? structured.message
|
|
306
|
+
: (response.statusText ?? "Error"),
|
|
307
|
+
code: typeof structured.code === "string" ? structured.code : undefined,
|
|
308
|
+
status,
|
|
309
|
+
origin: "server",
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
// Fallbacks
|
|
313
|
+
let message = undefined;
|
|
314
|
+
if (typeof payload === "string" && payload.trim().length > 0) {
|
|
315
|
+
message = payload;
|
|
316
|
+
}
|
|
317
|
+
return new S2Error({
|
|
318
|
+
message: message ?? response.statusText ?? "Request failed",
|
|
319
|
+
status,
|
|
320
|
+
origin: "server",
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
/** Map 412 Precondition Failed append errors to rich error types. */
|
|
324
|
+
export function makeAppendPreconditionError(status, json) {
|
|
325
|
+
if (json && typeof json === "object") {
|
|
326
|
+
if ("seq_num_mismatch" in json) {
|
|
327
|
+
const expected = Number(json.seq_num_mismatch);
|
|
328
|
+
return new SeqNumMismatchError({
|
|
329
|
+
message: "Append condition failed: sequence number mismatch",
|
|
330
|
+
code: "APPEND_CONDITION_FAILED",
|
|
331
|
+
status,
|
|
332
|
+
expectedSeqNum: expected,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
if ("fencing_token_mismatch" in json) {
|
|
336
|
+
const expected = String(json.fencing_token_mismatch);
|
|
337
|
+
return new FencingTokenMismatchError({
|
|
338
|
+
message: "Append condition failed: fencing token mismatch",
|
|
339
|
+
code: "APPEND_CONDITION_FAILED",
|
|
340
|
+
status,
|
|
341
|
+
expectedFencingToken: expected,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
if ("message" in json) {
|
|
345
|
+
return new S2Error({
|
|
346
|
+
message: json.message ?? "Append condition failed",
|
|
347
|
+
status,
|
|
348
|
+
origin: "server",
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return new S2Error({
|
|
353
|
+
message: "Append condition failed",
|
|
354
|
+
status,
|
|
355
|
+
origin: "server",
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=error.js.map
|