@blamejs/blamejs-shop 0.5.12 → 0.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/lib/asset-manifest.json +1 -1
  3. package/lib/vendor/MANIFEST.json +632 -416
  4. package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +21 -10
  5. package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +30 -9
  6. package/lib/vendor/blamejs/.github/dependabot.yml +8 -0
  7. package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +3 -3
  8. package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +7 -2
  9. package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +7 -2
  10. package/lib/vendor/blamejs/.github/workflows/ci.yml +21 -21
  11. package/lib/vendor/blamejs/.github/workflows/codeql.yml +3 -3
  12. package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +4 -4
  13. package/lib/vendor/blamejs/.github/workflows/release-container.yml +7 -7
  14. package/lib/vendor/blamejs/.github/workflows/scorecard.yml +3 -3
  15. package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +1 -1
  16. package/lib/vendor/blamejs/.gitignore +2 -0
  17. package/lib/vendor/blamejs/CHANGELOG.md +122 -0
  18. package/lib/vendor/blamejs/NOTICE +26 -1
  19. package/lib/vendor/blamejs/SECURITY.md +1 -1
  20. package/lib/vendor/blamejs/api-snapshot.json +207 -5
  21. package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +29 -0
  22. package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +1 -0
  23. package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +31 -0
  24. package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +109 -0
  25. package/lib/vendor/blamejs/examples/wiki/nginx.conf +106 -0
  26. package/lib/vendor/blamejs/examples/wiki/package-lock.json +1 -1
  27. package/lib/vendor/blamejs/examples/wiki/test/e2e.js +92 -0
  28. package/lib/vendor/blamejs/fuzz/asn1-der.fuzz.js +28 -0
  29. package/lib/vendor/blamejs/fuzz/cms-codec.fuzz.js +17 -0
  30. package/lib/vendor/blamejs/fuzz/link-header.fuzz.js +18 -0
  31. package/lib/vendor/blamejs/index.js +6 -0
  32. package/lib/vendor/blamejs/lib/a2a.js +4 -4
  33. package/lib/vendor/blamejs/lib/agent-idempotency.js +18 -2
  34. package/lib/vendor/blamejs/lib/agent-saga.js +36 -8
  35. package/lib/vendor/blamejs/lib/agent-snapshot.js +63 -6
  36. package/lib/vendor/blamejs/lib/app-shutdown.js +23 -20
  37. package/lib/vendor/blamejs/lib/archive-read.js +8 -0
  38. package/lib/vendor/blamejs/lib/archive-tar.js +12 -2
  39. package/lib/vendor/blamejs/lib/arg-parser.js +49 -5
  40. package/lib/vendor/blamejs/lib/asn1-der.js +12 -0
  41. package/lib/vendor/blamejs/lib/audit-sign.js +47 -1
  42. package/lib/vendor/blamejs/lib/audit.js +71 -8
  43. package/lib/vendor/blamejs/lib/auth/ciba.js +14 -2
  44. package/lib/vendor/blamejs/lib/auth/fido-mds3.js +58 -47
  45. package/lib/vendor/blamejs/lib/auth/jwt.js +34 -0
  46. package/lib/vendor/blamejs/lib/auth/oauth.js +90 -13
  47. package/lib/vendor/blamejs/lib/auth/oid4vci.js +20 -17
  48. package/lib/vendor/blamejs/lib/auth/openid-federation.js +214 -23
  49. package/lib/vendor/blamejs/lib/auth/saml.js +38 -20
  50. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +10 -4
  51. package/lib/vendor/blamejs/lib/backup/bundle.js +13 -3
  52. package/lib/vendor/blamejs/lib/backup/index.js +16 -5
  53. package/lib/vendor/blamejs/lib/backup/manifest.js +18 -5
  54. package/lib/vendor/blamejs/lib/base32.js +21 -0
  55. package/lib/vendor/blamejs/lib/break-glass.js +19 -10
  56. package/lib/vendor/blamejs/lib/bundler.js +5 -1
  57. package/lib/vendor/blamejs/lib/cache-status.js +3 -7
  58. package/lib/vendor/blamejs/lib/calendar.js +21 -1
  59. package/lib/vendor/blamejs/lib/cbor.js +12 -1
  60. package/lib/vendor/blamejs/lib/cert.js +29 -11
  61. package/lib/vendor/blamejs/lib/cli.js +94 -24
  62. package/lib/vendor/blamejs/lib/cloud-events.js +2 -2
  63. package/lib/vendor/blamejs/lib/cluster-provider-db.js +13 -3
  64. package/lib/vendor/blamejs/lib/codepoint-class.js +85 -0
  65. package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +8 -4
  66. package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +19 -4
  67. package/lib/vendor/blamejs/lib/compliance-ai-act.js +6 -8
  68. package/lib/vendor/blamejs/lib/content-credentials.js +1 -1
  69. package/lib/vendor/blamejs/lib/content-digest.js +2 -1
  70. package/lib/vendor/blamejs/lib/cookies.js +13 -3
  71. package/lib/vendor/blamejs/lib/cose.js +31 -16
  72. package/lib/vendor/blamejs/lib/crypto-field.js +32 -0
  73. package/lib/vendor/blamejs/lib/crypto-oprf.js +11 -2
  74. package/lib/vendor/blamejs/lib/crypto-xwing.js +22 -4
  75. package/lib/vendor/blamejs/lib/crypto.js +314 -19
  76. package/lib/vendor/blamejs/lib/csp.js +11 -3
  77. package/lib/vendor/blamejs/lib/daemon.js +270 -24
  78. package/lib/vendor/blamejs/lib/dark-patterns.js +5 -2
  79. package/lib/vendor/blamejs/lib/db-declare-view.js +2 -2
  80. package/lib/vendor/blamejs/lib/db-query.js +34 -7
  81. package/lib/vendor/blamejs/lib/db.js +18 -6
  82. package/lib/vendor/blamejs/lib/dbsc.js +17 -0
  83. package/lib/vendor/blamejs/lib/dev.js +21 -2
  84. package/lib/vendor/blamejs/lib/dsr.js +157 -102
  85. package/lib/vendor/blamejs/lib/external-db.js +41 -2
  86. package/lib/vendor/blamejs/lib/file-upload.js +25 -7
  87. package/lib/vendor/blamejs/lib/flag-providers.js +27 -15
  88. package/lib/vendor/blamejs/lib/forms.js +113 -27
  89. package/lib/vendor/blamejs/lib/gate-contract.js +23 -10
  90. package/lib/vendor/blamejs/lib/gdpr-ropa.js +8 -1
  91. package/lib/vendor/blamejs/lib/guard-agent-registry.js +1 -1
  92. package/lib/vendor/blamejs/lib/guard-archive.js +2 -2
  93. package/lib/vendor/blamejs/lib/guard-cidr.js +27 -1
  94. package/lib/vendor/blamejs/lib/guard-graphql.js +30 -11
  95. package/lib/vendor/blamejs/lib/guard-html.js +26 -53
  96. package/lib/vendor/blamejs/lib/guard-image.js +24 -5
  97. package/lib/vendor/blamejs/lib/guard-imap-command.js +10 -2
  98. package/lib/vendor/blamejs/lib/guard-jmap.js +19 -3
  99. package/lib/vendor/blamejs/lib/guard-jwt.js +18 -2
  100. package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +2 -2
  101. package/lib/vendor/blamejs/lib/guard-managesieve-command.js +10 -2
  102. package/lib/vendor/blamejs/lib/guard-markdown.js +11 -24
  103. package/lib/vendor/blamejs/lib/guard-pdf.js +18 -2
  104. package/lib/vendor/blamejs/lib/guard-pop3-command.js +10 -2
  105. package/lib/vendor/blamejs/lib/guard-regex.js +8 -5
  106. package/lib/vendor/blamejs/lib/guard-svg.js +31 -32
  107. package/lib/vendor/blamejs/lib/guard-time.js +1 -1
  108. package/lib/vendor/blamejs/lib/guard-uuid.js +2 -2
  109. package/lib/vendor/blamejs/lib/html-balance.js +3 -3
  110. package/lib/vendor/blamejs/lib/http-client-cache.js +82 -4
  111. package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +16 -1
  112. package/lib/vendor/blamejs/lib/http-client.js +39 -7
  113. package/lib/vendor/blamejs/lib/http-message-signature.js +35 -1
  114. package/lib/vendor/blamejs/lib/i18n-messageformat.js +31 -6
  115. package/lib/vendor/blamejs/lib/i18n.js +35 -21
  116. package/lib/vendor/blamejs/lib/incident-report.js +8 -1
  117. package/lib/vendor/blamejs/lib/ip-utils.js +11 -1
  118. package/lib/vendor/blamejs/lib/json-path.js +23 -1
  119. package/lib/vendor/blamejs/lib/jwk.js +20 -3
  120. package/lib/vendor/blamejs/lib/link-header.js +2 -1
  121. package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +5 -1
  122. package/lib/vendor/blamejs/lib/log-stream-otlp.js +5 -1
  123. package/lib/vendor/blamejs/lib/log-stream.js +8 -3
  124. package/lib/vendor/blamejs/lib/mail-auth.js +123 -22
  125. package/lib/vendor/blamejs/lib/mail-bimi.js +1 -1
  126. package/lib/vendor/blamejs/lib/mail-bounce.js +8 -0
  127. package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +46 -10
  128. package/lib/vendor/blamejs/lib/mail-dav.js +22 -3
  129. package/lib/vendor/blamejs/lib/mail-dkim.js +96 -30
  130. package/lib/vendor/blamejs/lib/mail-helo.js +6 -1
  131. package/lib/vendor/blamejs/lib/mail-scan.js +23 -16
  132. package/lib/vendor/blamejs/lib/mail-send-deliver.js +34 -8
  133. package/lib/vendor/blamejs/lib/mail-server-imap.js +3 -4
  134. package/lib/vendor/blamejs/lib/mail-server-managesieve.js +7 -11
  135. package/lib/vendor/blamejs/lib/mail-server-mx.js +93 -7
  136. package/lib/vendor/blamejs/lib/mail-server-registry.js +8 -2
  137. package/lib/vendor/blamejs/lib/mail.js +15 -5
  138. package/lib/vendor/blamejs/lib/metrics.js +268 -63
  139. package/lib/vendor/blamejs/lib/middleware/age-gate.js +7 -1
  140. package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +1 -1
  141. package/lib/vendor/blamejs/lib/middleware/body-parser.js +19 -4
  142. package/lib/vendor/blamejs/lib/middleware/bot-guard.js +5 -9
  143. package/lib/vendor/blamejs/lib/middleware/csp-report.js +40 -8
  144. package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +24 -10
  145. package/lib/vendor/blamejs/lib/middleware/dpop.js +10 -5
  146. package/lib/vendor/blamejs/lib/middleware/index.js +6 -1
  147. package/lib/vendor/blamejs/lib/middleware/nel.js +1 -1
  148. package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +1 -1
  149. package/lib/vendor/blamejs/lib/middleware/rate-limit.js +12 -1
  150. package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +1 -1
  151. package/lib/vendor/blamejs/lib/middleware/scim-server.js +1 -1
  152. package/lib/vendor/blamejs/lib/middleware/tus-upload.js +6 -2
  153. package/lib/vendor/blamejs/lib/mtls-ca.js +18 -2
  154. package/lib/vendor/blamejs/lib/network-dns-resolver.js +11 -1
  155. package/lib/vendor/blamejs/lib/network-dns.js +21 -2
  156. package/lib/vendor/blamejs/lib/network-tls.js +69 -7
  157. package/lib/vendor/blamejs/lib/nonce-store.js +9 -1
  158. package/lib/vendor/blamejs/lib/object-store/gcs.js +7 -0
  159. package/lib/vendor/blamejs/lib/object-store/sigv4.js +31 -0
  160. package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +1 -1
  161. package/lib/vendor/blamejs/lib/outbox.js +1 -1
  162. package/lib/vendor/blamejs/lib/parsers/safe-ini.js +9 -1
  163. package/lib/vendor/blamejs/lib/parsers/safe-toml.js +10 -1
  164. package/lib/vendor/blamejs/lib/permissions.js +6 -3
  165. package/lib/vendor/blamejs/lib/pid-probe.js +55 -0
  166. package/lib/vendor/blamejs/lib/pqc-agent.js +8 -1
  167. package/lib/vendor/blamejs/lib/pqc-software.js +3 -3
  168. package/lib/vendor/blamejs/lib/pubsub.js +20 -9
  169. package/lib/vendor/blamejs/lib/queue-local.js +8 -1
  170. package/lib/vendor/blamejs/lib/queue-redis.js +5 -0
  171. package/lib/vendor/blamejs/lib/redact.js +54 -0
  172. package/lib/vendor/blamejs/lib/restore-bundle.js +10 -2
  173. package/lib/vendor/blamejs/lib/restore.js +19 -0
  174. package/lib/vendor/blamejs/lib/retention.js +12 -4
  175. package/lib/vendor/blamejs/lib/router.js +60 -6
  176. package/lib/vendor/blamejs/lib/safe-buffer.js +69 -0
  177. package/lib/vendor/blamejs/lib/safe-decompress.js +8 -2
  178. package/lib/vendor/blamejs/lib/safe-dns.js +25 -20
  179. package/lib/vendor/blamejs/lib/safe-ical.js +7 -3
  180. package/lib/vendor/blamejs/lib/safe-mime.js +12 -1
  181. package/lib/vendor/blamejs/lib/safe-object.js +80 -0
  182. package/lib/vendor/blamejs/lib/safe-path.js +52 -4
  183. package/lib/vendor/blamejs/lib/safe-redirect.js +10 -2
  184. package/lib/vendor/blamejs/lib/safe-schema.js +4 -1
  185. package/lib/vendor/blamejs/lib/safe-sieve.js +33 -1
  186. package/lib/vendor/blamejs/lib/safe-sql.js +88 -0
  187. package/lib/vendor/blamejs/lib/safe-vcard.js +7 -3
  188. package/lib/vendor/blamejs/lib/scheduler.js +8 -1
  189. package/lib/vendor/blamejs/lib/security-assert.js +6 -6
  190. package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +74 -27
  191. package/lib/vendor/blamejs/lib/self-update.js +517 -87
  192. package/lib/vendor/blamejs/lib/server-timing.js +2 -4
  193. package/lib/vendor/blamejs/lib/session.js +34 -12
  194. package/lib/vendor/blamejs/lib/sql.js +15 -1
  195. package/lib/vendor/blamejs/lib/ssrf-guard.js +52 -0
  196. package/lib/vendor/blamejs/lib/static.js +55 -13
  197. package/lib/vendor/blamejs/lib/storage.js +8 -2
  198. package/lib/vendor/blamejs/lib/subject.js +6 -1
  199. package/lib/vendor/blamejs/lib/tenant-quota.js +52 -13
  200. package/lib/vendor/blamejs/lib/tls-exporter.js +3 -3
  201. package/lib/vendor/blamejs/lib/tsa.js +34 -13
  202. package/lib/vendor/blamejs/lib/uri-template.js +8 -1
  203. package/lib/vendor/blamejs/lib/vault/index.js +13 -0
  204. package/lib/vendor/blamejs/lib/vc.js +44 -5
  205. package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +26 -26
  206. package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +792 -1
  207. package/lib/vendor/blamejs/lib/vendor/noble-curves.cjs +3443 -1
  208. package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +2737 -1
  209. package/lib/vendor/blamejs/lib/vendor/pki.cjs +39550 -13
  210. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +55 -53
  211. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5551 -5554
  212. package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +22459 -32
  213. package/lib/vendor/blamejs/lib/watcher.js +89 -17
  214. package/lib/vendor/blamejs/lib/webhook-dispatcher.js +25 -3
  215. package/lib/vendor/blamejs/lib/webhook.js +12 -2
  216. package/lib/vendor/blamejs/lib/ws-client.js +32 -1
  217. package/lib/vendor/blamejs/lib/xml-c14n.js +29 -1
  218. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +1 -1
  219. package/lib/vendor/blamejs/package-lock.json +2 -2
  220. package/lib/vendor/blamejs/package.json +1 -1
  221. package/lib/vendor/blamejs/release-notes/v0.16.x.json +1462 -0
  222. package/lib/vendor/blamejs/release-notes/v0.17.0.json +31 -0
  223. package/lib/vendor/blamejs/release-notes/v0.17.1.json +31 -0
  224. package/lib/vendor/blamejs/release-notes/v0.17.10.json +30 -0
  225. package/lib/vendor/blamejs/release-notes/v0.17.11.json +22 -0
  226. package/lib/vendor/blamejs/release-notes/v0.17.12.json +18 -0
  227. package/lib/vendor/blamejs/release-notes/v0.17.13.json +77 -0
  228. package/lib/vendor/blamejs/release-notes/v0.17.14.json +40 -0
  229. package/lib/vendor/blamejs/release-notes/v0.17.15.json +18 -0
  230. package/lib/vendor/blamejs/release-notes/v0.17.16.json +27 -0
  231. package/lib/vendor/blamejs/release-notes/v0.17.17.json +31 -0
  232. package/lib/vendor/blamejs/release-notes/v0.17.18.json +18 -0
  233. package/lib/vendor/blamejs/release-notes/v0.17.19.json +18 -0
  234. package/lib/vendor/blamejs/release-notes/v0.17.2.json +26 -0
  235. package/lib/vendor/blamejs/release-notes/v0.17.20.json +43 -0
  236. package/lib/vendor/blamejs/release-notes/v0.17.21.json +26 -0
  237. package/lib/vendor/blamejs/release-notes/v0.17.22.json +18 -0
  238. package/lib/vendor/blamejs/release-notes/v0.17.3.json +43 -0
  239. package/lib/vendor/blamejs/release-notes/v0.17.4.json +35 -0
  240. package/lib/vendor/blamejs/release-notes/v0.17.5.json +26 -0
  241. package/lib/vendor/blamejs/release-notes/v0.17.6.json +26 -0
  242. package/lib/vendor/blamejs/release-notes/v0.17.7.json +35 -0
  243. package/lib/vendor/blamejs/release-notes/v0.17.8.json +22 -0
  244. package/lib/vendor/blamejs/release-notes/v0.17.9.json +26 -0
  245. package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +4 -0
  246. package/lib/vendor/blamejs/scripts/vendor-update.sh +293 -9
  247. package/lib/vendor/blamejs/socket.yml +94 -0
  248. package/lib/vendor/blamejs/test/00-primitives.js +605 -0
  249. package/lib/vendor/blamejs/test/helpers/drivers.js +12 -9
  250. package/lib/vendor/blamejs/test/integration/audit-stack-mysql.test.js +90 -1
  251. package/lib/vendor/blamejs/test/integration/audit-stack-postgres.test.js +122 -1
  252. package/lib/vendor/blamejs/test/integration/data-layer-mysql.test.js +30 -0
  253. package/lib/vendor/blamejs/test/integration/data-layer-pg.test.js +29 -0
  254. package/lib/vendor/blamejs/test/integration/dsr-cluster-mysql.test.js +479 -0
  255. package/lib/vendor/blamejs/test/integration/dsr-cluster-pg.test.js +487 -0
  256. package/lib/vendor/blamejs/test/integration/federation-auth.test.js +313 -5
  257. package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +80 -0
  258. package/lib/vendor/blamejs/test/integration/openid-federation-chain.test.js +275 -0
  259. package/lib/vendor/blamejs/test/integration/webhook-dispatcher-pg.test.js +96 -0
  260. package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +401 -0
  261. package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +1649 -2
  262. package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +33 -0
  263. package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +0 -0
  264. package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +60 -0
  265. package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +524 -0
  266. package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +891 -0
  267. package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +128 -1
  268. package/lib/vendor/blamejs/test/layer-0-primitives/archive-adapters.test.js +271 -0
  269. package/lib/vendor/blamejs/test/layer-0-primitives/archive-read.test.js +628 -1
  270. package/lib/vendor/blamejs/test/layer-0-primitives/archive-tar-read.test.js +0 -0
  271. package/lib/vendor/blamejs/test/layer-0-primitives/archive-wrap.test.js +227 -0
  272. package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +15 -0
  273. package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +73 -0
  274. package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file.test.js +114 -0
  275. package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-anchor.test.js +141 -0
  276. package/lib/vendor/blamejs/test/layer-0-primitives/audit-tools.test.js +624 -0
  277. package/lib/vendor/blamejs/test/layer-0-primitives/audit.test.js +769 -0
  278. package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +436 -0
  279. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth.test.js +1697 -0
  280. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oid4vp.test.js +495 -0
  281. package/lib/vendor/blamejs/test/layer-0-primitives/auth-password.test.js +500 -0
  282. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml.test.js +1809 -0
  283. package/lib/vendor/blamejs/test/layer-0-primitives/auth-status-list.test.js +243 -1
  284. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index.test.js +2226 -0
  285. package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +183 -0
  286. package/lib/vendor/blamejs/test/layer-0-primitives/base32.test.js +105 -0
  287. package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +693 -0
  288. package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +603 -0
  289. package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +557 -0
  290. package/lib/vendor/blamejs/test/layer-0-primitives/case-insensitive-security-token-guard.test.js +214 -0
  291. package/lib/vendor/blamejs/test/layer-0-primitives/cbor.test.js +25 -0
  292. package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +843 -6
  293. package/lib/vendor/blamejs/test/layer-0-primitives/ciba-authreqid-binding.test.js +77 -2
  294. package/lib/vendor/blamejs/test/layer-0-primitives/ciba.test.js +866 -0
  295. package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +18 -0
  296. package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +19 -0
  297. package/lib/vendor/blamejs/test/layer-0-primitives/cli.test.js +2790 -0
  298. package/lib/vendor/blamejs/test/layer-0-primitives/cluster-lease-renewal-ttl.test.js +114 -0
  299. package/lib/vendor/blamejs/test/layer-0-primitives/cluster.test.js +1032 -0
  300. package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +575 -0
  301. package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +739 -1
  302. package/lib/vendor/blamejs/test/layer-0-primitives/codepoint-class.test.js +8 -0
  303. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +194 -0
  304. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-lifecycle-proto-key.test.js +104 -0
  305. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +254 -0
  306. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +613 -3
  307. package/lib/vendor/blamejs/test/layer-0-primitives/cookies.test.js +140 -0
  308. package/lib/vendor/blamejs/test/layer-0-primitives/cose.test.js +407 -0
  309. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-adversarial.test.js +352 -0
  310. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field-derived-hash.test.js +32 -0
  311. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field.test.js +575 -0
  312. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +10 -0
  313. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +24 -0
  314. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-oprf.test.js +17 -0
  315. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-spki-pin.test.js +183 -0
  316. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-xwing.test.js +48 -0
  317. package/lib/vendor/blamejs/test/layer-0-primitives/crypto.test.js +345 -0
  318. package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +58 -0
  319. package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +48 -0
  320. package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +459 -1
  321. package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +19 -0
  322. package/lib/vendor/blamejs/test/layer-0-primitives/db-query.test.js +1019 -0
  323. package/lib/vendor/blamejs/test/layer-0-primitives/db-raw-residency-gate.test.js +77 -0
  324. package/lib/vendor/blamejs/test/layer-0-primitives/db.test.js +1621 -0
  325. package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +462 -3
  326. package/lib/vendor/blamejs/test/layer-0-primitives/dnssec.test.js +323 -0
  327. package/lib/vendor/blamejs/test/layer-0-primitives/dpop-middleware-verify.test.js +562 -0
  328. package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +901 -1
  329. package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +249 -0
  330. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +561 -0
  331. package/lib/vendor/blamejs/test/layer-0-primitives/external-db.test.js +1214 -0
  332. package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +21 -0
  333. package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +46 -20
  334. package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +147 -3
  335. package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +907 -38
  336. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload-content-safety-skip-audit.test.js +29 -0
  337. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload.test.js +1135 -0
  338. package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +30 -0
  339. package/lib/vendor/blamejs/test/layer-0-primitives/forms.test.js +747 -0
  340. package/lib/vendor/blamejs/test/layer-0-primitives/gate-contract.test.js +1855 -0
  341. package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +30 -0
  342. package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +86 -0
  343. package/lib/vendor/blamejs/test/layer-0-primitives/guard-auth.test.js +117 -0
  344. package/lib/vendor/blamejs/test/layer-0-primitives/guard-cidr.test.js +151 -0
  345. package/lib/vendor/blamejs/test/layer-0-primitives/guard-domain.test.js +422 -0
  346. package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +424 -0
  347. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-gate-disposition-coverage.test.js → guard-gate-disposition.test.js} +1 -1
  348. package/lib/vendor/blamejs/test/layer-0-primitives/guard-graphql.test.js +340 -0
  349. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +29 -0
  350. package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +28 -0
  351. package/lib/vendor/blamejs/test/layer-0-primitives/guard-image.test.js +519 -45
  352. package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
  353. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +51 -0
  354. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jsonpath.test.js +66 -0
  355. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jwt.test.js +436 -0
  356. package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +25 -0
  357. package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +16 -0
  358. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mime.test.js +86 -0
  359. package/lib/vendor/blamejs/test/layer-0-primitives/guard-oauth.test.js +140 -0
  360. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pdf.test.js +80 -0
  361. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +27 -0
  362. package/lib/vendor/blamejs/test/layer-0-primitives/guard-regex.test.js +99 -0
  363. package/lib/vendor/blamejs/test/layer-0-primitives/guard-shell.test.js +76 -0
  364. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-sql-coverage.test.js → guard-sql.test.js} +3 -3
  365. package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +524 -0
  366. package/lib/vendor/blamejs/test/layer-0-primitives/guard-template.test.js +71 -0
  367. package/lib/vendor/blamejs/test/layer-0-primitives/guard-time.test.js +92 -0
  368. package/lib/vendor/blamejs/test/layer-0-primitives/guard-uuid.test.js +86 -0
  369. package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +38 -0
  370. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache-authorization.test.js +347 -0
  371. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +908 -0
  372. package/lib/vendor/blamejs/test/layer-0-primitives/http-client.test.js +2874 -0
  373. package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +643 -0
  374. package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +38 -0
  375. package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +1153 -1
  376. package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +494 -0
  377. package/lib/vendor/blamejs/test/layer-0-primitives/ip-utils.test.js +30 -0
  378. package/lib/vendor/blamejs/test/layer-0-primitives/jsdoc-example-execution.test.js +177 -0
  379. package/lib/vendor/blamejs/test/layer-0-primitives/json-path.test.js +103 -0
  380. package/lib/vendor/blamejs/test/layer-0-primitives/json-schema.test.js +214 -0
  381. package/lib/vendor/blamejs/test/layer-0-primitives/jwk.test.js +41 -0
  382. package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +276 -0
  383. package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
  384. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream.test.js +241 -0
  385. package/lib/vendor/blamejs/test/layer-0-primitives/log.test.js +106 -0
  386. package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +441 -0
  387. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +2136 -4
  388. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +759 -12
  389. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +811 -1
  390. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +401 -3
  391. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +751 -8
  392. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +864 -0
  393. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto.test.js +110 -0
  394. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +830 -1
  395. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +635 -86
  396. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +818 -0
  397. package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +27 -0
  398. package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +199 -0
  399. package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +686 -2
  400. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +778 -0
  401. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +1438 -0
  402. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +449 -6
  403. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +773 -2
  404. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +623 -3
  405. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +55 -0
  406. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +13 -0
  407. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +877 -1
  408. package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +326 -0
  409. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +55 -0
  410. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +242 -0
  411. package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +1596 -2
  412. package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +440 -4
  413. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +89 -0
  414. package/lib/vendor/blamejs/test/layer-0-primitives/metrics.test.js +1230 -0
  415. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-assetlinks.test.js +113 -0
  416. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-body-parser.test.js +1169 -0
  417. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-bot-disclose.test.js +123 -0
  418. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-cookies.test.js +108 -0
  419. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-gpc.test.js +121 -0
  420. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-headers.test.js +163 -0
  421. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-host-allowlist.test.js +154 -0
  422. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-require-content-type.test.js +127 -0
  423. package/lib/vendor/blamejs/test/layer-0-primitives/{middleware-tus-upload-coverage.test.js → middleware-tus-upload.test.js} +45 -0
  424. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-web-app-manifest.test.js +132 -0
  425. package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-crl-fingerprint-only.test.js +92 -0
  426. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +65 -0
  427. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +1727 -1
  428. package/lib/vendor/blamejs/test/layer-0-primitives/network-nts.test.js +699 -0
  429. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy.test.js +1181 -0
  430. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +1876 -3
  431. package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +32 -0
  432. package/lib/vendor/blamejs/test/layer-0-primitives/nonce-store-enforce-replay-nonboolean.test.js +81 -0
  433. package/lib/vendor/blamejs/test/layer-0-primitives/ntp-check.test.js +122 -0
  434. package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +378 -0
  435. package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +77 -0
  436. package/lib/vendor/blamejs/test/layer-0-primitives/oid4vci.test.js +1016 -0
  437. package/lib/vendor/blamejs/test/layer-0-primitives/openid-federation.test.js +946 -0
  438. package/lib/vendor/blamejs/test/layer-0-primitives/outbox.test.js +818 -0
  439. package/lib/vendor/blamejs/test/layer-0-primitives/own-property-membership-guards.test.js +109 -0
  440. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-safe-toml.test.js +543 -0
  441. package/lib/vendor/blamejs/test/layer-0-primitives/{parsers-safe-yaml-coverage.test.js → parsers-safe-yaml.test.js} +2 -2
  442. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +73 -0
  443. package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +649 -0
  444. package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +524 -0
  445. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +22 -0
  446. package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +295 -0
  447. package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +36 -0
  448. package/lib/vendor/blamejs/test/layer-0-primitives/queue.test.js +83 -0
  449. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-xff-spoofing.test.js +34 -0
  450. package/lib/vendor/blamejs/test/layer-0-primitives/redact.test.js +1031 -0
  451. package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +94 -0
  452. package/lib/vendor/blamejs/test/layer-0-primitives/require-bound-key.test.js +401 -0
  453. package/lib/vendor/blamejs/test/layer-0-primitives/restore-empty-manifest-wipe.test.js +154 -0
  454. package/lib/vendor/blamejs/test/layer-0-primitives/retention.test.js +600 -0
  455. package/lib/vendor/blamejs/test/layer-0-primitives/router-host-path-injection.test.js +231 -0
  456. package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +21 -0
  457. package/lib/vendor/blamejs/test/layer-0-primitives/router.test.js +1277 -0
  458. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async.test.js +133 -0
  459. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer-linear-scans.test.js +14 -0
  460. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer.test.js +80 -0
  461. package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +28 -0
  462. package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +245 -0
  463. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +32 -0
  464. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ini.test.js +376 -0
  465. package/lib/vendor/blamejs/test/layer-0-primitives/safe-json.test.js +175 -0
  466. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +518 -0
  467. package/lib/vendor/blamejs/test/layer-0-primitives/safe-object.test.js +62 -0
  468. package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +30 -0
  469. package/lib/vendor/blamejs/test/layer-0-primitives/safe-schema.test.js +104 -0
  470. package/lib/vendor/blamejs/test/layer-0-primitives/safe-sql.test.js +142 -0
  471. package/lib/vendor/blamejs/test/layer-0-primitives/safe-url.test.js +112 -0
  472. package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +26 -0
  473. package/lib/vendor/blamejs/test/layer-0-primitives/scheduler.test.js +157 -0
  474. package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +396 -0
  475. package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +930 -0
  476. package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +755 -82
  477. package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +1053 -0
  478. package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +200 -0
  479. package/lib/vendor/blamejs/test/layer-0-primitives/session-strict-binding-missing-failclosed.test.js +110 -0
  480. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +636 -0
  481. package/lib/vendor/blamejs/test/layer-0-primitives/sql-offset-without-limit.test.js +94 -0
  482. package/lib/vendor/blamejs/test/layer-0-primitives/sql.test.js +1190 -0
  483. package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +21 -0
  484. package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +850 -0
  485. package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +146 -0
  486. package/lib/vendor/blamejs/test/layer-0-primitives/storage.test.js +621 -0
  487. package/lib/vendor/blamejs/test/layer-0-primitives/subject.test.js +47 -0
  488. package/lib/vendor/blamejs/test/layer-0-primitives/template.test.js +582 -0
  489. package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +587 -25
  490. package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +11 -0
  491. package/lib/vendor/blamejs/test/layer-0-primitives/tsa.test.js +524 -63
  492. package/lib/vendor/blamejs/test/layer-0-primitives/uri-template.test.js +27 -0
  493. package/lib/vendor/blamejs/test/layer-0-primitives/vault-rotate.test.js +866 -0
  494. package/lib/vendor/blamejs/test/layer-0-primitives/vault.test.js +74 -0
  495. package/lib/vendor/blamejs/test/layer-0-primitives/vc.test.js +215 -0
  496. package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +550 -0
  497. package/lib/vendor/blamejs/test/layer-0-primitives/webhook-dispatcher.test.js +388 -0
  498. package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +262 -0
  499. package/lib/vendor/blamejs/test/layer-0-primitives/websocket.test.js +1294 -0
  500. package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +629 -0
  501. package/lib/vendor/blamejs/test/layer-0-primitives/xml-c14n-attr-normalization.test.js +164 -0
  502. package/lib/vendor/blamejs/test/smoke.js +2 -0
  503. package/package.json +1 -1
  504. package/lib/vendor/blamejs/release-notes/v0.16.0.json +0 -44
  505. package/lib/vendor/blamejs/release-notes/v0.16.1.json +0 -36
  506. package/lib/vendor/blamejs/release-notes/v0.16.2.json +0 -71
  507. package/lib/vendor/blamejs/release-notes/v0.16.3.json +0 -71
  508. package/lib/vendor/blamejs/test/layer-0-primitives/acme-coverage.test.js +0 -441
  509. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth-coverage.test.js +0 -482
  510. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml-coverage.test.js +0 -671
  511. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index-coverage.test.js +0 -690
  512. package/lib/vendor/blamejs/test/layer-0-primitives/cli-coverage.test.js +0 -238
  513. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials-coverage.test.js +0 -319
  514. package/lib/vendor/blamejs/test/layer-0-primitives/keychain-coverage.test.js +0 -0
  515. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth-coverage.test.js +0 -437
  516. package/lib/vendor/blamejs/test/layer-0-primitives/mcp-coverage.test.js +0 -443
  517. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-coverage.test.js +0 -395
  518. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy-coverage.test.js +0 -565
  519. package/lib/vendor/blamejs/test/layer-0-primitives/router-coverage.test.js +0 -592
  520. package/lib/vendor/blamejs/test/layer-0-primitives/sql-coverage.test.js +0 -422
  521. package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +0 -573
