@bgord/bun 1.20.5 → 1.21.1

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 (666) hide show
  1. package/dist/ab-assignment-composite.strategy.d.ts +4 -2
  2. package/dist/ab-assignment-composite.strategy.d.ts.map +1 -1
  3. package/dist/ab-assignment-composite.strategy.js +5 -2
  4. package/dist/ab-assignment-composite.strategy.js.map +1 -1
  5. package/dist/ab-assignment-cookie.strategy.d.ts +3 -2
  6. package/dist/ab-assignment-cookie.strategy.d.ts.map +1 -1
  7. package/dist/ab-assignment-cookie.strategy.js +5 -3
  8. package/dist/ab-assignment-cookie.strategy.js.map +1 -1
  9. package/dist/ab-assignment-fixed.strategy.d.ts +1 -2
  10. package/dist/ab-assignment-fixed.strategy.d.ts.map +1 -1
  11. package/dist/ab-assignment-fixed.strategy.js +1 -1
  12. package/dist/ab-assignment-fixed.strategy.js.map +1 -1
  13. package/dist/ab-assignment-hash.strategy.d.ts +1 -1
  14. package/dist/ab-assignment-hash.strategy.d.ts.map +1 -1
  15. package/dist/ab-assignment-hash.strategy.js +1 -1
  16. package/dist/ab-assignment-hash.strategy.js.map +1 -1
  17. package/dist/ab-assignment-header.strategy.d.ts +3 -2
  18. package/dist/ab-assignment-header.strategy.d.ts.map +1 -1
  19. package/dist/ab-assignment-header.strategy.js +5 -3
  20. package/dist/ab-assignment-header.strategy.js.map +1 -1
  21. package/dist/ab-assignment-query.strategy.d.ts +3 -2
  22. package/dist/ab-assignment-query.strategy.d.ts.map +1 -1
  23. package/dist/ab-assignment-query.strategy.js +5 -3
  24. package/dist/ab-assignment-query.strategy.js.map +1 -1
  25. package/dist/ab-assignment.strategy.d.ts +1 -2
  26. package/dist/ab-assignment.strategy.d.ts.map +1 -1
  27. package/dist/ab-hono-noop.middleware.d.ts +4 -1
  28. package/dist/ab-hono-noop.middleware.d.ts.map +1 -1
  29. package/dist/ab-hono-noop.middleware.js.map +1 -1
  30. package/dist/ab-hono.middleware.d.ts +4 -3
  31. package/dist/ab-hono.middleware.d.ts.map +1 -1
  32. package/dist/ab-hono.middleware.js +7 -4
  33. package/dist/ab-hono.middleware.js.map +1 -1
  34. package/dist/ab.middleware.d.ts +1 -3
  35. package/dist/ab.middleware.d.ts.map +1 -1
  36. package/dist/ab.middleware.js +2 -4
  37. package/dist/ab.middleware.js.map +1 -1
  38. package/dist/alert-channel-composite.adapter.d.ts +1 -0
  39. package/dist/alert-channel-composite.adapter.d.ts.map +1 -1
  40. package/dist/alert-channel-composite.adapter.js +6 -1
  41. package/dist/alert-channel-composite.adapter.js.map +1 -1
  42. package/dist/alert-channel-with-logger.adapter.js +1 -1
  43. package/dist/alert-channel-with-logger.adapter.js.map +1 -1
  44. package/dist/antivirus-clamav.adapter.d.ts.map +1 -1
  45. package/dist/antivirus-clamav.adapter.js +3 -4
  46. package/dist/antivirus-clamav.adapter.js.map +1 -1
  47. package/dist/antivirus-with-logger.adapter.js +2 -2
  48. package/dist/antivirus-with-logger.adapter.js.map +1 -1
  49. package/dist/api-version-hono.middleware.d.ts +2 -11
  50. package/dist/api-version-hono.middleware.d.ts.map +1 -1
  51. package/dist/api-version-hono.middleware.js +6 -3
  52. package/dist/api-version-hono.middleware.js.map +1 -1
  53. package/dist/api-version.middleware.d.ts +2 -3
  54. package/dist/api-version.middleware.d.ts.map +1 -1
  55. package/dist/api-version.middleware.js.map +1 -1
  56. package/dist/auth-session-reader-noop.adapter.d.ts +2 -2
  57. package/dist/auth-session-reader-noop.adapter.d.ts.map +1 -1
  58. package/dist/better-auth-logger.service.d.ts.map +1 -1
  59. package/dist/better-auth-logger.service.js +6 -0
  60. package/dist/better-auth-logger.service.js.map +1 -1
  61. package/dist/cache-file.service.d.ts.map +1 -1
  62. package/dist/cache-file.service.js +4 -2
  63. package/dist/cache-file.service.js.map +1 -1
  64. package/dist/cache-repository-node-cache.adapter.d.ts.map +1 -1
  65. package/dist/cache-repository-node-cache.adapter.js +4 -1
  66. package/dist/cache-repository-node-cache.adapter.js.map +1 -1
  67. package/dist/cache-response-hono.middleware.d.ts +2 -7
  68. package/dist/cache-response-hono.middleware.d.ts.map +1 -1
  69. package/dist/cache-response-hono.middleware.js +1 -1
  70. package/dist/cache-response-hono.middleware.js.map +1 -1
  71. package/dist/cache-response.middleware.d.ts +3 -4
  72. package/dist/cache-response.middleware.d.ts.map +1 -1
  73. package/dist/cache-response.middleware.js.map +1 -1
  74. package/dist/certificate-inspector-tls.adapter.d.ts.map +1 -1
  75. package/dist/certificate-inspector-tls.adapter.js +19 -16
  76. package/dist/certificate-inspector-tls.adapter.js.map +1 -1
  77. package/dist/correlation-hono.middleware.d.ts +5 -7
  78. package/dist/correlation-hono.middleware.d.ts.map +1 -1
  79. package/dist/correlation-hono.middleware.js +4 -2
  80. package/dist/correlation-hono.middleware.js.map +1 -1
  81. package/dist/correlation.middleware.d.ts +2 -3
  82. package/dist/correlation.middleware.d.ts.map +1 -1
  83. package/dist/correlation.middleware.js.map +1 -1
  84. package/dist/cron-scheduler.adapter.d.ts +1 -0
  85. package/dist/cron-scheduler.adapter.d.ts.map +1 -1
  86. package/dist/cron-scheduler.adapter.js +3 -2
  87. package/dist/cron-scheduler.adapter.js.map +1 -1
  88. package/dist/cron-task-handler-with-logger.strategy.js +7 -7
  89. package/dist/cron-task-handler-with-logger.strategy.js.map +1 -1
  90. package/dist/csv-stringifier.adapter.d.ts +1 -1
  91. package/dist/csv-stringifier.adapter.d.ts.map +1 -1
  92. package/dist/csv-stringifier.adapter.js +1 -1
  93. package/dist/csv-stringifier.adapter.js.map +1 -1
  94. package/dist/{disk-space-checker-shell.adapter.d.ts → disk-space-checker-fs.adapter.d.ts} +2 -2
  95. package/dist/disk-space-checker-fs.adapter.d.ts.map +1 -0
  96. package/dist/disk-space-checker-fs.adapter.js +10 -0
  97. package/dist/disk-space-checker-fs.adapter.js.map +1 -0
  98. package/dist/dynamic-import.service.js +2 -2
  99. package/dist/dynamic-import.service.js.map +1 -1
  100. package/dist/environment-loader-process-safe.adapter.d.ts.map +1 -1
  101. package/dist/environment-loader-process-safe.adapter.js +3 -1
  102. package/dist/environment-loader-process-safe.adapter.js.map +1 -1
  103. package/dist/environment-loader.port.d.ts +1 -1
  104. package/dist/environment-loader.port.d.ts.map +1 -1
  105. package/dist/etag-extractor-header.strategy.d.ts.map +1 -1
  106. package/dist/etag-extractor-header.strategy.js +2 -0
  107. package/dist/etag-extractor-header.strategy.js.map +1 -1
  108. package/dist/etag-extractor-hono.middleware.d.ts +3 -1
  109. package/dist/etag-extractor-hono.middleware.d.ts.map +1 -1
  110. package/dist/etag-extractor-param.strategy.d.ts.map +1 -1
  111. package/dist/etag-extractor-param.strategy.js +2 -0
  112. package/dist/etag-extractor-param.strategy.js.map +1 -1
  113. package/dist/etag-extractor.strategy.d.ts +2 -2
  114. package/dist/etag-extractor.strategy.d.ts.map +1 -1
  115. package/dist/file-inspection.adapter.js +4 -4
  116. package/dist/file-inspection.adapter.js.map +1 -1
  117. package/dist/file-reader-json-forgiving.adapter.js +1 -1
  118. package/dist/file-reader-json-forgiving.adapter.js.map +1 -1
  119. package/dist/graceful-shutdown.service.d.ts.map +1 -1
  120. package/dist/graceful-shutdown.service.js +3 -3
  121. package/dist/graceful-shutdown.service.js.map +1 -1
  122. package/dist/hash.vo.js +1 -1
  123. package/dist/hash.vo.js.map +1 -1
  124. package/dist/hcaptcha.service.d.ts +1 -2
  125. package/dist/hcaptcha.service.d.ts.map +1 -1
  126. package/dist/hcaptcha.service.js +1 -1
  127. package/dist/hcaptcha.service.js.map +1 -1
  128. package/dist/http-logger-hono.middleware.d.ts +2 -9
  129. package/dist/http-logger-hono.middleware.d.ts.map +1 -1
  130. package/dist/http-logger-hono.middleware.js +1 -1
  131. package/dist/http-logger-hono.middleware.js.map +1 -1
  132. package/dist/http-logger.middleware.d.ts +2 -3
  133. package/dist/http-logger.middleware.d.ts.map +1 -1
  134. package/dist/http-logger.middleware.js.map +1 -1
  135. package/dist/image-blur-noop.adapter.js +1 -1
  136. package/dist/image-blur-noop.adapter.js.map +1 -1
  137. package/dist/image-blur.adapter.d.ts.map +1 -1
  138. package/dist/image-blur.adapter.js +2 -4
  139. package/dist/image-blur.adapter.js.map +1 -1
  140. package/dist/image-blur.port.d.ts +1 -8
  141. package/dist/image-blur.port.d.ts.map +1 -1
  142. package/dist/in-flight-requests-hono.middleware.d.ts.map +1 -1
  143. package/dist/in-flight-requests-hono.middleware.js +1 -0
  144. package/dist/in-flight-requests-hono.middleware.js.map +1 -1
  145. package/dist/in-flight-requests-tracker.service.js +2 -2
  146. package/dist/in-flight-requests-tracker.service.js.map +1 -1
  147. package/dist/index.d.ts +4 -3
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +4 -3
  150. package/dist/index.js.map +1 -1
  151. package/dist/instrumentation.service.d.ts.map +1 -1
  152. package/dist/instrumentation.service.js +5 -2
  153. package/dist/instrumentation.service.js.map +1 -1
  154. package/dist/job-queue-sqlite-store.service.d.ts.map +1 -1
  155. package/dist/job-queue-sqlite-store.service.js +1 -0
  156. package/dist/job-queue-sqlite-store.service.js.map +1 -1
  157. package/dist/job-queue-with-logger.adapter.d.ts +1 -1
  158. package/dist/job-queue-with-logger.adapter.d.ts.map +1 -1
  159. package/dist/job-queue-with-logger.adapter.js +2 -2
  160. package/dist/job-queue-with-logger.adapter.js.map +1 -1
  161. package/dist/language-detector-cookie.strategy.js +1 -1
  162. package/dist/language-detector-cookie.strategy.js.map +1 -1
  163. package/dist/language-detector-header.strategy.d.ts.map +1 -1
  164. package/dist/language-detector-header.strategy.js +12 -1
  165. package/dist/language-detector-header.strategy.js.map +1 -1
  166. package/dist/language-detector-hono.middleware.d.ts +3 -1
  167. package/dist/language-detector-hono.middleware.d.ts.map +1 -1
  168. package/dist/language-detector-query.strategy.js +1 -1
  169. package/dist/language-detector-query.strategy.js.map +1 -1
  170. package/dist/language-detector.middleware.d.ts +2 -2
  171. package/dist/language-detector.middleware.d.ts.map +1 -1
  172. package/dist/language-detector.middleware.js.map +1 -1
  173. package/dist/language-detector.strategy.d.ts +2 -2
  174. package/dist/language-detector.strategy.d.ts.map +1 -1
  175. package/dist/liveness-hono.handler.d.ts.map +1 -1
  176. package/dist/liveness-hono.handler.js +4 -1
  177. package/dist/liveness-hono.handler.js.map +1 -1
  178. package/dist/liveness.handler.d.ts +1 -0
  179. package/dist/liveness.handler.d.ts.map +1 -1
  180. package/dist/liveness.handler.js +1 -1
  181. package/dist/liveness.handler.js.map +1 -1
  182. package/dist/mailer-content-html.vo.d.ts +1 -5
  183. package/dist/mailer-content-html.vo.d.ts.map +1 -1
  184. package/dist/mailer-content-html.vo.js +1 -1
  185. package/dist/mailer-content-html.vo.js.map +1 -1
  186. package/dist/mailer-smtp.adapter.d.ts.map +1 -1
  187. package/dist/mailer-smtp.adapter.js +1 -0
  188. package/dist/mailer-smtp.adapter.js.map +1 -1
  189. package/dist/mailer-with-logger.adapter.js +2 -2
  190. package/dist/mailer-with-logger.adapter.js.map +1 -1
  191. package/dist/markdown-generator.adapter.js +1 -1
  192. package/dist/markdown-generator.adapter.js.map +1 -1
  193. package/dist/memory-consumption.service.d.ts +0 -1
  194. package/dist/memory-consumption.service.d.ts.map +1 -1
  195. package/dist/memory-consumption.service.js +0 -3
  196. package/dist/memory-consumption.service.js.map +1 -1
  197. package/dist/modules/system/jobs/SEND_EMAIL_JOB.d.ts +1 -1
  198. package/dist/nonce-provider-crypto.adapter.js +1 -1
  199. package/dist/nonce-provider-crypto.adapter.js.map +1 -1
  200. package/dist/nonce-provider-noop.adapter.js +1 -1
  201. package/dist/nonce-provider-noop.adapter.js.map +1 -1
  202. package/dist/nonce-value.vo.js +2 -2
  203. package/dist/pdf-generator-with-logger.adapter.js +1 -1
  204. package/dist/pdf-generator-with-logger.adapter.js.map +1 -1
  205. package/dist/prerequisite-verifier-memory.adapter.js +1 -1
  206. package/dist/prerequisite-verifier-memory.adapter.js.map +1 -1
  207. package/dist/prerequisite-verifier-translations.adapter.d.ts.map +1 -1
  208. package/dist/prerequisite-verifier-translations.adapter.js +7 -11
  209. package/dist/prerequisite-verifier-translations.adapter.js.map +1 -1
  210. package/dist/prerequisite-verifier-with-logger.adapter.js +1 -1
  211. package/dist/prerequisite-verifier-with-logger.adapter.js.map +1 -1
  212. package/dist/randomness.strategy.d.ts.map +1 -1
  213. package/dist/reactive-config-noop.adapter.d.ts +0 -1
  214. package/dist/reactive-config-noop.adapter.d.ts.map +1 -1
  215. package/dist/reactive-config-noop.adapter.js +2 -4
  216. package/dist/reactive-config-noop.adapter.js.map +1 -1
  217. package/dist/reactive-config-with-cache.adapter.js +1 -1
  218. package/dist/reactive-config-with-cache.adapter.js.map +1 -1
  219. package/dist/reactive-config-with-fallback.adapter.d.ts +0 -1
  220. package/dist/reactive-config-with-fallback.adapter.d.ts.map +1 -1
  221. package/dist/reactive-config-with-fallback.adapter.js +2 -4
  222. package/dist/reactive-config-with-fallback.adapter.js.map +1 -1
  223. package/dist/reactive-config-with-logger.adapter.d.ts +15 -0
  224. package/dist/reactive-config-with-logger.adapter.d.ts.map +1 -0
  225. package/dist/reactive-config-with-logger.adapter.js +38 -0
  226. package/dist/reactive-config-with-logger.adapter.js.map +1 -0
  227. package/dist/readiness-hono.handler.d.ts +4 -7
  228. package/dist/readiness-hono.handler.d.ts.map +1 -1
  229. package/dist/readiness-hono.handler.js +2 -3
  230. package/dist/readiness-hono.handler.js.map +1 -1
  231. package/dist/readiness.handler.d.ts +6 -1
  232. package/dist/readiness.handler.d.ts.map +1 -1
  233. package/dist/readiness.handler.js +11 -1
  234. package/dist/readiness.handler.js.map +1 -1
  235. package/dist/redactor-metadata-compact-array.strategy.d.ts.map +1 -1
  236. package/dist/redactor-metadata-compact-array.strategy.js +2 -0
  237. package/dist/redactor-metadata-compact-array.strategy.js.map +1 -1
  238. package/dist/redactor-metadata-compact-object.strategy.d.ts.map +1 -1
  239. package/dist/redactor-metadata-compact-object.strategy.js +2 -0
  240. package/dist/redactor-metadata-compact-object.strategy.js.map +1 -1
  241. package/dist/redactor-url-query.strategy.d.ts +8 -0
  242. package/dist/redactor-url-query.strategy.d.ts.map +1 -0
  243. package/dist/redactor-url-query.strategy.js +26 -0
  244. package/dist/redactor-url-query.strategy.js.map +1 -0
  245. package/dist/remote-file-storage-disk.adapter.d.ts +2 -0
  246. package/dist/remote-file-storage-disk.adapter.d.ts.map +1 -1
  247. package/dist/remote-file-storage-disk.adapter.js +2 -5
  248. package/dist/remote-file-storage-disk.adapter.js.map +1 -1
  249. package/dist/request-context-hono.adapter.d.ts.map +1 -1
  250. package/dist/request-context-hono.adapter.js +2 -0
  251. package/dist/request-context-hono.adapter.js.map +1 -1
  252. package/dist/request-context.port.d.ts +13 -1
  253. package/dist/request-context.port.d.ts.map +1 -1
  254. package/dist/sealer-aes-gcm.adapter.d.ts +1 -0
  255. package/dist/sealer-aes-gcm.adapter.d.ts.map +1 -1
  256. package/dist/sealer-aes-gcm.adapter.js +6 -1
  257. package/dist/sealer-aes-gcm.adapter.js.map +1 -1
  258. package/dist/secure-key-generator-crypto.adapter.d.ts +1 -0
  259. package/dist/secure-key-generator-crypto.adapter.d.ts.map +1 -1
  260. package/dist/secure-key-generator-crypto.adapter.js +6 -1
  261. package/dist/secure-key-generator-crypto.adapter.js.map +1 -1
  262. package/dist/security-rule-bait-routes.strategy.js +1 -1
  263. package/dist/security-rule-bait-routes.strategy.js.map +1 -1
  264. package/dist/security-rule-honey-pot-field.strategy.d.ts +2 -2
  265. package/dist/security-rule-honey-pot-field.strategy.d.ts.map +1 -1
  266. package/dist/security-rule-honey-pot-field.strategy.js +3 -2
  267. package/dist/security-rule-honey-pot-field.strategy.js.map +1 -1
  268. package/dist/security-rule.strategy.d.ts +2 -4
  269. package/dist/security-rule.strategy.d.ts.map +1 -1
  270. package/dist/semaphore.service.d.ts +3 -1
  271. package/dist/semaphore.service.d.ts.map +1 -1
  272. package/dist/semaphore.service.js +13 -7
  273. package/dist/semaphore.service.js.map +1 -1
  274. package/dist/setup-hono.service.js +1 -1
  275. package/dist/setup-hono.service.js.map +1 -1
  276. package/dist/shield-api-key-hono.strategy.js +1 -1
  277. package/dist/shield-api-key.strategy.d.ts +1 -1
  278. package/dist/shield-api-key.strategy.d.ts.map +1 -1
  279. package/dist/shield-api-key.strategy.js +5 -4
  280. package/dist/shield-api-key.strategy.js.map +1 -1
  281. package/dist/shield-auth.strategy.d.ts +3 -2
  282. package/dist/shield-auth.strategy.d.ts.map +1 -1
  283. package/dist/shield-auth.strategy.js +10 -3
  284. package/dist/shield-auth.strategy.js.map +1 -1
  285. package/dist/shield-basic-auth-hono.strategy.d.ts +1 -0
  286. package/dist/shield-basic-auth-hono.strategy.d.ts.map +1 -1
  287. package/dist/shield-basic-auth-hono.strategy.js +8 -1
  288. package/dist/shield-basic-auth-hono.strategy.js.map +1 -1
  289. package/dist/shield-basic-auth.strategy.d.ts +1 -0
  290. package/dist/shield-basic-auth.strategy.d.ts.map +1 -1
  291. package/dist/shield-basic-auth.strategy.js +11 -3
  292. package/dist/shield-basic-auth.strategy.js.map +1 -1
  293. package/dist/shield-csrf.strategy.js +2 -2
  294. package/dist/shield-csrf.strategy.js.map +1 -1
  295. package/dist/shield-hcaptcha-hono-local.strategy.d.ts.map +1 -1
  296. package/dist/shield-hcaptcha-hono-local.strategy.js +3 -1
  297. package/dist/shield-hcaptcha-hono-local.strategy.js.map +1 -1
  298. package/dist/shield-hcaptcha.strategy.d.ts +2 -2
  299. package/dist/shield-hcaptcha.strategy.d.ts.map +1 -1
  300. package/dist/shield-hcaptcha.strategy.js +7 -2
  301. package/dist/shield-hcaptcha.strategy.js.map +1 -1
  302. package/dist/shield-ip-blacklist.strategy.d.ts +2 -2
  303. package/dist/shield-ip-blacklist.strategy.d.ts.map +1 -1
  304. package/dist/shield-ip-blacklist.strategy.js +2 -2
  305. package/dist/shield-ip-blacklist.strategy.js.map +1 -1
  306. package/dist/shield-ip-whitelist.strategy.d.ts +2 -2
  307. package/dist/shield-ip-whitelist.strategy.d.ts.map +1 -1
  308. package/dist/shield-ip-whitelist.strategy.js +1 -1
  309. package/dist/shield-ip-whitelist.strategy.js.map +1 -1
  310. package/dist/shield-maintenance-hono.strategy.d.ts.map +1 -1
  311. package/dist/shield-maintenance-hono.strategy.js +6 -4
  312. package/dist/shield-maintenance-hono.strategy.js.map +1 -1
  313. package/dist/shield-maintenance.strategy.d.ts +23 -7
  314. package/dist/shield-maintenance.strategy.d.ts.map +1 -1
  315. package/dist/shield-maintenance.strategy.js +23 -4
  316. package/dist/shield-maintenance.strategy.js.map +1 -1
  317. package/dist/shield-rate-limit.strategy.d.ts +1 -1
  318. package/dist/shield-rate-limit.strategy.d.ts.map +1 -1
  319. package/dist/shield-rate-limit.strategy.js +1 -1
  320. package/dist/shield-rate-limit.strategy.js.map +1 -1
  321. package/dist/shield-recaptcha.strategy.d.ts +2 -2
  322. package/dist/shield-recaptcha.strategy.d.ts.map +1 -1
  323. package/dist/shield-recaptcha.strategy.js +11 -7
  324. package/dist/shield-recaptcha.strategy.js.map +1 -1
  325. package/dist/shield-timeout-hono.strategy.js +1 -1
  326. package/dist/shield-webhook-hono.strategy.js +1 -1
  327. package/dist/shield-webhook.strategy.d.ts +2 -2
  328. package/dist/shield-webhook.strategy.d.ts.map +1 -1
  329. package/dist/shield-webhook.strategy.js.map +1 -1
  330. package/dist/simulated-error.middleware.d.ts +3 -0
  331. package/dist/simulated-error.middleware.d.ts.map +1 -1
  332. package/dist/simulated-error.middleware.js +2 -1
  333. package/dist/simulated-error.middleware.js.map +1 -1
  334. package/dist/sitemap-entry.vo.js +1 -1
  335. package/dist/sitemap-priority.vo.d.ts +1 -1
  336. package/dist/sitemap-priority.vo.d.ts.map +1 -1
  337. package/dist/sitemap-priority.vo.js +1 -1
  338. package/dist/sitemap-priority.vo.js.map +1 -1
  339. package/dist/slower-hono.middleware.d.ts +2 -6
  340. package/dist/slower-hono.middleware.d.ts.map +1 -1
  341. package/dist/slower-hono.middleware.js.map +1 -1
  342. package/dist/slower.middleware.d.ts +2 -3
  343. package/dist/slower.middleware.d.ts.map +1 -1
  344. package/dist/slower.middleware.js.map +1 -1
  345. package/dist/sms-with-logger.adapter.js +1 -1
  346. package/dist/sms-with-logger.adapter.js.map +1 -1
  347. package/dist/sse-hono.handler.d.ts.map +1 -1
  348. package/dist/sse-hono.handler.js +4 -2
  349. package/dist/sse-hono.handler.js.map +1 -1
  350. package/dist/sse-registry-collecting.adapter.d.ts +1 -1
  351. package/dist/sse-registry-collecting.adapter.d.ts.map +1 -1
  352. package/dist/sse-registry-collecting.adapter.js +3 -1
  353. package/dist/sse-registry-collecting.adapter.js.map +1 -1
  354. package/dist/sse-registry-noop.adapter.d.ts +1 -1
  355. package/dist/sse-registry-noop.adapter.d.ts.map +1 -1
  356. package/dist/sse-registry-noop.adapter.js +3 -1
  357. package/dist/sse-registry-noop.adapter.js.map +1 -1
  358. package/dist/sse-registry-with-limit.adapter.d.ts +1 -1
  359. package/dist/sse-registry-with-limit.adapter.d.ts.map +1 -1
  360. package/dist/sse-registry-with-limit.adapter.js +2 -2
  361. package/dist/sse-registry-with-limit.adapter.js.map +1 -1
  362. package/dist/sse-registry-with-logger.adapter.d.ts +1 -1
  363. package/dist/sse-registry-with-logger.adapter.d.ts.map +1 -1
  364. package/dist/sse-registry-with-logger.adapter.js +4 -3
  365. package/dist/sse-registry-with-logger.adapter.js.map +1 -1
  366. package/dist/sse-registry.adapter.d.ts +1 -1
  367. package/dist/sse-registry.adapter.d.ts.map +1 -1
  368. package/dist/sse-registry.adapter.js +7 -1
  369. package/dist/sse-registry.adapter.js.map +1 -1
  370. package/dist/sse-registry.port.d.ts +1 -1
  371. package/dist/sse-registry.port.d.ts.map +1 -1
  372. package/dist/ssr-bun.service.js +1 -1
  373. package/dist/ssr-bun.service.js.map +1 -1
  374. package/dist/ssr.service.d.ts +1 -1
  375. package/dist/ssr.service.d.ts.map +1 -1
  376. package/dist/ssr.service.js +1 -1
  377. package/dist/ssr.service.js.map +1 -1
  378. package/dist/standard-schema-validator.service.js +1 -1
  379. package/dist/standard-schema-validator.service.js.map +1 -1
  380. package/dist/static-config.adapter.js +1 -1
  381. package/dist/static-config.adapter.js.map +1 -1
  382. package/dist/static-files-hono.service.d.ts +1 -1
  383. package/dist/static-files-hono.service.js +2 -2
  384. package/dist/static-files-hono.service.js.map +1 -1
  385. package/dist/subject-application-resolver.vo.d.ts +2 -2
  386. package/dist/subject-application-resolver.vo.d.ts.map +1 -1
  387. package/dist/subject-application-resolver.vo.js +1 -1
  388. package/dist/subject-application-resolver.vo.js.map +1 -1
  389. package/dist/subject-request-resolver.vo.d.ts +2 -2
  390. package/dist/subject-request-resolver.vo.d.ts.map +1 -1
  391. package/dist/subject-request-resolver.vo.js +1 -1
  392. package/dist/subject-request-resolver.vo.js.map +1 -1
  393. package/dist/subject-segment-application.strategy.d.ts +1 -0
  394. package/dist/subject-segment-application.strategy.d.ts.map +1 -1
  395. package/dist/subject-segment-application.strategy.js +1 -1
  396. package/dist/subject-segment-application.strategy.js.map +1 -1
  397. package/dist/subject-segment-build.strategy.d.ts +1 -0
  398. package/dist/subject-segment-build.strategy.d.ts.map +1 -1
  399. package/dist/subject-segment-build.strategy.js +1 -0
  400. package/dist/subject-segment-build.strategy.js.map +1 -1
  401. package/dist/subject-segment-cookie.strategy.d.ts +1 -0
  402. package/dist/subject-segment-cookie.strategy.d.ts.map +1 -1
  403. package/dist/subject-segment-cookie.strategy.js +3 -0
  404. package/dist/subject-segment-cookie.strategy.js.map +1 -1
  405. package/dist/subject-segment-env.strategy.d.ts +1 -0
  406. package/dist/subject-segment-env.strategy.d.ts.map +1 -1
  407. package/dist/subject-segment-env.strategy.js +1 -0
  408. package/dist/subject-segment-env.strategy.js.map +1 -1
  409. package/dist/subject-segment-fixed.strategy.d.ts +1 -0
  410. package/dist/subject-segment-fixed.strategy.d.ts.map +1 -1
  411. package/dist/subject-segment-fixed.strategy.js +1 -0
  412. package/dist/subject-segment-fixed.strategy.js.map +1 -1
  413. package/dist/subject-segment-header.strategy.d.ts +1 -0
  414. package/dist/subject-segment-header.strategy.d.ts.map +1 -1
  415. package/dist/subject-segment-header.strategy.js +3 -0
  416. package/dist/subject-segment-header.strategy.js.map +1 -1
  417. package/dist/subject-segment-ip.strategy.d.ts +1 -0
  418. package/dist/subject-segment-ip.strategy.d.ts.map +1 -1
  419. package/dist/subject-segment-ip.strategy.js +1 -0
  420. package/dist/subject-segment-ip.strategy.js.map +1 -1
  421. package/dist/subject-segment-method.strategy.d.ts +7 -0
  422. package/dist/subject-segment-method.strategy.d.ts.map +1 -0
  423. package/dist/subject-segment-method.strategy.js +7 -0
  424. package/dist/subject-segment-method.strategy.js.map +1 -0
  425. package/dist/subject-segment-param.strategy.d.ts +1 -0
  426. package/dist/subject-segment-param.strategy.d.ts.map +1 -1
  427. package/dist/subject-segment-param.strategy.js +3 -0
  428. package/dist/subject-segment-param.strategy.js.map +1 -1
  429. package/dist/subject-segment-path.strategy.d.ts +1 -0
  430. package/dist/subject-segment-path.strategy.d.ts.map +1 -1
  431. package/dist/subject-segment-path.strategy.js +1 -0
  432. package/dist/subject-segment-path.strategy.js.map +1 -1
  433. package/dist/subject-segment-query.strategy.d.ts +3 -2
  434. package/dist/subject-segment-query.strategy.d.ts.map +1 -1
  435. package/dist/subject-segment-query.strategy.js +5 -5
  436. package/dist/subject-segment-query.strategy.js.map +1 -1
  437. package/dist/subject-segment-request.strategy.d.ts +5 -3
  438. package/dist/subject-segment-request.strategy.d.ts.map +1 -1
  439. package/dist/subject-segment-request.strategy.js +1 -1
  440. package/dist/subject-segment-request.strategy.js.map +1 -1
  441. package/dist/subject-segment-user.strategy.d.ts +1 -0
  442. package/dist/subject-segment-user.strategy.d.ts.map +1 -1
  443. package/dist/subject-segment-user.strategy.js +1 -0
  444. package/dist/subject-segment-user.strategy.js.map +1 -1
  445. package/dist/time-zone-offset-hono.middleware.d.ts +3 -1
  446. package/dist/time-zone-offset-hono.middleware.d.ts.map +1 -1
  447. package/dist/time-zone-offset.middleware.d.ts +2 -2
  448. package/dist/time-zone-offset.middleware.d.ts.map +1 -1
  449. package/dist/time-zone-offset.middleware.js +2 -0
  450. package/dist/time-zone-offset.middleware.js.map +1 -1
  451. package/dist/timekeeper-google.adapter.d.ts +1 -1
  452. package/dist/timekeeper-google.adapter.d.ts.map +1 -1
  453. package/dist/timekeeper-google.adapter.js.map +1 -1
  454. package/dist/timing-hono.middleware.d.ts +2 -6
  455. package/dist/timing-hono.middleware.d.ts.map +1 -1
  456. package/dist/timing-hono.middleware.js +1 -1
  457. package/dist/timing-hono.middleware.js.map +1 -1
  458. package/dist/timing.middleware.d.ts +5 -5
  459. package/dist/timing.middleware.d.ts.map +1 -1
  460. package/dist/timing.middleware.js +10 -2
  461. package/dist/timing.middleware.js.map +1 -1
  462. package/dist/trailing-slash-hono.middleware.d.ts +1 -1
  463. package/dist/trailing-slash-hono.middleware.js +2 -2
  464. package/dist/trailing-slash-hono.middleware.js.map +1 -1
  465. package/dist/trailing-slash.middleware.d.ts +2 -0
  466. package/dist/trailing-slash.middleware.d.ts.map +1 -1
  467. package/dist/trailing-slash.middleware.js +6 -1
  468. package/dist/trailing-slash.middleware.js.map +1 -1
  469. package/dist/translations-provider-json.adapter.d.ts +1 -1
  470. package/dist/translations-provider-json.adapter.d.ts.map +1 -1
  471. package/dist/translations-provider-json.adapter.js +2 -6
  472. package/dist/translations-provider-json.adapter.js.map +1 -1
  473. package/dist/translations-provider.port.d.ts +5 -0
  474. package/dist/translations-provider.port.d.ts.map +1 -1
  475. package/dist/translations-provider.port.js +3 -1
  476. package/dist/translations-provider.port.js.map +1 -1
  477. package/dist/weak-etag-extractor-header.strategy.d.ts +1 -0
  478. package/dist/weak-etag-extractor-header.strategy.d.ts.map +1 -1
  479. package/dist/weak-etag-extractor-header.strategy.js +3 -0
  480. package/dist/weak-etag-extractor-header.strategy.js.map +1 -1
  481. package/dist/weak-etag-extractor-hono.middleware.d.ts +3 -1
  482. package/dist/weak-etag-extractor-hono.middleware.d.ts.map +1 -1
  483. package/dist/weak-etag-extractor-param.strategy.d.ts.map +1 -1
  484. package/dist/weak-etag-extractor-param.strategy.js +2 -0
  485. package/dist/weak-etag-extractor-param.strategy.js.map +1 -1
  486. package/dist/weak-etag-extractor.strategy.d.ts +2 -2
  487. package/dist/weak-etag-extractor.strategy.d.ts.map +1 -1
  488. package/dist/webhook-signature-extractor.strategy.d.ts +2 -2
  489. package/dist/webhook-signature-extractor.strategy.d.ts.map +1 -1
  490. package/dist/woodchopper-dispatcher-async.strategy.d.ts +0 -3
  491. package/dist/woodchopper-dispatcher-async.strategy.d.ts.map +1 -1
  492. package/dist/woodchopper-dispatcher-async.strategy.js +7 -6
  493. package/dist/woodchopper-dispatcher-async.strategy.js.map +1 -1
  494. package/package.json +12 -17
  495. package/readme.md +4 -3
  496. package/src/ab-assignment-composite.strategy.ts +7 -4
  497. package/src/ab-assignment-cookie.strategy.ts +6 -3
  498. package/src/ab-assignment-fixed.strategy.ts +1 -2
  499. package/src/ab-assignment-hash.strategy.ts +1 -1
  500. package/src/ab-assignment-header.strategy.ts +6 -3
  501. package/src/ab-assignment-query.strategy.ts +6 -3
  502. package/src/ab-assignment.strategy.ts +1 -2
  503. package/src/ab-hono-noop.middleware.ts +2 -1
  504. package/src/ab-hono.middleware.ts +7 -6
  505. package/src/ab.middleware.ts +2 -6
  506. package/src/alert-channel-composite.adapter.ts +8 -1
  507. package/src/alert-channel-with-logger.adapter.ts +1 -1
  508. package/src/antivirus-clamav.adapter.ts +5 -4
  509. package/src/antivirus-with-logger.adapter.ts +2 -2
  510. package/src/api-version-hono.middleware.ts +7 -15
  511. package/src/api-version.middleware.ts +2 -2
  512. package/src/auth-session-reader-noop.adapter.ts +2 -2
  513. package/src/better-auth-logger.service.ts +5 -0
  514. package/src/cache-file.service.ts +4 -2
  515. package/src/cache-repository-node-cache.adapter.ts +3 -1
  516. package/src/cache-response-hono.middleware.ts +6 -6
  517. package/src/cache-response.middleware.ts +4 -4
  518. package/src/certificate-inspector-tls.adapter.ts +21 -19
  519. package/src/correlation-hono.middleware.ts +8 -8
  520. package/src/correlation.middleware.ts +2 -2
  521. package/src/cron-scheduler.adapter.ts +4 -2
  522. package/src/cron-task-handler-with-logger.strategy.ts +8 -8
  523. package/src/csv-stringifier.adapter.ts +2 -2
  524. package/src/disk-space-checker-fs.adapter.ts +12 -0
  525. package/src/dynamic-import.service.ts +2 -2
  526. package/src/environment-loader-process-safe.adapter.ts +4 -1
  527. package/src/environment-loader.port.ts +1 -1
  528. package/src/etag-extractor-header.strategy.ts +2 -0
  529. package/src/etag-extractor-hono.middleware.ts +1 -1
  530. package/src/etag-extractor-param.strategy.ts +2 -0
  531. package/src/etag-extractor.strategy.ts +2 -2
  532. package/src/file-inspection.adapter.ts +4 -4
  533. package/src/file-reader-json-forgiving.adapter.ts +1 -1
  534. package/src/graceful-shutdown.service.ts +3 -3
  535. package/src/hash.vo.ts +1 -1
  536. package/src/hcaptcha.service.ts +3 -3
  537. package/src/http-logger-hono.middleware.ts +6 -6
  538. package/src/http-logger.middleware.ts +2 -2
  539. package/src/image-blur-noop.adapter.ts +1 -1
  540. package/src/image-blur.adapter.ts +2 -6
  541. package/src/image-blur.port.ts +1 -7
  542. package/src/in-flight-requests-hono.middleware.ts +1 -0
  543. package/src/in-flight-requests-tracker.service.ts +2 -2
  544. package/src/index.ts +4 -3
  545. package/src/instrumentation.service.ts +5 -2
  546. package/src/job-queue-sqlite-store.service.ts +1 -0
  547. package/src/job-queue-with-logger.adapter.ts +2 -2
  548. package/src/language-detector-cookie.strategy.ts +1 -1
  549. package/src/language-detector-header.strategy.ts +13 -1
  550. package/src/language-detector-hono.middleware.ts +1 -1
  551. package/src/language-detector-query.strategy.ts +1 -1
  552. package/src/language-detector.middleware.ts +2 -2
  553. package/src/language-detector.strategy.ts +2 -2
  554. package/src/liveness-hono.handler.ts +5 -1
  555. package/src/liveness.handler.ts +2 -2
  556. package/src/mailer-content-html.vo.ts +1 -2
  557. package/src/mailer-smtp.adapter.ts +1 -0
  558. package/src/mailer-with-logger.adapter.ts +2 -2
  559. package/src/markdown-generator.adapter.ts +1 -1
  560. package/src/memory-consumption.service.ts +0 -4
  561. package/src/nonce-provider-crypto.adapter.ts +1 -1
  562. package/src/nonce-provider-noop.adapter.ts +1 -1
  563. package/src/nonce-value.vo.ts +2 -2
  564. package/src/pdf-generator-with-logger.adapter.ts +1 -1
  565. package/src/prerequisite-verifier-memory.adapter.ts +1 -1
  566. package/src/prerequisite-verifier-translations.adapter.ts +7 -13
  567. package/src/prerequisite-verifier-with-logger.adapter.ts +1 -1
  568. package/src/randomness.strategy.ts +1 -0
  569. package/src/reactive-config-noop.adapter.ts +6 -5
  570. package/src/reactive-config-with-cache.adapter.ts +1 -1
  571. package/src/reactive-config-with-fallback.adapter.ts +8 -4
  572. package/src/reactive-config-with-logger.adapter.ts +50 -0
  573. package/src/readiness-hono.handler.ts +2 -3
  574. package/src/readiness.handler.ts +13 -2
  575. package/src/redactor-metadata-compact-array.strategy.ts +1 -0
  576. package/src/redactor-metadata-compact-object.strategy.ts +1 -0
  577. package/src/redactor-url-query.strategy.ts +33 -0
  578. package/src/remote-file-storage-disk.adapter.ts +5 -5
  579. package/src/request-context-hono.adapter.ts +2 -0
  580. package/src/request-context.port.ts +11 -1
  581. package/src/sealer-aes-gcm.adapter.ts +6 -1
  582. package/src/secure-key-generator-crypto.adapter.ts +9 -1
  583. package/src/security-rule-bait-routes.strategy.ts +1 -1
  584. package/src/security-rule-honey-pot-field.strategy.ts +5 -4
  585. package/src/security-rule.strategy.ts +2 -4
  586. package/src/semaphore.service.ts +12 -9
  587. package/src/setup-hono.service.ts +1 -1
  588. package/src/shield-api-key-hono.strategy.ts +1 -1
  589. package/src/shield-api-key.strategy.ts +5 -5
  590. package/src/shield-auth.strategy.ts +10 -5
  591. package/src/shield-basic-auth-hono.strategy.ts +8 -2
  592. package/src/shield-basic-auth.strategy.ts +17 -4
  593. package/src/shield-csrf.strategy.ts +2 -2
  594. package/src/shield-hcaptcha-hono-local.strategy.ts +4 -2
  595. package/src/shield-hcaptcha.strategy.ts +11 -4
  596. package/src/shield-ip-blacklist.strategy.ts +4 -4
  597. package/src/shield-ip-whitelist.strategy.ts +3 -3
  598. package/src/shield-maintenance-hono.strategy.ts +7 -4
  599. package/src/shield-maintenance.strategy.ts +42 -6
  600. package/src/shield-rate-limit.strategy.ts +2 -2
  601. package/src/shield-recaptcha.strategy.ts +15 -9
  602. package/src/shield-timeout-hono.strategy.ts +1 -1
  603. package/src/shield-webhook-hono.strategy.ts +1 -1
  604. package/src/shield-webhook.strategy.ts +2 -2
  605. package/src/simulated-error.middleware.ts +3 -1
  606. package/src/sitemap-entry.vo.ts +1 -1
  607. package/src/sitemap-priority.vo.ts +1 -0
  608. package/src/slower-hono.middleware.ts +2 -5
  609. package/src/slower.middleware.ts +2 -2
  610. package/src/sms-with-logger.adapter.ts +1 -1
  611. package/src/sse-hono.handler.ts +4 -2
  612. package/src/sse-registry-collecting.adapter.ts +3 -1
  613. package/src/sse-registry-noop.adapter.ts +3 -1
  614. package/src/sse-registry-with-limit.adapter.ts +3 -3
  615. package/src/sse-registry-with-logger.adapter.ts +6 -4
  616. package/src/sse-registry.adapter.ts +10 -2
  617. package/src/sse-registry.port.ts +1 -1
  618. package/src/ssr-bun.service.ts +1 -1
  619. package/src/ssr.service.ts +1 -1
  620. package/src/standard-schema-validator.service.ts +1 -1
  621. package/src/static-config.adapter.ts +1 -1
  622. package/src/static-files-hono.service.ts +2 -2
  623. package/src/subject-application-resolver.vo.ts +3 -3
  624. package/src/subject-request-resolver.vo.ts +6 -3
  625. package/src/subject-segment-application.strategy.ts +2 -1
  626. package/src/subject-segment-build.strategy.ts +2 -0
  627. package/src/subject-segment-cookie.strategy.ts +4 -0
  628. package/src/subject-segment-env.strategy.ts +2 -0
  629. package/src/subject-segment-fixed.strategy.ts +2 -0
  630. package/src/subject-segment-header.strategy.ts +4 -0
  631. package/src/subject-segment-ip.strategy.ts +2 -0
  632. package/src/subject-segment-method.strategy.ts +10 -0
  633. package/src/subject-segment-param.strategy.ts +4 -0
  634. package/src/subject-segment-path.strategy.ts +2 -0
  635. package/src/subject-segment-query.strategy.ts +7 -7
  636. package/src/subject-segment-request.strategy.ts +8 -4
  637. package/src/subject-segment-user.strategy.ts +2 -0
  638. package/src/time-zone-offset-hono.middleware.ts +1 -1
  639. package/src/time-zone-offset.middleware.ts +4 -2
  640. package/src/timekeeper-google.adapter.ts +1 -1
  641. package/src/timing-hono.middleware.ts +3 -6
  642. package/src/timing.middleware.ts +15 -6
  643. package/src/trailing-slash-hono.middleware.ts +2 -2
  644. package/src/trailing-slash.middleware.ts +14 -2
  645. package/src/translations-provider-json.adapter.ts +6 -6
  646. package/src/translations-provider.port.ts +5 -0
  647. package/src/weak-etag-extractor-header.strategy.ts +4 -0
  648. package/src/weak-etag-extractor-hono.middleware.ts +1 -1
  649. package/src/weak-etag-extractor-param.strategy.ts +2 -0
  650. package/src/weak-etag-extractor.strategy.ts +2 -2
  651. package/src/webhook-signature-extractor.strategy.ts +2 -2
  652. package/src/woodchopper-dispatcher-async.strategy.ts +6 -11
  653. package/dist/cron-scheduler-croner.adapter.d.ts +0 -15
  654. package/dist/cron-scheduler-croner.adapter.d.ts.map +0 -1
  655. package/dist/cron-scheduler-croner.adapter.js +0 -23
  656. package/dist/cron-scheduler-croner.adapter.js.map +0 -1
  657. package/dist/disk-space-checker-shell.adapter.d.ts.map +0 -1
  658. package/dist/disk-space-checker-shell.adapter.js +0 -14
  659. package/dist/disk-space-checker-shell.adapter.js.map +0 -1
  660. package/dist/file-reader-raw-with-cache.adapter.d.ts +0 -20
  661. package/dist/file-reader-raw-with-cache.adapter.d.ts.map +0 -1
  662. package/dist/file-reader-raw-with-cache.adapter.js +0 -20
  663. package/dist/file-reader-raw-with-cache.adapter.js.map +0 -1
  664. package/src/cron-scheduler-croner.adapter.ts +0 -34
  665. package/src/disk-space-checker-shell.adapter.ts +0 -18
  666. package/src/file-reader-raw-with-cache.adapter.ts +0 -31
