@s2-dev/streamstore 0.19.5 → 0.21.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.map +1 -1
- package/dist/cjs/error.js +11 -0
- 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 +56 -110
- 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 +115 -82
- 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 +11 -15
- 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.map +1 -1
- package/dist/esm/error.js +11 -0
- 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 +58 -112
- 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 +116 -82
- 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 +12 -16
- 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
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S2 SDK Types
|
|
3
|
+
*
|
|
4
|
+
* All public SDK types are defined here. Types use camelCase field names
|
|
5
|
+
* for idiomatic JavaScript/TypeScript usage.
|
|
6
|
+
*
|
|
7
|
+
* Generated types (snake_case, matching API wire format) are available
|
|
8
|
+
* from "./generated/types.gen.js" as the `API` namespace.
|
|
9
|
+
*/
|
|
10
|
+
import { S2Error } from "./error.js";
|
|
11
|
+
import { meteredBytes as calculateMeteredBytes } from "./utils.js";
|
|
12
|
+
const textEncoder = new TextEncoder();
|
|
13
|
+
/**
|
|
14
|
+
* Factory functions for creating AppendRecord instances.
|
|
15
|
+
*/
|
|
16
|
+
export var AppendRecord;
|
|
17
|
+
(function (AppendRecord) {
|
|
18
|
+
/**
|
|
19
|
+
* Create a string-format append record with pre-calculated metered size.
|
|
20
|
+
*/
|
|
21
|
+
function string(params) {
|
|
22
|
+
// Create record with placeholder, then calculate actual size
|
|
23
|
+
const record = {
|
|
24
|
+
body: params.body,
|
|
25
|
+
headers: params.headers,
|
|
26
|
+
timestamp: params.timestamp,
|
|
27
|
+
meteredBytes: 0,
|
|
28
|
+
};
|
|
29
|
+
// Safe to cast: we're setting a readonly property during construction
|
|
30
|
+
record.meteredBytes =
|
|
31
|
+
calculateMeteredBytes(record);
|
|
32
|
+
return record;
|
|
33
|
+
}
|
|
34
|
+
AppendRecord.string = string;
|
|
35
|
+
/**
|
|
36
|
+
* Create a bytes-format append record with pre-calculated metered size.
|
|
37
|
+
*/
|
|
38
|
+
function bytes(params) {
|
|
39
|
+
// Create record with placeholder, then calculate actual size
|
|
40
|
+
const record = {
|
|
41
|
+
body: params.body,
|
|
42
|
+
headers: params.headers,
|
|
43
|
+
timestamp: params.timestamp,
|
|
44
|
+
meteredBytes: 0,
|
|
45
|
+
};
|
|
46
|
+
// Safe to cast: we're setting a readonly property during construction
|
|
47
|
+
record.meteredBytes =
|
|
48
|
+
calculateMeteredBytes(record);
|
|
49
|
+
return record;
|
|
50
|
+
}
|
|
51
|
+
AppendRecord.bytes = bytes;
|
|
52
|
+
/**
|
|
53
|
+
* Create a fence command record.
|
|
54
|
+
*/
|
|
55
|
+
function fence(fencingToken, timestamp) {
|
|
56
|
+
return string({
|
|
57
|
+
body: fencingToken,
|
|
58
|
+
headers: [["", "fence"]],
|
|
59
|
+
timestamp,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
AppendRecord.fence = fence;
|
|
63
|
+
/**
|
|
64
|
+
* Create a trim command record.
|
|
65
|
+
*/
|
|
66
|
+
function trim(seqNum, timestamp) {
|
|
67
|
+
const buffer = new Uint8Array(8);
|
|
68
|
+
const view = new DataView(buffer.buffer);
|
|
69
|
+
view.setBigUint64(0, BigInt(seqNum), false);
|
|
70
|
+
return bytes({
|
|
71
|
+
body: buffer,
|
|
72
|
+
headers: [[textEncoder.encode(""), textEncoder.encode("trim")]],
|
|
73
|
+
timestamp,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
AppendRecord.trim = trim;
|
|
77
|
+
})(AppendRecord || (AppendRecord = {}));
|
|
78
|
+
// =============================================================================
|
|
79
|
+
// Append Input
|
|
80
|
+
// =============================================================================
|
|
81
|
+
/** Maximum number of records in a single append batch. */
|
|
82
|
+
export const MAX_APPEND_RECORDS = 1000;
|
|
83
|
+
/** Maximum total metered bytes for records in a single append batch (1 MiB). */
|
|
84
|
+
export const MAX_APPEND_BYTES = 1024 * 1024;
|
|
85
|
+
/**
|
|
86
|
+
* Factory functions for creating AppendInput instances.
|
|
87
|
+
*/
|
|
88
|
+
export var AppendInput;
|
|
89
|
+
(function (AppendInput) {
|
|
90
|
+
/**
|
|
91
|
+
* Create an AppendInput with validation.
|
|
92
|
+
*
|
|
93
|
+
* @throws {S2Error} If validation fails (empty, too many records, or too large)
|
|
94
|
+
*/
|
|
95
|
+
function create(records, options) {
|
|
96
|
+
if (records.length === 0) {
|
|
97
|
+
throw new S2Error({
|
|
98
|
+
message: "AppendInput must contain at least one record",
|
|
99
|
+
origin: "sdk",
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (records.length > MAX_APPEND_RECORDS) {
|
|
103
|
+
throw new S2Error({
|
|
104
|
+
message: `AppendInput cannot contain more than ${MAX_APPEND_RECORDS} records (got ${records.length})`,
|
|
105
|
+
origin: "sdk",
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const totalBytes = records.reduce((sum, r) => sum + r.meteredBytes, 0);
|
|
109
|
+
if (totalBytes > MAX_APPEND_BYTES) {
|
|
110
|
+
throw new S2Error({
|
|
111
|
+
message: `AppendInput exceeds maximum of ${MAX_APPEND_BYTES} bytes (got ${totalBytes} bytes)`,
|
|
112
|
+
origin: "sdk",
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
records,
|
|
117
|
+
matchSeqNum: options?.matchSeqNum === undefined
|
|
118
|
+
? undefined
|
|
119
|
+
: Math.floor(options.matchSeqNum),
|
|
120
|
+
fencingToken: options?.fencingToken,
|
|
121
|
+
meteredBytes: totalBytes,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
AppendInput.create = create;
|
|
125
|
+
})(AppendInput || (AppendInput = {}));
|
|
126
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/utils.d.ts
CHANGED
|
@@ -1,24 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type AppendRecord = AppendRecordType;
|
|
3
|
-
declare function appendRecordMake(body?: string, headers?: AppendHeaders<"string">, timestamp?: number): AppendRecord;
|
|
4
|
-
declare function appendRecordMake(body?: Uint8Array, headers?: AppendHeaders<"bytes">, timestamp?: number): AppendRecord;
|
|
5
|
-
declare function appendRecordCommand(command: string, body?: string, timestamp?: number): AppendRecord;
|
|
6
|
-
declare function appendRecordCommand(command: Uint8Array, body?: Uint8Array, timestamp?: number): AppendRecord;
|
|
7
|
-
/**
|
|
8
|
-
* Helpers to construct appendable records.
|
|
9
|
-
*
|
|
10
|
-
* These helpers mirror the OpenAPI record schema and add convenience builders for S2 command records:
|
|
11
|
-
* - `make` creates a normal record
|
|
12
|
-
* - `command` creates a command record with an empty-name header set to the command name
|
|
13
|
-
* - `fence` is a command record enforcing a fencing token
|
|
14
|
-
* - `trim` is a command record that encodes a sequence number for trimming
|
|
15
|
-
*/
|
|
16
|
-
export declare const AppendRecord: {
|
|
17
|
-
readonly make: typeof appendRecordMake;
|
|
18
|
-
readonly command: typeof appendRecordCommand;
|
|
19
|
-
readonly fence: (fencing_token: string, timestamp?: number) => AppendRecord;
|
|
20
|
-
readonly trim: (seqNum: number | bigint, timestamp?: number) => AppendRecord;
|
|
21
|
-
};
|
|
1
|
+
import type { AppendRecord, ReadRecord } from "./lib/stream/types.js";
|
|
22
2
|
/**
|
|
23
3
|
* Calculate the UTF-8 byte length of a string.
|
|
24
4
|
* Handles all Unicode characters including surrogate pairs correctly.
|
|
@@ -42,5 +22,4 @@ export declare function utf8ByteLength(str: string): number;
|
|
|
42
22
|
*/
|
|
43
23
|
export declare function meteredBytes<Format extends "string" | "bytes">(record: AppendRecord | ReadRecord<Format>): number;
|
|
44
24
|
export declare function computeAppendRecordFormat(record: AppendRecord): "string" | "bytes";
|
|
45
|
-
export {};
|
|
46
25
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/esm/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiClD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS,QAAQ,GAAG,OAAO,EAC7D,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,GACvC,MAAM,CAgCR;AAED,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,YAAY,GAClB,QAAQ,GAAG,OAAO,CAiBpB"}
|
package/dist/esm/utils.js
CHANGED
|
@@ -1,44 +1,3 @@
|
|
|
1
|
-
function appendRecordMake(body, headers, timestamp) {
|
|
2
|
-
return {
|
|
3
|
-
body,
|
|
4
|
-
headers,
|
|
5
|
-
timestamp,
|
|
6
|
-
};
|
|
7
|
-
}
|
|
8
|
-
function appendRecordCommand(command, body, timestamp) {
|
|
9
|
-
const headers = (() => {
|
|
10
|
-
if (typeof command === "string") {
|
|
11
|
-
return [["", command]];
|
|
12
|
-
}
|
|
13
|
-
return [[new TextEncoder().encode(""), command]];
|
|
14
|
-
})();
|
|
15
|
-
// safety: we know the types are correct because of the overloads
|
|
16
|
-
return AppendRecord.make(body, headers, timestamp);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Helpers to construct appendable records.
|
|
20
|
-
*
|
|
21
|
-
* These helpers mirror the OpenAPI record schema and add convenience builders for S2 command records:
|
|
22
|
-
* - `make` creates a normal record
|
|
23
|
-
* - `command` creates a command record with an empty-name header set to the command name
|
|
24
|
-
* - `fence` is a command record enforcing a fencing token
|
|
25
|
-
* - `trim` is a command record that encodes a sequence number for trimming
|
|
26
|
-
*/
|
|
27
|
-
export const AppendRecord = {
|
|
28
|
-
// overloads for only string or only bytes
|
|
29
|
-
make: appendRecordMake,
|
|
30
|
-
command: appendRecordCommand,
|
|
31
|
-
fence: (fencing_token, timestamp) => {
|
|
32
|
-
return AppendRecord.command("fence", fencing_token, timestamp);
|
|
33
|
-
},
|
|
34
|
-
trim: (seqNum, timestamp) => {
|
|
35
|
-
// Encode sequence number as 8 big-endian bytes
|
|
36
|
-
const buffer = new Uint8Array(8);
|
|
37
|
-
const view = new DataView(buffer.buffer);
|
|
38
|
-
view.setBigUint64(0, BigInt(seqNum), false); // false = big-endian
|
|
39
|
-
return AppendRecord.command(new TextEncoder().encode("trim"), buffer, timestamp);
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
1
|
/**
|
|
43
2
|
* Calculate the UTF-8 byte length of a string.
|
|
44
3
|
* Handles all Unicode characters including surrogate pairs correctly.
|
package/dist/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.d.ts
CHANGED
package/dist/esm/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@s2-dev/streamstore",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"license": "
|
|
5
|
+
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/s2-streamstore/s2-sdk-typescript"
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"build": "rm -rf dist && bun ../../scripts/generate-version.ts && tsc --project tsconfig.build.esm.json && tsc --project tsconfig.build.cjs.json && bun ../../scripts/postbuild.ts && attw --pack",
|
|
16
16
|
"test": "vitest --run",
|
|
17
17
|
"check": "tsc --noEmit",
|
|
18
|
-
"gen:version": "bun ../../scripts/generate-version.ts"
|
|
18
|
+
"gen:version": "bun ../../scripts/generate-version.ts",
|
|
19
|
+
"example:browser": "bun examples/browser/serve.ts"
|
|
19
20
|
},
|
|
20
21
|
"main": "./dist/cjs/index.js",
|
|
21
22
|
"module": "./dist/esm/index.js",
|