@@ -75,6 +75,29 @@ function _ecPair(curve) {
75
75
  });
76
76
  }
77
77
 
78
+ // -------- Core b.auth.jwt (PQC framework signer) helpers --------
79
+ // ML-DSA-87 keygen is available on the Node 24 CI floor; SLH-DSA keygen is
80
+ // Node-26+ (see auth-status-list.test.js), so the core round-trips below sign
81
+ // with ML-DSA-87 and only NAME SLH-DSA-SHAKE-256f in headers/allowlists.
82
+ function _mlPair() { return nodeCrypto.generateKeyPairSync("ml-dsa-87"); }
83
+
84
+ function _b64urlJson(obj) {
85
+ return Buffer.from(JSON.stringify(obj)).toString("base64url");
86
+ }
87
+
88
+ // _rawJws — build a compact JWS with a caller-chosen header, so a test can
89
+ // forge the header.alg/key divergence that the shipped sign() now refuses to
90
+ // emit. Signs with null digest (KeyObject drives the real algorithm), exactly
91
+ // as lib/auth/jwt.js does.
92
+ function _rawJws(privateKey, header, payload) {
93
+ var input = _b64urlJson(header) + "." + _b64urlJson(payload);
94
+ var sig = nodeCrypto.sign(null, Buffer.from(input, "ascii"), privateKey);
95
+ return input + "." + Buffer.from(sig).toString("base64url");
96
+ }
97
+
98
+ var _NOW_MS = 1700000000000; // allow:raw-byte-literal — fixed test clock (epoch ms)
99
+ var _NOW_SEC = 1700000000; // allow:raw-byte-literal — same instant, seconds
100
+
78
101
  // -------- CVE-2026-22817 — alg/kty cross-check (jwt-external) --------
