@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
@@ -0,0 +1,487 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) blamejs contributors
3
+ "use strict";
4
+ /**
5
+ * Live test of b.dsr.dbTicketStore against the docker Postgres container.
6
+ *
7
+ * The ticket store composes every statement through b.sql (`?`
8
+ * placeholders + double-quoted identifiers) and drives an operator-
9
+ * supplied b.db-shaped handle ({ runSql, prepare }); layer-0 only ever
10
+ * runs it on node:sqlite. This test wires the SAME store over a
11
+ * docker-exec psql shim shaped like that handle, so every statement the
12
+ * store emits PREPARES and RUNS on real Postgres:
13
+ *
14
+ * - insert + get: the sealed-at-rest row (payload / subject_* AEAD-
15
+ * sealed, bound to the ticket id) physically lands on Postgres with
16
+ * the derived subject_email_hash / subject_id_hash lookup columns
17
+ * populated, and get() unseals the round-trip.
18
+ * - list({ subject }): an indexable subject key (email / subjectId)
19
+ * matches ONLY its own tickets via the dual-hash whereIn (active
20
+ * keyed-MAC + legacy digest candidates).
21
+ * - FAIL-CLOSED subject filter: a subject with NO indexable key
22
+ * (phone-only, or empty) matches ZERO tickets — never the whole
23
+ * table. The same predicate guards a DESTRUCTIVE path: the
24
+ * erasure-completion purge lists the subject's tickets and DELETES
25
+ * them, so a fail-open filter here would delete every OTHER
26
+ * subject's tickets too.
27
+ * - erasure-completion purge: completing an erasure removes exactly
28
+ * the subject's own prior tickets (the erasure ticket itself and
29
+ * other subjects' tickets survive), and an erasure whose subject has
30
+ * no indexable key purges NOTHING.
31
+ * - purgeExpired: the terminal-status whereIn sweep removes only the
32
+ * ticket whose retentionUntil has passed.
33
+ *
34
+ * Handle-boundary notes (operator-adapter concerns, mirroring
35
+ * db-layer-postgres.test.js):
36
+ * - `?` placeholders fold into the SQL as quoted literals at the
37
+ * handle boundary (psql has no bind protocol over stdin; every value
38
+ * is operator-controlled).
39
+ * - Postgres honors the double-quoted identifiers b.sql emits.
40
+ * - the store's schema probe is `PRAGMA table_info(...)` (a
41
+ * SQLite-ism); the handle answers it from information_schema.columns,
42
+ * as a real operator adapter over Postgres must.
43
+ * - the physical table is operator-provisioned with BIGINT ms-epoch
44
+ * columns: the store's convenience DDL types epochs as INTEGER,
45
+ * which is 64-bit on SQLite but 32 bits on Postgres. The store's own
46
+ * CREATE TABLE IF NOT EXISTS then no-ops against the existing table.
47
+ *
48
+ * RUN: node scripts/test-integration.js --skip-service-check dsr-cluster-pg
49
+ */
50
+
51
+ var execFileSync = require("node:child_process").execFileSync;
52
+ var fs = require("node:fs");
53
+ var os = require("node:os");
54
+ var path = require("node:path");
55
+ var helpers = require("../helpers");
56
+ var check = helpers.check;
57
+ var services = require("../helpers/services");
58
+ var b = require("../../");
59
+
60
+ var CONTAINER = "blamejs-test-postgres";
61
+ var NULL_SENTINEL = "__BJNULL__";
62
+ var TABLE = "bjdsr_pg_tickets";
63
+
64
+ // Soft assertion: records pass/fail without throwing so every section's
65
+ // findings are collected even when an earlier check fails. All findings
66
+ // are replayed through the hard `check` at the end of run() so the file
67
+ // still FAILS when any contract is unmet.
68
+ var _findings = [];
69
+ function softCheck(label, condition) {
70
+ _findings.push({ label: label, ok: !!condition });
71
+ console.log((condition ? " ok " : " FAIL ") + label);
72
+ }
73
+
74
+ // ---- shared synchronous docker-exec psql ----
75
+ // Field separator is a literal TAB embedded in the -P argument (built in
76
+ // Node where the byte is exact); -P flags print no confirmation line.
77
+ // 2>&1 merges the ERROR lines psql writes to stderr (ON_ERROR_STOP=0 ->
78
+ // exit 0, errors only on stderr).
79
+ var TAB = "\t";
80
+ var _PSQL_BASE =
81
+ "psql -U blamejs -d blamejs_test -v ON_ERROR_STOP=0 " +
82
+ "-P footer=off -P null=" + NULL_SENTINEL + " -P 'fieldsep=" + TAB + "'";
83
+
84
+ function _psqlRaw(sql) {
85
+ return execFileSync(
86
+ "docker",
87
+ ["exec", "-i", CONTAINER, "sh", "-c", _PSQL_BASE + " -At 2>&1"],
88
+ { input: sql + "\n", stdio: ["pipe", "pipe", "pipe"], maxBuffer: 64 * 1024 * 1024 }
89
+ ).toString("utf8");
90
+ }
91
+
92
+ // One-shot for setup / teardown; throws on any SQL error.
93
+ function _psql(sql) {
94
+ var out = _psqlRaw(sql);
95
+ if (/^ERROR:/m.test(out)) {
96
+ throw new Error("psql setup failed for [" + sql + "]:\n" + out);
97
+ }
98
+ return out;
99
+ }
100
+
101
+ // Header-bearing variant (-A keeps the column-name row) for reads.
102
+ function _psqlHeader(sql) {
103
+ return execFileSync(
104
+ "docker",
105
+ ["exec", "-i", CONTAINER, "sh", "-c", _PSQL_BASE + " -A 2>&1"],
106
+ { input: sql + "\n", stdio: ["pipe", "pipe", "pipe"], maxBuffer: 64 * 1024 * 1024 }
107
+ ).toString("utf8");
108
+ }
109
+
110
+ // Inline `?` binding. Every value the store binds is operator-controlled
111
+ // (ids / sealed cells / hashes / numbers / null).
112
+ function _bindQ(sql, params) {
113
+ params = params || [];
114
+ var i = 0;
115
+ return sql.replace(/\?/g, function () {
116
+ if (i >= params.length) {
117
+ throw new Error("placeholder/param count mismatch in: " + sql);
118
+ }
119
+ var v = params[i++];
120
+ if (v === null || v === undefined) return "NULL";
121
+ if (typeof v === "number") return String(v);
122
+ if (typeof v === "boolean") return v ? "TRUE" : "FALSE";
123
+ return "'" + String(v).replace(/'/g, "''") + "'";
124
+ });
125
+ }
126
+
127
+ var _CMD_TAG_RE = /^(INSERT|UPDATE|DELETE|MERGE|SELECT|COPY|MOVE)\b(?:\s+\d+)*\s*$/;
128
+
129
+ function _parseError(out) {
130
+ var lines = out.split(/\r?\n/);
131
+ for (var i = 0; i < lines.length; i++) {
132
+ var em = /^ERROR:\s+([0-9A-Za-z]{5}):\s*(.*)$/.exec(lines[i]) ||
133
+ /^ERROR:\s+(.*)$/.exec(lines[i]);
134
+ if (em) {
135
+ var err = new Error("Postgres error: " + lines[i]);
136
+ if (em.length === 3) err.code = em[1];
137
+ return err;
138
+ }
139
+ }
140
+ return null;
141
+ }
142
+
143
+ function _rowsFromHeaderBlock(out) {
144
+ var err = _parseError(out);
145
+ if (err) throw err;
146
+ var lines = out.split(/\r?\n/);
147
+ var data = [];
148
+ for (var i = 0; i < lines.length; i++) {
149
+ var ln = lines[i];
150
+ if (ln === "") continue;
151
+ if (_CMD_TAG_RE.test(ln) && ln.indexOf("\t") === -1) continue;
152
+ if (/^(BEGIN|COMMIT|ROLLBACK|SET|CREATE|DROP|ALTER)\b/.test(ln) &&
153
+ ln.indexOf("\t") === -1) continue;
154
+ data.push(ln);
155
+ }
156
+ if (data.length === 0) return [];
157
+ var headers = data[0].split("\t");
158
+ var rows = [];
159
+ for (var r = 1; r < data.length; r++) {
160
+ var cells = data[r].split("\t");
161
+ var row = {};
162
+ for (var c = 0; c < headers.length; c++) {
163
+ var cell = cells[c];
164
+ row[headers[c]] = (cell === NULL_SENTINEL || cell === undefined) ? null : cell;
165
+ }
166
+ rows.push(row);
167
+ }
168
+ return rows;
169
+ }
170
+
171
+ function _affectedFromBlock(out) {
172
+ var err = _parseError(out);
173
+ if (err) throw err;
174
+ var lines = out.split(/\r?\n/);
175
+ var affected = 0;
176
+ for (var i = 0; i < lines.length; i++) {
177
+ if (_CMD_TAG_RE.test(lines[i])) {
178
+ var nums = lines[i].trim().split(/\s+/).slice(1).map(Number);
179
+ if (nums.length) affected = nums[nums.length - 1];
180
+ }
181
+ }
182
+ return affected;
183
+ }
184
+
185
+ function _isWrite(sql) {
186
+ return /^\s*(INSERT|UPDATE|DELETE|REPLACE|MERGE)\b/i.test(sql);
187
+ }
188
+
189
+ // Out-of-band raw read (bypasses the store's unseal) for at-rest asserts.
190
+ function _selectDirect(sqlText) {
191
+ return _rowsFromHeaderBlock(_psqlHeader(sqlText));
192
+ }
193
+
194
+ // ---- b.db-shaped handle ({ runSql, prepare }) over real Postgres ----
195
+ function _makePgDbHandle() {
196
+ return {
197
+ prepare: function (sql) {
198
+ // The store's schema reconcile probes columns with the SQLite
199
+ // `PRAGMA table_info(...)`; a Postgres operator adapter answers the
200
+ // same question from information_schema.columns (one row per
201
+ // column, named `name` like the PRAGMA's output).
202
+ var pragma = /^PRAGMA\s+table_info\(\s*"?([A-Za-z0-9_]+)"?\s*\)\s*$/i.exec(sql);
203
+ if (pragma) {
204
+ sql = "SELECT column_name AS name FROM information_schema.columns " +
205
+ "WHERE table_schema = 'public' AND table_name = '" + pragma[1] + "'";
206
+ }
207
+ return {
208
+ get: function () {
209
+ var params = Array.prototype.slice.call(arguments);
210
+ var rows = _rowsFromHeaderBlock(_psqlHeader(_bindQ(sql, params)));
211
+ return rows.length ? rows[0] : undefined;
212
+ },
213
+ all: function () {
214
+ var params = Array.prototype.slice.call(arguments);
215
+ return _rowsFromHeaderBlock(_psqlHeader(_bindQ(sql, params)));
216
+ },
217
+ run: function () {
218
+ var params = Array.prototype.slice.call(arguments);
219
+ var out = _psqlRaw(_bindQ(sql, params));
220
+ var changes = _isWrite(sql) ? _affectedFromBlock(out) : (function () {
221
+ var e = _parseError(out); if (e) throw e; return 0;
222
+ })();
223
+ return { changes: changes, lastInsertRowid: 0 };
224
+ },
225
+ };
226
+ },
227
+ runSql: function (sql) {
228
+ var out = _psqlRaw(sql);
229
+ var e = _parseError(out);
230
+ if (e) throw e;
231
+ return out;
232
+ },
233
+ };
234
+ }
235
+
236
+ function _dropAll() {
237
+ _psql('DROP TABLE IF EXISTS "' + TABLE + '" CASCADE;');
238
+ }
239
+
240
+ // Operator-provisioned physical table: the canonical dbTicketStore column
241
+ // set, with the ms-epoch columns typed BIGINT (Postgres INTEGER is 32-bit
242
+ // and cannot hold a Date.now() value; the store's convenience DDL sizes
243
+ // INTEGER for SQLite where it is 64-bit). The store's own CREATE TABLE IF
244
+ // NOT EXISTS no-ops against this table and its column reconcile finds
245
+ // every column present.
246
+ function _provision() {
247
+ _psql('CREATE TABLE "' + TABLE + '" (' +
248
+ '"id" TEXT PRIMARY KEY, ' +
249
+ '"type" TEXT NOT NULL, ' +
250
+ '"status" TEXT NOT NULL, ' +
251
+ '"subject_id" TEXT, ' +
252
+ '"subject_email" TEXT, ' +
253
+ '"subject_phone" TEXT, ' +
254
+ '"subject_email_hash" TEXT, ' +
255
+ '"subject_id_hash" TEXT, ' +
256
+ '"submitted_at" BIGINT NOT NULL, ' +
257
+ '"deadline_at" BIGINT NOT NULL, ' +
258
+ '"processed_at" BIGINT, ' +
259
+ '"verification_level" TEXT, ' +
260
+ '"posture" TEXT, ' +
261
+ '"payload" TEXT NOT NULL);');
262
+ }
263
+
264
+ // Run one stage; a thrown error becomes a single FAILED finding so an
265
+ // unexpected Postgres error in one stage doesn't hide the others.
266
+ async function _section(label, fn) {
267
+ try {
268
+ await fn();
269
+ } catch (e) {
270
+ softCheck(label + "(pg): stage completed without an unexpected error " +
271
+ "— DETAIL: " + (((e && e.message) || String(e)).split(/\r?\n/)[0]), false);
272
+ }
273
+ }
274
+
275
+ async function run() {
276
+ var pg = await services.requireService("postgres");
277
+ if (!pg.ok) throw new Error("postgres unreachable: " + pg.reason);
278
+
279
+ _dropAll();
280
+ _provision();
281
+
282
+ // Vault + local-db bring-up: the store seals subject PII + payload via
283
+ // b.cryptoField only when a vault is initialized, and that sealed mode
284
+ // is exactly what the dual-hash lookup + fail-closed filter guard.
285
+ var tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "blamejs-dsr-pg-"));
286
+ await helpers.setupTestDb(tmpDir);
287
+
288
+ var handle = _makePgDbHandle();
289
+
290
+ var SUBJECTS = {
291
+ "alice@example.com": { subjectId: "u-alice", email: "alice@example.com", phone: "+15550001111" },
292
+ "bob@example.com": { subjectId: "u-bob", email: "bob@example.com", phone: "+15550002222" },
293
+ };
294
+
295
+ var store, dsr;
296
+ var t1, t2, tb, erasure, ghostErasure;
297
+
298
+ try {
299
+ // Constructing the store runs its ensureSchema against real Postgres
300
+ // (CREATE TABLE IF NOT EXISTS no-op, information_schema column probe,
301
+ // CREATE INDEX IF NOT EXISTS on the hash + status columns).
302
+ store = b.dsr.dbTicketStore({ db: handle, table: TABLE });
303
+ softCheck("store(pg): dbTicketStore construction ran ensureSchema on real Postgres", true);
304
+
305
+ dsr = b.dsr.create({
306
+ ticketStore: store,
307
+ posture: "gdpr",
308
+ identityResolver: async function (input) {
309
+ if (input && input.email && SUBJECTS[input.email]) return SUBJECTS[input.email];
310
+ if (input && input.phone === "+15550003333") {
311
+ // A subject the operator can only identify by phone — no email,
312
+ // no subjectId, so the ticket store has NO indexable key for it.
313
+ return { phone: "+15550003333" };
314
+ }
315
+ return null;
316
+ },
317
+ sources: [{
318
+ name: "users",
319
+ query: async function () { return [{ id: 1 }]; },
320
+ erase: async function () { return { deletedIds: [1] }; },
321
+ }],
322
+ });
323
+
324
+ await _section("sealed-insert", async function () {
325
+ t1 = await dsr.submit({
326
+ type: "access",
327
+ subject: { email: "alice@example.com" },
328
+ reason: "export request one",
329
+ });
330
+ var raw = _selectDirect(
331
+ 'SELECT "subject_email", "subject_phone", "subject_email_hash", ' +
332
+ '"subject_id_hash", "payload" FROM "' + TABLE + "\" WHERE \"id\" = '" + t1.id + "';");
333
+ softCheck("sealed-insert(pg): the ticket row physically landed on Postgres",
334
+ raw.length === 1);
335
+ softCheck("sealed-insert(pg): subject_email is sealed at rest (not plaintext)",
336
+ raw.length === 1 && typeof raw[0].subject_email === "string" &&
337
+ raw[0].subject_email.indexOf("alice@example.com") === -1);
338
+ softCheck("sealed-insert(pg): payload is sealed at rest (no plaintext email leak)",
339
+ raw.length === 1 && typeof raw[0].payload === "string" &&
340
+ raw[0].payload.indexOf("alice@example.com") === -1);
341
+ softCheck("sealed-insert(pg): derived subject_email_hash populated for lookup",
342
+ raw.length === 1 && typeof raw[0].subject_email_hash === "string" &&
343
+ raw[0].subject_email_hash.length > 0);
344
+ softCheck("sealed-insert(pg): derived subject_id_hash populated for lookup",
345
+ raw.length === 1 && typeof raw[0].subject_id_hash === "string" &&
346
+ raw[0].subject_id_hash.length > 0);
347
+
348
+ var got = await store.get(t1.id);
349
+ softCheck("sealed-insert(pg): get() unseals the payload back to cleartext",
350
+ got !== null && got.subject && got.subject.email === "alice@example.com" &&
351
+ got.type === "access" && got.status === "pending");
352
+ softCheck("sealed-insert(pg): get() of an unknown id returns null",
353
+ (await store.get("DSR-0000000-NOPE")) === null);
354
+ });
355
+
356
+ await _section("list-by-subject", async function () {
357
+ t2 = await dsr.submit({
358
+ type: "access",
359
+ subject: { email: "alice@example.com" },
360
+ reason: "export request two",
361
+ });
362
+ tb = await dsr.submit({
363
+ type: "access",
364
+ subject: { email: "bob@example.com" },
365
+ reason: "bob export",
366
+ });
367
+
368
+ var aliceList = await store.list({ subject: { email: "alice@example.com" } });
369
+ var aliceIds = aliceList.map(function (t) { return t.id; }).sort();
370
+ softCheck("list(pg): alice's email matches exactly her two tickets via the " +
371
+ "dual-hash whereIn (not bob's)",
372
+ aliceList.length === 2 &&
373
+ JSON.stringify(aliceIds) === JSON.stringify([t1.id, t2.id].sort()));
374
+
375
+ var bobList = await store.list({ subject: { subjectId: "u-bob" } });
376
+ softCheck("list(pg): bob's subjectId matches exactly his ticket via subject_id_hash",
377
+ bobList.length === 1 && bobList[0].id === tb.id);
378
+ });
379
+
380
+ await _section("fail-closed-filter", async function () {
381
+ var all = await store.list({});
382
+ softCheck("fail-closed(pg): baseline — a no-subject list sees every ticket (3)",
383
+ all.length === 3);
384
+
385
+ // Alice's phone IS on her tickets' sealed payloads, but phone is not
386
+ // an indexable subject key — the filter must produce a
387
+ // matches-nothing predicate, NOT degrade to a full-table scan.
388
+ var phoneOnly = await store.list({ subject: { phone: "+15550001111" } });
389
+ softCheck("fail-closed(pg): a phone-only subject matches ZERO tickets on real " +
390
+ "Postgres (never all " + all.length + ")",
391
+ phoneOnly.length === 0);
392
+
393
+ var emptySubject = await store.list({ subject: {} });
394
+ softCheck("fail-closed(pg): an empty subject matches ZERO tickets (never all)",
395
+ emptySubject.length === 0);
396
+ });
397
+
398
+ await _section("erasure-purge", async function () {
399
+ erasure = await dsr.submit({
400
+ type: "erasure",
401
+ subject: { email: "alice@example.com" },
402
+ reason: "right to erasure",
403
+ verificationLevel: "secondary",
404
+ });
405
+ var processed = await dsr.process(erasure.id,
406
+ { actor: "compliance@example.com", verificationLevel: "secondary" });
407
+ softCheck("erasure(pg): the erasure ticket completed on real Postgres",
408
+ processed && processed.status === "completed");
409
+
410
+ softCheck("erasure(pg): alice's prior ticket one was purged",
411
+ (await store.get(t1.id)) === null);
412
+ softCheck("erasure(pg): alice's prior ticket two was purged",
413
+ (await store.get(t2.id)) === null);
414
+ softCheck("erasure(pg): the erasure ticket itself survives (audit/receipt trail)",
415
+ (await store.get(erasure.id)) !== null);
416
+ softCheck("erasure(pg): bob's ticket is untouched by alice's erasure purge",
417
+ (await store.get(tb.id)) !== null);
418
+ });
419
+
420
+ await _section("erasure-no-key-purges-nothing", async function () {
421
+ // The DESTRUCTIVE fail-closed proof: an erasure whose subject has NO
422
+ // indexable key must purge NOTHING. A fail-open subject filter would
423
+ // list every row here and delete every other subject's tickets.
424
+ ghostErasure = await dsr.submit({
425
+ type: "erasure",
426
+ subject: { phone: "+15550003333" },
427
+ reason: "erasure for a subject with no indexable key",
428
+ verificationLevel: "secondary",
429
+ });
430
+ var done = await dsr.process(ghostErasure.id, { verificationLevel: "secondary" });
431
+ softCheck("erasure-no-key(pg): the no-indexable-key erasure still completes",
432
+ done && done.status === "completed");
433
+ softCheck("erasure-no-key(pg): bob's ticket SURVIVES the no-key purge " +
434
+ "(a fail-open filter would have deleted it)",
435
+ (await store.get(tb.id)) !== null);
436
+ softCheck("erasure-no-key(pg): alice's completed erasure ticket SURVIVES the no-key purge",
437
+ (await store.get(erasure.id)) !== null);
438
+ softCheck("erasure-no-key(pg): the no-key erasure ticket itself survives",
439
+ (await store.get(ghostErasure.id)) !== null);
440
+ });
441
+
442
+ await _section("purge-expired", async function () {
443
+ var now = Date.now();
444
+ await store.insert({
445
+ id: "DSR-0000000-RETIRED1",
446
+ type: "access",
447
+ status: "completed",
448
+ subject: { subjectId: "u-old", email: "old@example.com" },
449
+ submittedAt: now - b.constants.TIME.days(60),
450
+ deadlineAt: now - b.constants.TIME.days(30),
451
+ processedAt: now - b.constants.TIME.days(45),
452
+ verificationLevel: "primary",
453
+ posture: "gdpr",
454
+ retentionUntil: now - b.constants.TIME.days(1),
455
+ });
456
+ var purged = await store.purgeExpired();
457
+ softCheck("purge-expired(pg): the aged terminal ticket was purged (exactly 1)",
458
+ purged === 1);
459
+ softCheck("purge-expired(pg): the aged ticket row is gone",
460
+ (await store.get("DSR-0000000-RETIRED1")) === null);
461
+ softCheck("purge-expired(pg): a completed ticket inside its retention floor survives",
462
+ (await store.get(erasure.id)) !== null);
463
+ });
464
+ } finally {
465
+ try { await helpers.teardownTestDb(tmpDir); } catch (_e) {}
466
+ _dropAll();
467
+ }
468
+
469
+ // Replay every recorded finding through the hard `check` so the file
470
+ // FAILS (and the runner reports it) when any contract is unmet.
471
+ var failures = _findings.filter(function (f) { return !f.ok; });
472
+ console.log("");
473
+ console.log("[dsr-cluster-pg] " + (_findings.length - failures.length) + "/" +
474
+ _findings.length + " checks ok; " + failures.length + " failing");
475
+ for (var i = 0; i < _findings.length; i++) {
476
+ check(_findings[i].label, _findings[i].ok);
477
+ }
478
+ }
479
+
480
+ module.exports = { run: run };
481
+
482
+ if (require.main === module) {
483
+ run().then(
484
+ function () { console.log("OK — " + helpers.getChecks() + " checks passed"); process.exit(0); },
485
+ function (e) { console.error("FAIL:", e.stack || e); process.exit(1); }
486
+ );
487
+ }