@medusajs/locking 2.22.0 → 2.22.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/AGENTS.md +1 -0
- package/dist/services/locking-module.d.ts +3 -0
- package/dist/services/locking-module.d.ts.map +1 -1
- package/dist/services/locking-module.js +5 -0
- package/dist/services/locking-module.js.map +1 -1
- package/dist/services/locking-provider.d.ts +1 -0
- package/dist/services/locking-provider.d.ts.map +1 -1
- package/dist/services/locking-provider.js +6 -0
- package/dist/services/locking-provider.js.map +1 -1
- package/package.json +4 -4
package/AGENTS.md
CHANGED
|
@@ -48,6 +48,7 @@ Docs: https://docs.medusajs.com/resources/infrastructure-modules/locking.md, htt
|
|
|
48
48
|
|
|
49
49
|
- `src/loaders/providers.ts`: always registers `InMemoryLockingProvider` (`identifier = "in-memory"`) under `lp_in-memory` and as the default; then registers each configured provider as `lp_<id>` (alias of its provider registration key). The default becomes the provider with `is_default: true`, or the only configured provider when exactly one is configured.
|
|
50
50
|
- `src/services/locking-provider.ts` resolves `lp_<providerId>`; providers must have a static `identifier` and a non-empty `id`, or registration throws.
|
|
51
|
+
- The service's `__hooks.onApplicationShutdown` calls the optional `shutdown()` of every registered provider (used by `locking-redis` to close its client).
|
|
51
52
|
- `src/providers/in-memory.ts`: process-local `Map` of locks with owner, optional expiration, and a promise queue.
|
|
52
53
|
|
|
53
54
|
## Development
|
|
@@ -14,6 +14,9 @@ export default class LockingModuleService implements ILockingModule {
|
|
|
14
14
|
protected providerService_: LockingProviderService;
|
|
15
15
|
protected defaultProviderId: string;
|
|
16
16
|
constructor(container: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
|
|
17
|
+
__hooks: {
|
|
18
|
+
onApplicationShutdown: () => Promise<void>;
|
|
19
|
+
};
|
|
17
20
|
execute<T>(keys: string | string[], job: (signal?: AbortSignal) => Promise<T>, args?: {
|
|
18
21
|
timeout?: number;
|
|
19
22
|
expire?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locking-module.d.ts","sourceRoot":"","sources":["../../src/services/locking-module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,MAAM,EACP,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,sBAAsB,MAAM,oBAAoB,CAAA;AAEvD,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,aAAa,CAAA;IACtB,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,cAAc;IAO/D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB;IANjE,SAAS,CAAC,OAAO,EAAE,aAAa,CAAA;IAChC,SAAS,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IAClD,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAA;gBAGjC,SAAS,EAAE,oBAAoB,EACZ,iBAAiB,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"locking-module.d.ts","sourceRoot":"","sources":["../../src/services/locking-module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,MAAM,EACP,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,sBAAsB,MAAM,oBAAoB,CAAA;AAEvD,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,aAAa,CAAA;IACtB,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,cAAc;IAO/D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB;IANjE,SAAS,CAAC,OAAO,EAAE,aAAa,CAAA;IAChC,SAAS,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IAClD,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAA;gBAGjC,SAAS,EAAE,oBAAoB,EACZ,iBAAiB,EAAE,yBAAyB;IAOjE,OAAO;;MAIN;IAEK,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACzC,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,EACD,aAAa,GAAE,OAAY,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQP,OAAO,CACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,EACD,aAAa,GAAE,OAAY,GAC1B,OAAO,CAAC,IAAI,CAAC;IAQV,OAAO,CACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,EACD,aAAa,GAAE,OAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAQb,UAAU,CACd,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,EACD,aAAa,GAAE,OAAY,GAC1B,OAAO,CAAC,IAAI,CAAC;CAOjB"}
|
|
@@ -4,6 +4,11 @@ const _types_1 = require("../types");
|
|
|
4
4
|
class LockingModuleService {
|
|
5
5
|
constructor(container, moduleDeclaration) {
|
|
6
6
|
this.moduleDeclaration = moduleDeclaration;
|
|
7
|
+
this.__hooks = {
|
|
8
|
+
onApplicationShutdown: async () => {
|
|
9
|
+
await this.providerService_.shutdown();
|
|
10
|
+
},
|
|
11
|
+
};
|
|
7
12
|
this.manager = container.manager;
|
|
8
13
|
this.providerService_ = container.lockingProviderService;
|
|
9
14
|
this.defaultProviderId = container[_types_1.LockingDefaultProvider];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locking-module.js","sourceRoot":"","sources":["../../src/services/locking-module.ts"],"names":[],"mappings":";;AAOA,mCAA+C;AAU/C,MAAqB,oBAAoB;IAKvC,YACE,SAA+B,EACZ,iBAA4C;QAA5C,sBAAiB,GAAjB,iBAAiB,CAA2B;
|
|
1
|
+
{"version":3,"file":"locking-module.js","sourceRoot":"","sources":["../../src/services/locking-module.ts"],"names":[],"mappings":";;AAOA,mCAA+C;AAU/C,MAAqB,oBAAoB;IAKvC,YACE,SAA+B,EACZ,iBAA4C;QAA5C,sBAAiB,GAAjB,iBAAiB,CAA2B;QAOjE,YAAO,GAAG;YACR,qBAAqB,EAAE,KAAK,IAAI,EAAE;gBAChC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAA;YACxC,CAAC;SACF,CAAA;QATC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,sBAAsB,CAAA;QACxD,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,+BAAsB,CAAC,CAAA;IAC5D,CAAC;IAQD,KAAK,CAAC,OAAO,CACX,IAAuB,EACvB,GAAyC,EACzC,IAIC,EACD,gBAAyB,EAAE;QAE3B,MAAM,UAAU,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAA;QAC3D,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAA;QAEhE,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,IAAuB,EACvB,IAIC,EACD,gBAAyB,EAAE;QAE3B,MAAM,UAAU,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAA;QAC3D,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAA;QAEhE,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,IAAuB,EACvB,IAGC,EACD,gBAAyB,EAAE;QAE3B,MAAM,UAAU,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAA;QAC3D,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAA;QAEhE,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAGC,EACD,gBAAyB,EAAE;QAE3B,MAAM,UAAU,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAA;QAC3D,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAA;QAEhE,OAAO,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACvD,CAAC;CACF;AAjFD,uCAiFC"}
|
|
@@ -9,6 +9,7 @@ export default class LockingProviderService {
|
|
|
9
9
|
constructor(container: InjectedDependencies);
|
|
10
10
|
static getRegistrationIdentifier(providerClass: Constructor<ILockingProvider>): string;
|
|
11
11
|
retrieveProviderRegistration(providerId: string): ILockingProvider;
|
|
12
|
+
shutdown(): Promise<void>;
|
|
12
13
|
}
|
|
13
14
|
export {};
|
|
14
15
|
//# sourceMappingURL=locking-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locking-provider.d.ts","sourceRoot":"","sources":["../../src/services/locking-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,MAAM,EACP,MAAM,2BAA2B,CAAA;AAIlC,KAAK,oBAAoB,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,gBAAgB,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,sBAAsB;;IACzC,SAAS,CAAC,aAAa,EAAE,oBAAoB,CAAA;gBAGjC,SAAS,EAAE,oBAAoB;IAO3C,MAAM,CAAC,yBAAyB,CAC9B,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC;IAWvC,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"locking-provider.d.ts","sourceRoot":"","sources":["../../src/services/locking-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,MAAM,EACP,MAAM,2BAA2B,CAAA;AAIlC,KAAK,oBAAoB,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,gBAAgB,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,sBAAsB;;IACzC,SAAS,CAAC,aAAa,EAAE,oBAAoB,CAAA;gBAGjC,SAAS,EAAE,oBAAoB;IAO3C,MAAM,CAAC,yBAAyB,CAC9B,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC;IAWvC,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAwBnE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAchC"}
|
|
@@ -46,6 +46,12 @@ Please make sure that the provider is registered in the container and it is conf
|
|
|
46
46
|
throw new Error(errMessage);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
async shutdown() {
|
|
50
|
+
const providers = new Set(Object.keys(this.__container__)
|
|
51
|
+
.filter((key) => key.startsWith(types_1.LockingProviderRegistrationPrefix))
|
|
52
|
+
.map((key) => this.__container__[key]));
|
|
53
|
+
await Promise.all([...providers].map((provider) => provider.shutdown?.()));
|
|
54
|
+
}
|
|
49
55
|
}
|
|
50
56
|
_LockingProviderService_logger = new WeakMap();
|
|
51
57
|
exports.default = LockingProviderService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locking-provider.js","sourceRoot":"","sources":["../../src/services/locking-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAKA,qDAAuD;AACvD,oCAA4D;AAO5D,MAAqB,sBAAsB;IAIzC,YAAY,SAA+B;QAF3C,iDAAe;QAGb,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,uBAAA,IAAI,kCAAW,SAAS,CAAC,QAAQ,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,MAAM;YAClB,CAAC,CAAE,OAA6B,MAAA,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,aAA4C;QAE5C,IAAI,CAAE,aAAqB,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,mBAAW,CACnB,mBAAW,CAAC,KAAK,CAAC,gBAAgB,EAClC,8DAA8D,CAC/D,CAAA;QACH,CAAC;QACD,OAAO,GAAI,aAAqB,CAAC,UAAU,EAAE,CAAA;IAC/C,CAAC;IAEM,4BAA4B,CAAC,UAAkB;QACpD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CACvB,GAAG,yCAAiC,GAAG,UAAU,EAAE,CACpD,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG;oDACyB,UAAU;qIACuE,CAAA;gBAE7H,+BAA+B;gBAC/B,uBAAA,IAAI,sCAAQ,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;gBAEhE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;YAC7B,CAAC;YAED,MAAM,UAAU,GAAG,oDAAoD,UAAU,mCAAmC,GAAG,CAAC,OAAO,EAAE,CAAA;YACjI,uBAAA,IAAI,sCAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAE9B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;CACF;;
|
|
1
|
+
{"version":3,"file":"locking-provider.js","sourceRoot":"","sources":["../../src/services/locking-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAKA,qDAAuD;AACvD,oCAA4D;AAO5D,MAAqB,sBAAsB;IAIzC,YAAY,SAA+B;QAF3C,iDAAe;QAGb,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,uBAAA,IAAI,kCAAW,SAAS,CAAC,QAAQ,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,MAAM;YAClB,CAAC,CAAE,OAA6B,MAAA,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,aAA4C;QAE5C,IAAI,CAAE,aAAqB,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,mBAAW,CACnB,mBAAW,CAAC,KAAK,CAAC,gBAAgB,EAClC,8DAA8D,CAC/D,CAAA;QACH,CAAC;QACD,OAAO,GAAI,aAAqB,CAAC,UAAU,EAAE,CAAA;IAC/C,CAAC;IAEM,4BAA4B,CAAC,UAAkB;QACpD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,aAAa,CACvB,GAAG,yCAAiC,GAAG,UAAU,EAAE,CACpD,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG;oDACyB,UAAU;qIACuE,CAAA;gBAE7H,+BAA+B;gBAC/B,uBAAA,IAAI,sCAAQ,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;gBAEhE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;YAC7B,CAAC;YAED,MAAM,UAAU,GAAG,oDAAoD,UAAU,mCAAmC,GAAG,CAAC,OAAO,EAAE,CAAA;YACjI,uBAAA,IAAI,sCAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAE9B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;aAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,yCAAiC,CAAC,CAAC;aAClE,GAAG,CACF,CAAC,GAAG,EAAE,EAAE,CACN,IAAI,CAAC,aAAa,CAAC,GAAqB,CAEvC,CACJ,CACJ,CAAA;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;CACF;;kBA7DoB,sBAAsB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@medusajs/locking",
|
|
3
|
-
"version": "2.22.
|
|
3
|
+
"version": "2.22.1",
|
|
4
4
|
"description": "Locking Module for Medusa",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"orm:cache:clear": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts MIKRO_ORM_ALLOW_GLOBAL_CLI=true medusa-mikro-orm cache:clear"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@medusajs/framework": "2.22.
|
|
43
|
-
"@medusajs/test-utils": "2.22.
|
|
42
|
+
"@medusajs/framework": "2.22.1",
|
|
43
|
+
"@medusajs/test-utils": "2.22.1"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@medusajs/framework": "2.22.
|
|
46
|
+
"@medusajs/framework": "2.22.1"
|
|
47
47
|
}
|
|
48
48
|
}
|