@feltdb/core 0.6.9 → 0.6.10
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/cli/commands.js +189 -71
- package/dist/cli/index.js +1 -1
- package/dist/collection.d.ts +110 -2
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +228 -3
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +408 -178
- package/dist/create/server-source/crates/feltdb/src/lib.rs +49 -5
- package/dist/create/server-source/crates/feltdb/src/multi_operation_transaction.rs +659 -0
- package/dist/create/server-source/crates/feltdb/src/p1_application_atomicity.rs +285 -0
- package/dist/create/server-source/crates/feltdb/src/p1_atomicity_acceptance.rs +582 -0
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +141 -0
- package/dist/db.d.ts +59 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +94 -2
- package/dist/embedded-transaction.d.ts +77 -0
- package/dist/embedded-transaction.d.ts.map +1 -0
- package/dist/embedded-transaction.js +102 -0
- package/dist/feltdb.d.ts +49 -1
- package/dist/feltdb.d.ts.map +1 -1
- package/dist/file-db.d.ts +33 -0
- package/dist/file-db.d.ts.map +1 -1
- package/dist/file-db.js +128 -4
- package/dist/freshness.d.ts +119 -0
- package/dist/freshness.d.ts.map +1 -0
- package/dist/freshness.js +115 -0
- package/dist/http-db.d.ts +48 -0
- package/dist/http-db.d.ts.map +1 -1
- package/dist/http-db.js +77 -1
- package/dist/index-backend.d.ts +8 -0
- package/dist/index-backend.d.ts.map +1 -1
- package/dist/index-backend.js +13 -0
- package/dist/index-core.d.ts +78 -0
- package/dist/index-core.d.ts.map +1 -0
- package/dist/index-core.js +72 -0
- package/dist/index-manager.d.ts +11 -0
- package/dist/index-manager.d.ts.map +1 -1
- package/dist/index-manager.js +30 -13
- package/dist/index-types.d.ts +17 -0
- package/dist/index-types.d.ts.map +1 -1
- package/dist/index.browser.d.ts +14 -0
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.browser.js +13 -0
- package/dist/index.d.ts +8 -59
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -54
- package/dist/indexeddb-db.d.ts +32 -0
- package/dist/indexeddb-db.d.ts.map +1 -1
- package/dist/indexeddb-db.js +151 -1
- package/dist/memory-db.d.ts +26 -0
- package/dist/memory-db.d.ts.map +1 -1
- package/dist/memory-db.js +86 -0
- package/dist/runtime-registry.d.ts +32 -0
- package/dist/runtime-registry.d.ts.map +1 -0
- package/dist/runtime-registry.js +38 -0
- package/dist/studio-app/assets/{feltdb_wasm-B4wq4mqp.js → feltdb_wasm-CJv3wHzi.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-C8TG8r2n.wasm +0 -0
- package/dist/studio-app/assets/index-D3rT0SJi.js +28 -0
- package/dist/studio-app/index.html +1 -1
- package/dist/transaction.d.ts +98 -0
- package/dist/transaction.d.ts.map +1 -0
- package/dist/transaction.js +86 -0
- package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
- package/dist/workspace/browser.d.ts +22 -0
- package/dist/workspace/browser.d.ts.map +1 -0
- package/dist/workspace/browser.js +17 -0
- package/dist/workspace/git-identity.d.ts +35 -0
- package/dist/workspace/git-identity.d.ts.map +1 -0
- package/dist/workspace/git-identity.js +81 -0
- package/dist/workspace/index.d.ts +11 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +6 -0
- package/dist/workspace/investigation-analysis.d.ts +47 -0
- package/dist/workspace/investigation-analysis.d.ts.map +1 -0
- package/dist/workspace/investigation-analysis.js +181 -0
- package/dist/workspace/investigation-lifecycle-manager.d.ts +86 -0
- package/dist/workspace/investigation-lifecycle-manager.d.ts.map +1 -0
- package/dist/workspace/investigation-lifecycle-manager.js +229 -0
- package/dist/workspace/investigation-supervisor.d.ts +100 -0
- package/dist/workspace/investigation-supervisor.d.ts.map +1 -0
- package/dist/workspace/investigation-supervisor.js +236 -0
- package/dist/workspace/runtime-investigation.d.ts +1 -1
- package/dist/workspace/runtime-investigation.d.ts.map +1 -1
- package/dist/workspace/runtime-investigation.js +46 -21
- package/dist/workspace/runtime-observation.d.ts +79 -0
- package/dist/workspace/runtime-observation.d.ts.map +1 -0
- package/dist/workspace/runtime-observation.js +152 -0
- package/dist/workspace/runtime-observer.d.ts +51 -0
- package/dist/workspace/runtime-observer.d.ts.map +1 -0
- package/dist/workspace/runtime-observer.js +268 -0
- package/dist/workspace/workspace-connection.d.ts.map +1 -1
- package/dist/workspace/workspace-connection.js +14 -5
- package/dist/workspace/workspace-types.d.ts +113 -0
- package/dist/workspace/workspace-types.d.ts.map +1 -1
- package/package.json +12 -4
- package/dist/create/server-source/crates/feltdb/src/phase_1c_three_node.rs +0 -523
- package/dist/studio-app/assets/feltdb_wasm_bg-Ceyi7l21.wasm +0 -0
- package/dist/studio-app/assets/index-BF45M757.js +0 -28
|
@@ -41,6 +41,7 @@ use feltdb::{
|
|
|
41
41
|
Grant, GrantSigner, GrantStore, Subject as GrantSubject,
|
|
42
42
|
},
|
|
43
43
|
cardinality_endpoint::{CardinalityContext, CardinalityDiagnosticResponse},
|
|
44
|
+
AtomicMutation, AtomicPrecondition,
|
|
44
45
|
policy_evaluation::{Actor, PolicyContext, PolicyEvaluator, PolicySubject},
|
|
45
46
|
state_contract::{
|
|
46
47
|
begin_read, compare_schemas, execute_query as execute_state_query, execute_transaction,
|
|
@@ -6298,6 +6299,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
|
6298
6299
|
"/api/connections/{connection_id}",
|
|
6299
6300
|
axum::routing::delete(delete_connection_control),
|
|
6300
6301
|
)
|
|
6302
|
+
.route("/transactions", axum::routing::post(commit_transaction))
|
|
6303
|
+
.route("/revision", get(get_revision))
|
|
6301
6304
|
.route(
|
|
6302
6305
|
"/collections/{collection}",
|
|
6303
6306
|
get(list_records).post(create_record),
|
|
@@ -8974,6 +8977,30 @@ fn put_canonical(
|
|
|
8974
8977
|
}))
|
|
8975
8978
|
}
|
|
8976
8979
|
|
|
8980
|
+
/// The authority's current committed-state revision.
|
|
8981
|
+
///
|
|
8982
|
+
/// This is the value `apply_atomic_transaction` advances and writes into each
|
|
8983
|
+
/// durable transaction record as `state_after`. It already survived restart and
|
|
8984
|
+
/// already refused to move backwards; the only thing missing was a way to read
|
|
8985
|
+
/// it without performing a write, which is what a cache needs.
|
|
8986
|
+
///
|
|
8987
|
+
/// `scope` is the store's instance id. A revision is comparable only against
|
|
8988
|
+
/// another revision carrying the same scope, so a client that fails over to a
|
|
8989
|
+
/// different replica sees a scope change rather than a silently wrong
|
|
8990
|
+
/// comparison against a counter that means something else there.
|
|
8991
|
+
#[derive(Serialize)]
|
|
8992
|
+
struct RevisionResponse {
|
|
8993
|
+
revision: u64,
|
|
8994
|
+
scope: String,
|
|
8995
|
+
}
|
|
8996
|
+
|
|
8997
|
+
async fn get_revision(State(state): State<AppState>) -> Result<Json<RevisionResponse>, ApiError> {
|
|
8998
|
+
Ok(Json(RevisionResponse {
|
|
8999
|
+
revision: state.db.sequence()?,
|
|
9000
|
+
scope: state.db.instance_id()?,
|
|
9001
|
+
}))
|
|
9002
|
+
}
|
|
9003
|
+
|
|
8977
9004
|
async fn list_records(
|
|
8978
9005
|
State(state): State<AppState>,
|
|
8979
9006
|
Path(collection): Path<String>,
|
|
@@ -9000,6 +9027,120 @@ async fn get_record(
|
|
|
9000
9027
|
}))
|
|
9001
9028
|
}
|
|
9002
9029
|
|
|
9030
|
+
/// One operation inside an application transaction.
|
|
9031
|
+
#[derive(Deserialize)]
|
|
9032
|
+
#[serde(rename_all = "camelCase")]
|
|
9033
|
+
struct AtomicTxOperationRequest {
|
|
9034
|
+
collection: String,
|
|
9035
|
+
id: String,
|
|
9036
|
+
/// Absent value means delete.
|
|
9037
|
+
#[serde(default)]
|
|
9038
|
+
value: Option<Map<String, Value>>,
|
|
9039
|
+
/// When set, the record must not already exist for the transaction to commit.
|
|
9040
|
+
#[serde(default)]
|
|
9041
|
+
require_absent: bool,
|
|
9042
|
+
}
|
|
9043
|
+
|
|
9044
|
+
#[derive(Deserialize)]
|
|
9045
|
+
#[serde(rename_all = "camelCase")]
|
|
9046
|
+
struct AtomicTxRequest {
|
|
9047
|
+
/// Caller-supplied identity. Reusing one makes the commit idempotent.
|
|
9048
|
+
transaction_id: String,
|
|
9049
|
+
operations: Vec<AtomicTxOperationRequest>,
|
|
9050
|
+
}
|
|
9051
|
+
|
|
9052
|
+
#[derive(Serialize)]
|
|
9053
|
+
#[serde(rename_all = "camelCase")]
|
|
9054
|
+
struct AtomicTxResponse {
|
|
9055
|
+
transaction_id: String,
|
|
9056
|
+
/// True when this id had already been committed; nothing was reapplied.
|
|
9057
|
+
duplicate: bool,
|
|
9058
|
+
operations: usize,
|
|
9059
|
+
state_before: u64,
|
|
9060
|
+
state_after: u64,
|
|
9061
|
+
}
|
|
9062
|
+
|
|
9063
|
+
/// Commit several operations as one atomic, durable transaction.
|
|
9064
|
+
///
|
|
9065
|
+
/// This is the application-facing entry point to the same atomic commit path
|
|
9066
|
+
/// the substrate uses: preconditions are evaluated first, then one transaction
|
|
9067
|
+
/// record is written and fsynced, and only then is derived state updated.
|
|
9068
|
+
/// There is no second transaction mechanism — the request is translated into
|
|
9069
|
+
/// the store's own atomic transaction and nothing else.
|
|
9070
|
+
async fn commit_transaction(
|
|
9071
|
+
State(state): State<AppState>,
|
|
9072
|
+
Json(request): Json<AtomicTxRequest>,
|
|
9073
|
+
) -> Result<(StatusCode, Json<AtomicTxResponse>), ApiError> {
|
|
9074
|
+
if request.transaction_id.trim().is_empty() {
|
|
9075
|
+
return Err(ApiError(
|
|
9076
|
+
StatusCode::BAD_REQUEST,
|
|
9077
|
+
"transactionId is required".to_string(),
|
|
9078
|
+
));
|
|
9079
|
+
}
|
|
9080
|
+
if request.operations.is_empty() {
|
|
9081
|
+
return Err(ApiError(
|
|
9082
|
+
StatusCode::BAD_REQUEST,
|
|
9083
|
+
"a transaction requires at least one operation".to_string(),
|
|
9084
|
+
));
|
|
9085
|
+
}
|
|
9086
|
+
|
|
9087
|
+
// Validate every operation before any of them is turned into a mutation, so
|
|
9088
|
+
// a malformed request cannot commit a prefix of the transaction.
|
|
9089
|
+
let mut mutations = Vec::with_capacity(request.operations.len());
|
|
9090
|
+
let mut preconditions = Vec::new();
|
|
9091
|
+
let mut seen = std::collections::HashSet::new();
|
|
9092
|
+
for operation in request.operations {
|
|
9093
|
+
let key = record_key(&operation.collection, &operation.id)?;
|
|
9094
|
+
if !seen.insert(key.clone()) {
|
|
9095
|
+
return Err(ApiError(
|
|
9096
|
+
StatusCode::BAD_REQUEST,
|
|
9097
|
+
format!("transaction writes {key} more than once"),
|
|
9098
|
+
));
|
|
9099
|
+
}
|
|
9100
|
+
if operation.require_absent {
|
|
9101
|
+
// The store reads a precondition with no expected version as
|
|
9102
|
+
// "this record must not exist", and evaluates it inside the same
|
|
9103
|
+
// lock as the commit, so there is no window between the check and
|
|
9104
|
+
// the write.
|
|
9105
|
+
preconditions.push(AtomicPrecondition {
|
|
9106
|
+
capability: operation.collection.clone(),
|
|
9107
|
+
key: key.clone(),
|
|
9108
|
+
expected_version: None,
|
|
9109
|
+
});
|
|
9110
|
+
}
|
|
9111
|
+
let value = operation.value.map(|mut fields| {
|
|
9112
|
+
fields.insert("id".to_string(), Value::String(operation.id.clone()));
|
|
9113
|
+
Value::Object(fields)
|
|
9114
|
+
});
|
|
9115
|
+
mutations.push(AtomicMutation {
|
|
9116
|
+
capability: operation.collection,
|
|
9117
|
+
key,
|
|
9118
|
+
value,
|
|
9119
|
+
});
|
|
9120
|
+
}
|
|
9121
|
+
|
|
9122
|
+
let operations = mutations.len();
|
|
9123
|
+
let commit = state
|
|
9124
|
+
.db
|
|
9125
|
+
.apply_atomic_transaction(&request.transaction_id, None, &preconditions, &mutations, None)
|
|
9126
|
+
.map_err(|error| {
|
|
9127
|
+
// A refused transaction applied nothing, so this is a conflict, not
|
|
9128
|
+
// a partially completed request.
|
|
9129
|
+
ApiError(StatusCode::CONFLICT, error.to_string())
|
|
9130
|
+
})?;
|
|
9131
|
+
|
|
9132
|
+
Ok((
|
|
9133
|
+
if commit.duplicate { StatusCode::OK } else { StatusCode::CREATED },
|
|
9134
|
+
Json(AtomicTxResponse {
|
|
9135
|
+
transaction_id: commit.transaction_id,
|
|
9136
|
+
duplicate: commit.duplicate,
|
|
9137
|
+
operations,
|
|
9138
|
+
state_before: commit.state_before,
|
|
9139
|
+
state_after: commit.state_after,
|
|
9140
|
+
}),
|
|
9141
|
+
))
|
|
9142
|
+
}
|
|
9143
|
+
|
|
9003
9144
|
async fn create_record(
|
|
9004
9145
|
State(state): State<AppState>,
|
|
9005
9146
|
Path(collection): Path<String>,
|
package/dist/db.d.ts
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* Persistence, indexing, and reactivity are completely transparent.
|
|
6
6
|
*/
|
|
7
7
|
import type { JsDb } from './feltdb.js';
|
|
8
|
+
import { type FreshnessCapability, type Revision } from './freshness.js';
|
|
8
9
|
import { Collection, Relationship } from './collection.js';
|
|
10
|
+
import { type AtomicTransactionOptions, type AtomicTransactionResult, type AtomicTransactionScope } from './transaction.js';
|
|
9
11
|
import { type Cell } from './cell.js';
|
|
10
12
|
import type { AgentRef, AgentDefinition, AgentExecution } from './agent.js';
|
|
11
13
|
import { AgentRegistry } from './agent-registry.js';
|
|
@@ -280,6 +282,31 @@ export declare class StateFirstDB {
|
|
|
280
282
|
* const allActive = await tasks.where(t => t.status === "active").all();
|
|
281
283
|
*/
|
|
282
284
|
collection<T>(name: string): Collection<T>;
|
|
285
|
+
/**
|
|
286
|
+
* Commit several operations as one atomic, durable transaction.
|
|
287
|
+
*
|
|
288
|
+
* Either every operation commits or none do — including across a crash.
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* const result = await db.transaction(async tx => {
|
|
292
|
+
* tx.collection('users').set('u1', user);
|
|
293
|
+
* tx.collection('orders').set('o1', order);
|
|
294
|
+
* tx.collection('audit').set('a1', event);
|
|
295
|
+
* });
|
|
296
|
+
* result.transactionId; // durable identity, stable across restart
|
|
297
|
+
*
|
|
298
|
+
* The callback stages operations; it does not write them. Nothing reaches
|
|
299
|
+
* the authority until the callback returns, so there is no window in which
|
|
300
|
+
* part of the transaction is durable and the rest is not.
|
|
301
|
+
*
|
|
302
|
+
* Throwing from the callback abandons the transaction without sending
|
|
303
|
+
* anything.
|
|
304
|
+
*
|
|
305
|
+
* Requires a runtime backed by an authority that provides atomic
|
|
306
|
+
* transactions. Runtimes that cannot refuse rather than silently degrading
|
|
307
|
+
* the transaction into a sequence of independent writes.
|
|
308
|
+
*/
|
|
309
|
+
transaction(build: (tx: AtomicTransactionScope) => void | Promise<void>, options?: AtomicTransactionOptions): Promise<AtomicTransactionResult>;
|
|
283
310
|
/**
|
|
284
311
|
* Get or create a durable cell.
|
|
285
312
|
*
|
|
@@ -444,10 +471,42 @@ export declare class StateFirstDB {
|
|
|
444
471
|
/**
|
|
445
472
|
* Get the current sequence number for this instance.
|
|
446
473
|
*
|
|
474
|
+
* **Not a freshness signal.** It means a different thing in each runtime and
|
|
475
|
+
* never reflects a write made by another process, tab, or node. Use
|
|
476
|
+
* {@link StateFirstDB.freshness} to find out whether cached state can be validated,
|
|
477
|
+
* and {@link StateFirstDB.revision} to validate it.
|
|
478
|
+
*
|
|
447
479
|
* @example
|
|
448
480
|
* const seq = db.getSequence();
|
|
449
481
|
*/
|
|
450
482
|
getSequence(): number;
|
|
483
|
+
/**
|
|
484
|
+
* What freshness validation this runtime can honestly support.
|
|
485
|
+
*
|
|
486
|
+
* Runtimes differ because their consistency domains differ, not because some
|
|
487
|
+
* are unfinished. A runtime with no serialization authority over its writers
|
|
488
|
+
* reports `validation: 'refresh'`, and that is the correct answer for it.
|
|
489
|
+
*
|
|
490
|
+
* @example
|
|
491
|
+
* const capability = await db.freshness();
|
|
492
|
+
* if (capability.validation === 'revision') {
|
|
493
|
+
* const revision = await db.revision();
|
|
494
|
+
* }
|
|
495
|
+
*/
|
|
496
|
+
freshness(): Promise<FreshnessCapability>;
|
|
497
|
+
/**
|
|
498
|
+
* The current committed-state revision.
|
|
499
|
+
*
|
|
500
|
+
* Throws unless {@link StateFirstDB.freshness} advertises revision validation, and
|
|
501
|
+
* throws if the runtime returns a revision from a scope it did not advertise.
|
|
502
|
+
* A revision is comparable only against one carrying the same scope.
|
|
503
|
+
*
|
|
504
|
+
* @example
|
|
505
|
+
* const before = await db.revision();
|
|
506
|
+
* // ... work ...
|
|
507
|
+
* const stillCurrent = isCacheCurrent(before, await db.revision());
|
|
508
|
+
*/
|
|
509
|
+
revision(): Promise<Revision>;
|
|
451
510
|
/**
|
|
452
511
|
* Register a trigger that maps operations to executions
|
|
453
512
|
*
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAA2B,MAAM,oBAAoB,CAAC;AAK3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAC5C;IAAE,MAAM,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAC/D;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,CACpE,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CASjE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAEhD,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAEhB,mEAAmE;IACnE,UAAU,EAAE,OAAO,CAAC;IAEpB,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,CAAC;IAElB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IAEjB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,oDAAoD;IACpD,qBAAqB,EAAE,OAAO,CAAC;IAE/B,iEAAiE;IACjE,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IAEpB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,sBAAsB;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B,8CAA8C;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAE3B,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IAExB,qCAAqC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAE5B,yBAAyB;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IAErB,wCAAwC;IACxC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IAEd,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IAEpB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IAEjB,iDAAiD;IACjD,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAExC,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IAEZ,+CAA+C;IAC/C,KAAK,CAAC,EAAE,GAAG,CAAC;IAEZ,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAElB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,aAAa,GACb,cAAc,GACd,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IAEX,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IAEd,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX,2BAA2B;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;IAE7B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,IAAI,EAAE,cAAc,CAAC;IAErB,6BAA6B;IAC7B,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB,6BAA6B;IAC7B,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,OAAO,EAAE;QACP,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IAEF,+BAA+B;IAC/B,OAAO,EAAE;QACP,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAEF,6BAA6B;IAC7B,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IAEF,gCAAgC;IAChC,MAAM,EAAE;QACN,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,+BAA+B;IAC/B,YAAY,EAAE;QACZ,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,+BAA+B;IAC/B,SAAS,EAAE;QACT,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,sBAAsB;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC7C,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,mCAAmC;IACnC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAE7C,2CAA2C;IAC3C,MAAM,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAmD;IAC5E,QAAQ,CAAC,SAAS,iBAAwB;IAC1C,QAAQ,CAAC,SAAS,iBAAwB;IAC1C,QAAQ,CAAC,MAAM,eAAsB;IACrC,QAAQ,CAAC,QAAQ,gBAAuB;IACxC,QAAQ,CAAC,OAAO,gBAAuB;IACvC,QAAQ,CAAC,SAAS,iBAAwB;IAC1C,QAAQ,CAAC,OAAO,eAAsB;IACtC,QAAQ,CAAC,WAAW,mBAA0B;IAC9C,QAAQ,CAAC,IAAI,aAAoB;gBAErB,IAAI,EAAE,IAAI;IAsBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmCrB;;;;;;;;OAQG;IACH,OAAO,IAAI,WAAW;IAItB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAO1C;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAO5B,oFAAoF;IAC9E,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKnE,0FAA0F;IACpF,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAO5E,iEAAiE;IAC3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAKzF,yEAAyE;IACzE,wBAAwB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAMzG,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAiB9E,oGAAoG;IAC9F,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAKrF,iFAAiF;IAC3E,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,gBAAgB,UAAQ,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAC;IA8CrJ,8EAA8E;IACxE,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1C,qFAAqF;IAC/E,gBAAgB,CAAC,aAAa,SAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKvE,kFAAkF;IAC5E,eAAe,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAKrG,oFAAoF;IAC9E,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAUxH,+FAA+F;IACzF,6BAA6B,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,GAAE,YAAY,EAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB1K,gFAAgF;IAC1E,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAKpE,mFAAmF;IAC7E,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAK9F,2EAA2E;IACrE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAK9D,8EAA8E;IACxE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAK3D,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAKhE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAK9F,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAK9G,iGAAiG;IAC3F,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAKtG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAKtF;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,QAAQ;IAMlD;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAKzC;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACG,oBAAoB,CACxB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,cAAc,CAAC;IAM1B,OAAO,CAAC,oBAAoB;IAI5B,iEAAiE;IAC3D,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,SAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/F,8EAA8E;IACxE,wBAAwB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,YAAY,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrH,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnF,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;;;;;OAMG;IACH,IAAI,IAAI,QAAQ;IAChB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc;IAUxC;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;;;;OAKG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQpF;;;;;OAKG;IACG,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhF;;;;;OAKG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;OAKG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;;;;;OAUG;IACG,eAAe,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;;;;;;;;;OAUG;IACG,YAAY,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD;;;;;OAKG;IACG,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAM5C;;;;;OAKG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAuB5C;;;;;;;;;;;;;OAaG;IACH,MAAM,IAAI,kBAAkB;IA+E5B;;;;;;;;;;;;;;;;;OAiBG;IACG,gBAAgB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnF;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAU5F;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,GAAG,CAAC,MAAM,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CAS1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAE5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAC9C,eAAe,EAAE,UAAU,CAAC,KAAK,CAAC,EAClC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,MAAM,GAC5C,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAO7B"}
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/db.js
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* High-level, application-facing API that treats FeltDB as application state.
|
|
5
5
|
* Persistence, indexing, and reactivity are completely transparent.
|
|
6
6
|
*/
|
|
7
|
+
import { describeFreshness, readRevision, } from './freshness.js';
|
|
7
8
|
import { Collection, Relationship } from './collection.js';
|
|
9
|
+
import { AtomicTransactionBuilder, AtomicTransactionError, } from './transaction.js';
|
|
8
10
|
import { CellImpl } from './cell.js';
|
|
9
11
|
import { createAgentRef } from './agent.js';
|
|
10
12
|
import { AgentRegistry } from './agent-registry.js';
|
|
@@ -12,7 +14,7 @@ import { AgentRuntime } from './agent-runtime.js';
|
|
|
12
14
|
import { MemoryJsDb } from './memory-db.js';
|
|
13
15
|
import { HttpJsDb } from './http-db.js';
|
|
14
16
|
import { IndexedDbJsDb } from './indexeddb-db.js';
|
|
15
|
-
import {
|
|
17
|
+
import { requireRuntime } from './runtime-registry.js';
|
|
16
18
|
import { emptyFlowSpec, planFlowSpecMigration, validateFlowSpec } from './flowspec.js';
|
|
17
19
|
import { SyncController } from './sync-contract.js';
|
|
18
20
|
import { WorkloadClient } from './workload.js';
|
|
@@ -29,7 +31,9 @@ export function createFeltDB(options) {
|
|
|
29
31
|
}
|
|
30
32
|
const runtime = options.server ? new HttpJsDb(options.server)
|
|
31
33
|
: 'browser' in options && options.browser ? new IndexedDbJsDb(options.namespace)
|
|
32
|
-
: 'path' in options && options.path ?
|
|
34
|
+
: 'path' in options && options.path ? requireRuntime('file', options.path, 'createFeltDB({ path }) needs the Node file runtime, which is not available here. '
|
|
35
|
+
+ 'In a browser use createFeltDB({ browser: true }); in Node import "@feltdb/core" '
|
|
36
|
+
+ 'rather than a browser-conditioned build.')
|
|
33
37
|
: new MemoryJsDb(options.namespace);
|
|
34
38
|
return new StateFirstDB(runtime);
|
|
35
39
|
}
|
|
@@ -135,6 +139,58 @@ export class StateFirstDB {
|
|
|
135
139
|
}
|
|
136
140
|
return this.collections.get(name);
|
|
137
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Commit several operations as one atomic, durable transaction.
|
|
144
|
+
*
|
|
145
|
+
* Either every operation commits or none do — including across a crash.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* const result = await db.transaction(async tx => {
|
|
149
|
+
* tx.collection('users').set('u1', user);
|
|
150
|
+
* tx.collection('orders').set('o1', order);
|
|
151
|
+
* tx.collection('audit').set('a1', event);
|
|
152
|
+
* });
|
|
153
|
+
* result.transactionId; // durable identity, stable across restart
|
|
154
|
+
*
|
|
155
|
+
* The callback stages operations; it does not write them. Nothing reaches
|
|
156
|
+
* the authority until the callback returns, so there is no window in which
|
|
157
|
+
* part of the transaction is durable and the rest is not.
|
|
158
|
+
*
|
|
159
|
+
* Throwing from the callback abandons the transaction without sending
|
|
160
|
+
* anything.
|
|
161
|
+
*
|
|
162
|
+
* Requires a runtime backed by an authority that provides atomic
|
|
163
|
+
* transactions. Runtimes that cannot refuse rather than silently degrading
|
|
164
|
+
* the transaction into a sequence of independent writes.
|
|
165
|
+
*/
|
|
166
|
+
async transaction(build, options = {}) {
|
|
167
|
+
const builder = new AtomicTransactionBuilder(options.transactionId);
|
|
168
|
+
if (!this.jsDb.commit_transaction) {
|
|
169
|
+
throw new AtomicTransactionError('This FeltDB runtime does not provide atomic transactions. '
|
|
170
|
+
+ 'Connect to a FeltDB authority (createFeltDB({ server: ... })) to use db.transaction(). '
|
|
171
|
+
+ 'FeltDB will not emulate a transaction with separate writes, because that would not be atomic.', builder.transactionId);
|
|
172
|
+
}
|
|
173
|
+
await build(builder);
|
|
174
|
+
const request = builder.seal();
|
|
175
|
+
if (request.operations.length === 0) {
|
|
176
|
+
throw new AtomicTransactionError('a transaction requires at least one operation', request.transactionId);
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
const result = await this.jsDb.commit_transaction(request);
|
|
180
|
+
return {
|
|
181
|
+
transactionId: result.transactionId ?? request.transactionId,
|
|
182
|
+
duplicate: Boolean(result.duplicate),
|
|
183
|
+
operations: result.operations ?? request.operations.length,
|
|
184
|
+
stateBefore: result.stateBefore ?? 0,
|
|
185
|
+
stateAfter: result.stateAfter ?? 0,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
// A refused transaction applied nothing. Surfacing that plainly matters:
|
|
190
|
+
// a caller must never be left wondering whether a prefix landed.
|
|
191
|
+
throw new AtomicTransactionError(error instanceof Error ? error.message : String(error), request.transactionId);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
138
194
|
/**
|
|
139
195
|
* Get or create a durable cell.
|
|
140
196
|
*
|
|
@@ -525,12 +581,48 @@ export class StateFirstDB {
|
|
|
525
581
|
/**
|
|
526
582
|
* Get the current sequence number for this instance.
|
|
527
583
|
*
|
|
584
|
+
* **Not a freshness signal.** It means a different thing in each runtime and
|
|
585
|
+
* never reflects a write made by another process, tab, or node. Use
|
|
586
|
+
* {@link StateFirstDB.freshness} to find out whether cached state can be validated,
|
|
587
|
+
* and {@link StateFirstDB.revision} to validate it.
|
|
588
|
+
*
|
|
528
589
|
* @example
|
|
529
590
|
* const seq = db.getSequence();
|
|
530
591
|
*/
|
|
531
592
|
getSequence() {
|
|
532
593
|
return this.jsDb.get_sequence();
|
|
533
594
|
}
|
|
595
|
+
/**
|
|
596
|
+
* What freshness validation this runtime can honestly support.
|
|
597
|
+
*
|
|
598
|
+
* Runtimes differ because their consistency domains differ, not because some
|
|
599
|
+
* are unfinished. A runtime with no serialization authority over its writers
|
|
600
|
+
* reports `validation: 'refresh'`, and that is the correct answer for it.
|
|
601
|
+
*
|
|
602
|
+
* @example
|
|
603
|
+
* const capability = await db.freshness();
|
|
604
|
+
* if (capability.validation === 'revision') {
|
|
605
|
+
* const revision = await db.revision();
|
|
606
|
+
* }
|
|
607
|
+
*/
|
|
608
|
+
freshness() {
|
|
609
|
+
return describeFreshness(this.jsDb);
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* The current committed-state revision.
|
|
613
|
+
*
|
|
614
|
+
* Throws unless {@link StateFirstDB.freshness} advertises revision validation, and
|
|
615
|
+
* throws if the runtime returns a revision from a scope it did not advertise.
|
|
616
|
+
* A revision is comparable only against one carrying the same scope.
|
|
617
|
+
*
|
|
618
|
+
* @example
|
|
619
|
+
* const before = await db.revision();
|
|
620
|
+
* // ... work ...
|
|
621
|
+
* const stillCurrent = isCacheCurrent(before, await db.revision());
|
|
622
|
+
*/
|
|
623
|
+
revision() {
|
|
624
|
+
return readRevision(this.jsDb);
|
|
625
|
+
}
|
|
534
626
|
/**
|
|
535
627
|
* Register a trigger that maps operations to executions
|
|
536
628
|
*
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transaction semantics for embedded runtimes.
|
|
3
|
+
*
|
|
4
|
+
* FeltDB has one transaction contract. The authority-backed runtime satisfies
|
|
5
|
+
* it by handing the staged transaction to the store's own atomic commit path;
|
|
6
|
+
* the embedded runtimes satisfy it here.
|
|
7
|
+
*
|
|
8
|
+
* The semantics live in this module *once*. A runtime does not reimplement
|
|
9
|
+
* them — it supplies only the thing that is genuinely runtime-specific: its
|
|
10
|
+
* atomic durable commit boundary.
|
|
11
|
+
*
|
|
12
|
+
* ```text
|
|
13
|
+
* db.transaction()
|
|
14
|
+
* │
|
|
15
|
+
* staged operations
|
|
16
|
+
* │
|
|
17
|
+
* ┌────────┴────────┐
|
|
18
|
+
* │ │
|
|
19
|
+
* authority embedded
|
|
20
|
+
* (store's atomic (decidePlan here +
|
|
21
|
+
* commit path) runtime commit)
|
|
22
|
+
* │ │
|
|
23
|
+
* └────────┬────────┘
|
|
24
|
+
* │
|
|
25
|
+
* atomic durable
|
|
26
|
+
* commit
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* The decision step is pure: it reads current state and produces a plan. It
|
|
30
|
+
* performs no I/O and mutates nothing, so a runtime can evaluate the whole
|
|
31
|
+
* transaction before touching storage and then apply the plan in one atomic
|
|
32
|
+
* step. That ordering is what makes partial application impossible.
|
|
33
|
+
*/
|
|
34
|
+
import type { AtomicTransactionRequest, AtomicTransactionResult } from './transaction.js';
|
|
35
|
+
/** One resolved mutation. An absent `value` means delete. */
|
|
36
|
+
export interface EmbeddedMutation {
|
|
37
|
+
/** Storage key, `collection:id`. */
|
|
38
|
+
key: string;
|
|
39
|
+
collection: string;
|
|
40
|
+
id: string;
|
|
41
|
+
value?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
/** What a runtime must be able to tell the decision step. */
|
|
44
|
+
export interface EmbeddedTransactionState {
|
|
45
|
+
/** Whether a record currently exists. */
|
|
46
|
+
exists(key: string): boolean;
|
|
47
|
+
/** Whether this transaction id has already been committed. */
|
|
48
|
+
hasApplied(transactionId: string): boolean;
|
|
49
|
+
}
|
|
50
|
+
export type EmbeddedPlan = {
|
|
51
|
+
kind: 'duplicate';
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'reject';
|
|
54
|
+
reason: string;
|
|
55
|
+
} | {
|
|
56
|
+
kind: 'apply';
|
|
57
|
+
mutations: EmbeddedMutation[];
|
|
58
|
+
};
|
|
59
|
+
/** Storage key for a collection and id. */
|
|
60
|
+
export declare function recordKey(collection: string, id: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Decide what a transaction should do, without doing any of it.
|
|
63
|
+
*
|
|
64
|
+
* Returns `duplicate` when this transaction id was already committed (so
|
|
65
|
+
* redelivery is a no-op), `reject` when the transaction cannot commit at all,
|
|
66
|
+
* or `apply` with every mutation resolved.
|
|
67
|
+
*
|
|
68
|
+
* A rejection means nothing may be written. There is no partial plan.
|
|
69
|
+
*/
|
|
70
|
+
export declare function decideTransaction(request: AtomicTransactionRequest, state: EmbeddedTransactionState): EmbeddedPlan;
|
|
71
|
+
/** Shape a runtime returns after committing. */
|
|
72
|
+
export declare function embeddedResult(request: AtomicTransactionRequest, duplicate: boolean, stateBefore: number, stateAfter: number): AtomicTransactionResult;
|
|
73
|
+
/** Raised when a transaction is refused. Nothing was written. */
|
|
74
|
+
export declare class EmbeddedTransactionRejected extends Error {
|
|
75
|
+
constructor(reason: string);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=embedded-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-transaction.d.ts","sourceRoot":"","sources":["../src/embedded-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE1F,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,8DAA8D;IAC9D,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAErD,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhE;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CA0Cd;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,wBAAwB,EACjC,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,uBAAuB,CAQzB;AAED,iEAAiE;AACjE,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,MAAM,EAAE,MAAM;CAI3B"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transaction semantics for embedded runtimes.
|
|
3
|
+
*
|
|
4
|
+
* FeltDB has one transaction contract. The authority-backed runtime satisfies
|
|
5
|
+
* it by handing the staged transaction to the store's own atomic commit path;
|
|
6
|
+
* the embedded runtimes satisfy it here.
|
|
7
|
+
*
|
|
8
|
+
* The semantics live in this module *once*. A runtime does not reimplement
|
|
9
|
+
* them — it supplies only the thing that is genuinely runtime-specific: its
|
|
10
|
+
* atomic durable commit boundary.
|
|
11
|
+
*
|
|
12
|
+
* ```text
|
|
13
|
+
* db.transaction()
|
|
14
|
+
* │
|
|
15
|
+
* staged operations
|
|
16
|
+
* │
|
|
17
|
+
* ┌────────┴────────┐
|
|
18
|
+
* │ │
|
|
19
|
+
* authority embedded
|
|
20
|
+
* (store's atomic (decidePlan here +
|
|
21
|
+
* commit path) runtime commit)
|
|
22
|
+
* │ │
|
|
23
|
+
* └────────┬────────┘
|
|
24
|
+
* │
|
|
25
|
+
* atomic durable
|
|
26
|
+
* commit
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* The decision step is pure: it reads current state and produces a plan. It
|
|
30
|
+
* performs no I/O and mutates nothing, so a runtime can evaluate the whole
|
|
31
|
+
* transaction before touching storage and then apply the plan in one atomic
|
|
32
|
+
* step. That ordering is what makes partial application impossible.
|
|
33
|
+
*/
|
|
34
|
+
/** Storage key for a collection and id. */
|
|
35
|
+
export function recordKey(collection, id) {
|
|
36
|
+
return `${collection}:${id}`;
|
|
37
|
+
}
|
|
38
|
+
const SEGMENT = /^[A-Za-z0-9._-]{1,128}$/;
|
|
39
|
+
/**
|
|
40
|
+
* Decide what a transaction should do, without doing any of it.
|
|
41
|
+
*
|
|
42
|
+
* Returns `duplicate` when this transaction id was already committed (so
|
|
43
|
+
* redelivery is a no-op), `reject` when the transaction cannot commit at all,
|
|
44
|
+
* or `apply` with every mutation resolved.
|
|
45
|
+
*
|
|
46
|
+
* A rejection means nothing may be written. There is no partial plan.
|
|
47
|
+
*/
|
|
48
|
+
export function decideTransaction(request, state) {
|
|
49
|
+
if (!request.transactionId || !request.transactionId.trim()) {
|
|
50
|
+
return { kind: 'reject', reason: 'transactionId is required' };
|
|
51
|
+
}
|
|
52
|
+
if (request.operations.length === 0) {
|
|
53
|
+
return { kind: 'reject', reason: 'a transaction requires at least one operation' };
|
|
54
|
+
}
|
|
55
|
+
if (state.hasApplied(request.transactionId)) {
|
|
56
|
+
return { kind: 'duplicate' };
|
|
57
|
+
}
|
|
58
|
+
const mutations = [];
|
|
59
|
+
const seen = new Set();
|
|
60
|
+
for (const operation of request.operations) {
|
|
61
|
+
if (!SEGMENT.test(operation.collection) || !SEGMENT.test(operation.id)) {
|
|
62
|
+
return {
|
|
63
|
+
kind: 'reject',
|
|
64
|
+
reason: `invalid collection or id: ${operation.collection}:${operation.id}`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const key = recordKey(operation.collection, operation.id);
|
|
68
|
+
if (seen.has(key)) {
|
|
69
|
+
return { kind: 'reject', reason: `transaction writes ${key} more than once` };
|
|
70
|
+
}
|
|
71
|
+
seen.add(key);
|
|
72
|
+
if (operation.requireAbsent && state.exists(key)) {
|
|
73
|
+
return { kind: 'reject', reason: `PRECONDITION_FAILED:${key}:record already exists` };
|
|
74
|
+
}
|
|
75
|
+
mutations.push({
|
|
76
|
+
key,
|
|
77
|
+
collection: operation.collection,
|
|
78
|
+
id: operation.id,
|
|
79
|
+
value: operation.value === undefined
|
|
80
|
+
? undefined
|
|
81
|
+
: { ...operation.value, id: operation.id },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return { kind: 'apply', mutations };
|
|
85
|
+
}
|
|
86
|
+
/** Shape a runtime returns after committing. */
|
|
87
|
+
export function embeddedResult(request, duplicate, stateBefore, stateAfter) {
|
|
88
|
+
return {
|
|
89
|
+
transactionId: request.transactionId,
|
|
90
|
+
duplicate,
|
|
91
|
+
operations: request.operations.length,
|
|
92
|
+
stateBefore,
|
|
93
|
+
stateAfter,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** Raised when a transaction is refused. Nothing was written. */
|
|
97
|
+
export class EmbeddedTransactionRejected extends Error {
|
|
98
|
+
constructor(reason) {
|
|
99
|
+
super(reason);
|
|
100
|
+
this.name = 'EmbeddedTransactionRejected';
|
|
101
|
+
}
|
|
102
|
+
}
|