@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,86 @@
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
+ function _kinds(rv) {
17
+ return rv.issues.map(function (i) { return i.kind; });
18
+ }
19
+
20
+ function testValidate() {
21
+ // Benign: a registered, well-formed media type is clean under strict.
22
+ var okRv = b.guardMime.validate("application/json", { profile: "strict" });
23
+ check("guardMime.validate benign ok", okRv.ok === true);
24
+ check("guardMime.validate benign no issues", okRv.issues.length === 0);
25
+
26
+ // Hostile: an executable/script-host media type is on the risky-type
27
+ // refuse list — high severity under strict.
28
+ var risky = b.guardMime.validate("application/x-msdownload", { profile: "strict" });
29
+ check("guardMime.validate risky refused", risky.ok === false);
30
+ check("guardMime.validate risky-type kind",
31
+ _kinds(risky).indexOf("risky-type") !== -1);
32
+
33
+ // Hostile: missing `/` between type and subtype — mime-shape refuse.
34
+ var shape = b.guardMime.validate("noslash", { profile: "strict" });
35
+ check("guardMime.validate mime-shape refused", shape.ok === false);
36
+ check("guardMime.validate mime-shape kind",
37
+ _kinds(shape).indexOf("mime-shape") !== -1);
38
+
39
+ // Hostile: a space in the subtype violates the RFC 6838 restricted-
40
+ // name grammar — subtype-shape refuse.
41
+ var badTok = b.guardMime.validate("application/js on", { profile: "strict" });
42
+ check("guardMime.validate subtype-shape refused", badTok.ok === false);
43
+ check("guardMime.validate subtype-shape kind",
44
+ _kinds(badTok).indexOf("subtype-shape") !== -1);
45
+
46
+ // Wildcard is Accept-only — refused as a content-type at strict.
47
+ var wild = b.guardMime.validate("*/*", { profile: "strict" });
48
+ check("guardMime.validate wildcard refused", wild.ok === false);
49
+ check("guardMime.validate wildcard kind",
50
+ _kinds(wild).indexOf("wildcard") !== -1);
51
+ }
52
+
53
+ function testSanitize() {
54
+ // Benign: lower-cases the canonical type/subtype while preserving the
55
+ // parameter value's case (boundary tokens are case-significant).
56
+ var norm = b.guardMime.sanitize("Application/JSON; charset=UTF-8", { profile: "balanced" });
57
+ check("guardMime.sanitize lowercases type/subtype",
58
+ norm === "application/json; charset=UTF-8");
59
+ check("guardMime.sanitize preserves param-value case",
60
+ norm.indexOf("charset=UTF-8") !== -1);
61
+ check("guardMime.sanitize output neutralized",
62
+ norm !== "Application/JSON; charset=UTF-8");
63
+
64
+ // Already-canonical input is returned unchanged under strict.
65
+ var same = b.guardMime.sanitize("application/json", { profile: "strict" });
66
+ check("guardMime.sanitize canonical unchanged", same === "application/json");
67
+
68
+ // Hostile: a script-host media type throws rather than normalizing a
69
+ // risky type into place.
70
+ var err = expectThrows("guardMime.sanitize risky-type throws",
71
+ function () { b.guardMime.sanitize("application/javascript", { profile: "strict" }); },
72
+ "mime.risky-type");
73
+ check("guardMime.sanitize risky GuardMimeError",
74
+ err instanceof b.guardMime.GuardMimeError);
75
+ }
76
+
77
+ async function run() {
78
+ testValidate();
79
+ testSanitize();
80
+ }
81
+
82
+ module.exports = { run: run };
83
+ if (require.main === module) {
84
+ run().then(function () { console.log("OK"); })
85
+ .catch(function (e) { console.error(e); process.exit(1); });
86
+ }
@@ -0,0 +1,140 @@
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
+ // A spec-clean authorization-code flow: PKCE S256, state present,
10
+ // allowlisted redirect_uri, single `code` response_type.
11
+ var BENIGN_FLOW = Object.freeze({
12
+ response_type: "code",
13
+ redirect_uri: "https://app.example.com/callback",
14
+ state: "csrf-rand-1",
15
+ scope: "openid profile",
16
+ code_challenge: "abc123def456ghi789jkl012mno345pqr678",
17
+ code_challenge_method: "S256",
18
+ });
19
+
20
+ var ALLOWED_REDIRECTS = Object.freeze(["https://app.example.com/callback"]);
21
+
22
+ function expectThrows(label, fn, codeMatch) {
23
+ var threw = null;
24
+ try { fn(); } catch (e) { threw = e; }
25
+ check(label, !!threw && (threw.code || "") === codeMatch);
26
+ return threw;
27
+ }
28
+
29
+ function testSanitize() {
30
+ // Benign: a well-formed flow passes through unchanged (OAuth bundles
31
+ // can't be partially repaired — clean or refused).
32
+ var out = b.guardOauth.sanitize(BENIGN_FLOW, {
33
+ profile: "strict",
34
+ allowedRedirectUris: ALLOWED_REDIRECTS,
35
+ });
36
+ check("guardOauth.sanitize benign passthrough", out === BENIGN_FLOW);
37
+
38
+ // Hostile: no PKCE at all — OAuth 2.1 mandates PKCE for every client;
39
+ // sanitize throws rather than returning the downgraded flow.
40
+ var pkceErr = expectThrows("guardOauth.sanitize pkce-missing throws",
41
+ function () {
42
+ b.guardOauth.sanitize({
43
+ response_type: "code",
44
+ redirect_uri: "https://app.example.com/callback",
45
+ scope: "openid",
46
+ }, { profile: "strict" });
47
+ },
48
+ "oauth.pkce-missing");
49
+ check("guardOauth.sanitize pkce GuardOauthError",
50
+ pkceErr instanceof b.guardOauth.GuardOauthError);
51
+
52
+ // Hostile: `plain` PKCE method under strict is a downgrade-attack
53
+ // class — refused (require-s256).
54
+ expectThrows("guardOauth.sanitize pkce plain-method throws",
55
+ function () {
56
+ b.guardOauth.sanitize({
57
+ response_type: "code",
58
+ redirect_uri: "https://app.example.com/callback",
59
+ state: "s1",
60
+ scope: "openid",
61
+ code_challenge: "abc123def456ghi789jkl012mno345pqr678",
62
+ code_challenge_method: "plain",
63
+ }, { profile: "strict", allowedRedirectUris: ALLOWED_REDIRECTS });
64
+ },
65
+ "oauth.pkce-method");
66
+ }
67
+
68
+ async function testGate() {
69
+ var oauthGate = b.guardOauth.gate({
70
+ profile: "strict",
71
+ allowedRedirectUris: ALLOWED_REDIRECTS,
72
+ });
73
+
74
+ // Benign flow → serve.
75
+ var served = await oauthGate.check({ oauthFlow: BENIGN_FLOW });
76
+ check("guardOauth.gate benign serves", served.ok === true && served.action === "serve");
77
+
78
+ // Hostile: redirect_uri not on the operator allowlist — the canonical
79
+ // loose-match account-takeover class. Gate refuses before the token
80
+ // exchange, even though state/PKCE are present.
81
+ var refused = await oauthGate.check({
82
+ oauthFlow: {
83
+ response_type: "code",
84
+ redirect_uri: "https://attacker.example/callback",
85
+ state: "csrf-rand-1",
86
+ scope: "openid",
87
+ code_challenge: "abc123def456ghi789jkl012mno345pqr678",
88
+ code_challenge_method: "S256",
89
+ },
90
+ });
91
+ check("guardOauth.gate hostile redirect refuses",
92
+ refused.ok === false && refused.action === "refuse");
93
+ check("guardOauth.gate redirect-uri-not-allowed kind",
94
+ (refused.issues || []).some(function (i) { return i.kind === "redirect-uri-not-allowed"; }));
95
+
96
+ // Hostile: replay — a code the operator's seenCodeStore has already
97
+ // seen is a critical code-reuse refuse (RFC 6749 §10.5).
98
+ var replayGate = b.guardOauth.gate({
99
+ profile: "strict",
100
+ allowedRedirectUris: ALLOWED_REDIRECTS,
101
+ seenCodeStore: { hasSeen: function () { return true; } },
102
+ });
103
+ var replay = await replayGate.check({
104
+ oauthFlow: Object.assign({}, BENIGN_FLOW, { code: "authcode-123" }),
105
+ });
106
+ check("guardOauth.gate replayed code refuses",
107
+ replay.ok === false && replay.action === "refuse");
108
+ check("guardOauth.gate code-reused kind",
109
+ (replay.issues || []).some(function (i) { return i.kind === "code-reused"; }));
110
+
111
+ // Fail-closed: a seenCodeStore that errors can't prove the code is
112
+ // unused → refuse (code-reuse-unverifiable), never silently serve.
113
+ var errGate = b.guardOauth.gate({
114
+ profile: "strict",
115
+ allowedRedirectUris: ALLOWED_REDIRECTS,
116
+ seenCodeStore: { hasSeen: function () { throw new Error("store down"); } },
117
+ });
118
+ var failClosed = await errGate.check({
119
+ oauthFlow: Object.assign({}, BENIGN_FLOW, { code: "authcode-123" }),
120
+ });
121
+ check("guardOauth.gate replay-store error fails closed",
122
+ failClosed.ok === false && failClosed.action === "refuse");
123
+ check("guardOauth.gate code-reuse-unverifiable kind",
124
+ (failClosed.issues || []).some(function (i) { return i.kind === "code-reuse-unverifiable"; }));
125
+
126
+ // No flow on the ctx → serve (nothing to gate).
127
+ var empty = await oauthGate.check({});
128
+ check("guardOauth.gate absent flow serves", empty.ok === true && empty.action === "serve");
129
+ }
130
+
131
+ async function run() {
132
+ testSanitize();
133
+ await testGate();
134
+ }
135
+
136
+ module.exports = { run: run };
137
+ if (require.main === module) {
138
+ run().then(function () { console.log("OK"); })
139
+ .catch(function (e) { console.error(e); process.exit(1); });
140
+ }
@@ -77,11 +77,71 @@ function testSanitizeForcesEncryptedReject() {
77
77
  _code(function () { b.guardPdf.sanitize({ bytes: _PDF, isEncrypted: true }, { profile: "permissive" }); }) === "pdf.encrypted");
