@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
@@ -1,4 +1,4 @@
1
1
  import { LocaleDictionaryError, parseLocaleDictionary } from "./parse-locale-dictionary.mjs";
2
2
  import { registerGroupedTranslationKeys, registerLocaleDictionary, unregisterLocaleDictionary } from "./register-locale-dictionary.mjs";
3
3
 
4
- export { };
4
+ export { LocaleDictionaryError, parseLocaleDictionary, registerGroupedTranslationKeys, registerLocaleDictionary, unregisterLocaleDictionary };
@@ -1,18 +1,20 @@
1
1
  //#region ../../packages/core/src/localization/parse-locale-dictionary.d.ts
2
- type LocaleDictionaryEntries = Record<string, Record<string, string>>;
3
- type ParsedLocaleDictionary = {
2
+ export type LocaleDictionaryEntries = Record<string, Record<string, string>>;
3
+ export type ParsedLocaleDictionary = {
4
4
  sourceFile: string;
5
5
  group: string;
6
6
  entries: LocaleDictionaryEntries;
7
7
  };
8
8
  /** A source error that always names both the locale file and the offending JSON key. */
9
- declare class LocaleDictionaryError extends Error {
9
+ export declare class LocaleDictionaryError extends Error {
10
10
  readonly sourceFile: string;
11
11
  readonly key: string;
12
+ /** Stable Warlock error code; `warlock explain WL1007` prints the fix. */
13
+ readonly code = "WL1007";
12
14
  constructor(sourceFile: string, key: string, detail: string);
13
15
  }
14
16
  /** Parses one locale dictionary source without reading the filesystem or loading application code. */
15
- declare function parseLocaleDictionary(input: {
17
+ export declare function parseLocaleDictionary(input: {
16
18
  sourceFile: string;
17
19
  source: string;
18
20
  /**
@@ -24,5 +26,4 @@ declare function parseLocaleDictionary(input: {
24
26
  localeCodes?: readonly string[];
25
27
  }): ParsedLocaleDictionary;
26
28
  //#endregion
27
- export { LocaleDictionaryEntries, LocaleDictionaryError, ParsedLocaleDictionary, parseLocaleDictionary };
28
29
  //# sourceMappingURL=parse-locale-dictionary.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-locale-dictionary.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/localization/parse-locale-dictionary.ts"],"mappings":";KAAY,uBAAA,GAA0B,MAAM,SAAS,MAAA;AAAA,KAEzC,sBAAA;EACV,UAAA;EACA,KAAA;EACA,OAAA,EAAS,uBAAuB;AAAA;AAHlC;AAAA,cAca,qBAAA,SAA8B,KAAK;EAAA,SAE5B,UAAA;EAAA,SACA,GAAA;cADA,UAAA,UACA,GAAA,UAChB,MAAA;AAAA;;iBAsOY,qBAAA,CAAsB,KAAA;EACpC,UAAA;EACA,MAAA;EA5OW;;;;;EAkPX,gBAAA;EACA,WAAA;AAAA,IACE,sBAAsB"}
1
+ {"version":3,"file":"parse-locale-dictionary.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/localization/parse-locale-dictionary.ts"],"mappings":";YAAY,0BAA0B,eAAe;YAEzC;EACV;EACA;EACA,SAAS;;;qBAWE,8BAA8B;WAKvB;WACA;;WAJF;EAEhB,YACkB,oBACA,aAChB;;;wBAsOY,sBAAsB;EACpC;EACA;;;;;;EAMA;EACA;IACE"}
@@ -1,7 +1,7 @@
1
1
  //#region ../../packages/core/src/localization/parse-locale-dictionary.ts
2
2
  const SEGMENT = /^[A-Za-z_][A-Za-z0-9_-]*$/;
3
3
  const LOCALE_CODE = /^[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*$/;
4
- const FORBIDDEN_SEGMENTS = new Set([
4
+ const FORBIDDEN_SEGMENTS = /* @__PURE__ */ new Set([
5
5
  "__proto__",
6
6
  "prototype",
7
7
  "constructor"
@@ -12,6 +12,7 @@ var LocaleDictionaryError = class extends Error {
12
12
  super(`Cannot parse route locales in "${sourceFile}" at "${key}": ${detail}.`);
13
13
  this.sourceFile = sourceFile;
14
14
  this.key = key;
15
+ this.code = "WL1007";
15
16
  this.name = "LocaleDictionaryError";
16
17
  }
17
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parse-locale-dictionary.mjs","names":[],"sources":["../../../../../../../../packages/core/src/localization/parse-locale-dictionary.ts"],"sourcesContent":["export type LocaleDictionaryEntries = Record<string, Record<string, string>>;\n\nexport type ParsedLocaleDictionary = {\n sourceFile: string;\n group: string;\n entries: LocaleDictionaryEntries;\n};\n\ntype JsonValue = string | number | boolean | null | JsonObject | JsonValue[];\ntype JsonObject = Map<string, JsonValue>;\n\nconst SEGMENT = /^[A-Za-z_][A-Za-z0-9_-]*$/;\nconst LOCALE_CODE = /^[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*$/;\nconst FORBIDDEN_SEGMENTS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\n/** A source error that always names both the locale file and the offending JSON key. */\nexport class LocaleDictionaryError extends Error {\n public constructor(\n public readonly sourceFile: string,\n public readonly key: string,\n detail: string,\n ) {\n super(`Cannot parse route locales in \"${sourceFile}\" at \"${key}\": ${detail}.`);\n this.name = \"LocaleDictionaryError\";\n }\n}\n\nfunction fail(sourceFile: string, key: string, detail: string): never {\n throw new LocaleDictionaryError(sourceFile, key, detail);\n}\n\n/** A deliberately small JSON parser: unlike JSON.parse, it preserves duplicate property names. */\nclass StrictJsonParser {\n private offset = 0;\n\n public constructor(\n private readonly sourceFile: string,\n private readonly source: string,\n ) {}\n\n public parse(): JsonValue {\n if (this.source.charCodeAt(0) === 0xfeff) this.offset = 1;\n const value = this.value(\"$\");\n this.whitespace();\n if (this.offset !== this.source.length) this.invalid(\"$\", \"unexpected trailing JSON\");\n return value;\n }\n\n private value(key: string): JsonValue {\n this.whitespace();\n const character = this.source[this.offset];\n if (character === \"{\") return this.object(key);\n if (character === \"[\") return this.array(key);\n if (character === '\"') return this.string(key);\n if (this.source.startsWith(\"true\", this.offset)) return this.literal(\"true\", true);\n if (this.source.startsWith(\"false\", this.offset)) return this.literal(\"false\", false);\n if (this.source.startsWith(\"null\", this.offset)) return this.literal(\"null\", null);\n if (character === \"-\" || (character !== undefined && /[0-9]/.test(character)))\n return this.number(key);\n this.invalid(key, \"invalid JSON value\");\n }\n\n private object(key: string): JsonObject {\n this.offset++;\n this.whitespace();\n const object = new Map<string, JsonValue>();\n if (this.source[this.offset] === \"}\") {\n this.offset++;\n return object;\n }\n while (true) {\n this.whitespace();\n if (this.source[this.offset] !== '\"') this.invalid(key, \"object keys must be JSON strings\");\n const property = this.string(key);\n const propertyKey = `${key}.${property}`;\n if (object.has(property)) this.invalid(propertyKey, \"duplicate JSON property\");\n this.whitespace();\n if (this.source[this.offset] !== \":\")\n this.invalid(propertyKey, \"expected ':' after object key\");\n this.offset++;\n object.set(property, this.value(propertyKey));\n this.whitespace();\n const separator = this.source[this.offset];\n if (separator === \"}\") {\n this.offset++;\n return object;\n }\n if (separator !== \",\") this.invalid(key, \"expected ',' or '}' in object\");\n this.offset++;\n }\n }\n\n private array(key: string): JsonValue[] {\n this.offset++;\n this.whitespace();\n const values: JsonValue[] = [];\n if (this.source[this.offset] === \"]\") {\n this.offset++;\n return values;\n }\n while (true) {\n values.push(this.value(key));\n this.whitespace();\n const separator = this.source[this.offset];\n if (separator === \"]\") {\n this.offset++;\n return values;\n }\n if (separator !== \",\") this.invalid(key, \"expected ',' or ']' in array\");\n this.offset++;\n }\n }\n\n private string(key: string): string {\n const start = this.offset++;\n let escaped = false;\n while (this.offset < this.source.length) {\n const character = this.source[this.offset++];\n if (escaped) {\n escaped = false;\n continue;\n }\n if (character === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (character === '\"') {\n try {\n return JSON.parse(this.source.slice(start, this.offset)) as string;\n } catch {\n this.invalid(key, \"invalid JSON string\");\n }\n }\n if (character !== undefined && character.charCodeAt(0) < 0x20)\n this.invalid(key, \"unescaped control character in JSON string\");\n }\n this.invalid(key, \"unterminated JSON string\");\n }\n\n private number(key: string): number {\n const match = /-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/y;\n match.lastIndex = this.offset;\n const token = match.exec(this.source)?.[0];\n if (token === undefined) this.invalid(key, \"invalid JSON number\");\n this.offset += token.length;\n return Number(token);\n }\n\n private literal<T extends boolean | null>(written: string, value: T): T {\n this.offset += written.length;\n return value;\n }\n\n private whitespace(): void {\n while (this.offset < this.source.length) {\n const character = this.source[this.offset];\n if (character === undefined || !\" \\t\\n\\r\".includes(character)) return;\n this.offset++;\n }\n }\n\n private invalid(key: string, detail: string): never {\n fail(this.sourceFile, key, detail);\n }\n}\n\nfunction assertNamespaceSegment(sourceFile: string, segment: string, key: string): void {\n if (!SEGMENT.test(segment)) fail(sourceFile, key, \"segments must match [A-Za-z_][A-Za-z0-9_-]*\");\n if (FORBIDDEN_SEGMENTS.has(segment)) fail(sourceFile, key, \"segments cannot be reserved\");\n}\n\nfunction assertSegment(sourceFile: string, segment: string, key: string): void {\n if (segment.includes(\".\")) fail(sourceFile, key, \"JSON keys cannot contain '.'\");\n assertNamespaceSegment(sourceFile, segment, key);\n}\n\nfunction explicitGroup(sourceFile: string, value: string): string {\n if (value === \"\") fail(sourceFile, \"$group\", \"'$group' cannot be empty\");\n for (const segment of value.split(\".\")) {\n if (segment === \"\") fail(sourceFile, \"$group\", \"'$group' cannot contain empty segments\");\n assertNamespaceSegment(sourceFile, segment, \"$group\");\n }\n return value;\n}\n\nfunction defaultGroup(sourceFile: string, defaultNamespace: string | (() => string)): string {\n const namespace = typeof defaultNamespace === \"function\" ? defaultNamespace() : defaultNamespace;\n\n return namespace === \"\" ? \"\" : explicitGroup(sourceFile, namespace);\n}\n\nfunction isObject(value: JsonValue): value is JsonObject {\n return value instanceof Map;\n}\n\nfunction readLeaf(\n sourceFile: string,\n key: string,\n value: JsonObject,\n localeCodes: readonly string[] | undefined,\n): Record<string, string> {\n const locales = localeCodes === undefined ? undefined : new Set(localeCodes);\n const entry: Record<string, string> = Object.create(null) as Record<string, string>;\n for (const [locale, translation] of value) {\n if (!LOCALE_CODE.test(locale)) fail(sourceFile, `${key}.${locale}`, \"invalid locale code\");\n if (typeof translation !== \"string\")\n fail(sourceFile, `${key}.${locale}`, \"locale values must be strings\");\n if (locales !== undefined && !locales.has(locale))\n fail(sourceFile, `${key}.${locale}`, \"unknown locale code\");\n entry[locale] = translation;\n }\n if (localeCodes !== undefined)\n for (const locale of localeCodes)\n if (!(locale in entry)) fail(sourceFile, key, `missing locale code \"${locale}\"`);\n return entry;\n}\n\nfunction collectEntries(\n sourceFile: string,\n object: JsonObject,\n group: string,\n localeCodes: readonly string[] | undefined,\n entries: LocaleDictionaryEntries,\n nested: boolean,\n): void {\n if (nested && object.size === 0) fail(sourceFile, group, \"nested objects cannot be empty\");\n for (const [segment, value] of object) {\n const key = group === \"\" ? segment : `${group}.${segment}`;\n if (segment === \"$group\") fail(sourceFile, key, \"'$group' is only allowed at the root\");\n assertSegment(sourceFile, segment, key);\n if (!isObject(value)) fail(sourceFile, key, \"entries must be locale objects or nested objects\");\n if (value.has(\"$group\"))\n fail(sourceFile, `${key}.$group`, \"'$group' is only allowed at the root\");\n const values = [...value.values()];\n const hasString = values.some((item) => typeof item === \"string\");\n const allObjects = values.every(isObject);\n if (hasString) {\n if (!values.every((item) => typeof item === \"string\"))\n fail(sourceFile, key, \"cannot mix locale values with nested entries\");\n entries[key] = readLeaf(sourceFile, key, value, localeCodes);\n continue;\n }\n if (!allObjects) fail(sourceFile, key, \"cannot mix locale values with nested entries\");\n if (localeCodes !== undefined && [...value.keys()].some((child) => localeCodes.includes(child)))\n fail(sourceFile, key, \"cannot mix locale codes with nested entries\");\n collectEntries(sourceFile, value, key, localeCodes, entries, true);\n }\n}\n\n/** Parses one locale dictionary source without reading the filesystem or loading application code. */\nexport function parseLocaleDictionary(input: {\n sourceFile: string;\n source: string;\n /**\n * The group used when the file declares no `$group`. A function is called\n * only in that case, so a namespace that cannot be derived (e.g. from a\n * folder name) never fails a file that names its own `$group`.\n */\n defaultNamespace: string | (() => string);\n localeCodes?: readonly string[];\n}): ParsedLocaleDictionary {\n const { sourceFile, source, defaultNamespace, localeCodes } = input;\n const parsed = new StrictJsonParser(sourceFile, source).parse();\n if (!isObject(parsed)) fail(sourceFile, \"$\", \"root JSON value must be an object\");\n const groupValue = parsed.get(\"$group\");\n if (groupValue !== undefined && typeof groupValue !== \"string\")\n fail(sourceFile, \"$group\", \"'$group' must be a string\");\n const group =\n groupValue === undefined\n ? defaultGroup(sourceFile, defaultNamespace)\n : explicitGroup(sourceFile, groupValue);\n const entries: LocaleDictionaryEntries = Object.create(null) as LocaleDictionaryEntries;\n const rootEntries = new Map(parsed);\n rootEntries.delete(\"$group\");\n collectEntries(sourceFile, rootEntries, group, localeCodes, entries, false);\n return { sourceFile, group, entries };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-locale-dictionary.mjs","names":[],"sources":["../../../../../../../../packages/core/src/localization/parse-locale-dictionary.ts"],"sourcesContent":["export type LocaleDictionaryEntries = Record<string, Record<string, string>>;\n\nexport type ParsedLocaleDictionary = {\n sourceFile: string;\n group: string;\n entries: LocaleDictionaryEntries;\n};\n\ntype JsonValue = string | number | boolean | null | JsonObject | JsonValue[];\ntype JsonObject = Map<string, JsonValue>;\n\nconst SEGMENT = /^[A-Za-z_][A-Za-z0-9_-]*$/;\nconst LOCALE_CODE = /^[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*$/;\nconst FORBIDDEN_SEGMENTS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\n/** A source error that always names both the locale file and the offending JSON key. */\nexport class LocaleDictionaryError extends Error {\n /** Stable Warlock error code; `warlock explain WL1007` prints the fix. */\n public readonly code = \"WL1007\";\n\n public constructor(\n public readonly sourceFile: string,\n public readonly key: string,\n detail: string,\n ) {\n super(`Cannot parse route locales in \"${sourceFile}\" at \"${key}\": ${detail}.`);\n this.name = \"LocaleDictionaryError\";\n }\n}\n\nfunction fail(sourceFile: string, key: string, detail: string): never {\n throw new LocaleDictionaryError(sourceFile, key, detail);\n}\n\n/** A deliberately small JSON parser: unlike JSON.parse, it preserves duplicate property names. */\nclass StrictJsonParser {\n private offset = 0;\n\n public constructor(\n private readonly sourceFile: string,\n private readonly source: string,\n ) {}\n\n public parse(): JsonValue {\n if (this.source.charCodeAt(0) === 0xfeff) this.offset = 1;\n const value = this.value(\"$\");\n this.whitespace();\n if (this.offset !== this.source.length) this.invalid(\"$\", \"unexpected trailing JSON\");\n return value;\n }\n\n private value(key: string): JsonValue {\n this.whitespace();\n const character = this.source[this.offset];\n if (character === \"{\") return this.object(key);\n if (character === \"[\") return this.array(key);\n if (character === '\"') return this.string(key);\n if (this.source.startsWith(\"true\", this.offset)) return this.literal(\"true\", true);\n if (this.source.startsWith(\"false\", this.offset)) return this.literal(\"false\", false);\n if (this.source.startsWith(\"null\", this.offset)) return this.literal(\"null\", null);\n if (character === \"-\" || (character !== undefined && /[0-9]/.test(character)))\n return this.number(key);\n this.invalid(key, \"invalid JSON value\");\n }\n\n private object(key: string): JsonObject {\n this.offset++;\n this.whitespace();\n const object = new Map<string, JsonValue>();\n if (this.source[this.offset] === \"}\") {\n this.offset++;\n return object;\n }\n while (true) {\n this.whitespace();\n if (this.source[this.offset] !== '\"') this.invalid(key, \"object keys must be JSON strings\");\n const property = this.string(key);\n const propertyKey = `${key}.${property}`;\n if (object.has(property)) this.invalid(propertyKey, \"duplicate JSON property\");\n this.whitespace();\n if (this.source[this.offset] !== \":\")\n this.invalid(propertyKey, \"expected ':' after object key\");\n this.offset++;\n object.set(property, this.value(propertyKey));\n this.whitespace();\n const separator = this.source[this.offset];\n if (separator === \"}\") {\n this.offset++;\n return object;\n }\n if (separator !== \",\") this.invalid(key, \"expected ',' or '}' in object\");\n this.offset++;\n }\n }\n\n private array(key: string): JsonValue[] {\n this.offset++;\n this.whitespace();\n const values: JsonValue[] = [];\n if (this.source[this.offset] === \"]\") {\n this.offset++;\n return values;\n }\n while (true) {\n values.push(this.value(key));\n this.whitespace();\n const separator = this.source[this.offset];\n if (separator === \"]\") {\n this.offset++;\n return values;\n }\n if (separator !== \",\") this.invalid(key, \"expected ',' or ']' in array\");\n this.offset++;\n }\n }\n\n private string(key: string): string {\n const start = this.offset++;\n let escaped = false;\n while (this.offset < this.source.length) {\n const character = this.source[this.offset++];\n if (escaped) {\n escaped = false;\n continue;\n }\n if (character === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (character === '\"') {\n try {\n return JSON.parse(this.source.slice(start, this.offset)) as string;\n } catch {\n this.invalid(key, \"invalid JSON string\");\n }\n }\n if (character !== undefined && character.charCodeAt(0) < 0x20)\n this.invalid(key, \"unescaped control character in JSON string\");\n }\n this.invalid(key, \"unterminated JSON string\");\n }\n\n private number(key: string): number {\n const match = /-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/y;\n match.lastIndex = this.offset;\n const token = match.exec(this.source)?.[0];\n if (token === undefined) this.invalid(key, \"invalid JSON number\");\n this.offset += token.length;\n return Number(token);\n }\n\n private literal<T extends boolean | null>(written: string, value: T): T {\n this.offset += written.length;\n return value;\n }\n\n private whitespace(): void {\n while (this.offset < this.source.length) {\n const character = this.source[this.offset];\n if (character === undefined || !\" \\t\\n\\r\".includes(character)) return;\n this.offset++;\n }\n }\n\n private invalid(key: string, detail: string): never {\n fail(this.sourceFile, key, detail);\n }\n}\n\nfunction assertNamespaceSegment(sourceFile: string, segment: string, key: string): void {\n if (!SEGMENT.test(segment)) fail(sourceFile, key, \"segments must match [A-Za-z_][A-Za-z0-9_-]*\");\n if (FORBIDDEN_SEGMENTS.has(segment)) fail(sourceFile, key, \"segments cannot be reserved\");\n}\n\nfunction assertSegment(sourceFile: string, segment: string, key: string): void {\n if (segment.includes(\".\")) fail(sourceFile, key, \"JSON keys cannot contain '.'\");\n assertNamespaceSegment(sourceFile, segment, key);\n}\n\nfunction explicitGroup(sourceFile: string, value: string): string {\n if (value === \"\") fail(sourceFile, \"$group\", \"'$group' cannot be empty\");\n for (const segment of value.split(\".\")) {\n if (segment === \"\") fail(sourceFile, \"$group\", \"'$group' cannot contain empty segments\");\n assertNamespaceSegment(sourceFile, segment, \"$group\");\n }\n return value;\n}\n\nfunction defaultGroup(sourceFile: string, defaultNamespace: string | (() => string)): string {\n const namespace = typeof defaultNamespace === \"function\" ? defaultNamespace() : defaultNamespace;\n\n return namespace === \"\" ? \"\" : explicitGroup(sourceFile, namespace);\n}\n\nfunction isObject(value: JsonValue): value is JsonObject {\n return value instanceof Map;\n}\n\nfunction readLeaf(\n sourceFile: string,\n key: string,\n value: JsonObject,\n localeCodes: readonly string[] | undefined,\n): Record<string, string> {\n const locales = localeCodes === undefined ? undefined : new Set(localeCodes);\n const entry: Record<string, string> = Object.create(null) as Record<string, string>;\n for (const [locale, translation] of value) {\n if (!LOCALE_CODE.test(locale)) fail(sourceFile, `${key}.${locale}`, \"invalid locale code\");\n if (typeof translation !== \"string\")\n fail(sourceFile, `${key}.${locale}`, \"locale values must be strings\");\n if (locales !== undefined && !locales.has(locale))\n fail(sourceFile, `${key}.${locale}`, \"unknown locale code\");\n entry[locale] = translation;\n }\n if (localeCodes !== undefined)\n for (const locale of localeCodes)\n if (!(locale in entry)) fail(sourceFile, key, `missing locale code \"${locale}\"`);\n return entry;\n}\n\nfunction collectEntries(\n sourceFile: string,\n object: JsonObject,\n group: string,\n localeCodes: readonly string[] | undefined,\n entries: LocaleDictionaryEntries,\n nested: boolean,\n): void {\n if (nested && object.size === 0) fail(sourceFile, group, \"nested objects cannot be empty\");\n for (const [segment, value] of object) {\n const key = group === \"\" ? segment : `${group}.${segment}`;\n if (segment === \"$group\") fail(sourceFile, key, \"'$group' is only allowed at the root\");\n assertSegment(sourceFile, segment, key);\n if (!isObject(value)) fail(sourceFile, key, \"entries must be locale objects or nested objects\");\n if (value.has(\"$group\"))\n fail(sourceFile, `${key}.$group`, \"'$group' is only allowed at the root\");\n const values = [...value.values()];\n const hasString = values.some((item) => typeof item === \"string\");\n const allObjects = values.every(isObject);\n if (hasString) {\n if (!values.every((item) => typeof item === \"string\"))\n fail(sourceFile, key, \"cannot mix locale values with nested entries\");\n entries[key] = readLeaf(sourceFile, key, value, localeCodes);\n continue;\n }\n if (!allObjects) fail(sourceFile, key, \"cannot mix locale values with nested entries\");\n if (localeCodes !== undefined && [...value.keys()].some((child) => localeCodes.includes(child)))\n fail(sourceFile, key, \"cannot mix locale codes with nested entries\");\n collectEntries(sourceFile, value, key, localeCodes, entries, true);\n }\n}\n\n/** Parses one locale dictionary source without reading the filesystem or loading application code. */\nexport function parseLocaleDictionary(input: {\n sourceFile: string;\n source: string;\n /**\n * The group used when the file declares no `$group`. A function is called\n * only in that case, so a namespace that cannot be derived (e.g. from a\n * folder name) never fails a file that names its own `$group`.\n */\n defaultNamespace: string | (() => string);\n localeCodes?: readonly string[];\n}): ParsedLocaleDictionary {\n const { sourceFile, source, defaultNamespace, localeCodes } = input;\n const parsed = new StrictJsonParser(sourceFile, source).parse();\n if (!isObject(parsed)) fail(sourceFile, \"$\", \"root JSON value must be an object\");\n const groupValue = parsed.get(\"$group\");\n if (groupValue !== undefined && typeof groupValue !== \"string\")\n fail(sourceFile, \"$group\", \"'$group' must be a string\");\n const group =\n groupValue === undefined\n ? defaultGroup(sourceFile, defaultNamespace)\n : explicitGroup(sourceFile, groupValue);\n const entries: LocaleDictionaryEntries = Object.create(null) as LocaleDictionaryEntries;\n const rootEntries = new Map(parsed);\n rootEntries.delete(\"$group\");\n collectEntries(sourceFile, rootEntries, group, localeCodes, entries, false);\n return { sourceFile, group, entries };\n}\n"],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  //#region ../../packages/core/src/localization/register-locale-dictionary.d.ts
2
- declare function registerGroupedTranslationKeys(sourceFile: string, keys: readonly string[]): void;
2
+ export declare function registerGroupedTranslationKeys(sourceFile: string, keys: readonly string[]): void;
3
3
  /** Undo JSON entries during HMR while preserving unrelated global translations. */
4
- declare function unregisterLocaleDictionary(sourceFile: string): void;
5
- declare function registerLocaleDictionary(input: {
4
+ export declare function unregisterLocaleDictionary(sourceFile: string): void;
5
+ export declare function registerLocaleDictionary(input: {
6
6
  sourceFile: string;
7
7
  source: string;
8
8
  defaultNamespace: string;
9
9
  }): () => void;
10
10
  //#endregion
11
- export { registerGroupedTranslationKeys, registerLocaleDictionary, unregisterLocaleDictionary };
12
11
  //# sourceMappingURL=register-locale-dictionary.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-locale-dictionary.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/localization/register-locale-dictionary.ts"],"mappings":";iBAwBgB,8BAAA,CAA+B,UAAA,UAAoB,IAAuB;AAA1F;AAAA,iBAKgB,0BAAA,CAA2B,UAAkB;AAAA,iBAyB7C,wBAAA,CAAyB,KAAA;EACvC,UAAA;EACA,MAAA;EACA,gBAAA;AAAA"}
1
+ {"version":3,"file":"register-locale-dictionary.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/localization/register-locale-dictionary.ts"],"mappings":";wBAwBgB,+BAA+B,oBAAoB;;wBAKnD,2BAA2B;wBAyB3B,yBAAyB;EACvC;EACA;EACA"}
@@ -1,5 +1,5 @@
1
1
  import { parseLocaleDictionary } from "./parse-locale-dictionary.mjs";
2
- import config from "@mongez/config";
2
+ import baseConfig from "@mongez/config";
3
3
  import { getTranslationsList, groupedTranslations, setTranslationsList } from "@mongez/localization";
4
4
 
5
5
  //#region ../../packages/core/src/localization/register-locale-dictionary.ts
@@ -42,7 +42,7 @@ function unregisterLocaleDictionary(sourceFile) {
42
42
  }
43
43
  function registerLocaleDictionary(input) {
44
44
  unregisterLocaleDictionary(input.sourceFile);
45
- const localeCodes = config.get("app.localeCodes");
45
+ const localeCodes = baseConfig.get("app.localeCodes");
46
46
  const parsed = parseLocaleDictionary({
47
47
  ...input,
48
48
  localeCodes: Array.isArray(localeCodes) ? localeCodes : void 0
@@ -1 +1 @@
1
- {"version":3,"file":"register-locale-dictionary.mjs","names":[],"sources":["../../../../../../../../packages/core/src/localization/register-locale-dictionary.ts"],"sourcesContent":["import config from \"@mongez/config\";\nimport {\n getTranslationsList,\n groupedTranslations,\n setTranslationsList,\n} from \"@mongez/localization\";\nimport { parseLocaleDictionary } from \"./parse-locale-dictionary\";\n\ntype Owner = { sourceFile: string; kind: \"json\" | \"ts\" };\nconst owners = new Map<string, Owner>();\nconst keysBySource = new Map<string, string[]>();\n\nfunction claim(sourceFile: string, kind: Owner[\"kind\"], keys: readonly string[]): void {\n for (const key of keys) {\n const owner = owners.get(key);\n if (owner && owner.sourceFile !== sourceFile)\n throw new Error(\n `Translation key \"${key}\" is owned by both \"${owner.sourceFile}\" and \"${sourceFile}\".`,\n );\n }\n for (const key of keys) owners.set(key, { sourceFile, kind });\n keysBySource.set(sourceFile, [...keys]);\n}\n\nexport function registerGroupedTranslationKeys(sourceFile: string, keys: readonly string[]): void {\n claim(sourceFile, \"ts\", keys);\n}\n\n/** Undo JSON entries during HMR while preserving unrelated global translations. */\nexport function unregisterLocaleDictionary(sourceFile: string): void {\n const keys = keysBySource.get(sourceFile) ?? [];\n keysBySource.delete(sourceFile);\n for (const key of keys) owners.delete(key);\n const translations = getTranslationsList();\n for (const key of keys)\n for (const locale of Object.keys(translations)) {\n const segments = key.split(\".\");\n let target: Record<string, unknown> | undefined = translations[locale] as Record<\n string,\n unknown\n >;\n for (const segment of segments.slice(0, -1)) {\n const next = target?.[segment];\n if (!next || typeof next !== \"object\") {\n target = undefined;\n break;\n }\n target = next as Record<string, unknown>;\n }\n if (target) delete target[segments.at(-1)!];\n }\n setTranslationsList(translations);\n}\n\nexport function registerLocaleDictionary(input: {\n sourceFile: string;\n source: string;\n defaultNamespace: string;\n}): () => void {\n unregisterLocaleDictionary(input.sourceFile);\n const localeCodes = config.get(\"app.localeCodes\");\n const parsed = parseLocaleDictionary({\n ...input,\n localeCodes: Array.isArray(localeCodes) ? localeCodes : undefined,\n });\n const keys = Object.keys(parsed.entries);\n claim(input.sourceFile, \"json\", keys);\n groupedTranslations(parsed.entries);\n return () => unregisterLocaleDictionary(input.sourceFile);\n}\n"],"mappings":";;;;;AASA,MAAM,yBAAS,IAAI,IAAmB;AACtC,MAAM,+BAAe,IAAI,IAAsB;AAE/C,SAAS,MAAM,YAAoB,MAAqB,MAA+B;CACrF,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QAAQ,OAAO,IAAI,GAAG;EAC5B,IAAI,SAAS,MAAM,eAAe,YAChC,MAAM,IAAI,MACR,oBAAoB,IAAI,sBAAsB,MAAM,WAAW,SAAS,WAAW,GACrF;CACJ;CACA,KAAK,MAAM,OAAO,MAAM,OAAO,IAAI,KAAK;EAAE;EAAY;CAAK,CAAC;CAC5D,aAAa,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC;AACxC;AAEA,SAAgB,+BAA+B,YAAoB,MAA+B;CAChG,MAAM,YAAY,MAAM,IAAI;AAC9B;;AAGA,SAAgB,2BAA2B,YAA0B;CACnE,MAAM,OAAO,aAAa,IAAI,UAAU,KAAK,CAAC;CAC9C,aAAa,OAAO,UAAU;CAC9B,KAAK,MAAM,OAAO,MAAM,OAAO,OAAO,GAAG;CACzC,MAAM,eAAe,oBAAoB;CACzC,KAAK,MAAM,OAAO,MAChB,KAAK,MAAM,UAAU,OAAO,KAAK,YAAY,GAAG;EAC9C,MAAM,WAAW,IAAI,MAAM,GAAG;EAC9B,IAAI,SAA8C,aAAa;EAI/D,KAAK,MAAM,WAAW,SAAS,MAAM,GAAG,EAAE,GAAG;GAC3C,MAAM,OAAO,SAAS;GACtB,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;IACrC,SAAS;IACT;GACF;GACA,SAAS;EACX;EACA,IAAI,QAAQ,OAAO,OAAO,SAAS,GAAG,EAAE;CAC1C;CACF,oBAAoB,YAAY;AAClC;AAEA,SAAgB,yBAAyB,OAI1B;CACb,2BAA2B,MAAM,UAAU;CAC3C,MAAM,cAAc,OAAO,IAAI,iBAAiB;CAChD,MAAM,SAAS,sBAAsB;EACnC,GAAG;EACH,aAAa,MAAM,QAAQ,WAAW,IAAI,cAAc;CAC1D,CAAC;CACD,MAAM,OAAO,OAAO,KAAK,OAAO,OAAO;CACvC,MAAM,MAAM,YAAY,QAAQ,IAAI;CACpC,oBAAoB,OAAO,OAAO;CAClC,aAAa,2BAA2B,MAAM,UAAU;AAC1D"}
1
+ {"version":3,"file":"register-locale-dictionary.mjs","names":["config"],"sources":["../../../../../../../../packages/core/src/localization/register-locale-dictionary.ts"],"sourcesContent":["import config from \"@mongez/config\";\nimport {\n getTranslationsList,\n groupedTranslations,\n setTranslationsList,\n} from \"@mongez/localization\";\nimport { parseLocaleDictionary } from \"./parse-locale-dictionary\";\n\ntype Owner = { sourceFile: string; kind: \"json\" | \"ts\" };\nconst owners = new Map<string, Owner>();\nconst keysBySource = new Map<string, string[]>();\n\nfunction claim(sourceFile: string, kind: Owner[\"kind\"], keys: readonly string[]): void {\n for (const key of keys) {\n const owner = owners.get(key);\n if (owner && owner.sourceFile !== sourceFile)\n throw new Error(\n `Translation key \"${key}\" is owned by both \"${owner.sourceFile}\" and \"${sourceFile}\".`,\n );\n }\n for (const key of keys) owners.set(key, { sourceFile, kind });\n keysBySource.set(sourceFile, [...keys]);\n}\n\nexport function registerGroupedTranslationKeys(sourceFile: string, keys: readonly string[]): void {\n claim(sourceFile, \"ts\", keys);\n}\n\n/** Undo JSON entries during HMR while preserving unrelated global translations. */\nexport function unregisterLocaleDictionary(sourceFile: string): void {\n const keys = keysBySource.get(sourceFile) ?? [];\n keysBySource.delete(sourceFile);\n for (const key of keys) owners.delete(key);\n const translations = getTranslationsList();\n for (const key of keys)\n for (const locale of Object.keys(translations)) {\n const segments = key.split(\".\");\n let target: Record<string, unknown> | undefined = translations[locale] as Record<\n string,\n unknown\n >;\n for (const segment of segments.slice(0, -1)) {\n const next = target?.[segment];\n if (!next || typeof next !== \"object\") {\n target = undefined;\n break;\n }\n target = next as Record<string, unknown>;\n }\n if (target) delete target[segments.at(-1)!];\n }\n setTranslationsList(translations);\n}\n\nexport function registerLocaleDictionary(input: {\n sourceFile: string;\n source: string;\n defaultNamespace: string;\n}): () => void {\n unregisterLocaleDictionary(input.sourceFile);\n const localeCodes = config.get(\"app.localeCodes\");\n const parsed = parseLocaleDictionary({\n ...input,\n localeCodes: Array.isArray(localeCodes) ? localeCodes : undefined,\n });\n const keys = Object.keys(parsed.entries);\n claim(input.sourceFile, \"json\", keys);\n groupedTranslations(parsed.entries);\n return () => unregisterLocaleDictionary(input.sourceFile);\n}\n"],"mappings":";;;;;AASA,MAAM,yBAAS,IAAI,IAAmB;AACtC,MAAM,+BAAe,IAAI,IAAsB;AAE/C,SAAS,MAAM,YAAoB,MAAqB,MAA+B;CACrF,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QAAQ,OAAO,IAAI,GAAG;EAC5B,IAAI,SAAS,MAAM,eAAe,YAChC,MAAM,IAAI,MACR,oBAAoB,IAAI,sBAAsB,MAAM,WAAW,SAAS,WAAW,GACrF;CACJ;CACA,KAAK,MAAM,OAAO,MAAM,OAAO,IAAI,KAAK;EAAE;EAAY;CAAK,CAAC;CAC5D,aAAa,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC;AACxC;AAEA,SAAgB,+BAA+B,YAAoB,MAA+B;CAChG,MAAM,YAAY,MAAM,IAAI;AAC9B;;AAGA,SAAgB,2BAA2B,YAA0B;CACnE,MAAM,OAAO,aAAa,IAAI,UAAU,KAAK,CAAC;CAC9C,aAAa,OAAO,UAAU;CAC9B,KAAK,MAAM,OAAO,MAAM,OAAO,OAAO,GAAG;CACzC,MAAM,eAAe,oBAAoB;CACzC,KAAK,MAAM,OAAO,MAChB,KAAK,MAAM,UAAU,OAAO,KAAK,YAAY,GAAG;EAC9C,MAAM,WAAW,IAAI,MAAM,GAAG;EAC9B,IAAI,SAA8C,aAAa;EAI/D,KAAK,MAAM,WAAW,SAAS,MAAM,GAAG,EAAE,GAAG;GAC3C,MAAM,OAAO,SAAS;GACtB,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;IACrC,SAAS;IACT;GACF;GACA,SAAS;EACX;EACA,IAAI,QAAQ,OAAO,OAAO,SAAS,GAAG,EAAE;CAC1C;CACF,oBAAoB,YAAY;AAClC;AAEA,SAAgB,yBAAyB,OAI1B;CACb,2BAA2B,MAAM,UAAU;CAC3C,MAAM,cAAcA,WAAO,IAAI,iBAAiB;CAChD,MAAM,SAAS,sBAAsB;EACnC,GAAG;EACH,aAAa,MAAM,QAAQ,WAAW,IAAI,cAAc;CAC1D,CAAC;CACD,MAAM,OAAO,OAAO,KAAK,OAAO,OAAO;CACvC,MAAM,MAAM,YAAY,QAAQ,IAAI;CACpC,oBAAoB,OAAO,OAAO;CAClC,aAAa,2BAA2B,MAAM,UAAU;AAC1D"}
@@ -19,7 +19,6 @@
19
19
  * Skipped when a terminal channel exists, so a configured `ConsoleLog` is
20
20
  * never doubled.
21
21
  */
22
- declare function ensureFatalIsVisible(error: unknown): void;
22
+ export declare function ensureFatalIsVisible(error: unknown): void;
23
23
  //#endregion
24
- export { ensureFatalIsVisible };
25
24
  //# sourceMappingURL=fatal-visibility.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fatal-visibility.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/logger/fatal-visibility.ts"],"mappings":";;AAsBA;;;;AAAmD;;;;;;;;;;;;;;;iBAAnC,oBAAA,CAAqB,KAAc"}
1
+ {"version":3,"file":"fatal-visibility.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/logger/fatal-visibility.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;wBAsBgB,qBAAqB"}
@@ -1,3 +1,4 @@
1
1
  import { ensureFatalIsVisible } from "./fatal-visibility.mjs";
2
2
  import { LogConfigurations } from "./types.mjs";
3
- import { setLogConfigurations } from "./logger.mjs";
3
+ import { setLogConfigurations } from "./logger.mjs";
4
+ export { LogConfigurations, ensureFatalIsVisible, setLogConfigurations };
@@ -1,4 +1,4 @@
1
1
  import { ensureFatalIsVisible } from "./fatal-visibility.mjs";
2
2
  import { setLogConfigurations } from "./logger.mjs";
3
3
 
4
- export { };
4
+ export { ensureFatalIsVisible, setLogConfigurations };
@@ -1,7 +1,5 @@
1
1
  import { LogConfigurations } from "./types.mjs";
2
-
3
2
  //#region ../../packages/core/src/logger/logger.d.ts
4
- declare function setLogConfigurations(options: LogConfigurations): void;
3
+ export declare function setLogConfigurations(options: LogConfigurations): void;
5
4
  //#endregion
6
- export { setLogConfigurations };
7
5
  //# sourceMappingURL=logger.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/logger/logger.ts"],"mappings":";;;iBAKgB,oBAAA,CAAqB,OAA0B,EAAjB,iBAAiB"}
1
+ {"version":3,"file":"logger.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/logger/logger.ts"],"mappings":";;wBAKgB,qBAAqB,SAAS"}
@@ -1,5 +1,4 @@
1
1
  import { LogChannel } from "@warlock.js/logger";
2
-
3
2
  //#region ../../packages/core/src/logger/types.d.ts
4
3
  type EnvironmentConfigurations = {
5
4
  /**
@@ -13,7 +12,7 @@ type EnvironmentConfigurations = {
13
12
  */
14
13
  enabled?: boolean;
15
14
  };
16
- type LogConfigurations = {
15
+ export type LogConfigurations = {
17
16
  /**
18
17
  * Channels list
19
18
  * It will be used in all environments
@@ -38,5 +37,5 @@ type LogConfigurations = {
38
37
  production?: EnvironmentConfigurations;
39
38
  };
40
39
  //#endregion
41
- export { LogConfigurations };
40
+ export {};
42
41
  //# sourceMappingURL=types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/logger/types.ts"],"mappings":";;;KAEK,yBAAA;;AAFgD;;EAMnD,QAAA,EAAU,UAAU;EAAA;;;;;EAMpB,OAAA;AAAA;AAAA,KAEU,iBAAA;;;;;EAKV,QAAA,GAAW,UAAA;EAiB2B;;;EAbtC,OAAA;EAAA;;;;EAKA,WAAA,GAAc,yBAAA;EAQd;;;EAJA,IAAA,GAAO,yBAAA;;;;EAIP,UAAA,GAAa,yBAAA;AAAA"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/logger/types.ts"],"mappings":";;KAEK;;;;EAIH,UAAU;;;;;;EAMV;;YAEU;;;;;EAKV,WAAW;;;;EAIX;;;;;EAKA,cAAc;;;;EAId,OAAO;;;;EAIP,aAAa"}
@@ -1,5 +1,4 @@
1
1
  import { MailConfigurations, MailMode, MailersConfig } from "./types.mjs";
2
-
3
2
  //#region ../../packages/core/src/mail/config.d.ts
4
3
  /**
5
4
  * Set the mail mode
@@ -19,23 +18,34 @@ import { MailConfigurations, MailMode, MailersConfig } from "./types.mjs";
19
18
  * setMailMode("development");
20
19
  * ```
21
20
  */
22
- declare function setMailMode(mode: MailMode): void;
21
+ export declare function setMailMode(mode: MailMode): void;
22
+ /**
23
+ * The mode set with {@link setMailMode}, or `undefined` when the mode is
24
+ * derived from the environment.
25
+ */
26
+ export declare function getExplicitMailMode(): MailMode | undefined;
27
+ /**
28
+ * Forget a mode set with {@link setMailMode}, so the mode is derived from the
29
+ * environment again. Unlike {@link resetMailConfig}, the configured mailers
30
+ * are kept.
31
+ */
32
+ export declare function resetMailMode(): void;
23
33
  /**
24
34
  * Get the current mail mode
25
35
  */
26
- declare function getMailMode(): MailMode;
36
+ export declare function getMailMode(): MailMode;
27
37
  /**
28
38
  * Check if in production mode
29
39
  */
30
- declare function isProductionMode(): boolean;
40
+ export declare function isProductionMode(): boolean;
31
41
  /**
32
42
  * Check if in development mode
33
43
  */
34
- declare function isDevelopmentMode(): boolean;
44
+ export declare function isDevelopmentMode(): boolean;
35
45
  /**
36
46
  * Check if in test mode
37
47
  */
38
- declare function isTestMode(): boolean;
48
+ export declare function isTestMode(): boolean;
39
49
  /**
40
50
  * Set mail configurations
41
51
  *
@@ -61,24 +71,23 @@ declare function isTestMode(): boolean;
61
71
  * });
62
72
  * ```
63
73
  */
64
- declare function setMailConfigurations(config: MailConfigurations | MailersConfig): void;
65
- declare function getDefaultMailConfig(): MailConfigurations;
74
+ export declare function setMailConfigurations(config: MailConfigurations | MailersConfig): void;
75
+ export declare function getDefaultMailConfig(): MailConfigurations;
66
76
  /**
67
77
  * Get a named mailer configuration
68
78
  */
69
- declare function getMailerConfig(name: string): MailConfigurations | undefined;
79
+ export declare function getMailerConfig(name: string): MailConfigurations | undefined;
70
80
  /**
71
81
  * Resolve configuration from options
72
82
  * Priority: config > mailer > default
73
83
  */
74
- declare function resolveMailConfig(options: {
84
+ export declare function resolveMailConfig(options: {
75
85
  config?: MailConfigurations;
76
86
  mailer?: string;
77
87
  }): MailConfigurations;
78
88
  /**
79
89
  * Reset all configurations (useful for testing)
80
90
  */
81
- declare function resetMailConfig(): void;
91
+ export declare function resetMailConfig(): void;
82
92
  //#endregion
83
- export { getDefaultMailConfig, getMailMode, getMailerConfig, isDevelopmentMode, isProductionMode, isTestMode, resetMailConfig, resolveMailConfig, setMailConfigurations, setMailMode };
84
93
  //# sourceMappingURL=config.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/config.ts"],"mappings":";;;;;AAwDA;;;;AAA0C;AAO1C;;;;AAAuC;AAcvC;;;;AAAgC;AAOhC;iBA5BgB,WAAA,CAAY,IAAc,EAAR,QAAQ;;;AA4BT;iBArBjB,WAAA,IAAe,QAAQ;;;;iBAcvB,gBAAA;AA2ChB;;;AAAA,iBApCgB,iBAAA;;;;iBAOA,UAAA;AA6BgE;AAYhF;;;;AAA0D;AAW1D;;;;AAAiE;AAmBjE;;;;;;;;;;AAGsB;AAwBtB;;;AArEgF,iBAAhE,qBAAA,CAAsB,MAAA,EAAQ,kBAAA,GAAqB,aAAa;AAAA,iBAYhE,oBAAA,IAAwB,kBAAkB;;;;iBAW1C,eAAA,CAAgB,IAAA,WAAe,kBAAkB;;;;;iBAmBjD,iBAAA,CAAkB,OAAA;EAChC,MAAA,GAAS,kBAAA;EACT,MAAA;AAAA,IACE,kBAAkB;;;;iBAwBN,eAAA"}
1
+ {"version":3,"file":"config.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/config.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;wBAwDgB,YAAY,MAAM;;;;;wBAQlB,uBAAuB;;;;;;wBASvB;;;;wBAOA,eAAe;;;;wBAcf;;;;wBAOA;;;;wBAOA;;;;;;;;;;;;;;;;;;;;;;;;;;wBA6BA,sBAAsB,QAAQ,qBAAqB;wBAYnD,wBAAwB;;;;wBAWxB,gBAAgB,eAAe;;;;;wBAmB/B,kBAAkB;EAChC,SAAS;EACT;IACE;;;;wBAwBY"}
@@ -54,6 +54,21 @@ function setMailMode(mode) {
54
54
  explicitMode = mode;
55
55
  }
56
56
  /**
57
+ * The mode set with {@link setMailMode}, or `undefined` when the mode is
58
+ * derived from the environment.
59
+ */
60
+ function getExplicitMailMode() {
61
+ return explicitMode;
62
+ }
63
+ /**
64
+ * Forget a mode set with {@link setMailMode}, so the mode is derived from the
65
+ * environment again. Unlike {@link resetMailConfig}, the configured mailers
66
+ * are kept.
67
+ */
68
+ function resetMailMode() {
69
+ explicitMode = void 0;
70
+ }
71
+ /**
57
72
  * Get the current mail mode
58
73
  */
59
74
  function getMailMode() {
@@ -149,5 +164,5 @@ function resetMailConfig() {
149
164
  }
150
165
 
151
166
  //#endregion
152
- export { getDefaultMailConfig, getMailMode, getMailerConfig, isDevelopmentMode, isProductionMode, isTestMode, resetMailConfig, resolveMailConfig, setMailConfigurations, setMailMode };
167
+ export { getDefaultMailConfig, getExplicitMailMode, getMailMode, getMailerConfig, isDevelopmentMode, isProductionMode, isTestMode, resetMailConfig, resetMailMode, resolveMailConfig, setMailConfigurations, setMailMode };
153
168
  //# sourceMappingURL=config.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.mjs","names":[],"sources":["../../../../../../../../packages/core/src/mail/config.ts"],"sourcesContent":["import { config } from \"../config\";\nimport { environment } from \"../utils/environment\";\nimport type { MailConfigurations, MailersConfig, MailMode, SMTPConfigurations } from \"./types\";\n\n/**\n * Default mail configurations\n */\nconst defaultConfigurations: Partial<SMTPConfigurations> = {\n tls: true,\n driver: \"smtp\",\n};\n\n/**\n * Merge defaults into an SMTP config.\n * `secure` is derived from the port when not set explicitly:\n * 465 uses implicit TLS, every other port (e.g. 587) uses STARTTLS.\n */\nfunction withSmtpDefaults(config: MailConfigurations): SMTPConfigurations {\n const merged = { ...defaultConfigurations, ...config } as SMTPConfigurations;\n\n if (merged.secure === undefined) {\n merged.secure = Number(merged.port) === 465;\n }\n\n return merged;\n}\n\n/**\n * Mode set explicitly through `setMailMode`; when undefined the mode is\n * derived from the environment.\n */\nlet explicitMode: MailMode | undefined;\n\n/**\n * Registered mailers configuration\n */\nlet mailersConfig: MailersConfig = {};\n\n/**\n * Set the mail mode\n *\n * @param mode \"production\" | \"development\" | \"test\"\n *\n * - **production**: Actually sends emails via SMTP\n * - **development**: Logs emails to console without sending\n * - **test**: Captures emails to test mailbox for assertions\n *\n * @example\n * ```typescript\n * // In test setup\n * setMailMode(\"test\");\n *\n * // In development\n * setMailMode(\"development\");\n * ```\n */\nexport function setMailMode(mode: MailMode): void {\n explicitMode = mode;\n}\n\n/**\n * Get the current mail mode\n */\nexport function getMailMode(): MailMode {\n if (explicitMode) return explicitMode;\n\n // Development and test never send real mail unless `mail.sendInDevelopment` is true\n if (environment() !== \"production\" && config.key(\"mail.sendInDevelopment\") !== true) {\n return \"development\";\n }\n\n return \"production\";\n}\n\n/**\n * Check if in production mode\n */\nexport function isProductionMode(): boolean {\n return getMailMode() === \"production\";\n}\n\n/**\n * Check if in development mode\n */\nexport function isDevelopmentMode(): boolean {\n return getMailMode() === \"development\";\n}\n\n/**\n * Check if in test mode\n */\nexport function isTestMode(): boolean {\n return getMailMode() === \"test\";\n}\n\n/**\n * Set mail configurations\n *\n * Supports both simple config and named mailers.\n *\n * @example\n * ```typescript\n * // Simple config (sets as default)\n * setMailConfigurations({\n * host: \"smtp.gmail.com\",\n * port: 587,\n * username: \"...\",\n * password: \"...\",\n * });\n *\n * // Named mailers\n * setMailConfigurations({\n * default: { host: \"smtp.sendgrid.net\", ... },\n * mailers: {\n * marketing: { host: \"smtp.mailchimp.com\", ... },\n * transactional: { host: \"smtp.postmark.com\", ... },\n * },\n * });\n * ```\n */\nexport function setMailConfigurations(config: MailConfigurations | MailersConfig): void {\n // Check if it's a MailersConfig (has 'default' or 'mailers' key)\n if (\"default\" in config || \"mailers\" in config) {\n mailersConfig = config as MailersConfig;\n } else {\n // Simple config - set as default\n mailersConfig = {\n default: config as MailConfigurations,\n };\n }\n}\n\nexport function getDefaultMailConfig(): MailConfigurations {\n const config = mailersConfig.default;\n if (!config) return {} as MailConfigurations;\n if (\"driver\" in config && config.driver === \"ses\") return config;\n\n return withSmtpDefaults(config);\n}\n\n/**\n * Get a named mailer configuration\n */\nexport function getMailerConfig(name: string): MailConfigurations | undefined {\n if (name === \"default\") {\n return getDefaultMailConfig();\n }\n\n const config = mailersConfig.mailers?.[name];\n if (!config) {\n return undefined;\n }\n\n if (\"driver\" in config && config.driver === \"ses\") return config;\n\n return withSmtpDefaults(config);\n}\n\n/**\n * Resolve configuration from options\n * Priority: config > mailer > default\n */\nexport function resolveMailConfig(options: {\n config?: MailConfigurations;\n mailer?: string;\n}): MailConfigurations {\n if (options.config) {\n // SES config passes through as-is, no defaultConfigurations merge\n if (\"driver\" in options.config && options.config.driver === \"ses\") {\n return options.config;\n }\n\n return withSmtpDefaults(options.config);\n }\n\n if (options.mailer) {\n const config = getMailerConfig(options.mailer);\n if (!config) {\n throw new Error(`Mailer \"${options.mailer}\" not found in configuration`);\n }\n return config;\n }\n\n return getDefaultMailConfig();\n}\n\n/**\n * Reset all configurations (useful for testing)\n */\nexport function resetMailConfig(): void {\n explicitMode = undefined;\n mailersConfig = {};\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,wBAAqD;CACzD,KAAK;CACL,QAAQ;AACV;;;;;;AAOA,SAAS,iBAAiB,QAAgD;CACxE,MAAM,SAAS;EAAE,GAAG;EAAuB,GAAG;CAAO;CAErD,IAAI,OAAO,WAAW,QACpB,OAAO,SAAS,OAAO,OAAO,IAAI,MAAM;CAG1C,OAAO;AACT;;;;;AAMA,IAAI;;;;AAKJ,IAAI,gBAA+B,CAAC;;;;;;;;;;;;;;;;;;;AAoBpC,SAAgB,YAAY,MAAsB;CAChD,eAAe;AACjB;;;;AAKA,SAAgB,cAAwB;CACtC,IAAI,cAAc,OAAO;CAGzB,IAAI,YAAY,MAAM,gBAAgB,OAAO,IAAI,wBAAwB,MAAM,MAC7E,OAAO;CAGT,OAAO;AACT;;;;AAKA,SAAgB,mBAA4B;CAC1C,OAAO,YAAY,MAAM;AAC3B;;;;AAKA,SAAgB,oBAA6B;CAC3C,OAAO,YAAY,MAAM;AAC3B;;;;AAKA,SAAgB,aAAsB;CACpC,OAAO,YAAY,MAAM;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBAAsB,QAAkD;CAEtF,IAAI,aAAa,UAAU,aAAa,QACtC,gBAAgB;MAGhB,gBAAgB,EACd,SAAS,OACX;AAEJ;AAEA,SAAgB,uBAA2C;CACzD,MAAM,SAAS,cAAc;CAC7B,IAAI,CAAC,QAAQ,OAAO,CAAC;CACrB,IAAI,YAAY,UAAU,OAAO,WAAW,OAAO,OAAO;CAE1D,OAAO,iBAAiB,MAAM;AAChC;;;;AAKA,SAAgB,gBAAgB,MAA8C;CAC5E,IAAI,SAAS,WACX,OAAO,qBAAqB;CAG9B,MAAM,SAAS,cAAc,UAAU;CACvC,IAAI,CAAC,QACH;CAGF,IAAI,YAAY,UAAU,OAAO,WAAW,OAAO,OAAO;CAE1D,OAAO,iBAAiB,MAAM;AAChC;;;;;AAMA,SAAgB,kBAAkB,SAGX;CACrB,IAAI,QAAQ,QAAQ;EAElB,IAAI,YAAY,QAAQ,UAAU,QAAQ,OAAO,WAAW,OAC1D,OAAO,QAAQ;EAGjB,OAAO,iBAAiB,QAAQ,MAAM;CACxC;CAEA,IAAI,QAAQ,QAAQ;EAClB,MAAM,SAAS,gBAAgB,QAAQ,MAAM;EAC7C,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,WAAW,QAAQ,OAAO,6BAA6B;EAEzE,OAAO;CACT;CAEA,OAAO,qBAAqB;AAC9B;;;;AAKA,SAAgB,kBAAwB;CACtC,eAAe;CACf,gBAAgB,CAAC;AACnB"}
1
+ {"version":3,"file":"config.mjs","names":[],"sources":["../../../../../../../../packages/core/src/mail/config.ts"],"sourcesContent":["import { config } from \"../config\";\nimport { environment } from \"../utils/environment\";\nimport type { MailConfigurations, MailersConfig, MailMode, SMTPConfigurations } from \"./types\";\n\n/**\n * Default mail configurations\n */\nconst defaultConfigurations: Partial<SMTPConfigurations> = {\n tls: true,\n driver: \"smtp\",\n};\n\n/**\n * Merge defaults into an SMTP config.\n * `secure` is derived from the port when not set explicitly:\n * 465 uses implicit TLS, every other port (e.g. 587) uses STARTTLS.\n */\nfunction withSmtpDefaults(config: MailConfigurations): SMTPConfigurations {\n const merged = { ...defaultConfigurations, ...config } as SMTPConfigurations;\n\n if (merged.secure === undefined) {\n merged.secure = Number(merged.port) === 465;\n }\n\n return merged;\n}\n\n/**\n * Mode set explicitly through `setMailMode`; when undefined the mode is\n * derived from the environment.\n */\nlet explicitMode: MailMode | undefined;\n\n/**\n * Registered mailers configuration\n */\nlet mailersConfig: MailersConfig = {};\n\n/**\n * Set the mail mode\n *\n * @param mode \"production\" | \"development\" | \"test\"\n *\n * - **production**: Actually sends emails via SMTP\n * - **development**: Logs emails to console without sending\n * - **test**: Captures emails to test mailbox for assertions\n *\n * @example\n * ```typescript\n * // In test setup\n * setMailMode(\"test\");\n *\n * // In development\n * setMailMode(\"development\");\n * ```\n */\nexport function setMailMode(mode: MailMode): void {\n explicitMode = mode;\n}\n\n/**\n * The mode set with {@link setMailMode}, or `undefined` when the mode is\n * derived from the environment.\n */\nexport function getExplicitMailMode(): MailMode | undefined {\n return explicitMode;\n}\n\n/**\n * Forget a mode set with {@link setMailMode}, so the mode is derived from the\n * environment again. Unlike {@link resetMailConfig}, the configured mailers\n * are kept.\n */\nexport function resetMailMode(): void {\n explicitMode = undefined;\n}\n\n/**\n * Get the current mail mode\n */\nexport function getMailMode(): MailMode {\n if (explicitMode) return explicitMode;\n\n // Development and test never send real mail unless `mail.sendInDevelopment` is true\n if (environment() !== \"production\" && config.key(\"mail.sendInDevelopment\") !== true) {\n return \"development\";\n }\n\n return \"production\";\n}\n\n/**\n * Check if in production mode\n */\nexport function isProductionMode(): boolean {\n return getMailMode() === \"production\";\n}\n\n/**\n * Check if in development mode\n */\nexport function isDevelopmentMode(): boolean {\n return getMailMode() === \"development\";\n}\n\n/**\n * Check if in test mode\n */\nexport function isTestMode(): boolean {\n return getMailMode() === \"test\";\n}\n\n/**\n * Set mail configurations\n *\n * Supports both simple config and named mailers.\n *\n * @example\n * ```typescript\n * // Simple config (sets as default)\n * setMailConfigurations({\n * host: \"smtp.gmail.com\",\n * port: 587,\n * username: \"...\",\n * password: \"...\",\n * });\n *\n * // Named mailers\n * setMailConfigurations({\n * default: { host: \"smtp.sendgrid.net\", ... },\n * mailers: {\n * marketing: { host: \"smtp.mailchimp.com\", ... },\n * transactional: { host: \"smtp.postmark.com\", ... },\n * },\n * });\n * ```\n */\nexport function setMailConfigurations(config: MailConfigurations | MailersConfig): void {\n // Check if it's a MailersConfig (has 'default' or 'mailers' key)\n if (\"default\" in config || \"mailers\" in config) {\n mailersConfig = config as MailersConfig;\n } else {\n // Simple config - set as default\n mailersConfig = {\n default: config as MailConfigurations,\n };\n }\n}\n\nexport function getDefaultMailConfig(): MailConfigurations {\n const config = mailersConfig.default;\n if (!config) return {} as MailConfigurations;\n if (\"driver\" in config && config.driver === \"ses\") return config;\n\n return withSmtpDefaults(config);\n}\n\n/**\n * Get a named mailer configuration\n */\nexport function getMailerConfig(name: string): MailConfigurations | undefined {\n if (name === \"default\") {\n return getDefaultMailConfig();\n }\n\n const config = mailersConfig.mailers?.[name];\n if (!config) {\n return undefined;\n }\n\n if (\"driver\" in config && config.driver === \"ses\") return config;\n\n return withSmtpDefaults(config);\n}\n\n/**\n * Resolve configuration from options\n * Priority: config > mailer > default\n */\nexport function resolveMailConfig(options: {\n config?: MailConfigurations;\n mailer?: string;\n}): MailConfigurations {\n if (options.config) {\n // SES config passes through as-is, no defaultConfigurations merge\n if (\"driver\" in options.config && options.config.driver === \"ses\") {\n return options.config;\n }\n\n return withSmtpDefaults(options.config);\n }\n\n if (options.mailer) {\n const config = getMailerConfig(options.mailer);\n if (!config) {\n throw new Error(`Mailer \"${options.mailer}\" not found in configuration`);\n }\n return config;\n }\n\n return getDefaultMailConfig();\n}\n\n/**\n * Reset all configurations (useful for testing)\n */\nexport function resetMailConfig(): void {\n explicitMode = undefined;\n mailersConfig = {};\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,wBAAqD;CACzD,KAAK;CACL,QAAQ;AACV;;;;;;AAOA,SAAS,iBAAiB,QAAgD;CACxE,MAAM,SAAS;EAAE,GAAG;EAAuB,GAAG;CAAO;CAErD,IAAI,OAAO,WAAW,QACpB,OAAO,SAAS,OAAO,OAAO,IAAI,MAAM;CAG1C,OAAO;AACT;;;;;AAMA,IAAI;;;;AAKJ,IAAI,gBAA+B,CAAC;;;;;;;;;;;;;;;;;;;AAoBpC,SAAgB,YAAY,MAAsB;CAChD,eAAe;AACjB;;;;;AAMA,SAAgB,sBAA4C;CAC1D,OAAO;AACT;;;;;;AAOA,SAAgB,gBAAsB;CACpC,eAAe;AACjB;;;;AAKA,SAAgB,cAAwB;CACtC,IAAI,cAAc,OAAO;CAGzB,IAAI,YAAY,MAAM,gBAAgB,OAAO,IAAI,wBAAwB,MAAM,MAC7E,OAAO;CAGT,OAAO;AACT;;;;AAKA,SAAgB,mBAA4B;CAC1C,OAAO,YAAY,MAAM;AAC3B;;;;AAKA,SAAgB,oBAA6B;CAC3C,OAAO,YAAY,MAAM;AAC3B;;;;AAKA,SAAgB,aAAsB;CACpC,OAAO,YAAY,MAAM;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBAAsB,QAAkD;CAEtF,IAAI,aAAa,UAAU,aAAa,QACtC,gBAAgB;MAGhB,gBAAgB,EACd,SAAS,OACX;AAEJ;AAEA,SAAgB,uBAA2C;CACzD,MAAM,SAAS,cAAc;CAC7B,IAAI,CAAC,QAAQ,OAAO,CAAC;CACrB,IAAI,YAAY,UAAU,OAAO,WAAW,OAAO,OAAO;CAE1D,OAAO,iBAAiB,MAAM;AAChC;;;;AAKA,SAAgB,gBAAgB,MAA8C;CAC5E,IAAI,SAAS,WACX,OAAO,qBAAqB;CAG9B,MAAM,SAAS,cAAc,UAAU;CACvC,IAAI,CAAC,QACH;CAGF,IAAI,YAAY,UAAU,OAAO,WAAW,OAAO,OAAO;CAE1D,OAAO,iBAAiB,MAAM;AAChC;;;;;AAMA,SAAgB,kBAAkB,SAGX;CACrB,IAAI,QAAQ,QAAQ;EAElB,IAAI,YAAY,QAAQ,UAAU,QAAQ,OAAO,WAAW,OAC1D,OAAO,QAAQ;EAGjB,OAAO,iBAAiB,QAAQ,MAAM;CACxC;CAEA,IAAI,QAAQ,QAAQ;EAClB,MAAM,SAAS,gBAAgB,QAAQ,MAAM;EAC7C,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,WAAW,QAAQ,OAAO,6BAA6B;EAEzE,OAAO;CACT;CAEA,OAAO,qBAAqB;AAC9B;;;;AAKA,SAAgB,kBAAwB;CACtC,eAAe;CACf,gBAAgB,CAAC;AACnB"}
@@ -1,14 +1,13 @@
1
1
  import { CapturedMail } from "./types.mjs";
2
-
3
2
  //#region ../../packages/core/src/mail/events.d.ts
4
3
  /**
5
4
  * Generate a unique mail ID for event namespacing
6
5
  */
7
- declare function generateMailId(): string;
6
+ export declare function generateMailId(): string;
8
7
  /**
9
8
  * Mail event names (global events)
10
9
  */
11
- declare const MAIL_EVENTS: {
10
+ export declare const MAIL_EVENTS: {
12
11
  readonly BEFORE_SENDING: "mail.beforeSending";
13
12
  readonly CAPTURED: "mail.captured";
14
13
  readonly SENT: "mail.sent";
@@ -21,7 +20,7 @@ declare const MAIL_EVENTS: {
21
20
  * @param event Event type
22
21
  * @returns Namespaced event name (e.g., "mail.abc123.success")
23
22
  */
24
- declare function getMailEventName(mailId: string, event: "beforeSending" | "sent" | "success" | "error"): string;
23
+ export declare function getMailEventName(mailId: string, event: "beforeSending" | "sent" | "success" | "error"): string;
25
24
  /**
26
25
  * Mail events wrapper
27
26
  *
@@ -51,7 +50,7 @@ declare function getMailEventName(mailId: string, event: "beforeSending" | "sent
51
50
  * });
52
51
  * ```
53
52
  */
54
- declare const mailEvents: {
53
+ export declare const mailEvents: {
55
54
  /**
56
55
  * Trigger a global mail event
57
56
  */
@@ -102,5 +101,4 @@ declare const mailEvents: {
102
101
  onMailError: (mailId: string, callback: (mail: any, error: any) => void | Promise<void>) => import("@mongez/events").EventSubscription;
103
102
  };
104
103
  //#endregion
105
- export { MAIL_EVENTS, generateMailId, getMailEventName, mailEvents };
106
104
  //# sourceMappingURL=events.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/events.ts"],"mappings":";;;;;AAOA;iBAAgB,cAAA;;;AAAc;cAOjB,WAAA;EAAA;;;;;;;;;;AAcb;;iBAAgB,gBAAA,CACd,MAAA,UACA,KAAqD;;AAAA;AAkCvD;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,UAAA;;;;oCAIuB,WAAA,KAAW,IAAA;;;;mCAQ7B,KAAA,qDACuC,IAAA;EAkBJ;;;+BATtB,WAAA,EAAW,QAAA,MAAgB,IAAA,8CAAoB,iBAAA;EAgBF;;;0BAPlD,IAAA,EAAM,YAAA,uCAAqB,iBAAA;EAc/B;;;+BAPS,IAAA,iBAAqB,OAAA,iBAAwB,OAAA,qCAAc,iBAAA;;;;sBAOpE,IAAA,OAAW,MAAA,OAAa,KAAA,iBAAsB,OAAA,oCAAa,iBAAA;EAO7C;;;yBAAX,IAAA,OAAW,MAAA,iBAAuB,OAAA,oCAAa,iBAAA;;;;uBAOjD,IAAA,OAAW,KAAA,iBAAsB,OAAA,oCAAa,iBAAA;;;;wCAUnD,QAAA,GACH,IAAA,iBAAqB,OAAA,iBAAwB,OAAA,qCAAc,iBAAA;EAA3D;;;+BASG,QAAA,GACH,IAAA,OAAW,MAAA,OAAa,KAAA,iBAAsB,OAAA,oCAAa,iBAAA;EAVA;;;kCAkB1C,QAAA,GAAa,IAAA,OAAW,MAAA,iBAAuB,OAAA,oCAAa,iBAAA;EARlE;;;gCAeI,QAAA,GAAa,IAAA,OAAW,KAAA,iBAAsB,OAAA,oCAAa,iBAAA;AAAA"}
1
+ {"version":3,"file":"events.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/events.ts"],"mappings":";;;;;wBAOgB;;;;qBAOH;WACX;WACA;WACA;WACA;WACA;;;;;;;;wBASc,iBACd,gBACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAkCW;;;;EAIX,UAAO,wBAA2B,gBAAW;;;;EAO7C,iBAAc,gBACE,0DACuC;;;;EASvD,KAAE,wBAA2B,aAAW,cAAgB,kDAAoB;;;;EAS5E,aAAU,WAAc,MAAM,mDAAqB;;;;EAOnD,kBAAe,WAAc,qBAAqB,wBAAwB,4CAAc;;;;EAOxF,SAAM,WAAc,WAAW,aAAa,sBAAsB,2CAAa;;;;EAO/E,YAAS,WAAc,WAAW,uBAAuB,2CAAa;;;;EAOtE,UAAO,WAAc,WAAW,sBAAsB,2CAAa;;;;EASnE,sBAAmB,gBACH,WACH,qBAAqB,wBAAwB,4CAAc;;;;EAQxE,aAAU,gBACM,WACH,WAAW,aAAa,sBAAsB,2CAAa;;;;EAQxE,gBAAa,gBAAiB,WAAa,WAAW,uBAAuB,2CAAa;;;;EAO1F,cAAW,gBAAiB,WAAa,WAAW,sBAAsB,2CAAa"}
@@ -1,8 +1,9 @@
1
1
  import { CapturedMail, MailAddress, MailAttachment, MailConfigurations, MailError, MailErrorCode, MailEvents, MailMode, MailOptions, MailPriority, MailResult, MailersConfig, NormalizedMail, SESConfigurations, SMTPConfigurations } from "./types.mjs";
2
- import { getDefaultMailConfig, getMailMode, getMailerConfig, isDevelopmentMode, isProductionMode, isTestMode, resetMailConfig, resolveMailConfig, setMailConfigurations, setMailMode } from "./config.mjs";
2
+ import { getDefaultMailConfig, getExplicitMailMode, getMailMode, getMailerConfig, isDevelopmentMode, isProductionMode, isTestMode, resetMailConfig, resetMailMode, resolveMailConfig, setMailConfigurations, setMailMode } from "./config.mjs";
3
3
  import { MAIL_EVENTS, generateMailId, getMailEventName, mailEvents } from "./events.mjs";
4
4
  import { closeAllMailers, closeMailer, getMailer, getPoolStats, verifyMailer } from "./mailer-pool.mjs";
5
5
  import { renderReactMail } from "./react-mail.mjs";
6
6
  import { sendMail } from "./send-mail.mjs";
7
7
  import { Mail } from "./mail.mjs";
8
- import { assertMailCount, assertMailSent, captureMail, clearTestMailbox, findMailsBySubject, findMailsTo, getLastMail, getMailboxSize, getTestMailbox, wasMailSentTo, wasMailSentWithSubject } from "./test-mailbox.mjs";
8
+ import { assertMailCount, assertMailSent, captureMail, clearTestMailbox, findMailsBySubject, findMailsTo, getLastMail, getMailboxSize, getTestMailbox, wasMailSentTo, wasMailSentWithSubject } from "./test-mailbox.mjs";
9
+ export { type CapturedMail, MAIL_EVENTS, Mail, type MailAddress, type MailAttachment, type MailConfigurations, MailError, type MailErrorCode, type MailEvents, type MailMode, type MailOptions, type MailPriority, type MailResult, type MailersConfig, type NormalizedMail, type SESConfigurations, type SMTPConfigurations, assertMailCount, assertMailSent, captureMail, clearTestMailbox, closeAllMailers, closeMailer, findMailsBySubject, findMailsTo, generateMailId, getDefaultMailConfig, getExplicitMailMode, getLastMail, getMailEventName, getMailMode, getMailboxSize, getMailer, getMailerConfig, getPoolStats, getTestMailbox, isDevelopmentMode, isProductionMode, isTestMode, mailEvents, renderReactMail, resetMailConfig, resetMailMode, resolveMailConfig, sendMail, setMailConfigurations, setMailMode, verifyMailer, wasMailSentTo, wasMailSentWithSubject };
@@ -1,4 +1,4 @@
1
- import { getDefaultMailConfig, getMailMode, getMailerConfig, isDevelopmentMode, isProductionMode, isTestMode, resetMailConfig, resolveMailConfig, setMailConfigurations, setMailMode } from "./config.mjs";
1
+ import { getDefaultMailConfig, getExplicitMailMode, getMailMode, getMailerConfig, isDevelopmentMode, isProductionMode, isTestMode, resetMailConfig, resetMailMode, resolveMailConfig, setMailConfigurations, setMailMode } from "./config.mjs";
2
2
  import { MAIL_EVENTS, generateMailId, getMailEventName, mailEvents } from "./events.mjs";
3
3
  import { closeAllMailers, closeMailer, getMailer, getPoolStats, verifyMailer } from "./mailer-pool.mjs";
4
4
  import { renderReactMail } from "./react-mail.mjs";
@@ -7,4 +7,4 @@ import { MailError } from "./types.mjs";
7
7
  import { sendMail } from "./send-mail.mjs";
8
8
  import { Mail } from "./mail.mjs";
9
9
 
10
- export { };
10
+ export { MAIL_EVENTS, Mail, MailError, assertMailCount, assertMailSent, captureMail, clearTestMailbox, closeAllMailers, closeMailer, findMailsBySubject, findMailsTo, generateMailId, getDefaultMailConfig, getExplicitMailMode, getLastMail, getMailEventName, getMailMode, getMailboxSize, getMailer, getMailerConfig, getPoolStats, getTestMailbox, isDevelopmentMode, isProductionMode, isTestMode, mailEvents, renderReactMail, resetMailConfig, resetMailMode, resolveMailConfig, sendMail, setMailConfigurations, setMailMode, verifyMailer, wasMailSentTo, wasMailSentWithSubject };
@@ -1,6 +1,5 @@
1
1
  import { MailAddress, MailAttachment, MailConfigurations, MailEvents, MailOptions, MailPriority, MailResult } from "./types.mjs";
2
2
  import React from "react";
3
-
4
3
  //#region ../../packages/core/src/mail/mail.d.ts
5
4
  /**
6
5
  * Fluent Mail Builder
@@ -30,7 +29,7 @@ import React from "react";
30
29
  * .send();
31
30
  * ```
32
31
  */
33
- declare class Mail {
32
+ export declare class Mail {
34
33
  private options;
35
34
  /**
36
35
  * Private constructor - use static factory methods
@@ -174,5 +173,4 @@ declare class Mail {
174
173
  send(): Promise<MailResult>;
175
174
  }
176
175
  //#endregion
177
- export { Mail };
178
176
  //# sourceMappingURL=mail.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mail.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/mail.ts"],"mappings":";;;;;;AAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,IAAA;EAAA,QACH,OAAA;EAUwC;;;EAAA,QALzC,WAAA;EAe2C;;;EAAA,OAVpC,EAAA,CAAG,SAAA,sBAA+B,IAAA;EA8BzC;;;EAAA,OApBO,MAAA,CAAO,MAAA,EAAQ,kBAAA,GAAqB,IAAA;EAsC3C;;;EAAA,OA5BO,MAAA,CAAO,IAAA,WAAe,IAAA;EA8C7B;;;EApCA,EAAA,CAAG,SAAA;EA6CK;;;EApCR,EAAA,CAAG,SAAA;EAsDE;;;EA7CL,GAAA,CAAI,SAAA;EAsDM;;;EA7CV,OAAA,CAAQ,OAAA;EAsDyB;;;EA7CjC,IAAA,CAAK,OAAA,EAAS,WAAA;EA8DF;;;EArDZ,OAAA,CAAQ,OAAA;EA8EoC;;;EArE5C,IAAA,CAAK,OAAA;EAkGL;;;EAzFA,IAAA,CAAK,OAAA;EAkGE;;;EAzFP,SAAA,CAAU,OAAA,EAAS,KAAA,CAAM,YAAA;EA2GzB;;;EAlGA,MAAA,CAAO,OAAA,EAAS,MAAA,WAAiB,QAAA,UAAkB,WAAA;EAoHnD;;;EAnGA,WAAA,CAAY,WAAA,EAAa,cAAA;EA4Gd;;;;;;;;;;;;;;;;;;;EAnFX,UAAA,CAAW,IAAA,UAAc,QAAA,WAAmB,WAAA;EAwJZ;AAAA;;EApIhC,QAAA,CAAS,KAAA,EAAO,YAAA;;;;EAShB,OAAA,CAAQ,OAAA,EAAS,MAAA;;;;EASjB,MAAA,CAAO,IAAA,UAAc,KAAA;;;;EASrB,IAAA,CAAK,IAAA;;;;EASL,GAAA,CAAI,GAAA;;;;EASJ,aAAA,CAAc,EAAA;;;;EASd,UAAA,CAAW,MAAA,EAAQ,kBAAA;;;;EASnB,UAAA,CAAW,IAAA;;;;EASX,aAAA,CAAc,OAAA,EAAS,UAAA;;;;EASvB,MAAA,CAAO,OAAA,EAAS,UAAA;;;;EAShB,SAAA,CAAU,OAAA,EAAS,UAAA;;;;EASnB,OAAA,CAAQ,OAAA,EAAS,UAAA;;;;EASjB,UAAA,IAAc,OAAA,CAAQ,WAAA;;;;UAOrB,QAAA;;;;EAiBK,IAAA,IAAQ,OAAA,CAAQ,UAAA;AAAA"}
1
+ {"version":3,"file":"mail.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/mail.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAwCa;UACH;;;;UAKD;;;;SAKO,GAAG,+BAA+B;;;;SAUlC,OAAO,QAAQ,qBAAqB;;;;SAUpC,OAAO,eAAe;;;;EAU7B,GAAG;;;;EASH,GAAG;;;;EASH,IAAI;;;;EASJ,QAAQ;;;;EASR,KAAK,SAAS;;;;EASd,QAAQ;;;;EASR,KAAK;;;;EASL,KAAK;;;;EASL,UAAU,SAAS,MAAM;;;;EASzB,OAAO,SAAS,iBAAiB,kBAAkB;;;;EAiBnD,YAAY,aAAa;;;;;;;;;;;;;;;;;;;;EAyBzB,WAAW,cAAc,mBAAmB;;;;EAoB5C,SAAS,OAAO;;;;EAShB,QAAQ,SAAS;;;;EASjB,OAAO,cAAc;;;;EASrB,KAAK;;;;EASL,IAAI;;;;EASJ,cAAc;;;;EASd,WAAW,QAAQ;;;;EASnB,WAAW;;;;EASX,cAAc,SAAS;;;;EASvB,OAAO,SAAS;;;;EAShB,UAAU,SAAS;;;;EASnB,QAAQ,SAAS;;;;EASjB,cAAc,QAAQ;;;;UAOrB;;;;EAiBK,QAAQ,QAAQ"}
@@ -1,31 +1,29 @@
1
1
  import { MailConfigurations } from "./types.mjs";
2
2
  import { Transporter } from "nodemailer";
3
-
4
3
  //#region ../../packages/core/src/mail/mailer-pool.d.ts
5
4
  /**
6
5
  * Get or create a mailer transporter from the pool
7
6
  * Nodemailer is eagerly loaded at import time
8
7
  */
9
- declare function getMailer(config: MailConfigurations): Promise<Transporter>;
8
+ export declare function getMailer(config: MailConfigurations): Promise<Transporter>;
10
9
  /**
11
10
  * Verify a mailer connection
12
11
  */
13
- declare function verifyMailer(config: MailConfigurations): Promise<boolean>;
12
+ export declare function verifyMailer(config: MailConfigurations): Promise<boolean>;
14
13
  /**
15
14
  * Close a specific mailer connection
16
15
  */
17
- declare function closeMailer(config: MailConfigurations): void;
16
+ export declare function closeMailer(config: MailConfigurations): void;
18
17
  /**
19
18
  * Close all mailer connections
20
19
  */
21
- declare function closeAllMailers(): void;
20
+ export declare function closeAllMailers(): void;
22
21
  /**
23
22
  * Get pool statistics
24
23
  */
25
- declare function getPoolStats(): {
24
+ export declare function getPoolStats(): {
26
25
  size: number;
27
26
  hashes: string[];
28
27
  };
29
28
  //#endregion
30
- export { closeAllMailers, closeMailer, getMailer, getPoolStats, verifyMailer };
31
29
  //# sourceMappingURL=mailer-pool.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailer-pool.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/mailer-pool.ts"],"mappings":";;;;;;AAoLA;;iBAAsB,SAAA,CAAU,MAAA,EAAQ,kBAAA,GAAqB,OAAA,CAAQ,WAAA;;;;iBA6C/C,YAAA,CAAa,MAAA,EAAQ,kBAAA,GAAqB,OAAO;;;;iBAcvD,WAAA,CAAY,MAA0B,EAAlB,kBAAkB;;;AA3D0B;iBAyEhE,eAAA;;;;iBAYA,YAAA;EAAkB,IAAA;EAAc,MAAM;AAAA"}
1
+ {"version":3,"file":"mailer-pool.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/mailer-pool.ts"],"mappings":";;;;;;;wBAoLsB,UAAU,QAAQ,qBAAqB,QAAQ;;;;wBA6C/C,aAAa,QAAQ,qBAAqB;;;;wBAchD,YAAY,QAAQ;;;;wBAcpB;;;;wBAYA;EAAkB;EAAc"}
@@ -1,5 +1,4 @@
1
1
  import React from "react";
2
-
3
2
  //#region ../../packages/core/src/mail/react-mail.d.ts
4
3
  /**
5
4
  * Render a React element to HTML for email
@@ -10,7 +9,6 @@ import React from "react";
10
9
  * **Note:** This function requires React packages to be installed.
11
10
  * Install them with: `warlock add react` or `npm install react react-dom`
12
11
  */
13
- declare function renderReactMail(element: React.ReactElement | React.ComponentType): Promise<string>;
12
+ export declare function renderReactMail(element: React.ReactElement | React.ComponentType): Promise<string>;
14
13
  //#endregion
15
- export { renderReactMail };
16
14
  //# sourceMappingURL=react-mail.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-mail.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/react-mail.ts"],"mappings":";;;;;AAiCA;;;;;;;iBAAsB,eAAA,CACpB,OAAA,EAAS,KAAA,CAAM,YAAA,GAAe,KAAA,CAAM,aAAA,GACnC,OAAA"}
1
+ {"version":3,"file":"react-mail.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/mail/react-mail.ts"],"mappings":";;;;;;;;;;;wBAiCsB,gBACpB,SAAS,MAAM,eAAe,MAAM,gBACnC"}