@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 +9 -0
- package/dist/collection.d.ts +1 -0
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +390 -391
- package/dist/collection.js.map +1 -1
- package/dist/mutex.d.ts +8 -0
- package/dist/mutex.d.ts.map +1 -0
- package/dist/mutex.js +19 -0
- package/dist/mutex.js.map +1 -0
- package/package.json +10 -2
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
|
package/dist/collection.d.ts
CHANGED
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
package/dist/collection.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
-
|
|
339
|
-
|
|
340
|
-
const
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
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
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
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
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
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
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
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
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
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
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
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
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
deleted
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
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
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
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
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
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
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
const
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
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
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
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
|
-
|
|
947
|
-
|
|
948
|
-
newDoc._id = new ObjectId();
|
|
974
|
+
if (modifiedDocs.length > 0) {
|
|
975
|
+
await this.indexManager.checkUniqueConstraints(modifiedDocs, unchangedDocs);
|
|
949
976
|
}
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
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
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
if (
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
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:
|
|
1083
|
-
upsertedId:
|
|
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:
|
|
1089
|
-
modifiedCount:
|
|
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
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
const
|
|
1175
|
-
|
|
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
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
if (
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
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
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
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
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
if (
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
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
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
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
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
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
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
if (
|
|
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] =
|
|
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
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
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
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
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
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
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
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
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
|
-
|
|
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
|
|
1764
|
+
await access(newFilePath);
|
|
1765
|
+
targetExists = true;
|
|
1779
1766
|
}
|
|
1780
1767
|
catch {
|
|
1781
|
-
//
|
|
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
|
|
1792
|
+
await access(currentIndexPath);
|
|
1793
|
+
await renameFile(currentIndexPath, newIndexPath);
|
|
1785
1794
|
}
|
|
1786
1795
|
catch {
|
|
1787
|
-
//
|
|
1796
|
+
// Index file doesn't exist, that's okay
|
|
1788
1797
|
}
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
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
|
package/dist/collection.js.map
CHANGED
|
@@ -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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"}
|
package/dist/mutex.d.ts
ADDED
|
@@ -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.
|
|
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
|
},
|