@warlock.js/core 4.0.135 → 4.0.137

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 (521) hide show
  1. package/esm/benchmark/benchmark-snapshots.d.ts +47 -0
  2. package/esm/benchmark/benchmark-snapshots.d.ts.map +1 -0
  3. package/esm/benchmark/benchmark-snapshots.js +77 -0
  4. package/esm/benchmark/benchmark-snapshots.js.map +1 -0
  5. package/esm/benchmark/benchmark.d.ts +25 -0
  6. package/esm/benchmark/benchmark.d.ts.map +1 -0
  7. package/esm/benchmark/benchmark.example.d.ts +2 -0
  8. package/esm/benchmark/benchmark.example.d.ts.map +1 -0
  9. package/esm/benchmark/benchmark.js +120 -0
  10. package/esm/benchmark/benchmark.js.map +1 -0
  11. package/esm/benchmark/channels/console.channel.d.ts +14 -0
  12. package/esm/benchmark/channels/console.channel.d.ts.map +1 -0
  13. package/esm/benchmark/channels/console.channel.js +29 -0
  14. package/esm/benchmark/channels/console.channel.js.map +1 -0
  15. package/esm/benchmark/channels/index.d.ts +3 -0
  16. package/esm/benchmark/channels/index.d.ts.map +1 -0
  17. package/esm/benchmark/channels/noop.channel.d.ts +5 -0
  18. package/esm/benchmark/channels/noop.channel.d.ts.map +1 -0
  19. package/esm/benchmark/channels/noop.channel.js +3 -0
  20. package/esm/benchmark/channels/noop.channel.js.map +1 -0
  21. package/esm/benchmark/index.d.ts +7 -0
  22. package/esm/benchmark/index.d.ts.map +1 -0
  23. package/esm/benchmark/profiler.d.ts +63 -0
  24. package/esm/benchmark/profiler.d.ts.map +1 -0
  25. package/esm/benchmark/profiler.js +155 -0
  26. package/esm/benchmark/profiler.js.map +1 -0
  27. package/esm/benchmark/types.d.ts +167 -0
  28. package/esm/benchmark/types.d.ts.map +1 -0
  29. package/esm/cli/cli-commands.manager.js +1 -1
  30. package/esm/cli/cli-commands.manager.js.map +1 -1
  31. package/esm/cli/commands/dev-server.command.js +1 -1
  32. package/esm/cli/commands/dev-server.command.js.map +1 -1
  33. package/esm/cli/commands/drop-tables.command.d.ts +2 -0
  34. package/esm/cli/commands/drop-tables.command.d.ts.map +1 -0
  35. package/esm/cli/commands/drop-tables.command.js +17 -0
  36. package/esm/cli/commands/drop-tables.command.js.map +1 -0
  37. package/esm/cli/commands/generate/generate.command.d.ts.map +1 -1
  38. package/esm/cli/commands/generate/generate.command.js +1 -0
  39. package/esm/cli/commands/generate/generate.command.js.map +1 -1
  40. package/esm/cli/commands/generate/generators/controller.generator.js +6 -6
  41. package/esm/cli/commands/generate/generators/controller.generator.js.map +1 -1
  42. package/esm/cli/commands/generate/generators/module.generator.d.ts.map +1 -1
  43. package/esm/cli/commands/generate/generators/module.generator.js +6 -5
  44. package/esm/cli/commands/generate/generators/module.generator.js.map +1 -1
  45. package/esm/cli/commands/generate/generators/validation.generator.js +11 -11
  46. package/esm/cli/commands/generate/generators/validation.generator.js.map +1 -1
  47. package/esm/cli/commands/generate/templates/stubs.d.ts +6 -3
  48. package/esm/cli/commands/generate/templates/stubs.d.ts.map +1 -1
  49. package/esm/cli/commands/generate/templates/stubs.js +37 -25
  50. package/esm/cli/commands/generate/templates/stubs.js.map +1 -1
  51. package/esm/cli/commands/generate/utils/prompt.js +21 -0
  52. package/esm/cli/commands/generate/utils/prompt.js.map +1 -0
  53. package/esm/cli/commands/seed.command.d.ts.map +1 -1
  54. package/esm/cli/commands/seed.command.js +9 -2
  55. package/esm/cli/commands/seed.command.js.map +1 -1
  56. package/esm/cli/commands/storage-put.action.d.ts +22 -0
  57. package/esm/cli/commands/storage-put.action.d.ts.map +1 -0
  58. package/esm/cli/commands/storage-put.action.js +75 -0
  59. package/esm/cli/commands/storage-put.action.js.map +1 -0
  60. package/esm/cli/commands/storage-put.command.d.ts +20 -0
  61. package/esm/cli/commands/storage-put.command.d.ts.map +1 -0
  62. package/esm/cli/commands/storage-put.command.js +41 -0
  63. package/esm/cli/commands/storage-put.command.js.map +1 -0
  64. package/esm/cli/commands/typings-generator.command.js +1 -1
  65. package/esm/cli/commands/typings-generator.command.js.map +1 -1
  66. package/esm/cli/commands-loader.js +1 -1
  67. package/esm/cli/commands-loader.js.map +1 -1
  68. package/esm/cli/framework-cli-commands.d.ts.map +1 -1
  69. package/esm/cli/framework-cli-commands.js +7 -2
  70. package/esm/cli/framework-cli-commands.js.map +1 -1
  71. package/esm/cli/types.d.ts +1 -1
  72. package/esm/cli/types.d.ts.map +1 -1
  73. package/esm/config/config-getter.d.ts +1 -1
  74. package/esm/config/config-getter.d.ts.map +1 -1
  75. package/esm/config/config-getter.js.map +1 -1
  76. package/esm/config/config-loader.d.ts +1 -1
  77. package/esm/config/config-loader.d.ts.map +1 -1
  78. package/esm/config/config-loader.js +1 -1
  79. package/esm/config/config-loader.js.map +1 -1
  80. package/esm/config/config-manager.d.ts +1 -1
  81. package/esm/config/config-manager.d.ts.map +1 -1
  82. package/esm/config/load-config-files.d.ts.map +1 -1
  83. package/esm/config/load-config-files.js +1 -1
  84. package/esm/config/load-config-files.js.map +1 -1
  85. package/esm/connectors/base-connector.d.ts.map +1 -0
  86. package/esm/{dev2-server/connectors → connectors}/base-connector.js +1 -1
  87. package/esm/connectors/base-connector.js.map +1 -0
  88. package/esm/connectors/cache-connector.d.ts.map +1 -0
  89. package/esm/connectors/cache-connector.js.map +1 -0
  90. package/esm/connectors/communicator-connector.d.ts.map +1 -0
  91. package/esm/connectors/communicator-connector.js.map +1 -0
  92. package/esm/connectors/connectors-manager.d.ts.map +1 -0
  93. package/esm/{dev2-server/connectors → connectors}/connectors-manager.js +1 -1
  94. package/esm/connectors/connectors-manager.js.map +1 -0
  95. package/esm/connectors/database-connector.d.ts.map +1 -0
  96. package/esm/connectors/database-connector.js.map +1 -0
  97. package/esm/{dev2-server/connectors → connectors}/http-connector.d.ts +2 -0
  98. package/esm/connectors/http-connector.d.ts.map +1 -0
  99. package/esm/{dev2-server/connectors → connectors}/http-connector.js +18 -4
  100. package/esm/connectors/http-connector.js.map +1 -0
  101. package/esm/connectors/index.d.ts.map +1 -0
  102. package/esm/connectors/storage.connector.d.ts.map +1 -0
  103. package/esm/{dev2-server/connectors → connectors}/storage.connector.js +1 -1
  104. package/esm/connectors/storage.connector.js.map +1 -0
  105. package/esm/connectors/types.d.ts.map +1 -0
  106. package/esm/connectors/types.js.map +1 -0
  107. package/esm/database/drop-tables-action.d.ts +3 -0
  108. package/esm/database/drop-tables-action.d.ts.map +1 -0
  109. package/esm/database/drop-tables-action.js +29 -0
  110. package/esm/database/drop-tables-action.js.map +1 -0
  111. package/esm/database/migrate-action.js +18 -10
  112. package/esm/database/migrate-action.js.map +1 -1
  113. package/esm/database/seed-command-action.js +4 -4
  114. package/esm/database/seed-command-action.js.map +1 -1
  115. package/esm/database/seeds/seeder.d.ts +4 -0
  116. package/esm/database/seeds/seeder.d.ts.map +1 -1
  117. package/esm/database/seeds/seeder.js.map +1 -1
  118. package/esm/database/seeds/seeders.manager.d.ts +1 -1
  119. package/esm/database/seeds/seeders.manager.d.ts.map +1 -1
  120. package/esm/database/seeds/seeders.manager.js +12 -5
  121. package/esm/database/seeds/seeders.manager.js.map +1 -1
  122. package/esm/database/utils.d.ts +1 -2
  123. package/esm/database/utils.d.ts.map +1 -1
  124. package/esm/database/utils.js +2 -2
  125. package/esm/database/utils.js.map +1 -1
  126. package/esm/dev-server/create-worker.d.ts.map +1 -0
  127. package/esm/dev-server/create-worker.js.map +1 -0
  128. package/esm/{dev2-server → dev-server}/dependency-graph.d.ts +10 -1
  129. package/esm/dev-server/dependency-graph.d.ts.map +1 -0
  130. package/esm/{dev2-server → dev-server}/dependency-graph.js +49 -5
  131. package/esm/dev-server/dependency-graph.js.map +1 -0
  132. package/esm/dev-server/dev-logger.d.ts.map +1 -0
  133. package/esm/dev-server/dev-logger.js.map +1 -0
  134. package/esm/{dev2-server → dev-server}/development-server.d.ts +8 -0
  135. package/esm/dev-server/development-server.d.ts.map +1 -0
  136. package/esm/{dev2-server → dev-server}/development-server.js +57 -7
  137. package/esm/dev-server/development-server.js.map +1 -0
  138. package/esm/dev-server/events.d.ts.map +1 -0
  139. package/esm/dev-server/events.js.map +1 -0
  140. package/esm/dev-server/export-analyzer.d.ts.map +1 -0
  141. package/esm/dev-server/export-analyzer.js.map +1 -0
  142. package/esm/dev-server/file-event-handler.d.ts.map +1 -0
  143. package/esm/{dev2-server → dev-server}/file-event-handler.js +13 -4
  144. package/esm/dev-server/file-event-handler.js.map +1 -0
  145. package/esm/{dev2-server → dev-server}/file-manager.d.ts +10 -1
  146. package/esm/dev-server/file-manager.d.ts.map +1 -0
  147. package/esm/{dev2-server → dev-server}/file-manager.js +26 -3
  148. package/esm/dev-server/file-manager.js.map +1 -0
  149. package/esm/dev-server/file-operations.d.ts.map +1 -0
  150. package/esm/dev-server/file-operations.js.map +1 -0
  151. package/esm/{dev2-server → dev-server}/files-orchestrator.d.ts +7 -1
  152. package/esm/dev-server/files-orchestrator.d.ts.map +1 -0
  153. package/esm/{dev2-server → dev-server}/files-orchestrator.js +39 -8
  154. package/esm/dev-server/files-orchestrator.js.map +1 -0
  155. package/esm/dev-server/files-watcher.d.ts.map +1 -0
  156. package/esm/{dev2-server → dev-server}/files-watcher.js +30 -4
  157. package/esm/dev-server/files-watcher.js.map +1 -0
  158. package/esm/dev-server/flags.d.ts.map +1 -0
  159. package/esm/dev-server/flags.js.map +1 -0
  160. package/esm/dev-server/health-checker/checkers/base-health-checker.d.ts.map +1 -0
  161. package/esm/dev-server/health-checker/checkers/base-health-checker.js.map +1 -0
  162. package/esm/dev-server/health-checker/checkers/eslint-health-checker.d.ts.map +1 -0
  163. package/esm/dev-server/health-checker/checkers/eslint-health-checker.js.map +1 -0
  164. package/esm/dev-server/health-checker/checkers/typescript-health-checker.d.ts.map +1 -0
  165. package/esm/dev-server/health-checker/checkers/typescript-health-checker.js.map +1 -0
  166. package/esm/dev-server/health-checker/file-health-checker.contract.d.ts.map +1 -0
  167. package/esm/dev-server/health-checker/file-health-result.d.ts.map +1 -0
  168. package/esm/dev-server/health-checker/file-health-result.js.map +1 -0
  169. package/esm/dev-server/health-checker/files-healthcare.manager.d.ts.map +1 -0
  170. package/esm/dev-server/health-checker/files-healthcare.manager.js.map +1 -0
  171. package/esm/dev-server/health-checker/index.d.ts.map +1 -0
  172. package/esm/dev-server/health-checker/workers/eslint-health.worker.d.ts.map +1 -0
  173. package/esm/dev-server/health-checker/workers/eslint-health.worker.js.map +1 -0
  174. package/esm/dev-server/health-checker/workers/ts-health.worker.d.ts.map +1 -0
  175. package/esm/dev-server/health-checker/workers/ts-health.worker.js.map +1 -0
  176. package/esm/dev-server/import-deduplicator.d.ts +75 -0
  177. package/esm/dev-server/import-deduplicator.d.ts.map +1 -0
  178. package/esm/dev-server/import-deduplicator.js +288 -0
  179. package/esm/dev-server/import-deduplicator.js.map +1 -0
  180. package/esm/dev-server/import-deduplicator.test.d.ts +7 -0
  181. package/esm/dev-server/import-deduplicator.test.d.ts.map +1 -0
  182. package/esm/dev-server/import-transformer.d.ts.map +1 -0
  183. package/esm/{dev2-server → dev-server}/import-transformer.js +61 -129
  184. package/esm/dev-server/import-transformer.js.map +1 -0
  185. package/esm/{dev2-server → dev-server}/index.d.ts.map +1 -1
  186. package/esm/{dev2-server → dev-server}/layer-executor.d.ts +5 -2
  187. package/esm/dev-server/layer-executor.d.ts.map +1 -0
  188. package/esm/{dev2-server → dev-server}/layer-executor.js +34 -9
  189. package/esm/dev-server/layer-executor.js.map +1 -0
  190. package/esm/dev-server/manifest-manager.d.ts.map +1 -0
  191. package/esm/dev-server/manifest-manager.js.map +1 -0
  192. package/esm/{dev2-server → dev-server}/module-loader.d.ts +3 -0
  193. package/esm/dev-server/module-loader.d.ts.map +1 -0
  194. package/esm/{dev2-server → dev-server}/module-loader.js +9 -5
  195. package/esm/dev-server/module-loader.js.map +1 -0
  196. package/esm/dev-server/package-json-manager.d.ts.map +1 -0
  197. package/esm/dev-server/package-json-manager.js.map +1 -0
  198. package/esm/dev-server/parse-imports.d.ts +34 -0
  199. package/esm/dev-server/parse-imports.d.ts.map +1 -0
  200. package/esm/{dev2-server → dev-server}/parse-imports.js +98 -1
  201. package/esm/dev-server/parse-imports.js.map +1 -0
  202. package/esm/dev-server/path.d.ts.map +1 -0
  203. package/esm/dev-server/path.js.map +1 -0
  204. package/esm/dev-server/runtime-import-helper.d.ts.map +1 -0
  205. package/esm/{dev2-server → dev-server}/runtime-import-helper.js +3 -3
  206. package/esm/dev-server/runtime-import-helper.js.map +1 -0
  207. package/esm/dev-server/special-files-collector.d.ts.map +1 -0
  208. package/esm/dev-server/special-files-collector.js.map +1 -0
  209. package/esm/dev-server/start-development-server.d.ts.map +1 -0
  210. package/esm/dev-server/start-development-server.js.map +1 -0
  211. package/esm/dev-server/transpile-file.d.ts.map +1 -0
  212. package/esm/dev-server/transpile-file.js.map +1 -0
  213. package/esm/dev-server/tsconfig-manager.d.ts.map +1 -0
  214. package/esm/dev-server/tsconfig-manager.js.map +1 -0
  215. package/esm/dev-server/type-generator.d.ts.map +1 -0
  216. package/esm/dev-server/type-generator.js.map +1 -0
  217. package/esm/dev-server/types.d.ts.map +1 -0
  218. package/esm/dev-server/utils.d.ts.map +1 -0
  219. package/esm/{dev2-server → dev-server}/utils.js +2 -1
  220. package/esm/dev-server/utils.js.map +1 -0
  221. package/esm/encryption/encrypt.d.ts +23 -0
  222. package/esm/encryption/encrypt.d.ts.map +1 -0
  223. package/esm/encryption/encrypt.js +85 -0
  224. package/esm/encryption/encrypt.js.map +1 -0
  225. package/esm/encryption/hash.d.ts +17 -0
  226. package/esm/encryption/hash.d.ts.map +1 -0
  227. package/esm/encryption/hash.js +26 -0
  228. package/esm/encryption/hash.js.map +1 -0
  229. package/esm/encryption/index.d.ts +5 -0
  230. package/esm/encryption/index.d.ts.map +1 -0
  231. package/esm/encryption/password.d.ts +23 -0
  232. package/esm/encryption/password.d.ts.map +1 -0
  233. package/esm/encryption/password.js +72 -0
  234. package/esm/encryption/password.js.map +1 -0
  235. package/esm/encryption/types.d.ts +51 -0
  236. package/esm/encryption/types.d.ts.map +1 -0
  237. package/esm/generations/add-command.action.d.ts.map +1 -1
  238. package/esm/generations/add-command.action.js +44 -15
  239. package/esm/generations/add-command.action.js.map +1 -1
  240. package/esm/http/middleware/inject-request-context.d.ts.map +1 -1
  241. package/esm/http/middleware/inject-request-context.js +3 -1
  242. package/esm/http/middleware/inject-request-context.js.map +1 -1
  243. package/esm/http/request.d.ts +9 -1
  244. package/esm/http/request.d.ts.map +1 -1
  245. package/esm/http/request.js +11 -1
  246. package/esm/http/request.js.map +1 -1
  247. package/esm/http/response.d.ts.map +1 -1
  248. package/esm/http/response.js +54 -16
  249. package/esm/http/response.js.map +1 -1
  250. package/esm/http/types.d.ts +14 -6
  251. package/esm/http/types.d.ts.map +1 -1
  252. package/esm/http/uploaded-file.js +1 -1
  253. package/esm/index.d.ts +7 -3
  254. package/esm/index.d.ts.map +1 -1
  255. package/esm/index.js +1 -1
  256. package/esm/mail/mailer-pool.js +11 -11
  257. package/esm/mail/send-mail.js +1 -1
  258. package/esm/mail/send-mail.js.map +1 -1
  259. package/esm/production/production-builder.js +1 -1
  260. package/esm/repositories/adapters/cascade/cascade-adapter.js +2 -2
  261. package/esm/repositories/adapters/cascade/cascade-adapter.js.map +1 -1
  262. package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts +17 -0
  263. package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts.map +1 -1
  264. package/esm/repositories/adapters/cascade/cascade-query-builder.js +39 -25
  265. package/esm/repositories/adapters/cascade/cascade-query-builder.js.map +1 -1
  266. package/esm/repositories/adapters/cascade/filter-applicator.d.ts +49 -0
  267. package/esm/repositories/adapters/cascade/filter-applicator.d.ts.map +1 -1
  268. package/esm/repositories/adapters/cascade/filter-applicator.js +99 -0
  269. package/esm/repositories/adapters/cascade/filter-applicator.js.map +1 -1
  270. package/esm/repositories/contracts/query-builder.contract.d.ts +41 -0
  271. package/esm/repositories/contracts/query-builder.contract.d.ts.map +1 -1
  272. package/esm/repositories/contracts/types.d.ts +56 -6
  273. package/esm/repositories/contracts/types.d.ts.map +1 -1
  274. package/esm/repositories/repository.manager.d.ts +93 -48
  275. package/esm/repositories/repository.manager.d.ts.map +1 -1
  276. package/esm/repositories/repository.manager.js +139 -50
  277. package/esm/repositories/repository.manager.js.map +1 -1
  278. package/esm/resource/resource-field-builder.d.ts.map +1 -1
  279. package/esm/resource/resource-field-builder.js +18 -4
  280. package/esm/resource/resource-field-builder.js.map +1 -1
  281. package/esm/resource/resource.d.ts +23 -1
  282. package/esm/resource/resource.d.ts.map +1 -1
  283. package/esm/resource/resource.js +56 -3
  284. package/esm/resource/resource.js.map +1 -1
  285. package/esm/resource/types.d.ts +12 -2
  286. package/esm/resource/types.d.ts.map +1 -1
  287. package/esm/restful/restful.js +1 -1
  288. package/esm/restful/restful.js.map +1 -1
  289. package/esm/retry/index.d.ts +3 -0
  290. package/esm/retry/index.d.ts.map +1 -0
  291. package/esm/retry/retry.d.ts +21 -0
  292. package/esm/retry/retry.d.ts.map +1 -0
  293. package/esm/retry/retry.js +39 -0
  294. package/esm/retry/retry.js.map +1 -0
  295. package/esm/retry/types.d.ts +27 -0
  296. package/esm/retry/types.d.ts.map +1 -0
  297. package/esm/router/types.d.ts +10 -10
  298. package/esm/router/types.d.ts.map +1 -1
  299. package/esm/storage/scoped-storage.d.ts +34 -1
  300. package/esm/storage/scoped-storage.d.ts.map +1 -1
  301. package/esm/storage/scoped-storage.js +84 -1
  302. package/esm/storage/scoped-storage.js.map +1 -1
  303. package/esm/storage/types.d.ts +53 -0
  304. package/esm/storage/types.d.ts.map +1 -1
  305. package/esm/tests/index.d.ts +1 -0
  306. package/esm/tests/index.d.ts.map +1 -1
  307. package/esm/tests/start-http-development-server.d.ts +12 -0
  308. package/esm/tests/start-http-development-server.d.ts.map +1 -1
  309. package/esm/tests/start-http-development-server.js +66 -6
  310. package/esm/tests/start-http-development-server.js.map +1 -1
  311. package/esm/tests/test-helpers.d.ts +43 -0
  312. package/esm/tests/test-helpers.d.ts.map +1 -0
  313. package/esm/tests/test-helpers.js +86 -0
  314. package/esm/tests/test-helpers.js.map +1 -0
  315. package/esm/tests/vitest-setup.d.ts +1 -1
  316. package/esm/tests/vitest-setup.d.ts.map +1 -1
  317. package/esm/tests/vitest-setup.js +1 -1
  318. package/esm/tests/vitest-setup.js.map +1 -1
  319. package/esm/use-cases/index.d.ts +7 -0
  320. package/esm/use-cases/index.d.ts.map +1 -0
  321. package/esm/use-cases/types.d.ts +267 -0
  322. package/esm/use-cases/types.d.ts.map +1 -0
  323. package/esm/use-cases/use-case-events.d.ts +33 -0
  324. package/esm/use-cases/use-case-events.d.ts.map +1 -0
  325. package/esm/use-cases/use-case-events.js +65 -0
  326. package/esm/use-cases/use-case-events.js.map +1 -0
  327. package/esm/use-cases/use-case-pipeline.d.ts +29 -0
  328. package/esm/use-cases/use-case-pipeline.d.ts.map +1 -0
  329. package/esm/use-cases/use-case-pipeline.js +45 -0
  330. package/esm/use-cases/use-case-pipeline.js.map +1 -0
  331. package/esm/use-cases/use-case.d.ts +27 -0
  332. package/esm/use-cases/use-case.d.ts.map +1 -0
  333. package/esm/use-cases/use-case.errors.d.ts +6 -0
  334. package/esm/use-cases/use-case.errors.d.ts.map +1 -0
  335. package/esm/use-cases/use-case.errors.js +8 -0
  336. package/esm/use-cases/use-case.errors.js.map +1 -0
  337. package/esm/use-cases/use-case.js +138 -0
  338. package/esm/use-cases/use-case.js.map +1 -0
  339. package/esm/use-cases/use-cases-registry.d.ts +38 -0
  340. package/esm/use-cases/use-cases-registry.d.ts.map +1 -0
  341. package/esm/use-cases/use-cases-registry.js +92 -0
  342. package/esm/use-cases/use-cases-registry.js.map +1 -0
  343. package/esm/validation/database/exists-except-current-id.js +1 -1
  344. package/esm/validation/database/exists-except-current-user.js +1 -1
  345. package/esm/validation/database/unique-except-current-id.js +1 -1
  346. package/esm/validation/database/unique-except-current-user.js +1 -1
  347. package/esm/validation/init.js.map +1 -1
  348. package/esm/validation/plugins/database-plugin.d.ts.map +1 -1
  349. package/esm/validation/plugins/database-plugin.js +18 -30
  350. package/esm/validation/plugins/database-plugin.js.map +1 -1
  351. package/esm/validation/plugins/file-plugin.d.ts.map +1 -1
  352. package/esm/validation/plugins/file-plugin.js.map +1 -1
  353. package/esm/validation/plugins/localized-plugin.d.ts.map +1 -1
  354. package/esm/validation/plugins/localized-plugin.js.map +1 -1
  355. package/esm/validation/validators/file-validator.d.ts +14 -14
  356. package/esm/validation/validators/file-validator.d.ts.map +1 -1
  357. package/esm/validation/validators/file-validator.js +26 -27
  358. package/esm/validation/validators/file-validator.js.map +1 -1
  359. package/esm/warlock-config/types.d.ts +7 -2
  360. package/esm/warlock-config/types.d.ts.map +1 -1
  361. package/esm/warlock-config/warlock-config.manager.js +1 -1
  362. package/esm/warlock-config/warlock-config.manager.js.map +1 -1
  363. package/package.json +7 -7
  364. package/esm/dev2-server/connectors/base-connector.d.ts.map +0 -1
  365. package/esm/dev2-server/connectors/base-connector.js.map +0 -1
  366. package/esm/dev2-server/connectors/cache-connector.d.ts.map +0 -1
  367. package/esm/dev2-server/connectors/cache-connector.js.map +0 -1
  368. package/esm/dev2-server/connectors/communicator-connector.d.ts.map +0 -1
  369. package/esm/dev2-server/connectors/communicator-connector.js.map +0 -1
  370. package/esm/dev2-server/connectors/connectors-manager.d.ts.map +0 -1
  371. package/esm/dev2-server/connectors/connectors-manager.js.map +0 -1
  372. package/esm/dev2-server/connectors/database-connector.d.ts.map +0 -1
  373. package/esm/dev2-server/connectors/database-connector.js.map +0 -1
  374. package/esm/dev2-server/connectors/http-connector.d.ts.map +0 -1
  375. package/esm/dev2-server/connectors/http-connector.js.map +0 -1
  376. package/esm/dev2-server/connectors/index.d.ts.map +0 -1
  377. package/esm/dev2-server/connectors/storage.connector.d.ts.map +0 -1
  378. package/esm/dev2-server/connectors/storage.connector.js.map +0 -1
  379. package/esm/dev2-server/connectors/types.d.ts.map +0 -1
  380. package/esm/dev2-server/connectors/types.js.map +0 -1
  381. package/esm/dev2-server/create-worker.d.ts.map +0 -1
  382. package/esm/dev2-server/create-worker.js.map +0 -1
  383. package/esm/dev2-server/dependency-graph.d.ts.map +0 -1
  384. package/esm/dev2-server/dependency-graph.js.map +0 -1
  385. package/esm/dev2-server/dev-logger.d.ts.map +0 -1
  386. package/esm/dev2-server/dev-logger.js.map +0 -1
  387. package/esm/dev2-server/development-server.d.ts.map +0 -1
  388. package/esm/dev2-server/development-server.js.map +0 -1
  389. package/esm/dev2-server/events.d.ts.map +0 -1
  390. package/esm/dev2-server/events.js.map +0 -1
  391. package/esm/dev2-server/export-analyzer.d.ts.map +0 -1
  392. package/esm/dev2-server/export-analyzer.js.map +0 -1
  393. package/esm/dev2-server/file-event-handler.d.ts.map +0 -1
  394. package/esm/dev2-server/file-event-handler.js.map +0 -1
  395. package/esm/dev2-server/file-manager.d.ts.map +0 -1
  396. package/esm/dev2-server/file-manager.js.map +0 -1
  397. package/esm/dev2-server/file-operations.d.ts.map +0 -1
  398. package/esm/dev2-server/file-operations.js.map +0 -1
  399. package/esm/dev2-server/files-orchestrator.d.ts.map +0 -1
  400. package/esm/dev2-server/files-orchestrator.js.map +0 -1
  401. package/esm/dev2-server/files-watcher.d.ts.map +0 -1
  402. package/esm/dev2-server/files-watcher.js.map +0 -1
  403. package/esm/dev2-server/flags.d.ts.map +0 -1
  404. package/esm/dev2-server/flags.js.map +0 -1
  405. package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts.map +0 -1
  406. package/esm/dev2-server/health-checker/checkers/base-health-checker.js.map +0 -1
  407. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts.map +0 -1
  408. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js.map +0 -1
  409. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts.map +0 -1
  410. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js.map +0 -1
  411. package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts.map +0 -1
  412. package/esm/dev2-server/health-checker/file-health-result.d.ts.map +0 -1
  413. package/esm/dev2-server/health-checker/file-health-result.js.map +0 -1
  414. package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts.map +0 -1
  415. package/esm/dev2-server/health-checker/files-healthcare.manager.js.map +0 -1
  416. package/esm/dev2-server/health-checker/index.d.ts.map +0 -1
  417. package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts.map +0 -1
  418. package/esm/dev2-server/health-checker/workers/eslint-health.worker.js.map +0 -1
  419. package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts.map +0 -1
  420. package/esm/dev2-server/health-checker/workers/ts-health.worker.js.map +0 -1
  421. package/esm/dev2-server/import-transformer.d.ts.map +0 -1
  422. package/esm/dev2-server/import-transformer.js.map +0 -1
  423. package/esm/dev2-server/layer-executor.d.ts.map +0 -1
  424. package/esm/dev2-server/layer-executor.js.map +0 -1
  425. package/esm/dev2-server/manifest-manager.d.ts.map +0 -1
  426. package/esm/dev2-server/manifest-manager.js.map +0 -1
  427. package/esm/dev2-server/module-loader.d.ts.map +0 -1
  428. package/esm/dev2-server/module-loader.js.map +0 -1
  429. package/esm/dev2-server/package-json-manager.d.ts.map +0 -1
  430. package/esm/dev2-server/package-json-manager.js.map +0 -1
  431. package/esm/dev2-server/parse-imports.d.ts +0 -13
  432. package/esm/dev2-server/parse-imports.d.ts.map +0 -1
  433. package/esm/dev2-server/parse-imports.js.map +0 -1
  434. package/esm/dev2-server/path.d.ts.map +0 -1
  435. package/esm/dev2-server/path.js.map +0 -1
  436. package/esm/dev2-server/runtime-import-helper.d.ts.map +0 -1
  437. package/esm/dev2-server/runtime-import-helper.js.map +0 -1
  438. package/esm/dev2-server/special-files-collector.d.ts.map +0 -1
  439. package/esm/dev2-server/special-files-collector.js.map +0 -1
  440. package/esm/dev2-server/start-development-server.d.ts.map +0 -1
  441. package/esm/dev2-server/start-development-server.js.map +0 -1
  442. package/esm/dev2-server/transpile-file.d.ts.map +0 -1
  443. package/esm/dev2-server/transpile-file.js.map +0 -1
  444. package/esm/dev2-server/tsconfig-manager.d.ts.map +0 -1
  445. package/esm/dev2-server/tsconfig-manager.js.map +0 -1
  446. package/esm/dev2-server/type-generator.d.ts.map +0 -1
  447. package/esm/dev2-server/type-generator.js.map +0 -1
  448. package/esm/dev2-server/types.d.ts.map +0 -1
  449. package/esm/dev2-server/utils.d.ts.map +0 -1
  450. package/esm/dev2-server/utils.js.map +0 -1
  451. package/esm/http/errors/resource-not-found.error.d.ts +0 -21
  452. package/esm/http/errors/resource-not-found.error.d.ts.map +0 -1
  453. package/esm/router/utils.d.ts +0 -5
  454. package/esm/router/utils.d.ts.map +0 -1
  455. package/esm/store/index.d.ts +0 -25
  456. package/esm/store/index.d.ts.map +0 -1
  457. package/esm/store/index.js +0 -52
  458. package/esm/store/index.js.map +0 -1
  459. /package/esm/{dev2-server/connectors → connectors}/base-connector.d.ts +0 -0
  460. /package/esm/{dev2-server/connectors → connectors}/cache-connector.d.ts +0 -0
  461. /package/esm/{dev2-server/connectors → connectors}/cache-connector.js +0 -0
  462. /package/esm/{dev2-server/connectors → connectors}/communicator-connector.d.ts +0 -0
  463. /package/esm/{dev2-server/connectors → connectors}/communicator-connector.js +0 -0
  464. /package/esm/{dev2-server/connectors → connectors}/connectors-manager.d.ts +0 -0
  465. /package/esm/{dev2-server/connectors → connectors}/database-connector.d.ts +0 -0
  466. /package/esm/{dev2-server/connectors → connectors}/database-connector.js +0 -0
  467. /package/esm/{dev2-server/connectors → connectors}/index.d.ts +0 -0
  468. /package/esm/{dev2-server/connectors → connectors}/storage.connector.d.ts +0 -0
  469. /package/esm/{dev2-server/connectors → connectors}/types.d.ts +0 -0
  470. /package/esm/{dev2-server/connectors → connectors}/types.js +0 -0
  471. /package/esm/{dev2-server → dev-server}/create-worker.d.ts +0 -0
  472. /package/esm/{dev2-server → dev-server}/create-worker.js +0 -0
  473. /package/esm/{dev2-server → dev-server}/dev-logger.d.ts +0 -0
  474. /package/esm/{dev2-server → dev-server}/dev-logger.js +0 -0
  475. /package/esm/{dev2-server → dev-server}/events.d.ts +0 -0
  476. /package/esm/{dev2-server → dev-server}/events.js +0 -0
  477. /package/esm/{dev2-server → dev-server}/export-analyzer.d.ts +0 -0
  478. /package/esm/{dev2-server → dev-server}/export-analyzer.js +0 -0
  479. /package/esm/{dev2-server → dev-server}/file-event-handler.d.ts +0 -0
  480. /package/esm/{dev2-server → dev-server}/file-operations.d.ts +0 -0
  481. /package/esm/{dev2-server → dev-server}/file-operations.js +0 -0
  482. /package/esm/{dev2-server → dev-server}/files-watcher.d.ts +0 -0
  483. /package/esm/{dev2-server → dev-server}/flags.d.ts +0 -0
  484. /package/esm/{dev2-server → dev-server}/flags.js +0 -0
  485. /package/esm/{dev2-server → dev-server}/health-checker/checkers/base-health-checker.d.ts +0 -0
  486. /package/esm/{dev2-server → dev-server}/health-checker/checkers/base-health-checker.js +0 -0
  487. /package/esm/{dev2-server → dev-server}/health-checker/checkers/eslint-health-checker.d.ts +0 -0
  488. /package/esm/{dev2-server → dev-server}/health-checker/checkers/eslint-health-checker.js +0 -0
  489. /package/esm/{dev2-server → dev-server}/health-checker/checkers/typescript-health-checker.d.ts +0 -0
  490. /package/esm/{dev2-server → dev-server}/health-checker/checkers/typescript-health-checker.js +0 -0
  491. /package/esm/{dev2-server → dev-server}/health-checker/file-health-checker.contract.d.ts +0 -0
  492. /package/esm/{dev2-server → dev-server}/health-checker/file-health-result.d.ts +0 -0
  493. /package/esm/{dev2-server → dev-server}/health-checker/file-health-result.js +0 -0
  494. /package/esm/{dev2-server → dev-server}/health-checker/files-healthcare.manager.d.ts +0 -0
  495. /package/esm/{dev2-server → dev-server}/health-checker/files-healthcare.manager.js +0 -0
  496. /package/esm/{dev2-server → dev-server}/health-checker/index.d.ts +0 -0
  497. /package/esm/{dev2-server → dev-server}/health-checker/workers/eslint-health.worker.d.ts +0 -0
  498. /package/esm/{dev2-server → dev-server}/health-checker/workers/eslint-health.worker.js +0 -0
  499. /package/esm/{dev2-server → dev-server}/health-checker/workers/ts-health.worker.d.ts +0 -0
  500. /package/esm/{dev2-server → dev-server}/health-checker/workers/ts-health.worker.js +0 -0
  501. /package/esm/{dev2-server → dev-server}/import-transformer.d.ts +0 -0
  502. /package/esm/{dev2-server → dev-server}/index.d.ts +0 -0
  503. /package/esm/{dev2-server → dev-server}/manifest-manager.d.ts +0 -0
  504. /package/esm/{dev2-server → dev-server}/manifest-manager.js +0 -0
  505. /package/esm/{dev2-server → dev-server}/package-json-manager.d.ts +0 -0
  506. /package/esm/{dev2-server → dev-server}/package-json-manager.js +0 -0
  507. /package/esm/{dev2-server → dev-server}/path.d.ts +0 -0
  508. /package/esm/{dev2-server → dev-server}/path.js +0 -0
  509. /package/esm/{dev2-server → dev-server}/runtime-import-helper.d.ts +0 -0
  510. /package/esm/{dev2-server → dev-server}/special-files-collector.d.ts +0 -0
  511. /package/esm/{dev2-server → dev-server}/special-files-collector.js +0 -0
  512. /package/esm/{dev2-server → dev-server}/start-development-server.d.ts +0 -0
  513. /package/esm/{dev2-server → dev-server}/start-development-server.js +0 -0
  514. /package/esm/{dev2-server → dev-server}/transpile-file.d.ts +0 -0
  515. /package/esm/{dev2-server → dev-server}/transpile-file.js +0 -0
  516. /package/esm/{dev2-server → dev-server}/tsconfig-manager.d.ts +0 -0
  517. /package/esm/{dev2-server → dev-server}/tsconfig-manager.js +0 -0
  518. /package/esm/{dev2-server → dev-server}/type-generator.d.ts +0 -0
  519. /package/esm/{dev2-server → dev-server}/type-generator.js +0 -0
  520. /package/esm/{dev2-server → dev-server}/types.d.ts +0 -0
  521. /package/esm/{dev2-server → dev-server}/utils.d.ts +0 -0
