@warlock.js/core 5.29.0 → 5.30.0

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 (1359) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/esm/application/app.d.mts +1 -1
  3. package/esm/application/app.d.mts.map +1 -1
  4. package/esm/application/app.mjs +1 -1
  5. package/esm/application/app.mjs.map +1 -1
  6. package/esm/application/application-config-types.d.mts +1 -1
  7. package/esm/application/application-config-types.d.mts.map +1 -1
  8. package/esm/application/application.d.mts +1 -1
  9. package/esm/application/application.d.mts.map +1 -1
  10. package/esm/application/application.mjs +1 -1
  11. package/esm/application/application.mjs.map +1 -1
  12. package/esm/application/boot-signal.d.mts +1 -1
  13. package/esm/application/boot-signal.d.mts.map +1 -1
  14. package/esm/application/boot-signal.mjs +1 -1
  15. package/esm/application/boot-signal.mjs.map +1 -1
  16. package/esm/application/public-url.d.mts +1 -1
  17. package/esm/application/public-url.d.mts.map +1 -1
  18. package/esm/application/public-url.mjs +1 -1
  19. package/esm/application/public-url.mjs.map +1 -1
  20. package/esm/application/roles.d.mts +1 -1
  21. package/esm/application/roles.d.mts.map +1 -1
  22. package/esm/application/roles.mjs +1 -1
  23. package/esm/application/roles.mjs.map +1 -1
  24. package/esm/benchmark/benchmark-snapshots.d.mts +1 -1
  25. package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
  26. package/esm/benchmark/benchmark-snapshots.mjs +1 -1
  27. package/esm/benchmark/benchmark-snapshots.mjs.map +1 -1
  28. package/esm/benchmark/benchmark.d.mts +1 -1
  29. package/esm/benchmark/benchmark.d.mts.map +1 -1
  30. package/esm/benchmark/benchmark.mjs +1 -1
  31. package/esm/benchmark/benchmark.mjs.map +1 -1
  32. package/esm/benchmark/channels/console.channel.d.mts +1 -1
  33. package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
  34. package/esm/benchmark/channels/console.channel.mjs +1 -1
  35. package/esm/benchmark/channels/console.channel.mjs.map +1 -1
  36. package/esm/benchmark/channels/noop.channel.d.mts +1 -1
  37. package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
  38. package/esm/benchmark/channels/noop.channel.mjs +1 -1
  39. package/esm/benchmark/channels/noop.channel.mjs.map +1 -1
  40. package/esm/benchmark/profiler.d.mts +1 -1
  41. package/esm/benchmark/profiler.d.mts.map +1 -1
  42. package/esm/benchmark/profiler.mjs +1 -1
  43. package/esm/benchmark/profiler.mjs.map +1 -1
  44. package/esm/benchmark/types.d.mts +1 -1
  45. package/esm/benchmark/types.d.mts.map +1 -1
  46. package/esm/bootstrap/setup.d.mts +1 -1
  47. package/esm/bootstrap/setup.d.mts.map +1 -1
  48. package/esm/bootstrap/setup.mjs +1 -1
  49. package/esm/bootstrap/setup.mjs.map +1 -1
  50. package/esm/bootstrap.d.mts +1 -1
  51. package/esm/bootstrap.d.mts.map +1 -1
  52. package/esm/bootstrap.mjs +1 -1
  53. package/esm/bootstrap.mjs.map +1 -1
  54. package/esm/cache/database-cache-driver.d.mts +1 -1
  55. package/esm/cache/database-cache-driver.d.mts.map +1 -1
  56. package/esm/cache/database-cache-driver.mjs +1 -1
  57. package/esm/cache/database-cache-driver.mjs.map +1 -1
  58. package/esm/cache/index.mjs +1 -1
  59. package/esm/cache/index.mjs.map +1 -1
  60. package/esm/cli/cli-commands.manager.mjs +1 -1
  61. package/esm/cli/cli-commands.manager.mjs.map +1 -1
  62. package/esm/cli/cli-commands.utils.mjs +1 -1
  63. package/esm/cli/cli-commands.utils.mjs.map +1 -1
  64. package/esm/cli/commands/add.command.mjs +1 -1
  65. package/esm/cli/commands/add.command.mjs.map +1 -1
  66. package/esm/cli/commands/build.command.mjs +1 -1
  67. package/esm/cli/commands/build.command.mjs.map +1 -1
  68. package/esm/cli/commands/create-database.command.mjs +1 -1
  69. package/esm/cli/commands/create-database.command.mjs.map +1 -1
  70. package/esm/cli/commands/dev-server.command.mjs +1 -1
  71. package/esm/cli/commands/dev-server.command.mjs.map +1 -1
  72. package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +1 -1
  73. package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
  74. package/esm/cli/commands/doctor/checks/config.check.mjs +1 -1
  75. package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
  76. package/esm/cli/commands/doctor/checks/connectors.check.mjs +1 -1
  77. package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
  78. package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +1 -1
  79. package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
  80. package/esm/cli/commands/doctor/checks/health.check.mjs +1 -1
  81. package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
  82. package/esm/cli/commands/doctor/checks/index.mjs +1 -1
  83. package/esm/cli/commands/doctor/checks/index.mjs.map +1 -1
  84. package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +1 -1
  85. package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
  86. package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +1 -1
  87. package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
  88. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +1 -1
  89. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
  90. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +1 -1
  91. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
  92. package/esm/cli/commands/doctor/checks/routes.check.mjs +1 -1
  93. package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
  94. package/esm/cli/commands/doctor/doctor-command.action.mjs +1 -1
  95. package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
  96. package/esm/cli/commands/doctor/format-report.mjs +1 -1
  97. package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
  98. package/esm/cli/commands/doctor/run-checks.mjs +1 -1
  99. package/esm/cli/commands/doctor/run-checks.mjs.map +1 -1
  100. package/esm/cli/commands/doctor.command.mjs +1 -1
  101. package/esm/cli/commands/doctor.command.mjs.map +1 -1
  102. package/esm/cli/commands/drop-tables.command.mjs +1 -1
  103. package/esm/cli/commands/drop-tables.command.mjs.map +1 -1
  104. package/esm/cli/commands/generate/generate.command.mjs +1 -1
  105. package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
  106. package/esm/cli/commands/generate/generators/column-dsl-parser.mjs +1 -1
  107. package/esm/cli/commands/generate/generators/column-dsl-parser.mjs.map +1 -1
  108. package/esm/cli/commands/generate/generators/controller.generator.mjs +1 -1
  109. package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
  110. package/esm/cli/commands/generate/generators/migration.generator.mjs +1 -1
  111. package/esm/cli/commands/generate/generators/migration.generator.mjs.map +1 -1
  112. package/esm/cli/commands/generate/generators/model.generator.mjs +1 -1
  113. package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
  114. package/esm/cli/commands/generate/generators/module.generator.mjs +1 -1
  115. package/esm/cli/commands/generate/generators/module.generator.mjs.map +1 -1
  116. package/esm/cli/commands/generate/generators/repository.generator.mjs +1 -1
  117. package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
  118. package/esm/cli/commands/generate/generators/resource.generator.mjs +1 -1
  119. package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
  120. package/esm/cli/commands/generate/generators/service.generator.mjs +1 -1
  121. package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
  122. package/esm/cli/commands/generate/generators/use-case.generator.mjs +1 -1
  123. package/esm/cli/commands/generate/generators/use-case.generator.mjs.map +1 -1
  124. package/esm/cli/commands/generate/templates/stubs.mjs +1 -1
  125. package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
  126. package/esm/cli/commands/generate/utils/name-parser.mjs +1 -1
  127. package/esm/cli/commands/generate/utils/name-parser.mjs.map +1 -1
  128. package/esm/cli/commands/generate/utils/path-resolver.mjs +1 -1
  129. package/esm/cli/commands/generate/utils/path-resolver.mjs.map +1 -1
  130. package/esm/cli/commands/generate/utils/prompt.mjs +1 -1
  131. package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
  132. package/esm/cli/commands/generate/utils/writer.mjs +1 -1
  133. package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
  134. package/esm/cli/commands/migrate.command.mjs +1 -1
  135. package/esm/cli/commands/migrate.command.mjs.map +1 -1
  136. package/esm/cli/commands/openapi-generator.action.mjs +1 -1
  137. package/esm/cli/commands/openapi-generator.action.mjs.map +1 -1
  138. package/esm/cli/commands/openapi-generator.command.mjs +1 -1
  139. package/esm/cli/commands/openapi-generator.command.mjs.map +1 -1
  140. package/esm/cli/commands/postman-generator.action.mjs +1 -1
  141. package/esm/cli/commands/postman-generator.action.mjs.map +1 -1
  142. package/esm/cli/commands/postman-generator.command.mjs +1 -1
  143. package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
  144. package/esm/cli/commands/routes/diff-page-routes.mjs +1 -1
  145. package/esm/cli/commands/routes/diff-page-routes.mjs.map +1 -1
  146. package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
  147. package/esm/cli/commands/routes/format-routes-table.mjs.map +1 -1
  148. package/esm/cli/commands/routes/route-row.mjs +1 -1
  149. package/esm/cli/commands/routes/route-row.mjs.map +1 -1
  150. package/esm/cli/commands/routes/routes-command.action.mjs +1 -1
  151. package/esm/cli/commands/routes/routes-command.action.mjs.map +1 -1
  152. package/esm/cli/commands/routes/routes-diff.action.mjs +1 -1
  153. package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
  154. package/esm/cli/commands/routes/with-console-on-stderr.mjs +1 -1
  155. package/esm/cli/commands/routes/with-console-on-stderr.mjs.map +1 -1
  156. package/esm/cli/commands/routes.command.mjs +1 -1
  157. package/esm/cli/commands/routes.command.mjs.map +1 -1
  158. package/esm/cli/commands/seed.command.mjs +1 -1
  159. package/esm/cli/commands/seed.command.mjs.map +1 -1
  160. package/esm/cli/commands/start-production.command.mjs +1 -1
  161. package/esm/cli/commands/start-production.command.mjs.map +1 -1
  162. package/esm/cli/commands/storage-put.action.mjs +1 -1
  163. package/esm/cli/commands/storage-put.action.mjs.map +1 -1
  164. package/esm/cli/commands/storage-put.command.mjs +1 -1
  165. package/esm/cli/commands/storage-put.command.mjs.map +1 -1
  166. package/esm/cli/commands/typings-generator.command.mjs +1 -1
  167. package/esm/cli/commands/typings-generator.command.mjs.map +1 -1
  168. package/esm/cli/commands/update.command.mjs +1 -1
  169. package/esm/cli/commands/update.command.mjs.map +1 -1
  170. package/esm/cli/commands-loader.mjs +1 -1
  171. package/esm/cli/commands-loader.mjs.map +1 -1
  172. package/esm/cli/framework-cli-commands.mjs +1 -1
  173. package/esm/cli/framework-cli-commands.mjs.map +1 -1
  174. package/esm/cli/parse-cli-args.mjs +1 -1
  175. package/esm/cli/parse-cli-args.mjs.map +1 -1
  176. package/esm/cli/start.mjs +1 -1
  177. package/esm/cli/start.mjs.map +1 -1
  178. package/esm/cli/string-similarity.mjs +1 -1
  179. package/esm/cli/string-similarity.mjs.map +1 -1
  180. package/esm/commands/cli-command.d.mts +1 -1
  181. package/esm/commands/cli-command.d.mts.map +1 -1
  182. package/esm/commands/cli-command.mjs +1 -1
  183. package/esm/commands/cli-command.mjs.map +1 -1
  184. package/esm/commands/types.d.mts +1 -1
  185. package/esm/commands/types.d.mts.map +1 -1
  186. package/esm/config/config-getter.d.mts +1 -1
  187. package/esm/config/config-getter.d.mts.map +1 -1
  188. package/esm/config/config-getter.mjs +1 -1
  189. package/esm/config/config-getter.mjs.map +1 -1
  190. package/esm/config/config-handlers.d.mts +1 -1
  191. package/esm/config/config-handlers.d.mts.map +1 -1
  192. package/esm/config/config-handlers.mjs +1 -1
  193. package/esm/config/config-handlers.mjs.map +1 -1
  194. package/esm/config/config-key-from-path.mjs +1 -1
  195. package/esm/config/config-key-from-path.mjs.map +1 -1
  196. package/esm/config/config-loader.d.mts +1 -1
  197. package/esm/config/config-loader.d.mts.map +1 -1
  198. package/esm/config/config-loader.mjs +1 -1
  199. package/esm/config/config-loader.mjs.map +1 -1
  200. package/esm/config/config-manager.mjs +1 -1
  201. package/esm/config/config-manager.mjs.map +1 -1
  202. package/esm/config/config-setter.d.mts +1 -1
  203. package/esm/config/config-setter.d.mts.map +1 -1
  204. package/esm/config/config-setter.mjs +1 -1
  205. package/esm/config/config-setter.mjs.map +1 -1
  206. package/esm/config/config-special-handlers.d.mts +1 -1
  207. package/esm/config/config-special-handlers.d.mts.map +1 -1
  208. package/esm/config/config-special-handlers.mjs +1 -1
  209. package/esm/config/config-special-handlers.mjs.map +1 -1
  210. package/esm/config/load-config-files.mjs +1 -1
  211. package/esm/config/load-config-files.mjs.map +1 -1
  212. package/esm/config/locale-configuration.mjs +1 -1
  213. package/esm/config/locale-configuration.mjs.map +1 -1
  214. package/esm/config/types.d.mts +1 -1
  215. package/esm/config/types.d.mts.map +1 -1
  216. package/esm/connectors/access-connector.d.mts +1 -1
  217. package/esm/connectors/access-connector.d.mts.map +1 -1
  218. package/esm/connectors/access-connector.mjs +1 -1
  219. package/esm/connectors/access-connector.mjs.map +1 -1
  220. package/esm/connectors/ai-connector.d.mts +1 -1
  221. package/esm/connectors/ai-connector.d.mts.map +1 -1
  222. package/esm/connectors/ai-connector.mjs +1 -1
  223. package/esm/connectors/ai-connector.mjs.map +1 -1
  224. package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -1
  225. package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
  226. package/esm/connectors/assert-no-reserved-connector-names.mjs +1 -1
  227. package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
  228. package/esm/connectors/assert-unique-connector-names.d.mts +1 -1
  229. package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
  230. package/esm/connectors/assert-unique-connector-names.mjs +1 -1
  231. package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
  232. package/esm/connectors/base-connector.d.mts +1 -1
  233. package/esm/connectors/base-connector.d.mts.map +1 -1
  234. package/esm/connectors/base-connector.mjs +1 -1
  235. package/esm/connectors/base-connector.mjs.map +1 -1
  236. package/esm/connectors/cache-connector.d.mts +1 -1
  237. package/esm/connectors/cache-connector.d.mts.map +1 -1
  238. package/esm/connectors/cache-connector.mjs +1 -1
  239. package/esm/connectors/cache-connector.mjs.map +1 -1
  240. package/esm/connectors/connectors-manager.d.mts +1 -1
  241. package/esm/connectors/connectors-manager.d.mts.map +1 -1
  242. package/esm/connectors/connectors-manager.mjs +2 -2
  243. package/esm/connectors/connectors-manager.mjs.map +1 -1
  244. package/esm/connectors/database-connector.d.mts +1 -1
  245. package/esm/connectors/database-connector.d.mts.map +1 -1
  246. package/esm/connectors/database-connector.mjs +1 -1
  247. package/esm/connectors/database-connector.mjs.map +1 -1
  248. package/esm/connectors/describe-server-address.mjs +1 -1
  249. package/esm/connectors/describe-server-address.mjs.map +1 -1
  250. package/esm/connectors/herald-connector.d.mts +1 -1
  251. package/esm/connectors/herald-connector.d.mts.map +1 -1
  252. package/esm/connectors/herald-connector.mjs +1 -1
  253. package/esm/connectors/herald-connector.mjs.map +1 -1
  254. package/esm/connectors/http-connector.d.mts +1 -1
  255. package/esm/connectors/http-connector.d.mts.map +1 -1
  256. package/esm/connectors/http-connector.mjs +1 -1
  257. package/esm/connectors/http-connector.mjs.map +1 -1
  258. package/esm/connectors/logger-connector.d.mts +1 -1
  259. package/esm/connectors/logger-connector.d.mts.map +1 -1
  260. package/esm/connectors/logger-connector.mjs +1 -1
  261. package/esm/connectors/logger-connector.mjs.map +1 -1
  262. package/esm/connectors/mail-connector.d.mts +1 -1
  263. package/esm/connectors/mail-connector.d.mts.map +1 -1
  264. package/esm/connectors/mail-connector.mjs +1 -1
  265. package/esm/connectors/mail-connector.mjs.map +1 -1
  266. package/esm/connectors/notifications-connector.d.mts +1 -1
  267. package/esm/connectors/notifications-connector.d.mts.map +1 -1
  268. package/esm/connectors/notifications-connector.mjs +1 -1
  269. package/esm/connectors/notifications-connector.mjs.map +1 -1
  270. package/esm/connectors/read-bound-port.mjs +1 -1
  271. package/esm/connectors/read-bound-port.mjs.map +1 -1
  272. package/esm/connectors/register-configured-connectors.d.mts +1 -1
  273. package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
  274. package/esm/connectors/register-configured-connectors.mjs +1 -1
  275. package/esm/connectors/register-configured-connectors.mjs.map +1 -1
  276. package/esm/connectors/single-server-warnings.mjs +1 -1
  277. package/esm/connectors/single-server-warnings.mjs.map +1 -1
  278. package/esm/connectors/socket-connector.d.mts +1 -1
  279. package/esm/connectors/socket-connector.d.mts.map +1 -1
  280. package/esm/connectors/socket-connector.mjs +1 -1
  281. package/esm/connectors/socket-connector.mjs.map +1 -1
  282. package/esm/connectors/storage.connector.d.mts +1 -1
  283. package/esm/connectors/storage.connector.d.mts.map +1 -1
  284. package/esm/connectors/storage.connector.mjs +1 -1
  285. package/esm/connectors/storage.connector.mjs.map +1 -1
  286. package/esm/connectors/types.d.mts +1 -1
  287. package/esm/connectors/types.d.mts.map +1 -1
  288. package/esm/connectors/types.mjs +1 -1
  289. package/esm/connectors/types.mjs.map +1 -1
  290. package/esm/container/container-instance-registry.mjs +1 -1
  291. package/esm/container/container-instance-registry.mjs.map +1 -1
  292. package/esm/container/development-app-modules.d.mts +1 -1
  293. package/esm/container/development-app-modules.d.mts.map +1 -1
  294. package/esm/container/development-model-modules.d.mts +1 -1
  295. package/esm/container/development-model-modules.d.mts.map +1 -1
  296. package/esm/container/index.d.mts +1 -1
  297. package/esm/container/index.d.mts.map +1 -1
  298. package/esm/container/index.mjs +1 -1
  299. package/esm/container/index.mjs.map +1 -1
  300. package/esm/database/create-database-action.mjs +1 -1
  301. package/esm/database/create-database-action.mjs.map +1 -1
  302. package/esm/database/drop-tables-action.mjs +1 -1
  303. package/esm/database/drop-tables-action.mjs.map +1 -1
  304. package/esm/database/migrate-action.mjs +1 -1
  305. package/esm/database/migrate-action.mjs.map +1 -1
  306. package/esm/database/models/database-log/database-log.d.mts +31 -39
  307. package/esm/database/models/database-log/database-log.d.mts.map +1 -1
  308. package/esm/database/models/database-log/database-log.mjs +1 -1
  309. package/esm/database/models/database-log/database-log.mjs.map +1 -1
  310. package/esm/database/pending-exit-code.mjs +1 -1
  311. package/esm/database/pending-exit-code.mjs.map +1 -1
  312. package/esm/database/resolve-pending-migrations.mjs +1 -1
  313. package/esm/database/resolve-pending-migrations.mjs.map +1 -1
  314. package/esm/database/seed-command-action.mjs +1 -1
  315. package/esm/database/seed-command-action.mjs.map +1 -1
  316. package/esm/database/seeds/seed-records-table-migration.mjs +1 -1
  317. package/esm/database/seeds/seed-records-table-migration.mjs.map +1 -1
  318. package/esm/database/seeds/seeder.d.mts +1 -1
  319. package/esm/database/seeds/seeder.d.mts.map +1 -1
  320. package/esm/database/seeds/seeder.errors.d.mts +1 -1
  321. package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
  322. package/esm/database/seeds/seeder.errors.mjs +1 -1
  323. package/esm/database/seeds/seeder.errors.mjs.map +1 -1
  324. package/esm/database/seeds/seeder.mjs +1 -1
  325. package/esm/database/seeds/seeder.mjs.map +1 -1
  326. package/esm/database/seeds/seeders.manager.mjs +1 -1
  327. package/esm/database/seeds/seeders.manager.mjs.map +1 -1
  328. package/esm/database/seeds/seeds-table-migration.mjs +1 -1
  329. package/esm/database/seeds/seeds-table-migration.mjs.map +1 -1
  330. package/esm/database/seeds/types.d.mts +1 -1
  331. package/esm/database/seeds/types.d.mts.map +1 -1
  332. package/esm/database/seeds/utils.mjs +1 -1
  333. package/esm/database/seeds/utils.mjs.map +1 -1
  334. package/esm/database/utils.d.mts +1 -1
  335. package/esm/database/utils.d.mts.map +1 -1
  336. package/esm/database/utils.mjs +1 -1
  337. package/esm/database/utils.mjs.map +1 -1
  338. package/esm/dev-server/app-module-registry.mjs +1 -1
  339. package/esm/dev-server/app-module-registry.mjs.map +1 -1
  340. package/esm/dev-server/boot-precondition-error.mjs +1 -1
  341. package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
  342. package/esm/dev-server/build-development-openapi-document.mjs +1 -1
  343. package/esm/dev-server/build-development-openapi-document.mjs.map +1 -1
  344. package/esm/dev-server/check-for-updates.mjs +1 -1
  345. package/esm/dev-server/check-for-updates.mjs.map +1 -1
  346. package/esm/dev-server/collect-development-api-routes.mjs +1 -1
  347. package/esm/dev-server/collect-development-api-routes.mjs.map +1 -1
  348. package/esm/dev-server/create-worker.mjs +1 -1
  349. package/esm/dev-server/create-worker.mjs.map +1 -1
  350. package/esm/dev-server/dependency-graph.d.mts +1 -1
  351. package/esm/dev-server/dependency-graph.d.mts.map +1 -1
  352. package/esm/dev-server/dependency-graph.mjs +1 -1
  353. package/esm/dev-server/dependency-graph.mjs.map +1 -1
  354. package/esm/dev-server/dev-logger.mjs +1 -1
  355. package/esm/dev-server/dev-logger.mjs.map +1 -1
  356. package/esm/dev-server/development-server.mjs +1 -1
  357. package/esm/dev-server/development-server.mjs.map +1 -1
  358. package/esm/dev-server/events.mjs +1 -1
  359. package/esm/dev-server/events.mjs.map +1 -1
  360. package/esm/dev-server/extract-translation-keys.mjs +1 -1
  361. package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
  362. package/esm/dev-server/file-event-handler.mjs +1 -1
  363. package/esm/dev-server/file-event-handler.mjs.map +1 -1
  364. package/esm/dev-server/file-manager.d.mts +1 -1
  365. package/esm/dev-server/file-manager.d.mts.map +1 -1
  366. package/esm/dev-server/file-manager.mjs +1 -1
  367. package/esm/dev-server/file-manager.mjs.map +1 -1
  368. package/esm/dev-server/file-operations.d.mts +1 -1
  369. package/esm/dev-server/file-operations.d.mts.map +1 -1
  370. package/esm/dev-server/file-operations.mjs +1 -1
  371. package/esm/dev-server/file-operations.mjs.map +1 -1
  372. package/esm/dev-server/files-orchestrator.mjs +20 -17
  373. package/esm/dev-server/files-orchestrator.mjs.map +1 -1
  374. package/esm/dev-server/files-watcher.mjs +1 -1
  375. package/esm/dev-server/files-watcher.mjs.map +1 -1
  376. package/esm/dev-server/flags.mjs +1 -1
  377. package/esm/dev-server/flags.mjs.map +1 -1
  378. package/esm/dev-server/health-checker/checkers/base-health-checker.mjs +1 -1
  379. package/esm/dev-server/health-checker/checkers/base-health-checker.mjs.map +1 -1
  380. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +1 -1
  381. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
  382. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +1 -1
  383. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
  384. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +1 -1
  385. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
  386. package/esm/dev-server/health-checker/file-health-result.d.mts +1 -1
  387. package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
  388. package/esm/dev-server/health-checker/file-health-result.mjs +1 -1
  389. package/esm/dev-server/health-checker/file-health-result.mjs.map +1 -1
  390. package/esm/dev-server/health-checker/files-healthcare.manager.mjs +1 -1
  391. package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
  392. package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs +1 -1
  393. package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs.map +1 -1
  394. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +1 -1
  395. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
  396. package/esm/dev-server/layer-executor.mjs +1 -1
  397. package/esm/dev-server/layer-executor.mjs.map +1 -1
  398. package/esm/dev-server/legacy-locales-warning.mjs +1 -1
  399. package/esm/dev-server/legacy-locales-warning.mjs.map +1 -1
  400. package/esm/dev-server/loader/build-transpile-init.mjs +1 -1
  401. package/esm/dev-server/loader/build-transpile-init.mjs.map +1 -1
  402. package/esm/dev-server/loader/hook-thread.d.mts +1 -1
  403. package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
  404. package/esm/dev-server/loader/hook-thread.mjs +1 -1
  405. package/esm/dev-server/loader/hook-thread.mjs.map +1 -1
  406. package/esm/dev-server/loader/load-hook.d.mts +1 -1
  407. package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
  408. package/esm/dev-server/loader/load-hook.mjs +1 -1
  409. package/esm/dev-server/loader/load-hook.mjs.map +1 -1
  410. package/esm/dev-server/loader/loader-port-acks.mjs +34 -0
  411. package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -0
  412. package/esm/dev-server/loader/own-resolver.mjs +1 -1
  413. package/esm/dev-server/loader/own-resolver.mjs.map +1 -1
  414. package/esm/dev-server/loader/register-loader.mjs +1 -1
  415. package/esm/dev-server/loader/register-loader.mjs.map +1 -1
  416. package/esm/dev-server/loader/resolve-capture.mjs +1 -1
  417. package/esm/dev-server/loader/resolve-capture.mjs.map +1 -1
  418. package/esm/dev-server/loader/resolve-hook.d.mts +1 -1
  419. package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
  420. package/esm/dev-server/loader/resolve-hook.mjs +2 -2
  421. package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
  422. package/esm/dev-server/loader/source-slug.mjs +1 -1
  423. package/esm/dev-server/loader/source-slug.mjs.map +1 -1
  424. package/esm/dev-server/loader/transpile-cache.mjs +1 -1
  425. package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
  426. package/esm/dev-server/loader/version-registry.mjs +1 -1
  427. package/esm/dev-server/loader/version-registry.mjs.map +1 -1
  428. package/esm/dev-server/manifest-manager.d.mts +1 -1
  429. package/esm/dev-server/manifest-manager.d.mts.map +1 -1
  430. package/esm/dev-server/manifest-manager.mjs +1 -1
  431. package/esm/dev-server/manifest-manager.mjs.map +1 -1
  432. package/esm/dev-server/model-module-registry.mjs +1 -1
  433. package/esm/dev-server/model-module-registry.mjs.map +1 -1
  434. package/esm/dev-server/model-resource-typings.mjs +1 -1
  435. package/esm/dev-server/model-resource-typings.mjs.map +1 -1
  436. package/esm/dev-server/module-loader.mjs +1 -1
  437. package/esm/dev-server/module-loader.mjs.map +1 -1
  438. package/esm/dev-server/package-json-manager.mjs +1 -1
  439. package/esm/dev-server/package-json-manager.mjs.map +1 -1
  440. package/esm/dev-server/parse-imports.mjs +73 -6
  441. package/esm/dev-server/parse-imports.mjs.map +1 -1
  442. package/esm/dev-server/read-config-ast.mjs +1 -1
  443. package/esm/dev-server/read-config-ast.mjs.map +1 -1
  444. package/esm/dev-server/ready-block.mjs +1 -1
  445. package/esm/dev-server/ready-block.mjs.map +1 -1
  446. package/esm/dev-server/register-dev-shortcuts.mjs +1 -1
  447. package/esm/dev-server/register-dev-shortcuts.mjs.map +1 -1
  448. package/esm/dev-server/register-installed-devtools.mjs +1 -1
  449. package/esm/dev-server/register-installed-devtools.mjs.map +1 -1
  450. package/esm/dev-server/restart-dev-server.mjs +1 -1
  451. package/esm/dev-server/restart-dev-server.mjs.map +1 -1
  452. package/esm/dev-server/route-types-publisher.mjs +1 -1
  453. package/esm/dev-server/route-types-publisher.mjs.map +1 -1
  454. package/esm/dev-server/run-connector-typings.mjs +1 -1
  455. package/esm/dev-server/run-connector-typings.mjs.map +1 -1
  456. package/esm/dev-server/run-typings-generation.mjs +1 -1
  457. package/esm/dev-server/run-typings-generation.mjs.map +1 -1
  458. package/esm/dev-server/shortcuts.mjs +1 -1
  459. package/esm/dev-server/shortcuts.mjs.map +1 -1
  460. package/esm/dev-server/special-file-patterns.mjs +1 -1
  461. package/esm/dev-server/special-file-patterns.mjs.map +1 -1
  462. package/esm/dev-server/special-files-collector.d.mts +1 -1
  463. package/esm/dev-server/special-files-collector.d.mts.map +1 -1
  464. package/esm/dev-server/special-files-collector.mjs +1 -1
  465. package/esm/dev-server/special-files-collector.mjs.map +1 -1
  466. package/esm/dev-server/start-development-server.mjs +1 -1
  467. package/esm/dev-server/start-development-server.mjs.map +1 -1
  468. package/esm/dev-server/supervisor.mjs +1 -1
  469. package/esm/dev-server/supervisor.mjs.map +1 -1
  470. package/esm/dev-server/translation-keys-sources.mjs +1 -1
  471. package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
  472. package/esm/dev-server/tsconfig-manager.mjs +1 -1
  473. package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
  474. package/esm/dev-server/type-generator.mjs +32 -11
  475. package/esm/dev-server/type-generator.mjs.map +1 -1
  476. package/esm/dev-server/types.d.mts +1 -1
  477. package/esm/dev-server/types.d.mts.map +1 -1
  478. package/esm/dev-server/update-check-cache.mjs +1 -1
  479. package/esm/dev-server/update-check-cache.mjs.map +1 -1
  480. package/esm/dev-server/utils.mjs +1 -1
  481. package/esm/dev-server/utils.mjs.map +1 -1
  482. package/esm/encryption/encrypt.d.mts +1 -1
  483. package/esm/encryption/encrypt.d.mts.map +1 -1
  484. package/esm/encryption/encrypt.mjs +1 -1
  485. package/esm/encryption/encrypt.mjs.map +1 -1
  486. package/esm/encryption/hash.d.mts +1 -1
  487. package/esm/encryption/hash.d.mts.map +1 -1
  488. package/esm/encryption/hash.mjs +1 -1
  489. package/esm/encryption/hash.mjs.map +1 -1
  490. package/esm/encryption/password.d.mts +1 -1
  491. package/esm/encryption/password.d.mts.map +1 -1
  492. package/esm/encryption/password.mjs +1 -1
  493. package/esm/encryption/password.mjs.map +1 -1
  494. package/esm/encryption/types.d.mts +1 -1
  495. package/esm/encryption/types.d.mts.map +1 -1
  496. package/esm/errors/container-key-missing-error.mjs +1 -1
  497. package/esm/errors/container-key-missing-error.mjs.map +1 -1
  498. package/esm/errors/esbuild-binary-missing-error.mjs +1 -1
  499. package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
  500. package/esm/errors/index.d.mts +2 -0
  501. package/esm/errors/index.mjs +3 -0
  502. package/esm/errors/unknown-locale-error.mjs +1 -1
  503. package/esm/errors/unknown-locale-error.mjs.map +1 -1
  504. package/esm/generations/add-command.action.mjs +29 -6
  505. package/esm/generations/add-command.action.mjs.map +1 -1
  506. package/esm/generations/features/access.feature.mjs +1 -1
  507. package/esm/generations/features/access.feature.mjs.map +1 -1
  508. package/esm/generations/features/ai-anthropic.feature.mjs +1 -1
  509. package/esm/generations/features/ai-anthropic.feature.mjs.map +1 -1
  510. package/esm/generations/features/ai-bedrock.feature.mjs +1 -1
  511. package/esm/generations/features/ai-bedrock.feature.mjs.map +1 -1
  512. package/esm/generations/features/ai-google.feature.mjs +1 -1
  513. package/esm/generations/features/ai-google.feature.mjs.map +1 -1
  514. package/esm/generations/features/ai-ollama.feature.mjs +1 -1
  515. package/esm/generations/features/ai-ollama.feature.mjs.map +1 -1
  516. package/esm/generations/features/ai-openai.feature.mjs +1 -1
  517. package/esm/generations/features/ai-openai.feature.mjs.map +1 -1
  518. package/esm/generations/features/ai-panoptic.feature.mjs +1 -1
  519. package/esm/generations/features/ai-panoptic.feature.mjs.map +1 -1
  520. package/esm/generations/features/ai-tools.feature.mjs +1 -1
  521. package/esm/generations/features/ai-tools.feature.mjs.map +1 -1
  522. package/esm/generations/features/ai-workspace.feature.mjs +1 -1
  523. package/esm/generations/features/ai-workspace.feature.mjs.map +1 -1
  524. package/esm/generations/features/ai.feature.mjs +1 -1
  525. package/esm/generations/features/ai.feature.mjs.map +1 -1
  526. package/esm/generations/features/auth-google.feature.mjs +1 -1
  527. package/esm/generations/features/auth-google.feature.mjs.map +1 -1
  528. package/esm/generations/features/auth-passkeys.feature.mjs +1 -1
  529. package/esm/generations/features/auth-passkeys.feature.mjs.map +1 -1
  530. package/esm/generations/features/bull-board.feature.mjs +1 -1
  531. package/esm/generations/features/bull-board.feature.mjs.map +1 -1
  532. package/esm/generations/features/devtools.feature.mjs +1 -1
  533. package/esm/generations/features/devtools.feature.mjs.map +1 -1
  534. package/esm/generations/features/herald.feature.mjs +1 -1
  535. package/esm/generations/features/herald.feature.mjs.map +1 -1
  536. package/esm/generations/features/image.feature.mjs +1 -1
  537. package/esm/generations/features/image.feature.mjs.map +1 -1
  538. package/esm/generations/features/index.mjs +1 -1
  539. package/esm/generations/features/index.mjs.map +1 -1
  540. package/esm/generations/features/mail.feature.mjs +1 -1
  541. package/esm/generations/features/mail.feature.mjs.map +1 -1
  542. package/esm/generations/features/mongodb.feature.mjs +1 -1
  543. package/esm/generations/features/mongodb.feature.mjs.map +1 -1
  544. package/esm/generations/features/mysql.feature.mjs +1 -1
  545. package/esm/generations/features/mysql.feature.mjs.map +1 -1
  546. package/esm/generations/features/notifications.feature.mjs +121 -17
  547. package/esm/generations/features/notifications.feature.mjs.map +1 -1
  548. package/esm/generations/features/postgres.feature.mjs +1 -1
  549. package/esm/generations/features/postgres.feature.mjs.map +1 -1
  550. package/esm/generations/features/queue.feature.mjs +1 -1
  551. package/esm/generations/features/queue.feature.mjs.map +1 -1
  552. package/esm/generations/features/react-email.feature.mjs +1 -1
  553. package/esm/generations/features/react-email.feature.mjs.map +1 -1
  554. package/esm/generations/features/react.feature.mjs +1 -1
  555. package/esm/generations/features/react.feature.mjs.map +1 -1
  556. package/esm/generations/features/redis.feature.mjs +1 -1
  557. package/esm/generations/features/redis.feature.mjs.map +1 -1
  558. package/esm/generations/features/s3.feature.mjs +1 -1
  559. package/esm/generations/features/s3.feature.mjs.map +1 -1
  560. package/esm/generations/features/scheduler.feature.mjs +1 -1
  561. package/esm/generations/features/scheduler.feature.mjs.map +1 -1
  562. package/esm/generations/features/ses.feature.mjs +1 -1
  563. package/esm/generations/features/ses.feature.mjs.map +1 -1
  564. package/esm/generations/features/shadcn.feature.mjs +1 -1
  565. package/esm/generations/features/shadcn.feature.mjs.map +1 -1
  566. package/esm/generations/features/shared/insert-connector-entry.mjs +1 -1
  567. package/esm/generations/features/shared/insert-connector-entry.mjs.map +1 -1
  568. package/esm/generations/features/shared/insert-queue-dashboard-block.mjs +1 -1
  569. package/esm/generations/features/shared/insert-queue-dashboard-block.mjs.map +1 -1
  570. package/esm/generations/features/shared/link-ai-package-import.mjs +1 -1
  571. package/esm/generations/features/shared/link-ai-package-import.mjs.map +1 -1
  572. package/esm/generations/features/shared/merge-web-sitemap-config.mjs +1 -1
  573. package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
  574. package/esm/generations/features/shared/migration-timestamp.mjs +1 -1
  575. package/esm/generations/features/shared/migration-timestamp.mjs.map +1 -1
  576. package/esm/generations/features/shared/patch-tsconfig-include.mjs +1 -1
  577. package/esm/generations/features/shared/patch-tsconfig-include.mjs.map +1 -1
  578. package/esm/generations/features/shared/relocate-conflicting-home-route.mjs +1 -1
  579. package/esm/generations/features/shared/relocate-conflicting-home-route.mjs.map +1 -1
  580. package/esm/generations/features/shared/resolve-contact-scaffold.mjs +1 -1
  581. package/esm/generations/features/shared/resolve-contact-scaffold.mjs.map +1 -1
  582. package/esm/generations/features/sitemap.feature.mjs +1 -1
  583. package/esm/generations/features/sitemap.feature.mjs.map +1 -1
  584. package/esm/generations/features/socket.feature.mjs +1 -1
  585. package/esm/generations/features/socket.feature.mjs.map +1 -1
  586. package/esm/generations/features/tailwind.feature.mjs +1 -1
  587. package/esm/generations/features/tailwind.feature.mjs.map +1 -1
  588. package/esm/generations/features/test.feature.mjs +1 -1
  589. package/esm/generations/features/test.feature.mjs.map +1 -1
  590. package/esm/generations/features/types.mjs +1 -1
  591. package/esm/generations/features/types.mjs.map +1 -1
  592. package/esm/generations/features/web.feature.mjs +1 -1
  593. package/esm/generations/features/web.feature.mjs.map +1 -1
  594. package/esm/generations/pnpm-build-approvals.mjs +89 -3
  595. package/esm/generations/pnpm-build-approvals.mjs.map +1 -1
  596. package/esm/generations/stubs.mjs +184 -78
  597. package/esm/generations/stubs.mjs.map +1 -1
  598. package/esm/http/boot-port-preflight.d.mts +1 -1
  599. package/esm/http/boot-port-preflight.d.mts.map +1 -1
  600. package/esm/http/boot-port-preflight.mjs +1 -1
  601. package/esm/http/boot-port-preflight.mjs.map +1 -1
  602. package/esm/http/build-cors-options.mjs +1 -1
  603. package/esm/http/build-cors-options.mjs.map +1 -1
  604. package/esm/http/build-rate-limit-options.d.mts +22 -1
  605. package/esm/http/build-rate-limit-options.d.mts.map +1 -1
  606. package/esm/http/build-rate-limit-options.mjs +7 -1
  607. package/esm/http/build-rate-limit-options.mjs.map +1 -1
  608. package/esm/http/config.d.mts +1 -1
  609. package/esm/http/config.d.mts.map +1 -1
  610. package/esm/http/config.mjs +1 -1
  611. package/esm/http/config.mjs.map +1 -1
  612. package/esm/http/context/request-context.d.mts +1 -1
  613. package/esm/http/context/request-context.d.mts.map +1 -1
  614. package/esm/http/context/request-context.mjs +1 -1
  615. package/esm/http/context/request-context.mjs.map +1 -1
  616. package/esm/http/context/request-memo.d.mts +1 -1
  617. package/esm/http/context/request-memo.d.mts.map +1 -1
  618. package/esm/http/context/request-memo.mjs +1 -1
  619. package/esm/http/context/request-memo.mjs.map +1 -1
  620. package/esm/http/createHttpApplication.d.mts +1 -1
  621. package/esm/http/createHttpApplication.d.mts.map +1 -1
  622. package/esm/http/createHttpApplication.mjs +1 -1
  623. package/esm/http/createHttpApplication.mjs.map +1 -1
  624. package/esm/http/csp.d.mts +1 -1
  625. package/esm/http/csp.d.mts.map +1 -1
  626. package/esm/http/csp.mjs +1 -1
  627. package/esm/http/csp.mjs.map +1 -1
  628. package/esm/http/csrf-default-guard.d.mts +1 -1
  629. package/esm/http/csrf-default-guard.d.mts.map +1 -1
  630. package/esm/http/csrf-default-guard.mjs +1 -1
  631. package/esm/http/csrf-default-guard.mjs.map +1 -1
  632. package/esm/http/csrf-origin-policy.d.mts +1 -1
  633. package/esm/http/csrf-origin-policy.d.mts.map +1 -1
  634. package/esm/http/csrf-origin-policy.mjs +1 -1
  635. package/esm/http/csrf-origin-policy.mjs.map +1 -1
  636. package/esm/http/database/RequestLog.d.mts +63 -111
  637. package/esm/http/database/RequestLog.d.mts.map +1 -1
  638. package/esm/http/database/RequestLog.mjs +1 -1
  639. package/esm/http/database/RequestLog.mjs.map +1 -1
  640. package/esm/http/error-codes.d.mts +1 -1
  641. package/esm/http/error-codes.d.mts.map +1 -1
  642. package/esm/http/error-codes.mjs +1 -1
  643. package/esm/http/error-codes.mjs.map +1 -1
  644. package/esm/http/error-mapper.d.mts +48 -0
  645. package/esm/http/error-mapper.d.mts.map +1 -0
  646. package/esm/http/error-mapper.mjs +48 -0
  647. package/esm/http/error-mapper.mjs.map +1 -0
  648. package/esm/http/errors/errors.d.mts +1 -1
  649. package/esm/http/errors/errors.d.mts.map +1 -1
  650. package/esm/http/errors/errors.mjs +1 -1
  651. package/esm/http/errors/errors.mjs.map +1 -1
  652. package/esm/http/events.d.mts +1 -1
  653. package/esm/http/events.d.mts.map +1 -1
  654. package/esm/http/events.mjs +1 -1
  655. package/esm/http/events.mjs.map +1 -1
  656. package/esm/http/flush-pending-cookies.mjs +1 -1
  657. package/esm/http/flush-pending-cookies.mjs.map +1 -1
  658. package/esm/http/health.d.mts +1 -1
  659. package/esm/http/health.d.mts.map +1 -1
  660. package/esm/http/health.mjs +1 -1
  661. package/esm/http/health.mjs.map +1 -1
  662. package/esm/http/index.d.mts +10 -6
  663. package/esm/http/index.mjs +8 -5
  664. package/esm/http/middleware/cache-response-middleware.d.mts +1 -1
  665. package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
  666. package/esm/http/middleware/cache-response-middleware.mjs +1 -1
  667. package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
  668. package/esm/http/middleware/concurrency-limit.middleware.d.mts +1 -1
  669. package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
  670. package/esm/http/middleware/concurrency-limit.middleware.mjs +1 -1
  671. package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
  672. package/esm/http/middleware/idempotency.middleware.d.mts +1 -1
  673. package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
  674. package/esm/http/middleware/idempotency.middleware.mjs +1 -1
  675. package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
  676. package/esm/http/middleware/inject-request-context.d.mts +1 -1
  677. package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
  678. package/esm/http/middleware/inject-request-context.mjs +4 -2
  679. package/esm/http/middleware/inject-request-context.mjs.map +1 -1
  680. package/esm/http/middleware/ip-filter.middleware.d.mts +1 -1
  681. package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
  682. package/esm/http/middleware/ip-filter.middleware.mjs +1 -1
  683. package/esm/http/middleware/ip-filter.middleware.mjs.map +1 -1
  684. package/esm/http/middleware/maintenance.middleware.d.mts +1 -1
  685. package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
  686. package/esm/http/middleware/maintenance.middleware.mjs +1 -1
  687. package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
  688. package/esm/http/middleware/max-body-size.middleware.d.mts +1 -1
  689. package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
  690. package/esm/http/middleware/max-body-size.middleware.mjs +1 -1
  691. package/esm/http/middleware/max-body-size.middleware.mjs.map +1 -1
  692. package/esm/http/middleware/middleware-list.d.mts +1 -1
  693. package/esm/http/middleware/middleware-list.d.mts.map +1 -1
  694. package/esm/http/middleware/middleware-list.mjs +1 -1
  695. package/esm/http/middleware/middleware-list.mjs.map +1 -1
  696. package/esm/http/middleware/rate-limit.middleware.d.mts +20 -5
  697. package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
  698. package/esm/http/middleware/rate-limit.middleware.mjs +34 -12
  699. package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
  700. package/esm/http/middleware/utils/cidr-match.d.mts +1 -1
  701. package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
  702. package/esm/http/middleware/utils/cidr-match.mjs +1 -1
  703. package/esm/http/middleware/utils/cidr-match.mjs.map +1 -1
  704. package/esm/http/middleware/utils/idempotency-key.d.mts +1 -1
  705. package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
  706. package/esm/http/middleware/utils/idempotency-key.mjs +1 -1
  707. package/esm/http/middleware/utils/idempotency-key.mjs.map +1 -1
  708. package/esm/http/middleware/utils/parse-size.d.mts +1 -1
  709. package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
  710. package/esm/http/middleware/utils/parse-size.mjs +1 -1
  711. package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
  712. package/esm/http/parse-urlencoded-body.mjs +1 -1
  713. package/esm/http/parse-urlencoded-body.mjs.map +1 -1
  714. package/esm/http/plugins.d.mts +9 -2
  715. package/esm/http/plugins.d.mts.map +1 -1
  716. package/esm/http/plugins.mjs +18 -4
  717. package/esm/http/plugins.mjs.map +1 -1
  718. package/esm/http/port-preflight.d.mts +1 -1
  719. package/esm/http/port-preflight.d.mts.map +1 -1
  720. package/esm/http/port-preflight.mjs +1 -1
  721. package/esm/http/port-preflight.mjs.map +1 -1
  722. package/esm/http/rate-limit-cache-store.mjs +155 -0
  723. package/esm/http/rate-limit-cache-store.mjs.map +1 -0
  724. package/esm/http/ready-report.d.mts +1 -1
  725. package/esm/http/ready-report.d.mts.map +1 -1
  726. package/esm/http/ready-report.mjs +1 -1
  727. package/esm/http/ready-report.mjs.map +1 -1
  728. package/esm/http/request-controller.d.mts +1 -1
  729. package/esm/http/request-controller.d.mts.map +1 -1
  730. package/esm/http/request-controller.mjs +1 -1
  731. package/esm/http/request-controller.mjs.map +1 -1
  732. package/esm/http/request-log-snapshot.d.mts +123 -0
  733. package/esm/http/request-log-snapshot.d.mts.map +1 -0
  734. package/esm/http/request-log-snapshot.mjs +141 -0
  735. package/esm/http/request-log-snapshot.mjs.map +1 -0
  736. package/esm/http/request.d.mts +41 -2
  737. package/esm/http/request.d.mts.map +1 -1
  738. package/esm/http/request.mjs +65 -2
  739. package/esm/http/request.mjs.map +1 -1
  740. package/esm/http/resolve-bind-port.mjs +1 -1
  741. package/esm/http/resolve-bind-port.mjs.map +1 -1
  742. package/esm/http/response.d.mts +40 -8
  743. package/esm/http/response.d.mts.map +1 -1
  744. package/esm/http/response.mjs +173 -61
  745. package/esm/http/response.mjs.map +1 -1
  746. package/esm/http/serialized.d.mts +1 -1
  747. package/esm/http/serialized.d.mts.map +1 -1
  748. package/esm/http/server-rebuilt.d.mts +1 -1
  749. package/esm/http/server-rebuilt.d.mts.map +1 -1
  750. package/esm/http/server-rebuilt.mjs +1 -1
  751. package/esm/http/server-rebuilt.mjs.map +1 -1
  752. package/esm/http/server.d.mts +34 -6
  753. package/esm/http/server.d.mts.map +1 -1
  754. package/esm/http/server.mjs +70 -5
  755. package/esm/http/server.mjs.map +1 -1
  756. package/esm/http/stream-react-response.d.mts +1 -1
  757. package/esm/http/stream-react-response.d.mts.map +1 -1
  758. package/esm/http/stream-react-response.mjs +1 -1
  759. package/esm/http/stream-react-response.mjs.map +1 -1
  760. package/esm/http/stream-transport.mjs +75 -0
  761. package/esm/http/stream-transport.mjs.map +1 -0
  762. package/esm/http/tracing/trace-id.d.mts +1 -1
  763. package/esm/http/tracing/trace-id.d.mts.map +1 -1
  764. package/esm/http/tracing/trace-id.mjs +1 -1
  765. package/esm/http/tracing/trace-id.mjs.map +1 -1
  766. package/esm/http/tracing/tracing-dispatcher.d.mts +1 -1
  767. package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
  768. package/esm/http/tracing/tracing-dispatcher.mjs +1 -1
  769. package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
  770. package/esm/http/tracing/tracing.type.d.mts +1 -1
  771. package/esm/http/tracing/tracing.type.d.mts.map +1 -1
  772. package/esm/http/types.d.mts +131 -6
  773. package/esm/http/types.d.mts.map +1 -1
  774. package/esm/http/uploaded-file.d.mts +2 -2
  775. package/esm/http/uploaded-file.d.mts.map +1 -1
  776. package/esm/http/uploaded-file.mjs +2 -2
  777. package/esm/http/uploaded-file.mjs.map +1 -1
  778. package/esm/http/uploads/detect-image-format.mjs +1 -1
  779. package/esm/http/uploads/detect-image-format.mjs.map +1 -1
  780. package/esm/http/uploads/generate-image-variant.mjs +1 -1
  781. package/esm/http/uploads/generate-image-variant.mjs.map +1 -1
  782. package/esm/http/uploads/generate-image-variants.d.mts +1 -1
  783. package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
  784. package/esm/http/uploads/generate-image-variants.mjs +15 -7
  785. package/esm/http/uploads/generate-image-variants.mjs.map +1 -1
  786. package/esm/http/uploads/image-variant-cache.mjs +143 -0
  787. package/esm/http/uploads/image-variant-cache.mjs.map +1 -0
  788. package/esm/http/uploads/image-variant-types.d.mts +1 -1
  789. package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
  790. package/esm/http/uploads/image-variants-config-error.d.mts +1 -1
  791. package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
  792. package/esm/http/uploads/image-variants-config-error.mjs +1 -1
  793. package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
  794. package/esm/http/uploads/index.d.mts +3 -1
  795. package/esm/http/uploads/index.mjs +3 -1
  796. package/esm/http/uploads/is-path-inside.mjs +1 -1
  797. package/esm/http/uploads/is-path-inside.mjs.map +1 -1
  798. package/esm/http/uploads/load-variant-source.mjs +1 -1
  799. package/esm/http/uploads/load-variant-source.mjs.map +1 -1
  800. package/esm/http/uploads/local-disk-root.mjs +24 -0
  801. package/esm/http/uploads/local-disk-root.mjs.map +1 -0
  802. package/esm/http/uploads/matches-if-none-match.mjs +1 -1
  803. package/esm/http/uploads/matches-if-none-match.mjs.map +1 -1
  804. package/esm/http/uploads/parse-uploaded-file-query.mjs +1 -1
  805. package/esm/http/uploads/parse-uploaded-file-query.mjs.map +1 -1
  806. package/esm/http/uploads/purge-image-variants.d.mts +32 -0
  807. package/esm/http/uploads/purge-image-variants.d.mts.map +1 -0
  808. package/esm/http/uploads/purge-image-variants.mjs +46 -0
  809. package/esm/http/uploads/purge-image-variants.mjs.map +1 -0
  810. package/esm/http/uploads/read-file-head.mjs +1 -1
  811. package/esm/http/uploads/read-file-head.mjs.map +1 -1
  812. package/esm/http/uploads/resolve-image-variant.d.mts +73 -0
  813. package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -0
  814. package/esm/http/uploads/resolve-image-variant.mjs +107 -0
  815. package/esm/http/uploads/resolve-image-variant.mjs.map +1 -0
  816. package/esm/http/uploads/resolve-image-variants-config.mjs +1 -1
  817. package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
  818. package/esm/http/uploads/resolve-inline-image-content-type.mjs +1 -1
  819. package/esm/http/uploads/resolve-inline-image-content-type.mjs.map +1 -1
  820. package/esm/http/uploads/resolve-original-content-type.mjs +1 -1
  821. package/esm/http/uploads/resolve-original-content-type.mjs.map +1 -1
  822. package/esm/http/uploads/resolve-upload-path.mjs +3 -2
  823. package/esm/http/uploads/resolve-upload-path.mjs.map +1 -1
  824. package/esm/http/uploads/resolve-variant-candidate.mjs +1 -1
  825. package/esm/http/uploads/resolve-variant-candidate.mjs.map +1 -1
  826. package/esm/http/uploads/single-flight.mjs +1 -1
  827. package/esm/http/uploads/single-flight.mjs.map +1 -1
  828. package/esm/http/uploads/uploaded-file.controller.d.mts +24 -6
  829. package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
  830. package/esm/http/uploads/uploaded-file.controller.mjs +63 -91
  831. package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
  832. package/esm/http/uploads/variant-cache-key.mjs +30 -5
  833. package/esm/http/uploads/variant-cache-key.mjs.map +1 -1
  834. package/esm/http/uploads/variant-generations.mjs +1 -1
  835. package/esm/http/uploads/variant-generations.mjs.map +1 -1
  836. package/esm/http/uploads-config.d.mts +1 -1
  837. package/esm/http/uploads-config.d.mts.map +1 -1
  838. package/esm/http/uploads-config.mjs +1 -1
  839. package/esm/http/uploads-config.mjs.map +1 -1
  840. package/esm/http/uploads-types.d.mts +1 -1
  841. package/esm/http/uploads-types.d.mts.map +1 -1
  842. package/esm/http/xmlable.d.mts +1 -1
  843. package/esm/http/xmlable.d.mts.map +1 -1
  844. package/esm/image/image.d.mts +1 -1
  845. package/esm/image/image.d.mts.map +1 -1
  846. package/esm/image/image.mjs +1 -1
  847. package/esm/image/image.mjs.map +1 -1
  848. package/esm/index.d.mts +13 -9
  849. package/esm/index.mjs +10 -7
  850. package/esm/loader/app-module-importer.d.mts +1 -1
  851. package/esm/loader/app-module-importer.d.mts.map +1 -1
  852. package/esm/loader/app-module-importer.mjs +1 -1
  853. package/esm/loader/app-module-importer.mjs.map +1 -1
  854. package/esm/localization/parse-locale-dictionary.d.mts +1 -1
  855. package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
  856. package/esm/localization/parse-locale-dictionary.mjs +1 -1
  857. package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
  858. package/esm/localization/register-locale-dictionary.d.mts +1 -1
  859. package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
  860. package/esm/localization/register-locale-dictionary.mjs +1 -1
  861. package/esm/localization/register-locale-dictionary.mjs.map +1 -1
  862. package/esm/logger/fatal-visibility.d.mts +1 -1
  863. package/esm/logger/fatal-visibility.d.mts.map +1 -1
  864. package/esm/logger/fatal-visibility.mjs +1 -1
  865. package/esm/logger/fatal-visibility.mjs.map +1 -1
  866. package/esm/logger/logger.d.mts +1 -1
  867. package/esm/logger/logger.d.mts.map +1 -1
  868. package/esm/logger/logger.mjs +1 -1
  869. package/esm/logger/logger.mjs.map +1 -1
  870. package/esm/logger/types.d.mts +1 -1
  871. package/esm/logger/types.d.mts.map +1 -1
  872. package/esm/mail/config.d.mts +1 -1
  873. package/esm/mail/config.d.mts.map +1 -1
  874. package/esm/mail/config.mjs +1 -1
  875. package/esm/mail/config.mjs.map +1 -1
  876. package/esm/mail/events.d.mts +1 -1
  877. package/esm/mail/events.d.mts.map +1 -1
  878. package/esm/mail/events.mjs +1 -1
  879. package/esm/mail/events.mjs.map +1 -1
  880. package/esm/mail/mail.d.mts +1 -1
  881. package/esm/mail/mail.d.mts.map +1 -1
  882. package/esm/mail/mail.mjs +1 -1
  883. package/esm/mail/mail.mjs.map +1 -1
  884. package/esm/mail/mailer-pool.d.mts +1 -1
  885. package/esm/mail/mailer-pool.d.mts.map +1 -1
  886. package/esm/mail/mailer-pool.mjs +1 -1
  887. package/esm/mail/mailer-pool.mjs.map +1 -1
  888. package/esm/mail/react-mail.d.mts +1 -1
  889. package/esm/mail/react-mail.d.mts.map +1 -1
  890. package/esm/mail/react-mail.mjs +1 -1
  891. package/esm/mail/react-mail.mjs.map +1 -1
  892. package/esm/mail/send-mail.d.mts +1 -1
  893. package/esm/mail/send-mail.d.mts.map +1 -1
  894. package/esm/mail/send-mail.mjs +7 -7
  895. package/esm/mail/send-mail.mjs.map +1 -1
  896. package/esm/mail/test-mailbox.d.mts +1 -1
  897. package/esm/mail/test-mailbox.d.mts.map +1 -1
  898. package/esm/mail/test-mailbox.mjs +1 -1
  899. package/esm/mail/test-mailbox.mjs.map +1 -1
  900. package/esm/mail/types.d.mts +1 -1
  901. package/esm/mail/types.d.mts.map +1 -1
  902. package/esm/mail/types.mjs +1 -1
  903. package/esm/mail/types.mjs.map +1 -1
  904. package/esm/manifest/manifest-manager.mjs +1 -1
  905. package/esm/manifest/manifest-manager.mjs.map +1 -1
  906. package/esm/openapi/build-openapi-document.d.mts +1 -1
  907. package/esm/openapi/build-openapi-document.d.mts.map +1 -1
  908. package/esm/openapi/build-openapi-document.mjs +1 -1
  909. package/esm/openapi/build-openapi-document.mjs.map +1 -1
  910. package/esm/openapi/cast-schema.mjs +1 -1
  911. package/esm/openapi/cast-schema.mjs.map +1 -1
  912. package/esm/openapi/collect-openapi-document.mjs +1 -1
  913. package/esm/openapi/collect-openapi-document.mjs.map +1 -1
  914. package/esm/openapi/development-openapi-provider.d.mts +1 -1
  915. package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
  916. package/esm/openapi/development-openapi-provider.mjs +1 -1
  917. package/esm/openapi/development-openapi-provider.mjs.map +1 -1
  918. package/esm/openapi/error-responses.mjs +1 -1
  919. package/esm/openapi/error-responses.mjs.map +1 -1
  920. package/esm/openapi/openapi-child-output.mjs +1 -1
  921. package/esm/openapi/openapi-child-output.mjs.map +1 -1
  922. package/esm/openapi/openapi-protocol.mjs +1 -1
  923. package/esm/openapi/openapi-protocol.mjs.map +1 -1
  924. package/esm/openapi/paths.mjs +1 -1
  925. package/esm/openapi/paths.mjs.map +1 -1
  926. package/esm/openapi/postman/build-request-body.mjs +1 -1
  927. package/esm/openapi/postman/build-request-body.mjs.map +1 -1
  928. package/esm/openapi/postman/build-request-url.mjs +1 -1
  929. package/esm/openapi/postman/build-request-url.mjs.map +1 -1
  930. package/esm/openapi/postman/build-saved-responses.mjs +1 -1
  931. package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
  932. package/esm/openapi/postman/example-from-schema.d.mts +1 -1
  933. package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
  934. package/esm/openapi/postman/example-from-schema.mjs +1 -1
  935. package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
  936. package/esm/openapi/postman/http-status-text.mjs +1 -1
  937. package/esm/openapi/postman/http-status-text.mjs.map +1 -1
  938. package/esm/openapi/postman/openapi-to-postman-collection.d.mts +1 -1
  939. package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
  940. package/esm/openapi/postman/openapi-to-postman-collection.mjs +1 -1
  941. package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
  942. package/esm/openapi/postman/postman-types.d.mts +1 -1
  943. package/esm/openapi/postman/postman-types.d.mts.map +1 -1
  944. package/esm/openapi/postman/resolve-operation-auth.mjs +1 -1
  945. package/esm/openapi/postman/resolve-operation-auth.mjs.map +1 -1
  946. package/esm/openapi/postman/schema-refs.d.mts +1 -1
  947. package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
  948. package/esm/openapi/postman/schema-refs.mjs +1 -1
  949. package/esm/openapi/postman/schema-refs.mjs.map +1 -1
  950. package/esm/openapi/postman/uuid-v5.mjs +1 -1
  951. package/esm/openapi/postman/uuid-v5.mjs.map +1 -1
  952. package/esm/openapi/request-schemas.mjs +1 -1
  953. package/esm/openapi/request-schemas.mjs.map +1 -1
  954. package/esm/openapi/response-schemas.mjs +1 -1
  955. package/esm/openapi/response-schemas.mjs.map +1 -1
  956. package/esm/openapi/schema-registry.mjs +1 -1
  957. package/esm/openapi/schema-registry.mjs.map +1 -1
  958. package/esm/openapi/security.mjs +1 -1
  959. package/esm/openapi/security.mjs.map +1 -1
  960. package/esm/openapi/types.d.mts +1 -1
  961. package/esm/openapi/types.d.mts.map +1 -1
  962. package/esm/production/assert-dist-ready-to-start.mjs +1 -1
  963. package/esm/production/assert-dist-ready-to-start.mjs.map +1 -1
  964. package/esm/production/assert-generated-imports.mjs +1 -1
  965. package/esm/production/assert-generated-imports.mjs.map +1 -1
  966. package/esm/production/build-app-production.mjs +1 -1
  967. package/esm/production/build-app-production.mjs.map +1 -1
  968. package/esm/production/build-contributions.mjs +1 -1
  969. package/esm/production/build-contributions.mjs.map +1 -1
  970. package/esm/production/bundle-framework-dependencies.mjs +1 -1
  971. package/esm/production/bundle-framework-dependencies.mjs.map +1 -1
  972. package/esm/production/dist-build-manifest.mjs +1 -1
  973. package/esm/production/dist-build-manifest.mjs.map +1 -1
  974. package/esm/production/esbuild-plugins.mjs +1 -1
  975. package/esm/production/esbuild-plugins.mjs.map +1 -1
  976. package/esm/production/esbuild-preflight.mjs +1 -1
  977. package/esm/production/esbuild-preflight.mjs.map +1 -1
  978. package/esm/production/production-builder.mjs +1 -1
  979. package/esm/production/production-builder.mjs.map +1 -1
  980. package/esm/production/production-supervisor.mjs +1 -1
  981. package/esm/production/production-supervisor.mjs.map +1 -1
  982. package/esm/production/promote-dist.mjs +1 -1
  983. package/esm/production/promote-dist.mjs.map +1 -1
  984. package/esm/production/registration-child-runner.mjs +1 -1
  985. package/esm/production/registration-child-runner.mjs.map +1 -1
  986. package/esm/production/resolve-build-config.d.mts +1 -1
  987. package/esm/production/resolve-build-config.d.mts.map +1 -1
  988. package/esm/production/resolve-build-config.mjs +1 -1
  989. package/esm/production/resolve-build-config.mjs.map +1 -1
  990. package/esm/production/route-registration-child.mjs +1 -1
  991. package/esm/production/route-registration-child.mjs.map +1 -1
  992. package/esm/production/route-registration-snapshot.mjs +1 -1
  993. package/esm/production/route-registration-snapshot.mjs.map +1 -1
  994. package/esm/production/tsconfig-path-aliases.mjs +1 -1
  995. package/esm/production/tsconfig-path-aliases.mjs.map +1 -1
  996. package/esm/react/index.d.mts +1 -1
  997. package/esm/react/index.d.mts.map +1 -1
  998. package/esm/react/index.mjs +1 -1
  999. package/esm/react/index.mjs.map +1 -1
  1000. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +1 -1
  1001. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
  1002. package/esm/repositories/adapters/cascade/cascade-adapter.mjs +1 -1
  1003. package/esm/repositories/adapters/cascade/cascade-adapter.mjs.map +1 -1
  1004. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +1 -1
  1005. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
  1006. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +1 -1
  1007. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
  1008. package/esm/repositories/adapters/cascade/filter-applicator.mjs +1 -1
  1009. package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
  1010. package/esm/repositories/contracts/query-builder.contract.d.mts +1 -1
  1011. package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
  1012. package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -1
  1013. package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
  1014. package/esm/repositories/contracts/types.d.mts +1 -1
  1015. package/esm/repositories/contracts/types.d.mts.map +1 -1
  1016. package/esm/repositories/repository.manager.d.mts +1 -1
  1017. package/esm/repositories/repository.manager.d.mts.map +1 -1
  1018. package/esm/repositories/repository.manager.mjs +1 -1
  1019. package/esm/repositories/repository.manager.mjs.map +1 -1
  1020. package/esm/resource/define-resource.d.mts +1 -1
  1021. package/esm/resource/define-resource.d.mts.map +1 -1
  1022. package/esm/resource/define-resource.mjs +1 -1
  1023. package/esm/resource/define-resource.mjs.map +1 -1
  1024. package/esm/resource/nullable-resource.d.mts +1 -1
  1025. package/esm/resource/nullable-resource.d.mts.map +1 -1
  1026. package/esm/resource/nullable-resource.mjs +1 -1
  1027. package/esm/resource/nullable-resource.mjs.map +1 -1
  1028. package/esm/resource/register-resource.d.mts +1 -1
  1029. package/esm/resource/register-resource.d.mts.map +1 -1
  1030. package/esm/resource/register-resource.mjs +1 -1
  1031. package/esm/resource/register-resource.mjs.map +1 -1
  1032. package/esm/resource/resource-field-builder.d.mts +1 -1
  1033. package/esm/resource/resource-field-builder.d.mts.map +1 -1
  1034. package/esm/resource/resource-field-builder.mjs +1 -1
  1035. package/esm/resource/resource-field-builder.mjs.map +1 -1
  1036. package/esm/resource/resource.d.mts +1 -1
  1037. package/esm/resource/resource.d.mts.map +1 -1
  1038. package/esm/resource/resource.mjs +1 -1
  1039. package/esm/resource/resource.mjs.map +1 -1
  1040. package/esm/resource/types.d.mts +1 -1
  1041. package/esm/resource/types.d.mts.map +1 -1
  1042. package/esm/restful/restful.d.mts +1 -1
  1043. package/esm/restful/restful.d.mts.map +1 -1
  1044. package/esm/restful/restful.mjs +1 -1
  1045. package/esm/restful/restful.mjs.map +1 -1
  1046. package/esm/router/build-route-rate-limit.mjs +1 -1
  1047. package/esm/router/build-route-rate-limit.mjs.map +1 -1
  1048. package/esm/router/describe-route-for-log.mjs +1 -1
  1049. package/esm/router/describe-route-for-log.mjs.map +1 -1
  1050. package/esm/router/dev-dispatch.mjs +1 -1
  1051. package/esm/router/dev-dispatch.mjs.map +1 -1
  1052. package/esm/router/log-request-lifecycle.mjs +1 -1
  1053. package/esm/router/log-request-lifecycle.mjs.map +1 -1
  1054. package/esm/router/named-api-routes-with-responses.mjs +1 -1
  1055. package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
  1056. package/esm/router/normalize-request-path.d.mts +1 -1
  1057. package/esm/router/normalize-request-path.d.mts.map +1 -1
  1058. package/esm/router/normalize-request-path.mjs +1 -1
  1059. package/esm/router/normalize-request-path.mjs.map +1 -1
  1060. package/esm/router/normalize-route-path.d.mts +1 -1
  1061. package/esm/router/normalize-route-path.d.mts.map +1 -1
  1062. package/esm/router/normalize-route-path.mjs +1 -1
  1063. package/esm/router/normalize-route-path.mjs.map +1 -1
  1064. package/esm/router/positional-handler-diagnostics.d.mts +1 -1
  1065. package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
  1066. package/esm/router/positional-handler-diagnostics.mjs +1 -1
  1067. package/esm/router/positional-handler-diagnostics.mjs.map +1 -1
  1068. package/esm/router/response-schema-types.mjs +1 -1
  1069. package/esm/router/response-schema-types.mjs.map +1 -1
  1070. package/esm/router/route-builder.d.mts +1 -1
  1071. package/esm/router/route-builder.d.mts.map +1 -1
  1072. package/esm/router/route-builder.mjs +1 -1
  1073. package/esm/router/route-builder.mjs.map +1 -1
  1074. package/esm/router/route-name-method-suffix.d.mts +1 -1
  1075. package/esm/router/route-name-method-suffix.d.mts.map +1 -1
  1076. package/esm/router/route-name-method-suffix.mjs +1 -1
  1077. package/esm/router/route-name-method-suffix.mjs.map +1 -1
  1078. package/esm/router/route-registry.d.mts +1 -1
  1079. package/esm/router/route-registry.d.mts.map +1 -1
  1080. package/esm/router/route-registry.mjs +1 -1
  1081. package/esm/router/route-registry.mjs.map +1 -1
  1082. package/esm/router/router.d.mts +8 -1
  1083. package/esm/router/router.d.mts.map +1 -1
  1084. package/esm/router/router.mjs +20 -15
  1085. package/esm/router/router.mjs.map +1 -1
  1086. package/esm/router/types.d.mts +13 -1
  1087. package/esm/router/types.d.mts.map +1 -1
  1088. package/esm/socket/types.d.mts +1 -1
  1089. package/esm/socket/types.d.mts.map +1 -1
  1090. package/esm/socket/utils.d.mts +1 -1
  1091. package/esm/socket/utils.d.mts.map +1 -1
  1092. package/esm/socket/utils.mjs +1 -1
  1093. package/esm/socket/utils.mjs.map +1 -1
  1094. package/esm/storage/config.d.mts +1 -1
  1095. package/esm/storage/config.d.mts.map +1 -1
  1096. package/esm/storage/config.mjs +1 -1
  1097. package/esm/storage/config.mjs.map +1 -1
  1098. package/esm/storage/context/storage-driver-context.d.mts +1 -1
  1099. package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
  1100. package/esm/storage/context/storage-driver-context.mjs +1 -1
  1101. package/esm/storage/context/storage-driver-context.mjs.map +1 -1
  1102. package/esm/storage/drivers/cloud-driver.d.mts +1 -1
  1103. package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
  1104. package/esm/storage/drivers/cloud-driver.mjs +1 -1
  1105. package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
  1106. package/esm/storage/drivers/do-spaces-driver.d.mts +1 -1
  1107. package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
  1108. package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
  1109. package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
  1110. package/esm/storage/drivers/local-driver.d.mts +12 -1
  1111. package/esm/storage/drivers/local-driver.d.mts.map +1 -1
  1112. package/esm/storage/drivers/local-driver.mjs +33 -1
  1113. package/esm/storage/drivers/local-driver.mjs.map +1 -1
  1114. package/esm/storage/drivers/r2-driver.d.mts +1 -1
  1115. package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
  1116. package/esm/storage/drivers/r2-driver.mjs +1 -1
  1117. package/esm/storage/drivers/r2-driver.mjs.map +1 -1
  1118. package/esm/storage/drivers/s3-driver.d.mts +1 -1
  1119. package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
  1120. package/esm/storage/drivers/s3-driver.mjs +1 -1
  1121. package/esm/storage/drivers/s3-driver.mjs.map +1 -1
  1122. package/esm/storage/index.d.mts +1 -1
  1123. package/esm/storage/scoped-storage.d.mts +1 -1
  1124. package/esm/storage/scoped-storage.d.mts.map +1 -1
  1125. package/esm/storage/scoped-storage.mjs +1 -1
  1126. package/esm/storage/scoped-storage.mjs.map +1 -1
  1127. package/esm/storage/storage-file.d.mts +1 -1
  1128. package/esm/storage/storage-file.d.mts.map +1 -1
  1129. package/esm/storage/storage-file.mjs +1 -1
  1130. package/esm/storage/storage-file.mjs.map +1 -1
  1131. package/esm/storage/storage.d.mts +3 -3
  1132. package/esm/storage/storage.d.mts.map +1 -1
  1133. package/esm/storage/storage.mjs +1 -1
  1134. package/esm/storage/storage.mjs.map +1 -1
  1135. package/esm/storage/types.d.mts +3 -2
  1136. package/esm/storage/types.d.mts.map +1 -1
  1137. package/esm/storage/utils/classify-ip-address.d.mts +1 -1
  1138. package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
  1139. package/esm/storage/utils/classify-ip-address.mjs +1 -1
  1140. package/esm/storage/utils/classify-ip-address.mjs.map +1 -1
  1141. package/esm/storage/utils/contain-path.d.mts +1 -1
  1142. package/esm/storage/utils/contain-path.d.mts.map +1 -1
  1143. package/esm/storage/utils/contain-path.mjs +1 -1
  1144. package/esm/storage/utils/contain-path.mjs.map +1 -1
  1145. package/esm/storage/utils/mime.d.mts +1 -1
  1146. package/esm/storage/utils/mime.d.mts.map +1 -1
  1147. package/esm/storage/utils/mime.mjs +1 -1
  1148. package/esm/storage/utils/mime.mjs.map +1 -1
  1149. package/esm/storage/utils/safe-fetch.d.mts +1 -1
  1150. package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
  1151. package/esm/storage/utils/safe-fetch.mjs +1 -1
  1152. package/esm/storage/utils/safe-fetch.mjs.map +1 -1
  1153. package/esm/storage/utils/storage-capability-error.d.mts +1 -1
  1154. package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
  1155. package/esm/storage/utils/storage-capability-error.mjs +1 -1
  1156. package/esm/storage/utils/storage-capability-error.mjs.map +1 -1
  1157. package/esm/storage/utils/storage-error.d.mts +1 -1
  1158. package/esm/storage/utils/storage-error.d.mts.map +1 -1
  1159. package/esm/storage/utils/storage-error.mjs +1 -1
  1160. package/esm/storage/utils/storage-error.mjs.map +1 -1
  1161. package/esm/storage/utils/storage-not-initialized-error.d.mts +1 -1
  1162. package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
  1163. package/esm/storage/utils/storage-not-initialized-error.mjs +1 -1
  1164. package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
  1165. package/esm/tests/start-http-development-server.d.mts +1 -1
  1166. package/esm/tests/start-http-development-server.d.mts.map +1 -1
  1167. package/esm/tests/start-http-development-server.mjs +1 -1
  1168. package/esm/tests/start-http-development-server.mjs.map +1 -1
  1169. package/esm/tests/test-connectors-selection.d.mts +1 -1
  1170. package/esm/tests/test-connectors-selection.d.mts.map +1 -1
  1171. package/esm/tests/test-connectors-selection.mjs +1 -1
  1172. package/esm/tests/test-connectors-selection.mjs.map +1 -1
  1173. package/esm/tests/test-helpers.d.mts +1 -1
  1174. package/esm/tests/test-helpers.d.mts.map +1 -1
  1175. package/esm/tests/test-helpers.mjs +1 -1
  1176. package/esm/tests/test-helpers.mjs.map +1 -1
  1177. package/esm/tests/test-lifecycle-state.mjs +1 -1
  1178. package/esm/tests/test-lifecycle-state.mjs.map +1 -1
  1179. package/esm/tests/test-server-port-channel.mjs +1 -1
  1180. package/esm/tests/test-server-port-channel.mjs.map +1 -1
  1181. package/esm/tests/test-setup-timeout.mjs +1 -1
  1182. package/esm/tests/test-setup-timeout.mjs.map +1 -1
  1183. package/esm/tests/vitest-setup.d.mts +1 -1
  1184. package/esm/tests/vitest-setup.d.mts.map +1 -1
  1185. package/esm/tests/vitest-setup.mjs +1 -1
  1186. package/esm/tests/vitest-setup.mjs.map +1 -1
  1187. package/esm/updater/package-manager.mjs +1 -1
  1188. package/esm/updater/package-manager.mjs.map +1 -1
  1189. package/esm/updater/update-warlock-packages.mjs +1 -1
  1190. package/esm/updater/update-warlock-packages.mjs.map +1 -1
  1191. package/esm/use-cases/types.d.mts +1 -1
  1192. package/esm/use-cases/types.d.mts.map +1 -1
  1193. package/esm/use-cases/use-case-broadcast.d.mts +1 -1
  1194. package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
  1195. package/esm/use-cases/use-case-broadcast.mjs +1 -1
  1196. package/esm/use-cases/use-case-broadcast.mjs.map +1 -1
  1197. package/esm/use-cases/use-case-events.d.mts +1 -1
  1198. package/esm/use-cases/use-case-events.d.mts.map +1 -1
  1199. package/esm/use-cases/use-case-events.mjs +1 -1
  1200. package/esm/use-cases/use-case-events.mjs.map +1 -1
  1201. package/esm/use-cases/use-case-pipeline.d.mts +1 -1
  1202. package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
  1203. package/esm/use-cases/use-case-pipeline.mjs +1 -1
  1204. package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
  1205. package/esm/use-cases/use-case.d.mts +1 -1
  1206. package/esm/use-cases/use-case.d.mts.map +1 -1
  1207. package/esm/use-cases/use-case.errors.d.mts +1 -1
  1208. package/esm/use-cases/use-case.errors.d.mts.map +1 -1
  1209. package/esm/use-cases/use-case.errors.mjs +1 -1
  1210. package/esm/use-cases/use-case.errors.mjs.map +1 -1
  1211. package/esm/use-cases/use-case.mjs +1 -1
  1212. package/esm/use-cases/use-case.mjs.map +1 -1
  1213. package/esm/use-cases/use-cases-registry.d.mts +1 -1
  1214. package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
  1215. package/esm/use-cases/use-cases-registry.mjs +1 -1
  1216. package/esm/use-cases/use-cases-registry.mjs.map +1 -1
  1217. package/esm/utils/app-log.d.mts +6 -6
  1218. package/esm/utils/app-log.d.mts.map +1 -1
  1219. package/esm/utils/app-log.mjs +1 -1
  1220. package/esm/utils/app-log.mjs.map +1 -1
  1221. package/esm/utils/database-log.d.mts +1 -1
  1222. package/esm/utils/database-log.d.mts.map +1 -1
  1223. package/esm/utils/database-log.mjs +1 -1
  1224. package/esm/utils/database-log.mjs.map +1 -1
  1225. package/esm/utils/detect-environment-overrides.mjs +1 -1
  1226. package/esm/utils/detect-environment-overrides.mjs.map +1 -1
  1227. package/esm/utils/environment.d.mts +1 -1
  1228. package/esm/utils/environment.d.mts.map +1 -1
  1229. package/esm/utils/environment.mjs +1 -1
  1230. package/esm/utils/environment.mjs.map +1 -1
  1231. package/esm/utils/framework-vesion.mjs +1 -1
  1232. package/esm/utils/framework-vesion.mjs.map +1 -1
  1233. package/esm/utils/get-localized.d.mts +1 -1
  1234. package/esm/utils/get-localized.d.mts.map +1 -1
  1235. package/esm/utils/get-localized.mjs +1 -1
  1236. package/esm/utils/get-localized.mjs.map +1 -1
  1237. package/esm/utils/is-test-file.mjs +1 -1
  1238. package/esm/utils/is-test-file.mjs.map +1 -1
  1239. package/esm/utils/load-environment.mjs +1 -1
  1240. package/esm/utils/load-environment.mjs.map +1 -1
  1241. package/esm/utils/normalized-path.d.mts +1 -1
  1242. package/esm/utils/normalized-path.d.mts.map +1 -1
  1243. package/esm/utils/normalized-path.mjs +1 -1
  1244. package/esm/utils/normalized-path.mjs.map +1 -1
  1245. package/esm/utils/npm-registry.d.mts +1 -1
  1246. package/esm/utils/npm-registry.d.mts.map +1 -1
  1247. package/esm/utils/npm-registry.mjs +1 -1
  1248. package/esm/utils/npm-registry.mjs.map +1 -1
  1249. package/esm/utils/paths.d.mts +1 -1
  1250. package/esm/utils/paths.d.mts.map +1 -1
  1251. package/esm/utils/paths.mjs +1 -1
  1252. package/esm/utils/paths.mjs.map +1 -1
  1253. package/esm/utils/promise-all-object.d.mts +1 -1
  1254. package/esm/utils/promise-all-object.d.mts.map +1 -1
  1255. package/esm/utils/promise-all-object.mjs +1 -1
  1256. package/esm/utils/promise-all-object.mjs.map +1 -1
  1257. package/esm/utils/queue.d.mts +1 -1
  1258. package/esm/utils/queue.d.mts.map +1 -1
  1259. package/esm/utils/queue.mjs +1 -1
  1260. package/esm/utils/queue.mjs.map +1 -1
  1261. package/esm/utils/recorded-environment-overrides.mjs +1 -1
  1262. package/esm/utils/recorded-environment-overrides.mjs.map +1 -1
  1263. package/esm/utils/report-environment-overrides.mjs +1 -1
  1264. package/esm/utils/report-environment-overrides.mjs.map +1 -1
  1265. package/esm/utils/sleep.d.mts +1 -1
  1266. package/esm/utils/sleep.d.mts.map +1 -1
  1267. package/esm/utils/sleep.mjs +1 -1
  1268. package/esm/utils/sleep.mjs.map +1 -1
  1269. package/esm/utils/sluggable.d.mts +1 -1
  1270. package/esm/utils/sluggable.d.mts.map +1 -1
  1271. package/esm/utils/sluggable.mjs +1 -1
  1272. package/esm/utils/sluggable.mjs.map +1 -1
  1273. package/esm/utils/to-json.d.mts +1 -1
  1274. package/esm/utils/to-json.d.mts.map +1 -1
  1275. package/esm/utils/to-json.mjs +1 -1
  1276. package/esm/utils/to-json.mjs.map +1 -1
  1277. package/esm/utils/types.d.mts +1 -1
  1278. package/esm/utils/types.d.mts.map +1 -1
  1279. package/esm/utils/urls.d.mts +1 -1
  1280. package/esm/utils/urls.d.mts.map +1 -1
  1281. package/esm/utils/urls.mjs +1 -1
  1282. package/esm/utils/urls.mjs.map +1 -1
  1283. package/esm/utils/version-compare.d.mts +1 -1
  1284. package/esm/utils/version-compare.d.mts.map +1 -1
  1285. package/esm/utils/version-compare.mjs +1 -1
  1286. package/esm/utils/version-compare.mjs.map +1 -1
  1287. package/esm/validation/database/exists-except-current-id.d.mts +1 -1
  1288. package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
  1289. package/esm/validation/database/exists-except-current-id.mjs +1 -1
  1290. package/esm/validation/database/exists-except-current-id.mjs.map +1 -1
  1291. package/esm/validation/database/exists-except-current-user.d.mts +1 -1
  1292. package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
  1293. package/esm/validation/database/exists-except-current-user.mjs +1 -1
  1294. package/esm/validation/database/exists-except-current-user.mjs.map +1 -1
  1295. package/esm/validation/database/types.d.mts +1 -1
  1296. package/esm/validation/database/types.d.mts.map +1 -1
  1297. package/esm/validation/database/unique-except-current-id.d.mts +1 -1
  1298. package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
  1299. package/esm/validation/database/unique-except-current-id.mjs +1 -1
  1300. package/esm/validation/database/unique-except-current-id.mjs.map +1 -1
  1301. package/esm/validation/database/unique-except-current-user.d.mts +1 -1
  1302. package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
  1303. package/esm/validation/database/unique-except-current-user.mjs +1 -1
  1304. package/esm/validation/database/unique-except-current-user.mjs.map +1 -1
  1305. package/esm/validation/file/file.d.mts +1 -1
  1306. package/esm/validation/file/file.d.mts.map +1 -1
  1307. package/esm/validation/file/file.mjs +1 -1
  1308. package/esm/validation/file/file.mjs.map +1 -1
  1309. package/esm/validation/init.mjs +1 -1
  1310. package/esm/validation/init.mjs.map +1 -1
  1311. package/esm/validation/plugins/database-plugin.mjs +1 -1
  1312. package/esm/validation/plugins/database-plugin.mjs.map +1 -1
  1313. package/esm/validation/plugins/file-plugin.mjs +1 -1
  1314. package/esm/validation/plugins/file-plugin.mjs.map +1 -1
  1315. package/esm/validation/plugins/localized-plugin.mjs +1 -1
  1316. package/esm/validation/plugins/localized-plugin.mjs.map +1 -1
  1317. package/esm/validation/types.d.mts +1 -1
  1318. package/esm/validation/types.d.mts.map +1 -1
  1319. package/esm/validation/validateAll.mjs +1 -1
  1320. package/esm/validation/validateAll.mjs.map +1 -1
  1321. package/esm/validation/validators/file-validator.d.mts +44 -41
  1322. package/esm/validation/validators/file-validator.d.mts.map +1 -1
  1323. package/esm/validation/validators/file-validator.mjs +4 -1
  1324. package/esm/validation/validators/file-validator.mjs.map +1 -1
  1325. package/esm/vite/lower-stage3-decorators.d.mts +1 -1
  1326. package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
  1327. package/esm/vite/lower-stage3-decorators.mjs +1 -1
  1328. package/esm/vite/lower-stage3-decorators.mjs.map +1 -1
  1329. package/esm/warlock-config/bundle-config.mjs +148 -0
  1330. package/esm/warlock-config/bundle-config.mjs.map +1 -0
  1331. package/esm/warlock-config/default-configurations.mjs +1 -1
  1332. package/esm/warlock-config/default-configurations.mjs.map +1 -1
  1333. package/esm/warlock-config/define-config.d.mts +1 -1
  1334. package/esm/warlock-config/define-config.d.mts.map +1 -1
  1335. package/esm/warlock-config/define-config.mjs +1 -1
  1336. package/esm/warlock-config/define-config.mjs.map +1 -1
  1337. package/esm/warlock-config/index.d.mts +1 -1
  1338. package/esm/warlock-config/index.mjs +1 -1
  1339. package/esm/warlock-config/normalize-build-config.mjs +1 -1
  1340. package/esm/warlock-config/normalize-build-config.mjs.map +1 -1
  1341. package/esm/warlock-config/types.d.mts +1 -1
  1342. package/esm/warlock-config/types.d.mts.map +1 -1
  1343. package/esm/warlock-config/warlock-config.manager.d.mts +32 -7
  1344. package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
  1345. package/esm/warlock-config/warlock-config.manager.mjs +94 -18
  1346. package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
  1347. package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
  1348. package/esm/warlock-config/warn-deprecated-config.mjs.map +1 -1
  1349. package/llms-full.txt +66 -9
  1350. package/package.json +20 -13
  1351. package/skills/configure-app/SKILL.md +23 -1
  1352. package/skills/create-controller/SKILL.md +4 -0
  1353. package/skills/health-checks/SKILL.md +2 -0
  1354. package/skills/register-route/SKILL.md +10 -0
  1355. package/skills/run-app/SKILL.md +9 -2
  1356. package/skills/send-response/SKILL.md +10 -2
  1357. package/skills/store-file/SKILL.md +5 -1
  1358. package/skills/use-middleware/SKILL.md +2 -2
  1359. package/skills/validate-input/SKILL.md +1 -1