78
78
  }
79
79
 
80
+ // An operator-supplied permissive policy opt must NOT let sanitize hand back a
81
+ // PDF that still carries an RCE-class action. sanitize is disarm-by-refusal and
82
+ // forces the active-content policies to reject; the forced set previously
83
+ // covered open-action / embedded-file / encrypted but OMITTED the three classes
84
+ // the guard "refuses to negotiate" on — JavaScript, Launch, and polyglot — so
85
+ // `sanitize(bag, { javascriptPolicy: "allow" })` returned the live PDF. Each of
86
+ // these drives the same override object and must refuse regardless of the opt.
87
+ function testSanitizeForcesJavaScriptRejectOverOperatorAllow() {
88
+ check("javascript refused under sanitize even when javascriptPolicy:allow",
89
+ _code(function () {
90
+ b.guardPdf.sanitize({ bytes: _PDF, hasJavaScript: true },
91
+ { profile: "strict", javascriptPolicy: "allow" });
92
+ }) === "pdf.javascript-action");
93
+ check("javascript refused under sanitize even when javascriptPolicy:audit",
94
+ _code(function () {
95
+ b.guardPdf.sanitize({ bytes: _PDF, hasJavaScript: true },
96
+ { profile: "permissive", javascriptPolicy: "audit" });
97
+ }) === "pdf.javascript-action");
98
+ }
99
+
100
+ function testSanitizeForcesLaunchRejectOverOperatorAllow() {
101
+ check("launch refused under sanitize even when launchActionPolicy:allow",
102
+ _code(function () {
103
+ b.guardPdf.sanitize({ bytes: _PDF, hasLaunchAction: true },
104
+ { profile: "strict", launchActionPolicy: "allow" });
105
+ }) === "pdf.launch-action");
106
+ }
107
+
108
+ function testSanitizeForcesPolyglotRejectOverOperatorAllow() {
109
+ check("polyglot refused under sanitize even when polyglotPolicy:allow",
110
+ _code(function () {
111
+ b.guardPdf.sanitize({ bytes: _PDF, polyglotDetected: true },
112
+ { profile: "strict", polyglotPolicy: "allow" });
113
+ }) === "pdf.polyglot");
114
+ }
115
+
80
116
  function testSanitizeBadInput() {
81
117
  check("bad input refused",
82
118
  _code(function () { b.guardPdf.sanitize(null, { profile: "balanced" }); }) === "pdf.bad-input");
83
119
  }
