@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.
Files changed (64) hide show
  1. package/dist/commands/develop.d.ts.map +1 -1
  2. package/dist/commands/develop.js +82 -20
  3. package/dist/commands/develop.js.map +1 -1
  4. package/dist/commands/start.d.ts +5 -1
  5. package/dist/commands/start.d.ts.map +1 -1
  6. package/dist/commands/start.js +34 -3
  7. package/dist/commands/start.js.map +1 -1
  8. package/dist/commands/utils/dev-server/errors.d.ts +5 -0
  9. package/dist/commands/utils/dev-server/errors.d.ts.map +1 -0
  10. package/dist/commands/utils/dev-server/errors.js +14 -0
  11. package/dist/commands/utils/dev-server/errors.js.map +1 -0
  12. package/dist/commands/utils/dev-server/index.d.ts +7 -0
  13. package/dist/commands/utils/dev-server/index.d.ts.map +1 -0
  14. package/dist/commands/utils/dev-server/index.js +66 -0
  15. package/dist/commands/utils/dev-server/index.js.map +1 -0
  16. package/dist/commands/utils/dev-server/module-cache-manager.d.ts +50 -0
  17. package/dist/commands/utils/dev-server/module-cache-manager.d.ts.map +1 -0
  18. package/dist/commands/utils/dev-server/module-cache-manager.js +135 -0
  19. package/dist/commands/utils/dev-server/module-cache-manager.js.map +1 -0
  20. package/dist/commands/utils/dev-server/recovery-service.d.ts +27 -0
  21. package/dist/commands/utils/dev-server/recovery-service.d.ts.map +1 -0
  22. package/dist/commands/utils/dev-server/recovery-service.js +73 -0
  23. package/dist/commands/utils/dev-server/recovery-service.js.map +1 -0
  24. package/dist/commands/utils/dev-server/reloaders/base.d.ts +20 -0
  25. package/dist/commands/utils/dev-server/reloaders/base.d.ts.map +1 -0
  26. package/dist/commands/utils/dev-server/reloaders/base.js +33 -0
  27. package/dist/commands/utils/dev-server/reloaders/base.js.map +1 -0
  28. package/dist/commands/utils/dev-server/reloaders/jobs.d.ts +29 -0
  29. package/dist/commands/utils/dev-server/reloaders/jobs.d.ts.map +1 -0
  30. package/dist/commands/utils/dev-server/reloaders/jobs.js +77 -0
  31. package/dist/commands/utils/dev-server/reloaders/jobs.js.map +1 -0
  32. package/dist/commands/utils/dev-server/reloaders/modules.d.ts +41 -0
  33. package/dist/commands/utils/dev-server/reloaders/modules.d.ts.map +1 -0
  34. package/dist/commands/utils/dev-server/reloaders/modules.js +190 -0
  35. package/dist/commands/utils/dev-server/reloaders/modules.js.map +1 -0
  36. package/dist/commands/utils/dev-server/reloaders/routes.d.ts +23 -0
  37. package/dist/commands/utils/dev-server/reloaders/routes.d.ts.map +1 -0
  38. package/dist/commands/utils/dev-server/reloaders/routes.js +60 -0
  39. package/dist/commands/utils/dev-server/reloaders/routes.js.map +1 -0
  40. package/dist/commands/utils/dev-server/reloaders/subscribers.d.ts +31 -0
  41. package/dist/commands/utils/dev-server/reloaders/subscribers.d.ts.map +1 -0
  42. package/dist/commands/utils/dev-server/reloaders/subscribers.js +111 -0
  43. package/dist/commands/utils/dev-server/reloaders/subscribers.js.map +1 -0
  44. package/dist/commands/utils/dev-server/reloaders/workflows.d.ts +40 -0
  45. package/dist/commands/utils/dev-server/reloaders/workflows.d.ts.map +1 -0
  46. package/dist/commands/utils/dev-server/reloaders/workflows.js +129 -0
  47. package/dist/commands/utils/dev-server/reloaders/workflows.js.map +1 -0
  48. package/dist/commands/utils/dev-server/resource-registry.d.ts +12 -0
  49. package/dist/commands/utils/dev-server/resource-registry.d.ts.map +1 -0
  50. package/dist/commands/utils/dev-server/resource-registry.js +20 -0
  51. package/dist/commands/utils/dev-server/resource-registry.js.map +1 -0
  52. package/dist/commands/utils/dev-server/types.d.ts +52 -0
  53. package/dist/commands/utils/dev-server/types.d.ts.map +1 -0
  54. package/dist/commands/utils/dev-server/types.js +17 -0
  55. package/dist/commands/utils/dev-server/types.js.map +1 -0
  56. package/dist/feature-flags/backend-hmr.d.ts +4 -0
  57. package/dist/feature-flags/backend-hmr.d.ts.map +1 -0
  58. package/dist/feature-flags/backend-hmr.js +12 -0
  59. package/dist/feature-flags/backend-hmr.js.map +1 -0
  60. package/dist/loaders/api.d.ts.map +1 -1
  61. package/dist/loaders/api.js +6 -0
  62. package/dist/loaders/api.js.map +1 -1
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. 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"}