@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
@@ -1,238 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) blamejs contributors
3
- "use strict";
4
-
5
- // Coverage for lib/cli.js branches not exercised by the per-command
6
- // cli-*.test.js files or test/00-primitives.js:
7
- // - the `seed` subcommand (arg validation + a local-sqlite status run)
8
- // - `dev --grace-ms` numeric validation
9
- // - `api-snapshot` operator-supplied `--module` (capture + compare
10
- // failure paths)
11
- // - top-level `--help` / `-h` routing + unknown help topic fall-through
12
- // Everything drives the public b.cli.main(argv, ctx) surface with a
13
- // captured-output ctx; nothing here needs a live network/db backend
14
- // (the sqlite handle is a local temp file, same shape the existing
15
- // cli-audit-verify-chain / migrate tests use).
16
-
17
- var fs = require("node:fs");
18
- var os = require("node:os");
19
- var path = require("node:path");
20
- var helpers = require("../helpers");
21
- var check = helpers.check;
22
- var cli = require("../../lib/cli");
23
-
24
- function _captureCtx() {
25
- var stdout = [];
26
- var stderr = [];
27
- return {
28
- stdout: { write: function (s) { stdout.push(String(s)); } },
29
- stderr: { write: function (s) { stderr.push(String(s)); } },
30
- env: {},
31
- cwd: process.cwd(),
32
- out: function () { return stdout.join(""); },
33
- err: function () { return stderr.join(""); },
34
- };
35
- }
36
-
37
- function _tmpDir(prefix) {
38
- return fs.mkdtempSync(path.join(os.tmpdir(), prefix + "-"));
39
- }
40
-
41
- async function run() {
42
- var dir = _tmpDir("blamejs-cli-coverage");
43
- try {
44
- // =====================================================================
45
- // seed — arg validation
46
- // =====================================================================
47
-
48
- // bare `seed` (no subcommand) → usage on stderr, exit 2
49
- var cBare = _captureCtx();
50
- var rcBare = await cli.main(["seed"], cBare);
51
- check("seed: bare → exit 2", rcBare === 2);
52
- check("seed: bare → usage on stderr", /Usage: blamejs seed/.test(cBare.err()));
53
-
54
- // `seed help` → usage on stdout, exit 0
55
- var cHelp = _captureCtx();
56
- var rcHelp = await cli.main(["seed", "help"], cHelp);
57
- check("seed help: exit 0", rcHelp === 0);
58
- check("seed help: usage on stdout", /Usage: blamejs seed/.test(cHelp.out()));
59
- check("seed help: lists run + status", /\brun\b/.test(cHelp.out()) && /\bstatus\b/.test(cHelp.out()));
60
-
61
- // `help seed` (top-level help dispatch → SEED_USAGE)
62
- var cTopHelpSeed = _captureCtx();
63
- var rcTopHelpSeed = await cli.main(["help", "seed"], cTopHelpSeed);
64
- check("help seed: exit 0", rcTopHelpSeed === 0);
65
- check("help seed: prints SEED_USAGE", /Usage: blamejs seed/.test(cTopHelpSeed.out()));
66
-
67
- // unknown subcommand → exit 2 + usage
68
- var cUnk = _captureCtx();
69
- var rcUnk = await cli.main(["seed", "frobnicate"], cUnk);
70
- check("seed unknown sub: exit 2", rcUnk === 2);
71
- check("seed unknown sub: names the sub", /unknown subcommand 'frobnicate'/.test(cUnk.err()));
72
-
73
- // run without --db → exit 2
74
- var cNoDb = _captureCtx();
75
- var rcNoDb = await cli.main(["seed", "run"], cNoDb);
76
- check("seed run: missing --db → exit 2", rcNoDb === 2);
77
- check("seed run: missing --db message", /--db <path> is required/.test(cNoDb.err()));
78
-
79
- // --db present but bare (boolean flag, no value) → treated as missing
80
- var cDbBool = _captureCtx();
81
- var rcDbBool = await cli.main(["seed", "run", "--db"], cDbBool);
82
- check("seed run: --db with no value → exit 2", rcDbBool === 2);
83
- check("seed run: --db no value message", /--db <path> is required/.test(cDbBool.err()));
84
-
85
- // --db present, --env missing → exit 2
86
- var dbPath = path.join(dir, "seed.db");
87
- var cNoEnv = _captureCtx();
88
- var rcNoEnv = await cli.main(["seed", "status", "--db", dbPath], cNoEnv);
89
- check("seed status: missing --env → exit 2", rcNoEnv === 2);
90
- check("seed status: missing --env message", /--env <name> is required/.test(cNoEnv.err()));
91
-
92
- // bad db path (parent dir doesn't exist) → cannot open db, exit 1
93
- var cBadDb = _captureCtx();
94
- var rcBadDb = await cli.main(
95
- ["seed", "status", "--db", path.join(dir, "no-such-dir", "x.db"), "--env", "dev"],
96
- cBadDb);
97
- check("seed status: unopenable db → exit 1", rcBadDb === 1);
98
- check("seed status: cannot-open message", /cannot open db/.test(cBadDb.err()));
99
-
100
- // =====================================================================
101
- // seed — status happy path against a local sqlite file + empty dir
102
- // =====================================================================
103
- var seedersDir = path.join(dir, "seeders-empty");
104
- var cStatus = _captureCtx();
105
- var rcStatus = await cli.main(
106
- ["seed", "status", "--db", dbPath, "--env", "dev", "--dir", seedersDir],
107
- cStatus);
108
- check("seed status: empty dir → exit 0", rcStatus === 0);
109
- check("seed status: prints env line", /env: dev/.test(cStatus.out()));
110
- check("seed status: 0 applied of 0 total", /applied: 0 \/ 0/.test(cStatus.out()));
111
- check("seed status: 0 pending", /pending: 0/.test(cStatus.out()));
112
-
113
- // =====================================================================
114
- // dev — --grace-ms numeric validation (returns before spawning a child)
115
- // =====================================================================
116
- var cGraceNeg = _captureCtx();
117
- var rcGraceNeg = await cli.main(
118
- ["dev", "--command", "node", "--grace-ms", "-5"], cGraceNeg);
119
- check("dev --grace-ms negative → exit 2", rcGraceNeg === 2);
120
- check("dev --grace-ms negative message", /--grace-ms must be a non-negative number/.test(cGraceNeg.err()));
121
-
122
- var cGraceNaN = _captureCtx();
123
- var rcGraceNaN = await cli.main(
124
- ["dev", "--command", "node", "--grace-ms", "not-a-number"], cGraceNaN);
125
- check("dev --grace-ms non-numeric → exit 2", rcGraceNaN === 2);
126
- check("dev --grace-ms non-numeric message", /--grace-ms must be a non-negative number/.test(cGraceNaN.err()));
127
-
128
- // missing --command still exits 2 (guards the `dev` entry independent
129
- // of the grace-ms path above)
130
- var cDevNoCmd = _captureCtx();
131
- var rcDevNoCmd = await cli.main(["dev"], cDevNoCmd);
132
- check("dev: missing --command → exit 2", rcDevNoCmd === 2);
133
- check("dev: missing --command message", /--command <cmd> is required/.test(cDevNoCmd.err()));
134
-
135
- // =====================================================================
136
- // dev — --ignore pattern refusal takes the standard exit-2 + stderr
137
- // path, never rejects main(). An over-length pattern, a ReDoS-shape
138
- // pattern guardRegex refuses, and a pattern RegExp() can't compile are
139
- // all operator-input validation failures: they must return exit 2 like
140
- // every other dev validation, not reject the awaited promise (which the
141
- // bin shim would surface as a stack-trace + exit 1).
142
- // =====================================================================
143
- async function _devIgnore(pattern) {
144
- var c = _captureCtx();
145
- var rejected = false;
146
- var rc;
147
- try {
148
- rc = await cli.main(["dev", "--command", "node", "--ignore", pattern], c);
149
- } catch (_e) {
150
- rejected = true;
151
- }
152
- return { rc: rc, rejected: rejected, err: c.err() };
153
- }
154
-
155
- var igLong = await _devIgnore("a".repeat(300));
156
- check("dev --ignore over-length → never rejects main()", igLong.rejected === false);
157
- check("dev --ignore over-length → exit 2", igLong.rc === 2);
158
- check("dev --ignore over-length message", /exceeds max length/.test(igLong.err));
159
-
160
- var igReDoS = await _devIgnore("(a+)+$");
161
- check("dev --ignore ReDoS-shape → never rejects main()", igReDoS.rejected === false);
162
- check("dev --ignore ReDoS-shape → exit 2", igReDoS.rc === 2);
163
- check("dev --ignore ReDoS-shape message", /refused by guardRegex/.test(igReDoS.err));
164
-
165
- var igBadRe = await _devIgnore("(");
166
- check("dev --ignore uncompilable → never rejects main()", igBadRe.rejected === false);
167
- check("dev --ignore uncompilable → exit 2", igBadRe.rc === 2);
168
- check("dev --ignore uncompilable message", /--ignore pattern/.test(igBadRe.err));
169
-
170
- // =====================================================================
171
- // api-snapshot — operator-supplied --module
172
- // =====================================================================
173
-
174
- // capture from a non-existent module → cannot load, exit 1
175
- var cModBad = _captureCtx();
176
- var rcModBad = await cli.main(
177
- ["api-snapshot", "capture", "--module", path.join(dir, "no-module.js")], cModBad);
178
- check("api-snapshot capture bad --module → exit 1", rcModBad === 1);
179
- check("api-snapshot capture bad --module message",
180
- /cannot load module/.test(cModBad.err()));
181
-
182
- // capture from a valid operator module → wrote snapshot, exit 0
183
- var customMod = path.join(dir, "custom-mod.js");
184
- fs.writeFileSync(customMod,
185
- "module.exports = { version: \"9.9.9\", greet: function greet() {} };");
186
- var customSnap = path.join(dir, "custom-snap.json");
187
- var cModOk = _captureCtx();
188
- var rcModOk = await cli.main(
189
- ["api-snapshot", "capture", "--file", customSnap, "--module", customMod], cModOk);
190
- check("api-snapshot capture custom --module → exit 0", rcModOk === 0);
191
- check("api-snapshot capture custom --module wrote file", fs.existsSync(customSnap));
192
- check("api-snapshot capture custom --module reports version",
193
- /frameworkVersion 9\.9\.9/.test(cModOk.out()));
194
-
195
- // compare where the saved snapshot reads fine but capturing the CURRENT
196
- // surface fails (bad --module) → "cannot capture current surface", exit 1
197
- var cCmpBad = _captureCtx();
198
- var rcCmpBad = await cli.main(
199
- ["api-snapshot", "compare", "--file", customSnap, "--module", path.join(dir, "gone.js")],
200
- cCmpBad);
201
- check("api-snapshot compare uncapturable current → exit 1", rcCmpBad === 1);
202
- check("api-snapshot compare uncapturable current message",
203
- /cannot capture current surface/.test(cCmpBad.err()));
204
-
205
- // =====================================================================
206
- // top-level dispatch — help routing edges
207
- // =====================================================================
208
-
209
- // `<cmd> --help` synthesizes `help <cmd>` → that command's usage
210
- var cMigHelp = _captureCtx();
211
- var rcMigHelp = await cli.main(["migrate", "--help"], cMigHelp);
212
- check("migrate --help → exit 0", rcMigHelp === 0);
213
- check("migrate --help prints migrate usage", /Usage: blamejs migrate/.test(cMigHelp.out()));
214
-
215
- // `-h` short flag takes the same route
216
- var cMigH = _captureCtx();
217
- var rcMigH = await cli.main(["migrate", "-h"], cMigH);
218
- check("migrate -h → exit 0", rcMigH === 0);
219
- check("migrate -h prints migrate usage", /Usage: blamejs migrate/.test(cMigH.out()));
220
-
221
- // `help <unknown-topic>` falls through to the top-level usage
222
- var cBogus = _captureCtx();
223
- var rcBogus = await cli.main(["help", "totally-bogus-topic"], cBogus);
224
- check("help unknown-topic → exit 0", rcBogus === 0);
225
- check("help unknown-topic prints top usage", /blamejs <command>/.test(cBogus.out()));
226
- } finally {
227
- try { fs.rmSync(dir, { recursive: true, force: true }); } catch (_e) { /* best-effort */ }
228
- }
229
- }
230
-
231
- module.exports = { run: run };
232
-
233
- if (require.main === module) {
234
- run().then(
235
- function () { console.log("OK — " + helpers.getChecks() + " checks passed"); },
236
- function (e) { console.error("FAIL:", e.stack || e); process.exit(1); }
237
- );
238
- }
@@ -1,319 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- // Copyright (c) blamejs contributors
3
- "use strict";
4
- /**
5
- * b.contentCredentials — error-path + adversarial-input coverage.
6
- *
7
- * Complements content-credentials.test.js (happy-path + round-trips) by
8
- * driving the validation refusals, malformed-input rejections, wrong-state
9
- * protocol errors, and fail-closed verdicts the round-trip tests never
10
- * reach: bad build opts, missing required fields, signCose timestamp-
11
- * posture and reuse-signature refusals, verifyCose malformed-CBOR / bad
12
- * hashAlg / wrong-key verdicts, CAWG identity-assertion shape + trust-
13
- * resolution refusals, and the GB 45438-2025 CAC implicit-label gate.
14
- */
15
-
16
- var helpers = require("../helpers");
17
- var b = helpers.b;
18
- var check = helpers.check;
19
- var nodeCrypto = require("node:crypto");
20
-
21
- var cc = b.contentCredentials;
22
-
23
- // Capture the error a thrower raises (or null when it does not throw) —
24
- // one definition so the many config-time refusal checks below don't each
25
- // re-roll a `threw = null; try {} catch {}` block.
26
- function _err(fn) {
27
- try { fn(); return null; } catch (e) { return e; }
28
- }
29
-
30
- var VALID_BUILD = {
31
- provider: "Acme AI Inc.", system: "acme-image-v3",
32
- systemVersion: "3.2.1", contentId: "img-001",
33
- };
34
- function _buildOpts(overrides) {
35
- return Object.assign({}, VALID_BUILD, overrides);
36
- }
37
-
38
- async function run() {
39
- var e;
40
-
41
- // ---- build() / _validateBuildOpts adversarial input ----
42
- check("build(null) rejected as bad-opts",
43
- (e = _err(function () { cc.build(null); })) && e.code === "content-credentials/bad-opts");
44
- check("build('str') rejected as bad-opts",
45
- (e = _err(function () { cc.build("nope"); })) && e.code === "content-credentials/bad-opts");
46
-
47
- check("build missing system rejected",
48
- (e = _err(function () { cc.build({ provider: "x", systemVersion: "1.0.0", contentId: "y" }); })) &&
49
- e.code === "MISSING_SYSTEM");
50
- check("build missing systemVersion rejected",
51
- (e = _err(function () { cc.build({ provider: "x", system: "s", contentId: "y" }); })) &&
52
- e.code === "MISSING_SYSTEMVERSION");
53
- check("build missing contentId rejected",
54
- (e = _err(function () { cc.build({ provider: "x", system: "s", systemVersion: "1.0.0" }); })) &&
55
- e.code === "MISSING_CONTENTID");
56
-
57
- check("build provider over 256 chars rejected",
58
- (e = _err(function () { cc.build(_buildOpts({ provider: "a".repeat(257) })); })) &&
59
- e.code === "content-credentials/bad-provider");
60
- check("build system with illegal chars rejected",
61
- (e = _err(function () { cc.build(_buildOpts({ system: "has space!" })); })) &&
62
- e.code === "content-credentials/bad-system");
63
- check("build systemVersion over 64 chars rejected",
64
- (e = _err(function () { cc.build(_buildOpts({ systemVersion: "1.0.0-" + "a".repeat(60) })); })) &&
65
- e.code === "content-credentials/bad-version");
66
- check("build contentId with illegal chars rejected",
67
- (e = _err(function () { cc.build(_buildOpts({ contentId: "bad id!" })); })) &&
68
- e.code === "content-credentials/bad-content-id");
69
- check("build contentSha3 wrong length rejected",
70
- (e = _err(function () { cc.build(_buildOpts({ contentSha3: "abc123" })); })) &&
71
- e.code === "content-credentials/bad-content-hash");
72
- check("build contentSha3 non-hex rejected",
73
- (e = _err(function () { cc.build(_buildOpts({ contentSha3: "z".repeat(128) })); })) &&
74
- e.code === "content-credentials/bad-content-hash");
75
-
76
- // Valid optional fields flow through (providerContact / sha3 / visibleDisclosure).
77
- var mFull = cc.build(_buildOpts({
78
- providerContact: "https://acme.example/contact",
79
- contentType: "image/png", contentSha3: "a".repeat(128),
80
- visibleDisclosure: "AI-generated by Acme",
81
- }));
82
- check("build carries optional contentSha3", mFull.content.sha3_512 === "a".repeat(128));
83
- check("build carries providerContact", mFull.provider.contact === "https://acme.example/contact");
84
- check("build carries visibleDisclosure", mFull.visibleDisclosure === "AI-generated by Acme");
85
-
86
- // Adversarial numeric generatedAt (NaN) must not yield a manifest whose
87
- // ISO timestamp is a broken value — either a clean rejection or a valid
88
- // ISO string is acceptable; an unparseable generatedAtIso is not.
89
- var nanRes = null, nanErr = null;
90
- try { nanRes = cc.build(_buildOpts({ generatedAt: NaN })); } catch (ne) { nanErr = ne; }
91
- check("build NaN generatedAt: rejected or valid ISO (no Invalid-Date manifest)",
92
- nanErr !== null || (nanRes && !isNaN(Date.parse(nanRes.generatedAtIso))));
93
-
94
- // ---- required() ----
95
- check("required(null) returns opts-required",
96
- JSON.stringify(cc.required(null)) === JSON.stringify(["opts-required"]));
97
- check("required('str') returns opts-required",
98
- JSON.stringify(cc.required("x")) === JSON.stringify(["opts-required"]));
99
- var reqNonString = cc.required({ provider: 123, system: "s", systemVersion: "1.0.0", contentId: "c" });
100
- check("required treats non-string provider as missing",
101
- reqNonString.length === 1 && reqNonString[0] === "missing-provider");
102
-
103
- // ---- sign() ----
104
- var pair = b.crypto.generateSigningKeyPair("ml-dsa-87");
105
- var manifest = cc.build(VALID_BUILD);
106
-
107
- check("sign(null) rejected as bad-manifest",
108
- (e = _err(function () { cc.sign(null, { privateKeyPem: pair.privateKey }); })) &&
109
- e.code === "content-credentials/bad-manifest");
110
- check("sign missing privateKeyPem rejected",
111
- (e = _err(function () { cc.sign(manifest, {}); })) && e.code === "BAD_KEY");
112
- check("sign no opts rejected",
113
- (e = _err(function () { cc.sign(manifest); })) && e.code === "BAD_KEY");
114
-
115
- // ---- verify() fail-closed verdicts (never throws) ----
116
- var env = cc.sign(manifest, { privateKeyPem: pair.privateKey, audit: false });
117
- check("verify(null) returns envelope-shape", cc.verify(null, pair.publicKey, { audit: false }).reason === "envelope-shape");
118
- check("verify({}) returns envelope-shape", cc.verify({}, pair.publicKey, { audit: false }).reason === "envelope-shape");
119
- check("verify empty signature returns envelope-shape",
120
- cc.verify({ manifest: manifest, signature: "" }, pair.publicKey, { audit: false }).reason === "envelope-shape");
121
- check("verify non-string key returns public-key-required",
122
- cc.verify(env, 123, { audit: false }).reason === "public-key-required");
123
- check("verify empty key returns public-key-required",
124
- cc.verify(env, "", { audit: false }).reason === "public-key-required");
125
-
126
- // A cryptographically valid signature over a payload that is NOT a
127
- // complete SB-942 manifest must still fail the required-field gate.
128
- var envPartial = cc.sign({ foo: "bar" }, { privateKeyPem: pair.privateKey, audit: false });
129
- var vPartial = cc.verify(envPartial, pair.publicKey, { audit: false });
130
- check("verify valid-sig-but-incomplete-manifest returns missing-required",
131
- vPartial.valid === false && vPartial.reason.indexOf("missing-required") === 0);
132
-
133
- // ---- signCose() config-time refusals ----
134
- check("signCose(null) rejected as bad-manifest",
135
- (e = _err(function () { cc.signCose(null, { privateKeyPem: pair.privateKey }); })) &&
136
- e.code === "content-credentials/bad-manifest");
137
- check("signCose missing privateKeyPem rejected",
138
- (e = _err(function () { cc.signCose(manifest, { alg: "ml-dsa-87", timestamp: false, timestampOptOutReason: "x" }); })) &&
139
- e.code === "BAD_KEY");
140
- check("signCose timestamp as string rejected",
141
- (e = _err(function () { cc.signCose(manifest, { privateKeyPem: pair.privateKey, timestamp: "soon" }); })) &&
142
- e.code === "content-credentials/bad-timestamp");
143
- check("signCose timestamp as array rejected",
144
- (e = _err(function () { cc.signCose(manifest, { privateKeyPem: pair.privateKey, timestamp: [] }); })) &&
145
- e.code === "content-credentials/bad-timestamp");
146
- check("signCose timestamp with unknown key rejected",
147
- (e = _err(function () { cc.signCose(manifest, { privateKeyPem: pair.privateKey, timestamp: { bogus: 1 } }); })) &&
148
- /unknown option/.test(e.message));
149
- check("signCose timestamp.token non-Buffer rejected",
150
- (e = _err(function () { cc.signCose(manifest, { privateKeyPem: pair.privateKey, timestamp: { token: "not-a-buffer" } }); })) &&
151
- e.code === "content-credentials/bad-timestamp-token");
152
- check("signCose timestamp.signature empty rejected",
153
- (e = _err(function () { cc.signCose(manifest, { privateKeyPem: pair.privateKey, timestamp: { token: Buffer.from([1]), signature: "" } }); })) &&
154
- e.code === "content-credentials/bad-reuse-signature");
155
-
156
- // Reused (pinned) signature that does not verify against this manifest+key
157
- // is refused — a stale or foreign signature can't be re-embedded.
158
- check("signCose reuse-signature that does not verify is refused",
159
- (e = _err(function () {
160
- cc.signCose(manifest, { privateKeyPem: pair.privateKey,
161
- timestamp: { token: Buffer.from([1, 2, 3]), signature: nodeCrypto.randomBytes(32).toString("base64") } });
162
- })) && e.code === "content-credentials/reuse-signature-mismatch");
163
-
164
- // certChain emission — single-cert and multi-cert branches (bytes are
165
- // carried opaquely; a non-Buffer entry is rejected, not silently kept).
166
- var coseSingle = cc.signCose(manifest, {
167
- privateKeyPem: pair.privateKey, timestamp: false, timestampOptOutReason: "x",
168
- certChain: [Buffer.from([1, 2, 3])], audit: false,
169
- });
170
- var coseMulti = cc.signCose(manifest, {
171
- privateKeyPem: pair.privateKey, timestamp: false, timestampOptOutReason: "x",
172
- certChain: [Buffer.from([1, 2, 3]), Buffer.from([4, 5, 6])], audit: false,
173
- });
174
- check("signCose single-cert certChain produces COSE bytes", Buffer.isBuffer(coseSingle.coseSign1));
175
- check("signCose multi-cert certChain grows COSE bytes", coseMulti.coseSign1.length > coseSingle.coseSign1.length);
176
- check("signCose non-Buffer certChain entry is rejected (throws)",
177
- _err(function () {
178
- cc.signCose(manifest, { privateKeyPem: pair.privateKey, timestamp: false,
179
- timestampOptOutReason: "x", certChain: ["not a buffer"] });
180
- }) !== null);
181
-
182
- // ---- verifyCose() fail-closed verdicts (never throws) ----
183
- var optout = cc.signCose(manifest, {
184
- privateKeyPem: pair.privateKey, alg: "ml-dsa-87",
185
- timestamp: false, timestampOptOutReason: "no TSA in test", audit: false,
186
- });
187
- check("verifyCose bad timestampHashAlg returns bad-tst-hash verdict",
188
- cc.verifyCose(optout.coseSign1, pair.publicKey, { timestampHashAlg: "MD5", audit: false }).reason === "content-credentials/bad-tst-hash");
189
- check("verifyCose non-CBOR (0x00) returns cose-malformed verdict",
190
- cc.verifyCose(Buffer.from([0x00]), pair.publicKey, { audit: false }).reason === "content-credentials/cose-malformed");
191
- check("verifyCose undecodable CBOR (0xff) returns cose-malformed verdict",
192
- cc.verifyCose(Buffer.from([0xff]), pair.publicKey, { audit: false }).reason === "content-credentials/cose-malformed");
193
- var otherPair = b.crypto.generateSigningKeyPair("ml-dsa-87");
194
- var vWrongKey = cc.verifyCose(optout.coseSign1, otherPair.publicKey, { requireTimestamp: false, audit: false });
195
- check("verifyCose wrong key returns signature-mismatch verdict",
196
- vWrongKey.valid === false && vWrongKey.reason === "signature-mismatch");
197
-
198
- // ---- attachIdentityAssertion() config-time refusals ----
199
- var refs = [{ label: "c2pa.actions", data: { action: "c2pa.created" } }];
200
- check("attach() no args rejected (bad binding)",
201
- (e = _err(function () { cc.attachIdentityAssertion(); })) && e.code === "content-credentials/bad-identity-binding");
202
- check("attach subject non-object rejected",
203
- (e = _err(function () { cc.attachIdentityAssertion({ binding: "x509", subject: "nope", referencedAssertions: refs, privateKeyPem: pair.privateKey }); })) &&
204
- e.code === "content-credentials/bad-identity-subject");
205
- check("attach subject array rejected",
206
- (e = _err(function () { cc.attachIdentityAssertion({ binding: "x509", subject: [], referencedAssertions: refs, privateKeyPem: pair.privateKey }); })) &&
207
- e.code === "content-credentials/bad-identity-subject");
208
- check("attach subject empty object rejected",
209
- (e = _err(function () { cc.attachIdentityAssertion({ binding: "x509", subject: {}, referencedAssertions: refs, privateKeyPem: pair.privateKey }); })) &&
210
- e.code === "content-credentials/bad-identity-subject");
211
- check("attach referencedAssertions non-array rejected",
212
- (e = _err(function () { cc.attachIdentityAssertion({ binding: "x509", subject: { name: "x" }, referencedAssertions: "nope", privateKeyPem: pair.privateKey }); })) &&
213
- e.code === "content-credentials/bad-referenced-assertions");
214
- check("attach referencedAssertions empty rejected",
215
- (e = _err(function () { cc.attachIdentityAssertion({ binding: "x509", subject: { name: "x" }, referencedAssertions: [], privateKeyPem: pair.privateKey }); })) &&
216
- e.code === "content-credentials/bad-referenced-assertions");
217
- check("attach missing privateKeyPem rejected",
218
- (e = _err(function () { cc.attachIdentityAssertion({ binding: "x509", subject: { name: "x" }, referencedAssertions: refs }); })) &&
219
- e.code === "BAD_KEY");
220
- check("attach unknown opt key rejected",
221
- (e = _err(function () { cc.attachIdentityAssertion({ binding: "x509", subject: { name: "x" }, referencedAssertions: refs, privateKeyPem: pair.privateKey, bogus: 1 }); })) &&
222
- /unknown option/.test(e.message));
223
-
224
- // ---- verifyIdentityAssertion() fail-closed verdicts (never throws) ----
225
- var ia = cc.attachIdentityAssertion({
226
- binding: "x509", subject: { name: "Acme Newsroom" },
227
- referencedAssertions: refs, privateKeyPem: pair.privateKey, audit: false,
228
- });
229
- check("verifyIdentity null assertion returns assertion-shape",
230
- cc.verifyIdentityAssertion(null, pair.publicKey, { referencedAssertions: refs }).reason === "assertion-shape");
231
- check("verifyIdentity missing signer_payload returns assertion-shape",
232
- cc.verifyIdentityAssertion({ signature: "x" }, pair.publicKey, { referencedAssertions: refs }).reason === "assertion-shape");
233
- check("verifyIdentity non-string key returns public-key-required",
234
- cc.verifyIdentityAssertion(ia, 123, { referencedAssertions: refs }).reason === "public-key-required");
235
- check("verifyIdentity bad signer_payload binding returns signer-payload-shape",
236
- cc.verifyIdentityAssertion({ signer_payload: { binding: "bogus", referenced_assertions: [] }, signature: "AA==" }, pair.publicKey, { referencedAssertions: refs }).reason === "signer-payload-shape");
237
- check("verifyIdentity missing referencedAssertions opt returns referenced-assertions-required",
238
- cc.verifyIdentityAssertion(ia, pair.publicKey, { audit: false }).reason === "referenced-assertions-required");
239
- check("verifyIdentity referencedAssertions count mismatch returns count-mismatch",
240
- cc.verifyIdentityAssertion(ia, pair.publicKey, { referencedAssertions: [refs[0], { label: "b" }], audit: false }).reason === "referenced-assertions-count-mismatch");
241
-
242
- // x509 trust-resolution reason branches (self-asserted -> verified:false).
243
- var vNoChain = cc.verifyIdentityAssertion(ia, pair.publicKey, {
244
- referencedAssertions: refs, identityTrustAnchorsPem: "anchor-pem", audit: false,
245
- });
246
- check("verifyIdentity anchor but no chain -> verified:false no-cert-chain",
247
- vNoChain.valid === true && vNoChain.verified === false && vNoChain.reason === "no-cert-chain");
248
- var vBadAnchors = cc.verifyIdentityAssertion(ia, pair.publicKey, {
249
- referencedAssertions: refs, identityCertChainPem: "chain-pem", identityTrustAnchorsPem: "", audit: false,
250
- });
251
- check("verifyIdentity empty trust anchor -> verified:false bad-trust-anchors",
252
- vBadAnchors.verified === false && vBadAnchors.reason === "bad-trust-anchors");
253
- var vBadChain = cc.verifyIdentityAssertion(ia, pair.publicKey, {
254
- referencedAssertions: refs, identityCertChainPem: "not a pem", identityTrustAnchorsPem: "also not a pem", audit: false,
255
- });
256
- check("verifyIdentity unparseable chain cert -> verified:false bad-chain-cert",
257
- vBadChain.verified === false && vBadChain.reason === "bad-chain-cert");
258
-
259
- // ---- cacImplicitLabel() GB 45438-2025 gate ----
260
- var CAC_VALID = {
261
- providerName: "Example AI", providerCode: "91110000600037341A",
262
- contentId: "asset-2026-05-17-abc123", contentKind: "image",
263
- generatedAt: "2026-05-17T20:00:00Z",
264
- };
265
- function _cac(overrides) { return Object.assign({}, CAC_VALID, overrides); }
266
-
267
- var label = cc.cacImplicitLabel(CAC_VALID);
268
- check("cacImplicitLabel valid returns frozen AIGC block",
269
- Object.isFrozen(label) && label.aigcMarker === "AIGC" && label.providerCode === "91110000600037341A");
270
- check("cacImplicitLabel(null) rejected",
271
- (e = _err(function () { cc.cacImplicitLabel(null); })) && e.code === "cac-implicit-label/bad-opts");
272
- check("cacImplicitLabel missing providerName rejected",
273
- (e = _err(function () { cc.cacImplicitLabel(_cac({ providerName: undefined })); })) &&
274
- e.code === "cac-implicit-label/bad-provider-name");
275
- check("cacImplicitLabel oversize providerName rejected",
276
- (e = _err(function () { cc.cacImplicitLabel(_cac({ providerName: "a".repeat(257) })); })) &&
277
- e.code === "cac-implicit-label/oversize-provider-name");
278
- check("cacImplicitLabel bad providerCode rejected",
279
- (e = _err(function () { cc.cacImplicitLabel(_cac({ providerCode: "123" })); })) &&
280
- e.code === "cac-implicit-label/bad-provider-code");
281
- check("cacImplicitLabel illegal contentId rejected",
282
- (e = _err(function () { cc.cacImplicitLabel(_cac({ contentId: "bad id!" })); })) &&
283
- e.code === "cac-implicit-label/bad-content-id");
284
- check("cacImplicitLabel unknown contentKind rejected",
285
- (e = _err(function () { cc.cacImplicitLabel(_cac({ contentKind: "hologram" })); })) &&
286
- e.code === "cac-implicit-label/bad-content-kind");
287
- check("cacImplicitLabel non-ISO generatedAt rejected",
288
- (e = _err(function () { cc.cacImplicitLabel(_cac({ generatedAt: "yesterday" })); })) &&
289
- e.code === "cac-implicit-label/bad-generated-at");
290
-
291
- // ---- cacImplicitLabelRead() parser ----
292
- check("cacImplicitLabelRead object input",
293
- cc.cacImplicitLabelRead(Object.assign({ aigcMarker: "AIGC" }, CAC_VALID)).aigcMarker === "AIGC");
294
- check("cacImplicitLabelRead string input",
295
- cc.cacImplicitLabelRead(JSON.stringify(Object.assign({ aigcMarker: "AIGC" }, CAC_VALID))).contentKind === "image");
296
- check("cacImplicitLabelRead Buffer input",
297
- cc.cacImplicitLabelRead(Buffer.from(JSON.stringify(Object.assign({ aigcMarker: "AIGC" }, CAC_VALID)))).providerCode === "91110000600037341A");
298
- check("cacImplicitLabelRead malformed JSON string rejected",
299
- (e = _err(function () { cc.cacImplicitLabelRead("{not json"); })) && e.code === "cac-implicit-label/bad-json");
300
- check("cacImplicitLabelRead malformed JSON Buffer rejected",
301
- (e = _err(function () { cc.cacImplicitLabelRead(Buffer.from("{not json")); })) && e.code === "cac-implicit-label/bad-json");
302
- check("cacImplicitLabelRead numeric input rejected",
303
- (e = _err(function () { cc.cacImplicitLabelRead(42); })) && e.code === "cac-implicit-label/bad-input");
304
- check("cacImplicitLabelRead missing AIGC marker rejected",
305
- (e = _err(function () { cc.cacImplicitLabelRead({ providerName: "x" }); })) &&
306
- e.code === "cac-implicit-label/missing-aigc-marker");
307
- check("cacImplicitLabelRead re-applies field gate",
308
- (e = _err(function () { cc.cacImplicitLabelRead(Object.assign({ aigcMarker: "AIGC" }, CAC_VALID, { providerCode: "BAD" })); })) &&
309
- e.code === "cac-implicit-label/bad-provider-code");
310
- }
311
-
312
- module.exports = { run: run };
313
-
314
- if (require.main === module) {
315
- run().then(
316
- function () { console.log("[content-credentials-coverage] OK — " + helpers.getChecks() + " checks passed"); },
317
- function (e) { console.error("FAIL:", (e && e.stack) || e); process.exit(1); }
318
- );
319
- }