@warlock.js/core 5.29.0 → 5.31.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 (1818) hide show
  1. package/CHANGELOG.md +168 -4
  2. package/README.md +28 -23
  3. package/bin/source-load-hook.mjs +63 -0
  4. package/bin/warlock.js +102 -42
  5. package/esm/application/app.d.mts +1 -1
  6. package/esm/application/app.d.mts.map +1 -1
  7. package/esm/application/app.mjs +1 -1
  8. package/esm/application/app.mjs.map +1 -1
  9. package/esm/application/application-config-types.d.mts +1 -1
  10. package/esm/application/application-config-types.d.mts.map +1 -1
  11. package/esm/application/application.d.mts +1 -1
  12. package/esm/application/application.d.mts.map +1 -1
  13. package/esm/application/application.mjs +1 -1
  14. package/esm/application/application.mjs.map +1 -1
  15. package/esm/application/boot-signal.d.mts +1 -1
  16. package/esm/application/boot-signal.d.mts.map +1 -1
  17. package/esm/application/boot-signal.mjs +1 -1
  18. package/esm/application/boot-signal.mjs.map +1 -1
  19. package/esm/application/public-url.d.mts +1 -1
  20. package/esm/application/public-url.d.mts.map +1 -1
  21. package/esm/application/public-url.mjs +1 -1
  22. package/esm/application/public-url.mjs.map +1 -1
  23. package/esm/application/roles.d.mts +1 -1
  24. package/esm/application/roles.d.mts.map +1 -1
  25. package/esm/application/roles.mjs +1 -1
  26. package/esm/application/roles.mjs.map +1 -1
  27. package/esm/benchmark/benchmark-snapshots.d.mts +1 -1
  28. package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
  29. package/esm/benchmark/benchmark-snapshots.mjs +1 -1
  30. package/esm/benchmark/benchmark-snapshots.mjs.map +1 -1
  31. package/esm/benchmark/benchmark.d.mts +1 -1
  32. package/esm/benchmark/benchmark.d.mts.map +1 -1
  33. package/esm/benchmark/benchmark.mjs +1 -1
  34. package/esm/benchmark/benchmark.mjs.map +1 -1
  35. package/esm/benchmark/channels/console.channel.d.mts +1 -1
  36. package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
  37. package/esm/benchmark/channels/console.channel.mjs +1 -1
  38. package/esm/benchmark/channels/console.channel.mjs.map +1 -1
  39. package/esm/benchmark/channels/noop.channel.d.mts +1 -1
  40. package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
  41. package/esm/benchmark/channels/noop.channel.mjs +1 -1
  42. package/esm/benchmark/channels/noop.channel.mjs.map +1 -1
  43. package/esm/benchmark/profiler.d.mts +1 -1
  44. package/esm/benchmark/profiler.d.mts.map +1 -1
  45. package/esm/benchmark/profiler.mjs +1 -1
  46. package/esm/benchmark/profiler.mjs.map +1 -1
  47. package/esm/benchmark/types.d.mts +1 -1
  48. package/esm/benchmark/types.d.mts.map +1 -1
  49. package/esm/bootstrap/setup.d.mts +1 -1
  50. package/esm/bootstrap/setup.d.mts.map +1 -1
  51. package/esm/bootstrap/setup.mjs +1 -1
  52. package/esm/bootstrap/setup.mjs.map +1 -1
  53. package/esm/bootstrap.d.mts +1 -1
  54. package/esm/bootstrap.d.mts.map +1 -1
  55. package/esm/bootstrap.mjs +1 -1
  56. package/esm/bootstrap.mjs.map +1 -1
  57. package/esm/cache/database-cache-driver.d.mts +1 -1
  58. package/esm/cache/database-cache-driver.d.mts.map +1 -1
  59. package/esm/cache/database-cache-driver.mjs +1 -1
  60. package/esm/cache/database-cache-driver.mjs.map +1 -1
  61. package/esm/cache/index.mjs +1 -1
  62. package/esm/cache/index.mjs.map +1 -1
  63. package/esm/cli/cli-commands.manager.mjs +1 -1
  64. package/esm/cli/cli-commands.manager.mjs.map +1 -1
  65. package/esm/cli/cli-commands.utils.mjs +1 -1
  66. package/esm/cli/cli-commands.utils.mjs.map +1 -1
  67. package/esm/cli/commands/add.command.mjs +5 -3
  68. package/esm/cli/commands/add.command.mjs.map +1 -1
  69. package/esm/cli/commands/agents-md/agents-md-command.action.mjs +69 -0
  70. package/esm/cli/commands/agents-md/agents-md-command.action.mjs.map +1 -0
  71. package/esm/cli/commands/agents-md.command.mjs +38 -0
  72. package/esm/cli/commands/agents-md.command.mjs.map +1 -0
  73. package/esm/cli/commands/board/board-command.action.mjs +279 -0
  74. package/esm/cli/commands/board/board-command.action.mjs.map +1 -0
  75. package/esm/cli/commands/board.command.mjs +78 -0
  76. package/esm/cli/commands/board.command.mjs.map +1 -0
  77. package/esm/cli/commands/build.command.mjs +7 -2
  78. package/esm/cli/commands/build.command.mjs.map +1 -1
  79. package/esm/cli/commands/check/check-command.action.mjs +57 -0
  80. package/esm/cli/commands/check/check-command.action.mjs.map +1 -0
  81. package/esm/cli/commands/check/child-typecheck.mjs +66 -0
  82. package/esm/cli/commands/check/child-typecheck.mjs.map +1 -0
  83. package/esm/cli/commands/check/format-problems.mjs +43 -0
  84. package/esm/cli/commands/check/format-problems.mjs.map +1 -0
  85. package/esm/cli/commands/check/typecheck-command.action.mjs +61 -0
  86. package/esm/cli/commands/check/typecheck-command.action.mjs.map +1 -0
  87. package/esm/cli/commands/check.command.mjs +50 -0
  88. package/esm/cli/commands/check.command.mjs.map +1 -0
  89. package/esm/cli/commands/create-database.command.mjs +1 -1
  90. package/esm/cli/commands/create-database.command.mjs.map +1 -1
  91. package/esm/cli/commands/dev-server.command.mjs +10 -2
  92. package/esm/cli/commands/dev-server.command.mjs.map +1 -1
  93. package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +9 -4
  94. package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
  95. package/esm/cli/commands/doctor/check.types.d.mts +76 -0
  96. package/esm/cli/commands/doctor/check.types.d.mts.map +1 -0
  97. package/esm/cli/commands/doctor/checks/config.check.mjs +2 -1
  98. package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
  99. package/esm/cli/commands/doctor/checks/connectors.check.mjs +3 -1
  100. package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
  101. package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +2 -1
  102. package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
  103. package/esm/cli/commands/doctor/checks/health.check.mjs +4 -1
  104. package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
  105. package/esm/cli/commands/doctor/checks/index.mjs +1 -1
  106. package/esm/cli/commands/doctor/checks/index.mjs.map +1 -1
  107. package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +2 -1
  108. package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
  109. package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +2 -1
  110. package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
  111. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +2 -1
  112. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
  113. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +5 -1
  114. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
  115. package/esm/cli/commands/doctor/checks/routes.check.mjs +4 -1
  116. package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
  117. package/esm/cli/commands/doctor/doctor-command.action.mjs +15 -7
  118. package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
  119. package/esm/cli/commands/doctor/format-report.mjs +31 -3
  120. package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
  121. package/esm/cli/commands/doctor/run-checks.mjs +1 -1
  122. package/esm/cli/commands/doctor/run-checks.mjs.map +1 -1
  123. package/esm/cli/commands/doctor.command.mjs +5 -1
  124. package/esm/cli/commands/doctor.command.mjs.map +1 -1
  125. package/esm/cli/commands/drop-tables.command.mjs +1 -1
  126. package/esm/cli/commands/drop-tables.command.mjs.map +1 -1
  127. package/esm/cli/commands/explain/explain-command.action.mjs +64 -0
  128. package/esm/cli/commands/explain/explain-command.action.mjs.map +1 -0
  129. package/esm/cli/commands/explain.command.mjs +23 -0
  130. package/esm/cli/commands/explain.command.mjs.map +1 -0
  131. package/esm/cli/commands/generate/generate.command.mjs +125 -125
  132. package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
  133. package/esm/cli/commands/generate/generators/column-dsl-parser.mjs +1 -1
  134. package/esm/cli/commands/generate/generators/column-dsl-parser.mjs.map +1 -1
  135. package/esm/cli/commands/generate/generators/controller.generator.mjs +1 -1
  136. package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
  137. package/esm/cli/commands/generate/generators/endpoint.generator.mjs +311 -0
  138. package/esm/cli/commands/generate/generators/endpoint.generator.mjs.map +1 -0
  139. package/esm/cli/commands/generate/generators/migration.generator.mjs +2 -2
  140. package/esm/cli/commands/generate/generators/migration.generator.mjs.map +1 -1
  141. package/esm/cli/commands/generate/generators/model.generator.mjs +2 -2
  142. package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
  143. package/esm/cli/commands/generate/generators/module.generator.mjs +1 -1
  144. package/esm/cli/commands/generate/generators/module.generator.mjs.map +1 -1
  145. package/esm/cli/commands/generate/generators/repository.generator.mjs +1 -1
  146. package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
  147. package/esm/cli/commands/generate/generators/resource.generator.mjs +1 -1
  148. package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
  149. package/esm/cli/commands/generate/generators/service.generator.mjs +1 -1
  150. package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
  151. package/esm/cli/commands/generate/generators/use-case.generator.mjs +1 -1
  152. package/esm/cli/commands/generate/generators/use-case.generator.mjs.map +1 -1
  153. package/esm/cli/commands/generate/templates/endpoint-stubs.mjs +341 -0
  154. package/esm/cli/commands/generate/templates/endpoint-stubs.mjs.map +1 -0
  155. package/esm/cli/commands/generate/templates/stubs.mjs +20 -7
  156. package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
  157. package/esm/cli/commands/generate/utils/endpoint-schema.mjs +137 -0
  158. package/esm/cli/commands/generate/utils/endpoint-schema.mjs.map +1 -0
  159. package/esm/cli/commands/generate/utils/name-parser.mjs +2 -2
  160. package/esm/cli/commands/generate/utils/name-parser.mjs.map +1 -1
  161. package/esm/cli/commands/generate/utils/path-resolver.mjs +1 -1
  162. package/esm/cli/commands/generate/utils/path-resolver.mjs.map +1 -1
  163. package/esm/cli/commands/generate/utils/prompt.mjs +1 -1
  164. package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
  165. package/esm/cli/commands/generate/utils/writer.mjs +39 -14
  166. package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
  167. package/esm/cli/commands/inspect/inspect-command.action.mjs +72 -0
  168. package/esm/cli/commands/inspect/inspect-command.action.mjs.map +1 -0
  169. package/esm/cli/commands/inspect.command.mjs +39 -0
  170. package/esm/cli/commands/inspect.command.mjs.map +1 -0
  171. package/esm/cli/commands/mcp/mcp-command.action.mjs +103 -0
  172. package/esm/cli/commands/mcp/mcp-command.action.mjs.map +1 -0
  173. package/esm/cli/commands/mcp.command.mjs +76 -0
  174. package/esm/cli/commands/mcp.command.mjs.map +1 -0
  175. package/esm/cli/commands/migrate.command.mjs +1 -1
  176. package/esm/cli/commands/migrate.command.mjs.map +1 -1
  177. package/esm/cli/commands/openapi-generator.action.mjs +1 -1
  178. package/esm/cli/commands/openapi-generator.action.mjs.map +1 -1
  179. package/esm/cli/commands/openapi-generator.command.mjs +1 -1
  180. package/esm/cli/commands/openapi-generator.command.mjs.map +1 -1
  181. package/esm/cli/commands/postman-generator.action.mjs +1 -1
  182. package/esm/cli/commands/postman-generator.action.mjs.map +1 -1
  183. package/esm/cli/commands/postman-generator.command.mjs +1 -1
  184. package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
  185. package/esm/cli/commands/routes/diff-page-routes.mjs +1 -1
  186. package/esm/cli/commands/routes/diff-page-routes.mjs.map +1 -1
  187. package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
  188. package/esm/cli/commands/routes/format-routes-table.mjs.map +1 -1
  189. package/esm/cli/commands/routes/route-row.mjs +1 -1
  190. package/esm/cli/commands/routes/route-row.mjs.map +1 -1
  191. package/esm/cli/commands/routes/routes-command.action.mjs +1 -1
  192. package/esm/cli/commands/routes/routes-command.action.mjs.map +1 -1
  193. package/esm/cli/commands/routes/routes-diff.action.mjs +2 -2
  194. package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
  195. package/esm/cli/commands/routes/with-console-on-stderr.mjs +1 -1
  196. package/esm/cli/commands/routes/with-console-on-stderr.mjs.map +1 -1
  197. package/esm/cli/commands/routes.command.mjs +1 -1
  198. package/esm/cli/commands/routes.command.mjs.map +1 -1
  199. package/esm/cli/commands/seed.command.mjs +1 -1
  200. package/esm/cli/commands/seed.command.mjs.map +1 -1
  201. package/esm/cli/commands/start-production.command.mjs +1 -1
  202. package/esm/cli/commands/start-production.command.mjs.map +1 -1
  203. package/esm/cli/commands/storage-put.action.mjs +1 -1
  204. package/esm/cli/commands/storage-put.action.mjs.map +1 -1
  205. package/esm/cli/commands/storage-put.command.mjs +1 -1
  206. package/esm/cli/commands/storage-put.command.mjs.map +1 -1
  207. package/esm/cli/commands/test.command.mjs +131 -0
  208. package/esm/cli/commands/test.command.mjs.map +1 -0
  209. package/esm/cli/commands/trace/trace-command.action.mjs +145 -0
  210. package/esm/cli/commands/trace/trace-command.action.mjs.map +1 -0
  211. package/esm/cli/commands/trace.command.mjs +60 -0
  212. package/esm/cli/commands/trace.command.mjs.map +1 -0
  213. package/esm/cli/commands/typecheck.command.mjs +40 -0
  214. package/esm/cli/commands/typecheck.command.mjs.map +1 -0
  215. package/esm/cli/commands/typings-generator.command.mjs +1 -1
  216. package/esm/cli/commands/typings-generator.command.mjs.map +1 -1
  217. package/esm/cli/commands/update.command.mjs +1 -1
  218. package/esm/cli/commands/update.command.mjs.map +1 -1
  219. package/esm/cli/commands/upgrade.command.mjs +46 -0
  220. package/esm/cli/commands/upgrade.command.mjs.map +1 -0
  221. package/esm/cli/commands-loader.mjs +1 -1
  222. package/esm/cli/commands-loader.mjs.map +1 -1
  223. package/esm/cli/flush-and-exit.mjs +34 -0
  224. package/esm/cli/flush-and-exit.mjs.map +1 -0
  225. package/esm/cli/framework-cli-commands.mjs +24 -2
  226. package/esm/cli/framework-cli-commands.mjs.map +1 -1
  227. package/esm/cli/parse-cli-args.mjs +2 -1
  228. package/esm/cli/parse-cli-args.mjs.map +1 -1
  229. package/esm/cli/start.mjs +1 -1
  230. package/esm/cli/start.mjs.map +1 -1
  231. package/esm/cli/string-similarity.mjs +1 -1
  232. package/esm/cli/string-similarity.mjs.map +1 -1
  233. package/esm/commands/cli-command.d.mts +1 -1
  234. package/esm/commands/cli-command.d.mts.map +1 -1
  235. package/esm/commands/cli-command.mjs +1 -1
  236. package/esm/commands/cli-command.mjs.map +1 -1
  237. package/esm/commands/types.d.mts +1 -1
  238. package/esm/commands/types.d.mts.map +1 -1
  239. package/esm/config/config-getter.d.mts +1 -1
  240. package/esm/config/config-getter.d.mts.map +1 -1
  241. package/esm/config/config-getter.mjs +1 -1
  242. package/esm/config/config-getter.mjs.map +1 -1
  243. package/esm/config/config-handlers.d.mts +1 -1
  244. package/esm/config/config-handlers.d.mts.map +1 -1
  245. package/esm/config/config-handlers.mjs +1 -1
  246. package/esm/config/config-handlers.mjs.map +1 -1
  247. package/esm/config/config-key-from-path.mjs +1 -1
  248. package/esm/config/config-key-from-path.mjs.map +1 -1
  249. package/esm/config/config-loader.d.mts +1 -1
  250. package/esm/config/config-loader.d.mts.map +1 -1
  251. package/esm/config/config-loader.mjs +35 -14
  252. package/esm/config/config-loader.mjs.map +1 -1
  253. package/esm/config/config-manager.mjs +1 -1
  254. package/esm/config/config-manager.mjs.map +1 -1
  255. package/esm/config/config-schema.d.mts +67 -0
  256. package/esm/config/config-schema.d.mts.map +1 -0
  257. package/esm/config/config-schema.mjs +77 -0
  258. package/esm/config/config-schema.mjs.map +1 -0
  259. package/esm/config/config-setter.d.mts +1 -1
  260. package/esm/config/config-setter.d.mts.map +1 -1
  261. package/esm/config/config-setter.mjs +1 -1
  262. package/esm/config/config-setter.mjs.map +1 -1
  263. package/esm/config/config-special-handlers.d.mts +1 -1
  264. package/esm/config/config-special-handlers.d.mts.map +1 -1
  265. package/esm/config/config-special-handlers.mjs +1 -1
  266. package/esm/config/config-special-handlers.mjs.map +1 -1
  267. package/esm/config/index.d.mts +6 -0
  268. package/esm/config/index.mjs +1 -0
  269. package/esm/config/load-config-files.mjs +1 -1
  270. package/esm/config/load-config-files.mjs.map +1 -1
  271. package/esm/config/locale-configuration.mjs +1 -1
  272. package/esm/config/locale-configuration.mjs.map +1 -1
  273. package/esm/config/types.d.mts +1 -1
  274. package/esm/config/types.d.mts.map +1 -1
  275. package/esm/connectors/access-connector.d.mts +1 -1
  276. package/esm/connectors/access-connector.d.mts.map +1 -1
  277. package/esm/connectors/access-connector.mjs +1 -1
  278. package/esm/connectors/access-connector.mjs.map +1 -1
  279. package/esm/connectors/ai-connector.d.mts +1 -1
  280. package/esm/connectors/ai-connector.d.mts.map +1 -1
  281. package/esm/connectors/ai-connector.mjs +1 -1
  282. package/esm/connectors/ai-connector.mjs.map +1 -1
  283. package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -1
  284. package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
  285. package/esm/connectors/assert-no-reserved-connector-names.mjs +3 -2
  286. package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
  287. package/esm/connectors/assert-unique-connector-names.d.mts +1 -1
  288. package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
  289. package/esm/connectors/assert-unique-connector-names.mjs +27 -3
  290. package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
  291. package/esm/connectors/base-connector.d.mts +1 -1
  292. package/esm/connectors/base-connector.d.mts.map +1 -1
  293. package/esm/connectors/base-connector.mjs +1 -1
  294. package/esm/connectors/base-connector.mjs.map +1 -1
  295. package/esm/connectors/cache-connector.d.mts +1 -1
  296. package/esm/connectors/cache-connector.d.mts.map +1 -1
  297. package/esm/connectors/cache-connector.mjs +1 -1
  298. package/esm/connectors/cache-connector.mjs.map +1 -1
  299. package/esm/connectors/connectors-manager.d.mts +1 -1
  300. package/esm/connectors/connectors-manager.d.mts.map +1 -1
  301. package/esm/connectors/connectors-manager.mjs +2 -2
  302. package/esm/connectors/connectors-manager.mjs.map +1 -1
  303. package/esm/connectors/database-connector.d.mts +1 -1
  304. package/esm/connectors/database-connector.d.mts.map +1 -1
  305. package/esm/connectors/database-connector.mjs +1 -1
  306. package/esm/connectors/database-connector.mjs.map +1 -1
  307. package/esm/connectors/describe-server-address.mjs +1 -1
  308. package/esm/connectors/describe-server-address.mjs.map +1 -1
  309. package/esm/connectors/herald-connector.d.mts +1 -1
  310. package/esm/connectors/herald-connector.d.mts.map +1 -1
  311. package/esm/connectors/herald-connector.mjs +1 -1
  312. package/esm/connectors/herald-connector.mjs.map +1 -1
  313. package/esm/connectors/http-connector.d.mts +1 -1
  314. package/esm/connectors/http-connector.d.mts.map +1 -1
  315. package/esm/connectors/http-connector.mjs +4 -3
  316. package/esm/connectors/http-connector.mjs.map +1 -1
  317. package/esm/connectors/logger-connector.d.mts +1 -1
  318. package/esm/connectors/logger-connector.d.mts.map +1 -1
  319. package/esm/connectors/logger-connector.mjs +1 -1
  320. package/esm/connectors/logger-connector.mjs.map +1 -1
  321. package/esm/connectors/mail-connector.d.mts +1 -1
  322. package/esm/connectors/mail-connector.d.mts.map +1 -1
  323. package/esm/connectors/mail-connector.mjs +1 -1
  324. package/esm/connectors/mail-connector.mjs.map +1 -1
  325. package/esm/connectors/notifications-connector.d.mts +1 -1
  326. package/esm/connectors/notifications-connector.d.mts.map +1 -1
  327. package/esm/connectors/notifications-connector.mjs +1 -1
  328. package/esm/connectors/notifications-connector.mjs.map +1 -1
  329. package/esm/connectors/read-bound-port.mjs +1 -1
  330. package/esm/connectors/read-bound-port.mjs.map +1 -1
  331. package/esm/connectors/register-configured-connectors.d.mts +1 -1
  332. package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
  333. package/esm/connectors/register-configured-connectors.mjs +1 -1
  334. package/esm/connectors/register-configured-connectors.mjs.map +1 -1
  335. package/esm/connectors/single-server-warnings.mjs +1 -1
  336. package/esm/connectors/single-server-warnings.mjs.map +1 -1
  337. package/esm/connectors/socket-connector.d.mts +1 -1
  338. package/esm/connectors/socket-connector.d.mts.map +1 -1
  339. package/esm/connectors/socket-connector.mjs +1 -1
  340. package/esm/connectors/socket-connector.mjs.map +1 -1
  341. package/esm/connectors/storage.connector.d.mts +1 -1
  342. package/esm/connectors/storage.connector.d.mts.map +1 -1
  343. package/esm/connectors/storage.connector.mjs +1 -1
  344. package/esm/connectors/storage.connector.mjs.map +1 -1
  345. package/esm/connectors/types.d.mts +1 -1
  346. package/esm/connectors/types.d.mts.map +1 -1
  347. package/esm/connectors/types.mjs +1 -1
  348. package/esm/connectors/types.mjs.map +1 -1
  349. package/esm/container/container-instance-registry.mjs +1 -1
  350. package/esm/container/container-instance-registry.mjs.map +1 -1
  351. package/esm/container/development-app-modules.d.mts +1 -1
  352. package/esm/container/development-app-modules.d.mts.map +1 -1
  353. package/esm/container/development-model-modules.d.mts +1 -1
  354. package/esm/container/development-model-modules.d.mts.map +1 -1
  355. package/esm/container/index.d.mts +1 -1
  356. package/esm/container/index.d.mts.map +1 -1
  357. package/esm/container/index.mjs +1 -1
  358. package/esm/container/index.mjs.map +1 -1
  359. package/esm/database/create-database-action.mjs +1 -1
  360. package/esm/database/create-database-action.mjs.map +1 -1
  361. package/esm/database/drop-tables-action.mjs +1 -1
  362. package/esm/database/drop-tables-action.mjs.map +1 -1
  363. package/esm/database/migrate-action.mjs +1 -1
  364. package/esm/database/migrate-action.mjs.map +1 -1
  365. package/esm/database/models/database-log/database-log.d.mts +3 -39
  366. package/esm/database/models/database-log/database-log.d.mts.map +1 -1
  367. package/esm/database/models/database-log/database-log.mjs +1 -1
  368. package/esm/database/models/database-log/database-log.mjs.map +1 -1
  369. package/esm/database/pending-exit-code.mjs +1 -1
  370. package/esm/database/pending-exit-code.mjs.map +1 -1
  371. package/esm/database/resolve-pending-migrations.mjs +1 -1
  372. package/esm/database/resolve-pending-migrations.mjs.map +1 -1
  373. package/esm/database/seed-command-action.mjs +1 -1
  374. package/esm/database/seed-command-action.mjs.map +1 -1
  375. package/esm/database/seeds/seed-records-table-migration.mjs +1 -1
  376. package/esm/database/seeds/seed-records-table-migration.mjs.map +1 -1
  377. package/esm/database/seeds/seeder.d.mts +1 -1
  378. package/esm/database/seeds/seeder.d.mts.map +1 -1
  379. package/esm/database/seeds/seeder.errors.d.mts +5 -1
  380. package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
  381. package/esm/database/seeds/seeder.errors.mjs +3 -1
  382. package/esm/database/seeds/seeder.errors.mjs.map +1 -1
  383. package/esm/database/seeds/seeder.mjs +1 -1
  384. package/esm/database/seeds/seeder.mjs.map +1 -1
  385. package/esm/database/seeds/seeders.manager.mjs +1 -1
  386. package/esm/database/seeds/seeders.manager.mjs.map +1 -1
  387. package/esm/database/seeds/seeds-table-migration.mjs +1 -1
  388. package/esm/database/seeds/seeds-table-migration.mjs.map +1 -1
  389. package/esm/database/seeds/types.d.mts +1 -1
  390. package/esm/database/seeds/types.d.mts.map +1 -1
  391. package/esm/database/seeds/utils.mjs +1 -1
  392. package/esm/database/seeds/utils.mjs.map +1 -1
  393. package/esm/database/utils.d.mts +1 -1
  394. package/esm/database/utils.d.mts.map +1 -1
  395. package/esm/database/utils.mjs +1 -1
  396. package/esm/database/utils.mjs.map +1 -1
  397. package/esm/dev-server/app-module-registry.mjs +1 -1
  398. package/esm/dev-server/app-module-registry.mjs.map +1 -1
  399. package/esm/dev-server/boot-precondition-error.mjs +2 -1
  400. package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
  401. package/esm/dev-server/build-development-openapi-document.mjs +1 -1
  402. package/esm/dev-server/build-development-openapi-document.mjs.map +1 -1
  403. package/esm/dev-server/check-for-updates.mjs +1 -1
  404. package/esm/dev-server/check-for-updates.mjs.map +1 -1
  405. package/esm/dev-server/collect-development-api-routes.mjs +1 -1
  406. package/esm/dev-server/collect-development-api-routes.mjs.map +1 -1
  407. package/esm/dev-server/create-worker.mjs +16 -10
  408. package/esm/dev-server/create-worker.mjs.map +1 -1
  409. package/esm/dev-server/dependency-graph.d.mts +1 -1
  410. package/esm/dev-server/dependency-graph.d.mts.map +1 -1
  411. package/esm/dev-server/dependency-graph.mjs +1 -1
  412. package/esm/dev-server/dependency-graph.mjs.map +1 -1
  413. package/esm/dev-server/dev-agent-tooling.mjs +135 -0
  414. package/esm/dev-server/dev-agent-tooling.mjs.map +1 -0
  415. package/esm/dev-server/dev-logger.mjs +1 -1
  416. package/esm/dev-server/dev-logger.mjs.map +1 -1
  417. package/esm/dev-server/development-server.mjs +9 -1
  418. package/esm/dev-server/development-server.mjs.map +1 -1
  419. package/esm/dev-server/events.mjs +1 -1
  420. package/esm/dev-server/events.mjs.map +1 -1
  421. package/esm/dev-server/extract-translation-keys.mjs +1 -1
  422. package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
  423. package/esm/dev-server/file-event-handler.mjs +1 -1
  424. package/esm/dev-server/file-event-handler.mjs.map +1 -1
  425. package/esm/dev-server/file-manager.d.mts +1 -1
  426. package/esm/dev-server/file-manager.d.mts.map +1 -1
  427. package/esm/dev-server/file-manager.mjs +1 -1
  428. package/esm/dev-server/file-manager.mjs.map +1 -1
  429. package/esm/dev-server/file-operations.d.mts +1 -1
  430. package/esm/dev-server/file-operations.d.mts.map +1 -1
  431. package/esm/dev-server/file-operations.mjs +1 -1
  432. package/esm/dev-server/file-operations.mjs.map +1 -1
  433. package/esm/dev-server/files-orchestrator.mjs +22 -20
  434. package/esm/dev-server/files-orchestrator.mjs.map +1 -1
  435. package/esm/dev-server/files-watcher.mjs +2 -2
  436. package/esm/dev-server/files-watcher.mjs.map +1 -1
  437. package/esm/dev-server/flags.mjs +1 -1
  438. package/esm/dev-server/flags.mjs.map +1 -1
  439. package/esm/dev-server/health-checker/checkers/base-health-checker.mjs +1 -1
  440. package/esm/dev-server/health-checker/checkers/base-health-checker.mjs.map +1 -1
  441. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +3 -4
  442. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
  443. package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs +33 -0
  444. package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs.map +1 -0
  445. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +1 -1
  446. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
  447. package/esm/dev-server/health-checker/default-health-checkers.mjs +31 -0
  448. package/esm/dev-server/health-checker/default-health-checkers.mjs.map +1 -0
  449. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +10 -4
  450. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
  451. package/esm/dev-server/health-checker/file-health-result.d.mts +1 -1
  452. package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
  453. package/esm/dev-server/health-checker/file-health-result.mjs +1 -1
  454. package/esm/dev-server/health-checker/file-health-result.mjs.map +1 -1
  455. package/esm/dev-server/health-checker/files-healthcare.manager.mjs +16 -5
  456. package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
  457. package/esm/dev-server/health-checker/oxlint-runner.mjs +302 -0
  458. package/esm/dev-server/health-checker/oxlint-runner.mjs.map +1 -0
  459. package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs +1 -1
  460. package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs.map +1 -1
  461. package/esm/dev-server/health-checker/workers/oxlint-health.worker.d.mts +1 -0
  462. package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs +42 -0
  463. package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs.map +1 -0
  464. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +1 -1
  465. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
  466. package/esm/dev-server/layer-executor.mjs +1 -1
  467. package/esm/dev-server/layer-executor.mjs.map +1 -1
  468. package/esm/dev-server/legacy-locales-warning.mjs +1 -1
  469. package/esm/dev-server/legacy-locales-warning.mjs.map +1 -1
  470. package/esm/dev-server/loader/build-transpile-init.mjs +1 -1
  471. package/esm/dev-server/loader/build-transpile-init.mjs.map +1 -1
  472. package/esm/dev-server/loader/hook-thread.d.mts +1 -1
  473. package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
  474. package/esm/dev-server/loader/hook-thread.mjs +1 -1
  475. package/esm/dev-server/loader/hook-thread.mjs.map +1 -1
  476. package/esm/dev-server/loader/load-hook.d.mts +1 -1
  477. package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
  478. package/esm/dev-server/loader/load-hook.mjs +1 -1
  479. package/esm/dev-server/loader/load-hook.mjs.map +1 -1
  480. package/esm/dev-server/loader/loader-port-acks.mjs +34 -0
  481. package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -0
  482. package/esm/dev-server/loader/own-resolver.mjs +1 -1
  483. package/esm/dev-server/loader/own-resolver.mjs.map +1 -1
  484. package/esm/dev-server/loader/register-loader.mjs +2 -2
  485. package/esm/dev-server/loader/register-loader.mjs.map +1 -1
  486. package/esm/dev-server/loader/resolve-capture.mjs +1 -1
  487. package/esm/dev-server/loader/resolve-capture.mjs.map +1 -1
  488. package/esm/dev-server/loader/resolve-hook.d.mts +1 -1
  489. package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
  490. package/esm/dev-server/loader/resolve-hook.mjs +1 -1
  491. package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
  492. package/esm/dev-server/loader/source-slug.mjs +1 -1
  493. package/esm/dev-server/loader/source-slug.mjs.map +1 -1
  494. package/esm/dev-server/loader/transpile-cache.mjs +2 -2
  495. package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
  496. package/esm/dev-server/loader/version-registry.mjs +1 -1
  497. package/esm/dev-server/loader/version-registry.mjs.map +1 -1
  498. package/esm/dev-server/manifest-manager.d.mts +1 -1
  499. package/esm/dev-server/manifest-manager.d.mts.map +1 -1
  500. package/esm/dev-server/manifest-manager.mjs +1 -1
  501. package/esm/dev-server/manifest-manager.mjs.map +1 -1
  502. package/esm/dev-server/model-module-registry.mjs +1 -1
  503. package/esm/dev-server/model-module-registry.mjs.map +1 -1
  504. package/esm/dev-server/model-resource-typings.mjs +1 -1
  505. package/esm/dev-server/model-resource-typings.mjs.map +1 -1
  506. package/esm/dev-server/module-loader.mjs +2 -1
  507. package/esm/dev-server/module-loader.mjs.map +1 -1
  508. package/esm/dev-server/package-json-manager.mjs +1 -1
  509. package/esm/dev-server/package-json-manager.mjs.map +1 -1
  510. package/esm/dev-server/parse-imports.mjs +74 -7
  511. package/esm/dev-server/parse-imports.mjs.map +1 -1
  512. package/esm/dev-server/read-config-ast.mjs +1 -1
  513. package/esm/dev-server/read-config-ast.mjs.map +1 -1
  514. package/esm/dev-server/ready-block.mjs +1 -1
  515. package/esm/dev-server/ready-block.mjs.map +1 -1
  516. package/esm/dev-server/register-dev-shortcuts.mjs +1 -1
  517. package/esm/dev-server/register-dev-shortcuts.mjs.map +1 -1
  518. package/esm/dev-server/register-installed-devtools.mjs +1 -1
  519. package/esm/dev-server/register-installed-devtools.mjs.map +1 -1
  520. package/esm/dev-server/restart-dev-server.mjs +1 -1
  521. package/esm/dev-server/restart-dev-server.mjs.map +1 -1
  522. package/esm/dev-server/route-types-publisher.mjs +2 -2
  523. package/esm/dev-server/route-types-publisher.mjs.map +1 -1
  524. package/esm/dev-server/run-connector-typings.mjs +1 -1
  525. package/esm/dev-server/run-connector-typings.mjs.map +1 -1
  526. package/esm/dev-server/run-typings-generation.mjs +1 -1
  527. package/esm/dev-server/run-typings-generation.mjs.map +1 -1
  528. package/esm/dev-server/shortcuts.mjs +1 -1
  529. package/esm/dev-server/shortcuts.mjs.map +1 -1
  530. package/esm/dev-server/special-file-patterns.mjs +1 -1
  531. package/esm/dev-server/special-file-patterns.mjs.map +1 -1
  532. package/esm/dev-server/special-files-collector.d.mts +1 -1
  533. package/esm/dev-server/special-files-collector.d.mts.map +1 -1
  534. package/esm/dev-server/special-files-collector.mjs +1 -1
  535. package/esm/dev-server/special-files-collector.mjs.map +1 -1
  536. package/esm/dev-server/start-development-server.mjs +1 -1
  537. package/esm/dev-server/start-development-server.mjs.map +1 -1
  538. package/esm/dev-server/supervisor.mjs +1 -1
  539. package/esm/dev-server/supervisor.mjs.map +1 -1
  540. package/esm/dev-server/translation-keys-sources.mjs +2 -2
  541. package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
  542. package/esm/dev-server/tsconfig-manager.mjs +1 -1
  543. package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
  544. package/esm/dev-server/type-generator.mjs +33 -12
  545. package/esm/dev-server/type-generator.mjs.map +1 -1
  546. package/esm/dev-server/types.d.mts +1 -1
  547. package/esm/dev-server/types.d.mts.map +1 -1
  548. package/esm/dev-server/update-check-cache.mjs +1 -1
  549. package/esm/dev-server/update-check-cache.mjs.map +1 -1
  550. package/esm/dev-server/utils.mjs +1 -1
  551. package/esm/dev-server/utils.mjs.map +1 -1
  552. package/esm/encryption/encrypt.d.mts +1 -1
  553. package/esm/encryption/encrypt.d.mts.map +1 -1
  554. package/esm/encryption/encrypt.mjs +1 -1
  555. package/esm/encryption/encrypt.mjs.map +1 -1
  556. package/esm/encryption/hash.d.mts +1 -1
  557. package/esm/encryption/hash.d.mts.map +1 -1
  558. package/esm/encryption/hash.mjs +1 -1
  559. package/esm/encryption/hash.mjs.map +1 -1
  560. package/esm/encryption/password.d.mts +1 -1
  561. package/esm/encryption/password.d.mts.map +1 -1
  562. package/esm/encryption/password.mjs +1 -1
  563. package/esm/encryption/password.mjs.map +1 -1
  564. package/esm/encryption/types.d.mts +1 -1
  565. package/esm/encryption/types.d.mts.map +1 -1
  566. package/esm/errors/container-key-missing-error.mjs +2 -1
  567. package/esm/errors/container-key-missing-error.mjs.map +1 -1
  568. package/esm/errors/error-codes.d.mts +653 -0
  569. package/esm/errors/error-codes.d.mts.map +1 -0
  570. package/esm/errors/error-codes.mjs +634 -0
  571. package/esm/errors/error-codes.mjs.map +1 -0
  572. package/esm/errors/esbuild-binary-missing-error.mjs +2 -1
  573. package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
  574. package/esm/errors/index.d.mts +4 -0
  575. package/esm/errors/index.mjs +5 -0
  576. package/esm/errors/unknown-locale-error.mjs +2 -1
  577. package/esm/errors/unknown-locale-error.mjs.map +1 -1
  578. package/esm/errors/warlock-error.d.mts +23 -0
  579. package/esm/errors/warlock-error.d.mts.map +1 -0
  580. package/esm/errors/warlock-error.mjs +22 -0
  581. package/esm/errors/warlock-error.mjs.map +1 -0
  582. package/esm/generations/add-command.action.mjs +48 -9
  583. package/esm/generations/add-command.action.mjs.map +1 -1
  584. package/esm/generations/features/access.feature.mjs +2 -2
  585. package/esm/generations/features/access.feature.mjs.map +1 -1
  586. package/esm/generations/features/ai-anthropic.feature.mjs +1 -1
  587. package/esm/generations/features/ai-anthropic.feature.mjs.map +1 -1
  588. package/esm/generations/features/ai-bedrock.feature.mjs +1 -1
  589. package/esm/generations/features/ai-bedrock.feature.mjs.map +1 -1
  590. package/esm/generations/features/ai-google.feature.mjs +1 -1
  591. package/esm/generations/features/ai-google.feature.mjs.map +1 -1
  592. package/esm/generations/features/ai-ollama.feature.mjs +1 -1
  593. package/esm/generations/features/ai-ollama.feature.mjs.map +1 -1
  594. package/esm/generations/features/ai-openai.feature.mjs +1 -1
  595. package/esm/generations/features/ai-openai.feature.mjs.map +1 -1
  596. package/esm/generations/features/ai-panoptic.feature.mjs +1 -1
  597. package/esm/generations/features/ai-panoptic.feature.mjs.map +1 -1
  598. package/esm/generations/features/ai-tools.feature.mjs +1 -1
  599. package/esm/generations/features/ai-tools.feature.mjs.map +1 -1
  600. package/esm/generations/features/ai-workspace.feature.mjs +1 -1
  601. package/esm/generations/features/ai-workspace.feature.mjs.map +1 -1
  602. package/esm/generations/features/ai.feature.mjs +1 -1
  603. package/esm/generations/features/ai.feature.mjs.map +1 -1
  604. package/esm/generations/features/auth-google.feature.mjs +1 -1
  605. package/esm/generations/features/auth-google.feature.mjs.map +1 -1
  606. package/esm/generations/features/auth-passkeys.feature.mjs +1 -1
  607. package/esm/generations/features/auth-passkeys.feature.mjs.map +1 -1
  608. package/esm/generations/features/bull-board.feature.mjs +2 -2
  609. package/esm/generations/features/bull-board.feature.mjs.map +1 -1
  610. package/esm/generations/features/devtools.feature.mjs +1 -1
  611. package/esm/generations/features/devtools.feature.mjs.map +1 -1
  612. package/esm/generations/features/herald.feature.mjs +1 -1
  613. package/esm/generations/features/herald.feature.mjs.map +1 -1
  614. package/esm/generations/features/image.feature.mjs +1 -1
  615. package/esm/generations/features/image.feature.mjs.map +1 -1
  616. package/esm/generations/features/index.mjs +1 -1
  617. package/esm/generations/features/index.mjs.map +1 -1
  618. package/esm/generations/features/mail.feature.mjs +1 -1
  619. package/esm/generations/features/mail.feature.mjs.map +1 -1
  620. package/esm/generations/features/mongodb.feature.mjs +1 -1
  621. package/esm/generations/features/mongodb.feature.mjs.map +1 -1
  622. package/esm/generations/features/mysql.feature.mjs +1 -1
  623. package/esm/generations/features/mysql.feature.mjs.map +1 -1
  624. package/esm/generations/features/notifications.feature.mjs +124 -17
  625. package/esm/generations/features/notifications.feature.mjs.map +1 -1
  626. package/esm/generations/features/postgres.feature.mjs +1 -1
  627. package/esm/generations/features/postgres.feature.mjs.map +1 -1
  628. package/esm/generations/features/queue.feature.mjs +2 -2
  629. package/esm/generations/features/queue.feature.mjs.map +1 -1
  630. package/esm/generations/features/react-email.feature.mjs +2 -2
  631. package/esm/generations/features/react-email.feature.mjs.map +1 -1
  632. package/esm/generations/features/react.feature.mjs +1 -1
  633. package/esm/generations/features/react.feature.mjs.map +1 -1
  634. package/esm/generations/features/redis.feature.mjs +1 -1
  635. package/esm/generations/features/redis.feature.mjs.map +1 -1
  636. package/esm/generations/features/s3.feature.mjs +1 -1
  637. package/esm/generations/features/s3.feature.mjs.map +1 -1
  638. package/esm/generations/features/scheduler.feature.mjs +1 -1
  639. package/esm/generations/features/scheduler.feature.mjs.map +1 -1
  640. package/esm/generations/features/ses.feature.mjs +1 -1
  641. package/esm/generations/features/ses.feature.mjs.map +1 -1
  642. package/esm/generations/features/shadcn.feature.mjs +2 -2
  643. package/esm/generations/features/shadcn.feature.mjs.map +1 -1
  644. package/esm/generations/features/shared/insert-connector-entry.mjs +1 -1
  645. package/esm/generations/features/shared/insert-connector-entry.mjs.map +1 -1
  646. package/esm/generations/features/shared/insert-queue-dashboard-block.mjs +1 -1
  647. package/esm/generations/features/shared/insert-queue-dashboard-block.mjs.map +1 -1
  648. package/esm/generations/features/shared/link-ai-package-import.mjs +2 -2
  649. package/esm/generations/features/shared/link-ai-package-import.mjs.map +1 -1
  650. package/esm/generations/features/shared/merge-web-sitemap-config.mjs +1 -1
  651. package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
  652. package/esm/generations/features/shared/migration-timestamp.mjs +1 -1
  653. package/esm/generations/features/shared/migration-timestamp.mjs.map +1 -1
  654. package/esm/generations/features/shared/patch-tsconfig-include.mjs +2 -2
  655. package/esm/generations/features/shared/patch-tsconfig-include.mjs.map +1 -1
  656. package/esm/generations/features/shared/relocate-conflicting-home-route.mjs +2 -2
  657. package/esm/generations/features/shared/relocate-conflicting-home-route.mjs.map +1 -1
  658. package/esm/generations/features/shared/resolve-contact-scaffold.mjs +1 -1
  659. package/esm/generations/features/shared/resolve-contact-scaffold.mjs.map +1 -1
  660. package/esm/generations/features/sitemap.feature.mjs +2 -2
  661. package/esm/generations/features/sitemap.feature.mjs.map +1 -1
  662. package/esm/generations/features/socket.feature.mjs +1 -1
  663. package/esm/generations/features/socket.feature.mjs.map +1 -1
  664. package/esm/generations/features/tailwind.feature.mjs +2 -2
  665. package/esm/generations/features/tailwind.feature.mjs.map +1 -1
  666. package/esm/generations/features/test.feature.mjs +12 -7
  667. package/esm/generations/features/test.feature.mjs.map +1 -1
  668. package/esm/generations/features/types.mjs +1 -1
  669. package/esm/generations/features/types.mjs.map +1 -1
  670. package/esm/generations/features/web.feature.mjs +2 -2
  671. package/esm/generations/features/web.feature.mjs.map +1 -1
  672. package/esm/generations/generation-fs.mjs +73 -0
  673. package/esm/generations/generation-fs.mjs.map +1 -0
  674. package/esm/generations/generation-run.mjs +185 -0
  675. package/esm/generations/generation-run.mjs.map +1 -0
  676. package/esm/generations/pnpm-build-approvals.mjs +89 -3
  677. package/esm/generations/pnpm-build-approvals.mjs.map +1 -1
  678. package/esm/generations/stubs.mjs +327 -79
  679. package/esm/generations/stubs.mjs.map +1 -1
  680. package/esm/http/boot-port-preflight.d.mts +1 -1
  681. package/esm/http/boot-port-preflight.d.mts.map +1 -1
  682. package/esm/http/boot-port-preflight.mjs +1 -1
  683. package/esm/http/boot-port-preflight.mjs.map +1 -1
  684. package/esm/http/bounded-stream-queue.d.mts +10 -0
  685. package/esm/http/bounded-stream-queue.d.mts.map +1 -0
  686. package/esm/http/bounded-stream-queue.mjs +97 -0
  687. package/esm/http/bounded-stream-queue.mjs.map +1 -0
  688. package/esm/http/build-cors-options.mjs +1 -1
  689. package/esm/http/build-cors-options.mjs.map +1 -1
  690. package/esm/http/build-rate-limit-options.d.mts +35 -1
  691. package/esm/http/build-rate-limit-options.d.mts.map +1 -1
  692. package/esm/http/build-rate-limit-options.mjs +7 -1
  693. package/esm/http/build-rate-limit-options.mjs.map +1 -1
  694. package/esm/http/conditional-request.d.mts +86 -0
  695. package/esm/http/conditional-request.d.mts.map +1 -0
  696. package/esm/http/conditional-request.mjs +121 -0
  697. package/esm/http/conditional-request.mjs.map +1 -0
  698. package/esm/http/config.d.mts +1 -1
  699. package/esm/http/config.d.mts.map +1 -1
  700. package/esm/http/config.mjs +1 -1
  701. package/esm/http/config.mjs.map +1 -1
  702. package/esm/http/context/request-context.d.mts +1 -1
  703. package/esm/http/context/request-context.d.mts.map +1 -1
  704. package/esm/http/context/request-context.mjs +1 -1
  705. package/esm/http/context/request-context.mjs.map +1 -1
  706. package/esm/http/context/request-memo.d.mts +1 -1
  707. package/esm/http/context/request-memo.d.mts.map +1 -1
  708. package/esm/http/context/request-memo.mjs +1 -1
  709. package/esm/http/context/request-memo.mjs.map +1 -1
  710. package/esm/http/createHttpApplication.d.mts +1 -1
  711. package/esm/http/createHttpApplication.d.mts.map +1 -1
  712. package/esm/http/createHttpApplication.mjs +1 -1
  713. package/esm/http/createHttpApplication.mjs.map +1 -1
  714. package/esm/http/csp.d.mts +3 -1
  715. package/esm/http/csp.d.mts.map +1 -1
  716. package/esm/http/csp.mjs +2 -1
  717. package/esm/http/csp.mjs.map +1 -1
  718. package/esm/http/csrf-default-guard.d.mts +1 -1
  719. package/esm/http/csrf-default-guard.d.mts.map +1 -1
  720. package/esm/http/csrf-default-guard.mjs +1 -1
  721. package/esm/http/csrf-default-guard.mjs.map +1 -1
  722. package/esm/http/csrf-origin-policy.d.mts +1 -1
  723. package/esm/http/csrf-origin-policy.d.mts.map +1 -1
  724. package/esm/http/csrf-origin-policy.mjs +1 -1
  725. package/esm/http/csrf-origin-policy.mjs.map +1 -1
  726. package/esm/http/database/RequestLog.d.mts +27 -135
  727. package/esm/http/database/RequestLog.d.mts.map +1 -1
  728. package/esm/http/database/RequestLog.mjs +1 -1
  729. package/esm/http/database/RequestLog.mjs.map +1 -1
  730. package/esm/http/error-codes.d.mts +1 -1
  731. package/esm/http/error-codes.d.mts.map +1 -1
  732. package/esm/http/error-codes.mjs +1 -1
  733. package/esm/http/error-codes.mjs.map +1 -1
  734. package/esm/http/error-mapper.d.mts +48 -0
  735. package/esm/http/error-mapper.d.mts.map +1 -0
  736. package/esm/http/error-mapper.mjs +48 -0
  737. package/esm/http/error-mapper.mjs.map +1 -0
  738. package/esm/http/errors/errors.d.mts +3 -1
  739. package/esm/http/errors/errors.d.mts.map +1 -1
  740. package/esm/http/errors/errors.mjs +2 -1
  741. package/esm/http/errors/errors.mjs.map +1 -1
  742. package/esm/http/escape-header-value.d.mts +18 -0
  743. package/esm/http/escape-header-value.d.mts.map +1 -0
  744. package/esm/http/escape-header-value.mjs +27 -0
  745. package/esm/http/escape-header-value.mjs.map +1 -0
  746. package/esm/http/events.d.mts +1 -1
  747. package/esm/http/events.d.mts.map +1 -1
  748. package/esm/http/events.mjs +1 -1
  749. package/esm/http/events.mjs.map +1 -1
  750. package/esm/http/flush-pending-cookies.mjs +1 -1
  751. package/esm/http/flush-pending-cookies.mjs.map +1 -1
  752. package/esm/http/health.d.mts +1 -1
  753. package/esm/http/health.d.mts.map +1 -1
  754. package/esm/http/health.mjs +1 -1
  755. package/esm/http/health.mjs.map +1 -1
  756. package/esm/http/index.d.mts +13 -6
  757. package/esm/http/index.mjs +12 -6
  758. package/esm/http/lazy-static.mjs +194 -0
  759. package/esm/http/lazy-static.mjs.map +1 -0
  760. package/esm/http/middleware/cache-response-middleware.d.mts +1 -1
  761. package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
  762. package/esm/http/middleware/cache-response-middleware.mjs +1 -1
  763. package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
  764. package/esm/http/middleware/concurrency-limit.middleware.d.mts +1 -1
  765. package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
  766. package/esm/http/middleware/concurrency-limit.middleware.mjs +1 -1
  767. package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
  768. package/esm/http/middleware/idempotency.middleware.d.mts +1 -1
  769. package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
  770. package/esm/http/middleware/idempotency.middleware.mjs +1 -1
  771. package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
  772. package/esm/http/middleware/inject-request-context.d.mts +1 -1
  773. package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
  774. package/esm/http/middleware/inject-request-context.mjs +4 -2
  775. package/esm/http/middleware/inject-request-context.mjs.map +1 -1
  776. package/esm/http/middleware/ip-filter.middleware.d.mts +1 -1
  777. package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
  778. package/esm/http/middleware/ip-filter.middleware.mjs +1 -1
  779. package/esm/http/middleware/ip-filter.middleware.mjs.map +1 -1
  780. package/esm/http/middleware/maintenance.middleware.d.mts +1 -1
  781. package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
  782. package/esm/http/middleware/maintenance.middleware.mjs +1 -1
  783. package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
  784. package/esm/http/middleware/max-body-size.middleware.d.mts +1 -1
  785. package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
  786. package/esm/http/middleware/max-body-size.middleware.mjs +1 -1
  787. package/esm/http/middleware/max-body-size.middleware.mjs.map +1 -1
  788. package/esm/http/middleware/middleware-list.d.mts +1 -1
  789. package/esm/http/middleware/middleware-list.d.mts.map +1 -1
  790. package/esm/http/middleware/middleware-list.mjs +1 -1
  791. package/esm/http/middleware/middleware-list.mjs.map +1 -1
  792. package/esm/http/middleware/rate-limit.middleware.d.mts +20 -5
  793. package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
  794. package/esm/http/middleware/rate-limit.middleware.mjs +34 -12
  795. package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
  796. package/esm/http/middleware/utils/cidr-match.d.mts +1 -1
  797. package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
  798. package/esm/http/middleware/utils/cidr-match.mjs +1 -1
  799. package/esm/http/middleware/utils/cidr-match.mjs.map +1 -1
  800. package/esm/http/middleware/utils/idempotency-key.d.mts +1 -1
  801. package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
  802. package/esm/http/middleware/utils/idempotency-key.mjs +1 -1
  803. package/esm/http/middleware/utils/idempotency-key.mjs.map +1 -1
  804. package/esm/http/middleware/utils/parse-size.d.mts +1 -1
  805. package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
  806. package/esm/http/middleware/utils/parse-size.mjs +1 -1
  807. package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
  808. package/esm/http/parse-urlencoded-body.mjs +1 -1
  809. package/esm/http/parse-urlencoded-body.mjs.map +1 -1
  810. package/esm/http/plugins.d.mts +9 -2
  811. package/esm/http/plugins.d.mts.map +1 -1
  812. package/esm/http/plugins.mjs +23 -6
  813. package/esm/http/plugins.mjs.map +1 -1
  814. package/esm/http/port-preflight.d.mts +1 -1
  815. package/esm/http/port-preflight.d.mts.map +1 -1
  816. package/esm/http/port-preflight.mjs +1 -1
  817. package/esm/http/port-preflight.mjs.map +1 -1
  818. package/esm/http/rate-limit-cache-store.mjs +156 -0
  819. package/esm/http/rate-limit-cache-store.mjs.map +1 -0
  820. package/esm/http/ready-report.d.mts +1 -1
  821. package/esm/http/ready-report.d.mts.map +1 -1
  822. package/esm/http/ready-report.mjs +1 -1
  823. package/esm/http/ready-report.mjs.map +1 -1
  824. package/esm/http/request-controller.d.mts +1 -1
  825. package/esm/http/request-controller.d.mts.map +1 -1
  826. package/esm/http/request-controller.mjs +1 -1
  827. package/esm/http/request-controller.mjs.map +1 -1
  828. package/esm/http/request-log-snapshot.d.mts +130 -0
  829. package/esm/http/request-log-snapshot.d.mts.map +1 -0
  830. package/esm/http/request-log-snapshot.mjs +220 -0
  831. package/esm/http/request-log-snapshot.mjs.map +1 -0
  832. package/esm/http/request.d.mts +43 -4
  833. package/esm/http/request.d.mts.map +1 -1
  834. package/esm/http/request.mjs +70 -6
  835. package/esm/http/request.mjs.map +1 -1
  836. package/esm/http/resolve-bind-port.mjs +1 -1
  837. package/esm/http/resolve-bind-port.mjs.map +1 -1
  838. package/esm/http/response.d.mts +51 -9
  839. package/esm/http/response.d.mts.map +1 -1
  840. package/esm/http/response.mjs +301 -101
  841. package/esm/http/response.mjs.map +1 -1
  842. package/esm/http/safe-redirect.d.mts +51 -0
  843. package/esm/http/safe-redirect.d.mts.map +1 -0
  844. package/esm/http/safe-redirect.mjs +80 -0
  845. package/esm/http/safe-redirect.mjs.map +1 -0
  846. package/esm/http/serialized.d.mts +1 -1
  847. package/esm/http/serialized.d.mts.map +1 -1
  848. package/esm/http/server-rebuilt.d.mts +1 -1
  849. package/esm/http/server-rebuilt.d.mts.map +1 -1
  850. package/esm/http/server-rebuilt.mjs +1 -1
  851. package/esm/http/server-rebuilt.mjs.map +1 -1
  852. package/esm/http/server.d.mts +36 -6
  853. package/esm/http/server.d.mts.map +1 -1
  854. package/esm/http/server.mjs +80 -5
  855. package/esm/http/server.mjs.map +1 -1
  856. package/esm/http/stream-react-response.d.mts +1 -1
  857. package/esm/http/stream-react-response.d.mts.map +1 -1
  858. package/esm/http/stream-react-response.mjs +1 -1
  859. package/esm/http/stream-react-response.mjs.map +1 -1
  860. package/esm/http/stream-transport.mjs +77 -0
  861. package/esm/http/stream-transport.mjs.map +1 -0
  862. package/esm/http/tracing/trace-id.d.mts +1 -1
  863. package/esm/http/tracing/trace-id.d.mts.map +1 -1
  864. package/esm/http/tracing/trace-id.mjs +1 -1
  865. package/esm/http/tracing/trace-id.mjs.map +1 -1
  866. package/esm/http/tracing/tracing-dispatcher.d.mts +1 -1
  867. package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
  868. package/esm/http/tracing/tracing-dispatcher.mjs +1 -1
  869. package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
  870. package/esm/http/tracing/tracing.type.d.mts +1 -1
  871. package/esm/http/tracing/tracing.type.d.mts.map +1 -1
  872. package/esm/http/types.d.mts +165 -7
  873. package/esm/http/types.d.mts.map +1 -1
  874. package/esm/http/uploaded-file.d.mts +2 -2
  875. package/esm/http/uploaded-file.d.mts.map +1 -1
  876. package/esm/http/uploaded-file.mjs +2 -2
  877. package/esm/http/uploaded-file.mjs.map +1 -1
  878. package/esm/http/uploads/detect-image-format.mjs +1 -1
  879. package/esm/http/uploads/detect-image-format.mjs.map +1 -1
  880. package/esm/http/uploads/generate-image-variant.mjs +2 -2
  881. package/esm/http/uploads/generate-image-variant.mjs.map +1 -1
  882. package/esm/http/uploads/generate-image-variants.d.mts +11 -8
  883. package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
  884. package/esm/http/uploads/generate-image-variants.mjs +75 -30
  885. package/esm/http/uploads/generate-image-variants.mjs.map +1 -1
  886. package/esm/http/uploads/image-variant-cache-entries.mjs +78 -0
  887. package/esm/http/uploads/image-variant-cache-entries.mjs.map +1 -0
  888. package/esm/http/uploads/image-variant-cache.mjs +185 -0
  889. package/esm/http/uploads/image-variant-cache.mjs.map +1 -0
  890. package/esm/http/uploads/image-variant-types.d.mts +3 -1
  891. package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
  892. package/esm/http/uploads/image-variants-config-error.d.mts +4 -2
  893. package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
  894. package/esm/http/uploads/image-variants-config-error.mjs +4 -3
  895. package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
  896. package/esm/http/uploads/index.d.mts +3 -1
  897. package/esm/http/uploads/index.mjs +3 -1
  898. package/esm/http/uploads/is-path-inside.mjs +1 -1
  899. package/esm/http/uploads/is-path-inside.mjs.map +1 -1
  900. package/esm/http/uploads/load-variant-source.mjs +2 -2
  901. package/esm/http/uploads/load-variant-source.mjs.map +1 -1
  902. package/esm/http/uploads/local-disk-root.mjs +24 -0
  903. package/esm/http/uploads/local-disk-root.mjs.map +1 -0
  904. package/esm/http/uploads/parse-uploaded-file-query.mjs +1 -1
  905. package/esm/http/uploads/parse-uploaded-file-query.mjs.map +1 -1
  906. package/esm/http/uploads/purge-image-variants.d.mts +37 -0
  907. package/esm/http/uploads/purge-image-variants.d.mts.map +1 -0
  908. package/esm/http/uploads/purge-image-variants.mjs +46 -0
  909. package/esm/http/uploads/purge-image-variants.mjs.map +1 -0
  910. package/esm/http/uploads/read-file-head.mjs +1 -1
  911. package/esm/http/uploads/read-file-head.mjs.map +1 -1
  912. package/esm/http/uploads/remote-variant-source.mjs +115 -0
  913. package/esm/http/uploads/remote-variant-source.mjs.map +1 -0
  914. package/esm/http/uploads/resolve-image-variant.d.mts +72 -0
  915. package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -0
  916. package/esm/http/uploads/resolve-image-variant.mjs +99 -0
  917. package/esm/http/uploads/resolve-image-variant.mjs.map +1 -0
  918. package/esm/http/uploads/resolve-image-variants-config.mjs +6 -4
  919. package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
  920. package/esm/http/uploads/resolve-inline-image-content-type.mjs +1 -1
  921. package/esm/http/uploads/resolve-inline-image-content-type.mjs.map +1 -1
  922. package/esm/http/uploads/resolve-original-content-type.mjs +1 -1
  923. package/esm/http/uploads/resolve-original-content-type.mjs.map +1 -1
  924. package/esm/http/uploads/resolve-remote-image-variant.mjs +89 -0
  925. package/esm/http/uploads/resolve-remote-image-variant.mjs.map +1 -0
  926. package/esm/http/uploads/resolve-upload-path.mjs +3 -2
  927. package/esm/http/uploads/resolve-upload-path.mjs.map +1 -1
  928. package/esm/http/uploads/resolve-variant-candidate.mjs +1 -1
  929. package/esm/http/uploads/resolve-variant-candidate.mjs.map +1 -1
  930. package/esm/http/uploads/single-flight.mjs +1 -1
  931. package/esm/http/uploads/single-flight.mjs.map +1 -1
  932. package/esm/http/uploads/trim-image-variant-cache.mjs +193 -0
  933. package/esm/http/uploads/trim-image-variant-cache.mjs.map +1 -0
  934. package/esm/http/uploads/uploaded-file.controller.d.mts +27 -7
  935. package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
  936. package/esm/http/uploads/uploaded-file.controller.mjs +72 -92
  937. package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
  938. package/esm/http/uploads/variant-cache-key.mjs +31 -6
  939. package/esm/http/uploads/variant-cache-key.mjs.map +1 -1
  940. package/esm/http/uploads/variant-generations.mjs +1 -1
  941. package/esm/http/uploads/variant-generations.mjs.map +1 -1
  942. package/esm/http/uploads-config.d.mts +1 -1
  943. package/esm/http/uploads-config.d.mts.map +1 -1
  944. package/esm/http/uploads-config.mjs +1 -1
  945. package/esm/http/uploads-config.mjs.map +1 -1
  946. package/esm/http/uploads-types.d.mts +7 -3
  947. package/esm/http/uploads-types.d.mts.map +1 -1
  948. package/esm/http/xmlable.d.mts +1 -1
  949. package/esm/http/xmlable.d.mts.map +1 -1
  950. package/esm/image/image.d.mts +1 -1
  951. package/esm/image/image.d.mts.map +1 -1
  952. package/esm/image/image.mjs +1 -1
  953. package/esm/image/image.mjs.map +1 -1
  954. package/esm/index.d.mts +27 -12
  955. package/esm/index.mjs +23 -9
  956. package/esm/loader/app-module-importer.d.mts +1 -1
  957. package/esm/loader/app-module-importer.d.mts.map +1 -1
  958. package/esm/loader/app-module-importer.mjs +1 -1
  959. package/esm/loader/app-module-importer.mjs.map +1 -1
  960. package/esm/localization/parse-locale-dictionary.d.mts +3 -1
  961. package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
  962. package/esm/localization/parse-locale-dictionary.mjs +2 -1
  963. package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
  964. package/esm/localization/register-locale-dictionary.d.mts +1 -1
  965. package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
  966. package/esm/localization/register-locale-dictionary.mjs +1 -1
  967. package/esm/localization/register-locale-dictionary.mjs.map +1 -1
  968. package/esm/logger/fatal-visibility.d.mts +1 -1
  969. package/esm/logger/fatal-visibility.d.mts.map +1 -1
  970. package/esm/logger/fatal-visibility.mjs +1 -1
  971. package/esm/logger/fatal-visibility.mjs.map +1 -1
  972. package/esm/logger/logger.d.mts +1 -1
  973. package/esm/logger/logger.d.mts.map +1 -1
  974. package/esm/logger/logger.mjs +1 -1
  975. package/esm/logger/logger.mjs.map +1 -1
  976. package/esm/logger/types.d.mts +1 -1
  977. package/esm/logger/types.d.mts.map +1 -1
  978. package/esm/mail/config.d.mts +13 -2
  979. package/esm/mail/config.d.mts.map +1 -1
  980. package/esm/mail/config.mjs +17 -2
  981. package/esm/mail/config.mjs.map +1 -1
  982. package/esm/mail/events.d.mts +1 -1
  983. package/esm/mail/events.d.mts.map +1 -1
  984. package/esm/mail/events.mjs +1 -1
  985. package/esm/mail/events.mjs.map +1 -1
  986. package/esm/mail/index.d.mts +1 -1
  987. package/esm/mail/index.mjs +1 -1
  988. package/esm/mail/mail.d.mts +1 -1
  989. package/esm/mail/mail.d.mts.map +1 -1
  990. package/esm/mail/mail.mjs +1 -1
  991. package/esm/mail/mail.mjs.map +1 -1
  992. package/esm/mail/mailer-pool.d.mts +1 -1
  993. package/esm/mail/mailer-pool.d.mts.map +1 -1
  994. package/esm/mail/mailer-pool.mjs +1 -1
  995. package/esm/mail/mailer-pool.mjs.map +1 -1
  996. package/esm/mail/react-mail.d.mts +1 -1
  997. package/esm/mail/react-mail.d.mts.map +1 -1
  998. package/esm/mail/react-mail.mjs +1 -1
  999. package/esm/mail/react-mail.mjs.map +1 -1
  1000. package/esm/mail/send-mail.d.mts +1 -1
  1001. package/esm/mail/send-mail.d.mts.map +1 -1
  1002. package/esm/mail/send-mail.mjs +7 -7
  1003. package/esm/mail/send-mail.mjs.map +1 -1
  1004. package/esm/mail/test-mailbox.d.mts +1 -1
  1005. package/esm/mail/test-mailbox.d.mts.map +1 -1
  1006. package/esm/mail/test-mailbox.mjs +1 -1
  1007. package/esm/mail/test-mailbox.mjs.map +1 -1
  1008. package/esm/mail/types.d.mts +1 -1
  1009. package/esm/mail/types.d.mts.map +1 -1
  1010. package/esm/mail/types.mjs +1 -1
  1011. package/esm/mail/types.mjs.map +1 -1
  1012. package/esm/manifest/manifest-manager.mjs +1 -1
  1013. package/esm/manifest/manifest-manager.mjs.map +1 -1
  1014. package/esm/net/index.d.mts +2 -0
  1015. package/esm/net/index.mjs +3 -0
  1016. package/esm/openapi/build-openapi-document.d.mts +1 -1
  1017. package/esm/openapi/build-openapi-document.d.mts.map +1 -1
  1018. package/esm/openapi/build-openapi-document.mjs +9 -6
  1019. package/esm/openapi/build-openapi-document.mjs.map +1 -1
  1020. package/esm/openapi/cast-schema.mjs +1 -1
  1021. package/esm/openapi/cast-schema.mjs.map +1 -1
  1022. package/esm/openapi/collect-openapi-document.mjs +1 -1
  1023. package/esm/openapi/collect-openapi-document.mjs.map +1 -1
  1024. package/esm/openapi/development-openapi-provider.d.mts +1 -1
  1025. package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
  1026. package/esm/openapi/development-openapi-provider.mjs +1 -1
  1027. package/esm/openapi/development-openapi-provider.mjs.map +1 -1
  1028. package/esm/openapi/error-responses.mjs +29 -3
  1029. package/esm/openapi/error-responses.mjs.map +1 -1
  1030. package/esm/openapi/openapi-child-output.mjs +1 -1
  1031. package/esm/openapi/openapi-child-output.mjs.map +1 -1
  1032. package/esm/openapi/openapi-protocol.mjs +1 -1
  1033. package/esm/openapi/openapi-protocol.mjs.map +1 -1
  1034. package/esm/openapi/paths.mjs +1 -1
  1035. package/esm/openapi/paths.mjs.map +1 -1
  1036. package/esm/openapi/postman/build-request-body.mjs +1 -1
  1037. package/esm/openapi/postman/build-request-body.mjs.map +1 -1
  1038. package/esm/openapi/postman/build-request-url.mjs +1 -1
  1039. package/esm/openapi/postman/build-request-url.mjs.map +1 -1
  1040. package/esm/openapi/postman/build-saved-responses.mjs +1 -1
  1041. package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
  1042. package/esm/openapi/postman/example-from-schema.d.mts +1 -1
  1043. package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
  1044. package/esm/openapi/postman/example-from-schema.mjs +1 -1
  1045. package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
  1046. package/esm/openapi/postman/http-status-text.mjs +1 -1
  1047. package/esm/openapi/postman/http-status-text.mjs.map +1 -1
  1048. package/esm/openapi/postman/openapi-to-postman-collection.d.mts +1 -1
  1049. package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
  1050. package/esm/openapi/postman/openapi-to-postman-collection.mjs +1 -1
  1051. package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
  1052. package/esm/openapi/postman/postman-types.d.mts +1 -1
  1053. package/esm/openapi/postman/postman-types.d.mts.map +1 -1
  1054. package/esm/openapi/postman/resolve-operation-auth.mjs +1 -1
  1055. package/esm/openapi/postman/resolve-operation-auth.mjs.map +1 -1
  1056. package/esm/openapi/postman/schema-refs.d.mts +1 -1
  1057. package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
  1058. package/esm/openapi/postman/schema-refs.mjs +1 -1
  1059. package/esm/openapi/postman/schema-refs.mjs.map +1 -1
  1060. package/esm/openapi/postman/uuid-v5.mjs +1 -1
  1061. package/esm/openapi/postman/uuid-v5.mjs.map +1 -1
  1062. package/esm/openapi/request-schemas.mjs +1 -1
  1063. package/esm/openapi/request-schemas.mjs.map +1 -1
  1064. package/esm/openapi/response-schemas.mjs +1 -1
  1065. package/esm/openapi/response-schemas.mjs.map +1 -1
  1066. package/esm/openapi/schema-registry.d.mts +1 -0
  1067. package/esm/openapi/schema-registry.mjs +1 -1
  1068. package/esm/openapi/schema-registry.mjs.map +1 -1
  1069. package/esm/openapi/security.mjs +1 -1
  1070. package/esm/openapi/security.mjs.map +1 -1
  1071. package/esm/openapi/types.d.mts +4 -3
  1072. package/esm/openapi/types.d.mts.map +1 -1
  1073. package/esm/production/assert-dist-ready-to-start.mjs +1 -1
  1074. package/esm/production/assert-dist-ready-to-start.mjs.map +1 -1
  1075. package/esm/production/assert-generated-imports.mjs +2 -1
  1076. package/esm/production/assert-generated-imports.mjs.map +1 -1
  1077. package/esm/production/build-app-production.mjs +1 -1
  1078. package/esm/production/build-app-production.mjs.map +1 -1
  1079. package/esm/production/build-contributions.mjs +1 -1
  1080. package/esm/production/build-contributions.mjs.map +1 -1
  1081. package/esm/production/bundle-framework-dependencies.mjs +1 -1
  1082. package/esm/production/bundle-framework-dependencies.mjs.map +1 -1
  1083. package/esm/production/dist-build-manifest.mjs +1 -1
  1084. package/esm/production/dist-build-manifest.mjs.map +1 -1
  1085. package/esm/production/esbuild-plugins.mjs +1 -1
  1086. package/esm/production/esbuild-plugins.mjs.map +1 -1
  1087. package/esm/production/esbuild-preflight.mjs +1 -1
  1088. package/esm/production/esbuild-preflight.mjs.map +1 -1
  1089. package/esm/production/production-builder.mjs +13 -5
  1090. package/esm/production/production-builder.mjs.map +1 -1
  1091. package/esm/production/production-supervisor.mjs +1 -1
  1092. package/esm/production/production-supervisor.mjs.map +1 -1
  1093. package/esm/production/promote-dist.mjs +1 -1
  1094. package/esm/production/promote-dist.mjs.map +1 -1
  1095. package/esm/production/registration-child-runner.mjs +1 -1
  1096. package/esm/production/registration-child-runner.mjs.map +1 -1
  1097. package/esm/production/resolve-build-config.d.mts +1 -1
  1098. package/esm/production/resolve-build-config.d.mts.map +1 -1
  1099. package/esm/production/resolve-build-config.mjs +2 -1
  1100. package/esm/production/resolve-build-config.mjs.map +1 -1
  1101. package/esm/production/route-registration-child.mjs +1 -1
  1102. package/esm/production/route-registration-child.mjs.map +1 -1
  1103. package/esm/production/route-registration-snapshot.mjs +1 -1
  1104. package/esm/production/route-registration-snapshot.mjs.map +1 -1
  1105. package/esm/production/tsconfig-path-aliases.mjs +1 -1
  1106. package/esm/production/tsconfig-path-aliases.mjs.map +1 -1
  1107. package/esm/react/index.d.mts +1 -1
  1108. package/esm/react/index.d.mts.map +1 -1
  1109. package/esm/react/index.mjs +1 -1
  1110. package/esm/react/index.mjs.map +1 -1
  1111. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +1 -1
  1112. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
  1113. package/esm/repositories/adapters/cascade/cascade-adapter.mjs +1 -1
  1114. package/esm/repositories/adapters/cascade/cascade-adapter.mjs.map +1 -1
  1115. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +1 -1
  1116. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
  1117. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +1 -1
  1118. package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
  1119. package/esm/repositories/adapters/cascade/filter-applicator.mjs +1 -1
  1120. package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
  1121. package/esm/repositories/contracts/query-builder.contract.d.mts +1 -1
  1122. package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
  1123. package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -1
  1124. package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
  1125. package/esm/repositories/contracts/types.d.mts +1 -1
  1126. package/esm/repositories/contracts/types.d.mts.map +1 -1
  1127. package/esm/repositories/repository.manager.d.mts +1 -1
  1128. package/esm/repositories/repository.manager.d.mts.map +1 -1
  1129. package/esm/repositories/repository.manager.mjs +1 -1
  1130. package/esm/repositories/repository.manager.mjs.map +1 -1
  1131. package/esm/resource/define-resource.d.mts +1 -1
  1132. package/esm/resource/define-resource.d.mts.map +1 -1
  1133. package/esm/resource/define-resource.mjs +1 -1
  1134. package/esm/resource/define-resource.mjs.map +1 -1
  1135. package/esm/resource/nullable-resource.d.mts +1 -1
  1136. package/esm/resource/nullable-resource.d.mts.map +1 -1
  1137. package/esm/resource/nullable-resource.mjs +1 -1
  1138. package/esm/resource/nullable-resource.mjs.map +1 -1
  1139. package/esm/resource/register-resource.d.mts +1 -1
  1140. package/esm/resource/register-resource.d.mts.map +1 -1
  1141. package/esm/resource/register-resource.mjs +1 -1
  1142. package/esm/resource/register-resource.mjs.map +1 -1
  1143. package/esm/resource/resource-field-builder.d.mts +1 -1
  1144. package/esm/resource/resource-field-builder.d.mts.map +1 -1
  1145. package/esm/resource/resource-field-builder.mjs +1 -1
  1146. package/esm/resource/resource-field-builder.mjs.map +1 -1
  1147. package/esm/resource/resource.d.mts +1 -1
  1148. package/esm/resource/resource.d.mts.map +1 -1
  1149. package/esm/resource/resource.mjs +1 -1
  1150. package/esm/resource/resource.mjs.map +1 -1
  1151. package/esm/resource/types.d.mts +1 -1
  1152. package/esm/resource/types.d.mts.map +1 -1
  1153. package/esm/restful/restful.d.mts +6 -6
  1154. package/esm/restful/restful.d.mts.map +1 -1
  1155. package/esm/restful/restful.mjs +1 -1
  1156. package/esm/restful/restful.mjs.map +1 -1
  1157. package/esm/router/build-route-rate-limit.mjs +1 -1
  1158. package/esm/router/build-route-rate-limit.mjs.map +1 -1
  1159. package/esm/router/describe-route-for-log.mjs +1 -1
  1160. package/esm/router/describe-route-for-log.mjs.map +1 -1
  1161. package/esm/router/dev-dispatch.mjs +32 -13
  1162. package/esm/router/dev-dispatch.mjs.map +1 -1
  1163. package/esm/router/index.d.mts +4 -2
  1164. package/esm/router/index.mjs +2 -0
  1165. package/esm/router/log-request-lifecycle.mjs +1 -1
  1166. package/esm/router/log-request-lifecycle.mjs.map +1 -1
  1167. package/esm/router/named-api-routes-with-responses.mjs +1 -1
  1168. package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
  1169. package/esm/router/normalize-request-path.d.mts +1 -1
  1170. package/esm/router/normalize-request-path.d.mts.map +1 -1
  1171. package/esm/router/normalize-request-path.mjs +1 -1
  1172. package/esm/router/normalize-request-path.mjs.map +1 -1
  1173. package/esm/router/normalize-route-path.d.mts +1 -1
  1174. package/esm/router/normalize-route-path.d.mts.map +1 -1
  1175. package/esm/router/normalize-route-path.mjs +1 -1
  1176. package/esm/router/normalize-route-path.mjs.map +1 -1
  1177. package/esm/router/positional-handler-diagnostics.d.mts +1 -1
  1178. package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
  1179. package/esm/router/positional-handler-diagnostics.mjs +1 -1
  1180. package/esm/router/positional-handler-diagnostics.mjs.map +1 -1
  1181. package/esm/router/resolve-route-rate-limit.mjs +47 -0
  1182. package/esm/router/resolve-route-rate-limit.mjs.map +1 -0
  1183. package/esm/router/resolve-route-validation.mjs +19 -0
  1184. package/esm/router/resolve-route-validation.mjs.map +1 -0
  1185. package/esm/router/response-schema-types.mjs +1 -1
  1186. package/esm/router/response-schema-types.mjs.map +1 -1
  1187. package/esm/router/route-builder.d.mts +1 -1
  1188. package/esm/router/route-builder.d.mts.map +1 -1
  1189. package/esm/router/route-builder.mjs +1 -1
  1190. package/esm/router/route-builder.mjs.map +1 -1
  1191. package/esm/router/route-guard-names.mjs +30 -0
  1192. package/esm/router/route-guard-names.mjs.map +1 -0
  1193. package/esm/router/route-name-method-suffix.d.mts +1 -1
  1194. package/esm/router/route-name-method-suffix.d.mts.map +1 -1
  1195. package/esm/router/route-name-method-suffix.mjs +1 -1
  1196. package/esm/router/route-name-method-suffix.mjs.map +1 -1
  1197. package/esm/router/route-name-taken-error.d.mts +14 -0
  1198. package/esm/router/route-name-taken-error.d.mts.map +1 -0
  1199. package/esm/router/route-name-taken-error.mjs +18 -0
  1200. package/esm/router/route-name-taken-error.mjs.map +1 -0
  1201. package/esm/router/route-registry.d.mts +1 -1
  1202. package/esm/router/route-registry.d.mts.map +1 -1
  1203. package/esm/router/route-registry.mjs +1 -1
  1204. package/esm/router/route-registry.mjs.map +1 -1
  1205. package/esm/router/router.d.mts +35 -9
  1206. package/esm/router/router.d.mts.map +1 -1
  1207. package/esm/router/router.mjs +78 -40
  1208. package/esm/router/router.mjs.map +1 -1
  1209. package/esm/router/types.d.mts +150 -18
  1210. package/esm/router/types.d.mts.map +1 -1
  1211. package/esm/router/unguarded-route-diagnostics.d.mts +40 -0
  1212. package/esm/router/unguarded-route-diagnostics.d.mts.map +1 -0
  1213. package/esm/router/unguarded-route-diagnostics.mjs +95 -0
  1214. package/esm/router/unguarded-route-diagnostics.mjs.map +1 -0
  1215. package/esm/socket/types.d.mts +1 -1
  1216. package/esm/socket/types.d.mts.map +1 -1
  1217. package/esm/socket/utils.d.mts +1 -1
  1218. package/esm/socket/utils.d.mts.map +1 -1
  1219. package/esm/socket/utils.mjs +1 -1
  1220. package/esm/socket/utils.mjs.map +1 -1
  1221. package/esm/storage/config.d.mts +1 -1
  1222. package/esm/storage/config.d.mts.map +1 -1
  1223. package/esm/storage/config.mjs +1 -1
  1224. package/esm/storage/config.mjs.map +1 -1
  1225. package/esm/storage/context/storage-driver-context.d.mts +1 -1
  1226. package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
  1227. package/esm/storage/context/storage-driver-context.mjs +1 -1
  1228. package/esm/storage/context/storage-driver-context.mjs.map +1 -1
  1229. package/esm/storage/drivers/cloud-driver.d.mts +1 -1
  1230. package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
  1231. package/esm/storage/drivers/cloud-driver.mjs +1 -1
  1232. package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
  1233. package/esm/storage/drivers/do-spaces-driver.d.mts +1 -1
  1234. package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
  1235. package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
  1236. package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
  1237. package/esm/storage/drivers/local-driver.d.mts +12 -1
  1238. package/esm/storage/drivers/local-driver.d.mts.map +1 -1
  1239. package/esm/storage/drivers/local-driver.mjs +33 -1
  1240. package/esm/storage/drivers/local-driver.mjs.map +1 -1
  1241. package/esm/storage/drivers/r2-driver.d.mts +1 -1
  1242. package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
  1243. package/esm/storage/drivers/r2-driver.mjs +1 -1
  1244. package/esm/storage/drivers/r2-driver.mjs.map +1 -1
  1245. package/esm/storage/drivers/s3-driver.d.mts +1 -1
  1246. package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
  1247. package/esm/storage/drivers/s3-driver.mjs +1 -1
  1248. package/esm/storage/drivers/s3-driver.mjs.map +1 -1
  1249. package/esm/storage/index.d.mts +1 -1
  1250. package/esm/storage/local-disk-roots.mjs +24 -0
  1251. package/esm/storage/local-disk-roots.mjs.map +1 -0
  1252. package/esm/storage/scoped-storage.d.mts +1 -1
  1253. package/esm/storage/scoped-storage.d.mts.map +1 -1
  1254. package/esm/storage/scoped-storage.mjs +1 -1
  1255. package/esm/storage/scoped-storage.mjs.map +1 -1
  1256. package/esm/storage/storage-file.d.mts +1 -1
  1257. package/esm/storage/storage-file.d.mts.map +1 -1
  1258. package/esm/storage/storage-file.mjs +1 -1
  1259. package/esm/storage/storage-file.mjs.map +1 -1
  1260. package/esm/storage/storage.d.mts +17 -3
  1261. package/esm/storage/storage.d.mts.map +1 -1
  1262. package/esm/storage/storage.mjs +23 -1
  1263. package/esm/storage/storage.mjs.map +1 -1
  1264. package/esm/storage/types.d.mts +3 -2
  1265. package/esm/storage/types.d.mts.map +1 -1
  1266. package/esm/storage/utils/classify-ip-address.d.mts +1 -1
  1267. package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
  1268. package/esm/storage/utils/classify-ip-address.mjs +1 -1
  1269. package/esm/storage/utils/classify-ip-address.mjs.map +1 -1
  1270. package/esm/storage/utils/contain-path.d.mts +1 -1
  1271. package/esm/storage/utils/contain-path.d.mts.map +1 -1
  1272. package/esm/storage/utils/contain-path.mjs +1 -1
  1273. package/esm/storage/utils/contain-path.mjs.map +1 -1
  1274. package/esm/storage/utils/mime.d.mts +1 -1
  1275. package/esm/storage/utils/mime.d.mts.map +1 -1
  1276. package/esm/storage/utils/mime.mjs +1 -1
  1277. package/esm/storage/utils/mime.mjs.map +1 -1
  1278. package/esm/storage/utils/safe-fetch.d.mts +1 -1
  1279. package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
  1280. package/esm/storage/utils/safe-fetch.mjs +1 -1
  1281. package/esm/storage/utils/safe-fetch.mjs.map +1 -1
  1282. package/esm/storage/utils/storage-capability-error.d.mts +1 -1
  1283. package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
  1284. package/esm/storage/utils/storage-capability-error.mjs +1 -1
  1285. package/esm/storage/utils/storage-capability-error.mjs.map +1 -1
  1286. package/esm/storage/utils/storage-error.d.mts +1 -1
  1287. package/esm/storage/utils/storage-error.d.mts.map +1 -1
  1288. package/esm/storage/utils/storage-error.mjs +1 -1
  1289. package/esm/storage/utils/storage-error.mjs.map +1 -1
  1290. package/esm/storage/utils/storage-not-initialized-error.d.mts +3 -1
  1291. package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
  1292. package/esm/storage/utils/storage-not-initialized-error.mjs +2 -1
  1293. package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
  1294. package/esm/tests/authenticated-test-client.d.mts +32 -0
  1295. package/esm/tests/authenticated-test-client.d.mts.map +1 -0
  1296. package/esm/tests/authenticated-test-client.mjs +40 -0
  1297. package/esm/tests/authenticated-test-client.mjs.map +1 -0
  1298. package/esm/tests/factories.d.mts +59 -0
  1299. package/esm/tests/factories.d.mts.map +1 -0
  1300. package/esm/tests/factories.mjs +105 -0
  1301. package/esm/tests/factories.mjs.map +1 -0
  1302. package/esm/tests/fakes/cache-fake.d.mts +29 -0
  1303. package/esm/tests/fakes/cache-fake.d.mts.map +1 -0
  1304. package/esm/tests/fakes/cache-fake.mjs +79 -0
  1305. package/esm/tests/fakes/cache-fake.mjs.map +1 -0
  1306. package/esm/tests/fakes/clock-fake.d.mts +32 -0
  1307. package/esm/tests/fakes/clock-fake.d.mts.map +1 -0
  1308. package/esm/tests/fakes/clock-fake.mjs +69 -0
  1309. package/esm/tests/fakes/clock-fake.mjs.map +1 -0
  1310. package/esm/tests/fakes/fake-assertion-error.d.mts +13 -0
  1311. package/esm/tests/fakes/fake-assertion-error.d.mts.map +1 -0
  1312. package/esm/tests/fakes/fake-assertion-error.mjs +20 -0
  1313. package/esm/tests/fakes/fake-assertion-error.mjs.map +1 -0
  1314. package/esm/tests/fakes/ids-fake.d.mts +22 -0
  1315. package/esm/tests/fakes/ids-fake.d.mts.map +1 -0
  1316. package/esm/tests/fakes/ids-fake.mjs +57 -0
  1317. package/esm/tests/fakes/ids-fake.mjs.map +1 -0
  1318. package/esm/tests/fakes/index.d.mts +8 -0
  1319. package/esm/tests/fakes/index.mjs +10 -0
  1320. package/esm/tests/fakes/mail-fake.d.mts +41 -0
  1321. package/esm/tests/fakes/mail-fake.d.mts.map +1 -0
  1322. package/esm/tests/fakes/mail-fake.mjs +111 -0
  1323. package/esm/tests/fakes/mail-fake.mjs.map +1 -0
  1324. package/esm/tests/fakes/queue-fake.d.mts +48 -0
  1325. package/esm/tests/fakes/queue-fake.d.mts.map +1 -0
  1326. package/esm/tests/fakes/queue-fake.mjs +134 -0
  1327. package/esm/tests/fakes/queue-fake.mjs.map +1 -0
  1328. package/esm/tests/fakes/storage-fake.d.mts +31 -0
  1329. package/esm/tests/fakes/storage-fake.d.mts.map +1 -0
  1330. package/esm/tests/fakes/storage-fake.mjs +122 -0
  1331. package/esm/tests/fakes/storage-fake.mjs.map +1 -0
  1332. package/esm/tests/fakes/test-fakes.d.mts +39 -0
  1333. package/esm/tests/fakes/test-fakes.d.mts.map +1 -0
  1334. package/esm/tests/fakes/test-fakes.mjs +90 -0
  1335. package/esm/tests/fakes/test-fakes.mjs.map +1 -0
  1336. package/esm/tests/index.d.mts +14 -2
  1337. package/esm/tests/index.mjs +15 -2
  1338. package/esm/tests/snapshot-response.d.mts +34 -0
  1339. package/esm/tests/snapshot-response.d.mts.map +1 -0
  1340. package/esm/tests/snapshot-response.mjs +42 -0
  1341. package/esm/tests/snapshot-response.mjs.map +1 -0
  1342. package/esm/tests/start-http-development-server.d.mts +23 -1
  1343. package/esm/tests/start-http-development-server.d.mts.map +1 -1
  1344. package/esm/tests/start-http-development-server.mjs +37 -4
  1345. package/esm/tests/start-http-development-server.mjs.map +1 -1
  1346. package/esm/tests/test-connectors-selection.d.mts +1 -1
  1347. package/esm/tests/test-connectors-selection.d.mts.map +1 -1
  1348. package/esm/tests/test-connectors-selection.mjs +1 -1
  1349. package/esm/tests/test-connectors-selection.mjs.map +1 -1
  1350. package/esm/tests/test-helpers.d.mts +21 -2
  1351. package/esm/tests/test-helpers.d.mts.map +1 -1
  1352. package/esm/tests/test-helpers.mjs +41 -28
  1353. package/esm/tests/test-helpers.mjs.map +1 -1
  1354. package/esm/tests/test-http-server.d.mts +62 -0
  1355. package/esm/tests/test-http-server.d.mts.map +1 -0
  1356. package/esm/tests/test-http-server.mjs +119 -0
  1357. package/esm/tests/test-http-server.mjs.map +1 -0
  1358. package/esm/tests/test-lifecycle-state.mjs +1 -1
  1359. package/esm/tests/test-lifecycle-state.mjs.map +1 -1
  1360. package/esm/tests/test-server-port-channel.mjs +1 -1
  1361. package/esm/tests/test-server-port-channel.mjs.map +1 -1
  1362. package/esm/tests/test-setup-timeout.mjs +1 -1
  1363. package/esm/tests/test-setup-timeout.mjs.map +1 -1
  1364. package/esm/tests/vitest-setup.d.mts +12 -1
  1365. package/esm/tests/vitest-setup.d.mts.map +1 -1
  1366. package/esm/tests/vitest-setup.mjs +13 -5
  1367. package/esm/tests/vitest-setup.mjs.map +1 -1
  1368. package/esm/tooling/agents-md/agents-md-markers.d.mts +27 -0
  1369. package/esm/tooling/agents-md/agents-md-markers.d.mts.map +1 -0
  1370. package/esm/tooling/agents-md/agents-md-markers.mjs +59 -0
  1371. package/esm/tooling/agents-md/agents-md-markers.mjs.map +1 -0
  1372. package/esm/tooling/agents-md/agents-md-refresher.d.mts +36 -0
  1373. package/esm/tooling/agents-md/agents-md-refresher.d.mts.map +1 -0
  1374. package/esm/tooling/agents-md/agents-md-refresher.mjs +72 -0
  1375. package/esm/tooling/agents-md/agents-md-refresher.mjs.map +1 -0
  1376. package/esm/tooling/agents-md/index.mjs +7 -0
  1377. package/esm/tooling/agents-md/installed-skills.d.mts +30 -0
  1378. package/esm/tooling/agents-md/installed-skills.d.mts.map +1 -0
  1379. package/esm/tooling/agents-md/installed-skills.mjs +74 -0
  1380. package/esm/tooling/agents-md/installed-skills.mjs.map +1 -0
  1381. package/esm/tooling/agents-md/render-agents-md.d.mts +33 -0
  1382. package/esm/tooling/agents-md/render-agents-md.d.mts.map +1 -0
  1383. package/esm/tooling/agents-md/render-agents-md.mjs +195 -0
  1384. package/esm/tooling/agents-md/render-agents-md.mjs.map +1 -0
  1385. package/esm/tooling/agents-md/write-agents-md.d.mts +33 -0
  1386. package/esm/tooling/agents-md/write-agents-md.d.mts.map +1 -0
  1387. package/esm/tooling/agents-md/write-agents-md.mjs +49 -0
  1388. package/esm/tooling/agents-md/write-agents-md.mjs.map +1 -0
  1389. package/esm/tooling/board/board-message.d.mts +31 -0
  1390. package/esm/tooling/board/board-message.d.mts.map +1 -0
  1391. package/esm/tooling/board/board-message.mjs +86 -0
  1392. package/esm/tooling/board/board-message.mjs.map +1 -0
  1393. package/esm/tooling/board/board.d.mts +109 -0
  1394. package/esm/tooling/board/board.d.mts.map +1 -0
  1395. package/esm/tooling/board/board.mjs +406 -0
  1396. package/esm/tooling/board/board.mjs.map +1 -0
  1397. package/esm/tooling/board/board.types.d.mts +72 -0
  1398. package/esm/tooling/board/board.types.d.mts.map +1 -0
  1399. package/esm/tooling/board/board.types.mjs +54 -0
  1400. package/esm/tooling/board/board.types.mjs.map +1 -0
  1401. package/esm/tooling/check/changed-files.d.mts +33 -0
  1402. package/esm/tooling/check/changed-files.d.mts.map +1 -0
  1403. package/esm/tooling/check/changed-files.mjs +73 -0
  1404. package/esm/tooling/check/changed-files.mjs.map +1 -0
  1405. package/esm/tooling/check/check-report.types.d.mts +62 -0
  1406. package/esm/tooling/check/check-report.types.d.mts.map +1 -0
  1407. package/esm/tooling/check/check-report.types.mjs +37 -0
  1408. package/esm/tooling/check/check-report.types.mjs.map +1 -0
  1409. package/esm/tooling/check/code-style-conventions.mjs +106 -0
  1410. package/esm/tooling/check/code-style-conventions.mjs.map +1 -0
  1411. package/esm/tooling/check/conventions-step.d.mts +34 -0
  1412. package/esm/tooling/check/conventions-step.d.mts.map +1 -0
  1413. package/esm/tooling/check/conventions-step.mjs +184 -0
  1414. package/esm/tooling/check/conventions-step.mjs.map +1 -0
  1415. package/esm/tooling/check/environment-step.d.mts +18 -0
  1416. package/esm/tooling/check/environment-step.d.mts.map +1 -0
  1417. package/esm/tooling/check/environment-step.mjs +78 -0
  1418. package/esm/tooling/check/environment-step.mjs.map +1 -0
  1419. package/esm/tooling/check/index.d.mts +8 -0
  1420. package/esm/tooling/check/index.mjs +10 -0
  1421. package/esm/tooling/check/lint-step.d.mts +19 -0
  1422. package/esm/tooling/check/lint-step.d.mts.map +1 -0
  1423. package/esm/tooling/check/lint-step.mjs +111 -0
  1424. package/esm/tooling/check/lint-step.mjs.map +1 -0
  1425. package/esm/tooling/check/request-input.mjs +132 -0
  1426. package/esm/tooling/check/request-input.mjs.map +1 -0
  1427. package/esm/tooling/check/run-check.d.mts +35 -0
  1428. package/esm/tooling/check/run-check.d.mts.map +1 -0
  1429. package/esm/tooling/check/run-check.mjs +192 -0
  1430. package/esm/tooling/check/run-check.mjs.map +1 -0
  1431. package/esm/tooling/check/run-tests.d.mts +48 -0
  1432. package/esm/tooling/check/run-tests.d.mts.map +1 -0
  1433. package/esm/tooling/check/run-tests.mjs +93 -0
  1434. package/esm/tooling/check/run-tests.mjs.map +1 -0
  1435. package/esm/tooling/check/security-conventions.mjs +648 -0
  1436. package/esm/tooling/check/security-conventions.mjs.map +1 -0
  1437. package/esm/tooling/check/source-ast.mjs +195 -0
  1438. package/esm/tooling/check/source-ast.mjs.map +1 -0
  1439. package/esm/tooling/check/source-files.mjs +27 -0
  1440. package/esm/tooling/check/source-files.mjs.map +1 -0
  1441. package/esm/tooling/check/tests-step.d.mts +34 -0
  1442. package/esm/tooling/check/tests-step.d.mts.map +1 -0
  1443. package/esm/tooling/check/tests-step.mjs +177 -0
  1444. package/esm/tooling/check/tests-step.mjs.map +1 -0
  1445. package/esm/tooling/dev-state/dev-server-state.d.mts +39 -0
  1446. package/esm/tooling/dev-state/dev-server-state.d.mts.map +1 -0
  1447. package/esm/tooling/dev-state/dev-server-state.mjs +67 -0
  1448. package/esm/tooling/dev-state/dev-server-state.mjs.map +1 -0
  1449. package/esm/tooling/devtools/devtools-client.d.mts +91 -0
  1450. package/esm/tooling/devtools/devtools-client.d.mts.map +1 -0
  1451. package/esm/tooling/devtools/devtools-client.mjs +155 -0
  1452. package/esm/tooling/devtools/devtools-client.mjs.map +1 -0
  1453. package/esm/tooling/generate/generation.d.mts +78 -0
  1454. package/esm/tooling/generate/generation.d.mts.map +1 -0
  1455. package/esm/tooling/generate/generation.mjs +123 -0
  1456. package/esm/tooling/generate/generation.mjs.map +1 -0
  1457. package/esm/tooling/generate/generator-spec.d.mts +57 -0
  1458. package/esm/tooling/generate/generator-spec.d.mts.map +1 -0
  1459. package/esm/tooling/generate/generator-spec.mjs +102 -0
  1460. package/esm/tooling/generate/generator-spec.mjs.map +1 -0
  1461. package/esm/tooling/generate/index.mjs +6 -0
  1462. package/esm/tooling/generate/project-files.mjs +121 -0
  1463. package/esm/tooling/generate/project-files.mjs.map +1 -0
  1464. package/esm/tooling/generate/run-cli.d.mts +40 -0
  1465. package/esm/tooling/generate/run-cli.d.mts.map +1 -0
  1466. package/esm/tooling/generate/run-cli.mjs +93 -0
  1467. package/esm/tooling/generate/run-cli.mjs.map +1 -0
  1468. package/esm/tooling/generate/unified-diff.d.mts +37 -0
  1469. package/esm/tooling/generate/unified-diff.d.mts.map +1 -0
  1470. package/esm/tooling/generate/unified-diff.mjs +161 -0
  1471. package/esm/tooling/generate/unified-diff.mjs.map +1 -0
  1472. package/esm/tooling/index.d.mts +41 -0
  1473. package/esm/tooling/index.mjs +45 -0
  1474. package/esm/tooling/inspect/boot-for-inspect.d.mts +23 -0
  1475. package/esm/tooling/inspect/boot-for-inspect.d.mts.map +1 -0
  1476. package/esm/tooling/inspect/boot-for-inspect.mjs +63 -0
  1477. package/esm/tooling/inspect/boot-for-inspect.mjs.map +1 -0
  1478. package/esm/tooling/inspect/collect-config.mjs +77 -0
  1479. package/esm/tooling/inspect/collect-config.mjs.map +1 -0
  1480. package/esm/tooling/inspect/collect-models.d.mts +9 -0
  1481. package/esm/tooling/inspect/collect-models.d.mts.map +1 -0
  1482. package/esm/tooling/inspect/collect-models.mjs +154 -0
  1483. package/esm/tooling/inspect/collect-models.mjs.map +1 -0
  1484. package/esm/tooling/inspect/collect-packages.d.mts +10 -0
  1485. package/esm/tooling/inspect/collect-packages.d.mts.map +1 -0
  1486. package/esm/tooling/inspect/collect-packages.mjs +157 -0
  1487. package/esm/tooling/inspect/collect-packages.mjs.map +1 -0
  1488. package/esm/tooling/inspect/collect-pages.mjs +108 -0
  1489. package/esm/tooling/inspect/collect-pages.mjs.map +1 -0
  1490. package/esm/tooling/inspect/collect-routes.mjs +168 -0
  1491. package/esm/tooling/inspect/collect-routes.mjs.map +1 -0
  1492. package/esm/tooling/inspect/event-recorder.d.mts +37 -0
  1493. package/esm/tooling/inspect/event-recorder.d.mts.map +1 -0
  1494. package/esm/tooling/inspect/event-recorder.mjs +91 -0
  1495. package/esm/tooling/inspect/event-recorder.mjs.map +1 -0
  1496. package/esm/tooling/inspect/index.d.mts +7 -0
  1497. package/esm/tooling/inspect/index.mjs +7 -0
  1498. package/esm/tooling/inspect/inspect-app.d.mts +53 -0
  1499. package/esm/tooling/inspect/inspect-app.d.mts.map +1 -0
  1500. package/esm/tooling/inspect/inspect-app.mjs +92 -0
  1501. package/esm/tooling/inspect/inspect-app.mjs.map +1 -0
  1502. package/esm/tooling/inspect/inspect-report.schema.d.mts +15 -0
  1503. package/esm/tooling/inspect/inspect-report.schema.d.mts.map +1 -0
  1504. package/esm/tooling/inspect/inspect-report.schema.mjs +463 -0
  1505. package/esm/tooling/inspect/inspect-report.schema.mjs.map +1 -0
  1506. package/esm/tooling/inspect/inspect-report.types.d.mts +196 -0
  1507. package/esm/tooling/inspect/inspect-report.types.d.mts.map +1 -0
  1508. package/esm/tooling/inspect/inspect-report.types.mjs +33 -0
  1509. package/esm/tooling/inspect/inspect-report.types.mjs.map +1 -0
  1510. package/esm/tooling/mcp/create-mcp-context.d.mts +26 -0
  1511. package/esm/tooling/mcp/create-mcp-context.d.mts.map +1 -0
  1512. package/esm/tooling/mcp/create-mcp-context.mjs +75 -0
  1513. package/esm/tooling/mcp/create-mcp-context.mjs.map +1 -0
  1514. package/esm/tooling/mcp/db-schema.d.mts +49 -0
  1515. package/esm/tooling/mcp/db-schema.d.mts.map +1 -0
  1516. package/esm/tooling/mcp/db-schema.mjs +56 -0
  1517. package/esm/tooling/mcp/db-schema.mjs.map +1 -0
  1518. package/esm/tooling/mcp/docs-search.d.mts +72 -0
  1519. package/esm/tooling/mcp/docs-search.d.mts.map +1 -0
  1520. package/esm/tooling/mcp/docs-search.mjs +178 -0
  1521. package/esm/tooling/mcp/docs-search.mjs.map +1 -0
  1522. package/esm/tooling/mcp/index.mjs +9 -0
  1523. package/esm/tooling/mcp/load-ai-tools.d.mts +62 -0
  1524. package/esm/tooling/mcp/load-ai-tools.d.mts.map +1 -0
  1525. package/esm/tooling/mcp/load-ai-tools.mjs +44 -0
  1526. package/esm/tooling/mcp/load-ai-tools.mjs.map +1 -0
  1527. package/esm/tooling/mcp/mcp-tools.d.mts +60 -0
  1528. package/esm/tooling/mcp/mcp-tools.d.mts.map +1 -0
  1529. package/esm/tooling/mcp/mcp-tools.mjs +513 -0
  1530. package/esm/tooling/mcp/mcp-tools.mjs.map +1 -0
  1531. package/esm/tooling/mcp/start-mcp-server.d.mts +56 -0
  1532. package/esm/tooling/mcp/start-mcp-server.d.mts.map +1 -0
  1533. package/esm/tooling/mcp/start-mcp-server.mjs +126 -0
  1534. package/esm/tooling/mcp/start-mcp-server.mjs.map +1 -0
  1535. package/esm/tooling/mcp/tool-input.d.mts +75 -0
  1536. package/esm/tooling/mcp/tool-input.d.mts.map +1 -0
  1537. package/esm/tooling/mcp/tool-input.mjs +72 -0
  1538. package/esm/tooling/mcp/tool-input.mjs.map +1 -0
  1539. package/esm/tooling/problem.d.mts +45 -0
  1540. package/esm/tooling/problem.d.mts.map +1 -0
  1541. package/esm/tooling/problem.mjs +28 -0
  1542. package/esm/tooling/problem.mjs.map +1 -0
  1543. package/esm/tooling/trace/trace-report.types.d.mts +71 -0
  1544. package/esm/tooling/trace/trace-report.types.d.mts.map +1 -0
  1545. package/esm/tooling/trace/trace-report.types.mjs +7 -0
  1546. package/esm/tooling/trace/trace-report.types.mjs.map +1 -0
  1547. package/esm/tooling/trace/trace-request.d.mts +83 -0
  1548. package/esm/tooling/trace/trace-request.d.mts.map +1 -0
  1549. package/esm/tooling/trace/trace-request.mjs +241 -0
  1550. package/esm/tooling/trace/trace-request.mjs.map +1 -0
  1551. package/esm/tooling/typecheck/index.d.mts +1 -0
  1552. package/esm/tooling/typecheck/index.mjs +3 -0
  1553. package/esm/tooling/typecheck/run-typecheck.d.mts +59 -0
  1554. package/esm/tooling/typecheck/run-typecheck.d.mts.map +1 -0
  1555. package/esm/tooling/typecheck/run-typecheck.mjs +153 -0
  1556. package/esm/tooling/typecheck/run-typecheck.mjs.map +1 -0
  1557. package/esm/updater/package-manager.mjs +1 -1
  1558. package/esm/updater/package-manager.mjs.map +1 -1
  1559. package/esm/updater/update-warlock-packages.mjs +1 -1
  1560. package/esm/updater/update-warlock-packages.mjs.map +1 -1
  1561. package/esm/upgrade/codemods/head-viewport.mjs +46 -0
  1562. package/esm/upgrade/codemods/head-viewport.mjs.map +1 -0
  1563. package/esm/upgrade/codemods/helpers.mjs +81 -0
  1564. package/esm/upgrade/codemods/helpers.mjs.map +1 -0
  1565. package/esm/upgrade/codemods/index.mjs +34 -0
  1566. package/esm/upgrade/codemods/index.mjs.map +1 -0
  1567. package/esm/upgrade/codemods/logger-sync-calls.mjs +57 -0
  1568. package/esm/upgrade/codemods/logger-sync-calls.mjs.map +1 -0
  1569. package/esm/upgrade/codemods/package-json.mjs +122 -0
  1570. package/esm/upgrade/codemods/package-json.mjs.map +1 -0
  1571. package/esm/upgrade/codemods/request-log-snapshot.mjs +82 -0
  1572. package/esm/upgrade/codemods/request-log-snapshot.mjs.map +1 -0
  1573. package/esm/upgrade/codemods/review-sites.mjs +262 -0
  1574. package/esm/upgrade/codemods/review-sites.mjs.map +1 -0
  1575. package/esm/upgrade/diff.mjs +119 -0
  1576. package/esm/upgrade/diff.mjs.map +1 -0
  1577. package/esm/upgrade/format-upgrade-report.mjs +32 -0
  1578. package/esm/upgrade/format-upgrade-report.mjs.map +1 -0
  1579. package/esm/upgrade/load-ts-morph.mjs +48 -0
  1580. package/esm/upgrade/load-ts-morph.mjs.map +1 -0
  1581. package/esm/upgrade/notes.mjs +16 -0
  1582. package/esm/upgrade/notes.mjs.map +1 -0
  1583. package/esm/upgrade/run-upgrade.mjs +246 -0
  1584. package/esm/upgrade/run-upgrade.mjs.map +1 -0
  1585. package/esm/upgrade/upgrade-command.action.mjs +37 -0
  1586. package/esm/upgrade/upgrade-command.action.mjs.map +1 -0
  1587. package/esm/upgrade/version.mjs +39 -0
  1588. package/esm/upgrade/version.mjs.map +1 -0
  1589. package/esm/use-cases/types.d.mts +1 -1
  1590. package/esm/use-cases/types.d.mts.map +1 -1
  1591. package/esm/use-cases/use-case-broadcast.d.mts +1 -1
  1592. package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
  1593. package/esm/use-cases/use-case-broadcast.mjs +1 -1
  1594. package/esm/use-cases/use-case-broadcast.mjs.map +1 -1
  1595. package/esm/use-cases/use-case-events.d.mts +1 -1
  1596. package/esm/use-cases/use-case-events.d.mts.map +1 -1
  1597. package/esm/use-cases/use-case-events.mjs +1 -1
  1598. package/esm/use-cases/use-case-events.mjs.map +1 -1
  1599. package/esm/use-cases/use-case-pipeline.d.mts +1 -1
  1600. package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
  1601. package/esm/use-cases/use-case-pipeline.mjs +1 -1
  1602. package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
  1603. package/esm/use-cases/use-case.d.mts +1 -1
  1604. package/esm/use-cases/use-case.d.mts.map +1 -1
  1605. package/esm/use-cases/use-case.errors.d.mts +1 -1
  1606. package/esm/use-cases/use-case.errors.d.mts.map +1 -1
  1607. package/esm/use-cases/use-case.errors.mjs +1 -1
  1608. package/esm/use-cases/use-case.errors.mjs.map +1 -1
  1609. package/esm/use-cases/use-case.mjs +1 -1
  1610. package/esm/use-cases/use-case.mjs.map +1 -1
  1611. package/esm/use-cases/use-cases-registry.d.mts +1 -1
  1612. package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
  1613. package/esm/use-cases/use-cases-registry.mjs +1 -1
  1614. package/esm/use-cases/use-cases-registry.mjs.map +1 -1
  1615. package/esm/utils/app-log.d.mts +6 -6
  1616. package/esm/utils/app-log.d.mts.map +1 -1
  1617. package/esm/utils/app-log.mjs +1 -1
  1618. package/esm/utils/app-log.mjs.map +1 -1
  1619. package/esm/utils/clock.d.mts +33 -0
  1620. package/esm/utils/clock.d.mts.map +1 -0
  1621. package/esm/utils/clock.mjs +27 -0
  1622. package/esm/utils/clock.mjs.map +1 -0
  1623. package/esm/utils/database-log.d.mts +1 -1
  1624. package/esm/utils/database-log.d.mts.map +1 -1
  1625. package/esm/utils/database-log.mjs +1 -1
  1626. package/esm/utils/database-log.mjs.map +1 -1
  1627. package/esm/utils/detect-environment-overrides.mjs +1 -1
  1628. package/esm/utils/detect-environment-overrides.mjs.map +1 -1
  1629. package/esm/utils/environment.d.mts +1 -1
  1630. package/esm/utils/environment.d.mts.map +1 -1
  1631. package/esm/utils/environment.mjs +1 -1
  1632. package/esm/utils/environment.mjs.map +1 -1
  1633. package/esm/utils/framework-vesion.mjs +2 -2
  1634. package/esm/utils/framework-vesion.mjs.map +1 -1
  1635. package/esm/utils/get-localized.d.mts +1 -1
  1636. package/esm/utils/get-localized.d.mts.map +1 -1
  1637. package/esm/utils/get-localized.mjs +1 -1
  1638. package/esm/utils/get-localized.mjs.map +1 -1
  1639. package/esm/utils/ids.d.mts +32 -0
  1640. package/esm/utils/ids.d.mts.map +1 -0
  1641. package/esm/utils/ids.mjs +33 -0
  1642. package/esm/utils/ids.mjs.map +1 -0
  1643. package/esm/utils/index.d.mts +3 -0
  1644. package/esm/utils/index.mjs +3 -0
  1645. package/esm/utils/is-test-file.mjs +1 -1
  1646. package/esm/utils/is-test-file.mjs.map +1 -1
  1647. package/esm/utils/load-environment.mjs +1 -1
  1648. package/esm/utils/load-environment.mjs.map +1 -1
  1649. package/esm/utils/normalized-path.d.mts +1 -1
  1650. package/esm/utils/normalized-path.d.mts.map +1 -1
  1651. package/esm/utils/normalized-path.mjs +1 -1
  1652. package/esm/utils/normalized-path.mjs.map +1 -1
  1653. package/esm/utils/npm-registry.d.mts +1 -1
  1654. package/esm/utils/npm-registry.d.mts.map +1 -1
  1655. package/esm/utils/npm-registry.mjs +1 -1
  1656. package/esm/utils/npm-registry.mjs.map +1 -1
  1657. package/esm/utils/paths.d.mts +1 -1
  1658. package/esm/utils/paths.d.mts.map +1 -1
  1659. package/esm/utils/paths.mjs +1 -1
  1660. package/esm/utils/paths.mjs.map +1 -1
  1661. package/esm/utils/promise-all-object.d.mts +1 -1
  1662. package/esm/utils/promise-all-object.d.mts.map +1 -1
  1663. package/esm/utils/promise-all-object.mjs +1 -1
  1664. package/esm/utils/promise-all-object.mjs.map +1 -1
  1665. package/esm/utils/queue.d.mts +1 -1
  1666. package/esm/utils/queue.d.mts.map +1 -1
  1667. package/esm/utils/queue.mjs +1 -1
  1668. package/esm/utils/queue.mjs.map +1 -1
  1669. package/esm/utils/recorded-environment-overrides.mjs +1 -1
  1670. package/esm/utils/recorded-environment-overrides.mjs.map +1 -1
  1671. package/esm/utils/report-environment-overrides.mjs +1 -1
  1672. package/esm/utils/report-environment-overrides.mjs.map +1 -1
  1673. package/esm/utils/runtime.d.mts +59 -0
  1674. package/esm/utils/runtime.d.mts.map +1 -0
  1675. package/esm/utils/runtime.mjs +85 -0
  1676. package/esm/utils/runtime.mjs.map +1 -0
  1677. package/esm/utils/sleep.d.mts +1 -1
  1678. package/esm/utils/sleep.d.mts.map +1 -1
  1679. package/esm/utils/sleep.mjs +1 -1
  1680. package/esm/utils/sleep.mjs.map +1 -1
  1681. package/esm/utils/sluggable.d.mts +1 -1
  1682. package/esm/utils/sluggable.d.mts.map +1 -1
  1683. package/esm/utils/sluggable.mjs +1 -1
  1684. package/esm/utils/sluggable.mjs.map +1 -1
  1685. package/esm/utils/to-json.d.mts +1 -1
  1686. package/esm/utils/to-json.d.mts.map +1 -1
  1687. package/esm/utils/to-json.mjs +1 -1
  1688. package/esm/utils/to-json.mjs.map +1 -1
  1689. package/esm/utils/types.d.mts +1 -1
  1690. package/esm/utils/types.d.mts.map +1 -1
  1691. package/esm/utils/urls.d.mts +1 -1
  1692. package/esm/utils/urls.d.mts.map +1 -1
  1693. package/esm/utils/urls.mjs +1 -1
  1694. package/esm/utils/urls.mjs.map +1 -1
  1695. package/esm/utils/version-compare.d.mts +1 -1
  1696. package/esm/utils/version-compare.d.mts.map +1 -1
  1697. package/esm/utils/version-compare.mjs +1 -1
  1698. package/esm/utils/version-compare.mjs.map +1 -1
  1699. package/esm/validation/database/exists-except-current-id.d.mts +1 -1
  1700. package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
  1701. package/esm/validation/database/exists-except-current-id.mjs +1 -1
  1702. package/esm/validation/database/exists-except-current-id.mjs.map +1 -1
  1703. package/esm/validation/database/exists-except-current-user.d.mts +1 -1
  1704. package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
  1705. package/esm/validation/database/exists-except-current-user.mjs +1 -1
  1706. package/esm/validation/database/exists-except-current-user.mjs.map +1 -1
  1707. package/esm/validation/database/types.d.mts +1 -1
  1708. package/esm/validation/database/types.d.mts.map +1 -1
  1709. package/esm/validation/database/unique-except-current-id.d.mts +1 -1
  1710. package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
  1711. package/esm/validation/database/unique-except-current-id.mjs +1 -1
  1712. package/esm/validation/database/unique-except-current-id.mjs.map +1 -1
  1713. package/esm/validation/database/unique-except-current-user.d.mts +1 -1
  1714. package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
  1715. package/esm/validation/database/unique-except-current-user.mjs +1 -1
  1716. package/esm/validation/database/unique-except-current-user.mjs.map +1 -1
  1717. package/esm/validation/file/file.d.mts +1 -1
  1718. package/esm/validation/file/file.d.mts.map +1 -1
  1719. package/esm/validation/file/file.mjs +1 -1
  1720. package/esm/validation/file/file.mjs.map +1 -1
  1721. package/esm/validation/index.d.mts +1 -1
  1722. package/esm/validation/init.mjs +1 -1
  1723. package/esm/validation/init.mjs.map +1 -1
  1724. package/esm/validation/plugins/database-plugin.mjs +1 -1
  1725. package/esm/validation/plugins/database-plugin.mjs.map +1 -1
  1726. package/esm/validation/plugins/file-plugin.mjs +1 -1
  1727. package/esm/validation/plugins/file-plugin.mjs.map +1 -1
  1728. package/esm/validation/plugins/localized-plugin.mjs +1 -1
  1729. package/esm/validation/plugins/localized-plugin.mjs.map +1 -1
  1730. package/esm/validation/types.d.mts +58 -3
  1731. package/esm/validation/types.d.mts.map +1 -1
  1732. package/esm/validation/validateAll.mjs +20 -3
  1733. package/esm/validation/validateAll.mjs.map +1 -1
  1734. package/esm/validation/validation-failure-status.mjs +15 -0
  1735. package/esm/validation/validation-failure-status.mjs.map +1 -0
  1736. package/esm/validation/validators/file-validator.d.mts +28 -41
  1737. package/esm/validation/validators/file-validator.d.mts.map +1 -1
  1738. package/esm/validation/validators/file-validator.mjs +4 -1
  1739. package/esm/validation/validators/file-validator.mjs.map +1 -1
  1740. package/esm/vite/lower-stage3-decorators.d.mts +1 -1
  1741. package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
  1742. package/esm/vite/lower-stage3-decorators.mjs +1 -1
  1743. package/esm/vite/lower-stage3-decorators.mjs.map +1 -1
  1744. package/esm/warlock-config/bundle-config.mjs +148 -0
  1745. package/esm/warlock-config/bundle-config.mjs.map +1 -0
  1746. package/esm/warlock-config/default-configurations.mjs +1 -1
  1747. package/esm/warlock-config/default-configurations.mjs.map +1 -1
  1748. package/esm/warlock-config/define-config.d.mts +1 -1
  1749. package/esm/warlock-config/define-config.d.mts.map +1 -1
  1750. package/esm/warlock-config/define-config.mjs +1 -1
  1751. package/esm/warlock-config/define-config.mjs.map +1 -1
  1752. package/esm/warlock-config/index.d.mts +1 -1
  1753. package/esm/warlock-config/index.mjs +1 -1
  1754. package/esm/warlock-config/normalize-build-config.mjs +1 -1
  1755. package/esm/warlock-config/normalize-build-config.mjs.map +1 -1
  1756. package/esm/warlock-config/types.d.mts +28 -4
  1757. package/esm/warlock-config/types.d.mts.map +1 -1
  1758. package/esm/warlock-config/warlock-config.manager.d.mts +32 -7
  1759. package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
  1760. package/esm/warlock-config/warlock-config.manager.mjs +94 -18
  1761. package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
  1762. package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
  1763. package/esm/warlock-config/warn-deprecated-config.mjs.map +1 -1
  1764. package/llms-full.txt +3271 -784
  1765. package/llms.txt +16 -6
  1766. package/package.json +51 -14
  1767. package/schemas/inspect-report.schema.json +554 -0
  1768. package/skills/README.md +9 -0
  1769. package/skills/add-connector/SKILL.md +26 -38
  1770. package/skills/benchmark-code/SKILL.md +30 -24
  1771. package/skills/build-restful/SKILL.md +14 -14
  1772. package/skills/build-url/SKILL.md +18 -18
  1773. package/skills/configure-app/SKILL.md +129 -14
  1774. package/skills/create-controller/SKILL.md +29 -12
  1775. package/skills/create-module/SKILL.md +3 -3
  1776. package/skills/define-resource/SKILL.md +32 -29
  1777. package/skills/encrypt-data/SKILL.md +21 -19
  1778. package/skills/generate-openapi/SKILL.md +50 -24
  1779. package/skills/hash-password/SKILL.md +2 -2
  1780. package/skills/health-checks/SKILL.md +26 -7
  1781. package/skills/index.md +9 -4
  1782. package/skills/lower-stage3-decorators/SKILL.md +4 -4
  1783. package/skills/make-endpoint/SKILL.md +110 -0
  1784. package/skills/model-factories/SKILL.md +92 -0
  1785. package/skills/process-image/SKILL.md +32 -30
  1786. package/skills/register-route/SKILL.md +119 -10
  1787. package/skills/request-memo/SKILL.md +1 -1
  1788. package/skills/request-tracing/SKILL.md +4 -1
  1789. package/skills/resolve-path/SKILL.md +45 -44
  1790. package/skills/retry-operation/SKILL.md +20 -11
  1791. package/skills/run-app/SKILL.md +111 -20
  1792. package/skills/send-response/SKILL.md +189 -16
  1793. package/skills/store-file/SKILL.md +97 -53
  1794. package/skills/test-fakes/SKILL.md +123 -0
  1795. package/skills/test-http/SKILL.md +125 -21
  1796. package/skills/test-service/SKILL.md +41 -1
  1797. package/skills/update-packages/SKILL.md +29 -18
  1798. package/skills/upgrade-from-5-29/SKILL.md +413 -0
  1799. package/skills/upload-file/SKILL.md +31 -33
  1800. package/skills/use-app-context/SKILL.md +38 -31
  1801. package/skills/use-middleware/SKILL.md +46 -26
  1802. package/skills/use-model-transformers/SKILL.md +37 -28
  1803. package/skills/use-repository/SKILL.md +2 -2
  1804. package/skills/validate-input/SKILL.md +73 -29
  1805. package/skills/warlock-agents-md/SKILL.md +96 -0
  1806. package/skills/warlock-board/SKILL.md +123 -0
  1807. package/skills/warlock-check/SKILL.md +132 -0
  1808. package/skills/warlock-conventions/SKILL.md +115 -0
  1809. package/skills/warlock-doctor/SKILL.md +55 -22
  1810. package/skills/warlock-inspect/SKILL.md +134 -0
  1811. package/skills/warlock-mcp/SKILL.md +120 -0
  1812. package/skills/warlock-routes/SKILL.md +18 -11
  1813. package/skills/warlock-trace/SKILL.md +81 -0
  1814. package/skills/wire-socket/SKILL.md +8 -8
  1815. package/skills/write-seeder/SKILL.md +46 -32
  1816. package/skills/write-use-case/SKILL.md +40 -27
  1817. package/esm/http/uploads/matches-if-none-match.mjs +0 -13
  1818. package/esm/http/uploads/matches-if-none-match.mjs.map +0 -1