84
120
 
121
+ // ---- magic-byte inspection ----
122
+
123
+ function testInspectMagic() {
124
+ // %PDF-1.7 header (25 50 44 46 2D 31 2E 37) — real PDF prefix.
125
+ var pdfBytes = Buffer.from([0x25, 0x50, 0x44, 0x46, 0x2D, 0x31, 0x2E, 0x37]);
126
+ check("inspectMagic: %PDF- prefix → true",
127
+ b.guardPdf.inspectMagic(pdfBytes) === true);
128
+ // Exactly the 5-byte magic is enough.
129
+ check("inspectMagic: bare %PDF- (5 bytes) → true",
130
+ b.guardPdf.inspectMagic(_PDF) === true);
131
+ // Non-PDF bytes — the operator fed the wrong gate.
132
+ check("inspectMagic: mismatching bytes → false",
133
+ b.guardPdf.inspectMagic(Buffer.from([0x00, 0x01, 0x02])) === false);
134
+ // A buffer shorter than the 5-byte magic can't match.
135
+ check("inspectMagic: too-short buffer → false",
136
+ b.guardPdf.inspectMagic(Buffer.from([0x25, 0x50])) === false);
137
+ // Near-miss: right length, one byte off (0x2E vs 0x2D at index 4).
138
+ check("inspectMagic: one-byte-off prefix → false",
139
+ b.guardPdf.inspectMagic(Buffer.from([0x25, 0x50, 0x44, 0x46, 0x2E])) === false);
140
+ // Pure inspection — never throws on non-Buffer input.
141
+ check("inspectMagic: null input → false (no throw)",
142
+ b.guardPdf.inspectMagic(null) === false);
143
+ }
144
+
85
145
  function run() {
86
146
  testGuardPdfSurface();
87
147
  testGuardPdfRegistryParity();
@@ -92,7 +152,27 @@ function run() {
92
152
  testSanitizeForcesOpenActionReject();
93
153
  testSanitizeForcesEmbeddedFileReject();
94
154
  testSanitizeForcesEncryptedReject();
155
+ testSanitizeForcesJavaScriptRejectOverOperatorAllow();
156
+ testSanitizeForcesLaunchRejectOverOperatorAllow();
157
+ testSanitizeForcesPolyglotRejectOverOperatorAllow();
95
158
  testSanitizeBadInput();
159
+ testInspectMagic();
160
+ testValidateNeverThrowsOnArrayLikeBytes();
161
+ }
162
+
163
+ // ---- validate must never throw on hostile metadata (sibling of the guard-image
164
+ // array-like crash: byteLengthOf was called for any numeric-.length value, but
165
+ // it only accepts string/Buffer/Uint8Array and threw TypeError on a plain Array
166
+ // / array-like bag, crashing a direct validate/sanitize caller). ----
167
+ function testValidateNeverThrowsOnArrayLikeBytes() {
168
+ check("validate does not throw on Array-typed bytes",
169
+ _code(function () { b.guardPdf.validate({ bytes: [0x25, 0x50, 0x44, 0x46] }, { profile: "balanced" }); }) === null);
170
+ check("validate does not throw on array-like-object bytes",
171
+ _code(function () { b.guardPdf.validate({ bytes: { length: 1e9 } }, { profile: "strict" }); }) === null);
172
+ // The unrecognized array-like content is still refused (unknown-magic under
173
+ // strict), not served — never-throw does not mean fail-open.
174
+ var rv = b.guardPdf.validate({ bytes: [1, 2, 3] }, { profile: "strict" });
175
+ check("array-like bytes → refused (ok:false), not a crash", rv.ok === false);
96
176
  }
97
177
 
98
178
  module.exports = { run: run };
@@ -162,6 +162,32 @@ function testByteCapMultibyte() {
162
162
  t3 && t3.code === "guard-pop3-command/password-too-long");
163
163
  }
