@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,422 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) blamejs contributors
3
+ "use strict";
4
+
5
+ var helpers = require("../helpers");
6
+ var b = helpers.b;
7
+ var check = helpers.check;
8
+
9
+ function expectThrows(label, fn, codeMatch) {
10
+ var threw = null;
11
+ try { fn(); } catch (e) { threw = e; }
12
+ check(label, !!threw && (threw.code || "") === codeMatch);
13
+ return threw;
14
+ }
15
+
16
+ // Assert a validate result carries an issue of `kind` (and, when given, the
17
+ // exact `severity`). Drives the real `b.guardDomain.validate` consumer path.
18
+ function hasIssue(issues, kind, severity) {
19
+ return issues.some(function (i) {
20
+ return i.kind === kind && (severity === undefined || i.severity === severity);
21
+ });
22
+ }
23
+
24
+ // Non-ASCII adversarial inputs are built via String.fromCharCode so the source
25
+ // file stays pure ASCII (no invisible codepoints to mis-copy or corrupt).
26
+ var CYRILLIC_HOMOGRAPH = String.fromCharCode(0x430) + "pple.com"; // Cyrillic + Latin pple
27
+ var NULL_BYTE_DOMAIN = "exa" + String.fromCharCode(0) + "mple.com"; // C0 NUL
28
+ var BIDI_DOMAIN = "exa" + String.fromCharCode(0x202E) + "mple.com"; // RLO override
29
+ var ZERO_WIDTH_DOMAIN = "exa" + String.fromCharCode(0x200B) + "mple.com"; // zero-width space
30
+
31
+ function testSanitize() {
32
+ // Benign: mixed-case FQDN with trailing dot. Safe transforms are ASCII
33
+ // lowercasing + trailing-dot strip, so the allowlist comparison key is
34
+ // canonical - neutralizing case / FQDN-marker mismatch.
35
+ var canonical = b.guardDomain.sanitize("Example.Com.", { profile: "balanced" });
36
+ check("guardDomain.sanitize lowercases + strips dot", canonical === "example.com");
37
+ check("guardDomain.sanitize output neutralized", canonical !== "Example.Com.");
38
+ check("guardDomain.sanitize output revalidates ok",
39
+ b.guardDomain.validate(canonical, { profile: "balanced" }).ok === true);
40
+
41
+ // A clean host is returned unchanged.
42
+ var same = b.guardDomain.sanitize("cdn.example.org", { profile: "strict" });
43
+ check("guardDomain.sanitize clean unchanged", same === "cdn.example.org");
44
+
45
+ // Hostile: dotted-decimal IPv4 as a domain (CVE-2021-22931 DNS-rebinding
46
+ // class) is REFUSED (thrown), never normalized into an allowlist key.
47
+ var ipErr = expectThrows("guardDomain.sanitize IPv4 throws",
48
+ function () { b.guardDomain.sanitize("192.168.1.1", { profile: "strict" }); },
49
+ "domain.ipv4-as-domain");
50
+ check("guardDomain.sanitize IPv4 GuardDomainError",
51
+ ipErr instanceof b.guardDomain.GuardDomainError);
52
+
53
+ // Hostile: mixed-script homograph label (Cyrillic + Latin) - a raw Unicode
54
+ // IDN label is refused under strict; the spoof never round-trips to a
55
+ // canonical form the framework would silently trust.
56
+ var homoErr = expectThrows("guardDomain.sanitize homograph throws",
57
+ function () { b.guardDomain.sanitize(CYRILLIC_HOMOGRAPH, { profile: "strict" }); },
58
+ "domain.raw-unicode-label");
59
+ check("guardDomain.sanitize homograph GuardDomainError",
60
+ homoErr instanceof b.guardDomain.GuardDomainError);
61
+
62
+ // Hostile: RFC 6761 special-use suffix (`.localhost`) - refused (thrown),
63
+ // never normalized into a webhook/allowlist target routing to loopback.
64
+ expectThrows("guardDomain.sanitize special-use throws",
65
+ function () { b.guardDomain.sanitize("foo.localhost", { profile: "strict" }); },
66
+ "domain.special-use");
67
+ }
68
+
69
+ // IPv4-as-domain across every parser-permissive numeric form (CVE-2021-22931
70
+ // DNS-rebinding class): octal segments, 0x-hex segments, long-decimal and
71
+ // long-hex without dots. Also pins the NON-IPv4 boundary cases that drive the
72
+ // false branches inside `_looksLikeIpv4Permissive`.
73
+ function testIpv4PermissiveForms() {
74
+ var forms = [
75
+ ["octal segments", "0177.0.0.1"],
76
+ ["0x-hex segments", "0xC0.0xA8.0x01.0x01"],
77
+ ["long-decimal", "3232235777"],
78
+ ["long-hex", "0xC0A80101"],
79
+ ];
80
+ forms.forEach(function (f) {
81
+ var rv = b.guardDomain.validate(f[1], { profile: "strict" });
82
+ check("guardDomain.validate " + f[0] + " -> ipv4-as-domain refuse",
83
+ rv.ok === false && hasIssue(rv.issues, "ipv4-as-domain", "high"));
84
+ });
85
+
86
+ // ipLiteralPolicy:"audit" downgrades the same detection to a warn (ok stays
87
+ // true) - exercises the reject/warn severity fork on the IPv4 path.
88
+ var au = b.guardDomain.validate("10.0.0.1",
89
+ { profile: "strict", ipLiteralPolicy: "audit" });
90
+ check("guardDomain.validate IPv4 audit -> warn, ok true",
91
+ au.ok === true && hasIssue(au.issues, "ipv4-as-domain", "warn"));
92
+
93
+ // ipLiteralPolicy:"allow" (permissive) lets the IPv4-shaped input through
94
+ // with no ipv4 issue - the operator explicitly opted into raw IPs.
95
+ var al = b.guardDomain.validate("3232235777", { profile: "permissive" });
96
+ check("guardDomain.validate long-decimal permissive -> no ipv4 issue",
97
+ hasIssue(al.issues, "ipv4-as-domain") === false);
98
+
99
+ // Boundary: a short all-digit label (< 8 digits, no dots) is NOT long-decimal
100
+ // IPv4 - it is a single-label domain instead (drives the `s.length >= 8`
101
+ // false branch).
102
+ var sn = b.guardDomain.validate("12345", { profile: "strict" });
103
+ check("guardDomain.validate short numeric -> single-label, not ipv4",
104
+ hasIssue(sn.issues, "ipv4-as-domain") === false &&
105
+ hasIssue(sn.issues, "single-label", "high"));
106
+
107
+ // Boundary: an alphanumeric single label (digit present, not a whole numeric
108
+ // token, no dot) is not IPv4 - drives the dot-less early return inside
109
+ // `_looksLikeIpv4Permissive`.
110
+ var an = b.guardDomain.validate("host12345", { profile: "strict" });
111
+ check("guardDomain.validate alphanumeric no-dot label -> not ipv4",
112
+ hasIssue(an.issues, "ipv4-as-domain") === false &&
113
+ hasIssue(an.issues, "single-label", "high"));
114
+
115
+ // Boundary: three numeric segments (wrong arity) and four segments with a
116
+ // non-numeric part both fail the permissive-IPv4 dotted loop and validate as
117
+ // ordinary LDH domains.
118
+ var p3 = b.guardDomain.validate("1.2.3", { profile: "strict" });
119
+ check("guardDomain.validate 3 numeric segments -> not ipv4, ok",
120
+ p3.ok === true && hasIssue(p3.issues, "ipv4-as-domain") === false);
121
+ var p4 = b.guardDomain.validate("1.2.3.x", { profile: "strict" });
122
+ check("guardDomain.validate 4 segments w/ non-numeric -> not ipv4, ok",
123
+ p4.ok === true && hasIssue(p4.issues, "ipv4-as-domain") === false);
124
+ }
125
+
126
+ // IPv6 bracket literal bypasses DNS-name validation - refuse under strict,
127
+ // warn under audit, allow (early-return with no issue) under permissive.
128
+ function testIpv6BracketLiteral() {
129
+ var rj = b.guardDomain.validate("[2001:db8::1]", { profile: "strict" });
130
+ check("guardDomain.validate IPv6 literal strict -> refuse",
131
+ rj.ok === false && hasIssue(rj.issues, "ipv6-literal", "high"));
132
+
133
+ var au = b.guardDomain.validate("[::1]",
134
+ { profile: "strict", ipLiteralPolicy: "audit" });
135
+ check("guardDomain.validate IPv6 literal audit -> warn, ok",
136
+ au.ok === true && hasIssue(au.issues, "ipv6-literal", "warn"));
137
+
138
+ var al = b.guardDomain.validate("[::1]", { profile: "permissive" });
139
+ check("guardDomain.validate IPv6 literal permissive -> no issue",
140
+ al.ok === true && hasIssue(al.issues, "ipv6-literal") === false);
141
+ }
142
+
143
+ // RFC 6761 / IETF reserved special-use suffixes route to loopback / mDNS / Tor
144
+ // / LAN. Suffix-match (`.localhost`) and exact-match (`home.arpa`) both fire.
145
+ function testSpecialUseSuffix() {
146
+ var suffix = b.guardDomain.validate("foo.localhost", { profile: "strict" });
147
+ check("guardDomain.validate .localhost suffix strict -> refuse",
148
+ suffix.ok === false && hasIssue(suffix.issues, "special-use", "high"));
149
+
150
+ // Exact whole-name match (no leading label) - drives the `lower === su` arm.
151
+ var exact = b.guardDomain.validate("home.arpa", { profile: "strict" });
152
+ check("guardDomain.validate home.arpa exact -> special-use refuse",
153
+ exact.ok === false && hasIssue(exact.issues, "special-use", "high"));
154
+
155
+ var au = b.guardDomain.validate("foo.internal",
156
+ { profile: "strict", specialUsePolicy: "audit" });
157
+ check("guardDomain.validate special-use audit -> warn, ok",
158
+ au.ok === true && hasIssue(au.issues, "special-use", "warn"));
159
+
160
+ // specialUsePolicy:"allow" suppresses the suffix issue entirely.
161
+ var al = b.guardDomain.validate("foo.localhost",
162
+ { profile: "strict", specialUsePolicy: "allow" });
163
+ check("guardDomain.validate special-use allow -> no issue",
164
+ hasIssue(al.issues, "special-use") === false);
165
+ }
166
+
167
+ // Single-label / TLD-only, empty input, and empty-label refuse under strict;
168
+ // the whole-domain octet cap (RFC 1035 sec 2.3.4) short-circuits detection.
169
+ function testSingleLabelEmptyAndCap() {
170
+ var single = b.guardDomain.validate("example", { profile: "strict" });
171
+ check("guardDomain.validate single-label strict -> refuse",
172
+ single.ok === false && hasIssue(single.issues, "single-label", "high"));
173
+
174
+ var au = b.guardDomain.validate("intranet",
175
+ { profile: "strict", singleLabelPolicy: "audit" });
176
+ check("guardDomain.validate single-label audit -> warn, ok",
177
+ au.ok === true && hasIssue(au.issues, "single-label", "warn"));
178
+
179
+ // Bare `.` -> after trailing-dot strip the name is empty.
180
+ var dot = b.guardDomain.validate(".", { profile: "strict" });
181
+ check("guardDomain.validate bare dot -> empty refuse",
182
+ dot.ok === false && hasIssue(dot.issues, "empty", "high"));
183
+
184
+ // Consecutive dots produce a zero-length interior label.
185
+ var emptyLabel = b.guardDomain.validate("foo..bar", { profile: "strict" });
186
+ check("guardDomain.validate consecutive dots -> empty-label refuse",
187
+ emptyLabel.ok === false && hasIssue(emptyLabel.issues, "empty-label", "high"));
188
+
189
+ // Whole-FQDN octet cap: > 253 octets short-circuits at detectStringInput
190
+ // (pre.done) with a domain-cap issue and no label parsing.
191
+ var over = b.guardDomain.validate(("a".repeat(300)) + ".com", { profile: "strict" });
192
+ check("guardDomain.validate >253 octets -> domain-cap refuse",
193
+ over.ok === false && hasIssue(over.issues, "domain-cap", "high"));
194
+ check("guardDomain.validate domain-cap is the only issue (short-circuit)",
195
+ over.issues.length === 1);
196
+ }
197
+
198
+ // Per-label octet cap and wildcard label. Wildcard is refuse at every profile
199
+ // (never a user-input identifier); `wildcardPolicy:"allow"` is the escape hatch.
200
+ function testLabelCapAndWildcard() {
201
+ var longLabel = ("a".repeat(64)) + ".example.com"; // 64 > 63 octet cap
202
+ var lc = b.guardDomain.validate(longLabel, { profile: "strict" });
203
+ check("guardDomain.validate 64-octet label -> label-cap refuse",
204
+ lc.ok === false && hasIssue(lc.issues, "label-cap", "high"));
205
+
206
+ var wild = b.guardDomain.validate("*.example.com", { profile: "strict" });
207
+ check("guardDomain.validate wildcard label strict -> refuse",
208
+ wild.ok === false && hasIssue(wild.issues, "wildcard", "high"));
209
+
210
+ // Even permissive refuses wildcard; only an explicit allow opt suppresses it.
211
+ var wildPerm = b.guardDomain.validate("*.example.com", { profile: "permissive" });
212
+ check("guardDomain.validate wildcard permissive -> still refuse",
213
+ wildPerm.ok === false && hasIssue(wildPerm.issues, "wildcard", "high"));
214
+
215
+ var wildAllow = b.guardDomain.validate("*.example.com",
216
+ { profile: "strict", wildcardPolicy: "allow" });
217
+ check("guardDomain.validate wildcard allow -> no wildcard issue",
218
+ hasIssue(wildAllow.issues, "wildcard") === false);
219
+ }
220
+
221
+ // RFC 8552 service-prefix labels (`_dmarc`) are never valid hostnames - refuse
222
+ // under strict/balanced, warn under audit, allow under permissive. A malformed
223
+ // underscore label (bare `_`) is a hard refusal regardless of policy.
224
+ function testUnderscoreLabels() {
225
+ var svc = b.guardDomain.validate("_dmarc.example.com", { profile: "strict" });
226
+ check("guardDomain.validate service label strict -> refuse",
227
+ svc.ok === false && hasIssue(svc.issues, "underscore-label", "high"));
228
+
229
+ var au = b.guardDomain.validate("_dmarc.example.com",
230
+ { profile: "strict", underscorePolicy: "audit" });
231
+ check("guardDomain.validate service label audit -> warn, ok",
232
+ au.ok === true && hasIssue(au.issues, "underscore-label", "warn"));
233
+
234
+ var perm = b.guardDomain.validate("_dmarc.example.com", { profile: "permissive" });
235
+ check("guardDomain.validate service label permissive -> no issue",
236
+ hasIssue(perm.issues, "underscore-label") === false);
237
+
238
+ // `_` alone doesn't match the service-label grammar -> hard refusal.
239
+ var bad = b.guardDomain.validate("_.example.com", { profile: "permissive" });
240
+ check("guardDomain.validate malformed underscore -> refuse (any profile)",
241
+ bad.ok === false && hasIssue(bad.issues, "underscore-malformed", "high"));
242
+ }
243
+
244
+ // IDN A-labels (`xn--`). Bare `xn--` (no payload) is malformed -> refuse. A real
245
+ // A-label is a homograph-spoofing class: refuse strict, warn balanced, allow
246
+ // permissive. A Punycode label that also violates LDH stacks both issues.
247
+ function testPunycodeLabels() {
248
+ var bare = b.guardDomain.validate("xn--.example.com", { profile: "strict" });
249
+ check("guardDomain.validate bare xn-- -> punycode-bare refuse",
250
+ bare.ok === false && hasIssue(bare.issues, "punycode-bare", "high"));
251
+
252
+ var strict = b.guardDomain.validate("xn--nxasmq6b.example.com", { profile: "strict" });
253
+ check("guardDomain.validate A-label strict -> refuse",
254
+ strict.ok === false && hasIssue(strict.issues, "punycode-label", "high"));
255
+
256
+ var bal = b.guardDomain.validate("xn--nxasmq6b.example.com", { profile: "balanced" });
257
+ check("guardDomain.validate A-label balanced -> warn, ok",
258
+ bal.ok === true && hasIssue(bal.issues, "punycode-label", "warn"));
259
+
260
+ var perm = b.guardDomain.validate("xn--nxasmq6b.example.com", { profile: "permissive" });
261
+ check("guardDomain.validate A-label permissive -> no issue",
262
+ hasIssue(perm.issues, "punycode-label") === false);
263
+
264
+ // A Punycode-prefixed label carrying an underscore violates LDH too - the
265
+ // A-label homograph issue AND the LDH violation both fire.
266
+ var ldh = b.guardDomain.validate("xn--foo_bar.example.com", { profile: "strict" });
267
+ check("guardDomain.validate A-label with LDH violation -> both issues",
268
+ ldh.ok === false &&
269
+ hasIssue(ldh.issues, "punycode-label", "high") &&
270
+ hasIssue(ldh.issues, "ldh-violation", "high"));
271
+ }
272
+
273
+ // ASCII LDH grammar (RFC 952 / 1123) and the position 3-4 double-hyphen
274
+ // heuristic (a non-`xn--` `--` at the IDN-prefix position).
275
+ function testLdhAndDoubleHyphen() {
276
+ var bad = b.guardDomain.validate("foo_bar.example.com", { profile: "strict" });
277
+ check("guardDomain.validate underscore in ASCII label -> ldh-violation refuse",
278
+ bad.ok === false && hasIssue(bad.issues, "ldh-violation", "high"));
279
+
280
+ var au = b.guardDomain.validate("foo_bar.example.com",
281
+ { profile: "strict", ldhPolicy: "audit" });
282
+ check("guardDomain.validate LDH audit -> warn, ok",
283
+ au.ok === true && hasIssue(au.issues, "ldh-violation", "warn"));
284
+
285
+ // `ab--cd` is LDH-legal but carries `--` at positions 3-4 without `xn--`.
286
+ var dh = b.guardDomain.validate("ab--cd.example.com", { profile: "strict" });
287
+ check("guardDomain.validate positions 3-4 double-hyphen -> warn, ok",
288
+ dh.ok === true && hasIssue(dh.issues, "double-hyphen", "warn"));
289
+ }
290
+
291
+ // Raw Unicode (non-ASCII) label handling at the audit severities - complements
292
+ // testSanitize's strict/reject path. A Cyrillic-Latin homograph mixes scripts.
293
+ function testRawUnicodeAndMixedScript() {
294
+ var rv = b.guardDomain.validate(CYRILLIC_HOMOGRAPH,
295
+ { profile: "strict", punycodePolicy: "audit", mixedScriptPolicy: "audit" });
296
+ check("guardDomain.validate raw-unicode audit -> warn",
297
+ hasIssue(rv.issues, "raw-unicode-label", "warn"));
298
+ // mixedScriptPolicy:"audit" downgrades the homograph mix from critical to
299
+ // high (still refuses - ok is false).
300
+ check("guardDomain.validate mixed-script audit -> high, refuse",
301
+ rv.ok === false && hasIssue(rv.issues, "mixed-script", "high"));
302
+ }
303
+
304
+ // DGA entropy heuristic: a long, high-entropy label is a C2 / domain-generation
305
+ // shape. Refuse strict, warn balanced. Low-entropy long labels and the
306
+ // operator-tunable minimum-label-length floor drive the negative branches.
307
+ function testDgaEntropy() {
308
+ var hi = b.guardDomain.validate("x7q2m9k4p1z8w3.example.com", { profile: "strict" });
309
+ check("guardDomain.validate high-entropy label strict -> dga refuse",
310
+ hi.ok === false && hasIssue(hi.issues, "dga-entropy", "high"));
311
+
312
+ var bal = b.guardDomain.validate("x7q2m9k4p1z8w3.example.com", { profile: "balanced" });
313
+ check("guardDomain.validate high-entropy label balanced -> warn, ok",
314
+ bal.ok === true && hasIssue(bal.issues, "dga-entropy", "warn"));
315
+
316
+ // A long but low-entropy (repeated-char) label is below the threshold.
317
+ var lo = b.guardDomain.validate("aaaaaaaaaaaaaa.example.com", { profile: "strict" });
318
+ check("guardDomain.validate low-entropy long label -> no dga issue",
319
+ lo.ok === true && hasIssue(lo.issues, "dga-entropy") === false);
320
+
321
+ // dgaPolicy:"allow" (permissive) suppresses the heuristic even on a hostile
322
+ // high-entropy label.
323
+ var perm = b.guardDomain.validate("x7q2m9k4p1z8w3.example.com", { profile: "permissive" });
324
+ check("guardDomain.validate high-entropy permissive -> no dga issue",
325
+ hasIssue(perm.issues, "dga-entropy") === false);
326
+
327
+ // dgaMinLabelLen:1 drives the entropy calc over every label including a
328
+ // single-character one (whose entropy is defined as 0 -> below threshold).
329
+ var tiny = b.guardDomain.validate("a.example.com",
330
+ { profile: "strict", dgaMinLabelLen: 1, dgaPolicy: "reject" });
331
+ check("guardDomain.validate 1-char label entropy=0 -> no dga issue",
332
+ tiny.ok === true && hasIssue(tiny.issues, "dga-entropy") === false);
333
+ }
334
+
335
+ // Trailing-dot FQDN marker: normalized silently by default, but surfaced as an
336
+ // audit warn when the operator opts into trailingDotPolicy:"audit".
337
+ function testTrailingDotAudit() {
338
+ var rv = b.guardDomain.validate("example.com.",
339
+ { profile: "strict", trailingDotPolicy: "audit" });
340
+ check("guardDomain.validate trailing-dot audit -> warn, ok",
341
+ rv.ok === true && hasIssue(rv.issues, "trailing-dot", "warn"));
342
+
343
+ // Default policy normalizes silently - no trailing-dot issue.
344
+ var norm = b.guardDomain.validate("example.com.", { profile: "strict" });
345
+ check("guardDomain.validate trailing-dot default -> normalized, no issue",
346
+ norm.ok === true && hasIssue(norm.issues, "trailing-dot") === false);
347
+ }
348
+
349
+ // Codepoint threats (CVE-2021-42574 Trojan Source class). Null byte and BIDI
350
+ // override are universal-refuse (rejected even under permissive); a bare
351
+ // zero-width space is caught only by the raw-Unicode gate under strict. Non-
352
+ // string input is bad-input.
353
+ function testCharThreatsAndBadInput() {
354
+ // Null byte refuses at every profile.
355
+ var nul = b.guardDomain.validate(NULL_BYTE_DOMAIN, { profile: "permissive" });
356
+ check("guardDomain.validate null byte -> refuse (universal)",
357
+ nul.ok === false && hasIssue(nul.issues, "null-byte"));
358
+
359
+ // BIDI override refuses at every profile.
360
+ var bidi = b.guardDomain.validate(BIDI_DOMAIN, { profile: "permissive" });
361
+ check("guardDomain.validate BIDI override -> refuse (universal)",
362
+ bidi.ok === false && hasIssue(bidi.issues, "bidi-override"));
363
+
364
+ // A bare zero-width space is a raw non-ASCII codepoint: refused under strict
365
+ // as a raw-Unicode label. (documents current behavior: permissive, which
366
+ // allows raw Unicode, does not flag a lone ZWSP as a char threat.)
367
+ var zwStrict = b.guardDomain.validate(ZERO_WIDTH_DOMAIN, { profile: "strict" });
368
+ check("guardDomain.validate zero-width strict -> refuse (raw-unicode)",
369
+ zwStrict.ok === false && hasIssue(zwStrict.issues, "raw-unicode-label"));
370
+ var zwPerm = b.guardDomain.validate(ZERO_WIDTH_DOMAIN, { profile: "permissive" });
371
+ check("guardDomain.validate zero-width permissive -> allowed (documents current behavior)",
372
+ zwPerm.ok === true);
373
+
374
+ var non = b.guardDomain.validate(12345, { profile: "strict" });
375
+ check("guardDomain.validate non-string -> bad-input refuse",
376
+ non.ok === false && hasIssue(non.issues, "bad-input", "high"));
377
+ }
378
+
379
+ // The gate consumer path: `gate({...}).check(ctx)` reading ctx.identifier OR
380
+ // ctx.domain, returning the serve/refuse decision that flows through the same
381
+ // detector as validate.
382
+ async function testGateConsumerPath() {
383
+ var g = b.guardDomain.gate({ profile: "strict" });
384
+
385
+ var ipv4 = await g.check({ identifier: "192.168.1.1" });
386
+ check("guardDomain.gate ctx.identifier IPv4 -> refuse",
387
+ ipv4.ok === false && ipv4.action === "refuse" &&
388
+ hasIssue(ipv4.issues, "ipv4-as-domain"));
389
+
390
+ var clean = await g.check({ identifier: "cdn.example.org" });
391
+ check("guardDomain.gate ctx.identifier clean -> serve",
392
+ clean.ok === true && clean.action === "serve");
393
+
394
+ // The gate reads ctx.domain as a fallback field.
395
+ var special = await g.check({ domain: "foo.localhost" });
396
+ check("guardDomain.gate ctx.domain special-use -> refuse",
397
+ special.ok === false && special.action === "refuse" &&
398
+ hasIssue(special.issues, "special-use"));
399
+ }
400
+
401
+ async function run() {
402
+ testSanitize();
403
+ testIpv4PermissiveForms();
404
+ testIpv6BracketLiteral();
405
+ testSpecialUseSuffix();
406
+ testSingleLabelEmptyAndCap();
407
+ testLabelCapAndWildcard();
408
+ testUnderscoreLabels();
409
+ testPunycodeLabels();
410
+ testLdhAndDoubleHyphen();
411
+ testRawUnicodeAndMixedScript();
412
+ testDgaEntropy();
413
+ testTrailingDotAudit();
414
+ testCharThreatsAndBadInput();
415
+ await testGateConsumerPath();
416
+ }
417
+
418
+ module.exports = { run: run };
419
+ if (require.main === module) {
420
+ run().then(function () { console.log("OK"); })
421
+ .catch(function (e) { console.error(e); process.exit(1); });
422
+ }