@s2-dev/streamstore 0.16.11 → 0.17.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/dist/cjs/basin.d.ts +9 -2
- package/dist/cjs/basin.d.ts.map +1 -1
- package/dist/cjs/basin.js +14 -5
- package/dist/cjs/basin.js.map +1 -1
- package/dist/cjs/batch-transform.d.ts +64 -0
- package/dist/cjs/batch-transform.d.ts.map +1 -0
- package/dist/cjs/batch-transform.js +144 -0
- package/dist/cjs/batch-transform.js.map +1 -0
- package/dist/cjs/generated/client/utils.gen.d.ts +1 -1
- package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -1
- package/dist/cjs/generated/client/utils.gen.js +7 -6
- package/dist/cjs/generated/client/utils.gen.js.map +1 -1
- package/dist/cjs/generated/core/bodySerializer.gen.d.ts +12 -4
- package/dist/cjs/generated/core/bodySerializer.gen.d.ts.map +1 -1
- package/dist/cjs/generated/core/bodySerializer.gen.js.map +1 -1
- package/dist/cjs/generated/proto/s2.d.ts.map +1 -1
- package/dist/cjs/generated/proto/s2.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/stream/factory.d.ts +15 -0
- package/dist/cjs/lib/stream/factory.d.ts.map +1 -0
- package/dist/cjs/lib/stream/factory.js +36 -0
- package/dist/cjs/lib/stream/factory.js.map +1 -0
- package/dist/cjs/lib/stream/runtime.d.ts +13 -0
- package/dist/cjs/lib/stream/runtime.d.ts.map +1 -0
- package/dist/cjs/lib/stream/runtime.js +50 -0
- package/dist/cjs/lib/stream/runtime.js.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts +79 -0
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/index.js +382 -0
- package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +7 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.js +170 -0
- package/dist/cjs/lib/stream/transport/fetch/shared.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 +23 -0
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -0
- package/dist/cjs/lib/stream/transport/s2s/index.js +785 -0
- package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -0
- package/dist/cjs/lib/stream/types.d.ts +53 -0
- package/dist/cjs/lib/stream/types.d.ts.map +1 -0
- package/dist/cjs/lib/stream/types.js +3 -0
- package/dist/cjs/lib/stream/types.js.map +1 -0
- package/dist/cjs/s2.d.ts +1 -0
- package/dist/cjs/s2.d.ts.map +1 -1
- package/dist/cjs/s2.js +3 -0
- package/dist/cjs/s2.js.map +1 -1
- package/dist/cjs/stream.d.ts +22 -116
- package/dist/cjs/stream.d.ts.map +1 -1
- package/dist/cjs/stream.js +34 -549
- package/dist/cjs/stream.js.map +1 -1
- package/dist/cjs/utils.d.ts +32 -6
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +129 -34
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/basin.d.ts +9 -2
- package/dist/esm/basin.d.ts.map +1 -1
- package/dist/esm/basin.js +14 -5
- package/dist/esm/basin.js.map +1 -1
- package/dist/esm/batch-transform.d.ts +64 -0
- package/dist/esm/batch-transform.d.ts.map +1 -0
- package/dist/esm/batch-transform.js +140 -0
- package/dist/esm/batch-transform.js.map +1 -0
- package/dist/esm/generated/client/utils.gen.d.ts +1 -1
- package/dist/esm/generated/client/utils.gen.d.ts.map +1 -1
- package/dist/esm/generated/client/utils.gen.js +7 -6
- package/dist/esm/generated/client/utils.gen.js.map +1 -1
- package/dist/esm/generated/core/bodySerializer.gen.d.ts +12 -4
- package/dist/esm/generated/core/bodySerializer.gen.d.ts.map +1 -1
- package/dist/esm/generated/core/bodySerializer.gen.js.map +1 -1
- package/dist/esm/generated/proto/s2.d.ts.map +1 -1
- package/dist/esm/generated/proto/s2.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/stream/factory.d.ts +15 -0
- package/dist/esm/lib/stream/factory.d.ts.map +1 -0
- package/dist/esm/lib/stream/factory.js +33 -0
- package/dist/esm/lib/stream/factory.js.map +1 -0
- package/dist/esm/lib/stream/runtime.d.ts +13 -0
- package/dist/esm/lib/stream/runtime.d.ts.map +1 -0
- package/dist/esm/lib/stream/runtime.js +46 -0
- package/dist/esm/lib/stream/runtime.js.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/index.d.ts +79 -0
- package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/index.js +376 -0
- package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts +7 -0
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/fetch/shared.js +166 -0
- package/dist/esm/lib/stream/transport/fetch/shared.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 +23 -0
- package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -0
- package/dist/esm/lib/stream/transport/s2s/index.js +781 -0
- package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -0
- package/dist/esm/lib/stream/types.d.ts +53 -0
- package/dist/esm/lib/stream/types.d.ts.map +1 -0
- package/dist/esm/lib/stream/types.js +2 -0
- package/dist/esm/lib/stream/types.js.map +1 -0
- package/dist/esm/s2.d.ts +1 -0
- package/dist/esm/s2.d.ts.map +1 -1
- package/dist/esm/s2.js +3 -0
- package/dist/esm/s2.js.map +1 -1
- package/dist/esm/stream.d.ts +22 -116
- package/dist/esm/stream.d.ts.map +1 -1
- package/dist/esm/stream.js +36 -551
- package/dist/esm/stream.js.map +1 -1
- package/dist/esm/utils.d.ts +32 -6
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +126 -34
- package/dist/esm/utils.js.map +1 -1
- package/package.json +2 -4
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AppendRecord = exports.S2 = exports.SeqNumMismatchError = exports.S2Error = exports.RangeNotSatisfiableError = exports.FencingTokenMismatchError = void 0;
|
|
3
|
+
exports.utf8ByteLength = exports.meteredSizeBytes = exports.AppendRecord = exports.S2 = exports.SeqNumMismatchError = exports.S2Error = exports.RangeNotSatisfiableError = exports.FencingTokenMismatchError = exports.BatchTransform = void 0;
|
|
4
|
+
var batch_transform_js_1 = require("./batch-transform.js");
|
|
5
|
+
Object.defineProperty(exports, "BatchTransform", { enumerable: true, get: function () { return batch_transform_js_1.BatchTransform; } });
|
|
4
6
|
var error_js_1 = require("./error.js");
|
|
5
7
|
Object.defineProperty(exports, "FencingTokenMismatchError", { enumerable: true, get: function () { return error_js_1.FencingTokenMismatchError; } });
|
|
6
8
|
Object.defineProperty(exports, "RangeNotSatisfiableError", { enumerable: true, get: function () { return error_js_1.RangeNotSatisfiableError; } });
|
|
@@ -10,4 +12,6 @@ var s2_js_1 = require("./s2.js");
|
|
|
10
12
|
Object.defineProperty(exports, "S2", { enumerable: true, get: function () { return s2_js_1.S2; } });
|
|
11
13
|
var utils_js_1 = require("./utils.js");
|
|
12
14
|
Object.defineProperty(exports, "AppendRecord", { enumerable: true, get: function () { return utils_js_1.AppendRecord; } });
|
|
15
|
+
Object.defineProperty(exports, "meteredSizeBytes", { enumerable: true, get: function () { return utils_js_1.meteredSizeBytes; } });
|
|
16
|
+
Object.defineProperty(exports, "utf8ByteLength", { enumerable: true, get: function () { return utils_js_1.utf8ByteLength; } });
|
|
13
17
|
//# 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":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAaA,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,uCAKoB;AAJnB,qHAAA,yBAAyB,OAAA;AACzB,oHAAA,wBAAwB,OAAA;AACxB,mGAAA,OAAO,OAAA;AACP,+GAAA,mBAAmB,OAAA;AA+CpB,iCAA6B;AAApB,2FAAA,EAAE,OAAA;AAQX,uCAA4E;AAAnE,wGAAA,YAAY,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAAE,0GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport factory - selects the appropriate transport based on runtime
|
|
3
|
+
*/
|
|
4
|
+
import type { SessionTransport, TransportConfig } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Create a transport instance based on the runtime environment
|
|
7
|
+
*
|
|
8
|
+
* - In Node.js with HTTP/2 support: uses S2STransport (binary protocol over HTTP/2)
|
|
9
|
+
* - Everywhere else: uses FetchTransport (JSON over HTTP/1.1)
|
|
10
|
+
*
|
|
11
|
+
* @param config Transport configuration
|
|
12
|
+
* @param preferHttp2 Force HTTP/2 or HTTP/1.1 (default: auto-detect)
|
|
13
|
+
*/
|
|
14
|
+
export declare function createSessionTransport(config: TransportConfig): Promise<SessionTransport>;
|
|
15
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/lib/stream/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,eAAe,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAkB3B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Transport factory - selects the appropriate transport based on runtime
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createSessionTransport = createSessionTransport;
|
|
7
|
+
const runtime_js_1 = require("./runtime.js");
|
|
8
|
+
const index_js_1 = require("./transport/fetch/index.js");
|
|
9
|
+
/**
|
|
10
|
+
* Create a transport instance based on the runtime environment
|
|
11
|
+
*
|
|
12
|
+
* - In Node.js with HTTP/2 support: uses S2STransport (binary protocol over HTTP/2)
|
|
13
|
+
* - Everywhere else: uses FetchTransport (JSON over HTTP/1.1)
|
|
14
|
+
*
|
|
15
|
+
* @param config Transport configuration
|
|
16
|
+
* @param preferHttp2 Force HTTP/2 or HTTP/1.1 (default: auto-detect)
|
|
17
|
+
*/
|
|
18
|
+
async function createSessionTransport(config) {
|
|
19
|
+
// Check if user explicitly disabled HTTP/2
|
|
20
|
+
if (config?.forceTransport === "fetch") {
|
|
21
|
+
return new index_js_1.FetchTransport(config);
|
|
22
|
+
}
|
|
23
|
+
else if (config?.forceTransport === "s2s") {
|
|
24
|
+
const { S2STransport } = await Promise.resolve().then(() => require("./transport/s2s/index.js"));
|
|
25
|
+
return new S2STransport(config);
|
|
26
|
+
}
|
|
27
|
+
// Check if HTTP/2 is available
|
|
28
|
+
if ((0, runtime_js_1.supportsHttp2)()) {
|
|
29
|
+
// Dynamic import for Node.js-specific transport
|
|
30
|
+
const { S2STransport } = await Promise.resolve().then(() => require("./transport/s2s/index.js"));
|
|
31
|
+
return new S2STransport(config);
|
|
32
|
+
}
|
|
33
|
+
// Fallback to fetch
|
|
34
|
+
return new index_js_1.FetchTransport(config);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/lib/stream/factory.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAeH,wDAoBC;AAjCD,6CAA6C;AAC7C,yDAA4D;AAG5D;;;;;;;;GAQG;AACI,KAAK,UAAU,sBAAsB,CAC3C,MAAuB;IAEvB,2CAA2C;IAC3C,IAAI,MAAM,EAAE,cAAc,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,IAAI,yBAAc,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,MAAM,EAAE,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,2CAAa,0BAA0B,EAAC,CAAC;QAClE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAA,0BAAa,GAAE,EAAE,CAAC;QACrB,gDAAgD;QAChD,MAAM,EAAE,YAAY,EAAE,GAAG,2CAAa,0BAA0B,EAAC,CAAC;QAClE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,oBAAoB;IACpB,OAAO,IAAI,yBAAc,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime environment detection for transport selection
|
|
3
|
+
*/
|
|
4
|
+
export type Runtime = "node" | "browser" | "deno" | "bun" | "unknown";
|
|
5
|
+
/**
|
|
6
|
+
* Detect the current JavaScript runtime
|
|
7
|
+
*/
|
|
8
|
+
export declare function detectRuntime(): Runtime;
|
|
9
|
+
/**
|
|
10
|
+
* Check if the current runtime supports HTTP/2 for s2s protocol
|
|
11
|
+
*/
|
|
12
|
+
export declare function supportsHttp2(): boolean;
|
|
13
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/lib/stream/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAEtE;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAuBvC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAkBvC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime environment detection for transport selection
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.detectRuntime = detectRuntime;
|
|
7
|
+
exports.supportsHttp2 = supportsHttp2;
|
|
8
|
+
/**
|
|
9
|
+
* Detect the current JavaScript runtime
|
|
10
|
+
*/
|
|
11
|
+
function detectRuntime() {
|
|
12
|
+
// Check for Deno
|
|
13
|
+
// @ts-expect-error - Deno global not in types
|
|
14
|
+
if (typeof Deno !== "undefined") {
|
|
15
|
+
return "deno";
|
|
16
|
+
}
|
|
17
|
+
// Check for Bun
|
|
18
|
+
if (typeof Bun !== "undefined") {
|
|
19
|
+
return "bun";
|
|
20
|
+
}
|
|
21
|
+
// Check for Node.js
|
|
22
|
+
if (typeof process !== "undefined" && process.versions?.node !== undefined) {
|
|
23
|
+
return "node";
|
|
24
|
+
}
|
|
25
|
+
// Check for browser
|
|
26
|
+
if (typeof window !== "undefined" && typeof document !== "undefined") {
|
|
27
|
+
return "browser";
|
|
28
|
+
}
|
|
29
|
+
return "unknown";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if the current runtime supports HTTP/2 for s2s protocol
|
|
33
|
+
*/
|
|
34
|
+
function supportsHttp2() {
|
|
35
|
+
const runtime = detectRuntime();
|
|
36
|
+
switch (runtime) {
|
|
37
|
+
case "node":
|
|
38
|
+
case "deno":
|
|
39
|
+
case "bun":
|
|
40
|
+
// via node:http2
|
|
41
|
+
return true;
|
|
42
|
+
case "browser":
|
|
43
|
+
// Browsers don't expose raw HTTP/2 - they handle it internally
|
|
44
|
+
// but we can't use s2s protocol
|
|
45
|
+
return false;
|
|
46
|
+
default:
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/lib/stream/runtime.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,sCAuBC;AAKD,sCAkBC;AAjDD;;GAEG;AACH,SAAgB,aAAa;IAC5B,iBAAiB;IACjB,8CAA8C;IAC9C,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5E,OAAO,MAAM,CAAC;IACf,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC5B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACT,iBAAiB;YACjB,OAAO,IAAI,CAAC;QAEb,KAAK,SAAS;YACb,+DAA+D;YAC/D,gCAAgC;YAChC,OAAO,KAAK,CAAC;QAEd;YACC,OAAO,KAAK,CAAC;IACf,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { S2RequestOptions } from "../../../../common.js";
|
|
2
|
+
import { type Client } from "../../../../generated/client/index.js";
|
|
3
|
+
import type { AppendAck, StreamPosition } from "../../../../generated/index.js";
|
|
4
|
+
import { EventStream } from "../../../event-stream.js";
|
|
5
|
+
import type { AppendArgs, AppendRecord, AppendSession, AppendSessionOptions, ReadArgs, ReadRecord, ReadSession, SessionTransport, TransportConfig } from "../../types.js";
|
|
6
|
+
export declare class FetchReadSession<Format extends "string" | "bytes" = "string"> extends EventStream<ReadRecord<Format>> {
|
|
7
|
+
static create<Format extends "string" | "bytes" = "string">(client: Client, name: string, args?: ReadArgs<Format>, options?: S2RequestOptions): Promise<FetchReadSession<Format>>;
|
|
8
|
+
private _lastReadPosition;
|
|
9
|
+
private constructor();
|
|
10
|
+
lastReadPosition(): StreamPosition | undefined;
|
|
11
|
+
}
|
|
12
|
+
declare class AcksStream extends ReadableStream<AppendAck> implements AsyncDisposable {
|
|
13
|
+
constructor(setController: (controller: ReadableStreamDefaultController<AppendAck>) => void);
|
|
14
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
15
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<AppendAck>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Session for appending records to a stream.
|
|
19
|
+
* Queues append requests and ensures only one is in-flight at a time.
|
|
20
|
+
*/
|
|
21
|
+
export declare class FetchAppendSession implements ReadableWritablePair<AppendAck, AppendArgs>, AsyncDisposable {
|
|
22
|
+
private _lastAckedPosition;
|
|
23
|
+
private queue;
|
|
24
|
+
private pendingResolvers;
|
|
25
|
+
private inFlight;
|
|
26
|
+
private readonly options?;
|
|
27
|
+
private readonly stream;
|
|
28
|
+
private acksController;
|
|
29
|
+
private _readable;
|
|
30
|
+
private _writable;
|
|
31
|
+
private closed;
|
|
32
|
+
private processingPromise;
|
|
33
|
+
private queuedBytes;
|
|
34
|
+
private readonly maxQueuedBytes;
|
|
35
|
+
private waitingForCapacity;
|
|
36
|
+
private readonly client;
|
|
37
|
+
readonly readable: ReadableStream<AppendAck>;
|
|
38
|
+
readonly writable: WritableStream<AppendArgs>;
|
|
39
|
+
static create(stream: string, transportConfig: TransportConfig, sessionOptions?: AppendSessionOptions, requestOptions?: S2RequestOptions): Promise<FetchAppendSession>;
|
|
40
|
+
private constructor();
|
|
41
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Get a stream of acknowledgements for appends.
|
|
44
|
+
*/
|
|
45
|
+
acks(): AcksStream;
|
|
46
|
+
/**
|
|
47
|
+
* Close the append session.
|
|
48
|
+
* Waits for all pending appends to complete before resolving.
|
|
49
|
+
*/
|
|
50
|
+
close(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Submit an append request to the session.
|
|
53
|
+
* The request will be queued and sent when no other request is in-flight.
|
|
54
|
+
* Returns a promise that resolves when the append is acknowledged or rejects on error.
|
|
55
|
+
*/
|
|
56
|
+
submit(records: AppendRecord | AppendRecord[], args?: {
|
|
57
|
+
fencing_token?: string;
|
|
58
|
+
match_seq_num?: number;
|
|
59
|
+
}, precalculatedSize?: number): Promise<AppendAck>;
|
|
60
|
+
/**
|
|
61
|
+
* Main processing loop that sends queued requests one at a time.
|
|
62
|
+
*/
|
|
63
|
+
private processLoop;
|
|
64
|
+
private waitForDrain;
|
|
65
|
+
lastAckedPosition(): AppendAck | undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Fetch-based transport using HTTP/1.1 + JSON
|
|
69
|
+
* Works in all JavaScript environments (browser, Node.js, Deno, etc.)
|
|
70
|
+
*/
|
|
71
|
+
export declare class FetchTransport implements SessionTransport {
|
|
72
|
+
private readonly client;
|
|
73
|
+
private readonly transportConfig;
|
|
74
|
+
constructor(config: TransportConfig);
|
|
75
|
+
makeAppendSession(stream: string, sessionOptions?: AppendSessionOptions, requestOptions?: S2RequestOptions): Promise<AppendSession>;
|
|
76
|
+
makeReadSession<Format extends "string" | "bytes" = "string">(stream: string, args?: ReadArgs<Format>, options?: S2RequestOptions): Promise<ReadSession<Format>>;
|
|
77
|
+
}
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/stream/transport/fetch/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FetchTransport = exports.FetchAppendSession = exports.FetchReadSession = void 0;
|
|
4
|
+
const error_js_1 = require("../../../../error.js");
|
|
5
|
+
const index_js_1 = require("../../../../generated/client/index.js");
|
|
6
|
+
const index_js_2 = require("../../../../generated/index.js");
|
|
7
|
+
const utils_js_1 = require("../../../../utils.js");
|
|
8
|
+
const base64_js_1 = require("../../../base64.js");
|
|
9
|
+
const event_stream_js_1 = require("../../../event-stream.js");
|
|
10
|
+
const Redacted = require("../../../redacted.js");
|
|
11
|
+
const shared_js_1 = require("./shared.js");
|
|
12
|
+
class FetchReadSession extends event_stream_js_1.EventStream {
|
|
13
|
+
static async create(client, name, args, options) {
|
|
14
|
+
const { as, ...queryParams } = args ?? {};
|
|
15
|
+
const response = await (0, index_js_2.read)({
|
|
16
|
+
client,
|
|
17
|
+
path: {
|
|
18
|
+
stream: name,
|
|
19
|
+
},
|
|
20
|
+
headers: {
|
|
21
|
+
accept: "text/event-stream",
|
|
22
|
+
...(as === "bytes" ? { "s2-format": "base64" } : {}),
|
|
23
|
+
},
|
|
24
|
+
query: queryParams,
|
|
25
|
+
parseAs: "stream",
|
|
26
|
+
...options,
|
|
27
|
+
});
|
|
28
|
+
if (response.error) {
|
|
29
|
+
if ("message" in response.error) {
|
|
30
|
+
throw new error_js_1.S2Error({
|
|
31
|
+
message: response.error.message,
|
|
32
|
+
code: response.error.code ?? undefined,
|
|
33
|
+
status: response.response.status,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// special case for 416 - Range Not Satisfiable
|
|
38
|
+
throw new error_js_1.RangeNotSatisfiableError({
|
|
39
|
+
status: response.response.status,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (!response.response.body) {
|
|
44
|
+
throw new error_js_1.S2Error({
|
|
45
|
+
message: "No body in SSE response",
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const format = (args?.as ?? "string");
|
|
49
|
+
return new FetchReadSession(response.response.body, format);
|
|
50
|
+
}
|
|
51
|
+
_lastReadPosition = undefined;
|
|
52
|
+
constructor(stream, format) {
|
|
53
|
+
super(stream, (msg) => {
|
|
54
|
+
// Parse SSE events according to the S2 protocol
|
|
55
|
+
if (msg.event === "batch" && msg.data) {
|
|
56
|
+
const rawBatch = JSON.parse(msg.data);
|
|
57
|
+
const batch = (() => {
|
|
58
|
+
// If format is bytes, decode base64 to Uint8Array
|
|
59
|
+
if (format === "bytes") {
|
|
60
|
+
return {
|
|
61
|
+
...rawBatch,
|
|
62
|
+
records: rawBatch.records.map((record) => ({
|
|
63
|
+
...record,
|
|
64
|
+
body: record.body ? (0, base64_js_1.decodeFromBase64)(record.body) : undefined,
|
|
65
|
+
headers: record.headers?.map((header) => header.map((h) => (0, base64_js_1.decodeFromBase64)(h))),
|
|
66
|
+
})),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return {
|
|
71
|
+
...rawBatch,
|
|
72
|
+
records: rawBatch.records.map((record) => ({
|
|
73
|
+
...record,
|
|
74
|
+
headers: record.headers
|
|
75
|
+
? Object.fromEntries(record.headers)
|
|
76
|
+
: undefined,
|
|
77
|
+
})),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
})();
|
|
81
|
+
if (batch.tail) {
|
|
82
|
+
this._lastReadPosition = batch.tail;
|
|
83
|
+
}
|
|
84
|
+
return { done: false, batch: true, value: batch.records ?? [] };
|
|
85
|
+
}
|
|
86
|
+
if (msg.event === "error") {
|
|
87
|
+
// Handle error events
|
|
88
|
+
throw new error_js_1.S2Error({ message: msg.data ?? "Unknown error" });
|
|
89
|
+
}
|
|
90
|
+
// Skip ping events and other events
|
|
91
|
+
return { done: false };
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
lastReadPosition() {
|
|
95
|
+
return this._lastReadPosition;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.FetchReadSession = FetchReadSession;
|
|
99
|
+
class AcksStream extends ReadableStream {
|
|
100
|
+
constructor(setController) {
|
|
101
|
+
super({
|
|
102
|
+
start: (controller) => {
|
|
103
|
+
setController(controller);
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async [Symbol.asyncDispose]() {
|
|
108
|
+
await this.cancel("disposed");
|
|
109
|
+
}
|
|
110
|
+
// Polyfill for older browsers
|
|
111
|
+
[Symbol.asyncIterator]() {
|
|
112
|
+
const fn = ReadableStream.prototype[Symbol.asyncIterator];
|
|
113
|
+
if (typeof fn === "function")
|
|
114
|
+
return fn.call(this);
|
|
115
|
+
const reader = this.getReader();
|
|
116
|
+
return {
|
|
117
|
+
next: async () => {
|
|
118
|
+
const r = await reader.read();
|
|
119
|
+
if (r.done) {
|
|
120
|
+
reader.releaseLock();
|
|
121
|
+
return { done: true, value: undefined };
|
|
122
|
+
}
|
|
123
|
+
return { done: false, value: r.value };
|
|
124
|
+
},
|
|
125
|
+
throw: async (e) => {
|
|
126
|
+
await reader.cancel(e);
|
|
127
|
+
reader.releaseLock();
|
|
128
|
+
return { done: true, value: undefined };
|
|
129
|
+
},
|
|
130
|
+
return: async () => {
|
|
131
|
+
await reader.cancel("done");
|
|
132
|
+
reader.releaseLock();
|
|
133
|
+
return { done: true, value: undefined };
|
|
134
|
+
},
|
|
135
|
+
[Symbol.asyncIterator]() {
|
|
136
|
+
return this;
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Session for appending records to a stream.
|
|
143
|
+
* Queues append requests and ensures only one is in-flight at a time.
|
|
144
|
+
*/
|
|
145
|
+
class FetchAppendSession {
|
|
146
|
+
_lastAckedPosition = undefined;
|
|
147
|
+
queue = [];
|
|
148
|
+
pendingResolvers = [];
|
|
149
|
+
inFlight = false;
|
|
150
|
+
options;
|
|
151
|
+
stream;
|
|
152
|
+
acksController;
|
|
153
|
+
_readable;
|
|
154
|
+
_writable;
|
|
155
|
+
closed = false;
|
|
156
|
+
processingPromise = null;
|
|
157
|
+
queuedBytes = 0;
|
|
158
|
+
maxQueuedBytes;
|
|
159
|
+
waitingForCapacity = [];
|
|
160
|
+
client;
|
|
161
|
+
readable;
|
|
162
|
+
writable;
|
|
163
|
+
static async create(stream, transportConfig, sessionOptions, requestOptions) {
|
|
164
|
+
return new FetchAppendSession(stream, transportConfig, sessionOptions, requestOptions);
|
|
165
|
+
}
|
|
166
|
+
constructor(stream, transportConfig, sessionOptions, requestOptions) {
|
|
167
|
+
this.options = requestOptions;
|
|
168
|
+
this.stream = stream;
|
|
169
|
+
this.maxQueuedBytes = sessionOptions?.maxQueuedBytes ?? 10 * 1024 * 1024; // 10 MiB default
|
|
170
|
+
this.client = (0, index_js_1.createClient)((0, index_js_1.createConfig)({
|
|
171
|
+
baseUrl: transportConfig.baseUrl,
|
|
172
|
+
auth: () => Redacted.value(transportConfig.accessToken),
|
|
173
|
+
}));
|
|
174
|
+
// Create the readable stream for acks
|
|
175
|
+
this._readable = new AcksStream((controller) => {
|
|
176
|
+
this.acksController = controller;
|
|
177
|
+
});
|
|
178
|
+
this.readable = this._readable;
|
|
179
|
+
// Create the writable stream
|
|
180
|
+
let writableController;
|
|
181
|
+
this._writable = new WritableStream({
|
|
182
|
+
start: (controller) => {
|
|
183
|
+
writableController = controller;
|
|
184
|
+
},
|
|
185
|
+
write: async (chunk) => {
|
|
186
|
+
// Calculate batch size
|
|
187
|
+
let batchMeteredSize = 0;
|
|
188
|
+
for (const record of chunk.records) {
|
|
189
|
+
batchMeteredSize += (0, utils_js_1.meteredSizeBytes)(record);
|
|
190
|
+
}
|
|
191
|
+
// Wait for capacity if needed
|
|
192
|
+
while (this.queuedBytes + batchMeteredSize > this.maxQueuedBytes &&
|
|
193
|
+
!this.closed) {
|
|
194
|
+
await new Promise((resolve) => {
|
|
195
|
+
this.waitingForCapacity.push(resolve);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
// Submit the batch
|
|
199
|
+
this.submit(chunk.records, {
|
|
200
|
+
fencing_token: chunk.fencing_token ?? undefined,
|
|
201
|
+
match_seq_num: chunk.match_seq_num ?? undefined,
|
|
202
|
+
}, batchMeteredSize);
|
|
203
|
+
},
|
|
204
|
+
close: async () => {
|
|
205
|
+
this.closed = true;
|
|
206
|
+
await this.waitForDrain();
|
|
207
|
+
},
|
|
208
|
+
abort: async (reason) => {
|
|
209
|
+
this.closed = true;
|
|
210
|
+
this.queue = [];
|
|
211
|
+
this.queuedBytes = 0;
|
|
212
|
+
// Reject all pending promises
|
|
213
|
+
const error = new error_js_1.S2Error({
|
|
214
|
+
message: `AppendSession was aborted: ${reason}`,
|
|
215
|
+
});
|
|
216
|
+
for (const resolver of this.pendingResolvers) {
|
|
217
|
+
resolver.reject(error);
|
|
218
|
+
}
|
|
219
|
+
this.pendingResolvers = [];
|
|
220
|
+
// Reject all waiting for capacity
|
|
221
|
+
for (const resolver of this.waitingForCapacity) {
|
|
222
|
+
resolver();
|
|
223
|
+
}
|
|
224
|
+
this.waitingForCapacity = [];
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
this.writable = this._writable;
|
|
228
|
+
}
|
|
229
|
+
async [Symbol.asyncDispose]() {
|
|
230
|
+
await this.close();
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get a stream of acknowledgements for appends.
|
|
234
|
+
*/
|
|
235
|
+
acks() {
|
|
236
|
+
return this._readable;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Close the append session.
|
|
240
|
+
* Waits for all pending appends to complete before resolving.
|
|
241
|
+
*/
|
|
242
|
+
async close() {
|
|
243
|
+
await this.writable.close();
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Submit an append request to the session.
|
|
247
|
+
* The request will be queued and sent when no other request is in-flight.
|
|
248
|
+
* Returns a promise that resolves when the append is acknowledged or rejects on error.
|
|
249
|
+
*/
|
|
250
|
+
submit(records, args, precalculatedSize) {
|
|
251
|
+
if (this.closed) {
|
|
252
|
+
return Promise.reject(new error_js_1.S2Error({ message: "AppendSession is closed" }));
|
|
253
|
+
}
|
|
254
|
+
const recordsArray = Array.isArray(records) ? records : [records];
|
|
255
|
+
// Validate batch size limits
|
|
256
|
+
if (recordsArray.length > 1000) {
|
|
257
|
+
return Promise.reject(new error_js_1.S2Error({
|
|
258
|
+
message: `Batch of ${recordsArray.length} exceeds maximum batch size of 1000 records`,
|
|
259
|
+
}));
|
|
260
|
+
}
|
|
261
|
+
// Validate metered size (use precalculated if provided)
|
|
262
|
+
let batchMeteredSize = precalculatedSize ?? 0;
|
|
263
|
+
if (batchMeteredSize === 0) {
|
|
264
|
+
for (const record of recordsArray) {
|
|
265
|
+
batchMeteredSize += (0, utils_js_1.meteredSizeBytes)(record);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (batchMeteredSize > 1024 * 1024) {
|
|
269
|
+
return Promise.reject(new error_js_1.S2Error({
|
|
270
|
+
message: `Batch size ${batchMeteredSize} bytes exceeds maximum of 1 MiB (1048576 bytes)`,
|
|
271
|
+
}));
|
|
272
|
+
}
|
|
273
|
+
return new Promise((resolve, reject) => {
|
|
274
|
+
this.queue.push({
|
|
275
|
+
records: recordsArray,
|
|
276
|
+
fencing_token: args?.fencing_token,
|
|
277
|
+
match_seq_num: args?.match_seq_num,
|
|
278
|
+
meteredSize: batchMeteredSize,
|
|
279
|
+
});
|
|
280
|
+
this.queuedBytes += batchMeteredSize;
|
|
281
|
+
this.pendingResolvers.push({ resolve, reject });
|
|
282
|
+
// Start processing if not already running
|
|
283
|
+
if (!this.processingPromise) {
|
|
284
|
+
this.processingPromise = this.processLoop();
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Main processing loop that sends queued requests one at a time.
|
|
290
|
+
*/
|
|
291
|
+
async processLoop() {
|
|
292
|
+
while (this.queue.length > 0) {
|
|
293
|
+
this.inFlight = true;
|
|
294
|
+
const args = this.queue.shift();
|
|
295
|
+
const resolver = this.pendingResolvers.shift();
|
|
296
|
+
try {
|
|
297
|
+
const ack = await (0, shared_js_1.streamAppend)(this.stream, this.client, args.records, {
|
|
298
|
+
fencing_token: args.fencing_token,
|
|
299
|
+
match_seq_num: args.match_seq_num,
|
|
300
|
+
}, this.options);
|
|
301
|
+
this._lastAckedPosition = ack;
|
|
302
|
+
// Emit ack to the acks stream if it exists
|
|
303
|
+
if (this.acksController) {
|
|
304
|
+
this.acksController.enqueue(ack);
|
|
305
|
+
}
|
|
306
|
+
// Resolve the promise for this request
|
|
307
|
+
resolver.resolve(ack);
|
|
308
|
+
// Release capacity and wake up waiting writers
|
|
309
|
+
this.queuedBytes -= args.meteredSize;
|
|
310
|
+
while (this.waitingForCapacity.length > 0) {
|
|
311
|
+
const waiter = this.waitingForCapacity.shift();
|
|
312
|
+
waiter();
|
|
313
|
+
// Only wake one at a time - let them check capacity again
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
this.inFlight = false;
|
|
319
|
+
this.processingPromise = null;
|
|
320
|
+
// Reject the promise for this request
|
|
321
|
+
resolver.reject(error);
|
|
322
|
+
// Reject all remaining pending promises
|
|
323
|
+
for (const pendingResolver of this.pendingResolvers) {
|
|
324
|
+
pendingResolver.reject(error);
|
|
325
|
+
}
|
|
326
|
+
this.pendingResolvers = [];
|
|
327
|
+
// Clear the queue and reset queued bytes
|
|
328
|
+
this.queue = [];
|
|
329
|
+
this.queuedBytes = 0;
|
|
330
|
+
// Wake up all waiting writers (they'll see the closed state or retry)
|
|
331
|
+
for (const waiter of this.waitingForCapacity) {
|
|
332
|
+
waiter();
|
|
333
|
+
}
|
|
334
|
+
this.waitingForCapacity = [];
|
|
335
|
+
// Do not rethrow here to avoid unhandled rejection; callers already received rejection
|
|
336
|
+
}
|
|
337
|
+
this.inFlight = false;
|
|
338
|
+
}
|
|
339
|
+
this.processingPromise = null;
|
|
340
|
+
}
|
|
341
|
+
async waitForDrain() {
|
|
342
|
+
// Wait for processing to complete
|
|
343
|
+
if (this.processingPromise) {
|
|
344
|
+
await this.processingPromise;
|
|
345
|
+
}
|
|
346
|
+
// Wait until queue is empty and nothing is in flight
|
|
347
|
+
while (this.queue.length > 0 || this.inFlight) {
|
|
348
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
349
|
+
}
|
|
350
|
+
// Close the acks stream if it exists
|
|
351
|
+
if (this.acksController) {
|
|
352
|
+
this.acksController.close();
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
lastAckedPosition() {
|
|
356
|
+
return this._lastAckedPosition;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
exports.FetchAppendSession = FetchAppendSession;
|
|
360
|
+
/**
|
|
361
|
+
* Fetch-based transport using HTTP/1.1 + JSON
|
|
362
|
+
* Works in all JavaScript environments (browser, Node.js, Deno, etc.)
|
|
363
|
+
*/
|
|
364
|
+
class FetchTransport {
|
|
365
|
+
client;
|
|
366
|
+
transportConfig;
|
|
367
|
+
constructor(config) {
|
|
368
|
+
this.client = (0, index_js_1.createClient)((0, index_js_1.createConfig)({
|
|
369
|
+
baseUrl: config.baseUrl,
|
|
370
|
+
auth: () => Redacted.value(config.accessToken),
|
|
371
|
+
}));
|
|
372
|
+
this.transportConfig = config;
|
|
373
|
+
}
|
|
374
|
+
async makeAppendSession(stream, sessionOptions, requestOptions) {
|
|
375
|
+
return FetchAppendSession.create(stream, this.transportConfig, sessionOptions, requestOptions);
|
|
376
|
+
}
|
|
377
|
+
async makeReadSession(stream, args, options) {
|
|
378
|
+
return FetchReadSession.create(this.client, stream, args, options);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
exports.FetchTransport = FetchTransport;
|
|
382
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/lib/stream/transport/fetch/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { S2RequestOptions } from "../../../../common.js";
|
|
2
|
+
import type { Client } from "../../../../generated/client/index.js";
|
|
3
|
+
import { type AppendAck } from "../../../../generated/index.js";
|
|
4
|
+
import type { AppendArgs, AppendRecord, ReadArgs, ReadBatch } from "../../types.js";
|
|
5
|
+
export declare function streamRead<Format extends "string" | "bytes" = "string">(stream: string, client: Client, args?: ReadArgs<Format>, options?: S2RequestOptions): Promise<ReadBatch<Format>>;
|
|
6
|
+
export declare function streamAppend(stream: string, client: Client, records: AppendRecord | AppendRecord[], args?: Omit<AppendArgs, "records">, options?: S2RequestOptions): Promise<AppendAck>;
|
|
7
|
+
//# sourceMappingURL=shared.d.ts.map
|