@warlock.js/core 4.1.15 → 4.2.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 (781) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/LICENSE +21 -0
  3. package/esm/application/app.d.mts +1 -1
  4. package/esm/application/app.d.mts.map +1 -1
  5. package/esm/application/app.mjs +1 -1
  6. package/esm/application/app.mjs.map +1 -1
  7. package/esm/application/application-config-types.d.mts +1 -1
  8. package/esm/application/application-config-types.d.mts.map +1 -1
  9. package/esm/application/application.d.mts +1 -1
  10. package/esm/application/application.d.mts.map +1 -1
  11. package/esm/application/application.mjs +1 -1
  12. package/esm/application/application.mjs.map +1 -1
  13. package/esm/benchmark/benchmark-snapshots.d.mts +1 -1
  14. package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
  15. package/esm/benchmark/benchmark-snapshots.mjs +1 -1
  16. package/esm/benchmark/benchmark-snapshots.mjs.map +1 -1
  17. package/esm/benchmark/benchmark.d.mts +1 -1
  18. package/esm/benchmark/benchmark.d.mts.map +1 -1
  19. package/esm/benchmark/benchmark.mjs +1 -1
  20. package/esm/benchmark/benchmark.mjs.map +1 -1
  21. package/esm/benchmark/channels/console.channel.d.mts +1 -1
  22. package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
  23. package/esm/benchmark/channels/console.channel.mjs +1 -1
  24. package/esm/benchmark/channels/console.channel.mjs.map +1 -1
  25. package/esm/benchmark/channels/noop.channel.d.mts +1 -1
  26. package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
  27. package/esm/benchmark/channels/noop.channel.mjs +1 -1
  28. package/esm/benchmark/channels/noop.channel.mjs.map +1 -1
  29. package/esm/benchmark/profiler.d.mts +1 -1
  30. package/esm/benchmark/profiler.d.mts.map +1 -1
  31. package/esm/benchmark/profiler.mjs +1 -1
  32. package/esm/benchmark/profiler.mjs.map +1 -1
  33. package/esm/benchmark/types.d.mts +1 -1
  34. package/esm/benchmark/types.d.mts.map +1 -1
  35. package/esm/bootstrap/setup.d.mts +1 -1
  36. package/esm/bootstrap/setup.d.mts.map +1 -1
  37. package/esm/bootstrap/setup.mjs +1 -1
  38. package/esm/bootstrap/setup.mjs.map +1 -1
  39. package/esm/bootstrap.d.mts +1 -1
  40. package/esm/bootstrap.d.mts.map +1 -1
  41. package/esm/bootstrap.mjs +1 -1
  42. package/esm/bootstrap.mjs.map +1 -1
  43. package/esm/cache/database-cache-driver.d.mts +1 -1
  44. package/esm/cache/database-cache-driver.d.mts.map +1 -1
  45. package/esm/cache/database-cache-driver.mjs +1 -1
  46. package/esm/cache/database-cache-driver.mjs.map +1 -1
  47. package/esm/cache/index.mjs +1 -1
  48. package/esm/cache/index.mjs.map +1 -1
  49. package/esm/cli/cli-command.d.mts +1 -1
  50. package/esm/cli/cli-command.d.mts.map +1 -1
  51. package/esm/cli/cli-command.mjs +1 -1
  52. package/esm/cli/cli-command.mjs.map +1 -1
  53. package/esm/cli/types.d.mts +1 -1
  54. package/esm/cli/types.d.mts.map +1 -1
  55. package/esm/config/config-getter.d.mts +1 -1
  56. package/esm/config/config-getter.d.mts.map +1 -1
  57. package/esm/config/config-getter.mjs +6 -6
  58. package/esm/config/config-getter.mjs.map +1 -1
  59. package/esm/config/config-handlers.d.mts +1 -1
  60. package/esm/config/config-handlers.d.mts.map +1 -1
  61. package/esm/config/config-handlers.mjs +1 -1
  62. package/esm/config/config-handlers.mjs.map +1 -1
  63. package/esm/config/config-loader.d.mts +1 -1
  64. package/esm/config/config-loader.d.mts.map +1 -1
  65. package/esm/config/config-loader.mjs +3 -3
  66. package/esm/config/config-loader.mjs.map +1 -1
  67. package/esm/config/config-manager.mjs +1 -1
  68. package/esm/config/config-manager.mjs.map +1 -1
  69. package/esm/config/config-special-handlers.d.mts +1 -1
  70. package/esm/config/config-special-handlers.d.mts.map +1 -1
  71. package/esm/config/config-special-handlers.mjs +1 -1
  72. package/esm/config/config-special-handlers.mjs.map +1 -1
  73. package/esm/config/load-config-files.mjs +1 -1
  74. package/esm/config/load-config-files.mjs.map +1 -1
  75. package/esm/config/types.d.mts +1 -1
  76. package/esm/config/types.d.mts.map +1 -1
  77. package/esm/connectors/access-connector.d.mts +39 -0
  78. package/esm/connectors/access-connector.d.mts.map +1 -0
  79. package/esm/connectors/access-connector.mjs +54 -0
  80. package/esm/connectors/access-connector.mjs.map +1 -0
  81. package/esm/connectors/base-connector.d.mts +1 -1
  82. package/esm/connectors/base-connector.d.mts.map +1 -1
  83. package/esm/connectors/base-connector.mjs +1 -1
  84. package/esm/connectors/base-connector.mjs.map +1 -1
  85. package/esm/connectors/cache-connector.d.mts +1 -1
  86. package/esm/connectors/cache-connector.d.mts.map +1 -1
  87. package/esm/connectors/cache-connector.mjs +3 -3
  88. package/esm/connectors/cache-connector.mjs.map +1 -1
  89. package/esm/connectors/connectors-manager.d.mts +1 -1
  90. package/esm/connectors/connectors-manager.d.mts.map +1 -1
  91. package/esm/connectors/connectors-manager.mjs +5 -1
  92. package/esm/connectors/connectors-manager.mjs.map +1 -1
  93. package/esm/connectors/database-connector.d.mts +1 -1
  94. package/esm/connectors/database-connector.d.mts.map +1 -1
  95. package/esm/connectors/database-connector.mjs +3 -3
  96. package/esm/connectors/database-connector.mjs.map +1 -1
  97. package/esm/connectors/herald-connector.d.mts +1 -1
  98. package/esm/connectors/herald-connector.d.mts.map +1 -1
  99. package/esm/connectors/herald-connector.mjs +4 -4
  100. package/esm/connectors/herald-connector.mjs.map +1 -1
  101. package/esm/connectors/http-connector.d.mts +1 -1
  102. package/esm/connectors/http-connector.d.mts.map +1 -1
  103. package/esm/connectors/http-connector.mjs +8 -6
  104. package/esm/connectors/http-connector.mjs.map +1 -1
  105. package/esm/connectors/index.d.mts +2 -0
  106. package/esm/connectors/index.mjs +2 -0
  107. package/esm/connectors/logger-connector.d.mts +1 -1
  108. package/esm/connectors/logger-connector.d.mts.map +1 -1
  109. package/esm/connectors/logger-connector.mjs +3 -3
  110. package/esm/connectors/logger-connector.mjs.map +1 -1
  111. package/esm/connectors/mail-connector.d.mts +1 -1
  112. package/esm/connectors/mail-connector.d.mts.map +1 -1
  113. package/esm/connectors/mail-connector.mjs +3 -3
  114. package/esm/connectors/mail-connector.mjs.map +1 -1
  115. package/esm/connectors/notifications-connector.d.mts +38 -0
  116. package/esm/connectors/notifications-connector.d.mts.map +1 -0
  117. package/esm/connectors/notifications-connector.mjs +51 -0
  118. package/esm/connectors/notifications-connector.mjs.map +1 -0
  119. package/esm/connectors/socket-connector.d.mts +1 -1
  120. package/esm/connectors/socket-connector.d.mts.map +1 -1
  121. package/esm/connectors/socket-connector.mjs +4 -4
  122. package/esm/connectors/socket-connector.mjs.map +1 -1
  123. package/esm/connectors/storage.connector.d.mts +1 -1
  124. package/esm/connectors/storage.connector.d.mts.map +1 -1
  125. package/esm/connectors/storage.connector.mjs +1 -1
  126. package/esm/connectors/storage.connector.mjs.map +1 -1
  127. package/esm/connectors/types.d.mts +5 -3
  128. package/esm/connectors/types.d.mts.map +1 -1
  129. package/esm/connectors/types.mjs +3 -1
  130. package/esm/connectors/types.mjs.map +1 -1
  131. package/esm/container/index.d.mts +1 -1
  132. package/esm/container/index.d.mts.map +1 -1
  133. package/esm/container/index.mjs +1 -1
  134. package/esm/container/index.mjs.map +1 -1
  135. package/esm/database/models/database-log/database-log.d.mts +1 -1
  136. package/esm/database/models/database-log/database-log.d.mts.map +1 -1
  137. package/esm/database/models/database-log/database-log.mjs +1 -1
  138. package/esm/database/models/database-log/database-log.mjs.map +1 -1
  139. package/esm/database/seeds/seeder.d.mts +1 -1
  140. package/esm/database/seeds/seeder.d.mts.map +1 -1
  141. package/esm/database/seeds/seeder.mjs +1 -1
  142. package/esm/database/seeds/seeder.mjs.map +1 -1
  143. package/esm/database/seeds/types.d.mts +1 -1
  144. package/esm/database/seeds/types.d.mts.map +1 -1
  145. package/esm/database/utils.d.mts +1 -1
  146. package/esm/database/utils.d.mts.map +1 -1
  147. package/esm/database/utils.mjs +1 -1
  148. package/esm/database/utils.mjs.map +1 -1
  149. package/esm/dev-server/create-worker.mjs +1 -1
  150. package/esm/dev-server/create-worker.mjs.map +1 -1
  151. package/esm/dev-server/dependency-graph.d.mts +1 -1
  152. package/esm/dev-server/dependency-graph.d.mts.map +1 -1
  153. package/esm/dev-server/dependency-graph.mjs +1 -1
  154. package/esm/dev-server/dependency-graph.mjs.map +1 -1
  155. package/esm/dev-server/dev-logger.mjs +2 -13
  156. package/esm/dev-server/dev-logger.mjs.map +1 -1
  157. package/esm/dev-server/events.mjs +1 -1
  158. package/esm/dev-server/events.mjs.map +1 -1
  159. package/esm/dev-server/file-event-handler.mjs +1 -1
  160. package/esm/dev-server/file-event-handler.mjs.map +1 -1
  161. package/esm/dev-server/file-manager.d.mts +1 -1
  162. package/esm/dev-server/file-manager.d.mts.map +1 -1
  163. package/esm/dev-server/file-manager.mjs +1 -1
  164. package/esm/dev-server/file-manager.mjs.map +1 -1
  165. package/esm/dev-server/file-operations.d.mts +1 -1
  166. package/esm/dev-server/file-operations.d.mts.map +1 -1
  167. package/esm/dev-server/file-operations.mjs +1 -1
  168. package/esm/dev-server/file-operations.mjs.map +1 -1
  169. package/esm/dev-server/files-orchestrator.d.mts +1 -1
  170. package/esm/dev-server/files-orchestrator.d.mts.map +1 -1
  171. package/esm/dev-server/files-orchestrator.mjs +1 -1
  172. package/esm/dev-server/files-orchestrator.mjs.map +1 -1
  173. package/esm/dev-server/files-watcher.d.mts +1 -1
  174. package/esm/dev-server/files-watcher.d.mts.map +1 -1
  175. package/esm/dev-server/files-watcher.mjs +1 -1
  176. package/esm/dev-server/files-watcher.mjs.map +1 -1
  177. package/esm/dev-server/flags.mjs +1 -1
  178. package/esm/dev-server/flags.mjs.map +1 -1
  179. package/esm/dev-server/health-checker/checkers/base-health-checker.d.mts +1 -1
  180. package/esm/dev-server/health-checker/checkers/base-health-checker.d.mts.map +1 -1
  181. package/esm/dev-server/health-checker/checkers/base-health-checker.mjs +1 -1
  182. package/esm/dev-server/health-checker/checkers/base-health-checker.mjs.map +1 -1
  183. package/esm/dev-server/health-checker/checkers/eslint-health-checker.d.mts +1 -1
  184. package/esm/dev-server/health-checker/checkers/eslint-health-checker.d.mts.map +1 -1
  185. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +1 -1
  186. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
  187. package/esm/dev-server/health-checker/checkers/typescript-health-checker.d.mts +1 -1
  188. package/esm/dev-server/health-checker/checkers/typescript-health-checker.d.mts.map +1 -1
  189. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +1 -1
  190. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
  191. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +1 -1
  192. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
  193. package/esm/dev-server/health-checker/file-health-result.d.mts +1 -1
  194. package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
  195. package/esm/dev-server/health-checker/file-health-result.mjs +1 -1
  196. package/esm/dev-server/health-checker/file-health-result.mjs.map +1 -1
  197. package/esm/dev-server/health-checker/files-healthcare.manager.d.mts +1 -1
  198. package/esm/dev-server/health-checker/files-healthcare.manager.d.mts.map +1 -1
  199. package/esm/dev-server/health-checker/files-healthcare.manager.mjs +1 -1
  200. package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
  201. package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs +1 -1
  202. package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs.map +1 -1
  203. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +1 -1
  204. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
  205. package/esm/dev-server/loader/build-transpile-init.mjs +1 -1
  206. package/esm/dev-server/loader/build-transpile-init.mjs.map +1 -1
  207. package/esm/dev-server/loader/register-loader.mjs +1 -1
  208. package/esm/dev-server/loader/register-loader.mjs.map +1 -1
  209. package/esm/dev-server/loader/transpile-cache.mjs +2 -164
  210. package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
  211. package/esm/dev-server/manifest-manager.d.mts +1 -1
  212. package/esm/dev-server/manifest-manager.d.mts.map +1 -1
  213. package/esm/dev-server/manifest-manager.mjs +1 -1
  214. package/esm/dev-server/manifest-manager.mjs.map +1 -1
  215. package/esm/dev-server/module-loader.d.mts +1 -1
  216. package/esm/dev-server/module-loader.d.mts.map +1 -1
  217. package/esm/dev-server/module-loader.mjs +1 -1
  218. package/esm/dev-server/module-loader.mjs.map +1 -1
  219. package/esm/dev-server/package-json-manager.mjs +1 -1
  220. package/esm/dev-server/package-json-manager.mjs.map +1 -1
  221. package/esm/dev-server/parse-imports.mjs +1 -1
  222. package/esm/dev-server/parse-imports.mjs.map +1 -1
  223. package/esm/dev-server/path.mjs +1 -1
  224. package/esm/dev-server/path.mjs.map +1 -1
  225. package/esm/dev-server/special-files-collector.d.mts +1 -1
  226. package/esm/dev-server/special-files-collector.d.mts.map +1 -1
  227. package/esm/dev-server/special-files-collector.mjs +1 -1
  228. package/esm/dev-server/special-files-collector.mjs.map +1 -1
  229. package/esm/dev-server/tsconfig-manager.mjs +1 -1
  230. package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
  231. package/esm/dev-server/types.d.mts +1 -1
  232. package/esm/dev-server/types.d.mts.map +1 -1
  233. package/esm/dev-server/utils.mjs +1 -1
  234. package/esm/dev-server/utils.mjs.map +1 -1
  235. package/esm/encryption/encrypt.d.mts +1 -1
  236. package/esm/encryption/encrypt.d.mts.map +1 -1
  237. package/esm/encryption/encrypt.mjs +1 -1
  238. package/esm/encryption/encrypt.mjs.map +1 -1
  239. package/esm/encryption/hash.d.mts +1 -1
  240. package/esm/encryption/hash.d.mts.map +1 -1
  241. package/esm/encryption/hash.mjs +1 -1
  242. package/esm/encryption/hash.mjs.map +1 -1
  243. package/esm/encryption/password.d.mts +1 -1
  244. package/esm/encryption/password.d.mts.map +1 -1
  245. package/esm/encryption/password.mjs +1 -1
  246. package/esm/encryption/password.mjs.map +1 -1
  247. package/esm/encryption/types.d.mts +1 -1
  248. package/esm/encryption/types.d.mts.map +1 -1
  249. package/esm/http/config.d.mts +1 -1
  250. package/esm/http/config.d.mts.map +1 -1
  251. package/esm/http/config.mjs +3 -3
  252. package/esm/http/config.mjs.map +1 -1
  253. package/esm/http/context/request-context.d.mts +1 -1
  254. package/esm/http/context/request-context.d.mts.map +1 -1
  255. package/esm/http/context/request-context.mjs +1 -1
  256. package/esm/http/context/request-context.mjs.map +1 -1
  257. package/esm/http/createHttpApplication.d.mts +1 -1
  258. package/esm/http/createHttpApplication.d.mts.map +1 -1
  259. package/esm/http/createHttpApplication.mjs +3 -3
  260. package/esm/http/createHttpApplication.mjs.map +1 -1
  261. package/esm/http/database/RequestLog.d.mts +1 -1
  262. package/esm/http/database/RequestLog.d.mts.map +1 -1
  263. package/esm/http/database/RequestLog.mjs +1 -1
  264. package/esm/http/database/RequestLog.mjs.map +1 -1
  265. package/esm/http/error-codes.d.mts +1 -1
  266. package/esm/http/error-codes.d.mts.map +1 -1
  267. package/esm/http/error-codes.mjs +1 -1
  268. package/esm/http/error-codes.mjs.map +1 -1
  269. package/esm/http/errors/errors.d.mts +1 -1
  270. package/esm/http/errors/errors.d.mts.map +1 -1
  271. package/esm/http/errors/errors.mjs +1 -1
  272. package/esm/http/errors/errors.mjs.map +1 -1
  273. package/esm/http/events.d.mts +1 -1
  274. package/esm/http/events.d.mts.map +1 -1
  275. package/esm/http/events.mjs +1 -1
  276. package/esm/http/events.mjs.map +1 -1
  277. package/esm/http/middleware/cache-response-middleware.d.mts +1 -1
  278. package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
  279. package/esm/http/middleware/cache-response-middleware.mjs +1 -1
  280. package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
  281. package/esm/http/middleware/concurrency-limit.middleware.d.mts +1 -1
  282. package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
  283. package/esm/http/middleware/concurrency-limit.middleware.mjs +1 -1
  284. package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
  285. package/esm/http/middleware/idempotency.middleware.d.mts +1 -1
  286. package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
  287. package/esm/http/middleware/idempotency.middleware.mjs +6 -6
  288. package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
  289. package/esm/http/middleware/inject-request-context.d.mts +1 -1
  290. package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
  291. package/esm/http/middleware/inject-request-context.mjs +3 -3
  292. package/esm/http/middleware/inject-request-context.mjs.map +1 -1
  293. package/esm/http/middleware/ip-filter.middleware.d.mts +1 -1
  294. package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
  295. package/esm/http/middleware/ip-filter.middleware.mjs +1 -1
  296. package/esm/http/middleware/ip-filter.middleware.mjs.map +1 -1
  297. package/esm/http/middleware/maintenance.middleware.d.mts +1 -1
  298. package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
  299. package/esm/http/middleware/maintenance.middleware.mjs +5 -5
  300. package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
  301. package/esm/http/middleware/max-body-size.middleware.d.mts +1 -1
  302. package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
  303. package/esm/http/middleware/max-body-size.middleware.mjs +1 -1
  304. package/esm/http/middleware/max-body-size.middleware.mjs.map +1 -1
  305. package/esm/http/middleware/middleware-list.d.mts +1 -1
  306. package/esm/http/middleware/middleware-list.d.mts.map +1 -1
  307. package/esm/http/middleware/middleware-list.mjs +1 -1
  308. package/esm/http/middleware/middleware-list.mjs.map +1 -1
  309. package/esm/http/middleware/rate-limit.middleware.d.mts +1 -1
  310. package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
  311. package/esm/http/middleware/rate-limit.middleware.mjs +1 -1
  312. package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
  313. package/esm/http/middleware/utils/cidr-match.d.mts +1 -1
  314. package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
  315. package/esm/http/middleware/utils/cidr-match.mjs +1 -1
  316. package/esm/http/middleware/utils/cidr-match.mjs.map +1 -1
  317. package/esm/http/middleware/utils/idempotency-key.d.mts +1 -1
  318. package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
  319. package/esm/http/middleware/utils/idempotency-key.mjs +1 -1
  320. package/esm/http/middleware/utils/idempotency-key.mjs.map +1 -1
  321. package/esm/http/middleware/utils/parse-size.d.mts +1 -1
  322. package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
  323. package/esm/http/middleware/utils/parse-size.mjs +1 -1
  324. package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
  325. package/esm/http/plugins.d.mts +1 -1
  326. package/esm/http/plugins.d.mts.map +1 -1
  327. package/esm/http/plugins.mjs +10 -10
  328. package/esm/http/plugins.mjs.map +1 -1
  329. package/esm/http/request-controller.d.mts +1 -1
  330. package/esm/http/request-controller.d.mts.map +1 -1
  331. package/esm/http/request-controller.mjs +1 -1
  332. package/esm/http/request-controller.mjs.map +1 -1
  333. package/esm/http/request.d.mts +1 -1
  334. package/esm/http/request.d.mts.map +1 -1
  335. package/esm/http/request.mjs +1 -1
  336. package/esm/http/request.mjs.map +1 -1
  337. package/esm/http/response.d.mts +4 -4
  338. package/esm/http/response.d.mts.map +1 -1
  339. package/esm/http/response.mjs +6 -6
  340. package/esm/http/response.mjs.map +1 -1
  341. package/esm/http/server.d.mts +1 -1
  342. package/esm/http/server.d.mts.map +1 -1
  343. package/esm/http/server.mjs +3 -3
  344. package/esm/http/server.mjs.map +1 -1
  345. package/esm/http/types.d.mts +1 -1
  346. package/esm/http/types.d.mts.map +1 -1
  347. package/esm/http/uploaded-file.d.mts +1 -1
  348. package/esm/http/uploaded-file.d.mts.map +1 -1
  349. package/esm/http/uploaded-file.mjs +1 -1
  350. package/esm/http/uploaded-file.mjs.map +1 -1
  351. package/esm/http/uploads-config.d.mts +1 -1
  352. package/esm/http/uploads-config.d.mts.map +1 -1
  353. package/esm/http/uploads-config.mjs +1 -1
  354. package/esm/http/uploads-config.mjs.map +1 -1
  355. package/esm/http/uploads-types.d.mts +1 -1
  356. package/esm/http/uploads-types.d.mts.map +1 -1
  357. package/esm/image/image.d.mts +1 -1
  358. package/esm/image/image.d.mts.map +1 -1
  359. package/esm/image/image.mjs +1 -1
  360. package/esm/image/image.mjs.map +1 -1
  361. package/esm/index.d.mts +4 -1
  362. package/esm/index.mjs +5 -1
  363. package/esm/logger/logger.d.mts +1 -1
  364. package/esm/logger/logger.d.mts.map +1 -1
  365. package/esm/logger/logger.mjs +1 -1
  366. package/esm/logger/logger.mjs.map +1 -1
  367. package/esm/logger/types.d.mts +1 -1
  368. package/esm/logger/types.d.mts.map +1 -1
  369. package/esm/mail/config.d.mts +1 -1
  370. package/esm/mail/config.d.mts.map +1 -1
  371. package/esm/mail/config.mjs +1 -1
  372. package/esm/mail/config.mjs.map +1 -1
  373. package/esm/mail/events.d.mts +1 -1
  374. package/esm/mail/events.d.mts.map +1 -1
  375. package/esm/mail/events.mjs +1 -1
  376. package/esm/mail/events.mjs.map +1 -1
  377. package/esm/mail/mail.d.mts +1 -1
  378. package/esm/mail/mail.d.mts.map +1 -1
  379. package/esm/mail/mail.mjs +1 -1
  380. package/esm/mail/mail.mjs.map +1 -1
  381. package/esm/mail/mailer-pool.d.mts +1 -1
  382. package/esm/mail/mailer-pool.d.mts.map +1 -1
  383. package/esm/mail/mailer-pool.mjs +1 -1
  384. package/esm/mail/mailer-pool.mjs.map +1 -1
  385. package/esm/mail/react-mail.d.mts +1 -1
  386. package/esm/mail/react-mail.d.mts.map +1 -1
  387. package/esm/mail/react-mail.mjs +1 -1
  388. package/esm/mail/react-mail.mjs.map +1 -1
  389. package/esm/mail/send-mail.d.mts +1 -1
  390. package/esm/mail/send-mail.d.mts.map +1 -1
  391. package/esm/mail/send-mail.mjs +1 -1
  392. package/esm/mail/send-mail.mjs.map +1 -1
  393. package/esm/mail/test-mailbox.d.mts +1 -1
  394. package/esm/mail/test-mailbox.d.mts.map +1 -1
  395. package/esm/mail/test-mailbox.mjs +1 -1
  396. package/esm/mail/test-mailbox.mjs.map +1 -1
  397. package/esm/mail/types.d.mts +1 -1
  398. package/esm/mail/types.d.mts.map +1 -1
  399. package/esm/mail/types.mjs +1 -1
  400. package/esm/mail/types.mjs.map +1 -1
  401. package/esm/react/index.d.mts +1 -1
  402. package/esm/react/index.d.mts.map +1 -1
  403. package/esm/react/index.mjs +1 -1
  404. package/esm/react/index.mjs.map +1 -1
  405. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +1 -1
  406. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
  407. package/esm/repositories/adapters/cascade/cascade-adapter.mjs +1 -1
  408. package/esm/repositories/adapters/cascade/cascade-adapter.mjs.map +1 -1
  409. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +1 -1
  410. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
  411. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +1 -1
  412. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
  413. package/esm/repositories/adapters/cascade/filter-applicator.mjs +1 -1
  414. package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
  415. package/esm/repositories/contracts/query-builder.contract.d.mts +1 -1
  416. package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
  417. package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -1
  418. package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
  419. package/esm/repositories/contracts/types.d.mts +1 -1
  420. package/esm/repositories/contracts/types.d.mts.map +1 -1
  421. package/esm/repositories/repository.manager.d.mts +1 -1
  422. package/esm/repositories/repository.manager.d.mts.map +1 -1
  423. package/esm/repositories/repository.manager.mjs +1 -1
  424. package/esm/repositories/repository.manager.mjs.map +1 -1
  425. package/esm/resource/define-resource.d.mts +1 -1
  426. package/esm/resource/define-resource.d.mts.map +1 -1
  427. package/esm/resource/define-resource.mjs +1 -1
  428. package/esm/resource/define-resource.mjs.map +1 -1
  429. package/esm/resource/register-resource.d.mts +1 -1
  430. package/esm/resource/register-resource.d.mts.map +1 -1
  431. package/esm/resource/register-resource.mjs +1 -1
  432. package/esm/resource/register-resource.mjs.map +1 -1
  433. package/esm/resource/resource-field-builder.d.mts +1 -1
  434. package/esm/resource/resource-field-builder.d.mts.map +1 -1
  435. package/esm/resource/resource-field-builder.mjs +1 -1
  436. package/esm/resource/resource-field-builder.mjs.map +1 -1
  437. package/esm/resource/resource.d.mts +1 -1
  438. package/esm/resource/resource.d.mts.map +1 -1
  439. package/esm/resource/resource.mjs +1 -1
  440. package/esm/resource/resource.mjs.map +1 -1
  441. package/esm/resource/types.d.mts +1 -1
  442. package/esm/resource/types.d.mts.map +1 -1
  443. package/esm/restful/restful.d.mts +1 -1
  444. package/esm/restful/restful.d.mts.map +1 -1
  445. package/esm/restful/restful.mjs +1 -1
  446. package/esm/restful/restful.mjs.map +1 -1
  447. package/esm/router/route-builder.d.mts +1 -1
  448. package/esm/router/route-builder.d.mts.map +1 -1
  449. package/esm/router/route-builder.mjs +1 -1
  450. package/esm/router/route-builder.mjs.map +1 -1
  451. package/esm/router/route-registry.mjs +1 -1
  452. package/esm/router/route-registry.mjs.map +1 -1
  453. package/esm/router/router.d.mts +1 -1
  454. package/esm/router/router.d.mts.map +1 -1
  455. package/esm/router/router.mjs +1 -1
  456. package/esm/router/router.mjs.map +1 -1
  457. package/esm/router/types.d.mts +1 -1
  458. package/esm/router/types.d.mts.map +1 -1
  459. package/esm/socket/types.d.mts +1 -1
  460. package/esm/socket/types.d.mts.map +1 -1
  461. package/esm/socket/utils.d.mts +1 -1
  462. package/esm/socket/utils.d.mts.map +1 -1
  463. package/esm/socket/utils.mjs +1 -1
  464. package/esm/socket/utils.mjs.map +1 -1
  465. package/esm/storage/config.d.mts +1 -1
  466. package/esm/storage/config.d.mts.map +1 -1
  467. package/esm/storage/config.mjs +1 -1
  468. package/esm/storage/config.mjs.map +1 -1
  469. package/esm/storage/context/storage-driver-context.d.mts +1 -1
  470. package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
  471. package/esm/storage/context/storage-driver-context.mjs +1 -1
  472. package/esm/storage/context/storage-driver-context.mjs.map +1 -1
  473. package/esm/storage/drivers/cloud-driver.d.mts +1 -1
  474. package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
  475. package/esm/storage/drivers/cloud-driver.mjs +1 -1
  476. package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
  477. package/esm/storage/drivers/do-spaces-driver.d.mts +1 -1
  478. package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
  479. package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
  480. package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
  481. package/esm/storage/drivers/local-driver.d.mts +1 -1
  482. package/esm/storage/drivers/local-driver.d.mts.map +1 -1
  483. package/esm/storage/drivers/local-driver.mjs +1 -1
  484. package/esm/storage/drivers/local-driver.mjs.map +1 -1
  485. package/esm/storage/drivers/r2-driver.d.mts +1 -1
  486. package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
  487. package/esm/storage/drivers/r2-driver.mjs +1 -1
  488. package/esm/storage/drivers/r2-driver.mjs.map +1 -1
  489. package/esm/storage/drivers/s3-driver.d.mts +1 -1
  490. package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
  491. package/esm/storage/drivers/s3-driver.mjs +1 -1
  492. package/esm/storage/drivers/s3-driver.mjs.map +1 -1
  493. package/esm/storage/scoped-storage.d.mts +1 -1
  494. package/esm/storage/scoped-storage.d.mts.map +1 -1
  495. package/esm/storage/scoped-storage.mjs +1 -1
  496. package/esm/storage/scoped-storage.mjs.map +1 -1
  497. package/esm/storage/storage-file.d.mts +1 -1
  498. package/esm/storage/storage-file.d.mts.map +1 -1
  499. package/esm/storage/storage-file.mjs +1 -1
  500. package/esm/storage/storage-file.mjs.map +1 -1
  501. package/esm/storage/storage.d.mts +1 -1
  502. package/esm/storage/storage.d.mts.map +1 -1
  503. package/esm/storage/storage.mjs +1 -1
  504. package/esm/storage/storage.mjs.map +1 -1
  505. package/esm/storage/types.d.mts +1 -1
  506. package/esm/storage/types.d.mts.map +1 -1
  507. package/esm/storage/utils/mime.d.mts +1 -1
  508. package/esm/storage/utils/mime.d.mts.map +1 -1
  509. package/esm/storage/utils/mime.mjs +1 -1
  510. package/esm/storage/utils/mime.mjs.map +1 -1
  511. package/esm/tests/start-http-development-server.d.mts +1 -1
  512. package/esm/tests/start-http-development-server.d.mts.map +1 -1
  513. package/esm/tests/start-http-development-server.mjs +4 -2
  514. package/esm/tests/start-http-development-server.mjs.map +1 -1
  515. package/esm/tests/test-helpers.d.mts +1 -1
  516. package/esm/tests/test-helpers.d.mts.map +1 -1
  517. package/esm/tests/test-helpers.mjs +1 -1
  518. package/esm/tests/test-helpers.mjs.map +1 -1
  519. package/esm/tests/vitest-setup.d.mts +1 -1
  520. package/esm/tests/vitest-setup.d.mts.map +1 -1
  521. package/esm/tests/vitest-setup.mjs +1 -1
  522. package/esm/tests/vitest-setup.mjs.map +1 -1
  523. package/esm/use-cases/types.d.mts +1 -1
  524. package/esm/use-cases/types.d.mts.map +1 -1
  525. package/esm/use-cases/use-case-broadcast.d.mts +1 -1
  526. package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
  527. package/esm/use-cases/use-case-broadcast.mjs +1 -1
  528. package/esm/use-cases/use-case-broadcast.mjs.map +1 -1
  529. package/esm/use-cases/use-case-events.d.mts +1 -1
  530. package/esm/use-cases/use-case-events.d.mts.map +1 -1
  531. package/esm/use-cases/use-case-events.mjs +1 -1
  532. package/esm/use-cases/use-case-events.mjs.map +1 -1
  533. package/esm/use-cases/use-case-pipeline.d.mts +1 -1
  534. package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
  535. package/esm/use-cases/use-case-pipeline.mjs +1 -1
  536. package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
  537. package/esm/use-cases/use-case.d.mts +1 -1
  538. package/esm/use-cases/use-case.d.mts.map +1 -1
  539. package/esm/use-cases/use-case.errors.d.mts +1 -1
  540. package/esm/use-cases/use-case.errors.d.mts.map +1 -1
  541. package/esm/use-cases/use-case.errors.mjs +1 -1
  542. package/esm/use-cases/use-case.errors.mjs.map +1 -1
  543. package/esm/use-cases/use-case.mjs +1 -1
  544. package/esm/use-cases/use-case.mjs.map +1 -1
  545. package/esm/use-cases/use-cases-registry.d.mts +1 -1
  546. package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
  547. package/esm/use-cases/use-cases-registry.mjs +1 -1
  548. package/esm/use-cases/use-cases-registry.mjs.map +1 -1
  549. package/esm/utils/app-log.d.mts +1 -1
  550. package/esm/utils/app-log.d.mts.map +1 -1
  551. package/esm/utils/app-log.mjs +1 -1
  552. package/esm/utils/app-log.mjs.map +1 -1
  553. package/esm/utils/database-log.d.mts +1 -1
  554. package/esm/utils/database-log.d.mts.map +1 -1
  555. package/esm/utils/database-log.mjs +1 -1
  556. package/esm/utils/database-log.mjs.map +1 -1
  557. package/esm/utils/environment.d.mts +1 -1
  558. package/esm/utils/environment.d.mts.map +1 -1
  559. package/esm/utils/environment.mjs +1 -1
  560. package/esm/utils/environment.mjs.map +1 -1
  561. package/esm/utils/framework-vesion.mjs +2 -11
  562. package/esm/utils/framework-vesion.mjs.map +1 -1
  563. package/esm/utils/get-localized.d.mts +1 -1
  564. package/esm/utils/get-localized.d.mts.map +1 -1
  565. package/esm/utils/get-localized.mjs +1 -1
  566. package/esm/utils/get-localized.mjs.map +1 -1
  567. package/esm/utils/paths.d.mts +1 -1
  568. package/esm/utils/paths.d.mts.map +1 -1
  569. package/esm/utils/paths.mjs +3 -3
  570. package/esm/utils/paths.mjs.map +1 -1
  571. package/esm/utils/promise-all-object.d.mts +1 -1
  572. package/esm/utils/promise-all-object.d.mts.map +1 -1
  573. package/esm/utils/promise-all-object.mjs +1 -1
  574. package/esm/utils/promise-all-object.mjs.map +1 -1
  575. package/esm/utils/queue.d.mts +1 -1
  576. package/esm/utils/queue.d.mts.map +1 -1
  577. package/esm/utils/queue.mjs +1 -1
  578. package/esm/utils/queue.mjs.map +1 -1
  579. package/esm/utils/sleep.d.mts +1 -1
  580. package/esm/utils/sleep.d.mts.map +1 -1
  581. package/esm/utils/sleep.mjs +1 -1
  582. package/esm/utils/sleep.mjs.map +1 -1
  583. package/esm/utils/sluggable.d.mts +1 -1
  584. package/esm/utils/sluggable.d.mts.map +1 -1
  585. package/esm/utils/sluggable.mjs +1 -1
  586. package/esm/utils/sluggable.mjs.map +1 -1
  587. package/esm/utils/to-json.d.mts +1 -1
  588. package/esm/utils/to-json.d.mts.map +1 -1
  589. package/esm/utils/to-json.mjs +1 -1
  590. package/esm/utils/to-json.mjs.map +1 -1
  591. package/esm/utils/types.d.mts +1 -1
  592. package/esm/utils/types.d.mts.map +1 -1
  593. package/esm/utils/urls.d.mts +1 -1
  594. package/esm/utils/urls.d.mts.map +1 -1
  595. package/esm/utils/urls.mjs +1 -1
  596. package/esm/utils/urls.mjs.map +1 -1
  597. package/esm/validation/database/exists-except-current-id.d.mts +1 -1
  598. package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
  599. package/esm/validation/database/exists-except-current-id.mjs +1 -1
  600. package/esm/validation/database/exists-except-current-id.mjs.map +1 -1
  601. package/esm/validation/database/exists-except-current-user.d.mts +1 -1
  602. package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
  603. package/esm/validation/database/exists-except-current-user.mjs +1 -1
  604. package/esm/validation/database/exists-except-current-user.mjs.map +1 -1
  605. package/esm/validation/database/types.d.mts +1 -1
  606. package/esm/validation/database/types.d.mts.map +1 -1
  607. package/esm/validation/database/unique-except-current-id.d.mts +1 -1
  608. package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
  609. package/esm/validation/database/unique-except-current-id.mjs +1 -1
  610. package/esm/validation/database/unique-except-current-id.mjs.map +1 -1
  611. package/esm/validation/database/unique-except-current-user.d.mts +1 -1
  612. package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
  613. package/esm/validation/database/unique-except-current-user.mjs +1 -1
  614. package/esm/validation/database/unique-except-current-user.mjs.map +1 -1
  615. package/esm/validation/file/file.d.mts +1 -1
  616. package/esm/validation/file/file.d.mts.map +1 -1
  617. package/esm/validation/file/file.mjs +1 -1
  618. package/esm/validation/file/file.mjs.map +1 -1
  619. package/esm/validation/init.mjs +1 -1
  620. package/esm/validation/init.mjs.map +1 -1
  621. package/esm/validation/plugins/database-plugin.mjs +1 -1
  622. package/esm/validation/plugins/database-plugin.mjs.map +1 -1
  623. package/esm/validation/plugins/file-plugin.mjs +1 -1
  624. package/esm/validation/plugins/file-plugin.mjs.map +1 -1
  625. package/esm/validation/plugins/localized-plugin.mjs +1 -1
  626. package/esm/validation/plugins/localized-plugin.mjs.map +1 -1
  627. package/esm/validation/types.d.mts +1 -1
  628. package/esm/validation/types.d.mts.map +1 -1
  629. package/esm/validation/validateAll.mjs +3 -3
  630. package/esm/validation/validateAll.mjs.map +1 -1
  631. package/esm/validation/validators/file-validator.d.mts +1 -1
  632. package/esm/validation/validators/file-validator.d.mts.map +1 -1
  633. package/esm/validation/validators/file-validator.mjs +1 -1
  634. package/esm/validation/validators/file-validator.mjs.map +1 -1
  635. package/esm/vite/index.mjs +3 -0
  636. package/esm/vite/lower-stage3-decorators.d.mts +53 -0
  637. package/esm/vite/lower-stage3-decorators.d.mts.map +1 -0
  638. package/esm/vite/lower-stage3-decorators.mjs +63 -0
  639. package/esm/vite/lower-stage3-decorators.mjs.map +1 -0
  640. package/esm/warlock-config/default-configurations.mjs +1 -1
  641. package/esm/warlock-config/default-configurations.mjs.map +1 -1
  642. package/esm/warlock-config/define-config.d.mts +1 -1
  643. package/esm/warlock-config/define-config.d.mts.map +1 -1
  644. package/esm/warlock-config/define-config.mjs +1 -1
  645. package/esm/warlock-config/define-config.mjs.map +1 -1
  646. package/esm/warlock-config/types.d.mts +1 -1
  647. package/esm/warlock-config/types.d.mts.map +1 -1
  648. package/esm/warlock-config/warlock-config.manager.d.mts +1 -1
  649. package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
  650. package/esm/warlock-config/warlock-config.manager.mjs +1 -1
  651. package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
  652. package/llms-full.txt +64 -4
  653. package/llms.txt +1 -0
  654. package/package.json +9 -33
  655. package/skills/lower-stage3-decorators/SKILL.md +54 -0
  656. package/skills/test-http/SKILL.md +3 -2
  657. package/skills/test-service/SKILL.md +3 -2
  658. package/esm/_virtual/_rolldown/runtime.mjs +0 -7
  659. package/esm/cli/cli-commands.manager.mjs +0 -290
  660. package/esm/cli/cli-commands.manager.mjs.map +0 -1
  661. package/esm/cli/cli-commands.utils.mjs +0 -217
  662. package/esm/cli/cli-commands.utils.mjs.map +0 -1
  663. package/esm/cli/commands/add.command.mjs +0 -27
  664. package/esm/cli/commands/add.command.mjs.map +0 -1
  665. package/esm/cli/commands/build.command.mjs +0 -14
  666. package/esm/cli/commands/build.command.mjs.map +0 -1
  667. package/esm/cli/commands/create-database.command.mjs +0 -24
  668. package/esm/cli/commands/create-database.command.mjs.map +0 -1
  669. package/esm/cli/commands/dev-server.command.mjs +0 -48
  670. package/esm/cli/commands/dev-server.command.mjs.map +0 -1
  671. package/esm/cli/commands/drop-tables.command.mjs +0 -23
  672. package/esm/cli/commands/drop-tables.command.mjs.map +0 -1
  673. package/esm/cli/commands/generate/generate.command.mjs +0 -201
  674. package/esm/cli/commands/generate/generate.command.mjs.map +0 -1
  675. package/esm/cli/commands/generate/generators/column-dsl-parser.mjs +0 -49
  676. package/esm/cli/commands/generate/generators/column-dsl-parser.mjs.map +0 -1
  677. package/esm/cli/commands/generate/generators/controller.generator.mjs +0 -48
  678. package/esm/cli/commands/generate/generators/controller.generator.mjs.map +0 -1
  679. package/esm/cli/commands/generate/generators/migration.generator.mjs +0 -81
  680. package/esm/cli/commands/generate/generators/migration.generator.mjs.map +0 -1
  681. package/esm/cli/commands/generate/generators/model.generator.mjs +0 -60
  682. package/esm/cli/commands/generate/generators/model.generator.mjs.map +0 -1
  683. package/esm/cli/commands/generate/generators/module.generator.mjs +0 -113
  684. package/esm/cli/commands/generate/generators/module.generator.mjs.map +0 -1
  685. package/esm/cli/commands/generate/generators/repository.generator.mjs +0 -42
  686. package/esm/cli/commands/generate/generators/repository.generator.mjs.map +0 -1
  687. package/esm/cli/commands/generate/generators/resource.generator.mjs +0 -42
  688. package/esm/cli/commands/generate/generators/resource.generator.mjs.map +0 -1
  689. package/esm/cli/commands/generate/generators/service.generator.mjs +0 -42
  690. package/esm/cli/commands/generate/generators/service.generator.mjs.map +0 -1
  691. package/esm/cli/commands/generate/templates/stubs.mjs +0 -514
  692. package/esm/cli/commands/generate/templates/stubs.mjs.map +0 -1
  693. package/esm/cli/commands/generate/utils/name-parser.mjs +0 -69
  694. package/esm/cli/commands/generate/utils/name-parser.mjs.map +0 -1
  695. package/esm/cli/commands/generate/utils/path-resolver.mjs +0 -56
  696. package/esm/cli/commands/generate/utils/path-resolver.mjs.map +0 -1
  697. package/esm/cli/commands/generate/utils/prompt.mjs +0 -28
  698. package/esm/cli/commands/generate/utils/prompt.mjs.map +0 -1
  699. package/esm/cli/commands/generate/utils/writer.mjs +0 -60
  700. package/esm/cli/commands/generate/utils/writer.mjs.map +0 -1
  701. package/esm/cli/commands/migrate.command.mjs +0 -60
  702. package/esm/cli/commands/migrate.command.mjs.map +0 -1
  703. package/esm/cli/commands/seed.command.mjs +0 -41
  704. package/esm/cli/commands/seed.command.mjs.map +0 -1
  705. package/esm/cli/commands/start-production.command.mjs +0 -50
  706. package/esm/cli/commands/start-production.command.mjs.map +0 -1
  707. package/esm/cli/commands/storage-put.action.mjs +0 -75
  708. package/esm/cli/commands/storage-put.action.mjs.map +0 -1
  709. package/esm/cli/commands/storage-put.command.mjs +0 -46
  710. package/esm/cli/commands/storage-put.command.mjs.map +0 -1
  711. package/esm/cli/commands/typings-generator.command.mjs +0 -38
  712. package/esm/cli/commands/typings-generator.command.mjs.map +0 -1
  713. package/esm/cli/commands-loader.mjs +0 -50
  714. package/esm/cli/commands-loader.mjs.map +0 -1
  715. package/esm/cli/framework-cli-commands.mjs +0 -37
  716. package/esm/cli/framework-cli-commands.mjs.map +0 -1
  717. package/esm/cli/parse-cli-args.mjs +0 -62
  718. package/esm/cli/parse-cli-args.mjs.map +0 -1
  719. package/esm/cli/start.d.mts +0 -1
  720. package/esm/cli/start.mjs +0 -8
  721. package/esm/cli/start.mjs.map +0 -1
  722. package/esm/cli/string-similarity.mjs +0 -56
  723. package/esm/cli/string-similarity.mjs.map +0 -1
  724. package/esm/database/create-database-action.mjs +0 -32
  725. package/esm/database/create-database-action.mjs.map +0 -1
  726. package/esm/database/drop-tables-action.mjs +0 -35
  727. package/esm/database/drop-tables-action.mjs.map +0 -1
  728. package/esm/database/migrate-action.mjs +0 -99
  729. package/esm/database/migrate-action.mjs.map +0 -1
  730. package/esm/database/seed-command-action.mjs +0 -74
  731. package/esm/database/seed-command-action.mjs.map +0 -1
  732. package/esm/database/seeds/seeders.manager.mjs +0 -129
  733. package/esm/database/seeds/seeders.manager.mjs.map +0 -1
  734. package/esm/database/seeds/seeds-table-migration.mjs +0 -31
  735. package/esm/database/seeds/seeds-table-migration.mjs.map +0 -1
  736. package/esm/database/seeds/utils.mjs +0 -6
  737. package/esm/database/seeds/utils.mjs.map +0 -1
  738. package/esm/dev-server/development-server.mjs +0 -115
  739. package/esm/dev-server/development-server.mjs.map +0 -1
  740. package/esm/dev-server/health-checker/workers/eslint-health.worker.d.mts +0 -1
  741. package/esm/dev-server/health-checker/workers/ts-health.worker.d.mts +0 -1
  742. package/esm/dev-server/layer-executor.mjs +0 -114
  743. package/esm/dev-server/layer-executor.mjs.map +0 -1
  744. package/esm/dev-server/loader/hook-thread.d.mts +0 -48
  745. package/esm/dev-server/loader/hook-thread.d.mts.map +0 -1
  746. package/esm/dev-server/loader/hook-thread.mjs +0 -47
  747. package/esm/dev-server/loader/hook-thread.mjs.map +0 -1
  748. package/esm/dev-server/loader/load-hook.d.mts +0 -58
  749. package/esm/dev-server/loader/load-hook.d.mts.map +0 -1
  750. package/esm/dev-server/loader/load-hook.mjs +0 -86
  751. package/esm/dev-server/loader/load-hook.mjs.map +0 -1
  752. package/esm/dev-server/loader/own-resolver.mjs +0 -69
  753. package/esm/dev-server/loader/own-resolver.mjs.map +0 -1
  754. package/esm/dev-server/loader/resolve-capture.mjs +0 -43
  755. package/esm/dev-server/loader/resolve-capture.mjs.map +0 -1
  756. package/esm/dev-server/loader/resolve-hook.d.mts +0 -41
  757. package/esm/dev-server/loader/resolve-hook.d.mts.map +0 -1
  758. package/esm/dev-server/loader/resolve-hook.mjs +0 -87
  759. package/esm/dev-server/loader/resolve-hook.mjs.map +0 -1
  760. package/esm/dev-server/loader/source-slug.mjs +0 -22
  761. package/esm/dev-server/loader/source-slug.mjs.map +0 -1
  762. package/esm/dev-server/loader/version-registry.mjs +0 -45
  763. package/esm/dev-server/loader/version-registry.mjs.map +0 -1
  764. package/esm/dev-server/start-development-server.mjs +0 -63
  765. package/esm/dev-server/start-development-server.mjs.map +0 -1
  766. package/esm/dev-server/type-generator.mjs +0 -453
  767. package/esm/dev-server/type-generator.mjs.map +0 -1
  768. package/esm/generations/add-command.action.mjs +0 -376
  769. package/esm/generations/add-command.action.mjs.map +0 -1
  770. package/esm/generations/stubs.mjs +0 -103
  771. package/esm/generations/stubs.mjs.map +0 -1
  772. package/esm/manifest/manifest-manager.mjs +0 -79
  773. package/esm/manifest/manifest-manager.mjs.map +0 -1
  774. package/esm/production/build-app-production.mjs +0 -14
  775. package/esm/production/build-app-production.mjs.map +0 -1
  776. package/esm/production/esbuild-plugins.mjs +0 -37
  777. package/esm/production/esbuild-plugins.mjs.map +0 -1
  778. package/esm/production/production-builder.mjs +0 -264
  779. package/esm/production/production-builder.mjs.map +0 -1
  780. package/esm/production/resolve-build-config.mjs +0 -28
  781. package/esm/production/resolve-build-config.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.mjs","names":[],"sources":["../../../../../../../@warlock.js/core/src/database/seeds/utils.ts"],"sourcesContent":["export const seedsTableName = \"_seeds\";\n"],"mappings":";AAAA,MAAa,iBAAiB"}
