@blamejs/blamejs-shop 0.5.12 → 0.5.14

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 (522) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/asset-manifest.json +1 -1
  3. package/lib/sales-tax-filings.js +143 -0
  4. package/lib/vendor/MANIFEST.json +632 -416
  5. package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +21 -10
  6. package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +30 -9
  7. package/lib/vendor/blamejs/.github/dependabot.yml +8 -0
  8. package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +3 -3
  9. package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +7 -2
  10. package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +7 -2
  11. package/lib/vendor/blamejs/.github/workflows/ci.yml +21 -21
  12. package/lib/vendor/blamejs/.github/workflows/codeql.yml +3 -3
  13. package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +4 -4
  14. package/lib/vendor/blamejs/.github/workflows/release-container.yml +7 -7
  15. package/lib/vendor/blamejs/.github/workflows/scorecard.yml +3 -3
  16. package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +1 -1
  17. package/lib/vendor/blamejs/.gitignore +2 -0
  18. package/lib/vendor/blamejs/CHANGELOG.md +122 -0
  19. package/lib/vendor/blamejs/NOTICE +26 -1
  20. package/lib/vendor/blamejs/SECURITY.md +1 -1
  21. package/lib/vendor/blamejs/api-snapshot.json +207 -5
  22. package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +29 -0
  23. package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +1 -0
  24. package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +31 -0
  25. package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +109 -0
  26. package/lib/vendor/blamejs/examples/wiki/nginx.conf +106 -0
  27. package/lib/vendor/blamejs/examples/wiki/package-lock.json +1 -1
  28. package/lib/vendor/blamejs/examples/wiki/test/e2e.js +92 -0
  29. package/lib/vendor/blamejs/fuzz/asn1-der.fuzz.js +28 -0
  30. package/lib/vendor/blamejs/fuzz/cms-codec.fuzz.js +17 -0
  31. package/lib/vendor/blamejs/fuzz/link-header.fuzz.js +18 -0
  32. package/lib/vendor/blamejs/index.js +6 -0
  33. package/lib/vendor/blamejs/lib/a2a.js +4 -4
  34. package/lib/vendor/blamejs/lib/agent-idempotency.js +18 -2
  35. package/lib/vendor/blamejs/lib/agent-saga.js +36 -8
  36. package/lib/vendor/blamejs/lib/agent-snapshot.js +63 -6
  37. package/lib/vendor/blamejs/lib/app-shutdown.js +23 -20
  38. package/lib/vendor/blamejs/lib/archive-read.js +8 -0
  39. package/lib/vendor/blamejs/lib/archive-tar.js +12 -2
  40. package/lib/vendor/blamejs/lib/arg-parser.js +49 -5
  41. package/lib/vendor/blamejs/lib/asn1-der.js +12 -0
  42. package/lib/vendor/blamejs/lib/audit-sign.js +47 -1
  43. package/lib/vendor/blamejs/lib/audit.js +71 -8
  44. package/lib/vendor/blamejs/lib/auth/ciba.js +14 -2
  45. package/lib/vendor/blamejs/lib/auth/fido-mds3.js +58 -47
  46. package/lib/vendor/blamejs/lib/auth/jwt.js +34 -0
  47. package/lib/vendor/blamejs/lib/auth/oauth.js +90 -13
  48. package/lib/vendor/blamejs/lib/auth/oid4vci.js +20 -17
  49. package/lib/vendor/blamejs/lib/auth/openid-federation.js +214 -23
  50. package/lib/vendor/blamejs/lib/auth/saml.js +38 -20
  51. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +10 -4
  52. package/lib/vendor/blamejs/lib/backup/bundle.js +13 -3
  53. package/lib/vendor/blamejs/lib/backup/index.js +16 -5
  54. package/lib/vendor/blamejs/lib/backup/manifest.js +18 -5
  55. package/lib/vendor/blamejs/lib/base32.js +21 -0
  56. package/lib/vendor/blamejs/lib/break-glass.js +19 -10
  57. package/lib/vendor/blamejs/lib/bundler.js +5 -1
  58. package/lib/vendor/blamejs/lib/cache-status.js +3 -7
  59. package/lib/vendor/blamejs/lib/calendar.js +21 -1
  60. package/lib/vendor/blamejs/lib/cbor.js +12 -1
  61. package/lib/vendor/blamejs/lib/cert.js +29 -11
  62. package/lib/vendor/blamejs/lib/cli.js +94 -24
  63. package/lib/vendor/blamejs/lib/cloud-events.js +2 -2
  64. package/lib/vendor/blamejs/lib/cluster-provider-db.js +13 -3
  65. package/lib/vendor/blamejs/lib/codepoint-class.js +85 -0
  66. package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +8 -4
  67. package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +19 -4
  68. package/lib/vendor/blamejs/lib/compliance-ai-act.js +6 -8
  69. package/lib/vendor/blamejs/lib/content-credentials.js +1 -1
  70. package/lib/vendor/blamejs/lib/content-digest.js +2 -1
  71. package/lib/vendor/blamejs/lib/cookies.js +13 -3
  72. package/lib/vendor/blamejs/lib/cose.js +31 -16
  73. package/lib/vendor/blamejs/lib/crypto-field.js +32 -0
  74. package/lib/vendor/blamejs/lib/crypto-oprf.js +11 -2
  75. package/lib/vendor/blamejs/lib/crypto-xwing.js +22 -4
  76. package/lib/vendor/blamejs/lib/crypto.js +314 -19
  77. package/lib/vendor/blamejs/lib/csp.js +11 -3
  78. package/lib/vendor/blamejs/lib/daemon.js +270 -24
  79. package/lib/vendor/blamejs/lib/dark-patterns.js +5 -2
  80. package/lib/vendor/blamejs/lib/db-declare-view.js +2 -2
  81. package/lib/vendor/blamejs/lib/db-query.js +34 -7
  82. package/lib/vendor/blamejs/lib/db.js +18 -6
  83. package/lib/vendor/blamejs/lib/dbsc.js +17 -0
  84. package/lib/vendor/blamejs/lib/dev.js +21 -2
  85. package/lib/vendor/blamejs/lib/dsr.js +157 -102
  86. package/lib/vendor/blamejs/lib/external-db.js +41 -2
  87. package/lib/vendor/blamejs/lib/file-upload.js +25 -7
  88. package/lib/vendor/blamejs/lib/flag-providers.js +27 -15
  89. package/lib/vendor/blamejs/lib/forms.js +113 -27
  90. package/lib/vendor/blamejs/lib/gate-contract.js +23 -10
  91. package/lib/vendor/blamejs/lib/gdpr-ropa.js +8 -1
  92. package/lib/vendor/blamejs/lib/guard-agent-registry.js +1 -1
  93. package/lib/vendor/blamejs/lib/guard-archive.js +2 -2
  94. package/lib/vendor/blamejs/lib/guard-cidr.js +27 -1
  95. package/lib/vendor/blamejs/lib/guard-graphql.js +30 -11
  96. package/lib/vendor/blamejs/lib/guard-html.js +26 -53
  97. package/lib/vendor/blamejs/lib/guard-image.js +24 -5
  98. package/lib/vendor/blamejs/lib/guard-imap-command.js +10 -2
  99. package/lib/vendor/blamejs/lib/guard-jmap.js +19 -3
  100. package/lib/vendor/blamejs/lib/guard-jwt.js +18 -2
  101. package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +2 -2
  102. package/lib/vendor/blamejs/lib/guard-managesieve-command.js +10 -2
  103. package/lib/vendor/blamejs/lib/guard-markdown.js +11 -24
  104. package/lib/vendor/blamejs/lib/guard-pdf.js +18 -2
  105. package/lib/vendor/blamejs/lib/guard-pop3-command.js +10 -2
  106. package/lib/vendor/blamejs/lib/guard-regex.js +8 -5
  107. package/lib/vendor/blamejs/lib/guard-svg.js +31 -32
  108. package/lib/vendor/blamejs/lib/guard-time.js +1 -1
  109. package/lib/vendor/blamejs/lib/guard-uuid.js +2 -2
  110. package/lib/vendor/blamejs/lib/html-balance.js +3 -3
  111. package/lib/vendor/blamejs/lib/http-client-cache.js +82 -4
  112. package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +16 -1
  113. package/lib/vendor/blamejs/lib/http-client.js +39 -7
  114. package/lib/vendor/blamejs/lib/http-message-signature.js +35 -1
  115. package/lib/vendor/blamejs/lib/i18n-messageformat.js +31 -6
  116. package/lib/vendor/blamejs/lib/i18n.js +35 -21
  117. package/lib/vendor/blamejs/lib/incident-report.js +8 -1
  118. package/lib/vendor/blamejs/lib/ip-utils.js +11 -1
  119. package/lib/vendor/blamejs/lib/json-path.js +23 -1
  120. package/lib/vendor/blamejs/lib/jwk.js +20 -3
  121. package/lib/vendor/blamejs/lib/link-header.js +2 -1
  122. package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +5 -1
  123. package/lib/vendor/blamejs/lib/log-stream-otlp.js +5 -1
  124. package/lib/vendor/blamejs/lib/log-stream.js +8 -3
  125. package/lib/vendor/blamejs/lib/mail-auth.js +123 -22
  126. package/lib/vendor/blamejs/lib/mail-bimi.js +1 -1
  127. package/lib/vendor/blamejs/lib/mail-bounce.js +8 -0
  128. package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +46 -10
  129. package/lib/vendor/blamejs/lib/mail-dav.js +22 -3
  130. package/lib/vendor/blamejs/lib/mail-dkim.js +96 -30
  131. package/lib/vendor/blamejs/lib/mail-helo.js +6 -1
  132. package/lib/vendor/blamejs/lib/mail-scan.js +23 -16
  133. package/lib/vendor/blamejs/lib/mail-send-deliver.js +34 -8
  134. package/lib/vendor/blamejs/lib/mail-server-imap.js +3 -4
  135. package/lib/vendor/blamejs/lib/mail-server-managesieve.js +7 -11
  136. package/lib/vendor/blamejs/lib/mail-server-mx.js +93 -7
  137. package/lib/vendor/blamejs/lib/mail-server-registry.js +8 -2
  138. package/lib/vendor/blamejs/lib/mail.js +15 -5
  139. package/lib/vendor/blamejs/lib/metrics.js +268 -63
  140. package/lib/vendor/blamejs/lib/middleware/age-gate.js +7 -1
  141. package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +1 -1
  142. package/lib/vendor/blamejs/lib/middleware/body-parser.js +19 -4
  143. package/lib/vendor/blamejs/lib/middleware/bot-guard.js +5 -9
  144. package/lib/vendor/blamejs/lib/middleware/csp-report.js +40 -8
  145. package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +24 -10
  146. package/lib/vendor/blamejs/lib/middleware/dpop.js +10 -5
  147. package/lib/vendor/blamejs/lib/middleware/index.js +6 -1
  148. package/lib/vendor/blamejs/lib/middleware/nel.js +1 -1
  149. package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +1 -1
  150. package/lib/vendor/blamejs/lib/middleware/rate-limit.js +12 -1
  151. package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +1 -1
  152. package/lib/vendor/blamejs/lib/middleware/scim-server.js +1 -1
  153. package/lib/vendor/blamejs/lib/middleware/tus-upload.js +6 -2
  154. package/lib/vendor/blamejs/lib/mtls-ca.js +18 -2
  155. package/lib/vendor/blamejs/lib/network-dns-resolver.js +11 -1
  156. package/lib/vendor/blamejs/lib/network-dns.js +21 -2
  157. package/lib/vendor/blamejs/lib/network-tls.js +69 -7
  158. package/lib/vendor/blamejs/lib/nonce-store.js +9 -1
  159. package/lib/vendor/blamejs/lib/object-store/gcs.js +7 -0
  160. package/lib/vendor/blamejs/lib/object-store/sigv4.js +31 -0
  161. package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +1 -1
  162. package/lib/vendor/blamejs/lib/outbox.js +1 -1
  163. package/lib/vendor/blamejs/lib/parsers/safe-ini.js +9 -1
  164. package/lib/vendor/blamejs/lib/parsers/safe-toml.js +10 -1
  165. package/lib/vendor/blamejs/lib/permissions.js +6 -3
  166. package/lib/vendor/blamejs/lib/pid-probe.js +55 -0
  167. package/lib/vendor/blamejs/lib/pqc-agent.js +8 -1
  168. package/lib/vendor/blamejs/lib/pqc-software.js +3 -3
  169. package/lib/vendor/blamejs/lib/pubsub.js +20 -9
  170. package/lib/vendor/blamejs/lib/queue-local.js +8 -1
  171. package/lib/vendor/blamejs/lib/queue-redis.js +5 -0
  172. package/lib/vendor/blamejs/lib/redact.js +54 -0
  173. package/lib/vendor/blamejs/lib/restore-bundle.js +10 -2
  174. package/lib/vendor/blamejs/lib/restore.js +19 -0
  175. package/lib/vendor/blamejs/lib/retention.js +12 -4
  176. package/lib/vendor/blamejs/lib/router.js +60 -6
  177. package/lib/vendor/blamejs/lib/safe-buffer.js +69 -0
  178. package/lib/vendor/blamejs/lib/safe-decompress.js +8 -2
  179. package/lib/vendor/blamejs/lib/safe-dns.js +25 -20
  180. package/lib/vendor/blamejs/lib/safe-ical.js +7 -3
  181. package/lib/vendor/blamejs/lib/safe-mime.js +12 -1
  182. package/lib/vendor/blamejs/lib/safe-object.js +80 -0
  183. package/lib/vendor/blamejs/lib/safe-path.js +52 -4
  184. package/lib/vendor/blamejs/lib/safe-redirect.js +10 -2
  185. package/lib/vendor/blamejs/lib/safe-schema.js +4 -1
  186. package/lib/vendor/blamejs/lib/safe-sieve.js +33 -1
  187. package/lib/vendor/blamejs/lib/safe-sql.js +88 -0
  188. package/lib/vendor/blamejs/lib/safe-vcard.js +7 -3
  189. package/lib/vendor/blamejs/lib/scheduler.js +8 -1
  190. package/lib/vendor/blamejs/lib/security-assert.js +6 -6
  191. package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +74 -27
  192. package/lib/vendor/blamejs/lib/self-update.js +517 -87
  193. package/lib/vendor/blamejs/lib/server-timing.js +2 -4
  194. package/lib/vendor/blamejs/lib/session.js +34 -12
  195. package/lib/vendor/blamejs/lib/sql.js +15 -1
  196. package/lib/vendor/blamejs/lib/ssrf-guard.js +52 -0
  197. package/lib/vendor/blamejs/lib/static.js +55 -13
  198. package/lib/vendor/blamejs/lib/storage.js +8 -2
  199. package/lib/vendor/blamejs/lib/subject.js +6 -1
  200. package/lib/vendor/blamejs/lib/tenant-quota.js +52 -13
  201. package/lib/vendor/blamejs/lib/tls-exporter.js +3 -3
  202. package/lib/vendor/blamejs/lib/tsa.js +34 -13
  203. package/lib/vendor/blamejs/lib/uri-template.js +8 -1
  204. package/lib/vendor/blamejs/lib/vault/index.js +13 -0
  205. package/lib/vendor/blamejs/lib/vc.js +44 -5
  206. package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +26 -26
  207. package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +792 -1
  208. package/lib/vendor/blamejs/lib/vendor/noble-curves.cjs +3443 -1
  209. package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +2737 -1
  210. package/lib/vendor/blamejs/lib/vendor/pki.cjs +39550 -13
  211. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +55 -53
  212. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5551 -5554
  213. package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +22459 -32
  214. package/lib/vendor/blamejs/lib/watcher.js +89 -17
  215. package/lib/vendor/blamejs/lib/webhook-dispatcher.js +25 -3
  216. package/lib/vendor/blamejs/lib/webhook.js +12 -2
  217. package/lib/vendor/blamejs/lib/ws-client.js +32 -1
  218. package/lib/vendor/blamejs/lib/xml-c14n.js +29 -1
  219. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +1 -1
  220. package/lib/vendor/blamejs/package-lock.json +2 -2
  221. package/lib/vendor/blamejs/package.json +1 -1
  222. package/lib/vendor/blamejs/release-notes/v0.16.x.json +1462 -0
  223. package/lib/vendor/blamejs/release-notes/v0.17.0.json +31 -0
  224. package/lib/vendor/blamejs/release-notes/v0.17.1.json +31 -0
  225. package/lib/vendor/blamejs/release-notes/v0.17.10.json +30 -0
  226. package/lib/vendor/blamejs/release-notes/v0.17.11.json +22 -0
  227. package/lib/vendor/blamejs/release-notes/v0.17.12.json +18 -0
  228. package/lib/vendor/blamejs/release-notes/v0.17.13.json +77 -0
  229. package/lib/vendor/blamejs/release-notes/v0.17.14.json +40 -0
  230. package/lib/vendor/blamejs/release-notes/v0.17.15.json +18 -0
  231. package/lib/vendor/blamejs/release-notes/v0.17.16.json +27 -0
  232. package/lib/vendor/blamejs/release-notes/v0.17.17.json +31 -0
  233. package/lib/vendor/blamejs/release-notes/v0.17.18.json +18 -0
  234. package/lib/vendor/blamejs/release-notes/v0.17.19.json +18 -0
  235. package/lib/vendor/blamejs/release-notes/v0.17.2.json +26 -0
  236. package/lib/vendor/blamejs/release-notes/v0.17.20.json +43 -0
  237. package/lib/vendor/blamejs/release-notes/v0.17.21.json +26 -0
  238. package/lib/vendor/blamejs/release-notes/v0.17.22.json +18 -0
  239. package/lib/vendor/blamejs/release-notes/v0.17.3.json +43 -0
  240. package/lib/vendor/blamejs/release-notes/v0.17.4.json +35 -0
  241. package/lib/vendor/blamejs/release-notes/v0.17.5.json +26 -0
  242. package/lib/vendor/blamejs/release-notes/v0.17.6.json +26 -0
  243. package/lib/vendor/blamejs/release-notes/v0.17.7.json +35 -0
  244. package/lib/vendor/blamejs/release-notes/v0.17.8.json +22 -0
  245. package/lib/vendor/blamejs/release-notes/v0.17.9.json +26 -0
  246. package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +4 -0
  247. package/lib/vendor/blamejs/scripts/vendor-update.sh +293 -9
  248. package/lib/vendor/blamejs/socket.yml +94 -0
  249. package/lib/vendor/blamejs/test/00-primitives.js +605 -0
  250. package/lib/vendor/blamejs/test/helpers/drivers.js +12 -9
  251. package/lib/vendor/blamejs/test/integration/audit-stack-mysql.test.js +90 -1
  252. package/lib/vendor/blamejs/test/integration/audit-stack-postgres.test.js +122 -1
  253. package/lib/vendor/blamejs/test/integration/data-layer-mysql.test.js +30 -0
  254. package/lib/vendor/blamejs/test/integration/data-layer-pg.test.js +29 -0
  255. package/lib/vendor/blamejs/test/integration/dsr-cluster-mysql.test.js +479 -0
  256. package/lib/vendor/blamejs/test/integration/dsr-cluster-pg.test.js +487 -0
  257. package/lib/vendor/blamejs/test/integration/federation-auth.test.js +313 -5
  258. package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +80 -0
  259. package/lib/vendor/blamejs/test/integration/openid-federation-chain.test.js +275 -0
  260. package/lib/vendor/blamejs/test/integration/webhook-dispatcher-pg.test.js +96 -0
  261. package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +401 -0
  262. package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +1649 -2
  263. package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +33 -0
  264. package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +0 -0
  265. package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +60 -0
  266. package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +524 -0
  267. package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +891 -0
  268. package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +128 -1
  269. package/lib/vendor/blamejs/test/layer-0-primitives/archive-adapters.test.js +271 -0
  270. package/lib/vendor/blamejs/test/layer-0-primitives/archive-read.test.js +628 -1
  271. package/lib/vendor/blamejs/test/layer-0-primitives/archive-tar-read.test.js +0 -0
  272. package/lib/vendor/blamejs/test/layer-0-primitives/archive-wrap.test.js +227 -0
  273. package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +15 -0
  274. package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +73 -0
  275. package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file.test.js +114 -0
  276. package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-anchor.test.js +141 -0
  277. package/lib/vendor/blamejs/test/layer-0-primitives/audit-tools.test.js +624 -0
  278. package/lib/vendor/blamejs/test/layer-0-primitives/audit.test.js +769 -0
  279. package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +436 -0
  280. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth.test.js +1697 -0
  281. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oid4vp.test.js +495 -0
  282. package/lib/vendor/blamejs/test/layer-0-primitives/auth-password.test.js +500 -0
  283. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml.test.js +1809 -0
  284. package/lib/vendor/blamejs/test/layer-0-primitives/auth-status-list.test.js +243 -1
  285. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index.test.js +2226 -0
  286. package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +183 -0
  287. package/lib/vendor/blamejs/test/layer-0-primitives/base32.test.js +105 -0
  288. package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +693 -0
  289. package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +603 -0
  290. package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +557 -0
  291. package/lib/vendor/blamejs/test/layer-0-primitives/case-insensitive-security-token-guard.test.js +214 -0
  292. package/lib/vendor/blamejs/test/layer-0-primitives/cbor.test.js +25 -0
  293. package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +843 -6
  294. package/lib/vendor/blamejs/test/layer-0-primitives/ciba-authreqid-binding.test.js +77 -2
  295. package/lib/vendor/blamejs/test/layer-0-primitives/ciba.test.js +866 -0
  296. package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +18 -0
  297. package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +19 -0
  298. package/lib/vendor/blamejs/test/layer-0-primitives/cli.test.js +2790 -0
  299. package/lib/vendor/blamejs/test/layer-0-primitives/cluster-lease-renewal-ttl.test.js +114 -0
  300. package/lib/vendor/blamejs/test/layer-0-primitives/cluster.test.js +1032 -0
  301. package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +575 -0
  302. package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +739 -1
  303. package/lib/vendor/blamejs/test/layer-0-primitives/codepoint-class.test.js +8 -0
  304. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +194 -0
  305. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-lifecycle-proto-key.test.js +104 -0
  306. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +254 -0
  307. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +613 -3
  308. package/lib/vendor/blamejs/test/layer-0-primitives/cookies.test.js +140 -0
  309. package/lib/vendor/blamejs/test/layer-0-primitives/cose.test.js +407 -0
  310. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-adversarial.test.js +352 -0
  311. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field-derived-hash.test.js +32 -0
  312. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field.test.js +575 -0
  313. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +10 -0
  314. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +24 -0
  315. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-oprf.test.js +17 -0
  316. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-spki-pin.test.js +183 -0
  317. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-xwing.test.js +48 -0
  318. package/lib/vendor/blamejs/test/layer-0-primitives/crypto.test.js +345 -0
  319. package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +58 -0
  320. package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +48 -0
  321. package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +459 -1
  322. package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +19 -0
  323. package/lib/vendor/blamejs/test/layer-0-primitives/db-query.test.js +1019 -0
  324. package/lib/vendor/blamejs/test/layer-0-primitives/db-raw-residency-gate.test.js +77 -0
  325. package/lib/vendor/blamejs/test/layer-0-primitives/db.test.js +1621 -0
  326. package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +462 -3
  327. package/lib/vendor/blamejs/test/layer-0-primitives/dnssec.test.js +323 -0
  328. package/lib/vendor/blamejs/test/layer-0-primitives/dpop-middleware-verify.test.js +562 -0
  329. package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +901 -1
  330. package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +249 -0
  331. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +561 -0
  332. package/lib/vendor/blamejs/test/layer-0-primitives/external-db.test.js +1214 -0
  333. package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +21 -0
  334. package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +46 -20
  335. package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +147 -3
  336. package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +907 -38
  337. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload-content-safety-skip-audit.test.js +29 -0
  338. package/lib/vendor/blamejs/test/layer-0-primitives/file-upload.test.js +1135 -0
  339. package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +30 -0
  340. package/lib/vendor/blamejs/test/layer-0-primitives/forms.test.js +747 -0
  341. package/lib/vendor/blamejs/test/layer-0-primitives/gate-contract.test.js +1855 -0
  342. package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +30 -0
  343. package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +86 -0
  344. package/lib/vendor/blamejs/test/layer-0-primitives/guard-auth.test.js +117 -0
  345. package/lib/vendor/blamejs/test/layer-0-primitives/guard-cidr.test.js +151 -0
  346. package/lib/vendor/blamejs/test/layer-0-primitives/guard-domain.test.js +422 -0
  347. package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +424 -0
  348. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-gate-disposition-coverage.test.js → guard-gate-disposition.test.js} +1 -1
  349. package/lib/vendor/blamejs/test/layer-0-primitives/guard-graphql.test.js +340 -0
  350. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +29 -0
  351. package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +28 -0
  352. package/lib/vendor/blamejs/test/layer-0-primitives/guard-image.test.js +519 -45
  353. package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
  354. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +51 -0
  355. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jsonpath.test.js +66 -0
  356. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jwt.test.js +436 -0
  357. package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +25 -0
  358. package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +16 -0
  359. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mime.test.js +86 -0
  360. package/lib/vendor/blamejs/test/layer-0-primitives/guard-oauth.test.js +140 -0
  361. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pdf.test.js +80 -0
  362. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +27 -0
  363. package/lib/vendor/blamejs/test/layer-0-primitives/guard-regex.test.js +99 -0
  364. package/lib/vendor/blamejs/test/layer-0-primitives/guard-shell.test.js +76 -0
  365. package/lib/vendor/blamejs/test/layer-0-primitives/{guard-sql-coverage.test.js → guard-sql.test.js} +3 -3
  366. package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +524 -0
  367. package/lib/vendor/blamejs/test/layer-0-primitives/guard-template.test.js +71 -0
  368. package/lib/vendor/blamejs/test/layer-0-primitives/guard-time.test.js +92 -0
  369. package/lib/vendor/blamejs/test/layer-0-primitives/guard-uuid.test.js +86 -0
  370. package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +38 -0
  371. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache-authorization.test.js +347 -0
  372. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +908 -0
  373. package/lib/vendor/blamejs/test/layer-0-primitives/http-client.test.js +2874 -0
  374. package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +643 -0
  375. package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +38 -0
  376. package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +1153 -1
  377. package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +494 -0
  378. package/lib/vendor/blamejs/test/layer-0-primitives/ip-utils.test.js +30 -0
  379. package/lib/vendor/blamejs/test/layer-0-primitives/jsdoc-example-execution.test.js +177 -0
  380. package/lib/vendor/blamejs/test/layer-0-primitives/json-path.test.js +103 -0
  381. package/lib/vendor/blamejs/test/layer-0-primitives/json-schema.test.js +214 -0
  382. package/lib/vendor/blamejs/test/layer-0-primitives/jwk.test.js +41 -0
  383. package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +276 -0
  384. package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
  385. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream.test.js +241 -0
  386. package/lib/vendor/blamejs/test/layer-0-primitives/log.test.js +106 -0
  387. package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +441 -0
  388. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +2136 -4
  389. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +759 -12
  390. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +811 -1
  391. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +401 -3
  392. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +751 -8
  393. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +864 -0
  394. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto.test.js +110 -0
  395. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +830 -1
  396. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +635 -86
  397. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +818 -0
  398. package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +27 -0
  399. package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +199 -0
  400. package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +686 -2
  401. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +778 -0
  402. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +1438 -0
  403. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +449 -6
  404. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +773 -2
  405. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +623 -3
  406. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +55 -0
  407. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +13 -0
  408. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +877 -1
  409. package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +326 -0
  410. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +55 -0
  411. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +242 -0
  412. package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +1596 -2
  413. package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +440 -4
  414. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +89 -0
  415. package/lib/vendor/blamejs/test/layer-0-primitives/metrics.test.js +1230 -0
  416. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-assetlinks.test.js +113 -0
  417. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-body-parser.test.js +1169 -0
  418. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-bot-disclose.test.js +123 -0
  419. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-cookies.test.js +108 -0
  420. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-gpc.test.js +121 -0
  421. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-headers.test.js +163 -0
  422. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-host-allowlist.test.js +154 -0
  423. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-require-content-type.test.js +127 -0
  424. package/lib/vendor/blamejs/test/layer-0-primitives/{middleware-tus-upload-coverage.test.js → middleware-tus-upload.test.js} +45 -0
  425. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-web-app-manifest.test.js +132 -0
  426. package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-crl-fingerprint-only.test.js +92 -0
  427. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +65 -0
  428. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +1727 -1
  429. package/lib/vendor/blamejs/test/layer-0-primitives/network-nts.test.js +699 -0
  430. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy.test.js +1181 -0
  431. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +1876 -3
  432. package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +32 -0
  433. package/lib/vendor/blamejs/test/layer-0-primitives/nonce-store-enforce-replay-nonboolean.test.js +81 -0
  434. package/lib/vendor/blamejs/test/layer-0-primitives/ntp-check.test.js +122 -0
  435. package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +378 -0
  436. package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +77 -0
  437. package/lib/vendor/blamejs/test/layer-0-primitives/oid4vci.test.js +1016 -0
  438. package/lib/vendor/blamejs/test/layer-0-primitives/openid-federation.test.js +946 -0
  439. package/lib/vendor/blamejs/test/layer-0-primitives/outbox.test.js +818 -0
  440. package/lib/vendor/blamejs/test/layer-0-primitives/own-property-membership-guards.test.js +109 -0
  441. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-safe-toml.test.js +543 -0
  442. package/lib/vendor/blamejs/test/layer-0-primitives/{parsers-safe-yaml-coverage.test.js → parsers-safe-yaml.test.js} +2 -2
  443. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +73 -0
  444. package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +649 -0
  445. package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +524 -0
  446. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +22 -0
  447. package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +295 -0
  448. package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +36 -0
  449. package/lib/vendor/blamejs/test/layer-0-primitives/queue.test.js +83 -0
  450. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-xff-spoofing.test.js +34 -0
  451. package/lib/vendor/blamejs/test/layer-0-primitives/redact.test.js +1031 -0
  452. package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +94 -0
  453. package/lib/vendor/blamejs/test/layer-0-primitives/require-bound-key.test.js +401 -0
  454. package/lib/vendor/blamejs/test/layer-0-primitives/restore-empty-manifest-wipe.test.js +154 -0
  455. package/lib/vendor/blamejs/test/layer-0-primitives/retention.test.js +600 -0
  456. package/lib/vendor/blamejs/test/layer-0-primitives/router-host-path-injection.test.js +231 -0
  457. package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +21 -0
  458. package/lib/vendor/blamejs/test/layer-0-primitives/router.test.js +1277 -0
  459. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async.test.js +133 -0
  460. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer-linear-scans.test.js +14 -0
  461. package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer.test.js +80 -0
  462. package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +28 -0
  463. package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +245 -0
  464. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +32 -0
  465. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ini.test.js +376 -0
  466. package/lib/vendor/blamejs/test/layer-0-primitives/safe-json.test.js +175 -0
  467. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +518 -0
  468. package/lib/vendor/blamejs/test/layer-0-primitives/safe-object.test.js +62 -0
  469. package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +30 -0
  470. package/lib/vendor/blamejs/test/layer-0-primitives/safe-schema.test.js +104 -0
  471. package/lib/vendor/blamejs/test/layer-0-primitives/safe-sql.test.js +142 -0
  472. package/lib/vendor/blamejs/test/layer-0-primitives/safe-url.test.js +112 -0
  473. package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +26 -0
  474. package/lib/vendor/blamejs/test/layer-0-primitives/scheduler.test.js +157 -0
  475. package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +396 -0
  476. package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +930 -0
  477. package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +755 -82
  478. package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +1053 -0
  479. package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +200 -0
  480. package/lib/vendor/blamejs/test/layer-0-primitives/session-strict-binding-missing-failclosed.test.js +110 -0
  481. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +636 -0
  482. package/lib/vendor/blamejs/test/layer-0-primitives/sql-offset-without-limit.test.js +94 -0
  483. package/lib/vendor/blamejs/test/layer-0-primitives/sql.test.js +1190 -0
  484. package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +21 -0
  485. package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +850 -0
  486. package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +146 -0
  487. package/lib/vendor/blamejs/test/layer-0-primitives/storage.test.js +621 -0
  488. package/lib/vendor/blamejs/test/layer-0-primitives/subject.test.js +47 -0
  489. package/lib/vendor/blamejs/test/layer-0-primitives/template.test.js +582 -0
  490. package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +587 -25
  491. package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +11 -0
  492. package/lib/vendor/blamejs/test/layer-0-primitives/tsa.test.js +524 -63
  493. package/lib/vendor/blamejs/test/layer-0-primitives/uri-template.test.js +27 -0
  494. package/lib/vendor/blamejs/test/layer-0-primitives/vault-rotate.test.js +866 -0
  495. package/lib/vendor/blamejs/test/layer-0-primitives/vault.test.js +74 -0
  496. package/lib/vendor/blamejs/test/layer-0-primitives/vc.test.js +215 -0
  497. package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +550 -0
  498. package/lib/vendor/blamejs/test/layer-0-primitives/webhook-dispatcher.test.js +388 -0
  499. package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +262 -0
  500. package/lib/vendor/blamejs/test/layer-0-primitives/websocket.test.js +1294 -0
  501. package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +629 -0
  502. package/lib/vendor/blamejs/test/layer-0-primitives/xml-c14n-attr-normalization.test.js +164 -0
  503. package/lib/vendor/blamejs/test/smoke.js +2 -0
  504. package/package.json +1 -1
  505. package/lib/vendor/blamejs/release-notes/v0.16.0.json +0 -44
  506. package/lib/vendor/blamejs/release-notes/v0.16.1.json +0 -36
  507. package/lib/vendor/blamejs/release-notes/v0.16.2.json +0 -71
  508. package/lib/vendor/blamejs/release-notes/v0.16.3.json +0 -71
  509. package/lib/vendor/blamejs/test/layer-0-primitives/acme-coverage.test.js +0 -441
  510. package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth-coverage.test.js +0 -482
  511. package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml-coverage.test.js +0 -671
  512. package/lib/vendor/blamejs/test/layer-0-primitives/backup-index-coverage.test.js +0 -690
  513. package/lib/vendor/blamejs/test/layer-0-primitives/cli-coverage.test.js +0 -238
  514. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials-coverage.test.js +0 -319
  515. package/lib/vendor/blamejs/test/layer-0-primitives/keychain-coverage.test.js +0 -0
  516. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth-coverage.test.js +0 -437
  517. package/lib/vendor/blamejs/test/layer-0-primitives/mcp-coverage.test.js +0 -443
  518. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-coverage.test.js +0 -395
  519. package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy-coverage.test.js +0 -565
  520. package/lib/vendor/blamejs/test/layer-0-primitives/router-coverage.test.js +0 -592
  521. package/lib/vendor/blamejs/test/layer-0-primitives/sql-coverage.test.js +0 -422
  522. package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +0 -573
