@s2-dev/streamstore 0.20.0 → 0.22.0
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 -201
- package/README.md +60 -10
- package/dist/cjs/accessTokens.d.ts +27 -14
- package/dist/cjs/accessTokens.d.ts.map +1 -1
- package/dist/cjs/accessTokens.js +72 -8
- package/dist/cjs/accessTokens.js.map +1 -1
- package/dist/cjs/basins.d.ts +29 -19
- package/dist/cjs/basins.d.ts.map +1 -1
- package/dist/cjs/basins.js +119 -9
- package/dist/cjs/basins.js.map +1 -1
- package/dist/cjs/batch-transform.d.ts +12 -16
- package/dist/cjs/batch-transform.d.ts.map +1 -1
- package/dist/cjs/batch-transform.js +17 -21
- package/dist/cjs/batch-transform.js.map +1 -1
- package/dist/cjs/common.d.ts +31 -24
- package/dist/cjs/common.d.ts.map +1 -1
- package/dist/cjs/common.js +22 -0
- package/dist/cjs/common.js.map +1 -1
- 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 +12 -2
- package/dist/cjs/error.d.ts.map +1 -1
- package/dist/cjs/error.js +20 -1
- package/dist/cjs/error.js.map +1 -1
- package/dist/cjs/generated/types.gen.d.ts +11 -20
- package/dist/cjs/generated/types.gen.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +30 -46
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +50 -26
- package/dist/cjs/index.js.map +1 -1
- 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 +8 -0
- package/dist/cjs/lib/base64.d.ts.map +1 -1
- package/dist/cjs/lib/base64.js +32 -12
- package/dist/cjs/lib/base64.js.map +1 -1
- package/dist/cjs/lib/event-stream.d.ts.map +1 -1
- package/dist/cjs/lib/event-stream.js +2 -1
- package/dist/cjs/lib/event-stream.js.map +1 -1
- package/dist/cjs/lib/paginate.d.ts +57 -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/result.d.ts +1 -1
- package/dist/cjs/lib/result.d.ts.map +1 -1
- package/dist/cjs/lib/retry.d.ts +47 -31
- package/dist/cjs/lib/retry.d.ts.map +1 -1
- package/dist/cjs/lib/retry.js +302 -201
- package/dist/cjs/lib/retry.js.map +1 -1
- package/dist/cjs/lib/stream/runtime.d.ts +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts +7 -9
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.js +38 -39
- package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +7 -2
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.js +62 -111
- package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
- 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/index.d.ts +3 -3
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/s2s/index.js +139 -86
- package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/cjs/lib/stream/types.d.ts +81 -36
- package/dist/cjs/lib/stream/types.d.ts.map +1 -1
- package/dist/cjs/lib/stream/types.js +18 -0
- package/dist/cjs/lib/stream/types.js.map +1 -1
- package/dist/cjs/metrics.d.ts +18 -17
- package/dist/cjs/metrics.d.ts.map +1 -1
- package/dist/cjs/metrics.js +67 -12
- package/dist/cjs/metrics.js.map +1 -1
- 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 +1 -2
- package/dist/cjs/s2.d.ts.map +1 -1
- package/dist/cjs/s2.js +9 -9
- package/dist/cjs/s2.js.map +1 -1
- package/dist/cjs/stream.d.ts +26 -12
- package/dist/cjs/stream.d.ts.map +1 -1
- package/dist/cjs/stream.js +77 -13
- package/dist/cjs/stream.js.map +1 -1
- package/dist/cjs/streams.d.ts +29 -19
- package/dist/cjs/streams.d.ts.map +1 -1
- package/dist/cjs/streams.js +120 -9
- package/dist/cjs/streams.js.map +1 -1
- package/dist/cjs/types.d.ts +624 -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 +1 -22
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +0 -42
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/accessTokens.d.ts +27 -14
- package/dist/esm/accessTokens.d.ts.map +1 -1
- package/dist/esm/accessTokens.js +73 -9
- package/dist/esm/accessTokens.js.map +1 -1
- package/dist/esm/basins.d.ts +29 -19
- package/dist/esm/basins.d.ts.map +1 -1
- package/dist/esm/basins.js +119 -9
- package/dist/esm/basins.js.map +1 -1
- package/dist/esm/batch-transform.d.ts +12 -16
- package/dist/esm/batch-transform.d.ts.map +1 -1
- package/dist/esm/batch-transform.js +18 -22
- package/dist/esm/batch-transform.js.map +1 -1
- package/dist/esm/common.d.ts +31 -24
- package/dist/esm/common.d.ts.map +1 -1
- package/dist/esm/common.js +20 -1
- package/dist/esm/common.js.map +1 -1
- 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 +12 -2
- package/dist/esm/error.d.ts.map +1 -1
- package/dist/esm/error.js +20 -1
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/generated/types.gen.d.ts +11 -20
- package/dist/esm/generated/types.gen.d.ts.map +1 -1
- package/dist/esm/index.d.ts +30 -46
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +33 -19
- package/dist/esm/index.js.map +1 -1
- 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 +8 -0
- package/dist/esm/lib/base64.d.ts.map +1 -1
- package/dist/esm/lib/base64.js +30 -11
- package/dist/esm/lib/base64.js.map +1 -1
- package/dist/esm/lib/event-stream.d.ts.map +1 -1
- package/dist/esm/lib/event-stream.js +2 -1
- package/dist/esm/lib/event-stream.js.map +1 -1
- package/dist/esm/lib/paginate.d.ts +57 -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/result.d.ts +1 -1
- package/dist/esm/lib/result.d.ts.map +1 -1
- package/dist/esm/lib/retry.d.ts +47 -31
- package/dist/esm/lib/retry.d.ts.map +1 -1
- package/dist/esm/lib/retry.js +303 -201
- package/dist/esm/lib/retry.js.map +1 -1
- package/dist/esm/lib/stream/runtime.d.ts +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.d.ts +7 -9
- package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.js +40 -41
- package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts +7 -2
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.js +64 -113
- package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
- 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/index.d.ts +3 -3
- package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/s2s/index.js +140 -86
- package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/esm/lib/stream/types.d.ts +81 -36
- package/dist/esm/lib/stream/types.d.ts.map +1 -1
- package/dist/esm/lib/stream/types.js +17 -1
- package/dist/esm/lib/stream/types.js.map +1 -1
- package/dist/esm/metrics.d.ts +18 -17
- package/dist/esm/metrics.d.ts.map +1 -1
- package/dist/esm/metrics.js +66 -12
- package/dist/esm/metrics.js.map +1 -1
- 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 +1 -2
- package/dist/esm/s2.d.ts.map +1 -1
- package/dist/esm/s2.js +9 -9
- package/dist/esm/s2.js.map +1 -1
- package/dist/esm/stream.d.ts +26 -12
- package/dist/esm/stream.d.ts.map +1 -1
- package/dist/esm/stream.js +79 -15
- package/dist/esm/stream.js.map +1 -1
- package/dist/esm/streams.d.ts +29 -19
- package/dist/esm/streams.d.ts.map +1 -1
- package/dist/esm/streams.js +120 -9
- package/dist/esm/streams.js.map +1 -1
- package/dist/esm/types.d.ts +624 -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 +1 -22
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +0 -41
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +4 -3
package/dist/cjs/index.js
CHANGED
|
@@ -1,47 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Core Client
|
|
4
|
+
// =============================================================================
|
|
3
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.utf8ByteLength = exports.meteredBytes = exports.
|
|
5
|
-
var accessTokens_js_1 = require("./accessTokens.js");
|
|
6
|
-
Object.defineProperty(exports, "S2AccessTokens", { enumerable: true, get: function () { return accessTokens_js_1.S2AccessTokens; } });
|
|
6
|
+
exports.utf8ByteLength = exports.meteredBytes = exports.paginate = exports.randomToken = exports.SeqNumMismatchError = exports.S2Error = exports.RangeNotSatisfiableError = exports.FencingTokenMismatchError = exports.API = exports.MAX_APPEND_RECORDS = exports.MAX_APPEND_BYTES = exports.AppendRecord = exports.AppendInput = exports.RecordSubmitTicket = exports.Producer = exports.IndexedAppendAck = exports.BatchTransform = exports.S2Streams = exports.S2Metrics = exports.S2Basins = exports.S2AccessTokens = exports.S2Stream = exports.S2 = exports.S2Endpoints = exports.S2Environment = exports.S2Basin = void 0;
|
|
7
7
|
var basin_js_1 = require("./basin.js");
|
|
8
8
|
Object.defineProperty(exports, "S2Basin", { enumerable: true, get: function () { return basin_js_1.S2Basin; } });
|
|
9
|
-
|
|
9
|
+
var common_js_1 = require("./common.js");
|
|
10
|
+
Object.defineProperty(exports, "S2Environment", { enumerable: true, get: function () { return common_js_1.S2Environment; } });
|
|
11
|
+
var endpoints_js_1 = require("./endpoints.js");
|
|
12
|
+
Object.defineProperty(exports, "S2Endpoints", { enumerable: true, get: function () { return endpoints_js_1.S2Endpoints; } });
|
|
13
|
+
/** Top-level entrypoint for the SDK. */
|
|
14
|
+
var s2_js_1 = require("./s2.js");
|
|
15
|
+
Object.defineProperty(exports, "S2", { enumerable: true, get: function () { return s2_js_1.S2; } });
|
|
16
|
+
var stream_js_1 = require("./stream.js");
|
|
17
|
+
Object.defineProperty(exports, "S2Stream", { enumerable: true, get: function () { return stream_js_1.S2Stream; } });
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Management Classes
|
|
20
|
+
// =============================================================================
|
|
21
|
+
var accessTokens_js_1 = require("./accessTokens.js");
|
|
22
|
+
Object.defineProperty(exports, "S2AccessTokens", { enumerable: true, get: function () { return accessTokens_js_1.S2AccessTokens; } });
|
|
10
23
|
var basins_js_1 = require("./basins.js");
|
|
11
24
|
Object.defineProperty(exports, "S2Basins", { enumerable: true, get: function () { return basins_js_1.S2Basins; } });
|
|
25
|
+
var metrics_js_1 = require("./metrics.js");
|
|
26
|
+
Object.defineProperty(exports, "S2Metrics", { enumerable: true, get: function () { return metrics_js_1.S2Metrics; } });
|
|
27
|
+
var streams_js_1 = require("./streams.js");
|
|
28
|
+
Object.defineProperty(exports, "S2Streams", { enumerable: true, get: function () { return streams_js_1.S2Streams; } });
|
|
29
|
+
// =============================================================================
|
|
30
|
+
// High-Level Helpers
|
|
31
|
+
// =============================================================================
|
|
12
32
|
/** High-level helper for transforming streams in batches. */
|
|
13
33
|
var batch_transform_js_1 = require("./batch-transform.js");
|
|
14
34
|
Object.defineProperty(exports, "BatchTransform", { enumerable: true, get: function () { return batch_transform_js_1.BatchTransform; } });
|
|
35
|
+
/** High-level producer with automatic batching. */
|
|
36
|
+
var producer_js_1 = require("./producer.js");
|
|
37
|
+
Object.defineProperty(exports, "IndexedAppendAck", { enumerable: true, get: function () { return producer_js_1.IndexedAppendAck; } });
|
|
38
|
+
Object.defineProperty(exports, "Producer", { enumerable: true, get: function () { return producer_js_1.Producer; } });
|
|
39
|
+
Object.defineProperty(exports, "RecordSubmitTicket", { enumerable: true, get: function () { return producer_js_1.RecordSubmitTicket; } });
|
|
15
40
|
/**
|
|
16
|
-
*
|
|
41
|
+
* Record types and factory functions for append operations.
|
|
17
42
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
43
|
+
* Use `AppendRecord.string()`, `AppendRecord.bytes()` to create records.
|
|
44
|
+
* Use `AppendInput.create()` to create validated append inputs.
|
|
20
45
|
*/
|
|
46
|
+
var types_js_1 = require("./types.js");
|
|
47
|
+
Object.defineProperty(exports, "AppendInput", { enumerable: true, get: function () { return types_js_1.AppendInput; } });
|
|
48
|
+
Object.defineProperty(exports, "AppendRecord", { enumerable: true, get: function () { return types_js_1.AppendRecord; } });
|
|
49
|
+
Object.defineProperty(exports, "MAX_APPEND_BYTES", { enumerable: true, get: function () { return types_js_1.MAX_APPEND_BYTES; } });
|
|
50
|
+
Object.defineProperty(exports, "MAX_APPEND_RECORDS", { enumerable: true, get: function () { return types_js_1.MAX_APPEND_RECORDS; } });
|
|
51
|
+
/**
|
|
52
|
+
* Generated API types matching the wire format (snake_case field names).
|
|
53
|
+
* Use these when you need to work with raw API data or understand the wire protocol.
|
|
54
|
+
*/
|
|
55
|
+
exports.API = require("./generated/types.gen.js");
|
|
56
|
+
// =============================================================================
|
|
57
|
+
// Error Types
|
|
58
|
+
// =============================================================================
|
|
21
59
|
var error_js_1 = require("./error.js");
|
|
22
60
|
Object.defineProperty(exports, "FencingTokenMismatchError", { enumerable: true, get: function () { return error_js_1.FencingTokenMismatchError; } });
|
|
23
61
|
Object.defineProperty(exports, "RangeNotSatisfiableError", { enumerable: true, get: function () { return error_js_1.RangeNotSatisfiableError; } });
|
|
24
62
|
Object.defineProperty(exports, "S2Error", { enumerable: true, get: function () { return error_js_1.S2Error; } });
|
|
25
63
|
Object.defineProperty(exports, "SeqNumMismatchError", { enumerable: true, get: function () { return error_js_1.SeqNumMismatchError; } });
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var s2_js_1 = require("./s2.js");
|
|
31
|
-
Object.defineProperty(exports, "S2", { enumerable: true, get: function () { return s2_js_1.S2; } });
|
|
32
|
-
var stream_js_1 = require("./stream.js");
|
|
33
|
-
Object.defineProperty(exports, "S2Stream", { enumerable: true, get: function () { return stream_js_1.S2Stream; } });
|
|
34
|
-
/** Stream management helper and argument types. */
|
|
35
|
-
var streams_js_1 = require("./streams.js");
|
|
36
|
-
Object.defineProperty(exports, "S2Streams", { enumerable: true, get: function () { return streams_js_1.S2Streams; } });
|
|
37
|
-
/**
|
|
38
|
-
* Low-level utilities for record bodies.
|
|
39
|
-
*
|
|
40
|
-
* - {@link AppendRecord} helps construct appendable records.
|
|
41
|
-
* - {@link meteredBytes} and {@link utf8ByteLength} expose sizing utilities.
|
|
42
|
-
*/
|
|
64
|
+
var base64_js_1 = require("./lib/base64.js");
|
|
65
|
+
Object.defineProperty(exports, "randomToken", { enumerable: true, get: function () { return base64_js_1.randomToken; } });
|
|
66
|
+
var paginate_js_1 = require("./lib/paginate.js");
|
|
67
|
+
Object.defineProperty(exports, "paginate", { enumerable: true, get: function () { return paginate_js_1.paginate; } });
|
|
43
68
|
var utils_js_1 = require("./utils.js");
|
|
44
|
-
Object.defineProperty(exports, "AppendRecord", { enumerable: true, get: function () { return utils_js_1.AppendRecord; } });
|
|
45
69
|
Object.defineProperty(exports, "meteredBytes", { enumerable: true, get: function () { return utils_js_1.meteredBytes; } });
|
|
46
70
|
Object.defineProperty(exports, "utf8ByteLength", { enumerable: true, get: function () { return utils_js_1.utf8ByteLength; } });
|
|
47
71
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,cAAc;AACd,gFAAgF;;;AAEhF,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAChB,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,wCAAwC;AACxC,iCAA6B;AAApB,2FAAA,EAAE,OAAA;AACX,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAEjB,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAElB,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,6DAA6D;AAC7D,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,mDAAmD;AACnD,6CAA+E;AAAtE,+GAAA,gBAAgB,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,iHAAA,kBAAkB,OAAA;AAoEvD;;;;;GAKG;AACH,uCAKoB;AAJnB,uGAAA,WAAW,OAAA;AACX,wGAAA,YAAY,OAAA;AACZ,4GAAA,gBAAgB,OAAA;AAChB,8GAAA,kBAAkB,OAAA;AA2BnB;;;GAGG;AACH,kDAAgD;AAchD,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,uCAKoB;AAJnB,qHAAA,yBAAyB,OAAA;AACzB,oHAAA,wBAAwB,OAAA;AACxB,mGAAA,OAAO,OAAA;AACP,+GAAA,mBAAmB,OAAA;AAyBpB,6CAA8C;AAArC,wGAAA,WAAW,OAAA;AAEpB,iDAA6C;AAApC,uGAAA,QAAQ,OAAA;AAEjB,uCAA0D;AAAjD,wGAAA,YAAY,OAAA;AAAE,0GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level and runtime utilities for converting between snake_case and camelCase.
|
|
3
|
+
*
|
|
4
|
+
* These utilities allow the SDK to expose camelCase APIs to users while the
|
|
5
|
+
* generated types from OpenAPI use snake_case to match the wire format.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Convert a snake_case string literal to camelCase at the type level.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* type Result = SnakeToCamel<"seq_num">; // "seqNum"
|
|
12
|
+
* type Result2 = SnakeToCamel<"created_at">; // "createdAt"
|
|
13
|
+
*/
|
|
14
|
+
export type SnakeToCamel<S extends string> = S extends `${infer Head}_${infer Tail}` ? `${Head}${Capitalize<SnakeToCamel<Tail>>}` : S;
|
|
15
|
+
/**
|
|
16
|
+
* Convert a camelCase string literal to snake_case at the type level.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* type Result = CamelToSnake<"seqNum">; // "seq_num"
|
|
20
|
+
* type Result2 = CamelToSnake<"createdAt">; // "created_at"
|
|
21
|
+
*/
|
|
22
|
+
export type CamelToSnake<S extends string> = S extends `${infer Head}${infer Tail}` ? Head extends Uppercase<Head> ? Head extends Lowercase<Head> ? `${Head}${CamelToSnake<Tail>}` : `_${Lowercase<Head>}${CamelToSnake<Tail>}` : `${Head}${CamelToSnake<Tail>}` : S;
|
|
23
|
+
/**
|
|
24
|
+
* Recursively transform all keys in an object type from snake_case to camelCase.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* type API = { seq_num: number; created_at: string };
|
|
28
|
+
* type SDK = CamelCaseKeys<API>; // { seqNum: number; createdAt: string }
|
|
29
|
+
*/
|
|
30
|
+
export type CamelCaseKeys<T> = T extends object ? T extends Array<infer U> ? Array<CamelCaseKeys<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<CamelCaseKeys<U>> : {
|
|
31
|
+
[K in keyof T as SnakeToCamel<K & string>]: CamelCaseKeys<T[K]>;
|
|
32
|
+
} : T;
|
|
33
|
+
/**
|
|
34
|
+
* Recursively transform all keys in an object type from camelCase to snake_case.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* type SDK = { seqNum: number; createdAt: string };
|
|
38
|
+
* type API = SnakeCaseKeys<SDK>; // { seq_num: number; created_at: string }
|
|
39
|
+
*/
|
|
40
|
+
export type SnakeCaseKeys<T> = T extends object ? T extends Array<infer U> ? Array<SnakeCaseKeys<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<SnakeCaseKeys<U>> : {
|
|
41
|
+
[K in keyof T as CamelToSnake<K & string>]: SnakeCaseKeys<T[K]>;
|
|
42
|
+
} : T;
|
|
43
|
+
/**
|
|
44
|
+
* Recursively transform all keys in an object from snake_case to camelCase at runtime.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* const api = { seq_num: 123, created_at: "2024-01-01" };
|
|
48
|
+
* const sdk = toCamelCase(api); // { seqNum: 123, createdAt: "2024-01-01" }
|
|
49
|
+
*/
|
|
50
|
+
export declare function toCamelCase<T>(obj: unknown): CamelCaseKeys<T>;
|
|
51
|
+
/**
|
|
52
|
+
* Recursively transform all keys in an object from camelCase to snake_case at runtime.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* const sdk = { seqNum: 123, createdAt: "2024-01-01" };
|
|
56
|
+
* const api = toSnakeCase(sdk); // { seq_num: 123, created_at: "2024-01-01" }
|
|
57
|
+
*/
|
|
58
|
+
export declare function toSnakeCase<T>(obj: unknown): SnakeCaseKeys<T>;
|
|
59
|
+
//# sourceMappingURL=case-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-transform.d.ts","sourceRoot":"","sources":["../../../src/internal/case-transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IACxC,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GACpC,GAAG,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,GAC1C,CAAC,CAAC;AAEN;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IACxC,CAAC,SAAS,GAAG,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,GACnC,IAAI,SAAS,SAAS,CAAC,IAAI,CAAC,GAC3B,IAAI,SAAS,SAAS,CAAC,IAAI,CAAC,GAC3B,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,GAC9B,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,GAC3C,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,GAC/B,CAAC,CAAC;AAEN;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC5C,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACvB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACvB,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC/B,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC/B;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACrE,CAAC,CAAC;AAEL;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC5C,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACvB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACvB,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC/B,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC/B;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACrE,CAAC,CAAC;AAoBL;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAuB7D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAuB7D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type-level and runtime utilities for converting between snake_case and camelCase.
|
|
4
|
+
*
|
|
5
|
+
* These utilities allow the SDK to expose camelCase APIs to users while the
|
|
6
|
+
* generated types from OpenAPI use snake_case to match the wire format.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.toCamelCase = toCamelCase;
|
|
10
|
+
exports.toSnakeCase = toSnakeCase;
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Runtime Transformations
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Convert a snake_case string to camelCase at runtime.
|
|
16
|
+
*/
|
|
17
|
+
function snakeToCamelString(str) {
|
|
18
|
+
return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Convert a camelCase string to snake_case at runtime.
|
|
22
|
+
*/
|
|
23
|
+
function camelToSnakeString(str) {
|
|
24
|
+
return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Recursively transform all keys in an object from snake_case to camelCase at runtime.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* const api = { seq_num: 123, created_at: "2024-01-01" };
|
|
31
|
+
* const sdk = toCamelCase(api); // { seqNum: 123, createdAt: "2024-01-01" }
|
|
32
|
+
*/
|
|
33
|
+
function toCamelCase(obj) {
|
|
34
|
+
if (obj === null || obj === undefined) {
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
37
|
+
if (typeof obj !== "object") {
|
|
38
|
+
return obj;
|
|
39
|
+
}
|
|
40
|
+
if (Array.isArray(obj)) {
|
|
41
|
+
return obj.map((item) => toCamelCase(item));
|
|
42
|
+
}
|
|
43
|
+
// Handle Uint8Array and other typed arrays - don't transform
|
|
44
|
+
if (ArrayBuffer.isView(obj)) {
|
|
45
|
+
return obj;
|
|
46
|
+
}
|
|
47
|
+
const result = {};
|
|
48
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
49
|
+
result[snakeToCamelString(key)] = toCamelCase(value);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Recursively transform all keys in an object from camelCase to snake_case at runtime.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* const sdk = { seqNum: 123, createdAt: "2024-01-01" };
|
|
58
|
+
* const api = toSnakeCase(sdk); // { seq_num: 123, created_at: "2024-01-01" }
|
|
59
|
+
*/
|
|
60
|
+
function toSnakeCase(obj) {
|
|
61
|
+
if (obj === null || obj === undefined) {
|
|
62
|
+
return obj;
|
|
63
|
+
}
|
|
64
|
+
if (typeof obj !== "object") {
|
|
65
|
+
return obj;
|
|
66
|
+
}
|
|
67
|
+
if (Array.isArray(obj)) {
|
|
68
|
+
return obj.map((item) => toSnakeCase(item));
|
|
69
|
+
}
|
|
70
|
+
// Handle Uint8Array and other typed arrays - don't transform
|
|
71
|
+
if (ArrayBuffer.isView(obj)) {
|
|
72
|
+
return obj;
|
|
73
|
+
}
|
|
74
|
+
const result = {};
|
|
75
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
76
|
+
result[camelToSnakeString(key)] = toSnakeCase(value);
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=case-transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-transform.js","sourceRoot":"","sources":["../../../src/internal/case-transform.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAyFH,kCAuBC;AASD,kCAuBC;AAhFD,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAI,GAAY;IAC1C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,GAAuB,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAuB,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAqB,CAAC;IACjE,CAAC;IAED,6DAA6D;IAC7D,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAuB,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAA0B,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAI,GAAY;IAC1C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,GAAuB,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAuB,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAqB,CAAC;IACjE,CAAC;IAED,6DAA6D;IAC7D,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAuB,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAA0B,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal type mappers between SDK types and generated types.
|
|
3
|
+
*
|
|
4
|
+
* Only used for hot-path types (records, append/read responses).
|
|
5
|
+
* Config, info, and metric types are used directly from generated types.
|
|
6
|
+
*/
|
|
7
|
+
import * as API from "../generated/types.gen.js";
|
|
8
|
+
import type * as InternalTypes from "../lib/stream/types.js";
|
|
9
|
+
import * as Types from "../types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Convert API StreamPosition to SDK StreamPosition.
|
|
12
|
+
*/
|
|
13
|
+
export declare function fromAPIStreamPosition(pos: API.StreamPosition): Types.StreamPosition;
|
|
14
|
+
/**
|
|
15
|
+
* Convert API AppendAck to SDK AppendAck.
|
|
16
|
+
*/
|
|
17
|
+
export declare function fromAPIAppendAck(ack: API.AppendAck): Types.AppendAck;
|
|
18
|
+
/**
|
|
19
|
+
* Convert API TailResponse to SDK TailResponse.
|
|
20
|
+
*/
|
|
21
|
+
export declare function fromAPITailResponse(res: API.TailResponse): Types.TailResponse;
|
|
22
|
+
/**
|
|
23
|
+
* Convert SDK AppendRecord to API AppendRecord (for JSON/REST API).
|
|
24
|
+
*/
|
|
25
|
+
export declare function toAPIAppendRecord(record: Types.AppendRecord): API.AppendRecord;
|
|
26
|
+
/** Input type for read batch mappers - accepts both API and internal types. */
|
|
27
|
+
type ReadBatchInput<Format extends "string" | "bytes"> = API.ReadBatch | InternalTypes.ReadBatch<Format>;
|
|
28
|
+
/**
|
|
29
|
+
* Convert API/internal ReadBatch to SDK ReadBatch (string format).
|
|
30
|
+
*/
|
|
31
|
+
export declare function fromAPIReadBatchString<Format extends "string" | "bytes" = "string">(batch: ReadBatchInput<Format>): Types.ReadBatch<"string">;
|
|
32
|
+
/**
|
|
33
|
+
* Convert API/internal ReadBatch to SDK ReadBatch (bytes format).
|
|
34
|
+
*/
|
|
35
|
+
export declare function fromAPIReadBatchBytes<Format extends "string" | "bytes" = "bytes">(batch: ReadBatchInput<Format>): Types.ReadBatch<"bytes">;
|
|
36
|
+
/**
|
|
37
|
+
* Convert SDK ReadInput (camelCase) to flat query parameters for the API (snake_case).
|
|
38
|
+
*/
|
|
39
|
+
export declare function toAPIReadQuery(input?: Types.ReadInput): {
|
|
40
|
+
seq_num?: number;
|
|
41
|
+
timestamp?: number;
|
|
42
|
+
tail_offset?: number;
|
|
43
|
+
clamp?: boolean;
|
|
44
|
+
count?: number;
|
|
45
|
+
bytes?: number;
|
|
46
|
+
until?: number;
|
|
47
|
+
wait?: number;
|
|
48
|
+
ignore_command_records?: boolean;
|
|
49
|
+
};
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=mappers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../../src/internal/mappers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AAEjD,OAAO,KAAK,KAAK,aAAa,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AAqCrC;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,GAAG,CAAC,cAAc,GACrB,KAAK,CAAC,cAAc,CAKtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAMpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAI7E;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,KAAK,CAAC,YAAY,GACxB,GAAG,CAAC,YAAY,CAqBlB;AAyED,+EAA+E;AAC/E,KAAK,cAAc,CAAC,MAAM,SAAS,QAAQ,GAAG,OAAO,IAClD,GAAG,CAAC,SAAS,GACb,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAEnC;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,MAAM,SAAS,QAAQ,GAAG,OAAO,GAAG,QAAQ,EAC3C,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAO1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,SAAS,QAAQ,GAAG,OAAO,GAAG,OAAO,EAC1C,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAOzD;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACjC,CAmDA"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Internal type mappers between SDK types and generated types.
|
|
4
|
+
*
|
|
5
|
+
* Only used for hot-path types (records, append/read responses).
|
|
6
|
+
* Config, info, and metric types are used directly from generated types.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.fromAPIStreamPosition = fromAPIStreamPosition;
|
|
10
|
+
exports.fromAPIAppendAck = fromAPIAppendAck;
|
|
11
|
+
exports.fromAPITailResponse = fromAPITailResponse;
|
|
12
|
+
exports.toAPIAppendRecord = toAPIAppendRecord;
|
|
13
|
+
exports.fromAPIReadBatchString = fromAPIReadBatchString;
|
|
14
|
+
exports.fromAPIReadBatchBytes = fromAPIReadBatchBytes;
|
|
15
|
+
exports.toAPIReadQuery = toAPIReadQuery;
|
|
16
|
+
const base64_js_1 = require("../lib/base64.js");
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Utilities
|
|
19
|
+
// =============================================================================
|
|
20
|
+
const textEncoder = new TextEncoder();
|
|
21
|
+
function toBytes(value) {
|
|
22
|
+
return typeof value === "string" ? textEncoder.encode(value) : value;
|
|
23
|
+
}
|
|
24
|
+
function toBase64(value) {
|
|
25
|
+
return (0, base64_js_1.encodeToBase64)(toBytes(value));
|
|
26
|
+
}
|
|
27
|
+
function fromBase64(value) {
|
|
28
|
+
return (0, base64_js_1.decodeFromBase64)(value);
|
|
29
|
+
}
|
|
30
|
+
/** Convert milliseconds to Date. */
|
|
31
|
+
function toDate(ms) {
|
|
32
|
+
return new Date(ms);
|
|
33
|
+
}
|
|
34
|
+
/** Convert Date or milliseconds to milliseconds. */
|
|
35
|
+
function toEpochMs(value) {
|
|
36
|
+
if (value === undefined || value === null)
|
|
37
|
+
return undefined;
|
|
38
|
+
return typeof value === "number" ? Math.floor(value) : value.getTime();
|
|
39
|
+
}
|
|
40
|
+
// =============================================================================
|
|
41
|
+
// Stream Position Mapper
|
|
42
|
+
// =============================================================================
|
|
43
|
+
/**
|
|
44
|
+
* Convert API StreamPosition to SDK StreamPosition.
|
|
45
|
+
*/
|
|
46
|
+
function fromAPIStreamPosition(pos) {
|
|
47
|
+
return {
|
|
48
|
+
seqNum: pos.seq_num,
|
|
49
|
+
timestamp: toDate(pos.timestamp),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert API AppendAck to SDK AppendAck.
|
|
54
|
+
*/
|
|
55
|
+
function fromAPIAppendAck(ack) {
|
|
56
|
+
return {
|
|
57
|
+
start: fromAPIStreamPosition(ack.start),
|
|
58
|
+
end: fromAPIStreamPosition(ack.end),
|
|
59
|
+
tail: fromAPIStreamPosition(ack.tail),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Convert API TailResponse to SDK TailResponse.
|
|
64
|
+
*/
|
|
65
|
+
function fromAPITailResponse(res) {
|
|
66
|
+
return {
|
|
67
|
+
tail: fromAPIStreamPosition(res.tail),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// =============================================================================
|
|
71
|
+
// Record Mappers - Append
|
|
72
|
+
// =============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* Convert SDK AppendRecord to API AppendRecord (for JSON/REST API).
|
|
75
|
+
*/
|
|
76
|
+
function toAPIAppendRecord(record) {
|
|
77
|
+
const isStringRecord = "body" in record && typeof record.body === "string";
|
|
78
|
+
if (isStringRecord) {
|
|
79
|
+
const stringRecord = record;
|
|
80
|
+
return {
|
|
81
|
+
body: stringRecord.body,
|
|
82
|
+
headers: stringRecord.headers?.map(([name, value]) => [name, value]),
|
|
83
|
+
timestamp: toEpochMs(stringRecord.timestamp),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const bytesRecord = record;
|
|
88
|
+
return {
|
|
89
|
+
body: toBase64(bytesRecord.body),
|
|
90
|
+
headers: bytesRecord.headers?.map(([name, value]) => [
|
|
91
|
+
toBase64(name),
|
|
92
|
+
toBase64(value),
|
|
93
|
+
]),
|
|
94
|
+
timestamp: toEpochMs(bytesRecord.timestamp),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// =============================================================================
|
|
99
|
+
// Record Mappers - Read
|
|
100
|
+
// =============================================================================
|
|
101
|
+
/**
|
|
102
|
+
* Convert API SequencedRecord to SDK ReadRecord (string format).
|
|
103
|
+
*/
|
|
104
|
+
function fromAPISequencedRecordString(record) {
|
|
105
|
+
let headers = [];
|
|
106
|
+
if (record.headers) {
|
|
107
|
+
if (Array.isArray(record.headers)) {
|
|
108
|
+
headers = record.headers.map(([name, value]) => [name, value]);
|
|
109
|
+
}
|
|
110
|
+
else if (typeof record.headers === "object") {
|
|
111
|
+
headers = Object.entries(record.headers);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
seqNum: record.seq_num,
|
|
116
|
+
timestamp: toDate(record.timestamp),
|
|
117
|
+
body: record.body ?? "",
|
|
118
|
+
headers,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Convert API SequencedRecord to SDK ReadRecord (bytes format).
|
|
123
|
+
*/
|
|
124
|
+
function fromAPISequencedRecordBytes(record) {
|
|
125
|
+
let body;
|
|
126
|
+
if (!record.body) {
|
|
127
|
+
body = new Uint8Array();
|
|
128
|
+
}
|
|
129
|
+
else if (typeof record.body === "string") {
|
|
130
|
+
body = fromBase64(record.body);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
body = record.body;
|
|
134
|
+
}
|
|
135
|
+
let headers = [];
|
|
136
|
+
if (record.headers) {
|
|
137
|
+
if (Array.isArray(record.headers)) {
|
|
138
|
+
headers = record.headers.map(([name, value]) => {
|
|
139
|
+
const nameBytes = typeof name === "string" ? fromBase64(name) : name;
|
|
140
|
+
const valueBytes = typeof value === "string" ? fromBase64(value) : value;
|
|
141
|
+
return [nameBytes, valueBytes];
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else if (typeof record.headers === "object") {
|
|
145
|
+
headers = Object.entries(record.headers).map(([name, value]) => [fromBase64(name), fromBase64(value)]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
seqNum: record.seq_num,
|
|
150
|
+
timestamp: toDate(record.timestamp),
|
|
151
|
+
body,
|
|
152
|
+
headers,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Convert API/internal ReadBatch to SDK ReadBatch (string format).
|
|
157
|
+
*/
|
|
158
|
+
function fromAPIReadBatchString(batch) {
|
|
159
|
+
return {
|
|
160
|
+
records: batch.records.map((r) => fromAPISequencedRecordString(r)),
|
|
161
|
+
tail: batch.tail ? fromAPIStreamPosition(batch.tail) : undefined,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Convert API/internal ReadBatch to SDK ReadBatch (bytes format).
|
|
166
|
+
*/
|
|
167
|
+
function fromAPIReadBatchBytes(batch) {
|
|
168
|
+
return {
|
|
169
|
+
records: batch.records.map((r) => fromAPISequencedRecordBytes(r)),
|
|
170
|
+
tail: batch.tail ? fromAPIStreamPosition(batch.tail) : undefined,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// =============================================================================
|
|
174
|
+
// Read Input Mapper
|
|
175
|
+
// =============================================================================
|
|
176
|
+
/**
|
|
177
|
+
* Convert SDK ReadInput (camelCase) to flat query parameters for the API (snake_case).
|
|
178
|
+
*/
|
|
179
|
+
function toAPIReadQuery(input) {
|
|
180
|
+
if (!input) {
|
|
181
|
+
return {};
|
|
182
|
+
}
|
|
183
|
+
const query = {};
|
|
184
|
+
if (input.start?.from) {
|
|
185
|
+
const from = input.start.from;
|
|
186
|
+
if ("seqNum" in from) {
|
|
187
|
+
query.seq_num = Math.floor(from.seqNum);
|
|
188
|
+
}
|
|
189
|
+
else if ("timestamp" in from) {
|
|
190
|
+
// Convert Date to milliseconds if needed
|
|
191
|
+
query.timestamp =
|
|
192
|
+
typeof from.timestamp === "number"
|
|
193
|
+
? Math.floor(from.timestamp)
|
|
194
|
+
: from.timestamp.getTime();
|
|
195
|
+
}
|
|
196
|
+
else if ("tailOffset" in from) {
|
|
197
|
+
query.tail_offset = Math.floor(from.tailOffset);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (input.start?.clamp !== undefined) {
|
|
201
|
+
query.clamp = input.start.clamp;
|
|
202
|
+
}
|
|
203
|
+
if (input.stop?.limits) {
|
|
204
|
+
if (input.stop.limits.count !== undefined) {
|
|
205
|
+
query.count = Math.floor(input.stop.limits.count);
|
|
206
|
+
}
|
|
207
|
+
if (input.stop.limits.bytes !== undefined) {
|
|
208
|
+
query.bytes = Math.floor(input.stop.limits.bytes);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (input.stop?.untilTimestamp !== undefined) {
|
|
212
|
+
query.until =
|
|
213
|
+
typeof input.stop.untilTimestamp === "number"
|
|
214
|
+
? Math.floor(input.stop.untilTimestamp)
|
|
215
|
+
: input.stop.untilTimestamp.getTime();
|
|
216
|
+
}
|
|
217
|
+
if (input.stop?.waitSecs !== undefined) {
|
|
218
|
+
query.wait = Math.max(0, Math.floor(input.stop.waitSecs));
|
|
219
|
+
}
|
|
220
|
+
if (input.ignoreCommandRecords !== undefined) {
|
|
221
|
+
query.ignore_command_records = input.ignoreCommandRecords;
|
|
222
|
+
}
|
|
223
|
+
return query;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=mappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../../src/internal/mappers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA6CH,sDAOC;AAKD,4CAMC;AAKD,kDAIC;AASD,8CAuBC;AAiFD,wDASC;AAKD,sDASC;AASD,wCA6DC;AAnRD,gDAAoE;AAIpE,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,SAAS,OAAO,CAAC,KAA0B;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,KAA0B;IAC3C,OAAO,IAAA,0BAAc,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAChC,OAAO,IAAA,4BAAgB,EAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,oCAAoC;AACpC,SAAS,MAAM,CAAC,EAAU;IACzB,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC;AAED,oDAAoD;AACpD,SAAS,SAAS,CACjB,KAAuC;IAEvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACxE,CAAC;AAED,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,qBAAqB,CACpC,GAAuB;IAEvB,OAAO;QACN,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;KAChC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,GAAkB;IAClD,OAAO;QACN,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;QACvC,GAAG,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC;QACnC,IAAI,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;KACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,GAAqB;IACxD,OAAO;QACN,IAAI,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;KACrC,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,iBAAiB,CAChC,MAA0B;IAE1B,MAAM,cAAc,GAAG,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;IAE3E,IAAI,cAAc,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAkC,CAAC;QACxD,OAAO;YACN,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpE,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC;SAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACP,MAAM,WAAW,GAAG,MAAiC,CAAC;QACtD,OAAO;YACN,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACpD,QAAQ,CAAC,IAAI,CAAC;gBACd,QAAQ,CAAC,KAAK,CAAC;aACf,CAAC;YACF,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC;SAC3C,CAAC;IACH,CAAC;AACF,CAAC;AAED,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF;;GAEG;AACH,SAAS,4BAA4B,CACpC,MAA2B;IAE3B,IAAI,OAAO,GAA6C,EAAE,CAAC;IAC3D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAU,CAAC,CAAC;QACzE,CAAC;aAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAiC,CAAC,CAAC;QACpE,CAAC;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACvB,OAAO;KACP,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CACnC,MAA2B;IAE3B,IAAI,IAAgB,CAAC;IACrB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,IAAI,GAAG,MAAM,CAAC,IAAkB,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,GAAqD,EAAE,CAAC;IACnE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC9C,MAAM,SAAS,GACd,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAmB,CAAC;gBACpE,MAAM,UAAU,GACf,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAoB,CAAC;gBACvE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;YACzC,CAAC,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAiC,CAAC,CAAC,GAAG,CACrE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAU,CACjE,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI;QACJ,OAAO;KACP,CAAC;AACH,CAAC;AAWD;;GAEG;AACH,SAAgB,sBAAsB,CAEpC,KAA6B;IAC9B,OAAO;QACN,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,4BAA4B,CAAC,CAAwB,CAAC,CACtD;QACD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAChE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAEnC,KAA6B;IAC9B,OAAO;QACN,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,2BAA2B,CAAC,CAAwB,CAAC,CACrD;QACD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAChE,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAuB;IAWrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAsC,EAAE,CAAC;IAEpD,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACtB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAChC,yCAAyC;YACzC,KAAK,CAAC,SAAS;gBACd,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;oBACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC5B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACjC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,EAAE,CAAC;QAC9C,KAAK,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,QAAQ;gBAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,KAAK,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC9C,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,oBAAoB,CAAC;IAC3D,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|