79
102
 
80
103
  async function testAlgKtyMismatchRsaWithEs256() {
@@ -405,7 +428,420 @@ async function testOauthCreateNonFiniteSkewRejected() {
405
428
  }
406
429
  }
407
430
 
431
+ // ========================================================================
432
+ // Core b.auth.jwt (PQC framework signer) — verify/sign/decode defenses
433
+ // ========================================================================
434
+
435
+ // PRIMARY RED — algorithm-confusion / allowlist bypass (CWE-347).
436
+ //
437
+ // node:crypto.verify(null, ...) drives the algorithm from the KeyObject, NOT
438
+ // the JWS header.alg. verify() gates its algorithm allowlist on that header
439
+ // label. So a token signed by an ML-DSA-87 key but declaring
440
+ // alg="SLH-DSA-SHAKE-256f" passes an SLH-ONLY allowlist and is verified with
441
+ // the ML-DSA key — a full algorithm-allowlist bypass. Exactly the shape an
442
+ // operator uses the allowlist to prevent (pin the high-assurance algorithm).
443
+ //
444
+ // RED on the buggy tree: verify RESOLVES with the attacker's claims.
445
+ // GREEN after binding header.alg to the key: auth-jwt/alg-key-mismatch.
446
+ async function testAlgConfusionAllowlistBypass() {
447
+ var ml = _mlPair();
448
+ // Forge: header says SLH-DSA-SHAKE-256f, signature is a real ML-DSA-87 sig.
449
+ var confused = _rawJws(ml.privateKey,
450
+ { alg: "SLH-DSA-SHAKE-256f", typ: "JWT" },
451
+ { sub: "attacker", role: "admin", iat: _NOW_SEC });
452
+
453
+ var claims = null, threw = null;
454
+ try {
455
+ claims = await b.auth.jwt.verify(confused, {
456
+ publicKey: ml.publicKey,
457
+ algorithms: ["SLH-DSA-SHAKE-256f"], // SLH-only allowlist
458
+ now: _NOW_MS,
459
+ });
460
+ } catch (e) { threw = e; }
461
+ check("core jwt: SLH-declared/ML-signed token refused (alg-key binding, CWE-347)",
462
+ threw && threw.code === "auth-jwt/alg-key-mismatch");
463
+ check("core jwt: alg-confused token yields NO claims (fail closed, no bypass)",
464
+ claims === null);
465
+
466
+ // Ordering control: when the forged label is NOT in the allowlist, the
467
+ // allowlist gate fires first (algorithm-not-allowed), still fail-closed.
468
+ var threw2 = null;
469
+ try {
470
+ await b.auth.jwt.verify(confused, {
471
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: _NOW_MS,
472
+ });
473
+ } catch (e) { threw2 = e; }
474
+ check("core jwt: forged label outside allowlist refused (algorithm-not-allowed)",
475
+ threw2 && threw2.code === "auth-jwt/algorithm-not-allowed");
476
+
477
+ // Positive control: a correctly-labeled ML-DSA token still verifies, proving
478
+ // the binding didn't break the happy path.
479
+ var honest = _rawJws(ml.privateKey,
480
+ { alg: "ML-DSA-87", typ: "JWT" }, { sub: "u1", iat: _NOW_SEC });
481
+ var ok = await b.auth.jwt.verify(honest, {
482
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: _NOW_MS,
483
+ });
484
+ check("core jwt: correctly-labeled ML-DSA token still verifies", ok && ok.sub === "u1");
485
+ }
486
+
487
+ // RED (sign side of the same root) — sign() must not EMIT a token whose header
488
+ // alg misstates the signing key's real algorithm (the artifact the verify
489
+ // bypass consumes). Config-time throw.
490
+ async function testSignRefusesMismatchedAlgKey() {
491
+ var ml = _mlPair();
492
+ var threw = null;
493
+ try {
494
+ await b.auth.jwt.sign({ sub: "u1" },
495
+ { privateKey: ml.privateKey, algorithm: "SLH-DSA-SHAKE-256f" });
496
+ } catch (e) { threw = e; }
497
+ check("core jwt: sign refuses SLH alg with an ML-DSA key (no mislabeled token emitted)",
498
+ threw && threw.code === "auth-jwt/alg-key-mismatch");
499
+
500
+ // Matched alg/key still signs (happy path intact).
501
+ var tok = await b.auth.jwt.sign({ sub: "u1" },
502
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87" });
503
+ check("core jwt: sign with matched ML-DSA alg/key emits a 3-part token",
504
+ typeof tok === "string" && tok.split(".").length === 3);
505
+ }
506
+
507
+ // decode() — malformed-segment / non-object / part-count branches all return
508
+ // typed auth-jwt/malformed, never a raw throw.
509
+ function testCoreJwtDecodeMalformed() {
510
+ var cases = [
511
+ ["", "empty string"],
512
+ ["only-two.parts", "two parts"],
513
+ ["a.b.c.d", "four parts"],
514
+ ["!!!.b.c", "non-base64url header"],
515
+ [_b64urlJson([1, 2, 3]) + "." + _b64urlJson({ sub: "x" }) + ".c", "array header (not object)"],
516
+ [_b64urlJson({ alg: "ML-DSA-87" }) + "." + _b64urlJson("string-payload") + ".c", "scalar payload (not object)"],
517
+ ];
518
+ for (var i = 0; i < cases.length; i++) {
519
+ var threw = null;
520
+ try { b.auth.jwt.decode(cases[i][0]); } catch (e) { threw = e; }
521
+ check("core jwt: decode(" + cases[i][1] + ") throws typed auth-jwt/malformed",
522
+ threw && threw.code === "auth-jwt/malformed");
523
+ }
524
+ // Non-string token.
525
+ var t2 = null;
526
+ try { b.auth.jwt.decode(12345); } catch (e) { t2 = e; }
527
+ check("core jwt: decode(non-string) throws auth-jwt/malformed",
528
+ t2 && t2.code === "auth-jwt/malformed");
529
+ }
530
+
531
+ // Key resolution branches: missing key, keyResolver/publicKey conflict,
532
+ // resolver-throws, resolver-returns-nothing, resolver-success.
533
+ async function testCoreJwtKeyResolution() {
534
+ var ml = _mlPair();
535
+ var token = await b.auth.jwt.sign({ sub: "u1" },
536
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", now: _NOW_MS });
537
+
538
+ var t1 = null;
539
+ try { await b.auth.jwt.verify(token, { algorithms: ["ML-DSA-87"], now: _NOW_MS }); }
540
+ catch (e) { t1 = e; }
541
+ check("core jwt: verify with neither publicKey nor keyResolver → missing-key",
542
+ t1 && t1.code === "auth-jwt/missing-key");
543
+
544
+ var t2 = null;
545
+ try {
546
+ await b.auth.jwt.verify(token, {
547
+ publicKey: ml.publicKey, keyResolver: function () { return ml.publicKey; },
548
+ algorithms: ["ML-DSA-87"], now: _NOW_MS,
549
+ });
550
+ } catch (e) { t2 = e; }
551
+ check("core jwt: keyResolver AND publicKey together → conflicting-key-source",
552
+ t2 && t2.code === "auth-jwt/conflicting-key-source");
553
+
554
+ var t3 = null;
555
+ try {
556
+ await b.auth.jwt.verify(token, {
557
+ keyResolver: function () { throw new Error("jwks down"); },
558
+ algorithms: ["ML-DSA-87"], now: _NOW_MS,
559
+ });
560
+ } catch (e) { t3 = e; }
561
+ check("core jwt: keyResolver that throws → key-resolver-failed",
562
+ t3 && t3.code === "auth-jwt/key-resolver-failed");
563
+
564
+ var t4 = null;
565
+ try {
566
+ await b.auth.jwt.verify(token, {
567
+ keyResolver: function () { return null; },
568
+ algorithms: ["ML-DSA-87"], now: _NOW_MS,
569
+ });
570
+ } catch (e) { t4 = e; }
571
+ check("core jwt: keyResolver returning no key → key-not-found",
572
+ t4 && t4.code === "auth-jwt/key-not-found");
573
+
574
+ // Async resolver returning the right key succeeds, and receives the full
575
+ // decoded header (kid is delegated to the operator to sanitize).
576
+ var sawKid = null;
577
+ var ok = await b.auth.jwt.verify(token, {
578
+ keyResolver: function (hdr) { sawKid = hdr.alg; return Promise.resolve(ml.publicKey); },
579
+ algorithms: ["ML-DSA-87"], now: _NOW_MS,
580
+ });
581
+ check("core jwt: async keyResolver returning the right key verifies",
582
+ ok && ok.sub === "u1" && sawKid === "ML-DSA-87");
583
+ }
584
+
585
+ // crit + expectedTyp defenses.
586
+ async function testCoreJwtCritAndTyp() {
587
+ var ml = _mlPair();
588
+ // Unknown crit extension → refused (RFC 7515 §4.1.11).
589
+ var critTok = _rawJws(ml.privateKey,
590
+ { alg: "ML-DSA-87", typ: "JWT", crit: ["exp"] }, { sub: "u1", iat: _NOW_SEC });
591
+ var t1 = null;
592
+ try {
593
+ await b.auth.jwt.verify(critTok, { publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: _NOW_MS });
594
+ } catch (e) { t1 = e; }
595
+ check("core jwt: unknown crit header refused (auth-jwt/unknown-crit)",
596
+ t1 && t1.code === "auth-jwt/unknown-crit");
597
+
598
+ // expectedTyp mismatch (case-insensitive per RFC 8725 §3.11).
599
+ var jwtTok = await b.auth.jwt.sign({ sub: "u1" },
600
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", typ: "JWT", now: _NOW_MS });
601
+ var t2 = null;
602
+ try {
603
+ await b.auth.jwt.verify(jwtTok, {
604
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], expectedTyp: "at+jwt", now: _NOW_MS,
605
+ });
606
+ } catch (e) { t2 = e; }
607
+ check("core jwt: expectedTyp mismatch refused (auth-jwt/typ-mismatch)",
608
+ t2 && t2.code === "auth-jwt/typ-mismatch");
609
+
610
+ // Matching typ (different case) accepted.
611
+ var ok = await b.auth.jwt.verify(jwtTok, {
612
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], expectedTyp: "jwt", now: _NOW_MS,
613
+ });
614
+ check("core jwt: expectedTyp matches case-insensitively", ok && ok.sub === "u1");
615
+
616
+ // Empty/blank expectedTyp is a config error.
617
+ var t3 = null;
618
+ try {
619
+ await b.auth.jwt.verify(jwtTok, {
620
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], expectedTyp: "", now: _NOW_MS,
621
+ });
622
+ } catch (e) { t3 = e; }
623
+ check("core jwt: empty expectedTyp refused (auth-jwt/bad-expected-typ)",
624
+ t3 && t3.code === "auth-jwt/bad-expected-typ");
625
+ }
626
+
627
+ // Algorithm allowlist gate branches: an unsupported entry in the caller's list,
628
+ // and a token alg outside the list.
629
+ async function testCoreJwtAlgAllowlist() {
630
+ var ml = _mlPair();
631
+ var token = await b.auth.jwt.sign({ sub: "u1" },
632
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", now: _NOW_MS });
633
+
634
+ // Caller lists a bogus algorithm → surfaced at config time.
635
+ var t1 = null;
636
+ try {
637
+ await b.auth.jwt.verify(token, { publicKey: ml.publicKey, algorithms: ["HS256"], now: _NOW_MS });
638
+ } catch (e) { t1 = e; }
639
+ check("core jwt: unsupported alg in allowlist refused (auth-jwt/unsupported-algorithm)",
640
+ t1 && t1.code === "auth-jwt/unsupported-algorithm");
641
+
642
+ // "none" can never be configured into the allowlist.
643
+ var t2 = null;
644
+ try {
645
+ await b.auth.jwt.verify(token, { publicKey: ml.publicKey, algorithms: ["none"], now: _NOW_MS });
646
+ } catch (e) { t2 = e; }
647
+ check("core jwt: alg 'none' cannot enter the allowlist (auth-jwt/unsupported-algorithm)",
648
+ t2 && t2.code === "auth-jwt/unsupported-algorithm");
649
+
650
+ // Token alg legitimately outside the (valid) allowlist.
651
+ var t3 = null;
652
+ try {
653
+ await b.auth.jwt.verify(token, {
654
+ publicKey: ml.publicKey, algorithms: ["SLH-DSA-SHAKE-256f"], now: _NOW_MS,
655
+ });
656
+ } catch (e) { t3 = e; }
657
+ check("core jwt: token alg outside allowlist refused (auth-jwt/algorithm-not-allowed)",
658
+ t3 && t3.code === "auth-jwt/algorithm-not-allowed");
659
+ }
660
+
661
+ // Signature integrity: tampering the payload after signing invalidates it.
662
+ async function testCoreJwtTamperedSignature() {
663
+ var ml = _mlPair();
664
+ var token = await b.auth.jwt.sign({ sub: "u1", role: "user" },
665
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", now: _NOW_MS });
666
+ var parts = token.split(".");
667
+ var forgedPayload = _b64urlJson({ sub: "u1", role: "admin", iat: _NOW_SEC });
668
+ var tampered = parts[0] + "." + forgedPayload + "." + parts[2];
669
+ var threw = null;
670
+ try {
671
+ await b.auth.jwt.verify(tampered, { publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: _NOW_MS });
672
+ } catch (e) { threw = e; }
673
+ check("core jwt: tampered payload refused (auth-jwt/invalid-signature)",
674
+ threw && threw.code === "auth-jwt/invalid-signature");
675
+ }
676
+
677
+ // Time-based claims: exp / nbf enforcement, clock tolerance leeway, bad
678
+ // tolerance config, and NumericDate typing (a string exp must not bypass).
679
+ async function testCoreJwtTimeClaims() {
680
+ var ml = _mlPair();
681
+
682
+ // Expired token (exp = now + 100s; verify 200s later).
683
+ var expiredTok = await b.auth.jwt.sign({ sub: "u1" },
684
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", expiresInSec: 100, now: _NOW_MS });
685
+ var laterMs = (_NOW_SEC + 200) * 1000; // allow:raw-byte-literal — seconds→ms
686
+ var t1 = null;
687
+ try {
688
+ await b.auth.jwt.verify(expiredTok, { publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: laterMs });
689
+ } catch (e) { t1 = e; }
690
+ check("core jwt: expired token refused (auth-jwt/expired)",
691
+ t1 && t1.code === "auth-jwt/expired");
692
+
693
+ // Clock tolerance widens the window enough to accept it.
694
+ var okTol = await b.auth.jwt.verify(expiredTok, {
695
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: laterMs, clockToleranceSec: 300,
696
+ });
697
+ check("core jwt: clockToleranceSec leeway accepts a barely-expired token", okTol && okTol.sub === "u1");
698
+
699
+ // not-yet-valid (nbf in the future).
700
+ var futureTok = await b.auth.jwt.sign({ sub: "u1" },
701
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", notBeforeSec: 100, now: _NOW_MS });
702
+ var t2 = null;
703
+ try {
704
+ await b.auth.jwt.verify(futureTok, { publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: _NOW_MS });
705
+ } catch (e) { t2 = e; }
706
+ check("core jwt: nbf-in-future refused (auth-jwt/not-yet-valid)",
707
+ t2 && t2.code === "auth-jwt/not-yet-valid");
708
+
709
+ // Negative / non-finite clock tolerance is a config error.
710
+ var bad = [-1, Infinity, NaN];
711
+ for (var i = 0; i < bad.length; i++) {
712
+ var tb = null;
713
+ try {
714
+ await b.auth.jwt.verify(expiredTok, {
715
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: laterMs, clockToleranceSec: bad[i],
716
+ });
717
+ } catch (e) { tb = e; }
718
+ check("core jwt: clockToleranceSec=" + String(bad[i]) + " refused (auth-jwt/bad-clock-tolerance)",
719
+ tb && tb.code === "auth-jwt/bad-clock-tolerance");
720
+ }
721
+
722
+ // NumericDate typing: a STRING exp must not silently bypass expiry.
723
+ var strExpTok = _rawJws(ml.privateKey,
724
+ { alg: "ML-DSA-87", typ: "JWT" }, { sub: "u1", exp: "9999999999", iat: _NOW_SEC });
725
+ var t3 = null;
726
+ try {
727
+ await b.auth.jwt.verify(strExpTok, { publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], now: _NOW_MS });
728
+ } catch (e) { t3 = e; }
729
+ check("core jwt: string exp refused as malformed (no expiry bypass, RFC 7519 NumericDate)",
730
+ t3 && t3.code === "auth-jwt/malformed");
731
+ }
732
+
733
+ // Registered-claim assertions: iss (StringOrURI, not an array), aud (any-of),
734
+ // sub (exact).
735
+ async function testCoreJwtClaimAssertions() {
736
+ var ml = _mlPair();
737
+
738
+ // iss-array injection: iss:["evil","trusted"] must NOT satisfy a single
739
+ // trusted-issuer expectation (CVE-2025-30144 class).
740
+ var arrIssTok = await b.auth.jwt.sign(
741
+ { sub: "u1", iss: ["evil.example", "trusted.example"] },
742
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", now: _NOW_MS });
743
+ var t1 = null;
744
+ try {
745
+ await b.auth.jwt.verify(arrIssTok, {
746
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], issuer: "trusted.example", now: _NOW_MS,
747
+ });
748
+ } catch (e) { t1 = e; }
749
+ check("core jwt: array iss does not satisfy single-issuer expectation (auth-jwt/iss-mismatch)",
750
+ t1 && t1.code === "auth-jwt/iss-mismatch");
751
+
752
+ // aud any-of: token aud is an array, expectation matches one entry.
753
+ var audTok = await b.auth.jwt.sign(
754
+ { sub: "u1", aud: ["svc-a", "svc-b"] },
755
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", now: _NOW_MS });
756
+ var okAud = await b.auth.jwt.verify(audTok, {
757
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], audience: "svc-b", now: _NOW_MS,
758
+ });
759
+ check("core jwt: aud array matches expected any-of", okAud && okAud.sub === "u1");
760
+ var t2 = null;
761
+ try {
762
+ await b.auth.jwt.verify(audTok, {
763
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], audience: "svc-c", now: _NOW_MS,
764
+ });
765
+ } catch (e) { t2 = e; }
766
+ check("core jwt: aud mismatch refused (auth-jwt/aud-mismatch)",
767
+ t2 && t2.code === "auth-jwt/aud-mismatch");
768
+
769
+ // sub exact match.
770
+ var subTok = await b.auth.jwt.sign({ sub: "u1" },
771
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", now: _NOW_MS });
772
+ var t3 = null;
773
+ try {
774
+ await b.auth.jwt.verify(subTok, {
775
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], subject: "u2", now: _NOW_MS,
776
+ });
777
+ } catch (e) { t3 = e; }
778
+ check("core jwt: sub mismatch refused (auth-jwt/sub-mismatch)",
779
+ t3 && t3.code === "auth-jwt/sub-mismatch");
780
+ }
781
+
782
+ // Replay defense: jti-less token refused when replayStore is wired; a valid
783
+ // token verifies once and is refused on second use; a store missing
784
+ // checkAndInsert is a config error.
785
+ async function testCoreJwtReplay() {
786
+ var ml = _mlPair();
787
+ var store = b.nonceStore.create({ backend: "memory" });
788
+ // The memory replay store evicts against real wall-clock, and expireAt is
789
+ // derived from the token's exp claim — so drive this case on the real clock
790
+ // (a fixed past exp would evict the entry before the replay check).
791
+ var realNowMs = Date.now();
792
+
793
+ // No exp → no auto-jti → replayStore has nothing to bind → refuse.
794
+ var noJtiTok = await b.auth.jwt.sign({ sub: "u1" },
795
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", now: realNowMs });
796
+ var t1 = null;
797
+ try {
798
+ await b.auth.jwt.verify(noJtiTok, {
799
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], replayStore: store, now: realNowMs,
800
+ });
801
+ } catch (e) { t1 = e; }
802
+ check("core jwt: replayStore with a jti-less token refused (auth-jwt/replay-no-jti)",
803
+ t1 && t1.code === "auth-jwt/replay-no-jti");
804
+
805
+ // exp present → jti auto-minted → first verify ok, second is a replay.
806
+ var repTok = await b.auth.jwt.sign({ sub: "u1" },
807
+ { privateKey: ml.privateKey, algorithm: "ML-DSA-87", expiresInSec: 3600, now: realNowMs });
808
+ var okFirst = await b.auth.jwt.verify(repTok, {
809
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], replayStore: store, now: realNowMs,
810
+ });
811
+ check("core jwt: first use of a jti verifies with replayStore", okFirst && okFirst.sub === "u1");
812
+ var t2 = null;
813
+ try {
814
+ await b.auth.jwt.verify(repTok, {
815
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], replayStore: store, now: realNowMs,
816
+ });
817
+ } catch (e) { t2 = e; }
818
+ check("core jwt: second use of the same jti refused (auth-jwt/replay)",
819
+ t2 && t2.code === "auth-jwt/replay");
820
+
821
+ // A store lacking checkAndInsert is a config error.
822
+ var t3 = null;
823
+ try {
824
+ await b.auth.jwt.verify(repTok, {
825
+ publicKey: ml.publicKey, algorithms: ["ML-DSA-87"], replayStore: {}, now: realNowMs,
826
+ });
827
+ } catch (e) { t3 = e; }
828
+ check("core jwt: replayStore missing checkAndInsert refused (auth-jwt/bad-replay-store)",
829
+ t3 && t3.code === "auth-jwt/bad-replay-store");
830
+
831
+ if (typeof store.close === "function") store.close();
832
+ }
833
+
408
834
  async function run() {
835
+ await testAlgConfusionAllowlistBypass();
836
+ await testSignRefusesMismatchedAlgKey();
837
+ testCoreJwtDecodeMalformed();
838
+ await testCoreJwtKeyResolution();
839
+ await testCoreJwtCritAndTyp();
840
+ await testCoreJwtAlgAllowlist();
841
+ await testCoreJwtTamperedSignature();
842
+ await testCoreJwtTimeClaims();
843
+ await testCoreJwtClaimAssertions();
844
+ await testCoreJwtReplay();
409
845
  await testJwtExternalNonFiniteSkewRejected();
410
846
  await testOauthCreateNonFiniteSkewRejected();
411
847
  await testNullJoseHeaderTypedError();