@@ -1,10 +1,16 @@
1
- //#region ../core/src/tests/start-http-development-server.d.ts
1
+ import { TestFakesSelection } from "./fakes/test-fakes.mjs";
2
+
3
+ //#region ../../packages/core/src/tests/start-http-development-server.d.ts
2
4
  type StartHttpTestServerOptions = {
3
5
  /**
4
6
  * Port the test server binds to, overriding `http.port`.
5
7
  *
6
8
  * Needed because the server cannot be moved from outside: this function
7
9
  * bootstraps the app itself, and that bootstrap re-reads `.env`.
10
+ *
11
+ * `0` asks the OS for a free port. The port actually bound is published to
12
+ * the test workers, so `testGet()`, `actingAs()` and friends follow it, and
13
+ * a suite never collides with `warlock dev` or another suite.
8
14
  */
9
15
  port?: number;
10
16
  /**
@@ -17,6 +23,18 @@ type StartHttpTestServerOptions = {
17
23
  * @default true
18
24
  */
19
25
  web?: boolean;
26
+ /**
27
+ * Which test fakes the server process installs (mail, queue, cache,
28
+ * storage, clock, ids). Same values and precedence as `setupTest({ fakes })`:
29
+ * this option > `tests.fakes` config > all on.
30
+ *
31
+ * A fake records what happens in ITS process: mail sent while this server
32
+ * handles a request is captured here, not in the test worker that sent the
33
+ * request. To assert on what an HTTP request did, serve it in the worker
34
+ * with `createTestHttpServer()`. The storage fake is the exception: its
35
+ * temp root is shared with the workers.
36
+ */
37
+ fakes?: TestFakesSelection;
20
38
  };
