@medusajs/medusa 2.12.2-snapshot-20251203100938 → 2.12.2-snapshot-20251203150309
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/commands/develop.d.ts.map +1 -1
- package/dist/commands/develop.js +82 -20
- package/dist/commands/develop.js.map +1 -1
- package/dist/commands/start.d.ts +5 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +34 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/utils/dev-server/errors.d.ts +5 -0
- package/dist/commands/utils/dev-server/errors.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/errors.js +14 -0
- package/dist/commands/utils/dev-server/errors.js.map +1 -0
- package/dist/commands/utils/dev-server/index.d.ts +7 -0
- package/dist/commands/utils/dev-server/index.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/index.js +66 -0
- package/dist/commands/utils/dev-server/index.js.map +1 -0
- package/dist/commands/utils/dev-server/module-cache-manager.d.ts +50 -0
- package/dist/commands/utils/dev-server/module-cache-manager.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/module-cache-manager.js +135 -0
- package/dist/commands/utils/dev-server/module-cache-manager.js.map +1 -0
- package/dist/commands/utils/dev-server/recovery-service.d.ts +27 -0
- package/dist/commands/utils/dev-server/recovery-service.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/recovery-service.js +73 -0
- package/dist/commands/utils/dev-server/recovery-service.js.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/base.d.ts +20 -0
- package/dist/commands/utils/dev-server/reloaders/base.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/base.js +33 -0
- package/dist/commands/utils/dev-server/reloaders/base.js.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/jobs.d.ts +29 -0
- package/dist/commands/utils/dev-server/reloaders/jobs.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/jobs.js +77 -0
- package/dist/commands/utils/dev-server/reloaders/jobs.js.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/modules.d.ts +41 -0
- package/dist/commands/utils/dev-server/reloaders/modules.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/modules.js +190 -0
- package/dist/commands/utils/dev-server/reloaders/modules.js.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/routes.d.ts +23 -0
- package/dist/commands/utils/dev-server/reloaders/routes.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/routes.js +60 -0
- package/dist/commands/utils/dev-server/reloaders/routes.js.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/subscribers.d.ts +31 -0
- package/dist/commands/utils/dev-server/reloaders/subscribers.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/subscribers.js +111 -0
- package/dist/commands/utils/dev-server/reloaders/subscribers.js.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/workflows.d.ts +40 -0
- package/dist/commands/utils/dev-server/reloaders/workflows.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/reloaders/workflows.js +129 -0
- package/dist/commands/utils/dev-server/reloaders/workflows.js.map +1 -0
- package/dist/commands/utils/dev-server/resource-registry.d.ts +12 -0
- package/dist/commands/utils/dev-server/resource-registry.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/resource-registry.js +20 -0
- package/dist/commands/utils/dev-server/resource-registry.js.map +1 -0
- package/dist/commands/utils/dev-server/types.d.ts +52 -0
- package/dist/commands/utils/dev-server/types.d.ts.map +1 -0
- package/dist/commands/utils/dev-server/types.js +17 -0
- package/dist/commands/utils/dev-server/types.js.map +1 -0
- package/dist/feature-flags/backend-hmr.d.ts +4 -0
- package/dist/feature-flags/backend-hmr.d.ts.map +1 -0
- package/dist/feature-flags/backend-hmr.js +12 -0
- package/dist/feature-flags/backend-hmr.js.map +1 -0
- package/dist/loaders/api.d.ts.map +1 -1
- package/dist/loaders/api.js +6 -0
- package/dist/loaders/api.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +54 -54
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-cache-manager.js","sourceRoot":"","sources":["../../../../src/commands/utils/dev-server/module-cache-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Logger } from "@medusajs/framework/types";
|
|
2
|
+
import { ModuleCacheManager } from "./module-cache-manager";
|
|
3
|
+
import { ReloadParams } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* Handles recovery of broken modules after dependencies are restored
|
|
6
|
+
*/
|
|
7
|
+
export declare class RecoveryService {
|
|
8
|
+
private cacheManager;
|
|
9
|
+
private reloadResources;
|
|
10
|
+
private logSource;
|
|
11
|
+
private logger;
|
|
12
|
+
private rootDirectory;
|
|
13
|
+
constructor(cacheManager: ModuleCacheManager, reloadResources: (params: ReloadParams) => Promise<void>, logSource: string, logger: Logger, rootDirectory: string);
|
|
14
|
+
/**
|
|
15
|
+
* Attempt to recover all broken modules
|
|
16
|
+
*/
|
|
17
|
+
recoverBrokenModules(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Attempt to recover a single broken module
|
|
20
|
+
*/
|
|
21
|
+
private attemptModuleRecovery;
|
|
22
|
+
/**
|
|
23
|
+
* Log final recovery results
|
|
24
|
+
*/
|
|
25
|
+
private logRecoveryResults;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=recovery-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery-service.d.ts","sourceRoot":"","sources":["../../../../src/commands/utils/dev-server/recovery-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;gBAJb,YAAY,EAAE,kBAAkB,EAChC,eAAe,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,EACxD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM;IAG/B;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3C;;OAEG;YACW,qBAAqB;IA6BnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAa3B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RecoveryService = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
/**
|
|
9
|
+
* Handles recovery of broken modules after dependencies are restored
|
|
10
|
+
*/
|
|
11
|
+
class RecoveryService {
|
|
12
|
+
constructor(cacheManager, reloadResources, logSource, logger, rootDirectory) {
|
|
13
|
+
this.cacheManager = cacheManager;
|
|
14
|
+
this.reloadResources = reloadResources;
|
|
15
|
+
this.logSource = logSource;
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.rootDirectory = rootDirectory;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Attempt to recover all broken modules
|
|
21
|
+
*/
|
|
22
|
+
async recoverBrokenModules() {
|
|
23
|
+
const brokenCount = this.cacheManager.getBrokenModuleCount();
|
|
24
|
+
if (!brokenCount) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.logger.info(`${this.logSource} Attempting to recover ${brokenCount} broken module(s)`);
|
|
28
|
+
const brokenModules = this.cacheManager.getBrokenModules();
|
|
29
|
+
for (const modulePath of brokenModules) {
|
|
30
|
+
await this.attemptModuleRecovery(modulePath);
|
|
31
|
+
}
|
|
32
|
+
this.logRecoveryResults();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Attempt to recover a single broken module
|
|
36
|
+
*/
|
|
37
|
+
async attemptModuleRecovery(modulePath) {
|
|
38
|
+
this.cacheManager.clearSingleModule(modulePath);
|
|
39
|
+
const relativePath = path_1.default.relative(process.cwd(), modulePath);
|
|
40
|
+
this.logger.info(`${this.logSource} Attempting to reload: ${relativePath}`);
|
|
41
|
+
try {
|
|
42
|
+
// Attempt reload with skipRecovery=true to prevent infinite recursion
|
|
43
|
+
await this.reloadResources({
|
|
44
|
+
logSource: this.logSource,
|
|
45
|
+
action: "change",
|
|
46
|
+
absoluteFilePath: modulePath,
|
|
47
|
+
keepCache: false,
|
|
48
|
+
logger: this.logger,
|
|
49
|
+
skipRecovery: true,
|
|
50
|
+
rootDirectory: this.rootDirectory,
|
|
51
|
+
});
|
|
52
|
+
this.cacheManager.removeBrokenModule(modulePath);
|
|
53
|
+
this.logger.info(`${this.logSource} Successfully recovered: ${relativePath}`);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
this.logger.debug(`${this.logSource} Could not recover ${relativePath}: ${error}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Log final recovery results
|
|
61
|
+
*/
|
|
62
|
+
logRecoveryResults() {
|
|
63
|
+
const remainingBroken = this.cacheManager.getBrokenModuleCount();
|
|
64
|
+
if (remainingBroken) {
|
|
65
|
+
this.logger.debug(`${this.logSource} ${remainingBroken} module(s) remain broken. They may recover when additional dependencies are restored.`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.logger.info(`${this.logSource} All broken modules successfully recovered`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.RecoveryService = RecoveryService;
|
|
73
|
+
//# sourceMappingURL=recovery-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery-service.js","sourceRoot":"","sources":["../../../../src/commands/utils/dev-server/recovery-service.ts"],"names":[],"mappings":";;;;;;AAEA,gDAAuB;AAGvB;;GAEG;AACH,MAAa,eAAe;IAC1B,YACU,YAAgC,EAChC,eAAwD,EACxD,SAAiB,EACjB,MAAc,EACd,aAAqB;QAJrB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,oBAAe,GAAf,eAAe,CAAyC;QACxD,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,kBAAa,GAAb,aAAa,CAAQ;IAC5B,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAA;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,SAAS,0BAA0B,WAAW,mBAAmB,CAC1E,CAAA;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAA;QAE1D,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,UAAkB;QACpD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAE/C,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,0BAA0B,YAAY,EAAE,CAAC,CAAA;QAE3E,IAAI,CAAC;YACH,sEAAsE;YACtE,MAAM,IAAI,CAAC,eAAe,CAAC;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,QAAQ;gBAChB,gBAAgB,EAAE,UAAU;gBAC5B,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC,CAAC,CAAA;YAEF,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,SAAS,4BAA4B,YAAY,EAAE,CAC5D,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,GAAG,IAAI,CAAC,SAAS,sBAAsB,YAAY,KAAK,KAAK,EAAE,CAChE,CAAA;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAA;QAEhE,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,GAAG,IAAI,CAAC,SAAS,IAAI,eAAe,uFAAuF,CAC5H,CAAA;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,SAAS,4CAA4C,CAC9D,CAAA;QACH,CAAC;IACH,CAAC;CACF;AA/ED,0CA+EC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Logger } from "@medusajs/framework/types";
|
|
2
|
+
import { ModuleCacheManager } from "../module-cache-manager";
|
|
3
|
+
import { FileChangeAction } from "../types";
|
|
4
|
+
export declare class BaseReloader {
|
|
5
|
+
private readonly cacheManager;
|
|
6
|
+
private readonly logSource;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(cacheManager: ModuleCacheManager, logSource: string, logger: Logger);
|
|
9
|
+
clearModuleCache(absoluteFilePath: string): void;
|
|
10
|
+
clearParentChildModulesCache(absoluteFilePath: string, reloaders: Array<() => Promise<void>>, reloadResources: (args: {
|
|
11
|
+
logSource: string;
|
|
12
|
+
action: FileChangeAction;
|
|
13
|
+
absoluteFilePath: string;
|
|
14
|
+
keepCache: boolean;
|
|
15
|
+
skipRecovery: boolean;
|
|
16
|
+
logger: Logger;
|
|
17
|
+
rootDirectory: string;
|
|
18
|
+
}) => Promise<void>, skipRecovery: boolean, rootDirectory: string): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/commands/utils/dev-server/reloaders/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,YAAY,EAAE,kBAAkB,EAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM;IAGjC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM;IAOnC,4BAA4B,CAChC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EACrC,eAAe,EAAE,CAAC,IAAI,EAAE;QACtB,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,gBAAgB,CAAA;QACxB,gBAAgB,EAAE,MAAM,CAAA;QACxB,SAAS,EAAE,OAAO,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,MAAM,EAAE,MAAM,CAAA;QACd,aAAa,EAAE,MAAM,CAAA;KACtB,KAAK,OAAO,CAAC,IAAI,CAAC,EACnB,YAAY,EAAE,OAAO,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;CAqBjB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseReloader = void 0;
|
|
4
|
+
class BaseReloader {
|
|
5
|
+
constructor(cacheManager, logSource, logger) {
|
|
6
|
+
this.cacheManager = cacheManager;
|
|
7
|
+
this.logSource = logSource;
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
}
|
|
10
|
+
clearModuleCache(absoluteFilePath) {
|
|
11
|
+
const resolved = require.resolve(absoluteFilePath);
|
|
12
|
+
if (require.cache[resolved]) {
|
|
13
|
+
delete require.cache[resolved];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
async clearParentChildModulesCache(absoluteFilePath, reloaders, reloadResources, skipRecovery, rootDirectory) {
|
|
17
|
+
await this.cacheManager.clear(absoluteFilePath, this.logger, async (modulePath) => {
|
|
18
|
+
// Create deferred reloader for each cleared module
|
|
19
|
+
reloaders.push(async () => reloadResources({
|
|
20
|
+
logSource: this.logSource,
|
|
21
|
+
action: "change",
|
|
22
|
+
absoluteFilePath: modulePath,
|
|
23
|
+
keepCache: true,
|
|
24
|
+
skipRecovery: true, // handled by the main caller
|
|
25
|
+
logger: this.logger,
|
|
26
|
+
rootDirectory,
|
|
27
|
+
}));
|
|
28
|
+
}, !skipRecovery // Track broken modules unless we're in recovery mode
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.BaseReloader = BaseReloader;
|
|
33
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/commands/utils/dev-server/reloaders/base.ts"],"names":[],"mappings":";;;AAIA,MAAa,YAAY;IACvB,YACmB,YAAgC,EAChC,SAAiB,EACjB,MAAc;QAFd,iBAAY,GAAZ,YAAY,CAAoB;QAChC,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,gBAAgB,CAAC,gBAAwB;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAClD,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,gBAAwB,EACxB,SAAqC,EACrC,eAQmB,EACnB,YAAqB,EACrB,aAAqB;QAErB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAC3B,gBAAgB,EAChB,IAAI,CAAC,MAAM,EACX,KAAK,EAAE,UAAU,EAAE,EAAE;YACnB,mDAAmD;YACnD,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CACxB,eAAe,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,QAAQ;gBAChB,gBAAgB,EAAE,UAAU;gBAC5B,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,IAAI,EAAE,6BAA6B;gBACjD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,aAAa;aACd,CAAC,CACH,CAAA;QACH,CAAC,EACD,CAAC,YAAY,CAAC,qDAAqD;SACpE,CAAA;IACH,CAAC;CACF;AAjDD,oCAiDC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Logger, MedusaContainer } from "@medusajs/framework/types";
|
|
2
|
+
import { ModuleCacheManager } from "../module-cache-manager";
|
|
3
|
+
import { ResourceRegistry } from "../resource-registry";
|
|
4
|
+
import { DevServerGlobals, FileChangeAction } from "../types";
|
|
5
|
+
import { BaseReloader } from "./base";
|
|
6
|
+
export declare class JobReloader extends BaseReloader {
|
|
7
|
+
#private;
|
|
8
|
+
private workflowManager;
|
|
9
|
+
private container;
|
|
10
|
+
private registry;
|
|
11
|
+
constructor(workflowManager: DevServerGlobals["WorkflowManager"], cacheManager: ModuleCacheManager, container: MedusaContainer, registry: ResourceRegistry, logSource: string, logger: Logger);
|
|
12
|
+
/**
|
|
13
|
+
* Check if a file path represents a subscriber
|
|
14
|
+
*/
|
|
15
|
+
private isJobPath;
|
|
16
|
+
/**
|
|
17
|
+
* Unregister a subscriber from the event-bus
|
|
18
|
+
*/
|
|
19
|
+
private unregisterJob;
|
|
20
|
+
/**
|
|
21
|
+
* Register a subscriber by loading the file and extracting its metadata
|
|
22
|
+
*/
|
|
23
|
+
private registerJob;
|
|
24
|
+
/**
|
|
25
|
+
* Reload a subscriber file if necessary
|
|
26
|
+
*/
|
|
27
|
+
reload(action: FileChangeAction, absoluteFilePath: string): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../../../src/commands/utils/dev-server/reloaders/jobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAU,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAUrC,qBAAa,WAAY,SAAQ,YAAY;;IAKzC,OAAO,CAAC,eAAe;IAEvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;gBAHR,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,EAC5D,YAAY,EAAE,kBAAkB,EACxB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM;IAOhB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;YACW,WAAW;IAMzB;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;CAsBjB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _JobReloader_logSource, _JobReloader_logger;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.JobReloader = void 0;
|
|
16
|
+
const jobs_1 = require("@medusajs/framework/jobs");
|
|
17
|
+
const types_1 = require("../types");
|
|
18
|
+
const base_1 = require("./base");
|
|
19
|
+
class JobReloader extends base_1.BaseReloader {
|
|
20
|
+
constructor(workflowManager, cacheManager, container, registry, logSource, logger) {
|
|
21
|
+
super(cacheManager, logSource, logger);
|
|
22
|
+
this.workflowManager = workflowManager;
|
|
23
|
+
this.container = container;
|
|
24
|
+
this.registry = registry;
|
|
25
|
+
_JobReloader_logSource.set(this, void 0);
|
|
26
|
+
_JobReloader_logger.set(this, void 0);
|
|
27
|
+
__classPrivateFieldSet(this, _JobReloader_logSource, logSource, "f");
|
|
28
|
+
__classPrivateFieldSet(this, _JobReloader_logger, logger, "f");
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if a file path represents a subscriber
|
|
32
|
+
*/
|
|
33
|
+
isJobPath(filePath) {
|
|
34
|
+
return filePath.includes(types_1.CONFIG.RESOURCE_PATH_PATTERNS.job);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Unregister a subscriber from the event-bus
|
|
38
|
+
*/
|
|
39
|
+
unregisterJob(metadata) {
|
|
40
|
+
this.workflowManager?.unregister(metadata.name);
|
|
41
|
+
__classPrivateFieldGet(this, _JobReloader_logger, "f").debug(`${__classPrivateFieldGet(this, _JobReloader_logSource, "f")} Unregistered job ${metadata.name}`);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Register a subscriber by loading the file and extracting its metadata
|
|
45
|
+
*/
|
|
46
|
+
async registerJob(absoluteFilePath) {
|
|
47
|
+
const jobLoader = new jobs_1.JobLoader([], this.container);
|
|
48
|
+
await jobLoader.loadFile(absoluteFilePath);
|
|
49
|
+
__classPrivateFieldGet(this, _JobReloader_logger, "f").debug(`${__classPrivateFieldGet(this, _JobReloader_logSource, "f")} Registered job ${absoluteFilePath}`);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Reload a subscriber file if necessary
|
|
53
|
+
*/
|
|
54
|
+
async reload(action, absoluteFilePath) {
|
|
55
|
+
if (!this.isJobPath(absoluteFilePath)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const existingResources = this.registry.getResources(absoluteFilePath);
|
|
59
|
+
if (existingResources) {
|
|
60
|
+
for (const [_, resources] of existingResources) {
|
|
61
|
+
for (const resource of resources) {
|
|
62
|
+
this.unregisterJob({
|
|
63
|
+
name: resource.id,
|
|
64
|
+
config: resource.config,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (action === "add" || action === "change") {
|
|
70
|
+
this.clearModuleCache(absoluteFilePath);
|
|
71
|
+
await this.registerJob(absoluteFilePath);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.JobReloader = JobReloader;
|
|
76
|
+
_JobReloader_logSource = new WeakMap(), _JobReloader_logger = new WeakMap();
|
|
77
|
+
//# sourceMappingURL=jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../../../src/commands/utils/dev-server/reloaders/jobs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAoD;AAIpD,oCAAqE;AACrE,iCAAqC;AAUrC,MAAa,WAAY,SAAQ,mBAAY;IAI3C,YACU,eAAoD,EAC5D,YAAgC,EACxB,SAA0B,EAC1B,QAA0B,EAClC,SAAiB,EACjB,MAAc;QAEd,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAP9B,oBAAe,GAAf,eAAe,CAAqC;QAEpD,cAAS,GAAT,SAAS,CAAiB;QAC1B,aAAQ,GAAR,QAAQ,CAAkB;QAPpC,yCAAkB;QAClB,sCAAe;QAWb,uBAAA,IAAI,0BAAc,SAAS,MAAA,CAAA;QAC3B,uBAAA,IAAI,uBAAW,MAAM,MAAA,CAAA;IACvB,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,QAAgB;QAChC,OAAO,QAAQ,CAAC,QAAQ,CAAC,cAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC7D,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,QAAqB;QACzC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC/C,uBAAA,IAAI,2BAAQ,CAAC,KAAK,CAAC,GAAG,uBAAA,IAAI,8BAAW,qBAAqB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,gBAAwB;QAChD,MAAM,SAAS,GAAG,IAAI,gBAAS,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACnD,MAAM,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAC1C,uBAAA,IAAI,2BAAQ,CAAC,KAAK,CAAC,GAAG,uBAAA,IAAI,8BAAW,mBAAmB,gBAAgB,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,MAAwB,EACxB,gBAAwB;QAExB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAA;QACtE,IAAI,iBAAiB,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAC/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,IAAI,CAAC,aAAa,CAAC;wBACjB,IAAI,EAAE,QAAQ,CAAC,EAAE;wBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;qBACxB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;YACvC,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;CACF;AArED,kCAqEC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Logger } from "@medusajs/framework/types";
|
|
2
|
+
import { ModuleCacheManager } from "../module-cache-manager";
|
|
3
|
+
import { FileChangeAction } from "../types";
|
|
4
|
+
import { BaseReloader } from "./base";
|
|
5
|
+
/**
|
|
6
|
+
* Handles hot reloading of custom modules in the /modules directory
|
|
7
|
+
*/
|
|
8
|
+
export declare class ModuleReloader extends BaseReloader {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(cacheManager: ModuleCacheManager, rootDirectory: string, logSource: string, logger: Logger);
|
|
11
|
+
/**
|
|
12
|
+
* Check if a file path is within a module directory
|
|
13
|
+
*/
|
|
14
|
+
private isModulePath;
|
|
15
|
+
/**
|
|
16
|
+
* Extract module name from file path
|
|
17
|
+
* e.g., "/path/to/project/modules/contact-us/service.ts" -> "contact-us"
|
|
18
|
+
*/
|
|
19
|
+
private getModuleNameFromPath;
|
|
20
|
+
/**
|
|
21
|
+
* Get the module directory path
|
|
22
|
+
*/
|
|
23
|
+
private getModuleDirectory;
|
|
24
|
+
/**
|
|
25
|
+
* Get module key and service name from config
|
|
26
|
+
*/
|
|
27
|
+
private getModuleInfo;
|
|
28
|
+
/**
|
|
29
|
+
* Shutdown a module instance by calling its lifecycle hooks
|
|
30
|
+
*/
|
|
31
|
+
private shutdownModule;
|
|
32
|
+
/**
|
|
33
|
+
* Clear all module files from require cache
|
|
34
|
+
*/
|
|
35
|
+
private clearModuleFilesCache;
|
|
36
|
+
/**
|
|
37
|
+
* Reload a module when its files change
|
|
38
|
+
*/
|
|
39
|
+
reload(action: FileChangeAction, absoluteFilePath: string): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=modules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../../../src/commands/utils/dev-server/reloaders/modules.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAU,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAGrC;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;;gBAM5C,YAAY,EAAE,kBAAkB,EAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM;IAQhB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;YACW,aAAa;IAyD3B;;OAEG;YACW,cAAc;IAoB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;CA2FjB"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _ModuleReloader_logSource, _ModuleReloader_logger, _ModuleReloader_rootDirectory;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ModuleReloader = void 0;
|
|
16
|
+
const framework_1 = require("@medusajs/framework");
|
|
17
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
18
|
+
const path_1 = require("path");
|
|
19
|
+
const types_1 = require("../types");
|
|
20
|
+
const base_1 = require("./base");
|
|
21
|
+
const errors_1 = require("../errors");
|
|
22
|
+
/**
|
|
23
|
+
* Handles hot reloading of custom modules in the /modules directory
|
|
24
|
+
*/
|
|
25
|
+
class ModuleReloader extends base_1.BaseReloader {
|
|
26
|
+
constructor(cacheManager, rootDirectory, logSource, logger) {
|
|
27
|
+
super(cacheManager, logSource, logger);
|
|
28
|
+
_ModuleReloader_logSource.set(this, void 0);
|
|
29
|
+
_ModuleReloader_logger.set(this, void 0);
|
|
30
|
+
_ModuleReloader_rootDirectory.set(this, void 0);
|
|
31
|
+
__classPrivateFieldSet(this, _ModuleReloader_logSource, logSource, "f");
|
|
32
|
+
__classPrivateFieldSet(this, _ModuleReloader_logger, logger, "f");
|
|
33
|
+
__classPrivateFieldSet(this, _ModuleReloader_rootDirectory, rootDirectory, "f");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if a file path is within a module directory
|
|
37
|
+
*/
|
|
38
|
+
isModulePath(filePath) {
|
|
39
|
+
return filePath.includes("modules/");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Extract module name from file path
|
|
43
|
+
* e.g., "/path/to/project/modules/contact-us/service.ts" -> "contact-us"
|
|
44
|
+
*/
|
|
45
|
+
getModuleNameFromPath(filePath) {
|
|
46
|
+
const modulesPattern = "modules/";
|
|
47
|
+
const parts = filePath.split(modulesPattern);
|
|
48
|
+
if (parts.length < 2) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const afterModules = parts[1];
|
|
52
|
+
const moduleName = afterModules.split("/")[0];
|
|
53
|
+
return moduleName || null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get the module directory path
|
|
57
|
+
*/
|
|
58
|
+
getModuleDirectory(moduleName) {
|
|
59
|
+
return (0, path_1.join)(__classPrivateFieldGet(this, _ModuleReloader_rootDirectory, "f"), "src", "modules", moduleName);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get module key and service name from config
|
|
63
|
+
*/
|
|
64
|
+
async getModuleInfo(moduleName) {
|
|
65
|
+
try {
|
|
66
|
+
const configModule = framework_1.container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
67
|
+
if (!configModule?.modules) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
// Find the module in config
|
|
71
|
+
for (const [key, config] of Object.entries(configModule.modules)) {
|
|
72
|
+
if (typeof config === "object" && config !== null) {
|
|
73
|
+
const resolvedPath = config.resolve;
|
|
74
|
+
if (resolvedPath &&
|
|
75
|
+
(resolvedPath.includes(`/modules/${moduleName}`) ||
|
|
76
|
+
resolvedPath === `./modules/${moduleName}`)) {
|
|
77
|
+
// Load the module to get serviceName from joinerConfig
|
|
78
|
+
const moduleDirectory = this.getModuleDirectory(moduleName);
|
|
79
|
+
const moduleIndexPath = (0, path_1.join)(moduleDirectory, "index.ts");
|
|
80
|
+
const moduleExports = await (0, utils_1.dynamicImport)(moduleIndexPath);
|
|
81
|
+
const moduleService = moduleExports.service ?? moduleExports.default?.service;
|
|
82
|
+
const joinerConfig = typeof moduleService?.prototype?.__joinerConfig === "function"
|
|
83
|
+
? moduleService.prototype.__joinerConfig()
|
|
84
|
+
: moduleService?.prototype?.__joinerConfig;
|
|
85
|
+
if (!joinerConfig?.serviceName) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
moduleKey: key,
|
|
90
|
+
serviceName: joinerConfig.serviceName,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").warn(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Failed to get module info for "${moduleName}": ${error.message}`);
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Shutdown a module instance by calling its lifecycle hooks
|
|
104
|
+
*/
|
|
105
|
+
async shutdownModule(moduleInstance) {
|
|
106
|
+
try {
|
|
107
|
+
if (moduleInstance?.__hooks?.onApplicationPrepareShutdown) {
|
|
108
|
+
await moduleInstance.__hooks.onApplicationPrepareShutdown
|
|
109
|
+
.bind(moduleInstance)()
|
|
110
|
+
.catch(() => { });
|
|
111
|
+
}
|
|
112
|
+
if (moduleInstance?.__hooks?.onApplicationShutdown) {
|
|
113
|
+
await moduleInstance.__hooks.onApplicationShutdown
|
|
114
|
+
.bind(moduleInstance)()
|
|
115
|
+
.catch(() => { });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").warn(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Error during module shutdown: ${error.message}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Clear all module files from require cache
|
|
124
|
+
*/
|
|
125
|
+
clearModuleFilesCache(moduleDirectory) {
|
|
126
|
+
const relativeModuleDirectory = (0, path_1.relative)(__classPrivateFieldGet(this, _ModuleReloader_rootDirectory, "f"), moduleDirectory);
|
|
127
|
+
Object.keys(require.cache).forEach((cachedPath) => {
|
|
128
|
+
if (!types_1.CONFIG.EXCLUDED_PATH_PATTERNS.some((pattern) => cachedPath.includes(pattern)) &&
|
|
129
|
+
cachedPath.includes(relativeModuleDirectory)) {
|
|
130
|
+
delete require.cache[cachedPath];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Reload a module when its files change
|
|
136
|
+
*/
|
|
137
|
+
async reload(action, absoluteFilePath) {
|
|
138
|
+
if (!this.isModulePath(absoluteFilePath)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const moduleName = this.getModuleNameFromPath(absoluteFilePath);
|
|
142
|
+
if (!moduleName) {
|
|
143
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").warn(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Could not determine module name from path: ${absoluteFilePath}`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const relativePath = (0, path_1.relative)(__classPrivateFieldGet(this, _ModuleReloader_rootDirectory, "f"), absoluteFilePath);
|
|
147
|
+
if (action === "unlink") {
|
|
148
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").warn(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Module file removed: ${relativePath}. Server restart may be required.`);
|
|
149
|
+
throw new errors_1.HMRReloadError(`Module file removed: ${relativePath}. Server restart may be required.`);
|
|
150
|
+
}
|
|
151
|
+
if (absoluteFilePath.includes("migrations")) {
|
|
152
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").warn(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Migrations file changed: ${relativePath}. You may need to apply migrations and restart the server.`);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
// Get the module information
|
|
156
|
+
const moduleInfo = await this.getModuleInfo(moduleName);
|
|
157
|
+
if (!moduleInfo) {
|
|
158
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").warn(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Could not find module config for: ${moduleName}`);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const { moduleKey, serviceName } = moduleInfo;
|
|
162
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").info(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Reloading module "${serviceName}" (${moduleName}) due to change in ${relativePath}`);
|
|
163
|
+
try {
|
|
164
|
+
// Get the current module instance
|
|
165
|
+
const moduleInstance = framework_1.container.resolve(serviceName);
|
|
166
|
+
if (moduleInstance) {
|
|
167
|
+
// Shutdown the module
|
|
168
|
+
await this.shutdownModule(moduleInstance);
|
|
169
|
+
}
|
|
170
|
+
const moduleDirectory = this.getModuleDirectory(moduleName);
|
|
171
|
+
this.clearModuleFilesCache(moduleDirectory);
|
|
172
|
+
const medusaAppLoader = new framework_1.MedusaAppLoader();
|
|
173
|
+
const newModuleInstance = (await medusaAppLoader.reloadSingleModule({
|
|
174
|
+
moduleKey,
|
|
175
|
+
serviceName,
|
|
176
|
+
}));
|
|
177
|
+
if (!newModuleInstance) {
|
|
178
|
+
throw new Error(`Failed to reload module "${moduleKey}"`);
|
|
179
|
+
}
|
|
180
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").info(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Successfully reloaded module "${serviceName}"`);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
__classPrivateFieldGet(this, _ModuleReloader_logger, "f").error(`${__classPrivateFieldGet(this, _ModuleReloader_logSource, "f")} Failed to reload module "${serviceName}": ${error.message}`);
|
|
184
|
+
throw new errors_1.HMRReloadError(`Failed to reload module "${serviceName}": ${error.message}. Server restart may be required.`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.ModuleReloader = ModuleReloader;
|
|
189
|
+
_ModuleReloader_logSource = new WeakMap(), _ModuleReloader_logger = new WeakMap(), _ModuleReloader_rootDirectory = new WeakMap();
|
|
190
|
+
//# sourceMappingURL=modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../../../src/commands/utils/dev-server/reloaders/modules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ApiLoader } from "@medusajs/framework";
|
|
2
|
+
import { Logger } from "@medusajs/framework/types";
|
|
3
|
+
import { FileChangeAction } from "../types";
|
|
4
|
+
import { ModuleCacheManager } from "../module-cache-manager";
|
|
5
|
+
import { BaseReloader } from "./base";
|
|
6
|
+
/**
|
|
7
|
+
* Handles hot reloading of API resources (routes, middlewares, validators, etc.)
|
|
8
|
+
*/
|
|
9
|
+
export declare class RouteReloader extends BaseReloader {
|
|
10
|
+
#private;
|
|
11
|
+
private apiLoader;
|
|
12
|
+
constructor(apiLoader: ApiLoader | undefined, cacheManager: ModuleCacheManager, logSource: string, logger: Logger);
|
|
13
|
+
/**
|
|
14
|
+
* Check if a file path is in the API directory
|
|
15
|
+
*/
|
|
16
|
+
private isApiPath;
|
|
17
|
+
/**
|
|
18
|
+
* Reload ALL API resources when any API file changes
|
|
19
|
+
* This clears all Express routes/middleware and reloads everything from scratch
|
|
20
|
+
*/
|
|
21
|
+
reload(_action: FileChangeAction, absoluteFilePath: string): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../../src/commands/utils/dev-server/reloaders/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAU,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;;IAM3C,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS,GAAG,SAAS,EACxC,YAAY,EAAE,kBAAkB,EAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM;IAQhB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;OAGG;IACG,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;CA4BjB"}
|