@warlock.js/core 3.0.40 → 4.0.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.
Files changed (327) hide show
  1. package/cjs/code-quality/config.js +1 -7
  2. package/cjs/code-quality/config.js.map +1 -1
  3. package/cjs/code-quality/issue-tracker.js +1 -119
  4. package/cjs/code-quality/issue-tracker.js.map +1 -1
  5. package/cjs/dev2-server/config-handlers.d.ts +8 -0
  6. package/cjs/dev2-server/config-handlers.d.ts.map +1 -0
  7. package/cjs/dev2-server/config-handlers.js +56 -0
  8. package/cjs/dev2-server/config-handlers.js.map +1 -0
  9. package/cjs/dev2-server/config-loader.d.ts +61 -0
  10. package/cjs/dev2-server/config-loader.d.ts.map +1 -0
  11. package/cjs/dev2-server/config-loader.js +117 -0
  12. package/cjs/dev2-server/config-loader.js.map +1 -0
  13. package/cjs/dev2-server/connectors/base-connector.d.ts +49 -0
  14. package/cjs/dev2-server/connectors/base-connector.d.ts.map +1 -0
  15. package/cjs/dev2-server/connectors/base-connector.js +48 -0
  16. package/cjs/dev2-server/connectors/base-connector.js.map +1 -0
  17. package/cjs/dev2-server/connectors/cache-connector.d.ts +23 -0
  18. package/cjs/dev2-server/connectors/cache-connector.d.ts.map +1 -0
  19. package/cjs/dev2-server/connectors/cache-connector.js +35 -0
  20. package/cjs/dev2-server/connectors/cache-connector.js.map +1 -0
  21. package/cjs/dev2-server/connectors/database-connector.d.ts +23 -0
  22. package/cjs/dev2-server/connectors/database-connector.d.ts.map +1 -0
  23. package/cjs/dev2-server/connectors/database-connector.js +42 -0
  24. package/cjs/dev2-server/connectors/database-connector.js.map +1 -0
  25. package/cjs/dev2-server/connectors/http-connector.d.ts +29 -0
  26. package/cjs/dev2-server/connectors/http-connector.d.ts.map +1 -0
  27. package/cjs/dev2-server/connectors/http-connector.js +71 -0
  28. package/cjs/dev2-server/connectors/http-connector.js.map +1 -0
  29. package/cjs/dev2-server/connectors/index.d.ts +10 -0
  30. package/cjs/dev2-server/connectors/index.d.ts.map +1 -0
  31. package/cjs/dev2-server/connectors/types.d.ts +49 -0
  32. package/cjs/dev2-server/connectors/types.d.ts.map +1 -0
  33. package/cjs/dev2-server/connectors/types.js +9 -0
  34. package/cjs/dev2-server/connectors/types.js.map +1 -0
  35. package/cjs/dev2-server/dependency-graph.d.ts +86 -0
  36. package/cjs/dev2-server/dependency-graph.d.ts.map +1 -0
  37. package/cjs/dev2-server/dependency-graph.js +225 -0
  38. package/cjs/dev2-server/dependency-graph.js.map +1 -0
  39. package/cjs/dev2-server/dev-logger.d.ts +14 -0
  40. package/cjs/dev2-server/dev-logger.d.ts.map +1 -0
  41. package/cjs/dev2-server/dev-logger.js +117 -0
  42. package/cjs/dev2-server/dev-logger.js.map +1 -0
  43. package/cjs/dev2-server/development-server.d.ts +97 -0
  44. package/cjs/dev2-server/development-server.d.ts.map +1 -0
  45. package/cjs/dev2-server/development-server.js +212 -0
  46. package/cjs/dev2-server/development-server.js.map +1 -0
  47. package/cjs/dev2-server/events.d.ts +5 -0
  48. package/cjs/dev2-server/events.d.ts.map +1 -0
  49. package/cjs/dev2-server/events.js +4 -0
  50. package/cjs/dev2-server/events.js.map +1 -0
  51. package/cjs/dev2-server/file-event-handler.d.ts +58 -0
  52. package/cjs/dev2-server/file-event-handler.d.ts.map +1 -0
  53. package/cjs/dev2-server/file-event-handler.js +140 -0
  54. package/cjs/dev2-server/file-event-handler.js.map +1 -0
  55. package/cjs/dev2-server/file-manager.d.ts +110 -0
  56. package/cjs/dev2-server/file-manager.d.ts.map +1 -0
  57. package/cjs/dev2-server/file-manager.js +314 -0
  58. package/cjs/dev2-server/file-manager.js.map +1 -0
  59. package/cjs/dev2-server/file-operations.d.ts +54 -0
  60. package/cjs/dev2-server/file-operations.d.ts.map +1 -0
  61. package/cjs/dev2-server/file-operations.js +191 -0
  62. package/cjs/dev2-server/file-operations.js.map +1 -0
  63. package/cjs/dev2-server/files-orchestrator.d.ts +88 -0
  64. package/cjs/dev2-server/files-orchestrator.d.ts.map +1 -0
  65. package/cjs/dev2-server/files-orchestrator.js +271 -0
  66. package/cjs/dev2-server/files-orchestrator.js.map +1 -0
  67. package/cjs/dev2-server/files-watcher.d.ts +53 -0
  68. package/cjs/dev2-server/files-watcher.d.ts.map +1 -0
  69. package/cjs/dev2-server/files-watcher.js +88 -0
  70. package/cjs/dev2-server/files-watcher.js.map +1 -0
  71. package/cjs/dev2-server/flags.d.ts +10 -0
  72. package/cjs/dev2-server/flags.d.ts.map +1 -0
  73. package/cjs/dev2-server/flags.js +9 -0
  74. package/cjs/dev2-server/flags.js.map +1 -0
  75. package/cjs/dev2-server/health-checker.d.ts +3 -0
  76. package/cjs/dev2-server/health-checker.d.ts.map +1 -0
  77. package/cjs/dev2-server/health-checker.js +2 -0
  78. package/cjs/dev2-server/health-checker.js.map +1 -0
  79. package/cjs/dev2-server/import-transformer.d.ts +16 -0
  80. package/cjs/dev2-server/import-transformer.d.ts.map +1 -0
  81. package/cjs/dev2-server/import-transformer.js +219 -0
  82. package/cjs/dev2-server/import-transformer.js.map +1 -0
  83. package/cjs/dev2-server/index.d.ts +1 -0
  84. package/cjs/dev2-server/index.d.ts.map +1 -0
  85. package/cjs/dev2-server/layer-executor.d.ts +64 -0
  86. package/cjs/dev2-server/layer-executor.d.ts.map +1 -0
  87. package/cjs/dev2-server/layer-executor.js +287 -0
  88. package/cjs/dev2-server/layer-executor.js.map +1 -0
  89. package/cjs/dev2-server/manifest-manager.d.ts +80 -0
  90. package/cjs/dev2-server/manifest-manager.d.ts.map +1 -0
  91. package/cjs/dev2-server/manifest-manager.js +107 -0
  92. package/cjs/dev2-server/manifest-manager.js.map +1 -0
  93. package/cjs/dev2-server/module-loader.d.ts +100 -0
  94. package/cjs/dev2-server/module-loader.d.ts.map +1 -0
  95. package/cjs/dev2-server/module-loader.js +229 -0
  96. package/cjs/dev2-server/module-loader.js.map +1 -0
  97. package/cjs/dev2-server/package-json-manager.d.ts +16 -0
  98. package/cjs/dev2-server/package-json-manager.d.ts.map +1 -0
  99. package/cjs/dev2-server/package-json-manager.js +20 -0
  100. package/cjs/dev2-server/package-json-manager.js.map +1 -0
  101. package/cjs/dev2-server/parse-imports.d.ts +8 -0
  102. package/cjs/dev2-server/parse-imports.d.ts.map +1 -0
  103. package/cjs/dev2-server/parse-imports.js +268 -0
  104. package/cjs/dev2-server/parse-imports.js.map +1 -0
  105. package/cjs/dev2-server/path.d.ts +39 -0
  106. package/cjs/dev2-server/path.d.ts.map +1 -0
  107. package/cjs/dev2-server/path.js +56 -0
  108. package/cjs/dev2-server/path.js.map +1 -0
  109. package/cjs/dev2-server/runtime-import-helper.d.ts +9 -0
  110. package/cjs/dev2-server/runtime-import-helper.d.ts.map +1 -0
  111. package/cjs/dev2-server/runtime-import-helper.js +79 -0
  112. package/cjs/dev2-server/runtime-import-helper.js.map +1 -0
  113. package/cjs/dev2-server/special-files-collector.d.ts +114 -0
  114. package/cjs/dev2-server/special-files-collector.d.ts.map +1 -0
  115. package/cjs/dev2-server/special-files-collector.js +212 -0
  116. package/cjs/dev2-server/special-files-collector.js.map +1 -0
  117. package/cjs/dev2-server/start-development-server.d.ts +7 -0
  118. package/cjs/dev2-server/start-development-server.d.ts.map +1 -0
  119. package/cjs/dev2-server/start-development-server.js +21 -0
  120. package/cjs/dev2-server/start-development-server.js.map +1 -0
  121. package/cjs/dev2-server/transpile-file.d.ts +6 -0
  122. package/cjs/dev2-server/transpile-file.d.ts.map +1 -0
  123. package/cjs/dev2-server/transpile-file.js +14 -0
  124. package/cjs/dev2-server/transpile-file.js.map +1 -0
  125. package/cjs/dev2-server/tsconfig-manager.d.ts +45 -0
  126. package/cjs/dev2-server/tsconfig-manager.d.ts.map +1 -0
  127. package/cjs/dev2-server/tsconfig-manager.js +104 -0
  128. package/cjs/dev2-server/tsconfig-manager.js.map +1 -0
  129. package/cjs/dev2-server/types.d.ts +16 -0
  130. package/cjs/dev2-server/types.d.ts.map +1 -0
  131. package/cjs/dev2-server/utils.d.ts +8 -0
  132. package/cjs/dev2-server/utils.d.ts.map +1 -0
  133. package/cjs/dev2-server/utils.js +28 -0
  134. package/cjs/dev2-server/utils.js.map +1 -0
  135. package/cjs/router/router.d.ts +14 -8
  136. package/cjs/router/router.d.ts.map +1 -1
  137. package/cjs/router/router.js +77 -35
  138. package/cjs/router/router.js.map +1 -1
  139. package/cjs/router/types.d.ts +8 -0
  140. package/cjs/router/types.d.ts.map +1 -1
  141. package/cjs/starters/start-cli-server.js +1 -1
  142. package/cjs/starters/start-cli-server.js.map +1 -1
  143. package/cjs/starters/start-http-server.d.ts.map +1 -1
  144. package/cjs/starters/start-http-server.js +4 -99
  145. package/cjs/starters/start-http-server.js.map +1 -1
  146. package/esm/code-quality/config.js +1 -7
  147. package/esm/code-quality/config.js.map +1 -1
  148. package/esm/code-quality/issue-tracker.js +1 -119
  149. package/esm/code-quality/issue-tracker.js.map +1 -1
  150. package/esm/dev2-server/config-handlers.d.ts +8 -0
  151. package/esm/dev2-server/config-handlers.d.ts.map +1 -0
  152. package/esm/dev2-server/config-handlers.js +56 -0
  153. package/esm/dev2-server/config-handlers.js.map +1 -0
  154. package/esm/dev2-server/config-loader.d.ts +61 -0
  155. package/esm/dev2-server/config-loader.d.ts.map +1 -0
  156. package/esm/dev2-server/config-loader.js +117 -0
  157. package/esm/dev2-server/config-loader.js.map +1 -0
  158. package/esm/dev2-server/connectors/base-connector.d.ts +49 -0
  159. package/esm/dev2-server/connectors/base-connector.d.ts.map +1 -0
  160. package/esm/dev2-server/connectors/base-connector.js +48 -0
  161. package/esm/dev2-server/connectors/base-connector.js.map +1 -0
  162. package/esm/dev2-server/connectors/cache-connector.d.ts +23 -0
  163. package/esm/dev2-server/connectors/cache-connector.d.ts.map +1 -0
  164. package/esm/dev2-server/connectors/cache-connector.js +35 -0
  165. package/esm/dev2-server/connectors/cache-connector.js.map +1 -0
  166. package/esm/dev2-server/connectors/database-connector.d.ts +23 -0
  167. package/esm/dev2-server/connectors/database-connector.d.ts.map +1 -0
  168. package/esm/dev2-server/connectors/database-connector.js +42 -0
  169. package/esm/dev2-server/connectors/database-connector.js.map +1 -0
  170. package/esm/dev2-server/connectors/http-connector.d.ts +29 -0
  171. package/esm/dev2-server/connectors/http-connector.d.ts.map +1 -0
  172. package/esm/dev2-server/connectors/http-connector.js +71 -0
  173. package/esm/dev2-server/connectors/http-connector.js.map +1 -0
  174. package/esm/dev2-server/connectors/index.d.ts +10 -0
  175. package/esm/dev2-server/connectors/index.d.ts.map +1 -0
  176. package/esm/dev2-server/connectors/types.d.ts +49 -0
  177. package/esm/dev2-server/connectors/types.d.ts.map +1 -0
  178. package/esm/dev2-server/connectors/types.js +9 -0
  179. package/esm/dev2-server/connectors/types.js.map +1 -0
  180. package/esm/dev2-server/dependency-graph.d.ts +86 -0
  181. package/esm/dev2-server/dependency-graph.d.ts.map +1 -0
  182. package/esm/dev2-server/dependency-graph.js +225 -0
  183. package/esm/dev2-server/dependency-graph.js.map +1 -0
  184. package/esm/dev2-server/dev-logger.d.ts +14 -0
  185. package/esm/dev2-server/dev-logger.d.ts.map +1 -0
  186. package/esm/dev2-server/dev-logger.js +117 -0
  187. package/esm/dev2-server/dev-logger.js.map +1 -0
  188. package/esm/dev2-server/development-server.d.ts +97 -0
  189. package/esm/dev2-server/development-server.d.ts.map +1 -0
  190. package/esm/dev2-server/development-server.js +212 -0
  191. package/esm/dev2-server/development-server.js.map +1 -0
  192. package/esm/dev2-server/events.d.ts +5 -0
  193. package/esm/dev2-server/events.d.ts.map +1 -0
  194. package/esm/dev2-server/events.js +4 -0
  195. package/esm/dev2-server/events.js.map +1 -0
  196. package/esm/dev2-server/file-event-handler.d.ts +58 -0
  197. package/esm/dev2-server/file-event-handler.d.ts.map +1 -0
  198. package/esm/dev2-server/file-event-handler.js +140 -0
  199. package/esm/dev2-server/file-event-handler.js.map +1 -0
  200. package/esm/dev2-server/file-manager.d.ts +110 -0
  201. package/esm/dev2-server/file-manager.d.ts.map +1 -0
  202. package/esm/dev2-server/file-manager.js +314 -0
  203. package/esm/dev2-server/file-manager.js.map +1 -0
  204. package/esm/dev2-server/file-operations.d.ts +54 -0
  205. package/esm/dev2-server/file-operations.d.ts.map +1 -0
  206. package/esm/dev2-server/file-operations.js +191 -0
  207. package/esm/dev2-server/file-operations.js.map +1 -0
  208. package/esm/dev2-server/files-orchestrator.d.ts +88 -0
  209. package/esm/dev2-server/files-orchestrator.d.ts.map +1 -0
  210. package/esm/dev2-server/files-orchestrator.js +271 -0
  211. package/esm/dev2-server/files-orchestrator.js.map +1 -0
  212. package/esm/dev2-server/files-watcher.d.ts +53 -0
  213. package/esm/dev2-server/files-watcher.d.ts.map +1 -0
  214. package/esm/dev2-server/files-watcher.js +88 -0
  215. package/esm/dev2-server/files-watcher.js.map +1 -0
  216. package/esm/dev2-server/flags.d.ts +10 -0
  217. package/esm/dev2-server/flags.d.ts.map +1 -0
  218. package/esm/dev2-server/flags.js +9 -0
  219. package/esm/dev2-server/flags.js.map +1 -0
  220. package/esm/dev2-server/health-checker.d.ts +3 -0
  221. package/esm/dev2-server/health-checker.d.ts.map +1 -0
  222. package/esm/dev2-server/health-checker.js +2 -0
  223. package/esm/dev2-server/health-checker.js.map +1 -0
  224. package/esm/dev2-server/import-transformer.d.ts +16 -0
  225. package/esm/dev2-server/import-transformer.d.ts.map +1 -0
  226. package/esm/dev2-server/import-transformer.js +219 -0
  227. package/esm/dev2-server/import-transformer.js.map +1 -0
  228. package/esm/dev2-server/index.d.ts +1 -0
  229. package/esm/dev2-server/index.d.ts.map +1 -0
  230. package/esm/dev2-server/layer-executor.d.ts +64 -0
  231. package/esm/dev2-server/layer-executor.d.ts.map +1 -0
  232. package/esm/dev2-server/layer-executor.js +287 -0
  233. package/esm/dev2-server/layer-executor.js.map +1 -0
  234. package/esm/dev2-server/manifest-manager.d.ts +80 -0
  235. package/esm/dev2-server/manifest-manager.d.ts.map +1 -0
  236. package/esm/dev2-server/manifest-manager.js +107 -0
  237. package/esm/dev2-server/manifest-manager.js.map +1 -0
  238. package/esm/dev2-server/module-loader.d.ts +100 -0
  239. package/esm/dev2-server/module-loader.d.ts.map +1 -0
  240. package/esm/dev2-server/module-loader.js +229 -0
  241. package/esm/dev2-server/module-loader.js.map +1 -0
  242. package/esm/dev2-server/package-json-manager.d.ts +16 -0
  243. package/esm/dev2-server/package-json-manager.d.ts.map +1 -0
  244. package/esm/dev2-server/package-json-manager.js +20 -0
  245. package/esm/dev2-server/package-json-manager.js.map +1 -0
  246. package/esm/dev2-server/parse-imports.d.ts +8 -0
  247. package/esm/dev2-server/parse-imports.d.ts.map +1 -0
  248. package/esm/dev2-server/parse-imports.js +268 -0
  249. package/esm/dev2-server/parse-imports.js.map +1 -0
  250. package/esm/dev2-server/path.d.ts +39 -0
  251. package/esm/dev2-server/path.d.ts.map +1 -0
  252. package/esm/dev2-server/path.js +56 -0
  253. package/esm/dev2-server/path.js.map +1 -0
  254. package/esm/dev2-server/runtime-import-helper.d.ts +9 -0
  255. package/esm/dev2-server/runtime-import-helper.d.ts.map +1 -0
  256. package/esm/dev2-server/runtime-import-helper.js +79 -0
  257. package/esm/dev2-server/runtime-import-helper.js.map +1 -0
  258. package/esm/dev2-server/special-files-collector.d.ts +114 -0
  259. package/esm/dev2-server/special-files-collector.d.ts.map +1 -0
  260. package/esm/dev2-server/special-files-collector.js +212 -0
  261. package/esm/dev2-server/special-files-collector.js.map +1 -0
  262. package/esm/dev2-server/start-development-server.d.ts +7 -0
  263. package/esm/dev2-server/start-development-server.d.ts.map +1 -0
  264. package/esm/dev2-server/start-development-server.js +21 -0
  265. package/esm/dev2-server/start-development-server.js.map +1 -0
  266. package/esm/dev2-server/transpile-file.d.ts +6 -0
  267. package/esm/dev2-server/transpile-file.d.ts.map +1 -0
  268. package/esm/dev2-server/transpile-file.js +14 -0
  269. package/esm/dev2-server/transpile-file.js.map +1 -0
  270. package/esm/dev2-server/tsconfig-manager.d.ts +45 -0
  271. package/esm/dev2-server/tsconfig-manager.d.ts.map +1 -0
  272. package/esm/dev2-server/tsconfig-manager.js +104 -0
  273. package/esm/dev2-server/tsconfig-manager.js.map +1 -0
  274. package/esm/dev2-server/types.d.ts +16 -0
  275. package/esm/dev2-server/types.d.ts.map +1 -0
  276. package/esm/dev2-server/utils.d.ts +8 -0
  277. package/esm/dev2-server/utils.d.ts.map +1 -0
  278. package/esm/dev2-server/utils.js +28 -0
  279. package/esm/dev2-server/utils.js.map +1 -0
  280. package/esm/router/router.d.ts +14 -8
  281. package/esm/router/router.d.ts.map +1 -1
  282. package/esm/router/router.js +78 -36
  283. package/esm/router/router.js.map +1 -1
  284. package/esm/router/types.d.ts +8 -0
  285. package/esm/router/types.d.ts.map +1 -1
  286. package/esm/starters/start-cli-server.js +1 -1
  287. package/esm/starters/start-cli-server.js.map +1 -1
  288. package/esm/starters/start-http-server.d.ts.map +1 -1
  289. package/esm/starters/start-http-server.js +4 -99
  290. package/esm/starters/start-http-server.js.map +1 -1
  291. package/package.json +3 -3
  292. package/cjs/code-quality/checkers/eslint-checker.js +0 -39
  293. package/cjs/code-quality/checkers/eslint-checker.js.map +0 -1
  294. package/cjs/code-quality/checkers/typescript-checker.js +0 -76
  295. package/cjs/code-quality/checkers/typescript-checker.js.map +0 -1
  296. package/cjs/code-quality/formatters/eslint-formatter.js +0 -56
  297. package/cjs/code-quality/formatters/eslint-formatter.js.map +0 -1
  298. package/cjs/code-quality/formatters/summary-formatter.js +0 -102
  299. package/cjs/code-quality/formatters/summary-formatter.js.map +0 -1
  300. package/cjs/code-quality/formatters/typescript-formatter.js +0 -64
  301. package/cjs/code-quality/formatters/typescript-formatter.js.map +0 -1
  302. package/cjs/code-quality/project-scanner.js +0 -78
  303. package/cjs/code-quality/project-scanner.js.map +0 -1
  304. package/cjs/code-quality/single-file-checker.js +0 -153
  305. package/cjs/code-quality/single-file-checker.js.map +0 -1
  306. package/cjs/starters/http-server-starter.js +0 -34
  307. package/cjs/starters/http-server-starter.js.map +0 -1
  308. package/cjs/utils/internal.js +0 -3
  309. package/cjs/utils/internal.js.map +0 -1
  310. package/esm/code-quality/checkers/eslint-checker.js +0 -39
  311. package/esm/code-quality/checkers/eslint-checker.js.map +0 -1
  312. package/esm/code-quality/checkers/typescript-checker.js +0 -76
  313. package/esm/code-quality/checkers/typescript-checker.js.map +0 -1
  314. package/esm/code-quality/formatters/eslint-formatter.js +0 -56
  315. package/esm/code-quality/formatters/eslint-formatter.js.map +0 -1
  316. package/esm/code-quality/formatters/summary-formatter.js +0 -102
  317. package/esm/code-quality/formatters/summary-formatter.js.map +0 -1
  318. package/esm/code-quality/formatters/typescript-formatter.js +0 -64
  319. package/esm/code-quality/formatters/typescript-formatter.js.map +0 -1
  320. package/esm/code-quality/project-scanner.js +0 -78
  321. package/esm/code-quality/project-scanner.js.map +0 -1
  322. package/esm/code-quality/single-file-checker.js +0 -153
  323. package/esm/code-quality/single-file-checker.js.map +0 -1
  324. package/esm/starters/http-server-starter.js +0 -34
  325. package/esm/starters/http-server-starter.js.map +0 -1
  326. package/esm/utils/internal.js +0 -3
  327. package/esm/utils/internal.js.map +0 -1