21
39
  /**
22
40
  * Start the HTTP test server (minimal - no file watching)
@@ -25,6 +43,10 @@ type StartHttpTestServerOptions = {
25
43
  * @example
26
44
  * // run this suite on its own port, whatever `.env` says
27
45
  * await startHttpTestServer({ port: 3999 });
46
+ *
47
+ * @example
48
+ * // let the OS pick a free port; the request helpers follow it
49
+ * await startHttpTestServer({ port: 0 });
28
50
  */
29
51
  declare function startHttpTestServer(options?: StartHttpTestServerOptions): Promise<void>;
30
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"start-http-development-server.d.mts","names":[],"sources":["../../../../../../../core/src/tests/start-http-development-server.ts"],"mappings":";KAyBY,0BAAA;EAAA;;;;AAkBP;AAkGL;EA7GE,IAAA;;;;;;;AA6G0F;AA0G5F;;EA5ME,GAAG;AAAA;AA4M8C;AA6BnD;;;;AAAmC;;;AA7BgB,iBA1G7B,mBAAA,CAAoB,OAAA,GAAS,0BAAA,GAAkC,OAAO;;;;;iBA0GtE,kBAAA,IAAsB,OAAO;;;;iBA6BnC,mBAAA"}
1
+ {"version":3,"file":"start-http-development-server.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/start-http-development-server.ts"],"mappings":";;;KA4BY,0BAAA;;AAAZ;;;;;;;;;EAWE,IAAA;EAqJoB;;;;;;;;AAAsE;EA1I1F,GAAA;EAqQsC;;;AAAW;AAmCnD;;;;AAAmC;;;EA3RjC,KAAA,GAAQ,kBAAkB;AAAA;;;;;;;;;;;;;iBA6HN,mBAAA,CAAoB,OAAA,GAAS,0BAAA,GAAkC,OAAO;;;;;iBA2HtE,kBAAA,IAAsB,OAAO;;;;iBAmCnC,mBAAA"}
@@ -1,6 +1,7 @@
1
1
  import { Application } from "../application/application.mjs";
