@warlock.js/core 5.30.0 → 5.32.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 (1374) hide show
  1. package/CHANGELOG.md +165 -36
  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 +3 -3
  6. package/esm/application/app.d.mts.map +1 -1
  7. package/esm/application/application-config-types.d.mts +1 -2
  8. package/esm/application/application-config-types.d.mts.map +1 -1
  9. package/esm/application/application.d.mts +5 -7
  10. package/esm/application/application.d.mts.map +1 -1
  11. package/esm/application/application.mjs +3 -1
  12. package/esm/application/application.mjs.map +1 -1
  13. package/esm/application/boot-signal.d.mts +14 -12
  14. package/esm/application/boot-signal.d.mts.map +1 -1
  15. package/esm/application/index.d.mts +2 -1
  16. package/esm/application/index.mjs +1 -1
  17. package/esm/application/public-url.d.mts +1 -2
  18. package/esm/application/public-url.d.mts.map +1 -1
  19. package/esm/application/roles.d.mts +10 -11
  20. package/esm/application/roles.d.mts.map +1 -1
  21. package/esm/benchmark/benchmark-snapshots.d.mts +1 -3
  22. package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
  23. package/esm/benchmark/benchmark.d.mts +1 -3
  24. package/esm/benchmark/benchmark.d.mts.map +1 -1
  25. package/esm/benchmark/channels/console.channel.d.mts +1 -3
  26. package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
  27. package/esm/benchmark/channels/noop.channel.d.mts +1 -3
  28. package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
  29. package/esm/benchmark/index.mjs +1 -1
  30. package/esm/benchmark/profiler.d.mts +1 -3
  31. package/esm/benchmark/profiler.d.mts.map +1 -1
  32. package/esm/benchmark/profiler.mjs +2 -1
  33. package/esm/benchmark/profiler.mjs.map +1 -1
  34. package/esm/benchmark/types.d.mts +22 -17
  35. package/esm/benchmark/types.d.mts.map +1 -1
  36. package/esm/bootstrap/setup.d.mts +1 -2
  37. package/esm/bootstrap/setup.d.mts.map +1 -1
  38. package/esm/bootstrap.d.mts +1 -2
  39. package/esm/bootstrap.d.mts.map +1 -1
  40. package/esm/cache/database-cache-driver.d.mts +3 -5
  41. package/esm/cache/database-cache-driver.d.mts.map +1 -1
  42. package/esm/cache/database-cache-driver.mjs +1 -1
  43. package/esm/cache/index.d.mts +2 -1
  44. package/esm/cache/index.mjs +1 -1
  45. package/esm/cli/cli-commands.manager.mjs +6 -3
  46. package/esm/cli/cli-commands.manager.mjs.map +1 -1
  47. package/esm/cli/commands/add.command.mjs +4 -2
  48. package/esm/cli/commands/add.command.mjs.map +1 -1
  49. package/esm/cli/commands/agents-md/agents-md-command.action.mjs +70 -0
  50. package/esm/cli/commands/agents-md/agents-md-command.action.mjs.map +1 -0
  51. package/esm/cli/commands/agents-md.command.mjs +38 -0
  52. package/esm/cli/commands/agents-md.command.mjs.map +1 -0
  53. package/esm/cli/commands/board/board-command.action.mjs +279 -0
  54. package/esm/cli/commands/board/board-command.action.mjs.map +1 -0
  55. package/esm/cli/commands/board.command.mjs +78 -0
  56. package/esm/cli/commands/board.command.mjs.map +1 -0
  57. package/esm/cli/commands/build.command.mjs +6 -1
  58. package/esm/cli/commands/build.command.mjs.map +1 -1
  59. package/esm/cli/commands/check/check-command.action.mjs +57 -0
  60. package/esm/cli/commands/check/check-command.action.mjs.map +1 -0
  61. package/esm/cli/commands/check/child-typecheck.mjs +66 -0
  62. package/esm/cli/commands/check/child-typecheck.mjs.map +1 -0
  63. package/esm/cli/commands/check/format-problems.mjs +43 -0
  64. package/esm/cli/commands/check/format-problems.mjs.map +1 -0
  65. package/esm/cli/commands/check/typecheck-command.action.mjs +61 -0
  66. package/esm/cli/commands/check/typecheck-command.action.mjs.map +1 -0
  67. package/esm/cli/commands/check.command.mjs +50 -0
  68. package/esm/cli/commands/check.command.mjs.map +1 -0
  69. package/esm/cli/commands/dev-server.command.mjs +12 -3
  70. package/esm/cli/commands/dev-server.command.mjs.map +1 -1
  71. package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +8 -3
  72. package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
  73. package/esm/cli/commands/doctor/check.types.d.mts +89 -0
  74. package/esm/cli/commands/doctor/check.types.d.mts.map +1 -0
  75. package/esm/cli/commands/doctor/checks/config.check.mjs +1 -0
  76. package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
  77. package/esm/cli/commands/doctor/checks/connectors.check.mjs +2 -0
  78. package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
  79. package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +1 -0
  80. package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
  81. package/esm/cli/commands/doctor/checks/health.check.mjs +3 -0
  82. package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
  83. package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +1 -0
  84. package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
  85. package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +23 -27
  86. package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
  87. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +1 -0
  88. package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
  89. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +4 -0
  90. package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
  91. package/esm/cli/commands/doctor/checks/routes.check.mjs +3 -0
  92. package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
  93. package/esm/cli/commands/doctor/doctor-command.action.mjs +15 -6
  94. package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
  95. package/esm/cli/commands/doctor/format-report.mjs +30 -2
  96. package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
  97. package/esm/cli/commands/doctor.command.mjs +4 -0
  98. package/esm/cli/commands/doctor.command.mjs.map +1 -1
  99. package/esm/cli/commands/explain/explain-command.action.mjs +64 -0
  100. package/esm/cli/commands/explain/explain-command.action.mjs.map +1 -0
  101. package/esm/cli/commands/explain.command.mjs +23 -0
  102. package/esm/cli/commands/explain.command.mjs.map +1 -0
  103. package/esm/cli/commands/generate/generate.command.mjs +124 -124
  104. package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
  105. package/esm/cli/commands/generate/generators/controller.generator.mjs +5 -2
  106. package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
  107. package/esm/cli/commands/generate/generators/endpoint.generator.mjs +313 -0
  108. package/esm/cli/commands/generate/generators/endpoint.generator.mjs.map +1 -0
  109. package/esm/cli/commands/generate/generators/migration.generator.mjs +1 -1
  110. package/esm/cli/commands/generate/generators/migration.generator.mjs.map +1 -1
  111. package/esm/cli/commands/generate/generators/model.generator.mjs +4 -3
  112. package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
  113. package/esm/cli/commands/generate/generators/repository.generator.mjs +3 -1
  114. package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
  115. package/esm/cli/commands/generate/generators/resource.generator.mjs +3 -1
  116. package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
  117. package/esm/cli/commands/generate/generators/service.generator.mjs +3 -1
  118. package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
  119. package/esm/cli/commands/generate/templates/endpoint-stubs.mjs +341 -0
  120. package/esm/cli/commands/generate/templates/endpoint-stubs.mjs.map +1 -0
  121. package/esm/cli/commands/generate/templates/stubs.mjs +19 -6
  122. package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
  123. package/esm/cli/commands/generate/utils/endpoint-schema.mjs +136 -0
  124. package/esm/cli/commands/generate/utils/endpoint-schema.mjs.map +1 -0
  125. package/esm/cli/commands/generate/utils/name-parser.mjs +2 -2
  126. package/esm/cli/commands/generate/utils/name-parser.mjs.map +1 -1
  127. package/esm/cli/commands/generate/utils/path-resolver.mjs +1 -1
  128. package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
  129. package/esm/cli/commands/generate/utils/writer.mjs +38 -13
  130. package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
  131. package/esm/cli/commands/inspect/inspect-command.action.mjs +73 -0
  132. package/esm/cli/commands/inspect/inspect-command.action.mjs.map +1 -0
  133. package/esm/cli/commands/inspect.command.mjs +39 -0
  134. package/esm/cli/commands/inspect.command.mjs.map +1 -0
  135. package/esm/cli/commands/issue/collect-environment.mjs +187 -0
  136. package/esm/cli/commands/issue/collect-environment.mjs.map +1 -0
  137. package/esm/cli/commands/issue/issue-command.action.mjs +70 -0
  138. package/esm/cli/commands/issue/issue-command.action.mjs.map +1 -0
  139. package/esm/cli/commands/issue.command.mjs +31 -0
  140. package/esm/cli/commands/issue.command.mjs.map +1 -0
  141. package/esm/cli/commands/mcp/mcp-command.action.mjs +104 -0
  142. package/esm/cli/commands/mcp/mcp-command.action.mjs.map +1 -0
  143. package/esm/cli/commands/mcp.command.mjs +76 -0
  144. package/esm/cli/commands/mcp.command.mjs.map +1 -0
  145. package/esm/cli/commands/openapi-generator.action.mjs +1 -1
  146. package/esm/cli/commands/openapi-generator.action.mjs.map +1 -1
  147. package/esm/cli/commands/openapi-generator.command.mjs.map +1 -1
  148. package/esm/cli/commands/postman-generator.action.mjs +1 -1
  149. package/esm/cli/commands/postman-generator.action.mjs.map +1 -1
  150. package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
  151. package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
  152. package/esm/cli/commands/routes/route-row.mjs +1 -1
  153. package/esm/cli/commands/routes/routes-diff.action.mjs +3 -3
  154. package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
  155. package/esm/cli/commands/test.command.mjs +131 -0
  156. package/esm/cli/commands/test.command.mjs.map +1 -0
  157. package/esm/cli/commands/trace/trace-command.action.mjs +145 -0
  158. package/esm/cli/commands/trace/trace-command.action.mjs.map +1 -0
  159. package/esm/cli/commands/trace.command.mjs +60 -0
  160. package/esm/cli/commands/trace.command.mjs.map +1 -0
  161. package/esm/cli/commands/typecheck.command.mjs +40 -0
  162. package/esm/cli/commands/typecheck.command.mjs.map +1 -0
  163. package/esm/cli/commands/upgrade.command.mjs +46 -0
  164. package/esm/cli/commands/upgrade.command.mjs.map +1 -0
  165. package/esm/cli/commands-loader.mjs +1 -1
  166. package/esm/cli/flush-and-exit.mjs +34 -0
  167. package/esm/cli/flush-and-exit.mjs.map +1 -0
  168. package/esm/cli/framework-cli-commands.mjs +25 -1
  169. package/esm/cli/framework-cli-commands.mjs.map +1 -1
  170. package/esm/cli/parse-cli-args.mjs +3 -2
  171. package/esm/cli/parse-cli-args.mjs.map +1 -1
  172. package/esm/cli/start.d.mts +1 -1
  173. package/esm/cli/string-similarity.mjs +1 -1
  174. package/esm/commands/cli-command.d.mts +2 -4
  175. package/esm/commands/cli-command.d.mts.map +1 -1
  176. package/esm/commands/index.d.mts +2 -1
  177. package/esm/commands/index.mjs +1 -1
  178. package/esm/commands/types.d.mts +8 -8
  179. package/esm/commands/types.d.mts.map +1 -1
  180. package/esm/config/config-getter.d.mts +2 -3
  181. package/esm/config/config-getter.d.mts.map +1 -1
  182. package/esm/config/config-getter.mjs +5 -5
  183. package/esm/config/config-getter.mjs.map +1 -1
  184. package/esm/config/config-handlers.d.mts +1 -3
  185. package/esm/config/config-handlers.d.mts.map +1 -1
  186. package/esm/config/config-loader.d.mts +1 -2
  187. package/esm/config/config-loader.d.mts.map +1 -1
  188. package/esm/config/config-loader.mjs +35 -14
  189. package/esm/config/config-loader.mjs.map +1 -1
  190. package/esm/config/config-manager.mjs +1 -1
  191. package/esm/config/config-schema.d.mts +70 -0
  192. package/esm/config/config-schema.d.mts.map +1 -0
  193. package/esm/config/config-schema.mjs +77 -0
  194. package/esm/config/config-schema.mjs.map +1 -0
  195. package/esm/config/config-setter.d.mts +2 -4
  196. package/esm/config/config-setter.d.mts.map +1 -1
  197. package/esm/config/config-setter.mjs +2 -2
  198. package/esm/config/config-setter.mjs.map +1 -1
  199. package/esm/config/config-special-handlers.d.mts +2 -4
  200. package/esm/config/config-special-handlers.d.mts.map +1 -1
  201. package/esm/config/index.d.mts +7 -0
  202. package/esm/config/index.mjs +2 -1
  203. package/esm/config/types.d.mts +4 -5
  204. package/esm/config/types.d.mts.map +1 -1
  205. package/esm/connectors/access-connector.d.mts +1 -3
  206. package/esm/connectors/access-connector.d.mts.map +1 -1
  207. package/esm/connectors/access-connector.mjs +2 -2
  208. package/esm/connectors/access-connector.mjs.map +1 -1
  209. package/esm/connectors/ai-connector.d.mts +1 -3
  210. package/esm/connectors/ai-connector.d.mts.map +1 -1
  211. package/esm/connectors/ai-connector.mjs +2 -2
  212. package/esm/connectors/ai-connector.mjs.map +1 -1
  213. package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -3
  214. package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
  215. package/esm/connectors/assert-no-reserved-connector-names.mjs +2 -1
  216. package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
  217. package/esm/connectors/assert-unique-connector-names.d.mts +1 -3
  218. package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
  219. package/esm/connectors/assert-unique-connector-names.mjs +26 -1
  220. package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
  221. package/esm/connectors/base-connector.d.mts +1 -3
  222. package/esm/connectors/base-connector.d.mts.map +1 -1
  223. package/esm/connectors/cache-connector.d.mts +1 -3
  224. package/esm/connectors/cache-connector.d.mts.map +1 -1
  225. package/esm/connectors/cache-connector.mjs +3 -3
  226. package/esm/connectors/cache-connector.mjs.map +1 -1
  227. package/esm/connectors/connectors-manager.d.mts +2 -4
  228. package/esm/connectors/connectors-manager.d.mts.map +1 -1
  229. package/esm/connectors/connectors-manager.mjs +2 -2
  230. package/esm/connectors/connectors-manager.mjs.map +1 -1
  231. package/esm/connectors/database-connector.d.mts +1 -3
  232. package/esm/connectors/database-connector.d.mts.map +1 -1
  233. package/esm/connectors/database-connector.mjs +2 -2
  234. package/esm/connectors/database-connector.mjs.map +1 -1
  235. package/esm/connectors/describe-server-address.mjs +4 -4
  236. package/esm/connectors/describe-server-address.mjs.map +1 -1
  237. package/esm/connectors/herald-connector.d.mts +1 -3
  238. package/esm/connectors/herald-connector.d.mts.map +1 -1
  239. package/esm/connectors/herald-connector.mjs +2 -2
  240. package/esm/connectors/herald-connector.mjs.map +1 -1
  241. package/esm/connectors/http-connector.d.mts +1 -3
  242. package/esm/connectors/http-connector.d.mts.map +1 -1
  243. package/esm/connectors/http-connector.mjs +11 -9
  244. package/esm/connectors/http-connector.mjs.map +1 -1
  245. package/esm/connectors/index.d.mts +2 -1
  246. package/esm/connectors/index.mjs +1 -1
  247. package/esm/connectors/logger-connector.d.mts +1 -3
  248. package/esm/connectors/logger-connector.d.mts.map +1 -1
  249. package/esm/connectors/logger-connector.mjs +2 -2
  250. package/esm/connectors/logger-connector.mjs.map +1 -1
  251. package/esm/connectors/mail-connector.d.mts +1 -3
  252. package/esm/connectors/mail-connector.d.mts.map +1 -1
  253. package/esm/connectors/mail-connector.mjs +2 -2
  254. package/esm/connectors/mail-connector.mjs.map +1 -1
  255. package/esm/connectors/notifications-connector.d.mts +1 -3
  256. package/esm/connectors/notifications-connector.d.mts.map +1 -1
  257. package/esm/connectors/notifications-connector.mjs +2 -2
  258. package/esm/connectors/notifications-connector.mjs.map +1 -1
  259. package/esm/connectors/register-configured-connectors.d.mts +2 -4
  260. package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
  261. package/esm/connectors/single-server-warnings.mjs.map +1 -1
  262. package/esm/connectors/socket-connector.d.mts +1 -3
  263. package/esm/connectors/socket-connector.d.mts.map +1 -1
  264. package/esm/connectors/socket-connector.mjs +12 -10
  265. package/esm/connectors/socket-connector.mjs.map +1 -1
  266. package/esm/connectors/storage.connector.d.mts +1 -3
  267. package/esm/connectors/storage.connector.d.mts.map +1 -1
  268. package/esm/connectors/storage.connector.mjs +2 -2
  269. package/esm/connectors/storage.connector.mjs.map +1 -1
  270. package/esm/connectors/types.d.mts +17 -14
  271. package/esm/connectors/types.d.mts.map +1 -1
  272. package/esm/container/container-instance-registry.mjs.map +1 -1
  273. package/esm/container/development-app-modules.d.mts +7 -5
  274. package/esm/container/development-app-modules.d.mts.map +1 -1
  275. package/esm/container/development-model-modules.d.mts +6 -5
  276. package/esm/container/development-model-modules.d.mts.map +1 -1
  277. package/esm/container/index.d.mts +4 -4
  278. package/esm/container/index.d.mts.map +1 -1
  279. package/esm/container/index.mjs.map +1 -1
  280. package/esm/database/index.d.mts +3 -1
  281. package/esm/database/index.mjs +1 -1
  282. package/esm/database/migrate-action.mjs +1 -1
  283. package/esm/database/migrate-action.mjs.map +1 -1
  284. package/esm/database/models/database-log/database-log.d.mts +2 -31
  285. package/esm/database/models/database-log/database-log.d.mts.map +1 -1
  286. package/esm/database/models/database-log/index.d.mts +2 -1
  287. package/esm/database/models/database-log/index.mjs +1 -1
  288. package/esm/database/seed-command-action.mjs +1 -1
  289. package/esm/database/seeds/seeder.d.mts +2 -4
  290. package/esm/database/seeds/seeder.d.mts.map +1 -1
  291. package/esm/database/seeds/seeder.errors.d.mts +6 -3
  292. package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
  293. package/esm/database/seeds/seeder.errors.mjs +2 -0
  294. package/esm/database/seeds/seeder.errors.mjs.map +1 -1
  295. package/esm/database/seeds/seeders.manager.mjs +2 -1
  296. package/esm/database/seeds/seeders.manager.mjs.map +1 -1
  297. package/esm/database/seeds/types.d.mts +7 -8
  298. package/esm/database/seeds/types.d.mts.map +1 -1
  299. package/esm/database/utils.d.mts +4 -5
  300. package/esm/database/utils.d.mts.map +1 -1
  301. package/esm/dev-server/app-module-registry.mjs +1 -1
  302. package/esm/dev-server/boot-precondition-error.mjs +1 -0
  303. package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
  304. package/esm/dev-server/create-worker.mjs +17 -9
  305. package/esm/dev-server/create-worker.mjs.map +1 -1
  306. package/esm/dev-server/dependency-graph.d.mts +1 -3
  307. package/esm/dev-server/dependency-graph.d.mts.map +1 -1
  308. package/esm/dev-server/dependency-graph.mjs +1 -1
  309. package/esm/dev-server/dependency-graph.mjs.map +1 -1
  310. package/esm/dev-server/dev-agent-tooling.mjs +135 -0
  311. package/esm/dev-server/dev-agent-tooling.mjs.map +1 -0
  312. package/esm/dev-server/dev-logger.mjs.map +1 -1
  313. package/esm/dev-server/development-server.mjs +8 -0
  314. package/esm/dev-server/development-server.mjs.map +1 -1
  315. package/esm/dev-server/extract-translation-keys.mjs +16 -17
  316. package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
  317. package/esm/dev-server/file-manager.d.mts +3 -7
  318. package/esm/dev-server/file-manager.d.mts.map +1 -1
  319. package/esm/dev-server/file-operations.d.mts +1 -3
  320. package/esm/dev-server/file-operations.d.mts.map +1 -1
  321. package/esm/dev-server/files-orchestrator.mjs +4 -5
  322. package/esm/dev-server/files-orchestrator.mjs.map +1 -1
  323. package/esm/dev-server/files-watcher.mjs +12 -11
  324. package/esm/dev-server/files-watcher.mjs.map +1 -1
  325. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +2 -3
  326. package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
  327. package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs +33 -0
  328. package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs.map +1 -0
  329. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +36 -115
  330. package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
  331. package/esm/dev-server/health-checker/default-health-checkers.mjs +31 -0
  332. package/esm/dev-server/health-checker/default-health-checkers.mjs.map +1 -0
  333. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +12 -6
  334. package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
  335. package/esm/dev-server/health-checker/file-health-result.d.mts +2 -2
  336. package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
  337. package/esm/dev-server/health-checker/files-healthcare.manager.mjs +16 -4
  338. package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
  339. package/esm/dev-server/health-checker/oxlint-runner.mjs +303 -0
  340. package/esm/dev-server/health-checker/oxlint-runner.mjs.map +1 -0
  341. package/esm/dev-server/health-checker/workers/eslint-health.worker.d.mts +1 -1
  342. package/esm/dev-server/health-checker/workers/oxlint-health.worker.d.mts +1 -0
  343. package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs +42 -0
  344. package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs.map +1 -0
  345. package/esm/dev-server/health-checker/workers/ts-health.worker.d.mts +1 -1
  346. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +40 -174
  347. package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
  348. package/esm/dev-server/loader/hook-thread.d.mts +4 -8
  349. package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
  350. package/esm/dev-server/loader/load-hook.d.mts +10 -6
  351. package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
  352. package/esm/dev-server/loader/load-hook.mjs +4 -3
  353. package/esm/dev-server/loader/load-hook.mjs.map +1 -1
  354. package/esm/dev-server/loader/loader-port-acks.mjs +1 -1
  355. package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -1
  356. package/esm/dev-server/loader/own-resolver.mjs +1 -1
  357. package/esm/dev-server/loader/register-loader.mjs +4 -3
  358. package/esm/dev-server/loader/register-loader.mjs.map +1 -1
  359. package/esm/dev-server/loader/resolve-hook.d.mts +2 -2
  360. package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
  361. package/esm/dev-server/loader/resolve-hook.mjs +3 -2
  362. package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
  363. package/esm/dev-server/loader/transpile-cache.mjs +3 -2
  364. package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
  365. package/esm/dev-server/manifest-manager.d.mts +1 -3
  366. package/esm/dev-server/manifest-manager.d.mts.map +1 -1
  367. package/esm/dev-server/model-module-registry.mjs +3 -3
  368. package/esm/dev-server/model-module-registry.mjs.map +1 -1
  369. package/esm/dev-server/model-resource-typings.mjs +40 -47
  370. package/esm/dev-server/model-resource-typings.mjs.map +1 -1
  371. package/esm/dev-server/module-loader.mjs +3 -2
  372. package/esm/dev-server/module-loader.mjs.map +1 -1
  373. package/esm/dev-server/package-json-manager.mjs +1 -1
  374. package/esm/dev-server/parse-imports.mjs +7 -39
  375. package/esm/dev-server/parse-imports.mjs.map +1 -1
  376. package/esm/dev-server/read-config-ast.mjs +3 -33
  377. package/esm/dev-server/read-config-ast.mjs.map +1 -1
  378. package/esm/dev-server/ready-block.mjs +1 -1
  379. package/esm/dev-server/route-types-publisher.mjs +1 -1
  380. package/esm/dev-server/shortcuts.mjs +1 -1
  381. package/esm/dev-server/special-files-collector.d.mts +2 -4
  382. package/esm/dev-server/special-files-collector.d.mts.map +1 -1
  383. package/esm/dev-server/start-development-server.mjs.map +1 -1
  384. package/esm/dev-server/supervisor.mjs +1 -1
  385. package/esm/dev-server/translation-keys-sources.mjs +1 -1
  386. package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
  387. package/esm/dev-server/tsconfig-manager.mjs +3 -3
  388. package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
  389. package/esm/dev-server/type-generator.mjs +31 -38
  390. package/esm/dev-server/type-generator.mjs.map +1 -1
  391. package/esm/dev-server/types.d.mts +3 -4
  392. package/esm/dev-server/types.d.mts.map +1 -1
  393. package/esm/dev-server/update-check-cache.mjs +2 -2
  394. package/esm/dev-server/update-check-cache.mjs.map +1 -1
  395. package/esm/encryption/encrypt.d.mts +2 -3
  396. package/esm/encryption/encrypt.d.mts.map +1 -1
  397. package/esm/encryption/hash.d.mts +1 -2
  398. package/esm/encryption/hash.d.mts.map +1 -1
  399. package/esm/encryption/index.mjs +1 -1
  400. package/esm/encryption/password.d.mts +2 -3
  401. package/esm/encryption/password.d.mts.map +1 -1
  402. package/esm/encryption/types.d.mts +2 -3
  403. package/esm/encryption/types.d.mts.map +1 -1
  404. package/esm/errors/container-key-missing-error.mjs +1 -0
  405. package/esm/errors/container-key-missing-error.mjs.map +1 -1
  406. package/esm/errors/error-codes.d.mts +660 -0
  407. package/esm/errors/error-codes.d.mts.map +1 -0
  408. package/esm/errors/error-codes.mjs +634 -0
  409. package/esm/errors/error-codes.mjs.map +1 -0
  410. package/esm/errors/esbuild-binary-missing-error.mjs +1 -0
  411. package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
  412. package/esm/errors/index.d.mts +3 -1
  413. package/esm/errors/index.mjs +3 -1
  414. package/esm/errors/unknown-locale-error.mjs +1 -0
  415. package/esm/errors/unknown-locale-error.mjs.map +1 -1
  416. package/esm/errors/warlock-error.d.mts +21 -0
  417. package/esm/errors/warlock-error.d.mts.map +1 -0
  418. package/esm/errors/warlock-error.mjs +22 -0
  419. package/esm/errors/warlock-error.mjs.map +1 -0
  420. package/esm/generations/add-command.action.mjs +22 -5
  421. package/esm/generations/add-command.action.mjs.map +1 -1
  422. package/esm/generations/features/access.feature.mjs +1 -1
  423. package/esm/generations/features/access.feature.mjs.map +1 -1
  424. package/esm/generations/features/bull-board.feature.mjs +3 -2
  425. package/esm/generations/features/bull-board.feature.mjs.map +1 -1
  426. package/esm/generations/features/mysql.feature.mjs.map +1 -1
  427. package/esm/generations/features/notifications.feature.mjs +7 -3
  428. package/esm/generations/features/notifications.feature.mjs.map +1 -1
  429. package/esm/generations/features/queue.feature.mjs +1 -1
  430. package/esm/generations/features/queue.feature.mjs.map +1 -1
  431. package/esm/generations/features/react-email.feature.mjs +1 -1
  432. package/esm/generations/features/react-email.feature.mjs.map +1 -1
  433. package/esm/generations/features/shadcn.feature.mjs +1 -1
  434. package/esm/generations/features/shadcn.feature.mjs.map +1 -1
  435. package/esm/generations/features/shared/link-ai-package-import.mjs +1 -1
  436. package/esm/generations/features/shared/link-ai-package-import.mjs.map +1 -1
  437. package/esm/generations/features/shared/merge-web-sitemap-config.mjs +16 -23
  438. package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
  439. package/esm/generations/features/shared/patch-tsconfig-include.mjs +2 -2
  440. package/esm/generations/features/shared/patch-tsconfig-include.mjs.map +1 -1
  441. package/esm/generations/features/shared/relocate-conflicting-home-route.mjs +2 -2
  442. package/esm/generations/features/shared/relocate-conflicting-home-route.mjs.map +1 -1
  443. package/esm/generations/features/sitemap.feature.mjs +3 -2
  444. package/esm/generations/features/sitemap.feature.mjs.map +1 -1
  445. package/esm/generations/features/tailwind.feature.mjs +1 -1
  446. package/esm/generations/features/tailwind.feature.mjs.map +1 -1
  447. package/esm/generations/features/test.feature.mjs +11 -6
  448. package/esm/generations/features/test.feature.mjs.map +1 -1
  449. package/esm/generations/features/web.feature.mjs +1 -1
  450. package/esm/generations/features/web.feature.mjs.map +1 -1
  451. package/esm/generations/generation-fs.mjs +73 -0
  452. package/esm/generations/generation-fs.mjs.map +1 -0
  453. package/esm/generations/generation-run.mjs +185 -0
  454. package/esm/generations/generation-run.mjs.map +1 -0
  455. package/esm/generations/stubs.mjs +156 -14
  456. package/esm/generations/stubs.mjs.map +1 -1
  457. package/esm/http/boot-port-preflight.d.mts +4 -5
  458. package/esm/http/boot-port-preflight.d.mts.map +1 -1
  459. package/esm/http/boot-port-preflight.mjs +2 -2
  460. package/esm/http/boot-port-preflight.mjs.map +1 -1
  461. package/esm/http/bounded-stream-queue.d.mts +10 -0
  462. package/esm/http/bounded-stream-queue.d.mts.map +1 -0
  463. package/esm/http/bounded-stream-queue.mjs +97 -0
  464. package/esm/http/bounded-stream-queue.mjs.map +1 -0
  465. package/esm/http/build-cors-options.mjs +2 -2
  466. package/esm/http/build-cors-options.mjs.map +1 -1
  467. package/esm/http/build-rate-limit-options.d.mts +15 -3
  468. package/esm/http/build-rate-limit-options.d.mts.map +1 -1
  469. package/esm/http/build-rate-limit-options.mjs +1 -1
  470. package/esm/http/build-rate-limit-options.mjs.map +1 -1
  471. package/esm/http/conditional-request.d.mts +87 -0
  472. package/esm/http/conditional-request.d.mts.map +1 -0
  473. package/esm/http/conditional-request.mjs +121 -0
  474. package/esm/http/conditional-request.mjs.map +1 -0
  475. package/esm/http/config.d.mts +2 -4
  476. package/esm/http/config.d.mts.map +1 -1
  477. package/esm/http/config.mjs +2 -2
  478. package/esm/http/config.mjs.map +1 -1
  479. package/esm/http/context/request-context.d.mts +6 -7
  480. package/esm/http/context/request-context.d.mts.map +1 -1
  481. package/esm/http/context/request-memo.d.mts +1 -2
  482. package/esm/http/context/request-memo.d.mts.map +1 -1
  483. package/esm/http/createHttpApplication.d.mts +2 -3
  484. package/esm/http/createHttpApplication.d.mts.map +1 -1
  485. package/esm/http/createHttpApplication.mjs +2 -2
  486. package/esm/http/createHttpApplication.mjs.map +1 -1
  487. package/esm/http/csp.d.mts +12 -12
  488. package/esm/http/csp.d.mts.map +1 -1
  489. package/esm/http/csp.mjs +3 -2
  490. package/esm/http/csp.mjs.map +1 -1
  491. package/esm/http/csrf-default-guard.d.mts +2 -4
  492. package/esm/http/csrf-default-guard.d.mts.map +1 -1
  493. package/esm/http/csrf-default-guard.mjs +1 -1
  494. package/esm/http/csrf-default-guard.mjs.map +1 -1
  495. package/esm/http/csrf-origin-policy.d.mts +7 -9
  496. package/esm/http/csrf-origin-policy.d.mts.map +1 -1
  497. package/esm/http/csrf-origin-policy.mjs +2 -2
  498. package/esm/http/csrf-origin-policy.mjs.map +1 -1
  499. package/esm/http/database/RequestLog.d.mts +26 -87
  500. package/esm/http/database/RequestLog.d.mts.map +1 -1
  501. package/esm/http/error-codes.d.mts +1 -2
  502. package/esm/http/error-codes.d.mts.map +1 -1
  503. package/esm/http/error-mapper.d.mts +2 -4
  504. package/esm/http/error-mapper.d.mts.map +1 -1
  505. package/esm/http/error-mapper.mjs +2 -2
  506. package/esm/http/error-mapper.mjs.map +1 -1
  507. package/esm/http/errors/errors.d.mts +30 -29
  508. package/esm/http/errors/errors.d.mts.map +1 -1
  509. package/esm/http/errors/errors.mjs +1 -0
  510. package/esm/http/errors/errors.mjs.map +1 -1
  511. package/esm/http/escape-header-value.d.mts +17 -0
  512. package/esm/http/escape-header-value.d.mts.map +1 -0
  513. package/esm/http/escape-header-value.mjs +27 -0
  514. package/esm/http/escape-header-value.mjs.map +1 -0
  515. package/esm/http/events.d.mts +2 -4
  516. package/esm/http/events.d.mts.map +1 -1
  517. package/esm/http/flush-pending-cookies.mjs.map +1 -1
  518. package/esm/http/health.d.mts +4 -4
  519. package/esm/http/health.d.mts.map +1 -1
  520. package/esm/http/index.d.mts +9 -3
  521. package/esm/http/index.mjs +5 -2
  522. package/esm/http/lazy-static.mjs +194 -0
  523. package/esm/http/lazy-static.mjs.map +1 -0
  524. package/esm/http/middleware/cache-response-middleware.d.mts +2 -4
  525. package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
  526. package/esm/http/middleware/concurrency-limit.middleware.d.mts +3 -3
  527. package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
  528. package/esm/http/middleware/idempotency.middleware.d.mts +3 -3
  529. package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
  530. package/esm/http/middleware/idempotency.middleware.mjs +6 -6
  531. package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
  532. package/esm/http/middleware/index.d.mts +3 -1
  533. package/esm/http/middleware/index.mjs +1 -1
  534. package/esm/http/middleware/inject-request-context.d.mts +2 -4
  535. package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
  536. package/esm/http/middleware/inject-request-context.mjs +3 -3
  537. package/esm/http/middleware/inject-request-context.mjs.map +1 -1
  538. package/esm/http/middleware/ip-filter.middleware.d.mts +3 -3
  539. package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
  540. package/esm/http/middleware/maintenance.middleware.d.mts +3 -3
  541. package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
  542. package/esm/http/middleware/maintenance.middleware.mjs +4 -4
  543. package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
  544. package/esm/http/middleware/max-body-size.middleware.d.mts +2 -2
  545. package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
  546. package/esm/http/middleware/middleware-list.d.mts +1 -3
  547. package/esm/http/middleware/middleware-list.d.mts.map +1 -1
  548. package/esm/http/middleware/rate-limit.middleware.d.mts +3 -3
  549. package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
  550. package/esm/http/middleware/rate-limit.middleware.mjs +2 -2
  551. package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
  552. package/esm/http/middleware/utils/cidr-match.d.mts +2 -3
  553. package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
  554. package/esm/http/middleware/utils/idempotency-key.d.mts +3 -5
  555. package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
  556. package/esm/http/middleware/utils/index.d.mts +2 -1
  557. package/esm/http/middleware/utils/parse-size.d.mts +1 -2
  558. package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
  559. package/esm/http/middleware/utils/parse-size.mjs +2 -2
  560. package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
  561. package/esm/http/plugins.d.mts +2 -4
  562. package/esm/http/plugins.d.mts.map +1 -1
  563. package/esm/http/plugins.mjs +17 -14
  564. package/esm/http/plugins.mjs.map +1 -1
  565. package/esm/http/port-preflight.d.mts +3 -4
  566. package/esm/http/port-preflight.d.mts.map +1 -1
  567. package/esm/http/rate-limit-cache-store.mjs +6 -4
  568. package/esm/http/rate-limit-cache-store.mjs.map +1 -1
  569. package/esm/http/ready-report.d.mts +15 -10
  570. package/esm/http/ready-report.d.mts.map +1 -1
  571. package/esm/http/request-controller.d.mts +1 -3
  572. package/esm/http/request-controller.d.mts.map +1 -1
  573. package/esm/http/request-log-snapshot.d.mts +26 -15
  574. package/esm/http/request-log-snapshot.d.mts.map +1 -1
  575. package/esm/http/request-log-snapshot.mjs +85 -6
  576. package/esm/http/request-log-snapshot.mjs.map +1 -1
  577. package/esm/http/request.d.mts +6 -5
  578. package/esm/http/request.d.mts.map +1 -1
  579. package/esm/http/request.mjs +13 -11
  580. package/esm/http/request.mjs.map +1 -1
  581. package/esm/http/response.d.mts +23 -12
  582. package/esm/http/response.d.mts.map +1 -1
  583. package/esm/http/response.mjs +169 -81
  584. package/esm/http/response.mjs.map +1 -1
  585. package/esm/http/safe-redirect.d.mts +50 -0
  586. package/esm/http/safe-redirect.d.mts.map +1 -0
  587. package/esm/http/safe-redirect.mjs +80 -0
  588. package/esm/http/safe-redirect.mjs.map +1 -0
  589. package/esm/http/serialized.d.mts +12 -13
  590. package/esm/http/serialized.d.mts.map +1 -1
  591. package/esm/http/server-rebuilt.d.mts +3 -5
  592. package/esm/http/server-rebuilt.d.mts.map +1 -1
  593. package/esm/http/server.d.mts +11 -9
  594. package/esm/http/server.d.mts.map +1 -1
  595. package/esm/http/server.mjs +17 -7
  596. package/esm/http/server.mjs.map +1 -1
  597. package/esm/http/stream-react-response.d.mts +7 -7
  598. package/esm/http/stream-react-response.d.mts.map +1 -1
  599. package/esm/http/stream-transport.mjs +4 -2
  600. package/esm/http/stream-transport.mjs.map +1 -1
  601. package/esm/http/tracing/index.mjs +1 -1
  602. package/esm/http/tracing/trace-id.d.mts +2 -3
  603. package/esm/http/tracing/trace-id.d.mts.map +1 -1
  604. package/esm/http/tracing/tracing-dispatcher.d.mts +10 -11
  605. package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
  606. package/esm/http/tracing/tracing-dispatcher.mjs +2 -2
  607. package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
  608. package/esm/http/tracing/tracing.type.d.mts +11 -9
  609. package/esm/http/tracing/tracing.type.d.mts.map +1 -1
  610. package/esm/http/types.d.mts +78 -39
  611. package/esm/http/types.d.mts.map +1 -1
  612. package/esm/http/uploaded-file.d.mts +6 -5
  613. package/esm/http/uploaded-file.d.mts.map +1 -1
  614. package/esm/http/uploads/generate-image-variant.mjs +1 -1
  615. package/esm/http/uploads/generate-image-variants.d.mts +13 -10
  616. package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
  617. package/esm/http/uploads/generate-image-variants.mjs +62 -25
  618. package/esm/http/uploads/generate-image-variants.mjs.map +1 -1
  619. package/esm/http/uploads/image-variant-cache-entries.mjs +78 -0
  620. package/esm/http/uploads/image-variant-cache-entries.mjs.map +1 -0
  621. package/esm/http/uploads/image-variant-cache.mjs +72 -30
  622. package/esm/http/uploads/image-variant-cache.mjs.map +1 -1
  623. package/esm/http/uploads/image-variant-types.d.mts +9 -9
  624. package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
  625. package/esm/http/uploads/image-variants-config-error.d.mts +4 -3
  626. package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
  627. package/esm/http/uploads/image-variants-config-error.mjs +3 -2
  628. package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
  629. package/esm/http/uploads/index.d.mts +2 -1
  630. package/esm/http/uploads/index.mjs +1 -1
  631. package/esm/http/uploads/load-variant-source.mjs +1 -1
  632. package/esm/http/uploads/load-variant-source.mjs.map +1 -1
  633. package/esm/http/uploads/parse-uploaded-file-query.mjs +1 -1
  634. package/esm/http/uploads/parse-uploaded-file-query.mjs.map +1 -1
  635. package/esm/http/uploads/purge-image-variants.d.mts +9 -6
  636. package/esm/http/uploads/purge-image-variants.d.mts.map +1 -1
  637. package/esm/http/uploads/purge-image-variants.mjs +16 -16
  638. package/esm/http/uploads/purge-image-variants.mjs.map +1 -1
  639. package/esm/http/uploads/remote-variant-source.mjs +115 -0
  640. package/esm/http/uploads/remote-variant-source.mjs.map +1 -0
  641. package/esm/http/uploads/resolve-image-variant.d.mts +6 -9
  642. package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -1
  643. package/esm/http/uploads/resolve-image-variant.mjs +10 -18
  644. package/esm/http/uploads/resolve-image-variant.mjs.map +1 -1
  645. package/esm/http/uploads/resolve-image-variants-config.mjs +7 -5
  646. package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
  647. package/esm/http/uploads/resolve-original-content-type.mjs +1 -1
  648. package/esm/http/uploads/resolve-original-content-type.mjs.map +1 -1
  649. package/esm/http/uploads/resolve-remote-image-variant.mjs +89 -0
  650. package/esm/http/uploads/resolve-remote-image-variant.mjs.map +1 -0
  651. package/esm/http/uploads/trim-image-variant-cache.mjs +193 -0
  652. package/esm/http/uploads/trim-image-variant-cache.mjs.map +1 -0
  653. package/esm/http/uploads/uploaded-file.controller.d.mts +9 -6
  654. package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
  655. package/esm/http/uploads/uploaded-file.controller.mjs +18 -9
  656. package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
  657. package/esm/http/uploads/variant-cache-key.mjs +2 -2
  658. package/esm/http/uploads-config.d.mts +2 -4
  659. package/esm/http/uploads-config.d.mts.map +1 -1
  660. package/esm/http/uploads-types.d.mts +22 -16
  661. package/esm/http/uploads-types.d.mts.map +1 -1
  662. package/esm/http/xmlable.d.mts +1 -2
  663. package/esm/http/xmlable.d.mts.map +1 -1
  664. package/esm/image/image.d.mts +6 -7
  665. package/esm/image/image.d.mts.map +1 -1
  666. package/esm/image/image.mjs.map +1 -1
  667. package/esm/image/index.d.mts +2 -1
  668. package/esm/image/index.mjs +1 -1
  669. package/esm/index.d.mts +38 -6
  670. package/esm/index.mjs +14 -3
  671. package/esm/loader/app-module-importer.d.mts +1 -2
  672. package/esm/loader/app-module-importer.d.mts.map +1 -1
  673. package/esm/localization/index.mjs +1 -1
  674. package/esm/localization/parse-locale-dictionary.d.mts +6 -5
  675. package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
  676. package/esm/localization/parse-locale-dictionary.mjs +2 -1
  677. package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
  678. package/esm/localization/register-locale-dictionary.d.mts +3 -4
  679. package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
  680. package/esm/localization/register-locale-dictionary.mjs +2 -2
  681. package/esm/localization/register-locale-dictionary.mjs.map +1 -1
  682. package/esm/logger/fatal-visibility.d.mts +1 -2
  683. package/esm/logger/fatal-visibility.d.mts.map +1 -1
  684. package/esm/logger/index.d.mts +2 -1
  685. package/esm/logger/index.mjs +1 -1
  686. package/esm/logger/logger.d.mts +1 -3
  687. package/esm/logger/logger.d.mts.map +1 -1
  688. package/esm/logger/types.d.mts +2 -3
  689. package/esm/logger/types.d.mts.map +1 -1
  690. package/esm/mail/config.d.mts +21 -12
  691. package/esm/mail/config.d.mts.map +1 -1
  692. package/esm/mail/config.mjs +16 -1
  693. package/esm/mail/config.mjs.map +1 -1
  694. package/esm/mail/events.d.mts +4 -6
  695. package/esm/mail/events.d.mts.map +1 -1
  696. package/esm/mail/index.d.mts +3 -2
  697. package/esm/mail/index.mjs +2 -2
  698. package/esm/mail/mail.d.mts +1 -3
  699. package/esm/mail/mail.d.mts.map +1 -1
  700. package/esm/mail/mailer-pool.d.mts +5 -7
  701. package/esm/mail/mailer-pool.d.mts.map +1 -1
  702. package/esm/mail/react-mail.d.mts +1 -3
  703. package/esm/mail/react-mail.d.mts.map +1 -1
  704. package/esm/mail/send-mail.d.mts +1 -3
  705. package/esm/mail/send-mail.d.mts.map +1 -1
  706. package/esm/mail/send-mail.mjs +2 -1
  707. package/esm/mail/send-mail.mjs.map +1 -1
  708. package/esm/mail/test-mailbox.d.mts +11 -13
  709. package/esm/mail/test-mailbox.d.mts.map +1 -1
  710. package/esm/mail/types.d.mts +17 -18
  711. package/esm/mail/types.d.mts.map +1 -1
  712. package/esm/manifest/manifest-manager.mjs +1 -1
  713. package/esm/net/index.d.mts +2 -0
  714. package/esm/net/index.mjs +3 -0
  715. package/esm/openapi/build-openapi-document.d.mts +2 -4
  716. package/esm/openapi/build-openapi-document.d.mts.map +1 -1
  717. package/esm/openapi/build-openapi-document.mjs +8 -5
  718. package/esm/openapi/build-openapi-document.mjs.map +1 -1
  719. package/esm/openapi/cast-schema.mjs +1 -1
  720. package/esm/openapi/development-openapi-provider.d.mts +5 -6
  721. package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
  722. package/esm/openapi/error-responses.mjs +28 -2
  723. package/esm/openapi/error-responses.mjs.map +1 -1
  724. package/esm/openapi/index.d.mts +3 -1
  725. package/esm/openapi/index.mjs +1 -1
  726. package/esm/openapi/openapi-child-output.mjs +2 -2
  727. package/esm/openapi/openapi-child-output.mjs.map +1 -1
  728. package/esm/openapi/postman/build-request-body.mjs.map +1 -1
  729. package/esm/openapi/postman/build-request-url.mjs +1 -1
  730. package/esm/openapi/postman/build-request-url.mjs.map +1 -1
  731. package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
  732. package/esm/openapi/postman/example-from-schema.d.mts +1 -3
  733. package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
  734. package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
  735. package/esm/openapi/postman/index.d.mts +2 -1
  736. package/esm/openapi/postman/openapi-to-postman-collection.d.mts +3 -5
  737. package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
  738. package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
  739. package/esm/openapi/postman/postman-types.d.mts +19 -18
  740. package/esm/openapi/postman/postman-types.d.mts.map +1 -1
  741. package/esm/openapi/postman/schema-refs.d.mts +1 -3
  742. package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
  743. package/esm/openapi/postman/schema-refs.mjs.map +1 -1
  744. package/esm/openapi/postman/uuid-v5.mjs +1 -1
  745. package/esm/openapi/postman/uuid-v5.mjs.map +1 -1
  746. package/esm/openapi/request-schemas.mjs.map +1 -1
  747. package/esm/openapi/response-schemas.mjs.map +1 -1
  748. package/esm/openapi/schema-registry.d.mts +1 -0
  749. package/esm/openapi/schema-registry.mjs.map +1 -1
  750. package/esm/openapi/security.mjs +1 -1
  751. package/esm/openapi/security.mjs.map +1 -1
  752. package/esm/openapi/types.d.mts +23 -20
  753. package/esm/openapi/types.d.mts.map +1 -1
  754. package/esm/production/assert-generated-imports.mjs +2 -1
  755. package/esm/production/assert-generated-imports.mjs.map +1 -1
  756. package/esm/production/build-contributions.mjs +1 -1
  757. package/esm/production/bundle-framework-dependencies.mjs +1 -1
  758. package/esm/production/dist-build-manifest.mjs +1 -1
  759. package/esm/production/esbuild-plugins.mjs.map +1 -1
  760. package/esm/production/esbuild-preflight.mjs +1 -1
  761. package/esm/production/production-builder.mjs +14 -5
  762. package/esm/production/production-builder.mjs.map +1 -1
  763. package/esm/production/production-supervisor.mjs +1 -1
  764. package/esm/production/registration-child-runner.mjs +4 -3
  765. package/esm/production/registration-child-runner.mjs.map +1 -1
  766. package/esm/production/resolve-build-config.d.mts +4 -4
  767. package/esm/production/resolve-build-config.d.mts.map +1 -1
  768. package/esm/production/resolve-build-config.mjs +2 -1
  769. package/esm/production/resolve-build-config.mjs.map +1 -1
  770. package/esm/production/route-registration-child.d.mts +1 -1
  771. package/esm/production/route-registration-child.mjs +8 -7
  772. package/esm/production/route-registration-child.mjs.map +1 -1
  773. package/esm/production/route-registration-snapshot.mjs.map +1 -1
  774. package/esm/production/tsconfig-path-aliases.mjs +1 -1
  775. package/esm/react/index.d.mts +1 -3
  776. package/esm/react/index.d.mts.map +1 -1
  777. package/esm/react/index.mjs.map +1 -1
  778. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +3 -4
  779. package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
  780. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +2 -3
  781. package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
  782. package/esm/repositories/adapters/cascade/filter-applicator.mjs +10 -9
  783. package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
  784. package/esm/repositories/adapters/cascade/index.d.mts +2 -1
  785. package/esm/repositories/adapters/cascade/index.mjs +1 -1
  786. package/esm/repositories/contracts/index.d.mts +2 -1
  787. package/esm/repositories/contracts/query-builder.contract.d.mts +4 -6
  788. package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
  789. package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -3
  790. package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
  791. package/esm/repositories/contracts/types.d.mts +23 -25
  792. package/esm/repositories/contracts/types.d.mts.map +1 -1
  793. package/esm/repositories/index.d.mts +4 -1
  794. package/esm/repositories/index.mjs +1 -1
  795. package/esm/repositories/repository.manager.d.mts +2 -3
  796. package/esm/repositories/repository.manager.d.mts.map +1 -1
  797. package/esm/repositories/repository.manager.mjs +2 -2
  798. package/esm/repositories/repository.manager.mjs.map +1 -1
  799. package/esm/resource/define-resource.d.mts +3 -5
  800. package/esm/resource/define-resource.d.mts.map +1 -1
  801. package/esm/resource/index.d.mts +2 -1
  802. package/esm/resource/index.mjs +1 -1
  803. package/esm/resource/nullable-resource.d.mts +5 -7
  804. package/esm/resource/nullable-resource.d.mts.map +1 -1
  805. package/esm/resource/register-resource.d.mts +1 -3
  806. package/esm/resource/register-resource.d.mts.map +1 -1
  807. package/esm/resource/resource-field-builder.d.mts +1 -3
  808. package/esm/resource/resource-field-builder.d.mts.map +1 -1
  809. package/esm/resource/resource.d.mts +3 -5
  810. package/esm/resource/resource.d.mts.map +1 -1
  811. package/esm/resource/resource.mjs +4 -2
  812. package/esm/resource/resource.mjs.map +1 -1
  813. package/esm/resource/types.d.mts +21 -21
  814. package/esm/resource/types.d.mts.map +1 -1
  815. package/esm/restful/index.d.mts +2 -1
  816. package/esm/restful/index.mjs +1 -1
  817. package/esm/restful/restful.d.mts +11 -31
  818. package/esm/restful/restful.d.mts.map +1 -1
  819. package/esm/restful/restful.mjs.map +1 -1
  820. package/esm/router/build-route-rate-limit.mjs.map +1 -1
  821. package/esm/router/dev-dispatch.mjs +31 -12
  822. package/esm/router/dev-dispatch.mjs.map +1 -1
  823. package/esm/router/index.d.mts +5 -2
  824. package/esm/router/index.mjs +3 -1
  825. package/esm/router/log-request-lifecycle.mjs.map +1 -1
  826. package/esm/router/named-api-routes-with-responses.mjs +2 -1
  827. package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
  828. package/esm/router/normalize-request-path.d.mts +1 -2
  829. package/esm/router/normalize-request-path.d.mts.map +1 -1
  830. package/esm/router/normalize-route-path.d.mts +1 -2
  831. package/esm/router/normalize-route-path.d.mts.map +1 -1
  832. package/esm/router/positional-handler-diagnostics.d.mts +15 -13
  833. package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
  834. package/esm/router/positional-handler-diagnostics.mjs.map +1 -1
  835. package/esm/router/resolve-route-rate-limit.mjs +47 -0
  836. package/esm/router/resolve-route-rate-limit.mjs.map +1 -0
  837. package/esm/router/resolve-route-validation.mjs +19 -0
  838. package/esm/router/resolve-route-validation.mjs.map +1 -0
  839. package/esm/router/route-builder.d.mts +1 -3
  840. package/esm/router/route-builder.d.mts.map +1 -1
  841. package/esm/router/route-guard-names.mjs +30 -0
  842. package/esm/router/route-guard-names.mjs.map +1 -0
  843. package/esm/router/route-name-method-suffix.d.mts +2 -3
  844. package/esm/router/route-name-method-suffix.d.mts.map +1 -1
  845. package/esm/router/route-name-taken-error.d.mts +12 -0
  846. package/esm/router/route-name-taken-error.d.mts.map +1 -0
  847. package/esm/router/route-name-taken-error.mjs +18 -0
  848. package/esm/router/route-name-taken-error.mjs.map +1 -0
  849. package/esm/router/route-registry.d.mts +1 -3
  850. package/esm/router/route-registry.d.mts.map +1 -1
  851. package/esm/router/router.d.mts +34 -17
  852. package/esm/router/router.d.mts.map +1 -1
  853. package/esm/router/router.mjs +74 -39
  854. package/esm/router/router.mjs.map +1 -1
  855. package/esm/router/types.d.mts +156 -37
  856. package/esm/router/types.d.mts.map +1 -1
  857. package/esm/router/unguarded-route-diagnostics.d.mts +38 -0
  858. package/esm/router/unguarded-route-diagnostics.d.mts.map +1 -0
  859. package/esm/router/unguarded-route-diagnostics.mjs +95 -0
  860. package/esm/router/unguarded-route-diagnostics.mjs.map +1 -0
  861. package/esm/socket/index.d.mts +2 -1
  862. package/esm/socket/index.mjs +1 -1
  863. package/esm/socket/types.d.mts +2 -4
  864. package/esm/socket/types.d.mts.map +1 -1
  865. package/esm/socket/utils.d.mts +1 -3
  866. package/esm/socket/utils.d.mts.map +1 -1
  867. package/esm/storage/config.d.mts +4 -6
  868. package/esm/storage/config.d.mts.map +1 -1
  869. package/esm/storage/context/storage-driver-context.d.mts +3 -4
  870. package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
  871. package/esm/storage/drivers/cloud-driver.d.mts +2 -4
  872. package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
  873. package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
  874. package/esm/storage/drivers/do-spaces-driver.d.mts +1 -3
  875. package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
  876. package/esm/storage/drivers/local-driver.d.mts +2 -3
  877. package/esm/storage/drivers/local-driver.d.mts.map +1 -1
  878. package/esm/storage/drivers/local-driver.mjs +8 -3
  879. package/esm/storage/drivers/local-driver.mjs.map +1 -1
  880. package/esm/storage/drivers/r2-driver.d.mts +1 -3
  881. package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
  882. package/esm/storage/drivers/s3-driver.d.mts +1 -3
  883. package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
  884. package/esm/storage/index.d.mts +2 -1
  885. package/esm/storage/index.mjs +1 -1
  886. package/esm/storage/local-disk-roots.mjs +24 -0
  887. package/esm/storage/local-disk-roots.mjs.map +1 -0
  888. package/esm/storage/scoped-storage.d.mts +2 -3
  889. package/esm/storage/scoped-storage.d.mts.map +1 -1
  890. package/esm/storage/storage-file.d.mts +1 -3
  891. package/esm/storage/storage-file.d.mts.map +1 -1
  892. package/esm/storage/storage.d.mts +17 -4
  893. package/esm/storage/storage.d.mts.map +1 -1
  894. package/esm/storage/storage.mjs +22 -0
  895. package/esm/storage/storage.mjs.map +1 -1
  896. package/esm/storage/types.d.mts +36 -36
  897. package/esm/storage/types.d.mts.map +1 -1
  898. package/esm/storage/utils/classify-ip-address.d.mts +1 -2
  899. package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
  900. package/esm/storage/utils/contain-path.d.mts +1 -2
  901. package/esm/storage/utils/contain-path.d.mts.map +1 -1
  902. package/esm/storage/utils/mime.d.mts +2 -3
  903. package/esm/storage/utils/mime.d.mts.map +1 -1
  904. package/esm/storage/utils/safe-fetch.d.mts +6 -6
  905. package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
  906. package/esm/storage/utils/safe-fetch.mjs +3 -3
  907. package/esm/storage/utils/safe-fetch.mjs.map +1 -1
  908. package/esm/storage/utils/storage-capability-error.d.mts +1 -3
  909. package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
  910. package/esm/storage/utils/storage-error.d.mts +2 -3
  911. package/esm/storage/utils/storage-error.d.mts.map +1 -1
  912. package/esm/storage/utils/storage-not-initialized-error.d.mts +3 -2
  913. package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
  914. package/esm/storage/utils/storage-not-initialized-error.mjs +1 -0
  915. package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
  916. package/esm/tests/authenticated-test-client.d.mts +31 -0
  917. package/esm/tests/authenticated-test-client.d.mts.map +1 -0
  918. package/esm/tests/authenticated-test-client.mjs +40 -0
  919. package/esm/tests/authenticated-test-client.mjs.map +1 -0
  920. package/esm/tests/factories.d.mts +74 -0
  921. package/esm/tests/factories.d.mts.map +1 -0
  922. package/esm/tests/factories.mjs +105 -0
  923. package/esm/tests/factories.mjs.map +1 -0
  924. package/esm/tests/fakes/cache-fake.d.mts +34 -0
  925. package/esm/tests/fakes/cache-fake.d.mts.map +1 -0
  926. package/esm/tests/fakes/cache-fake.mjs +79 -0
  927. package/esm/tests/fakes/cache-fake.mjs.map +1 -0
  928. package/esm/tests/fakes/clock-fake.d.mts +37 -0
  929. package/esm/tests/fakes/clock-fake.d.mts.map +1 -0
  930. package/esm/tests/fakes/clock-fake.mjs +69 -0
  931. package/esm/tests/fakes/clock-fake.mjs.map +1 -0
  932. package/esm/tests/fakes/fake-assertion-error.d.mts +12 -0
  933. package/esm/tests/fakes/fake-assertion-error.d.mts.map +1 -0
  934. package/esm/tests/fakes/fake-assertion-error.mjs +20 -0
  935. package/esm/tests/fakes/fake-assertion-error.mjs.map +1 -0
  936. package/esm/tests/fakes/ids-fake.d.mts +23 -0
  937. package/esm/tests/fakes/ids-fake.d.mts.map +1 -0
  938. package/esm/tests/fakes/ids-fake.mjs +57 -0
  939. package/esm/tests/fakes/ids-fake.mjs.map +1 -0
  940. package/esm/tests/fakes/index.d.mts +9 -0
  941. package/esm/tests/fakes/index.mjs +10 -0
  942. package/esm/tests/fakes/mail-fake.d.mts +49 -0
  943. package/esm/tests/fakes/mail-fake.d.mts.map +1 -0
  944. package/esm/tests/fakes/mail-fake.mjs +111 -0
  945. package/esm/tests/fakes/mail-fake.mjs.map +1 -0
  946. package/esm/tests/fakes/queue-fake.d.mts +56 -0
  947. package/esm/tests/fakes/queue-fake.d.mts.map +1 -0
  948. package/esm/tests/fakes/queue-fake.mjs +134 -0
  949. package/esm/tests/fakes/queue-fake.mjs.map +1 -0
  950. package/esm/tests/fakes/storage-fake.d.mts +35 -0
  951. package/esm/tests/fakes/storage-fake.d.mts.map +1 -0
  952. package/esm/tests/fakes/storage-fake.mjs +122 -0
  953. package/esm/tests/fakes/storage-fake.mjs.map +1 -0
  954. package/esm/tests/fakes/test-fakes.d.mts +38 -0
  955. package/esm/tests/fakes/test-fakes.d.mts.map +1 -0
  956. package/esm/tests/fakes/test-fakes.mjs +90 -0
  957. package/esm/tests/fakes/test-fakes.mjs.map +1 -0
  958. package/esm/tests/index.d.mts +15 -2
  959. package/esm/tests/index.mjs +15 -2
  960. package/esm/tests/snapshot-response.d.mts +33 -0
  961. package/esm/tests/snapshot-response.d.mts.map +1 -0
  962. package/esm/tests/snapshot-response.mjs +42 -0
  963. package/esm/tests/snapshot-response.mjs.map +1 -0
  964. package/esm/tests/start-http-development-server.d.mts +25 -5
  965. package/esm/tests/start-http-development-server.d.mts.map +1 -1
  966. package/esm/tests/start-http-development-server.mjs +41 -8
  967. package/esm/tests/start-http-development-server.mjs.map +1 -1
  968. package/esm/tests/test-connectors-selection.d.mts +2 -2
  969. package/esm/tests/test-connectors-selection.d.mts.map +1 -1
  970. package/esm/tests/test-connectors-selection.mjs +1 -1
  971. package/esm/tests/test-helpers.d.mts +28 -10
  972. package/esm/tests/test-helpers.d.mts.map +1 -1
  973. package/esm/tests/test-helpers.mjs +40 -27
  974. package/esm/tests/test-helpers.mjs.map +1 -1
  975. package/esm/tests/test-http-server.d.mts +66 -0
  976. package/esm/tests/test-http-server.d.mts.map +1 -0
  977. package/esm/tests/test-http-server.mjs +119 -0
  978. package/esm/tests/test-http-server.mjs.map +1 -0
  979. package/esm/tests/test-lifecycle-state.mjs +1 -1
  980. package/esm/tests/vitest-setup.d.mts +17 -7
  981. package/esm/tests/vitest-setup.d.mts.map +1 -1
  982. package/esm/tests/vitest-setup.mjs +12 -4
  983. package/esm/tests/vitest-setup.mjs.map +1 -1
  984. package/esm/tooling/agents-md/agents-md-markers.d.mts +26 -0
  985. package/esm/tooling/agents-md/agents-md-markers.d.mts.map +1 -0
  986. package/esm/tooling/agents-md/agents-md-markers.mjs +60 -0
  987. package/esm/tooling/agents-md/agents-md-markers.mjs.map +1 -0
  988. package/esm/tooling/agents-md/agents-md-refresher.d.mts +43 -0
  989. package/esm/tooling/agents-md/agents-md-refresher.d.mts.map +1 -0
  990. package/esm/tooling/agents-md/agents-md-refresher.mjs +72 -0
  991. package/esm/tooling/agents-md/agents-md-refresher.mjs.map +1 -0
  992. package/esm/tooling/agents-md/index.mjs +7 -0
  993. package/esm/tooling/agents-md/installed-skills.d.mts +34 -0
  994. package/esm/tooling/agents-md/installed-skills.d.mts.map +1 -0
  995. package/esm/tooling/agents-md/installed-skills.mjs +74 -0
  996. package/esm/tooling/agents-md/installed-skills.mjs.map +1 -0
  997. package/esm/tooling/agents-md/render-agents-md.d.mts +34 -0
  998. package/esm/tooling/agents-md/render-agents-md.d.mts.map +1 -0
  999. package/esm/tooling/agents-md/render-agents-md.mjs +195 -0
  1000. package/esm/tooling/agents-md/render-agents-md.mjs.map +1 -0
  1001. package/esm/tooling/agents-md/write-agents-md.d.mts +38 -0
  1002. package/esm/tooling/agents-md/write-agents-md.d.mts.map +1 -0
  1003. package/esm/tooling/agents-md/write-agents-md.mjs +49 -0
  1004. package/esm/tooling/agents-md/write-agents-md.mjs.map +1 -0
  1005. package/esm/tooling/board/board-message.d.mts +29 -0
  1006. package/esm/tooling/board/board-message.d.mts.map +1 -0
  1007. package/esm/tooling/board/board-message.mjs +86 -0
  1008. package/esm/tooling/board/board-message.mjs.map +1 -0
  1009. package/esm/tooling/board/board.d.mts +121 -0
  1010. package/esm/tooling/board/board.d.mts.map +1 -0
  1011. package/esm/tooling/board/board.mjs +407 -0
  1012. package/esm/tooling/board/board.mjs.map +1 -0
  1013. package/esm/tooling/board/board.types.d.mts +81 -0
  1014. package/esm/tooling/board/board.types.d.mts.map +1 -0
  1015. package/esm/tooling/board/board.types.mjs +54 -0
  1016. package/esm/tooling/board/board.types.mjs.map +1 -0
  1017. package/esm/tooling/check/changed-files.d.mts +31 -0
  1018. package/esm/tooling/check/changed-files.d.mts.map +1 -0
  1019. package/esm/tooling/check/changed-files.mjs +73 -0
  1020. package/esm/tooling/check/changed-files.mjs.map +1 -0
  1021. package/esm/tooling/check/check-report.types.d.mts +67 -0
  1022. package/esm/tooling/check/check-report.types.d.mts.map +1 -0
  1023. package/esm/tooling/check/check-report.types.mjs +37 -0
  1024. package/esm/tooling/check/check-report.types.mjs.map +1 -0
  1025. package/esm/tooling/check/code-style-conventions.mjs +106 -0
  1026. package/esm/tooling/check/code-style-conventions.mjs.map +1 -0
  1027. package/esm/tooling/check/conventions-step.d.mts +32 -0
  1028. package/esm/tooling/check/conventions-step.d.mts.map +1 -0
  1029. package/esm/tooling/check/conventions-step.mjs +173 -0
  1030. package/esm/tooling/check/conventions-step.mjs.map +1 -0
  1031. package/esm/tooling/check/environment-step.d.mts +16 -0
  1032. package/esm/tooling/check/environment-step.d.mts.map +1 -0
  1033. package/esm/tooling/check/environment-step.mjs +78 -0
  1034. package/esm/tooling/check/environment-step.mjs.map +1 -0
  1035. package/esm/tooling/check/index.mjs +10 -0
  1036. package/esm/tooling/check/lint-step.d.mts +18 -0
  1037. package/esm/tooling/check/lint-step.d.mts.map +1 -0
  1038. package/esm/tooling/check/lint-step.mjs +112 -0
  1039. package/esm/tooling/check/lint-step.mjs.map +1 -0
  1040. package/esm/tooling/check/request-input.mjs +132 -0
  1041. package/esm/tooling/check/request-input.mjs.map +1 -0
  1042. package/esm/tooling/check/run-check.d.mts +43 -0
  1043. package/esm/tooling/check/run-check.d.mts.map +1 -0
  1044. package/esm/tooling/check/run-check.mjs +192 -0
  1045. package/esm/tooling/check/run-check.mjs.map +1 -0
  1046. package/esm/tooling/check/run-tests.d.mts +55 -0
  1047. package/esm/tooling/check/run-tests.d.mts.map +1 -0
  1048. package/esm/tooling/check/run-tests.mjs +93 -0
  1049. package/esm/tooling/check/run-tests.mjs.map +1 -0
  1050. package/esm/tooling/check/security-conventions.mjs +650 -0
  1051. package/esm/tooling/check/security-conventions.mjs.map +1 -0
  1052. package/esm/tooling/check/source-ast.mjs +155 -0
  1053. package/esm/tooling/check/source-ast.mjs.map +1 -0
  1054. package/esm/tooling/check/source-files.mjs +27 -0
  1055. package/esm/tooling/check/source-files.mjs.map +1 -0
  1056. package/esm/tooling/check/tests-step.d.mts +33 -0
  1057. package/esm/tooling/check/tests-step.d.mts.map +1 -0
  1058. package/esm/tooling/check/tests-step.mjs +177 -0
  1059. package/esm/tooling/check/tests-step.mjs.map +1 -0
  1060. package/esm/tooling/dev-state/dev-server-state.d.mts +43 -0
  1061. package/esm/tooling/dev-state/dev-server-state.d.mts.map +1 -0
  1062. package/esm/tooling/dev-state/dev-server-state.mjs +67 -0
  1063. package/esm/tooling/dev-state/dev-server-state.mjs.map +1 -0
  1064. package/esm/tooling/devtools/devtools-client.d.mts +100 -0
  1065. package/esm/tooling/devtools/devtools-client.d.mts.map +1 -0
  1066. package/esm/tooling/devtools/devtools-client.mjs +155 -0
  1067. package/esm/tooling/devtools/devtools-client.mjs.map +1 -0
  1068. package/esm/tooling/generate/generation.d.mts +90 -0
  1069. package/esm/tooling/generate/generation.d.mts.map +1 -0
  1070. package/esm/tooling/generate/generation.mjs +127 -0
  1071. package/esm/tooling/generate/generation.mjs.map +1 -0
  1072. package/esm/tooling/generate/generator-spec.d.mts +57 -0
  1073. package/esm/tooling/generate/generator-spec.d.mts.map +1 -0
  1074. package/esm/tooling/generate/generator-spec.mjs +102 -0
  1075. package/esm/tooling/generate/generator-spec.mjs.map +1 -0
  1076. package/esm/tooling/generate/index.mjs +6 -0
  1077. package/esm/tooling/generate/project-files.mjs +121 -0
  1078. package/esm/tooling/generate/project-files.mjs.map +1 -0
  1079. package/esm/tooling/generate/run-cli.d.mts +43 -0
  1080. package/esm/tooling/generate/run-cli.d.mts.map +1 -0
  1081. package/esm/tooling/generate/run-cli.mjs +93 -0
  1082. package/esm/tooling/generate/run-cli.mjs.map +1 -0
  1083. package/esm/tooling/generate/unified-diff.d.mts +40 -0
  1084. package/esm/tooling/generate/unified-diff.d.mts.map +1 -0
  1085. package/esm/tooling/generate/unified-diff.mjs +161 -0
  1086. package/esm/tooling/generate/unified-diff.mjs.map +1 -0
  1087. package/esm/tooling/index.d.mts +42 -0
  1088. package/esm/tooling/index.mjs +45 -0
  1089. package/esm/tooling/inspect/boot-for-inspect.d.mts +23 -0
  1090. package/esm/tooling/inspect/boot-for-inspect.d.mts.map +1 -0
  1091. package/esm/tooling/inspect/boot-for-inspect.mjs +63 -0
  1092. package/esm/tooling/inspect/boot-for-inspect.mjs.map +1 -0
  1093. package/esm/tooling/inspect/collect-config.mjs +77 -0
  1094. package/esm/tooling/inspect/collect-config.mjs.map +1 -0
  1095. package/esm/tooling/inspect/collect-models.d.mts +10 -0
  1096. package/esm/tooling/inspect/collect-models.d.mts.map +1 -0
  1097. package/esm/tooling/inspect/collect-models.mjs +154 -0
  1098. package/esm/tooling/inspect/collect-models.mjs.map +1 -0
  1099. package/esm/tooling/inspect/collect-packages.d.mts +9 -0
  1100. package/esm/tooling/inspect/collect-packages.d.mts.map +1 -0
  1101. package/esm/tooling/inspect/collect-packages.mjs +157 -0
  1102. package/esm/tooling/inspect/collect-packages.mjs.map +1 -0
  1103. package/esm/tooling/inspect/collect-pages.mjs +108 -0
  1104. package/esm/tooling/inspect/collect-pages.mjs.map +1 -0
  1105. package/esm/tooling/inspect/collect-routes.mjs +168 -0
  1106. package/esm/tooling/inspect/collect-routes.mjs.map +1 -0
  1107. package/esm/tooling/inspect/event-recorder.d.mts +37 -0
  1108. package/esm/tooling/inspect/event-recorder.d.mts.map +1 -0
  1109. package/esm/tooling/inspect/event-recorder.mjs +91 -0
  1110. package/esm/tooling/inspect/event-recorder.mjs.map +1 -0
  1111. package/esm/tooling/inspect/index.d.mts +8 -0
  1112. package/esm/tooling/inspect/index.mjs +7 -0
  1113. package/esm/tooling/inspect/inspect-app.d.mts +62 -0
  1114. package/esm/tooling/inspect/inspect-app.d.mts.map +1 -0
  1115. package/esm/tooling/inspect/inspect-app.mjs +92 -0
  1116. package/esm/tooling/inspect/inspect-app.mjs.map +1 -0
  1117. package/esm/tooling/inspect/inspect-report.schema.d.mts +14 -0
  1118. package/esm/tooling/inspect/inspect-report.schema.d.mts.map +1 -0
  1119. package/esm/tooling/inspect/inspect-report.schema.mjs +463 -0
  1120. package/esm/tooling/inspect/inspect-report.schema.mjs.map +1 -0
  1121. package/esm/tooling/inspect/inspect-report.types.d.mts +228 -0
  1122. package/esm/tooling/inspect/inspect-report.types.d.mts.map +1 -0
  1123. package/esm/tooling/inspect/inspect-report.types.mjs +33 -0
  1124. package/esm/tooling/inspect/inspect-report.types.mjs.map +1 -0
  1125. package/esm/tooling/mcp/create-mcp-context.d.mts +29 -0
  1126. package/esm/tooling/mcp/create-mcp-context.d.mts.map +1 -0
  1127. package/esm/tooling/mcp/create-mcp-context.mjs +75 -0
  1128. package/esm/tooling/mcp/create-mcp-context.mjs.map +1 -0
  1129. package/esm/tooling/mcp/db-schema.d.mts +50 -0
  1130. package/esm/tooling/mcp/db-schema.d.mts.map +1 -0
  1131. package/esm/tooling/mcp/db-schema.mjs +56 -0
  1132. package/esm/tooling/mcp/db-schema.mjs.map +1 -0
  1133. package/esm/tooling/mcp/docs-search.d.mts +77 -0
  1134. package/esm/tooling/mcp/docs-search.d.mts.map +1 -0
  1135. package/esm/tooling/mcp/docs-search.mjs +178 -0
  1136. package/esm/tooling/mcp/docs-search.mjs.map +1 -0
  1137. package/esm/tooling/mcp/index.mjs +9 -0
  1138. package/esm/tooling/mcp/load-ai-tools.d.mts +61 -0
  1139. package/esm/tooling/mcp/load-ai-tools.d.mts.map +1 -0
  1140. package/esm/tooling/mcp/load-ai-tools.mjs +45 -0
  1141. package/esm/tooling/mcp/load-ai-tools.mjs.map +1 -0
  1142. package/esm/tooling/mcp/mcp-tools.d.mts +70 -0
  1143. package/esm/tooling/mcp/mcp-tools.d.mts.map +1 -0
  1144. package/esm/tooling/mcp/mcp-tools.mjs +514 -0
  1145. package/esm/tooling/mcp/mcp-tools.mjs.map +1 -0
  1146. package/esm/tooling/mcp/start-mcp-server.d.mts +63 -0
  1147. package/esm/tooling/mcp/start-mcp-server.d.mts.map +1 -0
  1148. package/esm/tooling/mcp/start-mcp-server.mjs +126 -0
  1149. package/esm/tooling/mcp/start-mcp-server.mjs.map +1 -0
  1150. package/esm/tooling/mcp/tool-input.d.mts +75 -0
  1151. package/esm/tooling/mcp/tool-input.d.mts.map +1 -0
  1152. package/esm/tooling/mcp/tool-input.mjs +72 -0
  1153. package/esm/tooling/mcp/tool-input.mjs.map +1 -0
  1154. package/esm/tooling/problem.d.mts +55 -0
  1155. package/esm/tooling/problem.d.mts.map +1 -0
  1156. package/esm/tooling/problem.mjs +28 -0
  1157. package/esm/tooling/problem.mjs.map +1 -0
  1158. package/esm/tooling/syntax/ast.mjs +230 -0
  1159. package/esm/tooling/syntax/ast.mjs.map +1 -0
  1160. package/esm/tooling/syntax/imports.mjs +34 -0
  1161. package/esm/tooling/syntax/imports.mjs.map +1 -0
  1162. package/esm/tooling/trace/trace-report.types.d.mts +85 -0
  1163. package/esm/tooling/trace/trace-report.types.d.mts.map +1 -0
  1164. package/esm/tooling/trace/trace-report.types.mjs +7 -0
  1165. package/esm/tooling/trace/trace-report.types.mjs.map +1 -0
  1166. package/esm/tooling/trace/trace-request.d.mts +90 -0
  1167. package/esm/tooling/trace/trace-request.d.mts.map +1 -0
  1168. package/esm/tooling/trace/trace-request.mjs +241 -0
  1169. package/esm/tooling/trace/trace-request.mjs.map +1 -0
  1170. package/esm/tooling/typecheck/index.mjs +3 -0
  1171. package/esm/tooling/typecheck/run-typecheck.d.mts +26 -0
  1172. package/esm/tooling/typecheck/run-typecheck.d.mts.map +1 -0
  1173. package/esm/tooling/typecheck/run-typecheck.mjs +90 -0
  1174. package/esm/tooling/typecheck/run-typecheck.mjs.map +1 -0
  1175. package/esm/tooling/typescript/compiler.d.mts +31 -0
  1176. package/esm/tooling/typescript/compiler.d.mts.map +1 -0
  1177. package/esm/tooling/typescript/compiler.mjs +120 -0
  1178. package/esm/tooling/typescript/compiler.mjs.map +1 -0
  1179. package/esm/updater/update-warlock-packages.mjs +3 -2
  1180. package/esm/updater/update-warlock-packages.mjs.map +1 -1
  1181. package/esm/upgrade/codemods/head-viewport.mjs +46 -0
  1182. package/esm/upgrade/codemods/head-viewport.mjs.map +1 -0
  1183. package/esm/upgrade/codemods/helpers.mjs +81 -0
  1184. package/esm/upgrade/codemods/helpers.mjs.map +1 -0
  1185. package/esm/upgrade/codemods/index.mjs +34 -0
  1186. package/esm/upgrade/codemods/index.mjs.map +1 -0
  1187. package/esm/upgrade/codemods/logger-sync-calls.mjs +57 -0
  1188. package/esm/upgrade/codemods/logger-sync-calls.mjs.map +1 -0
  1189. package/esm/upgrade/codemods/package-json.mjs +122 -0
  1190. package/esm/upgrade/codemods/package-json.mjs.map +1 -0
  1191. package/esm/upgrade/codemods/request-log-snapshot.mjs +82 -0
  1192. package/esm/upgrade/codemods/request-log-snapshot.mjs.map +1 -0
  1193. package/esm/upgrade/codemods/review-sites.mjs +262 -0
  1194. package/esm/upgrade/codemods/review-sites.mjs.map +1 -0
  1195. package/esm/upgrade/diff.mjs +119 -0
  1196. package/esm/upgrade/diff.mjs.map +1 -0
  1197. package/esm/upgrade/format-upgrade-report.mjs +32 -0
  1198. package/esm/upgrade/format-upgrade-report.mjs.map +1 -0
  1199. package/esm/upgrade/load-ts-morph.mjs +49 -0
  1200. package/esm/upgrade/load-ts-morph.mjs.map +1 -0
  1201. package/esm/upgrade/notes.mjs +16 -0
  1202. package/esm/upgrade/notes.mjs.map +1 -0
  1203. package/esm/upgrade/run-upgrade.mjs +246 -0
  1204. package/esm/upgrade/run-upgrade.mjs.map +1 -0
  1205. package/esm/upgrade/upgrade-command.action.mjs +37 -0
  1206. package/esm/upgrade/upgrade-command.action.mjs.map +1 -0
  1207. package/esm/upgrade/version.mjs +39 -0
  1208. package/esm/upgrade/version.mjs.map +1 -0
  1209. package/esm/use-cases/index.d.mts +2 -1
  1210. package/esm/use-cases/index.mjs +1 -1
  1211. package/esm/use-cases/types.d.mts +116 -63
  1212. package/esm/use-cases/types.d.mts.map +1 -1
  1213. package/esm/use-cases/use-case-broadcast.d.mts +1 -3
  1214. package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
  1215. package/esm/use-cases/use-case-events.d.mts +3 -5
  1216. package/esm/use-cases/use-case-events.d.mts.map +1 -1
  1217. package/esm/use-cases/use-case-pipeline.d.mts +6 -6
  1218. package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
  1219. package/esm/use-cases/use-case.d.mts +2 -4
  1220. package/esm/use-cases/use-case.d.mts.map +1 -1
  1221. package/esm/use-cases/use-case.errors.d.mts +1 -3
  1222. package/esm/use-cases/use-case.errors.d.mts.map +1 -1
  1223. package/esm/use-cases/use-cases-registry.d.mts +8 -10
  1224. package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
  1225. package/esm/use-cases/use-cases-registry.mjs.map +1 -1
  1226. package/esm/utils/app-log.d.mts +1 -2
  1227. package/esm/utils/app-log.d.mts.map +1 -1
  1228. package/esm/utils/clock.d.mts +35 -0
  1229. package/esm/utils/clock.d.mts.map +1 -0
  1230. package/esm/utils/clock.mjs +27 -0
  1231. package/esm/utils/clock.mjs.map +1 -0
  1232. package/esm/utils/database-log.d.mts +3 -4
  1233. package/esm/utils/database-log.d.mts.map +1 -1
  1234. package/esm/utils/environment.d.mts +4 -5
  1235. package/esm/utils/environment.d.mts.map +1 -1
  1236. package/esm/utils/framework-vesion.mjs +1 -1
  1237. package/esm/utils/framework-vesion.mjs.map +1 -1
  1238. package/esm/utils/get-localized.d.mts +2 -3
  1239. package/esm/utils/get-localized.d.mts.map +1 -1
  1240. package/esm/utils/ids.d.mts +35 -0
  1241. package/esm/utils/ids.d.mts.map +1 -0
  1242. package/esm/utils/ids.mjs +33 -0
  1243. package/esm/utils/ids.mjs.map +1 -0
  1244. package/esm/utils/index.d.mts +5 -1
  1245. package/esm/utils/index.mjs +4 -1
  1246. package/esm/utils/normalized-path.d.mts +1 -2
  1247. package/esm/utils/normalized-path.d.mts.map +1 -1
  1248. package/esm/utils/npm-registry.d.mts +1 -2
  1249. package/esm/utils/npm-registry.d.mts.map +1 -1
  1250. package/esm/utils/paths.d.mts +13 -14
  1251. package/esm/utils/paths.d.mts.map +1 -1
  1252. package/esm/utils/paths.mjs +2 -2
  1253. package/esm/utils/paths.mjs.map +1 -1
  1254. package/esm/utils/promise-all-object.d.mts +1 -2
  1255. package/esm/utils/promise-all-object.d.mts.map +1 -1
  1256. package/esm/utils/queue.d.mts +1 -2
  1257. package/esm/utils/queue.d.mts.map +1 -1
  1258. package/esm/utils/runtime.d.mts +60 -0
  1259. package/esm/utils/runtime.d.mts.map +1 -0
  1260. package/esm/utils/runtime.mjs +85 -0
  1261. package/esm/utils/runtime.mjs.map +1 -0
  1262. package/esm/utils/sleep.d.mts +1 -2
  1263. package/esm/utils/sleep.d.mts.map +1 -1
  1264. package/esm/utils/sluggable.d.mts +1 -3
  1265. package/esm/utils/sluggable.d.mts.map +1 -1
  1266. package/esm/utils/to-json.d.mts +1 -2
  1267. package/esm/utils/to-json.d.mts.map +1 -1
  1268. package/esm/utils/types.d.mts +1 -2
  1269. package/esm/utils/types.d.mts.map +1 -1
  1270. package/esm/utils/urls.d.mts +5 -6
  1271. package/esm/utils/urls.d.mts.map +1 -1
  1272. package/esm/utils/version-compare.d.mts +1 -2
  1273. package/esm/utils/version-compare.d.mts.map +1 -1
  1274. package/esm/validation/database/exists-except-current-id.d.mts +2 -3
  1275. package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
  1276. package/esm/validation/database/exists-except-current-user.d.mts +2 -3
  1277. package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
  1278. package/esm/validation/database/index.d.mts +2 -1
  1279. package/esm/validation/database/index.mjs +1 -1
  1280. package/esm/validation/database/types.d.mts +14 -10
  1281. package/esm/validation/database/types.d.mts.map +1 -1
  1282. package/esm/validation/database/unique-except-current-id.d.mts +2 -3
  1283. package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
  1284. package/esm/validation/database/unique-except-current-user.d.mts +2 -3
  1285. package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
  1286. package/esm/validation/file/file.d.mts +4 -6
  1287. package/esm/validation/file/file.d.mts.map +1 -1
  1288. package/esm/validation/file/index.d.mts +2 -1
  1289. package/esm/validation/file/index.mjs +1 -1
  1290. package/esm/validation/index.d.mts +6 -2
  1291. package/esm/validation/index.mjs +1 -1
  1292. package/esm/validation/plugins/index.mjs +1 -1
  1293. package/esm/validation/types.d.mts +61 -4
  1294. package/esm/validation/types.d.mts.map +1 -1
  1295. package/esm/validation/validateAll.mjs +21 -4
  1296. package/esm/validation/validateAll.mjs.map +1 -1
  1297. package/esm/validation/validation-failure-status.mjs +15 -0
  1298. package/esm/validation/validation-failure-status.mjs.map +1 -0
  1299. package/esm/validation/validators/file-validator.d.mts +2 -20
  1300. package/esm/validation/validators/file-validator.d.mts.map +1 -1
  1301. package/esm/validation/validators/index.d.mts +2 -1
  1302. package/esm/validation/validators/index.mjs +1 -1
  1303. package/esm/vite/lower-stage3-decorators.d.mts +2 -3
  1304. package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
  1305. package/esm/warlock-config/bundle-config.mjs +1 -1
  1306. package/esm/warlock-config/define-config.d.mts +1 -3
  1307. package/esm/warlock-config/define-config.d.mts.map +1 -1
  1308. package/esm/warlock-config/define-config.mjs +3 -2
  1309. package/esm/warlock-config/define-config.mjs.map +1 -1
  1310. package/esm/warlock-config/index.d.mts +2 -1
  1311. package/esm/warlock-config/index.mjs +1 -1
  1312. package/esm/warlock-config/types.d.mts +31 -6
  1313. package/esm/warlock-config/types.d.mts.map +1 -1
  1314. package/esm/warlock-config/warlock-config.manager.d.mts +5 -7
  1315. package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
  1316. package/esm/warlock-config/warlock-config.manager.mjs +2 -1
  1317. package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
  1318. package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
  1319. package/llms-full.txt +3211 -731
  1320. package/llms.txt +16 -6
  1321. package/package.json +47 -15
  1322. package/schemas/inspect-report.schema.json +554 -0
  1323. package/skills/README.md +9 -0
  1324. package/skills/add-connector/SKILL.md +26 -38
  1325. package/skills/benchmark-code/SKILL.md +30 -24
  1326. package/skills/build-restful/SKILL.md +14 -14
  1327. package/skills/build-url/SKILL.md +18 -18
  1328. package/skills/configure-app/SKILL.md +107 -14
  1329. package/skills/create-controller/SKILL.md +25 -12
  1330. package/skills/create-module/SKILL.md +10 -3
  1331. package/skills/define-resource/SKILL.md +32 -29
  1332. package/skills/encrypt-data/SKILL.md +21 -19
  1333. package/skills/generate-openapi/SKILL.md +50 -24
  1334. package/skills/hash-password/SKILL.md +2 -2
  1335. package/skills/health-checks/SKILL.md +24 -7
  1336. package/skills/index.md +11 -4
  1337. package/skills/lower-stage3-decorators/SKILL.md +4 -4
  1338. package/skills/make-endpoint/SKILL.md +110 -0
  1339. package/skills/model-factories/SKILL.md +92 -0
  1340. package/skills/process-image/SKILL.md +32 -30
  1341. package/skills/register-route/SKILL.md +109 -10
  1342. package/skills/report-framework-issue.md +154 -0
  1343. package/skills/request-memo/SKILL.md +1 -1
  1344. package/skills/request-tracing/SKILL.md +4 -1
  1345. package/skills/resolve-path/SKILL.md +45 -44
  1346. package/skills/retry-operation/SKILL.md +20 -11
  1347. package/skills/run-app/SKILL.md +107 -22
  1348. package/skills/send-response/SKILL.md +179 -14
  1349. package/skills/store-file/SKILL.md +93 -53
  1350. package/skills/test-fakes/SKILL.md +123 -0
  1351. package/skills/test-http/SKILL.md +125 -21
  1352. package/skills/test-service/SKILL.md +41 -1
  1353. package/skills/update-packages/SKILL.md +29 -18
  1354. package/skills/upgrade-from-5-29/SKILL.md +454 -0
  1355. package/skills/upload-file/SKILL.md +31 -33
  1356. package/skills/use-app-context/SKILL.md +38 -31
  1357. package/skills/use-middleware/SKILL.md +45 -25
  1358. package/skills/use-model-transformers/SKILL.md +37 -28
  1359. package/skills/use-repository/SKILL.md +2 -2
  1360. package/skills/validate-input/SKILL.md +72 -28
  1361. package/skills/warlock-agents-md/SKILL.md +96 -0
  1362. package/skills/warlock-board/SKILL.md +123 -0
  1363. package/skills/warlock-check/SKILL.md +133 -0
  1364. package/skills/warlock-conventions/SKILL.md +115 -0
  1365. package/skills/warlock-doctor/SKILL.md +55 -22
  1366. package/skills/warlock-inspect/SKILL.md +134 -0
  1367. package/skills/warlock-mcp/SKILL.md +120 -0
  1368. package/skills/warlock-routes/SKILL.md +18 -11
  1369. package/skills/warlock-trace/SKILL.md +81 -0
  1370. package/skills/wire-socket/SKILL.md +8 -8
  1371. package/skills/write-seeder/SKILL.md +46 -32
  1372. package/skills/write-use-case/SKILL.md +40 -27
  1373. package/esm/http/uploads/matches-if-none-match.mjs +0 -13
  1374. package/esm/http/uploads/matches-if-none-match.mjs.map +0 -1
