@blamejs/blamejs-shop 0.5.12 → 0.5.14

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 (522) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/asset-manifest.json +1 -1
  3. package/lib/sales-tax-filings.js +143 -0
  4. package/lib/vendor/MANIFEST.json +632 -416
  5. package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +21 -10
  6. package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +30 -9
  7. package/lib/vendor/blamejs/.github/dependabot.yml +8 -0
  8. package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +3 -3
  9. package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +7 -2
  10. package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +7 -2
  11. package/lib/vendor/blamejs/.github/workflows/ci.yml +21 -21
  12. package/lib/vendor/blamejs/.github/workflows/codeql.yml +3 -3
  13. package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +4 -4
  14. package/lib/vendor/blamejs/.github/workflows/release-container.yml +7 -7
  15. package/lib/vendor/blamejs/.github/workflows/scorecard.yml +3 -3
  16. package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +1 -1
  17. package/lib/vendor/blamejs/.gitignore +2 -0
  18. package/lib/vendor/blamejs/CHANGELOG.md +122 -0
  19. package/lib/vendor/blamejs/NOTICE +26 -1
  20. package/lib/vendor/blamejs/SECURITY.md +1 -1
  21. package/lib/vendor/blamejs/api-snapshot.json +207 -5
  22. package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +29 -0
  23. package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +1 -0
  24. package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +31 -0
  25. package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +109 -0
  26. package/lib/vendor/blamejs/examples/wiki/nginx.conf +106 -0
  27. package/lib/vendor/blamejs/examples/wiki/package-lock.json +1 -1
  28. package/lib/vendor/blamejs/examples/wiki/test/e2e.js +92 -0
  29. package/lib/vendor/blamejs/fuzz/asn1-der.fuzz.js +28 -0
  30. package/lib/vendor/blamejs/fuzz/cms-codec.fuzz.js +17 -0
  31. package/lib/vendor/blamejs/fuzz/link-header.fuzz.js +18 -0
  32. package/lib/vendor/blamejs/index.js +6 -0
  33. package/lib/vendor/blamejs/lib/a2a.js +4 -4
  34. package/lib/vendor/blamejs/lib/agent-idempotency.js +18 -2
  35. package/lib/vendor/blamejs/lib/agent-saga.js +36 -8
  36. package/lib/vendor/blamejs/lib/agent-snapshot.js +63 -6
  37. package/lib/vendor/blamejs/lib/app-shutdown.js +23 -20
  38. package/lib/vendor/blamejs/lib/archive-read.js +8 -0
  39. package/lib/vendor/blamejs/lib/archive-tar.js +12 -2
  40. package/lib/vendor/blamejs/lib/arg-parser.js +49 -5
  41. package/lib/vendor/blamejs/lib/asn1-der.js +12 -0
  42. package/lib/vendor/blamejs/lib/audit-sign.js +47 -1
  43. package/lib/vendor/blamejs/lib/audit.js +71 -8
  44. package/lib/vendor/blamejs/lib/auth/ciba.js +14 -2
  45. package/lib/vendor/blamejs/lib/auth/fido-mds3.js +58 -47
  46. package/lib/vendor/blamejs/lib/auth/jwt.js +34 -0
  47. package/lib/vendor/blamejs/lib/auth/oauth.js +90 -13
  48. package/lib/vendor/blamejs/lib/auth/oid4vci.js +20 -17
  49. package/lib/vendor/blamejs/lib/auth/openid-federation.js +214 -23
  50. package/lib/vendor/blamejs/lib/auth/saml.js +38 -20
  51. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +10 -4
  52. package/lib/vendor/blamejs/lib/backup/bundle.js +13 -3
  53. package/lib/vendor/blamejs/lib/backup/index.js +16 -5
  54. package/lib/vendor/blamejs/lib/backup/manifest.js +18 -5
  55. package/lib/vendor/blamejs/lib/base32.js +21 -0
  56. package/lib/vendor/blamejs/lib/break-glass.js +19 -10
  57. package/lib/vendor/blamejs/lib/bundler.js +5 -1
  58. package/lib/vendor/blamejs/lib/cache-status.js +3 -7
  59. package/lib/vendor/blamejs/lib/calendar.js +21 -1
  60. package/lib/vendor/blamejs/lib/cbor.js +12 -1
  61. package/lib/vendor/blamejs/lib/cert.js +29 -11
  62. package/lib/vendor/blamejs/lib/cli.js +94 -24
  63. package/lib/vendor/blamejs/lib/cloud-events.js +2 -2
  64. package/lib/vendor/blamejs/lib/cluster-provider-db.js +13 -3
  65. package/lib/vendor/blamejs/lib/codepoint-class.js +85 -0
  66. package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +8 -4
  67. package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +19 -4
  68. package/lib/vendor/blamejs/lib/compliance-ai-act.js +6 -8
  69. package/lib/vendor/blamejs/lib/content-credentials.js +1 -1
  70. package/lib/vendor/blamejs/lib/content-digest.js +2 -1
  71. package/lib/vendor/blamejs/lib/cookies.js +13 -3
  72. package/lib/vendor/blamejs/lib/cose.js +31 -16
  73. package/lib/vendor/blamejs/lib/crypto-field.js +32 -0
  74. package/lib/vendor/blamejs/lib/crypto-oprf.js +11 -2
  75. package/lib/vendor/blamejs/lib/crypto-xwing.js +22 -4
  76. package/lib/vendor/blamejs/lib/crypto.js +314 -19
  77. package/lib/vendor/blamejs/lib/csp.js +11 -3
  78. package/lib/vendor/blamejs/lib/daemon.js +270 -24
  79. package/lib/vendor/blamejs/lib/dark-patterns.js +5 -2
  80. package/lib/vendor/blamejs/lib/db-declare-view.js +2 -2
  81. package/lib/vendor/blamejs/lib/db-query.js +34 -7
  82. package/lib/vendor/blamejs/lib/db.js +18 -6
  83. package/lib/vendor/blamejs/lib/dbsc.js +17 -0
  84. package/lib/vendor/blamejs/lib/dev.js +21 -2
  85. package/lib/vendor/blamejs/lib/dsr.js +157 -102
  86. package/lib/vendor/blamejs/lib/external-db.js +41 -2
  87. package/lib/vendor/blamejs/lib/file-upload.js +25 -7
  88. package/lib/vendor/blamejs/lib/flag-providers.js +27 -15
  89. package/lib/vendor/blamejs/lib/forms.js +113 -27
  90. package/lib/vendor/blamejs/lib/gate-contract.js +23 -10
  91. package/lib/vendor/blamejs/lib/gdpr-ropa.js +8 -1
  92. package/lib/vendor/blamejs/lib/guard-agent-registry.js +1 -1
  93. package/lib/vendor/blamejs/lib/guard-archive.js +2 -2
  94. package/lib/vendor/blamejs/lib/guard-cidr.js +27 -1
  95. package/lib/vendor/blamejs/lib/guard-graphql.js +30 -11
  96. package/lib/vendor/blamejs/lib/guard-html.js +26 -53
  97. package/lib/vendor/blamejs/lib/guard-image.js +24 -5
  98. package/lib/vendor/blamejs/lib/guard-imap-command.js +10 -2
  99. package/lib/vendor/blamejs/lib/guard-jmap.js +19 -3
  100. package/lib/vendor/blamejs/lib/guard-jwt.js +18 -2
  101. package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +2 -2
  102. package/lib/vendor/blamejs/lib/guard-managesieve-command.js +10 -2
  103. package/lib/vendor/blamejs/lib/guard-markdown.js +11 -24
  104. package/lib/vendor/blamejs/lib/guard-pdf.js +18 -2
  105. package/lib/vendor/blamejs/lib/guard-pop3-command.js +10 -2
  106. package/lib/vendor/blamejs/lib/guard-regex.js +8 -5
  107. package/lib/vendor/blamejs/lib/guard-svg.js +31 -32
  108. package/lib/vendor/blamejs/lib/guard-time.js +1 -1
  109. package/lib/vendor/blamejs/lib/guard-uuid.js +2 -2
  110. package/lib/vendor/blamejs/lib/html-balance.js +3 -3
  111. package/lib/vendor/blamejs/lib/http-client-cache.js +82 -4
  112. package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +16 -1
  113. package/lib/vendor/blamejs/lib/http-client.js +39 -7
  114. package/lib/vendor/blamejs/lib/http-message-signature.js +35 -1
  115. package/lib/vendor/blamejs/lib/i18n-messageformat.js +31 -6
  116. package/lib/vendor/blamejs/lib/i18n.js +35 -21
  117. package/lib/vendor/blamejs/lib/incident-report.js +8 -1
  118. package/lib/vendor/blamejs/lib/ip-utils.js +11 -1
  119. package/lib/vendor/blamejs/lib/json-path.js +23 -1
  120. package/lib/vendor/blamejs/lib/jwk.js +20 -3
  121. package/lib/vendor/blamejs/lib/link-header.js +2 -1
  122. package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +5 -1
  123. package/lib/vendor/blamejs/lib/log-stream-otlp.js +5 -1
  124. package/lib/vendor/blamejs/lib/log-stream.js +8 -3
  125. package/lib/vendor/blamejs/lib/mail-auth.js +123 -22
  126. package/lib/vendor/blamejs/lib/mail-bimi.js +1 -1
  127. package/lib/vendor/blamejs/lib/mail-bounce.js +8 -0
  128. package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +46 -10
  129. package/lib/vendor/blamejs/lib/mail-dav.js +22 -3
  130. package/lib/vendor/blamejs/lib/mail-dkim.js +96 -30
  131. package/lib/vendor/blamejs/lib/mail-helo.js +6 -1
  132. package/lib/vendor/blamejs/lib/mail-scan.js +23 -16
  133. package/lib/vendor/blamejs/lib/mail-send-deliver.js +34 -8
  134. package/lib/vendor/blamejs/lib/mail-server-imap.js +3 -4
  135. package/lib/vendor/blamejs/lib/mail-server-managesieve.js +7 -11
  136. package/lib/vendor/blamejs/lib/mail-server-mx.js +93 -7
  137. package/lib/vendor/blamejs/lib/mail-server-registry.js +8 -2
  138. package/lib/vendor/blamejs/lib/mail.js +15 -5
  139. package/lib/vendor/blamejs/lib/metrics.js +268 -63
  140. package/lib/vendor/blamejs/lib/middleware/age-gate.js +7 -1
  141. package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +1 -1
  142. package/lib/vendor/blamejs/lib/middleware/body-parser.js +19 -4
  143. package/lib/vendor/blamejs/lib/middleware/bot-guard.js +5 -9
  144. package/lib/vendor/blamejs/lib/middleware/csp-report.js +40 -8
  145. package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +24 -10
  146. package/lib/vendor/blamejs/lib/middleware/dpop.js +10 -5
  147. package/lib/vendor/blamejs/lib/middleware/index.js +6 -1
  148. package/lib/vendor/blamejs/lib/middleware/nel.js +1 -1
  149. package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +1 -1
  150. package/lib/vendor/blamejs/lib/middleware/rate-limit.js +12 -1
  151. package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +1 -1
  152. package/lib/vendor/blamejs/lib/middleware/scim-server.js +1 -1
  153. package/lib/vendor/blamejs/lib/middleware/tus-upload.js +6 -2
  154. package/lib/vendor/blamejs/lib/mtls-ca.js +18 -2
  155. package/lib/vendor/blamejs/lib/network-dns-resolver.js +11 -1
  156. package/lib/vendor/blamejs/lib/network-dns.js +21 -2
  157. package/lib/vendor/blamejs/lib/network-tls.js +69 -7
  158. package/lib/vendor/blamejs/lib/nonce-store.js +9 -1
  159. package/lib/vendor/blamejs/lib/object-store/gcs.js +7 -0
  160. package/lib/vendor/blamejs/lib/object-store/sigv4.js +31 -0
  161. package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +1 -1
  162. package/lib/vendor/blamejs/lib/outbox.js +1 -1
  163. package/lib/vendor/blamejs/lib/parsers/safe-ini.js +9 -1
  164. package/lib/vendor/blamejs/lib/parsers/safe-toml.js +10 -1
  165. package/lib/vendor/blamejs/lib/permissions.js +6 -3
  166. package/lib/vendor/blamejs/lib/pid-probe.js +55 -0
  167. package/lib/vendor/blamejs/lib/pqc-agent.js +8 -1
  168. package/lib/vendor/blamejs/lib/pqc-software.js +3 -3
  169. package/lib/vendor/blamejs/lib/pubsub.js +20 -9
  170. package/lib/vendor/blamejs/lib/queue-local.js +8 -1
  171. package/lib/vendor/blamejs/lib/queue-redis.js +5 -0
  172. package/lib/vendor/blamejs/lib/redact.js +54 -0
  173. package/lib/vendor/blamejs/lib/restore-bundle.js +10 -2
  174. package/lib/vendor/blamejs/lib/restore.js +19 -0
  175. package/lib/vendor/blamejs/lib/retention.js +12 -4
  176. package/lib/vendor/blamejs/lib/router.js +60 -6
  177. package/lib/vendor/blamejs/lib/safe-buffer.js +69 -0
  178. package/lib/vendor/blamejs/lib/safe-decompress.js +8 -2
  179. package/lib/vendor/blamejs/lib/safe-dns.js +25 -20
  180. package/lib/vendor/blamejs/lib/safe-ical.js +7 -3
  181. package/lib/vendor/blamejs/lib/safe-mime.js +12 -1
  182. package/lib/vendor/blamejs/lib/safe-object.js +80 -0
  183. package/lib/vendor/blamejs/lib/safe-path.js +52 -4
  184. package/lib/vendor/blamejs/lib/safe-redirect.js +10 -2
  185. package/lib/vendor/blamejs/lib/safe-schema.js +4 -1
  186. package/lib/vendor/blamejs/lib/safe-sieve.js +33 -1
  187. package/lib/vendor/blamejs/lib/safe-sql.js +88 -0
  188. package/lib/vendor/blamejs/lib/safe-vcard.js +7 -3
  189. package/lib/vendor/blamejs/lib/scheduler.js +8 -1
  190. package/lib/vendor/blamejs/lib/security-assert.js +6 -6
  191. package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +74 -27
  192. package/lib/vendor/blamejs/lib/self-update.js +517 -87
  193. package/lib/vendor/blamejs/lib/server-timing.js +2 -4
  194. package/lib/vendor/blamejs/lib/session.js +34 -12
  195. package/lib/vendor/blamejs/lib/sql.js +15 -1
  196. package/lib/vendor/blamejs/lib/ssrf-guard.js +52 -0
  197. package/lib/vendor/blamejs/lib/static.js +55 -13
  198. package/lib/vendor/blamejs/lib/storage.js +8 -2
  199. package/lib/vendor/blamejs/lib/subject.js +6 -1
  200. package/lib/vendor/blamejs/lib/tenant-quota.js +52 -13
  201. package/lib/vendor/blamejs/lib/tls-exporter.js +3 -3
  202. package/lib/vendor/blamejs/lib/tsa.js +34 -13
  203. package/lib/vendor/blamejs/lib/uri-template.js +8 -1
  204. package/lib/vendor/blamejs/lib/vault/index.js +13 -0
  205. package/lib/vendor/blamejs/lib/vc.js +44 -5
  206. package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +26 -26
  207. package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +792 -1
  208. package/lib/vendor/blamejs/lib/vendor/noble-curves.cjs +3443 -1
  209. package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +2737 -1
  210. package/lib/vendor/blamejs/lib/vendor/pki.cjs +39550 -13
  211. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +55 -53
  212. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5551 -5554
  213. package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +22459 -32
  214. package/lib/vendor/blamejs/lib/watcher.js +89 -17
  215. package/lib/vendor/blamejs/lib/webhook-dispatcher.js +25 -3
  216. package/lib/vendor/blamejs/lib/webhook.js +12 -2
  217. package/lib/vendor/blamejs/lib/ws-client.js +32 -1
  218. package/lib/vendor/blamejs/lib/xml-c14n.js +29 -1
  219. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +1 -1
  220. package/lib/vendor/blamejs/package-lock.json +2 -2
  221. package/lib/vendor/blamejs/package.json +1 -1
  222. package/lib/vendor/blamejs/release-notes/v0.16.x.json +1462 -0
  223. package/lib/vendor/blamejs/release-notes/v0.17.0.json +31 -0
  224. package/lib/vendor/blamejs/release-notes/v0.17.1.json +31 -0
  225. package/lib/vendor/blamejs/release-notes/v0.17.10.json +30 -0
  226. package/lib/vendor/blamejs/release-notes/v0.17.11.json +22 -0
  227. package/lib/vendor/blamejs/release-notes/v0.17.12.json +18 -0
  228. package/lib/vendor/blamejs/release-notes/v0.17.13.json +77 -0
  229. package/lib/vendor/blamejs/release-notes/v0.17.14.json +40 -0
  230. package/lib/vendor/blamejs/release-notes/v0.17.15.json +18 -0
  231. package/lib/vendor/blamejs/release-notes/v0.17.16.json +27 -0
  232. package/lib/vendor/blamejs/release-notes/v0.17.17.json +31 -0
  233. package/lib/vendor/blamejs/release-notes/v0.17.18.json +18 -0
  234. package/lib/vendor/blamejs/release-notes/v0.17.19.json +18 -0
  235. package/lib/vendor/blamejs/release-notes/v0.17.2.json +26 -0
  236. package/lib/vendor/blamejs/release-notes/v0.17.20.json +43 -0
  237. package/lib/vendor/blamejs/release-notes/v0.17.21.json +26 -0
  238. package/lib/vendor/blamejs/release-notes/v0.17.22.json +18 -0
  239. package/lib/vendor/blamejs/release-notes/v0.17.3.json +43 -0
  240. package/lib/vendor/blamejs/release-notes/v0.17.4.json +35 -0
  241. package/lib/vendor/blamejs/release-notes/v0.17.5.json +26 -0
  242. package/lib/vendor/blamejs/release-notes/v0.17.6.json +26 -0
  243. package/lib/vendor/blamejs/release-notes/v0.17.7.json +35 -0
  244. package/lib/vendor/blamejs/release-notes/v0.17.8.json +22 -0
  245. package/lib/vendor/blamejs/release-notes/v0.17.9.json +26 -0
  246. package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +4 -0
  247. package/lib/vendor/blamejs/scripts/vendor-update.sh +293 -9
  248. package/lib/vendor/blamejs/socket.yml +94 -0
  249. package/lib/vendor/blamejs/test/00-primitives.js +605 -0
  250. package/lib/vendor/blamejs/test/helpers/drivers.js +12 -9
  251. package/lib/vendor/blamejs/test/integration/audit-stack-mysql.test.js +90 -1
  252. package/lib/vendor/blamejs/test/integration/audit-stack-postgres.test.js +122 -1
  253. package/lib/vendor/blamejs/test/integration/data-layer-mysql.test.js +30 -0
  254. package/lib/vendor/blamejs/test/integration/data-layer-pg.test.js +29 -0
  255. package/lib/vendor/blamejs/test/integration/dsr-cluster-mysql.test.js +479 -0
  256. package/lib/vendor/blamejs/test/integration/dsr-cluster-pg.test.js +487 -0
  257. package/lib/vendor/blamejs/test/integration/federation-auth.test.js +313 -5
  258. package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +80 -0
  259. package/lib/vendor/blamejs/test/integration/openid-federation-chain.test.js +275 -0
  260. package/lib/vendor/blamejs/test/integration/webhook-dispatcher-pg.test.js +96 -0
  261. package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +401 -0
  262. package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +1649 -2
  263. package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +33 -0
  264. package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +0 -0
  265. package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +60 -0
  266. package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +524 -0
  267. package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +891 -0
  268. package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +128 -1
  269. package/lib/vendor/blamejs/test/layer-0-primitives/archive-adapters.test.js +271 -0
  270. package/lib/vendor/blamejs/test/layer-0-primitives/archive-read.test.js +628 -1
  271. package/lib/vendor/blamejs/test/layer-0-primitives/archive-tar-read.test.js +0 -0
  272. package/lib/vendor/blamejs/test/layer-0-primitives/archive-wrap.test.js +227 -0
  273. package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +15 -0
  274. package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +73 -0
  275. package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file.test.js +114 -0
  276. package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-anchor.test.js +141 -0
  277. package/lib/vendor/blamejs/test/layer-0-primitives/audit-tools.test.js +624 -0
  278. package/lib/vendor/blamejs/test/layer-0-primitives/audit.test.js +769 -0
  279. package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +436 -0
  280. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth.test.js +1697 -0
  281. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oid4vp.test.js +495 -0
  282. package/lib/vendor/blamejs/test/layer-0-primitives/auth-password.test.js +500 -0
  283. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml.test.js +1809 -0
  284. package/lib/vendor/blamejs/test/layer-0-primitives/auth-status-list.test.js +243 -1
  285. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index.test.js +2226 -0
  286. package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +183 -0
  287. package/lib/vendor/blamejs/test/layer-0-primitives/base32.test.js +105 -0
  288. package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +693 -0
  289. package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +603 -0
  290. package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +557 -0
  291. package/lib/vendor/blamejs/test/layer-0-primitives/case-insensitive-security-token-guard.test.js +214 -0
  292. package/lib/vendor/blamejs/test/layer-0-primitives/cbor.test.js +25 -0
  293. package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +843 -6
  294. package/lib/vendor/blamejs/test/layer-0-primitives/ciba-authreqid-binding.test.js +77 -2
  295. package/lib/vendor/blamejs/test/layer-0-primitives/ciba.test.js +866 -0
  296. package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +18 -0
  297. package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +19 -0
  298. package/lib/vendor/blamejs/test/layer-0-primitives/cli.test.js +2790 -0
  299. package/lib/vendor/blamejs/test/layer-0-primitives/cluster-lease-renewal-ttl.test.js +114 -0
  300. package/lib/vendor/blamejs/test/layer-0-primitives/cluster.test.js +1032 -0
  301. package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +575 -0
  302. package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +739 -1
  303. package/lib/vendor/blamejs/test/layer-0-primitives/codepoint-class.test.js +8 -0
  304. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +194 -0
  305. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-lifecycle-proto-key.test.js +104 -0
  306. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +254 -0
  307. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +613 -3
  308. package/lib/vendor/blamejs/test/layer-0-primitives/cookies.test.js +140 -0
  309. package/lib/vendor/blamejs/test/layer-0-primitives/cose.test.js +407 -0
  310. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-adversarial.test.js +352 -0
  311. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field-derived-hash.test.js +32 -0
  312. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field.test.js +575 -0
  313. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +10 -0
  314. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +24 -0
  315. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-oprf.test.js +17 -0
  316. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-spki-pin.test.js +183 -0
  317. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-xwing.test.js +48 -0
  318. package/lib/vendor/blamejs/test/layer-0-primitives/crypto.test.js +345 -0
  319. package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +58 -0
  320. package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +48 -0
  321. package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +459 -1
  322. package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +19 -0
  323. package/lib/vendor/blamejs/test/layer-0-primitives/db-query.test.js +1019 -0
  324. package/lib/vendor/blamejs/test/layer-0-primitives/db-raw-residency-gate.test.js +77 -0
  325. package/lib/vendor/blamejs/test/layer-0-primitives/db.test.js +1621 -0
  326. package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +462 -3
  327. package/lib/vendor/blamejs/test/layer-0-primitives/dnssec.test.js +323 -0
  328. package/lib/vendor/blamejs/test/layer-0-primitives/dpop-middleware-verify.test.js +562 -0
  329. package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +901 -1
  330. package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +249 -0
  331. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +561 -0
  332. package/lib/vendor/blamejs/test/layer-0-primitives/external-db.test.js +1214 -0
  333. package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +21 -0
  334. package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +46 -20
  335. package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +147 -3
  336. package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +907 -38
  337. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload-content-safety-skip-audit.test.js +29 -0
  338. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload.test.js +1135 -0
  339. package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +30 -0
  340. package/lib/vendor/blamejs/test/layer-0-primitives/forms.test.js +747 -0
  341. package/lib/vendor/blamejs/test/layer-0-primitives/gate-contract.test.js +1855 -0
  342. package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +30 -0
  343. package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +86 -0
  344. package/lib/vendor/blamejs/test/layer-0-primitives/guard-auth.test.js +117 -0
  345. package/lib/vendor/blamejs/test/layer-0-primitives/guard-cidr.test.js +151 -0
  346. package/lib/vendor/blamejs/test/layer-0-primitives/guard-domain.test.js +422 -0
  347. package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +424 -0
  348. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-gate-disposition-coverage.test.js → guard-gate-disposition.test.js} +1 -1
  349. package/lib/vendor/blamejs/test/layer-0-primitives/guard-graphql.test.js +340 -0
  350. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +29 -0
  351. package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +28 -0
  352. package/lib/vendor/blamejs/test/layer-0-primitives/guard-image.test.js +519 -45
  353. package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
  354. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +51 -0
  355. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jsonpath.test.js +66 -0
  356. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jwt.test.js +436 -0
  357. package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +25 -0
  358. package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +16 -0
  359. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mime.test.js +86 -0
  360. package/lib/vendor/blamejs/test/layer-0-primitives/guard-oauth.test.js +140 -0
  361. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pdf.test.js +80 -0
  362. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +27 -0
  363. package/lib/vendor/blamejs/test/layer-0-primitives/guard-regex.test.js +99 -0
  364. package/lib/vendor/blamejs/test/layer-0-primitives/guard-shell.test.js +76 -0
  365. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-sql-coverage.test.js → guard-sql.test.js} +3 -3
  366. package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +524 -0
  367. package/lib/vendor/blamejs/test/layer-0-primitives/guard-template.test.js +71 -0
  368. package/lib/vendor/blamejs/test/layer-0-primitives/guard-time.test.js +92 -0
  369. package/lib/vendor/blamejs/test/layer-0-primitives/guard-uuid.test.js +86 -0
  370. package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +38 -0
  371. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache-authorization.test.js +347 -0
  372. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +908 -0
  373. package/lib/vendor/blamejs/test/layer-0-primitives/http-client.test.js +2874 -0
  374. package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +643 -0
  375. package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +38 -0
  376. package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +1153 -1
  377. package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +494 -0
  378. package/lib/vendor/blamejs/test/layer-0-primitives/ip-utils.test.js +30 -0
  379. package/lib/vendor/blamejs/test/layer-0-primitives/jsdoc-example-execution.test.js +177 -0
  380. package/lib/vendor/blamejs/test/layer-0-primitives/json-path.test.js +103 -0
  381. package/lib/vendor/blamejs/test/layer-0-primitives/json-schema.test.js +214 -0
  382. package/lib/vendor/blamejs/test/layer-0-primitives/jwk.test.js +41 -0
  383. package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +276 -0
  384. package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
  385. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream.test.js +241 -0
  386. package/lib/vendor/blamejs/test/layer-0-primitives/log.test.js +106 -0
  387. package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +441 -0
  388. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +2136 -4
  389. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +759 -12
  390. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +811 -1
  391. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +401 -3
  392. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +751 -8
  393. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +864 -0
  394. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto.test.js +110 -0
  395. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +830 -1
  396. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +635 -86
  397. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +818 -0
  398. package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +27 -0
  399. package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +199 -0
  400. package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +686 -2
  401. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +778 -0
  402. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +1438 -0
  403. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +449 -6
  404. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +773 -2
  405. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +623 -3
  406. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +55 -0
  407. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +13 -0
  408. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +877 -1
  409. package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +326 -0
  410. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +55 -0
  411. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +242 -0
  412. package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +1596 -2
  413. package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +440 -4
  414. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +89 -0
  415. package/lib/vendor/blamejs/test/layer-0-primitives/metrics.test.js +1230 -0
  416. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-assetlinks.test.js +113 -0
  417. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-body-parser.test.js +1169 -0
  418. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-bot-disclose.test.js +123 -0
  419. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-cookies.test.js +108 -0
  420. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-gpc.test.js +121 -0
  421. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-headers.test.js +163 -0
  422. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-host-allowlist.test.js +154 -0
  423. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-require-content-type.test.js +127 -0
  424. package/lib/vendor/blamejs/test/layer-0-primitives/{middleware-tus-upload-coverage.test.js → middleware-tus-upload.test.js} +45 -0
  425. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-web-app-manifest.test.js +132 -0
  426. package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-crl-fingerprint-only.test.js +92 -0
  427. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +65 -0
  428. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +1727 -1
  429. package/lib/vendor/blamejs/test/layer-0-primitives/network-nts.test.js +699 -0
  430. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy.test.js +1181 -0
  431. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +1876 -3
  432. package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +32 -0
  433. package/lib/vendor/blamejs/test/layer-0-primitives/nonce-store-enforce-replay-nonboolean.test.js +81 -0
  434. package/lib/vendor/blamejs/test/layer-0-primitives/ntp-check.test.js +122 -0
  435. package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +378 -0
  436. package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +77 -0
  437. package/lib/vendor/blamejs/test/layer-0-primitives/oid4vci.test.js +1016 -0
  438. package/lib/vendor/blamejs/test/layer-0-primitives/openid-federation.test.js +946 -0
  439. package/lib/vendor/blamejs/test/layer-0-primitives/outbox.test.js +818 -0
  440. package/lib/vendor/blamejs/test/layer-0-primitives/own-property-membership-guards.test.js +109 -0
  441. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-safe-toml.test.js +543 -0
  442. package/lib/vendor/blamejs/test/layer-0-primitives/{parsers-safe-yaml-coverage.test.js → parsers-safe-yaml.test.js} +2 -2
  443. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +73 -0
  444. package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +649 -0
  445. package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +524 -0
  446. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +22 -0
  447. package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +295 -0
  448. package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +36 -0
  449. package/lib/vendor/blamejs/test/layer-0-primitives/queue.test.js +83 -0
  450. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-xff-spoofing.test.js +34 -0
  451. package/lib/vendor/blamejs/test/layer-0-primitives/redact.test.js +1031 -0
  452. package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +94 -0
  453. package/lib/vendor/blamejs/test/layer-0-primitives/require-bound-key.test.js +401 -0
  454. package/lib/vendor/blamejs/test/layer-0-primitives/restore-empty-manifest-wipe.test.js +154 -0
  455. package/lib/vendor/blamejs/test/layer-0-primitives/retention.test.js +600 -0
  456. package/lib/vendor/blamejs/test/layer-0-primitives/router-host-path-injection.test.js +231 -0
  457. package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +21 -0
  458. package/lib/vendor/blamejs/test/layer-0-primitives/router.test.js +1277 -0
  459. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async.test.js +133 -0
  460. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer-linear-scans.test.js +14 -0
  461. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer.test.js +80 -0
  462. package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +28 -0
  463. package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +245 -0
  464. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +32 -0
  465. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ini.test.js +376 -0
  466. package/lib/vendor/blamejs/test/layer-0-primitives/safe-json.test.js +175 -0
  467. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +518 -0
  468. package/lib/vendor/blamejs/test/layer-0-primitives/safe-object.test.js +62 -0
  469. package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +30 -0
  470. package/lib/vendor/blamejs/test/layer-0-primitives/safe-schema.test.js +104 -0
  471. package/lib/vendor/blamejs/test/layer-0-primitives/safe-sql.test.js +142 -0
  472. package/lib/vendor/blamejs/test/layer-0-primitives/safe-url.test.js +112 -0
  473. package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +26 -0
  474. package/lib/vendor/blamejs/test/layer-0-primitives/scheduler.test.js +157 -0
  475. package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +396 -0
  476. package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +930 -0
  477. package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +755 -82
  478. package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +1053 -0
  479. package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +200 -0
  480. package/lib/vendor/blamejs/test/layer-0-primitives/session-strict-binding-missing-failclosed.test.js +110 -0
  481. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +636 -0
  482. package/lib/vendor/blamejs/test/layer-0-primitives/sql-offset-without-limit.test.js +94 -0
  483. package/lib/vendor/blamejs/test/layer-0-primitives/sql.test.js +1190 -0
  484. package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +21 -0
  485. package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +850 -0
  486. package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +146 -0
  487. package/lib/vendor/blamejs/test/layer-0-primitives/storage.test.js +621 -0
  488. package/lib/vendor/blamejs/test/layer-0-primitives/subject.test.js +47 -0
  489. package/lib/vendor/blamejs/test/layer-0-primitives/template.test.js +582 -0
  490. package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +587 -25
  491. package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +11 -0
  492. package/lib/vendor/blamejs/test/layer-0-primitives/tsa.test.js +524 -63
  493. package/lib/vendor/blamejs/test/layer-0-primitives/uri-template.test.js +27 -0
  494. package/lib/vendor/blamejs/test/layer-0-primitives/vault-rotate.test.js +866 -0
  495. package/lib/vendor/blamejs/test/layer-0-primitives/vault.test.js +74 -0
  496. package/lib/vendor/blamejs/test/layer-0-primitives/vc.test.js +215 -0
  497. package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +550 -0
  498. package/lib/vendor/blamejs/test/layer-0-primitives/webhook-dispatcher.test.js +388 -0
  499. package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +262 -0
  500. package/lib/vendor/blamejs/test/layer-0-primitives/websocket.test.js +1294 -0
  501. package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +629 -0
  502. package/lib/vendor/blamejs/test/layer-0-primitives/xml-c14n-attr-normalization.test.js +164 -0
  503. package/lib/vendor/blamejs/test/smoke.js +2 -0
  504. package/package.json +1 -1
  505. package/lib/vendor/blamejs/release-notes/v0.16.0.json +0 -44
  506. package/lib/vendor/blamejs/release-notes/v0.16.1.json +0 -36
  507. package/lib/vendor/blamejs/release-notes/v0.16.2.json +0 -71
  508. package/lib/vendor/blamejs/release-notes/v0.16.3.json +0 -71
  509. package/lib/vendor/blamejs/test/layer-0-primitives/acme-coverage.test.js +0 -441
  510. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth-coverage.test.js +0 -482
  511. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml-coverage.test.js +0 -671
  512. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index-coverage.test.js +0 -690
  513. package/lib/vendor/blamejs/test/layer-0-primitives/cli-coverage.test.js +0 -238
  514. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials-coverage.test.js +0 -319
  515. package/lib/vendor/blamejs/test/layer-0-primitives/keychain-coverage.test.js +0 -0
  516. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth-coverage.test.js +0 -437
  517. package/lib/vendor/blamejs/test/layer-0-primitives/mcp-coverage.test.js +0 -443
  518. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-coverage.test.js +0 -395
  519. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy-coverage.test.js +0 -565
  520. package/lib/vendor/blamejs/test/layer-0-primitives/router-coverage.test.js +0 -592
  521. package/lib/vendor/blamejs/test/layer-0-primitives/sql-coverage.test.js +0 -422
  522. package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +0 -573
