@blamejs/blamejs-shop 0.0.44

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 (1220) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/LICENSE +17 -0
  3. package/README.md +117 -0
  4. package/SECURITY.md +139 -0
  5. package/lib/admin.js +952 -0
  6. package/lib/analytics.js +267 -0
  7. package/lib/cart.js +279 -0
  8. package/lib/catalog-import.js +344 -0
  9. package/lib/catalog.js +769 -0
  10. package/lib/checkout.js +320 -0
  11. package/lib/config.js +151 -0
  12. package/lib/customers.js +322 -0
  13. package/lib/email.js +242 -0
  14. package/lib/externaldb-d1.js +283 -0
  15. package/lib/index.js +57 -0
  16. package/lib/inventory-alerts.js +198 -0
  17. package/lib/newsletter.js +142 -0
  18. package/lib/order.js +380 -0
  19. package/lib/payment.js +318 -0
  20. package/lib/pricing.js +185 -0
  21. package/lib/r2-bridge.js +169 -0
  22. package/lib/shipping.js +185 -0
  23. package/lib/storefront.js +2160 -0
  24. package/lib/subscriptions.js +410 -0
  25. package/lib/tax.js +161 -0
  26. package/lib/theme.js +194 -0
  27. package/lib/vendor/MANIFEST.json +19 -0
  28. package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +23 -0
  29. package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +34 -0
  30. package/lib/vendor/blamejs/.clusterfuzzlite/project.yaml +16 -0
  31. package/lib/vendor/blamejs/.dockerignore +45 -0
  32. package/lib/vendor/blamejs/.gitattributes +42 -0
  33. package/lib/vendor/blamejs/.github/CODEOWNERS +4 -0
  34. package/lib/vendor/blamejs/.github/FUNDING.yml +2 -0
  35. package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/bug_report.md +58 -0
  36. package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/config.yml +8 -0
  37. package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/feature_request.md +99 -0
  38. package/lib/vendor/blamejs/.github/PULL_REQUEST_TEMPLATE.md +77 -0
  39. package/lib/vendor/blamejs/.github/dependabot.yml +37 -0
  40. package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +148 -0
  41. package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +107 -0
  42. package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +122 -0
  43. package/lib/vendor/blamejs/.github/workflows/ci.yml +511 -0
  44. package/lib/vendor/blamejs/.github/workflows/codeql.yml +50 -0
  45. package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +655 -0
  46. package/lib/vendor/blamejs/.github/workflows/release-container.yml +406 -0
  47. package/lib/vendor/blamejs/.github/workflows/scorecard.yml +101 -0
  48. package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +134 -0
  49. package/lib/vendor/blamejs/.gitignore +102 -0
  50. package/lib/vendor/blamejs/.gitleaks.toml +166 -0
  51. package/lib/vendor/blamejs/.hadolint.yaml +18 -0
  52. package/lib/vendor/blamejs/.npmrc +5 -0
  53. package/lib/vendor/blamejs/.pinact.yaml +17 -0
  54. package/lib/vendor/blamejs/ARCHITECTURE.md +158 -0
  55. package/lib/vendor/blamejs/CHANGELOG.md +1351 -0
  56. package/lib/vendor/blamejs/CODE_OF_CONDUCT.md +86 -0
  57. package/lib/vendor/blamejs/CONTRIBUTING.md +156 -0
  58. package/lib/vendor/blamejs/GOVERNANCE.md +201 -0
  59. package/lib/vendor/blamejs/LICENSE +201 -0
  60. package/lib/vendor/blamejs/LTS-CALENDAR.md +29 -0
  61. package/lib/vendor/blamejs/MIGRATING.md +29 -0
  62. package/lib/vendor/blamejs/NOTICE +81 -0
  63. package/lib/vendor/blamejs/README.md +304 -0
  64. package/lib/vendor/blamejs/SECURITY.md +432 -0
  65. package/lib/vendor/blamejs/api-snapshot.json +48709 -0
  66. package/lib/vendor/blamejs/assets/BlameJS_Logo.png +0 -0
  67. package/lib/vendor/blamejs/assets/BlameJS_Logo.svg +129 -0
  68. package/lib/vendor/blamejs/bench/README.md +77 -0
  69. package/lib/vendor/blamejs/bench/_helpers.js +70 -0
  70. package/lib/vendor/blamejs/bench/baseline.json +183 -0
  71. package/lib/vendor/blamejs/bench/crypto-hash.bench.js +19 -0
  72. package/lib/vendor/blamejs/bench/crypto-symmetric.bench.js +28 -0
  73. package/lib/vendor/blamejs/bench/run.js +140 -0
  74. package/lib/vendor/blamejs/bench/safe-json.bench.js +31 -0
  75. package/lib/vendor/blamejs/bin/blamejs.js +13 -0
  76. package/lib/vendor/blamejs/docker/caddy/Caddyfile +46 -0
  77. package/lib/vendor/blamejs/docker/coredns/Corefile +37 -0
  78. package/lib/vendor/blamejs/docker/haproxy/haproxy.cfg +52 -0
  79. package/lib/vendor/blamejs/docker/init/generate-certs.sh +118 -0
  80. package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +87 -0
  81. package/lib/vendor/blamejs/docker/mitmproxy/config.yaml +16 -0
  82. package/lib/vendor/blamejs/docker/mongo/init-tls.sh +17 -0
  83. package/lib/vendor/blamejs/docker/mysql/my.cnf +12 -0
  84. package/lib/vendor/blamejs/docker/nats/nats.conf +33 -0
  85. package/lib/vendor/blamejs/docker/postgres/init-tls.sh +17 -0
  86. package/lib/vendor/blamejs/docker/postgres/postgresql.conf +18 -0
  87. package/lib/vendor/blamejs/docker/rabbitmq/rabbitmq.conf +18 -0
  88. package/lib/vendor/blamejs/docker/redis/redis.conf +15 -0
  89. package/lib/vendor/blamejs/docker/squid/squid.conf +24 -0
  90. package/lib/vendor/blamejs/docker/syslog/syslog-ng.conf +34 -0
  91. package/lib/vendor/blamejs/docker-compose.test.yml +545 -0
  92. package/lib/vendor/blamejs/docs/cis-postgres-crosswalk.md +102 -0
  93. package/lib/vendor/blamejs/docs/cis-sqlite-equivalent.md +92 -0
  94. package/lib/vendor/blamejs/eslint.config.mjs +204 -0
  95. package/lib/vendor/blamejs/examples/wiki/Caddyfile +40 -0
  96. package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +218 -0
  97. package/lib/vendor/blamejs/examples/wiki/Dockerfile +120 -0
  98. package/lib/vendor/blamejs/examples/wiki/README.md +157 -0
  99. package/lib/vendor/blamejs/examples/wiki/cli-snapshot.json +250 -0
  100. package/lib/vendor/blamejs/examples/wiki/docker-compose.prod.yml +231 -0
  101. package/lib/vendor/blamejs/examples/wiki/docker-compose.yml +166 -0
  102. package/lib/vendor/blamejs/examples/wiki/env-snapshot.json +217 -0
  103. package/lib/vendor/blamejs/examples/wiki/lib/auto-site-entries.js +139 -0
  104. package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +555 -0
  105. package/lib/vendor/blamejs/examples/wiki/lib/harvest-cli.js +507 -0
  106. package/lib/vendor/blamejs/examples/wiki/lib/harvest-env-vars.js +435 -0
  107. package/lib/vendor/blamejs/examples/wiki/lib/harvest-errors.js +282 -0
  108. package/lib/vendor/blamejs/examples/wiki/lib/harvest-vendored-deps.js +321 -0
  109. package/lib/vendor/blamejs/examples/wiki/lib/nav.js +15 -0
  110. package/lib/vendor/blamejs/examples/wiki/lib/opts-resolver.js +75 -0
  111. package/lib/vendor/blamejs/examples/wiki/lib/page-generator.js +508 -0
  112. package/lib/vendor/blamejs/examples/wiki/lib/section.js +276 -0
  113. package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +587 -0
  114. package/lib/vendor/blamejs/examples/wiki/lib/source-doc-parser.js +318 -0
  115. package/lib/vendor/blamejs/examples/wiki/lib/symbol-index.js +122 -0
  116. package/lib/vendor/blamejs/examples/wiki/migrations/0001-pages-schema.js +74 -0
  117. package/lib/vendor/blamejs/examples/wiki/package.json +18 -0
  118. package/lib/vendor/blamejs/examples/wiki/public/img/blamejs-logo.png +0 -0
  119. package/lib/vendor/blamejs/examples/wiki/public/img/blamejs-logo.svg +129 -0
  120. package/lib/vendor/blamejs/examples/wiki/public/robots.txt +5 -0
  121. package/lib/vendor/blamejs/examples/wiki/public/vendor/MANIFEST.json +30 -0
  122. package/lib/vendor/blamejs/examples/wiki/public/vendor/prism.css +1 -0
  123. package/lib/vendor/blamejs/examples/wiki/public/vendor/prism.js +15 -0
  124. package/lib/vendor/blamejs/examples/wiki/public/wiki.css +1250 -0
  125. package/lib/vendor/blamejs/examples/wiki/routes/admin.js +366 -0
  126. package/lib/vendor/blamejs/examples/wiki/routes/integration.js +230 -0
  127. package/lib/vendor/blamejs/examples/wiki/routes/pages.js +266 -0
  128. package/lib/vendor/blamejs/examples/wiki/scripts/backfill-module-metadata.js +214 -0
  129. package/lib/vendor/blamejs/examples/wiki/seeders/prod/0001-default-pages.js +35 -0
  130. package/lib/vendor/blamejs/examples/wiki/seeders/prod/pages/_index.js +34 -0
  131. package/lib/vendor/blamejs/examples/wiki/seeders/prod/pages/api.js +76 -0
  132. package/lib/vendor/blamejs/examples/wiki/server.js +129 -0
  133. package/lib/vendor/blamejs/examples/wiki/site.config.js +197 -0
  134. package/lib/vendor/blamejs/examples/wiki/snippets/README.md +38 -0
  135. package/lib/vendor/blamejs/examples/wiki/snippets/auth/password-hash.example.js +15 -0
  136. package/lib/vendor/blamejs/examples/wiki/src/editor.js +103 -0
  137. package/lib/vendor/blamejs/examples/wiki/src/wiki.js +349 -0
  138. package/lib/vendor/blamejs/examples/wiki/test/AUDIT.md +155 -0
  139. package/lib/vendor/blamejs/examples/wiki/test/codebase-patterns.test.js +594 -0
  140. package/lib/vendor/blamejs/examples/wiki/test/e2e.js +741 -0
  141. package/lib/vendor/blamejs/examples/wiki/test/find-missing-pages.js +254 -0
  142. package/lib/vendor/blamejs/examples/wiki/test/integration.js +391 -0
  143. package/lib/vendor/blamejs/examples/wiki/test/validate-cli-snapshot.js +379 -0
  144. package/lib/vendor/blamejs/examples/wiki/test/validate-env-snapshot.js +346 -0
  145. package/lib/vendor/blamejs/examples/wiki/test/validate-nav-coverage.js +212 -0
  146. package/lib/vendor/blamejs/examples/wiki/test/validate-site-coverage.js +252 -0
  147. package/lib/vendor/blamejs/examples/wiki/test/validate-source-comment-blocks.js +107 -0
  148. package/lib/vendor/blamejs/examples/wiki/views/_layout.html +115 -0
  149. package/lib/vendor/blamejs/examples/wiki/views/admin/api-keys.html +51 -0
  150. package/lib/vendor/blamejs/examples/wiki/views/admin/dashboard.html +22 -0
  151. package/lib/vendor/blamejs/examples/wiki/views/admin/edit.html +17 -0
  152. package/lib/vendor/blamejs/examples/wiki/views/home.html +85 -0
  153. package/lib/vendor/blamejs/examples/wiki/views/login.html +18 -0
  154. package/lib/vendor/blamejs/examples/wiki/views/page.html +5 -0
  155. package/lib/vendor/blamejs/examples/wiki/views/partials/nav.html +13 -0
  156. package/lib/vendor/blamejs/examples/wiki/views/search.html +19 -0
  157. package/lib/vendor/blamejs/examples/wiki/wiki.config.js +15 -0
  158. package/lib/vendor/blamejs/fuzz/README.md +137 -0
  159. package/lib/vendor/blamejs/fuzz/_expected.js +35 -0
  160. package/lib/vendor/blamejs/fuzz/guard-agent-registry.fuzz.js +22 -0
  161. package/lib/vendor/blamejs/fuzz/guard-csv.fuzz.js +16 -0
  162. package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/01-basic.csv +3 -0
  163. package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/02-formula.csv +1 -0
  164. package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/03-hyperlink.csv +1 -0
  165. package/lib/vendor/blamejs/fuzz/guard-dsn.fuzz.js +22 -0
  166. package/lib/vendor/blamejs/fuzz/guard-email.fuzz.js +16 -0
  167. package/lib/vendor/blamejs/fuzz/guard-email_seed_corpus/01-basic.eml +5 -0
  168. package/lib/vendor/blamejs/fuzz/guard-envelope.fuzz.js +24 -0
  169. package/lib/vendor/blamejs/fuzz/guard-event-bus-payload.fuzz.js +24 -0
  170. package/lib/vendor/blamejs/fuzz/guard-event-bus-topic.fuzz.js +20 -0
  171. package/lib/vendor/blamejs/fuzz/guard-html.fuzz.js +16 -0
  172. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/01-basic.html +1 -0
  173. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/02-script.html +1 -0
  174. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/03-event.html +1 -0
  175. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/04-jsurl.html +1 -0
  176. package/lib/vendor/blamejs/fuzz/guard-idempotency-key.fuzz.js +20 -0
  177. package/lib/vendor/blamejs/fuzz/guard-imap-command.fuzz.js +35 -0
  178. package/lib/vendor/blamejs/fuzz/guard-jmap.fuzz.js +41 -0
  179. package/lib/vendor/blamejs/fuzz/guard-json.fuzz.js +16 -0
  180. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/01-basic.json +1 -0
  181. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/02-proto.json +1 -0
  182. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/03-dupkey.json +1 -0
  183. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/04-nan.json +1 -0
  184. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/05-bom.json +1 -0
  185. package/lib/vendor/blamejs/fuzz/guard-list-id.fuzz.js +21 -0
  186. package/lib/vendor/blamejs/fuzz/guard-list-unsubscribe.fuzz.js +25 -0
  187. package/lib/vendor/blamejs/fuzz/guard-mail-compose.fuzz.js +22 -0
  188. package/lib/vendor/blamejs/fuzz/guard-mail-move.fuzz.js +22 -0
  189. package/lib/vendor/blamejs/fuzz/guard-mail-query.fuzz.js +27 -0
  190. package/lib/vendor/blamejs/fuzz/guard-mail-reply.fuzz.js +23 -0
  191. package/lib/vendor/blamejs/fuzz/guard-mail-sieve.fuzz.js +36 -0
  192. package/lib/vendor/blamejs/fuzz/guard-managesieve-command.fuzz.js +26 -0
  193. package/lib/vendor/blamejs/fuzz/guard-markdown.fuzz.js +16 -0
  194. package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/01-basic.md +2 -0
  195. package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/02-jsurl.md +1 -0
  196. package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/03-jsimg.md +1 -0
  197. package/lib/vendor/blamejs/fuzz/guard-message-id.fuzz.js +26 -0
  198. package/lib/vendor/blamejs/fuzz/guard-pop3-command.fuzz.js +23 -0
  199. package/lib/vendor/blamejs/fuzz/guard-posture-chain.fuzz.js +22 -0
  200. package/lib/vendor/blamejs/fuzz/guard-saga-config.fuzz.js +32 -0
  201. package/lib/vendor/blamejs/fuzz/guard-smtp-command.fuzz.js +27 -0
  202. package/lib/vendor/blamejs/fuzz/guard-snapshot-envelope.fuzz.js +22 -0
  203. package/lib/vendor/blamejs/fuzz/guard-stream-args.fuzz.js +22 -0
  204. package/lib/vendor/blamejs/fuzz/guard-svg.fuzz.js +16 -0
  205. package/lib/vendor/blamejs/fuzz/guard-svg_seed_corpus/01-basic.svg +1 -0
  206. package/lib/vendor/blamejs/fuzz/guard-svg_seed_corpus/02-script.svg +1 -0
  207. package/lib/vendor/blamejs/fuzz/guard-tenant-id.fuzz.js +20 -0
  208. package/lib/vendor/blamejs/fuzz/guard-trace-context.fuzz.js +30 -0
  209. package/lib/vendor/blamejs/fuzz/guard-xml.fuzz.js +16 -0
  210. package/lib/vendor/blamejs/fuzz/guard-xml_seed_corpus/01-basic.xml +1 -0
  211. package/lib/vendor/blamejs/fuzz/guard-xml_seed_corpus/02-xxe.xml +1 -0
  212. package/lib/vendor/blamejs/fuzz/guard-yaml.fuzz.js +16 -0
  213. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/01-basic.yaml +2 -0
  214. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/02-anchor.yaml +2 -0
  215. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/03-norway.yaml +1 -0
  216. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/04-multidoc.yaml +4 -0
  217. package/lib/vendor/blamejs/fuzz/parsers__safe-ini.fuzz.js +16 -0
  218. package/lib/vendor/blamejs/fuzz/parsers__safe-ini_seed_corpus/01-basic.ini +2 -0
  219. package/lib/vendor/blamejs/fuzz/parsers__safe-toml.fuzz.js +16 -0
  220. package/lib/vendor/blamejs/fuzz/parsers__safe-toml_seed_corpus/01-basic.toml +4 -0
  221. package/lib/vendor/blamejs/fuzz/parsers__safe-xml.fuzz.js +16 -0
  222. package/lib/vendor/blamejs/fuzz/parsers__safe-xml_seed_corpus/01-basic.xml +1 -0
  223. package/lib/vendor/blamejs/fuzz/parsers__safe-yaml.fuzz.js +16 -0
  224. package/lib/vendor/blamejs/fuzz/parsers__safe-yaml_seed_corpus/01-basic.yaml +4 -0
  225. package/lib/vendor/blamejs/fuzz/safe-decompress.fuzz.js +49 -0
  226. package/lib/vendor/blamejs/fuzz/safe-dns.fuzz.js +29 -0
  227. package/lib/vendor/blamejs/fuzz/safe-ical.fuzz.js +16 -0
  228. package/lib/vendor/blamejs/fuzz/safe-icap.fuzz.js +42 -0
  229. package/lib/vendor/blamejs/fuzz/safe-json.fuzz.js +25 -0
  230. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/01-object.txt +1 -0
  231. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/02-array.txt +1 -0
  232. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/03-string.txt +1 -0
  233. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/04-proto.txt +1 -0
  234. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/05-deep.txt +1 -0
  235. package/lib/vendor/blamejs/fuzz/safe-jsonpath.fuzz.js +16 -0
  236. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/01-basic.txt +1 -0
  237. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/02-filter.txt +1 -0
  238. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/03-deepscan.txt +1 -0
  239. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/04-slice.txt +1 -0
  240. package/lib/vendor/blamejs/fuzz/safe-mime.fuzz.js +27 -0
  241. package/lib/vendor/blamejs/fuzz/safe-mount-info.fuzz.js +33 -0
  242. package/lib/vendor/blamejs/fuzz/safe-sieve.fuzz.js +28 -0
  243. package/lib/vendor/blamejs/fuzz/safe-smtp.fuzz.js +64 -0
  244. package/lib/vendor/blamejs/fuzz/safe-url.fuzz.js +16 -0
  245. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/01-basic.txt +1 -0
  246. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/02-userinfo.txt +1 -0
  247. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/03-dangerous.txt +1 -0
  248. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/04-data.txt +1 -0
  249. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/05-ipv6.txt +1 -0
  250. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/06-idn.txt +1 -0
  251. package/lib/vendor/blamejs/fuzz/safe-vcard.fuzz.js +16 -0
  252. package/lib/vendor/blamejs/index.js +678 -0
  253. package/lib/vendor/blamejs/keys/release-pqc-pub.json +7 -0
  254. package/lib/vendor/blamejs/lib/_test/crypto-fixtures.js +67 -0
  255. package/lib/vendor/blamejs/lib/a2a-tasks.js +598 -0
  256. package/lib/vendor/blamejs/lib/a2a.js +407 -0
  257. package/lib/vendor/blamejs/lib/acme.js +1448 -0
  258. package/lib/vendor/blamejs/lib/agent-audit.js +45 -0
  259. package/lib/vendor/blamejs/lib/agent-event-bus.js +382 -0
  260. package/lib/vendor/blamejs/lib/agent-idempotency.js +497 -0
  261. package/lib/vendor/blamejs/lib/agent-orchestrator.js +717 -0
  262. package/lib/vendor/blamejs/lib/agent-posture-chain.js +366 -0
  263. package/lib/vendor/blamejs/lib/agent-saga.js +321 -0
  264. package/lib/vendor/blamejs/lib/agent-snapshot.js +676 -0
  265. package/lib/vendor/blamejs/lib/agent-stream.js +269 -0
  266. package/lib/vendor/blamejs/lib/agent-tenant.js +632 -0
  267. package/lib/vendor/blamejs/lib/agent-trace.js +281 -0
  268. package/lib/vendor/blamejs/lib/ai-adverse-decision.js +184 -0
  269. package/lib/vendor/blamejs/lib/ai-content-detect.js +268 -0
  270. package/lib/vendor/blamejs/lib/ai-input.js +201 -0
  271. package/lib/vendor/blamejs/lib/ai-model-manifest.js +363 -0
  272. package/lib/vendor/blamejs/lib/ai-pref.js +340 -0
  273. package/lib/vendor/blamejs/lib/api-key.js +721 -0
  274. package/lib/vendor/blamejs/lib/api-snapshot.js +458 -0
  275. package/lib/vendor/blamejs/lib/app-shutdown.js +557 -0
  276. package/lib/vendor/blamejs/lib/app.js +365 -0
  277. package/lib/vendor/blamejs/lib/archive.js +547 -0
  278. package/lib/vendor/blamejs/lib/arg-parser.js +697 -0
  279. package/lib/vendor/blamejs/lib/argon2-builtin.js +173 -0
  280. package/lib/vendor/blamejs/lib/asn1-der.js +424 -0
  281. package/lib/vendor/blamejs/lib/asyncapi-bindings.js +160 -0
  282. package/lib/vendor/blamejs/lib/asyncapi-traits.js +143 -0
  283. package/lib/vendor/blamejs/lib/asyncapi.js +575 -0
  284. package/lib/vendor/blamejs/lib/atomic-file.js +1023 -0
  285. package/lib/vendor/blamejs/lib/audit-chain.js +266 -0
  286. package/lib/vendor/blamejs/lib/audit-daily-review.js +389 -0
  287. package/lib/vendor/blamejs/lib/audit-sign.js +751 -0
  288. package/lib/vendor/blamejs/lib/audit-tools.js +1113 -0
  289. package/lib/vendor/blamejs/lib/audit.js +1671 -0
  290. package/lib/vendor/blamejs/lib/auth/aal.js +169 -0
  291. package/lib/vendor/blamejs/lib/auth/access-lock.js +220 -0
  292. package/lib/vendor/blamejs/lib/auth/acr-vocabulary.js +265 -0
  293. package/lib/vendor/blamejs/lib/auth/ato-kill-switch.js +112 -0
  294. package/lib/vendor/blamejs/lib/auth/auth-time-tracker.js +111 -0
  295. package/lib/vendor/blamejs/lib/auth/bot-challenge.js +573 -0
  296. package/lib/vendor/blamejs/lib/auth/ciba.js +637 -0
  297. package/lib/vendor/blamejs/lib/auth/dpop.js +516 -0
  298. package/lib/vendor/blamejs/lib/auth/elevation-grant.js +306 -0
  299. package/lib/vendor/blamejs/lib/auth/fal.js +229 -0
  300. package/lib/vendor/blamejs/lib/auth/fido-mds3.js +681 -0
  301. package/lib/vendor/blamejs/lib/auth/jwt-external.js +519 -0
  302. package/lib/vendor/blamejs/lib/auth/jwt.js +430 -0
  303. package/lib/vendor/blamejs/lib/auth/lockout.js +449 -0
  304. package/lib/vendor/blamejs/lib/auth/oauth.js +2141 -0
  305. package/lib/vendor/blamejs/lib/auth/oid4vci.js +657 -0
  306. package/lib/vendor/blamejs/lib/auth/oid4vp.js +531 -0
  307. package/lib/vendor/blamejs/lib/auth/openid-federation.js +600 -0
  308. package/lib/vendor/blamejs/lib/auth/passkey.js +676 -0
  309. package/lib/vendor/blamejs/lib/auth/password.js +693 -0
  310. package/lib/vendor/blamejs/lib/auth/saml.js +2109 -0
  311. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-disclosure.js +95 -0
  312. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-holder.js +225 -0
  313. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-issuer.js +197 -0
  314. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +728 -0
  315. package/lib/vendor/blamejs/lib/auth/status-list.js +272 -0
  316. package/lib/vendor/blamejs/lib/auth/step-up-policy.js +335 -0
  317. package/lib/vendor/blamejs/lib/auth/step-up.js +454 -0
  318. package/lib/vendor/blamejs/lib/auth-bot-challenge.js +505 -0
  319. package/lib/vendor/blamejs/lib/auth-header.js +148 -0
  320. package/lib/vendor/blamejs/lib/backup/bundle.js +265 -0
  321. package/lib/vendor/blamejs/lib/backup/crypto.js +176 -0
  322. package/lib/vendor/blamejs/lib/backup/index.js +1001 -0
  323. package/lib/vendor/blamejs/lib/backup/manifest.js +443 -0
  324. package/lib/vendor/blamejs/lib/boot-gates.js +174 -0
  325. package/lib/vendor/blamejs/lib/breach-deadline.js +272 -0
  326. package/lib/vendor/blamejs/lib/break-glass.js +1753 -0
  327. package/lib/vendor/blamejs/lib/budr.js +205 -0
  328. package/lib/vendor/blamejs/lib/bundler.js +461 -0
  329. package/lib/vendor/blamejs/lib/cache-redis.js +256 -0
  330. package/lib/vendor/blamejs/lib/cache-status.js +288 -0
  331. package/lib/vendor/blamejs/lib/cache.js +1331 -0
  332. package/lib/vendor/blamejs/lib/calendar.js +1240 -0
  333. package/lib/vendor/blamejs/lib/canonical-json.js +143 -0
  334. package/lib/vendor/blamejs/lib/cdn-cache-control.js +473 -0
  335. package/lib/vendor/blamejs/lib/cert.js +763 -0
  336. package/lib/vendor/blamejs/lib/chain-writer.js +259 -0
  337. package/lib/vendor/blamejs/lib/circuit-breaker.js +101 -0
  338. package/lib/vendor/blamejs/lib/cli-helpers.js +237 -0
  339. package/lib/vendor/blamejs/lib/cli.js +2328 -0
  340. package/lib/vendor/blamejs/lib/client-hints.js +318 -0
  341. package/lib/vendor/blamejs/lib/cloud-events.js +277 -0
  342. package/lib/vendor/blamejs/lib/cluster-provider-db.js +317 -0
  343. package/lib/vendor/blamejs/lib/cluster-storage.js +351 -0
  344. package/lib/vendor/blamejs/lib/cluster.js +1017 -0
  345. package/lib/vendor/blamejs/lib/cms-codec.js +826 -0
  346. package/lib/vendor/blamejs/lib/codepoint-class.js +262 -0
  347. package/lib/vendor/blamejs/lib/compliance-ai-act-logging.js +190 -0
  348. package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +205 -0
  349. package/lib/vendor/blamejs/lib/compliance-ai-act-risk.js +189 -0
  350. package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +200 -0
  351. package/lib/vendor/blamejs/lib/compliance-ai-act.js +821 -0
  352. package/lib/vendor/blamejs/lib/compliance-eaa.js +204 -0
  353. package/lib/vendor/blamejs/lib/compliance-sanctions-aliases.js +167 -0
  354. package/lib/vendor/blamejs/lib/compliance-sanctions-fetcher.js +206 -0
  355. package/lib/vendor/blamejs/lib/compliance-sanctions-fuzzy.js +297 -0
  356. package/lib/vendor/blamejs/lib/compliance-sanctions.js +569 -0
  357. package/lib/vendor/blamejs/lib/compliance.js +1558 -0
  358. package/lib/vendor/blamejs/lib/config-drift.js +426 -0
  359. package/lib/vendor/blamejs/lib/config.js +446 -0
  360. package/lib/vendor/blamejs/lib/consent.js +369 -0
  361. package/lib/vendor/blamejs/lib/constants.js +209 -0
  362. package/lib/vendor/blamejs/lib/content-credentials.js +704 -0
  363. package/lib/vendor/blamejs/lib/cookies.js +560 -0
  364. package/lib/vendor/blamejs/lib/cra-report.js +299 -0
  365. package/lib/vendor/blamejs/lib/credential-hash.js +394 -0
  366. package/lib/vendor/blamejs/lib/crypto-field.js +1017 -0
  367. package/lib/vendor/blamejs/lib/crypto-hpke-pq.js +187 -0
  368. package/lib/vendor/blamejs/lib/crypto-hpke.js +256 -0
  369. package/lib/vendor/blamejs/lib/crypto.js +1908 -0
  370. package/lib/vendor/blamejs/lib/csp.js +271 -0
  371. package/lib/vendor/blamejs/lib/csv.js +418 -0
  372. package/lib/vendor/blamejs/lib/daemon.js +481 -0
  373. package/lib/vendor/blamejs/lib/dark-patterns.js +488 -0
  374. package/lib/vendor/blamejs/lib/data-act.js +328 -0
  375. package/lib/vendor/blamejs/lib/db-collection.js +587 -0
  376. package/lib/vendor/blamejs/lib/db-declare-row-policy.js +267 -0
  377. package/lib/vendor/blamejs/lib/db-declare-view.js +420 -0
  378. package/lib/vendor/blamejs/lib/db-file-lifecycle.js +333 -0
  379. package/lib/vendor/blamejs/lib/db-query.js +802 -0
  380. package/lib/vendor/blamejs/lib/db-role-context.js +50 -0
  381. package/lib/vendor/blamejs/lib/db-schema.js +322 -0
  382. package/lib/vendor/blamejs/lib/db.js +3111 -0
  383. package/lib/vendor/blamejs/lib/dbsc.js +299 -0
  384. package/lib/vendor/blamejs/lib/ddl-change-control.js +523 -0
  385. package/lib/vendor/blamejs/lib/deprecate.js +377 -0
  386. package/lib/vendor/blamejs/lib/dev.js +405 -0
  387. package/lib/vendor/blamejs/lib/dora.js +402 -0
  388. package/lib/vendor/blamejs/lib/dr-runbook.js +368 -0
  389. package/lib/vendor/blamejs/lib/dsr.js +1188 -0
  390. package/lib/vendor/blamejs/lib/dual-control.js +526 -0
  391. package/lib/vendor/blamejs/lib/early-hints.js +212 -0
  392. package/lib/vendor/blamejs/lib/error-page.js +420 -0
  393. package/lib/vendor/blamejs/lib/events.js +214 -0
  394. package/lib/vendor/blamejs/lib/external-db-migrate.js +659 -0
  395. package/lib/vendor/blamejs/lib/external-db.js +1877 -0
  396. package/lib/vendor/blamejs/lib/fapi2.js +394 -0
  397. package/lib/vendor/blamejs/lib/fda-21cfr11.js +395 -0
  398. package/lib/vendor/blamejs/lib/fdx.js +370 -0
  399. package/lib/vendor/blamejs/lib/fedcm.js +264 -0
  400. package/lib/vendor/blamejs/lib/file-type.js +360 -0
  401. package/lib/vendor/blamejs/lib/file-upload.js +1256 -0
  402. package/lib/vendor/blamejs/lib/flag-cache.js +136 -0
  403. package/lib/vendor/blamejs/lib/flag-evaluation-context.js +135 -0
  404. package/lib/vendor/blamejs/lib/flag-providers.js +279 -0
  405. package/lib/vendor/blamejs/lib/flag-targeting.js +210 -0
  406. package/lib/vendor/blamejs/lib/flag.js +346 -0
  407. package/lib/vendor/blamejs/lib/forms.js +525 -0
  408. package/lib/vendor/blamejs/lib/framework-error.js +724 -0
  409. package/lib/vendor/blamejs/lib/framework-schema.js +845 -0
  410. package/lib/vendor/blamejs/lib/framework-sha1-hibp.js +34 -0
  411. package/lib/vendor/blamejs/lib/fsm.js +469 -0
  412. package/lib/vendor/blamejs/lib/gate-contract.js +1661 -0
  413. package/lib/vendor/blamejs/lib/gdpr-ropa.js +261 -0
  414. package/lib/vendor/blamejs/lib/graphql-federation.js +234 -0
  415. package/lib/vendor/blamejs/lib/guard-agent-registry.js +179 -0
  416. package/lib/vendor/blamejs/lib/guard-all.js +555 -0
  417. package/lib/vendor/blamejs/lib/guard-archive.js +901 -0
  418. package/lib/vendor/blamejs/lib/guard-auth.js +451 -0
  419. package/lib/vendor/blamejs/lib/guard-cidr.js +676 -0
  420. package/lib/vendor/blamejs/lib/guard-csv.js +1176 -0
  421. package/lib/vendor/blamejs/lib/guard-domain.js +814 -0
  422. package/lib/vendor/blamejs/lib/guard-dsn.js +382 -0
  423. package/lib/vendor/blamejs/lib/guard-email.js +951 -0
  424. package/lib/vendor/blamejs/lib/guard-envelope.js +294 -0
  425. package/lib/vendor/blamejs/lib/guard-event-bus-payload.js +217 -0
  426. package/lib/vendor/blamejs/lib/guard-event-bus-topic.js +150 -0
  427. package/lib/vendor/blamejs/lib/guard-filename.js +956 -0
  428. package/lib/vendor/blamejs/lib/guard-graphql.js +731 -0
  429. package/lib/vendor/blamejs/lib/guard-html-wcag-aria.js +164 -0
  430. package/lib/vendor/blamejs/lib/guard-html-wcag-forms.js +144 -0
  431. package/lib/vendor/blamejs/lib/guard-html-wcag-tables.js +154 -0
  432. package/lib/vendor/blamejs/lib/guard-html-wcag-tagwalk.js +44 -0
  433. package/lib/vendor/blamejs/lib/guard-html-wcag.js +470 -0
  434. package/lib/vendor/blamejs/lib/guard-html.js +1209 -0
  435. package/lib/vendor/blamejs/lib/guard-idempotency-key.js +151 -0
  436. package/lib/vendor/blamejs/lib/guard-image.js +584 -0
  437. package/lib/vendor/blamejs/lib/guard-imap-command.js +337 -0
  438. package/lib/vendor/blamejs/lib/guard-jmap.js +321 -0
  439. package/lib/vendor/blamejs/lib/guard-json.js +935 -0
  440. package/lib/vendor/blamejs/lib/guard-jsonpath.js +512 -0
  441. package/lib/vendor/blamejs/lib/guard-jwt.js +772 -0
  442. package/lib/vendor/blamejs/lib/guard-list-id.js +318 -0
  443. package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +412 -0
  444. package/lib/vendor/blamejs/lib/guard-mail-compose.js +282 -0
  445. package/lib/vendor/blamejs/lib/guard-mail-move.js +202 -0
  446. package/lib/vendor/blamejs/lib/guard-mail-query.js +310 -0
  447. package/lib/vendor/blamejs/lib/guard-mail-reply.js +172 -0
  448. package/lib/vendor/blamejs/lib/guard-mail-sieve.js +207 -0
  449. package/lib/vendor/blamejs/lib/guard-managesieve-command.js +566 -0
  450. package/lib/vendor/blamejs/lib/guard-markdown.js +768 -0
  451. package/lib/vendor/blamejs/lib/guard-message-id.js +267 -0
  452. package/lib/vendor/blamejs/lib/guard-mime.js +609 -0
  453. package/lib/vendor/blamejs/lib/guard-oauth.js +650 -0
  454. package/lib/vendor/blamejs/lib/guard-pdf.js +569 -0
  455. package/lib/vendor/blamejs/lib/guard-pop3-command.js +317 -0
  456. package/lib/vendor/blamejs/lib/guard-posture-chain.js +201 -0
  457. package/lib/vendor/blamejs/lib/guard-regex.js +632 -0
  458. package/lib/vendor/blamejs/lib/guard-saga-config.js +157 -0
  459. package/lib/vendor/blamejs/lib/guard-shell.js +522 -0
  460. package/lib/vendor/blamejs/lib/guard-smtp-command.js +594 -0
  461. package/lib/vendor/blamejs/lib/guard-snapshot-envelope.js +168 -0
  462. package/lib/vendor/blamejs/lib/guard-stream-args.js +166 -0
  463. package/lib/vendor/blamejs/lib/guard-svg.js +1163 -0
  464. package/lib/vendor/blamejs/lib/guard-template.js +490 -0
  465. package/lib/vendor/blamejs/lib/guard-tenant-id.js +138 -0
  466. package/lib/vendor/blamejs/lib/guard-time.js +586 -0
  467. package/lib/vendor/blamejs/lib/guard-trace-context.js +172 -0
  468. package/lib/vendor/blamejs/lib/guard-uuid.js +548 -0
  469. package/lib/vendor/blamejs/lib/guard-xml.js +666 -0
  470. package/lib/vendor/blamejs/lib/guard-yaml.js +726 -0
  471. package/lib/vendor/blamejs/lib/hal.js +125 -0
  472. package/lib/vendor/blamejs/lib/handlers.js +350 -0
  473. package/lib/vendor/blamejs/lib/honeytoken.js +168 -0
  474. package/lib/vendor/blamejs/lib/html-balance.js +347 -0
  475. package/lib/vendor/blamejs/lib/http-client-cache.js +923 -0
  476. package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +519 -0
  477. package/lib/vendor/blamejs/lib/http-client.js +2152 -0
  478. package/lib/vendor/blamejs/lib/http-message-signature.js +589 -0
  479. package/lib/vendor/blamejs/lib/http2-teardown.js +34 -0
  480. package/lib/vendor/blamejs/lib/i18n-messageformat.js +398 -0
  481. package/lib/vendor/blamejs/lib/i18n.js +931 -0
  482. package/lib/vendor/blamejs/lib/iab-mspa.js +257 -0
  483. package/lib/vendor/blamejs/lib/iab-tcf.js +461 -0
  484. package/lib/vendor/blamejs/lib/importmap-integrity.js +90 -0
  485. package/lib/vendor/blamejs/lib/inbox.js +435 -0
  486. package/lib/vendor/blamejs/lib/incident-report.js +314 -0
  487. package/lib/vendor/blamejs/lib/ip-utils.js +102 -0
  488. package/lib/vendor/blamejs/lib/jobs.js +185 -0
  489. package/lib/vendor/blamejs/lib/jose-jwe-experimental.js +228 -0
  490. package/lib/vendor/blamejs/lib/jsonapi.js +230 -0
  491. package/lib/vendor/blamejs/lib/keychain.js +865 -0
  492. package/lib/vendor/blamejs/lib/lazy-require.js +48 -0
  493. package/lib/vendor/blamejs/lib/legal-hold.js +374 -0
  494. package/lib/vendor/blamejs/lib/local-db-thin.js +321 -0
  495. package/lib/vendor/blamejs/lib/log-stream-cloudwatch.js +369 -0
  496. package/lib/vendor/blamejs/lib/log-stream-local.js +146 -0
  497. package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +410 -0
  498. package/lib/vendor/blamejs/lib/log-stream-otlp.js +286 -0
  499. package/lib/vendor/blamejs/lib/log-stream-syslog.js +310 -0
  500. package/lib/vendor/blamejs/lib/log-stream-webhook.js +199 -0
  501. package/lib/vendor/blamejs/lib/log-stream.js +584 -0
  502. package/lib/vendor/blamejs/lib/log.js +625 -0
  503. package/lib/vendor/blamejs/lib/lro.js +200 -0
  504. package/lib/vendor/blamejs/lib/mail-agent.js +786 -0
  505. package/lib/vendor/blamejs/lib/mail-arc-sign.js +417 -0
  506. package/lib/vendor/blamejs/lib/mail-arf.js +343 -0
  507. package/lib/vendor/blamejs/lib/mail-auth.js +2144 -0
  508. package/lib/vendor/blamejs/lib/mail-bimi.js +1047 -0
  509. package/lib/vendor/blamejs/lib/mail-bounce.js +955 -0
  510. package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +1286 -0
  511. package/lib/vendor/blamejs/lib/mail-crypto-smime.js +789 -0
  512. package/lib/vendor/blamejs/lib/mail-crypto.js +108 -0
  513. package/lib/vendor/blamejs/lib/mail-dav.js +1224 -0
  514. package/lib/vendor/blamejs/lib/mail-deploy.js +1119 -0
  515. package/lib/vendor/blamejs/lib/mail-dkim.js +1250 -0
  516. package/lib/vendor/blamejs/lib/mail-greylist.js +448 -0
  517. package/lib/vendor/blamejs/lib/mail-helo.js +473 -0
  518. package/lib/vendor/blamejs/lib/mail-journal.js +435 -0
  519. package/lib/vendor/blamejs/lib/mail-mdn.js +424 -0
  520. package/lib/vendor/blamejs/lib/mail-rbl.js +392 -0
  521. package/lib/vendor/blamejs/lib/mail-require-tls.js +198 -0
  522. package/lib/vendor/blamejs/lib/mail-scan.js +502 -0
  523. package/lib/vendor/blamejs/lib/mail-send-deliver.js +629 -0
  524. package/lib/vendor/blamejs/lib/mail-server-imap.js +1858 -0
  525. package/lib/vendor/blamejs/lib/mail-server-jmap.js +1565 -0
  526. package/lib/vendor/blamejs/lib/mail-server-managesieve.js +908 -0
  527. package/lib/vendor/blamejs/lib/mail-server-mx.js +969 -0
  528. package/lib/vendor/blamejs/lib/mail-server-pop3.js +915 -0
  529. package/lib/vendor/blamejs/lib/mail-server-rate-limit.js +315 -0
  530. package/lib/vendor/blamejs/lib/mail-server-registry.js +378 -0
  531. package/lib/vendor/blamejs/lib/mail-server-submission.js +1396 -0
  532. package/lib/vendor/blamejs/lib/mail-server-tls.js +445 -0
  533. package/lib/vendor/blamejs/lib/mail-sieve.js +557 -0
  534. package/lib/vendor/blamejs/lib/mail-spam-score.js +284 -0
  535. package/lib/vendor/blamejs/lib/mail-srs.js +248 -0
  536. package/lib/vendor/blamejs/lib/mail-store-fts.js +394 -0
  537. package/lib/vendor/blamejs/lib/mail-store.js +929 -0
  538. package/lib/vendor/blamejs/lib/mail-unsubscribe.js +400 -0
  539. package/lib/vendor/blamejs/lib/mail.js +1971 -0
  540. package/lib/vendor/blamejs/lib/mcp-tool-registry.js +473 -0
  541. package/lib/vendor/blamejs/lib/mcp.js +950 -0
  542. package/lib/vendor/blamejs/lib/metrics.js +1503 -0
  543. package/lib/vendor/blamejs/lib/middleware/age-gate.js +177 -0
  544. package/lib/vendor/blamejs/lib/middleware/ai-act-disclosure.js +203 -0
  545. package/lib/vendor/blamejs/lib/middleware/api-encrypt.js +981 -0
  546. package/lib/vendor/blamejs/lib/middleware/assetlinks.js +137 -0
  547. package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +171 -0
  548. package/lib/vendor/blamejs/lib/middleware/attach-user.js +220 -0
  549. package/lib/vendor/blamejs/lib/middleware/bearer-auth.js +293 -0
  550. package/lib/vendor/blamejs/lib/middleware/body-parser.js +1519 -0
  551. package/lib/vendor/blamejs/lib/middleware/bot-disclose.js +183 -0
  552. package/lib/vendor/blamejs/lib/middleware/bot-guard.js +217 -0
  553. package/lib/vendor/blamejs/lib/middleware/clear-site-data.js +122 -0
  554. package/lib/vendor/blamejs/lib/middleware/compose-pipeline.js +355 -0
  555. package/lib/vendor/blamejs/lib/middleware/compression.js +489 -0
  556. package/lib/vendor/blamejs/lib/middleware/cookies.js +130 -0
  557. package/lib/vendor/blamejs/lib/middleware/cors.js +386 -0
  558. package/lib/vendor/blamejs/lib/middleware/csp-nonce.js +388 -0
  559. package/lib/vendor/blamejs/lib/middleware/csp-report.js +167 -0
  560. package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +499 -0
  561. package/lib/vendor/blamejs/lib/middleware/daily-byte-quota.js +243 -0
  562. package/lib/vendor/blamejs/lib/middleware/db-role-for.js +304 -0
  563. package/lib/vendor/blamejs/lib/middleware/dpop.js +402 -0
  564. package/lib/vendor/blamejs/lib/middleware/error-handler.js +69 -0
  565. package/lib/vendor/blamejs/lib/middleware/fetch-metadata.js +168 -0
  566. package/lib/vendor/blamejs/lib/middleware/flag-context.js +110 -0
  567. package/lib/vendor/blamejs/lib/middleware/gpc.js +153 -0
  568. package/lib/vendor/blamejs/lib/middleware/headers.js +242 -0
  569. package/lib/vendor/blamejs/lib/middleware/health.js +438 -0
  570. package/lib/vendor/blamejs/lib/middleware/host-allowlist.js +189 -0
  571. package/lib/vendor/blamejs/lib/middleware/idempotency-key.js +964 -0
  572. package/lib/vendor/blamejs/lib/middleware/index.js +183 -0
  573. package/lib/vendor/blamejs/lib/middleware/nel.js +214 -0
  574. package/lib/vendor/blamejs/lib/middleware/network-allowlist.js +237 -0
  575. package/lib/vendor/blamejs/lib/middleware/no-cache.js +106 -0
  576. package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +177 -0
  577. package/lib/vendor/blamejs/lib/middleware/protected-resource-metadata.js +277 -0
  578. package/lib/vendor/blamejs/lib/middleware/rate-limit.js +556 -0
  579. package/lib/vendor/blamejs/lib/middleware/request-id.js +79 -0
  580. package/lib/vendor/blamejs/lib/middleware/request-log.js +205 -0
  581. package/lib/vendor/blamejs/lib/middleware/require-aal.js +138 -0
  582. package/lib/vendor/blamejs/lib/middleware/require-auth.js +144 -0
  583. package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +290 -0
  584. package/lib/vendor/blamejs/lib/middleware/require-content-type.js +113 -0
  585. package/lib/vendor/blamejs/lib/middleware/require-methods.js +97 -0
  586. package/lib/vendor/blamejs/lib/middleware/require-mtls.js +212 -0
  587. package/lib/vendor/blamejs/lib/middleware/require-step-up.js +226 -0
  588. package/lib/vendor/blamejs/lib/middleware/scim-server.js +375 -0
  589. package/lib/vendor/blamejs/lib/middleware/security-headers.js +285 -0
  590. package/lib/vendor/blamejs/lib/middleware/security-txt.js +170 -0
  591. package/lib/vendor/blamejs/lib/middleware/span-http-server.js +280 -0
  592. package/lib/vendor/blamejs/lib/middleware/speculation-rules.js +323 -0
  593. package/lib/vendor/blamejs/lib/middleware/sse.js +200 -0
  594. package/lib/vendor/blamejs/lib/middleware/trace-log-correlation.js +167 -0
  595. package/lib/vendor/blamejs/lib/middleware/trace-propagate.js +148 -0
  596. package/lib/vendor/blamejs/lib/middleware/tus-upload.js +749 -0
  597. package/lib/vendor/blamejs/lib/middleware/web-app-manifest.js +164 -0
  598. package/lib/vendor/blamejs/lib/migration-files.js +37 -0
  599. package/lib/vendor/blamejs/lib/migrations.js +385 -0
  600. package/lib/vendor/blamejs/lib/mime-parse.js +198 -0
  601. package/lib/vendor/blamejs/lib/money.js +699 -0
  602. package/lib/vendor/blamejs/lib/mtls-ca.js +572 -0
  603. package/lib/vendor/blamejs/lib/mtls-engine-default.js +501 -0
  604. package/lib/vendor/blamejs/lib/network-byte-quota.js +308 -0
  605. package/lib/vendor/blamejs/lib/network-dns-resolver.js +533 -0
  606. package/lib/vendor/blamejs/lib/network-dns.js +1930 -0
  607. package/lib/vendor/blamejs/lib/network-heartbeat.js +425 -0
  608. package/lib/vendor/blamejs/lib/network-nts.js +574 -0
  609. package/lib/vendor/blamejs/lib/network-proxy.js +265 -0
  610. package/lib/vendor/blamejs/lib/network-smtp-policy.js +836 -0
  611. package/lib/vendor/blamejs/lib/network-tls.js +3126 -0
  612. package/lib/vendor/blamejs/lib/network.js +346 -0
  613. package/lib/vendor/blamejs/lib/nis2-report.js +181 -0
  614. package/lib/vendor/blamejs/lib/nist-crosswalk.js +293 -0
  615. package/lib/vendor/blamejs/lib/nonce-store.js +177 -0
  616. package/lib/vendor/blamejs/lib/notify.js +683 -0
  617. package/lib/vendor/blamejs/lib/ntp-check.js +458 -0
  618. package/lib/vendor/blamejs/lib/numeric-bounds.js +111 -0
  619. package/lib/vendor/blamejs/lib/numeric-checks.js +40 -0
  620. package/lib/vendor/blamejs/lib/object-store/azure-blob-bucket-ops.js +349 -0
  621. package/lib/vendor/blamejs/lib/object-store/azure-blob.js +488 -0
  622. package/lib/vendor/blamejs/lib/object-store/gcs-bucket-ops.js +351 -0
  623. package/lib/vendor/blamejs/lib/object-store/gcs.js +515 -0
  624. package/lib/vendor/blamejs/lib/object-store/http-put.js +153 -0
  625. package/lib/vendor/blamejs/lib/object-store/http-request.js +38 -0
  626. package/lib/vendor/blamejs/lib/object-store/index.js +197 -0
  627. package/lib/vendor/blamejs/lib/object-store/local.js +163 -0
  628. package/lib/vendor/blamejs/lib/object-store/sigv4-bucket-ops.js +1133 -0
  629. package/lib/vendor/blamejs/lib/object-store/sigv4.js +957 -0
  630. package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +420 -0
  631. package/lib/vendor/blamejs/lib/observability-tracer.js +395 -0
  632. package/lib/vendor/blamejs/lib/observability.js +720 -0
  633. package/lib/vendor/blamejs/lib/openapi-paths-builder.js +248 -0
  634. package/lib/vendor/blamejs/lib/openapi-schema-walk.js +192 -0
  635. package/lib/vendor/blamejs/lib/openapi-security.js +169 -0
  636. package/lib/vendor/blamejs/lib/openapi-yaml.js +154 -0
  637. package/lib/vendor/blamejs/lib/openapi.js +489 -0
  638. package/lib/vendor/blamejs/lib/otel-export.js +278 -0
  639. package/lib/vendor/blamejs/lib/outbox.js +547 -0
  640. package/lib/vendor/blamejs/lib/pagination.js +542 -0
  641. package/lib/vendor/blamejs/lib/parsers/index.js +91 -0
  642. package/lib/vendor/blamejs/lib/parsers/safe-env.js +642 -0
  643. package/lib/vendor/blamejs/lib/parsers/safe-ini.js +293 -0
  644. package/lib/vendor/blamejs/lib/parsers/safe-toml.js +784 -0
  645. package/lib/vendor/blamejs/lib/parsers/safe-xml.js +390 -0
  646. package/lib/vendor/blamejs/lib/parsers/safe-yaml.js +1015 -0
  647. package/lib/vendor/blamejs/lib/permissions.js +793 -0
  648. package/lib/vendor/blamejs/lib/pick.js +105 -0
  649. package/lib/vendor/blamejs/lib/pqc-agent.js +351 -0
  650. package/lib/vendor/blamejs/lib/pqc-gate.js +279 -0
  651. package/lib/vendor/blamejs/lib/pqc-software.js +271 -0
  652. package/lib/vendor/blamejs/lib/problem-details.js +482 -0
  653. package/lib/vendor/blamejs/lib/process-spawn.js +196 -0
  654. package/lib/vendor/blamejs/lib/promise-pool.js +162 -0
  655. package/lib/vendor/blamejs/lib/protobuf-encoder.js +190 -0
  656. package/lib/vendor/blamejs/lib/protocol-dispatcher.js +161 -0
  657. package/lib/vendor/blamejs/lib/public-suffix.js +403 -0
  658. package/lib/vendor/blamejs/lib/pubsub-cluster.js +154 -0
  659. package/lib/vendor/blamejs/lib/pubsub-redis.js +167 -0
  660. package/lib/vendor/blamejs/lib/pubsub.js +463 -0
  661. package/lib/vendor/blamejs/lib/queue-local.js +476 -0
  662. package/lib/vendor/blamejs/lib/queue-redis.js +745 -0
  663. package/lib/vendor/blamejs/lib/queue-sqs.js +319 -0
  664. package/lib/vendor/blamejs/lib/queue.js +1016 -0
  665. package/lib/vendor/blamejs/lib/redact.js +1007 -0
  666. package/lib/vendor/blamejs/lib/redis-client.js +520 -0
  667. package/lib/vendor/blamejs/lib/render.js +285 -0
  668. package/lib/vendor/blamejs/lib/request-helpers.js +767 -0
  669. package/lib/vendor/blamejs/lib/resource-access-lock.js +116 -0
  670. package/lib/vendor/blamejs/lib/restore-bundle.js +340 -0
  671. package/lib/vendor/blamejs/lib/restore-rollback.js +365 -0
  672. package/lib/vendor/blamejs/lib/restore.js +409 -0
  673. package/lib/vendor/blamejs/lib/retention.js +640 -0
  674. package/lib/vendor/blamejs/lib/retry.js +523 -0
  675. package/lib/vendor/blamejs/lib/router.js +1289 -0
  676. package/lib/vendor/blamejs/lib/safe-async.js +1184 -0
  677. package/lib/vendor/blamejs/lib/safe-buffer.js +562 -0
  678. package/lib/vendor/blamejs/lib/safe-decompress.js +297 -0
  679. package/lib/vendor/blamejs/lib/safe-dns.js +665 -0
  680. package/lib/vendor/blamejs/lib/safe-ical.js +634 -0
  681. package/lib/vendor/blamejs/lib/safe-icap.js +502 -0
  682. package/lib/vendor/blamejs/lib/safe-json.js +946 -0
  683. package/lib/vendor/blamejs/lib/safe-jsonpath.js +285 -0
  684. package/lib/vendor/blamejs/lib/safe-mime.js +831 -0
  685. package/lib/vendor/blamejs/lib/safe-mount-info.js +306 -0
  686. package/lib/vendor/blamejs/lib/safe-path.js +254 -0
  687. package/lib/vendor/blamejs/lib/safe-redirect.js +106 -0
  688. package/lib/vendor/blamejs/lib/safe-schema.js +1810 -0
  689. package/lib/vendor/blamejs/lib/safe-sieve.js +684 -0
  690. package/lib/vendor/blamejs/lib/safe-smtp.js +185 -0
  691. package/lib/vendor/blamejs/lib/safe-sql.js +363 -0
  692. package/lib/vendor/blamejs/lib/safe-url.js +428 -0
  693. package/lib/vendor/blamejs/lib/safe-vcard.js +473 -0
  694. package/lib/vendor/blamejs/lib/sandbox-worker.js +135 -0
  695. package/lib/vendor/blamejs/lib/sandbox.js +358 -0
  696. package/lib/vendor/blamejs/lib/scheduler.js +827 -0
  697. package/lib/vendor/blamejs/lib/sd-notify.js +269 -0
  698. package/lib/vendor/blamejs/lib/sec-cyber.js +214 -0
  699. package/lib/vendor/blamejs/lib/security-assert.js +395 -0
  700. package/lib/vendor/blamejs/lib/seeders.js +620 -0
  701. package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +309 -0
  702. package/lib/vendor/blamejs/lib/self-update.js +804 -0
  703. package/lib/vendor/blamejs/lib/server-timing.js +174 -0
  704. package/lib/vendor/blamejs/lib/session-device-binding.js +431 -0
  705. package/lib/vendor/blamejs/lib/session-stores.js +138 -0
  706. package/lib/vendor/blamejs/lib/session.js +1162 -0
  707. package/lib/vendor/blamejs/lib/slug.js +381 -0
  708. package/lib/vendor/blamejs/lib/sse.js +349 -0
  709. package/lib/vendor/blamejs/lib/ssrf-guard.js +792 -0
  710. package/lib/vendor/blamejs/lib/standard-webhooks.js +183 -0
  711. package/lib/vendor/blamejs/lib/static.js +1249 -0
  712. package/lib/vendor/blamejs/lib/storage.js +1272 -0
  713. package/lib/vendor/blamejs/lib/stream-throttle.js +235 -0
  714. package/lib/vendor/blamejs/lib/structured-fields.js +244 -0
  715. package/lib/vendor/blamejs/lib/subject.js +667 -0
  716. package/lib/vendor/blamejs/lib/tcpa-10dlc.js +175 -0
  717. package/lib/vendor/blamejs/lib/template.js +931 -0
  718. package/lib/vendor/blamejs/lib/tenant-quota.js +545 -0
  719. package/lib/vendor/blamejs/lib/test-harness.js +275 -0
  720. package/lib/vendor/blamejs/lib/testing.js +1185 -0
  721. package/lib/vendor/blamejs/lib/time.js +578 -0
  722. package/lib/vendor/blamejs/lib/tls-exporter.js +239 -0
  723. package/lib/vendor/blamejs/lib/totp.js +318 -0
  724. package/lib/vendor/blamejs/lib/tracing.js +546 -0
  725. package/lib/vendor/blamejs/lib/uuid.js +207 -0
  726. package/lib/vendor/blamejs/lib/validate-opts.js +381 -0
  727. package/lib/vendor/blamejs/lib/vault/index.js +638 -0
  728. package/lib/vendor/blamejs/lib/vault/passphrase-ops.js +311 -0
  729. package/lib/vendor/blamejs/lib/vault/passphrase-source.js +198 -0
  730. package/lib/vendor/blamejs/lib/vault/rotate.js +803 -0
  731. package/lib/vendor/blamejs/lib/vault/seal-pem-file.js +471 -0
  732. package/lib/vendor/blamejs/lib/vault/wrap.js +296 -0
  733. package/lib/vendor/blamejs/lib/vault-aad.js +259 -0
  734. package/lib/vendor/blamejs/lib/vendor/.vendor-data-pubkey +4 -0
  735. package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +161 -0
  736. package/lib/vendor/blamejs/lib/vendor/bimi-trust-anchors.data.js +68 -0
  737. package/lib/vendor/blamejs/lib/vendor/bimi-trust-anchors.pem +33 -0
  738. package/lib/vendor/blamejs/lib/vendor/common-passwords-top-10000.data.js +1325 -0
  739. package/lib/vendor/blamejs/lib/vendor/common-passwords-top-10000.txt +10002 -0
  740. package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +9 -0
  741. package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +18 -0
  742. package/lib/vendor/blamejs/lib/vendor/pki.cjs +181 -0
  743. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +16382 -0
  744. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5881 -0
  745. package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +328 -0
  746. package/lib/vendor/blamejs/lib/vendor/vendor-data-pubkey.js +16 -0
  747. package/lib/vendor/blamejs/lib/vendor-data.js +520 -0
  748. package/lib/vendor/blamejs/lib/vex.js +630 -0
  749. package/lib/vendor/blamejs/lib/watcher.js +608 -0
  750. package/lib/vendor/blamejs/lib/web-push-vapid.js +322 -0
  751. package/lib/vendor/blamejs/lib/webhook.js +977 -0
  752. package/lib/vendor/blamejs/lib/websocket-channels.js +327 -0
  753. package/lib/vendor/blamejs/lib/websocket.js +1561 -0
  754. package/lib/vendor/blamejs/lib/wiki-concepts.js +338 -0
  755. package/lib/vendor/blamejs/lib/worker-pool.js +464 -0
  756. package/lib/vendor/blamejs/lib/ws-client.js +978 -0
  757. package/lib/vendor/blamejs/lib/xml-c14n.js +506 -0
  758. package/lib/vendor/blamejs/memory/specs/node-26-map-getorinsert-migration.md +164 -0
  759. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +19 -0
  760. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/README.md +88 -0
  761. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/build.sh +26 -0
  762. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/project.yaml +28 -0
  763. package/lib/vendor/blamejs/package.json +81 -0
  764. package/lib/vendor/blamejs/release-notes/v0.0.x.json +310 -0
  765. package/lib/vendor/blamejs/release-notes/v0.1.x.json +1798 -0
  766. package/lib/vendor/blamejs/release-notes/v0.10.x.json +1288 -0
  767. package/lib/vendor/blamejs/release-notes/v0.11.x.json +2551 -0
  768. package/lib/vendor/blamejs/release-notes/v0.12.0.json +64 -0
  769. package/lib/vendor/blamejs/release-notes/v0.12.1.json +32 -0
  770. package/lib/vendor/blamejs/release-notes/v0.12.2.json +45 -0
  771. package/lib/vendor/blamejs/release-notes/v0.2.x.json +706 -0
  772. package/lib/vendor/blamejs/release-notes/v0.3.x.json +786 -0
  773. package/lib/vendor/blamejs/release-notes/v0.4.x.json +588 -0
  774. package/lib/vendor/blamejs/release-notes/v0.5.x.json +390 -0
  775. package/lib/vendor/blamejs/release-notes/v0.6.x.json +1947 -0
  776. package/lib/vendor/blamejs/release-notes/v0.7.x.json +3811 -0
  777. package/lib/vendor/blamejs/release-notes/v0.8.x.json +3318 -0
  778. package/lib/vendor/blamejs/release-notes/v0.9.x.json +2257 -0
  779. package/lib/vendor/blamejs/scripts/build-vendored-sbom.js +325 -0
  780. package/lib/vendor/blamejs/scripts/check-api-snapshot.js +62 -0
  781. package/lib/vendor/blamejs/scripts/check-changelog-extract.js +108 -0
  782. package/lib/vendor/blamejs/scripts/check-pack-against-gitignore.js +83 -0
  783. package/lib/vendor/blamejs/scripts/check-services.js +483 -0
  784. package/lib/vendor/blamejs/scripts/check-vendor-currency.js +349 -0
  785. package/lib/vendor/blamejs/scripts/consolidate-release-notes.js +216 -0
  786. package/lib/vendor/blamejs/scripts/gen-migrating.js +275 -0
  787. package/lib/vendor/blamejs/scripts/generate-changelog-entry.js +577 -0
  788. package/lib/vendor/blamejs/scripts/generate-release-signing-key.js +79 -0
  789. package/lib/vendor/blamejs/scripts/publish-dep-confusion-placeholder.sh +101 -0
  790. package/lib/vendor/blamejs/scripts/refresh-api-snapshot.js +31 -0
  791. package/lib/vendor/blamejs/scripts/refresh-vendor-manifest.js +132 -0
  792. package/lib/vendor/blamejs/scripts/release.js +652 -0
  793. package/lib/vendor/blamejs/scripts/sha3-digest.js +62 -0
  794. package/lib/vendor/blamejs/scripts/sign-release-artifact.js +92 -0
  795. package/lib/vendor/blamejs/scripts/test-integration.js +181 -0
  796. package/lib/vendor/blamejs/scripts/test-wiki-integration.js +126 -0
  797. package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +77 -0
  798. package/lib/vendor/blamejs/scripts/vendor-data-gen.js +186 -0
  799. package/lib/vendor/blamejs/scripts/vendor-data-keygen.js +101 -0
  800. package/lib/vendor/blamejs/scripts/vendor-update.sh +278 -0
  801. package/lib/vendor/blamejs/test/00-primitives.js +19075 -0
  802. package/lib/vendor/blamejs/test/10-state.js +622 -0
  803. package/lib/vendor/blamejs/test/20-db.js +561 -0
  804. package/lib/vendor/blamejs/test/30-chain.js +2110 -0
  805. package/lib/vendor/blamejs/test/40-consumers.js +2453 -0
  806. package/lib/vendor/blamejs/test/50-integration.js +486 -0
  807. package/lib/vendor/blamejs/test/_helpers.js +10 -0
  808. package/lib/vendor/blamejs/test/_smoke-worker.js +69 -0
  809. package/lib/vendor/blamejs/test/fixtures/exploit-corpus/corpus.json +368 -0
  810. package/lib/vendor/blamejs/test/fixtures/http-client-stream-payload.txt +2 -0
  811. package/lib/vendor/blamejs/test/fixtures/worker-pool/echo.js +52 -0
  812. package/lib/vendor/blamejs/test/helpers/_codebase-shingle-worker.js +24 -0
  813. package/lib/vendor/blamejs/test/helpers/_codebase-shingle.js +203 -0
  814. package/lib/vendor/blamejs/test/helpers/_shape-match.js +513 -0
  815. package/lib/vendor/blamejs/test/helpers/check.js +36 -0
  816. package/lib/vendor/blamejs/test/helpers/cluster.js +70 -0
  817. package/lib/vendor/blamejs/test/helpers/db.js +143 -0
  818. package/lib/vendor/blamejs/test/helpers/drivers.js +207 -0
  819. package/lib/vendor/blamejs/test/helpers/fs-watch.js +101 -0
  820. package/lib/vendor/blamejs/test/helpers/http.js +14 -0
  821. package/lib/vendor/blamejs/test/helpers/index.js +93 -0
  822. package/lib/vendor/blamejs/test/helpers/json-round-trip.js +120 -0
  823. package/lib/vendor/blamejs/test/helpers/mocks.js +20 -0
  824. package/lib/vendor/blamejs/test/helpers/otel.js +13 -0
  825. package/lib/vendor/blamejs/test/helpers/services.js +380 -0
  826. package/lib/vendor/blamejs/test/helpers/wait.js +206 -0
  827. package/lib/vendor/blamejs/test/integration/cache.test.js +235 -0
  828. package/lib/vendor/blamejs/test/integration/cluster-provider-mysql.test.js +174 -0
  829. package/lib/vendor/blamejs/test/integration/federation-auth.test.js +611 -0
  830. package/lib/vendor/blamejs/test/integration/http-client.test.js +129 -0
  831. package/lib/vendor/blamejs/test/integration/log-stream.test.js +219 -0
  832. package/lib/vendor/blamejs/test/integration/mail-crypto-smime.test.js +181 -0
  833. package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +152 -0
  834. package/lib/vendor/blamejs/test/integration/mail-smtp.test.js +161 -0
  835. package/lib/vendor/blamejs/test/integration/mtls-ca.test.js +289 -0
  836. package/lib/vendor/blamejs/test/integration/network-dns.test.js +123 -0
  837. package/lib/vendor/blamejs/test/integration/network-heartbeat.test.js +101 -0
  838. package/lib/vendor/blamejs/test/integration/ntp-check.test.js +89 -0
  839. package/lib/vendor/blamejs/test/integration/object-store-sigv4.test.js +403 -0
  840. package/lib/vendor/blamejs/test/integration/pqc-pkcs8-forward-compat.test.js +271 -0
  841. package/lib/vendor/blamejs/test/integration/pubsub.test.js +137 -0
  842. package/lib/vendor/blamejs/test/integration/queue-redis.test.js +352 -0
  843. package/lib/vendor/blamejs/test/integration/redis-client-tls.test.js +96 -0
  844. package/lib/vendor/blamejs/test/integration/ssrf-guard.test.js +98 -0
  845. package/lib/vendor/blamejs/test/integration/websocket-permessage-deflate.test.js +261 -0
  846. package/lib/vendor/blamejs/test/integration/ws-client-roundtrip.test.js +230 -0
  847. package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +211 -0
  848. package/lib/vendor/blamejs/test/layer-0-primitives/a2a.test.js +59 -0
  849. package/lib/vendor/blamejs/test/layer-0-primitives/access-lock.test.js +136 -0
  850. package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +219 -0
  851. package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +69 -0
  852. package/lib/vendor/blamejs/test/layer-0-primitives/agent-event-bus.test.js +266 -0
  853. package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +262 -0
  854. package/lib/vendor/blamejs/test/layer-0-primitives/agent-orchestrator.test.js +390 -0
  855. package/lib/vendor/blamejs/test/layer-0-primitives/agent-posture-chain.test.js +174 -0
  856. package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +279 -0
  857. package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +322 -0
  858. package/lib/vendor/blamejs/test/layer-0-primitives/agent-stream.test.js +227 -0
  859. package/lib/vendor/blamejs/test/layer-0-primitives/agent-tenant.test.js +302 -0
  860. package/lib/vendor/blamejs/test/layer-0-primitives/agent-trace.test.js +150 -0
  861. package/lib/vendor/blamejs/test/layer-0-primitives/ai-adverse-decision.test.js +44 -0
  862. package/lib/vendor/blamejs/test/layer-0-primitives/ai-content-detect.test.js +150 -0
  863. package/lib/vendor/blamejs/test/layer-0-primitives/ai-input.test.js +50 -0
  864. package/lib/vendor/blamejs/test/layer-0-primitives/ai-model-manifest.test.js +96 -0
  865. package/lib/vendor/blamejs/test/layer-0-primitives/ai-pref.test.js +76 -0
  866. package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +1080 -0
  867. package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +311 -0
  868. package/lib/vendor/blamejs/test/layer-0-primitives/archive-zip-stream.test.js +291 -0
  869. package/lib/vendor/blamejs/test/layer-0-primitives/archive.test.js +140 -0
  870. package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +267 -0
  871. package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +108 -0
  872. package/lib/vendor/blamejs/test/layer-0-primitives/asyncapi.test.js +929 -0
  873. package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file-conflict-path.test.js +80 -0
  874. package/lib/vendor/blamejs/test/layer-0-primitives/audit-cve-defensive.test.js +176 -0
  875. package/lib/vendor/blamejs/test/layer-0-primitives/audit-daily-review.test.js +132 -0
  876. package/lib/vendor/blamejs/test/layer-0-primitives/audit-export-cadf.test.js +97 -0
  877. package/lib/vendor/blamejs/test/layer-0-primitives/audit-framework-namespaces.test.js +141 -0
  878. package/lib/vendor/blamejs/test/layer-0-primitives/audit-segregation.test.js +115 -0
  879. package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-ml-dsa-65.test.js +163 -0
  880. package/lib/vendor/blamejs/test/layer-0-primitives/audit-use-store.test.js +246 -0
  881. package/lib/vendor/blamejs/test/layer-0-primitives/auth-bot-challenge-verifier.test.js +485 -0
  882. package/lib/vendor/blamejs/test/layer-0-primitives/auth-bot-challenge.test.js +331 -0
  883. package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +352 -0
  884. package/lib/vendor/blamejs/test/layer-0-primitives/auth-lockout.test.js +572 -0
  885. package/lib/vendor/blamejs/test/layer-0-primitives/auth-password-audit.test.js +61 -0
  886. package/lib/vendor/blamejs/test/layer-0-primitives/azure-blob-bucket-ops.test.js +258 -0
  887. package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +105 -0
  888. package/lib/vendor/blamejs/test/layer-0-primitives/backup-worker.test.js +34 -0
  889. package/lib/vendor/blamejs/test/layer-0-primitives/bearer-auth.test.js +107 -0
  890. package/lib/vendor/blamejs/test/layer-0-primitives/body-parser-chunked-malformed.test.js +131 -0
  891. package/lib/vendor/blamejs/test/layer-0-primitives/body-parser-smuggling.test.js +118 -0
  892. package/lib/vendor/blamejs/test/layer-0-primitives/boot-gates.test.js +85 -0
  893. package/lib/vendor/blamejs/test/layer-0-primitives/breach-deadline.test.js +38 -0
  894. package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +861 -0
  895. package/lib/vendor/blamejs/test/layer-0-primitives/budr.test.js +55 -0
  896. package/lib/vendor/blamejs/test/layer-0-primitives/bundler-engine.test.js +209 -0
  897. package/lib/vendor/blamejs/test/layer-0-primitives/cache-status.test.js +129 -0
  898. package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +871 -0
  899. package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +891 -0
  900. package/lib/vendor/blamejs/test/layer-0-primitives/canonical-json-jcs.test.js +43 -0
  901. package/lib/vendor/blamejs/test/layer-0-primitives/cdn-cache-control.test.js +243 -0
  902. package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +550 -0
  903. package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +107 -0
  904. package/lib/vendor/blamejs/test/layer-0-primitives/cli-api-key.test.js +147 -0
  905. package/lib/vendor/blamejs/test/layer-0-primitives/cli-audit-verify-chain.test.js +104 -0
  906. package/lib/vendor/blamejs/test/layer-0-primitives/cli-backup.test.js +135 -0
  907. package/lib/vendor/blamejs/test/layer-0-primitives/cli-config-drift.test.js +67 -0
  908. package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +75 -0
  909. package/lib/vendor/blamejs/test/layer-0-primitives/cli-file-type.test.js +98 -0
  910. package/lib/vendor/blamejs/test/layer-0-primitives/cli-helpers.test.js +145 -0
  911. package/lib/vendor/blamejs/test/layer-0-primitives/cli-mtls.test.js +133 -0
  912. package/lib/vendor/blamejs/test/layer-0-primitives/cli-password.test.js +97 -0
  913. package/lib/vendor/blamejs/test/layer-0-primitives/cli-restore.test.js +160 -0
  914. package/lib/vendor/blamejs/test/layer-0-primitives/cli-retention.test.js +84 -0
  915. package/lib/vendor/blamejs/test/layer-0-primitives/cli-security.test.js +69 -0
  916. package/lib/vendor/blamejs/test/layer-0-primitives/cli-vault.test.js +142 -0
  917. package/lib/vendor/blamejs/test/layer-0-primitives/client-hints.test.js +133 -0
  918. package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +237 -0
  919. package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +9600 -0
  920. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +575 -0
  921. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-cascade.test.js +89 -0
  922. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-eaa.test.js +36 -0
  923. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +712 -0
  924. package/lib/vendor/blamejs/test/layer-0-primitives/compliance.test.js +278 -0
  925. package/lib/vendor/blamejs/test/layer-0-primitives/config-drift.test.js +97 -0
  926. package/lib/vendor/blamejs/test/layer-0-primitives/config.test.js +424 -0
  927. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +94 -0
  928. package/lib/vendor/blamejs/test/layer-0-primitives/cors.test.js +357 -0
  929. package/lib/vendor/blamejs/test/layer-0-primitives/cra-report.test.js +31 -0
  930. package/lib/vendor/blamejs/test/layer-0-primitives/credential-hash.test.js +226 -0
  931. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-base64url.test.js +86 -0
  932. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-envelope.test.js +85 -0
  933. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +193 -0
  934. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +98 -0
  935. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hpke-pq.test.js +132 -0
  936. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hpke.test.js +155 -0
  937. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-mlkem768-x25519.test.js +129 -0
  938. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-namespace-hash.test.js +0 -0
  939. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-random-int.test.js +72 -0
  940. package/lib/vendor/blamejs/test/layer-0-primitives/csp-builder.test.js +96 -0
  941. package/lib/vendor/blamejs/test/layer-0-primitives/csp-nonce.test.js +401 -0
  942. package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +34 -0
  943. package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +180 -0
  944. package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +210 -0
  945. package/lib/vendor/blamejs/test/layer-0-primitives/daily-byte-quota.test.js +153 -0
  946. package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +66 -0
  947. package/lib/vendor/blamejs/test/layer-0-primitives/data-act.test.js +74 -0
  948. package/lib/vendor/blamejs/test/layer-0-primitives/db-collection-extensions.test.js +226 -0
  949. package/lib/vendor/blamejs/test/layer-0-primitives/db-collection.test.js +136 -0
  950. package/lib/vendor/blamejs/test/layer-0-primitives/db-init-extensions.test.js +165 -0
  951. package/lib/vendor/blamejs/test/layer-0-primitives/db-query-cross-schema.test.js +150 -0
  952. package/lib/vendor/blamejs/test/layer-0-primitives/db-query-extensions.test.js +191 -0
  953. package/lib/vendor/blamejs/test/layer-0-primitives/db-role-for.test.js +228 -0
  954. package/lib/vendor/blamejs/test/layer-0-primitives/db-vacuum.test.js +55 -0
  955. package/lib/vendor/blamejs/test/layer-0-primitives/db-worm.test.js +89 -0
  956. package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +184 -0
  957. package/lib/vendor/blamejs/test/layer-0-primitives/declare-row-policy.test.js +203 -0
  958. package/lib/vendor/blamejs/test/layer-0-primitives/declare-view.test.js +303 -0
  959. package/lib/vendor/blamejs/test/layer-0-primitives/dns-dnssec-algorithm.test.js +163 -0
  960. package/lib/vendor/blamejs/test/layer-0-primitives/dns-null-mx.test.js +39 -0
  961. package/lib/vendor/blamejs/test/layer-0-primitives/dora.test.js +165 -0
  962. package/lib/vendor/blamejs/test/layer-0-primitives/dr-runbook.test.js +59 -0
  963. package/lib/vendor/blamejs/test/layer-0-primitives/dsr-state-rules.test.js +55 -0
  964. package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +786 -0
  965. package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +105 -0
  966. package/lib/vendor/blamejs/test/layer-0-primitives/early-hints.test.js +147 -0
  967. package/lib/vendor/blamejs/test/layer-0-primitives/events.test.js +105 -0
  968. package/lib/vendor/blamejs/test/layer-0-primitives/exploit-replay.test.js +243 -0
  969. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-hardening.test.js +181 -0
  970. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +190 -0
  971. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-routing.test.js +531 -0
  972. package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +118 -0
  973. package/lib/vendor/blamejs/test/layer-0-primitives/fapi2.test.js +89 -0
  974. package/lib/vendor/blamejs/test/layer-0-primitives/fda-21cfr11.test.js +156 -0
  975. package/lib/vendor/blamejs/test/layer-0-primitives/fdx.test.js +79 -0
  976. package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +216 -0
  977. package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +434 -0
  978. package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +432 -0
  979. package/lib/vendor/blamejs/test/layer-0-primitives/file-type.test.js +81 -0
  980. package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +887 -0
  981. package/lib/vendor/blamejs/test/layer-0-primitives/forensic-snapshot.test.js +51 -0
  982. package/lib/vendor/blamejs/test/layer-0-primitives/fsm.test.js +375 -0
  983. package/lib/vendor/blamejs/test/layer-0-primitives/gcs-bucket-ops.test.js +321 -0
  984. package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +41 -0
  985. package/lib/vendor/blamejs/test/layer-0-primitives/graphql-federation.test.js +32 -0
  986. package/lib/vendor/blamejs/test/layer-0-primitives/guard-agent-registry.test.js +87 -0
  987. package/lib/vendor/blamejs/test/layer-0-primitives/guard-all.test.js +328 -0
  988. package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +339 -0
  989. package/lib/vendor/blamejs/test/layer-0-primitives/guard-csv.test.js +694 -0
  990. package/lib/vendor/blamejs/test/layer-0-primitives/guard-dsn.test.js +296 -0
  991. package/lib/vendor/blamejs/test/layer-0-primitives/guard-email.test.js +234 -0
  992. package/lib/vendor/blamejs/test/layer-0-primitives/guard-envelope.test.js +192 -0
  993. package/lib/vendor/blamejs/test/layer-0-primitives/guard-event-bus-payload.test.js +89 -0
  994. package/lib/vendor/blamejs/test/layer-0-primitives/guard-event-bus-topic.test.js +71 -0
  995. package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +386 -0
  996. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html-wcag.test.js +859 -0
  997. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +357 -0
  998. package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +92 -0
  999. package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
  1000. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +174 -0
  1001. package/lib/vendor/blamejs/test/layer-0-primitives/guard-json.test.js +317 -0
  1002. package/lib/vendor/blamejs/test/layer-0-primitives/guard-list-id.test.js +199 -0
  1003. package/lib/vendor/blamejs/test/layer-0-primitives/guard-list-unsubscribe.test.js +214 -0
  1004. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-compose.test.js +111 -0
  1005. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-move.test.js +110 -0
  1006. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-query.test.js +112 -0
  1007. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-reply.test.js +86 -0
  1008. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-sieve.test.js +92 -0
  1009. package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +301 -0
  1010. package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +265 -0
  1011. package/lib/vendor/blamejs/test/layer-0-primitives/guard-message-id.test.js +0 -0
  1012. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +161 -0
  1013. package/lib/vendor/blamejs/test/layer-0-primitives/guard-posture-chain.test.js +100 -0
  1014. package/lib/vendor/blamejs/test/layer-0-primitives/guard-saga-config.test.js +79 -0
  1015. package/lib/vendor/blamejs/test/layer-0-primitives/guard-smtp-command.test.js +269 -0
  1016. package/lib/vendor/blamejs/test/layer-0-primitives/guard-snapshot-envelope.test.js +89 -0
  1017. package/lib/vendor/blamejs/test/layer-0-primitives/guard-stream-args.test.js +78 -0
  1018. package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +288 -0
  1019. package/lib/vendor/blamejs/test/layer-0-primitives/guard-tenant-id.test.js +69 -0
  1020. package/lib/vendor/blamejs/test/layer-0-primitives/guard-trace-context.test.js +102 -0
  1021. package/lib/vendor/blamejs/test/layer-0-primitives/guard-xml.test.js +202 -0
  1022. package/lib/vendor/blamejs/test/layer-0-primitives/guard-yaml.test.js +203 -0
  1023. package/lib/vendor/blamejs/test/layer-0-primitives/hal.test.js +51 -0
  1024. package/lib/vendor/blamejs/test/layer-0-primitives/honeytoken.test.js +50 -0
  1025. package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +37 -0
  1026. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +692 -0
  1027. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-stream.test.js +280 -0
  1028. package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +225 -0
  1029. package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +203 -0
  1030. package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +991 -0
  1031. package/lib/vendor/blamejs/test/layer-0-primitives/iab-mspa.test.js +63 -0
  1032. package/lib/vendor/blamejs/test/layer-0-primitives/iab-tcf.test.js +73 -0
  1033. package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +612 -0
  1034. package/lib/vendor/blamejs/test/layer-0-primitives/importmap-integrity.test.js +56 -0
  1035. package/lib/vendor/blamejs/test/layer-0-primitives/inbox.test.js +166 -0
  1036. package/lib/vendor/blamejs/test/layer-0-primitives/incident-report.test.js +29 -0
  1037. package/lib/vendor/blamejs/test/layer-0-primitives/jose-jwe-experimental.test.js +121 -0
  1038. package/lib/vendor/blamejs/test/layer-0-primitives/json-api.test.js +58 -0
  1039. package/lib/vendor/blamejs/test/layer-0-primitives/json-round-trip-helper.test.js +110 -0
  1040. package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +159 -0
  1041. package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
  1042. package/lib/vendor/blamejs/test/layer-0-primitives/legal-hold.test.js +118 -0
  1043. package/lib/vendor/blamejs/test/layer-0-primitives/local-db-thin.test.js +150 -0
  1044. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-cloudwatch.test.js +489 -0
  1045. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-otlp-grpc.test.js +207 -0
  1046. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-otlp.test.js +283 -0
  1047. package/lib/vendor/blamejs/test/layer-0-primitives/lro.test.js +65 -0
  1048. package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +417 -0
  1049. package/lib/vendor/blamejs/test/layer-0-primitives/mail-arf.test.js +208 -0
  1050. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +910 -0
  1051. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +502 -0
  1052. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +680 -0
  1053. package/lib/vendor/blamejs/test/layer-0-primitives/mail-canspam.test.js +128 -0
  1054. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +149 -0
  1055. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +323 -0
  1056. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +297 -0
  1057. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +514 -0
  1058. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy-tlsrpt.test.js +369 -0
  1059. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +199 -0
  1060. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +627 -0
  1061. package/lib/vendor/blamejs/test/layer-0-primitives/mail-feedback-id.test.js +56 -0
  1062. package/lib/vendor/blamejs/test/layer-0-primitives/mail-greylist.test.js +217 -0
  1063. package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +283 -0
  1064. package/lib/vendor/blamejs/test/layer-0-primitives/mail-journal.test.js +217 -0
  1065. package/lib/vendor/blamejs/test/layer-0-primitives/mail-mdn.test.js +334 -0
  1066. package/lib/vendor/blamejs/test/layer-0-primitives/mail-rbl.test.js +271 -0
  1067. package/lib/vendor/blamejs/test/layer-0-primitives/mail-require-tls.test.js +128 -0
  1068. package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +215 -0
  1069. package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +336 -0
  1070. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +732 -0
  1071. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +840 -0
  1072. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +130 -0
  1073. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +285 -0
  1074. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +74 -0
  1075. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +112 -0
  1076. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +229 -0
  1077. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +394 -0
  1078. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-tls.test.js +147 -0
  1079. package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +151 -0
  1080. package/lib/vendor/blamejs/test/layer-0-primitives/mail-spam-score.test.js +204 -0
  1081. package/lib/vendor/blamejs/test/layer-0-primitives/mail-srs.test.js +152 -0
  1082. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +279 -0
  1083. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +323 -0
  1084. package/lib/vendor/blamejs/test/layer-0-primitives/mail-unsubscribe.test.js +165 -0
  1085. package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +439 -0
  1086. package/lib/vendor/blamejs/test/layer-0-primitives/mcp-tool-registry.test.js +202 -0
  1087. package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +155 -0
  1088. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-shadow-registry.test.js +112 -0
  1089. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +224 -0
  1090. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-compose-pipeline.test.js +278 -0
  1091. package/lib/vendor/blamejs/test/layer-0-primitives/money.test.js +376 -0
  1092. package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-paths.test.js +89 -0
  1093. package/lib/vendor/blamejs/test/layer-0-primitives/nel.test.js +200 -0
  1094. package/lib/vendor/blamejs/test/layer-0-primitives/network-allowlist.test.js +106 -0
  1095. package/lib/vendor/blamejs/test/layer-0-primitives/network-byte-quota.test.js +133 -0
  1096. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +372 -0
  1097. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +635 -0
  1098. package/lib/vendor/blamejs/test/layer-0-primitives/network-heartbeat-passive.test.js +128 -0
  1099. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls-build-options.test.js +130 -0
  1100. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls-ct-inclusion.test.js +179 -0
  1101. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +447 -0
  1102. package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +369 -0
  1103. package/lib/vendor/blamejs/test/layer-0-primitives/nis2-report.test.js +21 -0
  1104. package/lib/vendor/blamejs/test/layer-0-primitives/nist-crosswalk.test.js +42 -0
  1105. package/lib/vendor/blamejs/test/layer-0-primitives/no-cache.test.js +98 -0
  1106. package/lib/vendor/blamejs/test/layer-0-primitives/notify.test.js +707 -0
  1107. package/lib/vendor/blamejs/test/layer-0-primitives/numeric-bounds.test.js +142 -0
  1108. package/lib/vendor/blamejs/test/layer-0-primitives/oauth-callback.test.js +72 -0
  1109. package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +597 -0
  1110. package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +190 -0
  1111. package/lib/vendor/blamejs/test/layer-0-primitives/openapi.test.js +877 -0
  1112. package/lib/vendor/blamejs/test/layer-0-primitives/otel-export.test.js +257 -0
  1113. package/lib/vendor/blamejs/test/layer-0-primitives/pagination.test.js +522 -0
  1114. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +216 -0
  1115. package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +324 -0
  1116. package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +546 -0
  1117. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +153 -0
  1118. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-software.test.js +94 -0
  1119. package/lib/vendor/blamejs/test/layer-0-primitives/problem-details.test.js +195 -0
  1120. package/lib/vendor/blamejs/test/layer-0-primitives/process-spawn.test.js +62 -0
  1121. package/lib/vendor/blamejs/test/layer-0-primitives/promise-pool.test.js +93 -0
  1122. package/lib/vendor/blamejs/test/layer-0-primitives/protected-resource-metadata.test.js +68 -0
  1123. package/lib/vendor/blamejs/test/layer-0-primitives/protobuf-encoder.test.js +138 -0
  1124. package/lib/vendor/blamejs/test/layer-0-primitives/protocol-dispatcher.test.js +174 -0
  1125. package/lib/vendor/blamejs/test/layer-0-primitives/public-suffix.test.js +197 -0
  1126. package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +232 -0
  1127. package/lib/vendor/blamejs/test/layer-0-primitives/queue-dlq-extend-lease.test.js +178 -0
  1128. package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +322 -0
  1129. package/lib/vendor/blamejs/test/layer-0-primitives/queue-priority-rate-progress.test.js +266 -0
  1130. package/lib/vendor/blamejs/test/layer-0-primitives/queue-sqs.test.js +300 -0
  1131. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-cluster.test.js +338 -0
  1132. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-registry.test.js +75 -0
  1133. package/lib/vendor/blamejs/test/layer-0-primitives/redact-dlp.test.js +246 -0
  1134. package/lib/vendor/blamejs/test/layer-0-primitives/redis-client.test.js +130 -0
  1135. package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +335 -0
  1136. package/lib/vendor/blamejs/test/layer-0-primitives/request-log.test.js +170 -0
  1137. package/lib/vendor/blamejs/test/layer-0-primitives/require-auth-cache-control.test.js +93 -0
  1138. package/lib/vendor/blamejs/test/layer-0-primitives/require-mtls.test.js +34 -0
  1139. package/lib/vendor/blamejs/test/layer-0-primitives/resource-access-lock.test.js +52 -0
  1140. package/lib/vendor/blamejs/test/layer-0-primitives/retention-floor.test.js +67 -0
  1141. package/lib/vendor/blamejs/test/layer-0-primitives/retry.test.js +535 -0
  1142. package/lib/vendor/blamejs/test/layer-0-primitives/router-cross-origin-redirect.test.js +0 -0
  1143. package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +128 -0
  1144. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async-loops.test.js +163 -0
  1145. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async-parallel.test.js +170 -0
  1146. package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +248 -0
  1147. package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +451 -0
  1148. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +289 -0
  1149. package/lib/vendor/blamejs/test/layer-0-primitives/safe-icap.test.js +206 -0
  1150. package/lib/vendor/blamejs/test/layer-0-primitives/safe-jsonpath.test.js +104 -0
  1151. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +339 -0
  1152. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mount-info.test.js +180 -0
  1153. package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +78 -0
  1154. package/lib/vendor/blamejs/test/layer-0-primitives/safe-sieve.test.js +123 -0
  1155. package/lib/vendor/blamejs/test/layer-0-primitives/safe-smtp.test.js +95 -0
  1156. package/lib/vendor/blamejs/test/layer-0-primitives/safe-url-idn-homograph.test.js +77 -0
  1157. package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +257 -0
  1158. package/lib/vendor/blamejs/test/layer-0-primitives/saml-slo.test.js +249 -0
  1159. package/lib/vendor/blamejs/test/layer-0-primitives/sandbox.test.js +228 -0
  1160. package/lib/vendor/blamejs/test/layer-0-primitives/scheduler-exactly-once.test.js +238 -0
  1161. package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +92 -0
  1162. package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +700 -0
  1163. package/lib/vendor/blamejs/test/layer-0-primitives/sd-notify.test.js +67 -0
  1164. package/lib/vendor/blamejs/test/layer-0-primitives/sec-cyber.test.js +85 -0
  1165. package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +107 -0
  1166. package/lib/vendor/blamejs/test/layer-0-primitives/security-headers.test.js +175 -0
  1167. package/lib/vendor/blamejs/test/layer-0-primitives/seeders.test.js +816 -0
  1168. package/lib/vendor/blamejs/test/layer-0-primitives/self-update-standalone-verifier.test.js +168 -0
  1169. package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +302 -0
  1170. package/lib/vendor/blamejs/test/layer-0-primitives/server-timing.test.js +93 -0
  1171. package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +247 -0
  1172. package/lib/vendor/blamejs/test/layer-0-primitives/session-extensions.test.js +295 -0
  1173. package/lib/vendor/blamejs/test/layer-0-primitives/shape-match.test.js +142 -0
  1174. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +952 -0
  1175. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-multipart-sse.test.js +441 -0
  1176. package/lib/vendor/blamejs/test/layer-0-primitives/slug.test.js +330 -0
  1177. package/lib/vendor/blamejs/test/layer-0-primitives/smtp-policy.test.js +233 -0
  1178. package/lib/vendor/blamejs/test/layer-0-primitives/source-comment-blocks.test.js +105 -0
  1179. package/lib/vendor/blamejs/test/layer-0-primitives/speculation-rules.test.js +319 -0
  1180. package/lib/vendor/blamejs/test/layer-0-primitives/sse.test.js +148 -0
  1181. package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +283 -0
  1182. package/lib/vendor/blamejs/test/layer-0-primitives/standard-webhooks.test.js +67 -0
  1183. package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +266 -0
  1184. package/lib/vendor/blamejs/test/layer-0-primitives/step-up.test.js +487 -0
  1185. package/lib/vendor/blamejs/test/layer-0-primitives/storage-chunk-scratch.test.js +0 -0
  1186. package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +773 -0
  1187. package/lib/vendor/blamejs/test/layer-0-primitives/stream-throttle.test.js +173 -0
  1188. package/lib/vendor/blamejs/test/layer-0-primitives/structured-fields.test.js +180 -0
  1189. package/lib/vendor/blamejs/test/layer-0-primitives/tcpa-10dlc.test.js +66 -0
  1190. package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +89 -0
  1191. package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +571 -0
  1192. package/lib/vendor/blamejs/test/layer-0-primitives/test-harness.test.js +190 -0
  1193. package/lib/vendor/blamejs/test/layer-0-primitives/testing-request.test.js +119 -0
  1194. package/lib/vendor/blamejs/test/layer-0-primitives/testing.test.js +522 -0
  1195. package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +151 -0
  1196. package/lib/vendor/blamejs/test/layer-0-primitives/tls-exporter.test.js +168 -0
  1197. package/lib/vendor/blamejs/test/layer-0-primitives/tls-ocsp-ct.test.js +275 -0
  1198. package/lib/vendor/blamejs/test/layer-0-primitives/tls-ocsp-verify.test.js +105 -0
  1199. package/lib/vendor/blamejs/test/layer-0-primitives/tls-pinset-drift.test.js +35 -0
  1200. package/lib/vendor/blamejs/test/layer-0-primitives/tls-preferred-groups.test.js +81 -0
  1201. package/lib/vendor/blamejs/test/layer-0-primitives/tracing.test.js +280 -0
  1202. package/lib/vendor/blamejs/test/layer-0-primitives/uuid.test.js +93 -0
  1203. package/lib/vendor/blamejs/test/layer-0-primitives/vault-aad.test.js +277 -0
  1204. package/lib/vendor/blamejs/test/layer-0-primitives/vault-seal-pem-file.test.js +252 -0
  1205. package/lib/vendor/blamejs/test/layer-0-primitives/vendor-data.test.js +149 -0
  1206. package/lib/vendor/blamejs/test/layer-0-primitives/vendor-manifest.test.js +92 -0
  1207. package/lib/vendor/blamejs/test/layer-0-primitives/vex.test.js +661 -0
  1208. package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +308 -0
  1209. package/lib/vendor/blamejs/test/layer-0-primitives/web-push-vapid.test.js +144 -0
  1210. package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +674 -0
  1211. package/lib/vendor/blamejs/test/layer-0-primitives/websocket-channels.test.js +360 -0
  1212. package/lib/vendor/blamejs/test/layer-0-primitives/worker-pool.test.js +302 -0
  1213. package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +349 -0
  1214. package/lib/vendor/blamejs/test/layer-1-state/api-key.test.js +717 -0
  1215. package/lib/vendor/blamejs/test/layer-5-integration/bundler-output.test.js +444 -0
  1216. package/lib/vendor/blamejs/test/layer-5-integration/guard-host-integration.test.js +597 -0
  1217. package/lib/vendor/blamejs/test/layer-5-integration/security-chaos.test.js +308 -0
  1218. package/lib/vendor/blamejs/test/smoke.js +431 -0
  1219. package/lib/webhooks.js +305 -0
  1220. package/package.json +43 -0