@@ -7,40 +7,58 @@
7
7
  /**
8
8
  * Get the test server base URL
9
9
  */
10
- declare function getTestServerUrl(): string;
10
+ export declare function getTestServerUrl(): string;
11
11
  /**
12
12
  * Simple HTTP request helper for test server
13
13
  * Uses native fetch - lightweight, no extra dependencies
14
14
  */
15
- declare function testRequest(path: string, options?: RequestInit): Promise<Response>;
15
+ export declare function testRequest(path: string, options?: RequestInit): Promise<Response>;
16
+ /** The request helpers, bound to one server. */
17
+ export 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
+ export declare function createTestRequestClient(baseUrl: string | (() => string)): TestRequestClient;
16
35
  /**
17
36
  * GET request helper
18
37
  */
19
- declare function testGet(path: string, options?: RequestInit): Promise<Response>;
38
+ export declare function testGet(path: string, options?: RequestInit): Promise<Response>;
20
39
  /**
21
40
  * POST request helper
22
41
  */
23
- declare function testPost(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
42
+ export declare function testPost(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
24
43
  /**
25
44
  * PUT request helper
26
45
  */
27
- declare function testPut(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
46
+ export declare function testPut(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
28
47
  /**
29
48
  * DELETE request helper
30
49
  */
31
- declare function testDelete(path: string, options?: RequestInit): Promise<Response>;
50
+ export declare function testDelete(path: string, options?: RequestInit): Promise<Response>;
32
51
  /**
33
52
  * PATCH request helper
34
53
  */
35
- declare function testPatch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
54
+ export declare function testPatch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
36
55
  /**
37
56
  * Parse JSON response with type safety
38
57
  */
39
- declare function parseJsonResponse<T>(response: Response): Promise<T>;
58
+ export declare function parseJsonResponse<T>(response: Response): Promise<T>;
40
59
  /**
41
60
  * Assert response status and return parsed JSON
42
61
  */
43
- declare function expectJson<T>(response: Response, expectedStatus?: number): Promise<T>;
62
+ export declare function expectJson<T>(response: Response, expectedStatus?: number): Promise<T>;
44
63
  //#endregion
45
- export { expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
46
64
  //# sourceMappingURL=test-helpers.d.mts.map
@@ -1 +1 @@
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;;;;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":";;;;;;;;;wBAagB;;;;;wBA6BM,YAAY,cAAc,UAAS,cAAmB,QAAQ;;YA8CxE;EACV,QAAQ,cAAc,UAAU,cAAc,QAAQ;EACtD,IAAI,cAAc,UAAU,cAAc,QAAQ;EAClD,KAAK,cAAc,gBAAgB,UAAU,cAAc,QAAQ;EACnE,IAAI,cAAc,gBAAgB,UAAU,cAAc,QAAQ;EAClE,MAAM,cAAc,gBAAgB,UAAU,cAAc,QAAQ;EACpE,OAAO,cAAc,UAAU,cAAc,QAAQ;;;;;;;;;;;wBAYvC,wBAAwB,mCAAmC;;;;wBAqBrD,QAAQ,cAAc,UAAS,cAAmB,QAAQ;;;;wBAO1D,SACpB,cACA,gBACA,UAAS,cACR,QAAQ;;;;wBAOW,QACpB,cACA,gBACA,UAAS,cACR,QAAQ;;;;wBAOW,WAAW,cAAc,UAAS,cAAmB,QAAQ;;;;wBAO7D,UACpB,cACA,gBACA,UAAS,cACR,QAAQ;;;;wBAOW,kBAAkB,GAAG,UAAU,WAAW,QAAQ;;;;wBAOlD,WAAW,GAAG,UAAU,UAAU,0BAAuB,QAAQ"}
@@ -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":["../../../../../../../../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(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,66 @@
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
+ //#region ../../packages/core/src/tests/test-http-server.d.ts
7
+ export type CreateTestHttpServerOptions = {
8
+ /**
9
+ * Register routes for this server, exactly as a `routes.ts` would. They are
10
+ * tagged with a source of their own and removed again by `close()`.
11
+ */
12
+ routes?: (router: Router) => unknown;
13
+ /**
14
+ * Load the application's modules (`routes.ts`, `main.ts`, events, ...) first,
15
+ * so the server answers every app route. Needs `setupTest()` to have run in
16
+ * this worker. Modules load once per process; later servers reuse them.
17
+ */
18
+ loadAppModules?: boolean;
19
+ /**
20
+ * How app modules are imported when `loadAppModules` is set. Pass
21
+ * `(file) => import(file)` from the test file, as `setupTest()` takes it, so
22
+ * app classes are the same ones the test imports.
23
+ */
24
+ importModule?: AppModuleImporter;
25
+ /** Interface to bind. Defaults to `127.0.0.1`. */
26
+ host?: string;
27
+ };
28
+ export type TestHttpServer = TestRequestClient & {
29
+ /** `http://127.0.0.1:<port>` */
30
+ readonly url: string;
31
+ /** The port the OS assigned. */
32
+ readonly port: number;
33
+ /** The Fastify instance, for `inject()` or anything else Fastify offers. */
34
+ readonly server: FastifyInstance;
35
+ /** A client for this server, signed in as `user` with a real access token. */
36
+ actingAs(user: TestAuthenticableUser): Promise<AuthenticatedTestClient>;
37
+ /** Stop listening and remove the routes `routes` registered. */
38
+ close(): Promise<void>;
39
+ };
40
+ /**
41
+ * Start an in-process HTTP server with the production plugins, on a free port.
42
+ *
43
+ * @example
44
+ * const app = await createTestHttpServer({
45
+ * routes: (router) => router.post("/echo", ({ request, response }) =>
46
+ * response.success({ body: request.all() })),
47
+ * });
48
+ *
49
+ * const response = await app.post("/echo", { name: "Ada" });
50
+ * expect(response.status).toBe(200);
51
+ *
52
+ * await app.close();
53
+ *
54
+ * @example
55
+ * // every app route, with the fakes seeing what the controller did
56
+ * const app = await createTestHttpServer({
57
+ * loadAppModules: true,
58
+ * importModule: (file) => import(file),
59
+ * });
60
+ *
61
+ * await app.post("/contact", { email: "ada@example.test", message: "Hi" });
62
+ * mailFake.assertSent({ to: "support@example.test" });
63
+ */
64
+ export declare function createTestHttpServer(options?: CreateTestHttpServerOptions): Promise<TestHttpServer>;
65
+ //#endregion
66
+ //# 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":";;;;;;YA+BY;;;;;EAKV,UAAU,QAAQ;;;;;;EAMlB;;;;;;EAMA,eAAe;;EAEf;;YAGU,iBAAiB;;WAElB;;WAEA;;WAEA,QAAQ;;EAEjB,SAAS,MAAM,wBAAwB,QAAQ;;EAE/C,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;wBAmEW,qBACpB,UAAS,8BACR,QAAQ"}
@@ -0,0 +1,119 @@
1
+ import { validateCspConfigAtBoot } from "../http/csp.mjs";
2
+ import { router } from "../router/router.mjs";
3
+ import { registerHttpPlugins } from "../http/plugins.mjs";
4
+ import { startHttpServer } from "../http/server.mjs";
5
+ import { setAppModuleImporter } from "../loader/app-module-importer.mjs";
6
+ import { createTestRequestClient } from "./test-helpers.mjs";
7
+ import { actingAs } from "./authenticated-test-client.mjs";
8
+
9
+ //#region ../../packages/core/src/tests/test-http-server.ts
10
+ /**
11
+ * An HTTP server inside the test process, built the way production builds it.
12
+ *
13
+ * `startHttpTestServer()` runs one server for the whole run, in Vitest's main
14
+ * process. This is the other shape: a server per test file (or per test) in the
15
+ * worker itself, on an OS-assigned port. Two things follow from living in the
16
+ * worker:
17
+ *
18
+ * - Requests run through the REAL stack: the Fastify instance `startHttpServer`
19
+ * creates, every plugin `registerHttpPlugins` registers in production (rate
20
+ * limit, CORS, multipart, cookies, ...), and the router's real route
21
+ * registration. A test cannot pass against a request shape production never
22
+ * produces, and the plugins' own behaviour (what the rate-limit store is
23
+ * handed, how a cookie is parsed) is what runs.
24
+ * - The test fakes see everything the request did: mail sent and jobs pushed
25
+ * by the controller land in this process's `mailFake` / `queueFake`.
26
+ */
27
+ const APP_MODULES_LOADED_KEY = Symbol.for("warlock.core.testAppModulesLoaded");
28
+ let serverCounter = 0;
29
+ async function loadAppModulesOnce(importModule) {
30
+ const holder = globalThis;
31
+ holder[APP_MODULES_LOADED_KEY] ??= (async () => {
32
+ const { filesOrchestrator } = await import("../dev-server/files-orchestrator.mjs");
33
+ setAppModuleImporter(importModule);
34
+ try {
35
+ await filesOrchestrator.init();
36
+ await filesOrchestrator.initializeAll();
37
+ await filesOrchestrator.moduleLoader.loadAll();
38
+ } finally {
39
+ setAppModuleImporter(void 0);
40
+ }
41
+ })().catch((error) => {
42
+ holder[APP_MODULES_LOADED_KEY] = void 0;
43
+ throw error;
44
+ });
45
+ await holder[APP_MODULES_LOADED_KEY];
46
+ }
47
+ function boundPort(server) {
48
+ const address = server.server.address();
49
+ if (address === null || typeof address === "string") throw new Error("createTestHttpServer(): the server did not report a TCP port after listen().");
50
+ return address.port;
51
+ }
52
+ /**
53
+ * Start an in-process HTTP server with the production plugins, on a free port.
54
+ *
55
+ * @example
56
+ * const app = await createTestHttpServer({
57
+ * routes: (router) => router.post("/echo", ({ request, response }) =>
58
+ * response.success({ body: request.all() })),
59
+ * });
60
+ *
61
+ * const response = await app.post("/echo", { name: "Ada" });
62
+ * expect(response.status).toBe(200);
63
+ *
64
+ * await app.close();
65
+ *
66
+ * @example
67
+ * // every app route, with the fakes seeing what the controller did
68
+ * const app = await createTestHttpServer({
69
+ * loadAppModules: true,
70
+ * importModule: (file) => import(file),
71
+ * });
72
+ *
73
+ * await app.post("/contact", { email: "ada@example.test", message: "Hi" });
74
+ * mailFake.assertSent({ to: "support@example.test" });
75
+ */
76
+ async function createTestHttpServer(options = {}) {
77
+ const host = options.host ?? "127.0.0.1";
78
+ const sourceFile = `test-http-server-${++serverCounter}`;
79
+ if (options.loadAppModules) await loadAppModulesOnce(options.importModule);
80
+ if (options.routes) {
81
+ const register = options.routes;
82
+ await router.withSourceFile(sourceFile, () => register(router));
83
+ }
84
+ validateCspConfigAtBoot();
85
+ const server = startHttpServer();
86
+ try {
87
+ await registerHttpPlugins(server);
88
+ router.scan(server);
89
+ await server.listen({
90
+ port: 0,
91
+ host
92
+ });
93
+ } catch (error) {
94
+ router.removeRoutesBySourceFile(sourceFile);
95
+ await server.close().catch(() => void 0);
96
+ throw error;
97
+ }
98
+ const port = boundPort(server);
99
+ const url = `http://${host.includes(":") ? `[${host}]` : host}:${port}`;
100
+ const client = createTestRequestClient(url);
101
+ let closed = false;
102
+ return {
103
+ ...client,
104
+ url,
105
+ port,
106
+ server,
107
+ actingAs: (user) => actingAs(user, client),
108
+ close: async () => {
109
+ if (closed) return;
110
+ closed = true;
111
+ router.removeRoutesBySourceFile(sourceFile);
112
+ await server.close();
113
+ }
114
+ };
115
+ }
116
+
117
+ //#endregion
118
+ export { createTestHttpServer };
119
+ //# sourceMappingURL=test-http-server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-http-server.mjs","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-http-server.ts"],"sourcesContent":["/**\n * An HTTP server inside the test process, built the way production builds it.\n *\n * `startHttpTestServer()` runs one server for the whole run, in Vitest's main\n * process. This is the other shape: a server per test file (or per test) in the\n * worker itself, on an OS-assigned port. Two things follow from living in the\n * worker:\n *\n * - Requests run through the REAL stack: the Fastify instance `startHttpServer`\n * creates, every plugin `registerHttpPlugins` registers in production (rate\n * limit, CORS, multipart, cookies, ...), and the router's real route\n * registration. A test cannot pass against a request shape production never\n * produces, and the plugins' own behaviour (what the rate-limit store is\n * handed, how a cookie is parsed) is what runs.\n * - The test fakes see everything the request did: mail sent and jobs pushed\n * by the controller land in this process's `mailFake` / `queueFake`.\n */\nimport { router } from \"../router/router\";\nimport type { Router } from \"../router/router\";\nimport type { AppModuleImporter } from \"../loader/app-module-importer\";\nimport { setAppModuleImporter } from \"../loader/app-module-importer\";\nimport { validateCspConfigAtBoot } from \"../http/csp\";\nimport { registerHttpPlugins } from \"../http/plugins\";\nimport { type FastifyInstance, startHttpServer } from \"../http/server\";\nimport {\n type AuthenticatedTestClient,\n type TestAuthenticableUser,\n actingAs,\n} from \"./authenticated-test-client\";\nimport { type TestRequestClient, createTestRequestClient } from \"./test-helpers\";\n\nexport type CreateTestHttpServerOptions = {\n /**\n * Register routes for this server, exactly as a `routes.ts` would. They are\n * tagged with a source of their own and removed again by `close()`.\n */\n routes?: (router: Router) => unknown;\n /**\n * Load the application's modules (`routes.ts`, `main.ts`, events, ...) first,\n * so the server answers every app route. Needs `setupTest()` to have run in\n * this worker. Modules load once per process; later servers reuse them.\n */\n loadAppModules?: boolean;\n /**\n * How app modules are imported when `loadAppModules` is set. Pass\n * `(file) => import(file)` from the test file, as `setupTest()` takes it, so\n * app classes are the same ones the test imports.\n */\n importModule?: AppModuleImporter;\n /** Interface to bind. Defaults to `127.0.0.1`. */\n host?: string;\n};\n\nexport type TestHttpServer = TestRequestClient & {\n /** `http://127.0.0.1:<port>` */\n readonly url: string;\n /** The port the OS assigned. */\n readonly port: number;\n /** The Fastify instance, for `inject()` or anything else Fastify offers. */\n readonly server: FastifyInstance;\n /** A client for this server, signed in as `user` with a real access token. */\n actingAs(user: TestAuthenticableUser): Promise<AuthenticatedTestClient>;\n /** Stop listening and remove the routes `routes` registered. */\n close(): Promise<void>;\n};\n\nconst APP_MODULES_LOADED_KEY = Symbol.for(\"warlock.core.testAppModulesLoaded\");\n\ntype LoadedHolder = { [APP_MODULES_LOADED_KEY]?: Promise<void> };\n\nlet serverCounter = 0;\n\nasync function loadAppModulesOnce(importModule: AppModuleImporter | undefined): Promise<void> {\n const holder = globalThis as LoadedHolder;\n\n holder[APP_MODULES_LOADED_KEY] ??= (async () => {\n const { filesOrchestrator } = await import(\"../dev-server/files-orchestrator\");\n\n setAppModuleImporter(importModule);\n\n try {\n await filesOrchestrator.init();\n await filesOrchestrator.initializeAll();\n await filesOrchestrator.moduleLoader.loadAll();\n } finally {\n setAppModuleImporter(undefined);\n }\n })().catch((error: unknown) => {\n // A failed load may be retried by the next server.\n holder[APP_MODULES_LOADED_KEY] = undefined;\n throw error;\n });\n\n await holder[APP_MODULES_LOADED_KEY];\n}\n\nfunction boundPort(server: FastifyInstance): number {\n const address = server.server.address();\n\n if (address === null || typeof address === \"string\") {\n throw new Error(\"createTestHttpServer(): the server did not report a TCP port after listen().\");\n }\n\n return address.port;\n}\n\n/**\n * Start an in-process HTTP server with the production plugins, on a free port.\n *\n * @example\n * const app = await createTestHttpServer({\n * routes: (router) => router.post(\"/echo\", ({ request, response }) =>\n * response.success({ body: request.all() })),\n * });\n *\n * const response = await app.post(\"/echo\", { name: \"Ada\" });\n * expect(response.status).toBe(200);\n *\n * await app.close();\n *\n * @example\n * // every app route, with the fakes seeing what the controller did\n * const app = await createTestHttpServer({\n * loadAppModules: true,\n * importModule: (file) => import(file),\n * });\n *\n * await app.post(\"/contact\", { email: \"ada@example.test\", message: \"Hi\" });\n * mailFake.assertSent({ to: \"support@example.test\" });\n */\nexport async function createTestHttpServer(\n options: CreateTestHttpServerOptions = {},\n): Promise<TestHttpServer> {\n const host = options.host ?? \"127.0.0.1\";\n const sourceFile = `test-http-server-${++serverCounter}`;\n\n if (options.loadAppModules) {\n await loadAppModulesOnce(options.importModule);\n }\n\n if (options.routes) {\n const register = options.routes;\n\n await router.withSourceFile(sourceFile, () => register(router));\n }\n\n validateCspConfigAtBoot();\n\n const server = startHttpServer();\n\n try {\n await registerHttpPlugins(server);\n router.scan(server);\n await server.listen({ port: 0, host });\n } catch (error) {\n router.removeRoutesBySourceFile(sourceFile);\n await server.close().catch(() => undefined);\n throw error;\n }\n\n const port = boundPort(server);\n const url = `http://${host.includes(\":\") ? `[${host}]` : host}:${port}`;\n const client = createTestRequestClient(url);\n let closed = false;\n\n return {\n ...client,\n url,\n port,\n server,\n actingAs: (user) => actingAs(user, client),\n close: async () => {\n if (closed) return;\n\n closed = true;\n router.removeRoutesBySourceFile(sourceFile);\n await server.close();\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,MAAM,yBAAyB,OAAO,IAAI,mCAAmC;AAI7E,IAAI,gBAAgB;AAEpB,eAAe,mBAAmB,cAA4D;CAC5F,MAAM,SAAS;CAEf,OAAO,6BAA6B,YAAY;EAC9C,MAAM,EAAE,sBAAsB,MAAM,OAAO;EAE3C,qBAAqB,YAAY;EAEjC,IAAI;GACF,MAAM,kBAAkB,KAAK;GAC7B,MAAM,kBAAkB,cAAc;GACtC,MAAM,kBAAkB,aAAa,QAAQ;EAC/C,UAAU;GACR,qBAAqB,MAAS;EAChC;CACF,EAAC,CAAE,CAAC,CAAC,OAAO,UAAmB;EAE7B,OAAO,0BAA0B;EACjC,MAAM;CACR,CAAC;CAED,MAAM,OAAO;AACf;AAEA,SAAS,UAAU,QAAiC;CAClD,MAAM,UAAU,OAAO,OAAO,QAAQ;CAEtC,IAAI,YAAY,QAAQ,OAAO,YAAY,UACzC,MAAM,IAAI,MAAM,8EAA8E;CAGhG,OAAO,QAAQ;AACjB;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,eAAsB,qBACpB,UAAuC,CAAC,GACf;CACzB,MAAM,OAAO,QAAQ,QAAQ;CAC7B,MAAM,aAAa,oBAAoB,EAAE;CAEzC,IAAI,QAAQ,gBACV,MAAM,mBAAmB,QAAQ,YAAY;CAG/C,IAAI,QAAQ,QAAQ;EAClB,MAAM,WAAW,QAAQ;EAEzB,MAAM,OAAO,eAAe,kBAAkB,SAAS,MAAM,CAAC;CAChE;CAEA,wBAAwB;CAExB,MAAM,SAAS,gBAAgB;CAE/B,IAAI;EACF,MAAM,oBAAoB,MAAM;EAChC,OAAO,KAAK,MAAM;EAClB,MAAM,OAAO,OAAO;GAAE,MAAM;GAAG;EAAK,CAAC;CACvC,SAAS,OAAO;EACd,OAAO,yBAAyB,UAAU;EAC1C,MAAM,OAAO,MAAM,CAAC,CAAC,YAAY,MAAS;EAC1C,MAAM;CACR;CAEA,MAAM,OAAO,UAAU,MAAM;CAC7B,MAAM,MAAM,UAAU,KAAK,SAAS,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG;CACjE,MAAM,SAAS,wBAAwB,GAAG;CAC1C,IAAI,SAAS;CAEb,OAAO;EACL,GAAG;EACH;EACA;EACA;EACA,WAAW,SAAS,SAAS,MAAM,MAAM;EACzC,OAAO,YAAY;GACjB,IAAI,QAAQ;GAEZ,SAAS;GACT,OAAO,yBAAyB,UAAU;GAC1C,MAAM,OAAO,MAAM;EACrB;CACF;AACF"}
@@ -23,5 +23,5 @@ function getTestLifecycleRegistry() {
23
23
  }
24
24
 
25
25
  //#endregion
26
- export { getTestLifecycleRegistry };
26
+ export { TEST_LIFECYCLE_REGISTRY_KEY, getTestLifecycleRegistry };
27
27
  //# sourceMappingURL=test-lifecycle-state.mjs.map
@@ -1,8 +1,8 @@
1
+ import { TestFakesSelection } from "./fakes/test-fakes.mjs";
1
2
  import { AppModuleImporter } from "../loader/app-module-importer.mjs";
2
3
  import { TestConnectorsSelection } from "./test-connectors-selection.mjs";
3
-
4
4
  //#region ../../packages/core/src/tests/vitest-setup.d.ts
5
- type TestSetupOptions = {
5
+ export type TestSetupOptions = {
6
6
  /**
7
7
  * Which connectors to start.
8
8
  *
@@ -22,16 +22,26 @@ type TestSetupOptions = {
22
22
  * fails. Defaults to native import.
23
23
  */
24
24
  importModule?: AppModuleImporter;
25
+ /**
26
+ * Which test fakes to install once the connectors are up: mail, queue,
27
+ * cache, storage, clock and ids (see `installTestFakes`).
28
+ *
29
+ * Precedence is `explicit option > tests.fakes config > true`, so every fake
30
+ * is on unless the project or this call opts out. `false` keeps the real
31
+ * drivers; `{ cache: false }` keeps only the real cache. Teardown restores
32
+ * them.
33
+ */
34
+ fakes?: TestFakesSelection;
25
35
  };
26
36
  /**
27
37
  * Warn — once per process — that app modules are loaded outside Vitest's graph.
28
38
  */
29
- declare function warnMissingImportModule(importModule: AppModuleImporter | undefined): void;
39
+ export declare function warnMissingImportModule(importModule: AppModuleImporter | undefined): void;
30
40
  /**
31
41
  * Raised by the lifecycle itself, never by the runtime it manages — a conflict
32
42
  * between two calls, or a refusal to reuse a runtime that did not close.
33
43
  */
34
- declare class TestLifecycleError extends Error {
44
+ export declare class TestLifecycleError extends Error {
35
45
  constructor(message: string);
36
46
  }
37
47
  /**
@@ -61,7 +71,7 @@ declare class TestLifecycleError extends Error {
61
71
  * // bootstrap only — no connectors, whatever config says
62
72
  * await setupTest({ connectors: false });
63
73
  */
64
- declare function setupTest(options?: TestSetupOptions): Promise<void>;
74
+ export declare function setupTest(options?: TestSetupOptions): Promise<void>;
65
75
  /**
66
76
  * Shut the test runtime down and release the lifecycle.
67
77
  *
@@ -79,7 +89,7 @@ declare function setupTest(options?: TestSetupOptions): Promise<void>;
79
89
  * `connectorsManager.shutdown()`, so they never reach this function and never
80
90
  * poison anything. This lifecycle can only surface what that layer reports.
81
91
  */
82
- declare function teardownTest(): Promise<void>;
92
+ export declare function teardownTest(): Promise<void>;
83
93
  //#endregion
84
- export { TestLifecycleError, TestSetupOptions, setupTest, teardownTest, warnMissingImportModule };
94
+ export type { TestConnectorsSelection };
85
95
  //# sourceMappingURL=vitest-setup.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vitest-setup.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/vitest-setup.ts"],"mappings":";;;;KAmDY,gBAAA;EAAA;;;;;;;;EASV,UAAA,GAAa,uBAAA;EAUmB;AAQlC;;;;AAAmF;AAkBnF;;;EA1BE,YAAA,GAAe,iBAAiB;AAAA;;;;iBAQlB,uBAAA,CAAwB,YAA2C,EAA7B,iBAAiB;AAwDvE;;;;AAAA,cAtCa,kBAAA,SAA2B,KAAK;cACxB,OAAA;AAAA;;AAqC+C;AA0DpE;;;;AAA6C;;;;;;;;;;;;;;;;;;;;;iBA1DvB,SAAA,CAAU,OAAA,GAAU,gBAAA,GAAmB,OAAO;;;;;;;;;;;;;;;;;;iBA0D9C,YAAA,IAAgB,OAAO"}
1
+ {"version":3,"file":"vitest-setup.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/vitest-setup.ts"],"mappings":";;;;YAqDY;;;;;;;;;EASV,aAAa;;;;;;;;;;EAUb,eAAe;;;;;;;;;;EAUf,QAAQ;;;;;wBAQM,wBAAwB,cAAc;;;;;qBAkBzC,2BAA2B;EACtC,YAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAqCC,UAAU,UAAU,mBAAmB;;;;;;;;;;;;;;;;;;wBA0DvC,gBAAgB"}
@@ -6,6 +6,7 @@ import "../connectors/index.mjs";
6
6
  import { setAppModuleImporter } from "../loader/app-module-importer.mjs";
7
7
  import { filesOrchestrator } from "../dev-server/files-orchestrator.mjs";
8
8
  import { loadConfigFiles } from "../config/load-config-files.mjs";
9
+ import { installTestFakes, restoreTestFakes } from "./fakes/test-fakes.mjs";
9
10
  import { describeConnectorsSelection, isSameConnectorsSelection, normalizeConnectorNames, readRequestedConnectors, resolveEffectiveConnectors } from "./test-connectors-selection.mjs";
10
11
  import { getTestLifecycleRegistry } from "./test-lifecycle-state.mjs";
11
12
  import { DEFAULT_TEST_SETUP_TIMEOUT, describeExpiredSetup, readConfiguredSetupTimeout, scheduleRealTimeout } from "./test-setup-timeout.mjs";
@@ -103,7 +104,7 @@ async function setupTest(options) {
103
104
  }
104
105
  setAppModuleImporter(options?.importModule);
105
106
  try {
106
- return await startTestRuntime(requested);
107
+ return await startTestRuntime(requested, options?.fakes);
107
108
  } finally {
108
109
  setAppModuleImporter(void 0);
109
110
  }
@@ -214,7 +215,7 @@ async function awaitSetupWithinBound(attempt, bound, registry) {
214
215
  /**
215
216
  * Open a new setup attempt and publish it before it runs.
216
217
  */
217
- function startTestRuntime(requested) {
218
+ function startTestRuntime(requested, fakes) {
218
219
  const registry = getTestLifecycleRegistry();
219
220
  let publishEffectiveSelection = () => void 0;
220
221
  let failEffectiveSelection = () => void 0;
@@ -224,7 +225,7 @@ function startTestRuntime(requested) {
224
225
  });
225
226
  effectiveSelection.catch(() => void 0);
226
227
  const bound = armSetupBound(registry);
227
- const attempt = Promise.resolve().then(() => runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound));
228
+ const attempt = Promise.resolve().then(() => runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound, fakes));
228
229
  attempt.catch(() => void 0);
229
230
  const completion = awaitSetupWithinBound(attempt, bound, registry);
230
231
  registry.state = "starting";
@@ -242,7 +243,7 @@ function startTestRuntime(requested) {
242
243
  * unchanged. A cleanup failure is a secondary diagnostic and never replaces the
243
244
  * cause the caller needs to read.
244
245
  */
245
- async function runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound) {
246
+ async function runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound, fakes) {
246
247
  const registry = getTestLifecycleRegistry();
247
248
  try {
248
249
  Application.setEnvironment("test");
@@ -256,6 +257,7 @@ async function runTestRuntimeStartup(requested, publishEffectiveSelection, failE
256
257
  if (!bound.hasExpired()) registry.activeSelection = effectiveSelection;
257
258
  publishEffectiveSelection(effectiveSelection);
258
259
  await startSelectedConnectors(effectiveSelection);
260
+ await installTestFakes(fakes);
259
261
  if (!bound.hasExpired()) {
260
262
  registry.state = "ready";
261
263
  registry.setupAttempt = void 0;
@@ -292,6 +294,7 @@ async function startSelectedConnectors(selection) {
292
294
  * step is attempted independently.
293
295
  */
294
296
  async function unwindPartialStartup() {
297
+ await attemptCleanupStep("test fakes", () => restoreTestFakes());
295
298
  await attemptCleanupStep("application shutdown hooks", () => Application.runShutdownHooks());
296
299
  await attemptCleanupStep("connectors shutdown", () => connectorsManager.shutdown());
297
300
  }
@@ -312,6 +315,11 @@ async function runTestRuntimeShutdown() {
312
315
  const registry = getTestLifecycleRegistry();
313
316
  let shutdownSucceeded = false;
314
317
  try {
318
+ try {
319
+ await restoreTestFakes();
320
+ } catch (error) {
321
+ console.error("[vitest-setup] Restoring the test fakes did not complete:", error);
322
+ }
315
323
  await connectorsManager.shutdown();
316
324
  shutdownSucceeded = true;
317
325
  } finally {