@lossless.org/nosqldb 10.6.0 → 10.6.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.
Binary file
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "5be750455c3f0b9418c2b80d40e0b2448a2fcab028470894ee80b8a9a8bc80fe",
3
+ "binarySha256": "45c8b46b088226aabaf6b260d1b4cd33f630b9f350f412fc9526f63754ebf8ed",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.6.0",
7
- "gitCommit": "6af1b20760c1fd285982e407dabfac68ee4d8f3d",
6
+ "projectVersion": "10.6.1",
7
+ "gitCommit": "8a382123c5eb00f062a89c786c87f0588332f0a7",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-25T21:05:03.391Z",
9
+ "builtAt": "2026-09-26T11:38:26.096Z",
10
10
  "tsrustVersion": "1.15.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_amd64"
Binary file
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "11211aca930cc670f6127779f24172aac3d055f1e26275633d9970c9642148c0",
3
+ "binarySha256": "69c2b52877d8d92145f105263807d1ee7e5c41fab58ffe6adcc8ad6f4c9a6e30",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.6.0",
7
- "gitCommit": "6af1b20760c1fd285982e407dabfac68ee4d8f3d",
6
+ "projectVersion": "10.6.1",
7
+ "gitCommit": "8a382123c5eb00f062a89c786c87f0588332f0a7",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-25T21:05:04.200Z",
9
+ "builtAt": "2026-09-26T11:38:26.947Z",
10
10
  "tsrustVersion": "1.15.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_amd64_musl"
Binary file
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "0824341358ccab8fef562a2d63f9b1c6c44f29caff99322e3c7481abf93b42fb",
3
+ "binarySha256": "bdb5b22a9d6d338e0a8474fec47233fa0da53f7a7e4771958ce32e75e6102da7",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.6.0",
7
- "gitCommit": "6af1b20760c1fd285982e407dabfac68ee4d8f3d",
6
+ "projectVersion": "10.6.1",
7
+ "gitCommit": "8a382123c5eb00f062a89c786c87f0588332f0a7",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-25T21:05:03.801Z",
9
+ "builtAt": "2026-09-26T11:38:26.518Z",
10
10
  "tsrustVersion": "1.15.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_arm64"
Binary file
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "f82037ed607805f5bf82e3ae5361fc9cd682341575bc1ab854256197da2adc07",
3
+ "binarySha256": "e08e92879b6a3c1f8f5e91a90bb0c26cf5a6500af87bbf129f4c0833a1c21a61",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.6.0",
7
- "gitCommit": "6af1b20760c1fd285982e407dabfac68ee4d8f3d",
6
+ "projectVersion": "10.6.1",
7
+ "gitCommit": "8a382123c5eb00f062a89c786c87f0588332f0a7",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-25T21:05:04.638Z",
9
+ "builtAt": "2026-09-26T11:38:27.390Z",
10
10
  "tsrustVersion": "1.15.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_arm64_musl"
Binary file
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "29e4a06aa353c41ceb08122f7f30a39996cb72660015a41668988caf208e73b0",
3
+ "binarySha256": "bc8d7bed405a7aea9281f786c2cb845836c109a577882403dff5cae1ddab2e3b",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.6.0",
7
- "gitCommit": "6af1b20760c1fd285982e407dabfac68ee4d8f3d",
6
+ "projectVersion": "10.6.1",
7
+ "gitCommit": "8a382123c5eb00f062a89c786c87f0588332f0a7",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-25T20:50:29.686Z",
9
+ "builtAt": "2026-09-26T11:22:15.998Z",
10
10
  "tsrustVersion": "1.15.1",
11
11
  "binary": "rustdb",
12
12
  "target": "macos_amd64"
Binary file
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "ec6e228eca72a80567597067290e80df587836454730d7b563ac259712574c01",
3
+ "binarySha256": "f7b402ccadcdf3e272b82c07f1af67ebbc1556d5b6d7c974383771b643cb8f14",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.6.0",
7
- "gitCommit": "6af1b20760c1fd285982e407dabfac68ee4d8f3d",
6
+ "projectVersion": "10.6.1",
7
+ "gitCommit": "8a382123c5eb00f062a89c786c87f0588332f0a7",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-25T20:50:30.227Z",
9
+ "builtAt": "2026-09-26T11:22:16.581Z",
10
10
  "tsrustVersion": "1.15.1",
11
11
  "binary": "rustdb",
12
12
  "target": "macos_arm64"
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@lossless.org/nosqldb',
6
- version: '10.6.0',
6
+ version: '10.6.1',
7
7
  description: 'A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHFIQUFxSDtDQUNuSSxDQUFBIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lossless.org/nosqldb",
3
- "version": "10.6.0",
3
+ "version": "10.6.1",
4
4
  "private": false,
5
5
  "description": "A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.",
6
6
  "exports": {
@@ -17,9 +17,9 @@
17
17
  "@git.zone/tsbuild": "^5.0.0",
18
18
  "@git.zone/tsbundle": "^2.15.0",
19
19
  "@git.zone/tsrust": "^1.15.1",
20
- "@git.zone/tstest": "^6.2.1",
20
+ "@git.zone/tstest": "^6.3.0",
21
21
  "@lossless.org/client": "0.1.1",
22
- "@types/node": "26.6.1",
22
+ "@types/node": "26.6.2",
23
23
  "mongodb": "^7.5.0"
24
24
  },
