@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
@@ -12,6 +12,8 @@ var helpers = require("../helpers");
12
12
  var check = helpers.check;
13
13
  var b = helpers.b;
14
14
  var pq = require("../../lib/pqc-software");
15
+ var nodeCrypto = require("node:crypto");
16
+ var pgpMod = require("../../lib/mail-crypto-pgp");
15
17
 
16
18
  function testEncryptDecryptRoundtrip() {
17
19
  var kp = pq.ml_kem_1024.keygen();
@@ -132,7 +134,396 @@ function testWkdRefusesBadEmail() {
132
134
  }
133
135
  }
134
136
 
135
- function run() {
137
+ // ---- b.mail.crypto.pgp.experimental.wkd.fetch ----
138
+ //
139
+ // fetch() is driven entirely through the operator-supplied
140
+ // `httpsGet(url) => Promise<{ status, body }>` — the framework never
141
+ // couples to a specific HTTP client, so these tests inject an in-memory
142
+ // stub that records the URLs requested and returns canned responses.
143
+ // NO real network is touched.
144
+
145
+ // Build a recording httpsGet stub: `responses` maps a URL → its
146
+ // { status, body } reply; any URL absent from the map answers 404.
147
+ function _wkdStub(responses, calls) {
148
+ return function (url) {
149
+ calls.push(url);
150
+ var r = responses[url];
151
+ return Promise.resolve(r || { status: 404, body: Buffer.alloc(0) });
152
+ };
153
+ }
154
+
155
+ async function testWkdFetchDirectHit() {
156
+ var email = "alice@example.com";
157
+ var urls = b.mail.crypto.pgp.experimental.wkd.computeUrl(email);
158
+ var keyBytes = Buffer.from([0x99, 0x01, 0x02, 0x03, 0x04]);
159
+ var calls = [];
160
+ var responses = {};
161
+ responses[urls.direct] = { status: 200, body: keyBytes };
162
+
163
+ var out = await b.mail.crypto.pgp.experimental.wkd.fetch(email, {
164
+ httpsGet: _wkdStub(responses, calls),
165
+ });
166
+ check("wkd.fetch direct: source is 'direct'", out.source === "direct");
167
+ check("wkd.fetch direct: url is the direct URL", out.url === urls.direct);
168
+ check("wkd.fetch direct: keyBytes are the reply body",
169
+ Buffer.isBuffer(out.keyBytes) && Buffer.compare(out.keyBytes, keyBytes) === 0);
170
+ check("wkd.fetch direct: only the direct URL was requested",
171
+ calls.length === 1 && calls[0] === urls.direct);
172
+ }
173
+
174
+ async function testWkdFetchAdvancedFallback() {
175
+ var email = "bob@example.com";
176
+ var urls = b.mail.crypto.pgp.experimental.wkd.computeUrl(email);
177
+ var keyBytes = Buffer.from([0xde, 0xad, 0xbe, 0xef]);
178
+ var calls = [];
179
+ var responses = {};
180
+ // direct absent (→ 404); advanced serves the key.
181
+ responses[urls.advanced] = { status: 200, body: keyBytes };
182
+
183
+ var out = await b.mail.crypto.pgp.experimental.wkd.fetch(email, {
184
+ httpsGet: _wkdStub(responses, calls),
185
+ });
186
+ check("wkd.fetch fallback: source is 'advanced'", out.source === "advanced");
187
+ check("wkd.fetch fallback: url is the advanced URL", out.url === urls.advanced);
188
+ check("wkd.fetch fallback: keyBytes are the reply body",
189
+ Buffer.compare(out.keyBytes, keyBytes) === 0);
190
+ check("wkd.fetch fallback: tried direct FIRST, then advanced",
191
+ calls.length === 2 && calls[0] === urls.direct && calls[1] === urls.advanced);
192
+ }
193
+
194
+ async function testWkdFetchBothFail() {
195
+ var email = "nokey@example.com";
196
+ var calls = [];
197
+ var threw = null;
198
+ try {
199
+ // Empty response map → both URLs 404.
200
+ await b.mail.crypto.pgp.experimental.wkd.fetch(email, { httpsGet: _wkdStub({}, calls) });
201
+ } catch (e) { threw = e; }
202
+ check("wkd.fetch both-fail: throws wkd-not-found",
203
+ threw && threw.code === "mail-crypto/pgp/wkd-not-found");
204
+ check("wkd.fetch both-fail: is a MailCryptoError (facade classifier)",
205
+ threw && b.mail.crypto.isMailCryptoError(threw) === true);
206
+ check("wkd.fetch both-fail: both direct + advanced were attempted",
207
+ calls.length === 2);
208
+ }
209
+
210
+ async function testWkdFetchRequiresHttpsGet() {
211
+ var threw = null;
212
+ try { await b.mail.crypto.pgp.experimental.wkd.fetch("alice@example.com", {}); }
213
+ catch (e) { threw = e; }
214
+ check("wkd.fetch: missing httpsGet throws no-https-get",
215
+ threw && threw.code === "mail-crypto/pgp/no-https-get");
216
+
217
+ var threwOpts = null;
218
+ try { await b.mail.crypto.pgp.experimental.wkd.fetch("alice@example.com", null); }
219
+ catch (e) { threwOpts = e; }
220
+ check("wkd.fetch: null opts throws bad-opts",
221
+ threwOpts && threwOpts.code === "mail-crypto/pgp/bad-opts");
222
+ }
223
+
224
+ async function testWkdFetchEnforcesMaxKeyBytes() {
225
+ var email = "big@example.com";
226
+ var urls = b.mail.crypto.pgp.experimental.wkd.computeUrl(email);
227
+ var calls = [];
228
+ var responses = {};
229
+ responses[urls.direct] = { status: 200, body: Buffer.alloc(100) }; // 100-byte reply
230
+
231
+ var threwLarge = null;
232
+ try {
233
+ await b.mail.crypto.pgp.experimental.wkd.fetch(email, {
234
+ httpsGet: _wkdStub(responses, calls), maxKeyBytes: 10,
235
+ });
236
+ } catch (e) { threwLarge = e; }
237
+ check("wkd.fetch: reply over maxKeyBytes throws wkd-too-large",
238
+ threwLarge && threwLarge.code === "mail-crypto/pgp/wkd-too-large");
239
+
240
+ var threwBad = null;
241
+ try {
242
+ await b.mail.crypto.pgp.experimental.wkd.fetch(email, {
243
+ httpsGet: _wkdStub(responses, []), maxKeyBytes: -1,
244
+ });
245
+ } catch (e) { threwBad = e; }
246
+ check("wkd.fetch: negative maxKeyBytes throws bad-max-key-bytes",
247
+ threwBad && threwBad.code === "mail-crypto/pgp/bad-max-key-bytes");
248
+ }
249
+
250
+ // ---- b.mail.crypto.pgp.sign / .verify (RFC 9580 detached signatures) ----
251
+ //
252
+ // The crypto/auth-verify tier: every trust decision here is a
253
+ // signature-forgery / tamper seam if it fails open (accepts a forged
254
+ // input) or crashes with an untyped throw where a typed refusal is the
255
+ // contract. Keys are generated in-process with node:crypto — NO network,
256
+ // NO fixtures on disk. The slow RSA-2048 keygen is memoized once.
257
+
258
+ function _edPair() {
259
+ var k = nodeCrypto.generateKeyPairSync("ed25519");
260
+ return {
261
+ pub: k.publicKey.export({ type: "spki", format: "pem" }),
262
+ priv: k.privateKey.export({ type: "pkcs8", format: "pem" }),
263
+ };
264
+ }
265
+
266
+ var _rsaPairMemo = null;
267
+ function _rsaPair() {
268
+ if (_rsaPairMemo) return _rsaPairMemo;
269
+ var k = nodeCrypto.generateKeyPairSync("rsa", { modulusLength: 2048 });
270
+ _rsaPairMemo = {
271
+ pub: k.publicKey.export({ type: "spki", format: "pem" }),
272
+ priv: k.privateKey.export({ type: "pkcs8", format: "pem" }),
273
+ };
274
+ return _rsaPairMemo;
275
+ }
276
+
277
+ var _rsaPssPairMemo = null;
278
+ function _rsaPssPair() {
279
+ if (_rsaPssPairMemo) return _rsaPssPairMemo;
280
+ var k = nodeCrypto.generateKeyPairSync("rsa-pss", { modulusLength: 2048 });
281
+ _rsaPssPairMemo = {
282
+ pub: k.publicKey.export({ type: "spki", format: "pem" }),
283
+ priv: k.privateKey.export({ type: "pkcs8", format: "pem" }),
284
+ };
285
+ return _rsaPssPairMemo;
286
+ }
287
+
288
+ function testSignVerifyEd25519Roundtrip() {
289
+ var kp = _edPair();
290
+ var msg = "The quick brown fox\r\n";
291
+ var s = b.mail.crypto.pgp.sign({ message: msg, privateKeyPem: kp.priv });
292
+ check("ed25519 sign: armored PGP SIGNATURE", typeof s.armored === "string" &&
293
+ s.armored.indexOf("BEGIN PGP SIGNATURE") !== -1);
294
+ check("ed25519 sign: hashAlg sha512", s.hashAlg === "sha512");
295
+ check("ed25519 sign: multipartSigned is a Buffer", Buffer.isBuffer(s.multipartSigned));
296
+ var v = b.mail.crypto.pgp.verify({ message: msg, armored: s.armored, publicKeyPem: kp.pub });
297
+ check("ed25519 verify: ok", v.ok === true);
298
+ check("ed25519 verify: fingerprint round-trips", v.signerFingerprint === s.fingerprint);
299
+ check("ed25519 verify: hashAlg reported", v.hashAlg === "sha512");
300
+ }
301
+
302
+ function testSignVerifyRsaRoundtrip() {
303
+ var kp = _rsaPair();
304
+ var msg = "invoice body\r\n";
305
+ var s = b.mail.crypto.pgp.sign({ message: msg, privateKeyPem: kp.priv });
306
+ check("rsa sign: hashAlg sha256", s.hashAlg === "sha256");
307
+ var v = b.mail.crypto.pgp.verify({ message: msg, armored: s.armored, publicKeyPem: kp.pub });
308
+ check("rsa verify: ok", v.ok === true);
309
+ check("rsa verify: fingerprint round-trips", v.signerFingerprint === s.fingerprint);
310
+ }
311
+
312
+ function testVerifyTamperedMessageFails() {
313
+ var kp = _edPair();
314
+ var msg = "authentic content\r\n";
315
+ var s = b.mail.crypto.pgp.sign({ message: msg, privateKeyPem: kp.priv });
316
+ var v = b.mail.crypto.pgp.verify({ message: msg + "X", armored: s.armored, publicKeyPem: kp.pub });
317
+ check("tampered message: ok:false", v.ok === false);
318
+ check("tampered message: hash-mismatch verdict", v.code === "mail-crypto/pgp/hash-mismatch");
319
+ }
320
+
321
+ function testVerifyWrongKeyFails() {
322
+ var kp = _edPair();
323
+ var other = _edPair();
324
+ var msg = "content\r\n";
325
+ var s = b.mail.crypto.pgp.sign({ message: msg, privateKeyPem: kp.priv });
326
+ var v = b.mail.crypto.pgp.verify({ message: msg, armored: s.armored, publicKeyPem: other.pub });
327
+ check("wrong key: ok:false", v.ok === false);
328
+ check("wrong key: fingerprint-mismatch pin fires",
329
+ v.code === "mail-crypto/pgp/fingerprint-mismatch");
330
+ }
331
+
332
+ function testVerifyKeyAlgMismatchFails() {
333
+ var rsa = _rsaPair();
334
+ var ed = _edPair();
335
+ var msg = "m\r\n";
336
+ var s = b.mail.crypto.pgp.sign({ message: msg, privateKeyPem: rsa.priv });
337
+ var v = b.mail.crypto.pgp.verify({ message: msg, armored: s.armored, publicKeyPem: ed.pub });
338
+ check("RSA sig + ed25519 key: ok:false", v.ok === false);
339
+ check("RSA sig + ed25519 key: key-alg-mismatch verdict",
340
+ v.code === "mail-crypto/pgp/key-alg-mismatch");
341
+ }
342
+
343
+ function testVerifyMalformedArmorReturnsVerdict() {
344
+ var kp = _edPair();
345
+ // Every malformed-armor path must return a typed {ok:false} VERDICT,
346
+ // never throw out of verify() (a verifier that throws on hostile input
347
+ // is a fail-closed-but-crash seam).
348
+ var cases = [
349
+ "not armored at all",
350
+ "-----BEGIN PGP SIGNATURE-----\r\n\r\nAAAA\r\n=AAAA\r\n-----END PGP SIGNATURE-----\r\n",
351
+ "-----BEGIN PGP SIGNATURE-----\r\n\r\nAAAA\r\n-----END PGP SIGNATURE-----\r\n",
352
+ ];
353
+ for (var i = 0; i < cases.length; i += 1) {
354
+ var threw = null, r = null;
355
+ try { r = b.mail.crypto.pgp.verify({ message: "x\r\n", armored: cases[i], publicKeyPem: kp.pub }); }
356
+ catch (e) { threw = e; }
357
+ check("malformed armor [" + i + "]: no throw, typed verdict",
358
+ threw === null && r !== null && r.ok === false && r.code === "mail-crypto/pgp/bad-armor");
359
+ }
360
+ }
361
+
362
+ function testVerifyMalformedPacketReturnsVerdict() {
363
+ var kp = _edPair();
364
+ var s = b.mail.crypto.pgp.sign({ message: "p\r\n", privateKeyPem: kp.priv });
365
+ var pkt = pgpMod._dearmorForTest(s.armored);
366
+
367
+ // (a) hashed-subpacket length claims more than the packet body holds.
368
+ var body = Buffer.from(pkt.slice(2));
369
+ body.writeUInt16BE(0xffff, 4);
370
+ var vHuge = b.mail.crypto.pgp.verify({
371
+ message: "p\r\n", armored: pgpMod._armorForTest(Buffer.concat([pkt.slice(0, 2), body])),
372
+ publicKeyPem: kp.pub,
373
+ });
374
+ check("huge hashedSubLen: ok:false bad-packet",
375
+ vHuge.ok === false && vHuge.code === "mail-crypto/pgp/bad-packet");
376
+
377
+ // (b) truncated signature MPI — a hostile MPI is untrusted input and
378
+ // must return a verdict, not throw.
379
+ var full = pkt.slice(2);
380
+ var cut = full.slice(0, full.length - 12);
381
+ var truncPkt = Buffer.concat([Buffer.from([0xc0 | 2, cut.length]), cut]);
382
+ var threw = null, vTrunc = null;
383
+ try { vTrunc = b.mail.crypto.pgp.verify({ message: "p\r\n", armored: pgpMod._armorForTest(truncPkt), publicKeyPem: kp.pub }); }
384
+ catch (e) { threw = e; }
385
+ check("truncated MPI: no throw, bad-mpi verdict",
386
+ threw === null && vTrunc !== null && vTrunc.ok === false && vTrunc.code === "mail-crypto/pgp/bad-mpi");
387
+
388
+ // (c) legacy/old-format packet header is refused as a verdict.
389
+ var vLegacy = b.mail.crypto.pgp.verify({
390
+ message: "p\r\n", armored: pgpMod._armorForTest(Buffer.from([0x88, 0x02, 0x04, 0x00])),
391
+ publicKeyPem: kp.pub,
392
+ });
393
+ check("legacy header: ok:false bad-packet",
394
+ vLegacy.ok === false && vLegacy.code === "mail-crypto/pgp/bad-packet");
395
+ }
396
+
397
+ function testSignRefusesSmallRsa() {
398
+ var k = nodeCrypto.generateKeyPairSync("rsa", { modulusLength: 1024 });
399
+ var threw = null;
400
+ try {
401
+ b.mail.crypto.pgp.sign({ message: "x\r\n", privateKeyPem: k.privateKey.export({ type: "pkcs8", format: "pem" }) });
402
+ } catch (e) { threw = e; }
403
+ check("RSA < 2048 refused at sign", threw && threw.code === "mail-crypto/pgp/rsa-too-small");
404
+ check("RSA < 2048 refusal is typed MailCryptoError",
405
+ threw && b.mail.crypto.isMailCryptoError(threw) === true);
406
+ }
407
+
408
+ function testSignRefusesUnsupportedKeyType() {
409
+ var ec = nodeCrypto.generateKeyPairSync("ec", { namedCurve: "P-256" });
410
+ var threw = null;
411
+ try {
412
+ b.mail.crypto.pgp.sign({ message: "x\r\n", privateKeyPem: ec.privateKey.export({ type: "pkcs8", format: "pem" }) });
413
+ } catch (e) { threw = e; }
414
+ check("P-256 key refused at sign", threw && threw.code === "mail-crypto/pgp/bad-key-type");
415
+ }
416
+
417
+ function testSignVerifyPassphraseKey() {
418
+ var k = nodeCrypto.generateKeyPairSync("ed25519");
419
+ var encPriv = k.privateKey.export({
420
+ type: "pkcs8", format: "pem", cipher: "aes-256-cbc", passphrase: "s3cr3t",
421
+ });
422
+ var pub = k.publicKey.export({ type: "spki", format: "pem" });
423
+ var s = b.mail.crypto.pgp.sign({ message: "secret body\r\n", privateKeyPem: encPriv, passphrase: "s3cr3t" });
424
+ var v = b.mail.crypto.pgp.verify({ message: "secret body\r\n", armored: s.armored, publicKeyPem: pub });
425
+ check("passphrase-protected key signs + verifies", v.ok === true);
426
+
427
+ var threw = null;
428
+ try { b.mail.crypto.pgp.sign({ message: "x\r\n", privateKeyPem: encPriv, passphrase: "WRONG" }); }
429
+ catch (e) { threw = e; }
430
+ check("wrong passphrase refused (typed bad-key)",
431
+ threw && threw.code === "mail-crypto/pgp/bad-key");
432
+ }
433
+
434
+ function testSignCreationTimeOption() {
435
+ var kp = _edPair();
436
+ var s = b.mail.crypto.pgp.sign({ message: "dated\r\n", privateKeyPem: kp.priv, creationTime: 1700000000 });
437
+ check("explicit creationTime stamped", s.signedAt === 1700000000);
438
+ var v = b.mail.crypto.pgp.verify({ message: "dated\r\n", armored: s.armored, publicKeyPem: kp.pub });
439
+ check("verify reflects signed creationTime (bound in hashed subpacket)",
440
+ v.ok === true && v.signedAt === 1700000000);
441
+
442
+ var threw = null;
443
+ try { b.mail.crypto.pgp.sign({ message: "x\r\n", privateKeyPem: kp.priv, creationTime: -5 }); }
444
+ catch (e) { threw = e; }
445
+ check("negative creationTime refused", threw && threw.code === "mail-crypto/pgp/bad-creation-time");
446
+ }
447
+
448
+ // ---- RED: rsa-pss keys crash sign/verify with an UNTYPED throw ----
449
+ //
450
+ // Both sign() and verify() explicitly accept keyType "rsa-pss", but node
451
+ // cannot express this module's PKCS#1-v1.5 signatures with an rsa-pss key
452
+ // (OpenSSL refuses the padding mode) AND refuses to JWK-export it
453
+ // (ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE). The key-shape extraction crashes
454
+ // with a raw Error — not a typed MailCryptoError — so an operator's
455
+ // try/catch keyed on b.mail.crypto.isMailCryptoError never catches it and
456
+ // a crafted / mis-typed key crashes the caller. verify() must return a
457
+ // typed verdict; sign() must throw a typed refusal.
458
+
459
+ function testVerifyRsaPssKeyReturnsTypedVerdict() {
460
+ var rsa = _rsaPair();
461
+ var pss = _rsaPssPair();
462
+ var s = b.mail.crypto.pgp.sign({ message: "m\r\n", privateKeyPem: rsa.priv });
463
+ var threw = null, r = null;
464
+ try { r = b.mail.crypto.pgp.verify({ message: "m\r\n", armored: s.armored, publicKeyPem: pss.pub }); }
465
+ catch (e) { threw = e; }
466
+ check("verify with rsa-pss key: does NOT throw untyped (typed verdict only)",
467
+ threw === null || b.mail.crypto.isMailCryptoError(threw) === true);
468
+ check("verify with rsa-pss key: typed ok:false verdict",
469
+ r !== null && r.ok === false && r.code === "mail-crypto/pgp/key-alg-mismatch");
470
+ }
471
+
472
+ function testSignRsaPssKeyThrowsTyped() {
473
+ var pss = _rsaPssPair();
474
+ var threw = null;
475
+ try { b.mail.crypto.pgp.sign({ message: "m\r\n", privateKeyPem: pss.priv }); }
476
+ catch (e) { threw = e; }
477
+ check("sign with rsa-pss key: throws a typed MailCryptoError (not raw Error)",
478
+ threw && b.mail.crypto.isMailCryptoError(threw) === true);
479
+ check("sign with rsa-pss key: bad-key-type code",
480
+ threw && threw.code === "mail-crypto/pgp/bad-key-type");
481
+ }
482
+
483
+ // ---- RED: truncated PQ envelope crashes decrypt with an UNTYPED RangeError ----
484
+ //
485
+ // experimentalDecrypt advances an offset using attacker-controlled length
486
+ // fields (ridLen / ctLen / wkLen / bodyLen) and issues multi-byte
487
+ // readUInt16BE / readUInt32BE reads without first bounds-checking
488
+ // off + N <= envelope.length. A truncated envelope escapes as a raw
489
+ // RangeError (ERR_OUT_OF_RANGE) instead of the typed
490
+ // mail-crypto/pgp/truncated the function already defines — an
491
+ // uncaught-exception DoS on adversarial input.
492
+
493
+ function testDecryptTruncatedEnvelopeThrowsTyped() {
494
+ var kp = pq.ml_kem_1024.keygen();
495
+ var rid = Buffer.from([0x42]);
496
+ var real = b.mail.crypto.pgp.encrypt({
497
+ message: "x", recipients: [{ recipientId: rid, publicKey: kp.publicKey }],
498
+ });
499
+ // magic(9) || version || nRecips then a recipient claiming ridLen=0xff
500
+ // with no bytes behind it → the ctLen readUInt16BE reads off the end.
501
+ var truncated = Buffer.concat([real.envelope.slice(0, 11), Buffer.from([0xff])]);
502
+ var threw = null;
503
+ try {
504
+ b.mail.crypto.pgp.decrypt({ envelope: truncated, recipientId: rid, secretKey: kp.secretKey });
505
+ } catch (e) { threw = e; }
506
+ check("truncated envelope: throws a typed MailCryptoError (not raw RangeError)",
507
+ threw && b.mail.crypto.isMailCryptoError(threw) === true);
508
+ check("truncated envelope: mail-crypto/pgp/truncated code",
509
+ threw && threw.code === "mail-crypto/pgp/truncated");
510
+ }
511
+
512
+ async function run() {
513
+ testSignVerifyEd25519Roundtrip();
514
+ testSignVerifyRsaRoundtrip();
515
+ testVerifyTamperedMessageFails();
516
+ testVerifyWrongKeyFails();
517
+ testVerifyKeyAlgMismatchFails();
518
+ testVerifyMalformedArmorReturnsVerdict();
519
+ testVerifyMalformedPacketReturnsVerdict();
520
+ testSignRefusesSmallRsa();
521
+ testSignRefusesUnsupportedKeyType();
522
+ testSignVerifyPassphraseKey();
523
+ testSignCreationTimeOption();
524
+ testVerifyRsaPssKeyReturnsTypedVerdict();
525
+ testSignRsaPssKeyThrowsTyped();
526
+ testDecryptTruncatedEnvelopeThrowsTyped();
136
527
  testEncryptDecryptRoundtrip();
137
528
  testEncryptMultiRecipient();
138
529
  testDecryptRefusesWrongRecipient();
@@ -142,10 +533,17 @@ function run() {
142
533
  testWkdComputeUrlShape();
143
534
  testWkdAdvancedHostOverride();
144
535
  testWkdRefusesBadEmail();
536
+ await testWkdFetchDirectHit();
537
+ await testWkdFetchAdvancedFallback();
538
+ await testWkdFetchBothFail();
539
+ await testWkdFetchRequiresHttpsGet();
540
+ await testWkdFetchEnforcesMaxKeyBytes();
145
541
  }
146
542
 
147
543
  if (require.main === module) {
148
- try { run(); }
149
- catch (e) { console.error(e); process.exit(1); }
544
+ run().then(
545
+ function () { console.log("[mail-crypto-pgp-experimental] OK"); },
546
+ function (e) { console.error(e); process.exit(1); }
547
+ );
150
548
  }
151
549
  module.exports = { run: run };