164
164
 
165
+ function testProfilePrototypeKeyRefused() {
166
+ // A profile name that collides with a JS prototype-key must resolve to
167
+ // bad-profile, never silently disable the caps. Pre-fix the resolver
168
+ // read PROFILES[profileName] by bracket access, so PROFILES["constructor"]
169
+ // was the inherited Object function — truthy — and `if (!caps)` never
170
+ // fired; the line / username / password caps then compared against
171
+ // `undefined` (always false) and failed open.
172
+ var protoKeys = ["constructor", "__proto__", "toString", "valueOf", "hasOwnProperty"];
173
+ for (var i = 0; i < protoKeys.length; i += 1) {
174
+ var threw = null;
175
+ try { b.guardPop3Command.validate("NOOP", { profile: protoKeys[i] }); }
176
+ catch (e) { threw = e; }
177
+ check("profile '" + protoKeys[i] + "' refused as bad-profile",
178
+ threw && threw.code === "guard-pop3-command/bad-profile");
179
+ }
180
+ // Concrete fail-open proof: a USER name past the strict 40-byte cap
181
+ // must NOT be accepted under a prototype-key profile.
182
+ var threwLong = null;
183
+ try {
184
+ b.guardPop3Command.validate("USER " + "a".repeat(300),
185
+ { profile: "constructor", tls: true });
186
+ } catch (e) { threwLong = e; }
187
+ check("prototype-key profile does not fail open on the username cap",
188
+ threwLong && threwLong.code === "guard-pop3-command/bad-profile");
189
+ }
190
+
165
191
  function run() {
166
192
  testByteCapMultibyte();
167
193
  testSurface();
@@ -170,6 +196,7 @@ function run() {
170
196
  testAuthCleartextRefused();
171
197
  testApopRefusedUnderStrict();
172
198
  testBadInputRefused();
199
+ testProfilePrototypeKeyRefused();
173
200
  testCompliancePosture();
174
201
  }
175
202
 
@@ -0,0 +1,99 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) blamejs contributors
3
+ "use strict";
4
+ /**
5
+ * b.guardRegex — ReDoS screening for operator-supplied patterns. Covers the
6
+ * nested-quantifier detector's true positives AND the linear shapes it must NOT
7
+ * false-refuse (#432 / #429): a quantified non-capturing group (`(?:…)?`,
8
+ * `(?:…)*`) and an OPTIONAL quantified group (`(X+)?`, `(?:X+)?`) repeat the
9
+ * group at most once, so they are linear, not catastrophic. The catastrophic
10
+ * class requires the OUTER quantifier to be unbounded (`*`/`+`/`{n,}`).
11
+ *
12
+ * Run standalone: `node test/layer-0-primitives/guard-regex.test.js`
13
+ * Or via smoke: `node test/smoke.js`
14
+ */
15
+
16
+ var helpers = require("../helpers");
17
+ var b = helpers.b;
18
+ var check = helpers.check;
19
+
20
+ function assertSafeAccepts(src) {
21
+ try { b.guardRegex.assertSafe(new RegExp(src), "x"); return true; } catch (_e) { return false; }
22
+ }
23
+ function sanitizeAccepts(src) {
24
+ try { b.guardRegex.sanitize(src); return true; } catch (_e) { return false; }
25
+ }
26
+
27
+ // ---- #432 / #429: linear shapes must be ACCEPTED (were false-refused) ----
28
+ function testLinearShapesAccepted() {
29
+ var linear = [
30
+ "^(?:/page/\\d+)?$", // optional non-capturing group
31
+ "^foo(?:bar)*$", // quantified non-capturing group
32
+ "^foo(?:bar)?$",
33
+ "^(a+)?$", // optional quantified group — repeats 0..1
34
+ "(?:[-+][0-9A-Za-z.-]+)?", // optional group with inner quantifier (#429)
35
+ "(?:[-+][0-9A-Za-z.-]{1,64})?",
36
+ "v\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?-linux-x64",
37
+ ];
38
+ linear.forEach(function (src) {
39
+ check("assertSafe accepts linear " + JSON.stringify(src), assertSafeAccepts(src));
40
+ check("sanitize accepts linear " + JSON.stringify(src), sanitizeAccepts(src));
41
+ });
42
+ }
43
+
44
+ // ---- genuine nested-UNBOUNDED shapes must still be REFUSED ----
45
+ function testCatastrophicShapesRefused() {
46
+ var bad = ["^(a+)+$", "(a+)*", "((a)+)+", "(([a-z]+)*)*", "(a+){2,}"];
47
+ bad.forEach(function (src) {
48
+ check("assertSafe refuses catastrophic " + JSON.stringify(src), assertSafeAccepts(src) === false);
49
+ });
50
+ }
51
+
52
+ // ---- other ReDoS classes the guard covers stay covered ----
53
+ function testOtherClasses() {
54
+ check("alternation-with-quantifier refused", assertSafeAccepts("^(a|b|c)+$") === false);
55
+ check("plain linear pattern accepted", assertSafeAccepts("^[a-z0-9_-]{1,64}$"));
56
+ check("anchored alternation without group-quantifier accepted", assertSafeAccepts("^(?:cat|dog|bird)$"));
57
+ }
58
+
59
+ // ---- b.guardRegex.gate — the request-boundary screener ----
60
+ // The gate reads ctx.identifier (or ctx.pattern) and maps validate's
61
+ // severity to serve / audit-only / refuse before any new RegExp() compile.
62
+ async function testGate() {
63
+ var gate = b.guardRegex.gate({ profile: "strict" });
64
+
65
+ var clean = await gate.check({ identifier: "^[a-z]+$" });
66
+ check("gate: linear pattern → action=serve, ok=true",
67
+ clean.ok === true && clean.action === "serve");
68
+
69
+ var nested = await gate.check({ identifier: "(a+)+b" });
70
+ check("gate: nested-quantifier ReDoS → action=refuse, ok=false",
71
+ nested.ok === false && nested.action === "refuse");
72
+ check("gate: nested-quantifier → nested-quantifier issue",
73
+ nested.issues.some(function (i) { return i.kind === "nested-quantifier"; }));
74
+
75
+ // ctx.pattern is the documented fallback field for the pattern.
76
+ var alt = await gate.check({ pattern: "(a|b|c)+" });
77
+ check("gate: alternation-with-quantifier via ctx.pattern → refuse",
78
+ alt.action === "refuse");
79
+
80
+ // Absent pattern is a no-op serve (nothing to screen).
81
+ var none = await gate.check({});
82
+ check("gate: no pattern supplied → action=serve",
83
+ none.ok === true && none.action === "serve");
84
+ }
85
+
86
+ async function run() {
87
+ testLinearShapesAccepted();
88
+ testCatastrophicShapesRefused();
89
+ testOtherClasses();
90
+ await testGate();
91
+ }
92
+
93
+ if (require.main === module) {
94
+ run()
95
+ .then(function () { console.log("guard-regex OK — " + helpers.getChecks() + " checks"); })
96
+ .catch(function (e) { console.error("FAIL:", e.stack || e); process.exit(1); });
97
+ }
98
+
99
+ module.exports = { run: run };
@@ -0,0 +1,76 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) blamejs contributors
3
+ "use strict";
4
+ /**
5
+ * guard-shell — shell-argument content-safety primitive (b.guardShell).
6
+ *
7
+ * Covers the pass-through-or-throw sanitize contract: a clean argument
8
+ * returns unchanged, while an argument carrying a shell-injection shape
9
+ * throws GuardShellError with the offending rule id. Command / process
10
+ * substitution, backticks and newlines are refused at EVERY profile
11
+ * (including permissive) — the RCE class is never an operator opt-in.
12
+ */
13
+
14
+ var helpers = require("../helpers");
15
+ var b = helpers.b;
16
+ var check = helpers.check;
17
+
18
+ function _code(fn) { try { fn(); return null; } catch (e) { return e && e.code; } }
19
+
20
+ function testGuardShellSurface() {
21
+ check("guardShell is an object", typeof b.guardShell === "object");
22
+ check("guardShell.NAME === 'shell'", b.guardShell.NAME === "shell");
23
+ check("guardShell.sanitize is a function", typeof b.guardShell.sanitize === "function");
24
+ check("guardShell registered in guardAll",
25
+ b.guardAll.allGuards().some(function (g) { return (g.name || g.NAME) === "shell"; }));
26
+ check("frameworkError.GuardShellError exposed",
27
+ typeof b.frameworkError.GuardShellError === "function");
28
+ }
29
+
30
+ function testSanitizeCleanPassthrough() {
31
+ // A metacharacter-free argument survives sanitize verbatim.
32
+ var out = b.guardShell.sanitize("safe-arg-value", { profile: "strict" });
33
+ check("clean arg passes through unchanged", out === "safe-arg-value");
34
+ }
35
+
36
+ function testSanitizeRefusesMetacharChain() {
37
+ // `safe; rm -rf /` carries the POSIX `;` command separator — a shell
38
+ // would run `rm -rf /` after the intended arg.
39
+ check("posix metacharacter chain refused under strict",
40
+ _code(function () { b.guardShell.sanitize("safe; rm -rf /", { profile: "strict" }); })
41
+ === "shell.posix-metachar");
42
+ }
43
+
44
+ function testSanitizeRefusesCommandSubstitutionEveryProfile() {
45
+ // $(...) command substitution is refused even at permissive.
46
+ check("$(...) command substitution refused at permissive",
47
+ _code(function () { b.guardShell.sanitize("$(whoami)", { profile: "permissive" }); })
48
+ === "shell.dollar-substitution");
49
+ // Backtick substitution is likewise refused at permissive.
50
+ check("backtick substitution refused at permissive",
51
+ _code(function () { b.guardShell.sanitize("`id`", { profile: "permissive" }); })
52
+ === "shell.backtick");
53
+ }
54
+
55
+ function testSanitizeThrowsGuardShellError() {
56
+ var caught = null;
57
+ try { b.guardShell.sanitize("a|b", { profile: "strict" }); }
58
+ catch (e) { caught = e; }
59
+ check("sanitize throws a GuardShellError instance",
60
+ caught instanceof b.frameworkError.GuardShellError);
61
+ }
62
+
63
+ function run() {
64
+ testGuardShellSurface();
65
+ testSanitizeCleanPassthrough();
66
+ testSanitizeRefusesMetacharChain();
67
+ testSanitizeRefusesCommandSubstitutionEveryProfile();
68
+ testSanitizeThrowsGuardShellError();
69
+ }
70
+
71
+ module.exports = { run: run };
72
+
73
+ if (require.main === module) {
74
+ try { run(); console.log("[guard-shell] OK — " + helpers.getChecks() + " checks passed"); }
75
+ catch (e) { console.error("FAIL:", e.stack || e); process.exit(1); }
76
+ }
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) blamejs contributors
3
3
  "use strict";
