@jkershaw/mangodb 0.1.0 → 0.1.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.1] - 2026-01-18
9
+
10
+ ### Added
11
+ - In-process mutex for concurrent write operations
12
+ - Concurrency tests for mutex validation
13
+
14
+ ### Fixed
15
+ - Race condition causing data loss and performance degradation with concurrent writes to the same collection ([#46](https://github.com/JKershaw/mangodb/issues/46))
16
+
8
17
  ## [0.1.0] - 2024-12-27
9
18
 
10
19
  ### Added
@@ -23,6 +23,7 @@ export declare class MangoCollection<T extends Document = Document> {
23
23
  private readonly indexManager;
24
24
  private readonly dataDir;
25
25
  private readonly dbName;
26
+ private readonly mutex;
26
27
  /**
27
28
  * Create a new MangoCollection instance.
28
29
  *
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,wBAAwB,CAAC;AAatF,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAiCpB,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC;AAmB5D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAe,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC;;;;;;;;;;;OAWG;gBACS,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;YAUrD,aAAa;YAab,cAAc;IAM5B,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmCvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,iBAAiB;IAoFzB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAEzE;;;;;;;;;OASG;YACW,qBAAqB;IAgDnC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAM3F;;;;;;;;;;;;;;OAcG;IACG,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE;;;;;;;;;;;;;;OAcG;IACG,aAAa,CACjB,UAAU,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,YAAY,CAAA;KAAE,GAAG,kBAAkB,CAAC,GAC5D,OAAO,CAAC,MAAM,EAAE,CAAC;IAYpB;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7D;;;;;;;;;;OAUG;IACG,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIrC;;;;;;;;;;OAUG;IACH,WAAW,IAAI,WAAW;IAM1B;;;;;;;;;;;;;;;;;;OAkBG;IACG,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBjD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6BtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACG,OAAO,CAAC,MAAM,GAAE,MAAM,CAAC,CAAC,CAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA6BnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,IAAI,CAAC,MAAM,GAAE,MAAM,CAAC,CAAC,CAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,WAAW,CAAC,CAAC,CAAC;IA+CvE;;;OAGG;YACW,gBAAgB;IA2C9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAcvF;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAAC,MAAM,GAAE,MAAM,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ7D;;;;;;;;;;;;;;;;;;OAkBG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BzD;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAiB1D;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgF/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;YAgCf,aAAa;IAyF3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,SAAS,CACb,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAIxB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAIxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,WAAW,EAAE,CAAC,EACd,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GACjC,OAAO,CAAC,YAAY,CAAC;IAiFxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAoCpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,WAAW,EAAE,CAAC,EACd,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAqEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IA4EpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsDG;IACG,SAAS,CACb,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,EACnC,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAuF3B;;;;;;;;;;;;;;OAcG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAoCzE;;;;;;;;;;;;;;;;;;OAkBG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IA4B9B;;;;;;;;;;;;;;OAcG;IACG,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IA6CvC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAwExF"}
@@ -18,6 +18,7 @@ import { serializeDocument, deserializeDocument, getValueByPath, setValueByPath,
18
18
  import { matchesFilter } from "./query-matcher.js";
19
19
  import { applyUpdateOperators, createDocumentFromFilter, validateReplacement, } from "./update-operators.js";
20
20
  import { IndexManager } from "./index-manager.js";
21
+ import { Mutex } from "./mutex.js";
21
22
  import { TextIndexRequiredError, NamespaceNotFoundError, TargetNamespaceExistsError, IllegalOperationError, InvalidNamespaceError, } from "./errors.js";
22
23
  import { extractNearQuery, evaluateNear, GeoIndexRequiredError } from "./geo/index.js";
23
24
  /**
@@ -56,6 +57,7 @@ export class MangoCollection {
56
57
  indexManager;
57
58
  dataDir;
58
59
  dbName;
60
+ mutex = new Mutex();
59
61
  /**
60
62
  * Create a new MangoCollection instance.
61
63
  *
@@ -299,7 +301,9 @@ export class MangoCollection {
299
301
  * ```
300
302
  */
301
303
  async createIndex(keySpec, options = {}) {
302
- return this.indexManager.createIndex(keySpec, options);
304
+ return this.mutex.runExclusive(async () => {
305
+ return this.indexManager.createIndex(keySpec, options);
306
+ });
303
307
  }
304
308
  /**
305
309
  * Drop an index from the collection.
@@ -317,7 +321,9 @@ export class MangoCollection {
317
321
  * ```
318
322
  */
319
323
  async dropIndex(indexNameOrSpec) {
320
- return this.indexManager.dropIndex(indexNameOrSpec);
324
+ return this.mutex.runExclusive(async () => {
325
+ return this.indexManager.dropIndex(indexNameOrSpec);
326
+ });
321
327
  }
322
328
  /**
323
329
  * Create multiple indexes on the collection.
@@ -335,13 +341,15 @@ export class MangoCollection {
335
341
  * ```
336
342
  */
337
343
  async createIndexes(indexSpecs) {
338
- const names = [];
339
- for (const spec of indexSpecs) {
340
- const { key, ...options } = spec;
341
- const name = await this.indexManager.createIndex(key, options);
342
- names.push(name);
343
- }
344
- return names;
344
+ return this.mutex.runExclusive(async () => {
345
+ const names = [];
346
+ for (const spec of indexSpecs) {
347
+ const { key, ...options } = spec;
348
+ const name = await this.indexManager.createIndex(key, options);
349
+ names.push(name);
350
+ }
351
+ return names;
352
+ });
345
353
  }
346
354
  /**
347
355
  * Drop all indexes on the collection except _id.
@@ -365,21 +373,23 @@ export class MangoCollection {
365
373
  * ```
366
374
  */
367
375
  async dropIndexes(indexNames) {
368
- const indexes = await this.indexManager.indexes();
369
- if (indexNames === '*' || indexNames === undefined) {
370
- // Drop all non-_id indexes
371
- for (const idx of indexes) {
372
- if (idx.name !== '_id_') {
373
- await this.indexManager.dropIndex(idx.name);
376
+ return this.mutex.runExclusive(async () => {
377
+ const indexes = await this.indexManager.indexes();
378
+ if (indexNames === '*' || indexNames === undefined) {
379
+ // Drop all non-_id indexes
380
+ for (const idx of indexes) {
381
+ if (idx.name !== '_id_') {
382
+ await this.indexManager.dropIndex(idx.name);
383
+ }
374
384
  }
375
385
  }
376
- }
377
- else {
378
- // Drop specific indexes
379
- for (const name of indexNames) {
380
- await this.indexManager.dropIndex(name);
386
+ else {
387
+ // Drop specific indexes
388
+ for (const name of indexNames) {
389
+ await this.indexManager.dropIndex(name);
390
+ }
381
391
  }
382
- }
392
+ });
383
393
  }
384
394
  /**
385
395
  * Get all indexes on the collection.
@@ -430,18 +440,20 @@ export class MangoCollection {
430
440
  * ```
431
441
  */
432
442
  async insertOne(doc) {
433
- const documents = await this.readDocuments();
434
- const docWithId = { ...doc };
435
- if (!('_id' in docWithId)) {
436
- docWithId._id = new ObjectId();
437
- }
438
- await this.indexManager.checkUniqueConstraints([docWithId], documents);
439
- documents.push(docWithId);
440
- await this.writeDocuments(documents);
441
- return {
442
- acknowledged: true,
443
- insertedId: docWithId._id,
444
- };
443
+ return this.mutex.runExclusive(async () => {
444
+ const documents = await this.readDocuments();
445
+ const docWithId = { ...doc };
446
+ if (!('_id' in docWithId)) {
447
+ docWithId._id = new ObjectId();
448
+ }
449
+ await this.indexManager.checkUniqueConstraints([docWithId], documents);
450
+ documents.push(docWithId);
451
+ await this.writeDocuments(documents);
452
+ return {
453
+ acknowledged: true,
454
+ insertedId: docWithId._id,
455
+ };
456
+ });
445
457
  }
446
458
  /**
447
459
  * Insert multiple documents into the collection.
@@ -464,24 +476,26 @@ export class MangoCollection {
464
476
  * ```
465
477
  */
466
478
  async insertMany(docs) {
467
- const documents = await this.readDocuments();
468
- const insertedIds = {};
469
- const docsWithIds = [];
470
- for (let i = 0; i < docs.length; i++) {
471
- const docWithId = { ...docs[i] };
472
- if (!('_id' in docWithId)) {
473
- docWithId._id = new ObjectId();
479
+ return this.mutex.runExclusive(async () => {
480
+ const documents = await this.readDocuments();
481
+ const insertedIds = {};
482
+ const docsWithIds = [];
483
+ for (let i = 0; i < docs.length; i++) {
484
+ const docWithId = { ...docs[i] };
485
+ if (!('_id' in docWithId)) {
486
+ docWithId._id = new ObjectId();
487
+ }
488
+ docsWithIds.push(docWithId);
489
+ insertedIds[i] = docWithId._id;
474
490
  }
475
- docsWithIds.push(docWithId);
476
- insertedIds[i] = docWithId._id;
477
- }
478
- await this.indexManager.checkUniqueConstraints(docsWithIds, documents);
479
- documents.push(...docsWithIds);
480
- await this.writeDocuments(documents);
481
- return {
482
- acknowledged: true,
483
- insertedIds,
484
- };
491
+ await this.indexManager.checkUniqueConstraints(docsWithIds, documents);
492
+ documents.push(...docsWithIds);
493
+ await this.writeDocuments(documents);
494
+ return {
495
+ acknowledged: true,
496
+ insertedIds,
497
+ };
498
+ });
485
499
  }
486
500
  // ==================== Query Operations ====================
487
501
  /**
@@ -738,24 +752,26 @@ export class MangoCollection {
738
752
  * ```
739
753
  */
740
754
  async deleteOne(filter) {
741
- const documents = await this.readDocuments();
742
- let deletedCount = 0;
743
- const remaining = [];
744
- let deleted = false;
745
- for (const doc of documents) {
746
- if (!deleted && matchesFilter(doc, filter)) {
747
- deleted = true;
748
- deletedCount = 1;
749
- }
750
- else {
751
- remaining.push(doc);
755
+ return this.mutex.runExclusive(async () => {
756
+ const documents = await this.readDocuments();
757
+ let deletedCount = 0;
758
+ const remaining = [];
759
+ let deleted = false;
760
+ for (const doc of documents) {
761
+ if (!deleted && matchesFilter(doc, filter)) {
762
+ deleted = true;
763
+ deletedCount = 1;
764
+ }
765
+ else {
766
+ remaining.push(doc);
767
+ }
752
768
  }
753
- }
754
- await this.writeDocuments(remaining);
755
- return {
756
- acknowledged: true,
757
- deletedCount,
758
- };
769
+ await this.writeDocuments(remaining);
770
+ return {
771
+ acknowledged: true,
772
+ deletedCount,
773
+ };
774
+ });
759
775
  }
760
776
  /**
761
777
  * Delete all documents matching the filter.
@@ -777,14 +793,16 @@ export class MangoCollection {
777
793
  * ```
778
794
  */
779
795
  async deleteMany(filter) {
780
- const documents = await this.readDocuments();
781
- const remaining = documents.filter((doc) => !matchesFilter(doc, filter));
782
- const deletedCount = documents.length - remaining.length;
783
- await this.writeDocuments(remaining);
784
- return {
785
- acknowledged: true,
786
- deletedCount,
787
- };
796
+ return this.mutex.runExclusive(async () => {
797
+ const documents = await this.readDocuments();
798
+ const remaining = documents.filter((doc) => !matchesFilter(doc, filter));
799
+ const deletedCount = documents.length - remaining.length;
800
+ await this.writeDocuments(remaining);
801
+ return {
802
+ acknowledged: true,
803
+ deletedCount,
804
+ };
805
+ });
788
806
  }
789
807
  // ==================== Update Operations ====================
790
808
  /**
@@ -897,72 +915,74 @@ export class MangoCollection {
897
915
  return false;
898
916
  }
899
917
  async performUpdate(filter, update, options, limitOne) {
900
- const documents = await this.readDocuments();
901
- let matchedCount = 0;
902
- let modifiedCount = 0;
903
- let upsertedId = null;
904
- let upsertedCount = 0;
905
- const updatedDocuments = [];
906
- const modifiedDocs = [];
907
- const unchangedDocs = [];
908
- // Create context for positional update operators
909
- const baseContext = {
910
- arrayFilters: options.arrayFilters,
911
- };
912
- for (const doc of documents) {
913
- const shouldMatch = limitOne ? matchedCount === 0 : true;
914
- if (shouldMatch && matchesFilter(doc, filter)) {
915
- matchedCount++;
916
- // Track matched array indices for $ positional operator
917
- const matchedArrayIndex = this.findMatchedArrayIndices(doc, filter);
918
- const context = {
919
- ...baseContext,
920
- matchedArrayIndex,
921
- };
922
- const updatedDoc = applyUpdateOperators(doc, update, context);
923
- if (!documentsEqual(doc, updatedDoc)) {
924
- modifiedCount++;
925
- modifiedDocs.push(updatedDoc);
926
- updatedDocuments.push(updatedDoc);
918
+ return this.mutex.runExclusive(async () => {
919
+ const documents = await this.readDocuments();
920
+ let matchedCount = 0;
921
+ let modifiedCount = 0;
922
+ let upsertedId = null;
923
+ let upsertedCount = 0;
924
+ const updatedDocuments = [];
925
+ const modifiedDocs = [];
926
+ const unchangedDocs = [];
927
+ // Create context for positional update operators
928
+ const baseContext = {
929
+ arrayFilters: options.arrayFilters,
930
+ };
931
+ for (const doc of documents) {
932
+ const shouldMatch = limitOne ? matchedCount === 0 : true;
933
+ if (shouldMatch && matchesFilter(doc, filter)) {
934
+ matchedCount++;
935
+ // Track matched array indices for $ positional operator
936
+ const matchedArrayIndex = this.findMatchedArrayIndices(doc, filter);
937
+ const context = {
938
+ ...baseContext,
939
+ matchedArrayIndex,
940
+ };
941
+ const updatedDoc = applyUpdateOperators(doc, update, context);
942
+ if (!documentsEqual(doc, updatedDoc)) {
943
+ modifiedCount++;
944
+ modifiedDocs.push(updatedDoc);
945
+ updatedDocuments.push(updatedDoc);
946
+ }
947
+ else {
948
+ unchangedDocs.push(doc);
949
+ updatedDocuments.push(doc);
950
+ }
927
951
  }
928
952
  else {
929
953
  unchangedDocs.push(doc);
930
954
  updatedDocuments.push(doc);
931
955
  }
932
956
  }
933
- else {
934
- unchangedDocs.push(doc);
935
- updatedDocuments.push(doc);
936
- }
937
- }
938
- if (matchedCount === 0 && options.upsert) {
939
- const baseDoc = createDocumentFromFilter(filter);
940
- // Apply $setOnInsert fields - only during upsert insert
941
- if (update.$setOnInsert) {
942
- for (const [path, value] of Object.entries(update.$setOnInsert)) {
943
- setValueByPath(baseDoc, path, value);
957
+ if (matchedCount === 0 && options.upsert) {
958
+ const baseDoc = createDocumentFromFilter(filter);
959
+ // Apply $setOnInsert fields - only during upsert insert
960
+ if (update.$setOnInsert) {
961
+ for (const [path, value] of Object.entries(update.$setOnInsert)) {
962
+ setValueByPath(baseDoc, path, value);
963
+ }
964
+ }
965
+ const newDoc = applyUpdateOperators(baseDoc, update, baseContext);
966
+ if (!('_id' in newDoc)) {
967
+ newDoc._id = new ObjectId();
944
968
  }
969
+ upsertedId = newDoc._id;
970
+ upsertedCount = 1;
971
+ modifiedDocs.push(newDoc);
972
+ updatedDocuments.push(newDoc);
945
973
  }
946
- const newDoc = applyUpdateOperators(baseDoc, update, baseContext);
947
- if (!('_id' in newDoc)) {
948
- newDoc._id = new ObjectId();
974
+ if (modifiedDocs.length > 0) {
975
+ await this.indexManager.checkUniqueConstraints(modifiedDocs, unchangedDocs);
949
976
  }
950
- upsertedId = newDoc._id;
951
- upsertedCount = 1;
952
- modifiedDocs.push(newDoc);
953
- updatedDocuments.push(newDoc);
954
- }
955
- if (modifiedDocs.length > 0) {
956
- await this.indexManager.checkUniqueConstraints(modifiedDocs, unchangedDocs);
957
- }
958
- await this.writeDocuments(updatedDocuments);
959
- return {
960
- acknowledged: true,
961
- matchedCount,
962
- modifiedCount,
963
- upsertedCount,
964
- upsertedId,
965
- };
977
+ await this.writeDocuments(updatedDocuments);
978
+ return {
979
+ acknowledged: true,
980
+ matchedCount,
981
+ modifiedCount,
982
+ upsertedCount,
983
+ upsertedId,
984
+ };
985
+ });
966
986
  }
967
987
  /**
968
988
  * Update a single document matching the filter.
@@ -1064,66 +1084,68 @@ export class MangoCollection {
1064
1084
  */
1065
1085
  async replaceOne(filter, replacement, options = {}) {
1066
1086
  validateReplacement(replacement);
1067
- const documents = await this.readDocuments();
1068
- const matches = documents.filter((doc) => matchesFilter(doc, filter));
1069
- if (matches.length === 0) {
1070
- if (options.upsert) {
1071
- const newDoc = { ...replacement };
1072
- if (!('_id' in newDoc)) {
1073
- newDoc._id = new ObjectId();
1087
+ return this.mutex.runExclusive(async () => {
1088
+ const documents = await this.readDocuments();
1089
+ const matches = documents.filter((doc) => matchesFilter(doc, filter));
1090
+ if (matches.length === 0) {
1091
+ if (options.upsert) {
1092
+ const newDoc = { ...replacement };
1093
+ if (!('_id' in newDoc)) {
1094
+ newDoc._id = new ObjectId();
1095
+ }
1096
+ await this.indexManager.checkUniqueConstraints([newDoc], documents);
1097
+ documents.push(newDoc);
1098
+ await this.writeDocuments(documents);
1099
+ return {
1100
+ acknowledged: true,
1101
+ matchedCount: 0,
1102
+ modifiedCount: 0,
1103
+ upsertedCount: 1,
1104
+ upsertedId: newDoc._id,
1105
+ };
1074
1106
  }
1075
- await this.indexManager.checkUniqueConstraints([newDoc], documents);
1076
- documents.push(newDoc);
1077
- await this.writeDocuments(documents);
1078
1107
  return {
1079
1108
  acknowledged: true,
1080
1109
  matchedCount: 0,
1081
1110
  modifiedCount: 0,
1082
- upsertedCount: 1,
1083
- upsertedId: newDoc._id,
1111
+ upsertedCount: 0,
1112
+ upsertedId: null,
1084
1113
  };
1085
1114
  }
1115
+ const docToReplace = matches[0];
1116
+ const originalId = docToReplace._id;
1117
+ const newDoc = { ...replacement };
1118
+ if (originalId !== undefined) {
1119
+ newDoc._id = originalId;
1120
+ }
1121
+ // Convert _id to string for unique constraint check
1122
+ // Use explicit undefined check to handle falsy _id values like 0 or ""
1123
+ const getIdString = (id) => {
1124
+ if (id === undefined)
1125
+ return '';
1126
+ if (typeof id.toHexString === 'function') {
1127
+ return id.toHexString();
1128
+ }
1129
+ return String(id);
1130
+ };
1131
+ const idString = getIdString(originalId);
1132
+ await this.indexManager.checkUniqueConstraints([newDoc], documents, originalId !== undefined ? new Set([idString]) : new Set());
1133
+ const idx = documents.findIndex((doc) => {
1134
+ const id = doc._id;
1135
+ return idsEqual(id, originalId);
1136
+ });
1137
+ if (idx !== -1) {
1138
+ documents[idx] = newDoc;
1139
+ }
1140
+ await this.writeDocuments(documents);
1086
1141
  return {
1087
1142
  acknowledged: true,
1088
- matchedCount: 0,
1089
- modifiedCount: 0,
1143
+ matchedCount: 1,
1144
+ modifiedCount: 1,
1090
1145
  upsertedCount: 0,
1091
1146
  upsertedId: null,
1092
1147
  };
1093
- }
1094
- const docToReplace = matches[0];
1095
- const originalId = docToReplace._id;
1096
- const newDoc = { ...replacement };
1097
- if (originalId !== undefined) {
1098
- newDoc._id = originalId;
1099
- }
1100
- // Convert _id to string for unique constraint check
1101
- // Use explicit undefined check to handle falsy _id values like 0 or ""
1102
- const getIdString = (id) => {
1103
- if (id === undefined)
1104
- return '';
1105
- if (typeof id.toHexString === 'function') {
1106
- return id.toHexString();
1107
- }
1108
- return String(id);
1109
- };
1110
- const idString = getIdString(originalId);
1111
- await this.indexManager.checkUniqueConstraints([newDoc], documents, originalId !== undefined ? new Set([idString]) : new Set());
1112
- const idx = documents.findIndex((doc) => {
1113
- const id = doc._id;
1114
- return idsEqual(id, originalId);
1115
1148
  });
1116
- if (idx !== -1) {
1117
- documents[idx] = newDoc;
1118
- }
1119
- await this.writeDocuments(documents);
1120
- return {
1121
- acknowledged: true,
1122
- matchedCount: 1,
1123
- modifiedCount: 1,
1124
- upsertedCount: 0,
1125
- upsertedId: null,
1126
- };
1127
1149
  }
1128
1150
  // ==================== FindOneAnd* Operations ====================
1129
1151
  /**
@@ -1157,28 +1179,30 @@ export class MangoCollection {
1157
1179
  * ```
1158
1180
  */
1159
1181
  async findOneAndDelete(filter, options = {}) {
1160
- const documents = await this.readDocuments();
1161
- let matches = documents.filter((doc) => matchesFilter(doc, filter));
1162
- if (matches.length === 0) {
1163
- return null;
1164
- }
1165
- if (options.sort) {
1166
- matches = this.sortDocuments(matches, options.sort);
1167
- }
1168
- const docToDelete = matches[0];
1169
- const docId = docToDelete._id;
1170
- if (!docId) {
1171
- throw new Error('Cannot delete document without _id');
1172
- }
1173
- const remaining = documents.filter((doc) => {
1174
- const id = doc._id;
1175
- return !idsEqual(id, docId);
1182
+ return this.mutex.runExclusive(async () => {
1183
+ const documents = await this.readDocuments();
1184
+ let matches = documents.filter((doc) => matchesFilter(doc, filter));
1185
+ if (matches.length === 0) {
1186
+ return null;
1187
+ }
1188
+ if (options.sort) {
1189
+ matches = this.sortDocuments(matches, options.sort);
1190
+ }
1191
+ const docToDelete = matches[0];
1192
+ const docId = docToDelete._id;
1193
+ if (!docId) {
1194
+ throw new Error('Cannot delete document without _id');
1195
+ }
1196
+ const remaining = documents.filter((doc) => {
1197
+ const id = doc._id;
1198
+ return !idsEqual(id, docId);
1199
+ });
1200
+ await this.writeDocuments(remaining);
1201
+ if (options.projection) {
1202
+ return applyProjection(docToDelete, options.projection);
1203
+ }
1204
+ return docToDelete;
1176
1205
  });
1177
- await this.writeDocuments(remaining);
1178
- if (options.projection) {
1179
- return applyProjection(docToDelete, options.projection);
1180
- }
1181
- return docToDelete;
1182
1206
  }
1183
1207
  /**
1184
1208
  * Find a single document and replace it.
@@ -1220,55 +1244,57 @@ export class MangoCollection {
1220
1244
  */
1221
1245
  async findOneAndReplace(filter, replacement, options = {}) {
1222
1246
  validateReplacement(replacement);
1223
- const documents = await this.readDocuments();
1224
- const returnAfter = options.returnDocument === 'after';
1225
- let matches = documents.filter((doc) => matchesFilter(doc, filter));
1226
- if (matches.length === 0) {
1227
- if (options.upsert) {
1228
- const newDoc = { ...replacement };
1229
- if (!('_id' in newDoc)) {
1230
- newDoc._id = new ObjectId();
1231
- }
1232
- await this.indexManager.checkUniqueConstraints([newDoc], documents);
1233
- documents.push(newDoc);
1234
- await this.writeDocuments(documents);
1235
- if (returnAfter) {
1236
- return options.projection ? applyProjection(newDoc, options.projection) : newDoc;
1247
+ return this.mutex.runExclusive(async () => {
1248
+ const documents = await this.readDocuments();
1249
+ const returnAfter = options.returnDocument === 'after';
1250
+ let matches = documents.filter((doc) => matchesFilter(doc, filter));
1251
+ if (matches.length === 0) {
1252
+ if (options.upsert) {
1253
+ const newDoc = { ...replacement };
1254
+ if (!('_id' in newDoc)) {
1255
+ newDoc._id = new ObjectId();
1256
+ }
1257
+ await this.indexManager.checkUniqueConstraints([newDoc], documents);
1258
+ documents.push(newDoc);
1259
+ await this.writeDocuments(documents);
1260
+ if (returnAfter) {
1261
+ return options.projection ? applyProjection(newDoc, options.projection) : newDoc;
1262
+ }
1263
+ return null;
1237
1264
  }
1238
1265
  return null;
1239
1266
  }
1240
- return null;
1241
- }
1242
- if (options.sort) {
1243
- matches = this.sortDocuments(matches, options.sort);
1244
- }
1245
- const docToReplace = matches[0];
1246
- const originalId = docToReplace._id;
1247
- const newDoc = { ...replacement };
1248
- if (originalId) {
1249
- newDoc._id = originalId;
1250
- }
1251
- const updatedDocuments = [];
1252
- const unchangedDocs = [];
1253
- let replaced = false;
1254
- for (const doc of documents) {
1255
- const id = doc._id;
1256
- if (!replaced && idsEqual(id, originalId)) {
1257
- updatedDocuments.push(newDoc);
1258
- replaced = true;
1267
+ if (options.sort) {
1268
+ matches = this.sortDocuments(matches, options.sort);
1259
1269
  }
1260
- else {
1261
- updatedDocuments.push(doc);
1262
- unchangedDocs.push(doc);
1270
+ const docToReplace = matches[0];
1271
+ const originalId = docToReplace._id;
1272
+ const newDoc = { ...replacement };
1273
+ if (originalId) {
1274
+ newDoc._id = originalId;
1263
1275
  }
1264
- }
1265
- await this.indexManager.checkUniqueConstraints([newDoc], unchangedDocs);
1266
- await this.writeDocuments(updatedDocuments);
1267
- const resultDoc = returnAfter ? newDoc : docToReplace;
1268
- if (options.projection) {
1269
- return applyProjection(resultDoc, options.projection);
1270
- }
1271
- return resultDoc;
1276
+ const updatedDocuments = [];
1277
+ const unchangedDocs = [];
1278
+ let replaced = false;
1279
+ for (const doc of documents) {
1280
+ const id = doc._id;
1281
+ if (!replaced && idsEqual(id, originalId)) {
1282
+ updatedDocuments.push(newDoc);
1283
+ replaced = true;
1284
+ }
1285
+ else {
1286
+ updatedDocuments.push(doc);
1287
+ unchangedDocs.push(doc);
1288
+ }
1289
+ }
1290
+ await this.indexManager.checkUniqueConstraints([newDoc], unchangedDocs);
1291
+ await this.writeDocuments(updatedDocuments);
1292
+ const resultDoc = returnAfter ? newDoc : docToReplace;
1293
+ if (options.projection) {
1294
+ return applyProjection(resultDoc, options.projection);
1295
+ }
1296
+ return resultDoc;
1297
+ });
1272
1298
  }
1273
1299
  /**
1274
1300
  * Find a single document and update it.
@@ -1314,59 +1340,61 @@ export class MangoCollection {
1314
1340
  * ```
1315
1341
  */
1316
1342
  async findOneAndUpdate(filter, update, options = {}) {
1317
- const documents = await this.readDocuments();
1318
- const returnAfter = options.returnDocument === 'after';
1319
- let matches = documents.filter((doc) => matchesFilter(doc, filter));
1320
- if (matches.length === 0) {
1321
- if (options.upsert) {
1322
- const baseDoc = createDocumentFromFilter(filter);
1323
- // Apply $setOnInsert fields - only during upsert insert
1324
- if (update.$setOnInsert) {
1325
- for (const [path, value] of Object.entries(update.$setOnInsert)) {
1326
- setValueByPath(baseDoc, path, value);
1343
+ return this.mutex.runExclusive(async () => {
1344
+ const documents = await this.readDocuments();
1345
+ const returnAfter = options.returnDocument === 'after';
1346
+ let matches = documents.filter((doc) => matchesFilter(doc, filter));
1347
+ if (matches.length === 0) {
1348
+ if (options.upsert) {
1349
+ const baseDoc = createDocumentFromFilter(filter);
1350
+ // Apply $setOnInsert fields - only during upsert insert
1351
+ if (update.$setOnInsert) {
1352
+ for (const [path, value] of Object.entries(update.$setOnInsert)) {
1353
+ setValueByPath(baseDoc, path, value);
1354
+ }
1327
1355
  }
1328
- }
1329
- const newDoc = applyUpdateOperators(baseDoc, update);
1330
- if (!('_id' in newDoc)) {
1331
- newDoc._id = new ObjectId();
1332
- }
1333
- await this.indexManager.checkUniqueConstraints([newDoc], documents);
1334
- documents.push(newDoc);
1335
- await this.writeDocuments(documents);
1336
- if (returnAfter) {
1337
- return options.projection ? applyProjection(newDoc, options.projection) : newDoc;
1356
+ const newDoc = applyUpdateOperators(baseDoc, update);
1357
+ if (!('_id' in newDoc)) {
1358
+ newDoc._id = new ObjectId();
1359
+ }
1360
+ await this.indexManager.checkUniqueConstraints([newDoc], documents);
1361
+ documents.push(newDoc);
1362
+ await this.writeDocuments(documents);
1363
+ if (returnAfter) {
1364
+ return options.projection ? applyProjection(newDoc, options.projection) : newDoc;
1365
+ }
1366
+ return null;
1338
1367
  }
1339
1368
  return null;
1340
1369
  }
1341
- return null;
1342
- }
1343
- if (options.sort) {
1344
- matches = this.sortDocuments(matches, options.sort);
1345
- }
1346
- const docToUpdate = matches[0];
1347
- const originalId = docToUpdate._id;
1348
- const updatedDoc = applyUpdateOperators(docToUpdate, update);
1349
- const updatedDocuments = [];
1350
- const unchangedDocs = [];
1351
- let updated = false;
1352
- for (const doc of documents) {
1353
- const id = doc._id;
1354
- if (!updated && idsEqual(id, originalId)) {
1355
- updatedDocuments.push(updatedDoc);
1356
- updated = true;
1370
+ if (options.sort) {
1371
+ matches = this.sortDocuments(matches, options.sort);
1357
1372
  }
1358
- else {
1359
- updatedDocuments.push(doc);
1360
- unchangedDocs.push(doc);
1373
+ const docToUpdate = matches[0];
1374
+ const originalId = docToUpdate._id;
1375
+ const updatedDoc = applyUpdateOperators(docToUpdate, update);
1376
+ const updatedDocuments = [];
1377
+ const unchangedDocs = [];
1378
+ let updated = false;
1379
+ for (const doc of documents) {
1380
+ const id = doc._id;
1381
+ if (!updated && idsEqual(id, originalId)) {
1382
+ updatedDocuments.push(updatedDoc);
1383
+ updated = true;
1384
+ }
1385
+ else {
1386
+ updatedDocuments.push(doc);
1387
+ unchangedDocs.push(doc);
1388
+ }
1361
1389
  }
1362
- }
1363
- await this.indexManager.checkUniqueConstraints([updatedDoc], unchangedDocs);
1364
- await this.writeDocuments(updatedDocuments);
1365
- const resultDoc = returnAfter ? updatedDoc : docToUpdate;
1366
- if (options.projection) {
1367
- return applyProjection(resultDoc, options.projection);
1368
- }
1369
- return resultDoc;
1390
+ await this.indexManager.checkUniqueConstraints([updatedDoc], unchangedDocs);
1391
+ await this.writeDocuments(updatedDocuments);
1392
+ const resultDoc = returnAfter ? updatedDoc : docToUpdate;
1393
+ if (options.projection) {
1394
+ return applyProjection(resultDoc, options.projection);
1395
+ }
1396
+ return resultDoc;
1397
+ });
1370
1398
  }
1371
1399
  // ==================== Bulk Write ====================
1372
1400
  /**
@@ -1476,45 +1504,12 @@ export class MangoCollection {
1476
1504
  result.deletedCount += deleteResult.deletedCount;
1477
1505
  }
1478
1506
  else if (op.replaceOne) {
1479
- validateReplacement(op.replaceOne.replacement);
1480
- const documents = await this.readDocuments();
1481
- const matches = documents.filter((doc) => matchesFilter(doc, op.replaceOne.filter));
1482
- if (matches.length === 0 && op.replaceOne.upsert) {
1483
- const newDoc = { ...op.replaceOne.replacement };
1484
- if (!('_id' in newDoc)) {
1485
- newDoc._id = new ObjectId();
1486
- }
1487
- await this.indexManager.checkUniqueConstraints([newDoc], documents);
1488
- documents.push(newDoc);
1489
- await this.writeDocuments(documents);
1507
+ const replaceResult = await this.replaceOne(op.replaceOne.filter, op.replaceOne.replacement, { upsert: op.replaceOne.upsert });
1508
+ result.matchedCount += replaceResult.matchedCount;
1509
+ result.modifiedCount += replaceResult.modifiedCount;
1510
+ if (replaceResult.upsertedId) {
1490
1511
  result.upsertedCount++;
1491
- result.upsertedIds[i] = newDoc._id;
1492
- }
1493
- else if (matches.length > 0) {
1494
- const docToReplace = matches[0];
1495
- const originalId = docToReplace._id;
1496
- const newDoc = { ...op.replaceOne.replacement };
1497
- if (originalId) {
1498
- newDoc._id = originalId;
1499
- }
1500
- const updatedDocuments = [];
1501
- const unchangedDocs = [];
1502
- let replaced = false;
1503
- for (const doc of documents) {
1504
- const id = doc._id;
1505
- if (!replaced && idsEqual(id, originalId)) {
1506
- updatedDocuments.push(newDoc);
1507
- replaced = true;
1508
- }
1509
- else {
1510
- updatedDocuments.push(doc);
1511
- unchangedDocs.push(doc);
1512
- }
1513
- }
1514
- await this.indexManager.checkUniqueConstraints([newDoc], unchangedDocs);
1515
- await this.writeDocuments(updatedDocuments);
1516
- result.matchedCount++;
1517
- result.modifiedCount++;
1512
+ result.upsertedIds[i] = replaceResult.upsertedId;
1518
1513
  }
1519
1514
  }
1520
1515
  }
@@ -1631,28 +1626,30 @@ export class MangoCollection {
1631
1626
  * ```
1632
1627
  */
1633
1628
  async drop() {
1634
- // Delete data file
1635
- try {
1636
- await unlink(this.filePath);
1637
- }
1638
- catch (error) {
1639
- if (error.code !== 'ENOENT') {
1640
- throw error;
1629
+ return this.mutex.runExclusive(async () => {
1630
+ // Delete data file
1631
+ try {
1632
+ await unlink(this.filePath);
1641
1633
  }
1642
- }
1643
- // Delete index file
1644
- const indexFilePath = this.filePath.replace('.json', '.indexes.json');
1645
- try {
1646
- await unlink(indexFilePath);
1647
- }
1648
- catch (error) {
1649
- if (error.code !== 'ENOENT') {
1650
- throw error;
1634
+ catch (error) {
1635
+ if (error.code !== 'ENOENT') {
1636
+ throw error;
1637
+ }
1651
1638
  }
1652
- }
1653
- // Reset index manager
1654
- await this.indexManager.reset();
1655
- return true;
1639
+ // Delete index file
1640
+ const indexFilePath = this.filePath.replace('.json', '.indexes.json');
1641
+ try {
1642
+ await unlink(indexFilePath);
1643
+ }
1644
+ catch (error) {
1645
+ if (error.code !== 'ENOENT') {
1646
+ throw error;
1647
+ }
1648
+ }
1649
+ // Reset index manager
1650
+ await this.indexManager.reset();
1651
+ return true;
1652
+ });
1656
1653
  }
1657
1654
  /**
1658
1655
  * Get statistics about the collection.
@@ -1734,7 +1731,7 @@ export class MangoCollection {
1734
1731
  * ```
1735
1732
  */
1736
1733
  async rename(newName, options = {}) {
1737
- // Validate new name
1734
+ // Validate new name (validation doesn't need lock)
1738
1735
  if (!newName || newName.length === 0) {
1739
1736
  throw new InvalidNamespaceError('collection names cannot be empty');
1740
1737
  }
@@ -1749,56 +1746,58 @@ export class MangoCollection {
1749
1746
  if (currentName === newName) {
1750
1747
  throw new IllegalOperationError('cannot rename collection to itself');
1751
1748
  }
1752
- // Check source exists
1753
- try {
1754
- await access(this.filePath);
1755
- }
1756
- catch {
1757
- throw new NamespaceNotFoundError();
1758
- }
1759
- const dbDir = dirname(this.filePath);
1760
- const newFilePath = join(dbDir, `${newName}.json`);
1761
- const newIndexPath = join(dbDir, `${newName}.indexes.json`);
1762
- const currentIndexPath = this.filePath.replace('.json', '.indexes.json');
1763
- // Check if target exists
1764
- let targetExists = false;
1765
- try {
1766
- await access(newFilePath);
1767
- targetExists = true;
1768
- }
1769
- catch {
1770
- // Target doesn't exist, which is fine
1771
- }
1772
- if (targetExists) {
1773
- if (!options.dropTarget) {
1774
- throw new TargetNamespaceExistsError();
1749
+ return this.mutex.runExclusive(async () => {
1750
+ // Check source exists
1751
+ try {
1752
+ await access(this.filePath);
1775
1753
  }
1776
- // Drop target
1754
+ catch {
1755
+ throw new NamespaceNotFoundError();
1756
+ }
1757
+ const dbDir = dirname(this.filePath);
1758
+ const newFilePath = join(dbDir, `${newName}.json`);
1759
+ const newIndexPath = join(dbDir, `${newName}.indexes.json`);
1760
+ const currentIndexPath = this.filePath.replace('.json', '.indexes.json');
1761
+ // Check if target exists
1762
+ let targetExists = false;
1777
1763
  try {
1778
- await unlink(newFilePath);
1764
+ await access(newFilePath);
1765
+ targetExists = true;
1779
1766
  }
1780
1767
  catch {
1781
- // Ignore errors
1768
+ // Target doesn't exist, which is fine
1769
+ }
1770
+ if (targetExists) {
1771
+ if (!options.dropTarget) {
1772
+ throw new TargetNamespaceExistsError();
1773
+ }
1774
+ // Drop target
1775
+ try {
1776
+ await unlink(newFilePath);
1777
+ }
1778
+ catch {
1779
+ // Ignore errors
1780
+ }
1781
+ try {
1782
+ await unlink(newIndexPath);
1783
+ }
1784
+ catch {
1785
+ // Ignore errors
1786
+ }
1782
1787
  }
1788
+ // Rename data file
1789
+ await renameFile(this.filePath, newFilePath);
1790
+ // Rename index file if it exists
1783
1791
  try {
1784
- await unlink(newIndexPath);
1792
+ await access(currentIndexPath);
1793
+ await renameFile(currentIndexPath, newIndexPath);
1785
1794
  }
1786
1795
  catch {
1787
- // Ignore errors
1796
+ // Index file doesn't exist, that's okay
1788
1797
  }
1789
- }
1790
- // Rename data file
1791
- await renameFile(this.filePath, newFilePath);
1792
- // Rename index file if it exists
1793
- try {
1794
- await access(currentIndexPath);
1795
- await renameFile(currentIndexPath, newIndexPath);
1796
- }
1797
- catch {
1798
- // Index file doesn't exist, that's okay
1799
- }
1800
- // Return new collection instance
1801
- return new MangoCollection(this.dataDir, this.dbName, newName);
1798
+ // Return new collection instance
1799
+ return new MangoCollection(this.dataDir, this.dbName, newName);
1800
+ });
1802
1801
  }
1803
1802
  }
1804
1803
  //# sourceMappingURL=collection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Simple in-process mutex for serializing async operations.
3
+ */
4
+ export declare class Mutex {
5
+ private queue;
6
+ runExclusive<T>(fn: () => Promise<T>): Promise<T>;
7
+ }
8
+ //# sourceMappingURL=mutex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutex.d.ts","sourceRoot":"","sources":["../src/mutex.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAqB;IAE5B,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAYxD"}
package/dist/mutex.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Simple in-process mutex for serializing async operations.
3
+ */
4
+ export class Mutex {
5
+ queue = Promise.resolve();
6
+ async runExclusive(fn) {
7
+ let resolve;
8
+ const tail = this.queue;
9
+ this.queue = new Promise((r) => (resolve = r));
10
+ await tail;
11
+ try {
12
+ return await fn();
13
+ }
14
+ finally {
15
+ resolve();
16
+ }
17
+ }
18
+ }
19
+ //# sourceMappingURL=mutex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutex.js","sourceRoot":"","sources":["../src/mutex.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,KAAK;IACR,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAElC,KAAK,CAAC,YAAY,CAAI,EAAoB;QACxC,IAAI,OAAmB,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAE/C,MAAM,IAAI,CAAC;QACX,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,OAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jkershaw/mangodb",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "File-based MongoDB drop-in replacement for TypeScript/Node.js. SQLite is to SQL as MangoDB is to MongoDB.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -24,12 +24,18 @@
24
24
  "test:mongodb": "export $(cat .env.mongodb) && node --experimental-strip-types test/cleanup-atlas.js && node --experimental-strip-types --test --test-concurrency=8 'test/**/*.test.ts'",
25
25
  "test:watch": "node --experimental-strip-types --test --watch 'test/**/*.test.ts'",
26
26
  "test:coverage": "node --experimental-strip-types --experimental-test-coverage --test 'test/**/*.test.ts'",
27
+ "test:coverage:ci": "node --experimental-strip-types --test --experimental-test-coverage --test-coverage-lines=85 --test-coverage-branches=80 --test-coverage-functions=85 'test/**/*.test.ts'",
27
28
  "prepublishOnly": "npm run clean && npm run build && npm test",
28
29
  "prepare": "husky",
29
30
  "lint": "eslint src/ test/",
30
31
  "lint:fix": "eslint src/ test/ --fix",
31
32
  "format": "prettier --write 'src/**/*.ts' 'test/**/*.ts'",
32
- "format:check": "prettier --check 'src/**/*.ts' 'test/**/*.ts'"
33
+ "format:check": "prettier --check 'src/**/*.ts' 'test/**/*.ts'",
34
+ "test:types": "tsd",
35
+ "test:fuzz": "[ -f .env.mongodb ] && export $(cat .env.mongodb); node --experimental-strip-types --test 'test/fuzz/**/*.fuzz.test.ts'"
36
+ },
37
+ "tsd": {
38
+ "directory": "test/types"
33
39
  },
34
40
  "keywords": [
35
41
  "mongodb",
@@ -60,10 +66,12 @@
60
66
  "eslint": "^9.39.2",
61
67
  "eslint-config-prettier": "^10.1.8",
62
68
  "eslint-plugin-prettier": "^5.5.4",
69
+ "fast-check": "^4.5.2",
63
70
  "husky": "^9.1.7",
64
71
  "mongodb": "^6.21.0",
65
72
  "mongodb-memory-server": "^11.0.1",
66
73
  "prettier": "^3.7.4",
74
+ "tsd": "^0.33.0",
67
75
  "typescript": "^5.7.2",
68
76
  "typescript-eslint": "^8.50.1"
69
77
  },