2
2
  import "../application/index.mjs";
3
3
  import { assertPortIsAvailable } from "../http/port-preflight.mjs";
4
+ import { getHttpReadyReport } from "../http/ready-report.mjs";
4
5
  import { loadEnvironmentFiles } from "../utils/load-environment.mjs";
5
6
  import { bootstrap } from "../bootstrap.mjs";
6
7
  import { ConnectorLifecyclePhase } from "../connectors/types.mjs";
@@ -8,10 +9,11 @@ import { connectorsManager } from "../connectors/connectors-manager.mjs";
8
9
  import { warlockConfigManager } from "../warlock-config/warlock-config.manager.mjs";
9
10
  import { filesOrchestrator } from "../dev-server/files-orchestrator.mjs";
10
11
  import { loadConfigFiles } from "../config/load-config-files.mjs";
12
+ import { installTestFakes, restoreTestFakes } from "./fakes/test-fakes.mjs";
11
13
  import { publishTestServerPort, withdrawTestServerPort } from "./test-server-port-channel.mjs";
12
14
  import config from "@mongez/config";
13
15
 
14
- //#region ../core/src/tests/start-http-development-server.ts
16
+ //#region ../../packages/core/src/tests/start-http-development-server.ts
15
17
  /**
16
18
  * HTTP Test Server
17
19
  *
@@ -50,14 +52,28 @@ async function startTestServerPhase(phase) {
50
52
  async function applyTestServerPort(port) {
51
53
  if (!config.get("http")) {
52
54
  if (port !== void 0) throw new Error(`startHttpTestServer({ port: ${port} }) was given a port, but this app has no \`http\` config, so no HTTP server is started. Add \`src/config/http.ts\` first.`);
53
- return;
55
+ return "none";
54
56
  }
55
57
  if (port !== void 0) config.set("http.port", port);
56
58
  const resolvedPort = config.get("http.port");
57
59
  if (typeof resolvedPort !== "number") throw new Error(`startHttpTestServer() cannot use \`http.port\` value ${JSON.stringify(resolvedPort)} — it did not round-trip through Number() (env() only coerces a value when \`String(Number(v)) === v\`, so "03999", "+3999", "1e3", and values with stray whitespace stay strings). Fix \`HTTP_PORT\` in .env, or pass an explicit numeric port: startHttpTestServer({ port: 3999 }).`);
58
- if (resolvedPort <= 0) throw new Error(`startHttpTestServer() cannot run on port ${resolvedPort}. Pass an explicit port — e.g. startHttpTestServer({ port: 3999 }) — or set \`http.port\` in your config. Test workers are separate processes that resolve the server's URL from the port published at startup, and an OS-assigned port is not knowable to them.`);
60
+ if (resolvedPort === 0) return "ephemeral";
61
+ if (resolvedPort < 0) throw new Error(`startHttpTestServer() cannot run on port ${resolvedPort}. Pass a port number, or 0 to let the OS pick a free one — e.g. startHttpTestServer({ port: 0 }).`);
59
62
  await assertPortIsAvailable(resolvedPort, config.get("http.host") || "localhost");
60
63
  publishTestServerPort(resolvedPort);
64
+ return "published";
65
+ }
66
+ /**
67
+ * Publish the port an ephemeral (`port: 0`) bind actually took.
68
+ *
69
+ * `before` is the ready report from before the late phase: the report is a
70
+ * module-level record, so an unchanged one means THIS boot bound nothing and an
71
+ * older report must not be mistaken for it.
72
+ */
73
+ function publishEphemeralPort(before) {
74
+ const report = getHttpReadyReport();
75
+ if (!report || report === before || report.port <= 0) throw new Error("startHttpTestServer({ port: 0 }) booted, but the HTTP connector did not bind a port, so there is no address to give the test workers. Check that `src/config/http.ts` exists and that this process serves HTTP (its role is not worker-only).");
76
+ publishTestServerPort(report.port);
61
77
  }