@@ -3,7 +3,7 @@ import { existsSync, readFileSync } from "node:fs";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { fork } from "node:child_process";
5
5
 
6
- //#region ../core/src/production/registration-child-runner.ts
6
+ //#region ../../packages/core/src/production/registration-child-runner.ts
7
7
  const DEFAULT_TIMEOUT_MS = 3e4;
8
8
  const MAX_DIAGNOSTIC_BYTES = 16384;
9
9
  /** Message a registration child sends when it fails. Shared by every result kind. */
@@ -1 +1 @@
1
- {"version":3,"file":"registration-child-runner.mjs","names":[],"sources":["../../../../../../../core/src/production/registration-child-runner.ts"],"sourcesContent":["import { fork, type ChildProcess, type Serializable } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_DIAGNOSTIC_BYTES = 16_384;\n\n/** Message a registration child sends when it fails. Shared by every result kind. */\nexport const REGISTRATION_ERROR_MESSAGE = \"route-registration:error\";\n\n/** Message a registration child sends before it imports each module. Shared by every result kind. */\nexport const REGISTRATION_PROGRESS_MESSAGE = \"route-registration:progress\";\n\nexport type RegistrationChildProcess = Pick<\n ChildProcess,\n \"send\" | \"kill\" | \"disconnect\" | \"on\" | \"stdout\" | \"stderr\" | \"connected\"\n>;\n\nexport type RegistrationChildForker = (\n entry: string,\n options: { cwd: string },\n) => RegistrationChildProcess;\n\nexport type RegistrationChildRunOptions<TResult> = Readonly<{\n cwd: string;\n timeoutMs?: number;\n childEntry?: string;\n /**\n * Test seam. An injected fork is a protocol seam, not an installation check, so the\n * compiled child is not resolved when it is set.\n */\n forkProcess?: RegistrationChildForker;\n /** The single IPC request the child receives after it starts. */\n request: Serializable;\n /** `type` of the one message that carries the result (for example `route-registration:snapshot`). */\n resultMessageType: string;\n /** What the result is called in error messages (\"snapshot\", \"document\"). */\n resultNoun: string;\n /**\n * Validate and freeze the result message. Throw to reject the run with that error.\n */\n readResult: (message: Record<string, unknown>) => TResult;\n}>;\n\n/**\n * Run the compiled registration child in a fresh process and wait for its result.\n *\n * This is the fork / IPC / timeout / diagnostics plumbing shared by the route snapshot and\n * the OpenAPI document: the child is forked, sent one request, and must answer with exactly\n * one result message (or an error message) and exit 0. The timeout names the module the\n * child was still importing; the last 16 KiB of child stdout/stderr are attached to failures.\n */\nexport function runRegistrationChild<TResult>(\n options: RegistrationChildRunOptions<TResult>,\n): Promise<TResult> {\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const startedAt = Date.now();\n const forkProcess = options.forkProcess ?? defaultForkProcess;\n const entry =\n options.childEntry ??\n (options.forkProcess ? \"<injected-route-registration-child>\" : resolveCompiledChildEntry());\n\n return new Promise<TResult>((resolve, reject) => {\n const child = forkProcess(entry, { cwd: options.cwd });\n let settled = false;\n let received: { value: TResult } | undefined;\n let stdout = \"\";\n let stderr = \"\";\n let pendingModule: string | undefined;\n\n const append = (current: string, chunk: Buffer) => {\n const remaining = MAX_DIAGNOSTIC_BYTES - Buffer.byteLength(current);\n\n return remaining <= 0 ? current : current + chunk.toString(\"utf8\", 0, remaining);\n };\n\n const finish = (error?: Error, result?: TResult) => {\n if (settled) {\n return;\n }\n\n settled = true;\n clearTimeout(timeout);\n\n if (child.connected) {\n child.disconnect?.();\n }\n\n if (error) {\n child.kill?.();\n reject(error);\n } else {\n resolve(result as TResult);\n }\n };\n\n child.stdout?.on(\"data\", (chunk: Buffer) => {\n stdout = append(stdout, chunk);\n });\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n stderr = append(stderr, chunk);\n });\n\n const timeout = setTimeout(() => {\n const elapsedMs = Date.now() - startedAt;\n\n finish(\n new Error(\n `Route registration child timed out after ${elapsedMs}ms${pendingModule ? ` while registering ${pendingModule}` : \"\"}.${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n }, timeoutMs);\n timeout.unref?.();\n\n child.on(\"error\", (error) => {\n finish(\n new Error(\n `Could not start route registration child: ${error.message}${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n });\n\n child.on(\"message\", (message: unknown) => {\n if (!isChildMessage(message, options.resultMessageType)) {\n return;\n }\n\n if (message.type === REGISTRATION_ERROR_MESSAGE) {\n finish(\n new Error(\n `Route registration child failed: ${String(message.message)}${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n\n return;\n }\n\n if (message.type === REGISTRATION_PROGRESS_MESSAGE) {\n pendingModule = String(message.module);\n\n return;\n }\n\n try {\n const result = options.readResult(message);\n\n if (received) {\n finish(new Error(`Route registration child sent more than one ${options.resultNoun}.`));\n\n return;\n }\n\n received = { value: result };\n } catch (error) {\n finish(error as Error);\n }\n });\n\n child.on(\"close\", (code) => {\n if (settled) {\n return;\n }\n\n if (code === 0 && received) {\n finish(undefined, received.value);\n\n return;\n }\n\n finish(\n new Error(\n `Route registration child exited ${code ?? \"by signal\"} without a valid ${options.resultNoun}.${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n });\n\n if (!child.send) {\n finish(new Error(\"Route registration child did not provide an IPC send channel.\"));\n\n return;\n }\n\n child.send(options.request);\n });\n}\n\nfunction defaultForkProcess(entry: string, options: { cwd: string }): RegistrationChildProcess {\n const forkOptions: NonNullable<Parameters<typeof fork>[2]> & { windowsHide?: boolean } = {\n cwd: options.cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\", \"ipc\"],\n windowsHide: true,\n };\n\n return fork(entry, [], forkOptions);\n}\n\n/** Resolve from Core's package root, not an assumed bundler-preserved dirname. */\nfunction resolveCompiledChildEntry(): string {\n let directory = path.dirname(fileURLToPath(import.meta.url));\n\n while (directory !== path.dirname(directory)) {\n const packageJson = path.join(directory, \"package.json\");\n\n if (existsSync(packageJson)) {\n try {\n if (JSON.parse(readFileSync(packageJson, \"utf8\")).name === \"@warlock.js/core\") {\n const child = path.join(directory, \"esm\", \"production\", \"route-registration-child.mjs\");\n\n if (existsSync(child)) {\n return child;\n }\n\n throw new Error(\n `@warlock.js/core is missing its compiled route-registration child at ${child}. Reinstall a complete package.`,\n );\n }\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"route-registration child\")) {\n throw error;\n }\n }\n }\n\n directory = path.dirname(directory);\n }\n\n throw new Error(\n \"Could not locate @warlock.js/core package root for the route-registration child.\",\n );\n}\n\nfunction isChildMessage(\n value: unknown,\n resultMessageType: string,\n): value is Record<string, unknown> & { type: string } {\n if (typeof value !== \"object\" || value === null || !(\"type\" in value)) {\n return false;\n }\n\n const type = (value as { type?: unknown }).type;\n\n return (\n type === resultMessageType ||\n type === REGISTRATION_ERROR_MESSAGE ||\n type === REGISTRATION_PROGRESS_MESSAGE\n );\n}\n\nfunction formatDiagnostics(stdout: string, stderr: string): string {\n if (!stdout && !stderr) {\n return \"\";\n }\n\n return `\\nChild stdout:\\n${stdout}\\nChild stderr:\\n${stderr}`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"registration-child-runner.mjs","names":[],"sources":["../../../../../../../../packages/core/src/production/registration-child-runner.ts"],"sourcesContent":["import { fork, type ChildProcess, type Serializable } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_DIAGNOSTIC_BYTES = 16_384;\n\n/** Message a registration child sends when it fails. Shared by every result kind. */\nexport const REGISTRATION_ERROR_MESSAGE = \"route-registration:error\";\n\n/** Message a registration child sends before it imports each module. Shared by every result kind. */\nexport const REGISTRATION_PROGRESS_MESSAGE = \"route-registration:progress\";\n\nexport type RegistrationChildProcess = Pick<\n ChildProcess,\n \"send\" | \"kill\" | \"disconnect\" | \"on\" | \"stdout\" | \"stderr\" | \"connected\"\n>;\n\nexport type RegistrationChildForker = (\n entry: string,\n options: { cwd: string },\n) => RegistrationChildProcess;\n\nexport type RegistrationChildRunOptions<TResult> = Readonly<{\n cwd: string;\n timeoutMs?: number;\n childEntry?: string;\n /**\n * Test seam. An injected fork is a protocol seam, not an installation check, so the\n * compiled child is not resolved when it is set.\n */\n forkProcess?: RegistrationChildForker;\n /** The single IPC request the child receives after it starts. */\n request: Serializable;\n /** `type` of the one message that carries the result (for example `route-registration:snapshot`). */\n resultMessageType: string;\n /** What the result is called in error messages (\"snapshot\", \"document\"). */\n resultNoun: string;\n /**\n * Validate and freeze the result message. Throw to reject the run with that error.\n */\n readResult: (message: Record<string, unknown>) => TResult;\n}>;\n\n/**\n * Run the compiled registration child in a fresh process and wait for its result.\n *\n * This is the fork / IPC / timeout / diagnostics plumbing shared by the route snapshot and\n * the OpenAPI document: the child is forked, sent one request, and must answer with exactly\n * one result message (or an error message) and exit 0. The timeout names the module the\n * child was still importing; the last 16 KiB of child stdout/stderr are attached to failures.\n */\nexport function runRegistrationChild<TResult>(\n options: RegistrationChildRunOptions<TResult>,\n): Promise<TResult> {\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const startedAt = Date.now();\n const forkProcess = options.forkProcess ?? defaultForkProcess;\n const entry =\n options.childEntry ??\n (options.forkProcess ? \"<injected-route-registration-child>\" : resolveCompiledChildEntry());\n\n return new Promise<TResult>((resolve, reject) => {\n const child = forkProcess(entry, { cwd: options.cwd });\n let settled = false;\n let received: { value: TResult } | undefined;\n let stdout = \"\";\n let stderr = \"\";\n let pendingModule: string | undefined;\n\n const append = (current: string, chunk: Buffer) => {\n const remaining = MAX_DIAGNOSTIC_BYTES - Buffer.byteLength(current);\n\n return remaining <= 0 ? current : current + chunk.toString(\"utf8\", 0, remaining);\n };\n\n const finish = (error?: Error, result?: TResult) => {\n if (settled) {\n return;\n }\n\n settled = true;\n clearTimeout(timeout);\n\n if (child.connected) {\n child.disconnect?.();\n }\n\n if (error) {\n child.kill?.();\n reject(error);\n } else {\n resolve(result as TResult);\n }\n };\n\n child.stdout?.on(\"data\", (chunk: Buffer) => {\n stdout = append(stdout, chunk);\n });\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n stderr = append(stderr, chunk);\n });\n\n const timeout = setTimeout(() => {\n const elapsedMs = Date.now() - startedAt;\n\n finish(\n new Error(\n `Route registration child timed out after ${elapsedMs}ms${pendingModule ? ` while registering ${pendingModule}` : \"\"}.${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n }, timeoutMs);\n timeout.unref?.();\n\n child.on(\"error\", (error) => {\n finish(\n new Error(\n `Could not start route registration child: ${error.message}${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n });\n\n child.on(\"message\", (message: unknown) => {\n if (!isChildMessage(message, options.resultMessageType)) {\n return;\n }\n\n if (message.type === REGISTRATION_ERROR_MESSAGE) {\n finish(\n new Error(\n `Route registration child failed: ${String(message.message)}${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n\n return;\n }\n\n if (message.type === REGISTRATION_PROGRESS_MESSAGE) {\n pendingModule = String(message.module);\n\n return;\n }\n\n try {\n const result = options.readResult(message);\n\n if (received) {\n finish(new Error(`Route registration child sent more than one ${options.resultNoun}.`));\n\n return;\n }\n\n received = { value: result };\n } catch (error) {\n finish(error as Error);\n }\n });\n\n child.on(\"close\", (code) => {\n if (settled) {\n return;\n }\n\n if (code === 0 && received) {\n finish(undefined, received.value);\n\n return;\n }\n\n finish(\n new Error(\n `Route registration child exited ${code ?? \"by signal\"} without a valid ${options.resultNoun}.${formatDiagnostics(stdout, stderr)}`,\n ),\n );\n });\n\n if (!child.send) {\n finish(new Error(\"Route registration child did not provide an IPC send channel.\"));\n\n return;\n }\n\n child.send(options.request);\n });\n}\n\nfunction defaultForkProcess(entry: string, options: { cwd: string }): RegistrationChildProcess {\n const forkOptions: NonNullable<Parameters<typeof fork>[2]> & { windowsHide?: boolean } = {\n cwd: options.cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\", \"ipc\"],\n windowsHide: true,\n };\n\n return fork(entry, [], forkOptions);\n}\n\n/** Resolve from Core's package root, not an assumed bundler-preserved dirname. */\nfunction resolveCompiledChildEntry(): string {\n let directory = path.dirname(fileURLToPath(import.meta.url));\n\n while (directory !== path.dirname(directory)) {\n const packageJson = path.join(directory, \"package.json\");\n\n if (existsSync(packageJson)) {\n try {\n if (JSON.parse(readFileSync(packageJson, \"utf8\")).name === \"@warlock.js/core\") {\n const child = path.join(directory, \"esm\", \"production\", \"route-registration-child.mjs\");\n\n if (existsSync(child)) {\n return child;\n }\n\n throw new Error(\n `@warlock.js/core is missing its compiled route-registration child at ${child}. Reinstall a complete package.`,\n );\n }\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"route-registration child\")) {\n throw error;\n }\n }\n }\n\n directory = path.dirname(directory);\n }\n\n throw new Error(\n \"Could not locate @warlock.js/core package root for the route-registration child.\",\n );\n}\n\nfunction isChildMessage(\n value: unknown,\n resultMessageType: string,\n): value is Record<string, unknown> & { type: string } {\n if (typeof value !== \"object\" || value === null || !(\"type\" in value)) {\n return false;\n }\n\n const type = (value as { type?: unknown }).type;\n\n return (\n type === resultMessageType ||\n type === REGISTRATION_ERROR_MESSAGE ||\n type === REGISTRATION_PROGRESS_MESSAGE\n );\n}\n\nfunction formatDiagnostics(stdout: string, stderr: string): string {\n if (!stdout && !stderr) {\n return \"\";\n }\n\n return `\\nChild stdout:\\n${stdout}\\nChild stderr:\\n${stderr}`;\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { WarlockConfig } from "../warlock-config/types.mjs";
2
2
 
3
- //#region ../core/src/production/resolve-build-config.d.ts
3
+ //#region ../../packages/core/src/production/resolve-build-config.d.ts
4
4
  /**
5
5
  * Keys the builder deletes before handing the options to esbuild — ours
6
6
  * (`singleBundle`, `esmShim`), which esbuild would reject as unknown, and
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-build-config.d.mts","names":[],"sources":["../../../../../../../core/src/production/resolve-build-config.ts"],"mappings":";;;;;AAG6D;;;;AAkBrC;AAExB;;;;;;;;KAFK,mBAAA;AAAA,KAEO,mBAAA,GAAsB,QAAA,CAChC,IAAA,CAAK,WAAA,CAAY,aAAA,6BAA0C,mBAAA,KAE3D,OAAA,CAAQ,IAAA,CAAK,WAAA,CAAY,aAAA,YAAyB,mBAAA;EAAA,qEAEhD,SAAA;AAAA"}
1
+ {"version":3,"file":"resolve-build-config.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/production/resolve-build-config.ts"],"mappings":";;;;;AAG6D;;;;AAkBrC;AAExB;;;;;;;;KAFK,mBAAA;AAAA,KAEO,mBAAA,GAAsB,QAAA,CAChC,IAAA,CAAK,WAAA,CAAY,aAAA,6BAA0C,mBAAA,KAE3D,OAAA,CAAQ,IAAA,CAAK,WAAA,CAAY,aAAA,YAAyB,mBAAA;EAAA,qEAEhD,SAAA;AAAA"}
@@ -3,7 +3,7 @@ import { defaultWarlockConfigurations } from "../warlock-config/default-configur
3
3
  import { normalizeBuildConfig } from "../warlock-config/normalize-build-config.mjs";
4
4
  import path from "path";
5
5
 
6
- //#region ../core/src/production/resolve-build-config.ts
6
+ //#region ../../packages/core/src/production/resolve-build-config.ts
7
7
  /**
8
8
  * esbuild options the build config may not carry, and why.
9
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-build-config.mjs","names":[],"sources":["../../../../../../../core/src/production/resolve-build-config.ts"],"sourcesContent":["import path from \"path\";\nimport { defaultWarlockConfigurations } from \"../warlock-config/default-configurations\";\nimport { normalizeBuildConfig } from \"../warlock-config/normalize-build-config\";\nimport type { WarlockConfig } from \"../warlock-config/types\";\nimport { warlockConfigManager } from \"../warlock-config/warlock-config.manager\";\n\n/**\n * Keys the builder deletes before handing the options to esbuild — ours\n * (`singleBundle`, `esmShim`), which esbuild would reject as unknown, and\n * `banner`, which is re-merged and re-applied after the user spread.\n *\n * They are optional here for a concrete reason: `Required<…>` makes `delete`\n * a type error (TS2790). Naming exactly these three says which keys are\n * removable, rather than casting at each `delete` — a cast there would also\n * hide a genuine mistake.\n *\n * `outFile` and `entryPath` stay REQUIRED even though the builder deletes\n * them too. They are always present after resolution and callers depend on\n * that; widening them to `string | undefined` pushed the lie downstream into\n * `start-production.command.ts`, which then could not trust its own config.\n */\ntype BuilderStrippedKeys = \"singleBundle\" | \"esmShim\" | \"banner\" | \"routeRegistrationTimeoutMs\";\n\nexport type ResolvedBuildConfig = Required<\n Omit<NonNullable<WarlockConfig[\"build\"]>, \"outDirectory\" | BuilderStrippedKeys>\n> &\n Partial<Pick<NonNullable<WarlockConfig[\"build\"]>, BuilderStrippedKeys>> & {\n /** Absolute path to the bundled entry file (`{outdir}/{outFile}`) */\n entryPath: string;\n };\n\n/**\n * esbuild options the build config may not carry, and why.\n *\n * Both apply the named compiler options to EVERY file in the bundle, not just\n * the app's own sources — workspace packages compiled under their own tsconfig\n * are silently recompiled under the app's. An app-level\n * `verbatimModuleSyntax: true` reaching package sources that never opted into\n * it strips the imports their decorators rely on, and the build succeeds only\n * to die at import time with `Class extends value undefined`.\n */\nconst FORBIDDEN_BUILD_OPTIONS = {\n tsconfig: \"points esbuild at a tsconfig file\",\n tsconfigRaw: \"inlines compiler options\",\n} as const;\n\n/**\n * Raised when the build config carries an esbuild option the framework owns.\n *\n * The typed config already omits these keys; this catches the forms the type\n * cannot see — an `as any` cast, or a plain `warlock.config.js`. Rejected\n * rather than deleted: dropping the key quietly would leave the author\n * believing a setting applied when it never did.\n */\nexport class ForbiddenBuildOptionError extends Error {\n public constructor(public readonly option: keyof typeof FORBIDDEN_BUILD_OPTIONS) {\n super(\n [\n `build.${option} is not a supported warlock build option.`,\n \"\",\n `Setting it ${FORBIDDEN_BUILD_OPTIONS[option]} for every file in the bundle,`,\n \"including workspace packages that were compiled under their own tsconfig.\",\n \"Options such as `verbatimModuleSyntax` then apply to sources that never\",\n \"opted into them, and the build succeeds but crashes at import time with\",\n \"`Class extends value undefined`.\",\n \"\",\n `Remove \\`${option}\\` from the \\`build\\` block of your warlock config. The builder`,\n \"already reads the app's tsconfig for the parts it needs (path aliases); to\",\n \"change how your own sources compile, edit that tsconfig.json instead.\",\n ].join(\"\\n\"),\n );\n\n this.name = \"ForbiddenBuildOptionError\";\n }\n}\n\n/**\n * Resolve the build config with framework defaults applied.\n *\n * Both the production builder and `warlock start` call this so they\n * agree on where the bundle lives — previously each had its own local\n * fallbacks and they drifted (`.warlock/production` vs `dist`),\n * letting `build` and `start` look at different paths.\n */\nexport function resolveBuildConfig(): ResolvedBuildConfig {\n // Normalised here rather than only in `defineConfig` because a project may\n // export a plain config object that never went through it.\n const userBuild = normalizeBuildConfig(warlockConfigManager.get(\"build\") ?? {});\n\n // Before the merge, so the option cannot reach the esbuild spread in\n // production-builder — which overrides framework defaults with user config.\n for (const option of Object.keys(FORBIDDEN_BUILD_OPTIONS) as Array<\n keyof typeof FORBIDDEN_BUILD_OPTIONS\n >) {\n if (option in userBuild) {\n throw new ForbiddenBuildOptionError(option);\n }\n }\n\n const defaults = defaultWarlockConfigurations.build!;\n const merged = { ...defaults, ...userBuild } as ResolvedBuildConfig;\n\n return {\n ...merged,\n routeRegistrationTimeoutMs: resolveRouteRegistrationTimeoutMs(merged.routeRegistrationTimeoutMs),\n entryPath: path.resolve(merged.outdir, merged.outFile),\n };\n}\n\nconst DEFAULT_ROUTE_REGISTRATION_TIMEOUT_MS = 30_000;\nconst ROUTE_REGISTRATION_TIMEOUT_ENV = \"WARLOCK_ROUTE_REGISTRATION_TIMEOUT_MS\";\n\nfunction resolveRouteRegistrationTimeoutMs(configured: unknown): number {\n const environment = process.env[ROUTE_REGISTRATION_TIMEOUT_ENV];\n const value = environment === undefined ? configured : environment;\n const source = environment === undefined ? \"build.routeRegistrationTimeoutMs\" : ROUTE_REGISTRATION_TIMEOUT_ENV;\n\n if (typeof value === \"number\" && Number.isFinite(value) && value > 0) return value;\n if (typeof value === \"string\" && value.trim() !== \"\") {\n const parsed = Number(value);\n if (Number.isFinite(parsed) && parsed > 0) return parsed;\n }\n\n console.warn(\n `Invalid ${source} value ${JSON.stringify(value)}; using ${DEFAULT_ROUTE_REGISTRATION_TIMEOUT_MS}ms.`,\n );\n return DEFAULT_ROUTE_REGISTRATION_TIMEOUT_MS;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyCA,MAAM,0BAA0B;CAC9B,UAAU;CACV,aAAa;AACf;;;;;;;;;AAUA,IAAa,4BAAb,cAA+C,MAAM;CACnD,AAAO,YAAY,AAAgB,QAA8C;EAC/E,MACE;GACE,SAAS,OAAO;GAChB;GACA,cAAc,wBAAwB,QAAQ;GAC9C;GACA;GACA;GACA;GACA;GACA,YAAY,OAAO;GACnB;GACA;EACF,CAAC,CAAC,KAAK,IAAI,CACb;EAfiC;EAiBjC,KAAK,OAAO;CACd;AACF;;;;;;;;;AAUA,SAAgB,qBAA0C;CAGxD,MAAM,YAAY,qBAAqB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC;CAI9E,KAAK,MAAM,UAAU,OAAO,KAAK,uBAAuB,GAGtD,IAAI,UAAU,WACZ,MAAM,IAAI,0BAA0B,MAAM;CAK9C,MAAM,SAAS;EAAE,GADA,6BAA6B;EAChB,GAAG;CAAU;CAE3C,OAAO;EACL,GAAG;EACH,4BAA4B,kCAAkC,OAAO,0BAA0B;EAC/F,WAAW,KAAK,QAAQ,OAAO,QAAQ,OAAO,OAAO;CACvD;AACF;AAEA,MAAM,wCAAwC;AAC9C,MAAM,iCAAiC;AAEvC,SAAS,kCAAkC,YAA6B;CACtE,MAAM,cAAc,QAAQ,IAAI;CAChC,MAAM,QAAQ,gBAAgB,SAAY,aAAa;CACvD,MAAM,SAAS,gBAAgB,SAAY,qCAAqC;CAEhF,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,QAAQ,GAAG,OAAO;CAC7E,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,IAAI;EACpD,MAAM,SAAS,OAAO,KAAK;EAC3B,IAAI,OAAO,SAAS,MAAM,KAAK,SAAS,GAAG,OAAO;CACpD;CAEA,QAAQ,KACN,WAAW,OAAO,SAAS,KAAK,UAAU,KAAK,EAAE,UAAU,sCAAsC,IACnG;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"resolve-build-config.mjs","names":[],"sources":["../../../../../../../../packages/core/src/production/resolve-build-config.ts"],"sourcesContent":["import path from \"path\";\nimport { defaultWarlockConfigurations } from \"../warlock-config/default-configurations\";\nimport { normalizeBuildConfig } from \"../warlock-config/normalize-build-config\";\nimport type { WarlockConfig } from \"../warlock-config/types\";\nimport { warlockConfigManager } from \"../warlock-config/warlock-config.manager\";\n\n/**\n * Keys the builder deletes before handing the options to esbuild — ours\n * (`singleBundle`, `esmShim`), which esbuild would reject as unknown, and\n * `banner`, which is re-merged and re-applied after the user spread.\n *\n * They are optional here for a concrete reason: `Required<…>` makes `delete`\n * a type error (TS2790). Naming exactly these three says which keys are\n * removable, rather than casting at each `delete` — a cast there would also\n * hide a genuine mistake.\n *\n * `outFile` and `entryPath` stay REQUIRED even though the builder deletes\n * them too. They are always present after resolution and callers depend on\n * that; widening them to `string | undefined` pushed the lie downstream into\n * `start-production.command.ts`, which then could not trust its own config.\n */\ntype BuilderStrippedKeys = \"singleBundle\" | \"esmShim\" | \"banner\" | \"routeRegistrationTimeoutMs\";\n\nexport type ResolvedBuildConfig = Required<\n Omit<NonNullable<WarlockConfig[\"build\"]>, \"outDirectory\" | BuilderStrippedKeys>\n> &\n Partial<Pick<NonNullable<WarlockConfig[\"build\"]>, BuilderStrippedKeys>> & {\n /** Absolute path to the bundled entry file (`{outdir}/{outFile}`) */\n entryPath: string;\n };\n\n/**\n * esbuild options the build config may not carry, and why.\n *\n * Both apply the named compiler options to EVERY file in the bundle, not just\n * the app's own sources — workspace packages compiled under their own tsconfig\n * are silently recompiled under the app's. An app-level\n * `verbatimModuleSyntax: true` reaching package sources that never opted into\n * it strips the imports their decorators rely on, and the build succeeds only\n * to die at import time with `Class extends value undefined`.\n */\nconst FORBIDDEN_BUILD_OPTIONS = {\n tsconfig: \"points esbuild at a tsconfig file\",\n tsconfigRaw: \"inlines compiler options\",\n} as const;\n\n/**\n * Raised when the build config carries an esbuild option the framework owns.\n *\n * The typed config already omits these keys; this catches the forms the type\n * cannot see — an `as any` cast, or a plain `warlock.config.js`. Rejected\n * rather than deleted: dropping the key quietly would leave the author\n * believing a setting applied when it never did.\n */\nexport class ForbiddenBuildOptionError extends Error {\n public constructor(public readonly option: keyof typeof FORBIDDEN_BUILD_OPTIONS) {\n super(\n [\n `build.${option} is not a supported warlock build option.`,\n \"\",\n `Setting it ${FORBIDDEN_BUILD_OPTIONS[option]} for every file in the bundle,`,\n \"including workspace packages that were compiled under their own tsconfig.\",\n \"Options such as `verbatimModuleSyntax` then apply to sources that never\",\n \"opted into them, and the build succeeds but crashes at import time with\",\n \"`Class extends value undefined`.\",\n \"\",\n `Remove \\`${option}\\` from the \\`build\\` block of your warlock config. The builder`,\n \"already reads the app's tsconfig for the parts it needs (path aliases); to\",\n \"change how your own sources compile, edit that tsconfig.json instead.\",\n ].join(\"\\n\"),\n );\n\n this.name = \"ForbiddenBuildOptionError\";\n }\n}\n\n/**\n * Resolve the build config with framework defaults applied.\n *\n * Both the production builder and `warlock start` call this so they\n * agree on where the bundle lives — previously each had its own local\n * fallbacks and they drifted (`.warlock/production` vs `dist`),\n * letting `build` and `start` look at different paths.\n */\nexport function resolveBuildConfig(): ResolvedBuildConfig {\n // Normalised here rather than only in `defineConfig` because a project may\n // export a plain config object that never went through it.\n const userBuild = normalizeBuildConfig(warlockConfigManager.get(\"build\") ?? {});\n\n // Before the merge, so the option cannot reach the esbuild spread in\n // production-builder — which overrides framework defaults with user config.\n for (const option of Object.keys(FORBIDDEN_BUILD_OPTIONS) as Array<\n keyof typeof FORBIDDEN_BUILD_OPTIONS\n >) {\n if (option in userBuild) {\n throw new ForbiddenBuildOptionError(option);\n }\n }\n\n const defaults = defaultWarlockConfigurations.build!;\n const merged = { ...defaults, ...userBuild } as ResolvedBuildConfig;\n\n return {\n ...merged,\n routeRegistrationTimeoutMs: resolveRouteRegistrationTimeoutMs(merged.routeRegistrationTimeoutMs),\n entryPath: path.resolve(merged.outdir, merged.outFile),\n };\n}\n\nconst DEFAULT_ROUTE_REGISTRATION_TIMEOUT_MS = 30_000;\nconst ROUTE_REGISTRATION_TIMEOUT_ENV = \"WARLOCK_ROUTE_REGISTRATION_TIMEOUT_MS\";\n\nfunction resolveRouteRegistrationTimeoutMs(configured: unknown): number {\n const environment = process.env[ROUTE_REGISTRATION_TIMEOUT_ENV];\n const value = environment === undefined ? configured : environment;\n const source = environment === undefined ? \"build.routeRegistrationTimeoutMs\" : ROUTE_REGISTRATION_TIMEOUT_ENV;\n\n if (typeof value === \"number\" && Number.isFinite(value) && value > 0) return value;\n if (typeof value === \"string\" && value.trim() !== \"\") {\n const parsed = Number(value);\n if (Number.isFinite(parsed) && parsed > 0) return parsed;\n }\n\n console.warn(\n `Invalid ${source} value ${JSON.stringify(value)}; using ${DEFAULT_ROUTE_REGISTRATION_TIMEOUT_MS}ms.`,\n );\n return DEFAULT_ROUTE_REGISTRATION_TIMEOUT_MS;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyCA,MAAM,0BAA0B;CAC9B,UAAU;CACV,aAAa;AACf;;;;;;;;;AAUA,IAAa,4BAAb,cAA+C,MAAM;CACnD,AAAO,YAAY,AAAgB,QAA8C;EAC/E,MACE;GACE,SAAS,OAAO;GAChB;GACA,cAAc,wBAAwB,QAAQ;GAC9C;GACA;GACA;GACA;GACA;GACA,YAAY,OAAO;GACnB;GACA;EACF,CAAC,CAAC,KAAK,IAAI,CACb;EAfiC;EAiBjC,KAAK,OAAO;CACd;AACF;;;;;;;;;AAUA,SAAgB,qBAA0C;CAGxD,MAAM,YAAY,qBAAqB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC;CAI9E,KAAK,MAAM,UAAU,OAAO,KAAK,uBAAuB,GAGtD,IAAI,UAAU,WACZ,MAAM,IAAI,0BAA0B,MAAM;CAK9C,MAAM,SAAS;EAAE,GADA,6BAA6B;EAChB,GAAG;CAAU;CAE3C,OAAO;EACL,GAAG;EACH,4BAA4B,kCAAkC,OAAO,0BAA0B;EAC/F,WAAW,KAAK,QAAQ,OAAO,QAAQ,OAAO,OAAO;CACvD;AACF;AAEA,MAAM,wCAAwC;AAC9C,MAAM,iCAAiC;AAEvC,SAAS,kCAAkC,YAA6B;CACtE,MAAM,cAAc,QAAQ,IAAI;CAChC,MAAM,QAAQ,gBAAgB,SAAY,aAAa;CACvD,MAAM,SAAS,gBAAgB,SAAY,qCAAqC;CAEhF,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,QAAQ,GAAG,OAAO;CAC7E,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,IAAI;EACpD,MAAM,SAAS,OAAO,KAAK;EAC3B,IAAI,OAAO,SAAS,MAAM,KAAK,SAAS,GAAG,OAAO;CACpD;CAEA,QAAQ,KACN,WAAW,OAAO,SAAS,KAAK,UAAU,KAAK,EAAE,UAAU,sCAAsC,IACnG;CACA,OAAO;AACT"}
@@ -11,7 +11,7 @@ import { OPENAPI_RESULT_MESSAGE, parseOpenApiChildOptions } from "../openapi/ope
11
11
  import { buildOpenApiForChild } from "../openapi/openapi-child-output.mjs";
12
12
  import { fileExistsAsync } from "@warlock.js/fs";
13
13
 
14
- //#region ../core/src/production/route-registration-child.ts
14
+ //#region ../../packages/core/src/production/route-registration-child.ts
15
15
  const PROTOCOL_VERSION = 1;
16
16
  process.once("message", async (message) => {
17
17
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"route-registration-child.mjs","names":[],"sources":["../../../../../../../core/src/production/route-registration-child.ts"],"sourcesContent":["import { fileExistsAsync } from \"@warlock.js/fs\";\nimport { Application } from \"../application\";\nimport { bootstrap } from \"../bootstrap\";\nimport { loadConfigFiles } from \"../config/load-config-files\";\nimport { filesOrchestrator } from \"../dev-server/files-orchestrator\";\nimport { buildOpenApiForChild } from \"../openapi/openapi-child-output\";\nimport {\n OPENAPI_PROTOCOL_VERSION,\n OPENAPI_RESULT_MESSAGE,\n parseOpenApiChildOptions,\n type OpenApiChildRequestOptions,\n} from \"../openapi/openapi-protocol\";\nimport { collectNamedApiRoutesWithResponses } from \"../router/named-api-routes-with-responses\";\nimport { loadEnvironmentFiles } from \"../utils/load-environment\";\nimport { appPath } from \"../utils/paths\";\nimport type { Environment, RuntimeStrategy } from \"../utils/environment\";\nimport { warlockConfigManager } from \"../warlock-config/warlock-config.manager\";\n\nconst PROTOCOL_VERSION = 1;\n\ntype RequestMessage = Readonly<{\n version: typeof PROTOCOL_VERSION;\n cwd: string;\n environment?: Environment;\n runtimeStrategy?: RuntimeStrategy;\n /**\n * Present for `warlock generate.openapi`: build the OpenAPI document in this process and\n * send it instead of the route snapshot. The loading above is identical for both.\n */\n openapi?: OpenApiChildRequestOptions;\n}>;\n\nprocess.once(\"message\", async (message: unknown) => {\n try {\n const request = validateRequest(message);\n process.chdir(request.cwd);\n\n if (request.environment) Application.setEnvironment(request.environment);\n if (request.runtimeStrategy) Application.setRuntimeStrategy(request.runtimeStrategy);\n\n await loadEnvironmentFiles();\n await warlockConfigManager.load();\n await filesOrchestrator.init();\n await bootstrap();\n\n if (await fileExistsAsync(appPath(\"bootstrap.ts\"))) {\n await filesOrchestrator.load(\"src/app/bootstrap.ts\");\n }\n\n await filesOrchestrator.initializeAll();\n filesOrchestrator.specialFilesCollector.collect(filesOrchestrator.getFiles());\n await loadConfigFiles(true);\n\n for (const file of filesOrchestrator.files.values()) {\n if (file.type === \"model\") {\n await sendProgress(file.relativePath);\n await filesOrchestrator.moduleLoader.loadModule(file, \"model\");\n }\n }\n\n await filesOrchestrator.moduleLoader.loadAll({ onBeforeLoad: (file) => sendProgress(file.relativePath) });\n\n if (request.openapi) {\n const { document, warnings } = await buildOpenApiForChild({\n cwd: request.cwd,\n files: filesOrchestrator.files.values(),\n request: request.openapi,\n onWarn: (warning) => {\n process.stderr.write(`[warlock] ${warning}\\n`);\n },\n });\n\n await sendAndExit({\n type: OPENAPI_RESULT_MESSAGE,\n result: { version: OPENAPI_PROTOCOL_VERSION, document, warnings },\n });\n }\n\n const routes = await collectNamedApiRoutesWithResponses({\n appRoot: request.cwd,\n files: filesOrchestrator.files.values(),\n onWarn: (warning) => {\n process.stderr.write(`[warlock] ${warning}\\n`);\n },\n });\n\n await sendAndExit({\n type: \"route-registration:snapshot\",\n snapshot: { version: PROTOCOL_VERSION, routes },\n });\n } catch (error) {\n const message = error instanceof Error ? error.stack || error.message : String(error);\n await sendAndExit({ type: \"route-registration:error\", message }, 1);\n }\n});\n\nfunction validateRequest(value: unknown): RequestMessage {\n if (\n typeof value !== \"object\" ||\n value === null ||\n (value as { version?: unknown }).version !== PROTOCOL_VERSION ||\n typeof (value as { cwd?: unknown }).cwd !== \"string\" ||\n !isOptionalEnvironment((value as { environment?: unknown }).environment) ||\n !isOptionalRuntimeStrategy((value as { runtimeStrategy?: unknown }).runtimeStrategy)\n ) {\n throw new Error(\"Route registration child received an invalid protocol request.\");\n }\n\n const openapi = (value as { openapi?: unknown }).openapi;\n\n if (openapi !== undefined) {\n parseOpenApiChildOptions(openapi);\n }\n\n return value as RequestMessage;\n}\n\nfunction isOptionalEnvironment(value: unknown): value is Environment | undefined {\n return (\n value === undefined || value === \"development\" || value === \"production\" || value === \"test\"\n );\n}\n\nfunction isOptionalRuntimeStrategy(value: unknown): value is RuntimeStrategy | undefined {\n return value === undefined || value === \"development\" || value === \"production\";\n}\n\nasync function sendAndExit(message: unknown, exitCode = 0): Promise<never> {\n if (typeof process.send !== \"function\") {\n throw new Error(\"Route registration child requires an IPC channel.\");\n }\n\n await new Promise<void>((resolve, reject) => {\n process.send!(message, (error) => (error ? reject(error) : resolve()));\n });\n process.disconnect?.();\n process.exit(exitCode);\n}\n\nasync function sendProgress(module: string): Promise<void> {\n if (typeof process.send !== \"function\") return;\n await new Promise<void>((resolve, reject) => {\n process.send!({ type: \"route-registration:progress\", module }, (error) =>\n error ? reject(error) : resolve(),\n );\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"route-registration-child.mjs","names":[],"sources":["../../../../../../../../packages/core/src/production/route-registration-child.ts"],"sourcesContent":["import { fileExistsAsync } from \"@warlock.js/fs\";\nimport { Application } from \"../application\";\nimport { bootstrap } from \"../bootstrap\";\nimport { loadConfigFiles } from \"../config/load-config-files\";\nimport { filesOrchestrator } from \"../dev-server/files-orchestrator\";\nimport { buildOpenApiForChild } from \"../openapi/openapi-child-output\";\nimport {\n OPENAPI_PROTOCOL_VERSION,\n OPENAPI_RESULT_MESSAGE,\n parseOpenApiChildOptions,\n type OpenApiChildRequestOptions,\n} from \"../openapi/openapi-protocol\";\nimport { collectNamedApiRoutesWithResponses } from \"../router/named-api-routes-with-responses\";\nimport { loadEnvironmentFiles } from \"../utils/load-environment\";\nimport { appPath } from \"../utils/paths\";\nimport type { Environment, RuntimeStrategy } from \"../utils/environment\";\nimport { warlockConfigManager } from \"../warlock-config/warlock-config.manager\";\n\nconst PROTOCOL_VERSION = 1;\n\ntype RequestMessage = Readonly<{\n version: typeof PROTOCOL_VERSION;\n cwd: string;\n environment?: Environment;\n runtimeStrategy?: RuntimeStrategy;\n /**\n * Present for `warlock generate.openapi`: build the OpenAPI document in this process and\n * send it instead of the route snapshot. The loading above is identical for both.\n */\n openapi?: OpenApiChildRequestOptions;\n}>;\n\nprocess.once(\"message\", async (message: unknown) => {\n try {\n const request = validateRequest(message);\n process.chdir(request.cwd);\n\n if (request.environment) Application.setEnvironment(request.environment);\n if (request.runtimeStrategy) Application.setRuntimeStrategy(request.runtimeStrategy);\n\n await loadEnvironmentFiles();\n await warlockConfigManager.load();\n await filesOrchestrator.init();\n await bootstrap();\n\n if (await fileExistsAsync(appPath(\"bootstrap.ts\"))) {\n await filesOrchestrator.load(\"src/app/bootstrap.ts\");\n }\n\n await filesOrchestrator.initializeAll();\n filesOrchestrator.specialFilesCollector.collect(filesOrchestrator.getFiles());\n await loadConfigFiles(true);\n\n for (const file of filesOrchestrator.files.values()) {\n if (file.type === \"model\") {\n await sendProgress(file.relativePath);\n await filesOrchestrator.moduleLoader.loadModule(file, \"model\");\n }\n }\n\n await filesOrchestrator.moduleLoader.loadAll({ onBeforeLoad: (file) => sendProgress(file.relativePath) });\n\n if (request.openapi) {\n const { document, warnings } = await buildOpenApiForChild({\n cwd: request.cwd,\n files: filesOrchestrator.files.values(),\n request: request.openapi,\n onWarn: (warning) => {\n process.stderr.write(`[warlock] ${warning}\\n`);\n },\n });\n\n await sendAndExit({\n type: OPENAPI_RESULT_MESSAGE,\n result: { version: OPENAPI_PROTOCOL_VERSION, document, warnings },\n });\n }\n\n const routes = await collectNamedApiRoutesWithResponses({\n appRoot: request.cwd,\n files: filesOrchestrator.files.values(),\n onWarn: (warning) => {\n process.stderr.write(`[warlock] ${warning}\\n`);\n },\n });\n\n await sendAndExit({\n type: \"route-registration:snapshot\",\n snapshot: { version: PROTOCOL_VERSION, routes },\n });\n } catch (error) {\n const message = error instanceof Error ? error.stack || error.message : String(error);\n await sendAndExit({ type: \"route-registration:error\", message }, 1);\n }\n});\n\nfunction validateRequest(value: unknown): RequestMessage {\n if (\n typeof value !== \"object\" ||\n value === null ||\n (value as { version?: unknown }).version !== PROTOCOL_VERSION ||\n typeof (value as { cwd?: unknown }).cwd !== \"string\" ||\n !isOptionalEnvironment((value as { environment?: unknown }).environment) ||\n !isOptionalRuntimeStrategy((value as { runtimeStrategy?: unknown }).runtimeStrategy)\n ) {\n throw new Error(\"Route registration child received an invalid protocol request.\");\n }\n\n const openapi = (value as { openapi?: unknown }).openapi;\n\n if (openapi !== undefined) {\n parseOpenApiChildOptions(openapi);\n }\n\n return value as RequestMessage;\n}\n\nfunction isOptionalEnvironment(value: unknown): value is Environment | undefined {\n return (\n value === undefined || value === \"development\" || value === \"production\" || value === \"test\"\n );\n}\n\nfunction isOptionalRuntimeStrategy(value: unknown): value is RuntimeStrategy | undefined {\n return value === undefined || value === \"development\" || value === \"production\";\n}\n\nasync function sendAndExit(message: unknown, exitCode = 0): Promise<never> {\n if (typeof process.send !== \"function\") {\n throw new Error(\"Route registration child requires an IPC channel.\");\n }\n\n await new Promise<void>((resolve, reject) => {\n process.send!(message, (error) => (error ? reject(error) : resolve()));\n });\n process.disconnect?.();\n process.exit(exitCode);\n}\n\nasync function sendProgress(module: string): Promise<void> {\n if (typeof process.send !== \"function\") return;\n await new Promise<void>((resolve, reject) => {\n process.send!({ type: \"route-registration:progress\", module }, (error) =>\n error ? reject(error) : resolve(),\n );\n });\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { runRegistrationChild } from "./registration-child-runner.mjs";
2
2
 
3
- //#region ../core/src/production/route-registration-snapshot.ts
3
+ //#region ../../packages/core/src/production/route-registration-snapshot.ts
4
4
  const PROTOCOL_VERSION = 1;
5
5
  /**
6
6
  * Collect named application API routes in a fresh process.
@@ -1 +1 @@
1
- {"version":3,"file":"route-registration-snapshot.mjs","names":[],"sources":["../../../../../../../core/src/production/route-registration-snapshot.ts"],"sourcesContent":["import type { NamedApiRoute, RequestMethod } from \"../router/types\";\nimport type { Environment, RuntimeStrategy } from \"../utils/environment\";\nimport {\n runRegistrationChild,\n type RegistrationChildForker,\n type RegistrationChildProcess,\n} from \"./registration-child-runner\";\n\nconst PROTOCOL_VERSION = 1;\n\nexport type RouteRegistrationSnapshot = Readonly<{\n version: typeof PROTOCOL_VERSION;\n routes: readonly NamedApiRoute[];\n}>;\n\nexport type RouteRegistrationChildRequest = Readonly<{\n version: typeof PROTOCOL_VERSION;\n cwd: string;\n environment?: Environment;\n runtimeStrategy?: RuntimeStrategy;\n}>;\n\nexport type RouteRegistrationChildProcess = RegistrationChildProcess;\n\nexport type RouteRegistrationSnapshotOptions = Readonly<{\n cwd?: string;\n environment?: Environment;\n runtimeStrategy?: RuntimeStrategy;\n timeoutMs?: number;\n childEntry?: string;\n forkProcess?: RegistrationChildForker;\n}>;\n\n/**\n * Collect named application API routes in a fresh process.\n *\n * The child imports application registration modules but deliberately does not\n * register, boot, or start connectors. Application module top-level code can\n * still have arbitrary user-owned side effects; this boundary is framework-only.\n */\nexport function collectRouteRegistrationSnapshot(\n options: RouteRegistrationSnapshotOptions = {},\n): Promise<RouteRegistrationSnapshot> {\n const cwd = options.cwd ?? process.cwd();\n\n return runRegistrationChild<RouteRegistrationSnapshot>({\n cwd,\n timeoutMs: options.timeoutMs,\n childEntry: options.childEntry,\n forkProcess: options.forkProcess,\n request: {\n version: PROTOCOL_VERSION,\n cwd,\n environment: options.environment,\n runtimeStrategy: options.runtimeStrategy,\n } satisfies RouteRegistrationChildRequest,\n resultMessageType: \"route-registration:snapshot\",\n resultNoun: \"snapshot\",\n readResult: (message) => validateSnapshot(message.snapshot),\n });\n}\n\nfunction validateSnapshot(value: unknown): RouteRegistrationSnapshot {\n if (!isRecord(value) || value.version !== PROTOCOL_VERSION || !Array.isArray(value.routes)) {\n throw new Error(\"Route registration child sent an invalid snapshot protocol payload.\");\n }\n\n const routes = value.routes.map((route) => {\n if (\n !isRecord(route) ||\n typeof route.name !== \"string\" ||\n typeof route.path !== \"string\" ||\n !isRequestMethod(route.method)\n ) {\n throw new Error(\"Route registration child sent an invalid route record.\");\n }\n\n const response = route.response;\n const allowedKeys = response === undefined ? 3 : 4;\n\n if (\n Object.keys(route).length !== allowedKeys ||\n (response !== undefined && !isResponseTypeRecord(response))\n ) {\n throw new Error(\"Route registration child sent a route record with non-browser-safe fields.\");\n }\n\n const base = {\n name: route.name,\n path: route.path,\n method: normalizeRequestMethod(route.method),\n };\n\n return Object.freeze(\n response === undefined ? base : { ...base, response: Object.freeze({ ...response }) },\n );\n });\n\n return Object.freeze({ version: PROTOCOL_VERSION, routes: Object.freeze(routes) });\n}\n\nfunction isResponseTypeRecord(value: unknown): value is Record<string, string> {\n return isRecord(value) && Object.values(value).every((entry) => typeof entry === \"string\");\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isRequestMethod(value: unknown): value is RequestMethod {\n return (\n typeof value === \"string\" &&\n [\"get\", \"post\", \"put\", \"delete\", \"patch\", \"options\", \"head\", \"all\"].includes(\n value.toLowerCase(),\n )\n );\n}\n\nfunction normalizeRequestMethod(value: RequestMethod | string): RequestMethod {\n return value.toLowerCase() === \"all\" ? \"all\" : (value.toUpperCase() as RequestMethod);\n}\n\n"],"mappings":";;;AAQA,MAAM,mBAAmB;;;;;;;;AAgCzB,SAAgB,iCACd,UAA4C,CAAC,GACT;CACpC,MAAM,MAAM,QAAQ,OAAO,QAAQ,IAAI;CAEvC,OAAO,qBAAgD;EACrD;EACA,WAAW,QAAQ;EACnB,YAAY,QAAQ;EACpB,aAAa,QAAQ;EACrB,SAAS;GACP,SAAS;GACT;GACA,aAAa,QAAQ;GACrB,iBAAiB,QAAQ;EAC3B;EACA,mBAAmB;EACnB,YAAY;EACZ,aAAa,YAAY,iBAAiB,QAAQ,QAAQ;CAC5D,CAAC;AACH;AAEA,SAAS,iBAAiB,OAA2C;CACnE,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,YAAY,oBAAoB,CAAC,MAAM,QAAQ,MAAM,MAAM,GACvF,MAAM,IAAI,MAAM,qEAAqE;CAGvF,MAAM,SAAS,MAAM,OAAO,KAAK,UAAU;EACzC,IACE,CAAC,SAAS,KAAK,KACf,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,SAAS,YACtB,CAAC,gBAAgB,MAAM,MAAM,GAE7B,MAAM,IAAI,MAAM,wDAAwD;EAG1E,MAAM,WAAW,MAAM;EACvB,MAAM,cAAc,aAAa,SAAY,IAAI;EAEjD,IACE,OAAO,KAAK,KAAK,CAAC,CAAC,WAAW,eAC7B,aAAa,UAAa,CAAC,qBAAqB,QAAQ,GAEzD,MAAM,IAAI,MAAM,4EAA4E;EAG9F,MAAM,OAAO;GACX,MAAM,MAAM;GACZ,MAAM,MAAM;GACZ,QAAQ,uBAAuB,MAAM,MAAM;EAC7C;EAEA,OAAO,OAAO,OACZ,aAAa,SAAY,OAAO;GAAE,GAAG;GAAM,UAAU,OAAO,OAAO,EAAE,GAAG,SAAS,CAAC;EAAE,CACtF;CACF,CAAC;CAED,OAAO,OAAO,OAAO;EAAE,SAAS;EAAkB,QAAQ,OAAO,OAAO,MAAM;CAAE,CAAC;AACnF;AAEA,SAAS,qBAAqB,OAAiD;CAC7E,OAAO,SAAS,KAAK,KAAK,OAAO,OAAO,KAAK,CAAC,CAAC,OAAO,UAAU,OAAO,UAAU,QAAQ;AAC3F;AAEA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,gBAAgB,OAAwC;CAC/D,OACE,OAAO,UAAU,YACjB;EAAC;EAAO;EAAQ;EAAO;EAAU;EAAS;EAAW;EAAQ;CAAK,CAAC,CAAC,SAClE,MAAM,YAAY,CACpB;AAEJ;AAEA,SAAS,uBAAuB,OAA8C;CAC5E,OAAO,MAAM,YAAY,MAAM,QAAQ,QAAS,MAAM,YAAY;AACpE"}
1
+ {"version":3,"file":"route-registration-snapshot.mjs","names":[],"sources":["../../../../../../../../packages/core/src/production/route-registration-snapshot.ts"],"sourcesContent":["import type { NamedApiRoute, RequestMethod } from \"../router/types\";\nimport type { Environment, RuntimeStrategy } from \"../utils/environment\";\nimport {\n runRegistrationChild,\n type RegistrationChildForker,\n type RegistrationChildProcess,\n} from \"./registration-child-runner\";\n\nconst PROTOCOL_VERSION = 1;\n\nexport type RouteRegistrationSnapshot = Readonly<{\n version: typeof PROTOCOL_VERSION;\n routes: readonly NamedApiRoute[];\n}>;\n\nexport type RouteRegistrationChildRequest = Readonly<{\n version: typeof PROTOCOL_VERSION;\n cwd: string;\n environment?: Environment;\n runtimeStrategy?: RuntimeStrategy;\n}>;\n\nexport type RouteRegistrationChildProcess = RegistrationChildProcess;\n\nexport type RouteRegistrationSnapshotOptions = Readonly<{\n cwd?: string;\n environment?: Environment;\n runtimeStrategy?: RuntimeStrategy;\n timeoutMs?: number;\n childEntry?: string;\n forkProcess?: RegistrationChildForker;\n}>;\n\n/**\n * Collect named application API routes in a fresh process.\n *\n * The child imports application registration modules but deliberately does not\n * register, boot, or start connectors. Application module top-level code can\n * still have arbitrary user-owned side effects; this boundary is framework-only.\n */\nexport function collectRouteRegistrationSnapshot(\n options: RouteRegistrationSnapshotOptions = {},\n): Promise<RouteRegistrationSnapshot> {\n const cwd = options.cwd ?? process.cwd();\n\n return runRegistrationChild<RouteRegistrationSnapshot>({\n cwd,\n timeoutMs: options.timeoutMs,\n childEntry: options.childEntry,\n forkProcess: options.forkProcess,\n request: {\n version: PROTOCOL_VERSION,\n cwd,\n environment: options.environment,\n runtimeStrategy: options.runtimeStrategy,\n } satisfies RouteRegistrationChildRequest,\n resultMessageType: \"route-registration:snapshot\",\n resultNoun: \"snapshot\",\n readResult: (message) => validateSnapshot(message.snapshot),\n });\n}\n\nfunction validateSnapshot(value: unknown): RouteRegistrationSnapshot {\n if (!isRecord(value) || value.version !== PROTOCOL_VERSION || !Array.isArray(value.routes)) {\n throw new Error(\"Route registration child sent an invalid snapshot protocol payload.\");\n }\n\n const routes = value.routes.map((route) => {\n if (\n !isRecord(route) ||\n typeof route.name !== \"string\" ||\n typeof route.path !== \"string\" ||\n !isRequestMethod(route.method)\n ) {\n throw new Error(\"Route registration child sent an invalid route record.\");\n }\n\n const response = route.response;\n const allowedKeys = response === undefined ? 3 : 4;\n\n if (\n Object.keys(route).length !== allowedKeys ||\n (response !== undefined && !isResponseTypeRecord(response))\n ) {\n throw new Error(\"Route registration child sent a route record with non-browser-safe fields.\");\n }\n\n const base = {\n name: route.name,\n path: route.path,\n method: normalizeRequestMethod(route.method),\n };\n\n return Object.freeze(\n response === undefined ? base : { ...base, response: Object.freeze({ ...response }) },\n );\n });\n\n return Object.freeze({ version: PROTOCOL_VERSION, routes: Object.freeze(routes) });\n}\n\nfunction isResponseTypeRecord(value: unknown): value is Record<string, string> {\n return isRecord(value) && Object.values(value).every((entry) => typeof entry === \"string\");\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isRequestMethod(value: unknown): value is RequestMethod {\n return (\n typeof value === \"string\" &&\n [\"get\", \"post\", \"put\", \"delete\", \"patch\", \"options\", \"head\", \"all\"].includes(\n value.toLowerCase(),\n )\n );\n}\n\nfunction normalizeRequestMethod(value: RequestMethod | string): RequestMethod {\n return value.toLowerCase() === \"all\" ? \"all\" : (value.toUpperCase() as RequestMethod);\n}\n\n"],"mappings":";;;AAQA,MAAM,mBAAmB;;;;;;;;AAgCzB,SAAgB,iCACd,UAA4C,CAAC,GACT;CACpC,MAAM,MAAM,QAAQ,OAAO,QAAQ,IAAI;CAEvC,OAAO,qBAAgD;EACrD;EACA,WAAW,QAAQ;EACnB,YAAY,QAAQ;EACpB,aAAa,QAAQ;EACrB,SAAS;GACP,SAAS;GACT;GACA,aAAa,QAAQ;GACrB,iBAAiB,QAAQ;EAC3B;EACA,mBAAmB;EACnB,YAAY;EACZ,aAAa,YAAY,iBAAiB,QAAQ,QAAQ;CAC5D,CAAC;AACH;AAEA,SAAS,iBAAiB,OAA2C;CACnE,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,YAAY,oBAAoB,CAAC,MAAM,QAAQ,MAAM,MAAM,GACvF,MAAM,IAAI,MAAM,qEAAqE;CAGvF,MAAM,SAAS,MAAM,OAAO,KAAK,UAAU;EACzC,IACE,CAAC,SAAS,KAAK,KACf,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,SAAS,YACtB,CAAC,gBAAgB,MAAM,MAAM,GAE7B,MAAM,IAAI,MAAM,wDAAwD;EAG1E,MAAM,WAAW,MAAM;EACvB,MAAM,cAAc,aAAa,SAAY,IAAI;EAEjD,IACE,OAAO,KAAK,KAAK,CAAC,CAAC,WAAW,eAC7B,aAAa,UAAa,CAAC,qBAAqB,QAAQ,GAEzD,MAAM,IAAI,MAAM,4EAA4E;EAG9F,MAAM,OAAO;GACX,MAAM,MAAM;GACZ,MAAM,MAAM;GACZ,QAAQ,uBAAuB,MAAM,MAAM;EAC7C;EAEA,OAAO,OAAO,OACZ,aAAa,SAAY,OAAO;GAAE,GAAG;GAAM,UAAU,OAAO,OAAO,EAAE,GAAG,SAAS,CAAC;EAAE,CACtF;CACF,CAAC;CAED,OAAO,OAAO,OAAO;EAAE,SAAS;EAAkB,QAAQ,OAAO,OAAO,MAAM;CAAE,CAAC;AACnF;AAEA,SAAS,qBAAqB,OAAiD;CAC7E,OAAO,SAAS,KAAK,KAAK,OAAO,OAAO,KAAK,CAAC,CAAC,OAAO,UAAU,OAAO,UAAU,QAAQ;AAC3F;AAEA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,gBAAgB,OAAwC;CAC/D,OACE,OAAO,UAAU,YACjB;EAAC;EAAO;EAAQ;EAAO;EAAU;EAAS;EAAW;EAAQ;CAAK,CAAC,CAAC,SAClE,MAAM,YAAY,CACpB;AAEJ;AAEA,SAAS,uBAAuB,OAA8C;CAC5E,OAAO,MAAM,YAAY,MAAM,QAAQ,QAAS,MAAM,YAAY;AACpE"}
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
 
3
- //#region ../core/src/production/tsconfig-path-aliases.ts
3
+ //#region ../../packages/core/src/production/tsconfig-path-aliases.ts
4
4
  /**
5
5
  * Turn a tsconfig `paths` map into the WILDCARD entries only, resolved
6
6
  * against `baseUrl`. Exact entries are excluded: esbuild's own `alias`
@@ -1 +1 @@
1
- {"version":3,"file":"tsconfig-path-aliases.mjs","names":[],"sources":["../../../../../../../core/src/production/tsconfig-path-aliases.ts"],"sourcesContent":["import path from \"node:path\";\nimport type { Plugin } from \"esbuild\";\n\nexport type WildcardPathAlias = Readonly<{\n /** The literal text before the `*` — `app/` for `\"app/*\"`. */\n prefix: string;\n /** The literal text after the `*`. Almost always empty. */\n suffix: string;\n /** The `paths` targets, each still carrying its own `*`, resolved against `baseUrl`. */\n targets: readonly string[];\n}>;\n\n/**\n * Turn a tsconfig `paths` map into the WILDCARD entries only, resolved\n * against `baseUrl`. Exact entries are excluded: esbuild's own `alias`\n * option handles those, and it is the better mechanism where it applies.\n */\nexport function collectWildcardPathAliases(\n paths: Record<string, string[] | undefined>,\n baseUrl: string,\n): WildcardPathAlias[] {\n const aliases: WildcardPathAlias[] = [];\n\n for (const [from, targets] of Object.entries(paths)) {\n if (!Array.isArray(targets) || targets.length === 0) continue;\n\n const star = from.indexOf(\"*\");\n if (star === -1) continue;\n\n aliases.push({\n prefix: from.slice(0, star),\n suffix: from.slice(star + 1),\n targets: targets.map((target) => path.resolve(baseUrl, target)),\n });\n }\n\n // Longest prefix first, which is what TypeScript itself does: with both\n // `app/*` and `app/users/*` declared, the more specific one has to be tried\n // first or it can never match.\n return aliases.sort((a, b) => b.prefix.length - a.prefix.length);\n}\n\n/**\n * The substitution TypeScript performs for one `paths` entry: whatever the\n * `*` matched, spliced into each target's own `*`.\n */\nexport function substituteWildcard(\n alias: WildcardPathAlias,\n specifier: string,\n): string[] | undefined {\n if (!specifier.startsWith(alias.prefix)) return undefined;\n if (alias.suffix && !specifier.endsWith(alias.suffix)) return undefined;\n\n const matched = specifier.slice(\n alias.prefix.length,\n alias.suffix ? specifier.length - alias.suffix.length : undefined,\n );\n\n if (!matched) return undefined;\n\n return alias.targets.map((target) => target.replace(\"*\", matched));\n}\n\n/**\n * Resolve the tsconfig `paths` entries that esbuild's `alias` option cannot\n * express — the WILDCARD ones.\n *\n * **The defect.** `buildAliasMapFromTsconfig` skips any key ending in `/*`,\n * because esbuild's `alias` takes exact package names and nothing else. That\n * is a correct statement about `alias` and it left the wildcards handled by\n * nobody: `app/*` and `web/*` are how this app's own source refers to itself\n * (`import { User } from \"app/users/models/user.model\"`), and under\n * `packages: \"external\"` every one of those survived into the bundle as a\n * bare specifier. Node then looked for a PACKAGE called `app`:\n *\n * ```\n * Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'app' imported from …/dist/app.js\n * ```\n *\n * The build reported success; the failure waited until `warlock start`.\n *\n * **The resolution is delegated, not reimplemented.** This plugin performs\n * only the substitution TypeScript defines — splice what `*` matched into the\n * target — and hands the resulting ABSOLUTE path straight back to esbuild\n * through `build.resolve`. Extension probing, `index` files, `exports` maps\n * and directory handling stay esbuild's, so a path alias resolves exactly as\n * the same file would have resolved through a relative import. A candidate\n * that does not resolve is reported as esbuild's own error rather than\n * quietly falling through to the next candidate and then to \"external\",\n * which is how this became a runtime failure in the first place.\n */\nexport function tsconfigPathAliases(options: {\n baseUrl: string;\n paths: Record<string, string[] | undefined>;\n}): Plugin {\n const aliases = collectWildcardPathAliases(options.paths, options.baseUrl);\n\n return {\n name: \"warlock:tsconfig-path-aliases\",\n setup(build) {\n if (aliases.length === 0) return;\n\n build.onResolve({ filter: /.*/ }, async (args) => {\n if (args.pluginData?.warlockTsconfigPathAlias) return undefined;\n if (args.namespace !== \"file\" && args.namespace !== \"\") return undefined;\n if (args.path.startsWith(\".\") || path.isAbsolute(args.path)) return undefined;\n\n for (const alias of aliases) {\n const candidates = substituteWildcard(alias, args.path);\n if (!candidates) continue;\n\n let lastResult: Awaited<ReturnType<typeof build.resolve>> | undefined;\n\n for (const candidate of candidates) {\n const result = await build.resolve(candidate, {\n kind: args.kind,\n importer: args.importer,\n resolveDir: args.resolveDir || path.dirname(args.importer),\n pluginData: { warlockTsconfigPathAlias: true },\n });\n\n lastResult = result;\n\n if (result.errors.length === 0) {\n return { path: result.path, external: result.external, namespace: result.namespace };\n }\n }\n\n // The prefix matched a declared alias and NO target resolved. That\n // is a broken import, and saying so here is the whole point — the\n // alternative is the silent external that produced the\n // `Cannot find package 'app'` above.\n return lastResult ? { errors: lastResult.errors } : undefined;\n }\n\n return undefined;\n });\n },\n };\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,2BACd,OACA,SACqB;CACrB,MAAM,UAA+B,CAAC;CAEtC,KAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;EACnD,IAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,QAAQ,WAAW,GAAG;EAErD,MAAM,OAAO,KAAK,QAAQ,GAAG;EAC7B,IAAI,SAAS,IAAI;EAEjB,QAAQ,KAAK;GACX,QAAQ,KAAK,MAAM,GAAG,IAAI;GAC1B,QAAQ,KAAK,MAAM,OAAO,CAAC;GAC3B,SAAS,QAAQ,KAAK,WAAW,KAAK,QAAQ,SAAS,MAAM,CAAC;EAChE,CAAC;CACH;CAKA,OAAO,QAAQ,MAAM,GAAG,MAAM,EAAE,OAAO,SAAS,EAAE,OAAO,MAAM;AACjE;;;;;AAMA,SAAgB,mBACd,OACA,WACsB;CACtB,IAAI,CAAC,UAAU,WAAW,MAAM,MAAM,GAAG,OAAO;CAChD,IAAI,MAAM,UAAU,CAAC,UAAU,SAAS,MAAM,MAAM,GAAG,OAAO;CAE9D,MAAM,UAAU,UAAU,MACxB,MAAM,OAAO,QACb,MAAM,SAAS,UAAU,SAAS,MAAM,OAAO,SAAS,MAC1D;CAEA,IAAI,CAAC,SAAS,OAAO;CAErB,OAAO,MAAM,QAAQ,KAAK,WAAW,OAAO,QAAQ,KAAK,OAAO,CAAC;AACnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,oBAAoB,SAGzB;CACT,MAAM,UAAU,2BAA2B,QAAQ,OAAO,QAAQ,OAAO;CAEzE,OAAO;EACL,MAAM;EACN,MAAM,OAAO;GACX,IAAI,QAAQ,WAAW,GAAG;GAE1B,MAAM,UAAU,EAAE,QAAQ,KAAK,GAAG,OAAO,SAAS;IAChD,IAAI,KAAK,YAAY,0BAA0B,OAAO;IACtD,IAAI,KAAK,cAAc,UAAU,KAAK,cAAc,IAAI,OAAO;IAC/D,IAAI,KAAK,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,KAAK,IAAI,GAAG,OAAO;IAEpE,KAAK,MAAM,SAAS,SAAS;KAC3B,MAAM,aAAa,mBAAmB,OAAO,KAAK,IAAI;KACtD,IAAI,CAAC,YAAY;KAEjB,IAAI;KAEJ,KAAK,MAAM,aAAa,YAAY;MAClC,MAAM,SAAS,MAAM,MAAM,QAAQ,WAAW;OAC5C,MAAM,KAAK;OACX,UAAU,KAAK;OACf,YAAY,KAAK,cAAc,KAAK,QAAQ,KAAK,QAAQ;OACzD,YAAY,EAAE,0BAA0B,KAAK;MAC/C,CAAC;MAED,aAAa;MAEb,IAAI,OAAO,OAAO,WAAW,GAC3B,OAAO;OAAE,MAAM,OAAO;OAAM,UAAU,OAAO;OAAU,WAAW,OAAO;MAAU;KAEvF;KAMA,OAAO,aAAa,EAAE,QAAQ,WAAW,OAAO,IAAI;IACtD;GAGF,CAAC;EACH;CACF;AACF"}
1
+ {"version":3,"file":"tsconfig-path-aliases.mjs","names":[],"sources":["../../../../../../../../packages/core/src/production/tsconfig-path-aliases.ts"],"sourcesContent":["import path from \"node:path\";\nimport type { Plugin } from \"esbuild\";\n\nexport type WildcardPathAlias = Readonly<{\n /** The literal text before the `*` — `app/` for `\"app/*\"`. */\n prefix: string;\n /** The literal text after the `*`. Almost always empty. */\n suffix: string;\n /** The `paths` targets, each still carrying its own `*`, resolved against `baseUrl`. */\n targets: readonly string[];\n}>;\n\n/**\n * Turn a tsconfig `paths` map into the WILDCARD entries only, resolved\n * against `baseUrl`. Exact entries are excluded: esbuild's own `alias`\n * option handles those, and it is the better mechanism where it applies.\n */\nexport function collectWildcardPathAliases(\n paths: Record<string, string[] | undefined>,\n baseUrl: string,\n): WildcardPathAlias[] {\n const aliases: WildcardPathAlias[] = [];\n\n for (const [from, targets] of Object.entries(paths)) {\n if (!Array.isArray(targets) || targets.length === 0) continue;\n\n const star = from.indexOf(\"*\");\n if (star === -1) continue;\n\n aliases.push({\n prefix: from.slice(0, star),\n suffix: from.slice(star + 1),\n targets: targets.map((target) => path.resolve(baseUrl, target)),\n });\n }\n\n // Longest prefix first, which is what TypeScript itself does: with both\n // `app/*` and `app/users/*` declared, the more specific one has to be tried\n // first or it can never match.\n return aliases.sort((a, b) => b.prefix.length - a.prefix.length);\n}\n\n/**\n * The substitution TypeScript performs for one `paths` entry: whatever the\n * `*` matched, spliced into each target's own `*`.\n */\nexport function substituteWildcard(\n alias: WildcardPathAlias,\n specifier: string,\n): string[] | undefined {\n if (!specifier.startsWith(alias.prefix)) return undefined;\n if (alias.suffix && !specifier.endsWith(alias.suffix)) return undefined;\n\n const matched = specifier.slice(\n alias.prefix.length,\n alias.suffix ? specifier.length - alias.suffix.length : undefined,\n );\n\n if (!matched) return undefined;\n\n return alias.targets.map((target) => target.replace(\"*\", matched));\n}\n\n/**\n * Resolve the tsconfig `paths` entries that esbuild's `alias` option cannot\n * express — the WILDCARD ones.\n *\n * **The defect.** `buildAliasMapFromTsconfig` skips any key ending in `/*`,\n * because esbuild's `alias` takes exact package names and nothing else. That\n * is a correct statement about `alias` and it left the wildcards handled by\n * nobody: `app/*` and `web/*` are how this app's own source refers to itself\n * (`import { User } from \"app/users/models/user.model\"`), and under\n * `packages: \"external\"` every one of those survived into the bundle as a\n * bare specifier. Node then looked for a PACKAGE called `app`:\n *\n * ```\n * Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'app' imported from …/dist/app.js\n * ```\n *\n * The build reported success; the failure waited until `warlock start`.\n *\n * **The resolution is delegated, not reimplemented.** This plugin performs\n * only the substitution TypeScript defines — splice what `*` matched into the\n * target — and hands the resulting ABSOLUTE path straight back to esbuild\n * through `build.resolve`. Extension probing, `index` files, `exports` maps\n * and directory handling stay esbuild's, so a path alias resolves exactly as\n * the same file would have resolved through a relative import. A candidate\n * that does not resolve is reported as esbuild's own error rather than\n * quietly falling through to the next candidate and then to \"external\",\n * which is how this became a runtime failure in the first place.\n */\nexport function tsconfigPathAliases(options: {\n baseUrl: string;\n paths: Record<string, string[] | undefined>;\n}): Plugin {\n const aliases = collectWildcardPathAliases(options.paths, options.baseUrl);\n\n return {\n name: \"warlock:tsconfig-path-aliases\",\n setup(build) {\n if (aliases.length === 0) return;\n\n build.onResolve({ filter: /.*/ }, async (args) => {\n if (args.pluginData?.warlockTsconfigPathAlias) return undefined;\n if (args.namespace !== \"file\" && args.namespace !== \"\") return undefined;\n if (args.path.startsWith(\".\") || path.isAbsolute(args.path)) return undefined;\n\n for (const alias of aliases) {\n const candidates = substituteWildcard(alias, args.path);\n if (!candidates) continue;\n\n let lastResult: Awaited<ReturnType<typeof build.resolve>> | undefined;\n\n for (const candidate of candidates) {\n const result = await build.resolve(candidate, {\n kind: args.kind,\n importer: args.importer,\n resolveDir: args.resolveDir || path.dirname(args.importer),\n pluginData: { warlockTsconfigPathAlias: true },\n });\n\n lastResult = result;\n\n if (result.errors.length === 0) {\n return { path: result.path, external: result.external, namespace: result.namespace };\n }\n }\n\n // The prefix matched a declared alias and NO target resolved. That\n // is a broken import, and saying so here is the whole point — the\n // alternative is the silent external that produced the\n // `Cannot find package 'app'` above.\n return lastResult ? { errors: lastResult.errors } : undefined;\n }\n\n return undefined;\n });\n },\n };\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,2BACd,OACA,SACqB;CACrB,MAAM,UAA+B,CAAC;CAEtC,KAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;EACnD,IAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,QAAQ,WAAW,GAAG;EAErD,MAAM,OAAO,KAAK,QAAQ,GAAG;EAC7B,IAAI,SAAS,IAAI;EAEjB,QAAQ,KAAK;GACX,QAAQ,KAAK,MAAM,GAAG,IAAI;GAC1B,QAAQ,KAAK,MAAM,OAAO,CAAC;GAC3B,SAAS,QAAQ,KAAK,WAAW,KAAK,QAAQ,SAAS,MAAM,CAAC;EAChE,CAAC;CACH;CAKA,OAAO,QAAQ,MAAM,GAAG,MAAM,EAAE,OAAO,SAAS,EAAE,OAAO,MAAM;AACjE;;;;;AAMA,SAAgB,mBACd,OACA,WACsB;CACtB,IAAI,CAAC,UAAU,WAAW,MAAM,MAAM,GAAG,OAAO;CAChD,IAAI,MAAM,UAAU,CAAC,UAAU,SAAS,MAAM,MAAM,GAAG,OAAO;CAE9D,MAAM,UAAU,UAAU,MACxB,MAAM,OAAO,QACb,MAAM,SAAS,UAAU,SAAS,MAAM,OAAO,SAAS,MAC1D;CAEA,IAAI,CAAC,SAAS,OAAO;CAErB,OAAO,MAAM,QAAQ,KAAK,WAAW,OAAO,QAAQ,KAAK,OAAO,CAAC;AACnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,oBAAoB,SAGzB;CACT,MAAM,UAAU,2BAA2B,QAAQ,OAAO,QAAQ,OAAO;CAEzE,OAAO;EACL,MAAM;EACN,MAAM,OAAO;GACX,IAAI,QAAQ,WAAW,GAAG;GAE1B,MAAM,UAAU,EAAE,QAAQ,KAAK,GAAG,OAAO,SAAS;IAChD,IAAI,KAAK,YAAY,0BAA0B,OAAO;IACtD,IAAI,KAAK,cAAc,UAAU,KAAK,cAAc,IAAI,OAAO;IAC/D,IAAI,KAAK,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,KAAK,IAAI,GAAG,OAAO;IAEpE,KAAK,MAAM,SAAS,SAAS;KAC3B,MAAM,aAAa,mBAAmB,OAAO,KAAK,IAAI;KACtD,IAAI,CAAC,YAAY;KAEjB,IAAI;KAEJ,KAAK,MAAM,aAAa,YAAY;MAClC,MAAM,SAAS,MAAM,MAAM,QAAQ,WAAW;OAC5C,MAAM,KAAK;OACX,UAAU,KAAK;OACf,YAAY,KAAK,cAAc,KAAK,QAAQ,KAAK,QAAQ;OACzD,YAAY,EAAE,0BAA0B,KAAK;MAC/C,CAAC;MAED,aAAa;MAEb,IAAI,OAAO,OAAO,WAAW,GAC3B,OAAO;OAAE,MAAM,OAAO;OAAM,UAAU,OAAO;OAAU,WAAW,OAAO;MAAU;KAEvF;KAMA,OAAO,aAAa,EAAE,QAAQ,WAAW,OAAO,IAAI;IACtD;GAGF,CAAC;EACH;CACF;AACF"}
@@ -1,6 +1,6 @@
1
1
  import { ComponentType, ReactElement, ReactNode } from "react";
2
2
 
3
- //#region ../core/src/react/index.d.ts
3
+ //#region ../../packages/core/src/react/index.d.ts
4
4
  /**
5
5
  * Render a React element/component to HTML string
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../../../../core/src/react/index.ts"],"mappings":";;;;;AAwKA;;;;;;;;;;;;;iBAAgB,WAAA,CAAY,YAAA,EAAc,YAAA,GAAe,aAAA,GAAgB,SAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/react/index.ts"],"mappings":";;;;;AAwKA;;;;;;;;;;;;;iBAAgB,WAAA,CAAY,YAAA,EAAc,YAAA,GAAe,aAAA,GAAgB,SAAA"}
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from "node:module";
2
2
 
3
- //#region ../core/src/react/index.ts
3
+ //#region ../../packages/core/src/react/index.ts
4
4
  /**
5
5
  * Installation instructions for React
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../core/src/react/index.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport type { ComponentType, ReactElement, ReactNode } from \"react\";\n\n// ============================================================\n// Lazily Resolved React Modules\n// ============================================================\n\n/**\n * Installation instructions for React\n */\nconst REACT_INSTALL_INSTRUCTIONS = `\nReact SSR functionality requires React packages.\nInstall them with:\n\n warlock add react\n\nOr manually:\n\n npm install react react-dom\n pnpm add react react-dom\n yarn add react react-dom\n`.trim();\n\n/**\n * Cached React modules, populated by the first `resolveReactModules()` call\n */\nlet react: typeof import(\"react\") | null = null;\nlet reactDomServer: typeof import(\"react-dom/server\") | null = null;\n\n/**\n * Whether the resolution attempt already ran (success or failure)\n */\nlet reactResolved = false;\n\n/**\n * Why the resolution failed, when it failed.\n *\n * Cached and re-thrown on every later call: the resolution attempt runs exactly\n * once, so without this the second `renderReact()` would skip the attempt and\n * fall through to the \"not installed\" branch, reporting a different, wrong\n * cause one call after the accurate one.\n */\nlet reactLoadError: Error | null = null;\n\n/**\n * `new Error(message, { cause })` is ES2022, and this package still compiles\n * against the ES2020 lib (see #16), where `Error` is typed as taking a message\n * only. Node has supported the option since v16, so this is the type layer\n * catching up with the runtime, not a change in what the code does.\n */\ntype ErrorWithCauseConstructor = new (message: string, options: { cause: unknown }) => Error;\n\nconst ErrorWithCause = Error as ErrorWithCauseConstructor;\n\n/**\n * Whether `error` says `specifier` itself is absent, as opposed to present but\n * broken.\n *\n * Both halves are load-bearing. `MODULE_NOT_FOUND` alone is not enough: a\n * dependency missing *inside* react raises the very same code (`Cannot find\n * module 'scheduler'`), and treating that as absence would tell the operator to\n * install a package they already have. So the message has to name the specifier\n * exactly — quoted, which is also what stops `'react-dom'` from matching a\n * check for `'react'`.\n */\nfunction isModuleMissing(error: unknown, specifier: string): boolean {\n if (!(error instanceof Error)) return false;\n\n return (\n (error as NodeJS.ErrnoException).code === \"MODULE_NOT_FOUND\" &&\n error.message.includes(`Cannot find module '${specifier}'`)\n );\n}\n\n/**\n * Require one module, translating its failure into a message that names the\n * specifier that actually failed.\n *\n * The two specifiers are resolved separately and reported separately: a broken\n * `react-dom/server` must never be announced as \"react is not installed\", since\n * that sends the operator to fix a package that is already fine.\n */\nfunction requireModule<T>(require: NodeRequire, specifier: string): T {\n try {\n const module = require(specifier);\n\n return (module.default ?? module) as T;\n } catch (error) {\n if (isModuleMissing(error, specifier)) {\n throw new Error(`${specifier} is not installed.\\n\\n${REACT_INSTALL_INSTRUCTIONS}`);\n }\n\n // The package is there, it just would not load. Its own error names the\n // real cause, so it is inlined *and* chained: a terminal that never prints\n // `cause` must still show the text that actually helps.\n throw new ErrorWithCause(`Failed to load \"${specifier}\": ${(error as Error).message}`, {\n cause: error,\n });\n }\n}\n\n/**\n * Resolve the React modules synchronously, on first use.\n *\n * Resolution is deliberately *lazy* and *synchronous*:\n *\n * - Lazy, because a top-level require would drag react and react-dom into every\n * `import \"@warlock.js/core\"`, including apps that never render a component.\n * - Synchronous, because `renderReact()` is synchronous. An async import kicked\n * off at module load leaves a window in which the modules are neither loaded\n * nor known to be missing, and a render running inside that window has no\n * correct answer to give — it used to read `createElement` off `undefined`.\n *\n * `createRequire` gives an ESM-safe `require`, and the outcome — modules,\n * absence or load failure — is cached, so resolution runs exactly once per\n * process. The failure *reason* is cached too, not just the fact of it: every\n * call after a failed load has to report the same cause as the first one.\n *\n * @throws when react or react-dom is not installed, or cannot be loaded\n */\nfunction resolveReactModules() {\n if (!reactResolved) {\n reactResolved = true;\n\n try {\n const require = createRequire(import.meta.url);\n react = requireModule<typeof import(\"react\")>(require, \"react\");\n reactDomServer = requireModule<typeof import(\"react-dom/server\")>(\n require,\n \"react-dom/server\",\n );\n } catch (error) {\n react = null;\n reactDomServer = null;\n reactLoadError = error as Error;\n }\n }\n\n if (reactLoadError) {\n throw reactLoadError;\n }\n\n if (!react || !reactDomServer) {\n throw new Error(`react is not installed.\\n\\n${REACT_INSTALL_INSTRUCTIONS}`);\n }\n\n return { react, reactDomServer };\n}\n\n// ============================================================\n// Render Function\n// ============================================================\n\n/**\n * Render a React element/component to HTML string\n *\n * **Important:** This function requires React packages to be installed.\n * Install them with: `warlock add react` or `yarn add react react-dom`\n *\n * React is resolved synchronously on the first call that needs it, so this\n * function stays synchronous and missing packages throw here rather than\n * surfacing later as a read off an undefined module.\n *\n * @example\n * ```typescript\n * const html = renderReact(<WelcomeEmail name=\"John\" />);\n * ```\n */\nexport function renderReact(reactElement: ReactElement | ComponentType | ReactNode): string {\n const { react, reactDomServer } = resolveReactModules();\n\n if (typeof reactElement === \"function\") {\n reactElement = react.createElement(reactElement);\n }\n\n return reactDomServer.renderToString(reactElement);\n}\n"],"mappings":";;;;;;AAUA,MAAM,6BAA6B;;;;;;;;;;;EAWjC,KAAK;;;;AAKP,IAAI,QAAuC;AAC3C,IAAI,iBAA2D;;;;AAK/D,IAAI,gBAAgB;;;;;;;;;AAUpB,IAAI,iBAA+B;AAUnC,MAAM,iBAAiB;;;;;;;;;;;;AAavB,SAAS,gBAAgB,OAAgB,WAA4B;CACnE,IAAI,EAAE,iBAAiB,QAAQ,OAAO;CAEtC,OACG,MAAgC,SAAS,sBAC1C,MAAM,QAAQ,SAAS,uBAAuB,UAAU,EAAE;AAE9D;;;;;;;;;AAUA,SAAS,cAAiB,SAAsB,WAAsB;CACpE,IAAI;EACF,MAAM,SAAS,QAAQ,SAAS;EAEhC,OAAQ,OAAO,WAAW;CAC5B,SAAS,OAAO;EACd,IAAI,gBAAgB,OAAO,SAAS,GAClC,MAAM,IAAI,MAAM,GAAG,UAAU,wBAAwB,4BAA4B;EAMnF,MAAM,IAAI,eAAe,mBAAmB,UAAU,KAAM,MAAgB,WAAW,EACrF,OAAO,MACT,CAAC;CACH;AACF;;;;;;;;;;;;;;;;;;;;AAqBA,SAAS,sBAAsB;CAC7B,IAAI,CAAC,eAAe;EAClB,gBAAgB;EAEhB,IAAI;GACF,MAAM,UAAU,cAAc,OAAO,KAAK,GAAG;GAC7C,QAAQ,cAAsC,SAAS,OAAO;GAC9D,iBAAiB,cACf,SACA,kBACF;EACF,SAAS,OAAO;GACd,QAAQ;GACR,iBAAiB;GACjB,iBAAiB;EACnB;CACF;CAEA,IAAI,gBACF,MAAM;CAGR,IAAI,CAAC,SAAS,CAAC,gBACb,MAAM,IAAI,MAAM,8BAA8B,4BAA4B;CAG5E,OAAO;EAAE;EAAO;CAAe;AACjC;;;;;;;;;;;;;;;;AAqBA,SAAgB,YAAY,cAAgE;CAC1F,MAAM,EAAE,OAAO,mBAAmB,oBAAoB;CAEtD,IAAI,OAAO,iBAAiB,YAC1B,eAAe,MAAM,cAAc,YAAY;CAGjD,OAAO,eAAe,eAAe,YAAY;AACnD"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../../packages/core/src/react/index.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport type { ComponentType, ReactElement, ReactNode } from \"react\";\n\n// ============================================================\n// Lazily Resolved React Modules\n// ============================================================\n\n/**\n * Installation instructions for React\n */\nconst REACT_INSTALL_INSTRUCTIONS = `\nReact SSR functionality requires React packages.\nInstall them with:\n\n warlock add react\n\nOr manually:\n\n npm install react react-dom\n pnpm add react react-dom\n yarn add react react-dom\n`.trim();\n\n/**\n * Cached React modules, populated by the first `resolveReactModules()` call\n */\nlet react: typeof import(\"react\") | null = null;\nlet reactDomServer: typeof import(\"react-dom/server\") | null = null;\n\n/**\n * Whether the resolution attempt already ran (success or failure)\n */\nlet reactResolved = false;\n\n/**\n * Why the resolution failed, when it failed.\n *\n * Cached and re-thrown on every later call: the resolution attempt runs exactly\n * once, so without this the second `renderReact()` would skip the attempt and\n * fall through to the \"not installed\" branch, reporting a different, wrong\n * cause one call after the accurate one.\n */\nlet reactLoadError: Error | null = null;\n\n/**\n * `new Error(message, { cause })` is ES2022, and this package still compiles\n * against the ES2020 lib (see #16), where `Error` is typed as taking a message\n * only. Node has supported the option since v16, so this is the type layer\n * catching up with the runtime, not a change in what the code does.\n */\ntype ErrorWithCauseConstructor = new (message: string, options: { cause: unknown }) => Error;\n\nconst ErrorWithCause = Error as ErrorWithCauseConstructor;\n\n/**\n * Whether `error` says `specifier` itself is absent, as opposed to present but\n * broken.\n *\n * Both halves are load-bearing. `MODULE_NOT_FOUND` alone is not enough: a\n * dependency missing *inside* react raises the very same code (`Cannot find\n * module 'scheduler'`), and treating that as absence would tell the operator to\n * install a package they already have. So the message has to name the specifier\n * exactly — quoted, which is also what stops `'react-dom'` from matching a\n * check for `'react'`.\n */\nfunction isModuleMissing(error: unknown, specifier: string): boolean {\n if (!(error instanceof Error)) return false;\n\n return (\n (error as NodeJS.ErrnoException).code === \"MODULE_NOT_FOUND\" &&\n error.message.includes(`Cannot find module '${specifier}'`)\n );\n}\n\n/**\n * Require one module, translating its failure into a message that names the\n * specifier that actually failed.\n *\n * The two specifiers are resolved separately and reported separately: a broken\n * `react-dom/server` must never be announced as \"react is not installed\", since\n * that sends the operator to fix a package that is already fine.\n */\nfunction requireModule<T>(require: NodeRequire, specifier: string): T {\n try {\n const module = require(specifier);\n\n return (module.default ?? module) as T;\n } catch (error) {\n if (isModuleMissing(error, specifier)) {\n throw new Error(`${specifier} is not installed.\\n\\n${REACT_INSTALL_INSTRUCTIONS}`);\n }\n\n // The package is there, it just would not load. Its own error names the\n // real cause, so it is inlined *and* chained: a terminal that never prints\n // `cause` must still show the text that actually helps.\n throw new ErrorWithCause(`Failed to load \"${specifier}\": ${(error as Error).message}`, {\n cause: error,\n });\n }\n}\n\n/**\n * Resolve the React modules synchronously, on first use.\n *\n * Resolution is deliberately *lazy* and *synchronous*:\n *\n * - Lazy, because a top-level require would drag react and react-dom into every\n * `import \"@warlock.js/core\"`, including apps that never render a component.\n * - Synchronous, because `renderReact()` is synchronous. An async import kicked\n * off at module load leaves a window in which the modules are neither loaded\n * nor known to be missing, and a render running inside that window has no\n * correct answer to give — it used to read `createElement` off `undefined`.\n *\n * `createRequire` gives an ESM-safe `require`, and the outcome — modules,\n * absence or load failure — is cached, so resolution runs exactly once per\n * process. The failure *reason* is cached too, not just the fact of it: every\n * call after a failed load has to report the same cause as the first one.\n *\n * @throws when react or react-dom is not installed, or cannot be loaded\n */\nfunction resolveReactModules() {\n if (!reactResolved) {\n reactResolved = true;\n\n try {\n const require = createRequire(import.meta.url);\n react = requireModule<typeof import(\"react\")>(require, \"react\");\n reactDomServer = requireModule<typeof import(\"react-dom/server\")>(\n require,\n \"react-dom/server\",\n );\n } catch (error) {\n react = null;\n reactDomServer = null;\n reactLoadError = error as Error;\n }\n }\n\n if (reactLoadError) {\n throw reactLoadError;\n }\n\n if (!react || !reactDomServer) {\n throw new Error(`react is not installed.\\n\\n${REACT_INSTALL_INSTRUCTIONS}`);\n }\n\n return { react, reactDomServer };\n}\n\n// ============================================================\n// Render Function\n// ============================================================\n\n/**\n * Render a React element/component to HTML string\n *\n * **Important:** This function requires React packages to be installed.\n * Install them with: `warlock add react` or `yarn add react react-dom`\n *\n * React is resolved synchronously on the first call that needs it, so this\n * function stays synchronous and missing packages throw here rather than\n * surfacing later as a read off an undefined module.\n *\n * @example\n * ```typescript\n * const html = renderReact(<WelcomeEmail name=\"John\" />);\n * ```\n */\nexport function renderReact(reactElement: ReactElement | ComponentType | ReactNode): string {\n const { react, reactDomServer } = resolveReactModules();\n\n if (typeof reactElement === \"function\") {\n reactElement = react.createElement(reactElement);\n }\n\n return reactDomServer.renderToString(reactElement);\n}\n"],"mappings":";;;;;;AAUA,MAAM,6BAA6B;;;;;;;;;;;EAWjC,KAAK;;;;AAKP,IAAI,QAAuC;AAC3C,IAAI,iBAA2D;;;;AAK/D,IAAI,gBAAgB;;;;;;;;;AAUpB,IAAI,iBAA+B;AAUnC,MAAM,iBAAiB;;;;;;;;;;;;AAavB,SAAS,gBAAgB,OAAgB,WAA4B;CACnE,IAAI,EAAE,iBAAiB,QAAQ,OAAO;CAEtC,OACG,MAAgC,SAAS,sBAC1C,MAAM,QAAQ,SAAS,uBAAuB,UAAU,EAAE;AAE9D;;;;;;;;;AAUA,SAAS,cAAiB,SAAsB,WAAsB;CACpE,IAAI;EACF,MAAM,SAAS,QAAQ,SAAS;EAEhC,OAAQ,OAAO,WAAW;CAC5B,SAAS,OAAO;EACd,IAAI,gBAAgB,OAAO,SAAS,GAClC,MAAM,IAAI,MAAM,GAAG,UAAU,wBAAwB,4BAA4B;EAMnF,MAAM,IAAI,eAAe,mBAAmB,UAAU,KAAM,MAAgB,WAAW,EACrF,OAAO,MACT,CAAC;CACH;AACF;;;;;;;;;;;;;;;;;;;;AAqBA,SAAS,sBAAsB;CAC7B,IAAI,CAAC,eAAe;EAClB,gBAAgB;EAEhB,IAAI;GACF,MAAM,UAAU,cAAc,OAAO,KAAK,GAAG;GAC7C,QAAQ,cAAsC,SAAS,OAAO;GAC9D,iBAAiB,cACf,SACA,kBACF;EACF,SAAS,OAAO;GACd,QAAQ;GACR,iBAAiB;GACjB,iBAAiB;EACnB;CACF;CAEA,IAAI,gBACF,MAAM;CAGR,IAAI,CAAC,SAAS,CAAC,gBACb,MAAM,IAAI,MAAM,8BAA8B,4BAA4B;CAG5E,OAAO;EAAE;EAAO;CAAe;AACjC;;;;;;;;;;;;;;;;AAqBA,SAAgB,YAAY,cAAgE;CAC1F,MAAM,EAAE,OAAO,mBAAmB,oBAAoB;CAEtD,IAAI,OAAO,iBAAiB,YAC1B,eAAe,MAAM,cAAc,YAAY;CAGjD,OAAO,eAAe,eAAe,YAAY;AACnD"}
@@ -3,7 +3,7 @@ import { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, Paginat
3
3
  import { QueryBuilderContract as QueryBuilderContract$1 } from "../../contracts/query-builder.contract.mjs";
4
4
  import { ChildModel, Model } from "@warlock.js/cascade";
5
5
 
6
- //#region ../core/src/repositories/adapters/cascade/cascade-adapter.d.ts
6
+ //#region ../../packages/core/src/repositories/adapters/cascade/cascade-adapter.d.ts
7
7
  /** Records loaded and written per `updateMany` batch. */
8
8
  declare const UPDATE_MANY_BATCH_SIZE = 500;
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-adapter.d.mts","names":[],"sources":["../../../../../../../../../core/src/repositories/adapters/cascade/cascade-adapter.ts"],"mappings":";;;;;;;cAYa,sBAAA;;;;AAAb;;;cAQa,cAAA,WAAyB,KAAA,kBAAuB,yBAAA,CAA0B,CAAA;EAAA,QAK1D,KAAA;EALhB;;;;cAKgB,KAAA,EAAO,UAAA,CAAW,CAAA;EAAA;;;EAStC,KAAA,IAAS,sBAAA,CAAqB,CAAA;EAoCD;;;EA7B7B,cAAA,CAAe,cAAA;EA2CO;;;EAdhB,IAAA,CAAK,EAAA,QAAU,OAAA,CAAQ,CAAA;EA0Ca;;;EAnCpC,MAAA,CAAO,MAAA,UAAgB,KAAA,QAAa,OAAA,CAAQ,CAAA;EAoGnB;;;EA7F/B,cAAA,CAAe,KAAA,EAAO,CAAA;EAwIuB;;;EAjI7C,gBAAA,CAAiB,IAAA,QAAY,CAAA;EA0IjC;;;EAnII,qBAAA;EAyJwB;;;EAlJlB,MAAA,CAAO,IAAA,QAAY,OAAA,CAAQ,CAAA;EArFd;;;EA4Fb,MAAA,CAAO,EAAA,OAAS,IAAA,QAAY,OAAA,CAAQ,CAAA;EAvFtB;;;EAoGd,MAAA,CAAO,EAAA,QAAU,OAAA;EApGH;;;EAoHd,UAAA,CAAW,MAAA,OAAa,IAAA,QAAY,OAAA;EApG1C;;;EAwIM,UAAA,CAAW,MAAA,QAAc,OAAA;EA3GV;;;EAqIf,KAAA,CAAM,MAAA,SAAe,OAAA;EA9HE;;;EA+IvB,QAAA,CAAS,IAAA,UAAc,KAAA,WAAgB,OAAA,CAAQ,gBAAA,CAAiB,CAAA;EAxIhD;;;EA+IhB,cAAA,CACX,OAAA,EAAS,uBAAA,GACR,OAAA,CAAQ,sBAAA,CAAuB,CAAA;EA1IE;;;EAqJvB,KAAA,CAAM,IAAA,UAAc,QAAA,EAAU,aAAA,CAAc,CAAA,IAAK,OAAA;EAvI9B;;;EAkJzB,WAAA,CAAY,IAAA,QAAY,CAAA;AAAA"}
1
+ {"version":3,"file":"cascade-adapter.d.mts","names":[],"sources":["../../../../../../../../../../packages/core/src/repositories/adapters/cascade/cascade-adapter.ts"],"mappings":";;;;;;;cAYa,sBAAA;;;;AAAb;;;cAQa,cAAA,WAAyB,KAAA,kBAAuB,yBAAA,CAA0B,CAAA;EAAA,QAK1D,KAAA;EALhB;;;;cAKgB,KAAA,EAAO,UAAA,CAAW,CAAA;EAAA;;;EAStC,KAAA,IAAS,sBAAA,CAAqB,CAAA;EAoCD;;;EA7B7B,cAAA,CAAe,cAAA;EA2CO;;;EAdhB,IAAA,CAAK,EAAA,QAAU,OAAA,CAAQ,CAAA;EA0Ca;;;EAnCpC,MAAA,CAAO,MAAA,UAAgB,KAAA,QAAa,OAAA,CAAQ,CAAA;EAoGnB;;;EA7F/B,cAAA,CAAe,KAAA,EAAO,CAAA;EAwIuB;;;EAjI7C,gBAAA,CAAiB,IAAA,QAAY,CAAA;EA0IjC;;;EAnII,qBAAA;EAyJwB;;;EAlJlB,MAAA,CAAO,IAAA,QAAY,OAAA,CAAQ,CAAA;EArFd;;;EA4Fb,MAAA,CAAO,EAAA,OAAS,IAAA,QAAY,OAAA,CAAQ,CAAA;EAvFtB;;;EAoGd,MAAA,CAAO,EAAA,QAAU,OAAA;EApGH;;;EAoHd,UAAA,CAAW,MAAA,OAAa,IAAA,QAAY,OAAA;EApG1C;;;EAwIM,UAAA,CAAW,MAAA,QAAc,OAAA;EA3GV;;;EAqIf,KAAA,CAAM,MAAA,SAAe,OAAA;EA9HE;;;EA+IvB,QAAA,CAAS,IAAA,UAAc,KAAA,WAAgB,OAAA,CAAQ,gBAAA,CAAiB,CAAA;EAxIhD;;;EA+IhB,cAAA,CACX,OAAA,EAAS,uBAAA,GACR,OAAA,CAAQ,sBAAA,CAAuB,CAAA;EA1IE;;;EAqJvB,KAAA,CAAM,IAAA,UAAc,QAAA,EAAU,aAAA,CAAc,CAAA,IAAK,OAAA;EAvI9B;;;EAkJzB,WAAA,CAAY,IAAA,QAAY,CAAA;AAAA"}
@@ -1,7 +1,7 @@
1
1
  import { CascadeQueryBuilder } from "./cascade-query-builder.mjs";
2
2
  import { Model, afterCommit } from "@warlock.js/cascade";
3
3
 
4
- //#region ../core/src/repositories/adapters/cascade/cascade-adapter.ts
4
+ //#region ../../packages/core/src/repositories/adapters/cascade/cascade-adapter.ts
5
5
  /** Records loaded and written per `updateMany` batch. */
6
6
  const UPDATE_MANY_BATCH_SIZE = 500;
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-adapter.mjs","names":[],"sources":["../../../../../../../../../core/src/repositories/adapters/cascade/cascade-adapter.ts"],"sourcesContent":["import { afterCommit, type ChildModel, Model } from \"@warlock.js/cascade\";\nimport type {\n ChunkCallback,\n CursorPaginationOptions,\n CursorPaginationResult,\n PaginationResult,\n QueryBuilderContract,\n RepositoryAdapterContract,\n} from \"../../contracts\";\nimport { CascadeQueryBuilder } from \"./cascade-query-builder\";\n\n/** Records loaded and written per `updateMany` batch. */\nexport const UPDATE_MANY_BATCH_SIZE = 500;\n\n/**\n * Cascade adapter for Cascade-Next ORM\n * Implements RepositoryAdapterContract for @warlock.js/cascade\n *\n * @template T - The model instance type\n */\nexport class CascadeAdapter<T extends Model<any>> implements RepositoryAdapterContract<T> {\n /**\n * Constructor\n * @param model - Cascade-Next Model class\n */\n public constructor(private model: ChildModel<T>) {}\n\n // ============================================================================\n // QUERY BUILDING\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.query}\n */\n public query(): QueryBuilderContract<T> {\n return new CascadeQueryBuilder<T>(this.model.query());\n }\n\n /**\n * Register all events\n */\n public registerEvents(eventsCallback: any): any[] {\n const events: any[] = [];\n\n const modelEvents = this.model.events();\n\n // Model events fire INSIDE the transaction, before COMMIT. Clear now (existing\n // behaviour) and again after COMMIT, so a concurrent read that re-cached the\n // old committed row in between does not leave a stale entry behind.\n const handle = (model: any) => {\n eventsCallback(model);\n afterCommit(() => eventsCallback(model));\n };\n\n events.push(\n modelEvents.onCreated(handle),\n modelEvents.onUpdated(handle),\n modelEvents.onDeleted(handle),\n );\n\n return events;\n }\n\n // ============================================================================\n // CRUD OPERATIONS\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.find}\n */\n public async find(id: any): Promise<T | null> {\n return await this.model.find(id);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.findBy}\n */\n public async findBy(column: string, value: any): Promise<T | null> {\n return (await this.query().where(column, value).first()) as T | null;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.serializeModel}\n */\n public serializeModel(model: T): any {\n return model.toSnapshot();\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.deserializeModel}\n */\n public deserializeModel(data: any): T {\n return this.model.fromSnapshot(data);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.resolveRepositoryName}\n */\n public resolveRepositoryName(): string {\n return this.model.table;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.create}\n */\n public async create(data: any): Promise<T> {\n return this.model.create(data);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.update}\n */\n public async update(id: any, data: any): Promise<T> {\n const model = id instanceof Model ? id : await this.model.find(id);\n if (!model) {\n throw new Error(`Model not found with id ${id}`);\n }\n\n await model.save({ merge: data });\n return model as T;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.delete}\n */\n public async delete(id: any): Promise<void> {\n // Load + destroy so events, delete strategy and repository-cache clearing apply.\n const record = id instanceof Model ? id : await this.model.find(id);\n\n if (!record) return;\n\n await record.destroy();\n }\n\n // ============================================================================\n // BULK OPERATIONS\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.updateMany}\n */\n public async updateMany(filter: any, data: any): Promise<number> {\n const query = this.query();\n\n // Apply filter\n if (typeof filter === \"object\") {\n query.where(filter);\n }\n\n let updated = 0;\n\n // Process in batches instead of loading the whole result set; each batch\n // is written inside a transaction when the model's driver offers one.\n await query.chunk(UPDATE_MANY_BATCH_SIZE, async (records) => {\n const writeBatch = async () => {\n for (const record of records) {\n await record.save({ merge: data });\n }\n };\n\n const runInTransaction = (this.model as any).transaction;\n\n if (typeof runInTransaction === \"function\") {\n await runInTransaction.call(this.model, writeBatch);\n } else {\n await writeBatch();\n }\n\n updated += records.length;\n });\n\n return updated;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.deleteMany}\n */\n public async deleteMany(filter: any): Promise<number> {\n const query = this.query();\n\n // Apply filter\n if (typeof filter === \"object\") {\n query.where(filter);\n }\n\n // Get matching records\n const records = await query.get();\n\n // Delete each record\n for (const record of records) {\n await record.destroy();\n }\n\n return records.length;\n }\n\n // ============================================================================\n // COUNTING\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.count}\n */\n public async count(filter?: any): Promise<number> {\n const query = this.query();\n\n if (filter && typeof filter === \"object\") {\n query.where(filter);\n }\n\n return query.count();\n }\n\n // ============================================================================\n // PAGINATION\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.paginate}\n */\n public async paginate(page: number, limit: number): Promise<PaginationResult<T>> {\n return this.query().paginate(page, limit);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.cursorPaginate}\n */\n public async cursorPaginate(\n options: CursorPaginationOptions,\n ): Promise<CursorPaginationResult<T>> {\n return this.query().cursorPaginate(options);\n }\n\n // ============================================================================\n // CHUNKING\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.chunk}\n */\n public async chunk(size: number, callback: ChunkCallback<T>): Promise<void> {\n return this.query().chunk(size, callback);\n }\n\n // ============================================================================\n // MODEL CREATION\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.createModel}\n */\n public createModel(data: any): T {\n return new (this.model as any)(data) as T;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cascade-adapter.mjs","names":[],"sources":["../../../../../../../../../../packages/core/src/repositories/adapters/cascade/cascade-adapter.ts"],"sourcesContent":["import { afterCommit, type ChildModel, Model } from \"@warlock.js/cascade\";\nimport type {\n ChunkCallback,\n CursorPaginationOptions,\n CursorPaginationResult,\n PaginationResult,\n QueryBuilderContract,\n RepositoryAdapterContract,\n} from \"../../contracts\";\nimport { CascadeQueryBuilder } from \"./cascade-query-builder\";\n\n/** Records loaded and written per `updateMany` batch. */\nexport const UPDATE_MANY_BATCH_SIZE = 500;\n\n/**\n * Cascade adapter for Cascade-Next ORM\n * Implements RepositoryAdapterContract for @warlock.js/cascade\n *\n * @template T - The model instance type\n */\nexport class CascadeAdapter<T extends Model<any>> implements RepositoryAdapterContract<T> {\n /**\n * Constructor\n * @param model - Cascade-Next Model class\n */\n public constructor(private model: ChildModel<T>) {}\n\n // ============================================================================\n // QUERY BUILDING\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.query}\n */\n public query(): QueryBuilderContract<T> {\n return new CascadeQueryBuilder<T>(this.model.query());\n }\n\n /**\n * Register all events\n */\n public registerEvents(eventsCallback: any): any[] {\n const events: any[] = [];\n\n const modelEvents = this.model.events();\n\n // Model events fire INSIDE the transaction, before COMMIT. Clear now (existing\n // behaviour) and again after COMMIT, so a concurrent read that re-cached the\n // old committed row in between does not leave a stale entry behind.\n const handle = (model: any) => {\n eventsCallback(model);\n afterCommit(() => eventsCallback(model));\n };\n\n events.push(\n modelEvents.onCreated(handle),\n modelEvents.onUpdated(handle),\n modelEvents.onDeleted(handle),\n );\n\n return events;\n }\n\n // ============================================================================\n // CRUD OPERATIONS\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.find}\n */\n public async find(id: any): Promise<T | null> {\n return await this.model.find(id);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.findBy}\n */\n public async findBy(column: string, value: any): Promise<T | null> {\n return (await this.query().where(column, value).first()) as T | null;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.serializeModel}\n */\n public serializeModel(model: T): any {\n return model.toSnapshot();\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.deserializeModel}\n */\n public deserializeModel(data: any): T {\n return this.model.fromSnapshot(data);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.resolveRepositoryName}\n */\n public resolveRepositoryName(): string {\n return this.model.table;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.create}\n */\n public async create(data: any): Promise<T> {\n return this.model.create(data);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.update}\n */\n public async update(id: any, data: any): Promise<T> {\n const model = id instanceof Model ? id : await this.model.find(id);\n if (!model) {\n throw new Error(`Model not found with id ${id}`);\n }\n\n await model.save({ merge: data });\n return model as T;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.delete}\n */\n public async delete(id: any): Promise<void> {\n // Load + destroy so events, delete strategy and repository-cache clearing apply.\n const record = id instanceof Model ? id : await this.model.find(id);\n\n if (!record) return;\n\n await record.destroy();\n }\n\n // ============================================================================\n // BULK OPERATIONS\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.updateMany}\n */\n public async updateMany(filter: any, data: any): Promise<number> {\n const query = this.query();\n\n // Apply filter\n if (typeof filter === \"object\") {\n query.where(filter);\n }\n\n let updated = 0;\n\n // Process in batches instead of loading the whole result set; each batch\n // is written inside a transaction when the model's driver offers one.\n await query.chunk(UPDATE_MANY_BATCH_SIZE, async (records) => {\n const writeBatch = async () => {\n for (const record of records) {\n await record.save({ merge: data });\n }\n };\n\n const runInTransaction = (this.model as any).transaction;\n\n if (typeof runInTransaction === \"function\") {\n await runInTransaction.call(this.model, writeBatch);\n } else {\n await writeBatch();\n }\n\n updated += records.length;\n });\n\n return updated;\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.deleteMany}\n */\n public async deleteMany(filter: any): Promise<number> {\n const query = this.query();\n\n // Apply filter\n if (typeof filter === \"object\") {\n query.where(filter);\n }\n\n // Get matching records\n const records = await query.get();\n\n // Delete each record\n for (const record of records) {\n await record.destroy();\n }\n\n return records.length;\n }\n\n // ============================================================================\n // COUNTING\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.count}\n */\n public async count(filter?: any): Promise<number> {\n const query = this.query();\n\n if (filter && typeof filter === \"object\") {\n query.where(filter);\n }\n\n return query.count();\n }\n\n // ============================================================================\n // PAGINATION\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.paginate}\n */\n public async paginate(page: number, limit: number): Promise<PaginationResult<T>> {\n return this.query().paginate(page, limit);\n }\n\n /**\n * {@inheritDoc RepositoryAdapterContract.cursorPaginate}\n */\n public async cursorPaginate(\n options: CursorPaginationOptions,\n ): Promise<CursorPaginationResult<T>> {\n return this.query().cursorPaginate(options);\n }\n\n // ============================================================================\n // CHUNKING\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.chunk}\n */\n public async chunk(size: number, callback: ChunkCallback<T>): Promise<void> {\n return this.query().chunk(size, callback);\n }\n\n // ============================================================================\n // MODEL CREATION\n // ============================================================================\n\n /**\n * {@inheritDoc RepositoryAdapterContract.createModel}\n */\n public createModel(data: any): T {\n return new (this.model as any)(data) as T;\n }\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, FilterO
2
2
  import { AggregateExpressions, GroupByFields, QueryBuilderContract as QueryBuilderContract$1 } from "../../contracts/query-builder.contract.mjs";
3
3
  import { Model, QueryBuilderContract } from "@warlock.js/cascade";
4
4
 
5
- //#region ../core/src/repositories/adapters/cascade/cascade-query-builder.d.ts
5
+ //#region ../../packages/core/src/repositories/adapters/cascade/cascade-query-builder.d.ts
6
6
  /**
7
7
  * Cascade query builder wrapper
8
8
  * Wraps Cascade-Next's ModelAggregate to implement QueryBuilderContract
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-query-builder.d.mts","names":[],"sources":["../../../../../../../../../core/src/repositories/adapters/cascade/cascade-query-builder.ts"],"mappings":";;;;;;;;;AAwBA;;cAAa,mBAAA,WAA8B,KAAA,aAAkB,sBAAA,CAAqB,CAAA;EAAA,QAKrD,KAAA;EALqD;;;;cAKrD,KAAA,EAAO,oBAAA,CAA4B,CAAA;EA8CtB;;;EArCjC,KAAA,CAAM,KAAA,UAAe,KAAA;EACrB,KAAA,CAAM,KAAA,UAAe,QAAA,EAAU,aAAA,EAAe,KAAA;EAC9C,KAAA,CAAM,UAAA,EAAY,MAAA;EAClB,KAAA,CAAM,QAAA,GAAW,KAAA;EAiOM;;;EAvMvB,MAAA;EA4N0B;;;EArN1B,OAAA,CAAQ,KAAA,UAAe,KAAA;EACvB,OAAA,CAAQ,KAAA,UAAe,QAAA,EAAU,aAAA,EAAe,KAAA;EAChD,OAAA,CAAQ,UAAA,EAAY,MAAA;EA2OhB;;;EAvNJ,OAAA,CAAQ,KAAA,UAAe,MAAA;EAmOnB;;;EA3NJ,UAAA,CAAW,KAAA,UAAe,MAAA;EAmOmB;;;EA3N7C,SAAA,CAAU,KAAA;EA2Pd;;;EAnPI,YAAA,CAAa,KAAA;EAhGuC;;;EAwGpD,YAAA,CAAa,KAAA,UAAe,KAAA;EAxGM;;;EAgHlC,SAAA,CAAU,KAAA,UAAe,OAAA;;;;EAQzB,SAAA,CAAU,MAAA,UAAgB,SAAA,YAAqB,KAAA;EA1G/C;;;EAsHA,MAAA,CAAO,MAAA;EACP,MAAA,IAAU,MAAA;EAtHqB;;;EAmI/B,QAAA,CAAS,MAAA;EACT,QAAA,IAAY,MAAA;EAnIN;;;EAoJN,OAAA,CAAQ,KAAA,UAAe,SAAA;EAzHvB;;;EAiIA,MAAA,CAAO,OAAA,EAAS,MAAA;EAzHhB;;;EAoIA,MAAA,CAAO,KAAA;EApIyC;;;EAgJhD,KAAA,CAAM,KAAA;EA3HN;;;EAmIA,MAAA,CAAO,MAAA;EA3HI;;;EAmIX,IAAA,CAAK,KAAA;EAnHL;;;EA8HA,YAAA,CAAa,OAAA,EAAS,WAAA,QAAmB,IAAA,OAAW,OAAA,EAAS,aAAA;EAtHjC;;;EAmItB,GAAA,IAAO,OAAA,CAAQ,CAAA;EAnHrB;;;EA0HM,KAAA,IAAS,OAAA,CAAQ,CAAA;EA9GvB;;;EAqHM,KAAA,IAAS,OAAA;EAvGf;;;EA8GM,GAAA,CAAI,KAAA,WAAgB,OAAA;EA5F1B;;;EAmGM,GAAA,CAAI,KAAA,WAAgB,OAAA;EA3FV;;;EAkGV,GAAA,CAAI,KAAA,WAAgB,OAAA;EA3E1B;;;EAkFM,GAAA,CAAI,KAAA,WAAgB,OAAA;EAlE1B;;;EAyEM,OAAA,KAAY,MAAA,mBACvB,MAAA,EAAQ,aAAA,EACR,UAAA,EAAY,oBAAA,GACX,OAAA,CAAQ,CAAA;EAjES;;;;;;EA2EP,SAAA,KAAc,MAAA,mBACzB,UAAA,EAAY,oBAAA,GACX,OAAA,CAAQ,CAAA;EAzDE;;;EAiEA,QAAA,CAAS,IAAA,UAAc,KAAA,WAAgB,OAAA,CAAQ,gBAAA,CAAiB,CAAA;EA1DvD;;;;;;;;;;;;;;;;;EAwFT,cAAA,CACX,OAAA,EAAS,uBAAA,GACR,OAAA,CAAQ,sBAAA,CAAuB,CAAA;EArDpB;;;EAiHD,KAAA,CAAM,IAAA,UAAc,QAAA,EAAU,aAAA,CAAc,CAAA,IAAK,OAAA;EAtGjD;;;EAiHN,IAAA,CAAK,QAAA;EAhHV;;;EAwHK,QAAA,IAAY,SAAA;EA/GG;;;EAgIf,KAAA;AAAA"}
1
+ {"version":3,"file":"cascade-query-builder.d.mts","names":[],"sources":["../../../../../../../../../../packages/core/src/repositories/adapters/cascade/cascade-query-builder.ts"],"mappings":";;;;;;;;;AAwBA;;cAAa,mBAAA,WAA8B,KAAA,aAAkB,sBAAA,CAAqB,CAAA;EAAA,QAKrD,KAAA;EALqD;;;;cAKrD,KAAA,EAAO,oBAAA,CAA4B,CAAA;EA8CtB;;;EArCjC,KAAA,CAAM,KAAA,UAAe,KAAA;EACrB,KAAA,CAAM,KAAA,UAAe,QAAA,EAAU,aAAA,EAAe,KAAA;EAC9C,KAAA,CAAM,UAAA,EAAY,MAAA;EAClB,KAAA,CAAM,QAAA,GAAW,KAAA;EAiOM;;;EAvMvB,MAAA;EA4N0B;;;EArN1B,OAAA,CAAQ,KAAA,UAAe,KAAA;EACvB,OAAA,CAAQ,KAAA,UAAe,QAAA,EAAU,aAAA,EAAe,KAAA;EAChD,OAAA,CAAQ,UAAA,EAAY,MAAA;EA2OhB;;;EAvNJ,OAAA,CAAQ,KAAA,UAAe,MAAA;EAmOnB;;;EA3NJ,UAAA,CAAW,KAAA,UAAe,MAAA;EAmOmB;;;EA3N7C,SAAA,CAAU,KAAA;EA2Pd;;;EAnPI,YAAA,CAAa,KAAA;EAhGuC;;;EAwGpD,YAAA,CAAa,KAAA,UAAe,KAAA;EAxGM;;;EAgHlC,SAAA,CAAU,KAAA,UAAe,OAAA;;;;EAQzB,SAAA,CAAU,MAAA,UAAgB,SAAA,YAAqB,KAAA;EA1G/C;;;EAsHA,MAAA,CAAO,MAAA;EACP,MAAA,IAAU,MAAA;EAtHqB;;;EAmI/B,QAAA,CAAS,MAAA;EACT,QAAA,IAAY,MAAA;EAnIN;;;EAoJN,OAAA,CAAQ,KAAA,UAAe,SAAA;EAzHvB;;;EAiIA,MAAA,CAAO,OAAA,EAAS,MAAA;EAzHhB;;;EAoIA,MAAA,CAAO,KAAA;EApIyC;;;EAgJhD,KAAA,CAAM,KAAA;EA3HN;;;EAmIA,MAAA,CAAO,MAAA;EA3HI;;;EAmIX,IAAA,CAAK,KAAA;EAnHL;;;EA8HA,YAAA,CAAa,OAAA,EAAS,WAAA,QAAmB,IAAA,OAAW,OAAA,EAAS,aAAA;EAtHjC;;;EAmItB,GAAA,IAAO,OAAA,CAAQ,CAAA;EAnHrB;;;EA0HM,KAAA,IAAS,OAAA,CAAQ,CAAA;EA9GvB;;;EAqHM,KAAA,IAAS,OAAA;EAvGf;;;EA8GM,GAAA,CAAI,KAAA,WAAgB,OAAA;EA5F1B;;;EAmGM,GAAA,CAAI,KAAA,WAAgB,OAAA;EA3FV;;;EAkGV,GAAA,CAAI,KAAA,WAAgB,OAAA;EA3E1B;;;EAkFM,GAAA,CAAI,KAAA,WAAgB,OAAA;EAlE1B;;;EAyEM,OAAA,KAAY,MAAA,mBACvB,MAAA,EAAQ,aAAA,EACR,UAAA,EAAY,oBAAA,GACX,OAAA,CAAQ,CAAA;EAjES;;;;;;EA2EP,SAAA,KAAc,MAAA,mBACzB,UAAA,EAAY,oBAAA,GACX,OAAA,CAAQ,CAAA;EAzDE;;;EAiEA,QAAA,CAAS,IAAA,UAAc,KAAA,WAAgB,OAAA,CAAQ,gBAAA,CAAiB,CAAA;EA1DvD;;;;;;;;;;;;;;;;;EAwFT,cAAA,CACX,OAAA,EAAS,uBAAA,GACR,OAAA,CAAQ,sBAAA,CAAuB,CAAA;EArDpB;;;EAiHD,KAAA,CAAM,IAAA,UAAc,QAAA,EAAU,aAAA,CAAc,CAAA,IAAK,OAAA;EAtGjD;;;EAiHN,IAAA,CAAK,QAAA;EAhHV;;;EAwHK,QAAA,IAAY,SAAA;EA/GG;;;EAgIf,KAAA;AAAA"}
@@ -1,6 +1,6 @@
1
1
  import { FilterApplicator } from "./filter-applicator.mjs";
2
2
 
3
- //#region ../core/src/repositories/adapters/cascade/cascade-query-builder.ts
3
+ //#region ../../packages/core/src/repositories/adapters/cascade/cascade-query-builder.ts
4
4
  /**
5
5
  * Cascade query builder wrapper
6
6
  * Wraps Cascade-Next's ModelAggregate to implement QueryBuilderContract
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-query-builder.mjs","names":[],"sources":["../../../../../../../../../core/src/repositories/adapters/cascade/cascade-query-builder.ts"],"sourcesContent":["import type {\n QueryBuilderContract as CascadeQueryBuilderContract,\n Model,\n} from \"@warlock.js/cascade\";\nimport type {\n AggregateExpressions,\n ChunkCallback,\n CursorPaginationOptions,\n CursorPaginationResult,\n FilterOptions,\n FilterRules,\n GroupByFields,\n PaginationResult,\n QueryBuilderContract,\n WhereOperator,\n} from \"../../contracts\";\nimport { FilterApplicator } from \"./filter-applicator\";\n\n/**\n * Cascade query builder wrapper\n * Wraps Cascade-Next's ModelAggregate to implement QueryBuilderContract\n *\n * @template T - The model instance type\n */\nexport class CascadeQueryBuilder<T extends Model> implements QueryBuilderContract<T> {\n /**\n * Constructor\n * @param query - Cascade-Next QueryBuilder instance\n */\n public constructor(private query: CascadeQueryBuilderContract<T>) {}\n\n // ============================================================================\n // WHERE CLAUSES\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.where}\n */\n public where(field: string, value: any): this;\n public where(field: string, operator: WhereOperator, value: any): this;\n public where(conditions: Record<string, any>): this;\n public where(callback: (query: this) => void): this;\n public where(\n fieldOrConditionsOrCallback: string | Record<string, any> | ((query: this) => void),\n operatorOrValue?: WhereOperator | any,\n value?: any,\n ): this {\n if (typeof fieldOrConditionsOrCallback === \"function\") {\n // Callback\n fieldOrConditionsOrCallback(this);\n } else if (typeof fieldOrConditionsOrCallback === \"object\") {\n // Object conditions\n this.query.where(fieldOrConditionsOrCallback);\n } else if (value !== undefined) {\n // Field, operator, value\n this.query.where(fieldOrConditionsOrCallback, operatorOrValue, value);\n } else {\n // Field, value\n this.query.where(fieldOrConditionsOrCallback, operatorOrValue);\n }\n\n return this;\n }\n\n /**\n * Pretty display the query in terminal\n */\n public pretty() {\n return this.query.pretty();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.orWhere}\n */\n public orWhere(field: string, value: any): this;\n public orWhere(field: string, operator: WhereOperator, value: any): this;\n public orWhere(conditions: Record<string, any>): this;\n public orWhere(\n fieldOrConditions: string | Record<string, any>,\n operatorOrValue?: WhereOperator | any,\n value?: any,\n ): this {\n if (typeof fieldOrConditions === \"object\") {\n this.query.orWhere(fieldOrConditions);\n } else if (value !== undefined) {\n this.query.orWhere(fieldOrConditions, operatorOrValue, value);\n } else {\n this.query.orWhere(fieldOrConditions, operatorOrValue);\n }\n\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereIn}\n */\n public whereIn(field: string, values: any[]): this {\n this.query.whereIn(field, values);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereNotIn}\n */\n public whereNotIn(field: string, values: any[]): this {\n this.query.whereNotIn(field, values);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereNull}\n */\n public whereNull(field: string): this {\n this.query.whereNull(field);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereNotNull}\n */\n public whereNotNull(field: string): this {\n this.query.whereNotNull(field);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereBetween}\n */\n public whereBetween(field: string, range: [any, any]): this {\n this.query.whereBetween(field, range);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereLike}\n */\n public whereLike(field: string, pattern: string): this {\n this.query.whereLike(field, pattern);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.similarTo}\n */\n public similarTo(column: string, embedding: number[], alias?: string): this {\n this.query.similarTo(column, embedding, alias);\n return this;\n }\n\n // ============================================================================\n // SELECT / PROJECTION\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.select}\n */\n public select(fields: string[]): this;\n public select(...fields: string[]): this;\n public select(...fields: any[]): this {\n if (Array.isArray(fields[0])) {\n this.query.select(fields[0]);\n } else {\n this.query.select(fields);\n }\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.deselect}\n */\n public deselect(fields: string[]): this;\n public deselect(...fields: string[]): this;\n public deselect(...fields: any[]): this {\n if (Array.isArray(fields[0])) {\n this.query.deselect(fields[0]);\n } else {\n this.query.deselect(fields);\n }\n return this;\n }\n\n // ============================================================================\n // ORDERING\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.orderBy}\n */\n public orderBy(field: string, direction: \"asc\" | \"desc\" = \"asc\"): this {\n this.query.orderBy(field, direction);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.sortBy}\n */\n public sortBy(orderBy: Record<string, \"asc\" | \"desc\">): this {\n // Apply each order clause individually\n for (const [field, direction] of Object.entries(orderBy)) {\n this.query.orderBy(field, direction);\n }\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.random}\n */\n public random(limit: number): this {\n this.query.orderByRandom(limit);\n return this;\n }\n\n // ============================================================================\n // LIMITING\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.limit}\n */\n public limit(limit: number): this {\n this.query.limit(limit);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.offset}\n */\n public offset(offset: number): this {\n this.query.offset(offset);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.skip}\n */\n public skip(count: number): this {\n return this.offset(count);\n }\n\n // ============================================================================\n // FILTERING (Repository-specific)\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.applyFilters}\n */\n public applyFilters(filters: FilterRules<this>, data: any, options: FilterOptions): this {\n const applicator = new FilterApplicator();\n applicator.apply(this.query as any, filters, data, options);\n return this;\n }\n\n // ============================================================================\n // EXECUTION\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.get}\n */\n public async get(): Promise<T[]> {\n return this.query.get();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.first}\n */\n public async first(): Promise<T | null> {\n return this.query.first();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.count}\n */\n public async count(): Promise<number> {\n return this.query.count();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.sum}\n */\n public async sum(field: string): Promise<number> {\n return this.query.sum(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.avg}\n */\n public async avg(field: string): Promise<number | null> {\n return this.query.avg(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.min}\n */\n public async min(field: string): Promise<number | null> {\n return this.query.min(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.max}\n */\n public async max(field: string): Promise<number | null> {\n return this.query.max(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.groupBy}\n */\n public async groupBy<R = Record<string, unknown>>(\n fields: GroupByFields,\n aggregates: AggregateExpressions,\n ): Promise<R[]> {\n return this.query.groupBy(fields, aggregates).get<R>();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.aggregate}\n *\n * Whole-set aggregation: groups with no group key so every matching record\n * falls into a single group, then returns that one summary row.\n */\n public async aggregate<R = Record<string, unknown>>(\n aggregates: AggregateExpressions,\n ): Promise<R | null> {\n const rows = await this.query.groupBy([], aggregates).get<R>();\n return rows[0] ?? null;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.paginate}\n */\n public async paginate(page: number, limit: number): Promise<PaginationResult<T>> {\n const result = await this.query.paginate({ limit, page });\n\n // Convert Cascade-Next pagination to repository format\n return {\n data: result.data,\n pagination: {\n ...result.pagination,\n result: result.data.length,\n },\n };\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.cursorPaginate}\n *\n * NOTE: This method is a pure executor.\n * The caller (e.g. RepositoryManager._listImpl) is responsible for applying\n * the cursor WHERE condition and ORDER BY BEFORE calling this method,\n * so that the cursor column is always the primary sort key.\n *\n * For a forward page (`direction: \"next\"`) the caller sorts ASC and filters\n * `> cursor`, so the rows already arrive in ascending cursor order.\n *\n * For a backward page (`direction: \"prev\"`) the caller sorts DESC and filters\n * `< cursor`, so rows arrive in DESCENDING order. We re-reverse the trimmed\n * page back to ascending so callers always receive a page in the same\n * (ascending) order regardless of direction, and we derive the next/prev\n * cursors from the page boundaries accordingly.\n */\n public async cursorPaginate(\n options: CursorPaginationOptions,\n ): Promise<CursorPaginationResult<T>> {\n const { limit, cursorColumn = \"id\", direction = \"next\" } = options;\n\n // Fetch limit + 1 to detect whether more pages exist in the scan direction.\n this.limit(limit + 1);\n\n const results = await this.get();\n const hasMore = results.length > limit;\n\n // Drop the extra record used for the hasMore check. It always sits at the\n // tail because the caller ordered the scan so the next-to-fetch row is last.\n const trimmed = hasMore ? results.slice(0, limit) : results;\n\n const cursorOf = (record: T | undefined): string | number | undefined =>\n record === undefined ? undefined : ((record as any)[cursorColumn] as string | number);\n\n if (direction === \"prev\") {\n // Scan came back DESC; present it ascending.\n const documents = [...trimmed].reverse();\n const first = documents[0];\n const last = documents[documents.length - 1];\n\n return {\n data: documents,\n pagination: {\n limit,\n result: documents.length,\n hasMore,\n // Going further back is only possible when the backward scan saw more\n // rows than this page; the boundary is this page's first (smallest) row.\n prevCursor: hasMore ? cursorOf(first) : undefined,\n // Going forward always resumes after this page's last (largest) row.\n nextCursor: cursorOf(last),\n },\n };\n }\n\n // Forward page — rows already ascending.\n const documents = trimmed;\n const first = documents[0];\n const last = documents[documents.length - 1];\n\n return {\n data: documents,\n pagination: {\n limit,\n result: documents.length,\n hasMore,\n // Going forward is only possible when the forward scan saw more rows\n // than this page; the boundary is this page's last (largest) row.\n nextCursor: hasMore ? cursorOf(last) : undefined,\n // Going back resumes before this page's first (smallest) row.\n prevCursor: cursorOf(first),\n },\n };\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.chunk}\n */\n public async chunk(size: number, callback: ChunkCallback<T>): Promise<void> {\n return this.query.chunk(size, callback);\n }\n\n // ============================================================================\n // UTILITIES\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.with}\n */\n public with(relation: string): this {\n this.query.with(relation);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.joinWith}\n */\n public joinWith(...relations: string[]): this {\n if (this.query.joinWith) {\n this.query.joinWith(...relations);\n } else {\n console.warn(\n \"[Repository] joinWith is not supported by the underlying query builder. Falling back to with.\",\n );\n for (const relation of relations) {\n this.query.with(relation);\n }\n }\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.clone}\n */\n public clone(): this {\n return new CascadeQueryBuilder(this.query.clone()) as this;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cascade-query-builder.mjs","names":[],"sources":["../../../../../../../../../../packages/core/src/repositories/adapters/cascade/cascade-query-builder.ts"],"sourcesContent":["import type {\n QueryBuilderContract as CascadeQueryBuilderContract,\n Model,\n} from \"@warlock.js/cascade\";\nimport type {\n AggregateExpressions,\n ChunkCallback,\n CursorPaginationOptions,\n CursorPaginationResult,\n FilterOptions,\n FilterRules,\n GroupByFields,\n PaginationResult,\n QueryBuilderContract,\n WhereOperator,\n} from \"../../contracts\";\nimport { FilterApplicator } from \"./filter-applicator\";\n\n/**\n * Cascade query builder wrapper\n * Wraps Cascade-Next's ModelAggregate to implement QueryBuilderContract\n *\n * @template T - The model instance type\n */\nexport class CascadeQueryBuilder<T extends Model> implements QueryBuilderContract<T> {\n /**\n * Constructor\n * @param query - Cascade-Next QueryBuilder instance\n */\n public constructor(private query: CascadeQueryBuilderContract<T>) {}\n\n // ============================================================================\n // WHERE CLAUSES\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.where}\n */\n public where(field: string, value: any): this;\n public where(field: string, operator: WhereOperator, value: any): this;\n public where(conditions: Record<string, any>): this;\n public where(callback: (query: this) => void): this;\n public where(\n fieldOrConditionsOrCallback: string | Record<string, any> | ((query: this) => void),\n operatorOrValue?: WhereOperator | any,\n value?: any,\n ): this {\n if (typeof fieldOrConditionsOrCallback === \"function\") {\n // Callback\n fieldOrConditionsOrCallback(this);\n } else if (typeof fieldOrConditionsOrCallback === \"object\") {\n // Object conditions\n this.query.where(fieldOrConditionsOrCallback);\n } else if (value !== undefined) {\n // Field, operator, value\n this.query.where(fieldOrConditionsOrCallback, operatorOrValue, value);\n } else {\n // Field, value\n this.query.where(fieldOrConditionsOrCallback, operatorOrValue);\n }\n\n return this;\n }\n\n /**\n * Pretty display the query in terminal\n */\n public pretty() {\n return this.query.pretty();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.orWhere}\n */\n public orWhere(field: string, value: any): this;\n public orWhere(field: string, operator: WhereOperator, value: any): this;\n public orWhere(conditions: Record<string, any>): this;\n public orWhere(\n fieldOrConditions: string | Record<string, any>,\n operatorOrValue?: WhereOperator | any,\n value?: any,\n ): this {\n if (typeof fieldOrConditions === \"object\") {\n this.query.orWhere(fieldOrConditions);\n } else if (value !== undefined) {\n this.query.orWhere(fieldOrConditions, operatorOrValue, value);\n } else {\n this.query.orWhere(fieldOrConditions, operatorOrValue);\n }\n\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereIn}\n */\n public whereIn(field: string, values: any[]): this {\n this.query.whereIn(field, values);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereNotIn}\n */\n public whereNotIn(field: string, values: any[]): this {\n this.query.whereNotIn(field, values);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereNull}\n */\n public whereNull(field: string): this {\n this.query.whereNull(field);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereNotNull}\n */\n public whereNotNull(field: string): this {\n this.query.whereNotNull(field);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereBetween}\n */\n public whereBetween(field: string, range: [any, any]): this {\n this.query.whereBetween(field, range);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.whereLike}\n */\n public whereLike(field: string, pattern: string): this {\n this.query.whereLike(field, pattern);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.similarTo}\n */\n public similarTo(column: string, embedding: number[], alias?: string): this {\n this.query.similarTo(column, embedding, alias);\n return this;\n }\n\n // ============================================================================\n // SELECT / PROJECTION\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.select}\n */\n public select(fields: string[]): this;\n public select(...fields: string[]): this;\n public select(...fields: any[]): this {\n if (Array.isArray(fields[0])) {\n this.query.select(fields[0]);\n } else {\n this.query.select(fields);\n }\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.deselect}\n */\n public deselect(fields: string[]): this;\n public deselect(...fields: string[]): this;\n public deselect(...fields: any[]): this {\n if (Array.isArray(fields[0])) {\n this.query.deselect(fields[0]);\n } else {\n this.query.deselect(fields);\n }\n return this;\n }\n\n // ============================================================================\n // ORDERING\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.orderBy}\n */\n public orderBy(field: string, direction: \"asc\" | \"desc\" = \"asc\"): this {\n this.query.orderBy(field, direction);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.sortBy}\n */\n public sortBy(orderBy: Record<string, \"asc\" | \"desc\">): this {\n // Apply each order clause individually\n for (const [field, direction] of Object.entries(orderBy)) {\n this.query.orderBy(field, direction);\n }\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.random}\n */\n public random(limit: number): this {\n this.query.orderByRandom(limit);\n return this;\n }\n\n // ============================================================================\n // LIMITING\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.limit}\n */\n public limit(limit: number): this {\n this.query.limit(limit);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.offset}\n */\n public offset(offset: number): this {\n this.query.offset(offset);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.skip}\n */\n public skip(count: number): this {\n return this.offset(count);\n }\n\n // ============================================================================\n // FILTERING (Repository-specific)\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.applyFilters}\n */\n public applyFilters(filters: FilterRules<this>, data: any, options: FilterOptions): this {\n const applicator = new FilterApplicator();\n applicator.apply(this.query as any, filters, data, options);\n return this;\n }\n\n // ============================================================================\n // EXECUTION\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.get}\n */\n public async get(): Promise<T[]> {\n return this.query.get();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.first}\n */\n public async first(): Promise<T | null> {\n return this.query.first();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.count}\n */\n public async count(): Promise<number> {\n return this.query.count();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.sum}\n */\n public async sum(field: string): Promise<number> {\n return this.query.sum(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.avg}\n */\n public async avg(field: string): Promise<number | null> {\n return this.query.avg(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.min}\n */\n public async min(field: string): Promise<number | null> {\n return this.query.min(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.max}\n */\n public async max(field: string): Promise<number | null> {\n return this.query.max(field);\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.groupBy}\n */\n public async groupBy<R = Record<string, unknown>>(\n fields: GroupByFields,\n aggregates: AggregateExpressions,\n ): Promise<R[]> {\n return this.query.groupBy(fields, aggregates).get<R>();\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.aggregate}\n *\n * Whole-set aggregation: groups with no group key so every matching record\n * falls into a single group, then returns that one summary row.\n */\n public async aggregate<R = Record<string, unknown>>(\n aggregates: AggregateExpressions,\n ): Promise<R | null> {\n const rows = await this.query.groupBy([], aggregates).get<R>();\n return rows[0] ?? null;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.paginate}\n */\n public async paginate(page: number, limit: number): Promise<PaginationResult<T>> {\n const result = await this.query.paginate({ limit, page });\n\n // Convert Cascade-Next pagination to repository format\n return {\n data: result.data,\n pagination: {\n ...result.pagination,\n result: result.data.length,\n },\n };\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.cursorPaginate}\n *\n * NOTE: This method is a pure executor.\n * The caller (e.g. RepositoryManager._listImpl) is responsible for applying\n * the cursor WHERE condition and ORDER BY BEFORE calling this method,\n * so that the cursor column is always the primary sort key.\n *\n * For a forward page (`direction: \"next\"`) the caller sorts ASC and filters\n * `> cursor`, so the rows already arrive in ascending cursor order.\n *\n * For a backward page (`direction: \"prev\"`) the caller sorts DESC and filters\n * `< cursor`, so rows arrive in DESCENDING order. We re-reverse the trimmed\n * page back to ascending so callers always receive a page in the same\n * (ascending) order regardless of direction, and we derive the next/prev\n * cursors from the page boundaries accordingly.\n */\n public async cursorPaginate(\n options: CursorPaginationOptions,\n ): Promise<CursorPaginationResult<T>> {\n const { limit, cursorColumn = \"id\", direction = \"next\" } = options;\n\n // Fetch limit + 1 to detect whether more pages exist in the scan direction.\n this.limit(limit + 1);\n\n const results = await this.get();\n const hasMore = results.length > limit;\n\n // Drop the extra record used for the hasMore check. It always sits at the\n // tail because the caller ordered the scan so the next-to-fetch row is last.\n const trimmed = hasMore ? results.slice(0, limit) : results;\n\n const cursorOf = (record: T | undefined): string | number | undefined =>\n record === undefined ? undefined : ((record as any)[cursorColumn] as string | number);\n\n if (direction === \"prev\") {\n // Scan came back DESC; present it ascending.\n const documents = [...trimmed].reverse();\n const first = documents[0];\n const last = documents[documents.length - 1];\n\n return {\n data: documents,\n pagination: {\n limit,\n result: documents.length,\n hasMore,\n // Going further back is only possible when the backward scan saw more\n // rows than this page; the boundary is this page's first (smallest) row.\n prevCursor: hasMore ? cursorOf(first) : undefined,\n // Going forward always resumes after this page's last (largest) row.\n nextCursor: cursorOf(last),\n },\n };\n }\n\n // Forward page — rows already ascending.\n const documents = trimmed;\n const first = documents[0];\n const last = documents[documents.length - 1];\n\n return {\n data: documents,\n pagination: {\n limit,\n result: documents.length,\n hasMore,\n // Going forward is only possible when the forward scan saw more rows\n // than this page; the boundary is this page's last (largest) row.\n nextCursor: hasMore ? cursorOf(last) : undefined,\n // Going back resumes before this page's first (smallest) row.\n prevCursor: cursorOf(first),\n },\n };\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.chunk}\n */\n public async chunk(size: number, callback: ChunkCallback<T>): Promise<void> {\n return this.query.chunk(size, callback);\n }\n\n // ============================================================================\n // UTILITIES\n // ============================================================================\n\n /**\n * {@inheritDoc QueryBuilderContract.with}\n */\n public with(relation: string): this {\n this.query.with(relation);\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.joinWith}\n */\n public joinWith(...relations: string[]): this {\n if (this.query.joinWith) {\n this.query.joinWith(...relations);\n } else {\n console.warn(\n \"[Repository] joinWith is not supported by the underlying query builder. Falling back to with.\",\n );\n for (const relation of relations) {\n this.query.with(relation);\n }\n }\n return this;\n }\n\n /**\n * {@inheritDoc QueryBuilderContract.clone}\n */\n public clone(): this {\n return new CascadeQueryBuilder(this.query.clone()) as this;\n }\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { BadRequestError } from "../../../http/errors/errors.mjs";
2
2
  import dayjs from "dayjs";
3
3
  import customParseFormat from "dayjs/plugin/customParseFormat.js";
4
4
 
5
- //#region ../core/src/repositories/adapters/cascade/filter-applicator.ts
5
+ //#region ../../packages/core/src/repositories/adapters/cascade/filter-applicator.ts
6
6
  dayjs.extend(customParseFormat);
7
7
  /**
8
8
  * Applies repository filters to a Cascade-Next query builder