@@ -145,12 +145,33 @@ async function _runAll() {
145
145
  await testEventTypeAndWildcardMatching();
146
146
  await testTransientFailureBacksOff();
147
147
  await testThrownTransportErrorBacksOff();
148
+ await testTransientDnsRevalidationRetries();
149
+ await testPermanentDnsRevalidationDeadLetters();
150
+ await testDeliveryTimeSsrfRebindDeadLetters();
148
151
  await testMysqlSchemaNoPartialIndex();
149
152
  await testInlineDeliveryNotDoubleClaimed();
150
153
  await testPostgresClaimUsesSkipLockedDisjoint();
151
154
  await testMaxAttemptsDeadLetters();
152
155
  await testDlqReplay();
153
156
  await testDeliveriesRetry();
157
+ // ---- error / edge / adversarial branch coverage ----
158
+ await testDispatcherOptsValidation();
159
+ await testBadTableNameRejected();
160
+ await testRegisterEventTypesValidation();
161
+ await testDispatchInputValidation();
162
+ await testDispatchNoSubscribers();
163
+ await testDispatchStringAndBufferPayload();
164
+ await testRemoveEndpoint();
165
+ await testRetryUnknownDeliveryId();
166
+ await testDeliveryEndpointRemovedDeadLetters();
167
+ await testGetUnknownDeliveryReturnsNull();
168
+ await testDefaultOptionsConstructAndDeliver();
169
+ await testBackoffCappedAtMax();
170
+ await testDisabledEndpointSkipped();
171
+ await testCustomSignatureHeader();
172
+ await testDeclareSchemaPostgresExplicitXdb();
173
+ await testReapStaleInflight();
174
+ await testListDeliveriesFilters();
154
175
  }