@@ -1,115 +0,0 @@
1
- import { ConnectorLifecyclePhase } from "../connectors/types.mjs";
2
- import { devLogReady, devLogSection, devLogWarn, devServeLog } from "./dev-logger.mjs";
3
- import { connectorsManager } from "../connectors/connectors-manager.mjs";
4
- import { warlockConfigManager } from "../warlock-config/warlock-config.manager.mjs";
5
- import { MANIFEST_PATH } from "./flags.mjs";
6
- import { filesOrchestrator } from "./files-orchestrator.mjs";
7
- import "../warlock-config/index.mjs";
8
- import { LayerExecutor } from "./layer-executor.mjs";
9
- import { typeGenerator } from "./type-generator.mjs";
10
- import { colors } from "@mongez/copper";
11
- import events from "@mongez/events";
12
- import { fileExistsAsync, getFileAsync, unlinkAsync } from "@warlock.js/fs";
13
-
14
- //#region ../../@warlock.js/core/src/dev-server/development-server.ts
15
- /**
16
- * Top-level coordinator for `warlock dev`. Wires the file orchestrator, the
17
- * connectors, and the layer executor together, and listens for the watcher's
18
- * batched events to drive HMR.
19
- */
20
- var DevelopmentServer = class {
21
- constructor(options = {}) {
22
- this.running = false;
23
- this.options = options;
24
- devLogSection("Starting Development Server...");
25
- }
26
- async start() {
27
- try {
28
- const startedAt = performance.now();
29
- if (this.options.fresh && await fileExistsAsync(MANIFEST_PATH)) {
30
- await unlinkAsync(MANIFEST_PATH);
31
- devServeLog(colors.cyanBright("Cleared manifest (--fresh)"));
32
- }
33
- await filesOrchestrator.init();
34
- await filesOrchestrator.initializeAll();
35
- await filesOrchestrator.watchFiles();
36
- filesOrchestrator.specialFilesCollector.collect(filesOrchestrator.getFiles());
37
- this.setupEventListeners();
38
- await this.autoDiscoverFiles();
39
- await filesOrchestrator.moduleLoader.loadAll();
40
- await connectorsManager.startPhase("late");
41
- this.layerExecutor = new LayerExecutor(filesOrchestrator.getDependencyGraph(), filesOrchestrator.specialFilesCollector, filesOrchestrator.moduleLoader, (absolutePath) => filesOrchestrator.bumpVersion(absolutePath), () => filesOrchestrator.flushVersionBumps());
42
- this.running = true;
43
- const duration = performance.now() - startedAt;
44
- devLogReady(`Development Server is ready in ${colors.greenBright(parseDuration(duration))}`);
45
- const devServerConfig = await warlockConfigManager.get("devServer");
46
- const generateTypings = this.options.generateTypings ?? devServerConfig?.generateTypings ?? true;
47
- const healthCheckers = this.options.healthCheckers ?? devServerConfig?.healthCheckers ?? true;
48
- if (generateTypings) typeGenerator.executeGenerateAllCommand();
49
- if (healthCheckers) filesOrchestrator.startCheckingHealth(healthCheckers === true ? void 0 : healthCheckers);
50
- } catch (error) {
51
- devServeLog(colors.redBright(`Failed to start Development Server: ${error}`));
52
- await this.shutdown();
53
- throw error;
54
- }
55
- }
56
- /**
57
- * Eagerly import files whose decorators populate global registries so any
58
- * symbol-by-name resolution later in boot finds them.
59
- */
60
- async autoDiscoverFiles() {
61
- const discoveryTypes = ["model"];
62
- for (const file of filesOrchestrator.files.values()) if (file.type && discoveryTypes.includes(file.type)) await filesOrchestrator.moduleLoader.loadModule(file, file.type);
63
- }
64
- setupEventListeners() {
65
- events.on("dev-server:batch-complete", (batch) => this.handleBatchComplete(batch));
66
- }
67
- async handleBatchComplete(batch) {
68
- if (!this.running || !this.layerExecutor) return;
69
- if (batch.changed.includes("warlock.config.ts")) devLogWarn("warlock.config.ts changed — restart the dev server to apply.");
70
- if (batch.changed.length > 0) batch.changed = await dropNoOpChanges(batch.changed);
71
- if (batch.added.length + batch.changed.length + batch.deleted.length === 0) return;
72
- const codeFiles = [...batch.added, ...batch.changed].filter((p) => !isEnvPath(p));
73
- try {
74
- await this.layerExecutor.executeBatchReload(codeFiles, filesOrchestrator.getFiles(), batch.deleted, batch.changed);
75
- typeGenerator.executeTypingsGenerator([...batch.added, ...batch.changed]);
76
- filesOrchestrator.checkHealth(batch);
77
- } catch (error) {
78
- devServeLog(colors.redBright(`Failed to execute batch reload: ${error}`));
79
- }
80
- }
81
- async shutdown() {
82
- if (!this.running) return;
83
- devServeLog(colors.redBright("Shutting down Development Server..."));
84
- this.running = false;
85
- await connectorsManager.shutdown();
86
- devServeLog(colors.greenBright("Development Server stopped"));
87
- }
88
- isRunning() {
89
- return this.running;
90
- }
91
- };
92
- async function dropNoOpChanges(changedPaths) {
93
- return (await Promise.all(changedPaths.map(async (relativePath) => {
94
- if (isEnvPath(relativePath)) return relativePath;
95
- const file = filesOrchestrator.files.get(relativePath);
96
- if (!file) return null;
97
- const content = await getFileAsync(file.absolutePath);
98
- if (content.trim() === file.source) return null;
99
- file.source = content;
100
- return relativePath;
101
- }))).filter((p) => p !== null);
102
- }
103
- function isEnvPath(path) {
104
- const basename = path.split("/").pop() ?? path;
105
- return basename === ".env" || basename.startsWith(".env.");
106
- }
107
- function parseDuration(ms) {
108
- if (ms < 1e3) return `${ms.toFixed(2)}ms`;
109
- if (ms > 6e4) return `${(ms / 6e4).toFixed(2)}m`;
110
- return `${(ms / 1e3).toFixed(2)}s`;
111
- }
112
-
113
- //#endregion
114
- export { DevelopmentServer };
115
- //# sourceMappingURL=development-server.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"development-server.mjs","names":[],"sources":["../../../../../../@warlock.js/core/src/dev-server/development-server.ts"],"sourcesContent":["import { colors } from \"@mongez/copper\";\r\nimport events from \"@mongez/events\";\r\nimport { fileExistsAsync, getFileAsync, unlinkAsync } from \"@warlock.js/fs\";\r\nimport { connectorsManager } from \"../connectors/connectors-manager\";\r\nimport { ConnectorLifecyclePhase } from \"../connectors/types\";\r\nimport { warlockConfigManager } from \"../warlock-config\";\r\nimport { devLogReady, devLogSection, devLogWarn, devServeLog } from \"./dev-logger\";\r\nimport { filesOrchestrator } from \"./files-orchestrator\";\r\nimport { MANIFEST_PATH } from \"./flags\";\r\nimport { LayerExecutor } from \"./layer-executor\";\r\nimport type { StartDevServerOptions } from \"./start-development-server\";\r\nimport { typeGenerator } from \"./type-generator\";\r\n\r\ntype Batch = { added: string[]; changed: string[]; deleted: string[] };\r\n\r\n/**\r\n * Top-level coordinator for `warlock dev`. Wires the file orchestrator, the\r\n * connectors, and the layer executor together, and listens for the watcher's\r\n * batched events to drive HMR.\r\n */\r\nexport class DevelopmentServer {\r\n private layerExecutor?: LayerExecutor;\r\n private running = false;\r\n private readonly options: StartDevServerOptions;\r\n\r\n public constructor(options: StartDevServerOptions = {}) {\r\n this.options = options;\r\n devLogSection(\"Starting Development Server...\");\r\n }\r\n\r\n public async start(): Promise<void> {\r\n try {\r\n const startedAt = performance.now();\r\n\r\n // --fresh deletes the manifest so reconciliation re-parses every file\r\n // from disk. Transpile caching is owned by the loader hook (in-memory).\r\n if (this.options.fresh && (await fileExistsAsync(MANIFEST_PATH))) {\r\n await unlinkAsync(MANIFEST_PATH);\r\n devServeLog(colors.cyanBright(\"Cleared manifest (--fresh)\"));\r\n }\r\n\r\n await filesOrchestrator.init();\r\n await filesOrchestrator.initializeAll();\r\n await filesOrchestrator.watchFiles();\r\n\r\n filesOrchestrator.specialFilesCollector.collect(filesOrchestrator.getFiles());\r\n\r\n this.setupEventListeners();\r\n\r\n // Decorator-driven registries (models, etc.) must be populated before\r\n // routes/services can resolve symbols by name.\r\n await this.autoDiscoverFiles();\r\n\r\n await filesOrchestrator.moduleLoader.loadAll();\r\n\r\n // Late-phase connectors (http, socket) bind after app code has\r\n // registered routes/listeners.\r\n await connectorsManager.startPhase(ConnectorLifecyclePhase.Late);\r\n\r\n this.layerExecutor = new LayerExecutor(\r\n filesOrchestrator.getDependencyGraph(),\r\n filesOrchestrator.specialFilesCollector,\r\n filesOrchestrator.moduleLoader,\r\n (absolutePath) => filesOrchestrator.bumpVersion(absolutePath),\r\n () => filesOrchestrator.flushVersionBumps(),\r\n );\r\n\r\n this.running = true;\r\n\r\n const duration = performance.now() - startedAt;\r\n devLogReady(`Development Server is ready in ${colors.greenBright(parseDuration(duration))}`);\r\n\r\n // Precedence: explicit CLI option > devServer.* config > default.\r\n const devServerConfig = await warlockConfigManager.get(\"devServer\");\r\n const generateTypings =\r\n this.options.generateTypings ?? devServerConfig?.generateTypings ?? true;\r\n const healthCheckers = this.options.healthCheckers ?? devServerConfig?.healthCheckers ?? true;\r\n\r\n if (generateTypings) typeGenerator.executeGenerateAllCommand();\r\n\r\n if (healthCheckers) {\r\n filesOrchestrator.startCheckingHealth(healthCheckers === true ? undefined : healthCheckers);\r\n }\r\n } catch (error) {\r\n devServeLog(colors.redBright(`Failed to start Development Server: ${error}`));\r\n await this.shutdown();\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Eagerly import files whose decorators populate global registries so any\r\n * symbol-by-name resolution later in boot finds them.\r\n */\r\n private async autoDiscoverFiles(): Promise<void> {\r\n const discoveryTypes = [\"model\"] as const;\r\n for (const file of filesOrchestrator.files.values()) {\r\n if (file.type && (discoveryTypes as readonly string[]).includes(file.type)) {\r\n await filesOrchestrator.moduleLoader.loadModule(file, file.type);\r\n }\r\n }\r\n }\r\n\r\n private setupEventListeners(): void {\r\n events.on(\"dev-server:batch-complete\", (batch: Batch) => this.handleBatchComplete(batch));\r\n }\r\n\r\n private async handleBatchComplete(batch: Batch): Promise<void> {\r\n if (!this.running || !this.layerExecutor) return;\r\n\r\n // warlock.config.ts holds settings read at boot (CLI commands, build\r\n // options, watch patterns, scheduled jobs). Hot-reloading it would\r\n // leave running services configured with stale values, so tell the\r\n // dev they need a restart and don't pretend to apply the change.\r\n if (batch.changed.includes(\"warlock.config.ts\")) {\r\n devLogWarn(\"warlock.config.ts changed — restart the dev server to apply.\");\r\n }\r\n\r\n // Some editors fsync on save without writing — drop no-op changes.\r\n if (batch.changed.length > 0) {\r\n batch.changed = await dropNoOpChanges(batch.changed);\r\n }\r\n\r\n const total = batch.added.length + batch.changed.length + batch.deleted.length;\r\n if (total === 0) return;\r\n\r\n const codeFiles = [...batch.added, ...batch.changed].filter((p) => !isEnvPath(p));\r\n\r\n try {\r\n await this.layerExecutor.executeBatchReload(\r\n codeFiles,\r\n filesOrchestrator.getFiles(),\r\n batch.deleted,\r\n batch.changed,\r\n );\r\n\r\n typeGenerator.executeTypingsGenerator([...batch.added, ...batch.changed]);\r\n\r\n filesOrchestrator.checkHealth(batch);\r\n } catch (error) {\r\n devServeLog(colors.redBright(`Failed to execute batch reload: ${error}`));\r\n }\r\n }\r\n\r\n public async shutdown(): Promise<void> {\r\n if (!this.running) return;\r\n devServeLog(colors.redBright(\"Shutting down Development Server...\"));\r\n this.running = false;\r\n await connectorsManager.shutdown();\r\n devServeLog(colors.greenBright(\"Development Server stopped\"));\r\n }\r\n\r\n public isRunning(): boolean {\r\n return this.running;\r\n }\r\n}\r\n\r\nasync function dropNoOpChanges(changedPaths: string[]): Promise<string[]> {\r\n const kept = await Promise.all(\r\n changedPaths.map(async (relativePath) => {\r\n if (isEnvPath(relativePath)) return relativePath;\r\n\r\n const file = filesOrchestrator.files.get(relativePath);\r\n if (!file) return null;\r\n\r\n const content = await getFileAsync(file.absolutePath);\r\n if (content.trim() === file.source) return null;\r\n\r\n file.source = content;\r\n return relativePath;\r\n }),\r\n );\r\n\r\n return kept.filter((p): p is string => p !== null);\r\n}\r\n\r\nfunction isEnvPath(path: string): boolean {\r\n const basename = path.split(\"/\").pop() ?? path;\r\n return basename === \".env\" || basename.startsWith(\".env.\");\r\n}\r\n\r\nfunction parseDuration(ms: number): string {\r\n if (ms < 1000) return `${ms.toFixed(2)}ms`;\r\n if (ms > 60_000) return `${(ms / 60_000).toFixed(2)}m`;\r\n return `${(ms / 1000).toFixed(2)}s`;\r\n}\r\n"],"mappings":"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"}
@@ -1,114 +0,0 @@
1
- import { devLogHMR } from "./dev-logger.mjs";
2
- import { connectorsManager } from "../connectors/connectors-manager.mjs";
3
- import { configManager } from "../config/config-manager.mjs";
4
- import { loadEnv } from "@mongez/dotenv";
5
-
6
- //#region ../../@warlock.js/core/src/dev-server/layer-executor.ts
7
- /**
8
- * Decides what to reload when a batch of files changes.
9
- *
10
- * Strategy: bump the hook's version counter for every file in the
11
- * invalidation chain, wait for the hook worker to flush, then re-import
12
- * any special files (config / main / routes / events / locales) the chain
13
- * touched and restart any connector whose watched-files overlap the change.
14
- */
15
- var LayerExecutor = class {
16
- constructor(dependencyGraph, specialFilesCollector, moduleLoader, bumpVersion, flushVersionBumps) {
17
- this.dependencyGraph = dependencyGraph;
18
- this.specialFilesCollector = specialFilesCollector;
19
- this.moduleLoader = moduleLoader;
20
- this.bumpVersion = bumpVersion;
21
- this.flushVersionBumps = flushVersionBumps;
22
- }
23
- /**
24
- * Entry point for the file watcher batch.
25
- *
26
- * @param changedPaths - code files added or changed in this batch
27
- * @param filesMap - all tracked files (relativePath → FileManager)
28
- * @param deletedFiles - paths that were removed from disk
29
- * @param allChangedPaths - includes .env so we can detect config reloads
30
- */
31
- async executeBatchReload(changedPaths, filesMap, deletedFiles, allChangedPaths) {
32
- const envFilesChanged = (allChangedPaths ?? []).some(isEnvPath);
33
- if (changedPaths.length === 0 && deletedFiles.length === 0 && !envFilesChanged) return;
34
- for (const path of deletedFiles) {
35
- const file = filesMap.get(path);
36
- if (file) this.moduleLoader.cleanupDeletedModule(file);
37
- }
38
- if (changedPaths.length === 0 && envFilesChanged) {
39
- const configPaths = await this.reloadAffectedModules([".env"], filesMap);
40
- await this.restartAffectedConnectors(configPaths);
41
- return;
42
- }
43
- if (changedPaths.length === 0) return;
44
- const invalidationChain = /* @__PURE__ */ new Set();
45
- for (const path of changedPaths) {
46
- for (const file of this.dependencyGraph.getInvalidationChain(path)) invalidationChain.add(file);
47
- devLogHMR(path, invalidationChain.size - 1);
48
- }
49
- const chain = Array.from(invalidationChain);
50
- for (const relativePath of chain) {
51
- const file = filesMap.get(relativePath);
52
- if (!file) continue;
53
- this.moduleLoader.runCleanup(file);
54
- this.bumpVersion(file.absolutePath);
55
- await file.process({ force: true });
56
- }
57
- await this.flushVersionBumps();
58
- const affectedConfigPaths = await this.reloadAffectedModules(chain, filesMap);
59
- await this.restartAffectedConnectors([...changedPaths, ...affectedConfigPaths]);
60
- }
61
- async restartAffectedConnectors(affectedFiles) {
62
- const toRestart = connectorsManager.list().filter((connector) => connector.shouldRestart(affectedFiles));
63
- for (const connector of toRestart) await connector.restart();
64
- }
65
- /**
66
- * Re-import every special file whose path or dependency-set intersects the
67
- * invalidation chain. Returns the relative paths of any config files that
68
- * reloaded so the caller can pass them to the connector-restart pass.
69
- */
70
- async reloadAffectedModules(chain, filesMap) {
71
- const isEnvAffected = chain.some(isEnvPath);
72
- if (isEnvAffected) await loadEnv();
73
- const isAffected = (file) => isFileAffected(file, chain);
74
- const affectedModels = chain.map((path) => filesMap.get(path)).filter((file) => !!file && file.type === "model");
75
- for (const file of affectedModels) await this.moduleLoader.loadModule(file, "model");
76
- const collector = this.specialFilesCollector;
77
- const affectedConfigs = collector.getFilesByType("config").filter((file) => isEnvAffected ? true : isAffected(file));
78
- const affectedMains = collector.getFilesByType("main").filter(isAffected);
79
- const affectedRoutes = collector.getFilesByType("route").filter(isAffected);
80
- const affectedEvents = collector.getFilesByType("event").filter(isAffected);
81
- const affectedLocales = collector.getFilesByType("locale").filter(isAffected);
82
- if (!(affectedConfigs.length > 0 || affectedMains.length > 0 || affectedRoutes.length > 0 || affectedEvents.length > 0 || affectedLocales.length > 0)) {
83
- const tail = filesMap.get(chain[chain.length - 1]);
84
- if (tail) await this.moduleLoader.reloadModule(tail);
85
- return [];
86
- }
87
- const configPaths = [];
88
- for (const file of affectedConfigs) {
89
- await configManager.reload(file);
90
- configPaths.push(file.relativePath);
91
- }
92
- for (const file of affectedLocales) await this.moduleLoader.reloadModule(file);
93
- for (const file of affectedMains) await this.moduleLoader.reloadModule(file);
94
- for (const file of affectedEvents) await this.moduleLoader.reloadModule(file);
95
- for (const file of affectedRoutes) await this.moduleLoader.reloadModule(file);
96
- return configPaths;
97
- }
98
- };
99
- function isEnvPath(path) {
100
- const basename = path.split("/").pop() ?? path;
101
- return basename === ".env" || basename.startsWith(".env.");
102
- }
103
- /**
104
- * A file is "affected" if it itself is in the chain or imports something in it.
105
- */
106
- function isFileAffected(file, chain) {
107
- if (chain.includes(file.relativePath)) return true;
108
- for (const dep of file.dependencies) if (chain.includes(dep)) return true;
109
- return false;
110
- }
111
-
112
- //#endregion
113
- export { LayerExecutor };
114
- //# sourceMappingURL=layer-executor.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layer-executor.mjs","names":[],"sources":["../../../../../../@warlock.js/core/src/dev-server/layer-executor.ts"],"sourcesContent":["import { loadEnv } from \"@mongez/dotenv\";\r\nimport { configManager } from \"../config/config-manager\";\r\nimport { connectorsManager } from \"../connectors/connectors-manager\";\r\nimport type { DependencyGraph } from \"./dependency-graph\";\r\nimport { devLogHMR } from \"./dev-logger\";\r\nimport { FileManager } from \"./file-manager\";\r\nimport type { ModuleLoader } from \"./module-loader\";\r\nimport type { SpecialFilesCollector } from \"./special-files-collector\";\r\n\r\n/**\r\n * Decides what to reload when a batch of files changes.\r\n *\r\n * Strategy: bump the hook's version counter for every file in the\r\n * invalidation chain, wait for the hook worker to flush, then re-import\r\n * any special files (config / main / routes / events / locales) the chain\r\n * touched and restart any connector whose watched-files overlap the change.\r\n */\r\nexport class LayerExecutor {\r\n public constructor(\r\n private readonly dependencyGraph: DependencyGraph,\r\n private readonly specialFilesCollector: SpecialFilesCollector,\r\n private readonly moduleLoader: ModuleLoader,\r\n private readonly bumpVersion: (absolutePath: string) => void,\r\n private readonly flushVersionBumps: () => Promise<void>,\r\n ) {}\r\n\r\n /**\r\n * Entry point for the file watcher batch.\r\n *\r\n * @param changedPaths - code files added or changed in this batch\r\n * @param filesMap - all tracked files (relativePath → FileManager)\r\n * @param deletedFiles - paths that were removed from disk\r\n * @param allChangedPaths - includes .env so we can detect config reloads\r\n */\r\n public async executeBatchReload(\r\n changedPaths: string[],\r\n filesMap: Map<string, FileManager>,\r\n deletedFiles: string[],\r\n allChangedPaths?: string[],\r\n ): Promise<void> {\r\n const envFilesChanged = (allChangedPaths ?? []).some(isEnvPath);\r\n\r\n if (changedPaths.length === 0 && deletedFiles.length === 0 && !envFilesChanged) {\r\n return;\r\n }\r\n\r\n // Deletes: clean up routes/cleanup hooks for files that no longer exist.\r\n for (const path of deletedFiles) {\r\n const file = filesMap.get(path);\r\n if (file) this.moduleLoader.cleanupDeletedModule(file);\r\n }\r\n\r\n // Env-only change: reload all configs, restart connectors that watch them.\r\n if (changedPaths.length === 0 && envFilesChanged) {\r\n const configPaths = await this.reloadAffectedModules([\".env\"], filesMap);\r\n await this.restartAffectedConnectors(configPaths);\r\n return;\r\n }\r\n\r\n if (changedPaths.length === 0) return;\r\n\r\n const invalidationChain = new Set<string>();\r\n for (const path of changedPaths) {\r\n for (const file of this.dependencyGraph.getInvalidationChain(path)) {\r\n invalidationChain.add(file);\r\n }\r\n devLogHMR(path, invalidationChain.size - 1);\r\n }\r\n\r\n const chain = Array.from(invalidationChain);\r\n\r\n // Step 1: bump version counters so the next import() is fresh.\r\n for (const relativePath of chain) {\r\n const file = filesMap.get(relativePath);\r\n if (!file) continue;\r\n this.moduleLoader.runCleanup(file);\r\n this.bumpVersion(file.absolutePath);\r\n await file.process({ force: true });\r\n }\r\n\r\n // Step 2: wait for the hook worker to ack every bump.\r\n // Without this, resolve() may still return the old ?v=N URL.\r\n await this.flushVersionBumps();\r\n\r\n // Step 3: re-import affected special files.\r\n const affectedConfigPaths = await this.reloadAffectedModules(chain, filesMap);\r\n\r\n // Step 4: restart any connector whose watched-files overlap the chain.\r\n await this.restartAffectedConnectors([...changedPaths, ...affectedConfigPaths]);\r\n }\r\n\r\n private async restartAffectedConnectors(affectedFiles: string[]): Promise<void> {\r\n const toRestart = connectorsManager\r\n .list()\r\n .filter(connector => connector.shouldRestart(affectedFiles));\r\n\r\n for (const connector of toRestart) {\r\n await connector.restart();\r\n }\r\n }\r\n\r\n /**\r\n * Re-import every special file whose path or dependency-set intersects the\r\n * invalidation chain. Returns the relative paths of any config files that\r\n * reloaded so the caller can pass them to the connector-restart pass.\r\n */\r\n private async reloadAffectedModules(\r\n chain: string[],\r\n filesMap: Map<string, FileManager>,\r\n ): Promise<string[]> {\r\n const isEnvAffected = chain.some(isEnvPath);\r\n if (isEnvAffected) await loadEnv();\r\n\r\n const isAffected = (file: FileManager) => isFileAffected(file, chain);\r\n\r\n // Models self-register via the @RegisterModel decorator and rely on the\r\n // module-loader's registerCleanup() to attach Model.$cleanup (which\r\n // unregisters them on the next reload). That only happens inside\r\n // loadModule(), which models hit exactly once — at boot, via\r\n // autoDiscoverFiles. During HMR they're otherwise re-imported\r\n // *transitively* through routes, which never re-runs registerCleanup, so\r\n // after the first reload the cleanup list is empty and the registration\r\n // leaks (\"Model X is already registered\" on every subsequent edit).\r\n //\r\n // Re-importing changed model files through loadModule here re-attaches\r\n // $cleanup every cycle. It runs before the route pass so the decorator\r\n // registers once; the transitive route import then hits the cached ?v=N\r\n // and does not double-register.\r\n const affectedModels = chain\r\n .map(path => filesMap.get(path))\r\n .filter((file): file is FileManager => !!file && file.type === \"model\");\r\n\r\n for (const file of affectedModels) {\r\n await this.moduleLoader.loadModule(file, \"model\");\r\n }\r\n\r\n const collector = this.specialFilesCollector;\r\n const affectedConfigs = collector\r\n .getFilesByType(\"config\")\r\n .filter(file => (isEnvAffected ? true : isAffected(file)));\r\n const affectedMains = collector.getFilesByType(\"main\").filter(isAffected);\r\n const affectedRoutes = collector.getFilesByType(\"route\").filter(isAffected);\r\n const affectedEvents = collector.getFilesByType(\"event\").filter(isAffected);\r\n const affectedLocales = collector.getFilesByType(\"locale\").filter(isAffected);\r\n\r\n const hasSpecialFiles =\r\n affectedConfigs.length > 0 ||\r\n affectedMains.length > 0 ||\r\n affectedRoutes.length > 0 ||\r\n affectedEvents.length > 0 ||\r\n affectedLocales.length > 0;\r\n\r\n // No entry points touched: reloading internal files alone is wasted work\r\n // because the hook will re-import them on next access anyway. But the\r\n // dep chain's last hop is usually the user-facing edge — give it a kick.\r\n if (!hasSpecialFiles) {\r\n const tail = filesMap.get(chain[chain.length - 1]);\r\n if (tail) await this.moduleLoader.reloadModule(tail);\r\n return [];\r\n }\r\n\r\n const configPaths: string[] = [];\r\n for (const file of affectedConfigs) {\r\n await configManager.reload(file);\r\n configPaths.push(file.relativePath);\r\n }\r\n\r\n // Order matters: locales first (translations used by main), main before\r\n // routes (registers state routes consume), events between (listeners).\r\n for (const file of affectedLocales) await this.moduleLoader.reloadModule(file);\r\n for (const file of affectedMains) await this.moduleLoader.reloadModule(file);\r\n for (const file of affectedEvents) await this.moduleLoader.reloadModule(file);\r\n for (const file of affectedRoutes) await this.moduleLoader.reloadModule(file);\r\n\r\n return configPaths;\r\n }\r\n}\r\n\r\nfunction isEnvPath(path: string): boolean {\r\n const basename = path.split(\"/\").pop() ?? path;\r\n return basename === \".env\" || basename.startsWith(\".env.\");\r\n}\r\n\r\n/**\r\n * A file is \"affected\" if it itself is in the chain or imports something in it.\r\n */\r\nfunction isFileAffected(file: FileManager, chain: string[]): boolean {\r\n if (chain.includes(file.relativePath)) return true;\r\n for (const dep of file.dependencies) {\r\n if (chain.includes(dep)) return true;\r\n }\r\n return false;\r\n}\r\n"],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import { TranspileInit, load } from "./load-hook.mjs";
2
- import { resolve } from "./resolve-hook.mjs";
3
- import { MessagePort } from "node:worker_threads";
4
-
5
- //#region ../../@warlock.js/core/src/dev-server/loader/hook-thread.d.ts
6
- type InitializeData = {
7
- port: MessagePort;
8
- srcRoot: string; /** Transpile config (always present — esbuild transpile is unconditional). */
9
- transpile: TranspileInit;
10
- };
11
- /**
12
- * ESM loader hook entry-point.
13
- *
14
- * Node's `module.register()` runs this file in a dedicated worker thread.
15
- * The three exported functions (`initialize`, `resolve`, `load`) are the
16
- * official hook lifecycle callbacks:
17
- *
18
- * - `initialize` — runs once when the hook worker starts; receives the data
19
- * passed as `{ data }` to `module.register()`. We use it to configure the
20
- * source-root filter and to wire the `MessageChannel` port that the main
21
- * thread uses to push version-bump notifications.
22
- *
23
- * - `resolve` — intercepts every `import` specifier resolution. The
24
- * framework's own resolver handles tsconfig `paths` + TS extension/index
25
- * probing; npm/`node:` fall through to Node default. Stamps a `?v=<N>`
26
- * version token onto tracked `src/` source-file URLs.
27
- *
28
- * - `load` — transpiles every `.ts`/`.tsx` with esbuild (content-hash
29
- * cached); non-TypeScript falls through to the Node default loader.
30
- *
31
- * @example
32
- * // Main thread (register-loader.ts):
33
- * const { port1, port2 } = new MessageChannel();
34
- * module.register(hookBundleUrl, import.meta.url, {
35
- * data: { port: port2, srcRoot: "/abs/path/to/src" },
36
- * transferList: [port2],
37
- * });
38
- * // File watcher later:
39
- * port1.postMessage({ type: "bump", absolutePath: "/abs/path/to/user.model.ts" });
40
- */
41
- declare function initialize({
42
- port,
43
- srcRoot,
44
- transpile
45
- }: InitializeData): void;
46
- //#endregion
47
- export { initialize, load, resolve };
48
- //# sourceMappingURL=hook-thread.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook-thread.d.mts","names":[],"sources":["../../../../../../../@warlock.js/core/src/dev-server/loader/hook-thread.ts"],"mappings":";;;;;KAKK,cAAA;EACH,IAAA,EAAM,WAAA;EACN,OAAA,UAFiB;EAIjB,SAAA,EAAW,aAAa;AAAA;;;;;;;AAAA;AAiC1B;;;;;;;;;;;;;;;;;AAAuE;;;;;;iBAAvD,UAAA,CAAA;EAAa,IAAA;EAAM,OAAA;EAAS;AAAA,GAAa,cAAA"}
@@ -1,47 +0,0 @@
1
- import { configureTranspile, load } from "./load-hook.mjs";
2
- import { bumpVersion } from "./version-registry.mjs";
3
- import { resolve, setSrcRoot } from "./resolve-hook.mjs";
4
-
5
- //#region ../../@warlock.js/core/src/dev-server/loader/hook-thread.ts
6
- /**
7
- * ESM loader hook entry-point.
8
- *
9
- * Node's `module.register()` runs this file in a dedicated worker thread.
10
- * The three exported functions (`initialize`, `resolve`, `load`) are the
11
- * official hook lifecycle callbacks:
12
- *
13
- * - `initialize` — runs once when the hook worker starts; receives the data
14
- * passed as `{ data }` to `module.register()`. We use it to configure the
15
- * source-root filter and to wire the `MessageChannel` port that the main
16
- * thread uses to push version-bump notifications.
17
- *
18
- * - `resolve` — intercepts every `import` specifier resolution. The
19
- * framework's own resolver handles tsconfig `paths` + TS extension/index
20
- * probing; npm/`node:` fall through to Node default. Stamps a `?v=<N>`
21
- * version token onto tracked `src/` source-file URLs.
22
- *
23
- * - `load` — transpiles every `.ts`/`.tsx` with esbuild (content-hash
24
- * cached); non-TypeScript falls through to the Node default loader.
25
- *
26
- * @example
27
- * // Main thread (register-loader.ts):
28
- * const { port1, port2 } = new MessageChannel();
29
- * module.register(hookBundleUrl, import.meta.url, {
30
- * data: { port: port2, srcRoot: "/abs/path/to/src" },
31
- * transferList: [port2],
32
- * });
33
- * // File watcher later:
34
- * port1.postMessage({ type: "bump", absolutePath: "/abs/path/to/user.model.ts" });
35
- */
36
- function initialize({ port, srcRoot, transpile }) {
37
- setSrcRoot(srcRoot);
38
- configureTranspile(transpile);
39
- port.on("message", ({ type, absolutePath }) => {
40
- if (type === "bump") bumpVersion(absolutePath);
41
- else if (type === "sync") port.postMessage({ type: "sync-ack" });
42
- });
43
- }
44
-
45
- //#endregion
46
- export { initialize, load, resolve };
47
- //# sourceMappingURL=hook-thread.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook-thread.mjs","names":[],"sources":["../../../../../../../@warlock.js/core/src/dev-server/loader/hook-thread.ts"],"sourcesContent":["import type { MessagePort } from \"node:worker_threads\";\nimport { configureTranspile, load, type TranspileInit } from \"./load-hook.js\";\nimport { resolve, setSrcRoot } from \"./resolve-hook.js\";\nimport { bumpVersion } from \"./version-registry.js\";\n\ntype InitializeData = {\n port: MessagePort;\n srcRoot: string;\n /** Transpile config (always present — esbuild transpile is unconditional). */\n transpile: TranspileInit;\n};\n\n/**\n * ESM loader hook entry-point.\n *\n * Node's `module.register()` runs this file in a dedicated worker thread.\n * The three exported functions (`initialize`, `resolve`, `load`) are the\n * official hook lifecycle callbacks:\n *\n * - `initialize` — runs once when the hook worker starts; receives the data\n * passed as `{ data }` to `module.register()`. We use it to configure the\n * source-root filter and to wire the `MessageChannel` port that the main\n * thread uses to push version-bump notifications.\n *\n * - `resolve` — intercepts every `import` specifier resolution. The\n * framework's own resolver handles tsconfig `paths` + TS extension/index\n * probing; npm/`node:` fall through to Node default. Stamps a `?v=<N>`\n * version token onto tracked `src/` source-file URLs.\n *\n * - `load` — transpiles every `.ts`/`.tsx` with esbuild (content-hash\n * cached); non-TypeScript falls through to the Node default loader.\n *\n * @example\n * // Main thread (register-loader.ts):\n * const { port1, port2 } = new MessageChannel();\n * module.register(hookBundleUrl, import.meta.url, {\n * data: { port: port2, srcRoot: \"/abs/path/to/src\" },\n * transferList: [port2],\n * });\n * // File watcher later:\n * port1.postMessage({ type: \"bump\", absolutePath: \"/abs/path/to/user.model.ts\" });\n */\nexport function initialize({ port, srcRoot, transpile }: InitializeData): void {\n setSrcRoot(srcRoot);\n configureTranspile(transpile);\n\n port.on(\"message\", ({ type, absolutePath }: { type: string; absolutePath: string }) => {\n if (type === \"bump\") {\n bumpVersion(absolutePath);\n } else if (type === \"sync\") {\n port.postMessage({ type: \"sync-ack\" });\n }\n });\n}\n\nexport { load, resolve };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,SAAgB,WAAW,EAAE,MAAM,SAAS,aAAmC;CAC7E,WAAW,OAAO;CAClB,mBAAmB,SAAS;CAE5B,KAAK,GAAG,YAAY,EAAE,MAAM,mBAA2D;EACrF,IAAI,SAAS,QACX,YAAY,YAAY;OACnB,IAAI,SAAS,QAClB,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;CAEzC,CAAC;AACH"}
@@ -1,58 +0,0 @@
1
- //#region ../../@warlock.js/core/src/dev-server/loader/load-hook.d.ts
2
- type LoadContext = {
3
- format?: string;
4
- importAttributes?: Record<string, string>;
5
- };
6
- type LoadResult = {
7
- format: string;
8
- source: string | Buffer;
9
- shortCircuit?: boolean;
10
- };
11
- type NextLoad = (url: string, context?: LoadContext) => Promise<LoadResult>;
12
- /**
13
- * Everything the transpile path needs, computed once on the main thread and
14
- * shipped into the hook worker via `initialize()`. Always present — esbuild
15
- * transpile is unconditional now (tsx is no longer in the TS path).
16
- */
17
- type TranspileInit = {
18
- /** Absolute `.warlock/transpile` directory. */cacheDir: string; /** Source-content key salt: esbuild version + epoch + tsconfig blob. */
19
- fingerprint: string; /** esbuild `target` (e.g. `"node22"` — must match the prod builder). */
20
- target: string; /** JSON string of `{ compilerOptions }` handed to esbuild as tsconfigRaw. */
21
- tsconfigRaw: string;
22
- /**
23
- * Debug-only: name cache files `<slug>.<hash>.js` and append a trailing
24
- * `// @source <path>` marker so entries are eyeball-identifiable. Off by
25
- * default (opaque `<hash>.js`). Cosmetic — never affects keys or lookup.
26
- */
27
- debugNames: boolean;
28
- };
29
- /**
30
- * ESM loader `load()` hook.
31
- *
32
- * Owns the transpile for **every** TypeScript file — project `src/`,
33
- * `@warlock.js/*` framework source, and `warlock.config.ts` alike. There
34
- * is no tsx in the TypeScript path any more: we read the source, key it by
35
- * a content hash + options fingerprint, serve the cached JS on a hit, and
36
- * otherwise transform it with esbuild directly and persist. Non-TypeScript
37
- * URLs (npm `.js`/`.cjs`/`.mjs`, `node:` builtins, JSON) are not ours —
38
- * they fall through to the next loader (Node's default).
39
- *
40
- * The `?v=<N>` query drives Node's module identity (HMR) for `src/` files
41
- * and is **never** part of the cache key — the cache is keyed purely by
42
- * source content, so the two mechanisms are fully orthogonal. Framework
43
- * and config `.ts` carry no `?v` (no HMR) but are transpiled and cached
44
- * exactly the same way.
45
- *
46
- * The source map esbuild emits is inline base64 with `sourcefile` set to
47
- * the clean absolute `.ts` path, so V8 (run with source maps enabled)
48
- * reports stack frames at the original TypeScript location.
49
- *
50
- * @example
51
- * // load("file:///src/user.model.ts?v=3") → esbuild transpile + cache
52
- * // load("file:///@warlock.js/core/src/x.ts") → esbuild transpile + cache
53
- * // load("file:///node_modules/ms/index.js") → nextLoad (Node default)
54
- */
55
- declare function load(url: string, context: LoadContext, nextLoad: NextLoad): Promise<LoadResult>;
56
- //#endregion
57
- export { TranspileInit, load };
58
- //# sourceMappingURL=load-hook.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-hook.d.mts","names":[],"sources":["../../../../../../../@warlock.js/core/src/dev-server/loader/load-hook.ts"],"mappings":";KAMK,WAAA;EACH,MAAA;EACA,gBAAA,GAAmB,MAAM;AAAA;AAAA,KAGtB,UAAA;EACH,MAAA;EACA,MAAA,WAAiB,MAAM;EACvB,YAAA;AAAA;AAAA,KAGG,QAAA,IAAY,GAAA,UAAa,OAAA,GAAU,WAAA,KAAgB,OAAA,CAAQ,UAAA;AATrC;;;;;AAAA,KAgBf,aAAA;EAXO,+CAajB,QAAA,UAZY;EAcZ,WAAA,UAXG;EAaH,MAAA;EAEA,WAAA;EAf8D;;;;;EAqB9D,UAAA;AAAA;;;;;;;;;AAAU;AAqDZ;;;;;;;;;;;;;;;;;iBAAsB,IAAA,CACpB,GAAA,UACA,OAAA,EAAS,WAAA,EACT,QAAA,EAAU,QAAA,GACT,OAAA,CAAQ,UAAA"}
@@ -1,86 +0,0 @@
1
- import { TranspileCache, cacheKey } from "./transpile-cache.mjs";
2
- import { sourceSlug } from "./source-slug.mjs";
3
- import { transformSync } from "esbuild";
4
- import { readFileSync } from "node:fs";
5
- import { fileURLToPath } from "node:url";
6
-
7
- //#region ../../@warlock.js/core/src/dev-server/loader/load-hook.ts
8
- const VERSION_QUERY = /\?v=\d+$/;
9
- const TS_FILE = /\.(ts|tsx|mts|cts)$/;
10
- let transpile;
11
- let cache;
12
- /**
13
- * Called once from the hook worker's `initialize()`. Wires the persisted
14
- * transpile cache and runs one opportunistic GC pass at boot — cheap, off
15
- * the hot path, single directory scan.
16
- */
17
- function configureTranspile(init) {
18
- transpile = init;
19
- cache = new TranspileCache(init.cacheDir);
20
- cache.gc({
21
- maxBytes: 256 * 1024 * 1024,
22
- maxAgeMs: 336 * 60 * 60 * 1e3
23
- });
24
- }
25
- /**
26
- * ESM loader `load()` hook.
27
- *
28
- * Owns the transpile for **every** TypeScript file — project `src/`,
29
- * `@warlock.js/*` framework source, and `warlock.config.ts` alike. There
30
- * is no tsx in the TypeScript path any more: we read the source, key it by
31
- * a content hash + options fingerprint, serve the cached JS on a hit, and
32
- * otherwise transform it with esbuild directly and persist. Non-TypeScript
33
- * URLs (npm `.js`/`.cjs`/`.mjs`, `node:` builtins, JSON) are not ours —
34
- * they fall through to the next loader (Node's default).
35
- *
36
- * The `?v=<N>` query drives Node's module identity (HMR) for `src/` files
37
- * and is **never** part of the cache key — the cache is keyed purely by
38
- * source content, so the two mechanisms are fully orthogonal. Framework
39
- * and config `.ts` carry no `?v` (no HMR) but are transpiled and cached
40
- * exactly the same way.
41
- *
42
- * The source map esbuild emits is inline base64 with `sourcefile` set to
43
- * the clean absolute `.ts` path, so V8 (run with source maps enabled)
44
- * reports stack frames at the original TypeScript location.
45
- *
46
- * @example
47
- * // load("file:///src/user.model.ts?v=3") → esbuild transpile + cache
48
- * // load("file:///@warlock.js/core/src/x.ts") → esbuild transpile + cache
49
- * // load("file:///node_modules/ms/index.js") → nextLoad (Node default)
50
- */
51
- async function load(url, context, nextLoad) {
52
- const cleanUrl = url.replace(VERSION_QUERY, "");
53
- if (!TS_FILE.test(cleanUrl)) return nextLoad(url, context);
54
- const absolutePath = fileURLToPath(cleanUrl);
55
- const source = readFileSync(absolutePath, "utf8");
56
- const key = cacheKey(source, transpile.fingerprint);
57
- const label = transpile.debugNames ? sourceSlug(absolutePath) : void 0;
58
- const hit = cache.get(key, label);
59
- if (hit) return {
60
- format: "module",
61
- source: hit.code,
62
- shortCircuit: true
63
- };
64
- const result = transformSync(source, {
65
- loader: absolutePath.endsWith(".tsx") ? "tsx" : "ts",
66
- format: "esm",
67
- target: transpile.target,
68
- sourcefile: absolutePath,
69
- sourcemap: "inline",
70
- tsconfigRaw: transpile.tsconfigRaw
71
- });
72
- const code = label ? `${result.code}\n// @source ${absolutePath}\n` : result.code;
73
- cache.put(key, {
74
- code,
75
- map: ""
76
- }, label);
77
- return {
78
- format: "module",
79
- source: code,
80
- shortCircuit: true
81
- };
82
- }
83
-
84
- //#endregion
85
- export { configureTranspile, load };
86
- //# sourceMappingURL=load-hook.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-hook.mjs","names":[],"sources":["../../../../../../../@warlock.js/core/src/dev-server/loader/load-hook.ts"],"sourcesContent":["import { transformSync } from \"esbuild\";\nimport { readFileSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { sourceSlug } from \"./source-slug.js\";\nimport { cacheKey, TranspileCache } from \"./transpile-cache.js\";\n\ntype LoadContext = {\n format?: string;\n importAttributes?: Record<string, string>;\n};\n\ntype LoadResult = {\n format: string;\n source: string | Buffer;\n shortCircuit?: boolean;\n};\n\ntype NextLoad = (url: string, context?: LoadContext) => Promise<LoadResult>;\n\n/**\n * Everything the transpile path needs, computed once on the main thread and\n * shipped into the hook worker via `initialize()`. Always present — esbuild\n * transpile is unconditional now (tsx is no longer in the TS path).\n */\nexport type TranspileInit = {\n /** Absolute `.warlock/transpile` directory. */\n cacheDir: string;\n /** Source-content key salt: esbuild version + epoch + tsconfig blob. */\n fingerprint: string;\n /** esbuild `target` (e.g. `\"node22\"` — must match the prod builder). */\n target: string;\n /** JSON string of `{ compilerOptions }` handed to esbuild as tsconfigRaw. */\n tsconfigRaw: string;\n /**\n * Debug-only: name cache files `<slug>.<hash>.js` and append a trailing\n * `// @source <path>` marker so entries are eyeball-identifiable. Off by\n * default (opaque `<hash>.js`). Cosmetic — never affects keys or lookup.\n */\n debugNames: boolean;\n};\n\nconst VERSION_QUERY = /\\?v=\\d+$/;\nconst TS_FILE = /\\.(ts|tsx|mts|cts)$/;\n\nlet transpile: TranspileInit;\nlet cache: TranspileCache;\n\n/**\n * Called once from the hook worker's `initialize()`. Wires the persisted\n * transpile cache and runs one opportunistic GC pass at boot — cheap, off\n * the hot path, single directory scan.\n */\nexport function configureTranspile(init: TranspileInit): void {\n transpile = init;\n cache = new TranspileCache(init.cacheDir);\n\n // Boot-time eviction so the cache can't grow unbounded across weeks of\n // dev. Bounds are generous; correctness never depends on GC (content\n // hashing already guarantees that) — this is purely disk hygiene.\n cache.gc({\n maxBytes: 256 * 1024 * 1024,\n maxAgeMs: 14 * 24 * 60 * 60 * 1000,\n });\n}\n\n/**\n * ESM loader `load()` hook.\n *\n * Owns the transpile for **every** TypeScript file — project `src/`,\n * `@warlock.js/*` framework source, and `warlock.config.ts` alike. There\n * is no tsx in the TypeScript path any more: we read the source, key it by\n * a content hash + options fingerprint, serve the cached JS on a hit, and\n * otherwise transform it with esbuild directly and persist. Non-TypeScript\n * URLs (npm `.js`/`.cjs`/`.mjs`, `node:` builtins, JSON) are not ours —\n * they fall through to the next loader (Node's default).\n *\n * The `?v=<N>` query drives Node's module identity (HMR) for `src/` files\n * and is **never** part of the cache key — the cache is keyed purely by\n * source content, so the two mechanisms are fully orthogonal. Framework\n * and config `.ts` carry no `?v` (no HMR) but are transpiled and cached\n * exactly the same way.\n *\n * The source map esbuild emits is inline base64 with `sourcefile` set to\n * the clean absolute `.ts` path, so V8 (run with source maps enabled)\n * reports stack frames at the original TypeScript location.\n *\n * @example\n * // load(\"file:///src/user.model.ts?v=3\") → esbuild transpile + cache\n * // load(\"file:///@warlock.js/core/src/x.ts\") → esbuild transpile + cache\n * // load(\"file:///node_modules/ms/index.js\") → nextLoad (Node default)\n */\nexport async function load(\n url: string,\n context: LoadContext,\n nextLoad: NextLoad,\n): Promise<LoadResult> {\n const cleanUrl = url.replace(VERSION_QUERY, \"\");\n\n // Not TypeScript → not ours. npm packages, node: builtins, JSON, etc.\n if (!TS_FILE.test(cleanUrl)) {\n return nextLoad(url, context);\n }\n\n const absolutePath = fileURLToPath(cleanUrl);\n const source = readFileSync(absolutePath, \"utf8\");\n const key = cacheKey(source, transpile.fingerprint);\n\n // Cosmetic filename label; undefined keeps opaque <hash>.js names.\n const label = transpile.debugNames ? sourceSlug(absolutePath) : undefined;\n\n const hit = cache.get(key, label);\n if (hit) {\n return { format: \"module\", source: hit.code, shortCircuit: true };\n }\n\n const loader = absolutePath.endsWith(\".tsx\") ? \"tsx\" : \"ts\";\n\n const result = transformSync(source, {\n loader,\n format: \"esm\",\n target: transpile.target,\n sourcefile: absolutePath,\n // Inline base64 map, self-contained (sourcesContent on by default), so\n // it survives the ?v=N URL with no extra resolution step.\n sourcemap: \"inline\",\n tsconfigRaw: transpile.tsconfigRaw,\n });\n\n // result.code already carries the inline //# sourceMappingURL. The\n // marker goes AFTER that line: a trailing comment can't shift earlier\n // generated lines, so the inline map (and therefore stack-frame line\n // numbers) stays exact. A leading marker would desync it by one line.\n const code = label\n ? `${result.code}\\n// @source ${absolutePath}\\n`\n : result.code;\n\n cache.put(key, { code, map: \"\" }, label);\n\n return { format: \"module\", source: code, shortCircuit: true };\n}\n"],"mappings":";;;;;;;AAyCA,MAAM,gBAAgB;AACtB,MAAM,UAAU;AAEhB,IAAI;AACJ,IAAI;;;;;;AAOJ,SAAgB,mBAAmB,MAA2B;CAC5D,YAAY;CACZ,QAAQ,IAAI,eAAe,KAAK,QAAQ;CAKxC,MAAM,GAAG;EACP,UAAU,MAAM,OAAO;EACvB,UAAU,MAAU,KAAK,KAAK;CAChC,CAAC;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,eAAsB,KACpB,KACA,SACA,UACqB;CACrB,MAAM,WAAW,IAAI,QAAQ,eAAe,EAAE;CAG9C,IAAI,CAAC,QAAQ,KAAK,QAAQ,GACxB,OAAO,SAAS,KAAK,OAAO;CAG9B,MAAM,eAAe,cAAc,QAAQ;CAC3C,MAAM,SAAS,aAAa,cAAc,MAAM;CAChD,MAAM,MAAM,SAAS,QAAQ,UAAU,WAAW;CAGlD,MAAM,QAAQ,UAAU,aAAa,WAAW,YAAY,IAAI;CAEhE,MAAM,MAAM,MAAM,IAAI,KAAK,KAAK;CAChC,IAAI,KACF,OAAO;EAAE,QAAQ;EAAU,QAAQ,IAAI;EAAM,cAAc;CAAK;CAKlE,MAAM,SAAS,cAAc,QAAQ;EACnC,QAHa,aAAa,SAAS,MAAM,IAAI,QAAQ;EAIrD,QAAQ;EACR,QAAQ,UAAU;EAClB,YAAY;EAGZ,WAAW;EACX,aAAa,UAAU;CACzB,CAAC;CAMD,MAAM,OAAO,QACT,GAAG,OAAO,KAAK,eAAe,aAAa,MAC3C,OAAO;CAEX,MAAM,IAAI,KAAK;EAAE;EAAM,KAAK;CAAG,GAAG,KAAK;CAEvC,OAAO;EAAE,QAAQ;EAAU,QAAQ;EAAM,cAAc;CAAK;AAC9D"}
@@ -1,69 +0,0 @@
1
- import { URL, fileURLToPath, pathToFileURL } from "node:url";
2
-
3
- //#region ../../@warlock.js/core/src/dev-server/loader/own-resolver.ts
4
- /**
5
- * Extension/`index` probing for one candidate base path, mirroring tsx's
6
- * TypeScript-aware order:
7
- *
8
- * 1. exact (if it already has a real extension that exists)
9
- * 2. `.js`/`.jsx`/`.mjs`/`.cjs` specifier → the TS source it compiles from
10
- * (`.ts`/`.tsx`) — the standard "import the .js, ship the .ts" ESM style
11
- * 3. append `.ts`, `.tsx`, `.js`, `.jsx`, `.json`
12
- * 4. directory index: `<dir>/index.{ts,tsx,js,jsx}`
13
- *
14
- * Returns the resolved absolute path, or `null` if nothing exists.
15
- */
16
- function probeFile(basePath, fileExists) {
17
- const jsRewrite = basePath.match(/\.(js|jsx|mjs|cjs)$/);
18
- if (jsRewrite) {
19
- const stem = basePath.slice(0, -jsRewrite[0].length);
20
- for (const ext of [".ts", ".tsx"]) if (fileExists(stem + ext)) return stem + ext;
21
- }
22
- if (/\.[a-z]+$/i.test(basePath) && fileExists(basePath)) return basePath;
23
- for (const ext of [
24
- ".ts",
25
- ".tsx",
26
- ".js",
27
- ".jsx",
28
- ".json"
29
- ]) if (fileExists(basePath + ext)) return basePath + ext;
30
- for (const ext of [
31
- ".ts",
32
- ".tsx",
33
- ".js",
34
- ".jsx"
35
- ]) {
36
- const candidate = `${basePath}/index${ext}`;
37
- if (fileExists(candidate)) return candidate;
38
- }
39
- return null;
40
- }
41
- function isRelative(specifier) {
42
- return specifier.startsWith("./") || specifier.startsWith("../");
43
- }
44
- /**
45
- * Resolve `specifier` to a `file://` URL we own, or `null` to fall through
46
- * to the next resolver.
47
- *
48
- * @param specifier - The import specifier.
49
- * @param parentURL - Importing module's URL (already `?v=N`-stripped).
50
- * @param pathsMatcher - `get-tsconfig` paths matcher (alias → candidates).
51
- * @param fileExists - Existence probe (injected for testing).
52
- */
53
- function ownResolve(specifier, parentURL, pathsMatcher, fileExists) {
54
- if (specifier.startsWith("node:") || specifier.startsWith("file:") || specifier.startsWith("data:")) return null;
55
- if (isRelative(specifier) || specifier.startsWith("/") || /^[a-zA-Z]:[\\/]/.test(specifier)) {
56
- if (!parentURL) return null;
57
- const hit = probeFile(fileURLToPath(new URL(specifier, parentURL)).replace(/\\/g, "/"), fileExists);
58
- return hit ? pathToFileURL(hit).href : null;
59
- }
60
- if (pathsMatcher) for (const candidate of pathsMatcher(specifier)) {
61
- const hit = probeFile(candidate.replace(/\\/g, "/"), fileExists);
62
- if (hit) return pathToFileURL(hit).href;
63
- }
64
- return null;
65
- }
66
-
67
- //#endregion
68
- export { ownResolve };
69
- //# sourceMappingURL=own-resolver.mjs.map