@@ -11,15 +11,17 @@ export class SseRegistryWithLoggerAdapter<Messages extends Message> implements S
11
11
 
12
12
  constructor(private readonly deps: Dependencies<Messages>) {}
13
13
 
14
- register(identity: HashValueType, sender: SseSenderType<Messages>): void {
14
+ register(identity: HashValueType, sender: SseSenderType<Messages>): boolean {
15
+ const registered = this.deps.inner.register(identity, sender);
16
+
15
17
  this.deps.Logger.info({
16
- message: "SSE sender registered",
17
- metadata: { identity },
18
+ message: registered ? "SSE sender registered" : "SSE sender rejected",
19
+ metadata: { identity, registered },
18
20
  correlationId: CorrelationStorage.get(),
19
21
  ...this.base,
20
22
  });
21
23
 
22
- this.deps.inner.register(identity, sender);
24
+ return registered;
23
25
  }
24
26
 
25
27
  unregister(identity: HashValueType, sender: SseSenderType<Messages>): void {
@@ -5,14 +5,22 @@ import type { SseRegistryPort, SseSenderType } from "./sse-registry.port";
5
5
  export class SseRegistryAdapter<Messages extends Message> implements SseRegistryPort<Messages> {
6
6
  private readonly senders = new Map<HashValueType, Set<SseSenderType<Messages>>>();
7
7
 
8
- register(identity: HashValueType, connection: SseSenderType<Messages>): void {
8
+ register(identity: HashValueType, connection: SseSenderType<Messages>): boolean {
9
9
  if (!this.senders.has(identity)) this.senders.set(identity, new Set());
10
10
 
11
11
  this.senders.get(identity)?.add(connection);
12
+
13
+ return true;
12
14
  }
13
15
 
14
16
  unregister(identity: HashValueType, connection: SseSenderType<Messages>): void {
15
- this.senders.get(identity)?.delete(connection);
17
+ const senders = this.senders.get(identity);
18
+
19
+ if (!senders) return;
20
+
21
+ senders.delete(connection);
22
+
23
+ if (senders.size === 0) this.senders.delete(identity);
16
24
  }
17
25
 
18
26
  async emit<M extends Messages>(identity: HashValueType, message: M): Promise<void> {
@@ -4,7 +4,7 @@ import type { Message } from "./message.types";
4
4
  export type SseSenderType<Messages extends Message> = <M extends Messages>(message: M) => Promise<void>;
5
5
 
6
6
  export interface SseRegistryPort<Messages extends Message> {
7
- register(identity: HashValueType, sender: SseSenderType<Messages>): void;
7
+ register(identity: HashValueType, sender: SseSenderType<Messages>): boolean;
8
8
 
9
9
  unregister(identity: HashValueType, sender: SseSenderType<Messages>): void;
10
10
 
@@ -13,7 +13,7 @@ export class SSRBun {
13
13
  const service = new SSRService(deps, config);
14
14
 
15
15
  return async (request: Request): Promise<Response> => {
16
- const nonce = service.nonce;
16
+ const nonce = service.generateNonce();
17
17
 
18
18
  const response = await handler(request, nonce);
19
19
 
@@ -33,7 +33,7 @@ export class SSRService {
33
33
  private readonly config?: SSRConfig,
34
34
  ) {}
35
35
 
36
- get nonce(): NonceValueType {
36
+ generateNonce(): NonceValueType {
37
37
  return this.deps.NonceProvider.generate();
38
38
  }
39
39
 
@@ -8,7 +8,7 @@ export class StandardSchemaValidator {
8
8
  static validate<Output>(schema: StandardSchemaV1<unknown, Output>, raw: unknown): Output {
9
9
  const result = schema["~standard"].validate(raw);
10
10
 
11
- if (result instanceof Promise) throw new Error(StandardSchemaValidatorError.NoAsyncSchema);
11
+ if ("then" in result) throw new Error(StandardSchemaValidatorError.NoAsyncSchema);
12
12
  if (result.issues) throw new Error(result.issues[0]?.message);
13
13
  return result.value;
14
14
  }
@@ -4,6 +4,6 @@ export class StaticConfigAdapter<T> implements StaticConfigPort<T> {
4
4
  constructor(private readonly value: T) {}
5
5
 
6
6
  get(): Readonly<T> {
7
- return this.value;
7
+ return Object.freeze(this.value);
8
8
  }
9
9
  }
@@ -73,8 +73,8 @@ export class StaticFilesHono {
73
73
 
74
74
  const contentType = context.res.headers.get("Content-Type");
75
75
 
76
- if (contentType?.startsWith("text/html")) staticDocumentHeaders(context, noop);
77
- else staticAssetHeaders(context, noop);
76
+ if (contentType?.startsWith("text/html")) await staticDocumentHeaders(context, noop);
77
+ else await staticAssetHeaders(context, noop);
78
78
  },
79
79
  etag(),
80
80
  serveStatic({ root, precompressed: true, onFound: strategy }),
@@ -1,7 +1,7 @@
1
1
  import type { Hash } from "./hash.vo";
2
2
  import type { HashContentStrategy } from "./hash-content.strategy";
3
3
  import type { SubjectSegmentApplicationStrategy } from "./subject-segment-application.strategy";
4
- import type { SubjectSegmentType } from "./subject-segment-request.strategy";
4
+ import type { SubjectSegmentsRawType } from "./subject-segment-request.strategy";
5
5
 
6
6
  type Dependencies = { HashContent: HashContentStrategy };
7
7
 
@@ -19,8 +19,8 @@ export class SubjectApplicationResolver {
19
19
  if (this.segments.length > 10) throw new Error(SubjectApplicationResolverError.TooManySegments);
20
20
  }
21
21
 
22
- async resolve(): Promise<{ hex: Hash; raw: ReadonlyArray<SubjectSegmentType> }> {
23
- const segments = this.segments.map((segment) => segment.create());
22
+ async resolve(): Promise<{ hex: Hash; raw: SubjectSegmentsRawType }> {
23
+ const segments = this.segments.map((segment) => [segment.label, segment.create()] as const);
24
24
  const subject = JSON.stringify(segments);
25
25
 
26
26
  const hex = await this.deps.HashContent.hash(subject);
@@ -1,7 +1,10 @@
1
1
  import type { Hash } from "./hash.vo";
2
2
  import type { HashContentStrategy } from "./hash-content.strategy";
3
3
  import type { RequestContext } from "./request-context.port";
4
- import type { SubjectSegmentRequestStrategy, SubjectSegmentType } from "./subject-segment-request.strategy";
4
+ import type {
5
+ SubjectSegmentRequestStrategy,
6
+ SubjectSegmentsRawType,
7
+ } from "./subject-segment-request.strategy";
5
8
 
6
9
  type Dependencies = { HashContent: HashContentStrategy };
7
10
 
@@ -19,8 +22,8 @@ export class SubjectRequestResolver {
19
22
  if (this.segments.length > 10) throw new Error(SubjectRequestResolverError.TooManySegments);
20
23
  }
21
24
 
22
- async resolve(context: RequestContext): Promise<{ hex: Hash; raw: ReadonlyArray<SubjectSegmentType> }> {
23
- const segments = this.segments.map((segment) => segment.create(context));
25
+ async resolve(context: RequestContext): Promise<{ hex: Hash; raw: SubjectSegmentsRawType }> {
26
+ const segments = this.segments.map((segment) => [segment.label, segment.create(context)] as const);
24
27
  const subject = JSON.stringify(segments);
25
28
 
26
29
  const hex = await this.deps.HashContent.hash(subject);
@@ -1,7 +1,8 @@
1
1
  import type { SubjectSegmentType } from "./subject-segment-request.strategy";
2
2
 
3
- export const SubjectSegmentApplicationEmpty: SubjectSegmentType = "__absent__";
3
+ export const SubjectSegmentApplicationEmpty: SubjectSegmentType = null;
4
4
 
5
5
  export interface SubjectSegmentApplicationStrategy {
6
+ readonly label: string;
6
7
  create(): SubjectSegmentType;
7
8
  }
@@ -6,6 +6,8 @@ import {
6
6
  import type { SubjectSegmentType } from "./subject-segment-request.strategy";
7
7
 
8
8
  export class SubjectSegmentBuildStrategy implements SubjectSegmentApplicationStrategy {
9
+ readonly label = "build";
10
+
9
11
  constructor(private readonly build?: tools.PackageVersion) {}
10
12
 
11
13
  create(): SubjectSegmentType {
@@ -8,6 +8,10 @@ import {
8
8
  export class SubjectSegmentCookieStrategy implements SubjectSegmentRequestStrategy {
9
9
  constructor(private readonly name: string) {}
10
10
 
11
+ get label(): string {
12
+ return `cookie:${this.name}`;
13
+ }
14
+
11
15
  create(context: HasRequestCookie): SubjectSegmentType {
12
16
  return context.request.cookie(this.name) ?? SubjectSegmentRequestEmpty;
13
17
  }
@@ -3,6 +3,8 @@ import type { SubjectSegmentApplicationStrategy } from "./subject-segment-applic
3
3
  import type { SubjectSegmentType } from "./subject-segment-request.strategy";
4
4
 
5
5
  export class SubjectSegmentEnvStrategy implements SubjectSegmentApplicationStrategy {
6
+ readonly label = "env";
7
+
6
8
  constructor(private readonly type: NodeEnvironmentEnum) {}
7
9
 
8
10
  create(): SubjectSegmentType {
@@ -4,6 +4,8 @@ import type { SubjectSegmentRequestStrategy, SubjectSegmentType } from "./subjec
4
4
  export class SubjectSegmentFixedStrategy
5
5
  implements SubjectSegmentRequestStrategy, SubjectSegmentApplicationStrategy
6
6
  {
7
+ readonly label = "fixed";
8
+
7
9
  constructor(private readonly value: string) {}
8
10
 
9
11
  create(): SubjectSegmentType {
@@ -8,6 +8,10 @@ import {
8
8
  export class SubjectSegmentHeaderStrategy implements SubjectSegmentRequestStrategy {
9
9
  constructor(private readonly name: string) {}
10
10
 
11
+ get label(): string {
12
+ return `header:${this.name}`;
13
+ }
14
+
11
15
  create(context: HasRequestHeader): SubjectSegmentType {
12
16
  return context.request.header(this.name) ?? SubjectSegmentRequestEmpty;
13
17
  }
@@ -6,6 +6,8 @@ import {
6
6
  } from "./subject-segment-request.strategy";
7
7
 
8
8
  export class SubjectSegmentIpStrategy implements SubjectSegmentRequestStrategy {
9
+ readonly label = "ip";
10
+
9
11
  create(context: HasIdentityIp): SubjectSegmentType {
10
12
  return context.identity.ip() ?? SubjectSegmentRequestEmpty;
11
13
  }
@@ -0,0 +1,10 @@
1
+ import type { HasRequestMethod } from "./request-context.port";
2
+ import type { SubjectSegmentRequestStrategy, SubjectSegmentType } from "./subject-segment-request.strategy";
3
+
4
+ export class SubjectSegmentMethodStrategy implements SubjectSegmentRequestStrategy {
5
+ readonly label = "method";
6
+
7
+ create(context: HasRequestMethod): SubjectSegmentType {
8
+ return context.request.method;
9
+ }
10
+ }
@@ -8,6 +8,10 @@ import {
8
8
  export class SubjectSegmentParamStrategy implements SubjectSegmentRequestStrategy {
9
9
  constructor(private readonly param: string) {}
10
10
 
11
+ get label(): string {
12
+ return `param:${this.param}`;
13
+ }
14
+
11
15
  create(context: HasRequestParam): SubjectSegmentType {
12
16
  return context.request.param(this.param) ?? SubjectSegmentRequestEmpty;
13
17
  }
@@ -2,6 +2,8 @@ import type { HasRequestPath } from "./request-context.port";
2
2
  import type { SubjectSegmentRequestStrategy, SubjectSegmentType } from "./subject-segment-request.strategy";
3
3
 
4
4
  export class SubjectSegmentPathStrategy implements SubjectSegmentRequestStrategy {
5
+ readonly label = "path";
6
+
5
7
  create(context: HasRequestPath): SubjectSegmentType {
6
8
  return context.request.path;
7
9
  }
@@ -1,4 +1,4 @@
1
- import type { HasRequestQuery } from "./request-context.port";
1
+ import type { HasRequestQueries } from "./request-context.port";
2
2
  import type { SubjectSegmentType } from "./subject-segment-request.strategy";
3
3
  import {
4
4
  SubjectSegmentRequestEmpty,
@@ -6,14 +6,14 @@ import {
6
6
  } from "./subject-segment-request.strategy";
7
7
 
8
8
  export class SubjectSegmentQueryStrategy implements SubjectSegmentRequestStrategy {
9
- create(context: HasRequestQuery): SubjectSegmentType {
10
- const query = context.request.query();
9
+ readonly label = "query";
11
10
 
12
- const keys = Object.keys(query).toSorted();
11
+ create(context: HasRequestQueries): SubjectSegmentType {
12
+ const queries = context.request.queries();
13
13
 
14
- const result = keys.map((key) => `${key}=${query[key]}`).join("&");
14
+ const keys = Object.keys(queries).toSorted();
15
15
 
16
- if (!result) return SubjectSegmentRequestEmpty;
17
- return result;
16
+ if (keys.length === 0) return SubjectSegmentRequestEmpty;
17
+ return JSON.stringify(keys.map((key) => [key, queries[key]]));
18
18
  }
19
19
  }
@@ -3,23 +3,27 @@ import type {
3
3
  HasIdentityUserId,
4
4
  HasRequestCookie,
5
5
  HasRequestHeader,
6
+ HasRequestMethod,
6
7
  HasRequestParam,
7
8
  HasRequestPath,
8
- HasRequestQuery,
9
+ HasRequestQueries,
9
10
  } from "./request-context.port";
10
11
 
11
- export type SubjectSegmentType = string;
12
+ export type SubjectSegmentType = string | null;
13
+ export type SubjectSegmentsRawType = ReadonlyArray<readonly [string, SubjectSegmentType]>;
12
14
 
13
- export const SubjectSegmentRequestEmpty: SubjectSegmentType = "__absent__";
15
+ export const SubjectSegmentRequestEmpty: SubjectSegmentType = null;
14
16
 
15
17
  type RequestContextCapabilities = HasRequestCookie &
16
18
  HasRequestHeader &
19
+ HasRequestMethod &
17
20
  HasRequestPath &
18
- HasRequestQuery &
21
+ HasRequestQueries &
19
22
  HasRequestParam &
20
23
  HasIdentityIp &
21
24
  HasIdentityUserId;
22
25
 
23
26
  export interface SubjectSegmentRequestStrategy {
27
+ readonly label: string;
24
28
  create(context: RequestContextCapabilities): SubjectSegmentType;
25
29
  }
@@ -6,6 +6,8 @@ import {
6
6
  } from "./subject-segment-request.strategy";
7
7
 
8
8
  export class SubjectSegmentUserStrategy implements SubjectSegmentRequestStrategy {
9
+ readonly label = "user";
10
+
9
11
  create(context: HasIdentityUserId): SubjectSegmentType {
10
12
  return context.identity.userId() ?? SubjectSegmentRequestEmpty;
11
13
  }
@@ -13,7 +13,7 @@ export class TimeZoneOffsetHonoMiddleware implements MiddlewareHonoPort {
13
13
  this.middleware = new TimeZoneOffsetMiddleware();
14
14
  }
15
15
 
16
- handle(): MiddlewareHandler {
16
+ handle(): MiddlewareHandler<{ Variables: TimeZoneOffsetVariables }> {
17
17
  return async (c, next) => {
18
18
  const context = new RequestContextHonoAdapter(c);
19
19
  const offset = this.middleware.evaluate(context);
@@ -1,12 +1,14 @@
1
1
  import * as tools from "@bgord/tools";
2
2
  import * as v from "valibot";
3
- import type { RequestContext } from "./request-context.port";
3
+ import type { HasRequestHeader } from "./request-context.port";
4
4
 
5
5
  export class TimeZoneOffsetMiddleware {
6
+ // Matches Date.prototype.getTimezoneOffset(): the negation of the UTC offset,
7
+ // so a client in UTC+2 sends -120 and one in UTC-5 sends 300
6
8
  static readonly TIME_ZONE_OFFSET_HEADER_NAME = "time-zone-offset";
7
9
  static readonly DEFAULT = tools.Duration.Minutes(0);
8
10
 
9
- evaluate(context: RequestContext): tools.Duration {
11
+ evaluate(context: HasRequestHeader): tools.Duration {
10
12
  const header = context.request.header(TimeZoneOffsetMiddleware.TIME_ZONE_OFFSET_HEADER_NAME);
11
13
  const offset = v.safeParse(tools.TimeZoneOffsetValue, header);
12
14
 
@@ -3,7 +3,7 @@ import * as v from "valibot";
3
3
  import type { TimekeeperPort } from "./timekeeper.port";
4
4
 
5
5
  export class TimekeeperGoogleAdapter implements TimekeeperPort {
6
- static URL = v.parse(tools.UrlWithoutSlash, "https://www.google.com/generate_204");
6
+ static readonly URL = v.parse(tools.UrlWithoutSlash, "https://www.google.com/generate_204");
7
7
 
8
8
  async get(): Promise<tools.Timestamp | null> {
9
9
  try {
@@ -1,15 +1,12 @@
1
1
  import { createMiddleware } from "hono/factory";
2
- import type { ClockPort } from "./clock.port";
3
2
  import type { MiddlewareHonoPort } from "./middleware-hono.port";
4
3
  import { RequestContextHonoAdapter } from "./request-context-hono.adapter";
5
- import { TimingMiddleware } from "./timing.middleware";
6
-
7
- type Dependencies = { Clock: ClockPort };
4
+ import { TimingMiddleware, type TimingMiddlewareDependencies } from "./timing.middleware";
8
5
 
9
6
  export class TimingHonoMiddleware implements MiddlewareHonoPort {
10
7
  private readonly middleware: TimingMiddleware;
11
8
 
12
- constructor(deps: Dependencies) {
9
+ constructor(deps: TimingMiddlewareDependencies) {
13
10
  this.middleware = new TimingMiddleware(deps);
14
11
  }
15
12
 
@@ -21,7 +18,7 @@ export class TimingHonoMiddleware implements MiddlewareHonoPort {
21
18
 
22
19
  if (!timing) return next();
23
20
 
24
- c.header(TimingMiddleware.HEADER_NAME, timing);
21
+ c.header(TimingMiddleware.HEADER_NAME, timing, { append: true });
25
22
  });
26
23
  }
27
24
  }
@@ -1,21 +1,30 @@
1
1
  import type { ClockPort } from "./clock.port";
2
- import type { RequestContext } from "./request-context.port";
2
+ import type { HasRequestHeader } from "./request-context.port";
3
3
  import { Stopwatch } from "./stopwatch.service";
4
4
 
5
- type Dependencies = { Clock: ClockPort };
5
+ export type TimingMiddlewareDependencies = { Clock: ClockPort };
6
6
 
7
7
  export class TimingMiddleware {
8
8
  static readonly HEADER_NAME = "Server-Timing";
9
9
 
10
- constructor(private readonly deps: Dependencies) {}
10
+ constructor(private readonly deps: TimingMiddlewareDependencies) {}
11
11
 
12
- async measure(context: RequestContext, action: () => void | Promise<void>): Promise<string | null> {
13
- if (context.request.header("accept")?.toLowerCase().startsWith("text/event-stream")) return null;
12
+ async measure(context: HasRequestHeader, action: () => void | Promise<void>): Promise<string | null> {
13
+ if (TimingMiddleware.isEventStream(context.request.header("accept"))) return null;
14
14
 
15
15
  const stopwatch = new Stopwatch(this.deps);
16
16
 
17
17
  await action();
18
18
 
19
- return `total;dur=${stopwatch.stop().ms}`;
19
+ return `total;dur=${Math.max(0, stopwatch.stop().ms)}`;
20
+ }
21
+
22
+ private static isEventStream(accept: string | undefined): boolean {
23
+ if (!accept) return false;
24
+
25
+ return accept
26
+ .toLowerCase()
27
+ .split(",")
28
+ .some((type) => type.split(";")[0]?.trim() === "text/event-stream");
20
29
  }
21
30
  }
@@ -19,9 +19,9 @@ export class TrailingSlashHonoMiddleware implements MiddlewareHonoPort {
19
19
  if (!result.redirect) return next();
20
20
 
21
21
  const url = new URL(context.request.url());
22
- url.pathname = result.pathname;
22
+ const location = result.pathname + url.search + url.hash;
23
23
 
24
- return c.redirect(url.toString(), 301);
24
+ return c.redirect(location, result.status);
25
25
  });
26
26
  }
27
27
  }
@@ -1,11 +1,23 @@
1
1
  import type { HasRequestPath } from "./request-context.port";
2
2
 
3
- export type TrailingSlashResult = { redirect: false } | { redirect: true; pathname: string };
3
+ export type TrailingSlashResult = { redirect: false } | { redirect: true; pathname: string; status: 308 };
4
+
5
+ const TRAILING_SLASHES = /\/+$/;
6
+ const LEADING_SLASHES = /^\/+/;
4
7
 
5
8
  export class TrailingSlashMiddleware {
9
+ // RFC 7231 6.4.7 - 308 preserves the request method and body, unlike 301.
10
+ static readonly STATUS = 308;
11
+
6
12
  evaluate(context: HasRequestPath): TrailingSlashResult {
7
13
  if (!context.request.path.endsWith("/")) return { redirect: false };
8
14
  if (context.request.path === "/") return { redirect: false };
9
- return { redirect: true, pathname: context.request.path.slice(0, -1) };
15
+
16
+ const pathname = (context.request.path.replace(TRAILING_SLASHES, "") || "/").replace(
17
+ LEADING_SLASHES,
18
+ "/",
19
+ );
20
+
21
+ return { redirect: true, pathname, status: TrailingSlashMiddleware.STATUS };
10
22
  }
11
23
  }
@@ -1,7 +1,11 @@
1
1
  import * as tools from "@bgord/tools";
2
2
  import * as v from "valibot";
3
3
  import type { FileReaderJsonPort } from "./file-reader-json.port";
4
- import type { TranslationsProviderPort, TranslationsType } from "./translations-provider.port";
4
+ import {
5
+ Translations,
6
+ type TranslationsProviderPort,
7
+ type TranslationsType,
8
+ } from "./translations-provider.port";
5
9
 
6
10
  type Config = { path?: tools.DirectoryPathRelativeType };
7
11
  type Dependencies = { FileReaderJson: FileReaderJsonPort };
@@ -20,10 +24,6 @@ export class TranslationsProviderJsonAdapter implements TranslationsProviderPort
20
24
  tools.Filename.fromParts(language, "json"),
21
25
  );
22
26
 
23
- try {
24
- return await this.deps.FileReaderJson.read(path);
25
- } catch (error) {
26
- return {};
27
- }
27
+ return v.parse(Translations, await this.deps.FileReaderJson.read(path));
28
28
  }
29
29
  }
@@ -1,4 +1,9 @@
1
1
  import type * as tools from "@bgord/tools";
2
+ import * as v from "valibot";
3
+
4
+ export const TranslationsError = { Invalid: "translations.invalid" };
5
+
6
+ export const Translations = v.record(v.string(), v.string(TranslationsError.Invalid));
2
7
 
3
8
  export type TranslationsKeyType = string;
4
9
  export type TranslationsValueType = string;
@@ -3,10 +3,14 @@ import type { HasRequestHeader } from "./request-context.port";
3
3
  import type { WeakETagExtractorStrategy } from "./weak-etag-extractor.strategy";
4
4
 
5
5
  export class WeakETagExtractorHeaderStrategy implements WeakETagExtractorStrategy {
6
+ private static readonly PREFIX = "W/";
7
+
6
8
  detect(context: HasRequestHeader): tools.WeakETag | null {
7
9
  try {
8
10
  const header = context.request.header(tools.WeakETag.IF_MATCH_HEADER_NAME);
9
11
 
12
+ if (!header?.replace(WeakETagExtractorHeaderStrategy.PREFIX, "").trim()) return null;
13
+
10
14
  return tools.WeakETag.fromHeader(header);
11
15
  } catch {
12
16
  return null;
@@ -16,7 +16,7 @@ export class WeakETagExtractorHonoMiddleware implements MiddlewareHonoPort {
16
16
  this.middleware = new WeakETagExtractorMiddleware(config);
17
17
  }
18
18
 
19
- handle(): MiddlewareHandler {
19
+ handle(): MiddlewareHandler<{ Variables: WeakETagVariables }> {
20
20
  return async (c, next) => {
21
21
  const context = new RequestContextHonoAdapter(c);
22
22
  const weakETag = this.middleware.evaluate(context);
@@ -9,6 +9,8 @@ export class WeakETagExtractorParamStrategy implements WeakETagExtractorStrategy
9
9
  try {
10
10
  const value = context.request.param(this.name);
11
11
 
12
+ if (!value?.trim()) return null;
13
+
12
14
  return tools.WeakETag.fromHeader(`W/${value}`);
13
15
  } catch {
14
16
  return null;
@@ -1,6 +1,6 @@
1
1
  import type * as tools from "@bgord/tools";
2
- import type { RequestContext } from "./request-context.port";
2
+ import type { HasRequestHeader, HasRequestParam } from "./request-context.port";
3
3
 
4
4
  export interface WeakETagExtractorStrategy {
5
- detect(context: RequestContext): tools.WeakETag | null;
5
+ detect(context: HasRequestHeader & HasRequestParam): tools.WeakETag | null;
6
6
  }
@@ -1,6 +1,6 @@
1
- import type { RequestContext } from "./request-context.port";
1
+ import type { HasRequestHeader } from "./request-context.port";
2
2
  import type { WebhookSignatureType } from "./webhook-signature.vo";
3
3
 
4
4
  export interface WebhookSignatureExtractorStrategy {
5
- extract(context: RequestContext): WebhookSignatureType | null;
5
+ extract(context: HasRequestHeader): WebhookSignatureType | null;
6
6
  }
@@ -8,11 +8,6 @@ enum WoodchopperDispatcherAsyncState {
8
8
  closed = "closed",
9
9
  }
10
10
 
11
- export const WoodchopperDispatcherAsyncError = {
12
- ClosedWithBufferedEntries: (count: tools.IntegerPositiveType) =>
13
- `woodchopper.dispatcher.async.closed.with.buffered.entries.${count}`,
14
- };
15
-
16
11
  export class WoodchopperDispatcherAsync implements WoodchopperDispatcher {
17
12
  onError?: (error: unknown) => void;
18
13
 
@@ -46,12 +41,12 @@ export class WoodchopperDispatcherAsync implements WoodchopperDispatcher {
46
41
 
47
42
  this.state = WoodchopperDispatcherAsyncState.closed;
48
43
 
49
- if (this.buffer.length > 0) {
50
- const message = WoodchopperDispatcherAsyncError.ClosedWithBufferedEntries(
51
- tools.Int.positive(this.buffer.length),
52
- );
53
-
54
- this.onError?.(new Error(message));
44
+ for (const entry of this.buffer) {
45
+ try {
46
+ this.sink.write(entry);
47
+ } catch (error) {
48
+ this.onError?.(error);
49
+ }
55
50
  }
56
51
 
57
52
  this.buffer.length = 0;
@@ -1,15 +0,0 @@
1
- import type { CronSchedulerPort } from "./cron-scheduler.port";
2
- import type { CronTask } from "./cron-task.vo";
3
- export declare const CronSchedulerCronerAdapterError: {
4
- MissingDependency: string;
5
- };
6
- export declare class CronSchedulerCronerAdapter implements CronSchedulerPort {
7
- private readonly croner;
8
- private static readonly importer;
9
- private readonly tasks;
10
- private constructor();
11
- static build(): Promise<CronSchedulerCronerAdapter>;
12
- schedule(task: CronTask): void;
13
- verify(): Promise<boolean>;
14
- }
15
- //# sourceMappingURL=cron-scheduler-croner.adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron-scheduler-croner.adapter.d.ts","sourceRoot":"","sources":["../src/cron-scheduler-croner.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,+BAA+B;IAC1C,iBAAiB;CAClB,CAAC;AAIF,qBAAa,0BAA2B,YAAW,iBAAiB;IAQ9C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAP3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAG9B;IAEF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkD;IAExE,OAAO,eAAuD;IAE9D,OAAa,KAAK,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAIxD;IAED,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAE7B;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;CACF"}