155
176
 
156
177
  function _newDispatcher(xdb, transport, extra) {
@@ -304,6 +325,80 @@ async function testThrownTransportErrorBacksOff() {
304
325
  check("thrown transport error not dead-lettered", res.deliveries[0].dead !== true);
305
326
  }
306
327
 
328
+ async function testTransientDnsRevalidationRetries() {
329
+ // The delivery-time SSRF re-validation resolves the destination host. A
330
+ // TRANSIENT resolver fault (EAI_AGAIN) during that lookup must be treated as
331
+ // transient — rescheduled — NOT dead-lettered. Regression: the re-validation
332
+ // catch marked EVERY throw permanent, so a DNS blip dead-lettered a delivery.
333
+ var xdb = _sqliteExternalDb();
334
+ var HOST_URL = "https://hook.example.test/hooks";
335
+ var calls = 0;
336
+ var dnsLookup = function (host) {
337
+ calls += 1;
338
+ if (calls === 1) return Promise.resolve([{ address: "93.184.216.34", family: 4 }]); // register: public
339
+ var e = new Error("getaddrinfo EAI_AGAIN " + host); e.code = "EAI_AGAIN"; // deliver: transient
340
+ return Promise.reject(e);
341
+ };
342
+ var wd = _newDispatcher(xdb, _stubTransport(), { dnsLookup: dnsLookup });
343
+ await wd.declareSchema();
344
+ await wd.registerEndpoint({ endpointId: "td", url: HOST_URL, eventTypes: ["e"], secret: "s" });
345
+ var res = await wd.dispatch("e", { n: 1 });
346
+ check("transient DNS in SSRF re-validation not delivered", res.delivered === 0 && res.failed === 1);
347
+ check("transient DNS not dead-lettered", res.deliveries[0].dead !== true);
348
+ var rows = await wd.deliveries.list({ endpointId: "td" });
349
+ check("transient DNS delivery stays pending for retry", rows.length === 1 && rows[0].status === "pending");
350
+ check("transient DNS resolver error recorded", /EAI_AGAIN/.test(rows[0].lastError || ""));
351
+ }
352
+
353
+ async function testPermanentDnsRevalidationDeadLetters() {
354
+ // A PERMANENT resolver failure at the SSRF re-check — a host with no
355
+ // addresses / a removed DNS record — carries the framework DnsError verdict
356
+ // err.permanent === true. It must dead-letter immediately, NOT burn every
357
+ // retry attempt on a name that will never resolve. (Distinct from a transient
358
+ // DNS blip, which retries.)
359
+ var xdb = _sqliteExternalDb();
360
+ var HOST_URL = "https://gone.example.test/hooks";
361
+ var calls = 0;
362
+ var dnsLookup = function (host) {
363
+ calls += 1;
364
+ if (calls === 1) return Promise.resolve([{ address: "93.184.216.34", family: 4 }]); // register: public
365
+ var e = new Error("dns lookup of '" + host + "' returned no addresses"); // deliver: permanent
366
+ e.code = "dns/no-result"; e.permanent = true;
367
+ return Promise.reject(e);
368
+ };
369
+ var wd = _newDispatcher(xdb, _stubTransport(), { dnsLookup: dnsLookup });
370
+ await wd.declareSchema();
371
+ await wd.registerEndpoint({ endpointId: "gone", url: HOST_URL, eventTypes: ["e"], secret: "s" });
372
+ var res = await wd.dispatch("e", { n: 1 });
373
+ check("permanent DNS failure not delivered", res.delivered === 0 && res.failed === 1);
374
+ check("permanent DNS failure is dead-lettered (not retried)", res.deliveries[0].dead === true);
375
+ var rows = await wd.deliveries.list({ endpointId: "gone" });
376
+ check("permanent DNS delivery status is dead", rows.length === 1 && rows[0].status === "dead");
377
+ }
378
+
379
+ async function testDeliveryTimeSsrfRebindDeadLetters() {
380
+ // The control: a destination that was public at registration but REBINDS to a
381
+ // loopback IP by delivery time is a genuine SSRF refusal — PERMANENT — and is
382
+ // dead-lettered immediately (a WebhookDispatcherError, not a raw resolver fault).
383
+ var xdb = _sqliteExternalDb();
384
+ var HOST_URL = "https://hook.example.test/hooks";
385
+ var calls = 0;
386
+ var dnsLookup = function () {
387
+ calls += 1;
388
+ if (calls === 1) return Promise.resolve([{ address: "93.184.216.34", family: 4 }]); // register: public
389
+ return Promise.resolve([{ address: "127.0.0.1", family: 4 }]); // deliver: rebound internal
390
+ };
391
+ var wd = _newDispatcher(xdb, _stubTransport(), { dnsLookup: dnsLookup });
392
+ await wd.declareSchema();
393
+ await wd.registerEndpoint({ endpointId: "rb", url: HOST_URL, eventTypes: ["e"], secret: "s" });
394
+ var res = await wd.dispatch("e", { n: 1 });
395
+ check("SSRF-rebind at delivery not delivered", res.delivered === 0 && res.failed === 1);
396
+ check("SSRF-rebind at delivery is dead-lettered (permanent)", res.deliveries[0].dead === true);
397
+ var rows = await wd.deliveries.list({ endpointId: "rb" });
398
+ check("SSRF-rebind delivery status is dead", rows.length === 1 && rows[0].status === "dead");
399
+ check("SSRF-refused error recorded", /ssrf-refused|resolves to/.test(rows[0].lastError || ""));
400
+ }
401
+
307
402
  async function testMysqlSchemaNoPartialIndex() {
308
403
  // MySQL has no partial indexes; sql.createIndex refuses `where` on mysql, so
309
404
  // declareSchema must emit a NON-partial index there or it throws on boot.
@@ -441,6 +536,299 @@ async function testDeliveriesRetry() {
441
536
  check("retried delivery now delivered", after.status === "delivered");
442
537
  }
443
538
 
539
+ // ---- opts / construction validation (the validateOpts.shape + table-name gate) ----
540
+ async function testDispatcherOptsValidation() {
541
+ var xdb = _sqliteExternalDb();
542
+ var missingDb = false, badMax = false, infMax = false, unknownOpt = false;
543
+ try { b.webhook.dispatcher({}); }
544
+ catch (e) { missingDb = e.code === "webhook-dispatcher/bad-opts"; }
545
+ try { b.webhook.dispatcher({ externalDb: xdb, httpRequest: _stubTransport(), maxAttempts: -5 }); }
546
+ catch (e) { badMax = e.code === "webhook-dispatcher/bad-opts"; }
547
+ try { b.webhook.dispatcher({ externalDb: xdb, httpRequest: _stubTransport(), maxAttempts: Infinity }); }
548
+ catch (e) { infMax = e.code === "webhook-dispatcher/bad-opts"; }
549
+ try { b.webhook.dispatcher({ externalDb: xdb, httpRequest: _stubTransport(), bogusOpt: 1 }); }
550
+ catch (e) { unknownOpt = e.code === "webhook-dispatcher/bad-opts"; }
551
+ check("dispatcher throws on missing externalDb", missingDb);
552
+ check("dispatcher throws on negative maxAttempts", badMax);
553
+ check("dispatcher throws on non-finite maxAttempts", infMax);
554
+ check("dispatcher throws on an unknown opt (exhaustive shape)", unknownOpt);
555
+ }
556
+
557
+ async function testBadTableNameRejected() {
558
+ var xdb = _sqliteExternalDb();
559
+ // An injection-bearing table name is refused at construction by
560
+ // safeSql.quoteIdentifier (parity with b.db.from()).
561
+ var endpointsThrew = false, deliveriesThrew = false;
562
+ try { _newDispatcher(xdb, _stubTransport(), { endpointsTable: "bad name; DROP TABLE x" }); }
563
+ catch (_e) { endpointsThrew = true; }
564
+ try { _newDispatcher(xdb, _stubTransport(), { deliveriesTable: "evil\"; --" }); }
565
+ catch (_e) { deliveriesThrew = true; }
566
+ check("bad endpointsTable name rejected at construction", endpointsThrew);
567
+ check("bad deliveriesTable name rejected at construction", deliveriesThrew);
568
+ }
569
+
570
+ async function testRegisterEventTypesValidation() {
571
+ var xdb = _sqliteExternalDb();
572
+ var wd = _newDispatcher(xdb, _stubTransport());
573
+ await wd.declareSchema();
574
+ var emptyThrew = false, missingThrew = false;
575
+ try { await wd.registerEndpoint({ endpointId: "e1", url: PUBLIC_URL, eventTypes: [], secret: "s" }); }
576
+ catch (e) { emptyThrew = e.code === "webhook-dispatcher/bad-opts"; }
577
+ try { await wd.registerEndpoint({ endpointId: "e2", url: PUBLIC_URL, secret: "s" }); }
578
+ catch (e) { missingThrew = e.code === "webhook-dispatcher/bad-opts"; }
579
+ check("registerEndpoint refuses empty eventTypes array", emptyThrew);
580
+ check("registerEndpoint refuses missing eventTypes", missingThrew);
581
+ // Neither bad call should have written a row.
582
+ var eps = await wd.listEndpoints();
583
+ check("no endpoint persisted after eventTypes rejection", eps.length === 0);
584
+ }
585
+
586
+ async function testDispatchInputValidation() {
587
+ var xdb = _sqliteExternalDb();
588
+ var wd = _newDispatcher(xdb, _stubTransport());
589
+ await wd.declareSchema();
590
+ var emptyEventThrew = false, nullPayloadThrew = false, undefPayloadThrew = false;
591
+ try { await wd.dispatch("", { n: 1 }); }
592
+ catch (e) { emptyEventThrew = e.code === "webhook-dispatcher/bad-opts"; }
593
+ try { await wd.dispatch("e", null); }
594
+ catch (e) { nullPayloadThrew = e.code === "webhook-dispatcher/bad-opts"; }
595
+ try { await wd.dispatch("e", undefined); }
596
+ catch (e) { undefPayloadThrew = e.code === "webhook-dispatcher/bad-opts"; }
597
+ check("dispatch refuses empty eventType", emptyEventThrew);
598
+ check("dispatch refuses null payload", nullPayloadThrew);
599
+ check("dispatch refuses undefined payload", undefPayloadThrew);
600
+ }
601
+
602
+ async function testDispatchNoSubscribers() {
603
+ var xdb = _sqliteExternalDb();
604
+ var transport = _stubTransport();
605
+ var wd = _newDispatcher(xdb, transport);
606
+ await wd.declareSchema();
607
+ await wd.registerEndpoint({ endpointId: "sub", url: PUBLIC_URL, eventTypes: ["subscribed.only"], secret: "s" });
608
+ var res = await wd.dispatch("nobody.listening", { n: 1 });
609
+ check("dispatch with no subscribers delivers nothing", res.delivered === 0 && res.failed === 0);
610
+ check("dispatch with no subscribers has an empty deliveries list", res.deliveries.length === 0);
611
+ check("no delivery row written for an unsubscribed event", transport.calls.length === 0);
612
+ }
613
+
614
+ async function testDispatchStringAndBufferPayload() {
615
+ var xdb = _sqliteExternalDb();
616
+ var transport = _stubTransport();
617
+ var wd = _newDispatcher(xdb, transport);
618
+ await wd.declareSchema();
619
+ await wd.registerEndpoint({ endpointId: "raw", url: PUBLIC_URL, eventTypes: ["s", "b"], secret: "s" });
620
+ await wd.dispatch("s", "already-a-string-body");
621
+ check("string payload passed through verbatim (not re-serialized)",
622
+ transport.calls.length === 1 && transport.calls[0].body === "already-a-string-body");
623
+ await wd.dispatch("b", Buffer.from("buffer-bytes-body", "utf8"));
624
+ check("Buffer payload coerced to its utf8 string",
625
+ transport.calls.length === 2 && transport.calls[1].body === "buffer-bytes-body");
626
+ }
627
+
628
+ async function testRemoveEndpoint() {
629
+ var xdb = _sqliteExternalDb();
630
+ var transport = _stubTransport();
631
+ var wd = _newDispatcher(xdb, transport);
632
+ await wd.declareSchema();
633
+ await wd.registerEndpoint({ endpointId: "keep", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
634
+ await wd.registerEndpoint({ endpointId: "remove", url: PUBLIC_URL2, eventTypes: ["e"], secret: "s" });
635
+ var rm = await wd.removeEndpoint("remove");
636
+ check("removeEndpoint reports removed", rm && rm.removed === true && rm.endpointId === "remove");
637
+ var eps = await wd.listEndpoints();
638
+ check("removed endpoint no longer listed",
639
+ eps.length === 1 && eps[0].endpointId === "keep");
640
+ var res = await wd.dispatch("e", { n: 1 });
641
+ check("removed endpoint no longer receives dispatch", res.delivered === 1);
642
+ // Validation: empty endpointId is refused.
643
+ var idThrew = false;
644
+ try { await wd.removeEndpoint(""); }
645
+ catch (e) { idThrew = e.code === "webhook-dispatcher/bad-opts"; }
646
+ check("removeEndpoint refuses empty endpointId", idThrew);
647
+ }
648
+
649
+ async function testRetryUnknownDeliveryId() {
650
+ var xdb = _sqliteExternalDb();
651
+ var wd = _newDispatcher(xdb, _stubTransport());
652
+ await wd.declareSchema();
653
+ var res = await wd.deliveries.retry("deadbeefdeadbeefdeadbeefdeadbeef");
654
+ check("retry of an unknown delivery id fails softly (row not found)",
655
+ res && res.ok === false && res.error === "delivery row not found");
656
+ // Empty id is a hard validation throw.
657
+ var threw = false;
658
+ try { await wd.deliveries.retry(""); }
659
+ catch (e) { threw = e.code === "webhook-dispatcher/bad-opts"; }
660
+ check("retry refuses empty delivery id", threw);
661
+ }
662
+
663
+ async function testDeliveryEndpointRemovedDeadLetters() {
664
+ // A delivery whose endpoint was removed between dispatch and re-attempt can
665
+ // never sign (no secret) — it is dead-lettered as "endpoint no longer
666
+ // registered", not retried forever.
667
+ var xdb = _sqliteExternalDb();
668
+ var transport = _stubTransport();
669
+ var wd = _newDispatcher(xdb, transport);
670
+ await wd.declareSchema();
671
+ await wd.registerEndpoint({ endpointId: "gone2", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
672
+ var res = await wd.dispatch("e", { n: 1 });
673
+ var deliveryId = res.deliveries[0].deliveryId;
674
+ await wd.removeEndpoint("gone2");
675
+ var retryRes = await wd.deliveries.retry(deliveryId);
676
+ check("delivery whose endpoint was removed is dead-lettered", retryRes.dead === true);
677
+ var row = await wd.deliveries.get(deliveryId);
678
+ check("removed-endpoint delivery status is dead", row && row.status === "dead");
679
+ check("removed-endpoint delivery records the reason",
680
+ /endpoint no longer registered/.test(row.lastError || ""));
681
+ }
682
+
683
+ async function testGetUnknownDeliveryReturnsNull() {
684
+ var xdb = _sqliteExternalDb();
685
+ var wd = _newDispatcher(xdb, _stubTransport());
686
+ await wd.declareSchema();
687
+ var got = await wd.deliveries.get("00000000000000000000000000000000");
688
+ check("deliveries.get returns null for an unknown id", got === null);
689
+ }
690
+
691
+ async function testDefaultOptionsConstructAndDeliver() {
692
+ // Construct with ONLY the required externalDb + an injected transport — every
693
+ // other opt (maxAttempts / batchSize / claimReclaimMs / retryBackoff /
694
+ // signatureHeader / allowedProtocols / now) falls to its default.
695
+ var xdb = _sqliteExternalDb();
696
+ var transport = _stubTransport();
697
+ var wd = b.webhook.dispatcher({ externalDb: xdb, httpRequest: transport });
698
+ await wd.declareSchema();
699
+ await wd.registerEndpoint({ endpointId: "def", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
700
+ var res = await wd.dispatch("e", { n: 1 });
701
+ check("dispatcher built with all-default opts delivers", res.delivered === 1);
702
+ var sigHeader = transport.calls[0].headers["Webhook-Signature"];
703
+ check("default signatureHeader is the framework default (Webhook-Signature)",
704
+ typeof sigHeader === "string" && sigHeader.length > 0);
705
+ }
706
+
707
+ async function testBackoffCappedAtMax() {
708
+ // initialMs (10s) exceeds maxMs (5s), so the very first reschedule must clamp
709
+ // the backoff to maxMs — exercising the `ms > backoffMax` cap branch.
710
+ var now = 1700000000000;
711
+ var clock = function () { return now; };
712
+ var xdb = _sqliteExternalDb();
713
+ var transport = _stubTransport();
714
+ transport.setStatus(503);
715
+ var wd = b.webhook.dispatcher({
716
+ externalDb: xdb, httpRequest: transport, maxAttempts: 5,
717
+ retryBackoff: { initialMs: 10000, maxMs: 5000, factor: 2 }, now: clock,
718
+ });
719
+ await wd.declareSchema();
720
+ await wd.registerEndpoint({ endpointId: "cap", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
721
+ await wd.dispatch("e", { n: 1 });
722
+ var rows = await wd.deliveries.list({ endpointId: "cap" });
723
+ var expected = new Date(now + 5000).toISOString();
724
+ check("backoff is clamped to maxMs, not initialMs*factor^n",
725
+ rows.length === 1 && rows[0].nextAttemptAt === expected);
726
+ }
727
+
728
+ async function testDisabledEndpointSkipped() {
729
+ // A disabled endpoint (disabled=1) is filtered out of the fan-out AND
730
+ // surfaced as disabled:true by listEndpoints (_isTruthy on the integer flag).
731
+ var xdb = _sqliteExternalDb();
732
+ var transport = _stubTransport();
733
+ var wd = _newDispatcher(xdb, transport);
734
+ await wd.declareSchema();
735
+ await wd.registerEndpoint({ endpointId: "dis", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
736
+ xdb._raw.prepare("UPDATE " + tableName("webhook_endpoints") +
737
+ " SET disabled = 1 WHERE endpoint_id = ?").run("dis");
738
+ var eps = await wd.listEndpoints();
739
+ check("listEndpoints reports the endpoint as disabled",
740
+ eps.length === 1 && eps[0].disabled === true);
741
+ var res = await wd.dispatch("e", { n: 1 });
742
+ check("a disabled endpoint receives no delivery",
743
+ res.delivered === 0 && res.failed === 0 && transport.calls.length === 0);
744
+ }
745
+
746
+ async function testCustomSignatureHeader() {
747
+ // A custom signatureHeader opt is forwarded to b.webhook.signer, so the POSTed
748
+ // request carries the operator's header name instead of the default.
749
+ var xdb = _sqliteExternalDb();
750
+ var transport = _stubTransport();
751
+ var wd = _newDispatcher(xdb, transport, { signatureHeader: "X-Partner-Signature" });
752
+ await wd.declareSchema();
753
+ await wd.registerEndpoint({ endpointId: "csh", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
754
+ await wd.dispatch("e", { n: 1 });
755
+ var h = transport.calls[0].headers;
756
+ check("custom signatureHeader name is emitted", typeof h["X-Partner-Signature"] === "string");
757
+ check("default Webhook-Signature header absent under a custom header",
758
+ h["Webhook-Signature"] === undefined);
759
+ }
760
+
761
+ async function testDeclareSchemaPostgresExplicitXdb() {
762
+ // declareSchema(xdb) with an explicit Postgres target: exercises the
763
+ // `xdb || externalDb` xdb branch AND the postgres TIMESTAMPTZ + partial-index
764
+ // (WHERE status='pending') branches — the complement of the mysql schema test.
765
+ var xdb = _sqliteExternalDb();
766
+ var wd = _newDispatcher(xdb, _stubTransport());
767
+ var sqls = [];
768
+ var pgTarget = {
769
+ dialect: "postgres",
770
+ query: async function (s) { sqls.push(s); return { rows: [] }; },
771
+ transaction: async function (fn) { return fn(this); },
772
+ };
773
+ await wd.declareSchema(pgTarget);
774
+ var joined = sqls.join(" || ");
775
+ check("postgres schema uses TIMESTAMPTZ timestamps", /TIMESTAMPTZ/i.test(joined));
776
+ var idxSql = sqls.filter(function (s) { return /_pending_idx/i.test(s); }).join(" || ");
777
+ check("postgres pending index is partial (WHERE status = 'pending')",
778
+ /where\s+status\s*=\s*'pending'/i.test(idxSql));
779
+ }
780
+
781
+ async function testReapStaleInflight() {
782
+ // A worker that claimed a delivery (status 'in-flight') then crashed strands
783
+ // the row. processRetries()'s reaper flips it back to 'pending' once the lease
784
+ // (claimReclaimMs) expires; a FRESHLY-claimed in-flight row is NOT reaped.
785
+ var now = 1700000000000;
786
+ var clock = function () { return now; };
787
+ var xdb = _sqliteExternalDb();
788
+ var transport = _stubTransport();
789
+ transport.setStatus(503);
790
+ var wd = b.webhook.dispatcher({
791
+ externalDb: xdb, httpRequest: transport, maxAttempts: 5,
792
+ retryBackoff: { initialMs: 1000, maxMs: 5000, factor: 2 }, now: clock,
793
+ });
794
+ await wd.declareSchema();
795
+ await wd.registerEndpoint({ endpointId: "reap", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
796
+ var d1 = (await wd.dispatch("e", { n: 1 })).deliveries[0].deliveryId; // → pending
797
+ var d2 = (await wd.dispatch("e", { n: 2 })).deliveries[0].deliveryId; // → pending
798
+ var tenMinMs = 600000; // well past the 5-min default claimReclaimMs lease
799
+ var staleIso = new Date(now - tenMinMs).toISOString();
800
+ var freshIso = new Date(now).toISOString();
801
+ var dueIso = new Date(now - tenMinMs).toISOString();
802
+ var upd = "UPDATE " + tableName("webhook_deliveries") +
803
+ " SET status = 'in-flight', claimed_at = ?, next_attempt_at = ? WHERE delivery_id = ?";
804
+ xdb._raw.prepare(upd).run(staleIso, dueIso, d1); // stranded past the lease
805
+ xdb._raw.prepare(upd).run(freshIso, dueIso, d2); // just claimed — still owned
806
+ transport.setStatus(200);
807
+ var res = await wd.processRetries();
808
+ check("only the stale in-flight row is reaped + re-attempted", res.attempted === 1 && res.delivered === 1);
809
+ var r1 = await wd.deliveries.get(d1);
810
+ var r2 = await wd.deliveries.get(d2);
811
+ check("reaped delivery is now delivered", r1 && r1.status === "delivered");
812
+ check("freshly-claimed delivery is left in-flight (not reaped)", r2 && r2.status === "in-flight");
813
+ }
814
+
815
+ async function testListDeliveriesFilters() {
816
+ // Drive the endpointId + status + explicit limit filter branches of
817
+ // deliveries.list in one pass.
818
+ var xdb = _sqliteExternalDb();
819
+ var transport = _stubTransport();
820
+ var wd = _newDispatcher(xdb, transport);
821
+ await wd.declareSchema();
822
+ await wd.registerEndpoint({ endpointId: "f1", url: PUBLIC_URL, eventTypes: ["e"], secret: "s" });
823
+ await wd.registerEndpoint({ endpointId: "f2", url: PUBLIC_URL2, eventTypes: ["e"], secret: "s" });
824
+ await wd.dispatch("e", { n: 1 }); // both delivered (200)
825
+ var f1 = await wd.deliveries.list({ endpointId: "f1", status: "delivered", limit: 10 });
826
+ check("list filters by endpointId + status + explicit limit",
827
+ f1.length === 1 && f1[0].endpointId === "f1" && f1[0].status === "delivered");
828
+ var all = await wd.deliveries.list();
829
+ check("list with no filter returns every delivery", all.length === 2);
830
+ }
831
+
444
832
  module.exports = { run: run };
445
833
 
446
834
  if (require.main === module) {