@@ -311,16 +311,21 @@ function create(opts) {
311
311
 
312
312
  var middleware = async function dpopMiddleware(req, res, next) {
313
313
  var proofHeader = req.headers && req.headers.dpop;
314
+ // RFC 9449 §4.1 — only ONE DPoP header value per request. Check the
315
+ // array shape (repeated `DPoP:` header lines a custom server/proxy did
316
+ // not collapse) BEFORE the non-string guard: an array is not a string,
317
+ // so the guard below would otherwise shadow this branch and mislabel a
318
+ // duplicated proof as a missing one, letting the multiple-proof
319
+ // rejection never run.
320
+ if (Array.isArray(proofHeader)) {
321
+ return _writeUnauthorized(req, res, "invalid_dpop_proof",
322
+ "multiple DPoP headers are not allowed", null, onDeny, problemMode);
323
+ }
314
324
  if (typeof proofHeader !== "string" || proofHeader.length === 0) {
315
325
  return _writeUnauthorized(req, res,
316
326
  nonceMgr ? "use_dpop_nonce" : "invalid_dpop_proof",
317
327
  "DPoP header required", _freshNonce(), onDeny, problemMode);
318
328
  }
319
- // RFC 9449 §4.1 — only ONE DPoP header value per request.
320
- if (Array.isArray(proofHeader)) {
321
- return _writeUnauthorized(req, res, "invalid_dpop_proof",
322
- "multiple DPoP headers are not allowed", null, onDeny, problemMode);
323
- }
324
329
  // RFC 9449 §4.1 single-value invariant. node:http
325
330
  // collapses repeated headers into a comma-joined string when the
326
331
  // client ships `DPoP: proof1, DPoP: proof2`; the Array.isArray
@@ -120,7 +120,11 @@ module.exports = {
120
120
  tracePropagate: tracePropagate.create,
121
121
  tusUpload: tusUpload.create,
122
122
  webAppManifest: webAppManifest.create,
123
- clearSiteData: clearSiteData.create,
123
+ clearSiteData: Object.assign(clearSiteData.create, {
124
+ headerValue: clearSiteData.headerValue,
125
+ KNOWN_TYPES: clearSiteData.KNOWN_TYPES,
126
+ DEFAULT_TYPES: clearSiteData.DEFAULT_TYPES,
127
+ }),
124
128
  nel: nel.create,
125
129
  speculationRules: speculationRules.create,
126
130
  protectedResourceMetadata: protectedResourceMetadata.create,
@@ -186,3 +190,4 @@ module.exports = {
186
190
  };
187
191
 
188
192
  module.exports.tusUpload.memoryStore = tusUpload.memoryStore;
193
+ module.exports.tusUpload.close = tusUpload.close;
@@ -151,7 +151,7 @@ function create(opts) {
151
151
  // honor secure-origin report endpoints. Refusing at config-time so
152
152
  // an operator typo (`http://`) surfaces at boot, not as silent
153
153
  // never-fires-in-production.
154
- if (opts.collectorUrl.slice(0, 8) !== "https://") { // string-prefix length, not bytes
154
+ if (opts.collectorUrl.slice(0, 8).toLowerCase() !== "https://") { // RFC 3986 scheme is case-insensitive; string-prefix length, not bytes
155
155
  throw new TypeError(
156
156
  "middleware.nel: opts.collectorUrl must be https:// (browsers " +
157
157
  "ignore non-secure NEL collectors); got " + opts.collectorUrl);
@@ -100,7 +100,7 @@ var audit = lazyRequire(function () { return require("../audit"); });
100
100
  * @example
101
101
  * var b = require("@blamejs/core");
102
102
  * var app = b.router.create();
103
- * var doc = b.openapi.create({ title: "api", version: "1.0.0" });
103
+ * var doc = b.openapi.create({ info: { title: "api", version: "1.0.0" } });
104
104
  * app.use(b.middleware.openapiServe({
105
105
  * document: doc,
106
106
  * pretty: true,
@@ -570,7 +570,18 @@ function create(opts) {
570
570
  var middleware = function rateLimit(req, res, next) {
571
571
  if (_shouldSkip(req)) return next();
572
572
  var k = keyFn(req);
573
- if (scope === "per-route") k = (req.method || "GET") + ":" + (req.pathname || req.url || "/") + "|" + k;
573
+ // Per-route scope keys on the route PATH only never the query string. The
574
+ // query is not part of route identity; keying on it lets an attacker rotate
575
+ // a throwaway param (?nonce=N) to mint a fresh per-route bucket per request
576
+ // and evade the limit. req.pathname (set query-free by b.router) is
577
+ // preferred; when it is absent (a raw Node req handed to the middleware
578
+ // directly) fall back to req.url with the query stripped — the same strip
579
+ // every sibling guard (request-log / require-auth / network-allowlist)
580
+ // already applies.
581
+ if (scope === "per-route") {
582
+ var routePath = req.pathname || (req.url || "/").split("?")[0] || "/";
583
+ k = (req.method || "GET") + ":" + routePath + "|" + k;
584
+ }
574
585
 
575
586
  function _handle(verdict) {
576
587
  if (emitHeaders && typeof res.setHeader === "function") {
@@ -289,7 +289,7 @@ function create(opts) {
289
289
  keyId: record.id || null,
290
290
  });
291
291
  }
292
- } else if (!bCrypto().isCertRevoked(req.peerCert.raw, pinned)) {
292
+ } else if (!(req.peerCert && req.peerCert.raw) || !bCrypto().isCertRevoked(req.peerCert.raw, pinned)) {
293
293
  // isCertRevoked returns true on MATCH against the deny-list
294
294
  // shape; we use it here as a fingerprint-set membership test
295
295
  // because it does the same constant-time hex/colon comparison
@@ -262,7 +262,7 @@ async function _dispatch(req, res, basePath, bearer, opts, maxPageSize, bulkCfg)
262
262
  if (req.method === "POST" && !resourceId) {
263
263
  _assertSchema(body, resourceType === "Users" ? SCIM_CORE_SCHEMA_USER : SCIM_CORE_SCHEMA_GROUP);
264
264
  var created = await impl.create(body, ctx);
265
- _writeJson(res, H.CREATED, created);
265
+ _writeJson(res, 201, created); // 201 Created (HTTP_STATUS has no CREATED key)
266
266
  return;
267
267
  }
268
268
 
@@ -511,8 +511,12 @@ function create(opts) {
511
511
  if (expHdr) headers["Upload-Expires"] = expHdr;
512
512
 
513
513
  // creation-with-upload: append the body in the same request when
514
- // Content-Type is application/offset+octet-stream.
515
- var contentType = req.headers["content-type"];
514
+ // Content-Type is application/offset+octet-stream. RFC 7231 §3.1.1.1 —
515
+ // the media type is case-insensitive and may carry parameters, so compare
516
+ // the lowercased type/subtype (a compliant `Application/Offset+Octet-Stream`
517
+ // must still take the append path).
518
+ var rawContentType = req.headers["content-type"];
519
+ var contentType = rawContentType ? String(rawContentType).split(";")[0].trim().toLowerCase() : "";
516
520
  if (hasCreationWithBody && contentType === "application/offset+octet-stream") {
517
521
  var chunk;
518
522
  try { chunk = await _readChunk(req, maxChunkSize); }
@@ -607,7 +607,21 @@ function create(opts) {
607
607
  "framework's bundled CA engine, which supports it");
608
608
  }
609
609
  var ca = await initCA();
610
- var revocations = revocationStore.list();
610
+ var allRevocations = revocationStore.list();
611
+ // A standard X.509 CRL (RFC 5280 §5.1) is keyed by certificate serial
612
+ // number. revoke({ fingerprint }) — a first-class revocation mode, and the
613
+ // value the require-mtls gate pins on — stores no serial (serialNumber is
614
+ // null). Such an entry cannot be represented in a CRL, so project it out
615
+ // here rather than handing a null serial to the CRL encoder: the encoder
616
+ // throws on it, which would break CRL generation for the ENTIRE registry,
617
+ // dropping the serial-keyed certs that CAN be published from every fresh
618
+ // CRL (a fail-open for those certs' published revocation). Fingerprint-only
619
+ // revocations stay enforced through isRevoked()/the mTLS gate, which is
620
+ // fingerprint-aware; the count that could not be represented is surfaced.
621
+ var revocations = allRevocations.filter(function (r) {
622
+ return r && r.serialNumber != null;
623
+ });
624
+ var fingerprintOnlyOmitted = allRevocations.length - revocations.length;
611
625
  var nowMs = Date.now();
612
626
  var thisUpdate = opts3.thisUpdate || new Date(nowMs);
613
627
  var nextUpdate = opts3.nextUpdate ||
@@ -627,7 +641,9 @@ function create(opts) {
627
641
  atomicFile.writeSync(paths.crl, crlPem, { mode: 0o644 });
628
642
  }
629
643
  return { crlPem: crlPem, thisUpdate: thisUpdate, nextUpdate: nextUpdate,
630
- entryCount: revocations.length, path: paths.crl };
644
+ entryCount: revocations.length,
645
+ fingerprintOnlyOmitted: fingerprintOnlyOmitted,
646
+ path: paths.crl };
631
647
  }
632
648
 
633
649
  return {
@@ -323,7 +323,17 @@ function create(opts) {
323
323
  var filled;
324
324
  try { filled = await entry.promise; }
325
325
  finally { if (inflight.get(key) === entry) inflight.delete(key); }
326
- if (filled.stale) return filled.result;
326
+ if (filled.stale) {
327
+ // The validate: true AD-bit gate holds on the serve-stale path too —
328
+ // otherwise an upstream outage silently downgrades a DNSSEC-strict
329
+ // lookup to unauthenticated stale data (the verdict is per-response,
330
+ // RFC 4035 §3.2.3, so a stale entry cached AD=0 must still be refused).
331
+ if (validate && !filled.result.validated) {
332
+ throw new ResolverError("resolver/validate-failed",
333
+ "query: validate: true but served-stale response was AD=0 for " + name + "/" + qtype);
334
+ }
335
+ return filled.result;
336
+ }
327
337
  if (validate && !filled.validated) {
328
338
  throw new ResolverError("resolver/validate-failed",
329
339
  "query: validate: true but upstream returned AD=0 for " + name + "/" + qtype);
@@ -158,8 +158,12 @@ function _cachePutPositive(host, family, value) {
158
158
  }
159
159
 
160
160
  function _cachePutNegative(host, family, error) {
161
- if (STATE.cacheTtlMs <= 0) return;
162
- var ttl = STATE.cacheNegativeTtlMs > 0 ? STATE.cacheNegativeTtlMs : Math.min(STATE.cacheTtlMs, C.TIME.seconds(30));
161
+ // Effective negative TTL: an explicit cacheNegativeTtlMs applies even when the
162
+ // positive TTL is 0 (setCacheTtlMs(0, 60000) = positives off, negatives 60s);
163
+ // only fall back to the positive TTL when no explicit negative TTL is set.
164
+ var ttl = STATE.cacheNegativeTtlMs > 0 ? STATE.cacheNegativeTtlMs
165
+ : (STATE.cacheTtlMs > 0 ? Math.min(STATE.cacheTtlMs, C.TIME.seconds(30)) : 0);
166
+ if (ttl <= 0) return;
163
167
  NEGATIVE_CACHE.set(host + "/" + family, {
164
168
  error: error,
165
169
  expiresAt: _now() + ttl,
@@ -237,6 +241,14 @@ function setCacheTtlMs(ms, negativeMs) {
237
241
  "dns.setCacheTtlMs negativeMs: expected non-negative finite number, got " + JSON.stringify(negativeMs));
238
242
  }
239
243
  STATE.cacheNegativeTtlMs = negativeMs;
244
+ } else {
245
+ // No explicit negative TTL this call — clear any stale explicit value so it
246
+ // can't outlive the setCacheTtlMs call that set it. Otherwise
247
+ // setCacheTtlMs(0) after an earlier setCacheTtlMs(ms, negMs) would leave
248
+ // negative caching alive (sticky transient failures) even though caching was
249
+ // just disabled; with this cleared, negative TTL derives from the positive
250
+ // TTL, so ms=0 disables both positive and negative caching.
251
+ STATE.cacheNegativeTtlMs = 0;
240
252
  }
241
253
  if (ms === 0) _clearCache();
242
254
  }
@@ -1696,6 +1708,13 @@ async function resolveAaaa(host, opts) { return _resolveProtocol(host, 6, opts);
1696
1708
  // `type` defaults to "A"; "AAAA" routes through resolve6; SVCB / HTTPS
1697
1709
  // types route through the new querySvcb / queryHttps primitives.
1698
1710
  async function resolve(host, type, opts) {
1711
+ // A non-string `type` would throw a raw TypeError from .toUpperCase() (code
1712
+ // undefined, no .permanent) — reject it as a typed DnsError like every other
1713
+ // bad-type path, so a caller keying on err.permanent gets the right verdict.
1714
+ if (type !== undefined && type !== null && typeof type !== "string") {
1715
+ throw new DnsError("dns/unsupported-type",
1716
+ "dns.resolve: type must be a string (got " + typeof type + ")");
1717
+ }
1699
1718
  type = (type || "A").toUpperCase();
1700
1719
  if (type === "A") return _resolveProtocol(host, 4, opts);
1701
1720
  if (type === "AAAA") return _resolveProtocol(host, 6, opts);
@@ -13,6 +13,7 @@ var atomicFile = require("./atomic-file");
13
13
  var bCrypto = require("./crypto");
14
14
  var C = require("./constants");
15
15
  var safeBuffer = require("./safe-buffer");
16
+ var safeJson = require("./safe-json");
16
17
  var validateOpts = require("./validate-opts");
17
18
  var lazyRequire = require("./lazy-require");
18
19
  var safeAsync = require("./safe-async");
@@ -3071,6 +3072,49 @@ function _matchDnsNamePattern(pattern, host) {
3071
3072
  return true;
3072
3073
  }
3073
3074
 
3075
+ // Node renders a SAN value that contains separators/control chars as a
3076
+ // JSON-quoted string (the CVE-2021-44531/44532 remediation), e.g. a single
3077
+ // dNSName whose value is `x, DNS:y.com` appears as `DNS:"x, DNS:y.com"`. A
3078
+ // naive split(",") would break that one entry into several and smuggle a
3079
+ // clean `DNS:y.com` token the certificate never asserted — a hostname
3080
+ // verification bypass. Split on commas OUTSIDE quotes and JSON-decode quoted
3081
+ // spans, mirroring Node's own splitEscapedAltNames, so each entry is exactly
3082
+ // one GeneralName.
3083
+ var _SAN_QUOTED_RE = /^"(?:[^"\\]|\\.)*"/;
3084
+ function _splitEscapedAltNames(altNames) {
3085
+ var result = [];
3086
+ var current = "";
3087
+ var offset = 0;
3088
+ while (offset !== altNames.length) {
3089
+ var nextSep = altNames.indexOf(",", offset);
3090
+ var nextQuote = altNames.indexOf('"', offset);
3091
+ if (nextQuote !== -1 && (nextSep === -1 || nextQuote < nextSep)) {
3092
+ current += altNames.substring(offset, nextQuote);
3093
+ var match = _SAN_QUOTED_RE.exec(altNames.substring(nextQuote));
3094
+ if (!match) {
3095
+ // Malformed quoting — refuse to parse rather than guess.
3096
+ throw new TlsTrustError("tls/altname-format",
3097
+ "malformed quoted subjectAltName entry");
3098
+ }
3099
+ // match[0] is a JSON string literal (the `_SAN_QUOTED_RE` shape); route
3100
+ // through the framework JSON primitive rather than raw JSON.parse.
3101
+ current += safeJson.parse(match[0]);
3102
+ offset = nextQuote + match[0].length;
3103
+ } else if (nextSep !== -1) {
3104
+ current += altNames.substring(offset, nextSep);
3105
+ result.push(current);
3106
+ current = "";
3107
+ offset = nextSep + 1;
3108
+ if (altNames.charAt(offset) === " ") offset += 1; // skip the ", " gap
3109
+ } else {
3110
+ current += altNames.substring(offset);
3111
+ offset = altNames.length;
3112
+ }
3113
+ }
3114
+ result.push(current);
3115
+ return result;
3116
+ }
3117
+
3074
3118
  function _parseSanString(rawSubjectAltName) {
3075
3119
  // Node exposes the SAN as a comma-separated string of typed entries:
3076
3120
  // "DNS:foo.example.com, DNS:*.example.com, IP Address:198.51.100.1,
@@ -3081,13 +3125,27 @@ function _parseSanString(rawSubjectAltName) {
3081
3125
  if (typeof rawSubjectAltName !== "string" || rawSubjectAltName.length === 0) {
3082
3126
  return { dns: dns, ips: ips };
3083
3127
  }
3084
- var entries = rawSubjectAltName.split(",");
3128
+ var entries;
3129
+ try {
3130
+ entries = _splitEscapedAltNames(rawSubjectAltName);
3131
+ } catch (_e) {
3132
+ // Malformed SAN quoting → assert no identifiers (fail closed).
3133
+ return { dns: dns, ips: ips };
3134
+ }
3085
3135
  for (var i = 0; i < entries.length; i += 1) {
3086
- var raw = entries[i].trim();
3087
- var colon = raw.indexOf(":");
3136
+ var entry = entries[i];
3137
+ var colon = entry.indexOf(":");
3088
3138
  if (colon === -1) continue;
3089
- var kind = raw.slice(0, colon).trim();
3090
- var val = raw.slice(colon + 1).trim();
3139
+ // The GeneralName TYPE prefix is emitted by _splitEscapedAltNames exactly
3140
+ // (no surrounding whitespace), and the value MUST be preserved EXACTLY —
3141
+ // NOT trimmed. Trimming would strip leading/trailing control whitespace a
3142
+ // decoded quoted value can carry: a dNSName that is a newline followed by
3143
+ // "victim.com" decodes to "\nvictim.com", and a trim would reduce it to a
3144
+ // bare "victim.com" that matches a name the certificate never asserts — a
3145
+ // bypass. Node compares the decoded value verbatim, so an identifier with
3146
+ // such characters simply fails the exact match and is rejected.
3147
+ var kind = entry.slice(0, colon);
3148
+ var val = entry.slice(colon + 1);
3091
3149
  if (kind === "DNS") {
3092
3150
  dns.push(val);
3093
3151
  } else if (kind === "IP Address" || kind === "IP") {
@@ -3101,9 +3159,13 @@ function _parseSanString(rawSubjectAltName) {
3101
3159
 
3102
3160
  function _normalizeIpForCompare(ip) {
3103
3161
  // Lower-case + strip embedded brackets so "[::1]" / "::1" / "::0001"
3104
- // all compare equal.
3162
+ // all compare equal. Do NOT trim surrounding whitespace: a valid IP never
3163
+ // carries any, and trimming would let a smuggled SAN value like
3164
+ // "1.2.3.4\n" (a decoded quoted entry) normalize to a clean IP and match a
3165
+ // host the certificate never asserts — net.isIP rejects such a value, so
3166
+ // preserving it verbatim fails closed.
3105
3167
  if (typeof ip !== "string") return null;
3106
- var s = ip.trim();
3168
+ var s = ip;
3107
3169
  if (s.length >= 2 && s.charAt(0) === "[" && s.charAt(s.length - 1) === "]") {
3108
3170
  s = s.slice(1, -1);
3109
3171
  }
@@ -291,7 +291,15 @@ async function enforceReplay(store, jti, expireAtMs, opts) {
291
291
  throw new opts.errorClass(opts.storeFailedCode,
292
292
  "replayStore.checkAndInsert threw: " + ((e && e.message) || String(e)));
293
293
  }
294
- if (inserted === false) {
294
+ // Fail CLOSED on ANY non-truthy result, not just a literal `false`. The
295
+ // recommended backends (Redis SETNX, SQL INSERT ... ON CONFLICT) signal a
296
+ // duplicate with a non-`false` falsy value — `SET ... NX` returns null, the
297
+ // SETNX command / an INSERT returns 0 — so an `=== false` compare would miss
298
+ // the replay and admit the token (fail open). Only a truthy result is a
299
+ // positive "first-seen" confirmation; anything else is treated as a replay.
300
+ // Mirrors the truthiness guard every inline consumer already uses
301
+ // (b.auth.oauth `!inserted`, api-encrypt `!freshNonce`, webhook `!fresh`).
302
+ if (!inserted) {
295
303
  throw new opts.errorClass(opts.replayCode,
296
304
  opts.tokenLabel + " jti='" + jti + "' has been seen before — replay refused");
297
305
  }
@@ -362,6 +362,13 @@ function create(config) {
362
362
 
363
363
  url.searchParams.set("X-Goog-Signature", signature);
364
364
 
365
+ // Final query mutation done — align the wire space encoding to the signed
366
+ // canonical query (GCS V4 signs "%20" but url.toString() would serialize a
367
+ // space as "+", so a spaced response-header override / prefix would be
368
+ // rejected as a signature mismatch). Must precede url.toString(); do not
369
+ // touch url.searchParams afterward (it re-serializes spaces back to "+").
370
+ sigv4.alignWireQueryToSigV4(url);
371
+
365
372
  var clientHeaders = {};
366
373
  if (opts.contentType) clientHeaders["Content-Type"] = opts.contentType;
367
374
 
@@ -120,6 +120,29 @@ function canonicalQueryString(searchParams) {
120
120
  }).join("&");
121
121
  }
122
122
 
123
+ // Reconcile the wire query with the signed canonical query. The WHATWG URL
124
+ // serializes its query via application/x-www-form-urlencoded, which encodes a
125
+ // space as "+"; SigV4 signs canonicalQueryString, which encodes a space as
126
+ // "%20" (AWS: "encode the space character as %20 and not +"). Left
127
+ // unreconciled, a signed query parameter carrying a literal space (a
128
+ // response-content-disposition filename, a list prefix) is transmitted
129
+ // (url.search / url.toString) as "+" while the signature commits to "%20", so
130
+ // the server re-canonicalizes to different bytes and rejects the request with
131
+ // SignatureDoesNotMatch. A bare "+" in url.search is ALWAYS an encoded space —
132
+ // URLSearchParams serializes a literal "+" as "%2B" and parses "+" back to a
133
+ // space, so canonicalQueryString already signed that position as "%20";
134
+ // rewriting "+" to "%20" makes the transmitted query byte-identical to the
135
+ // signed canonical query. Bare subresource tokens (?uploads / ?lifecycle) carry
136
+ // no "+", so they pass through untouched. Mutates url.search in place (the
137
+ // string setter preserves "%20"); callers MUST NOT touch url.searchParams
138
+ // afterward — that re-serializes spaces back to "+".
139
+ function _alignWireQueryToSigV4(url) {
140
+ var search = url.search;
141
+ if (search.indexOf("+") !== -1) {
142
+ url.search = search.replace(/\+/g, "%20"); // allow:regex-no-length-cap — single-char global replace, input bounded by maxUrlLength
143
+ }
144
+ }
145
+
123
146
  function canonicalHeaders(headers) {
124
147
  var pairs = [];
125
148
  for (var k in headers) {
@@ -233,6 +256,10 @@ function signRequest(opts) {
233
256
  ", Signature=" + signature;
234
257
  headers["Authorization"] = auth;
235
258
 
259
+ // The URL just signed is the one the caller transmits — make its wire query
260
+ // byte-identical to the canonical query the signature commits to.
261
+ _alignWireQueryToSigV4(url);
262
+
236
263
  return { headers: headers, signature: signature, canonicalRequest: canon, stringToSign: sts };
237
264
  }
238
265
 
@@ -810,6 +837,9 @@ function create(config) {
810
837
  var signature = nodeCrypto.createHmac("sha256", signingKey).update(sts).digest("hex");
811
838
 
812
839
  url.searchParams.set("X-Amz-Signature", signature);
840
+ // Final query mutation done — align the wire space encoding to the signed
841
+ // "%20" form before serializing the URL the client will use.
842
+ _alignWireQueryToSigV4(url);
813
843
 
814
844
  var clientHeaders = {};
815
845
  if (opts.contentType) clientHeaders["Content-Type"] = opts.contentType;
@@ -994,6 +1024,7 @@ module.exports = {
994
1024
  deriveSigningKey: deriveSigningKey,
995
1025
  canonicalQueryString: canonicalQueryString,
996
1026
  canonicalHeaders: canonicalHeaders,
1027
+ alignWireQueryToSigV4: _alignWireQueryToSigV4,
997
1028
  awsUriEncode: awsUriEncode,
998
1029
  sha256Hex: sha256Hex,
999
1030
  formatAmzDate: _formatAmzDate,
@@ -377,7 +377,7 @@ function _spanToProto(span) {
377
377
  pb.uint32(10, span.droppedAttributesCount || 0),
378
378
  eventsRepeated,
379
379
  pb.uint32(12, span.droppedEventsCount || 0),
380
- pb.uint32(15, 0), // links repeated count placeholder; encoder emits 0 length-delim when no links
380
+ pb.uint32(14, 0), // dropped_links_count (proto field 14); no links propagated yet
381
381
  Buffer.concat([
382
382
  pb._tag(15, 2), // WIRE_LDELIM tag for status
383
383
  pb._writeVarint(statusBody.length),
@@ -99,7 +99,7 @@ var KEY_MAX_LEN = C.BYTES.bytes(255);
99
99
  function _validateTableName(name) {
100
100
  // SQL identifier — quoteIdentifier rejects anything with embedded
101
101
  // quotes, schema-qualified names valid via dot-separated parts.
102
- return safeSql.quoteIdentifier(name);
102
+ return safeSql.quoteIdentifier(name, undefined, { allowReserved: true }); // parity with b.db.from()
103
103
  }
104
104
 
105
105
  // Map the operator backend's dialect tag to the b.sql dialect vocabulary.
@@ -132,7 +132,15 @@ function _coerceValue(raw) {
132
132
  return n;
133
133
  }
134
134
  if (/^-?\d+\.\d+([eE][+-]?\d+)?$/.test(raw) || /^-?\d+[eE][+-]?\d+$/.test(raw)) {
135
- return Number(raw);
135
+ var f = Number(raw);
136
+ // Float overflow (e.g. 1e999) coerces to ±Infinity — the same
137
+ // never-silently-coerce refusal the integer/hex branches enforce with
138
+ // Number.isSafeInteger. An Infinity slipping into a downstream size cap
139
+ // or timeout is a live DoS, so an out-of-range float is rejected here.
140
+ if (!Number.isFinite(f)) {
141
+ throw _err("ini/value-out-of-range", "float exceeds representable range: " + raw);
142
+ }
143
+ return f;
136
144
  }
137
145
  return _unquote(raw);
138
146
  }
@@ -201,7 +201,16 @@ function parse(input, opts) {
201
201
  while (!_eof()) {
202
202
  var c = _peek();
203
203
  if (c === quote) {
204
- if (!basic) out = input.substring(start, pos);
204
+ // Append the pending verbatim run for BOTH kinds. A basic key
205
+ // accumulates decoded escapes into `out` and resets `start` past
206
+ // each; the trailing literal run (or the whole key when it has no
207
+ // escapes) must still be appended here. A literal key never
208
+ // touches `out` before this point, so the append yields its full
209
+ // verbatim content. Assigning only for the literal branch dropped
210
+ // every escape-free basic key to "" — collapsing distinct quoted
211
+ // keys together and letting a quoted `"__proto__"` slip past the
212
+ // poisoned-key guard by decoding to the empty string.
213
+ out += input.substring(start, pos);
205
214
  _advance();
206
215
  return out;
207
216
  }
@@ -572,9 +572,12 @@ function create(opts) {
572
572
  // Window floor — when neither route nor role supplies an
573
573
  // explicit mfaWindowMs, default to 15 minutes. Without this
574
574
  // floor, a stolen long-lived cookie carrying an old `mfaAt`
575
- // walks past every requireMfa: true gate. Operators who want
576
- // an explicit no-window pass-through must say so via
577
- // mfaWindowMs: Infinity (audited reason).
575
+ // walks past every requireMfa: true gate. There is deliberately
576
+ // NO no-window opt-out: the role- and route-level validators
577
+ // reject a non-finite mfaWindowMs, so freshness is always
578
+ // enforced. (The `!== Infinity` guard below is a defensive
579
+ // backstop for a hypothetically-injected value, not a supported
580
+ // config path.)
578
581
  if (enforceWindowMs === null) {
579
582
  enforceWindowMs = C.TIME.minutes(15);
580
583
  }
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) blamejs contributors
3
+ "use strict";
4
+ //
5
+ // pid-probe — the signal-0 liveness probe + fd-safe pidfile reader shared by
6
+ // b.daemon (lib/daemon.js) and b.appShutdown.pidLock (lib/app-shutdown.js).
7
+ // Both files carried a byte-for-byte copy of the liveness check and the capped,
8
+ // symlink-refusing pidfile reader; a single owner keeps the liveness semantics
9
+ // (process.kill(pid, 0) → alive; EPERM → alive-but-unowned; ESRCH → dead) and
10
+ // the read hardening (1 KiB cap + O_NOFOLLOW refusal so a planted symlink or an
11
+ // oversized file can neither redirect nor OOM the read) identical across every
12
+ // caller — daemon.start / stop / status and pidLock.acquire / release.
13
+ //
14
+ // This is not request-reachable: the two callers are process-lifecycle
15
+ // primitives, so a throw here would only ever surface at daemon start/stop.
16
+ // Both entry points are defensive readers (return-default, never throw): a
17
+ // missing / malformed / hostile pidfile yields null ("nothing live there")
18
+ // rather than propagating an error into the shutdown path.
19
+
20
+ var atomicFile = require("./atomic-file");
21
+ var C = require("./constants");
22
+
23
+ // isLivePid(pid) — signal-0 existence probe. process.kill(pid, 0) sends no
24
+ // signal but performs the permission + existence check the kernel would do for
25
+ // a real signal: it succeeds when the process is alive and signalable, throws
26
+ // EPERM when the process is alive but owned by another user (still "live"), and
27
+ // throws ESRCH when no such process exists (dead). A non-numeric / non-finite /
28
+ // non-positive pid is never live.
29
+ function isLivePid(pid) {
30
+ if (typeof pid !== "number" || !isFinite(pid) || pid <= 0) return false;
31
+ try { process.kill(pid, 0); return true; }
32
+ catch (e) { return !!(e && e.code === "EPERM"); }
33
+ }
34
+
35
+ // readPidFile(pidFile) — fd-safe + capped + symlink-refusing read of a PID
36
+ // sidecar. A PID file is never a legitimate symlink mount (unlike a k8s/certbot
37
+ // secret mount), so refuseSymlink is safe here and stops a planted symlink from
38
+ // redirecting the read; the 1 KiB cap stops an oversized planted file from
39
+ // OOM-ing it. Returns the parsed positive PID, or null for any failure
40
+ // (missing / symlink / too-large / non-numeric) — the uniform "nothing live
41
+ // there" sentinel both callers already relied on.
42
+ function readPidFile(pidFile) {
43
+ try {
44
+ var raw = atomicFile.fdSafeReadSync(pidFile, {
45
+ maxBytes: C.BYTES.kib(1), refuseSymlink: true, encoding: "utf8",
46
+ });
47
+ var pid = parseInt(String(raw).trim(), 10);
48
+ return isFinite(pid) && pid > 0 ? pid : null;
49
+ } catch (_e) { return null; }
50
+ }
51
+
52
+ module.exports = {
53
+ isLivePid: isLivePid,
54
+ readPidFile: readPidFile,
55
+ };
@@ -176,6 +176,13 @@ function _buildAgentOpts(opts) {
176
176
  } else {
177
177
  merged.ecdhCurve = C.TLS_GROUP_CURVE_STR;
178
178
  }
179
+ // Mirror the resolved ecdhCurve into `groups` from one string (same
180
+ // shape as network-tls.buildOptions). `applyToContext` only fills
181
+ // `groups` when it is undefined, so setting it here preserves the
182
+ // caller's narrowed/reordered selection instead of letting the
183
+ // context filler re-derive `groups` from STATE.tlsKeyShares — a
184
+ // different ordering that would ignore the caller's ecdhCurve.
185
+ merged.groups = merged.ecdhCurve;
179
186
  merged.minVersion = "TLSv1.3";
180
187
  if (networkTls && typeof networkTls.applyToContext === "function") {
181
188
  merged = networkTls.applyToContext({ base: merged });
@@ -203,7 +210,7 @@ function _buildAgentOpts(opts) {
203
210
  * maxSockets?: number,
204
211
  * maxFreeSockets?: number,
205
212
  * scheduling?: string,
206
- * ecdhCurve?: string, // colon-separated group names; must subset C.TLS_GROUP_PREFERENCE
213
+ * ecdhCurve?: string, // colon-separated group names; must subset C.TLS_GROUP_PREFERENCE. The TLS `groups` list tracks this value exactly (mirrored from one resolved string), so a narrowed/reordered ecdhCurve is the negotiated key-share order.
207
214
  * allowOperatorGroups?: boolean, // default false; opt in to operator-supplied groups outside the framework PQC preference
208
215
  *
209
216
  * @example
@@ -103,7 +103,7 @@ function _accessor(name) {
103
103
  * posture returns a stub whose primitive calls throw `PqcError`.
104
104
  *
105
105
  * @example
106
- * var b = require("blamejs").create();
106
+ * var b = require("blamejs");
107
107
  * if (b.pqcSoftware.isAvailable()) {
108
108
  * var ss = b.pqcSoftware.DEFAULT_KEM.keygen();
109
109
  * ss.publicKey.length;
@@ -128,7 +128,7 @@ function isAvailable() {
128
128
  * bundle is unavailable.
129
129
  *
130
130
  * @example
131
- * var b = require("blamejs").create();
131
+ * var b = require("blamejs");
132
132
  * var names = b.pqcSoftware.listAlgorithms();
133
133
  * names.indexOf("ml_kem_1024") >= 0;
134
134
  * // → true (when the vendored bundle is present)
@@ -235,7 +235,7 @@ Object.defineProperty(pqc, "DEFAULT_HASH_SIG", {
235
235
  * shared secrets are byte-identical (32 bytes per FIPS 203 §1).
236
236
  *
237
237
  * @example
238
- * var b = require("blamejs").create();
238
+ * var b = require("blamejs");
239
239
  * var result = b.pqcSoftware.runKnownAnswerTest();
240
240
  * result.ok;
241
241
  * // → true (or { ok: false, reason: "<diagnostic>" } when broken)