@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,314 @@
1
+ import events from'@mongez/events';import {getFileAsync,lastModifiedAsync,putFileAsync}from'@mongez/fs';import crypto from'crypto';import {DEV_SERVER_EVENTS}from'./events.js';import {transformImports}from'./import-transformer.js';import {parseImports}from'./parse-imports.js';import {Path}from'./path.js';import {transpile}from'./transpile-file.js';import {warlockCachePath}from'./utils.js';class FileManager {
2
+ absolutePath;
3
+ files;
4
+ /**
5
+ * Relative path to root directory
6
+ */
7
+ relativePath = "";
8
+ /**
9
+ * Last modified timestamp
10
+ */
11
+ lastModified = 0;
12
+ /**
13
+ * Hash of the file content
14
+ */
15
+ hash = "";
16
+ /**
17
+ * Source code of the file
18
+ */
19
+ source = "";
20
+ /**
21
+ * Transpiled code of the file
22
+ */
23
+ transpiled = "";
24
+ /**
25
+ * Dependencies of the file (relative paths)
26
+ */
27
+ dependencies = new Set();
28
+ /**
29
+ * Import map: original import path -> resolved absolute path
30
+ * Used for import transformation
31
+ */
32
+ importMap = new Map();
33
+ /**
34
+ * Dependents of the file
35
+ */
36
+ dependents = new Set();
37
+ /**
38
+ * Version of the file
39
+ */
40
+ version = 0;
41
+ /**
42
+ * Type of the file
43
+ */
44
+ type;
45
+ /**
46
+ * Layer of the file
47
+ */
48
+ layer;
49
+ /**
50
+ * Cache path of the file
51
+ */
52
+ cachePath = "";
53
+ /**
54
+ * Whether imports have been transformed to cache paths
55
+ */
56
+ importsTransformed = false;
57
+ /**
58
+ * File state
59
+ */
60
+ state = "idle";
61
+ /**
62
+ * Constructor
63
+ */
64
+ constructor(absolutePath, files) {
65
+ this.absolutePath = absolutePath;
66
+ this.files = files;
67
+ }
68
+ /**
69
+ * Initialize the file manager
70
+ * @param fileManifest Optional manifest data from previous build
71
+ * @param filesMap Optional map of all FileManager instances (for import transformation)
72
+ */
73
+ async init(fileManifest) {
74
+ this.state = "loading";
75
+ // No manifest = fresh file, load from disk
76
+ if (!fileManifest) {
77
+ await this.loadFromDisk();
78
+ // Import transformation will happen later in FilesOrchestrator.transformAllImports()
79
+ // after all files are processed and available in the files map
80
+ return;
81
+ }
82
+ // Manifest exists = check if file changed since last build
83
+ await this.loadFromManifest(fileManifest);
84
+ // Import transformation will happen later in FilesOrchestrator.transformAllImports()
85
+ // for files that were reprocessed (importsTransformed = false)
86
+ }
87
+ /**
88
+ * Load file with manifest data (check if changed)
89
+ */
90
+ async loadFromManifest(fileManifest) {
91
+ // Set basic properties from manifest
92
+ this.relativePath =
93
+ fileManifest.relativePath || Path.toRelative(this.absolutePath);
94
+ this.version = fileManifest.version || 0;
95
+ this.type = fileManifest.type;
96
+ this.layer = fileManifest.layer;
97
+ this.cachePath =
98
+ fileManifest.cachePath ||
99
+ this.relativePath.replace(/\//g, "-").replace(/\.(ts|tsx)$/, ".js");
100
+ // Check if file still exists
101
+ try {
102
+ this.source = await getFileAsync(this.absolutePath);
103
+ }
104
+ catch (error) {
105
+ this.state = "deleted";
106
+ return;
107
+ }
108
+ // Calculate current hash
109
+ const currentHash = crypto
110
+ .createHash("sha256")
111
+ .update(this.source)
112
+ .digest("hex");
113
+ const currentLastModified = (await lastModifiedAsync(this.absolutePath)).getTime();
114
+ // Compare with manifest data
115
+ const hasChanged = currentHash !== fileManifest.hash;
116
+ if (hasChanged) {
117
+ // File changed - reprocess it
118
+ this.hash = currentHash;
119
+ this.lastModified = currentLastModified;
120
+ this.version++;
121
+ await this.processFile();
122
+ }
123
+ else {
124
+ // File unchanged - load from cache
125
+ this.hash = fileManifest.hash;
126
+ this.lastModified = fileManifest.lastModified;
127
+ this.dependencies = new Set(fileManifest.dependencies || []);
128
+ this.dependents = new Set(fileManifest.dependents || []);
129
+ // Load cached transpiled code
130
+ try {
131
+ this.transpiled = await getFileAsync(warlockCachePath(this.cachePath));
132
+ // Cached files already have transformed imports
133
+ this.importsTransformed = true;
134
+ }
135
+ catch (error) {
136
+ // Cache missing - retranspile
137
+ await this.processFile();
138
+ // Will need import transformation
139
+ this.importsTransformed = false;
140
+ }
141
+ }
142
+ this.state = "ready";
143
+ events.trigger(DEV_SERVER_EVENTS.FILE_READY, this);
144
+ }
145
+ /**
146
+ * Load file from disk (fresh, no manifest)
147
+ */
148
+ async loadFromDisk() {
149
+ this.source = await getFileAsync(this.absolutePath);
150
+ this.hash = crypto.createHash("sha256").update(this.source).digest("hex");
151
+ this.relativePath = Path.toRelative(this.absolutePath);
152
+ this.lastModified = (await lastModifiedAsync(this.absolutePath)).getTime();
153
+ this.version = 0;
154
+ this.detectFileTypeAndLayer();
155
+ // Generate cache path (replace / with - and change extension to .js)
156
+ this.cachePath = this.relativePath
157
+ .replace(/\//g, "-")
158
+ .replace(/\.(ts|tsx)$/, ".js");
159
+ await this.processFile();
160
+ this.state = "ready";
161
+ events.trigger(DEV_SERVER_EVENTS.FILE_READY, this);
162
+ }
163
+ /**
164
+ * Process file: parse imports first, then transpile
165
+ */
166
+ async processFile() {
167
+ // STEP 1: Parse imports from source (must be first to get dependencies)
168
+ const importMap = await parseImports(this.source, this.absolutePath);
169
+ // Store dependencies as relative paths
170
+ this.dependencies = new Set(Array.from(importMap.values()).map(absPath => Path.toRelative(absPath)));
171
+ // Store import map for later use in import transformation
172
+ this.importMap = importMap;
173
+ // STEP 2: Transpile source code
174
+ this.transpiled = await transpile(this);
175
+ // STEP 3: Save transpiled code to cache
176
+ await putFileAsync(warlockCachePath(this.cachePath), this.transpiled);
177
+ }
178
+ /**
179
+ * Detect file type and layer based on path
180
+ */
181
+ detectFileTypeAndLayer() {
182
+ // Main entry files
183
+ if (this.relativePath.includes("main.ts") ||
184
+ this.relativePath.includes("main.tsx")) {
185
+ this.type = "main";
186
+ this.layer = "HMR";
187
+ return;
188
+ }
189
+ // Config files - FSR but handled specially (reload config + restart affected connectors)
190
+ if (this.relativePath.startsWith("src/config/")) {
191
+ this.type = "config";
192
+ this.layer = "HMR";
193
+ return;
194
+ }
195
+ // Routes files
196
+ if (this.relativePath.endsWith("routes.ts") ||
197
+ this.relativePath.endsWith("routes.tsx")) {
198
+ this.type = "route";
199
+ this.layer = "HMR"; // For now FSR, will be HMR with wildcard routing
200
+ return;
201
+ }
202
+ // Event files
203
+ if (this.relativePath.includes("/events/")) {
204
+ this.type = "event";
205
+ this.layer = "HMR";
206
+ return;
207
+ }
208
+ // Controllers
209
+ if (this.relativePath.includes("controller")) {
210
+ this.type = "controller";
211
+ this.layer = "HMR";
212
+ return;
213
+ }
214
+ // Services
215
+ if (this.relativePath.includes("service")) {
216
+ this.type = "service";
217
+ this.layer = "HMR";
218
+ return;
219
+ }
220
+ // Models
221
+ if (this.relativePath.includes("model")) {
222
+ this.type = "model";
223
+ this.layer = "HMR";
224
+ return;
225
+ }
226
+ // Default: other files use HMR
227
+ this.type = "other";
228
+ this.layer = "HMR";
229
+ }
230
+ /**
231
+ * Update file when changed during development
232
+ */
233
+ async update() {
234
+ performance.now();
235
+ const newSource = await getFileAsync(this.absolutePath);
236
+ // No change in content
237
+ if (newSource.trim() === this.source.trim()) {
238
+ return false;
239
+ }
240
+ this.state = "updating";
241
+ this.source = newSource;
242
+ this.version++;
243
+ // Update hash and last modified
244
+ this.hash = crypto.createHash("sha256").update(this.source).digest("hex");
245
+ this.lastModified = (await lastModifiedAsync(this.absolutePath)).getTime();
246
+ // Reprocess file
247
+ await this.processFile();
248
+ // Transform imports if filesMap is provided
249
+ if (this.dependencies.size > 0) {
250
+ this.importsTransformed = false;
251
+ await this.transformImports();
252
+ }
253
+ this.state = "ready";
254
+ return true;
255
+ }
256
+ /**
257
+ * Force reprocess file even if source hasn't changed
258
+ * Useful when dependencies become available (e.g., missing file is added back)
259
+ */
260
+ async forceReprocess() {
261
+ this.state = "updating";
262
+ this.version++;
263
+ // Reprocess file (re-parse imports, retranspile, transform imports)
264
+ await this.processFile();
265
+ // Transform imports
266
+ if (this.dependencies.size > 0) {
267
+ this.importsTransformed = false;
268
+ await this.transformImports();
269
+ }
270
+ this.state = "ready";
271
+ }
272
+ /**
273
+ * Transform imports in transpiled code to use cache paths
274
+ */
275
+ async transformImports() {
276
+ if (this.importsTransformed) {
277
+ return; // Already transformed
278
+ }
279
+ try {
280
+ // Transform imports in transpiled code
281
+ const transformedCode = transformImports(this, this.files);
282
+ // Update the transpiled code
283
+ this.transpiled = transformedCode;
284
+ // Save the transformed code back to cache
285
+ await putFileAsync(warlockCachePath(this.cachePath), transformedCode);
286
+ // Mark as transformed
287
+ this.importsTransformed = true;
288
+ }
289
+ catch (error) {
290
+ throw error;
291
+ }
292
+ }
293
+ /**
294
+ * Export file data as manifest entry
295
+ * Note: source and transpiled code are NOT stored in manifest
296
+ * - Source code is in the original file
297
+ * - Transpiled code is in .warlock/cache/
298
+ * - Hash is used to detect changes
299
+ */
300
+ toManifest() {
301
+ return {
302
+ absolutePath: this.absolutePath,
303
+ relativePath: this.relativePath,
304
+ lastModified: this.lastModified,
305
+ hash: this.hash,
306
+ dependencies: Array.from(this.dependencies),
307
+ dependents: Array.from(this.dependents),
308
+ version: this.version,
309
+ type: this.type,
310
+ layer: this.layer,
311
+ cachePath: this.cachePath,
312
+ };
313
+ }
314
+ }export{FileManager};//# sourceMappingURL=file-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-manager.js","sources":["../../src/dev2-server/file-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"6YAWa,WAAW,CAAA;AAgEJ,IAAA,YAAA,CAAA;AACT,IAAA,KAAA,CAAA;AAhET;;AAEG;IACI,YAAY,GAAG,EAAE,CAAC;AACzB;;AAEG;IACI,YAAY,GAAG,CAAC,CAAC;AACxB;;AAEG;IACI,IAAI,GAAG,EAAE,CAAC;AACjB;;AAEG;IACI,MAAM,GAAG,EAAE,CAAC;AACnB;;AAEG;IACI,UAAU,GAAG,EAAE,CAAC;AACvB;;AAEG;AACI,IAAA,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AACxC;;;AAGG;AACI,IAAA,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC7C;;AAEG;AACI,IAAA,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;AACtC;;AAEG;IACI,OAAO,GAAG,CAAC,CAAC;AACnB;;AAEG;AACI,IAAA,IAAI,CAAuB;AAClC;;AAEG;AACI,IAAA,KAAK,CAAwB;AACpC;;AAEG;IACI,SAAS,GAAG,EAAE,CAAC;AACtB;;AAEG;IACI,kBAAkB,GAAG,KAAK,CAAC;AAElC;;AAEG;IACI,KAAK,GAAc,MAAM,CAAC;AAEjC;;AAEG;IACH,WACkB,CAAA,YAAoB,EAC7B,KAA+B,EAAA;QADtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAQ;QAC7B,IAAK,CAAA,KAAA,GAAL,KAAK,CAA0B;KACpC;AAEJ;;;;AAIG;IACI,MAAM,IAAI,CAAC,YAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;;QAGvB,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;;;YAG1B,OAAO;AACR,SAAA;;AAGD,QAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;;KAG3C;AAED;;AAEG;IACO,MAAM,gBAAgB,CAAC,YAAmC,EAAA;;AAElE,QAAA,IAAI,CAAC,YAAY;YACf,YAAY,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,YAAY,CAAC,SAAS;AACtB,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;;QAGtE,IAAI;YACF,IAAI,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,OAAO;AACR,SAAA;;QAGD,MAAM,WAAW,GAAG,MAAM;aACvB,UAAU,CAAC,QAAQ,CAAC;AACpB,aAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aACnB,MAAM,CAAC,KAAK,CAAC,CAAC;AACjB,QAAA,MAAM,mBAAmB,GAAG,CAC1B,MAAM,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAC1C,OAAO,EAAE,CAAC;;AAGZ,QAAA,MAAM,UAAU,GAAG,WAAW,KAAK,YAAY,CAAC,IAAI,CAAC;AAErD,QAAA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;YACxC,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,YAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1B,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAa,CAAC;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;;YAGzD,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;AAEvE,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;;AAEd,gBAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;AAEzB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACjC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACpD;AAED;;AAEG;AACO,IAAA,MAAM,YAAY,GAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;AAC3E,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAEjB,IAAI,CAAC,sBAAsB,EAAE,CAAC;;AAG9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY;AAC/B,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,aAAA,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAEjC,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACpD;AAED;;AAEG;AACO,IAAA,MAAM,WAAW,GAAA;;AAEzB,QAAA,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;;AAGrE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CACzB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CACxE,CAAC;;AAGF,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;QAG3B,IAAI,CAAC,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;;AAGxC,QAAA,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACvE;AAED;;AAEG;IACO,sBAAsB,GAAA;;AAE9B,QAAA,IACE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EACtC;AACA,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO;AACR,SAAA;;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO;AACR,SAAA;;AAGD,QAAA,IACE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EACxC;AACA,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO;AACR,SAAA;;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO;AACR,SAAA;;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO;AACR,SAAA;;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO;AACR,SAAA;;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;AACjB,QAAY,WAAW,CAAC,GAAG,GAAG;QAC9B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;QAGxD,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;AAC3C,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;;QAGf,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;;AAG3E,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;AAGzB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAEhC,YAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;AACI,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;;AAGf,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;AAGzB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,YAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;KACtB;AAED;;AAEG;AACK,IAAA,MAAM,gBAAgB,GAAA;QAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,OAAO;AACR,SAAA;QAED,IAAI;;YAEF,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;AAG3D,YAAA,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;;YAGlC,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;;AAGtE,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,KAAK,CAAC;AACb,SAAA;KACF;AAED;;;;;;AAMG;IACI,UAAU,GAAA;QACf,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAC3C,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAK;YAChB,KAAK,EAAE,IAAI,CAAC,KAAM;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;KACH;AACF"}
@@ -0,0 +1,54 @@
1
+ import type { DependencyGraph } from "./dependency-graph";
2
+ import { FileManager } from "./file-manager";
3
+ import type { ManifestManager } from "./manifest-manager";
4
+ import type { SpecialFilesCollector } from "./special-files-collector";
5
+ /**
6
+ * FileOperations
7
+ * Handles file lifecycle operations: add, update, delete
8
+ *
9
+ * Responsibilities:
10
+ * - Create/update/delete FileManager instances
11
+ * - Manage cache files
12
+ * - Update dependency graph
13
+ * - Update special files collector
14
+ * - Trigger events
15
+ */
16
+ export declare class FileOperations {
17
+ private readonly files;
18
+ private readonly dependencyGraph;
19
+ private readonly manifest;
20
+ private readonly specialFilesCollector;
21
+ constructor(files: Map<string, FileManager>, dependencyGraph: DependencyGraph, manifest: ManifestManager, specialFilesCollector: SpecialFilesCollector);
22
+ /**
23
+ * Add a new file to the system
24
+ * @param relativePath - Relative path of the file
25
+ * @returns The created FileManager instance
26
+ */
27
+ addFile(relativePath: string): Promise<FileManager>;
28
+ /**
29
+ * Reload files that might have been waiting for this dependency
30
+ * When a file is added, check if any existing files have imports
31
+ * that could now resolve to this new file
32
+ */
33
+ private reloadFilesWaitingForDependency;
34
+ /**
35
+ * Update an existing file
36
+ * @param relativePath - Relative path of the file
37
+ * @returns True if file was changed, false if unchanged
38
+ */
39
+ updateFile(relativePath: string): Promise<boolean>;
40
+ /**
41
+ * Delete a file from the system
42
+ * @param relativePath - Relative path of the file
43
+ */
44
+ deleteFile(relativePath: string): Promise<void>;
45
+ /**
46
+ * Update dependents in all FileManager instances from dependency graph
47
+ */
48
+ updateFileDependents(): void;
49
+ /**
50
+ * Sync all FileManager instances to manifest
51
+ */
52
+ syncFilesToManifest(): void;
53
+ }
54
+ //# sourceMappingURL=file-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../src/dev2-server/file-operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAHrB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAC/B,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,eAAe,EACzB,qBAAqB,EAAE,qBAAqB;IAG/D;;;;OAIG;IACU,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiChE;;;;OAIG;YACW,+BAA+B;IAiD7C;;;;OAIG;IACU,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC/D;;;OAGG;IACU,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC5D;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAOnC;;OAEG;IACI,mBAAmB,IAAI,IAAI;CAKnC"}
@@ -0,0 +1,191 @@
1
+ import events from'@mongez/events';import {unlinkAsync}from'@mongez/fs';import {DEV_SERVER_EVENTS}from'./events.js';import {FileManager}from'./file-manager.js';import {Path}from'./path.js';import {areSetsEqual,warlockCachePath}from'./utils.js';/**
2
+ * FileOperations
3
+ * Handles file lifecycle operations: add, update, delete
4
+ *
5
+ * Responsibilities:
6
+ * - Create/update/delete FileManager instances
7
+ * - Manage cache files
8
+ * - Update dependency graph
9
+ * - Update special files collector
10
+ * - Trigger events
11
+ */
12
+ class FileOperations {
13
+ files;
14
+ dependencyGraph;
15
+ manifest;
16
+ specialFilesCollector;
17
+ constructor(files, dependencyGraph, manifest, specialFilesCollector) {
18
+ this.files = files;
19
+ this.dependencyGraph = dependencyGraph;
20
+ this.manifest = manifest;
21
+ this.specialFilesCollector = specialFilesCollector;
22
+ }
23
+ /**
24
+ * Add a new file to the system
25
+ * @param relativePath - Relative path of the file
26
+ * @returns The created FileManager instance
27
+ */
28
+ async addFile(relativePath) {
29
+ // Check if already tracked
30
+ if (this.files.has(relativePath)) {
31
+ throw new Error(`File already exists: ${relativePath}`);
32
+ }
33
+ const absolutePath = Path.toAbsolute(relativePath);
34
+ const fileManager = new FileManager(absolutePath, this.files);
35
+ // Add to tracking
36
+ this.files.set(relativePath, fileManager);
37
+ // Initialize the file (load, transpile, transform imports)
38
+ await fileManager.init();
39
+ // Add to dependency graph
40
+ for (const dependency of fileManager.dependencies) {
41
+ this.dependencyGraph.addDependency(relativePath, dependency);
42
+ }
43
+ // Add to special files collector
44
+ this.specialFilesCollector?.addFile(fileManager);
45
+ // Check if any existing files were waiting for this dependency
46
+ // (i.e., they have broken imports that can now be resolved)
47
+ await this.reloadFilesWaitingForDependency(relativePath);
48
+ // Trigger event
49
+ events.trigger(DEV_SERVER_EVENTS.FILE_READY, fileManager);
50
+ return fileManager;
51
+ }
52
+ /**
53
+ * Reload files that might have been waiting for this dependency
54
+ * When a file is added, check if any existing files have imports
55
+ * that could now resolve to this new file
56
+ */
57
+ async reloadFilesWaitingForDependency(newFilePath) {
58
+ const { parseImports } = await import('./parse-imports.js');
59
+ const newFileRelativePath = newFilePath;
60
+ const potentialDependents = [];
61
+ // Check all existing files to see if any of their imports could resolve to the new file
62
+ for (const [existingPath, existingFile] of this.files) {
63
+ if (existingPath === newFilePath)
64
+ continue;
65
+ // Re-parse imports from the source to check if any could resolve to the new file
66
+ try {
67
+ const importMap = await parseImports(existingFile.source, existingFile.absolutePath);
68
+ // Check if any import in the map resolves to the new file
69
+ for (const [importPath, resolvedPath] of importMap) {
70
+ if (resolvedPath && Path.toRelative(resolvedPath) === newFileRelativePath) {
71
+ // This import could now be resolved! Add to dependents
72
+ potentialDependents.push(existingPath);
73
+ break; // Found a match, no need to check other imports
74
+ }
75
+ }
76
+ }
77
+ catch (error) {
78
+ // Skip files that can't be parsed
79
+ continue;
80
+ }
81
+ }
82
+ // Retranspile and reload potential dependents
83
+ if (potentialDependents.length > 0) {
84
+ for (const dependentPath of potentialDependents) {
85
+ const dependentFile = this.files.get(dependentPath);
86
+ if (dependentFile) {
87
+ try {
88
+ // Force reprocess to re-parse imports and resolve to new file
89
+ await dependentFile.forceReprocess();
90
+ // Update dependency graph
91
+ this.dependencyGraph.updateFile(dependentPath, dependentFile.dependencies);
92
+ // Trigger reload event
93
+ events.trigger(DEV_SERVER_EVENTS.FILE_READY, dependentFile);
94
+ }
95
+ catch (error) {
96
+ // Ignore errors - the file might still have broken imports
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * Update an existing file
104
+ * @param relativePath - Relative path of the file
105
+ * @returns True if file was changed, false if unchanged
106
+ */
107
+ async updateFile(relativePath) {
108
+ const fileManager = this.files.get(relativePath);
109
+ if (!fileManager) {
110
+ // File not tracked, treat as new file
111
+ await this.addFile(relativePath);
112
+ return true;
113
+ }
114
+ // Store old dependencies
115
+ const oldDependencies = new Set(fileManager.dependencies);
116
+ try {
117
+ // Update the file
118
+ const hasChanged = await fileManager.update();
119
+ if (!hasChanged) {
120
+ return false;
121
+ }
122
+ // Update dependency graph if dependencies changed
123
+ const newDependencies = fileManager.dependencies;
124
+ if (!areSetsEqual(oldDependencies, newDependencies)) {
125
+ this.dependencyGraph.updateFile(relativePath, newDependencies);
126
+ }
127
+ // Update special files collector
128
+ this.specialFilesCollector.updateFile(fileManager);
129
+ // Trigger event
130
+ events.trigger(DEV_SERVER_EVENTS.FILE_READY, fileManager);
131
+ return true;
132
+ }
133
+ catch (error) {
134
+ // Failed to update (likely broken imports)
135
+ // Don't trigger FILE_READY event for broken files
136
+ return false;
137
+ }
138
+ }
139
+ /**
140
+ * Delete a file from the system
141
+ * @param relativePath - Relative path of the file
142
+ */
143
+ async deleteFile(relativePath) {
144
+ const fileManager = this.files.get(relativePath);
145
+ if (!fileManager) {
146
+ return;
147
+ }
148
+ // Get dependents before removing (so we can notify them)
149
+ const dependents = this.dependencyGraph.getDependents(relativePath);
150
+ // Delete cache file
151
+ try {
152
+ const cachePath = warlockCachePath(fileManager.cachePath);
153
+ await unlinkAsync(cachePath);
154
+ }
155
+ catch (error) {
156
+ // Cache file might not exist, ignore
157
+ }
158
+ // Remove from dependency graph
159
+ this.dependencyGraph.removeFile(relativePath);
160
+ // Remove from special files collector
161
+ this.specialFilesCollector.removeFile(relativePath);
162
+ // Remove from tracking
163
+ this.files.delete(relativePath);
164
+ this.manifest.removeFile(relativePath);
165
+ // Trigger reload of dependents so they see the broken import error
166
+ for (const dependentPath of dependents) {
167
+ const dependentFile = this.files.get(dependentPath);
168
+ if (dependentFile) {
169
+ // Trigger event to reload the dependent (will fail with import error)
170
+ events.trigger(DEV_SERVER_EVENTS.FILE_READY, dependentFile);
171
+ }
172
+ }
173
+ }
174
+ /**
175
+ * Update dependents in all FileManager instances from dependency graph
176
+ */
177
+ updateFileDependents() {
178
+ for (const [relativePath, fileManager] of this.files) {
179
+ const dependents = this.dependencyGraph.getDependents(relativePath);
180
+ fileManager.dependents = dependents;
181
+ }
182
+ }
183
+ /**
184
+ * Sync all FileManager instances to manifest
185
+ */
186
+ syncFilesToManifest() {
187
+ for (const [relativePath, fileManager] of this.files) {
188
+ this.manifest.setFile(relativePath, fileManager.toManifest());
189
+ }
190
+ }
191
+ }export{FileOperations};//# sourceMappingURL=file-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-operations.js","sources":["../../src/dev2-server/file-operations.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { DependencyGraph } from "./dependency-graph";
2
+ import { FileManager } from "./file-manager";
3
+ import type { SpecialFilesCollector } from "./special-files-collector";
4
+ export declare class FilesOrchestrator {
5
+ private readonly files;
6
+ private readonly manifest;
7
+ private readonly dependencyGraph;
8
+ private readonly healthChecker;
9
+ private readonly filesWatcher;
10
+ private readonly fileOperations;
11
+ private readonly eventHandler;
12
+ private readonly specialFilesCollector;
13
+ /**
14
+ * Set the special files collector
15
+ * This should be called before starting file watching
16
+ */
17
+ constructor(collector: SpecialFilesCollector);
18
+ /**
19
+ * Get the dependency graph
20
+ * Provides read-only access to the dependency graph for external use
21
+ */
22
+ getDependencyGraph(): DependencyGraph;
23
+ /**
24
+ * Get invalidation chain for a file
25
+ * Returns all files that need to be reloaded when the given file changes
26
+ */
27
+ getInvalidationChain(file: string): string[];
28
+ /**
29
+ * Get all tracked files
30
+ */
31
+ getFiles(): Map<string, FileManager>;
32
+ /**
33
+ * Initialize the files orchestrator
34
+ */
35
+ init(): Promise<void>;
36
+ /**
37
+ * Get all TypeScript/JavaScript files from the filesystem
38
+ * This always scans the actual filesystem, ignoring any cached data
39
+ * @returns Array of relative file paths
40
+ */
41
+ private getAllFilesFromFilesystem;
42
+ /**
43
+ * Process all files fresh (no manifest exists)
44
+ * This happens on first run or when manifest is deleted
45
+ * @param filePaths Array of relative file paths
46
+ */
47
+ private processAllFilesFresh;
48
+ /**
49
+ * Reconcile filesystem state with manifest data
50
+ * This handles: new files, deleted files, and changed files
51
+ */
52
+ private reconcileFiles;
53
+ /**
54
+ * Process newly discovered files
55
+ * @param filePaths Array of relative file paths
56
+ */
57
+ private processNewFiles;
58
+ /**
59
+ * Remove deleted files from tracking
60
+ * @param filePaths Array of relative file paths
61
+ */
62
+ private processDeletedFiles;
63
+ /**
64
+ * Process existing files (check if they changed since last run)
65
+ * @param filePaths Array of relative file paths
66
+ */
67
+ private processExistingFiles;
68
+ /**
69
+ * Update dependents in all FileManager instances from dependency graph
70
+ */
71
+ private updateFileDependents;
72
+ /**
73
+ * Sync all FileManager instances to manifest
74
+ * Uses relative paths as keys for portability
75
+ */
76
+ private syncFilesToManifest;
77
+ /**
78
+ * Start file watcher to detect changes during development
79
+ */
80
+ private startFileWatcher;
81
+ /**
82
+ * Transform all imports to use cache paths
83
+ * This is called AFTER all files are processed and transpiled
84
+ * Only transforms files that haven't been transformed yet (freshly transpiled)
85
+ */
86
+ private transformAllImports;
87
+ }
88
+ //# sourceMappingURL=files-orchestrator.d.ts.map