25
25
  "dependencies": {
package/readme.md CHANGED
@@ -554,21 +554,60 @@ authority. Auth changes and the data/control records they protect share native
554
554
  atomic publications.
555
555
 
556
556
  Single-node transactions pin one committed root across namespaces and retain
557
- changed documents, rather than copying a database. Supported reads and writes
558
- see the transaction snapshot plus its staged changes. Commit validates conflicts
559
- and publishes atomically; abort discards staged changes. Write conflicts report
560
- `WriteConflict` (112) with `TransientTransactionError`.
561
-
562
- A staged write conflicts when it touches a document `_id` or a unique index key
563
- that another transaction or statement wrote after this transaction's snapshot:
564
- for example two transactions that both read a claim as absent and then insert
565
- it under the same `_id`, or under distinct `_id`s with the same unique key.
566
- Statements validate against the snapshot, so such a collision is reported when
567
- the loser commits; nothing of the losing transaction is published. The driver's
568
- `withTransaction` retries the transient error, and the retry observes the
569
- winner. A key already visible in the transaction's snapshot is not a conflict:
570
- inserting it fails the statement with `DuplicateKey` (11000), as outside a
571
- transaction.
557
+ changed documents, rather than copying a database. The snapshot is pinned by
558
+ the transaction's first statement. Supported reads and writes see the
559
+ transaction snapshot plus its staged changes. Commit publishes atomically;
560
+ abort discards staged changes.
561
+
562
+ Write conflicts follow MongoDB: the first statement to write a document or a
563
+ unique index key wins, and the later writer is told at its own statement.
564
+
565
+ - A transaction statement that inserts, updates, replaces, deletes or upserts a
566
+ document, or claims or releases a unique index key, that another open
567
+ transaction has already written fails with `WriteConflict` (112) and
568
+ `TransientTransactionError`. So does a write to a document or key that was
569
+ published after the transaction's snapshot. The failed statement aborts the
570
+ transaction at once and releases everything it wrote: later statements and
571
+ `commitTransaction` report `NoSuchTransaction` (251), also labelled
572
+ `TransientTransactionError`. The transaction that wrote first keeps its
573
+ documents and commits. The driver's `withTransaction` retries the loser on a
574
+ fresh snapshot, so a transaction that writes a hot document and then does more
575
+ work makes progress against clients looping short transactions on it.
576
+ - Reads never conflict: they see the snapshot, not another transaction's
577
+ uncommitted writes. A statement that writes nothing (a filter that matches
578
+ nothing in the snapshot, an update that leaves the document unchanged) does
579
+ not conflict either.
580
+ - A write outside a transaction that meets an open transaction's uncommitted
581
+ write waits until that transaction commits or aborts, then runs on the new
582
+ state: after a commit it applies on top of the transaction's write, and a
583
+ unique key the transaction claimed becomes `DuplicateKey` (11000). The wait
584
+ is bounded by `maxTimeMS`, which ends it with `MaxTimeMSExpired` (50) and
585
+ nothing written, and holds no write worker, so the transaction can always
586
+ finish. Writes to other documents are not delayed. A multi-document write
587
+ outside a transaction stays all-or-nothing: it publishes nothing until it can
588
+ publish every document.
589
+ - After a transaction has been open for 60 seconds, its uncommitted writes no
590
+ longer block others: the next writer that needs one of its documents aborts
591
+ it, and it reports `NoSuchTransaction` (251) on its next statement or commit.
592
+ The limit is fixed at MongoDB's default `transactionLifetimeLimitSeconds` and
593
+ is not configurable. A transaction nobody contends with is not
594
+ aborted by age alone. Ending or expiring the session, and stopping the
595
+ server, release a transaction's writes as well.
596
+ - TTL expiry is not a contending writer. It leaves out the documents an open
597
+ transaction has written, deletes the other expired documents of the index
598
+ and moves past the held ones. A later pass over the index expires those
599
+ still expired once the transaction has ended. It never waits for a transaction and never aborts
600
+ one, whatever its age. MongoDB's TTL monitor instead retries a conflicting delete until
601
+ the transaction ends and leaves aborting it to its transaction reaper.
602
+ - A key already visible in the transaction's snapshot is not a conflict:
603
+ inserting it fails the statement with `DuplicateKey` (11000), as outside a
604
+ transaction. A collection created inside a transaction has no stored identity
605
+ until commit, so two transactions creating the same collection both succeed
606
+ their statements and the second commit reports `WriteConflict` (112), as on
607
+ MongoDB 7.
608
+
609
+ Write intents live in memory only; no transaction survives a restart, so
610
+ there is nothing to recover.
572
611
 
573
612
  Commit/abort outcomes and successful retryable statement results survive file
574
613
  storage restart. Duplicate commits replay their outcome; abort after commit
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@lossless.org/nosqldb',
6
- version: '10.6.0',
6
+ version: '10.6.1',
7
7
  description: 'A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.'
8
8
  }