4
4
  /**
5
- * guard-sql-coverage — error / adversarial-branch coverage for
5
+ * guard-sql — error / adversarial-branch coverage for
6
6
  * b.guardSql (the raw-SQL content-safety primitive).
7
7
  *
8
8
  * The smoke + integration suites already exercise the happy path (a
@@ -28,7 +28,7 @@
28
28
  * - sanitize's refuse-throw path and gate's serve / audit-only /
29
29
  * refuse / fail-closed dispositions.
30
30
  *
31
- * Run standalone: node test/layer-0-primitives/guard-sql-coverage.test.js
31
+ * Run standalone: node test/layer-0-primitives/guard-sql.test.js
32
32
  * Or via smoke: node test/smoke.js
33
33
  */
34
34
 
@@ -426,7 +426,7 @@ module.exports = { run: run };
426
426
 
427
427
  if (require.main === module) {
428
428
  run().then(
429
- function () { console.log("[guard-sql-coverage] OK — " + helpers.getChecks() + " checks passed"); process.exit(0); },
429
+ function () { console.log("[guard-sql] OK — " + helpers.getChecks() + " checks passed"); process.exit(0); },
430
430
  function (e) { console.error("FAIL:", e && e.stack || e); process.exit(1); }
431
431
  );
432
432
  }