@@ -0,0 +1,219 @@
1
+ import {devLogError}from'./dev-logger.js';import {Path}from'./path.js';import {tsconfigManager}from'./tsconfig-manager.js';/**
2
+ * Transform imports in transpiled code to use cache paths
3
+ * This is called AFTER all files are transpiled
4
+ *
5
+ * Strategy:
6
+ * - All cached files are in the same directory (.warlock/cache/)
7
+ * - So all imports become: "./${cachePath}"
8
+ * - We use fileManager.dependencies (already resolved by parseImports)
9
+ *
10
+ * @param fileManager FileManager with transpiled code and dependencies
11
+ * @param filesMap Map of all FileManager instances
12
+ * @returns Transformed code with cache-relative imports
13
+ */
14
+ function transformImports(fileManager, filesMap) {
15
+ const code = fileManager.transpiled;
16
+ // Pattern to match ES6 import statements
17
+ // Matches: import ... from "..."
18
+ const importRegex = /import\s+((?:\{[^}]*\}|\*\s+as\s+\w+|\w+)(?:\s*,\s*(?:\{[^}]*\}|\*\s+as\s+\w+|\w+))*)\s+from\s+["']([^"']+)["'];?/g;
19
+ // Pattern to match side-effect imports: import "module";
20
+ const sideEffectImportRegex = /import\s+["']([^"']+)["'];?/g;
21
+ // Pattern to match ES6 export statements
22
+ // Matches: export * from "..." and export { ... } from "..."
23
+ const exportRegex = /export\s+((?:\*|\{[^}]*\}))\s+from\s+["']([^"']+)["'];?/g;
24
+ let transformedCode = code;
25
+ const unresolvedImports = [];
26
+ // Process imports first
27
+ const importMatches = Array.from(code.matchAll(importRegex));
28
+ for (let i = importMatches.length - 1; i >= 0; i--) {
29
+ const match = importMatches[i];
30
+ const fullImport = match[0];
31
+ const importSpecifier = match[1]; // What's being imported (e.g., "{ foo }", "* as bar", "default")
32
+ const importPath = match[2]; // The module path
33
+ // Only transform relative imports and alias imports
34
+ // Skip external packages (node_modules, node built-ins)
35
+ const isRelativeImport = importPath.startsWith(".") || importPath.startsWith("/");
36
+ const isAliasImport = tsconfigManager.isAlias(importPath);
37
+ if (!isRelativeImport && !isAliasImport) {
38
+ // This is an external package - keep as-is
39
+ continue;
40
+ }
41
+ // Check if this import was resolved by parseImports (exists in importMap)
42
+ // If not in importMap, it means parseImports skipped it (external package), so we skip it too
43
+ if (!fileManager.importMap.has(importPath)) {
44
+ // Not in importMap = external package, skip transformation
45
+ continue;
46
+ }
47
+ // Find the cache path for this import from dependencies
48
+ const cachePath = findCachePathForImport(importPath, fileManager, filesMap);
49
+ if (!cachePath) {
50
+ // Could not resolve - track it (this is a local file that should exist but doesn't)
51
+ unresolvedImports.push(importPath);
52
+ continue;
53
+ }
54
+ // Build the correct replacement depending on the import shape
55
+ const newImport = buildImportReplacement(importSpecifier, cachePath);
56
+ // Replace in code
57
+ const startIndex = match.index;
58
+ const endIndex = startIndex + fullImport.length;
59
+ transformedCode =
60
+ transformedCode.slice(0, startIndex) +
61
+ newImport +
62
+ transformedCode.slice(endIndex);
63
+ }
64
+ // Process side-effect imports: import "module";
65
+ const sideEffectMatches = Array.from(transformedCode.matchAll(sideEffectImportRegex));
66
+ for (let i = sideEffectMatches.length - 1; i >= 0; i--) {
67
+ const match = sideEffectMatches[i];
68
+ const fullImport = match[0];
69
+ const importPath = match[1];
70
+ // Only transform relative imports and alias imports
71
+ // Skip external packages (node_modules, node built-ins)
72
+ const isRelativeImport = importPath.startsWith(".") || importPath.startsWith("/");
73
+ const isAliasImport = tsconfigManager.isAlias(importPath);
74
+ if (!isRelativeImport && !isAliasImport) {
75
+ continue;
76
+ }
77
+ if (!fileManager.importMap.has(importPath)) {
78
+ continue;
79
+ }
80
+ const cachePath = findCachePathForImport(importPath, fileManager, filesMap);
81
+ if (!cachePath) {
82
+ unresolvedImports.push(importPath);
83
+ continue;
84
+ }
85
+ // FROM: import "./themes";
86
+ // TO: await __import("./src-app-mail-themes.js");
87
+ const newImport = `await __import("./${cachePath}")`;
88
+ const startIndex = match.index;
89
+ const endIndex = startIndex + fullImport.length;
90
+ transformedCode =
91
+ transformedCode.slice(0, startIndex) +
92
+ newImport +
93
+ transformedCode.slice(endIndex);
94
+ }
95
+ // Process exports (need to re-process after imports to get updated string positions)
96
+ const exportMatches = Array.from(transformedCode.matchAll(exportRegex));
97
+ for (let i = exportMatches.length - 1; i >= 0; i--) {
98
+ const match = exportMatches[i];
99
+ const fullExport = match[0];
100
+ const exportSpecifier = match[1]; // "*" or "{ foo, bar }"
101
+ const importPath = match[2]; // The module path
102
+ // Only transform relative imports and alias imports
103
+ // Skip external packages (node_modules, node built-ins)
104
+ const isRelativeImport = importPath.startsWith(".") || importPath.startsWith("/");
105
+ const isAliasImport = tsconfigManager.isAlias(importPath);
106
+ if (!isRelativeImport && !isAliasImport) {
107
+ // This is an external package - keep as-is
108
+ continue;
109
+ }
110
+ // Check if this import was resolved by parseImports (exists in importMap)
111
+ // If not in importMap, it means parseImports skipped it (external package), so we skip it too
112
+ if (!fileManager.importMap.has(importPath)) {
113
+ // Not in importMap = external package, skip transformation
114
+ continue;
115
+ }
116
+ // Find the cache path for this import from dependencies
117
+ const cachePath = findCachePathForImport(importPath, fileManager, filesMap);
118
+ if (!cachePath) {
119
+ console.log("Could not resolve import", importPath);
120
+ // Could not resolve - track it (this is a local file that should exist but doesn't)
121
+ unresolvedImports.push(importPath);
122
+ continue;
123
+ }
124
+ // Transform export to use cache path
125
+ // Note: export * from requires a static string literal in ES modules
126
+ // So we can't use __import with timestamps. We rely on module loader cache clearing.
127
+ // For export { ... }, we can use __import and individual exports
128
+ if (exportSpecifier === "*") {
129
+ // export * from "./module"
130
+ // Keep as static export but use cache path
131
+ // Cache busting is handled by module loader clearing cache
132
+ const newExport = `export * from "./${cachePath}"`;
133
+ // Replace in code
134
+ const startIndex = match.index;
135
+ const endIndex = startIndex + fullExport.length;
136
+ transformedCode =
137
+ transformedCode.slice(0, startIndex) +
138
+ newExport +
139
+ transformedCode.slice(endIndex);
140
+ }
141
+ else {
142
+ // export { foo, bar } from "./module"
143
+ // Transform to individual exports using __import
144
+ const moduleVar = `__module_${i}`;
145
+ const namedExports = exportSpecifier; // e.g., "{ foo, bar }"
146
+ // Extract export names from the specifier
147
+ const exportNames = namedExports
148
+ .match(/\{([^}]+)\}/)?.[1]
149
+ ?.split(",")
150
+ .map(s => s.trim()) || [];
151
+ const exportStatements = exportNames
152
+ .map(name => `export const ${name} = ${moduleVar}.${name};`)
153
+ .join("\n");
154
+ const newExport = `const ${moduleVar} = await __import("./${cachePath}");\n${exportStatements}`;
155
+ // Replace in code
156
+ const startIndex = match.index;
157
+ const endIndex = startIndex + fullExport.length;
158
+ transformedCode =
159
+ transformedCode.slice(0, startIndex) +
160
+ newExport +
161
+ transformedCode.slice(endIndex);
162
+ }
163
+ }
164
+ // If there are unresolved imports, throw an error
165
+ if (unresolvedImports.length > 0) {
166
+ devLogError(`Failed to transform imports in ${fileManager.relativePath}:\n` +
167
+ `Unresolved imports: ${unresolvedImports.join(", ")}\n` +
168
+ `These files may not exist or are not being tracked.`);
169
+ return "";
170
+ }
171
+ return transformedCode;
172
+ }
173
+ /**
174
+ * Build a replacement statement for different import syntaxes
175
+ */
176
+ function buildImportReplacement(importSpecifier, cachePath) {
177
+ // Namespace import: import * as Foo from "module";
178
+ if (importSpecifier.startsWith("* as ")) {
179
+ const identifier = importSpecifier.replace("* as ", "").trim();
180
+ return `const ${identifier} = await __import("./${cachePath}")`;
181
+ }
182
+ // Destructured / named imports (including default alias): import { a, default as X } from "module";
183
+ if (importSpecifier.startsWith("{")) {
184
+ // Normalize `{ default as X }` to `{ default: X }` for valid destructuring
185
+ const normalized = importSpecifier.replace(/default\s+as\s+/g, "default: ");
186
+ return `const ${normalized} = await __import("./${cachePath}")`;
187
+ }
188
+ // Default import: import Foo from "module";
189
+ // Use destructuring to pull default, with fallback to module object if default is missing
190
+ // Note: single await, reuses the same import for both destructuring and fallback
191
+ const moduleVar = `__module_${Math.random().toString(36).slice(2, 8)}`;
192
+ return `const ${moduleVar} = await __import("./${cachePath}");\nconst ${importSpecifier} = ${moduleVar}?.default ?? ${moduleVar};`;
193
+ }
194
+ /**
195
+ * Find the cache path for an import
196
+ * Uses the fileManager's importMap which maps original imports to resolved paths
197
+ *
198
+ * @param importPath The import path from the import statement
199
+ * @param fileManager The file that contains this import
200
+ * @param filesMap Map of all FileManager instances
201
+ */
202
+ function findCachePathForImport(importPath, fileManager, filesMap) {
203
+ // Look up the resolved absolute path from the import map
204
+ const resolvedAbsPath = fileManager.importMap.get(importPath);
205
+ if (!resolvedAbsPath) {
206
+ return null;
207
+ }
208
+ // Convert to relative path
209
+ const relativePath = Path.toRelative(resolvedAbsPath);
210
+ // Find the FileManager for this dependency
211
+ const depFileManager = filesMap.get(relativePath);
212
+ if (!depFileManager) {
213
+ return null;
214
+ }
215
+ if (depFileManager && depFileManager.cachePath) {
216
+ return depFileManager.cachePath;
217
+ }
218
+ return null;
219
+ }export{transformImports};//# sourceMappingURL=import-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-transformer.js","sources":["../../src/dev2-server/import-transformer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dev2-server/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ import type { ConfigLoader } from "./config-loader";
2
+ import type { Connector } from "./connectors/types";
3
+ import type { DependencyGraph } from "./dependency-graph";
4
+ import type { FileManager } from "./file-manager";
5
+ import type { ModuleLoader } from "./module-loader";
6
+ import type { SpecialFilesCollector } from "./special-files-collector";
7
+ /**
8
+ * LayerExecutor handles the execution of file reloads based on their layer type
9
+ *
10
+ * Strategy:
11
+ * 1. Determine reload type (FSR or HMR) based on invalidation chain
12
+ * 2. For FSR: Restart connectors if needed, reload special files
13
+ * 3. For HMR: Clear module cache, reload affected modules
14
+ */
15
+ export declare class LayerExecutor {
16
+ private readonly dependencyGraph;
17
+ private readonly specialFilesCollector;
18
+ private readonly connectors;
19
+ private readonly moduleLoader;
20
+ private readonly configLoader;
21
+ constructor(dependencyGraph: DependencyGraph, specialFilesCollector: SpecialFilesCollector, connectors: Connector[], moduleLoader: ModuleLoader, configLoader: ConfigLoader);
22
+ /**
23
+ * Execute batch reload for multiple changed files
24
+ * @param changedPaths Array of relative paths that changed
25
+ * @param filesMap Map of all FileManager instances
26
+ */
27
+ executeBatchReload(changedPaths: string[], filesMap: Map<string, FileManager>): Promise<void>;
28
+ /**
29
+ * Determine if we need FSR or HMR
30
+ * FSR is needed if ANY file in the invalidation chain is FSR layer
31
+ */
32
+ private determineReloadStrategy;
33
+ /**
34
+ * Execute Full Server Restart
35
+ * This happens when config, routes, or other FSR layer files change
36
+ */
37
+ private executeFullServerRestart;
38
+ /**
39
+ * Execute Hot Module Replacement
40
+ * This happens when only HMR layer files (controllers, services, etc.) change
41
+ */
42
+ private executeHotModuleReplacement;
43
+ /**
44
+ * Restart connectors that are affected by the changed files
45
+ */
46
+ private restartAffectedConnectors;
47
+ /**
48
+ * Clear Node.js module cache for the invalidation chain
49
+ */
50
+ private clearModuleCacheForChain;
51
+ /**
52
+ * Reload special files that are affected by the change
53
+ * This includes main, routes, events, locales
54
+ * Special files are reloaded if they are in the invalidation chain OR if they depend on files in the chain
55
+ */
56
+ private reloadAffectedSpecialFiles;
57
+ /**
58
+ * Reload affected modules (for HMR)
59
+ * Special files (main, routes, events, locales) need to be actively reloaded
60
+ * Other files will be loaded on next import
61
+ */
62
+ private reloadAffectedModules;
63
+ }
64
+ //# sourceMappingURL=layer-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-executor.d.ts","sourceRoot":"","sources":["../../src/dev2-server/layer-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;GAOG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAJZ,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,SAAS,EAAE,EACvB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY;IAG7C;;;;OAIG;IACU,kBAAkB,CAC7B,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IA+FhB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;OAGG;YACW,wBAAwB;IAqCtC;;;OAGG;YACW,2BAA2B;IAYzC;;OAEG;YACW,yBAAyB;IAevC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAiBhC;;;;OAIG;YACW,0BAA0B;IAmDxC;;;;OAIG;YACW,qBAAqB;CA+DpC"}
@@ -0,0 +1,287 @@
1
+ import {devLogConfig,devLogFSR,devLogHMR}from'./dev-logger.js';/**
2
+ * LayerExecutor handles the execution of file reloads based on their layer type
3
+ *
4
+ * Strategy:
5
+ * 1. Determine reload type (FSR or HMR) based on invalidation chain
6
+ * 2. For FSR: Restart connectors if needed, reload special files
7
+ * 3. For HMR: Clear module cache, reload affected modules
8
+ */
9
+ class LayerExecutor {
10
+ dependencyGraph;
11
+ specialFilesCollector;
12
+ connectors;
13
+ moduleLoader;
14
+ configLoader;
15
+ constructor(dependencyGraph, specialFilesCollector, connectors, moduleLoader, configLoader) {
16
+ this.dependencyGraph = dependencyGraph;
17
+ this.specialFilesCollector = specialFilesCollector;
18
+ this.connectors = connectors;
19
+ this.moduleLoader = moduleLoader;
20
+ this.configLoader = configLoader;
21
+ }
22
+ /**
23
+ * Execute batch reload for multiple changed files
24
+ * @param changedPaths Array of relative paths that changed
25
+ * @param filesMap Map of all FileManager instances
26
+ */
27
+ async executeBatchReload(changedPaths, filesMap) {
28
+ if (changedPaths.length === 0) {
29
+ return;
30
+ }
31
+ // Build combined invalidation chain for all changed files
32
+ const allInvalidatedFiles = new Set();
33
+ const fsrFiles = [];
34
+ const hmrFiles = [];
35
+ for (const relativePath of changedPaths) {
36
+ const fileManager = filesMap.get(relativePath);
37
+ if (!fileManager)
38
+ continue;
39
+ // Get invalidation chain for this file
40
+ const invalidationChain = this.dependencyGraph.getInvalidationChain(relativePath);
41
+ // Add to combined set
42
+ invalidationChain.forEach((file) => allInvalidatedFiles.add(file));
43
+ // Determine strategy for this file
44
+ const strategy = this.determineReloadStrategy(invalidationChain, filesMap);
45
+ if (strategy === "FSR") {
46
+ fsrFiles.push(relativePath);
47
+ }
48
+ else {
49
+ hmrFiles.push(relativePath);
50
+ }
51
+ }
52
+ // Separate config files from other FSR files
53
+ const configFiles = fsrFiles.filter((path) => {
54
+ const file = filesMap.get(path);
55
+ return file?.type === "config";
56
+ });
57
+ const nonConfigFsrFiles = fsrFiles.filter((path) => {
58
+ const file = filesMap.get(path);
59
+ return file?.type !== "config";
60
+ });
61
+ // Log once for the entire batch
62
+ if (configFiles.length > 0) {
63
+ // Get affected connectors
64
+ const affectedConnectors = this.connectors.filter((connector) => connector.shouldRestart(configFiles));
65
+ if (configFiles.length === 1) {
66
+ devLogConfig(configFiles[0], affectedConnectors.map((connector) => connector.name));
67
+ }
68
+ else {
69
+ devLogConfig(`${configFiles.length} files`, affectedConnectors.map((connector) => connector.name));
70
+ }
71
+ // await Promise.all(affectedConnectors.map((connector) => connector.restart()));
72
+ }
73
+ if (nonConfigFsrFiles.length > 0) {
74
+ if (nonConfigFsrFiles.length === 1) {
75
+ devLogFSR(nonConfigFsrFiles[0]);
76
+ }
77
+ else {
78
+ devLogFSR(`${nonConfigFsrFiles.length} files`);
79
+ }
80
+ }
81
+ if (hmrFiles.length > 0 && fsrFiles.length === 0) {
82
+ if (hmrFiles.length === 1) {
83
+ const dependentCount = this.dependencyGraph.getInvalidationChain(hmrFiles[0]).length - 1;
84
+ devLogHMR(hmrFiles[0], dependentCount > 0 ? dependentCount : undefined);
85
+ }
86
+ else {
87
+ hmrFiles.forEach(file => {
88
+ const dependentCount = this.dependencyGraph.getInvalidationChain(file).length - 1;
89
+ devLogHMR(file, dependentCount > 0 ? dependentCount : undefined);
90
+ });
91
+ }
92
+ }
93
+ // Execute reload once for all files
94
+ const invalidationChain = Array.from(allInvalidatedFiles);
95
+ if (fsrFiles.length > 0) {
96
+ // If any file requires FSR, do FSR for all
97
+ const firstFsrFile = filesMap.get(fsrFiles[0]);
98
+ await this.executeFullServerRestart(firstFsrFile, invalidationChain, filesMap);
99
+ }
100
+ else {
101
+ // All files are HMR
102
+ const firstHmrFile = filesMap.get(hmrFiles[0]);
103
+ await this.executeHotModuleReplacement(firstHmrFile, invalidationChain, filesMap);
104
+ }
105
+ }
106
+ /**
107
+ * Determine if we need FSR or HMR
108
+ * FSR is needed if ANY file in the invalidation chain is FSR layer
109
+ */
110
+ determineReloadStrategy(invalidationChain, filesMap) {
111
+ for (const relativePath of invalidationChain) {
112
+ const file = filesMap.get(relativePath);
113
+ if (file && file.layer === "FSR") {
114
+ return "FSR";
115
+ }
116
+ }
117
+ return "HMR";
118
+ }
119
+ /**
120
+ * Execute Full Server Restart
121
+ * This happens when config, routes, or other FSR layer files change
122
+ */
123
+ async executeFullServerRestart(changedFile, invalidationChain, filesMap) {
124
+ // Step 1: Handle config files specially
125
+ const configFiles = invalidationChain
126
+ .map((path) => filesMap.get(path))
127
+ .filter((file) => file !== undefined && file.type === "config");
128
+ if (configFiles.length > 0) {
129
+ // Reload config files first
130
+ for (const configFile of configFiles) {
131
+ await this.configLoader.reloadConfig(configFile);
132
+ }
133
+ // Restart only affected connectors
134
+ await this.restartAffectedConnectors(invalidationChain);
135
+ // Clear module cache for invalidation chain
136
+ this.clearModuleCacheForChain(invalidationChain, filesMap);
137
+ // Reload special files if affected
138
+ await this.reloadAffectedSpecialFiles(invalidationChain);
139
+ return;
140
+ }
141
+ // Step 2: For non-config FSR (routes, etc.), restart all connectors
142
+ await this.restartAffectedConnectors(invalidationChain);
143
+ // Step 3: Clear module cache for invalidation chain
144
+ this.clearModuleCacheForChain(invalidationChain, filesMap);
145
+ // Step 4: Reload special files if affected
146
+ await this.reloadAffectedSpecialFiles(invalidationChain);
147
+ }
148
+ /**
149
+ * Execute Hot Module Replacement
150
+ * This happens when only HMR layer files (controllers, services, etc.) change
151
+ */
152
+ async executeHotModuleReplacement(changedFile, invalidationChain, filesMap) {
153
+ // Step 1: Clear module cache for invalidation chain
154
+ this.clearModuleCacheForChain(invalidationChain, filesMap);
155
+ // Step 2: Reload affected modules
156
+ await this.reloadAffectedModules(invalidationChain, filesMap);
157
+ }
158
+ /**
159
+ * Restart connectors that are affected by the changed files
160
+ */
161
+ async restartAffectedConnectors(affectedFiles) {
162
+ const connectorsToRestart = this.connectors.filter((connector) => connector.shouldRestart(affectedFiles));
163
+ if (connectorsToRestart.length === 0) {
164
+ return;
165
+ }
166
+ // Restart in priority order
167
+ for (const connector of connectorsToRestart) {
168
+ await connector.restart();
169
+ }
170
+ }
171
+ /**
172
+ * Clear Node.js module cache for the invalidation chain
173
+ */
174
+ clearModuleCacheForChain(invalidationChain, filesMap) {
175
+ for (const relativePath of invalidationChain) {
176
+ const file = filesMap.get(relativePath);
177
+ if (file) {
178
+ this.moduleLoader.clearModuleCache(file.absolutePath);
179
+ // Update module version for HMR cache busting
180
+ if (typeof global.__updateModuleVersion === "function") {
181
+ global.__updateModuleVersion(`./${file.cachePath}`, Date.now());
182
+ }
183
+ }
184
+ }
185
+ }
186
+ /**
187
+ * Reload special files that are affected by the change
188
+ * This includes main, routes, events, locales
189
+ * Special files are reloaded if they are in the invalidation chain OR if they depend on files in the chain
190
+ */
191
+ async reloadAffectedSpecialFiles(invalidationChain) {
192
+ // Helper to check if a file is affected (either in chain or depends on chain)
193
+ const isAffected = (file) => {
194
+ // Direct match: file itself is in the chain
195
+ if (invalidationChain.includes(file.relativePath)) {
196
+ return true;
197
+ }
198
+ // Indirect match: file depends on something in the chain
199
+ for (const dep of file.dependencies) {
200
+ if (invalidationChain.includes(dep)) {
201
+ return true;
202
+ }
203
+ }
204
+ return false;
205
+ };
206
+ // Check which special files are affected
207
+ const affectedMainFiles = this.specialFilesCollector.getMainFiles().filter(isAffected);
208
+ const affectedRouteFiles = this.specialFilesCollector.getRouteFiles().filter(isAffected);
209
+ const affectedEventFiles = this.specialFilesCollector.getEventFiles().filter(isAffected);
210
+ const affectedLocaleFiles = this.specialFilesCollector.getLocaleFiles().filter(isAffected);
211
+ // Reload affected special files
212
+ if (affectedMainFiles.length > 0) {
213
+ for (const file of affectedMainFiles) {
214
+ await this.moduleLoader.reloadModule(file);
215
+ }
216
+ }
217
+ if (affectedLocaleFiles.length > 0) {
218
+ for (const file of affectedLocaleFiles) {
219
+ await this.moduleLoader.reloadModule(file);
220
+ }
221
+ }
222
+ if (affectedEventFiles.length > 0) {
223
+ for (const file of affectedEventFiles) {
224
+ await this.moduleLoader.reloadModule(file);
225
+ }
226
+ }
227
+ if (affectedRouteFiles.length > 0) {
228
+ for (const file of affectedRouteFiles) {
229
+ await this.moduleLoader.reloadModule(file);
230
+ }
231
+ }
232
+ }
233
+ /**
234
+ * Reload affected modules (for HMR)
235
+ * Special files (main, routes, events, locales) need to be actively reloaded
236
+ * Other files will be loaded on next import
237
+ */
238
+ async reloadAffectedModules(invalidationChain, filesMap) {
239
+ // Helper to check if a file is affected (either in chain or depends on chain)
240
+ const isAffected = (file) => {
241
+ // Direct match: file itself is in the chain
242
+ if (invalidationChain.includes(file.relativePath)) {
243
+ return true;
244
+ }
245
+ // Indirect match: file depends on something in the chain
246
+ for (const dep of file.dependencies) {
247
+ if (invalidationChain.includes(dep)) {
248
+ return true;
249
+ }
250
+ }
251
+ return false;
252
+ };
253
+ // Check which special files are affected
254
+ const affectedMainFiles = this.specialFilesCollector.getMainFiles().filter(isAffected);
255
+ const affectedRouteFiles = this.specialFilesCollector.getRouteFiles().filter(isAffected);
256
+ const affectedEventFiles = this.specialFilesCollector.getEventFiles().filter(isAffected);
257
+ const affectedLocaleFiles = this.specialFilesCollector.getLocaleFiles().filter(isAffected);
258
+ const hasSpecialFiles = affectedMainFiles.length > 0 ||
259
+ affectedRouteFiles.length > 0 ||
260
+ affectedEventFiles.length > 0 ||
261
+ affectedLocaleFiles.length > 0;
262
+ if (!hasSpecialFiles) {
263
+ return;
264
+ }
265
+ // Reload special files
266
+ if (affectedMainFiles.length > 0) {
267
+ for (const file of affectedMainFiles) {
268
+ await this.moduleLoader.reloadModule(file);
269
+ }
270
+ }
271
+ if (affectedLocaleFiles.length > 0) {
272
+ for (const file of affectedLocaleFiles) {
273
+ await this.moduleLoader.reloadModule(file);
274
+ }
275
+ }
276
+ if (affectedEventFiles.length > 0) {
277
+ for (const file of affectedEventFiles) {
278
+ await this.moduleLoader.reloadModule(file);
279
+ }
280
+ }
281
+ if (affectedRouteFiles.length > 0) {
282
+ for (const file of affectedRouteFiles) {
283
+ await this.moduleLoader.reloadModule(file);
284
+ }
285
+ }
286
+ }
287
+ }export{LayerExecutor};//# sourceMappingURL=layer-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-executor.js","sources":["../../src/dev2-server/layer-executor.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}