@s2-dev/streamstore 0.17.6 → 0.18.1
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/README.md +69 -1
- package/dist/cjs/accessTokens.d.ts +3 -2
- package/dist/cjs/accessTokens.d.ts.map +1 -1
- package/dist/cjs/accessTokens.js +22 -37
- package/dist/cjs/accessTokens.js.map +1 -1
- package/dist/cjs/basin.d.ts +4 -3
- package/dist/cjs/basin.d.ts.map +1 -1
- package/dist/cjs/basin.js +16 -6
- package/dist/cjs/basin.js.map +1 -1
- package/dist/cjs/basins.d.ts +10 -10
- package/dist/cjs/basins.d.ts.map +1 -1
- package/dist/cjs/basins.js +36 -64
- package/dist/cjs/basins.js.map +1 -1
- package/dist/cjs/batch-transform.d.ts +1 -1
- package/dist/cjs/batch-transform.d.ts.map +1 -1
- package/dist/cjs/batch-transform.js +36 -5
- package/dist/cjs/batch-transform.js.map +1 -1
- package/dist/cjs/common.d.ts +42 -0
- package/dist/cjs/common.d.ts.map +1 -1
- package/dist/cjs/error.d.ts +40 -2
- package/dist/cjs/error.d.ts.map +1 -1
- package/dist/cjs/error.js +268 -2
- package/dist/cjs/error.js.map +1 -1
- package/dist/cjs/generated/client/types.gen.d.ts +7 -0
- package/dist/cjs/generated/client/types.gen.d.ts.map +1 -1
- package/dist/cjs/generated/client/utils.gen.d.ts +1 -0
- package/dist/cjs/generated/client/utils.gen.d.ts.map +1 -1
- package/dist/cjs/generated/client/utils.gen.js.map +1 -1
- package/dist/cjs/generated/core/types.gen.d.ts +2 -0
- package/dist/cjs/generated/core/types.gen.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +46 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +28 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/result.d.ts +57 -0
- package/dist/cjs/lib/result.d.ts.map +1 -0
- package/dist/cjs/lib/result.js +43 -0
- package/dist/cjs/lib/result.js.map +1 -0
- package/dist/cjs/lib/retry.d.ts +151 -0
- package/dist/cjs/lib/retry.d.ts.map +1 -0
- package/dist/cjs/lib/retry.js +839 -0
- package/dist/cjs/lib/retry.js.map +1 -0
- package/dist/cjs/lib/stream/factory.d.ts +0 -1
- package/dist/cjs/lib/stream/factory.d.ts.map +1 -1
- package/dist/cjs/lib/stream/factory.js +0 -1
- package/dist/cjs/lib/stream/factory.js.map +1 -1
- package/dist/cjs/lib/stream/runtime.d.ts +14 -0
- package/dist/cjs/lib/stream/runtime.d.ts.map +1 -1
- package/dist/cjs/lib/stream/runtime.js +18 -3
- package/dist/cjs/lib/stream/runtime.js.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts +24 -32
- package/dist/cjs/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/index.js +260 -187
- package/dist/cjs/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts +1 -2
- package/dist/cjs/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/fetch/shared.js +49 -72
- package/dist/cjs/lib/stream/transport/fetch/shared.js.map +1 -1
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts +0 -1
- package/dist/cjs/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/cjs/lib/stream/transport/s2s/index.js +312 -352
- package/dist/cjs/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/cjs/lib/stream/types.d.ts +102 -8
- package/dist/cjs/lib/stream/types.d.ts.map +1 -1
- package/dist/cjs/metrics.d.ts +3 -2
- package/dist/cjs/metrics.d.ts.map +1 -1
- package/dist/cjs/metrics.js +24 -39
- package/dist/cjs/metrics.js.map +1 -1
- package/dist/cjs/s2.d.ts +1 -0
- package/dist/cjs/s2.d.ts.map +1 -1
- package/dist/cjs/s2.js +20 -3
- package/dist/cjs/s2.js.map +1 -1
- package/dist/cjs/stream.d.ts +5 -3
- package/dist/cjs/stream.d.ts.map +1 -1
- package/dist/cjs/stream.js +29 -18
- package/dist/cjs/stream.js.map +1 -1
- package/dist/cjs/streams.d.ts +10 -10
- package/dist/cjs/streams.d.ts.map +1 -1
- package/dist/cjs/streams.js +36 -64
- package/dist/cjs/streams.js.map +1 -1
- package/dist/cjs/utils.d.ts +3 -3
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +3 -3
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +8 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +11 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/accessTokens.d.ts +3 -2
- package/dist/esm/accessTokens.d.ts.map +1 -1
- package/dist/esm/accessTokens.js +23 -38
- package/dist/esm/accessTokens.js.map +1 -1
- package/dist/esm/basin.d.ts +4 -3
- package/dist/esm/basin.d.ts.map +1 -1
- package/dist/esm/basin.js +16 -6
- package/dist/esm/basin.js.map +1 -1
- package/dist/esm/basins.d.ts +10 -10
- package/dist/esm/basins.d.ts.map +1 -1
- package/dist/esm/basins.js +37 -65
- package/dist/esm/basins.js.map +1 -1
- package/dist/esm/batch-transform.d.ts +1 -1
- package/dist/esm/batch-transform.d.ts.map +1 -1
- package/dist/esm/batch-transform.js +37 -6
- package/dist/esm/batch-transform.js.map +1 -1
- package/dist/esm/common.d.ts +42 -0
- package/dist/esm/common.d.ts.map +1 -1
- package/dist/esm/error.d.ts +40 -2
- package/dist/esm/error.d.ts.map +1 -1
- package/dist/esm/error.js +260 -2
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/generated/client/types.gen.d.ts +7 -0
- package/dist/esm/generated/client/types.gen.d.ts.map +1 -1
- package/dist/esm/generated/client/utils.gen.d.ts +1 -0
- package/dist/esm/generated/client/utils.gen.d.ts.map +1 -1
- package/dist/esm/generated/client/utils.gen.js.map +1 -1
- package/dist/esm/generated/core/types.gen.d.ts +2 -0
- package/dist/esm/generated/core/types.gen.d.ts.map +1 -1
- package/dist/esm/index.d.ts +46 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +23 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/result.d.ts +57 -0
- package/dist/esm/lib/result.d.ts.map +1 -0
- package/dist/esm/lib/result.js +37 -0
- package/dist/esm/lib/result.js.map +1 -0
- package/dist/esm/lib/retry.d.ts +151 -0
- package/dist/esm/lib/retry.d.ts.map +1 -0
- package/dist/esm/lib/retry.js +830 -0
- package/dist/esm/lib/retry.js.map +1 -0
- package/dist/esm/lib/stream/factory.d.ts +0 -1
- package/dist/esm/lib/stream/factory.d.ts.map +1 -1
- package/dist/esm/lib/stream/factory.js +0 -1
- package/dist/esm/lib/stream/factory.js.map +1 -1
- package/dist/esm/lib/stream/runtime.d.ts +14 -0
- package/dist/esm/lib/stream/runtime.d.ts.map +1 -1
- package/dist/esm/lib/stream/runtime.js +23 -3
- package/dist/esm/lib/stream/runtime.js.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.d.ts +24 -32
- package/dist/esm/lib/stream/transport/fetch/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/index.js +260 -187
- package/dist/esm/lib/stream/transport/fetch/index.js.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts +1 -2
- package/dist/esm/lib/stream/transport/fetch/shared.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/fetch/shared.js +51 -74
- package/dist/esm/lib/stream/transport/fetch/shared.js.map +1 -1
- package/dist/esm/lib/stream/transport/s2s/index.d.ts +0 -1
- package/dist/esm/lib/stream/transport/s2s/index.d.ts.map +1 -1
- package/dist/esm/lib/stream/transport/s2s/index.js +313 -353
- package/dist/esm/lib/stream/transport/s2s/index.js.map +1 -1
- package/dist/esm/lib/stream/types.d.ts +102 -8
- package/dist/esm/lib/stream/types.d.ts.map +1 -1
- package/dist/esm/metrics.d.ts +3 -2
- package/dist/esm/metrics.d.ts.map +1 -1
- package/dist/esm/metrics.js +25 -40
- package/dist/esm/metrics.js.map +1 -1
- package/dist/esm/s2.d.ts +1 -0
- package/dist/esm/s2.d.ts.map +1 -1
- package/dist/esm/s2.js +20 -3
- package/dist/esm/s2.js.map +1 -1
- package/dist/esm/stream.d.ts +5 -3
- package/dist/esm/stream.d.ts.map +1 -1
- package/dist/esm/stream.js +30 -19
- package/dist/esm/stream.js.map +1 -1
- package/dist/esm/streams.d.ts +10 -10
- package/dist/esm/streams.d.ts.map +1 -1
- package/dist/esm/streams.js +37 -65
- package/dist/esm/streams.js.map +1 -1
- package/dist/esm/utils.d.ts +3 -3
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +2 -2
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +8 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +8 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +7 -4
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result types for AppendSession operations.
|
|
3
|
+
* Using discriminated unions for ergonomic error handling with TypeScript control flow analysis.
|
|
4
|
+
*/
|
|
5
|
+
import { S2Error } from "../error.js";
|
|
6
|
+
import type { AppendAck } from "../generated/index.js";
|
|
7
|
+
/**
|
|
8
|
+
* Result of an append operation.
|
|
9
|
+
* Use discriminated union pattern: check `result.ok` to access either `value` or `error`.
|
|
10
|
+
*/
|
|
11
|
+
export type AppendResult = {
|
|
12
|
+
ok: true;
|
|
13
|
+
value: AppendAck;
|
|
14
|
+
} | {
|
|
15
|
+
ok: false;
|
|
16
|
+
error: S2Error;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Result of a close operation.
|
|
20
|
+
*/
|
|
21
|
+
export type CloseResult = {
|
|
22
|
+
ok: true;
|
|
23
|
+
} | {
|
|
24
|
+
ok: false;
|
|
25
|
+
error: S2Error;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a successful append result.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ok(value: AppendAck): AppendResult;
|
|
31
|
+
/**
|
|
32
|
+
* Constructs a failed append result.
|
|
33
|
+
*/
|
|
34
|
+
export declare function err(error: S2Error): AppendResult;
|
|
35
|
+
/**
|
|
36
|
+
* Constructs a successful close result.
|
|
37
|
+
*/
|
|
38
|
+
export declare function okClose(): CloseResult;
|
|
39
|
+
/**
|
|
40
|
+
* Constructs a failed close result.
|
|
41
|
+
*/
|
|
42
|
+
export declare function errClose(error: S2Error): CloseResult;
|
|
43
|
+
/**
|
|
44
|
+
* Type guard to check if a result is successful.
|
|
45
|
+
* Mainly for internal use; prefer `result.ok` for public API.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isOk<T>(result: {
|
|
48
|
+
ok: true;
|
|
49
|
+
value: T;
|
|
50
|
+
} | {
|
|
51
|
+
ok: false;
|
|
52
|
+
error: S2Error;
|
|
53
|
+
}): result is {
|
|
54
|
+
ok: true;
|
|
55
|
+
value: T;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/lib/result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,YAAY,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvE;;GAEG;AACH,wBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAEjD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAEhD;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,WAAW,CAErC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAEpD;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACrB,MAAM,EAAE;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5D,MAAM,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAElC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result types for AppendSession operations.
|
|
3
|
+
* Using discriminated unions for ergonomic error handling with TypeScript control flow analysis.
|
|
4
|
+
*/
|
|
5
|
+
import { S2Error } from "../error.js";
|
|
6
|
+
/**
|
|
7
|
+
* Constructs a successful append result.
|
|
8
|
+
*/
|
|
9
|
+
export function ok(value) {
|
|
10
|
+
return { ok: true, value };
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a failed append result.
|
|
14
|
+
*/
|
|
15
|
+
export function err(error) {
|
|
16
|
+
return { ok: false, error };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a successful close result.
|
|
20
|
+
*/
|
|
21
|
+
export function okClose() {
|
|
22
|
+
return { ok: true };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a failed close result.
|
|
26
|
+
*/
|
|
27
|
+
export function errClose(error) {
|
|
28
|
+
return { ok: false, error };
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Type guard to check if a result is successful.
|
|
32
|
+
* Mainly for internal use; prefer `result.ok` for public API.
|
|
33
|
+
*/
|
|
34
|
+
export function isOk(result) {
|
|
35
|
+
return result.ok;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/lib/result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAgBtC;;GAEG;AACH,MAAM,UAAU,EAAE,CAAC,KAAgB;IAClC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,KAAc;IACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CACnB,MAA8D;IAE9D,OAAO,MAAM,CAAC,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { RetryConfig } from "../common.js";
|
|
2
|
+
import { S2Error } from "../error.js";
|
|
3
|
+
import type { AppendAck, StreamPosition } from "../generated/index.js";
|
|
4
|
+
import type { AcksStream, AppendArgs, AppendRecord, AppendSessionOptions, AppendSession as AppendSessionType, ReadArgs, ReadRecord, ReadSession as ReadSessionType, TransportAppendSession, TransportReadSession } from "./stream/types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Default retry configuration.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_RETRY_CONFIG: Required<RetryConfig> & {
|
|
9
|
+
requestTimeoutMillis: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Determines if an error should be retried based on its characteristics.
|
|
13
|
+
* 400-level errors (except 408, 429) are non-retryable validation/client errors.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isRetryable(error: S2Error): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Calculates the delay before the next retry attempt using fixed backoff
|
|
18
|
+
* with jitter. The `attempt` parameter is currently ignored to keep a
|
|
19
|
+
* constant base delay per attempt.
|
|
20
|
+
*/
|
|
21
|
+
export declare function calculateDelay(attempt: number, baseDelayMillis: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Sleeps for the specified duration.
|
|
24
|
+
*/
|
|
25
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Executes an async function with automatic retry logic for transient failures.
|
|
28
|
+
*
|
|
29
|
+
* @param retryConfig Retry configuration (max attempts, backoff duration)
|
|
30
|
+
* @param fn The async function to execute
|
|
31
|
+
* @returns The result of the function
|
|
32
|
+
* @throws The last error if all retry attempts are exhausted
|
|
33
|
+
*/
|
|
34
|
+
export declare function withRetries<T>(retryConfig: RetryConfig | undefined, fn: () => Promise<T>, isPolicyCompliant?: (config: RetryConfig, error: S2Error) => boolean): Promise<T>;
|
|
35
|
+
export declare class RetryReadSession<Format extends "string" | "bytes" = "string"> extends ReadableStream<ReadRecord<Format>> implements ReadSessionType<Format> {
|
|
36
|
+
private _nextReadPosition;
|
|
37
|
+
private _lastObservedTail;
|
|
38
|
+
private _recordsRead;
|
|
39
|
+
private _bytesRead;
|
|
40
|
+
static create<Format extends "string" | "bytes" = "string">(generator: (args: ReadArgs<Format>) => Promise<TransportReadSession<Format>>, args?: ReadArgs<Format>, config?: RetryConfig): Promise<RetryReadSession<Format>>;
|
|
41
|
+
private constructor();
|
|
42
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
43
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<ReadRecord<Format>>;
|
|
44
|
+
lastObservedTail(): StreamPosition | undefined;
|
|
45
|
+
nextReadPosition(): StreamPosition | undefined;
|
|
46
|
+
}
|
|
47
|
+
export declare class RetryAppendSession implements AsyncDisposable, AppendSessionType {
|
|
48
|
+
private readonly generator;
|
|
49
|
+
private readonly sessionOptions?;
|
|
50
|
+
private readonly requestTimeoutMillis;
|
|
51
|
+
private readonly maxQueuedBytes;
|
|
52
|
+
private readonly maxInflightBatches?;
|
|
53
|
+
private readonly retryConfig;
|
|
54
|
+
private readonly inflight;
|
|
55
|
+
private capacityWaiter?;
|
|
56
|
+
private session?;
|
|
57
|
+
private queuedBytes;
|
|
58
|
+
private pendingBytes;
|
|
59
|
+
private consecutiveFailures;
|
|
60
|
+
private currentAttempt;
|
|
61
|
+
private pumpPromise?;
|
|
62
|
+
private pumpStopped;
|
|
63
|
+
private closing;
|
|
64
|
+
private pumpWakeup?;
|
|
65
|
+
private closed;
|
|
66
|
+
private fatalError?;
|
|
67
|
+
private _lastAckedPosition?;
|
|
68
|
+
private acksController?;
|
|
69
|
+
readonly readable: ReadableStream<AppendAck>;
|
|
70
|
+
readonly writable: WritableStream<AppendArgs>;
|
|
71
|
+
/**
|
|
72
|
+
* If the session has failed, returns the original fatal error that caused
|
|
73
|
+
* the pump to stop. Returns undefined when the session has not failed.
|
|
74
|
+
*/
|
|
75
|
+
failureCause(): S2Error | undefined;
|
|
76
|
+
constructor(generator: (options?: AppendSessionOptions) => Promise<TransportAppendSession>, sessionOptions?: AppendSessionOptions | undefined, config?: RetryConfig);
|
|
77
|
+
static create(generator: (options?: AppendSessionOptions) => Promise<TransportAppendSession>, sessionOptions?: AppendSessionOptions, config?: RetryConfig): Promise<RetryAppendSession>;
|
|
78
|
+
/**
|
|
79
|
+
* Submit an append request. Returns a promise that resolves with the ack.
|
|
80
|
+
* This method does not block on capacity (only writable.write() does).
|
|
81
|
+
*/
|
|
82
|
+
submit(records: AppendRecord | AppendRecord[], args?: Omit<AppendArgs, "records"> & {
|
|
83
|
+
precalculatedSize?: number;
|
|
84
|
+
}): Promise<AppendAck>;
|
|
85
|
+
/**
|
|
86
|
+
* Internal submit that returns discriminated union.
|
|
87
|
+
* Creates inflight entry and starts pump if needed.
|
|
88
|
+
*/
|
|
89
|
+
private submitInternal;
|
|
90
|
+
/**
|
|
91
|
+
* Wait for capacity before allowing write to proceed (writable only).
|
|
92
|
+
*/
|
|
93
|
+
private waitForCapacity;
|
|
94
|
+
/**
|
|
95
|
+
* Release capacity and wake waiter if present.
|
|
96
|
+
*/
|
|
97
|
+
private releaseCapacity;
|
|
98
|
+
/**
|
|
99
|
+
* Ensure pump loop is running.
|
|
100
|
+
*/
|
|
101
|
+
private ensurePump;
|
|
102
|
+
/**
|
|
103
|
+
* Main pump loop: processes inflight queue, handles acks, retries, and recovery.
|
|
104
|
+
*/
|
|
105
|
+
private runPump;
|
|
106
|
+
/**
|
|
107
|
+
* Wait for head entry's innerPromise with timeout.
|
|
108
|
+
* Returns either the settled result or a timeout indicator.
|
|
109
|
+
*
|
|
110
|
+
* Per-attempt ack timeout semantics:
|
|
111
|
+
* - The deadline is computed from the most recent (re)submit attempt using
|
|
112
|
+
* a monotonic clock (performance.now) to avoid issues with wall clock
|
|
113
|
+
* adjustments.
|
|
114
|
+
* - If attempt start is missing (for backward compatibility), we measure
|
|
115
|
+
* from "now" with the full timeout window.
|
|
116
|
+
*/
|
|
117
|
+
private waitForHead;
|
|
118
|
+
/**
|
|
119
|
+
* Recover from transient error: recreate session and resubmit all inflight entries.
|
|
120
|
+
*/
|
|
121
|
+
private recover;
|
|
122
|
+
/**
|
|
123
|
+
* Check if append can be retried under noSideEffects policy.
|
|
124
|
+
* For appends, idempotency requires match_seq_num.
|
|
125
|
+
*/
|
|
126
|
+
private isIdempotent;
|
|
127
|
+
/**
|
|
128
|
+
* Ensure session exists, creating it if necessary.
|
|
129
|
+
*/
|
|
130
|
+
private ensureSession;
|
|
131
|
+
/**
|
|
132
|
+
* Abort the session with a fatal error.
|
|
133
|
+
*/
|
|
134
|
+
private abort;
|
|
135
|
+
/**
|
|
136
|
+
* Close the append session.
|
|
137
|
+
* Waits for all pending appends to complete before resolving.
|
|
138
|
+
* Does not interrupt recovery - allows it to complete.
|
|
139
|
+
*/
|
|
140
|
+
close(): Promise<void>;
|
|
141
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Get a stream of acknowledgements for appends.
|
|
144
|
+
*/
|
|
145
|
+
acks(): AcksStream;
|
|
146
|
+
/**
|
|
147
|
+
* Get the last acknowledged position.
|
|
148
|
+
*/
|
|
149
|
+
lastAckedPosition(): AppendAck | undefined;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/lib/retry.ts"],"names":[],"mappings":"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"}
|