@feltdb/core 0.5.1 → 0.5.2
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/cell.d.ts +233 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +1078 -0
- package/dist/cli/index.js +1 -1
- package/dist/collection.d.ts +4 -2
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +28 -25
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/crates/feltdb/src/lib.rs +173 -0
- package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +231 -0
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +108 -1
- package/dist/create/server-source/crates/feltdb-server/src/request_telemetry.rs +1 -1
- package/dist/create/server-source/crates/feltdb-server/tests/revision_recovery_integration_test.rs +219 -0
- package/dist/db.d.ts +16 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +21 -0
- package/dist/feltdb.d.ts +7 -1
- package/dist/feltdb.d.ts.map +1 -1
- package/dist/file-db.d.ts +5 -0
- package/dist/file-db.d.ts.map +1 -1
- package/dist/file-db.js +72 -9
- package/dist/http-db.d.ts +13 -0
- package/dist/http-db.d.ts.map +1 -1
- package/dist/http-db.js +41 -0
- package/dist/http-server.d.ts +42 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +182 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/indexeddb-conformance.spec.d.ts +21 -0
- package/dist/indexeddb-conformance.spec.d.ts.map +1 -0
- package/dist/indexeddb-conformance.spec.js +103 -0
- package/dist/indexeddb-db.d.ts +8 -0
- package/dist/indexeddb-db.d.ts.map +1 -1
- package/dist/indexeddb-db.js +69 -0
- package/dist/memory-db.d.ts +2 -0
- package/dist/memory-db.d.ts.map +1 -1
- package/dist/memory-db.js +9 -3
- package/dist/studio-app/assets/{feltdb_wasm-DYPuS6Ky.js → feltdb_wasm-h9mxesnH.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-B8U4A1n1.wasm +0 -0
- package/dist/studio-app/assets/index-BMaQv3zF.js +28 -0
- package/dist/studio-app/index.html +1 -1
- package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
- package/package.json +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-DEwA82pF.wasm +0 -0
- package/dist/studio-app/assets/index-_qqVLfw1.js +0 -28
package/dist/cell.d.ts
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable Cell: independently-versioned mutation boundary
|
|
3
|
+
*
|
|
4
|
+
* A Cell is the smallest durable authority boundary in FeltDB.
|
|
5
|
+
* Each cell owns its own version, state, and mutation serialization.
|
|
6
|
+
*/
|
|
7
|
+
import type { JsDb } from './feltdb.js';
|
|
8
|
+
export declare const NO_CHANGE: unique symbol;
|
|
9
|
+
export type NoChange = typeof NO_CHANGE;
|
|
10
|
+
export declare const AUTHORITY_CONFLICT: unique symbol;
|
|
11
|
+
export type AuthorityConflict = typeof AUTHORITY_CONFLICT;
|
|
12
|
+
export type CellLifecycle = 'active' | 'suspended' | 'retired';
|
|
13
|
+
export interface CellAuthority {
|
|
14
|
+
readonly owner: string | null;
|
|
15
|
+
readonly epoch: number;
|
|
16
|
+
readonly lifecycle: CellLifecycle;
|
|
17
|
+
}
|
|
18
|
+
export interface CellPlacement {
|
|
19
|
+
readonly nodeId: string | null;
|
|
20
|
+
}
|
|
21
|
+
export interface CellLease {
|
|
22
|
+
readonly holder: string;
|
|
23
|
+
readonly leaseId: string;
|
|
24
|
+
readonly epoch: number;
|
|
25
|
+
readonly expiresAt: number;
|
|
26
|
+
}
|
|
27
|
+
export interface CellSnapshot<T = unknown> {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly version: number;
|
|
30
|
+
readonly value: T;
|
|
31
|
+
readonly updatedAt: string;
|
|
32
|
+
readonly authority: CellAuthority;
|
|
33
|
+
readonly placement: CellPlacement;
|
|
34
|
+
readonly lease: CellLease | null;
|
|
35
|
+
}
|
|
36
|
+
export interface CellMutationEvent<T = unknown> {
|
|
37
|
+
readonly cellId: string;
|
|
38
|
+
readonly version: number;
|
|
39
|
+
readonly value: T;
|
|
40
|
+
readonly timestamp: string;
|
|
41
|
+
readonly epoch: number;
|
|
42
|
+
}
|
|
43
|
+
export interface AuthorityTransitionOptions {
|
|
44
|
+
expectedEpoch: number;
|
|
45
|
+
owner?: string | null;
|
|
46
|
+
lifecycle?: CellLifecycle;
|
|
47
|
+
}
|
|
48
|
+
export interface CellDelegateOptions {
|
|
49
|
+
expectedEpoch: number;
|
|
50
|
+
from: string | null;
|
|
51
|
+
to: string | null;
|
|
52
|
+
}
|
|
53
|
+
export interface PlacementUpdateOptions {
|
|
54
|
+
nodeId: string | null;
|
|
55
|
+
}
|
|
56
|
+
export interface LeaseAcquireOptions {
|
|
57
|
+
holder: string;
|
|
58
|
+
durationMs: number;
|
|
59
|
+
}
|
|
60
|
+
export interface LeaseRenewOptions {
|
|
61
|
+
leaseId: string;
|
|
62
|
+
durationMs: number;
|
|
63
|
+
}
|
|
64
|
+
export interface LeaseReleaseOptions {
|
|
65
|
+
leaseId: string;
|
|
66
|
+
}
|
|
67
|
+
export interface PromoteOptions {
|
|
68
|
+
expectedVersion: number;
|
|
69
|
+
expectedEpoch: number;
|
|
70
|
+
newOwner: string;
|
|
71
|
+
newNodeId?: string | null;
|
|
72
|
+
}
|
|
73
|
+
export interface CellFailureObservation {
|
|
74
|
+
nodeId: string;
|
|
75
|
+
observedAt: number;
|
|
76
|
+
lastSeenAt: number;
|
|
77
|
+
authorityEpoch: number;
|
|
78
|
+
}
|
|
79
|
+
export interface FailureEvaluationOptions {
|
|
80
|
+
nodeId: string;
|
|
81
|
+
now: number;
|
|
82
|
+
suspectAfterMs: number;
|
|
83
|
+
failedAfterMs: number;
|
|
84
|
+
}
|
|
85
|
+
export interface FailureEvaluationResult {
|
|
86
|
+
status: 'healthy' | 'suspect' | 'failed';
|
|
87
|
+
authorityEpoch: number;
|
|
88
|
+
nodeId: string;
|
|
89
|
+
ageMs?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface AutomaticFailoverOptions {
|
|
92
|
+
failureEvaluationOptions: FailureEvaluationOptions;
|
|
93
|
+
/** Already-observed failure evidence, avoiding a redundant managed read. */
|
|
94
|
+
failureObservation?: CellFailureObservation;
|
|
95
|
+
/** Candidate's existing local replica snapshot; managed CAS remains authoritative. */
|
|
96
|
+
replicaSnapshot?: CellSnapshot<any>;
|
|
97
|
+
newOwner: string;
|
|
98
|
+
}
|
|
99
|
+
export interface AutomaticFailoverResult {
|
|
100
|
+
attempted: boolean;
|
|
101
|
+
promoted: boolean;
|
|
102
|
+
reason?: string;
|
|
103
|
+
diagnostics?: {
|
|
104
|
+
isReplica: boolean;
|
|
105
|
+
failureStatus?: 'healthy' | 'suspect' | 'failed';
|
|
106
|
+
eligibilityChecksPassed: boolean;
|
|
107
|
+
promotionAttempted: boolean;
|
|
108
|
+
promotionSucceeded: boolean;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export interface MutationOptions {
|
|
112
|
+
authorityEpoch?: number;
|
|
113
|
+
leaseId?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface CellReplicationSnapshot<T = unknown> {
|
|
116
|
+
readonly cellId: string;
|
|
117
|
+
readonly version: number;
|
|
118
|
+
readonly value: T;
|
|
119
|
+
readonly updatedAt: string;
|
|
120
|
+
readonly authority: CellAuthority;
|
|
121
|
+
readonly placement: CellPlacement;
|
|
122
|
+
readonly lease: CellLease | null;
|
|
123
|
+
}
|
|
124
|
+
export interface CellReplica {
|
|
125
|
+
readonly nodeId: string;
|
|
126
|
+
readonly version: number;
|
|
127
|
+
readonly receivedAt: number;
|
|
128
|
+
}
|
|
129
|
+
export interface ReplicationState<T = unknown> {
|
|
130
|
+
cellId: string;
|
|
131
|
+
version: number;
|
|
132
|
+
value: T;
|
|
133
|
+
updatedAt: string;
|
|
134
|
+
authority: {
|
|
135
|
+
owner: string | null;
|
|
136
|
+
epoch: number;
|
|
137
|
+
lifecycle: CellLifecycle;
|
|
138
|
+
};
|
|
139
|
+
placement: {
|
|
140
|
+
nodeId: string | null;
|
|
141
|
+
};
|
|
142
|
+
lease: {
|
|
143
|
+
holder: string;
|
|
144
|
+
leaseId: string;
|
|
145
|
+
epoch: number;
|
|
146
|
+
expiresAt: number;
|
|
147
|
+
} | null;
|
|
148
|
+
replica?: {
|
|
149
|
+
nodeId: string;
|
|
150
|
+
version: number;
|
|
151
|
+
receivedAt: number;
|
|
152
|
+
};
|
|
153
|
+
divergent?: boolean;
|
|
154
|
+
conflictReason?: string;
|
|
155
|
+
}
|
|
156
|
+
export type CellUpdater<T> = (current: T | null) => T | typeof NO_CHANGE;
|
|
157
|
+
export type CellTransactor<T, R> = (tx: CellTransaction<T>) => Promise<R> | R;
|
|
158
|
+
export interface CellTransaction<T> {
|
|
159
|
+
get(): Promise<CellSnapshot<T> | null>;
|
|
160
|
+
set(value: T, options?: MutationOptions): Promise<CellSnapshot<T>>;
|
|
161
|
+
update(updater: CellUpdater<T>, options?: MutationOptions): Promise<CellSnapshot<T>>;
|
|
162
|
+
}
|
|
163
|
+
export interface Cell<T = unknown> {
|
|
164
|
+
readonly id: string;
|
|
165
|
+
get(): Promise<CellSnapshot<T> | null>;
|
|
166
|
+
set(value: T, options?: MutationOptions): Promise<CellSnapshot<T>>;
|
|
167
|
+
update(updater: CellUpdater<T>, options?: MutationOptions): Promise<CellSnapshot<T>>;
|
|
168
|
+
transact<R>(fn: CellTransactor<T, R>): Promise<R>;
|
|
169
|
+
transitionAuthority(options: AuthorityTransitionOptions): Promise<CellSnapshot<T>>;
|
|
170
|
+
delegate(options: CellDelegateOptions): Promise<CellSnapshot<T>>;
|
|
171
|
+
updatePlacement(options: PlacementUpdateOptions): Promise<CellSnapshot<T>>;
|
|
172
|
+
acquireLease(options: LeaseAcquireOptions): Promise<CellSnapshot<T>>;
|
|
173
|
+
renewLease(options: LeaseRenewOptions): Promise<CellSnapshot<T>>;
|
|
174
|
+
releaseLease(options: LeaseReleaseOptions): Promise<CellSnapshot<T>>;
|
|
175
|
+
promote(options: PromoteOptions): Promise<CellSnapshot<T>>;
|
|
176
|
+
observeHealth(observation: CellFailureObservation): Promise<void>;
|
|
177
|
+
evaluateFailure(options: FailureEvaluationOptions): Promise<FailureEvaluationResult>;
|
|
178
|
+
attemptAutomaticFailover(options: AutomaticFailoverOptions): Promise<AutomaticFailoverResult>;
|
|
179
|
+
on(event: 'change', handler: (event: CellMutationEvent<T>) => void): void;
|
|
180
|
+
off(event: 'change', handler: (event: CellMutationEvent<T>) => void): void;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* CellImpl implements the Cell interface with authority and lifecycle support.
|
|
184
|
+
* Uses per-cell locking to serialize mutations and authority transitions.
|
|
185
|
+
* Epoch-based fencing prevents stale authority from mutating.
|
|
186
|
+
*
|
|
187
|
+
* Replication: CellImpl can also track replica state separately.
|
|
188
|
+
* A replica is read-only: replication transfers knowledge, not authority.
|
|
189
|
+
*/
|
|
190
|
+
export declare class CellImpl<T = unknown> implements Cell<T> {
|
|
191
|
+
readonly id: string;
|
|
192
|
+
private jsDb;
|
|
193
|
+
private cellCollection;
|
|
194
|
+
private replicaCollection;
|
|
195
|
+
private failureObservationCollection;
|
|
196
|
+
private mutationQueue;
|
|
197
|
+
private isLocked;
|
|
198
|
+
private changeHandlers;
|
|
199
|
+
private isReplica;
|
|
200
|
+
constructor(jsDb: JsDb, cellId: string);
|
|
201
|
+
setReplica(isReplica: boolean): void;
|
|
202
|
+
isReplicaCell(): boolean;
|
|
203
|
+
applyReplication(snapshot: CellReplicationSnapshot<T>): Promise<void>;
|
|
204
|
+
private encodeKey;
|
|
205
|
+
private hashId;
|
|
206
|
+
get(): Promise<CellSnapshot<T> | null>;
|
|
207
|
+
set(value: T, options?: MutationOptions): Promise<CellSnapshot<T>>;
|
|
208
|
+
update(updater: CellUpdater<T>, options?: MutationOptions): Promise<CellSnapshot<T>>;
|
|
209
|
+
transact<R>(fn: CellTransactor<T, R>): Promise<R>;
|
|
210
|
+
transitionAuthority(options: AuthorityTransitionOptions): Promise<CellSnapshot<T>>;
|
|
211
|
+
delegate(options: CellDelegateOptions): Promise<CellSnapshot<T>>;
|
|
212
|
+
updatePlacement(options: PlacementUpdateOptions): Promise<CellSnapshot<T>>;
|
|
213
|
+
acquireLease(options: LeaseAcquireOptions): Promise<CellSnapshot<T>>;
|
|
214
|
+
renewLease(options: LeaseRenewOptions): Promise<CellSnapshot<T>>;
|
|
215
|
+
releaseLease(options: LeaseReleaseOptions): Promise<CellSnapshot<T>>;
|
|
216
|
+
promote(options: PromoteOptions): Promise<CellSnapshot<T>>;
|
|
217
|
+
private promoteSnapshot;
|
|
218
|
+
observeHealth(observation: CellFailureObservation): Promise<void>;
|
|
219
|
+
evaluateFailure(options: FailureEvaluationOptions): Promise<FailureEvaluationResult>;
|
|
220
|
+
attemptAutomaticFailover(options: AutomaticFailoverOptions): Promise<AutomaticFailoverResult>;
|
|
221
|
+
private evaluateFailureSnapshot;
|
|
222
|
+
private validateLifecycleTransition;
|
|
223
|
+
private getUnlocked;
|
|
224
|
+
private setUnlocked;
|
|
225
|
+
private updateUnlocked;
|
|
226
|
+
private snapshotFromState;
|
|
227
|
+
on(event: 'change', handler: (event: CellMutationEvent<T>) => void): void;
|
|
228
|
+
off(event: 'change', handler: (event: CellMutationEvent<T>) => void): void;
|
|
229
|
+
private emitChange;
|
|
230
|
+
private acquireLock;
|
|
231
|
+
private processQueue;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=cell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../src/cell.ts"],"names":[],"mappings":"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"}
|