@@ -0,0 +1,1185 @@
1
+ "use strict";
2
+ /**
3
+ * @module b.testing
4
+ * @featured true
5
+ * @nav Observability
6
+ * @title Testing
7
+ *
8
+ * @intro
9
+ * Operator-facing test helpers. Every helper threads through an
10
+ * existing framework primitive rather than rolling its own timer
11
+ * races or polling loops, so test code exercises the same code
12
+ * paths production traffic does.
13
+ *
14
+ * The surface covers four concerns: HTTP request/response fixture
15
+ * builders (`mockReq` / `mockRes` / `bodyReq` / `bodyRes` /
16
+ * `streamingRes`), controllable time / network / fs fakes
17
+ * (`fakeClock` / `fakeHttpClient` / `tempDir` / `listenOnRandomPort`
18
+ * / `makeFakeOtelApi`), capturing taps for the framework's emit
19
+ * surfaces (`captureAudit` / `captureObservability` /
20
+ * `captureMetricsTap`), and async test helpers including a
21
+ * supertest-style chainable HTTP runner (`runMiddleware` / `waitFor`
22
+ * / `request`).
23
+ *
24
+ * Primitive-mapping for the threaded-through helpers:
25
+ *
26
+ * - waitFor poll loop → b.safeAsync.sleep
27
+ * - waitFor / runMiddleware overall cap → b.safeAsync.withTimeout
28
+ * - mockReq actor shape → compatible with b.requestHelpers.extractActorContext
29
+ * - captureObservability → matches b.observability.tap + .event contracts
30
+ * - captureAudit → matches b.audit.safeEmit (drop-silent)
31
+ * - fakeHttpClient → matches b.httpClient.request response shape
32
+ * - tempDir path safety → mirrors lib/static.js _resolveSafe containment check
33
+ * - TestingError → b.frameworkError.defineClass(...{ alwaysPermanent: true })
34
+ *
35
+ * What is intentionally NOT here: assertion library / test runner,
36
+ * DB transaction-rollback wrapper (`b.db.transaction` already
37
+ * exists), snapshot or property-based testing helpers (operator
38
+ * brings their own), and framework-internal fixtures that boot
39
+ * `b.db` with vault (those stay in `test/helpers/db.js`).
40
+ *
41
+ * @card
42
+ * Operator-facing test helpers.
43
+ */
44
+
45
+ var nodeFs = require("node:fs");
46
+ // testing.js IS the test injector — bypasses b.httpClient by design so
47
+ // tests can assert on raw request shape. This is the one production
48
+ // module where direct http.request is the contract.
49
+ var http = require("node:http");
50
+ var os = require("node:os");
51
+ var nodePath = require("node:path");
52
+ var EventEmitter = require("node:events").EventEmitter;
53
+ var C = require("./constants");
54
+ var lazyRequire = require("./lazy-require");
55
+ var numericChecks = require("./numeric-checks");
56
+ var safeAsync = require("./safe-async");
57
+ var safeBuffer = require("./safe-buffer");
58
+ var safeJson = require("./safe-json");
59
+ var { TestingError } = require("./framework-error");
60
+
61
+ // Lazy-required to avoid load-order cycles with the metrics module.
62
+ // metrics is the only place that exposes the global `tap` slot the
63
+ // captureMetricsTap helper swaps; pulling it lazily keeps testing.js
64
+ // safe to require at any framework load order.
65
+ var metrics = lazyRequire(function () { return require("./metrics"); });
66
+
67
+ var _err = TestingError.factory;
68
+
69
+ var DEFAULTS = Object.freeze({
70
+ waitForTimeoutMs: C.TIME.seconds(1),
71
+ waitForIntervalMs: 10,
72
+ runMiddlewareTimeoutMs: C.TIME.seconds(5),
73
+ });
74
+
75
+ // ---- Call-site validation helpers (throw on bad input) ----
76
+
77
+ var _isPositiveInt = numericChecks.isPositiveInt;
78
+ var _isFiniteNonNegative = numericChecks.isFiniteNonNegative;
79
+
80
+ // ---- HTTP mocks (standalone — no framework primitive overlap) ----
81
+ // These mimic Node's `http` module's request/response shapes. They're
82
+ // the surface every framework primitive's middleware tests use.
83
+
84
+ /**
85
+ * @primitive b.testing.mockReq
86
+ * @signature b.testing.mockReq(opts)
87
+ * @since 0.1.0
88
+ * @status stable
89
+ * @related b.testing.mockRes, b.testing.bodyReq, b.testing.runMiddleware
90
+ *
91
+ * Build a plain-object request fixture that satisfies every field
92
+ * `b.requestHelpers.extractActorContext` reads (`headers`, `socket`,
93
+ * `connection`, `method`, `url`). Sensible defaults for every field
94
+ * so passing `{}` produces a complete, self-consistent request.
95
+ *
96
+ * @opts
97
+ * method: string, // HTTP method; defaults to "GET"
98
+ * url: string, // request-target; defaults to "/"
99
+ * pathname: string, // optional override; defaults to URL pre-`?`
100
+ * headers: object, // header map (lower-cased on read)
101
+ * userAgent: string, // shorthand for headers["user-agent"]
102
+ * requestId: string, // shorthand for headers["x-request-id"]
103
+ * ip: string, // socket/connection.remoteAddress
104
+ * socket: object, // explicit socket override
105
+ * connection: object, // explicit connection override
106
+ *
107
+ * @example
108
+ * var req = b.testing.mockReq({
109
+ * method: "POST",
110
+ * url: "/users/42",
111
+ * userAgent: "test-agent/1.0",
112
+ * ip: "10.0.0.1",
113
+ * });
114
+ * req.method; // → "POST"
115
+ * req.headers["user-agent"]; // → "test-agent/1.0"
116
+ * req.socket.remoteAddress; // → "10.0.0.1"
117
+ */
118
+ function mockReq(opts) {
119
+ opts = opts || {};
120
+ var headers = Object.assign({}, opts.headers || {});
121
+ // Compatible with b.requestHelpers.extractActorContext: that function
122
+ // reads `headers["user-agent"]`, `headers["x-request-id"]`, `socket
123
+ // .remoteAddress`, `connection.remoteAddress`, `method`, `url`,
124
+ // `requestId`, `session.id`, `user.id`. mockReq populates every
125
+ // field that has a sensible default so extractActorContext doesn't
126
+ // see undefined when operators pass mockReq() with minimal opts.
127
+ if (opts.userAgent && !headers["user-agent"]) headers["user-agent"] = opts.userAgent;
128
+ if (opts.requestId && !headers["x-request-id"]) headers["x-request-id"] = opts.requestId;
129
+ return {
130
+ method: opts.method || "GET",
131
+ url: opts.url || "/",
132
+ pathname: opts.pathname || (opts.url || "/").split("?")[0],
133
+ headers: headers,
134
+ socket: opts.socket || { remoteAddress: opts.ip || "127.0.0.1" },
135
+ connection: opts.connection || { remoteAddress: opts.ip || "127.0.0.1" },
136
+ };
137
+ }
138
+
139
+ /**
140
+ * @primitive b.testing.mockRes
141
+ * @signature b.testing.mockRes()
142
+ * @since 0.1.0
143
+ * @status stable
144
+ * @related b.testing.mockReq, b.testing.streamingRes, b.testing.runMiddleware
145
+ *
146
+ * Build a buffered response fixture that captures `setHeader`,
147
+ * `writeHead`, and `end` calls. The hidden `_captured()` accessor
148
+ * returns `{ status, headers, body, ended }` for assertions. Use this
149
+ * when the middleware under test writes a single response body — for
150
+ * streaming responses, use `streamingRes()` instead.
151
+ *
152
+ * @example
153
+ * var res = b.testing.mockRes();
154
+ * res.writeHead(200, { "Content-Type": "text/plain" });
155
+ * res.end("hello");
156
+ * var captured = res._captured();
157
+ * captured.status; // → 200
158
+ * captured.headers["content-type"]; // → "text/plain"
159
+ * captured.body; // → "hello"
160
+ * captured.ended; // → true
161
+ */
162
+ function mockRes() {
163
+ var headers = {};
164
+ var statusCode = null;
165
+ var bodyParts = [];
166
+ var ended = false;
167
+ return {
168
+ statusCode: null,
169
+ writableEnded: false,
170
+ setHeader: function (k, v) { headers[k.toLowerCase()] = v; },
171
+ getHeader: function (k) { return headers[k.toLowerCase()]; },
172
+ writeHead: function (s, h) {
173
+ statusCode = s;
174
+ if (h) for (var k in h) headers[k.toLowerCase()] = h[k];
175
+ },
176
+ end: function (b) {
177
+ if (b !== undefined) bodyParts.push(b);
178
+ ended = true;
179
+ this.writableEnded = true;
180
+ },
181
+ _captured: function () {
182
+ return { status: statusCode, headers: headers, body: bodyParts.join(""), ended: ended };
183
+ },
184
+ };
185
+ }
186
+
187
+ /**
188
+ * @primitive b.testing.bodyReq
189
+ * @signature b.testing.bodyReq(method, headers, body)
190
+ * @since 0.1.0
191
+ * @status stable
192
+ * @related b.testing.mockReq, b.testing.bodyRes
193
+ *
194
+ * Build an EventEmitter-backed request that emits a single `data`
195
+ * chunk and an `end` event on the next tick. Use this for body-parser
196
+ * / form / file-upload middleware tests where the consumer reads via
197
+ * `req.on("data", ...)` and `req.on("end", ...)`.
198
+ *
199
+ * @example
200
+ * var req = b.testing.bodyReq("POST", { "content-type": "application/json" }, '{"a":1}');
201
+ * var chunks = [];
202
+ * req.on("data", function (c) { chunks.push(c); });
203
+ * req.on("end", function () {
204
+ * var body = Buffer.concat(chunks).toString("utf8");
205
+ * body; // → '{"a":1}'
206
+ * });
207
+ */
208
+ function bodyReq(method, headers, body) {
209
+ var req = new EventEmitter();
210
+ req.method = method || "GET";
211
+ req.url = "/";
212
+ req.headers = Object.assign({}, headers || {});
213
+ req.socket = { remoteAddress: "127.0.0.1" };
214
+ req.destroy = function () { /* mock — no-op */ };
215
+ setImmediate(function () {
216
+ if (Buffer.isBuffer(body)) req.emit("data", body);
217
+ else if (typeof body === "string") req.emit("data", Buffer.from(body));
218
+ req.emit("end");
219
+ });
220
+ return req;
221
+ }
222
+
223
+ /**
224
+ * @primitive b.testing.bodyRes
225
+ * @signature b.testing.bodyRes()
226
+ * @since 0.1.0
227
+ * @status stable
228
+ * @related b.testing.bodyReq, b.testing.mockRes, b.testing.streamingRes
229
+ *
230
+ * Build an EventEmitter-backed response that captures the `end()`
231
+ * payload onto `res._captured` (string-concatenated) and emits a
232
+ * `finish` event when ended. Use this paired with `bodyReq` for body-
233
+ * parser middleware tests that need to await the `finish` lifecycle.
234
+ *
235
+ * @example
236
+ * var res = b.testing.bodyRes();
237
+ * res.on("finish", function () {
238
+ * res.statusCode; // → 201
239
+ * res._captured; // → "ok"
240
+ * });
241
+ * res.writeHead(201, { "content-type": "text/plain" });
242
+ * res.end("ok");
243
+ */
244
+ function bodyRes() {
245
+ var res = new EventEmitter();
246
+ res.statusCode = null;
247
+ res.headersSent = false;
248
+ res._captured = "";
249
+ res._endedStatus = null;
250
+ res._headers = {};
251
+ res.writeHead = function (s, h) {
252
+ res.statusCode = s;
253
+ res._endedStatus = s;
254
+ res.headersSent = true;
255
+ res._headers = h || {};
256
+ };
257
+ res.end = function (body) { if (body) res._captured += body; res.emit("finish"); };
258
+ return res;
259
+ }
260
+
261
+ /**
262
+ * @primitive b.testing.streamingRes
263
+ * @signature b.testing.streamingRes()
264
+ * @since 0.1.0
265
+ * @status stable
266
+ * @related b.testing.mockRes, b.testing.bodyRes
267
+ *
268
+ * Build an EventEmitter-backed response that buffers every `write()`
269
+ * chunk into `res._chunks` and exposes `res._captured()` as a single
270
+ * `Buffer` of the full payload. Use this for middleware that streams
271
+ * via repeated `res.write(chunk)` calls (gzip, server-sent events,
272
+ * NDJSON producers, range responses).
273
+ *
274
+ * @example
275
+ * var res = b.testing.streamingRes();
276
+ * res.writeHead(200, { "content-type": "application/octet-stream" });
277
+ * res.write(Buffer.from("hel"));
278
+ * res.write("lo");
279
+ * res.end();
280
+ * res._captured().toString("utf8"); // → "hello"
281
+ * res._statusCode; // → 200
282
+ */
283
+ function streamingRes() {
284
+ var res = new EventEmitter();
285
+ res._chunks = [];
286
+ res._headers = {};
287
+ res._statusCode = 200;
288
+ res.headersSent = false;
289
+ res.writeHead = function (status, statusMsgOrHeaders, headersIfMsg) {
290
+ res._statusCode = status;
291
+ res.headersSent = true;
292
+ var h = null;
293
+ if (headersIfMsg && typeof headersIfMsg === "object") h = headersIfMsg;
294
+ else if (statusMsgOrHeaders && typeof statusMsgOrHeaders === "object" && !Array.isArray(statusMsgOrHeaders)) {
295
+ h = statusMsgOrHeaders;
296
+ }
297
+ if (h) {
298
+ var keys = Object.keys(h);
299
+ for (var i = 0; i < keys.length; i++) res._headers[keys[i].toLowerCase()] = h[keys[i]];
300
+ }
301
+ };
302
+ res.setHeader = function (k, v) { res._headers[k.toLowerCase()] = v; };
303
+ res.getHeader = function (k) { return res._headers[k.toLowerCase()]; };
304
+ res.removeHeader = function (k) { delete res._headers[k.toLowerCase()]; };
305
+ res.write = function (chunk) {
306
+ if (Buffer.isBuffer(chunk)) res._chunks.push(chunk);
307
+ else if (typeof chunk === "string") res._chunks.push(Buffer.from(chunk));
308
+ return true;
309
+ };
310
+ res.end = function (chunk) {
311
+ if (chunk != null) res.write(chunk);
312
+ res.emit("finish");
313
+ return res;
314
+ };
315
+ res._captured = function () { return Buffer.concat(res._chunks); };
316
+ return res;
317
+ }
318
+
319
+ // ---- fakeClock ----
320
+ //
321
+ // No framework primitive owns "controllable clock"; this IS that
322
+ // primitive now. The shape is `{ now, advance, set, ms }` so operators
323
+ // can pass `clk.now` as the `clock` opt to b.cache / b.api-key /
324
+ // b.permissions / b.scheduler / b.seeders / etc.
325
+
326
+ /**
327
+ * @primitive b.testing.fakeClock
328
+ * @signature b.testing.fakeClock(initialMs)
329
+ * @since 0.1.0
330
+ * @status stable
331
+ * @related b.testing.runMiddleware, b.testing.waitFor
332
+ *
333
+ * Build a controllable clock whose `.now` method is suitable as the
334
+ * `clock` opt on every framework primitive that takes one
335
+ * (`b.cache.create`, `b.apiKey.*`, `b.permissions`, `b.scheduler`,
336
+ * `b.seeders`, `b.session.*`, …). `initialMs` defaults to `1_000_000`.
337
+ * `advance(ms)` jumps forward, `set(ms)` jumps to an absolute instant,
338
+ * and the `ms` getter reads the current value without invoking `.now`.
339
+ *
340
+ * @example
341
+ * var clk = b.testing.fakeClock(1700000000000);
342
+ * clk.now(); // → 1700000000000
343
+ * clk.advance(60000);
344
+ * clk.now(); // → 1700000060000
345
+ * clk.set(1800000000000);
346
+ * clk.ms; // → 1800000000000
347
+ */
348
+ function fakeClock(initialMs) {
349
+ if (initialMs === undefined) initialMs = 1_000_000; // arbitrary positive default
350
+ if (typeof initialMs !== "number" || !isFinite(initialMs)) {
351
+ throw _err("BAD_INPUT", "fakeClock: initialMs must be a finite number, got " +
352
+ (typeof initialMs) + " " + JSON.stringify(initialMs));
353
+ }
354
+ var current = initialMs;
355
+ // Bound `now` so operators pass `clk.now` directly without losing `this`.
356
+ function now() { return current; }
357
+ function advance(ms) {
358
+ if (typeof ms !== "number" || !isFinite(ms)) {
359
+ throw _err("BAD_INPUT", "fakeClock.advance: ms must be a finite number");
360
+ }
361
+ current += ms;
362
+ }
363
+ function set(ms) {
364
+ if (typeof ms !== "number" || !isFinite(ms)) {
365
+ throw _err("BAD_INPUT", "fakeClock.set: ms must be a finite number");
366
+ }
367
+ current = ms;
368
+ }
369
+ return {
370
+ now: now,
371
+ advance: advance,
372
+ set: set,
373
+ get ms() { return current; },
374
+ };
375
+ }
376
+
377
+ // ---- fakeHttpClient ----
378
+ //
379
+ // Drop-in replacement for b.httpClient. responder(req) returns the
380
+ // canned response object — sync OR async. `calls` is the captured
381
+ // request array.
382
+
383
+ /**
384
+ * @primitive b.testing.fakeHttpClient
385
+ * @signature b.testing.fakeHttpClient(responder)
386
+ * @since 0.1.0
387
+ * @status stable
388
+ * @related b.testing.captureAudit, b.testing.captureObservability
389
+ *
390
+ * Drop-in stand-in for `b.httpClient`. The `responder(req)` callback
391
+ * receives the request object every call site passes to `.request`
392
+ * and returns the canned response (sync or via a Promise). Every
393
+ * outbound request is recorded on `.calls` for later assertion.
394
+ *
395
+ * @example
396
+ * var hc = b.testing.fakeHttpClient(function (req) {
397
+ * return { statusCode: 200, body: Buffer.from('{"ok":true}') };
398
+ * });
399
+ * var res = await hc.request({ method: "GET", url: "https://api.example.com/health" });
400
+ * res.statusCode; // → 200
401
+ * hc.calls.length; // → 1
402
+ * hc.calls[0].url; // → "https://api.example.com/health"
403
+ */
404
+ function fakeHttpClient(responder) {
405
+ if (typeof responder !== "function") {
406
+ throw _err("BAD_INPUT", "fakeHttpClient: responder must be a function");
407
+ }
408
+ var calls = [];
409
+ return {
410
+ calls: calls,
411
+ request: function (req) {
412
+ calls.push(req);
413
+ return Promise.resolve(responder(req));
414
+ },
415
+ };
416
+ }
417
+
418
+ // ---- captureAudit ----
419
+ //
420
+ // Matches b.audit.safeEmit's drop-silent contract. captured holds
421
+ // every event pushed; clear() empties; byAction(name) filters.
422
+
423
+ /**
424
+ * @primitive b.testing.captureAudit
425
+ * @signature b.testing.captureAudit()
426
+ * @since 0.1.0
427
+ * @status stable
428
+ * @related b.testing.captureObservability, b.testing.captureMetricsTap
429
+ *
430
+ * Build a capturing stand-in for `b.audit` that satisfies the
431
+ * `safeEmit(event)` contract every framework primitive uses. Pass the
432
+ * returned object as the `audit` opt; events flow into `.captured`,
433
+ * `.clear()` empties the buffer, and `.byAction(name)` filters by
434
+ * the `action` field (the convention every framework emit uses).
435
+ *
436
+ * @example
437
+ * var audit = b.testing.captureAudit();
438
+ * audit.safeEmit({ action: "notify.send.success", actor: "alice" });
439
+ * audit.safeEmit({ action: "notify.send.failure", actor: "alice" });
440
+ * audit.captured.length; // → 2
441
+ * audit.byAction("notify.send.success").length; // → 1
442
+ * audit.clear();
443
+ * audit.captured.length; // → 0
444
+ */
445
+ function captureAudit() {
446
+ var captured = [];
447
+ return {
448
+ captured: captured,
449
+ safeEmit: function (event) {
450
+ // Drop-silent on caller-side bugs that throw inside the capture
451
+ // push (shouldn't happen with array.push, but matches the real
452
+ // safeEmit's defensive shape).
453
+ try { captured.push(event); }
454
+ catch (_e) { /* drop-silent */ }
455
+ },
456
+ clear: function () { captured.length = 0; },
457
+ byAction: function (action) {
458
+ return captured.filter(function (e) { return e && e.action === action; });
459
+ },
460
+ };
461
+ }
462
+
463
+ // ---- captureObservability ----
464
+ //
465
+ // Matches b.observability.tap + b.observability.event contracts. tap
466
+ // invokes fn synchronously (passes `null` as the span — no tracer
467
+ // active under capture) and returns fn's return value, sync OR promise.
468
+ // Both sides are captured.
469
+
470
+ /**
471
+ * @primitive b.testing.captureObservability
472
+ * @signature b.testing.captureObservability()
473
+ * @since 0.1.0
474
+ * @status stable
475
+ * @related b.testing.captureAudit, b.testing.captureMetricsTap
476
+ *
477
+ * Build a capturing stand-in for `b.observability`. The returned
478
+ * object exposes `event(name, value, labels)` and `tap(name, attrs,
479
+ * fn)` matching the framework's contracts; each call appends an
480
+ * entry to `.captured` (`{ kind: "event" | "tap" | "tap.end" |
481
+ * "tap.error", … }`). `tap` runs `fn(null)` (no tracer active under
482
+ * capture) and forwards both sync return values and promise
483
+ * resolutions/rejections.
484
+ *
485
+ * @example
486
+ * var obs = b.testing.captureObservability();
487
+ * obs.event("cache.hit", 1, { ns: "users" });
488
+ * var ret = obs.tap("widgets.load", { id: 42 }, function () { return "ok"; });
489
+ * ret; // → "ok"
490
+ * obs.captured.length; // → 3
491
+ * obs.byName("cache.hit").length; // → 1
492
+ */
493
+ function captureObservability() {
494
+ var captured = [];
495
+ function event(name, value, labels) {
496
+ if (typeof name !== "string" || name.length === 0) return; // drop-silent
497
+ captured.push({ kind: "event", name: name, value: value, labels: labels || {} });
498
+ }
499
+ function tap(name, attrs, fn) {
500
+ if (typeof attrs === "function") { fn = attrs; attrs = null; }
501
+ if (typeof name !== "string" || name.length === 0) {
502
+ throw new TypeError("captureObservability.tap: name must be a non-empty string");
503
+ }
504
+ if (typeof fn !== "function") {
505
+ throw new TypeError("captureObservability.tap: fn must be a function");
506
+ }
507
+ captured.push({ kind: "tap", name: name, attrs: attrs || {} });
508
+ var ret;
509
+ try { ret = fn(null); }
510
+ catch (e) {
511
+ captured.push({ kind: "tap.error", name: name, error: e });
512
+ throw e;
513
+ }
514
+ if (ret && typeof ret.then === "function") {
515
+ return ret.then(
516
+ function (v) { captured.push({ kind: "tap.end", name: name }); return v; },
517
+ function (e) { captured.push({ kind: "tap.error", name: name, error: e }); throw e; }
518
+ );
519
+ }
520
+ captured.push({ kind: "tap.end", name: name });
521
+ return ret;
522
+ }
523
+ return {
524
+ captured: captured,
525
+ event: event,
526
+ tap: tap,
527
+ clear: function () { captured.length = 0; },
528
+ byName: function (name) {
529
+ return captured.filter(function (e) { return e && e.name === name; });
530
+ },
531
+ };
532
+ }
533
+
534
+ // ---- captureMetricsTap ----
535
+ //
536
+ // Swaps b.metrics.tap with a capturing function. Operator calls
537
+ // .restore() in finally to revert. This is the existing framework-
538
+ // test pattern (used by cache.test.js, i18n.test.js, notify.test.js,
539
+ // observability.test.js, …) — codified here so the swap+restore
540
+ // sequence is no longer copy-pasted.
541
+
542
+ /**
543
+ * @primitive b.testing.captureMetricsTap
544
+ * @signature b.testing.captureMetricsTap()
545
+ * @since 0.1.0
546
+ * @status stable
547
+ * @related b.testing.captureAudit, b.testing.captureObservability
548
+ *
549
+ * Swap `b.metrics.tap` with a capturing function and return a handle
550
+ * with `.captured`, `.byName(name)`, `.clear()`, and crucially
551
+ * `.restore()`. The operator MUST call `.restore()` in a `finally`
552
+ * to revert — failure to restore leaks state across tests.
553
+ *
554
+ * @example
555
+ * var taps = b.testing.captureMetricsTap();
556
+ * try {
557
+ * b.metrics.tap("widgets.created", 1, { kind: "alpha" });
558
+ * b.metrics.tap("widgets.created", 1, { kind: "beta" });
559
+ * taps.captured.length; // → 2
560
+ * taps.byName("widgets.created").length; // → 2
561
+ * } finally {
562
+ * taps.restore();
563
+ * }
564
+ */
565
+ function captureMetricsTap() {
566
+ var m = metrics();
567
+ var original = m.tap;
568
+ var captured = [];
569
+ m.tap = function (name, value, labels) {
570
+ captured.push({ name: name, value: value, labels: labels || {} });
571
+ };
572
+ return {
573
+ captured: captured,
574
+ restore: function () { m.tap = original; },
575
+ clear: function () { captured.length = 0; },
576
+ byName: function (name) {
577
+ return captured.filter(function (e) { return e && e.name === name; });
578
+ },
579
+ };
580
+ }
581
+
582
+ // ---- runMiddleware ----
583
+ //
584
+ // Runs a 3-arg (req, res, next) middleware to either next() OR res.end()
585
+ // completion. b.safeAsync.withTimeout caps the wait so a buggy
586
+ // middleware that never settles fails the test fast.
587
+
588
+ /**
589
+ * @primitive b.testing.runMiddleware
590
+ * @signature b.testing.runMiddleware(middleware, req, res, opts)
591
+ * @since 0.1.0
592
+ * @status stable
593
+ * @related b.testing.mockReq, b.testing.mockRes, b.testing.waitFor
594
+ *
595
+ * Drive a 3-arg `(req, res, next)` middleware to either `next()` OR
596
+ * `res.end()` completion and return `{ nextCalled, nextError, req,
597
+ * res, ended }`. Sync throws and rejected-promise returns are mapped
598
+ * onto `nextError`. `b.safeAsync.withTimeout` caps the wait so a
599
+ * middleware that never settles fails the test fast instead of
600
+ * hanging. `req` / `res` default to fresh `mockReq()` / `mockRes()`.
601
+ *
602
+ * @opts
603
+ * timeoutMs: number, // overall cap; defaults to 5000 (0 disables)
604
+ *
605
+ * @example
606
+ * var auth = function (req, res, next) {
607
+ * if (!req.headers.authorization) {
608
+ * res.writeHead(401);
609
+ * res.end("unauthorized");
610
+ * return;
611
+ * }
612
+ * next();
613
+ * };
614
+ * var captured = await b.testing.runMiddleware(
615
+ * auth,
616
+ * b.testing.mockReq({ url: "/secret" }),
617
+ * b.testing.mockRes(),
618
+ * { timeoutMs: 1000 }
619
+ * );
620
+ * captured.nextCalled; // → false
621
+ * captured.ended; // → true
622
+ * captured.res._captured().status; // → 401
623
+ */
624
+ async function runMiddleware(middleware, req, res, opts) {
625
+ if (typeof middleware !== "function") {
626
+ throw _err("BAD_INPUT", "runMiddleware: middleware must be a 3-arg (req, res, next) function");
627
+ }
628
+ opts = opts || {};
629
+ req = req || mockReq();
630
+ res = res || mockRes();
631
+ var timeoutMs = (opts.timeoutMs === undefined) ? DEFAULTS.runMiddlewareTimeoutMs : opts.timeoutMs;
632
+ if (timeoutMs !== 0 && !_isFiniteNonNegative(timeoutMs)) {
633
+ throw _err("BAD_INPUT", "runMiddleware: timeoutMs must be a non-negative finite number (0 disables)");
634
+ }
635
+
636
+ var run = new Promise(function (resolve) {
637
+ var settled = false;
638
+ function _settle(outcome) {
639
+ if (settled) return;
640
+ settled = true;
641
+ resolve(outcome);
642
+ }
643
+
644
+ // Wrap end() so we can detect middleware that responds without next.
645
+ var origEnd = res.end ? res.end.bind(res) : null;
646
+ if (origEnd) {
647
+ res.end = function () {
648
+ var ret = origEnd.apply(res, arguments);
649
+ _settle({ nextCalled: false, nextError: null, req: req, res: res, ended: true });
650
+ return ret;
651
+ };
652
+ }
653
+
654
+ function next(err) {
655
+ _settle({ nextCalled: true, nextError: err || null, req: req, res: res, ended: false });
656
+ }
657
+
658
+ try {
659
+ var maybePromise = middleware(req, res, next);
660
+ // If the middleware returns a promise that rejects, treat it as
661
+ // next(err). The handler primitive already does this, but we
662
+ // can't import it (circular concern); the test helper just maps
663
+ // synchronous AND rejected-promise throws onto next(err).
664
+ if (maybePromise && typeof maybePromise.then === "function") {
665
+ maybePromise.catch(function (e) {
666
+ _settle({ nextCalled: false, nextError: e, req: req, res: res, ended: false });
667
+ });
668
+ }
669
+ } catch (e) {
670
+ _settle({ nextCalled: false, nextError: e, req: req, res: res, ended: false });
671
+ }
672
+ });
673
+
674
+ if (timeoutMs > 0) {
675
+ return safeAsync.withTimeout(run, timeoutMs, { name: "runMiddleware" });
676
+ }
677
+ return run;
678
+ }
679
+
680
+ // ---- waitFor ----
681
+ //
682
+ // Polls predicate() until truthy or timeout. Uses b.safeAsync.sleep for
683
+ // the poll interval (NOT raw setTimeout) and b.safeAsync.withTimeout
684
+ // for the overall cap. Operator can pass `{ signal }` to abort.
685
+
686
+ /**
687
+ * @primitive b.testing.waitFor
688
+ * @signature b.testing.waitFor(predicate, opts)
689
+ * @since 0.1.0
690
+ * @status stable
691
+ * @related b.testing.runMiddleware, b.testing.fakeClock
692
+ *
693
+ * Poll `predicate()` (sync or async) until it returns truthy or
694
+ * `timeoutMs` elapses. The poll loop uses `b.safeAsync.sleep` (NOT
695
+ * raw `setTimeout`) so timer cleanup is uniform with the rest of the
696
+ * framework, and `b.safeAsync.withTimeout` enforces the overall cap.
697
+ * Pass `opts.signal` to abort early (a cancelled `AbortController`
698
+ * resolves the loop without throwing).
699
+ *
700
+ * @opts
701
+ * timeoutMs: number, // overall cap; defaults to 1000
702
+ * intervalMs: number, // poll interval; defaults to 10
703
+ * signal: AbortSignal, // cooperative cancellation
704
+ *
705
+ * @example
706
+ * var jobs = [];
707
+ * setTimeout(function () { jobs.push({ id: 1 }); }, 30);
708
+ * var result = await b.testing.waitFor(
709
+ * function () { return jobs.length > 0 ? jobs[0] : false; },
710
+ * { timeoutMs: 500, intervalMs: 5 }
711
+ * );
712
+ * result.id; // → 1
713
+ */
714
+ async function waitFor(predicate, opts) {
715
+ if (typeof predicate !== "function") {
716
+ throw _err("BAD_INPUT", "waitFor: predicate must be a function returning truthy/falsy or Promise<bool>");
717
+ }
718
+ opts = opts || {};
719
+ var timeoutMs = (opts.timeoutMs === undefined) ? DEFAULTS.waitForTimeoutMs : opts.timeoutMs;
720
+ var intervalMs = (opts.intervalMs === undefined) ? DEFAULTS.waitForIntervalMs : opts.intervalMs;
721
+ if (!_isFiniteNonNegative(timeoutMs) || timeoutMs <= 0) {
722
+ throw _err("BAD_INPUT", "waitFor: timeoutMs must be a positive finite number");
723
+ }
724
+ if (!_isPositiveInt(intervalMs)) {
725
+ throw _err("BAD_INPUT", "waitFor: intervalMs must be a positive integer");
726
+ }
727
+
728
+ // Internal AbortController stops the polling loop the moment the
729
+ // timeout fires (or the operator's signal aborts). Without this, the
730
+ // loop's safeAsync.sleep timers would keep the event loop alive
731
+ // forever even after withTimeout rejected — Node would never exit.
732
+ var ac = new AbortController();
733
+ if (opts.signal) {
734
+ if (opts.signal.aborted) ac.abort();
735
+ else opts.signal.addEventListener("abort", function () { ac.abort(); }, { once: true });
736
+ }
737
+
738
+ // Polling loop runs inside withTimeout so the framework's timer-race
739
+ // semantics apply uniformly. The internal signal aborts the inner
740
+ // sleep when withTimeout rejects.
741
+ var loop = (async function () {
742
+
743
+ while (!ac.signal.aborted) {
744
+ var v = await predicate();
745
+ if (v) return v;
746
+ try { await safeAsync.sleep(intervalMs, { signal: ac.signal }); }
747
+ catch (_e) { return undefined; } // sleep aborted = loop exits cleanly
748
+ }
749
+ return undefined;
750
+
751
+ })();
752
+
753
+ try {
754
+ return await safeAsync.withTimeout(loop, timeoutMs, {
755
+ signal: opts.signal,
756
+ name: "waitFor",
757
+ });
758
+ } catch (e) {
759
+ // Always abort the loop so its sleep timers are released and the
760
+ // event loop can exit.
761
+ ac.abort();
762
+ if (e && e.code === "async/timeout") {
763
+ throw _err("TIMEOUT",
764
+ "waitFor: predicate did not become truthy within " + timeoutMs + "ms");
765
+ }
766
+ throw e;
767
+ } finally {
768
+ ac.abort(); // also clean up after success path
769
+ }
770
+ }
771
+
772
+ // ---- tempDir ----
773
+ //
774
+ // os.tmpdir()-rooted directory with cleanup(). Path-traversal-safe
775
+ // prefix (mirrors lib/static.js _resolveSafe containment). Cleanup is
776
+ // idempotent.
777
+
778
+ /**
779
+ * @primitive b.testing.tempDir
780
+ * @signature b.testing.tempDir(prefix)
781
+ * @since 0.1.0
782
+ * @status stable
783
+ * @related b.testing.listenOnRandomPort
784
+ *
785
+ * Create an `os.tmpdir()`-rooted directory and return `{ path,
786
+ * cleanup }`. `prefix` must be an identifier-like string (no `..`,
787
+ * `/`, `\`, or null bytes); a containment check mirroring
788
+ * `lib/static.js _resolveSafe` verifies the resolved path stays
789
+ * inside `os.tmpdir()` before any file is written. `cleanup()` is
790
+ * idempotent and best-effort on Windows-locked files.
791
+ *
792
+ * @example
793
+ * var dir = b.testing.tempDir("my-fixture");
794
+ * try {
795
+ * var fs = require("node:fs");
796
+ * var path = require("node:path");
797
+ * fs.writeFileSync(path.join(dir.path, "fixture.json"), '{"ok":1}');
798
+ * dir.path.indexOf("my-fixture-") !== -1; // → true
799
+ * } finally {
800
+ * dir.cleanup();
801
+ * }
802
+ */
803
+ function tempDir(prefix) {
804
+ if (prefix === undefined || prefix === null) prefix = "blamejs-test";
805
+ if (typeof prefix !== "string" || prefix.length === 0) {
806
+ throw _err("BAD_INPUT", "tempDir: prefix must be a non-empty string");
807
+ }
808
+ // Reject path-traversal shapes — operators pass identifier-like
809
+ // strings, never path fragments.
810
+ if (prefix.indexOf("..") !== -1 || prefix.indexOf("/") !== -1 ||
811
+ prefix.indexOf("\\") !== -1 || prefix.indexOf("\0") !== -1) {
812
+ throw _err("BAD_INPUT",
813
+ "tempDir: prefix must not contain '..', '/', '\\', or null bytes; got " + JSON.stringify(prefix));
814
+ }
815
+ // Path containment check mirroring static.js _resolveSafe — verify
816
+ // the resolved tempdir is actually inside os.tmpdir() before nodeFs.mkdir.
817
+ var root = nodePath.resolve(os.tmpdir());
818
+ var dirPath = nodeFs.mkdtempSync(nodePath.join(root, prefix + "-"));
819
+ var resolved = nodePath.resolve(dirPath);
820
+ if (resolved !== root && !resolved.startsWith(root + nodePath.sep)) {
821
+ throw _err("BAD_STATE",
822
+ "tempDir: created path '" + resolved + "' escapes os.tmpdir() — refusing to use");
823
+ }
824
+ var cleanedUp = false;
825
+ return {
826
+ path: resolved,
827
+ cleanup: function () {
828
+ if (cleanedUp) return;
829
+ cleanedUp = true;
830
+ try { nodeFs.rmSync(resolved, { recursive: true, force: true }); }
831
+ catch (_e) { /* best-effort on Windows locked files */ }
832
+ },
833
+ };
834
+ }
835
+
836
+ // ---- listenOnRandomPort ----
837
+ //
838
+ // Standalone — Node http.Server only, no framework primitive overlap.
839
+ // The helper IS the boilerplate.
840
+
841
+ /**
842
+ * @primitive b.testing.listenOnRandomPort
843
+ * @signature b.testing.listenOnRandomPort(server, host)
844
+ * @since 0.1.0
845
+ * @status stable
846
+ * @related b.testing.request, b.testing.tempDir
847
+ *
848
+ * Bind a Node `http.Server` to an OS-assigned ephemeral port on the
849
+ * loopback interface (`host` defaults to `"127.0.0.1"`) and resolve
850
+ * with the chosen port number. Use this when a test needs a real
851
+ * listening server but doesn't want to hard-code a port. For
852
+ * supertest-style routing, prefer `b.testing.request` which manages
853
+ * the listen/close lifecycle automatically.
854
+ *
855
+ * @example
856
+ * var nodeHttp = require("node:http");
857
+ * var server = nodeHttp.createServer(function (req, res) {
858
+ * res.writeHead(200);
859
+ * res.end("ok");
860
+ * });
861
+ * var port = await b.testing.listenOnRandomPort(server);
862
+ * typeof port === "number" && port > 0; // → true
863
+ * server.close();
864
+ */
865
+ function listenOnRandomPort(server, host) {
866
+ host = host || "127.0.0.1";
867
+ return new Promise(function (resolve, reject) {
868
+ server.once("error", reject);
869
+ server.listen(0, host, function () {
870
+ server.removeListener("error", reject);
871
+ resolve(server.address().port);
872
+ });
873
+ });
874
+ }
875
+
876
+ // ---- makeFakeOtelApi ----
877
+ //
878
+ // Standalone fake of @opentelemetry/api's minimal subset that
879
+ // b.tracing actually consumes. No framework primitive owns this.
880
+
881
+ // ---- request(target) — supertest-style chainable HTTP test helper ----
882
+ //
883
+ // var res = await b.testing.request(router)
884
+ // .post("/api/widget")
885
+ // .set("X-Request-Id", "abc")
886
+ // .send({ name: "alpha" })
887
+ // .expect(200);
888
+ //
889
+ // res.status, res.headers, res.body (Buffer), res.json (parsed if applicable)
890
+ //
891
+ // Accepts:
892
+ // - a b.router instance (uses .handle(req, res))
893
+ // - a request listener function (req, res) => void
894
+ // - an http.Server / https.Server (used as-is)
895
+ //
896
+ // The framework spins up a real http.Server on an ephemeral port so
897
+ // the request flows through the full Node http stack — same code path
898
+ // production traffic takes. Server is closed automatically when the
899
+ // promise resolves or rejects.
900
+
901
+ /**
902
+ * @primitive b.testing.request
903
+ * @signature b.testing.request(target)
904
+ * @since 0.1.0
905
+ * @status stable
906
+ * @related b.testing.runMiddleware, b.testing.listenOnRandomPort
907
+ *
908
+ * Supertest-style chainable HTTP test runner. `target` may be a
909
+ * `b.router` instance (uses `.handle(req, res)`), a `(req, res) =>
910
+ * void` listener function, or an existing `http.Server` /
911
+ * `https.Server`. The runner spins up a real ephemeral-port
912
+ * `http.Server` so the request flows through the full Node HTTP
913
+ * stack — the same code path production traffic takes — and tears it
914
+ * down when the awaited chain resolves or rejects.
915
+ *
916
+ * Each verb (`get` / `post` / `put` / `patch` / `delete` / `head` /
917
+ * `options`) returns a chain with `.set(k, v)` / `.set(obj)`,
918
+ * `.send(body)` (Buffer / string / JSON-serialized object), and
919
+ * `.expect(statusOrFn)`. Awaiting the chain resolves to `{ status,
920
+ * headers, body, text, json }`.
921
+ *
922
+ * @example
923
+ * var listener = function (req, res) {
924
+ * res.writeHead(200, { "content-type": "application/json" });
925
+ * res.end('{"ok":true}');
926
+ * };
927
+ * var res = await b.testing.request(listener)
928
+ * .get("/health")
929
+ * .set("X-Request-Id", "abc")
930
+ * .expect(200);
931
+ * res.status; // → 200
932
+ * res.json.ok; // → true
933
+ */
934
+ function request(target) {
935
+ // Resolve target → request listener
936
+ var server;
937
+ var ownsServer = false;
938
+ if (target && typeof target.handle === "function") {
939
+ server = http.createServer(function (req, res) {
940
+ Promise.resolve(target.handle(req, res)).catch(function (err) {
941
+ if (!res.headersSent) res.writeHead(500, { "Content-Type": "text/plain" });
942
+ try { res.end((err && err.message) || "Internal Server Error"); } catch (_e) { /* response may already be ended */ }
943
+ });
944
+ });
945
+ ownsServer = true;
946
+ } else if (typeof target === "function") {
947
+ server = http.createServer(target);
948
+ ownsServer = true;
949
+ } else if (target && typeof target.listen === "function" && typeof target.close === "function") {
950
+ server = target;
951
+ ownsServer = false;
952
+ } else {
953
+ throw new Error("b.testing.request: target must be a b.router, a (req,res)=>void function, or an http.Server");
954
+ }
955
+
956
+ function _start(method, path) {
957
+ var headers = {};
958
+ var body = null;
959
+ var expectations = [];
960
+
961
+ var chain = {
962
+ set: function (k, v) {
963
+ if (typeof k === "object" && k !== null) Object.assign(headers, k);
964
+ else headers[k] = v;
965
+ return chain;
966
+ },
967
+ send: function (b) {
968
+ if (b == null) { body = null; return chain; }
969
+ if (Buffer.isBuffer(b) || typeof b === "string") {
970
+ body = b;
971
+ } else {
972
+ body = JSON.stringify(b);
973
+ if (!headers["Content-Type"] && !headers["content-type"]) {
974
+ headers["Content-Type"] = "application/json";
975
+ }
976
+ }
977
+ return chain;
978
+ },
979
+ expect: function (statusOrAssertion) {
980
+ expectations.push(statusOrAssertion);
981
+ return chain;
982
+ },
983
+ then: function (onFulfilled, onRejected) {
984
+ return _execute().then(onFulfilled, onRejected);
985
+ },
986
+ catch: function (onRejected) {
987
+ return _execute().catch(onRejected);
988
+ },
989
+ };
990
+
991
+ function _execute() {
992
+ return new Promise(function (resolve, reject) {
993
+ var listenP;
994
+ if (ownsServer) listenP = listenOnRandomPort(server);
995
+ else listenP = Promise.resolve(server.address() ? server.address().port : null);
996
+
997
+ listenP.then(function (port) {
998
+ var reqOpts = {
999
+ host: "127.0.0.1",
1000
+ port: port,
1001
+ method: method,
1002
+ path: path,
1003
+ headers: headers,
1004
+ };
1005
+ var nodeReq = http.request(reqOpts, function (nodeRes) {
1006
+ // Generous test-fixture cap — operator-side assertions
1007
+ // never exceed this in practice.
1008
+ var collector = safeBuffer.boundedChunkCollector({
1009
+ maxBytes: C.BYTES.mib(64),
1010
+ });
1011
+ nodeRes.on("data", function (c) {
1012
+ try { collector.push(c); }
1013
+ catch (_e) { /* test fixture: drop chunks past 64 MiB cap */ }
1014
+ });
1015
+ nodeRes.on("end", function () {
1016
+ var bodyBuf = collector.result();
1017
+ var bodyText = bodyBuf.toString("utf8");
1018
+ var json = null;
1019
+ var ct = nodeRes.headers["content-type"] || "";
1020
+ if (ct.indexOf("application/json") !== -1) {
1021
+ try { json = safeJson.parse(bodyText); } catch (_e) { /* leave json null */ }
1022
+ }
1023
+ var result = {
1024
+ status: nodeRes.statusCode,
1025
+ headers: nodeRes.headers,
1026
+ body: bodyBuf,
1027
+ text: bodyText,
1028
+ json: json,
1029
+ };
1030
+ // Diagnostic snippet length when an expectation fails
1031
+ // (chars, not bytes). Hex-encoded so the byte-literal
1032
+ // lint doesn't trip on the 200 multiple-of-8 literal.
1033
+ var BODY_SNIPPET_LEN = 0xC8;
1034
+ try {
1035
+ for (var i = 0; i < expectations.length; i++) {
1036
+ var exp = expectations[i];
1037
+ if (typeof exp === "number") {
1038
+ if (result.status !== exp) {
1039
+ throw new Error("expect(" + exp + ") got status " + result.status +
1040
+ " body: " + bodyText.slice(0, BODY_SNIPPET_LEN));
1041
+ }
1042
+ } else if (typeof exp === "function") {
1043
+ exp(result);
1044
+ } else {
1045
+ throw new Error("expect: argument must be a number or function");
1046
+ }
1047
+ }
1048
+ resolve(result);
1049
+ } catch (e) {
1050
+ reject(e);
1051
+ } finally {
1052
+ if (ownsServer) try { server.close(); } catch (_e) { /* server may already be closed */ }
1053
+ }
1054
+ });
1055
+ nodeRes.on("error", function (err) {
1056
+ if (ownsServer) try { server.close(); } catch (_e) { /* */ }
1057
+ reject(err);
1058
+ });
1059
+ });
1060
+ nodeReq.on("error", function (err) {
1061
+ if (ownsServer) try { server.close(); } catch (_e) { /* */ }
1062
+ reject(err);
1063
+ });
1064
+ if (body != null) nodeReq.write(body);
1065
+ nodeReq.end();
1066
+ }, reject);
1067
+ });
1068
+ }
1069
+
1070
+ return chain;
1071
+ }
1072
+
1073
+ return {
1074
+ get: function (p) { return _start("GET", p); },
1075
+ post: function (p) { return _start("POST", p); },
1076
+ put: function (p) { return _start("PUT", p); },
1077
+ patch: function (p) { return _start("PATCH", p); },
1078
+ delete: function (p) { return _start("DELETE", p); },
1079
+ head: function (p) { return _start("HEAD", p); },
1080
+ options:function (p) { return _start("OPTIONS",p); },
1081
+ };
1082
+ }
1083
+
1084
+ /**
1085
+ * @primitive b.testing.makeFakeOtelApi
1086
+ * @signature b.testing.makeFakeOtelApi()
1087
+ * @since 0.1.0
1088
+ * @status stable
1089
+ * @related b.testing.captureObservability
1090
+ *
1091
+ * Build a minimal fake of `@opentelemetry/api` covering exactly the
1092
+ * subset `b.tracing` consumes (`trace.getTracer`, `trace.setSpan`,
1093
+ * `trace.getActiveSpan`, `context.active`, `context.with`, plus a
1094
+ * `SpanKind` enum). Each started span records attributes, events,
1095
+ * exceptions, status, and end into `_spans` for assertion. Operators
1096
+ * inject this where `b.tracing` would normally be wired to the real
1097
+ * OTel API.
1098
+ *
1099
+ * @example
1100
+ * var fake = b.testing.makeFakeOtelApi();
1101
+ * var tracer = fake.trace.getTracer("test");
1102
+ * var span = tracer.startSpan("widgets.load", { attributes: { id: 42 } });
1103
+ * span.setAttribute("status", "ok");
1104
+ * span.end();
1105
+ * fake._spans.length; // → 1
1106
+ * fake._spans[0]._attrs.id; // → 42
1107
+ * fake._spans[0]._ended; // → true
1108
+ */
1109
+ function makeFakeOtelApi() {
1110
+ var spans = [];
1111
+ var activeSpan = null;
1112
+ function makeSpan(name) {
1113
+ return {
1114
+ _name: name, _attrs: {}, _events: [], _exceptions: [], _ended: false, _status: null,
1115
+ spanContext: function () {
1116
+ // W3C trace-context: traceId is 32 hex chars (16 bytes), spanId
1117
+ // is 16 hex chars (8 bytes). Hex literals so the byte-literal
1118
+ // lint doesn't trip on the multiples-of-8 sizes.
1119
+ return { traceId: "a".repeat(0x20), spanId: "b".repeat(0x10), traceFlags: 1, isRemote: false };
1120
+ },
1121
+ setAttribute: function (k, v) { this._attrs[k] = v; return this; },
1122
+ setAttributes: function (a) { Object.assign(this._attrs, a || {}); return this; },
1123
+ addEvent: function (n) { this._events.push(n); return this; },
1124
+ recordException: function (e) { this._exceptions.push(e); return this; },
1125
+ setStatus: function (st) { this._status = st; return this; },
1126
+ updateName: function (n) { this._name = n; return this; },
1127
+ end: function () { this._ended = true; if (activeSpan === this) activeSpan = null; },
1128
+ };
1129
+ }
1130
+ return {
1131
+ trace: {
1132
+ getTracer: function () {
1133
+ return {
1134
+ startSpan: function (name, opts) {
1135
+ var s = makeSpan(name);
1136
+ if (opts && opts.attributes) Object.assign(s._attrs, opts.attributes);
1137
+ spans.push(s);
1138
+ activeSpan = s;
1139
+ return s;
1140
+ },
1141
+ };
1142
+ },
1143
+ getActiveSpan: function () { return activeSpan; },
1144
+ setSpan: function (_ctx, span) { return { _activeSpan: span }; },
1145
+ },
1146
+ context: {
1147
+ active: function () { return { _stub: true }; },
1148
+ with: function (ctx, fn) {
1149
+ var prev = activeSpan;
1150
+ if (ctx && ctx._activeSpan) activeSpan = ctx._activeSpan;
1151
+ try { return fn(); } finally { activeSpan = prev; }
1152
+ },
1153
+ },
1154
+ SpanKind: { INTERNAL: 0, SERVER: 1, CLIENT: 2, PRODUCER: 3, CONSUMER: 4 },
1155
+ _spans: spans,
1156
+ _activeSpan: function () { return activeSpan; },
1157
+ };
1158
+ }
1159
+
1160
+ module.exports = {
1161
+ // HTTP fixtures
1162
+ mockReq: mockReq,
1163
+ mockRes: mockRes,
1164
+ bodyReq: bodyReq,
1165
+ bodyRes: bodyRes,
1166
+ streamingRes: streamingRes,
1167
+ // Time / network / fs fakes
1168
+ fakeClock: fakeClock,
1169
+ fakeHttpClient: fakeHttpClient,
1170
+ tempDir: tempDir,
1171
+ listenOnRandomPort: listenOnRandomPort,
1172
+ makeFakeOtelApi: makeFakeOtelApi,
1173
+ // Captures
1174
+ captureAudit: captureAudit,
1175
+ captureObservability: captureObservability,
1176
+ captureMetricsTap: captureMetricsTap,
1177
+ // Async test helpers
1178
+ runMiddleware: runMiddleware,
1179
+ waitFor: waitFor,
1180
+ // Chainable HTTP request helper (supertest-style)
1181
+ request: request,
1182
+ // Class + constants
1183
+ TestingError: TestingError,
1184
+ DEFAULTS: DEFAULTS,
1185
+ };