mongo-locks 3.1.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.js +6 -2
- package/dist/commonjs/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +6 -2
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +7 -2
package/dist/commonjs/index.d.ts
CHANGED
package/dist/commonjs/index.js
CHANGED
|
@@ -70,11 +70,14 @@ class Lock {
|
|
|
70
70
|
}
|
|
71
71
|
class LockManager {
|
|
72
72
|
collection;
|
|
73
|
+
ready;
|
|
73
74
|
MongoLocksError = MongoLocksError;
|
|
74
75
|
constructor(collection) {
|
|
75
76
|
this.collection = collection;
|
|
76
|
-
collection.
|
|
77
|
-
|
|
77
|
+
this.ready = collection.createIndexes([
|
|
78
|
+
{ key: { action: 1 }, unique: true },
|
|
79
|
+
{ key: { expiresAt: 1 }, expireAfterSeconds: 0 },
|
|
80
|
+
]);
|
|
78
81
|
}
|
|
79
82
|
/**
|
|
80
83
|
* Creates a DB lock based on the key provided
|
|
@@ -82,6 +85,7 @@ class LockManager {
|
|
|
82
85
|
* @returns a function that when called will release the lock
|
|
83
86
|
*/
|
|
84
87
|
async lock(key) {
|
|
88
|
+
await this.ready;
|
|
85
89
|
const lockId = makeKey(key);
|
|
86
90
|
const id = new mongodb_1.ObjectId();
|
|
87
91
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAE/C,MAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,0CAIC;AAED,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;IAC/B,4CAA4C;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC,CAAC;AAUF,MAAM,IAAI;IACW;IAAsB;IAAwB;IAAjE,YAAmB,GAAa,EAAS,MAAe,EAAS,UAAiC;QAA/E,QAAG,GAAH,GAAG,CAAU;QAAS,WAAM,GAAN,MAAM,CAAS;QAAS,eAAU,GAAV,UAAU,CAAuB;QAChG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC,KAAK,IAAI,EAAE;gBACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;oBACnB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC5D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC9B,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;IACH,CAAC;IAED,MAAM,GAAG,IAAI,CAAC;IAEd;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CACzC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EACjB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,CAChF,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;CACF;AAED,MAAa,WAAW;IACtB,UAAU,CAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -66,11 +66,14 @@ class Lock {
|
|
|
66
66
|
}
|
|
67
67
|
export class LockManager {
|
|
68
68
|
collection;
|
|
69
|
+
ready;
|
|
69
70
|
MongoLocksError = MongoLocksError;
|
|
70
71
|
constructor(collection) {
|
|
71
72
|
this.collection = collection;
|
|
72
|
-
collection.
|
|
73
|
-
|
|
73
|
+
this.ready = collection.createIndexes([
|
|
74
|
+
{ key: { action: 1 }, unique: true },
|
|
75
|
+
{ key: { expiresAt: 1 }, expireAfterSeconds: 0 },
|
|
76
|
+
]);
|
|
74
77
|
}
|
|
75
78
|
/**
|
|
76
79
|
* Creates a DB lock based on the key provided
|
|
@@ -78,6 +81,7 @@ export class LockManager {
|
|
|
78
81
|
* @returns a function that when called will release the lock
|
|
79
82
|
*/
|
|
80
83
|
async lock(key) {
|
|
84
|
+
await this.ready;
|
|
81
85
|
const lockId = makeKey(key);
|
|
82
86
|
const id = new ObjectId();
|
|
83
87
|
try {
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAED,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;IAC/B,4CAA4C;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC,CAAC;AAUF,MAAM,IAAI;IACW;IAAsB;IAAwB;IAAjE,YAAmB,GAAa,EAAS,MAAe,EAAS,UAAiC;QAA/E,QAAG,GAAH,GAAG,CAAU;QAAS,WAAM,GAAN,MAAM,CAAS;QAAS,eAAU,GAAV,UAAU,CAAuB;QAChG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC,KAAK,IAAI,EAAE;gBACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;oBACnB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC5D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC9B,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;IACH,CAAC;IAED,MAAM,GAAG,IAAI,CAAC;IAEd;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CACzC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EACjB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,CAChF,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACtB,UAAU,CAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -84,13 +84,16 @@ class Lock {
|
|
|
84
84
|
|
|
85
85
|
export class LockManager {
|
|
86
86
|
collection: Collection<LockModel>;
|
|
87
|
+
private readonly ready: Promise<string[]>;
|
|
87
88
|
MongoLocksError = MongoLocksError;
|
|
88
89
|
|
|
89
90
|
constructor(collection: Collection) {
|
|
90
91
|
this.collection = collection as unknown as Collection<LockModel>;
|
|
91
92
|
|
|
92
|
-
collection.
|
|
93
|
-
|
|
93
|
+
this.ready = collection.createIndexes([
|
|
94
|
+
{ key: { action: 1 }, unique: true },
|
|
95
|
+
{ key: { expiresAt: 1 }, expireAfterSeconds: 0 },
|
|
96
|
+
]);
|
|
94
97
|
}
|
|
95
98
|
|
|
96
99
|
/**
|
|
@@ -99,6 +102,8 @@ export class LockManager {
|
|
|
99
102
|
* @returns a function that when called will release the lock
|
|
100
103
|
*/
|
|
101
104
|
async lock(key: unknown): Promise<Lock | null> {
|
|
105
|
+
await this.ready;
|
|
106
|
+
|
|
102
107
|
const lockId = makeKey(key);
|
|
103
108
|
const id = new ObjectId();
|
|
104
109
|
|