@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
@@ -619,9 +619,500 @@ async function testDbStoreSealRoundTripWithVault() {
619
619
  }
620
620
  }
621
621
 
622
+ function testResealMigrateInMemoryStoreUnsupported() {
623
+ // Operators on the in-memory store can't bulk-reseal — the helper
624
+ // reports the reason instead of throwing so a boot script stays quiet.
625
+ var store = b.middleware.idempotencyKey.memoryStore();
626
+ var info = b.middleware.idempotencyKey.resealMigrate(store);
627
+ check("resealMigrate: in-memory store reports store-does-not-support-reseal",
628
+ info.migrated === 0 && info.skipped === 0 &&
629
+ info.reason === "store-does-not-support-reseal");
630
+ }
631
+
632
+ function testResealMigrateSealDisabled() {
633
+ // A dbStore with sealing off (vault not wired) can't reseal — the
634
+ // helper delegates and surfaces the aad-or-seal-disabled reason.
635
+ var db = _mockDb();
636
+ var store = b.middleware.idempotencyKey.dbStore({
637
+ db: db, tableName: "_t_reseal_noseal", hashKeys: false, seal: false,
638
+ });
639
+ var info = b.middleware.idempotencyKey.resealMigrate(store);
640
+ check("resealMigrate: seal-disabled dbStore reports aad-or-seal-disabled",
641
+ info.migrated === 0 && info.skipped === 0 && info.reason === "aad-or-seal-disabled");
642
+ }
643
+
644
+ async function testResealMigrateAlreadyAadSealed() {
645
+ // With vault + AAD sealing on, a row written by the store is already
646
+ // in the vault.aad: envelope. resealMigrate walks the table, detects
647
+ // it's already migrated, and skips it — succeeding with reason:null.
648
+ var dataDir = nodeFs.mkdtempSync(nodePath.join(nodeOs.tmpdir(), "idemp-reseal-"));
649
+ try {
650
+ if (typeof vault._resetForTest === "function") vault._resetForTest();
651
+ cryptoField.clearForTest();
652
+ await vault.init({ dataDir: dataDir, mode: "plaintext" });
653
+
654
+ var db = _mockDb();
655
+ var store = b.middleware.idempotencyKey.dbStore({
656
+ db: db, tableName: "_t_reseal_aad", hashKeys: false, seal: true, aad: true,
657
+ });
658
+ check("resealMigrate: seal + aad enabled when vault ready",
659
+ store._sealEnabled === true && store._aadOn === true);
660
+
661
+ store.set("k1", {
662
+ fingerprint: "fp",
663
+ statusCode: 200,
664
+ headers: { "x-a": "1" },
665
+ body: Buffer.from('{"ok":true}').toString("base64"),
666
+ }, 60000);
667
+ check("resealMigrate: fresh row is written in the vault.aad: envelope",
668
+ typeof db._data.get("k1").headers === "string" &&
669
+ db._data.get("k1").headers.indexOf("vault.aad:") === 0);
670
+
671
+ var info = b.middleware.idempotencyKey.resealMigrate(store);
672
+ check("resealMigrate: already-AAD row is skipped, migration succeeds",
673
+ info.migrated === 0 && info.skipped === 1 && info.reason === null);
674
+
675
+ // The row still round-trips after the walk (no corruption).
676
+ var v = store.get("k1");
677
+ check("resealMigrate: row still readable after the walk",
678
+ v && v.fingerprint === "fp" && v.headers["x-a"] === "1");
679
+ } finally {
680
+ if (typeof vault._resetForTest === "function") vault._resetForTest();
681
+ cryptoField.clearForTest();
682
+ try { nodeFs.rmSync(dataDir, { recursive: true, force: true }); } catch (_e) { /* best-effort */ }
683
+ }
684
+ }
685
+
686
+ // ---- config-time validation throws (entry-point tier) ----
687
+
688
+ function testMemoryStoreBadMaxEntries() {
689
+ function expectCode(label, fn, code) {
690
+ var threw = null;
691
+ try { fn(); } catch (e) { threw = e; }
692
+ check(label, threw && (threw.code || "").indexOf(code) !== -1);
693
+ }
694
+ expectCode("memoryStore: negative maxEntries refused",
695
+ function () { b.middleware.idempotencyKey.memoryStore({ maxEntries: -1 }); },
696
+ "idempotency/bad-max-entries");
697
+ expectCode("memoryStore: non-integer maxEntries refused",
698
+ function () { b.middleware.idempotencyKey.memoryStore({ maxEntries: 1.5 }); },
699
+ "idempotency/bad-max-entries");
700
+ expectCode("memoryStore: Infinity maxEntries refused",
701
+ function () { b.middleware.idempotencyKey.memoryStore({ maxEntries: Infinity }); },
702
+ "idempotency/bad-max-entries");
703
+ expectCode("memoryStore: string maxEntries refused",
704
+ function () { b.middleware.idempotencyKey.memoryStore({ maxEntries: "10" }); },
705
+ "idempotency/bad-max-entries");
706
+ }
707
+
708
+ function testCreateBadNumericOpts() {
709
+ function expectCode(label, fn, code) {
710
+ var threw = null;
711
+ try { fn(); } catch (e) { threw = e; }
712
+ check(label, threw && (threw.code || "").indexOf(code) !== -1);
713
+ }
714
+ var store = b.middleware.idempotencyKey.memoryStore();
715
+ expectCode("create: negative ttlMs refused",
716
+ function () { b.middleware.idempotencyKey({ store: store, ttlMs: -5 }); },
717
+ "idempotency/bad-ttl");
718
+ expectCode("create: Infinity ttlMs refused",
719
+ function () { b.middleware.idempotencyKey({ store: store, ttlMs: Infinity }); },
720
+ "idempotency/bad-ttl");
721
+ expectCode("create: non-integer maxBodyBytes refused",
722
+ function () { b.middleware.idempotencyKey({ store: store, maxBodyBytes: 1.2 }); },
723
+ "idempotency/bad-max-body");
724
+ expectCode("create: bad scopeFn type refused",
725
+ function () { b.middleware.idempotencyKey({ store: store, scopeFn: "nope" }); },
726
+ "idempotency/bad-scope-fn");
727
+ expectCode("create: unknown bodyFingerprintFallback refused",
728
+ function () { b.middleware.idempotencyKey({ store: store, bodyFingerprintFallback: "sometimes" }); },
729
+ "idempotency/bad-body-fingerprint-fallback");
730
+ }
731
+
732
+ // ---- key-shape adversarial branches ----
733
+
734
+ function testKeyTooLong() {
735
+ var store = b.middleware.idempotencyKey.memoryStore();
736
+ var mw = b.middleware.idempotencyKey({ store: store });
737
+ var longKey = new Array(257).join("a"); // 256 chars, > KEY_MAX_LEN (255)
738
+ var req = _mockReq("POST", "/x", longKey);
739
+ req._rawBody = Buffer.from("{}");
740
+ var res = _mockRes();
741
+ var nextCalled = false;
742
+ mw(req, res, function () { nextCalled = true; });
743
+ check("bad-key over-length → 400, no next()",
744
+ !nextCalled && res._statusCode() === 400);
745
+ var body = JSON.parse(res._getBody());
746
+ check("bad-key over-length problem type",
747
+ /\/idempotency\/bad-key$/.test(body.type));
748
+ }
749
+
750
+ function testArrayKeyHeaderUsesFirst() {
751
+ // A repeated Idempotency-Key header arrives as an array; the
752
+ // middleware uses the first element as the cache key.
753
+ var store = b.middleware.idempotencyKey.memoryStore();
754
+ var mw = b.middleware.idempotencyKey({ store: store, ttlMs: 60000 });
755
+
756
+ var req1 = _mockReq("POST", "/x", "placeholder");
757
+ req1.headers["idempotency-key"] = ["arr-key-1", "arr-key-2"];
758
+ req1._rawBody = Buffer.from('{"a":1}');
759
+ var res1 = _mockRes();
760
+ var next1 = false;
761
+ mw(req1, res1, function () { next1 = true; });
762
+ check("array key: first request is a miss (handler runs)", next1 === true);
763
+ res1.statusCode = 201;
764
+ res1.end("created");
765
+
766
+ // A single-value header equal to the FIRST array element must replay
767
+ // the cached response — proving key[0] was the slot key.
768
+ var req2 = _mockReq("POST", "/x", "arr-key-1");
769
+ req2._rawBody = Buffer.from('{"a":1}');
770
+ var res2 = _mockRes();
771
+ var next2 = false;
772
+ mw(req2, res2, function () { next2 = true; });
773
+ check("array key: replay keyed on first element",
774
+ !next2 && res2._statusCode() === 201 && res2._getBody() === "created");
775
+ }
776
+
777
+ // ---- custom methods / headerName ----
778
+
779
+ function testCustomMethodsSkipsUnlisted() {
780
+ var store = b.middleware.idempotencyKey.memoryStore();
781
+ var mw = b.middleware.idempotencyKey({ store: store, methods: ["post"] });
782
+ // PUT is NOT in the operator-narrowed method set → pass-through.
783
+ var req = _mockReq("PUT", "/x", "k-put");
784
+ req._rawBody = Buffer.from("{}");
785
+ var res = _mockRes();
786
+ var nextCalled = false;
787
+ mw(req, res, function () { nextCalled = true; });
788
+ check("custom methods: PUT not listed → pass-through next()", nextCalled === true);
789
+ check("custom methods: nothing cached for unlisted method", store._size() === 0);
790
+ }
791
+
792
+ function testCustomHeaderName() {
793
+ var store = b.middleware.idempotencyKey.memoryStore();
794
+ var mw = b.middleware.idempotencyKey({ store: store, headerName: "X-Idem", ttlMs: 60000 });
795
+
796
+ var req1 = _mockReq("POST", "/x");
797
+ req1.headers["x-idem"] = "custom-hdr-1";
798
+ req1._rawBody = Buffer.from('{"a":1}');
799
+ var res1 = _mockRes();
800
+ var next1 = false;
801
+ mw(req1, res1, function () { next1 = true; });
802
+ check("custom headerName: read from operator header (miss)", next1 === true);
803
+ res1.statusCode = 200;
804
+ res1.end("via-custom-header");
805
+
806
+ var req2 = _mockReq("POST", "/x");
807
+ req2.headers["x-idem"] = "custom-hdr-1";
808
+ req2._rawBody = Buffer.from('{"a":1}');
809
+ var res2 = _mockRes();
810
+ var next2 = false;
811
+ mw(req2, res2, function () { next2 = true; });
812
+ check("custom headerName: replays on the operator header",
813
+ !next2 && res2._getBody() === "via-custom-header");
814
+ }
815
+
816
+ // ---- bodyFingerprintFallback branches (real middleware run) ----
817
+
818
+ function testDenyFallbackRefusesMissingBody() {
819
+ // Default fallback is "deny": a body-bearing POST that arrives with
820
+ // neither a parsed body nor a raw-body buffer is refused with HTTP
821
+ // 400 idempotency/missing-body-fingerprint (draft §4.3 protection —
822
+ // silent method+path degrade would false-replay different bodies).
823
+ var store = b.middleware.idempotencyKey.memoryStore();
824
+ var mw = b.middleware.idempotencyKey({ store: store });
825
+ var req = _mockReq("POST", "/pay", "k-nobody"); // no body, no _rawBody
826
+ var res = _mockRes();
827
+ var nextCalled = false;
828
+ mw(req, res, function () { nextCalled = true; });
829
+ check("deny fallback: missing body → 400, no next()",
830
+ !nextCalled && res._statusCode() === 400);
831
+ var body = JSON.parse(res._getBody());
832
+ check("deny fallback: missing-body-fingerprint problem type",
833
+ /\/idempotency\/missing-body-fingerprint$/.test(body.type));
834
+ check("deny fallback: nothing cached", store._size() === 0);
835
+ }
836
+
837
+ function testMethodPathOnlyFallbackAllows() {
838
+ // Operator opts into the pre-0.9.58 behavior: a bodyless POST is
839
+ // allowed through (fingerprint degrades to method+path), and a
840
+ // subsequent identical request replays.
841
+ var store = b.middleware.idempotencyKey.memoryStore();
842
+ var mw = b.middleware.idempotencyKey({
843
+ store: store, ttlMs: 60000, bodyFingerprintFallback: "method-path-only",
844
+ });
845
+ var req1 = _mockReq("POST", "/ping", "k-mpo");
846
+ var res1 = _mockRes();
847
+ var next1 = false;
848
+ mw(req1, res1, function () { next1 = true; });
849
+ check("method-path-only: bodyless POST allowed through (miss)", next1 === true);
850
+ res1.statusCode = 202;
851
+ res1.end("accepted");
852
+
853
+ var req2 = _mockReq("POST", "/ping", "k-mpo");
854
+ var res2 = _mockRes();
855
+ var next2 = false;
856
+ mw(req2, res2, function () { next2 = true; });
857
+ check("method-path-only: identical bodyless POST replays",
858
+ !next2 && res2._statusCode() === 202 && res2._getBody() === "accepted");
859
+ }
860
+
861
+ // ---- default (non-hook) body extraction branches ----
862
+
863
+ function testObjectBodyDefaultPath() {
864
+ // No bodyFingerprint hook: an already-parsed object body is
865
+ // JSON-stringified for a stable fingerprint.
866
+ var store = b.middleware.idempotencyKey.memoryStore();
867
+ var mw = b.middleware.idempotencyKey({ store: store, ttlMs: 60000 });
868
+
869
+ var req1 = _mockReq("POST", "/o", "k-obj", { amount: 100 });
870
+ var res1 = _mockRes();
871
+ var next1 = false;
872
+ mw(req1, res1, function () { next1 = true; });
873
+ check("object body: first request is a miss", next1 === true);
874
+ res1.end("obj-ok");
875
+
876
+ // Same object → replay.
877
+ var req2 = _mockReq("POST", "/o", "k-obj", { amount: 100 });
878
+ var res2 = _mockRes();
879
+ var next2 = false;
880
+ mw(req2, res2, function () { next2 = true; });
881
+ check("object body: identical object replays", !next2 && res2._getBody() === "obj-ok");
882
+
883
+ // Different object → 422 mismatch.
884
+ var req3 = _mockReq("POST", "/o", "k-obj", { amount: 999 });
885
+ var res3 = _mockRes();
886
+ var next3 = false;
887
+ mw(req3, res3, function () { next3 = true; });
888
+ check("object body: different object → 422 mismatch",
889
+ !next3 && res3._statusCode() === 422);
890
+ }
891
+
892
+ function testCircularObjectBodyDenied() {
893
+ // A non-serializable (circular) body cannot be fingerprinted; the
894
+ // default-path JSON.stringify throws, bodyBytes becomes null, and
895
+ // the deny fallback refuses with 400.
896
+ var store = b.middleware.idempotencyKey.memoryStore();
897
+ var mw = b.middleware.idempotencyKey({ store: store });
898
+ var circ = {};
899
+ circ.self = circ;
900
+ var req = _mockReq("POST", "/c", "k-circ", circ);
901
+ var res = _mockRes();
902
+ var nextCalled = false;
903
+ mw(req, res, function () { nextCalled = true; });
904
+ check("circular body: unserializable body → 400 deny, no next()",
905
+ !nextCalled && res._statusCode() === 400);
906
+ }
907
+
908
+ // ---- bodyFingerprint hook return-type + throw branches ----
909
+
910
+ function testBodyFingerprintHookReturnTypes() {
911
+ // Buffer and object hook returns both produce stable fingerprints.
912
+ var store = b.middleware.idempotencyKey.memoryStore();
913
+ var bufMw = b.middleware.idempotencyKey({
914
+ store: store, ttlMs: 60000,
915
+ bodyFingerprint: function () { return Buffer.from("fixed-buffer-fp"); },
916
+ });
917
+ var r1 = _mockReq("POST", "/b", "k-buf");
918
+ var s1 = _mockRes();
919
+ bufMw(r1, s1, function () {});
920
+ s1.end("buf-ok");
921
+ var r2 = _mockReq("POST", "/b", "k-buf");
922
+ var s2 = _mockRes();
923
+ var n2 = false;
924
+ bufMw(r2, s2, function () { n2 = true; });
925
+ check("hook Buffer return: replay on stable buffer fingerprint",
926
+ !n2 && s2._getBody() === "buf-ok");
927
+
928
+ var store2 = b.middleware.idempotencyKey.memoryStore();
929
+ var objMw = b.middleware.idempotencyKey({
930
+ store: store2, ttlMs: 60000,
931
+ bodyFingerprint: function (req) { return req.body || null; },
932
+ });
933
+ var r3 = _mockReq("POST", "/j", "k-objhook", { k: 1 });
934
+ var s3 = _mockRes();
935
+ objMw(r3, s3, function () {});
936
+ s3.end("objhook-ok");
937
+ var r4 = _mockReq("POST", "/j", "k-objhook", { k: 1 });
938
+ var s4 = _mockRes();
939
+ var n4 = false;
940
+ objMw(r4, s4, function () { n4 = true; });
941
+ check("hook object return: replay on JSON-stringified fingerprint",
942
+ !n4 && s4._getBody() === "objhook-ok");
943
+ }
944
+
945
+ function testBodyFingerprintHookThrows() {
946
+ // A throwing hook is caught (audit warning), bodyBytes becomes null.
947
+ // For DELETE (not in the POST/PUT/PATCH deny check) the request still
948
+ // proceeds on a method+path fingerprint.
949
+ var store = b.middleware.idempotencyKey.memoryStore();
950
+ var mw = b.middleware.idempotencyKey({
951
+ store: store, ttlMs: 60000,
952
+ bodyFingerprint: function () { throw new Error("hook boom"); },
953
+ });
954
+ var req = _mockReq("DELETE", "/resource/1", "k-hookthrow");
955
+ var res = _mockRes();
956
+ var nextCalled = false;
957
+ mw(req, res, function () { nextCalled = true; });
958
+ check("hook throws on DELETE: caught, request proceeds (next runs)",
959
+ nextCalled === true && res._statusCode() !== 400);
960
+ }
961
+
962
+ function testDeleteMissThenReplay() {
963
+ // DELETE is a default method but is exempt from the body-fingerprint
964
+ // deny check; a bodyless DELETE caches + replays on method+path.
965
+ var store = b.middleware.idempotencyKey.memoryStore();
966
+ var mw = b.middleware.idempotencyKey({ store: store, ttlMs: 60000 });
967
+ var req1 = _mockReq("DELETE", "/resource/9", "k-del");
968
+ var res1 = _mockRes();
969
+ var next1 = false;
970
+ mw(req1, res1, function () { next1 = true; });
971
+ check("DELETE: first request handled (not pass-through)", next1 === true);
972
+ res1.statusCode = 204;
973
+ res1.end("");
974
+ check("DELETE: response cached", store._size() === 1);
975
+
976
+ var req2 = _mockReq("DELETE", "/resource/9", "k-del");
977
+ var res2 = _mockRes();
978
+ var next2 = false;
979
+ mw(req2, res2, function () { next2 = true; });
980
+ check("DELETE: identical request replays cached 204",
981
+ !next2 && res2._statusCode() === 204);
982
+ }
983
+
984
+ // ---- store fault-tolerance (get/set throw) ----
985
+
986
+ function testStoreReadFailureTreatedAsMiss() {
987
+ var store = {
988
+ get: function () { throw new Error("read exploded"); },
989
+ set: function () {},
990
+ delete: function () {},
991
+ };
992
+ var mw = b.middleware.idempotencyKey({ store: store });
993
+ var req = _mockReq("POST", "/x", "k-readfail");
994
+ req._rawBody = Buffer.from("{}");
995
+ var res = _mockRes();
996
+ var nextCalled = false;
997
+ var threw = false;
998
+ try { mw(req, res, function () { nextCalled = true; }); }
999
+ catch (_e) { threw = true; }
1000
+ check("store read failure: no throw escapes the middleware", threw === false);
1001
+ check("store read failure: treated as miss, handler runs", nextCalled === true);
1002
+ }
1003
+
1004
+ function testStoreWriteFailureDoesNotBreakResponse() {
1005
+ var store = {
1006
+ get: function () { return null; },
1007
+ set: function () { throw new Error("write exploded"); },
1008
+ delete: function () {},
1009
+ };
1010
+ var mw = b.middleware.idempotencyKey({ store: store });
1011
+ var req = _mockReq("POST", "/x", "k-writefail");
1012
+ req._rawBody = Buffer.from("{}");
1013
+ var res = _mockRes();
1014
+ var threw = false;
1015
+ mw(req, res, function () {});
1016
+ try { res.statusCode = 200; res.end("still works"); }
1017
+ catch (_e) { threw = true; }
1018
+ check("store write failure: response completes without throwing", threw === false);
1019
+ check("store write failure: handler body still written", res._getBody() === "still works");
1020
+ check("store write failure: response ended", res._ended() === true);
1021
+ }
1022
+
1023
+ // ---- response-capture edge branches ----
1024
+
1025
+ function testBodyTooLargeNotCached() {
1026
+ var store = b.middleware.idempotencyKey.memoryStore();
1027
+ var mw = b.middleware.idempotencyKey({ store: store, maxBodyBytes: 4 });
1028
+ var req = _mockReq("POST", "/big", "k-big");
1029
+ req._rawBody = Buffer.from("{}");
1030
+ var res = _mockRes();
1031
+ mw(req, res, function () {});
1032
+ res.statusCode = 200;
1033
+ res.end("abcdefgh"); // 8 bytes > maxBodyBytes (4)
1034
+ check("body-too-large: oversized response NOT cached", store._size() === 0);
1035
+ check("body-too-large: response still delivered to client",
1036
+ res._getBody() === "abcdefgh" && res._ended() === true);
1037
+ }
1038
+
1039
+ function testStreamingWriteCaptureReplays() {
1040
+ // Handler streams via res.write(...) then res.end() with no final
1041
+ // chunk; the write-wrapper captures the streamed bytes and replays
1042
+ // the concatenation on the retry.
1043
+ var store = b.middleware.idempotencyKey.memoryStore();
1044
+ var mw = b.middleware.idempotencyKey({ store: store, ttlMs: 60000 });
1045
+ var req1 = _mockReq("POST", "/stream", "k-stream");
1046
+ req1._rawBody = Buffer.from("{}");
1047
+ var res1 = _mockRes();
1048
+ mw(req1, res1, function () {
1049
+ res1.statusCode = 200;
1050
+ res1.write("part1-");
1051
+ res1.write("part2");
1052
+ res1.end();
1053
+ });
1054
+ check("streaming capture: full body assembled from writes",
1055
+ res1._getBody() === "part1-part2");
1056
+ check("streaming capture: cached", store._size() === 1);
1057
+
1058
+ var req2 = _mockReq("POST", "/stream", "k-stream");
1059
+ req2._rawBody = Buffer.from("{}");
1060
+ var res2 = _mockRes();
1061
+ var next2 = false;
1062
+ mw(req2, res2, function () { next2 = true; });
1063
+ check("streaming capture: retry replays the concatenated body",
1064
+ !next2 && res2._getBody() === "part1-part2");
1065
+ }
1066
+
1067
+ function testReplaySkipsThrowingSetHeader() {
1068
+ // On replay, an operator-restricted header whose setHeader() throws is
1069
+ // skipped without aborting the replay — status + body still restored.
1070
+ var store = b.middleware.idempotencyKey.memoryStore();
1071
+ var mw = b.middleware.idempotencyKey({ store: store, ttlMs: 60000 });
1072
+ var req1 = _mockReq("POST", "/h", "k-hdrthrow");
1073
+ req1._rawBody = Buffer.from("{}");
1074
+ var res1 = _mockRes();
1075
+ mw(req1, res1, function () {
1076
+ res1.statusCode = 200;
1077
+ res1.setHeader("X-Test", "v");
1078
+ res1.end("hdr-body");
1079
+ });
1080
+
1081
+ var req2 = _mockReq("POST", "/h", "k-hdrthrow");
1082
+ req2._rawBody = Buffer.from("{}");
1083
+ var res2 = _mockRes();
1084
+ res2.setHeader = function () { throw new Error("restricted header"); };
1085
+ var next2 = false;
1086
+ var threw = false;
1087
+ try { mw(req2, res2, function () { next2 = true; }); }
1088
+ catch (_e) { threw = true; }
1089
+ check("replay setHeader throw: no throw escapes replay", threw === false);
1090
+ check("replay setHeader throw: handler not re-invoked", next2 === false);
1091
+ check("replay setHeader throw: status + body still restored",
1092
+ res2._statusCode() === 200 && res2._getBody() === "hdr-body" && res2._ended() === true);
1093
+ }
1094
+
622
1095
  async function run() {
623
1096
  testSurface();
624
1097
  testBadOpts();
1098
+ testMemoryStoreBadMaxEntries();
1099
+ testCreateBadNumericOpts();
1100
+ testKeyTooLong();
1101
+ testArrayKeyHeaderUsesFirst();
1102
+ testCustomMethodsSkipsUnlisted();
1103
+ testCustomHeaderName();
1104
+ testDenyFallbackRefusesMissingBody();
1105
+ testMethodPathOnlyFallbackAllows();
1106
+ testObjectBodyDefaultPath();
1107
+ testCircularObjectBodyDenied();
1108
+ testBodyFingerprintHookReturnTypes();
1109
+ testBodyFingerprintHookThrows();
1110
+ testDeleteMissThenReplay();
1111
+ testStoreReadFailureTreatedAsMiss();
1112
+ testStoreWriteFailureDoesNotBreakResponse();
1113
+ testBodyTooLargeNotCached();
1114
+ testStreamingWriteCaptureReplays();
1115
+ testReplaySkipsThrowingSetHeader();
625
1116
  testMethodSkipsGet();
626
1117
  testMissingKeyDefault();
627
1118
  testMissingKeyRequired();
@@ -646,6 +1137,9 @@ async function run() {
646
1137
  testDbStoreSealedRowAcrossProcessesNotDeleted();
647
1138
  testDbStoreCorruptHeadersDeletedWhenNotSealed();
648
1139
  await testDbStoreSealRoundTripWithVault();
1140
+ testResealMigrateInMemoryStoreUnsupported();
1141
+ testResealMigrateSealDisabled();
1142
+ await testResealMigrateAlreadyAadSealed();
649
1143
  }
650
1144
 
651
1145
  module.exports = { run: run };
@@ -66,6 +66,36 @@ function run() {
66
66
  check("pre-filter then expandIpv6Hex parses ::1",
67
67
  ip.looksLikeIPv6Hex("::1") && ip.expandIpv6Hex("::1") === "00000000000000000000000000000001");
68
68
 
69
+ // ---- RFC 4291 §2.2: '::' abbreviates ONE OR MORE all-zero groups ----
70
+ // A '::' adjacent to a full 8 explicit groups compresses ZERO groups, which
71
+ // is malformed IPv6 text — net.isIP rejects all of these. The expander must
72
+ // too (return null), or it diverges from the kernel/peer parser on a whole
73
+ // input class. Covers trailing / leading / interior placements.
74
+ ["1:2:3:4:5:6:7:8::", "::1:2:3:4:5:6:7:8", "1:2:3:4:5:6:7::8",
75
+ "1:2:3:4::5:6:7:8", "0:0:0:0:0:0:0:0::"]
76
+ .forEach(function (s) {
77
+ check("expandIpv6Hex rejects zero-group '::' " + JSON.stringify(s), ip.expandIpv6Hex(s) === null);
78
+ check("expandIpv6Groups rejects zero-group '::' " + JSON.stringify(s), ip.expandIpv6Groups(s) === null);
79
+ });
80
+ // A '::' compressing at least one group stays valid (the fix must not
81
+ // over-reject the legitimate abbreviation).
82
+ check("expandIpv6Hex accepts one-group '::' 1:2:3:4:5:6:7::",
83
+ ip.expandIpv6Hex("1:2:3:4:5:6:7::") === "00010002000300040005000600070000");
84
+ check("expandIpv6Hex accepts one-group '::' ::1:2:3:4:5:6:7",
85
+ ip.expandIpv6Hex("::1:2:3:4:5:6:7") === "00000001000200030004000500060007");
86
+ check("expandIpv6Hex accepts all-zero ::", ip.expandIpv6Hex("::") === "00000000000000000000000000000000");
87
+
88
+ // ---- Embedded IPv4 tail is a STRICT dotted-quad (matches net.isIP) ----
89
+ // A leading-zero octet in the ::ffff: / dual-stack tail is octal-ambiguous
90
+ // and rejected by net.isIP; the expander reuses the canonical strict isIPv4
91
+ // so the two validators don't diverge. >255 octets are likewise refused.
92
+ ["::ffff:01.2.3.4", "::ffff:1.2.3.04", "::ffff:010.0.0.7", "::ffff:256.0.0.1"]
93
+ .forEach(function (s) {
94
+ check("expandIpv6Hex rejects loose IPv4 tail " + JSON.stringify(s), ip.expandIpv6Hex(s) === null);
95
+ });
96
+ check("expandIpv6Hex accepts strict IPv4-mapped ::ffff:192.0.2.1",
97
+ ip.expandIpv6Hex("::ffff:192.0.2.1") === "00000000000000000000ffffc0000201");
98
+
69
99
  // ---- regression: existing helpers unchanged ----
70
100
  check("isIPv4Shape loose still true for 999.0.0.0", ip.isIPv4Shape("999.0.0.0") === true);
71
101
  check("isIPv4Shape false for non-dotted", ip.isIPv4Shape("notip") === false);