@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
@@ -305,6 +305,640 @@ async function testStartAuthMediationPassthrough() {
305
305
  threw && /bad-mediation/.test(threw.code || ""));
306
306
  }
307
307
 
308
+ // ---- startRegistration: required-input guards + option defaults ----
309
+
310
+ async function testStartRegistrationGuards() {
311
+ var threw = null;
312
+ try { await b.auth.passkey.startRegistration(); } catch (e) { threw = e; }
313
+ check("startRegistration() throws missing-opts",
314
+ threw && /missing-opts/.test(threw.code || ""));
315
+
316
+ threw = null;
317
+ try { await b.auth.passkey.startRegistration({}); } catch (e) { threw = e; }
318
+ check("startRegistration({}) throws missing-rpName",
319
+ threw && /missing-rpName/.test(threw.code || ""));
320
+
321
+ threw = null;
322
+ try { await b.auth.passkey.startRegistration({ rpName: "X" }); } catch (e) { threw = e; }
323
+ check("startRegistration without rpId throws missing-rpId",
324
+ threw && /missing-rpId/.test(threw.code || ""));
325
+
326
+ threw = null;
327
+ try { await b.auth.passkey.startRegistration({ rpName: "X", rpId: "x.test" }); }
328
+ catch (e) { threw = e; }
329
+ check("startRegistration without userName throws missing-userName",
330
+ threw && /missing-userName/.test(threw.code || ""));
331
+ }
332
+
333
+ async function testStartRegistrationDefaultsAndOptions() {
334
+ var opts = await b.auth.passkey.startRegistration({
335
+ rpName: "Example", rpId: "example.com", userName: "alice",
336
+ });
337
+ check("startRegistration returns a base64url challenge",
338
+ typeof opts.challenge === "string" && opts.challenge.length > 0);
339
+ check("startRegistration applies default hints (client-device + hybrid)",
340
+ Array.isArray(opts.hints) &&
341
+ opts.hints.indexOf("client-device") !== -1 &&
342
+ opts.hints.indexOf("hybrid") !== -1);
343
+ check("startRegistration defaults residentKey='preferred'",
344
+ opts.authenticatorSelection &&
345
+ opts.authenticatorSelection.residentKey === "preferred");
346
+ check("startRegistration defaults userVerification='preferred'",
347
+ opts.authenticatorSelection.userVerification === "preferred");
348
+ check("startRegistration defaults userDisplayName to userName",
349
+ opts.user && opts.user.displayName === "alice");
350
+ check("startRegistration defaults attestation='none'",
351
+ opts.attestation === "none");
352
+
353
+ // Every non-default option threaded: custom hints, authenticatorSelection,
354
+ // attestationType, timeout, excludeCredentials.
355
+ var custom = await b.auth.passkey.startRegistration({
356
+ rpName: "Example", rpId: "example.com", userName: "bob",
357
+ userDisplayName: "Bob B", attestationType: "direct", timeout: 60000,
358
+ hints: ["security-key"],
359
+ authenticatorSelection: {
360
+ residentKey: "required", userVerification: "required",
361
+ authenticatorAttachment: "platform", requireResidentKey: true,
362
+ },
363
+ excludeCredentials: [{ id: "AAAA", type: "public-key" }],
364
+ });
365
+ check("startRegistration echoes custom hints verbatim",
366
+ Array.isArray(custom.hints) && custom.hints.length === 1 &&
367
+ custom.hints[0] === "security-key");
368
+ check("startRegistration threads custom authenticatorSelection",
369
+ custom.authenticatorSelection.residentKey === "required" &&
370
+ custom.authenticatorSelection.userVerification === "required" &&
371
+ custom.authenticatorSelection.authenticatorAttachment === "platform");
372
+ check("startRegistration honors custom userDisplayName",
373
+ custom.user.displayName === "Bob B");
374
+ check("startRegistration honors attestationType='direct'",
375
+ custom.attestation === "direct");
376
+ }
377
+
378
+ // ---- Extension allowlist enforced through the real startRegistration path ----
379
+
380
+ async function testStartRegistrationExtensionAllowlist() {
381
+ // Recognised keys route through their builder and reach the vendor options.
382
+ var routed = await b.auth.passkey.startRegistration({
383
+ rpName: "Example", rpId: "example.com", userName: "alice",
384
+ extensions: {
385
+ prf: { eval: { first: "AAAA" } },
386
+ largeBlob: { support: "preferred" },
387
+ credBlob: { blob: Buffer.from(new Array(8).fill(0x11)) }, // allow:raw-byte-literal — fixture blob
388
+ },
389
+ });
390
+ check("startRegistration routes prf extension to spec shape",
391
+ routed.extensions && routed.extensions.prf &&
392
+ routed.extensions.prf.eval && routed.extensions.prf.eval.first === "AAAA");
393
+ check("startRegistration routes largeBlob extension",
394
+ routed.extensions.largeBlob && routed.extensions.largeBlob.support === "preferred");
395
+ check("startRegistration routes credBlob to base64url",
396
+ typeof routed.extensions.credBlob === "string" && routed.extensions.credBlob.length > 0);
397
+
398
+ // Non-object extensions → bad-extensions.
399
+ var threw = null;
400
+ try {
401
+ await b.auth.passkey.startRegistration({
402
+ rpName: "Example", rpId: "example.com", userName: "a", extensions: "nope",
403
+ });
404
+ } catch (e) { threw = e; }
405
+ check("startRegistration rejects non-object extensions",
406
+ threw && /bad-extensions/.test(threw.code || ""));
407
+
408
+ // Array extensions → bad-extensions (Array.isArray guard).
409
+ threw = null;
410
+ try {
411
+ await b.auth.passkey.startRegistration({
412
+ rpName: "Example", rpId: "example.com", userName: "a", extensions: ["prf"],
413
+ });
414
+ } catch (e) { threw = e; }
415
+ check("startRegistration rejects array extensions",
416
+ threw && /bad-extensions/.test(threw.code || ""));
417
+
418
+ // Unknown key → refused unless opted out.
419
+ threw = null;
420
+ try {
421
+ await b.auth.passkey.startRegistration({
422
+ rpName: "Example", rpId: "example.com", userName: "a",
423
+ extensions: { unknownExt: { some: "thing" } },
424
+ });
425
+ } catch (e) { threw = e; }
426
+ check("startRegistration refuses an unknown extension key",
427
+ threw && /unknown-extension/.test(threw.code || ""));
428
+
429
+ // allowUnknownExtensions:true → the key passes through verbatim.
430
+ var passthrough = await b.auth.passkey.startRegistration({
431
+ rpName: "Example", rpId: "example.com", userName: "a",
432
+ extensions: { unknownExt: { some: "thing" } },
433
+ allowUnknownExtensions: true,
434
+ });
435
+ check("startRegistration passes unknown extension through when opted out",
436
+ passthrough.extensions && passthrough.extensions.unknownExt &&
437
+ passthrough.extensions.unknownExt.some === "thing");
438
+ }
439
+
440
+ // ---- startAuthentication / conditionalAuthOptions custom-hints branch ----
441
+
442
+ async function testStartAuthenticationHintsAndExtensions() {
443
+ var custom = await b.auth.passkey.startAuthentication({
444
+ rpId: "example.com", hints: ["security-key"],
445
+ userVerification: "required",
446
+ extensions: { prf: { eval: { first: "AAAA" } } },
447
+ });
448
+ check("startAuthentication echoes custom hints",
449
+ Array.isArray(custom.hints) && custom.hints[0] === "security-key");
450
+ check("startAuthentication routes extensions through the allowlist",
451
+ custom.extensions && custom.extensions.prf &&
452
+ custom.extensions.prf.eval.first === "AAAA");
453
+ check("startAuthentication threads custom userVerification",
454
+ custom.userVerification === "required");
455
+
456
+ var threw = null;
457
+ try {
458
+ await b.auth.passkey.startAuthentication({
459
+ rpId: "example.com", extensions: { bogus: 1 },
460
+ });
461
+ } catch (e) { threw = e; }
462
+ check("startAuthentication refuses unknown extension key",
463
+ threw && /unknown-extension/.test(threw.code || ""));
464
+
465
+ threw = null;
466
+ try { await b.auth.passkey.startAuthentication(); } catch (e) { threw = e; }
467
+ check("startAuthentication() throws missing-opts",
468
+ threw && /missing-opts/.test(threw.code || ""));
469
+ }
470
+
471
+ async function testConditionalAuthCustomHints() {
472
+ var opts = await b.auth.passkey.conditionalAuthOptions({
473
+ rpId: "example.com", hints: ["hybrid"],
474
+ userVerification: "required",
475
+ extensions: { prf: { eval: { first: "AAAA" } } },
476
+ });
477
+ check("conditionalAuthOptions echoes custom hints",
478
+ Array.isArray(opts.hints) && opts.hints.length === 1 && opts.hints[0] === "hybrid");
479
+ check("conditionalAuthOptions still forces mediation='conditional'",
480
+ opts.mediation === "conditional");
481
+ check("conditionalAuthOptions routes extensions",
482
+ opts.extensions && opts.extensions.prf && opts.extensions.prf.eval.first === "AAAA");
483
+ }
484
+
485
+ // ---- _b64urlExtInput byte-cap + Uint8Array normalization ----
486
+
487
+ function testExtensionInputBounds() {
488
+ // Uint8Array at the 32-byte cap normalizes to base64url.
489
+ var ok = b.auth.passkey.extensions.prf({ eval: { first: new Uint8Array(32) } });
490
+ check("prf accepts a 32-byte Uint8Array and encodes base64url",
491
+ ok.prf.eval.first && typeof ok.prf.eval.first === "string");
492
+
493
+ // A base64url STRING that decodes to > 32 bytes is refused (44 b64url
494
+ // chars → 33 decoded bytes), per CTAP2.1 PRF salt cap.
495
+ var threw = null;
496
+ try { b.auth.passkey.extensions.prf({ eval: { first: "A".repeat(44) } }); }
497
+ catch (e) { threw = e; }
498
+ check("prf refuses an over-cap base64url string",
499
+ threw && /extension-input-too-large/.test(threw.code || ""));
500
+
501
+ // Over-cap Buffer refused.
502
+ threw = null;
503
+ try { b.auth.passkey.extensions.prf({ eval: { first: Buffer.alloc(33) } }); } // allow:raw-byte-literal — cap + 1
504
+ catch (e) { threw = e; }
505
+ check("prf refuses an over-cap Buffer",
506
+ threw && /extension-input-too-large/.test(threw.code || ""));
507
+
508
+ // Over-cap Uint8Array refused.
509
+ threw = null;
510
+ try { b.auth.passkey.extensions.prf({ eval: { first: new Uint8Array(33) } }); } // allow:raw-byte-literal — cap + 1
511
+ catch (e) { threw = e; }
512
+ check("prf refuses an over-cap Uint8Array",
513
+ threw && /extension-input-too-large/.test(threw.code || ""));
514
+
515
+ // second salt travels through the same normalizer + cap.
516
+ threw = null;
517
+ try {
518
+ b.auth.passkey.extensions.prf({ eval: { first: "AAAA", second: Buffer.alloc(33) } }); // allow:raw-byte-literal — cap + 1
519
+ } catch (e) { threw = e; }
520
+ check("prf caps eval.second the same way",
521
+ threw && /extension-input-too-large/.test(threw.code || ""));
522
+ }
523
+
524
+ // ---- verifyRegistration: expectedOrigin validation + required-input guards ----
525
+
526
+ async function testVerifyRegistrationOriginValidation() {
527
+ var base = { response: { id: "x" }, expectedChallenge: "c", expectedRPID: "x.test" };
528
+
529
+ var threw = null;
530
+ try { await b.auth.passkey.verifyRegistration(); } catch (e) { threw = e; }
531
+ check("verifyRegistration() throws missing-opts",
532
+ threw && /missing-opts/.test(threw.code || ""));
533
+
534
+ threw = null;
535
+ try { await b.auth.passkey.verifyRegistration({ expectedChallenge: "c" }); }
536
+ catch (e) { threw = e; }
537
+ check("verifyRegistration without response throws missing-response",
538
+ threw && /missing-response/.test(threw.code || ""));
539
+
540
+ // Empty-string origin.
541
+ threw = null;
542
+ try { await b.auth.passkey.verifyRegistration(Object.assign({}, base, { expectedOrigin: "" })); }
543
+ catch (e) { threw = e; }
544
+ check("verifyRegistration rejects empty-string expectedOrigin",
545
+ threw && /missing-expectedOrigin/.test(threw.code || ""));
546
+
547
+ // Empty array.
548
+ threw = null;
549
+ try { await b.auth.passkey.verifyRegistration(Object.assign({}, base, { expectedOrigin: [] })); }
550
+ catch (e) { threw = e; }
551
+ check("verifyRegistration rejects empty expectedOrigin array",
552
+ threw && /missing-expectedOrigin/.test(threw.code || ""));
553
+
554
+ // Array with a non-string element.
555
+ threw = null;
556
+ try {
557
+ await b.auth.passkey.verifyRegistration(
558
+ Object.assign({}, base, { expectedOrigin: ["https://a.test", 123] }));
559
+ } catch (e) { threw = e; }
560
+ check("verifyRegistration rejects a non-string element in expectedOrigin array",
561
+ threw && /missing-expectedOrigin/.test(threw.code || ""));
562
+
563
+ // Array with an empty-string element.
564
+ threw = null;
565
+ try {
566
+ await b.auth.passkey.verifyRegistration(
567
+ Object.assign({}, base, { expectedOrigin: [""] }));
568
+ } catch (e) { threw = e; }
569
+ check("verifyRegistration rejects an empty-string element in expectedOrigin array",
570
+ threw && /missing-expectedOrigin/.test(threw.code || ""));
571
+
572
+ // Neither string nor array (number).
573
+ threw = null;
574
+ try { await b.auth.passkey.verifyRegistration(Object.assign({}, base, { expectedOrigin: 123 })); }
575
+ catch (e) { threw = e; }
576
+ check("verifyRegistration rejects a numeric expectedOrigin",
577
+ threw && /missing-expectedOrigin/.test(threw.code || ""));
578
+
579
+ // A well-formed multi-origin array PASSES validation and reaches the
580
+ // vendor (which then rejects the bogus response for an unrelated reason —
581
+ // proving the origin-array validation itself did not reject).
582
+ threw = null;
583
+ try {
584
+ await b.auth.passkey.verifyRegistration(
585
+ Object.assign({}, base, { expectedOrigin: ["https://a.test", "https://b.test"] }));
586
+ } catch (e) { threw = e; }
587
+ check("verifyRegistration accepts a valid multi-origin array (fails later, not on origin)",
588
+ threw && !/missing-expectedOrigin/.test(threw.code || ""));
589
+ }
590
+
591
+ // ---- verifyRegistration BE/BS fallback when the vendor returns no info ----
592
+
593
+ async function testVerifyRegistrationNoRegistrationInfoFallback() {
594
+ var path = require.resolve("../../lib/vendor/simplewebauthn-server.cjs");
595
+ var orig = require.cache[path].exports;
596
+ var vendorReturn = { verified: false }; // no registrationInfo
597
+ require.cache[path].exports = Object.assign({}, orig, {
598
+ verifyRegistrationResponse: async function () { return vendorReturn; },
599
+ });
600
+ delete require.cache[require.resolve("../../lib/auth/passkey")];
601
+ var passkey = require("../../lib/auth/passkey");
602
+ var input = {
603
+ response: { id: "x" },
604
+ expectedChallenge: "c",
605
+ expectedOrigin: "https://x.test",
606
+ expectedRPID: "x.test",
607
+ };
608
+ try {
609
+ // (a) vendor returns a result object with no registrationInfo — the
610
+ // BE/BS fields default to false and verified:false is preserved.
611
+ var rv = await passkey.verifyRegistration(input);
612
+ check("verifyRegistration defaults backupEligible=false without registrationInfo",
613
+ rv.backupEligible === false);
614
+ check("verifyRegistration defaults backupState=false without registrationInfo",
615
+ rv.backupState === false);
616
+ check("verifyRegistration preserves verified:false in the fallback",
617
+ rv.verified === false);
618
+
619
+ // (b) vendor returns nullish — the defensive `rv = rv || {}` fallback
620
+ // synthesizes a result rather than throwing on a missing return.
621
+ vendorReturn = null;
622
+ var rv2 = await passkey.verifyRegistration(input);
623
+ check("verifyRegistration synthesizes a result when the vendor returns nullish",
624
+ rv2 && rv2.backupEligible === false && rv2.backupState === false);
625
+ } finally {
626
+ require.cache[path].exports = orig;
627
+ delete require.cache[require.resolve("../../lib/auth/passkey")];
628
+ }
629
+ }
630
+
631
+ // ---- verifyAuthentication: response / credential / counter guards ----
632
+
633
+ async function testVerifyAuthenticationGuards() {
634
+ var base = {
635
+ response: { id: "x" }, expectedChallenge: "c",
636
+ expectedOrigin: "https://x.test", expectedRPID: "x.test",
637
+ };
638
+ var pub = Buffer.from("00", "hex");
639
+
640
+ var threw = null;
641
+ try { await b.auth.passkey.verifyAuthentication(); } catch (e) { threw = e; }
642
+ check("verifyAuthentication() throws missing-opts",
643
+ threw && /missing-opts/.test(threw.code || ""));
644
+
645
+ threw = null;
646
+ try { await b.auth.passkey.verifyAuthentication({ expectedChallenge: "c" }); }
647
+ catch (e) { threw = e; }
648
+ check("verifyAuthentication without response throws missing-response",
649
+ threw && /missing-response/.test(threw.code || ""));
650
+
651
+ // Credential missing entirely / missing publicKey / missing id.
652
+ threw = null;
653
+ try { await b.auth.passkey.verifyAuthentication(base); } catch (e) { threw = e; }
654
+ check("verifyAuthentication without credential throws missing-credential",
655
+ threw && /missing-credential/.test(threw.code || ""));
656
+
657
+ threw = null;
658
+ try {
659
+ await b.auth.passkey.verifyAuthentication(
660
+ Object.assign({}, base, { credential: { id: "a" } }));
661
+ } catch (e) { threw = e; }
662
+ check("verifyAuthentication credential without publicKey throws missing-credential",
663
+ threw && /missing-credential/.test(threw.code || ""));
664
+
665
+ // counter undefined/null — refused to prevent clone-detection bypass.
666
+ threw = null;
667
+ try {
668
+ await b.auth.passkey.verifyAuthentication(
669
+ Object.assign({}, base, { credential: { id: "a", publicKey: pub } }));
670
+ } catch (e) { threw = e; }
671
+ check("verifyAuthentication with missing counter throws missing-counter",
672
+ threw && /missing-counter/.test(threw.code || ""));
673
+
674
+ threw = null;
675
+ try {
676
+ await b.auth.passkey.verifyAuthentication(
677
+ Object.assign({}, base, { credential: { id: "a", publicKey: pub, counter: null } }));
678
+ } catch (e) { threw = e; }
679
+ check("verifyAuthentication with null counter throws missing-counter",
680
+ threw && /missing-counter/.test(threw.code || ""));
681
+
682
+ // Non-integer / out-of-range counters — each disjunct of the guard.
683
+ var badCounters = [
684
+ ["5", "string counter"],
685
+ [-1, "negative counter"],
686
+ [1.5, "fractional counter"],
687
+ [Infinity, "non-finite counter"],
688
+ [NaN, "NaN counter"],
689
+ ];
690
+ for (var i = 0; i < badCounters.length; i++) {
691
+ threw = null;
692
+ try {
693
+ await b.auth.passkey.verifyAuthentication(Object.assign({}, base, {
694
+ credential: { id: "a", publicKey: pub, counter: badCounters[i][0] },
695
+ }));
696
+ } catch (e) { threw = e; }
697
+ check("verifyAuthentication rejects " + badCounters[i][1] + " with bad-counter",
698
+ threw && /bad-counter/.test(threw.code || ""));
699
+ }
700
+ }
701
+
702
+ // ---- verifyAuthentication BE/BS fallback when the vendor returns no info ----
703
+
704
+ async function testVerifyAuthenticationNoAuthInfoFallback() {
705
+ var path = require.resolve("../../lib/vendor/simplewebauthn-server.cjs");
706
+ var orig = require.cache[path].exports;
707
+ var vendorReturn = { verified: false }; // no authenticationInfo
708
+ require.cache[path].exports = Object.assign({}, orig, {
709
+ verifyAuthenticationResponse: async function () { return vendorReturn; },
710
+ });
711
+ delete require.cache[require.resolve("../../lib/auth/passkey")];
712
+ var passkey = require("../../lib/auth/passkey");
713
+ var input = {
714
+ response: { id: "x" },
715
+ expectedChallenge: "c",
716
+ expectedOrigin: "https://x.test",
717
+ expectedRPID: "x.test",
718
+ credential: { id: "abc", publicKey: Buffer.from("00", "hex"), counter: 0 },
719
+ };
720
+ try {
721
+ var rv = await passkey.verifyAuthentication(input);
722
+ check("verifyAuthentication defaults backupEligible=false without authenticationInfo",
723
+ rv.backupEligible === false);
724
+ check("verifyAuthentication defaults backupState=false without authenticationInfo",
725
+ rv.backupState === false);
726
+ check("verifyAuthentication preserves verified:false in the fallback",
727
+ rv.verified === false);
728
+
729
+ // vendor returns nullish — defensive `rv = rv || {}` synthesizes a result.
730
+ vendorReturn = null;
731
+ var rv2 = await passkey.verifyAuthentication(input);
732
+ check("verifyAuthentication synthesizes a result when the vendor returns nullish",
733
+ rv2 && rv2.backupEligible === false && rv2.backupState === false);
734
+ } finally {
735
+ require.cache[path].exports = orig;
736
+ delete require.cache[require.resolve("../../lib/auth/passkey")];
737
+ }
738
+ }
739
+
740
+ // ---- compareBackupState — all verdicts + input guards ----
741
+
742
+ function testCompareBackupState() {
743
+ var okDiff = b.auth.passkey.compareBackupState(
744
+ { backupEligible: true, backupState: true },
745
+ { backupEligible: true, backupState: true });
746
+ check("compareBackupState verdict 'ok' when flags unchanged", okDiff.verdict === "ok");
747
+ check("compareBackupState surfaces prev/current fields",
748
+ okDiff.prevBackupEligible === true && okDiff.currentBackupState === true);
749
+
750
+ check("compareBackupState detects be-flipped-on",
751
+ b.auth.passkey.compareBackupState({ backupEligible: false }, { backupEligible: true })
752
+ .verdict === "be-flipped-on");
753
+ check("compareBackupState detects be-flipped-off",
754
+ b.auth.passkey.compareBackupState({ backupEligible: true }, { backupEligible: false })
755
+ .verdict === "be-flipped-off");
756
+ check("compareBackupState detects bs-flipped-on",
757
+ b.auth.passkey.compareBackupState(
758
+ { backupEligible: true, backupState: false },
759
+ { backupEligible: true, backupState: true }).verdict === "bs-flipped-on");
760
+ check("compareBackupState detects bs-flipped-off",
761
+ b.auth.passkey.compareBackupState(
762
+ { backupEligible: true, backupState: true },
763
+ { backupEligible: true, backupState: false }).verdict === "bs-flipped-off");
764
+
765
+ var threw = null;
766
+ try { b.auth.passkey.compareBackupState(null, {}); } catch (e) { threw = e; }
767
+ check("compareBackupState rejects a non-object prev",
768
+ threw && /bad-compare-backup/.test(threw.code || ""));
769
+
770
+ threw = null;
771
+ try { b.auth.passkey.compareBackupState({}, "nope"); } catch (e) { threw = e; }
772
+ check("compareBackupState rejects a non-object current",
773
+ threw && /bad-compare-backup/.test(threw.code || ""));
774
+ }
775
+
776
+ // ---- Signal API builders (W3C draft) ----
777
+
778
+ function testSignalUnknownCredential() {
779
+ var out = b.auth.passkey.signalUnknownCredential({ rpId: "x.test", credentialId: "AAAA" });
780
+ check("signalUnknownCredential returns { rpId, credentialId }",
781
+ out.rpId === "x.test" && out.credentialId === "AAAA");
782
+
783
+ var threw = null;
784
+ try { b.auth.passkey.signalUnknownCredential(); } catch (e) { threw = e; }
785
+ check("signalUnknownCredential() throws missing-opts",
786
+ threw && /missing-opts/.test(threw.code || ""));
787
+
788
+ threw = null;
789
+ try { b.auth.passkey.signalUnknownCredential({ credentialId: "AAAA" }); } catch (e) { threw = e; }
790
+ check("signalUnknownCredential without rpId throws missing-rpId",
791
+ threw && /missing-rpId/.test(threw.code || ""));
792
+
793
+ threw = null;
794
+ try { b.auth.passkey.signalUnknownCredential({ rpId: "x.test" }); } catch (e) { threw = e; }
795
+ check("signalUnknownCredential without credentialId throws missing-credentialId",
796
+ threw && /missing-credentialId/.test(threw.code || ""));
797
+
798
+ threw = null;
799
+ try { b.auth.passkey.signalUnknownCredential({ rpId: "x.test", credentialId: "not base64!" }); }
800
+ catch (e) { threw = e; }
801
+ check("signalUnknownCredential rejects a non-base64url credentialId",
802
+ threw && /bad-credential-id/.test(threw.code || ""));
803
+ }
804
+
805
+ function testSignalAllAcceptedCredentials() {
806
+ var out = b.auth.passkey.signalAllAcceptedCredentials({
807
+ rpId: "x.test", userId: "AAAA", allAcceptedCredentialIds: ["BBBB", "CCCC"],
808
+ });
809
+ check("signalAllAcceptedCredentials returns a defensive copy of the id list",
810
+ Array.isArray(out.allAcceptedCredentialIds) &&
811
+ out.allAcceptedCredentialIds.length === 2 &&
812
+ out.allAcceptedCredentialIds[0] === "BBBB");
813
+
814
+ var threw = null;
815
+ try { b.auth.passkey.signalAllAcceptedCredentials(); } catch (e) { threw = e; }
816
+ check("signalAllAcceptedCredentials() throws missing-opts",
817
+ threw && /missing-opts/.test(threw.code || ""));
818
+
819
+ threw = null;
820
+ try { b.auth.passkey.signalAllAcceptedCredentials({ userId: "AAAA", allAcceptedCredentialIds: [] }); }
821
+ catch (e) { threw = e; }
822
+ check("signalAllAcceptedCredentials without rpId throws missing-rpId",
823
+ threw && /missing-rpId/.test(threw.code || ""));
824
+
825
+ threw = null;
826
+ try { b.auth.passkey.signalAllAcceptedCredentials({ rpId: "x.test", allAcceptedCredentialIds: [] }); }
827
+ catch (e) { threw = e; }
828
+ check("signalAllAcceptedCredentials without userId throws missing-userId",
829
+ threw && /missing-userId/.test(threw.code || ""));
830
+
831
+ threw = null;
832
+ try {
833
+ b.auth.passkey.signalAllAcceptedCredentials({
834
+ rpId: "x.test", userId: "not base64!", allAcceptedCredentialIds: [],
835
+ });
836
+ } catch (e) { threw = e; }
837
+ check("signalAllAcceptedCredentials rejects a non-base64url userId",
838
+ threw && /bad-user-id/.test(threw.code || ""));
839
+
840
+ threw = null;
841
+ try {
842
+ b.auth.passkey.signalAllAcceptedCredentials({
843
+ rpId: "x.test", userId: "AAAA", allAcceptedCredentialIds: "not-an-array",
844
+ });
845
+ } catch (e) { threw = e; }
846
+ check("signalAllAcceptedCredentials rejects a non-array id list",
847
+ threw && /bad-accepted-list/.test(threw.code || ""));
848
+
849
+ threw = null;
850
+ try {
851
+ b.auth.passkey.signalAllAcceptedCredentials({
852
+ rpId: "x.test", userId: "AAAA", allAcceptedCredentialIds: ["OK1", "bad element!"],
853
+ });
854
+ } catch (e) { threw = e; }
855
+ check("signalAllAcceptedCredentials rejects a non-base64url list element",
856
+ threw && /bad-accepted-list/.test(threw.code || ""));
857
+ }
858
+
859
+ function testSignalCurrentUserDetails() {
860
+ var out = b.auth.passkey.signalCurrentUserDetails({
861
+ rpId: "x.test", userId: "AAAA", name: "alice", displayName: "Alice A",
862
+ });
863
+ check("signalCurrentUserDetails returns the descriptor",
864
+ out.rpId === "x.test" && out.userId === "AAAA" &&
865
+ out.name === "alice" && out.displayName === "Alice A");
866
+
867
+ var threw = null;
868
+ try { b.auth.passkey.signalCurrentUserDetails(); } catch (e) { threw = e; }
869
+ check("signalCurrentUserDetails() throws missing-opts",
870
+ threw && /missing-opts/.test(threw.code || ""));
871
+
872
+ threw = null;
873
+ try {
874
+ b.auth.passkey.signalCurrentUserDetails({ userId: "AAAA", name: "a", displayName: "b" });
875
+ } catch (e) { threw = e; }
876
+ check("signalCurrentUserDetails without rpId throws missing-rpId",
877
+ threw && /missing-rpId/.test(threw.code || ""));
878
+
879
+ threw = null;
880
+ try {
881
+ b.auth.passkey.signalCurrentUserDetails({ rpId: "x.test", name: "a", displayName: "b" });
882
+ } catch (e) { threw = e; }
883
+ check("signalCurrentUserDetails without userId throws missing-userId",
884
+ threw && /missing-userId/.test(threw.code || ""));
885
+
886
+ threw = null;
887
+ try {
888
+ b.auth.passkey.signalCurrentUserDetails({
889
+ rpId: "x.test", userId: "not base64!", name: "a", displayName: "b",
890
+ });
891
+ } catch (e) { threw = e; }
892
+ check("signalCurrentUserDetails rejects a non-base64url userId",
893
+ threw && /bad-user-id/.test(threw.code || ""));
894
+
895
+ threw = null;
896
+ try {
897
+ b.auth.passkey.signalCurrentUserDetails({
898
+ rpId: "x.test", userId: "AAAA", displayName: "b",
899
+ });
900
+ } catch (e) { threw = e; }
901
+ check("signalCurrentUserDetails without name throws missing-name",
902
+ threw && /missing-name/.test(threw.code || ""));
903
+
904
+ threw = null;
905
+ try {
906
+ b.auth.passkey.signalCurrentUserDetails({
907
+ rpId: "x.test", userId: "AAAA", name: "a",
908
+ });
909
+ } catch (e) { threw = e; }
910
+ check("signalCurrentUserDetails without displayName throws missing-displayName",
911
+ threw && /missing-displayName/.test(threw.code || ""));
912
+
913
+ var longName = "n".repeat(257);
914
+ threw = null;
915
+ try {
916
+ b.auth.passkey.signalCurrentUserDetails({
917
+ rpId: "x.test", userId: "AAAA", name: longName, displayName: "b",
918
+ });
919
+ } catch (e) { threw = e; }
920
+ check("signalCurrentUserDetails rejects an over-long name",
921
+ threw && /name-too-long/.test(threw.code || ""));
922
+
923
+ threw = null;
924
+ try {
925
+ b.auth.passkey.signalCurrentUserDetails({
926
+ rpId: "x.test", userId: "AAAA", name: "a", displayName: longName,
927
+ });
928
+ } catch (e) { threw = e; }
929
+ check("signalCurrentUserDetails rejects an over-long displayName",
930
+ threw && /displayname-too-long/.test(threw.code || ""));
931
+ }
932
+
933
+ function testExportedAllowedExtensionKeys() {
934
+ check("ALLOWED_EXTENSION_KEYS lists prf/largeBlob/credBlob",
935
+ b.auth.passkey.ALLOWED_EXTENSION_KEYS.prf === 1 &&
936
+ b.auth.passkey.ALLOWED_EXTENSION_KEYS.largeBlob === 1 &&
937
+ b.auth.passkey.ALLOWED_EXTENSION_KEYS.credBlob === 1);
938
+ check("ALLOWED_EXTENSION_KEYS is frozen",
939
+ Object.isFrozen(b.auth.passkey.ALLOWED_EXTENSION_KEYS));
940
+ }
941
+
308
942
  // ---- run ----
309
943
 
310
944
  async function run() {
@@ -316,6 +950,21 @@ async function run() {
316
950
  testCredBlobExt();
317
951
  await testConditionalAuthOptions();
318
952
  await testStartAuthMediationPassthrough();
953
+ await testStartRegistrationGuards();
954
+ await testStartRegistrationDefaultsAndOptions();
955
+ await testStartRegistrationExtensionAllowlist();
956
+ await testStartAuthenticationHintsAndExtensions();
957
+ await testConditionalAuthCustomHints();
958
+ testExtensionInputBounds();
959
+ await testVerifyRegistrationOriginValidation();
960
+ await testVerifyRegistrationNoRegistrationInfoFallback();
961
+ await testVerifyAuthenticationGuards();
962
+ await testVerifyAuthenticationNoAuthInfoFallback();
963
+ testCompareBackupState();
964
+ testSignalUnknownCredential();
965
+ testSignalAllAcceptedCredentials();
966
+ testSignalCurrentUserDetails();
967
+ testExportedAllowedExtensionKeys();
319
968
  }
320
969
 
321
970
  module.exports = { run: run };