62
78
  /**
63
79
  * Start the HTTP test server (minimal - no file watching)
@@ -66,6 +82,10 @@ async function applyTestServerPort(port) {
66
82
  * @example
67
83
  * // run this suite on its own port, whatever `.env` says
68
84
  * await startHttpTestServer({ port: 3999 });
85
+ *
86
+ * @example
87
+ * // let the OS pick a free port; the request helpers follow it
88
+ * await startHttpTestServer({ port: 0 });
69
89
  */
70
90
  async function startHttpTestServer(options = {}) {
71
91
  const nodeEnvironment = process.env.NODE_ENV;
@@ -87,11 +107,14 @@ async function startHttpTestServer(options = {}) {
87
107
  await loadConfigFiles(true);
88
108
  if (options.web === false) await startTestServerPhase("early");
89
109
  else await connectorsManager.startPhase("early");
110
+ await installTestFakes(options.fakes);
90
111
  await filesOrchestrator.moduleLoader.loadAll();
91
- await applyTestServerPort(options.port);
112
+ const portMode = await applyTestServerPort(options.port);
113
+ const readyReportBefore = getHttpReadyReport();
92
114
  await Application.runStartupValidators();
93
115
  if (options.web === false) await startTestServerPhase("late");
94
116
  else await connectorsManager.startPhase("late");
117
+ if (portMode === "ephemeral") publishEphemeralPort(readyReportBefore);
95
118
  isServerRunning = true;
96
119
  } catch (error) {
97
120
  await unwindPartialStartup();
@@ -106,6 +129,11 @@ async function startHttpTestServer(options = {}) {
106
129
  * already in flight, and the caller is about to rethrow it.
107
130
  */
108
131
  async function unwindPartialStartup() {
132
+ try {
133
+ await restoreTestFakes();
134
+ } catch (fakesError) {
135
+ console.error("[test-server] Restoring the test fakes after a failed start did not complete:", fakesError);
136
+ }
109
137
  try {
110
138
  await connectorsManager.shutdown();
111
139
  } catch (shutdownError) {
@@ -124,6 +152,11 @@ async function stopHttpTestServer() {
124
152
  return;
125
153
  }
126
154
  try {
155
+ try {
156
+ await restoreTestFakes();
157
+ } catch (fakesError) {
158
+ console.error("[test-server] Restoring the test fakes did not complete:", fakesError);
159
+ }
127
160
  await connectorsManager.shutdown();
128
161
  console.log("[test-server] HTTP test server stopped");
129
162
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"start-http-development-server.mjs","names":[],"sources":["../../../../../../../core/src/tests/start-http-development-server.ts"],"sourcesContent":["/**\n * HTTP Test Server\n *\n * Starts a minimal HTTP server for testing.\n * Unlike the full DevelopmentServer, this:\n * - Does NOT watch files\n * - Does NOT do HMR\n * - Only starts connectors needed for HTTP requests\n *\n * Used in Vitest's globalSetup to start server once for all test workers.\n */\nimport config from \"@mongez/config\";\nimport { Application } from \"../application\";\nimport { bootstrap } from \"../bootstrap\";\nimport { loadConfigFiles } from \"../config/load-config-files\";\nimport { connectorsManager } from \"../connectors/connectors-manager\";\nimport { ConnectorLifecyclePhase } from \"../connectors/types\";\nimport { filesOrchestrator } from \"../dev-server/files-orchestrator\";\nimport { assertPortIsAvailable } from \"../http/port-preflight\";\nimport { loadEnvironmentFiles } from \"../utils/load-environment\";\nimport { warlockConfigManager } from \"../warlock-config/warlock-config.manager\";\nimport { publishTestServerPort, withdrawTestServerPort } from \"./test-server-port-channel\";\n\nlet isServerRunning = false;\n\nexport type StartHttpTestServerOptions = {\n /**\n * Port the test server binds to, overriding `http.port`.\n *\n * Needed because the server cannot be moved from outside: this function\n * bootstraps the app itself, and that bootstrap re-reads `.env`.\n */\n port?: number;\n\n /**\n * Whether to boot the optional web connector.\n *\n * Defaults to `true` to preserve the full-stack test server. Pass `false`\n * for API-only suites: the web connector's lazy delegate is skipped before\n * `boot()`, so it never constructs its Vite-backed implementation.\n *\n * @default true\n */\n web?: boolean;\n};\n\n/**\n * Start one lifecycle phase while omitting the web connector.\n *\n * Kept here rather than changing the manager's public API: this is a\n * test-server-only selection, and retaining the manager's boot-all / start-all\n * ordering is essential for HTTP and socket connector wiring.\n */\nasync function startTestServerPhase(phase: ConnectorLifecyclePhase): Promise<void> {\n const connectors = connectorsManager\n .list()\n .filter((connector) => connector.lifecyclePhase === phase)\n .filter((connector) => connector.name !== \"web\");\n\n for (const connector of connectors) {\n await connector.boot();\n }\n\n for (const connector of connectors) {\n await connector.start();\n }\n}\n\n/**\n * Apply the caller's port and preflight the bind.\n *\n * Called at the last moment before the HTTP connector binds, and that timing is\n * the fix: `bootstrap()` re-reads `.env` through `loadEnv()` (dotenv overrides\n * by default), and `src/config/http.ts` then resolves its port from that store,\n * so anything the caller set earlier is gone by the time the port is read.\n * Writing into `config` here is also the only channel that works — assigning\n * `process.env.HTTP_PORT` has no effect, since `env()` reads dotenv's own store\n * and never falls back to `process.env`.\n */\nasync function applyTestServerPort(port?: number): Promise<void> {\n const httpConfig = config.get(\"http\");\n\n if (!httpConfig) {\n if (port !== undefined) {\n throw new Error(\n `startHttpTestServer({ port: ${port} }) was given a port, but this app has no \\`http\\` config, so no HTTP server is started. Add \\`src/config/http.ts\\` first.`,\n );\n }\n\n return;\n }\n\n if (port !== undefined) {\n config.set(\"http.port\", port);\n }\n\n const resolvedPort = config.get(\"http.port\");\n\n // No configured port at all is fine: Fastify falls back to its own default and\n // the workers resolve the same one from their own config, so both ends agree\n // without the channel.\n //\n // A non-numeric port is NOT fine, and must fail loudly rather than skip the\n // preflight silently. `env()` coerces a value only when it round-trips exactly\n // (`String(Number(v)) === v`), so `HTTP_PORT=3999` and `HTTP_PORT=0` arrive as\n // numbers, but `03999`, `+3999`, `1e3` and anything with stray whitespace stay\n // strings. Letting those through used to reach `HttpConnector.start()`'s\n // `listen({ port })` unchanged — no preflight, no published port, and every\n // test worker resolving a URL from a channel nothing ever wrote to.\n if (typeof resolvedPort !== \"number\") {\n throw new Error(\n `startHttpTestServer() cannot use \\`http.port\\` value ${JSON.stringify(resolvedPort)} — it did not round-trip through Number() (env() only coerces a value when \\`String(Number(v)) === v\\`, so \"03999\", \"+3999\", \"1e3\", and values with stray whitespace stay strings). Fix \\`HTTP_PORT\\` in .env, or pass an explicit numeric port: startHttpTestServer({ port: 3999 }).`,\n );\n }\n\n // `0` is the OS's \"pick a free one for me\" idiom, and the test server cannot\n // support it. Preflighting 0 would bind some unrelated ephemeral port and pass\n // without proving anything, and there is nothing meaningful to publish: the\n // port Fastify ends up binding is never recorded — `HttpConnector.start()`\n // stores the port it ASKED for, not the one it got. Accepting 0 silently is\n // what left `getTestServerUrl()` resolving to `http://host:0` through its own\n // config fallback, so every worker request went to a port nothing listens on.\n if (resolvedPort <= 0) {\n throw new Error(\n `startHttpTestServer() cannot run on port ${resolvedPort}. Pass an explicit port — e.g. startHttpTestServer({ port: 3999 }) — or set \\`http.port\\` in your config. Test workers are separate processes that resolve the server's URL from the port published at startup, and an OS-assigned port is not knowable to them.`,\n );\n }\n\n await assertPortIsAvailable(resolvedPort, config.get(\"http.host\") || \"localhost\");\n\n publishTestServerPort(resolvedPort);\n}\n\n/**\n * Start the HTTP test server (minimal - no file watching)\n * Call this in Vitest's globalSetup\n *\n * @example\n * // run this suite on its own port, whatever `.env` says\n * await startHttpTestServer({ port: 3999 });\n */\nexport async function startHttpTestServer(options: StartHttpTestServerOptions = {}): Promise<void> {\n const nodeEnvironment = process.env.NODE_ENV;\n\n if (nodeEnvironment === undefined) {\n process.env.NODE_ENV = \"test\";\n } else if (nodeEnvironment !== \"test\") {\n throw new Error(\n `startHttpTestServer() requires NODE_ENV=\"test\", but received NODE_ENV=${JSON.stringify(nodeEnvironment)}. Set NODE_ENV=test before starting the test server.`,\n );\n }\n\n if (isServerRunning) {\n console.log(\"[test-server] Server already running, skipping start\");\n return;\n }\n\n console.log(\"[test-server] Starting HTTP test server...\");\n\n try {\n // `globalSetup` runs in Vitest's main process, where Vitest's worker env\n // setup has not run. Load `.env.test` here, before any config is read.\n await loadEnvironmentFiles();\n\n // Set environment\n Application.setRuntimeStrategy(\"development\");\n Application.setEnvironment(\"test\");\n\n // Bootstrap (env, etc.)\n await warlockConfigManager.load();\n await bootstrap();\n\n // Initialize file orchestrator (but don't watch)\n await filesOrchestrator.init();\n await filesOrchestrator.initializeAll();\n\n // Load config files\n await loadConfigFiles(true);\n\n // Early-phase connectors (database, cache, logger, storage, mailer,\n // herald) must start BEFORE app modules load: a module's `main.ts` boot\n // side-effect can query the DB at import time, so the data source has to\n // be registered first. This mirrors the dev/prod boot order (see\n // `cli-commands.manager`, `production-builder`, and `DevelopmentServer`).\n if (options.web === false) {\n await startTestServerPhase(ConnectorLifecyclePhase.Early);\n } else {\n await connectorsManager.startPhase(ConnectorLifecyclePhase.Early);\n }\n\n // Load application modules (their boot side-effects now see a live DB).\n await filesOrchestrator.moduleLoader.loadAll();\n\n await applyTestServerPort(options.port);\n\n // A rejecting validator (Application.onValidateBoot) must abort boot\n // before late-phase connectors bind a port — same slot as\n // `DevelopmentServer.start()` and the generated production `app.ts`.\n await Application.runStartupValidators();\n\n // Late-phase connectors (http, socket) bind after app code has\n // registered its routes and listeners.\n if (options.web === false) {\n await startTestServerPhase(ConnectorLifecyclePhase.Late);\n } else {\n await connectorsManager.startPhase(ConnectorLifecyclePhase.Late);\n }\n\n isServerRunning = true;\n } catch (error) {\n // This function owns the connectors it starts, so a failure part-way\n // through has to leave nothing behind. Without this, `isServerRunning` was\n // still `false` — it is only set on the last line — so `globalTeardown`'s\n // `stopHttpTestServer()` reported \"No server to stop\" and walked away from\n // live early-phase connectors and a published port that outlived them.\n await unwindPartialStartup();\n\n // Rethrown unchanged: the startup failure is the one the caller needs to\n // read. A cleanup failure that replaced it would hide the actual cause.\n throw error;\n }\n}\n\n/**\n * Best-effort teardown of whatever a failed {@link startHttpTestServer} managed\n * to start.\n *\n * Every step is independent and none may throw: this runs while an error is\n * already in flight, and the caller is about to rethrow it.\n */\nasync function unwindPartialStartup(): Promise<void> {\n try {\n await connectorsManager.shutdown();\n } catch (shutdownError) {\n // Reported, not thrown — it is secondary to the startup error being\n // rethrown, and losing that one to this would be the worse outcome.\n console.error(\"[test-server] Cleanup after a failed start did not complete:\", shutdownError);\n }\n\n withdrawTestServerPort();\n isServerRunning = false;\n}\n\n/**\n * Stop the HTTP test server\n * Call this in Vitest's globalTeardown\n */\nexport async function stopHttpTestServer(): Promise<void> {\n if (!isServerRunning) {\n console.log(\"[test-server] No server to stop\");\n return;\n }\n\n try {\n await connectorsManager.shutdown();\n\n console.log(\"[test-server] HTTP test server stopped\");\n } catch (error) {\n // Surfaced, never swallowed — cleaning up is not the same as the shutdown\n // having succeeded, and a suite whose teardown failed should say so.\n console.error(\"[test-server] Error stopping HTTP server:\", error);\n\n throw error;\n } finally {\n // In a `finally` rather than after the `await`: when `shutdown()` threw,\n // the published port survived the server it pointed at, so the next run in\n // the same process inherited a stale one and sent every request to it.\n withdrawTestServerPort();\n\n isServerRunning = false;\n }\n}\n\n/**\n * Check if test server is running\n */\nexport function isTestServerRunning(): boolean {\n return isServerRunning;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAI,kBAAkB;;;;;;;;AA8BtB,eAAe,qBAAqB,OAA+C;CACjF,MAAM,aAAa,kBAChB,KAAK,CAAC,CACN,QAAQ,cAAc,UAAU,mBAAmB,KAAK,CAAC,CACzD,QAAQ,cAAc,UAAU,SAAS,KAAK;CAEjD,KAAK,MAAM,aAAa,YACtB,MAAM,UAAU,KAAK;CAGvB,KAAK,MAAM,aAAa,YACtB,MAAM,UAAU,MAAM;AAE1B;;;;;;;;;;;;AAaA,eAAe,oBAAoB,MAA8B;CAG/D,IAAI,CAFe,OAAO,IAAI,MAEhB,GAAG;EACf,IAAI,SAAS,QACX,MAAM,IAAI,MACR,+BAA+B,KAAK,2HACtC;EAGF;CACF;CAEA,IAAI,SAAS,QACX,OAAO,IAAI,aAAa,IAAI;CAG9B,MAAM,eAAe,OAAO,IAAI,WAAW;CAa3C,IAAI,OAAO,iBAAiB,UAC1B,MAAM,IAAI,MACR,wDAAwD,KAAK,UAAU,YAAY,EAAE,sRACvF;CAUF,IAAI,gBAAgB,GAClB,MAAM,IAAI,MACR,4CAA4C,aAAa,iQAC3D;CAGF,MAAM,sBAAsB,cAAc,OAAO,IAAI,WAAW,KAAK,WAAW;CAEhF,sBAAsB,YAAY;AACpC;;;;;;;;;AAUA,eAAsB,oBAAoB,UAAsC,CAAC,GAAkB;CACjG,MAAM,kBAAkB,QAAQ,IAAI;CAEpC,IAAI,oBAAoB,QACtB,QAAQ,IAAI,WAAW;MAClB,IAAI,oBAAoB,QAC7B,MAAM,IAAI,MACR,yEAAyE,KAAK,UAAU,eAAe,EAAE,qDAC3G;CAGF,IAAI,iBAAiB;EACnB,QAAQ,IAAI,sDAAsD;EAClE;CACF;CAEA,QAAQ,IAAI,4CAA4C;CAExD,IAAI;EAGF,MAAM,qBAAqB;EAG3B,YAAY,mBAAmB,aAAa;EAC5C,YAAY,eAAe,MAAM;EAGjC,MAAM,qBAAqB,KAAK;EAChC,MAAM,UAAU;EAGhB,MAAM,kBAAkB,KAAK;EAC7B,MAAM,kBAAkB,cAAc;EAGtC,MAAM,gBAAgB,IAAI;EAO1B,IAAI,QAAQ,QAAQ,OAClB,MAAM,4BAAkD;OAExD,MAAM,kBAAkB,kBAAwC;EAIlE,MAAM,kBAAkB,aAAa,QAAQ;EAE7C,MAAM,oBAAoB,QAAQ,IAAI;EAKtC,MAAM,YAAY,qBAAqB;EAIvC,IAAI,QAAQ,QAAQ,OAClB,MAAM,2BAAiD;OAEvD,MAAM,kBAAkB,iBAAuC;EAGjE,kBAAkB;CACpB,SAAS,OAAO;EAMd,MAAM,qBAAqB;EAI3B,MAAM;CACR;AACF;;;;;;;;AASA,eAAe,uBAAsC;CACnD,IAAI;EACF,MAAM,kBAAkB,SAAS;CACnC,SAAS,eAAe;EAGtB,QAAQ,MAAM,gEAAgE,aAAa;CAC7F;CAEA,uBAAuB;CACvB,kBAAkB;AACpB;;;;;AAMA,eAAsB,qBAAoC;CACxD,IAAI,CAAC,iBAAiB;EACpB,QAAQ,IAAI,iCAAiC;EAC7C;CACF;CAEA,IAAI;EACF,MAAM,kBAAkB,SAAS;EAEjC,QAAQ,IAAI,wCAAwC;CACtD,SAAS,OAAO;EAGd,QAAQ,MAAM,6CAA6C,KAAK;EAEhE,MAAM;CACR,UAAU;EAIR,uBAAuB;EAEvB,kBAAkB;CACpB;AACF;;;;AAKA,SAAgB,sBAA+B;CAC7C,OAAO;AACT"}
1
+ {"version":3,"file":"start-http-development-server.mjs","names":[],"sources":["../../../../../../../../packages/core/src/tests/start-http-development-server.ts"],"sourcesContent":["/**\n * HTTP Test Server\n *\n * Starts a minimal HTTP server for testing.\n * Unlike the full DevelopmentServer, this:\n * - Does NOT watch files\n * - Does NOT do HMR\n * - Only starts connectors needed for HTTP requests\n *\n * Used in Vitest's globalSetup to start server once for all test workers.\n */\nimport config from \"@mongez/config\";\nimport { Application } from \"../application\";\nimport { bootstrap } from \"../bootstrap\";\nimport { loadConfigFiles } from \"../config/load-config-files\";\nimport { connectorsManager } from \"../connectors/connectors-manager\";\nimport { ConnectorLifecyclePhase } from \"../connectors/types\";\nimport { filesOrchestrator } from \"../dev-server/files-orchestrator\";\nimport { assertPortIsAvailable } from \"../http/port-preflight\";\nimport { getHttpReadyReport } from \"../http/ready-report\";\nimport { loadEnvironmentFiles } from \"../utils/load-environment\";\nimport { warlockConfigManager } from \"../warlock-config/warlock-config.manager\";\nimport { installTestFakes, restoreTestFakes } from \"./fakes/test-fakes\";\nimport type { TestFakesSelection } from \"./fakes/test-fakes\";\nimport { publishTestServerPort, withdrawTestServerPort } from \"./test-server-port-channel\";\n\nlet isServerRunning = false;\n\nexport type StartHttpTestServerOptions = {\n /**\n * Port the test server binds to, overriding `http.port`.\n *\n * Needed because the server cannot be moved from outside: this function\n * bootstraps the app itself, and that bootstrap re-reads `.env`.\n *\n * `0` asks the OS for a free port. The port actually bound is published to\n * the test workers, so `testGet()`, `actingAs()` and friends follow it, and\n * a suite never collides with `warlock dev` or another suite.\n */\n port?: number;\n\n /**\n * Whether to boot the optional web connector.\n *\n * Defaults to `true` to preserve the full-stack test server. Pass `false`\n * for API-only suites: the web connector's lazy delegate is skipped before\n * `boot()`, so it never constructs its Vite-backed implementation.\n *\n * @default true\n */\n web?: boolean;\n\n /**\n * Which test fakes the server process installs (mail, queue, cache,\n * storage, clock, ids). Same values and precedence as `setupTest({ fakes })`:\n * this option > `tests.fakes` config > all on.\n *\n * A fake records what happens in ITS process: mail sent while this server\n * handles a request is captured here, not in the test worker that sent the\n * request. To assert on what an HTTP request did, serve it in the worker\n * with `createTestHttpServer()`. The storage fake is the exception: its\n * temp root is shared with the workers.\n */\n fakes?: TestFakesSelection;\n};\n\n/**\n * Start one lifecycle phase while omitting the web connector.\n *\n * Kept here rather than changing the manager's public API: this is a\n * test-server-only selection, and retaining the manager's boot-all / start-all\n * ordering is essential for HTTP and socket connector wiring.\n */\nasync function startTestServerPhase(phase: ConnectorLifecyclePhase): Promise<void> {\n const connectors = connectorsManager\n .list()\n .filter((connector) => connector.lifecyclePhase === phase)\n .filter((connector) => connector.name !== \"web\");\n\n for (const connector of connectors) {\n await connector.boot();\n }\n\n for (const connector of connectors) {\n await connector.start();\n }\n}\n\n/**\n * Apply the caller's port and preflight the bind.\n *\n * Called at the last moment before the HTTP connector binds, and that timing is\n * the fix: `bootstrap()` re-reads `.env` through `loadEnv()` (dotenv overrides\n * by default), and `src/config/http.ts` then resolves its port from that store,\n * so anything the caller set earlier is gone by the time the port is read.\n * Writing into `config` here is also the only channel that works — assigning\n * `process.env.HTTP_PORT` has no effect, since `env()` reads dotenv's own store\n * and never falls back to `process.env`.\n */\nasync function applyTestServerPort(port?: number): Promise<\"published\" | \"ephemeral\" | \"none\"> {\n const httpConfig = config.get(\"http\");\n\n if (!httpConfig) {\n if (port !== undefined) {\n throw new Error(\n `startHttpTestServer({ port: ${port} }) was given a port, but this app has no \\`http\\` config, so no HTTP server is started. Add \\`src/config/http.ts\\` first.`,\n );\n }\n\n return \"none\";\n }\n\n if (port !== undefined) {\n config.set(\"http.port\", port);\n }\n\n const resolvedPort = config.get(\"http.port\");\n\n // No configured port at all is fine: Fastify falls back to its own default and\n // the workers resolve the same one from their own config, so both ends agree\n // without the channel.\n //\n // A non-numeric port is NOT fine, and must fail loudly rather than skip the\n // preflight silently. `env()` coerces a value only when it round-trips exactly\n // (`String(Number(v)) === v`), so `HTTP_PORT=3999` and `HTTP_PORT=0` arrive as\n // numbers, but `03999`, `+3999`, `1e3` and anything with stray whitespace stay\n // strings. Letting those through used to reach `HttpConnector.start()`'s\n // `listen({ port })` unchanged — no preflight, no published port, and every\n // test worker resolving a URL from a channel nothing ever wrote to.\n if (typeof resolvedPort !== \"number\") {\n throw new Error(\n `startHttpTestServer() cannot use \\`http.port\\` value ${JSON.stringify(resolvedPort)} — it did not round-trip through Number() (env() only coerces a value when \\`String(Number(v)) === v\\`, so \"03999\", \"+3999\", \"1e3\", and values with stray whitespace stay strings). Fix \\`HTTP_PORT\\` in .env, or pass an explicit numeric port: startHttpTestServer({ port: 3999 }).`,\n );\n }\n\n // `0` is the OS's \"pick a free one for me\". There is nothing to preflight —\n // probing 0 would bind some unrelated port and prove nothing — and nothing to\n // publish yet: the port is only known once the HTTP connector has bound, and\n // `HttpConnector.start()` records the port `listen()` actually returned (see\n // `ready-report.ts`). It is published right after the late phase instead.\n if (resolvedPort === 0) {\n return \"ephemeral\";\n }\n\n if (resolvedPort < 0) {\n throw new Error(\n `startHttpTestServer() cannot run on port ${resolvedPort}. Pass a port number, or 0 to let the OS pick a free one — e.g. startHttpTestServer({ port: 0 }).`,\n );\n }\n\n await assertPortIsAvailable(resolvedPort, config.get(\"http.host\") || \"localhost\");\n\n publishTestServerPort(resolvedPort);\n\n return \"published\";\n}\n\n/**\n * Publish the port an ephemeral (`port: 0`) bind actually took.\n *\n * `before` is the ready report from before the late phase: the report is a\n * module-level record, so an unchanged one means THIS boot bound nothing and an\n * older report must not be mistaken for it.\n */\nfunction publishEphemeralPort(before: ReturnType<typeof getHttpReadyReport>): void {\n const report = getHttpReadyReport();\n\n if (!report || report === before || report.port <= 0) {\n throw new Error(\n \"startHttpTestServer({ port: 0 }) booted, but the HTTP connector did not bind a port, so there is no address to give the test workers. Check that `src/config/http.ts` exists and that this process serves HTTP (its role is not worker-only).\",\n );\n }\n\n publishTestServerPort(report.port);\n}\n\n/**\n * Start the HTTP test server (minimal - no file watching)\n * Call this in Vitest's globalSetup\n *\n * @example\n * // run this suite on its own port, whatever `.env` says\n * await startHttpTestServer({ port: 3999 });\n *\n * @example\n * // let the OS pick a free port; the request helpers follow it\n * await startHttpTestServer({ port: 0 });\n */\nexport async function startHttpTestServer(options: StartHttpTestServerOptions = {}): Promise<void> {\n const nodeEnvironment = process.env.NODE_ENV;\n\n if (nodeEnvironment === undefined) {\n process.env.NODE_ENV = \"test\";\n } else if (nodeEnvironment !== \"test\") {\n throw new Error(\n `startHttpTestServer() requires NODE_ENV=\"test\", but received NODE_ENV=${JSON.stringify(nodeEnvironment)}. Set NODE_ENV=test before starting the test server.`,\n );\n }\n\n if (isServerRunning) {\n console.log(\"[test-server] Server already running, skipping start\");\n return;\n }\n\n console.log(\"[test-server] Starting HTTP test server...\");\n\n try {\n // `globalSetup` runs in Vitest's main process, where Vitest's worker env\n // setup has not run. Load `.env.test` here, before any config is read.\n await loadEnvironmentFiles();\n\n // Set environment\n Application.setRuntimeStrategy(\"development\");\n Application.setEnvironment(\"test\");\n\n // Bootstrap (env, etc.)\n await warlockConfigManager.load();\n await bootstrap();\n\n // Initialize file orchestrator (but don't watch)\n await filesOrchestrator.init();\n await filesOrchestrator.initializeAll();\n\n // Load config files\n await loadConfigFiles(true);\n\n // Early-phase connectors (database, cache, logger, storage, mailer,\n // herald) must start BEFORE app modules load: a module's `main.ts` boot\n // side-effect can query the DB at import time, so the data source has to\n // be registered first. This mirrors the dev/prod boot order (see\n // `cli-commands.manager`, `production-builder`, and `DevelopmentServer`).\n if (options.web === false) {\n await startTestServerPhase(ConnectorLifecyclePhase.Early);\n } else {\n await connectorsManager.startPhase(ConnectorLifecyclePhase.Early);\n }\n\n // Fakes before app modules load, so module boot code already sees them.\n await installTestFakes(options.fakes);\n\n // Load application modules (their boot side-effects now see a live DB).\n await filesOrchestrator.moduleLoader.loadAll();\n\n const portMode = await applyTestServerPort(options.port);\n const readyReportBefore = getHttpReadyReport();\n\n // A rejecting validator (Application.onValidateBoot) must abort boot\n // before late-phase connectors bind a port — same slot as\n // `DevelopmentServer.start()` and the generated production `app.ts`.\n await Application.runStartupValidators();\n\n // Late-phase connectors (http, socket) bind after app code has\n // registered its routes and listeners.\n if (options.web === false) {\n await startTestServerPhase(ConnectorLifecyclePhase.Late);\n } else {\n await connectorsManager.startPhase(ConnectorLifecyclePhase.Late);\n }\n\n if (portMode === \"ephemeral\") {\n publishEphemeralPort(readyReportBefore);\n }\n\n isServerRunning = true;\n } catch (error) {\n // This function owns the connectors it starts, so a failure part-way\n // through has to leave nothing behind. Without this, `isServerRunning` was\n // still `false` — it is only set on the last line — so `globalTeardown`'s\n // `stopHttpTestServer()` reported \"No server to stop\" and walked away from\n // live early-phase connectors and a published port that outlived them.\n await unwindPartialStartup();\n\n // Rethrown unchanged: the startup failure is the one the caller needs to\n // read. A cleanup failure that replaced it would hide the actual cause.\n throw error;\n }\n}\n\n/**\n * Best-effort teardown of whatever a failed {@link startHttpTestServer} managed\n * to start.\n *\n * Every step is independent and none may throw: this runs while an error is\n * already in flight, and the caller is about to rethrow it.\n */\nasync function unwindPartialStartup(): Promise<void> {\n try {\n await restoreTestFakes();\n } catch (fakesError) {\n console.error(\n \"[test-server] Restoring the test fakes after a failed start did not complete:\",\n fakesError,\n );\n }\n\n try {\n await connectorsManager.shutdown();\n } catch (shutdownError) {\n // Reported, not thrown — it is secondary to the startup error being\n // rethrown, and losing that one to this would be the worse outcome.\n console.error(\"[test-server] Cleanup after a failed start did not complete:\", shutdownError);\n }\n\n withdrawTestServerPort();\n isServerRunning = false;\n}\n\n/**\n * Stop the HTTP test server\n * Call this in Vitest's globalTeardown\n */\nexport async function stopHttpTestServer(): Promise<void> {\n if (!isServerRunning) {\n console.log(\"[test-server] No server to stop\");\n return;\n }\n\n try {\n try {\n await restoreTestFakes();\n } catch (fakesError) {\n console.error(\"[test-server] Restoring the test fakes did not complete:\", fakesError);\n }\n\n await connectorsManager.shutdown();\n\n console.log(\"[test-server] HTTP test server stopped\");\n } catch (error) {\n // Surfaced, never swallowed — cleaning up is not the same as the shutdown\n // having succeeded, and a suite whose teardown failed should say so.\n console.error(\"[test-server] Error stopping HTTP server:\", error);\n\n throw error;\n } finally {\n // In a `finally` rather than after the `await`: when `shutdown()` threw,\n // the published port survived the server it pointed at, so the next run in\n // the same process inherited a stale one and sent every request to it.\n withdrawTestServerPort();\n\n isServerRunning = false;\n }\n}\n\n/**\n * Check if test server is running\n */\nexport function isTestServerRunning(): boolean {\n return isServerRunning;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAI,kBAAkB;;;;;;;;AA+CtB,eAAe,qBAAqB,OAA+C;CACjF,MAAM,aAAa,kBAChB,KAAK,CAAC,CACN,QAAQ,cAAc,UAAU,mBAAmB,KAAK,CAAC,CACzD,QAAQ,cAAc,UAAU,SAAS,KAAK;CAEjD,KAAK,MAAM,aAAa,YACtB,MAAM,UAAU,KAAK;CAGvB,KAAK,MAAM,aAAa,YACtB,MAAM,UAAU,MAAM;AAE1B;;;;;;;;;;;;AAaA,eAAe,oBAAoB,MAA4D;CAG7F,IAAI,CAFe,OAAO,IAAI,MAEhB,GAAG;EACf,IAAI,SAAS,QACX,MAAM,IAAI,MACR,+BAA+B,KAAK,2HACtC;EAGF,OAAO;CACT;CAEA,IAAI,SAAS,QACX,OAAO,IAAI,aAAa,IAAI;CAG9B,MAAM,eAAe,OAAO,IAAI,WAAW;CAa3C,IAAI,OAAO,iBAAiB,UAC1B,MAAM,IAAI,MACR,wDAAwD,KAAK,UAAU,YAAY,EAAE,sRACvF;CAQF,IAAI,iBAAiB,GACnB,OAAO;CAGT,IAAI,eAAe,GACjB,MAAM,IAAI,MACR,4CAA4C,aAAa,kGAC3D;CAGF,MAAM,sBAAsB,cAAc,OAAO,IAAI,WAAW,KAAK,WAAW;CAEhF,sBAAsB,YAAY;CAElC,OAAO;AACT;;;;;;;;AASA,SAAS,qBAAqB,QAAqD;CACjF,MAAM,SAAS,mBAAmB;CAElC,IAAI,CAAC,UAAU,WAAW,UAAU,OAAO,QAAQ,GACjD,MAAM,IAAI,MACR,+OACF;CAGF,sBAAsB,OAAO,IAAI;AACnC;;;;;;;;;;;;;AAcA,eAAsB,oBAAoB,UAAsC,CAAC,GAAkB;CACjG,MAAM,kBAAkB,QAAQ,IAAI;CAEpC,IAAI,oBAAoB,QACtB,QAAQ,IAAI,WAAW;MAClB,IAAI,oBAAoB,QAC7B,MAAM,IAAI,MACR,yEAAyE,KAAK,UAAU,eAAe,EAAE,qDAC3G;CAGF,IAAI,iBAAiB;EACnB,QAAQ,IAAI,sDAAsD;EAClE;CACF;CAEA,QAAQ,IAAI,4CAA4C;CAExD,IAAI;EAGF,MAAM,qBAAqB;EAG3B,YAAY,mBAAmB,aAAa;EAC5C,YAAY,eAAe,MAAM;EAGjC,MAAM,qBAAqB,KAAK;EAChC,MAAM,UAAU;EAGhB,MAAM,kBAAkB,KAAK;EAC7B,MAAM,kBAAkB,cAAc;EAGtC,MAAM,gBAAgB,IAAI;EAO1B,IAAI,QAAQ,QAAQ,OAClB,MAAM,4BAAkD;OAExD,MAAM,kBAAkB,kBAAwC;EAIlE,MAAM,iBAAiB,QAAQ,KAAK;EAGpC,MAAM,kBAAkB,aAAa,QAAQ;EAE7C,MAAM,WAAW,MAAM,oBAAoB,QAAQ,IAAI;EACvD,MAAM,oBAAoB,mBAAmB;EAK7C,MAAM,YAAY,qBAAqB;EAIvC,IAAI,QAAQ,QAAQ,OAClB,MAAM,2BAAiD;OAEvD,MAAM,kBAAkB,iBAAuC;EAGjE,IAAI,aAAa,aACf,qBAAqB,iBAAiB;EAGxC,kBAAkB;CACpB,SAAS,OAAO;EAMd,MAAM,qBAAqB;EAI3B,MAAM;CACR;AACF;;;;;;;;AASA,eAAe,uBAAsC;CACnD,IAAI;EACF,MAAM,iBAAiB;CACzB,SAAS,YAAY;EACnB,QAAQ,MACN,iFACA,UACF;CACF;CAEA,IAAI;EACF,MAAM,kBAAkB,SAAS;CACnC,SAAS,eAAe;EAGtB,QAAQ,MAAM,gEAAgE,aAAa;CAC7F;CAEA,uBAAuB;CACvB,kBAAkB;AACpB;;;;;AAMA,eAAsB,qBAAoC;CACxD,IAAI,CAAC,iBAAiB;EACpB,QAAQ,IAAI,iCAAiC;EAC7C;CACF;CAEA,IAAI;EACF,IAAI;GACF,MAAM,iBAAiB;EACzB,SAAS,YAAY;GACnB,QAAQ,MAAM,4DAA4D,UAAU;EACtF;EAEA,MAAM,kBAAkB,SAAS;EAEjC,QAAQ,IAAI,wCAAwC;CACtD,SAAS,OAAO;EAGd,QAAQ,MAAM,6CAA6C,KAAK;EAEhE,MAAM;CACR,UAAU;EAIR,uBAAuB;EAEvB,kBAAkB;CACpB;AACF;;;;AAKA,SAAgB,sBAA+B;CAC7C,OAAO;AACT"}
@@ -1,5 +1,5 @@
1
1
  import { ConnectorName } from "../connectors/types.mjs";
2
- //#region ../core/src/tests/test-connectors-selection.d.ts
2
+ //#region ../../packages/core/src/tests/test-connectors-selection.d.ts
3
3
  /**
4
4
  * What a test runtime was asked to start.
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"test-connectors-selection.d.mts","names":[],"sources":["../../../../../../../core/src/tests/test-connectors-selection.ts"],"mappings":";;;;;AAqBA;;;;AAA6D;KAAjD,uBAAA,aAAoC,aAAa"}
1
+ {"version":3,"file":"test-connectors-selection.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-connectors-selection.ts"],"mappings":";;;;;AAqBA;;;;AAA6D;KAAjD,uBAAA,aAAoC,aAAa"}
@@ -1,7 +1,7 @@
1
1
  import { config } from "../config/config-getter.mjs";
2
2
  import "../config/index.mjs";
3
3
 
4
- //#region ../core/src/tests/test-connectors-selection.ts
4
+ //#region ../../packages/core/src/tests/test-connectors-selection.ts
5
5
  /**
6
6
  * Classify the caller's `connectors` option as explicit or deferred.
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"test-connectors-selection.mjs","names":[],"sources":["../../../../../../../core/src/tests/test-connectors-selection.ts"],"sourcesContent":["/**\n * Effective connector selection for the worker test lifecycle.\n *\n * Owns one decision: given what the caller passed and what the project\n * configured, which connectors does `setupTest` actually start? The precedence\n * is ratified in `contracts/2026-08-12-test-worker-lifecycle.md`:\n *\n * explicit non-`undefined` setupTest option > tests.connectors config > true\n */\nimport type { GenericObject } from \"@mongez/reinforcements\";\nimport { config } from \"../config\";\nimport type { ConnectorName } from \"../connectors\";\n\n/**\n * What a test runtime was asked to start.\n *\n * - `false` — bootstrap the runtime, start no connectors.\n * - `true` — start the framework's default connector set.\n * - an array — start exactly those. Order is not promised; lifecycle priority\n * decides the real boot/shutdown order.\n */\nexport type TestConnectorsSelection = boolean | ConnectorName[];\n\n/**\n * A caller's request, before the lower precedence layers are consulted.\n *\n * The distinction that matters is \"did the caller supply a value at all\", not\n * \"what value\" — `setupTest({ connectors: undefined })` must fall through to\n * project config exactly like `setupTest()` does, so an optional variable\n * holding `undefined` can never silently erase a project's configuration.\n */\nexport type RequestedTestConnectors =\n | { readonly isExplicit: true; readonly selection: TestConnectorsSelection }\n | { readonly isExplicit: false };\n\n/**\n * Classify the caller's `connectors` option as explicit or deferred.\n */\nexport function readRequestedConnectors(\n selection: TestConnectorsSelection | undefined,\n): RequestedTestConnectors {\n if (selection === undefined) {\n return { isExplicit: false };\n }\n\n return { isExplicit: true, selection };\n}\n\n/**\n * Read the `tests.connectors` config layer, or `undefined` when the project has\n * not configured one.\n *\n * Only meaningful once config files are loaded — before that, every project\n * looks like a project without a `tests` config.\n */\nexport function readConfiguredConnectors(): TestConnectorsSelection | undefined {\n // The default matters: `config.get` resolves an absent key to its default, and\n // ITS default is `null` — not `{}`. `warlock add test` does not generate\n // `src/config/tests.ts`, so reading `.connectors` off the result threw\n // \"Cannot read properties of null\" on the generated default path.\n const testsConfig = config.get<GenericObject>(\"tests\", {});\n\n // Cast at the config boundary: `GenericObject` values are untyped, and this is\n // the one place the untyped value becomes a typed selection.\n return testsConfig?.connectors as TestConnectorsSelection | undefined;\n}\n\n/**\n * Apply the ratified precedence:\n *\n * explicit non-`undefined` setupTest option > tests.connectors config > true\n *\n * ⚠ This is the reverse of 4.13, where config won over the parameter. Explicit\n * call-site intent beats a project default; a call that supplied nothing is not\n * intent, which is why \"omitted\" and \"explicitly `undefined`\" both defer.\n */\nexport function resolveEffectiveConnectors(\n requested: RequestedTestConnectors,\n): TestConnectorsSelection {\n if (requested.isExplicit) {\n return requested.selection;\n }\n\n const configured = readConfiguredConnectors();\n\n if (configured !== undefined) {\n return configured;\n }\n\n return true;\n}\n\n/**\n * Deduplicate a connector list and put it in a stable order.\n *\n * Two callers naming the same connectors in a different order asked for the same\n * thing, so the lifecycle must not treat them as a conflict.\n */\nexport function normalizeConnectorNames(names: ConnectorName[]): ConnectorName[] {\n return [...new Set(names)].sort();\n}\n\n/**\n * Compare two selections by normalized semantics — arrays as deduplicated sets,\n * never by caller order.\n */\nexport function isSameConnectorsSelection(\n left: TestConnectorsSelection,\n right: TestConnectorsSelection,\n): boolean {\n if (Array.isArray(left) && Array.isArray(right)) {\n const normalizedLeft = normalizeConnectorNames(left);\n const normalizedRight = normalizeConnectorNames(right);\n\n return (\n normalizedLeft.length === normalizedRight.length &&\n normalizedLeft.every((name, index) => name === normalizedRight[index])\n );\n }\n\n return left === right;\n}\n\n/**\n * Render a selection for an error message a caller can act on.\n */\nexport function describeConnectorsSelection(selection: TestConnectorsSelection): string {\n if (selection === true) {\n return \"the default connector set (`connectors: true`)\";\n }\n\n if (selection === false) {\n return \"no connectors (`connectors: false`)\";\n }\n\n const names = normalizeConnectorNames(selection)\n .map((name) => `\"${name}\"`)\n .join(\", \");\n\n return `\\`connectors: [${names}]\\``;\n}\n"],"mappings":";;;;;;;AAsCA,SAAgB,wBACd,WACyB;CACzB,IAAI,cAAc,QAChB,OAAO,EAAE,YAAY,MAAM;CAG7B,OAAO;EAAE,YAAY;EAAM;CAAU;AACvC;;;;;;;;AASA,SAAgB,2BAAgE;CAS9E,OAJoB,OAAO,IAAmB,SAAS,CAAC,CAIvC,CAAC,EAAE;AACtB;;;;;;;;;;AAWA,SAAgB,2BACd,WACyB;CACzB,IAAI,UAAU,YACZ,OAAO,UAAU;CAGnB,MAAM,aAAa,yBAAyB;CAE5C,IAAI,eAAe,QACjB,OAAO;CAGT,OAAO;AACT;;;;;;;AAQA,SAAgB,wBAAwB,OAAyC;CAC/E,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK;AAClC;;;;;AAMA,SAAgB,0BACd,MACA,OACS;CACT,IAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG;EAC/C,MAAM,iBAAiB,wBAAwB,IAAI;EACnD,MAAM,kBAAkB,wBAAwB,KAAK;EAErD,OACE,eAAe,WAAW,gBAAgB,UAC1C,eAAe,OAAO,MAAM,UAAU,SAAS,gBAAgB,MAAM;CAEzE;CAEA,OAAO,SAAS;AAClB;;;;AAKA,SAAgB,4BAA4B,WAA4C;CACtF,IAAI,cAAc,MAChB,OAAO;CAGT,IAAI,cAAc,OAChB,OAAO;CAOT,OAAO,kBAJO,wBAAwB,SAAS,CAAC,CAC7C,KAAK,SAAS,IAAI,KAAK,EAAE,CAAC,CAC1B,KAAK,IAEqB,EAAE;AACjC"}
1
+ {"version":3,"file":"test-connectors-selection.mjs","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-connectors-selection.ts"],"sourcesContent":["/**\n * Effective connector selection for the worker test lifecycle.\n *\n * Owns one decision: given what the caller passed and what the project\n * configured, which connectors does `setupTest` actually start? The precedence\n * is ratified in `contracts/2026-08-12-test-worker-lifecycle.md`:\n *\n * explicit non-`undefined` setupTest option > tests.connectors config > true\n */\nimport type { GenericObject } from \"@mongez/reinforcements\";\nimport { config } from \"../config\";\nimport type { ConnectorName } from \"../connectors\";\n\n/**\n * What a test runtime was asked to start.\n *\n * - `false` — bootstrap the runtime, start no connectors.\n * - `true` — start the framework's default connector set.\n * - an array — start exactly those. Order is not promised; lifecycle priority\n * decides the real boot/shutdown order.\n */\nexport type TestConnectorsSelection = boolean | ConnectorName[];\n\n/**\n * A caller's request, before the lower precedence layers are consulted.\n *\n * The distinction that matters is \"did the caller supply a value at all\", not\n * \"what value\" — `setupTest({ connectors: undefined })` must fall through to\n * project config exactly like `setupTest()` does, so an optional variable\n * holding `undefined` can never silently erase a project's configuration.\n */\nexport type RequestedTestConnectors =\n | { readonly isExplicit: true; readonly selection: TestConnectorsSelection }\n | { readonly isExplicit: false };\n\n/**\n * Classify the caller's `connectors` option as explicit or deferred.\n */\nexport function readRequestedConnectors(\n selection: TestConnectorsSelection | undefined,\n): RequestedTestConnectors {\n if (selection === undefined) {\n return { isExplicit: false };\n }\n\n return { isExplicit: true, selection };\n}\n\n/**\n * Read the `tests.connectors` config layer, or `undefined` when the project has\n * not configured one.\n *\n * Only meaningful once config files are loaded — before that, every project\n * looks like a project without a `tests` config.\n */\nexport function readConfiguredConnectors(): TestConnectorsSelection | undefined {\n // The default matters: `config.get` resolves an absent key to its default, and\n // ITS default is `null` — not `{}`. `warlock add test` does not generate\n // `src/config/tests.ts`, so reading `.connectors` off the result threw\n // \"Cannot read properties of null\" on the generated default path.\n const testsConfig = config.get<GenericObject>(\"tests\", {});\n\n // Cast at the config boundary: `GenericObject` values are untyped, and this is\n // the one place the untyped value becomes a typed selection.\n return testsConfig?.connectors as TestConnectorsSelection | undefined;\n}\n\n/**\n * Apply the ratified precedence:\n *\n * explicit non-`undefined` setupTest option > tests.connectors config > true\n *\n * ⚠ This is the reverse of 4.13, where config won over the parameter. Explicit\n * call-site intent beats a project default; a call that supplied nothing is not\n * intent, which is why \"omitted\" and \"explicitly `undefined`\" both defer.\n */\nexport function resolveEffectiveConnectors(\n requested: RequestedTestConnectors,\n): TestConnectorsSelection {\n if (requested.isExplicit) {\n return requested.selection;\n }\n\n const configured = readConfiguredConnectors();\n\n if (configured !== undefined) {\n return configured;\n }\n\n return true;\n}\n\n/**\n * Deduplicate a connector list and put it in a stable order.\n *\n * Two callers naming the same connectors in a different order asked for the same\n * thing, so the lifecycle must not treat them as a conflict.\n */\nexport function normalizeConnectorNames(names: ConnectorName[]): ConnectorName[] {\n return [...new Set(names)].sort();\n}\n\n/**\n * Compare two selections by normalized semantics — arrays as deduplicated sets,\n * never by caller order.\n */\nexport function isSameConnectorsSelection(\n left: TestConnectorsSelection,\n right: TestConnectorsSelection,\n): boolean {\n if (Array.isArray(left) && Array.isArray(right)) {\n const normalizedLeft = normalizeConnectorNames(left);\n const normalizedRight = normalizeConnectorNames(right);\n\n return (\n normalizedLeft.length === normalizedRight.length &&\n normalizedLeft.every((name, index) => name === normalizedRight[index])\n );\n }\n\n return left === right;\n}\n\n/**\n * Render a selection for an error message a caller can act on.\n */\nexport function describeConnectorsSelection(selection: TestConnectorsSelection): string {\n if (selection === true) {\n return \"the default connector set (`connectors: true`)\";\n }\n\n if (selection === false) {\n return \"no connectors (`connectors: false`)\";\n }\n\n const names = normalizeConnectorNames(selection)\n .map((name) => `\"${name}\"`)\n .join(\", \");\n\n return `\\`connectors: [${names}]\\``;\n}\n"],"mappings":";;;;;;;AAsCA,SAAgB,wBACd,WACyB;CACzB,IAAI,cAAc,QAChB,OAAO,EAAE,YAAY,MAAM;CAG7B,OAAO;EAAE,YAAY;EAAM;CAAU;AACvC;;;;;;;;AASA,SAAgB,2BAAgE;CAS9E,OAJoB,OAAO,IAAmB,SAAS,CAAC,CAIvC,CAAC,EAAE;AACtB;;;;;;;;;;AAWA,SAAgB,2BACd,WACyB;CACzB,IAAI,UAAU,YACZ,OAAO,UAAU;CAGnB,MAAM,aAAa,yBAAyB;CAE5C,IAAI,eAAe,QACjB,OAAO;CAGT,OAAO;AACT;;;;;;;AAQA,SAAgB,wBAAwB,OAAyC;CAC/E,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK;AAClC;;;;;AAMA,SAAgB,0BACd,MACA,OACS;CACT,IAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG;EAC/C,MAAM,iBAAiB,wBAAwB,IAAI;EACnD,MAAM,kBAAkB,wBAAwB,KAAK;EAErD,OACE,eAAe,WAAW,gBAAgB,UAC1C,eAAe,OAAO,MAAM,UAAU,SAAS,gBAAgB,MAAM;CAEzE;CAEA,OAAO,SAAS;AAClB;;;;AAKA,SAAgB,4BAA4B,WAA4C;CACtF,IAAI,cAAc,MAChB,OAAO;CAGT,IAAI,cAAc,OAChB,OAAO;CAOT,OAAO,kBAJO,wBAAwB,SAAS,CAAC,CAC7C,KAAK,SAAS,IAAI,KAAK,EAAE,CAAC,CAC1B,KAAK,IAEqB,EAAE;AACjC"}
@@ -1,4 +1,4 @@
1
- //#region ../core/src/tests/test-helpers.d.ts
1
+ //#region ../../packages/core/src/tests/test-helpers.d.ts
2
2
  /**
3
3
  * Warlock.js Test Helpers
4
4
  *
@@ -13,6 +13,25 @@ declare function getTestServerUrl(): string;
13
13
  * Uses native fetch - lightweight, no extra dependencies
14
14
  */
15
15
  declare function testRequest(path: string, options?: RequestInit): Promise<Response>;
16
+ /** The request helpers, bound to one server. */
17
+ type TestRequestClient = {
18
+ request(path: string, options?: RequestInit): Promise<Response>;
19
+ get(path: string, options?: RequestInit): Promise<Response>;
20
+ post(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
21
+ put(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
22
+ patch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
23
+ delete(path: string, options?: RequestInit): Promise<Response>;
24
+ };
25
+ /**
26
+ * Request helpers bound to `baseUrl` (a string, or a function read on every
27
+ * request). `testGet()` and friends are this, bound to the shared test server;
28
+ * `createTestHttpServer()` returns one bound to its own port.
29
+ *
30
+ * @example
31
+ * const client = createTestRequestClient("http://127.0.0.1:4100");
32
+ * await client.post("/posts", { title: "Hello" });
33
+ */
34
+ declare function createTestRequestClient(baseUrl: string | (() => string)): TestRequestClient;
16
35
  /**
17
36
  * GET request helper
18
37
  */
@@ -42,5 +61,5 @@ declare function parseJsonResponse<T>(response: Response): Promise<T>;
42
61
  */
43
62
  declare function expectJson<T>(response: Response, expectedStatus?: number): Promise<T>;
44
63
  //#endregion
45
- export { expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
64
+ export { TestRequestClient, createTestRequestClient, expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
46
65
  //# sourceMappingURL=test-helpers.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.d.mts","names":[],"sources":["../../../../../../../core/src/tests/test-helpers.ts"],"mappings":";;AAaA;;;;AAAgC;AA6BhC;;AA7BgC,iBAAhB,gBAAA;;;;;iBA6BM,WAAA,CAAY,IAAA,UAAc,OAAA,GAAS,WAAA,GAAmB,OAAA,CAAQ,QAAA;;;;iBAgD9D,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAS,WAAA,GAAmB,OAAA,CAAQ,QAAA;;;AAhDY;iBAuDtE,QAAA,CACpB,IAAA,UACA,IAAA,YACA,OAAA,GAAS,WAAA,GACR,OAAA,CAAQ,QAAA;;;;iBAWW,OAAA,CACpB,IAAA,UACA,IAAA,YACA,OAAA,GAAS,WAAA,GACR,OAAA,CAAQ,QAAA;;;;iBAOW,UAAA,CAAW,IAAA,UAAc,OAAA,GAAS,WAAA,GAAmB,OAAA,CAAQ,QAAA;;;;iBAO7D,SAAA,CACpB,IAAA,UACA,IAAA,YACA,OAAA,GAAS,WAAA,GACR,OAAA,CAAQ,QAAA;;AA5C6E;AAOxF;iBAgDsB,iBAAA,IAAqB,QAAA,EAAU,QAAA,GAAW,OAAA,CAAQ,CAAA;;;;iBAOlD,UAAA,IAAc,QAAA,EAAU,QAAA,EAAU,cAAA,YAAuB,OAAA,CAAQ,CAAA"}
1
+ {"version":3,"file":"test-helpers.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-helpers.ts"],"mappings":";;AAaA;;;;AAAgC;AA6BhC;;AA7BgC,iBAAhB,gBAAA;;;;;iBA6BM,WAAA,CAAY,IAAA,UAAc,OAAA,GAAS,WAAA,GAAmB,OAAA,CAAQ,QAAA;;KA8CxE,iBAAA;EACV,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,QAAA;EACtD,GAAA,CAAI,IAAA,UAAc,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,QAAA;EAClD,IAAA,CAAK,IAAA,UAAc,IAAA,YAAgB,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,QAAA;EACnE,GAAA,CAAI,IAAA,UAAc,IAAA,YAAgB,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,QAAA;EAClE,KAAA,CAAM,IAAA,UAAc,IAAA,YAAgB,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,QAAA;EACpE,MAAA,CAAO,IAAA,UAAc,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,QAAA;AAAA;;;;;;;;;;iBAYvC,uBAAA,CAAwB,OAAA,4BAAmC,iBAAiB;;;;iBAqBtE,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAS,WAAA,GAAmB,OAAA,CAAQ,QAAA;;;;iBAO1D,QAAA,CACpB,IAAA,UACA,IAAA,YACA,OAAA,GAAS,WAAA,GACR,OAAA,CAAQ,QAAA;;;;iBAOW,OAAA,CACpB,IAAA,UACA,IAAA,YACA,OAAA,GAAS,WAAA,GACR,OAAA,CAAQ,QAAA;;;;iBAOW,UAAA,CAAW,IAAA,UAAc,OAAA,GAAS,WAAA,GAAmB,OAAA,CAAQ,QAAA;;;;iBAO7D,SAAA,CACpB,IAAA,UACA,IAAA,YACA,OAAA,GAAS,WAAA,GACR,OAAA,CAAQ,QAAA;;;;iBAOW,iBAAA,IAAqB,QAAA,EAAU,QAAA,GAAW,OAAA,CAAQ,CAAA;;;;iBAOlD,UAAA,IAAc,QAAA,EAAU,QAAA,EAAU,cAAA,YAAuB,OAAA,CAAQ,CAAA"}
@@ -3,7 +3,7 @@ import "../config/index.mjs";
3
3
  import { getHttpReadyReport } from "../http/ready-report.mjs";
4
4
  import { TEST_SERVER_PORT_ENV_KEY } from "./test-server-port-channel.mjs";
5
5
 
6
- //#region ../core/src/tests/test-helpers.ts
6
+ //#region ../../packages/core/src/tests/test-helpers.ts
7
7
  /**
8
8
  * Warlock.js Test Helpers
9
9
  *
@@ -23,7 +23,7 @@ function getTestServerUrl() {
23
23
  * Uses native fetch - lightweight, no extra dependencies
24
24
  */
25
25
  async function testRequest(path, options = {}) {
26
- return sendRequest(path, options, false);
26
+ return sendRequest(getTestServerUrl(), path, options, false);
27
27
  }
28
28
  /**
29
29
  * The single place a request is actually built.
@@ -33,8 +33,7 @@ async function testRequest(path, options = {}) {
33
33
  * a `FormData` body carries a multipart boundary the runtime generates, and
34
34
  * labelling it `application/json` produces a request no server can parse.
35
35
  */
36
- async function sendRequest(path, options, serializedJson) {
37
- const baseUrl = getTestServerUrl();
36
+ async function sendRequest(baseUrl, path, options, serializedJson) {
38
37
  const url = path.startsWith("/") ? `${baseUrl}${path}` : `${baseUrl}/${path}`;
39
38
  const headers = new Headers(options.headers);
40
39
  if (serializedJson && !headers.has("content-type")) headers.set("content-type", "application/json");
@@ -55,52 +54,66 @@ function jsonBody(body) {
55
54
  return body === void 0 ? void 0 : JSON.stringify(body);
56
55
  }
57
56
  /**
57
+ * Request helpers bound to `baseUrl` (a string, or a function read on every
58
+ * request). `testGet()` and friends are this, bound to the shared test server;
59
+ * `createTestHttpServer()` returns one bound to its own port.
60
+ *
61
+ * @example
62
+ * const client = createTestRequestClient("http://127.0.0.1:4100");
63
+ * await client.post("/posts", { title: "Hello" });
64
+ */
65
+ function createTestRequestClient(baseUrl) {
66
+ const base = () => typeof baseUrl === "function" ? baseUrl() : baseUrl;
67
+ const send = (method, path, body, options = {}) => sendRequest(base(), path, {
68
+ ...options,
69
+ method,
70
+ body: jsonBody(body)
71
+ }, body !== void 0);
72
+ return {
73
+ request: (path, options = {}) => sendRequest(base(), path, options, false),
74
+ get: (path, options = {}) => sendRequest(base(), path, {
75
+ ...options,
76
+ method: "GET"
77
+ }, false),
78
+ post: (path, body, options) => send("POST", path, body, options),
79
+ put: (path, body, options) => send("PUT", path, body, options),
80
+ patch: (path, body, options) => send("PATCH", path, body, options),
81
+ delete: (path, options = {}) => sendRequest(base(), path, {
82
+ ...options,
83
+ method: "DELETE"
84
+ }, false)
85
+ };
86
+ }
87
+ const sharedServer = createTestRequestClient(getTestServerUrl);
88
+ /**
58
89
  * GET request helper
59
90
  */
60
91
  async function testGet(path, options = {}) {
61
- return testRequest(path, {
62
- ...options,
63
- method: "GET"
64
- });
92
+ return sharedServer.get(path, options);
65
93
  }
66
94
  /**
67
95
  * POST request helper
68
96
  */
69
97
  async function testPost(path, body, options = {}) {
70
- return sendRequest(path, {
71
- ...options,
72
- method: "POST",
73
- body: jsonBody(body)
74
- }, body !== void 0);
98
+ return sharedServer.post(path, body, options);
75
99
  }
76
100
  /**
77
101
  * PUT request helper
78
102
  */
79
103
  async function testPut(path, body, options = {}) {
80
- return sendRequest(path, {
81
- ...options,
82
- method: "PUT",
83
- body: jsonBody(body)
84
- }, body !== void 0);
104
+ return sharedServer.put(path, body, options);
85
105
  }
86
106
  /**
87
107
  * DELETE request helper
88
108
  */
89
109
  async function testDelete(path, options = {}) {
90
- return testRequest(path, {
91
- ...options,
92
- method: "DELETE"
93
- });
110
+ return sharedServer.delete(path, options);
94
111
  }
95
112
  /**
96
113
  * PATCH request helper
97
114
  */
98
115
  async function testPatch(path, body, options = {}) {
99
- return sendRequest(path, {
100
- ...options,
101
- method: "PATCH",
102
- body: jsonBody(body)
103
- }, body !== void 0);
116
+ return sharedServer.patch(path, body, options);
104
117
  }
105
118
  /**
106
119
  * Parse JSON response with type safety
@@ -120,5 +133,5 @@ async function expectJson(response, expectedStatus = 200) {
120
133
  }
121
134
 
122
135
  //#endregion
123
- export { expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
136
+ export { createTestRequestClient, expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
124
137
  //# sourceMappingURL=test-helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.mjs","names":[],"sources":["../../../../../../../core/src/tests/test-helpers.ts"],"sourcesContent":["/**\n * Warlock.js Test Helpers\n *\n * Utilities for testing Warlock.js applications.\n */\n\nimport { config } from \"../config\";\nimport { getHttpReadyReport } from \"../http/ready-report\";\nimport { TEST_SERVER_PORT_ENV_KEY } from \"./test-server-port-channel\";\n\n/**\n * Get the test server base URL\n */\nexport function getTestServerUrl(): string {\n // `startHttpTestServer` publishes the port it actually bound. Test workers are\n // separate processes whose own config resolves `http.port` from `.env`, so\n // without this a suite started on an explicit port would send every request to\n // the `.env` port instead of the one the server is listening on.\n const publishedPort = process.env[TEST_SERVER_PORT_ENV_KEY];\n\n // Same-process fallback: a test that boots the HTTP connector directly\n // (rather than through `startHttpTestServer`'s cross-process channel) never\n // writes `TEST_SERVER_PORT_ENV_KEY`, so without this the next fallback —\n // `config.key(\"http.port\", 2031)` — was the only source left, and it holds\n // the CONFIGURED port, not the bound one. For `http.port: 0` that is `0`,\n // producing `http://host:0` even though `HttpConnector.start()` had already\n // recorded the real bound port right here in `ready-report.ts`.\n const boundPort = getHttpReadyReport()?.port;\n\n // `config.key`'s default only substitutes for `undefined` — `0` is a\n // defined configured value, not an absent one — so it cannot be trusted to\n // paper over an unresolved port 0 either. `boundPort` is read first for\n // that exact reason.\n const port = publishedPort || boundPort || config.key(\"http.port\", 2031);\n const host = config.key(\"http.host\", \"localhost\");\n return `http://${host}:${port}`;\n}\n\n/**\n * Simple HTTP request helper for test server\n * Uses native fetch - lightweight, no extra dependencies\n */\nexport async function testRequest(path: string, options: RequestInit = {}): Promise<Response> {\n return sendRequest(path, options, false);\n}\n\n/**\n * The single place a request is actually built.\n *\n * `serializedJson` says whether THIS module turned the caller's value into a\n * JSON string. It is the only thing that justifies setting a JSON content type:\n * a `FormData` body carries a multipart boundary the runtime generates, and\n * labelling it `application/json` produces a request no server can parse.\n */\nasync function sendRequest(\n path: string,\n options: RequestInit,\n serializedJson: boolean,\n): Promise<Response> {\n const baseUrl = getTestServerUrl();\n const url = path.startsWith(\"/\") ? `${baseUrl}${path}` : `${baseUrl}/${path}`;\n\n // Normalised through `Headers` rather than object-spread: `RequestInit.headers`\n // may be a record, a `Headers` instance, or a list of `[name, value]` tuples,\n // and spreading the last two silently produces an object with numeric keys —\n // the header is simply lost, with no error anywhere.\n const headers = new Headers(options.headers);\n\n if (serializedJson && !headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n\n return fetch(url, { ...options, headers });\n}\n\n/**\n * Serialize a body for a JSON request.\n *\n * `undefined` means the caller omitted the argument; every other value —\n * including `false`, `0`, `\"\"` and `null` — is a legal JSON document and must\n * be sent. The old check was `body ? JSON.stringify(body) : undefined`, which\n * dropped all four.\n */\nfunction jsonBody(body: unknown): string | undefined {\n return body === undefined ? undefined : JSON.stringify(body);\n}\n\n/**\n * GET request helper\n */\nexport async function testGet(path: string, options: RequestInit = {}): Promise<Response> {\n return testRequest(path, { ...options, method: \"GET\" });\n}\n\n/**\n * POST request helper\n */\nexport async function testPost(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sendRequest(\n path,\n { ...options, method: \"POST\", body: jsonBody(body) },\n body !== undefined,\n );\n}\n\n/**\n * PUT request helper\n */\nexport async function testPut(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sendRequest(path, { ...options, method: \"PUT\", body: jsonBody(body) }, body !== undefined);\n}\n\n/**\n * DELETE request helper\n */\nexport async function testDelete(path: string, options: RequestInit = {}): Promise<Response> {\n return testRequest(path, { ...options, method: \"DELETE\" });\n}\n\n/**\n * PATCH request helper\n */\nexport async function testPatch(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sendRequest(\n path,\n { ...options, method: \"PATCH\", body: jsonBody(body) },\n body !== undefined,\n );\n}\n\n/**\n * Parse JSON response with type safety\n */\nexport async function parseJsonResponse<T>(response: Response): Promise<T> {\n return response.json() as Promise<T>;\n}\n\n/**\n * Assert response status and return parsed JSON\n */\nexport async function expectJson<T>(response: Response, expectedStatus = 200): Promise<T> {\n if (response.status !== expectedStatus) {\n const text = await response.text();\n throw new Error(`Expected status ${expectedStatus}, got ${response.status}. Body: ${text}`);\n }\n return parseJsonResponse<T>(response);\n}\n"],"mappings":";;;;;;;;;;;;;;AAaA,SAAgB,mBAA2B;CAKzC,MAAM,gBAAgB,QAAQ,IAAI;CASlC,MAAM,YAAY,mBAAmB,CAAC,EAAE;CAMxC,MAAM,OAAO,iBAAiB,aAAa,OAAO,IAAI,aAAa,IAAI;CAEvE,OAAO,UADM,OAAO,IAAI,aAAa,WACjB,EAAE,GAAG;AAC3B;;;;;AAMA,eAAsB,YAAY,MAAc,UAAuB,CAAC,GAAsB;CAC5F,OAAO,YAAY,MAAM,SAAS,KAAK;AACzC;;;;;;;;;AAUA,eAAe,YACb,MACA,SACA,gBACmB;CACnB,MAAM,UAAU,iBAAiB;CACjC,MAAM,MAAM,KAAK,WAAW,GAAG,IAAI,GAAG,UAAU,SAAS,GAAG,QAAQ,GAAG;CAMvE,MAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;CAE3C,IAAI,kBAAkB,CAAC,QAAQ,IAAI,cAAc,GAC/C,QAAQ,IAAI,gBAAgB,kBAAkB;CAGhD,OAAO,MAAM,KAAK;EAAE,GAAG;EAAS;CAAQ,CAAC;AAC3C;;;;;;;;;AAUA,SAAS,SAAS,MAAmC;CACnD,OAAO,SAAS,SAAY,SAAY,KAAK,UAAU,IAAI;AAC7D;;;;AAKA,eAAsB,QAAQ,MAAc,UAAuB,CAAC,GAAsB;CACxF,OAAO,YAAY,MAAM;EAAE,GAAG;EAAS,QAAQ;CAAM,CAAC;AACxD;;;;AAKA,eAAsB,SACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,YACL,MACA;EAAE,GAAG;EAAS,QAAQ;EAAQ,MAAM,SAAS,IAAI;CAAE,GACnD,SAAS,MACX;AACF;;;;AAKA,eAAsB,QACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,YAAY,MAAM;EAAE,GAAG;EAAS,QAAQ;EAAO,MAAM,SAAS,IAAI;CAAE,GAAG,SAAS,MAAS;AAClG;;;;AAKA,eAAsB,WAAW,MAAc,UAAuB,CAAC,GAAsB;CAC3F,OAAO,YAAY,MAAM;EAAE,GAAG;EAAS,QAAQ;CAAS,CAAC;AAC3D;;;;AAKA,eAAsB,UACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,YACL,MACA;EAAE,GAAG;EAAS,QAAQ;EAAS,MAAM,SAAS,IAAI;CAAE,GACpD,SAAS,MACX;AACF;;;;AAKA,eAAsB,kBAAqB,UAAgC;CACzE,OAAO,SAAS,KAAK;AACvB;;;;AAKA,eAAsB,WAAc,UAAoB,iBAAiB,KAAiB;CACxF,IAAI,SAAS,WAAW,gBAAgB;EACtC,MAAM,OAAO,MAAM,SAAS,KAAK;EACjC,MAAM,IAAI,MAAM,mBAAmB,eAAe,QAAQ,SAAS,OAAO,UAAU,MAAM;CAC5F;CACA,OAAO,kBAAqB,QAAQ;AACtC"}
1
+ {"version":3,"file":"test-helpers.mjs","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-helpers.ts"],"sourcesContent":["/**\n * Warlock.js Test Helpers\n *\n * Utilities for testing Warlock.js applications.\n */\n\nimport { config } from \"../config\";\nimport { getHttpReadyReport } from \"../http/ready-report\";\nimport { TEST_SERVER_PORT_ENV_KEY } from \"./test-server-port-channel\";\n\n/**\n * Get the test server base URL\n */\nexport function getTestServerUrl(): string {\n // `startHttpTestServer` publishes the port it actually bound. Test workers are\n // separate processes whose own config resolves `http.port` from `.env`, so\n // without this a suite started on an explicit port would send every request to\n // the `.env` port instead of the one the server is listening on.\n const publishedPort = process.env[TEST_SERVER_PORT_ENV_KEY];\n\n // Same-process fallback: a test that boots the HTTP connector directly\n // (rather than through `startHttpTestServer`'s cross-process channel) never\n // writes `TEST_SERVER_PORT_ENV_KEY`, so without this the next fallback —\n // `config.key(\"http.port\", 2031)` — was the only source left, and it holds\n // the CONFIGURED port, not the bound one. For `http.port: 0` that is `0`,\n // producing `http://host:0` even though `HttpConnector.start()` had already\n // recorded the real bound port right here in `ready-report.ts`.\n const boundPort = getHttpReadyReport()?.port;\n\n // `config.key`'s default only substitutes for `undefined` — `0` is a\n // defined configured value, not an absent one — so it cannot be trusted to\n // paper over an unresolved port 0 either. `boundPort` is read first for\n // that exact reason.\n const port = publishedPort || boundPort || config.key(\"http.port\", 2031);\n const host = config.key(\"http.host\", \"localhost\");\n return `http://${host}:${port}`;\n}\n\n/**\n * Simple HTTP request helper for test server\n * Uses native fetch - lightweight, no extra dependencies\n */\nexport async function testRequest(path: string, options: RequestInit = {}): Promise<Response> {\n return sendRequest(getTestServerUrl(), path, options, false);\n}\n\n/**\n * The single place a request is actually built.\n *\n * `serializedJson` says whether THIS module turned the caller's value into a\n * JSON string. It is the only thing that justifies setting a JSON content type:\n * a `FormData` body carries a multipart boundary the runtime generates, and\n * labelling it `application/json` produces a request no server can parse.\n */\nasync function sendRequest(\n baseUrl: string,\n path: string,\n options: RequestInit,\n serializedJson: boolean,\n): Promise<Response> {\n const url = path.startsWith(\"/\") ? `${baseUrl}${path}` : `${baseUrl}/${path}`;\n\n // Normalised through `Headers` rather than object-spread: `RequestInit.headers`\n // may be a record, a `Headers` instance, or a list of `[name, value]` tuples,\n // and spreading the last two silently produces an object with numeric keys —\n // the header is simply lost, with no error anywhere.\n const headers = new Headers(options.headers);\n\n if (serializedJson && !headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n\n return fetch(url, { ...options, headers });\n}\n\n/**\n * Serialize a body for a JSON request.\n *\n * `undefined` means the caller omitted the argument; every other value —\n * including `false`, `0`, `\"\"` and `null` — is a legal JSON document and must\n * be sent. The old check was `body ? JSON.stringify(body) : undefined`, which\n * dropped all four.\n */\nfunction jsonBody(body: unknown): string | undefined {\n return body === undefined ? undefined : JSON.stringify(body);\n}\n\n/** The request helpers, bound to one server. */\nexport type TestRequestClient = {\n request(path: string, options?: RequestInit): Promise<Response>;\n get(path: string, options?: RequestInit): Promise<Response>;\n post(path: string, body?: unknown, options?: RequestInit): Promise<Response>;\n put(path: string, body?: unknown, options?: RequestInit): Promise<Response>;\n patch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;\n delete(path: string, options?: RequestInit): Promise<Response>;\n};\n\n/**\n * Request helpers bound to `baseUrl` (a string, or a function read on every\n * request). `testGet()` and friends are this, bound to the shared test server;\n * `createTestHttpServer()` returns one bound to its own port.\n *\n * @example\n * const client = createTestRequestClient(\"http://127.0.0.1:4100\");\n * await client.post(\"/posts\", { title: \"Hello\" });\n */\nexport function createTestRequestClient(baseUrl: string | (() => string)): TestRequestClient {\n const base = () => (typeof baseUrl === \"function\" ? baseUrl() : baseUrl);\n const send = (method: string, path: string, body: unknown, options: RequestInit = {}) =>\n sendRequest(base(), path, { ...options, method, body: jsonBody(body) }, body !== undefined);\n\n return {\n request: (path, options = {}) => sendRequest(base(), path, options, false),\n get: (path, options = {}) => sendRequest(base(), path, { ...options, method: \"GET\" }, false),\n post: (path, body, options) => send(\"POST\", path, body, options),\n put: (path, body, options) => send(\"PUT\", path, body, options),\n patch: (path, body, options) => send(\"PATCH\", path, body, options),\n delete: (path, options = {}) =>\n sendRequest(base(), path, { ...options, method: \"DELETE\" }, false),\n };\n}\n\nconst sharedServer = createTestRequestClient(getTestServerUrl);\n\n/**\n * GET request helper\n */\nexport async function testGet(path: string, options: RequestInit = {}): Promise<Response> {\n return sharedServer.get(path, options);\n}\n\n/**\n * POST request helper\n */\nexport async function testPost(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sharedServer.post(path, body, options);\n}\n\n/**\n * PUT request helper\n */\nexport async function testPut(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sharedServer.put(path, body, options);\n}\n\n/**\n * DELETE request helper\n */\nexport async function testDelete(path: string, options: RequestInit = {}): Promise<Response> {\n return sharedServer.delete(path, options);\n}\n\n/**\n * PATCH request helper\n */\nexport async function testPatch(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sharedServer.patch(path, body, options);\n}\n\n/**\n * Parse JSON response with type safety\n */\nexport async function parseJsonResponse<T>(response: Response): Promise<T> {\n return response.json() as Promise<T>;\n}\n\n/**\n * Assert response status and return parsed JSON\n */\nexport async function expectJson<T>(response: Response, expectedStatus = 200): Promise<T> {\n if (response.status !== expectedStatus) {\n const text = await response.text();\n throw new Error(`Expected status ${expectedStatus}, got ${response.status}. Body: ${text}`);\n }\n return parseJsonResponse<T>(response);\n}\n"],"mappings":";;;;;;;;;;;;;;AAaA,SAAgB,mBAA2B;CAKzC,MAAM,gBAAgB,QAAQ,IAAI;CASlC,MAAM,YAAY,mBAAmB,CAAC,EAAE;CAMxC,MAAM,OAAO,iBAAiB,aAAa,OAAO,IAAI,aAAa,IAAI;CAEvE,OAAO,UADM,OAAO,IAAI,aAAa,WACjB,EAAE,GAAG;AAC3B;;;;;AAMA,eAAsB,YAAY,MAAc,UAAuB,CAAC,GAAsB;CAC5F,OAAO,YAAY,iBAAiB,GAAG,MAAM,SAAS,KAAK;AAC7D;;;;;;;;;AAUA,eAAe,YACb,SACA,MACA,SACA,gBACmB;CACnB,MAAM,MAAM,KAAK,WAAW,GAAG,IAAI,GAAG,UAAU,SAAS,GAAG,QAAQ,GAAG;CAMvE,MAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;CAE3C,IAAI,kBAAkB,CAAC,QAAQ,IAAI,cAAc,GAC/C,QAAQ,IAAI,gBAAgB,kBAAkB;CAGhD,OAAO,MAAM,KAAK;EAAE,GAAG;EAAS;CAAQ,CAAC;AAC3C;;;;;;;;;AAUA,SAAS,SAAS,MAAmC;CACnD,OAAO,SAAS,SAAY,SAAY,KAAK,UAAU,IAAI;AAC7D;;;;;;;;;;AAqBA,SAAgB,wBAAwB,SAAqD;CAC3F,MAAM,aAAc,OAAO,YAAY,aAAa,QAAQ,IAAI;CAChE,MAAM,QAAQ,QAAgB,MAAc,MAAe,UAAuB,CAAC,MACjF,YAAY,KAAK,GAAG,MAAM;EAAE,GAAG;EAAS;EAAQ,MAAM,SAAS,IAAI;CAAE,GAAG,SAAS,MAAS;CAE5F,OAAO;EACL,UAAU,MAAM,UAAU,CAAC,MAAM,YAAY,KAAK,GAAG,MAAM,SAAS,KAAK;EACzE,MAAM,MAAM,UAAU,CAAC,MAAM,YAAY,KAAK,GAAG,MAAM;GAAE,GAAG;GAAS,QAAQ;EAAM,GAAG,KAAK;EAC3F,OAAO,MAAM,MAAM,YAAY,KAAK,QAAQ,MAAM,MAAM,OAAO;EAC/D,MAAM,MAAM,MAAM,YAAY,KAAK,OAAO,MAAM,MAAM,OAAO;EAC7D,QAAQ,MAAM,MAAM,YAAY,KAAK,SAAS,MAAM,MAAM,OAAO;EACjE,SAAS,MAAM,UAAU,CAAC,MACxB,YAAY,KAAK,GAAG,MAAM;GAAE,GAAG;GAAS,QAAQ;EAAS,GAAG,KAAK;CACrE;AACF;AAEA,MAAM,eAAe,wBAAwB,gBAAgB;;;;AAK7D,eAAsB,QAAQ,MAAc,UAAuB,CAAC,GAAsB;CACxF,OAAO,aAAa,IAAI,MAAM,OAAO;AACvC;;;;AAKA,eAAsB,SACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,aAAa,KAAK,MAAM,MAAM,OAAO;AAC9C;;;;AAKA,eAAsB,QACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,aAAa,IAAI,MAAM,MAAM,OAAO;AAC7C;;;;AAKA,eAAsB,WAAW,MAAc,UAAuB,CAAC,GAAsB;CAC3F,OAAO,aAAa,OAAO,MAAM,OAAO;AAC1C;;;;AAKA,eAAsB,UACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,aAAa,MAAM,MAAM,MAAM,OAAO;AAC/C;;;;AAKA,eAAsB,kBAAqB,UAAgC;CACzE,OAAO,SAAS,KAAK;AACvB;;;;AAKA,eAAsB,WAAc,UAAoB,iBAAiB,KAAiB;CACxF,IAAI,SAAS,WAAW,gBAAgB;EACtC,MAAM,OAAO,MAAM,SAAS,KAAK;EACjC,MAAM,IAAI,MAAM,mBAAmB,eAAe,QAAQ,SAAS,OAAO,UAAU,MAAM;CAC5F;CACA,OAAO,kBAAqB,QAAQ;AACtC"}
@@ -0,0 +1,62 @@
1
+ import { FastifyInstance } from "../http/server.mjs";
2
+ import { Router } from "../router/router.mjs";
3
+ import { TestRequestClient } from "./test-helpers.mjs";
4
+ import { AuthenticatedTestClient, TestAuthenticableUser } from "./authenticated-test-client.mjs";
5
+ import { AppModuleImporter } from "../loader/app-module-importer.mjs";
6
+
7
+ //#region ../../packages/core/src/tests/test-http-server.d.ts
8
+ type CreateTestHttpServerOptions = {
9
+ /**
10
+ * Register routes for this server, exactly as a `routes.ts` would. They are
11
+ * tagged with a source of their own and removed again by `close()`.
12
+ */
13
+ routes?: (router: Router) => unknown;
14
+ /**
15
+ * Load the application's modules (`routes.ts`, `main.ts`, events, ...) first,
16
+ * so the server answers every app route. Needs `setupTest()` to have run in
17
+ * this worker. Modules load once per process; later servers reuse them.
18
+ */
19
+ loadAppModules?: boolean;
20
+ /**
21
+ * How app modules are imported when `loadAppModules` is set. Pass
22
+ * `(file) => import(file)` from the test file, as `setupTest()` takes it, so
23
+ * app classes are the same ones the test imports.
24
+ */
25
+ importModule?: AppModuleImporter; /** Interface to bind. Defaults to `127.0.0.1`. */
26
+ host?: string;
27
+ };
28
+ type TestHttpServer = TestRequestClient & {
29
+ /** `http://127.0.0.1:<port>` */readonly url: string; /** The port the OS assigned. */
30
+ readonly port: number; /** The Fastify instance, for `inject()` or anything else Fastify offers. */
31
+ readonly server: FastifyInstance; /** A client for this server, signed in as `user` with a real access token. */
32
+ actingAs(user: TestAuthenticableUser): Promise<AuthenticatedTestClient>; /** Stop listening and remove the routes `routes` registered. */
33
+ close(): Promise<void>;
34
+ };
35
+ /**
36
+ * Start an in-process HTTP server with the production plugins, on a free port.
37
+ *
38
+ * @example
39
+ * const app = await createTestHttpServer({
40
+ * routes: (router) => router.post("/echo", ({ request, response }) =>
41
+ * response.success({ body: request.all() })),
42
+ * });
43
+ *
44
+ * const response = await app.post("/echo", { name: "Ada" });
45
+ * expect(response.status).toBe(200);
46
+ *
47
+ * await app.close();
48
+ *
49
+ * @example
50
+ * // every app route, with the fakes seeing what the controller did
51
+ * const app = await createTestHttpServer({
52
+ * loadAppModules: true,
53
+ * importModule: (file) => import(file),
54
+ * });
55
+ *
56
+ * await app.post("/contact", { email: "ada@example.test", message: "Hi" });
57
+ * mailFake.assertSent({ to: "support@example.test" });
58
+ */
59
+ declare function createTestHttpServer(options?: CreateTestHttpServerOptions): Promise<TestHttpServer>;
60
+ //#endregion
61
+ export { CreateTestHttpServerOptions, TestHttpServer, createTestHttpServer };
62
+ //# sourceMappingURL=test-http-server.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-http-server.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-http-server.ts"],"mappings":";;;;;;;KA+BY,2BAAA;;AAAZ;;;EAKE,MAAA,IAAU,MAAA,EAAQ,MAAA;EAAlB;;;;;EAMA,cAAA;EAQA;;AAAI;AAGN;;EALE,YAAA,GAAe,iBAAiB,EAKL;EAH3B,IAAA;AAAA;AAAA,KAGU,cAAA,GAAiB,iBAAA;EAQY,yCAN9B,GAAA,UAQO;EAAA,SANP,IAAA,UAJkB;EAAA,SAMlB,MAAA,EAAQ,eAAA,EAFR;EAIT,QAAA,CAAS,IAAA,EAAM,qBAAA,GAAwB,OAAA,CAAQ,uBAAA,GAF9B;EAIjB,KAAA,IAAS,OAAA;AAAA;;;;;;;AAAO;AAmElB;;;;;;;;;;;;;AAEyB;;;;iBAFH,oBAAA,CACpB,OAAA,GAAS,2BAAA,GACR,OAAA,CAAQ,cAAA"}