@@ -0,0 +1,47 @@
1
+ import type { BenchmarkErrorResult, BenchmarkSnapshotsOptions, BenchmarkSuccessResult } from "./types";
2
+ export declare class BenchmarkSnapshots {
3
+ private readonly maxSnapshots;
4
+ private readonly capture;
5
+ private readonly snapshots;
6
+ constructor(options?: BenchmarkSnapshotsOptions);
7
+ /**
8
+ * Record a raw result. Called automatically by measure() when a snapshotContainer is set.
9
+ * Respects the `capture` setting — ignores results that don't match.
10
+ *
11
+ * @param result - The success or error result to record.
12
+ *
13
+ * @example
14
+ * snapshots.record(result);
15
+ */
16
+ record(result: BenchmarkSuccessResult<unknown> | BenchmarkErrorResult): void;
17
+ /**
18
+ * Get all snapshots for one operation name.
19
+ *
20
+ * @param name - The operation name.
21
+ * @returns Array of snapshots for the operation.
22
+ *
23
+ * @example
24
+ * snapshots.getSnapshots("db-query");
25
+ */
26
+ getSnapshots(name: string): (BenchmarkSuccessResult<unknown> | BenchmarkErrorResult)[];
27
+ /**
28
+ * Get all snapshots for all tracked operations.
29
+ *
30
+ * @returns A mapping of operation names to their snapshots array.
31
+ *
32
+ * @example
33
+ * snapshots.allSnapshots();
34
+ */
35
+ allSnapshots(): Record<string, (BenchmarkSuccessResult<unknown> | BenchmarkErrorResult)[]>;
36
+ /**
37
+ * Clear snapshots for one or all operations.
38
+ *
39
+ * @param name - Optional operation name. If omitted, clears all snapshots.
40
+ *
41
+ * @example
42
+ * snapshots.reset("db-query");
43
+ * snapshots.reset();
44
+ */
45
+ reset(name?: string): void;
46
+ }
47
+ //# sourceMappingURL=benchmark-snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-snapshots.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark-snapshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;gBAEe,OAAO,CAAC,EAAE,yBAAyB;IAKtD;;;;;;;;OAQG;IACI,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,GAAG,IAAI;IAkBnF;;;;;;;;OAQG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,EAAE;IAI7F;;;;;;;OAOG;IACI,YAAY,IAAI,MAAM,CAC3B,MAAM,EACN,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAC3D;IAUD;;;;;;;;OAQG;IACI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAOlC"}
@@ -0,0 +1,77 @@
1
+ class BenchmarkSnapshots {
2
+ maxSnapshots;
3
+ capture;
4
+ snapshots = new Map();
5
+ constructor(options) {
6
+ this.maxSnapshots = options?.maxSnapshots ?? 100;
7
+ this.capture = options?.capture ?? "error";
8
+ }
9
+ /**
10
+ * Record a raw result. Called automatically by measure() when a snapshotContainer is set.
11
+ * Respects the `capture` setting — ignores results that don't match.
12
+ *
13
+ * @param result - The success or error result to record.
14
+ *
15
+ * @example
16
+ * snapshots.record(result);
17
+ */
18
+ record(result) {
19
+ if (this.capture === "error" && result.success)
20
+ return;
21
+ if (this.capture === "value" && !result.success)
22
+ return;
23
+ let list = this.snapshots.get(result.name);
24
+ if (!list) {
25
+ list = [];
26
+ this.snapshots.set(result.name, list);
27
+ }
28
+ if (list.length >= this.maxSnapshots && this.maxSnapshots > 0) {
29
+ list.shift(); // Evict oldest
30
+ }
31
+ list.push(result);
32
+ }
33
+ /**
34
+ * Get all snapshots for one operation name.
35
+ *
36
+ * @param name - The operation name.
37
+ * @returns Array of snapshots for the operation.
38
+ *
39
+ * @example
40
+ * snapshots.getSnapshots("db-query");
41
+ */
42
+ getSnapshots(name) {
43
+ return this.snapshots.get(name) ?? [];
44
+ }
45
+ /**
46
+ * Get all snapshots for all tracked operations.
47
+ *
48
+ * @returns A mapping of operation names to their snapshots array.
49
+ *
50
+ * @example
51
+ * snapshots.allSnapshots();
52
+ */
53
+ allSnapshots() {
54
+ const all = {};
55
+ for (const [name, list] of this.snapshots.entries()) {
56
+ all[name] = [...list];
57
+ }
58
+ return all;
59
+ }
60
+ /**
61
+ * Clear snapshots for one or all operations.
62
+ *
63
+ * @param name - Optional operation name. If omitted, clears all snapshots.
64
+ *
65
+ * @example
66
+ * snapshots.reset("db-query");
67
+ * snapshots.reset();
68
+ */
69
+ reset(name) {
70
+ if (name) {
71
+ this.snapshots.delete(name);
72
+ }
73
+ else {
74
+ this.snapshots.clear();
75
+ }
76
+ }
77
+ }export{BenchmarkSnapshots};//# sourceMappingURL=benchmark-snapshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-snapshots.js","sources":["../../src/benchmark/benchmark-snapshots.ts"],"sourcesContent":[null],"names":[],"mappings":"MAMa,kBAAkB,CAAA;AACZ,IAAA,YAAY,CAAS;AACrB,IAAA,OAAO,CAA4B;AACnC,IAAA,SAAS,GAAG,IAAI,GAAG,EAGjC,CAAC;AAEJ,IAAA,WAAA,CAAmB,OAAmC,EAAA;QACpD,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC;KAC5C;AAED;;;;;;;;AAQG;AACI,IAAA,MAAM,CAAC,MAA8D,EAAA;QAC1E,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QACvD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;AAExD,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnB;AAED;;;;;;;;AAQG;AACI,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KACvC;AAED;;;;;;;AAOG;IACI,YAAY,GAAA;QAIjB,MAAM,GAAG,GAA+E,EAAE,CAAC;AAE3F,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;YACnD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACvB,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;;;;;AAQG;AACI,IAAA,KAAK,CAAC,IAAa,EAAA;AACxB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;AACF"}
@@ -0,0 +1,25 @@
1
+ import type { BenchmarkErrorResult, BenchmarkOptions, BenchmarkSuccessResult } from "./types";
2
+ /**
3
+ * Measure the execution time of a function and classify its performance.
4
+ *
5
+ * When `enabled` is false, fn() is still called but no timing runs and no hooks fire.
6
+ * A zeroed SuccessResult is returned to keep the return type stable for all callers.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const result = await measure("db-query", () => db.query("SELECT 1"), {
11
+ * latencyRange: { excellent: 100, poor: 500 },
12
+ * onComplete: (r) => metrics.record(r.latency),
13
+ * onError: (r) => logger.error("query failed", r.error),
14
+ * onFinish: (r) => logger.info(`${r.name} took ${r.latency}ms`),
15
+ * });
16
+ *
17
+ * if (isSuccessResult(result)) {
18
+ * console.log(result.value);
19
+ * } else {
20
+ * console.error(result.error);
21
+ * }
22
+ * ```
23
+ */
24
+ export declare function measure<T>(name: string, fn: () => T | Promise<T>, options?: BenchmarkOptions<T>): Promise<BenchmarkSuccessResult<T> | BenchmarkErrorResult>;
25
+ //# sourceMappingURL=benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAmBjB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAkG3D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=benchmark.example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.example.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.example.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ import {config}from'../config/config-getter.js';import'../config/config-handlers.js';/**
2
+ * Classifies latency into "excellent", "good", or "poor" based on thresholds.
3
+ *
4
+ * @example
5
+ * latencyState(80, { excellent: 100, poor: 500 }) // "excellent"
6
+ * latencyState(300, { excellent: 100, poor: 500 }) // "good"
7
+ * latencyState(600, { excellent: 100, poor: 500 }) // "poor"
8
+ */
9
+ function latencyState(latency, range) {
10
+ if (latency <= range.excellent)
11
+ return "excellent";
12
+ if (latency >= range.poor)
13
+ return "poor";
14
+ return "good";
15
+ }
16
+ /**
17
+ * Measure the execution time of a function and classify its performance.
18
+ *
19
+ * When `enabled` is false, fn() is still called but no timing runs and no hooks fire.
20
+ * A zeroed SuccessResult is returned to keep the return type stable for all callers.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const result = await measure("db-query", () => db.query("SELECT 1"), {
25
+ * latencyRange: { excellent: 100, poor: 500 },
26
+ * onComplete: (r) => metrics.record(r.latency),
27
+ * onError: (r) => logger.error("query failed", r.error),
28
+ * onFinish: (r) => logger.info(`${r.name} took ${r.latency}ms`),
29
+ * });
30
+ *
31
+ * if (isSuccessResult(result)) {
32
+ * console.log(result.value);
33
+ * } else {
34
+ * console.error(result.error);
35
+ * }
36
+ * ```
37
+ */
38
+ async function measure(name, fn, options) {
39
+ // Fast path: disabled — call fn() and return a zeroed success wrapper.
40
+ // No timing, no hooks. Re-throws if fn() throws.
41
+ if (options?.enabled === false) {
42
+ const value = await fn();
43
+ return {
44
+ name,
45
+ success: true,
46
+ value,
47
+ latency: 0,
48
+ state: "excellent",
49
+ tags: options.tags,
50
+ startedAt: new Date(),
51
+ endedAt: new Date(),
52
+ };
53
+ }
54
+ // Resolve latency range from inline options or global config
55
+ const benchmarkConfig = config.get("benchmark");
56
+ const latencyRange = options?.latencyRange ?? benchmarkConfig?.latencyRange;
57
+ const startedAt = new Date();
58
+ const startTime = performance.now();
59
+ const profiler = options?.profiler ?? benchmarkConfig?.profiler;
60
+ const snapshotContainer = options?.snapshotContainer ?? benchmarkConfig?.snapshotContainer;
61
+ try {
62
+ const value = await fn();
63
+ const endTime = performance.now();
64
+ const latency = Math.round(endTime - startTime);
65
+ const state = latencyRange ? latencyState(latency, latencyRange) : "good";
66
+ const result = {
67
+ name,
68
+ success: true,
69
+ value,
70
+ latency,
71
+ state,
72
+ tags: options?.tags,
73
+ startedAt,
74
+ endedAt: new Date(),
75
+ };
76
+ if (profiler) {
77
+ profiler.record(result);
78
+ }
79
+ if (snapshotContainer) {
80
+ snapshotContainer.record(result);
81
+ }
82
+ options?.onComplete?.(result);
83
+ options?.onFinish?.(result);
84
+ return result;
85
+ }
86
+ catch (thrown) {
87
+ // Decide whether to benchmark this error or just re-throw immediately
88
+ const shouldBenchmark = options?.shouldBenchmarkError
89
+ ? options.shouldBenchmarkError(thrown)
90
+ : true;
91
+ if (!shouldBenchmark) {
92
+ throw thrown;
93
+ }
94
+ // Capture timing even on failure — a 30s timeout is very different from a 2ms crash
95
+ const endTime = performance.now();
96
+ const latency = Math.round(endTime - startTime);
97
+ const state = latencyRange ? latencyState(latency, latencyRange) : "poor";
98
+ // Normalize thrown value to something consistent
99
+ const error = thrown instanceof Error ? thrown : new Error(String(thrown));
100
+ const result = {
101
+ name,
102
+ success: false,
103
+ error,
104
+ latency,
105
+ state,
106
+ tags: options?.tags,
107
+ startedAt,
108
+ endedAt: new Date(),
109
+ };
110
+ if (profiler) {
111
+ profiler.record(result);
112
+ }
113
+ if (snapshotContainer) {
114
+ snapshotContainer.record(result);
115
+ }
116
+ options?.onError?.(result);
117
+ options?.onFinish?.(result);
118
+ return result;
119
+ }
120
+ }export{measure};//# sourceMappingURL=benchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.js","sources":["../../src/benchmark/benchmark.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { BenchmarkChannel, BenchmarkStats } from "../types";
2
+ export declare class ConsoleChannel implements BenchmarkChannel {
3
+ /**
4
+ * Pretty-prints a stats table per operation on onFlush().
5
+ *
6
+ * @param stats - Aggregated stats for all tracked operations.
7
+ *
8
+ * @example
9
+ * const channel = new ConsoleChannel();
10
+ * channel.onFlush({ "db-query": { p50: 10, count: 100, ... } });
11
+ */
12
+ onFlush(stats: Record<string, BenchmarkStats>): void;
13
+ }
14
+ //# sourceMappingURL=console.channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.channel.d.ts","sourceRoot":"","sources":["../../../src/benchmark/channels/console.channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEjE,qBAAa,cAAe,YAAW,gBAAgB;IACrD;;;;;;;;OAQG;IACI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI;CAoB5D"}
@@ -0,0 +1,29 @@
1
+ class ConsoleChannel {
2
+ /**
3
+ * Pretty-prints a stats table per operation on onFlush().
4
+ *
5
+ * @param stats - Aggregated stats for all tracked operations.
6
+ *
7
+ * @example
8
+ * const channel = new ConsoleChannel();
9
+ * channel.onFlush({ "db-query": { p50: 10, count: 100, ... } });
10
+ */
11
+ onFlush(stats) {
12
+ const tableData = {};
13
+ for (const [name, operationStats] of Object.entries(stats)) {
14
+ tableData[name] = {
15
+ "p50 (ms)": operationStats.p50,
16
+ "p90 (ms)": operationStats.p90,
17
+ "p95 (ms)": operationStats.p95,
18
+ "p99 (ms)": operationStats.p99,
19
+ "Avg (ms)": operationStats.avg,
20
+ "Min (ms)": operationStats.min,
21
+ "Max (ms)": operationStats.max,
22
+ "Error Rate": `${(operationStats.errorRate * 100).toFixed(2)}%`,
23
+ Errors: operationStats.errors,
24
+ Count: operationStats.count,
25
+ };
26
+ }
27
+ console.table(tableData);
28
+ }
29
+ }export{ConsoleChannel};//# sourceMappingURL=console.channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.channel.js","sources":["../../../src/benchmark/channels/console.channel.ts"],"sourcesContent":[null],"names":[],"mappings":"MAEa,cAAc,CAAA;AACzB;;;;;;;;AAQG;AACI,IAAA,OAAO,CAAC,KAAqC,EAAA;QAClD,MAAM,SAAS,GAAwB,EAAE,CAAC;AAE1C,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1D,SAAS,CAAC,IAAI,CAAC,GAAG;gBAChB,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;AAC9B,gBAAA,YAAY,EAAE,CAAA,EAAG,CAAC,cAAc,CAAC,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAG,CAAA,CAAA;gBAC/D,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,KAAK,EAAE,cAAc,CAAC,KAAK;aAC5B,CAAC;AACH,SAAA;AAED,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC1B;AACF"}
@@ -0,0 +1,3 @@
1
+ export { ConsoleChannel } from "./console.channel";
2
+ export { NoopChannel } from "./noop.channel";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/benchmark/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { BenchmarkChannel } from "../types";
2
+ export declare class NoopChannel implements BenchmarkChannel {
3
+ onFlush(): void;
4
+ }
5
+ //# sourceMappingURL=noop.channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.channel.d.ts","sourceRoot":"","sources":["../../../src/benchmark/channels/noop.channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,qBAAa,WAAY,YAAW,gBAAgB;IAC3C,OAAO,IAAI,IAAI;CACvB"}
@@ -0,0 +1,3 @@
1
+ class NoopChannel {
2
+ onFlush() { }
3
+ }export{NoopChannel};//# sourceMappingURL=noop.channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.channel.js","sources":["../../../src/benchmark/channels/noop.channel.ts"],"sourcesContent":[null],"names":[],"mappings":"MAEa,WAAW,CAAA;AACf,IAAA,OAAO,MAAW;AAC1B"}
@@ -0,0 +1,7 @@
1
+ export * from "./benchmark";
2
+ export { BenchmarkSnapshots } from "./benchmark-snapshots";
3
+ export { ConsoleChannel } from "./channels/console.channel";
4
+ export { NoopChannel } from "./channels/noop.channel";
5
+ export { BenchmarkProfiler } from "./profiler";
6
+ export type { BenchmarkChannel, BenchmarkConfigurations, BenchmarkErrorResult, BenchmarkOptions, BenchmarkProfilerOptions, BenchmarkResult, BenchmarkSnapshotsOptions, BenchmarkStats, BenchmarkSuccessResult, } from "./types";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/benchmark/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { BenchmarkErrorResult, BenchmarkProfilerOptions, BenchmarkStats, BenchmarkSuccessResult } from "./types";
2
+ export declare class BenchmarkProfiler {
3
+ private readonly maxSamples;
4
+ private readonly channels;
5
+ private readonly entries;
6
+ private interval?;
7
+ constructor(options?: BenchmarkProfilerOptions);
8
+ /**
9
+ * Record one measurement result. Called automatically by measure() when a profiler is set.
10
+ *
11
+ * @param result - The success or error result from measure()
12
+ *
13
+ * @example
14
+ * profiler.record(result);
15
+ */
16
+ record(result: BenchmarkSuccessResult<unknown> | BenchmarkErrorResult): void;
17
+ /**
18
+ * Get aggregated stats for one operation name.
19
+ * Computes p50/p95/p99 by sorting the ring buffer on demand.
20
+ *
21
+ * @param name - The operation name to get stats for.
22
+ * @returns Stats object or undefined if no data yet.
23
+ *
24
+ * @example
25
+ * const stats = profiler.stats("db-query");
26
+ */
27
+ stats(name: string): BenchmarkStats | undefined;
28
+ /**
29
+ * Get stats for all tracked operations.
30
+ *
31
+ * @returns A record mapping operation names to their stats.
32
+ *
33
+ * @example
34
+ * const all = profiler.allStats();
35
+ */
36
+ allStats(): Record<string, BenchmarkStats>;
37
+ /**
38
+ * Send allStats() to all registered channels.
39
+ *
40
+ * @example
41
+ * await profiler.flush();
42
+ */
43
+ flush(): Promise<void>;
44
+ /**
45
+ * Clear ring buffer for one or all operations.
46
+ * Does NOT reset unbounded total/error counters.
47
+ *
48
+ * @param name - Optional operation name. If omitted, clears all ring buffers.
49
+ *
50
+ * @example
51
+ * profiler.reset("db-query");
52
+ * profiler.reset();
53
+ */
54
+ reset(name?: string): void;
55
+ /**
56
+ * Dispose the profiler, clearing its auto-flush interval.
57
+ *
58
+ * @example
59
+ * profiler.dispose();
60
+ */
61
+ dispose(): void;
62
+ }
63
+ //# sourceMappingURL=profiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/benchmark/profiler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAWjB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,CAAiC;gBAE/B,OAAO,CAAC,EAAE,wBAAwB;IAYrD;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,GAAG,IAAI;IAmCnF;;;;;;;;;OASG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IA4BtD;;;;;;;OAOG;IACI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAWjD;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IASnC;;;;;;;;;OASG;IACI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAejC;;;;;OAKG;IACI,OAAO,IAAI,IAAI;CAMvB"}
@@ -0,0 +1,155 @@
1
+ import {NoopChannel}from'./channels/noop.channel.js';class BenchmarkProfiler {
2
+ maxSamples;
3
+ channels;
4
+ entries = new Map();
5
+ interval;
6
+ constructor(options) {
7
+ this.maxSamples = options?.maxSamples ?? 1000;
8
+ this.channels = options?.channels ?? [new NoopChannel()];
9
+ if (options?.flushEvery) {
10
+ this.interval = setInterval(() => {
11
+ // We use void to explicitly ignore the promise, as this is a background interval
12
+ void this.flush();
13
+ }, options.flushEvery);
14
+ }
15
+ }
16
+ /**
17
+ * Record one measurement result. Called automatically by measure() when a profiler is set.
18
+ *
19
+ * @param result - The success or error result from measure()
20
+ *
21
+ * @example
22
+ * profiler.record(result);
23
+ */
24
+ record(result) {
25
+ let entry = this.entries.get(result.name);
26
+ if (!entry) {
27
+ entry = {
28
+ latencies: [],
29
+ sum: 0,
30
+ total: 0,
31
+ errors: 0,
32
+ firstSeenAt: result.startedAt,
33
+ lastSeenAt: result.endedAt,
34
+ };
35
+ this.entries.set(result.name, entry);
36
+ }
37
+ entry.latencies.push(result.latency);
38
+ entry.sum += result.latency;
39
+ if (entry.latencies.length > this.maxSamples) {
40
+ const removed = entry.latencies.shift();
41
+ if (removed !== undefined) {
42
+ entry.sum -= removed;
43
+ }
44
+ }
45
+ entry.total += 1;
46
+ if (!result.success) {
47
+ entry.errors += 1;
48
+ }
49
+ entry.lastSeenAt = result.endedAt;
50
+ }
51
+ /**
52
+ * Get aggregated stats for one operation name.
53
+ * Computes p50/p95/p99 by sorting the ring buffer on demand.
54
+ *
55
+ * @param name - The operation name to get stats for.
56
+ * @returns Stats object or undefined if no data yet.
57
+ *
58
+ * @example
59
+ * const stats = profiler.stats("db-query");
60
+ */
61
+ stats(name) {
62
+ const entry = this.entries.get(name);
63
+ if (!entry || entry.latencies.length === 0)
64
+ return undefined;
65
+ const latencies = [...entry.latencies].sort((a, b) => a - b);
66
+ const count = latencies.length;
67
+ const getP = (percentile) => {
68
+ const index = Math.min(count - 1, Math.floor(count * percentile));
69
+ return latencies[index];
70
+ };
71
+ return {
72
+ p50: getP(0.5),
73
+ p90: getP(0.9),
74
+ p95: getP(0.95),
75
+ p99: getP(0.99),
76
+ avg: Math.round((entry.sum / count) * 100) / 100,
77
+ min: latencies[0],
78
+ max: latencies[count - 1],
79
+ count: entry.total,
80
+ errors: entry.errors,
81
+ errorRate: Math.round((entry.errors / entry.total) * 100) / 100,
82
+ firstSeenAt: entry.firstSeenAt,
83
+ lastSeenAt: entry.lastSeenAt,
84
+ };
85
+ }
86
+ /**
87
+ * Get stats for all tracked operations.
88
+ *
89
+ * @returns A record mapping operation names to their stats.
90
+ *
91
+ * @example
92
+ * const all = profiler.allStats();
93
+ */
94
+ allStats() {
95
+ const all = {};
96
+ for (const name of this.entries.keys()) {
97
+ const operationStats = this.stats(name);
98
+ if (operationStats) {
99
+ all[name] = operationStats;
100
+ }
101
+ }
102
+ return all;
103
+ }
104
+ /**
105
+ * Send allStats() to all registered channels.
106
+ *
107
+ * @example
108
+ * await profiler.flush();
109
+ */
110
+ async flush() {
111
+ const stats = this.allStats();
112
+ if (Object.keys(stats).length === 0)
113
+ return;
114
+ for (const channel of this.channels) {
115
+ await channel.onFlush(stats);
116
+ }
117
+ }
118
+ /**
119
+ * Clear ring buffer for one or all operations.
120
+ * Does NOT reset unbounded total/error counters.
121
+ *
122
+ * @param name - Optional operation name. If omitted, clears all ring buffers.
123
+ *
124
+ * @example
125
+ * profiler.reset("db-query");
126
+ * profiler.reset();
127
+ */
128
+ reset(name) {
129
+ if (name) {
130
+ const entry = this.entries.get(name);
131
+ if (entry) {
132
+ entry.latencies = [];
133
+ entry.sum = 0;
134
+ }
135
+ }
136
+ else {
137
+ for (const entry of this.entries.values()) {
138
+ entry.latencies = [];
139
+ entry.sum = 0;
140
+ }
141
+ }
142
+ }
143
+ /**
144
+ * Dispose the profiler, clearing its auto-flush interval.
145
+ *
146
+ * @example
147
+ * profiler.dispose();
148
+ */
149
+ dispose() {
150
+ if (this.interval) {
151
+ clearInterval(this.interval);
152
+ this.interval = undefined;
153
+ }
154
+ }
155
+ }export{BenchmarkProfiler};//# sourceMappingURL=profiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiler.js","sources":["../../src/benchmark/profiler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}