@feltdb/core 0.5.0 → 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/README.md +24 -14
- 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 +48 -1
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +95 -10
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/crates/feltdb/src/application.rs +183 -8
- 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 +314 -46
- 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 +14 -0
- package/dist/memory-db.d.ts.map +1 -1
- package/dist/memory-db.js +42 -0
- package/dist/state-contract.d.ts +1 -1
- package/dist/state-contract.d.ts.map +1 -1
- package/dist/state-contract.js +1 -1
- package/dist/studio-app/assets/{feltdb_wasm-CBGD0zRu.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-C6ATF9mJ.wasm +0 -0
- package/dist/studio-app/assets/index-3cvTQ0Mv.js +0 -28
package/README.md
CHANGED
|
@@ -142,22 +142,32 @@ Terminal states (`completed`, `failed`, `cancelled`) cannot be transitioned from
|
|
|
142
142
|
Guarantee: **audit trail with permanent untrust markers**, no silent rollback.
|
|
143
143
|
|
|
144
144
|
```typescript
|
|
145
|
-
import { RevisionRecoveryInput } from '@feltdb/core';
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
145
|
+
import { StateContractClient, RevisionRecoveryInput } from '@feltdb/core';
|
|
146
|
+
|
|
147
|
+
const client = new StateContractClient({
|
|
148
|
+
applicationId: 'my-app',
|
|
149
|
+
revisionId: 'rev-clean-122',
|
|
150
|
+
environment: 'staging'
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
const recovery = await client.recoverApplicationRevision({
|
|
154
|
+
applicationId: 'my-app',
|
|
155
|
+
expectedCurrentRevision: 'rev-corrupted-123',
|
|
156
|
+
targetRevision: 'rev-clean-122',
|
|
157
|
+
authorization: 'ELEVATED',
|
|
158
|
+
actor: 'sherpa-admission',
|
|
159
|
+
reason: 'Replace corrupt historical revision',
|
|
160
|
+
environment: 'staging',
|
|
161
|
+
recoveryId: 'sherpa-staging-recovery-v1'
|
|
156
162
|
});
|
|
157
163
|
|
|
158
|
-
// Result includes
|
|
159
|
-
|
|
160
|
-
//
|
|
164
|
+
// Result includes:
|
|
165
|
+
// - pointerMoved: Environment pointer moved to valid revision
|
|
166
|
+
// - sourceMarkedUntrusted: Corrupt revision permanently marked untrusted
|
|
167
|
+
// - auditDurable: Immutable audit trail persisted
|
|
168
|
+
console.log(recovery.pointerMoved); // true
|
|
169
|
+
console.log(recovery.sourceMarkedUntrusted); // true
|
|
170
|
+
console.log(recovery.auditDurable); // true
|
|
161
171
|
```
|
|
162
172
|
|
|
163
173
|
### Operation Types
|
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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"}
|