@nifrajs/core 2.0.0 → 2.1.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/README.md +27 -0
- package/dist/capabilities.d.ts +54 -2
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +240 -5
- package/dist/capabilities.js.map +1 -1
- package/dist/durable-adapters.d.ts +241 -0
- package/dist/durable-adapters.d.ts.map +1 -0
- package/dist/durable-adapters.js +697 -0
- package/dist/durable-adapters.js.map +1 -0
- package/dist/durable-execution.d.ts +349 -0
- package/dist/durable-execution.d.ts.map +1 -0
- package/dist/durable-execution.js +1173 -0
- package/dist/durable-execution.js.map +1 -0
- package/dist/effect-lifecycle.d.ts +42 -0
- package/dist/effect-lifecycle.d.ts.map +1 -0
- package/dist/effect-lifecycle.js +66 -0
- package/dist/effect-lifecycle.js.map +1 -0
- package/dist/effect-scope.d.ts +75 -0
- package/dist/effect-scope.d.ts.map +1 -0
- package/dist/effect-scope.js +177 -0
- package/dist/effect-scope.js.map +1 -0
- package/dist/idempotency-plugin.d.ts +5 -0
- package/dist/idempotency-plugin.d.ts.map +1 -1
- package/dist/idempotency-plugin.js +8 -0
- package/dist/idempotency-plugin.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/capability-runtime.d.ts +62 -1
- package/dist/internal/capability-runtime.d.ts.map +1 -1
- package/dist/internal/capability-runtime.js +11 -2
- package/dist/internal/capability-runtime.js.map +1 -1
- package/dist/internal/effect-execution.d.ts +16 -0
- package/dist/internal/effect-execution.d.ts.map +1 -0
- package/dist/internal/effect-execution.js +50 -0
- package/dist/internal/effect-execution.js.map +1 -0
- package/dist/internal/safe-equal.d.ts +20 -0
- package/dist/internal/safe-equal.d.ts.map +1 -0
- package/dist/internal/safe-equal.js +31 -0
- package/dist/internal/safe-equal.js.map +1 -0
- package/dist/ledger.d.ts +14 -6
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +31 -5
- package/dist/ledger.js.map +1 -1
- package/dist/reconciliation-worker.d.ts +108 -0
- package/dist/reconciliation-worker.d.ts.map +1 -0
- package/dist/reconciliation-worker.js +239 -0
- package/dist/reconciliation-worker.js.map +1 -0
- package/dist/server/idempotency-lane.d.ts +1 -0
- package/dist/server/idempotency-lane.d.ts.map +1 -1
- package/dist/server/idempotency-lane.js +61 -37
- package/dist/server/idempotency-lane.js.map +1 -1
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js.map +1 -1
- package/dist/server/server.d.ts +12 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +33 -2
- package/dist/server/server.js.map +1 -1
- package/dist/server/transport-lane.d.ts +28 -0
- package/dist/server/transport-lane.d.ts.map +1 -0
- package/dist/server/transport-lane.js +106 -0
- package/dist/server/transport-lane.js.map +1 -0
- package/dist/server/websocket.d.ts +6 -0
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +10 -1
- package/dist/server/websocket.js.map +1 -1
- package/dist/transport-codec-rich.d.ts +8 -0
- package/dist/transport-codec-rich.d.ts.map +1 -0
- package/dist/transport-codec-rich.js +14 -0
- package/dist/transport-codec-rich.js.map +1 -0
- package/dist/transport-codec.d.ts +31 -0
- package/dist/transport-codec.d.ts.map +1 -0
- package/dist/transport-codec.js +190 -0
- package/dist/transport-codec.js.map +1 -0
- package/dist/transport-plugin.d.ts +3 -0
- package/dist/transport-plugin.d.ts.map +1 -0
- package/dist/transport-plugin.js +3 -0
- package/dist/transport-plugin.js.map +1 -0
- package/dist/wire.d.ts +58 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +445 -0
- package/dist/wire.js.map +1 -0
- package/package.json +46 -1
- package/src/capabilities.ts +306 -5
- package/src/durable-adapters.ts +1039 -0
- package/src/durable-execution.ts +1676 -0
- package/src/effect-lifecycle.ts +120 -0
- package/src/effect-scope.ts +267 -0
- package/src/idempotency-plugin.ts +10 -0
- package/src/index.ts +1 -1
- package/src/internal/capability-runtime.ts +87 -1
- package/src/internal/effect-execution.ts +70 -0
- package/src/internal/safe-equal.ts +27 -0
- package/src/ledger.ts +45 -11
- package/src/reconciliation-worker.ts +372 -0
- package/src/server/idempotency-lane.ts +68 -34
- package/src/server/respond.ts +1 -0
- package/src/server/server.ts +46 -0
- package/src/server/transport-lane.ts +141 -0
- package/src/server/websocket.ts +15 -1
- package/src/transport-codec-rich.ts +20 -0
- package/src/transport-codec.ts +250 -0
- package/src/transport-plugin.ts +2 -0
- package/src/wire.ts +474 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common durable execution persistence adapter. Concrete storage backends only implement atomic
|
|
3
|
+
* insert/CAS/scan/lease primitives; these views supply the effect, approval, saga, and worker APIs.
|
|
4
|
+
*/
|
|
5
|
+
import type { ApprovalStore, DurableEffectStore, ReconciliationScanOptions, ReconciliationScanPage, SagaStore } from "./durable-execution.js";
|
|
6
|
+
import type { ReconciliationLease, ReconciliationLeaseStore } from "./reconciliation-worker.js";
|
|
7
|
+
export type DurableRecordKind = "effect" | "approval" | "saga";
|
|
8
|
+
export interface DurableRecordBackend {
|
|
9
|
+
create(kind: DurableRecordKind, id: string, record: {
|
|
10
|
+
readonly version: number;
|
|
11
|
+
readonly state?: string;
|
|
12
|
+
readonly updatedAt?: number;
|
|
13
|
+
}): Promise<boolean>;
|
|
14
|
+
get<T extends {
|
|
15
|
+
readonly version: number;
|
|
16
|
+
}>(kind: DurableRecordKind, id: string): Promise<T | undefined>;
|
|
17
|
+
compareAndSet(kind: DurableRecordKind, id: string, expectedVersion: number, record: {
|
|
18
|
+
readonly version: number;
|
|
19
|
+
readonly state?: string;
|
|
20
|
+
readonly updatedAt?: number;
|
|
21
|
+
}): Promise<boolean>;
|
|
22
|
+
scan<T extends {
|
|
23
|
+
readonly state: string;
|
|
24
|
+
readonly updatedAt: number;
|
|
25
|
+
}>(kind: DurableRecordKind, input: ReconciliationScanOptions<string>): Promise<ReconciliationScanPage<T>>;
|
|
26
|
+
acquireLease(input: {
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly owner: string;
|
|
29
|
+
readonly now: number;
|
|
30
|
+
readonly leaseMs: number;
|
|
31
|
+
}): Promise<ReconciliationLease | undefined>;
|
|
32
|
+
renewLease(input: {
|
|
33
|
+
readonly name: string;
|
|
34
|
+
readonly owner: string;
|
|
35
|
+
readonly token: string;
|
|
36
|
+
readonly now: number;
|
|
37
|
+
readonly leaseMs: number;
|
|
38
|
+
}): Promise<boolean>;
|
|
39
|
+
checkpointLease(input: {
|
|
40
|
+
readonly name: string;
|
|
41
|
+
readonly owner: string;
|
|
42
|
+
readonly token: string;
|
|
43
|
+
readonly cursor?: string;
|
|
44
|
+
}): Promise<boolean>;
|
|
45
|
+
releaseLease(input: {
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly owner: string;
|
|
48
|
+
readonly token: string;
|
|
49
|
+
}): Promise<boolean>;
|
|
50
|
+
}
|
|
51
|
+
export interface DurableExecutionAdapter {
|
|
52
|
+
readonly effects: DurableEffectStore;
|
|
53
|
+
readonly approvals: ApprovalStore;
|
|
54
|
+
readonly sagas: SagaStore;
|
|
55
|
+
readonly leases: ReconciliationLeaseStore;
|
|
56
|
+
}
|
|
57
|
+
export declare function createDurableExecutionAdapter(backend: DurableRecordBackend): DurableExecutionAdapter;
|
|
58
|
+
/** Deterministic reference backend for tests and adapter conformance; not for production. */
|
|
59
|
+
export declare class MemoryDurableRecordBackend implements DurableRecordBackend {
|
|
60
|
+
private readonly records;
|
|
61
|
+
private readonly leases;
|
|
62
|
+
private key;
|
|
63
|
+
create(kind: DurableRecordKind, id: string, record: {
|
|
64
|
+
readonly version: number;
|
|
65
|
+
readonly state?: string;
|
|
66
|
+
readonly updatedAt?: number;
|
|
67
|
+
}): Promise<boolean>;
|
|
68
|
+
get<T extends {
|
|
69
|
+
readonly version: number;
|
|
70
|
+
}>(kind: DurableRecordKind, id: string): Promise<T | undefined>;
|
|
71
|
+
compareAndSet(kind: DurableRecordKind, id: string, expectedVersion: number, record: {
|
|
72
|
+
readonly version: number;
|
|
73
|
+
readonly state?: string;
|
|
74
|
+
readonly updatedAt?: number;
|
|
75
|
+
}): Promise<boolean>;
|
|
76
|
+
scan<T extends {
|
|
77
|
+
readonly state: string;
|
|
78
|
+
readonly updatedAt: number;
|
|
79
|
+
}>(kind: DurableRecordKind, input: ReconciliationScanOptions<string>): Promise<ReconciliationScanPage<T>>;
|
|
80
|
+
acquireLease(input: Parameters<DurableRecordBackend["acquireLease"]>[0]): Promise<ReconciliationLease | undefined>;
|
|
81
|
+
renewLease(input: Parameters<DurableRecordBackend["renewLease"]>[0]): Promise<boolean>;
|
|
82
|
+
checkpointLease(input: Parameters<DurableRecordBackend["checkpointLease"]>[0]): Promise<boolean>;
|
|
83
|
+
releaseLease(input: Parameters<DurableRecordBackend["releaseLease"]>[0]): Promise<boolean>;
|
|
84
|
+
}
|
|
85
|
+
export interface DurableExecutionConformanceResult {
|
|
86
|
+
readonly effects: true;
|
|
87
|
+
readonly approvals: true;
|
|
88
|
+
readonly sagas: true;
|
|
89
|
+
readonly leases: true;
|
|
90
|
+
}
|
|
91
|
+
/** Runtime-independent conformance suite reusable by adapter authors and CI. */
|
|
92
|
+
export declare function runDurableExecutionAdapterConformance(adapter: DurableExecutionAdapter): Promise<DurableExecutionConformanceResult>;
|
|
93
|
+
export interface PostgresQueryResult {
|
|
94
|
+
readonly rows: readonly Record<string, unknown>[];
|
|
95
|
+
readonly rowCount?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface PostgresClient {
|
|
98
|
+
query(sql: string, values?: readonly unknown[]): Promise<PostgresQueryResult>;
|
|
99
|
+
}
|
|
100
|
+
export declare class PostgresDurableRecordBackend implements DurableRecordBackend {
|
|
101
|
+
private readonly client;
|
|
102
|
+
readonly recordsTable: string;
|
|
103
|
+
readonly leasesTable: string;
|
|
104
|
+
constructor(client: PostgresClient, options?: {
|
|
105
|
+
readonly tablePrefix?: string;
|
|
106
|
+
});
|
|
107
|
+
migrate(): Promise<void>;
|
|
108
|
+
create(kind: DurableRecordKind, id: string, record: {
|
|
109
|
+
readonly version: number;
|
|
110
|
+
readonly state?: string;
|
|
111
|
+
readonly updatedAt?: number;
|
|
112
|
+
}): Promise<boolean>;
|
|
113
|
+
get<T extends {
|
|
114
|
+
readonly version: number;
|
|
115
|
+
}>(kind: DurableRecordKind, id: string): Promise<T | undefined>;
|
|
116
|
+
compareAndSet(kind: DurableRecordKind, id: string, expectedVersion: number, record: {
|
|
117
|
+
readonly version: number;
|
|
118
|
+
readonly state?: string;
|
|
119
|
+
readonly updatedAt?: number;
|
|
120
|
+
}): Promise<boolean>;
|
|
121
|
+
scan<T extends {
|
|
122
|
+
readonly state: string;
|
|
123
|
+
readonly updatedAt: number;
|
|
124
|
+
}>(kind: DurableRecordKind, input: ReconciliationScanOptions<string>): Promise<ReconciliationScanPage<T>>;
|
|
125
|
+
acquireLease(input: Parameters<DurableRecordBackend["acquireLease"]>[0]): Promise<ReconciliationLease | undefined>;
|
|
126
|
+
renewLease(input: Parameters<DurableRecordBackend["renewLease"]>[0]): Promise<boolean>;
|
|
127
|
+
checkpointLease(input: Parameters<DurableRecordBackend["checkpointLease"]>[0]): Promise<boolean>;
|
|
128
|
+
releaseLease(input: Parameters<DurableRecordBackend["releaseLease"]>[0]): Promise<boolean>;
|
|
129
|
+
}
|
|
130
|
+
export declare class PostgresDurableExecutionAdapter implements DurableExecutionAdapter {
|
|
131
|
+
readonly effects: DurableEffectStore;
|
|
132
|
+
readonly approvals: ApprovalStore;
|
|
133
|
+
readonly sagas: SagaStore;
|
|
134
|
+
readonly leases: ReconciliationLeaseStore;
|
|
135
|
+
readonly backend: PostgresDurableRecordBackend;
|
|
136
|
+
constructor(client: PostgresClient, options?: {
|
|
137
|
+
readonly tablePrefix?: string;
|
|
138
|
+
});
|
|
139
|
+
migrate(): Promise<void>;
|
|
140
|
+
}
|
|
141
|
+
export interface SQLiteRunResult {
|
|
142
|
+
readonly changes: number;
|
|
143
|
+
}
|
|
144
|
+
export interface SQLiteStatement {
|
|
145
|
+
run(...values: readonly unknown[]): SQLiteRunResult;
|
|
146
|
+
get(...values: readonly unknown[]): Record<string, unknown> | null | undefined;
|
|
147
|
+
all(...values: readonly unknown[]): readonly (Record<string, unknown> | undefined)[];
|
|
148
|
+
}
|
|
149
|
+
export interface SQLiteClient {
|
|
150
|
+
exec(sql: string): unknown;
|
|
151
|
+
query(sql: string): SQLiteStatement;
|
|
152
|
+
}
|
|
153
|
+
export declare class SQLiteDurableRecordBackend implements DurableRecordBackend {
|
|
154
|
+
private readonly client;
|
|
155
|
+
readonly recordsTable: string;
|
|
156
|
+
readonly leasesTable: string;
|
|
157
|
+
constructor(client: SQLiteClient, options?: {
|
|
158
|
+
readonly tablePrefix?: string;
|
|
159
|
+
});
|
|
160
|
+
migrate(): void;
|
|
161
|
+
create(kind: DurableRecordKind, id: string, record: {
|
|
162
|
+
readonly version: number;
|
|
163
|
+
readonly state?: string;
|
|
164
|
+
readonly updatedAt?: number;
|
|
165
|
+
}): Promise<boolean>;
|
|
166
|
+
get<T extends {
|
|
167
|
+
readonly version: number;
|
|
168
|
+
}>(kind: DurableRecordKind, id: string): Promise<T | undefined>;
|
|
169
|
+
compareAndSet(kind: DurableRecordKind, id: string, expectedVersion: number, record: {
|
|
170
|
+
readonly version: number;
|
|
171
|
+
readonly state?: string;
|
|
172
|
+
readonly updatedAt?: number;
|
|
173
|
+
}): Promise<boolean>;
|
|
174
|
+
scan<T extends {
|
|
175
|
+
readonly state: string;
|
|
176
|
+
readonly updatedAt: number;
|
|
177
|
+
}>(kind: DurableRecordKind, input: ReconciliationScanOptions<string>): Promise<ReconciliationScanPage<T>>;
|
|
178
|
+
acquireLease(input: Parameters<DurableRecordBackend["acquireLease"]>[0]): Promise<ReconciliationLease | undefined>;
|
|
179
|
+
renewLease(input: Parameters<DurableRecordBackend["renewLease"]>[0]): Promise<boolean>;
|
|
180
|
+
checkpointLease(input: Parameters<DurableRecordBackend["checkpointLease"]>[0]): Promise<boolean>;
|
|
181
|
+
releaseLease(input: Parameters<DurableRecordBackend["releaseLease"]>[0]): Promise<boolean>;
|
|
182
|
+
}
|
|
183
|
+
export declare class SQLiteDurableExecutionAdapter implements DurableExecutionAdapter {
|
|
184
|
+
readonly effects: DurableEffectStore;
|
|
185
|
+
readonly approvals: ApprovalStore;
|
|
186
|
+
readonly sagas: SagaStore;
|
|
187
|
+
readonly leases: ReconciliationLeaseStore;
|
|
188
|
+
readonly backend: SQLiteDurableRecordBackend;
|
|
189
|
+
constructor(client: SQLiteClient, options?: {
|
|
190
|
+
readonly tablePrefix?: string;
|
|
191
|
+
});
|
|
192
|
+
migrate(): void;
|
|
193
|
+
}
|
|
194
|
+
export interface DurableObjectStorageTransaction {
|
|
195
|
+
get<T = unknown>(key: string): Promise<T | undefined>;
|
|
196
|
+
put<T = unknown>(key: string, value: T): Promise<void>;
|
|
197
|
+
list<T = unknown>(options?: {
|
|
198
|
+
readonly prefix?: string;
|
|
199
|
+
readonly startAfter?: string;
|
|
200
|
+
readonly limit?: number;
|
|
201
|
+
}): Promise<Map<string, T>>;
|
|
202
|
+
}
|
|
203
|
+
export interface DurableObjectStorage extends DurableObjectStorageTransaction {
|
|
204
|
+
transaction<T>(closure: (transaction: DurableObjectStorageTransaction) => Promise<T>): Promise<T>;
|
|
205
|
+
}
|
|
206
|
+
export declare class DurableObjectRecordBackend implements DurableRecordBackend {
|
|
207
|
+
private readonly storage;
|
|
208
|
+
constructor(storage: DurableObjectStorage);
|
|
209
|
+
private recordKey;
|
|
210
|
+
private leaseKey;
|
|
211
|
+
create(kind: DurableRecordKind, id: string, record: {
|
|
212
|
+
readonly version: number;
|
|
213
|
+
readonly state?: string;
|
|
214
|
+
readonly updatedAt?: number;
|
|
215
|
+
}): Promise<boolean>;
|
|
216
|
+
get<T extends {
|
|
217
|
+
readonly version: number;
|
|
218
|
+
}>(kind: DurableRecordKind, id: string): Promise<T | undefined>;
|
|
219
|
+
compareAndSet(kind: DurableRecordKind, id: string, expectedVersion: number, record: {
|
|
220
|
+
readonly version: number;
|
|
221
|
+
readonly state?: string;
|
|
222
|
+
readonly updatedAt?: number;
|
|
223
|
+
}): Promise<boolean>;
|
|
224
|
+
scan<T extends {
|
|
225
|
+
readonly state: string;
|
|
226
|
+
readonly updatedAt: number;
|
|
227
|
+
}>(kind: DurableRecordKind, input: ReconciliationScanOptions<string>): Promise<ReconciliationScanPage<T>>;
|
|
228
|
+
acquireLease(input: Parameters<DurableRecordBackend["acquireLease"]>[0]): Promise<ReconciliationLease | undefined>;
|
|
229
|
+
renewLease(input: Parameters<DurableRecordBackend["renewLease"]>[0]): Promise<boolean>;
|
|
230
|
+
checkpointLease(input: Parameters<DurableRecordBackend["checkpointLease"]>[0]): Promise<boolean>;
|
|
231
|
+
releaseLease(input: Parameters<DurableRecordBackend["releaseLease"]>[0]): Promise<boolean>;
|
|
232
|
+
}
|
|
233
|
+
export declare class DurableObjectExecutionAdapter implements DurableExecutionAdapter {
|
|
234
|
+
readonly effects: DurableEffectStore;
|
|
235
|
+
readonly approvals: ApprovalStore;
|
|
236
|
+
readonly sagas: SagaStore;
|
|
237
|
+
readonly leases: ReconciliationLeaseStore;
|
|
238
|
+
readonly backend: DurableObjectRecordBackend;
|
|
239
|
+
constructor(storage: DurableObjectStorage);
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=durable-adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-adapters.d.ts","sourceRoot":"","sources":["../src/durable-adapters.ts"],"names":[],"mappings":"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"}
|