@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,1184 @@
1
+ "use strict";
2
+ /**
3
+ * @module b.safeAsync
4
+ * @nav Validation
5
+ * @title Safe Async
6
+ *
7
+ * @intro
8
+ * Timeout-bounded promises, AbortSignal-aware coordination,
9
+ * Promise.race-shaped helpers, and settled-state queries for the
10
+ * framework's async surfaces (external-db queries, cluster
11
+ * coordination, queue operations, audit chain writes).
12
+ *
13
+ * Hazards this module addresses: races between interleaved awaits,
14
+ * unbounded retries masking real failures, hangs from unresponsive
15
+ * backends, and partial results from operator-supplied drivers.
16
+ *
17
+ * Surface:
18
+ * - Async coordination: withTimeout, withSignal, withTimeoutSignal,
19
+ * sleep, repeating, flushLoop, safeAwait, parallel, asyncRetry
20
+ * - Async state objects: Mutex, Semaphore, Once, CircuitBreaker
21
+ * - Sync helpers used by async pipelines: safeInvoke (callback
22
+ * wrapper with optional onError), makeDropCallback (factory for
23
+ * log-stream-style onDrop callbacks), makeScheduledFlush
24
+ * (idempotent setTimeout coalesce-and-flush helper)
25
+ *
26
+ * Design posture:
27
+ * - AbortSignal everywhere. Every time-bounded primitive accepts
28
+ * an AbortSignal and aborts cleanly when it fires.
29
+ * - Error.cause preserved. Wrapper errors set `.cause` to the
30
+ * original failure so debugging traces back to the root.
31
+ * - No leaked Promises. Mutex / Semaphore release on path-out
32
+ * in finally blocks — even on cancellation.
33
+ * - Bounded by default. Semaphore / parallel have explicit limits
34
+ * and reject over-the-limit acquisitions rather than growing
35
+ * unboundedly.
36
+ * - Fail loud. Errors propagate; primitives never silently
37
+ * swallow. safeAwait is the opt-in `{error, value}` tuple form
38
+ * for callers that want to log-and-continue.
39
+ *
40
+ * Best-practice notes for callers:
41
+ * - Pair `withTimeout` with external-db / network calls where
42
+ * operator-supplied drivers might hang. Puts a ceiling on each
43
+ * individual attempt.
44
+ * - Wrap chain-writes with `Mutex.runExclusive`. Audit chain
45
+ * hashing reads the previous tip and writes a successor; without
46
+ * serialization, concurrent record() calls can hash against the
47
+ * same prev-tip and fork the chain.
48
+ * - Use `Once` for boot-time lazy init (counter primer, schema
49
+ * check). Multiple concurrent first-callers correctly wait on
50
+ * the same in-flight init Promise.
51
+ * - Use `safeAwait` for fire-and-forget paths (audit hooks in
52
+ * middleware) — preserves "log + continue" without unhandled-
53
+ * rejection warnings.
54
+ * - Prefer Promise.allSettled over Promise.all when partial
55
+ * failure is acceptable (multiple log sinks; one down shouldn't
56
+ * block the others).
57
+ *
58
+ * @card
59
+ * Timeout-bounded promises, AbortSignal-aware coordination, Promise.race-shaped helpers, and settled-state queries for the framework's async surfaces (external-db queries, cluster coordination, queue operations, audit chain writes).
60
+ */
61
+
62
+ var { FrameworkError } = require("./framework-error");
63
+
64
+ class SafeAsyncError extends FrameworkError {
65
+ constructor(message, code, cause) {
66
+ super(message);
67
+ this.name = "SafeAsyncError";
68
+ this.code = code || "async/invalid";
69
+ if (cause !== undefined) this.cause = cause;
70
+ this.isSafeAsyncError = true;
71
+ }
72
+ }
73
+
74
+ // ---- withTimeout ----
75
+ //
76
+ // Race the promise against a timer. On timeout, the wrapper rejects with
77
+ // SafeAsyncError(code=async/timeout). The original promise continues
78
+ // running in the background — the framework cannot cancel an arbitrary
79
+ // async operation; only signal-aware ones can be aborted (see withSignal).
80
+ //
81
+ // opts.signal: AbortSignal — aborting the signal also rejects the wrapper
82
+ // with code=async/aborted.
83
+ // opts.name: diagnostic label included in the timeout message.
84
+
85
+ /**
86
+ * @primitive b.safeAsync.withTimeout
87
+ * @signature b.safeAsync.withTimeout(promise, ms, opts?)
88
+ * @since 0.1.0
89
+ * @status stable
90
+ * @related b.safeAsync.withSignal, b.safeAsync.withTimeoutSignal, b.safeAsync.sleep
91
+ *
92
+ * Race a Promise against a wall-clock deadline. On timeout the
93
+ * wrapper rejects with `SafeAsyncError` (`.code = "async/timeout"`);
94
+ * the underlying Promise keeps running in the background since the
95
+ * framework cannot cancel an arbitrary async operation. Pair with
96
+ * AbortSignal-aware I/O when the caller also wants the work itself
97
+ * to stop. `opts.signal` aborts the wrapper with
98
+ * `.code = "async/aborted"`; `opts.name` is included in the timeout
99
+ * message for diagnostics.
100
+ *
101
+ * @opts
102
+ * signal: AbortSignal, // aborts the wrapper with async/aborted
103
+ * name: string, // diagnostic label baked into error messages
104
+ *
105
+ * @example
106
+ * var b = require("blamejs");
107
+ *
108
+ * // Bound an HTTP call to 5s.
109
+ * var fetchUser = Promise.resolve({ id: 42, name: "alice" });
110
+ * var user = await b.safeAsync.withTimeout(fetchUser, 5000, { name: "fetchUser" });
111
+ * user.id;
112
+ * // → 42
113
+ *
114
+ * // Timeout surfaces as SafeAsyncError(async/timeout).
115
+ * var hang = new Promise(function () {});
116
+ * try { await b.safeAsync.withTimeout(hang, 10, { name: "stuck" }); }
117
+ * catch (e) { e.code; }
118
+ * // → "async/timeout"
119
+ */
120
+ function withTimeout(promise, ms, opts) {
121
+ opts = opts || {};
122
+ if (typeof ms !== "number" || ms <= 0 || !Number.isFinite(ms)) {
123
+ throw new SafeAsyncError("withTimeout: ms must be a positive finite number", "async/bad-arg");
124
+ }
125
+ return new Promise(function (resolve, reject) {
126
+ var settled = false;
127
+ // The timer is ref'd intentionally: while a withTimeout is pending,
128
+ // the process should stay alive until either the underlying promise
129
+ // settles or the timeout fires. unref'ing here would let Node exit
130
+ // mid-await and the awaited Promise would never resolve.
131
+ var timer = setTimeout(function () {
132
+ if (settled) return;
133
+ settled = true;
134
+ reject(new SafeAsyncError(
135
+ "operation timed out after " + ms + "ms" + (opts.name ? " (" + opts.name + ")" : ""),
136
+ "async/timeout"
137
+ ));
138
+ }, ms);
139
+
140
+ function _onAbort() {
141
+ if (settled) return;
142
+ settled = true;
143
+ clearTimeout(timer);
144
+ reject(new SafeAsyncError(
145
+ "operation aborted" + (opts.name ? " (" + opts.name + ")" : ""),
146
+ "async/aborted",
147
+ opts.signal && opts.signal.reason
148
+ ));
149
+ }
150
+ if (opts.signal) {
151
+ if (opts.signal.aborted) { _onAbort(); return; }
152
+ opts.signal.addEventListener("abort", _onAbort, { once: true });
153
+ }
154
+
155
+ Promise.resolve(promise).then(function (v) {
156
+ if (settled) return;
157
+ settled = true;
158
+ clearTimeout(timer);
159
+ if (opts.signal) opts.signal.removeEventListener("abort", _onAbort);
160
+ resolve(v);
161
+ }, function (e) {
162
+ if (settled) return;
163
+ settled = true;
164
+ clearTimeout(timer);
165
+ if (opts.signal) opts.signal.removeEventListener("abort", _onAbort);
166
+ reject(e);
167
+ });
168
+ });
169
+ }
170
+
171
+ // ---- withSignal ----
172
+ //
173
+ // Race the promise against an AbortSignal. The original promise continues
174
+ // running in the background; only the wrapper's resolution is short-
175
+ // circuited. Useful for plumbing a single signal through a chain of awaits.
176
+
177
+ /**
178
+ * @primitive b.safeAsync.withSignal
179
+ * @signature b.safeAsync.withSignal(promise, signal)
180
+ * @since 0.1.0
181
+ * @status stable
182
+ * @related b.safeAsync.withTimeout, b.safeAsync.withTimeoutSignal
183
+ *
184
+ * Race a Promise against an AbortSignal. When the signal aborts the
185
+ * wrapper rejects with `SafeAsyncError` (`.code = "async/aborted"`,
186
+ * `.cause = signal.reason`). The underlying Promise continues
187
+ * running in the background — only the wrapper's resolution is
188
+ * short-circuited. Useful for plumbing one signal through a chain
189
+ * of awaits where some intermediates aren't signal-aware.
190
+ *
191
+ * @example
192
+ * var b = require("blamejs");
193
+ *
194
+ * // Propagate an AbortSignal through a non-signal-aware Promise.
195
+ * var ctrl = new AbortController();
196
+ * var slow = new Promise(function (resolve) { setTimeout(resolve, 50, "done"); });
197
+ * var wrapped = b.safeAsync.withSignal(slow, ctrl.signal);
198
+ * ctrl.abort();
199
+ * try { await wrapped; }
200
+ * catch (e) { e.code; }
201
+ * // → "async/aborted"
202
+ */
203
+ function withSignal(promise, signal) {
204
+ if (!signal) return Promise.resolve(promise);
205
+ return new Promise(function (resolve, reject) {
206
+ var settled = false;
207
+ function _onAbort() {
208
+ if (settled) return;
209
+ settled = true;
210
+ reject(new SafeAsyncError(
211
+ "operation aborted",
212
+ "async/aborted",
213
+ signal.reason
214
+ ));
215
+ }
216
+ if (signal.aborted) { _onAbort(); return; }
217
+ signal.addEventListener("abort", _onAbort, { once: true });
218
+ Promise.resolve(promise).then(function (v) {
219
+ if (settled) return;
220
+ settled = true;
221
+ signal.removeEventListener("abort", _onAbort);
222
+ resolve(v);
223
+ }, function (e) {
224
+ if (settled) return;
225
+ settled = true;
226
+ signal.removeEventListener("abort", _onAbort);
227
+ reject(e);
228
+ });
229
+ });
230
+ }
231
+
232
+ // ---- sleep ----
233
+ //
234
+ // Promise that resolves after `ms` milliseconds. opts.signal aborts the
235
+ // sleep cleanly — the wrapper rejects with SafeAsyncError(async/aborted).
236
+ //
237
+ // opts.unref (default false): if true, the timer is unref'd so a pending
238
+ // sleep does NOT keep the process alive. Use for fire-and-forget /
239
+ // heartbeat-style patterns where the program should be free to exit if
240
+ // nothing else is keeping it busy. The default is ref'd to match the
241
+ // natural meaning of `await sleep(ms)` — "I'm waiting, this IS my work,
242
+ // don't exit out from under me." (An unref'd-only event loop in Node
243
+ // exits even with pending awaits — the unref'd timer is not enough to
244
+ // hold the loop alive, so the awaiting promise never resolves.)
245
+ //
246
+ // ms <= 0 resolves immediately (matches setTimeout's clamp-to-1ms but
247
+ // without the wasted tick). Non-finite ms rejects.
248
+
249
+ /**
250
+ * @primitive b.safeAsync.sleep
251
+ * @signature b.safeAsync.sleep(ms, opts?)
252
+ * @since 0.1.0
253
+ * @status stable
254
+ * @related b.safeAsync.withTimeout, b.safeAsync.repeating
255
+ *
256
+ * Promise that resolves after `ms` milliseconds. `opts.signal`
257
+ * aborts the sleep cleanly — the wrapper rejects with
258
+ * `SafeAsyncError` (`.code = "async/aborted"`). `opts.unref` flips
259
+ * the timer to non-process-holding (default `false`, so
260
+ * `await sleep(ms)` reads naturally as "I'm waiting, this IS my
261
+ * work"). `ms <= 0` resolves immediately; non-finite `ms` rejects.
262
+ *
263
+ * @opts
264
+ * signal: AbortSignal, // aborts mid-sleep with async/aborted
265
+ * unref: boolean, // default false; true to not keep the process alive
266
+ *
267
+ * @example
268
+ * var b = require("blamejs");
269
+ *
270
+ * // Backoff between retries.
271
+ * var t0 = Date.now();
272
+ * await b.safeAsync.sleep(20);
273
+ * (Date.now() - t0) >= 18;
274
+ * // → true
275
+ *
276
+ * // Abort mid-sleep — propagates as SafeAsyncError(async/aborted).
277
+ * var ctrl = new AbortController();
278
+ * setTimeout(function () { ctrl.abort(); }, 5);
279
+ * try { await b.safeAsync.sleep(1000, { signal: ctrl.signal }); }
280
+ * catch (e) { e.code; }
281
+ * // → "async/aborted"
282
+ */
283
+ function sleep(ms, opts) {
284
+ if (typeof ms !== "number" || !Number.isFinite(ms)) {
285
+ return Promise.reject(new SafeAsyncError(
286
+ "sleep: ms must be a finite number", "async/bad-arg"
287
+ ));
288
+ }
289
+ if (ms <= 0) return Promise.resolve();
290
+
291
+ var signal = opts && opts.signal;
292
+ if (signal && signal.aborted) {
293
+ return Promise.reject(new SafeAsyncError(
294
+ "sleep aborted before start", "async/aborted", signal.reason
295
+ ));
296
+ }
297
+
298
+ return new Promise(function (resolve, reject) {
299
+ var settled = false;
300
+ var timer = setTimeout(function () {
301
+ if (settled) return;
302
+ settled = true;
303
+ if (signal) signal.removeEventListener("abort", _onAbort);
304
+ resolve();
305
+ }, ms);
306
+ if (opts && opts.unref) timer.unref();
307
+
308
+ function _onAbort() {
309
+ if (settled) return;
310
+ settled = true;
311
+ clearTimeout(timer);
312
+ reject(new SafeAsyncError(
313
+ "sleep aborted", "async/aborted", signal.reason
314
+ ));
315
+ }
316
+ if (signal) signal.addEventListener("abort", _onAbort, { once: true });
317
+ });
318
+ }
319
+
320
+ // ---- withTimeoutSignal ----
321
+ //
322
+ // Returns an AbortSignal that fires when EITHER the input signal aborts
323
+ // OR `ms` milliseconds elapse. Wraps the I/O-primitive composition that
324
+ // http-client was doing inline twice (h1 + h2 paths).
325
+ //
326
+ // var sig = withTimeoutSignal(userSignal, 5000);
327
+ // await fetch(url, { signal: sig });
328
+ //
329
+ // Edge cases:
330
+ // - userSignal == null and ms not positive → returns null
331
+ // (caller's "no signal needed" path)
332
+ // - userSignal == null → returns AbortSignal.timeout(ms)
333
+ // - ms not positive (0/undefined) → returns userSignal unchanged
334
+ // - both → AbortSignal.any([user, timeout])
335
+ //
336
+ // Returning null when neither is requested means the caller can pass
337
+ // the result straight to APIs that treat null as "no abort" (the http
338
+ // `signal` option does), with no special-case branching needed.
339
+
340
+ /**
341
+ * @primitive b.safeAsync.withTimeoutSignal
342
+ * @signature b.safeAsync.withTimeoutSignal(signal, ms)
343
+ * @since 0.7.4
344
+ * @status stable
345
+ * @related b.safeAsync.withTimeout, b.safeAsync.withSignal
346
+ *
347
+ * Compose an existing AbortSignal with a fresh wall-clock timeout.
348
+ * Returns an AbortSignal that fires when EITHER the input signal
349
+ * aborts OR `ms` milliseconds elapse — exactly the shape I/O
350
+ * primitives like `fetch({ signal })` already accept. Edge cases:
351
+ * neither argument supplied returns `null` (a naturally falsy "no
352
+ * signal needed" value most signal-accepting APIs treat as no-op);
353
+ * only `signal` returns it unchanged; only `ms` returns
354
+ * `AbortSignal.timeout(ms)`.
355
+ *
356
+ * @example
357
+ * var b = require("blamejs");
358
+ *
359
+ * // Add a 5s deadline on top of the user's existing AbortSignal.
360
+ * var userCtrl = new AbortController();
361
+ * var sig = b.safeAsync.withTimeoutSignal(userCtrl.signal, 5000);
362
+ * sig instanceof AbortSignal;
363
+ * // → true
364
+ *
365
+ * // No user signal + no timeout returns null (no-abort sentinel).
366
+ * b.safeAsync.withTimeoutSignal(null, 0);
367
+ * // → null
368
+ */
369
+ function withTimeoutSignal(signal, ms) {
370
+ var hasTimeout = typeof ms === "number" && ms > 0 && Number.isFinite(ms);
371
+ if (!signal && !hasTimeout) return null;
372
+ if (!signal) return AbortSignal.timeout(ms);
373
+ if (!hasTimeout) return signal;
374
+ return AbortSignal.any([signal, AbortSignal.timeout(ms)]);
375
+ }
376
+
377
+ // ---- safeAwait ----
378
+ //
379
+ // Go-style [error, value] tuple. Never throws. Lets callers handle the
380
+ // "expected may fail; log and continue" pattern without try/catch
381
+ // scaffolding.
382
+ //
383
+ // var [err, value] = await safeAwait(somePromise);
384
+ // if (err) { /* log + continue */ }
385
+
386
+ /**
387
+ * @primitive b.safeAsync.safeAwait
388
+ * @signature b.safeAsync.safeAwait(promise)
389
+ * @since 0.1.0
390
+ * @status stable
391
+ * @related b.safeAsync.withTimeout, b.safeAsync.parallel
392
+ *
393
+ * Go-style `[error, value]` tuple wrapper. Never throws — a rejected
394
+ * Promise becomes `[error, null]`, a resolved Promise becomes
395
+ * `[null, value]`. Replaces try/catch scaffolding around
396
+ * fire-and-forget paths (audit hooks in middleware, optional
397
+ * lookups) where the caller wants to log-and-continue without
398
+ * unhandled-rejection warnings. For settled-state inspection of
399
+ * many concurrent Promises the standard `Promise.allSettled` pairs
400
+ * naturally with this idiom.
401
+ *
402
+ * @example
403
+ * var b = require("blamejs");
404
+ *
405
+ * // Resolved Promise → [null, value].
406
+ * var ok = await b.safeAsync.safeAwait(Promise.resolve(42));
407
+ * ok[0];
408
+ * // → null
409
+ * ok[1];
410
+ * // → 42
411
+ *
412
+ * // Rejected Promise → [error, null].
413
+ * var bad = await b.safeAsync.safeAwait(Promise.reject(new Error("nope")));
414
+ * bad[0].message;
415
+ * // → "nope"
416
+ *
417
+ * // Pair with Promise.allSettled for bulk settled-state inspection.
418
+ * var results = await Promise.all([
419
+ * b.safeAsync.safeAwait(Promise.resolve("a")),
420
+ * b.safeAsync.safeAwait(Promise.reject(new Error("b-failed"))),
421
+ * b.safeAsync.safeAwait(Promise.resolve("c")),
422
+ * ]);
423
+ * results.filter(function (r) { return r[0] === null; }).length;
424
+ * // → 2
425
+ */
426
+ async function safeAwait(promise) {
427
+ try {
428
+ var v = await promise;
429
+ return [null, v];
430
+ } catch (e) {
431
+ return [e, null];
432
+ }
433
+ }
434
+
435
+ // safeInvoke — call an operator-supplied callback with one payload arg.
436
+ // Drops silent if the callback is missing; routes throws to onError if
437
+ // supplied (also drop-silent if onError throws). The callback / onError
438
+ // pair is the shape every drop-callback / completion-callback /
439
+ // failure-callback site re-derives from scratch. Centralizing here so
440
+ // the contract is one definition.
441
+ //
442
+ // safeInvoke(opts.onDrop, { reason: "buffer-full", batch: rows },
443
+ // function (e) { log.warn("onDrop threw: " + e.message); });
444
+ /**
445
+ * @primitive b.safeAsync.safeInvoke
446
+ * @signature b.safeAsync.safeInvoke(callback, payload, onError)
447
+ * @since 0.6.0
448
+ * @status stable
449
+ * @related b.safeAsync.makeDropCallback
450
+ *
451
+ * Drop-silent operator-callback invoker. Calls `callback(payload)`
452
+ * if `callback` is a function, routes any throw to `onError(e)` if
453
+ * supplied, and silently swallows nested throws from `onError`
454
+ * itself. Used by every drop-callback / completion-callback /
455
+ * failure-callback site in the framework so a buggy operator
456
+ * callback can never crash the request that triggered the audit
457
+ * hook. Hot-path observability sink — drop-silent by design.
458
+ *
459
+ * @example
460
+ * var b = require("blamejs");
461
+ *
462
+ * // Happy path: callback runs with the payload.
463
+ * var seen = null;
464
+ * b.safeAsync.safeInvoke(function (p) { seen = p; }, { reason: "buffer-full", batch: [1, 2] });
465
+ * seen.reason;
466
+ * // → "buffer-full"
467
+ *
468
+ * // Throw routed to onError; original caller never sees it.
469
+ * var caught = null;
470
+ * b.safeAsync.safeInvoke(
471
+ * function () { throw new Error("boom"); },
472
+ * { batch: [] },
473
+ * function (e) { caught = e.message; }
474
+ * );
475
+ * caught;
476
+ * // → "boom"
477
+ */
478
+ function safeInvoke(callback, payload, onError) {
479
+ if (typeof callback !== "function") return;
480
+ try { callback(payload); }
481
+ catch (e) {
482
+ if (typeof onError === "function") {
483
+ try { onError(e); } catch (_e2) { /* nested error handler must not bubble */ }
484
+ }
485
+ }
486
+ }
487
+
488
+ // makeDropCallback — every log-stream sink (cloudwatch / otlp-grpc /
489
+ // otlp-http / syslog / webhook) previously defined its own
490
+ // `_emitDrop(reason, batch, err)` 3-line wrapper. The shape is
491
+ // identical across sinks; the only differences are the operator's
492
+ // onDrop callback and the per-sink error logger. Returns a closure with
493
+ // the canonical payload shape `{ reason, batch, error: err || null }`.
494
+ //
495
+ // var _emitDrop = safeAsync.makeDropCallback(onDrop,
496
+ // function (e) { log.warn("onDrop-callback-failed: " + e.message); });
497
+ // _emitDrop("buffer-full", batch, err);
498
+ /**
499
+ * @primitive b.safeAsync.makeDropCallback
500
+ * @signature b.safeAsync.makeDropCallback(onDrop, onError)
501
+ * @since 0.6.0
502
+ * @status stable
503
+ * @related b.safeAsync.safeInvoke, b.safeAsync.makeScheduledFlush
504
+ *
505
+ * Factory for the canonical log-stream-sink onDrop wrapper. Returns
506
+ * a closure `(reason, batch, err) => void` that calls `onDrop` with
507
+ * the framework-canonical payload shape `{ reason, batch, error }`,
508
+ * routing any throw from the operator callback to `onError`. Every
509
+ * sink (cloudwatch / otlp-grpc / otlp-http / syslog / webhook)
510
+ * previously rolled its own three-line `_emitDrop` wrapper — this
511
+ * factory removes that duplication.
512
+ *
513
+ * @example
514
+ * var b = require("blamejs");
515
+ *
516
+ * var dropped = [];
517
+ * var emit = b.safeAsync.makeDropCallback(
518
+ * function (info) { dropped.push(info); },
519
+ * function (e) { console.warn("onDrop threw: " + e.message); }
520
+ * );
521
+ * emit("buffer-full", [{ id: 1 }], new Error("queue overflow"));
522
+ * dropped[0].reason;
523
+ * // → "buffer-full"
524
+ * dropped[0].error.message;
525
+ * // → "queue overflow"
526
+ */
527
+ function makeDropCallback(onDrop, onError) {
528
+ return function (reason, batch, err) {
529
+ safeInvoke(onDrop, { reason: reason, batch: batch, error: err || null }, onError);
530
+ };
531
+ }
532
+
533
+ // makeScheduledFlush — idempotent setTimeout scheduler used by every
534
+ // log-stream sink (cloudwatch / otlp-grpc / otlp-http / syslog /
535
+ // webhook) to coalesce buffered writes. Each sink previously rolled
536
+ // its own:
537
+ //
538
+ // var flushTimer = null;
539
+ // function _scheduleFlush() {
540
+ // if (flushTimer) return;
541
+ // flushTimer = setTimeout(function () { flushTimer = null; _flush(); }, delayMs);
542
+ // flushTimer.unref();
543
+ // }
544
+ //
545
+ // Returns { schedule, cancel, isPending }. flushFn may be sync or
546
+ // async — async rejections are swallowed (best-effort sink — operators
547
+ // see drops via onDrop, not via a sea of unhandled promise rejections).
548
+ /**
549
+ * @primitive b.safeAsync.makeScheduledFlush
550
+ * @signature b.safeAsync.makeScheduledFlush(delayMs, flushFn)
551
+ * @since 0.6.0
552
+ * @status stable
553
+ * @related b.safeAsync.flushLoop, b.safeAsync.makeDropCallback
554
+ *
555
+ * Idempotent setTimeout coalesce-and-flush scheduler used by every
556
+ * log-stream sink to batch buffered writes. Returns
557
+ * `{ schedule, cancel, isPending }` — calling `schedule()` repeatedly
558
+ * within `delayMs` collapses to a single deferred `flushFn()` call.
559
+ * The timer is unref'd so a pending flush never keeps the process
560
+ * alive; async rejections from `flushFn` are swallowed (best-effort
561
+ * sink — operators see drops via the sink's own onDrop). Throws
562
+ * `TypeError` on bad arguments at construction time.
563
+ *
564
+ * @example
565
+ * var b = require("blamejs");
566
+ *
567
+ * // Coalesce many schedule() calls into one flush after delayMs.
568
+ * var flushed = 0;
569
+ * var sched = b.safeAsync.makeScheduledFlush(20, function () { flushed += 1; });
570
+ * sched.schedule();
571
+ * sched.schedule();
572
+ * sched.schedule();
573
+ * sched.isPending();
574
+ * // → true
575
+ * await b.safeAsync.sleep(40);
576
+ * flushed;
577
+ * // → 1
578
+ */
579
+ function makeScheduledFlush(delayMs, flushFn) {
580
+ if (typeof delayMs !== "number" || !isFinite(delayMs) || delayMs < 0) {
581
+ throw new TypeError("safeAsync.makeScheduledFlush: delayMs must be a non-negative finite number");
582
+ }
583
+ if (typeof flushFn !== "function") {
584
+ throw new TypeError("safeAsync.makeScheduledFlush: flushFn must be a function");
585
+ }
586
+ var timer = null;
587
+ return {
588
+ schedule: function () {
589
+ if (timer) return;
590
+ timer = setTimeout(function () {
591
+ timer = null;
592
+ var p;
593
+ try { p = flushFn(); }
594
+ catch (_e) { return; }
595
+ if (p && typeof p.catch === "function") {
596
+ p.catch(function () { /* sink-specific drains errors via onDrop */ });
597
+ }
598
+ }, delayMs);
599
+ if (timer && typeof timer.unref === "function") timer.unref();
600
+ },
601
+ cancel: function () {
602
+ if (timer) { clearTimeout(timer); timer = null; }
603
+ },
604
+ isPending: function () { return timer !== null; },
605
+ };
606
+ }
607
+
608
+ // ---- parallel ----
609
+ //
610
+ // Bounded-concurrency mapAsync. Runs `fn(item, index)` over `items`
611
+ // with at most opts.concurrency in-flight at once; resolves with
612
+ // results in input order (NOT completion order). The first rejection
613
+ // from any `fn` invocation is propagated (other in-flight calls finish
614
+ // in the background; the wrapper does not cancel them — operator-
615
+ // supplied promises may not be signal-aware).
616
+ //
617
+ // var results = await b.safeAsync.parallel(urls, fetchOne, {
618
+ // concurrency: 16,
619
+ // signal: controller.signal,
620
+ // });
621
+ //
622
+ // Worker-loop pattern: a fixed pool of `concurrency` workers each pull
623
+ // the next available index from a shared cursor. Avoids the
624
+ // Promise.all-batched-chunks pitfall where the next batch can't start
625
+ // until the slowest item in the current batch finishes (long-pole
626
+ // stragglers leave workers idle). See feedback_lpt_scheduling_for_
627
+ // parallel_tests.md — same shape applied to operator workloads.
628
+ //
629
+ // opts.concurrency: 1..256 (default 8). Throws at config time on
630
+ // out-of-range so operator typos surface immediately.
631
+ // opts.signal: AbortSignal — cancels by refusing to dispatch
632
+ // further items; in-flight promises run to settle.
633
+
634
+ var PARALLEL_DEFAULT_CONCURRENCY = 8; // allow:raw-byte-literal — worker pool count, not bytes
635
+ var PARALLEL_MAX_CONCURRENCY = 256; // allow:raw-byte-literal — worker pool ceiling, not bytes
636
+
637
+ /**
638
+ * @primitive b.safeAsync.parallel
639
+ * @signature b.safeAsync.parallel(items, fn, opts?)
640
+ * @since 0.7.0
641
+ * @status stable
642
+ * @related b.safeAsync.safeAwait, b.safeAsync.withTimeout
643
+ *
644
+ * Bounded-concurrency `mapAsync`. Runs `fn(item, index)` over `items`
645
+ * with at most `opts.concurrency` in-flight at a time and resolves
646
+ * with results in INPUT order (not completion order). Worker-loop
647
+ * scheduling: a fixed pool of workers each pull the next index from
648
+ * a shared cursor as soon as their previous task settles — avoids
649
+ * the Promise.all-batched-chunks pitfall where a long-pole straggler
650
+ * leaves workers idle. The first rejection is propagated;
651
+ * still-in-flight calls finish in the background (operator-supplied
652
+ * promises may not be signal-aware). `opts.concurrency` validates at
653
+ * config time (1..256, default 8) and throws on out-of-range so
654
+ * typos surface immediately.
655
+ *
656
+ * @opts
657
+ * concurrency: number, // 1..256; default 8
658
+ * signal: AbortSignal, // refuses to dispatch further items; in-flight run to settle
659
+ *
660
+ * @example
661
+ * var b = require("blamejs");
662
+ *
663
+ * var urls = ["a", "b", "c", "d"];
664
+ * var fetchOne = function (u) { return Promise.resolve("loaded:" + u); };
665
+ * var results = await b.safeAsync.parallel(urls, fetchOne, { concurrency: 2 });
666
+ * results;
667
+ * // → ["loaded:a", "loaded:b", "loaded:c", "loaded:d"]
668
+ *
669
+ * // First rejection wins; remaining workers drain.
670
+ * try {
671
+ * await b.safeAsync.parallel([1, 2, 3], function (n) {
672
+ * if (n === 2) return Promise.reject(new Error("bad-2"));
673
+ * return Promise.resolve(n);
674
+ * }, { concurrency: 1 });
675
+ * } catch (e) {
676
+ * e.message;
677
+ * // → "bad-2"
678
+ * }
679
+ */
680
+ function parallel(items, fn, opts) {
681
+ if (!Array.isArray(items)) {
682
+ throw new SafeAsyncError("parallel: items must be an array", "async/bad-arg");
683
+ }
684
+ if (typeof fn !== "function") {
685
+ throw new SafeAsyncError("parallel: fn must be a function", "async/bad-arg");
686
+ }
687
+ opts = opts || {};
688
+ var concurrency = opts.concurrency != null ? opts.concurrency : PARALLEL_DEFAULT_CONCURRENCY;
689
+ if (typeof concurrency !== "number" || !Number.isInteger(concurrency) ||
690
+ concurrency < 1 || concurrency > PARALLEL_MAX_CONCURRENCY) {
691
+ throw new SafeAsyncError(
692
+ "parallel: concurrency must be an integer in [1.." +
693
+ PARALLEL_MAX_CONCURRENCY + "], got " + concurrency,
694
+ "async/bad-arg"
695
+ );
696
+ }
697
+ var signal = opts.signal;
698
+ if (signal && signal.aborted) {
699
+ return Promise.reject(new SafeAsyncError(
700
+ "parallel aborted before start", "async/aborted", signal.reason
701
+ ));
702
+ }
703
+ if (items.length === 0) return Promise.resolve([]);
704
+
705
+ return new Promise(function (resolve, reject) {
706
+ var results = new Array(items.length);
707
+ var cursor = 0;
708
+ var settled = false;
709
+ var firstError = null;
710
+ var activeWorkers = 0;
711
+ var workerCount = Math.min(concurrency, items.length);
712
+ var onAbort = null;
713
+
714
+ function _finish(err) {
715
+ if (settled) return;
716
+ settled = true;
717
+ if (signal && onAbort) signal.removeEventListener("abort", onAbort);
718
+ if (err) reject(err); else resolve(results);
719
+ }
720
+
721
+ if (signal) {
722
+ onAbort = function () {
723
+ if (firstError) return;
724
+ firstError = new SafeAsyncError(
725
+ "parallel aborted", "async/aborted", signal.reason
726
+ );
727
+ // In-flight workers finish their current item; new pulls
728
+ // observe firstError and exit. _finish fires when the last
729
+ // worker drains.
730
+ };
731
+ signal.addEventListener("abort", onAbort, { once: true });
732
+ }
733
+
734
+ function _workerLoop() {
735
+ // Continuous worker queue — each worker pulls the next index
736
+ // from the shared cursor as soon as its previous task settles.
737
+ // No batched chunks: a slow item never blocks unrelated items
738
+ // from entering the pool.
739
+ if (firstError || cursor >= items.length) {
740
+ activeWorkers -= 1;
741
+ if (activeWorkers === 0) _finish(firstError);
742
+ return;
743
+ }
744
+ var idx = cursor++;
745
+ var item = items[idx];
746
+ var p;
747
+ try { p = Promise.resolve(fn(item, idx)); }
748
+ catch (e) { p = Promise.reject(e); }
749
+ p.then(function (value) {
750
+ results[idx] = value;
751
+ _workerLoop();
752
+ }, function (e) {
753
+ if (!firstError) firstError = e;
754
+ _workerLoop();
755
+ });
756
+ }
757
+
758
+ for (var i = 0; i < workerCount; i++) {
759
+ activeWorkers += 1;
760
+ _workerLoop();
761
+ }
762
+ });
763
+ }
764
+
765
+ // ---- Mutex ----
766
+ //
767
+ // Async mutex — only one async region holds the lock at a time. Acquirers
768
+ // queue in arrival order. .runExclusive(fn) is the recommended call form
769
+ // (lock release is automatic via finally even if fn throws); .acquire()
770
+ // + .release() are exposed for callers needing finer control.
771
+ //
772
+ // Implementation note: a queued acquirer that's never released (operator
773
+ // bug) blocks the entire mutex. We don't add a hard-coded timeout because
774
+ // timeouts mask bugs and the real fix is releasing properly. If a caller
775
+ // wants a deadline, wrap the runExclusive call with withTimeout.
776
+
777
+ class Mutex {
778
+ constructor() {
779
+ this._waiters = []; // [{ resolve, reject, signal, onAbort }]
780
+ this._held = false;
781
+ }
782
+
783
+ // acquire(opts?) — opts.signal aborts a waiting acquirer cleanly.
784
+ // When the signal fires, the waiter is removed from the queue and
785
+ // its Promise rejects with async/aborted. The slot it WOULD have
786
+ // taken stays free for the next waiter. If the mutex isn't held,
787
+ // acquire returns immediately regardless of signal state.
788
+ acquire(opts) {
789
+ var self = this;
790
+ var signal = opts && opts.signal;
791
+ if (!self._held) {
792
+ self._held = true;
793
+ return Promise.resolve();
794
+ }
795
+ if (signal && signal.aborted) {
796
+ return Promise.reject(new SafeAsyncError(
797
+ "Mutex.acquire aborted", "async/aborted", signal.reason
798
+ ));
799
+ }
800
+ return new Promise(function (resolve, reject) {
801
+ var entry = { resolve: resolve, reject: reject, signal: signal, onAbort: null };
802
+ if (signal) {
803
+ entry.onAbort = function () {
804
+ var idx = self._waiters.indexOf(entry);
805
+ if (idx === -1) return; // already taken or already aborted
806
+ self._waiters.splice(idx, 1);
807
+ reject(new SafeAsyncError(
808
+ "Mutex.acquire aborted while waiting", "async/aborted", signal.reason
809
+ ));
810
+ };
811
+ signal.addEventListener("abort", entry.onAbort, { once: true });
812
+ }
813
+ self._waiters.push(entry);
814
+ });
815
+ }
816
+
817
+ release() {
818
+ if (!this._held) {
819
+ throw new SafeAsyncError("release on unheld Mutex", "async/bad-release");
820
+ }
821
+ if (this._waiters.length > 0) {
822
+ var next = this._waiters.shift();
823
+ if (next.signal && next.onAbort) {
824
+ next.signal.removeEventListener("abort", next.onAbort);
825
+ }
826
+ next.resolve();
827
+ } else {
828
+ this._held = false;
829
+ }
830
+ }
831
+
832
+ async runExclusive(fn, opts) {
833
+ await this.acquire(opts);
834
+ try {
835
+ return await fn();
836
+ } finally {
837
+ this.release();
838
+ }
839
+ }
840
+
841
+ isHeld() { return this._held; }
842
+ pendingCount() { return this._waiters.length; }
843
+ }
844
+
845
+ // ---- Semaphore ----
846
+ //
847
+ // Bounded concurrency: at most `limit` simultaneous holders. Acquirers
848
+ // over the limit wait their turn. Use cases: limit external-db query
849
+ // concurrency, throttle outbound webhook fan-out, cap parallel file I/O.
850
+ //
851
+ // .runWith(fn) is the recommended form (release on finally); .acquire/
852
+ // .release are exposed for finer control.
853
+
854
+ class Semaphore {
855
+ constructor(limit) {
856
+ if (typeof limit !== "number" || limit < 1 || !Number.isInteger(limit)) {
857
+ throw new SafeAsyncError("Semaphore limit must be a positive integer", "async/bad-arg");
858
+ }
859
+ this._limit = limit;
860
+ this._inFlight = 0;
861
+ this._waiters = []; // [{ resolve, reject, signal, onAbort }]
862
+ }
863
+
864
+ // acquire(opts?) — opts.signal aborts a waiting acquirer cleanly.
865
+ acquire(opts) {
866
+ var self = this;
867
+ var signal = opts && opts.signal;
868
+ if (self._inFlight < self._limit) {
869
+ self._inFlight += 1;
870
+ return Promise.resolve();
871
+ }
872
+ if (signal && signal.aborted) {
873
+ return Promise.reject(new SafeAsyncError(
874
+ "Semaphore.acquire aborted", "async/aborted", signal.reason
875
+ ));
876
+ }
877
+ return new Promise(function (resolve, reject) {
878
+ var entry = { resolve: resolve, reject: reject, signal: signal, onAbort: null };
879
+ if (signal) {
880
+ entry.onAbort = function () {
881
+ var idx = self._waiters.indexOf(entry);
882
+ if (idx === -1) return;
883
+ self._waiters.splice(idx, 1);
884
+ reject(new SafeAsyncError(
885
+ "Semaphore.acquire aborted while waiting", "async/aborted", signal.reason
886
+ ));
887
+ };
888
+ signal.addEventListener("abort", entry.onAbort, { once: true });
889
+ }
890
+ self._waiters.push(entry);
891
+ });
892
+ }
893
+
894
+ release() {
895
+ if (this._inFlight === 0) {
896
+ throw new SafeAsyncError("release on idle Semaphore", "async/bad-release");
897
+ }
898
+ if (this._waiters.length > 0) {
899
+ var next = this._waiters.shift();
900
+ if (next.signal && next.onAbort) {
901
+ next.signal.removeEventListener("abort", next.onAbort);
902
+ }
903
+ next.resolve();
904
+ } else {
905
+ this._inFlight -= 1;
906
+ }
907
+ }
908
+
909
+ async runWith(fn, opts) {
910
+ await this.acquire(opts);
911
+ try {
912
+ return await fn();
913
+ } finally {
914
+ this.release();
915
+ }
916
+ }
917
+
918
+ inFlight() { return this._inFlight; }
919
+ pendingCount() { return this._waiters.length; }
920
+ }
921
+
922
+ // ---- Once ----
923
+ //
924
+ // Single-flight memoization. The first .invoke() call runs the function;
925
+ // subsequent calls (concurrent or later) await the same in-flight Promise
926
+ // and receive the same result. If the first invocation throws, the cached
927
+ // result is the rejected Promise — re-invocation will NOT retry.
928
+ //
929
+ // Use case: lazy boot-time init where multiple call sites might first-
930
+ // touch concurrently (counter primer, schema-check, key load). Without
931
+ // Once, the second concurrent caller would start its own init and produce
932
+ // double-initialization.
933
+ //
934
+ // .reset() clears the cached Promise so the next .invoke() runs fresh.
935
+ // Useful for tests, hot-reload, and operator-driven re-init after a
936
+ // transient init failure. To make resets explicit (avoid silent stale
937
+ // state), reset() does NOT cancel an in-flight first invocation —
938
+ // callers awaiting the prior invoke continue to see its result.
939
+
940
+ class Once {
941
+ constructor(fn) {
942
+ if (typeof fn !== "function") {
943
+ throw new SafeAsyncError("Once: argument must be a function", "async/bad-arg");
944
+ }
945
+ this._fn = fn;
946
+ this._promise = null;
947
+ }
948
+
949
+ invoke() {
950
+ if (this._promise === null) {
951
+ this._promise = Promise.resolve().then(this._fn);
952
+ }
953
+ return this._promise;
954
+ }
955
+
956
+ reset() {
957
+ this._promise = null;
958
+ }
959
+
960
+ hasInvoked() { return this._promise !== null; }
961
+ }
962
+
963
+ // ---- repeating ----
964
+ //
965
+ // Bounded-cadence interval timer with consistent unref + cancel semantics.
966
+ // Replaces the scattered setInterval ceremony where each caller hand-rolled
967
+ // `var t = setInterval(...); t.unref();` and a corresponding clearInterval
968
+ // in shutdown — easy to forget the unref and silently block process exit.
969
+ //
970
+ // var sweep = b.safeAsync.repeating(function () {
971
+ // return cleanup();
972
+ // }, b.constants.TIME.seconds(30), { name: "cache-sweep" });
973
+ // ...
974
+ // sweep.stop();
975
+ //
976
+ // fn may be sync or async. If fn returns a Promise, the next tick fires
977
+ // `intervalMs` after the prior fn() *started* (matching setInterval's
978
+ // fixed-rate semantics, not after-completion). Promise rejections are
979
+ // captured by the optional onError callback; if none provided, they're
980
+ // silently dropped — a repeating timer is by definition fire-and-forget,
981
+ // and an unhandled rejection here would crash the process.
982
+ //
983
+ // opts.unref defaults true: most repeating timers are background sweepers
984
+ // that should NOT keep the process alive. Cluster heartbeat etc. set
985
+ // `unref: false` so the lease keeps the leader from exiting silently.
986
+
987
+ /**
988
+ * @primitive b.safeAsync.repeating
989
+ * @signature b.safeAsync.repeating(fn, intervalMs, opts?)
990
+ * @since 0.6.0
991
+ * @status stable
992
+ * @related b.safeAsync.flushLoop, b.safeAsync.sleep
993
+ *
994
+ * Bounded-cadence interval timer with consistent unref + cancel
995
+ * semantics. Replaces the scattered `setInterval` ceremony where
996
+ * each caller hand-rolled `t.unref()` and a corresponding
997
+ * `clearInterval` in shutdown. `fn` may be sync or async; if async,
998
+ * the next tick fires `intervalMs` after the prior fn() STARTED
999
+ * (fixed-rate, matching `setInterval`). Promise rejections are
1000
+ * captured by `opts.onError` if provided, otherwise silently
1001
+ * dropped — a repeating timer is fire-and-forget by definition and
1002
+ * an unhandled rejection here would crash the process. `opts.unref`
1003
+ * defaults `true`; set `false` for cluster heartbeat-style timers
1004
+ * that must hold the loop open. Returns `{ stop }`.
1005
+ *
1006
+ * @opts
1007
+ * unref: boolean, // default true
1008
+ * onError: function(error), // captures sync throws + Promise rejections
1009
+ * name: string, // diagnostic label
1010
+ *
1011
+ * @example
1012
+ * var b = require("blamejs");
1013
+ *
1014
+ * var ticks = 0;
1015
+ * var sweep = b.safeAsync.repeating(function () { ticks += 1; }, 10, {
1016
+ * unref: true,
1017
+ * name: "tick-counter",
1018
+ * });
1019
+ * await b.safeAsync.sleep(35);
1020
+ * sweep.stop();
1021
+ * ticks >= 2;
1022
+ * // → true
1023
+ */
1024
+ function repeating(fn, intervalMs, opts) {
1025
+ if (typeof fn !== "function") {
1026
+ throw new SafeAsyncError("repeating: fn must be a function", "async/bad-arg");
1027
+ }
1028
+ if (typeof intervalMs !== "number" || !Number.isFinite(intervalMs) || intervalMs <= 0) {
1029
+ throw new SafeAsyncError("repeating: intervalMs must be a positive finite number, got " + intervalMs,
1030
+ "async/bad-arg");
1031
+ }
1032
+ opts = opts || {};
1033
+ var unref = opts.unref !== false; // default true
1034
+ var onError = typeof opts.onError === "function" ? opts.onError : null;
1035
+
1036
+ var stopped = false;
1037
+ function _tick() {
1038
+ if (stopped) return;
1039
+ var result;
1040
+ try { result = fn(); } catch (e) {
1041
+ if (onError) { try { onError(e); } catch (_e) { /* swallow */ } } return;
1042
+ }
1043
+ if (result && typeof result.then === "function") {
1044
+ result.then(null, function (e) {
1045
+ if (onError) { try { onError(e); } catch (_e) { /* swallow */ } }
1046
+ });
1047
+ }
1048
+ }
1049
+ var timer = setInterval(_tick, intervalMs);
1050
+ if (unref && typeof timer.unref === "function") timer.unref();
1051
+
1052
+ return {
1053
+ stop: function () {
1054
+ if (stopped) return;
1055
+ stopped = true;
1056
+ clearInterval(timer);
1057
+ },
1058
+ };
1059
+ }
1060
+
1061
+ // ---- flushLoop ----
1062
+ //
1063
+ // Schedule fn(), wait for it to settle (resolve or reject), then schedule
1064
+ // the next fn() `intervalMs` later. Differs from `repeating` (fixed-rate,
1065
+ // fire-and-forget) — flushLoop is the after-completion pattern most
1066
+ // background flushers want: never overlap two flushes, and don't accumulate
1067
+ // backlog if a flush is slow.
1068
+ //
1069
+ // var loop = b.safeAsync.flushLoop(function () {
1070
+ // return otelExporter.flush();
1071
+ // }, b.constants.TIME.seconds(15), { name: "otel-flush" });
1072
+ // ...
1073
+ // loop.stop();
1074
+ //
1075
+ // Always unref'd — a pending flush should never keep the process alive
1076
+ // (the operator's b.appShutdown drives the final drain explicitly).
1077
+ // onError catches rejections; without one, they're silently dropped.
1078
+
1079
+ /**
1080
+ * @primitive b.safeAsync.flushLoop
1081
+ * @signature b.safeAsync.flushLoop(fn, intervalMs, opts?)
1082
+ * @since 0.6.0
1083
+ * @status stable
1084
+ * @related b.safeAsync.repeating, b.safeAsync.makeScheduledFlush
1085
+ *
1086
+ * After-completion background flusher. Schedules `fn()`, awaits its
1087
+ * settle (resolve OR reject), then schedules the next call
1088
+ * `intervalMs` later. Differs from `repeating` (fixed-rate, no
1089
+ * overlap protection) — `flushLoop` is the right shape for
1090
+ * background flushers that must never overlap two flushes and
1091
+ * shouldn't accumulate backlog when one flush is slow. Always
1092
+ * unref'd; `opts.onError` catches rejections, otherwise they're
1093
+ * silently dropped. Returns `{ stop }`.
1094
+ *
1095
+ * @opts
1096
+ * onError: function(error), // captures sync throws + Promise rejections
1097
+ * name: string, // diagnostic label
1098
+ *
1099
+ * @example
1100
+ * var b = require("blamejs");
1101
+ *
1102
+ * var flushes = 0;
1103
+ * var loop = b.safeAsync.flushLoop(function () {
1104
+ * flushes += 1;
1105
+ * return Promise.resolve();
1106
+ * }, 10, { name: "telemetry-flush" });
1107
+ * await b.safeAsync.sleep(35);
1108
+ * loop.stop();
1109
+ * flushes >= 1;
1110
+ * // → true
1111
+ */
1112
+ function flushLoop(fn, intervalMs, opts) {
1113
+ if (typeof fn !== "function") {
1114
+ throw new SafeAsyncError("flushLoop: fn must be a function", "async/bad-arg");
1115
+ }
1116
+ if (typeof intervalMs !== "number" || !Number.isFinite(intervalMs) || intervalMs <= 0) {
1117
+ throw new SafeAsyncError("flushLoop: intervalMs must be a positive finite number, got " + intervalMs,
1118
+ "async/bad-arg");
1119
+ }
1120
+ opts = opts || {};
1121
+ var onError = typeof opts.onError === "function" ? opts.onError : null;
1122
+
1123
+ var stopped = false;
1124
+ var timer = null;
1125
+
1126
+ function _schedule() {
1127
+ if (stopped) return;
1128
+ timer = setTimeout(function () {
1129
+ timer = null;
1130
+ if (stopped) return;
1131
+ var settled;
1132
+ try { settled = Promise.resolve(fn()); }
1133
+ catch (e) {
1134
+ if (onError) { try { onError(e); } catch (_e) { /* swallow */ } }
1135
+ _schedule();
1136
+ return;
1137
+ }
1138
+ settled.then(null, function (e) {
1139
+ if (onError) { try { onError(e); } catch (_e) { /* swallow */ } }
1140
+ }).then(_schedule);
1141
+ }, intervalMs);
1142
+ if (typeof timer.unref === "function") timer.unref();
1143
+ }
1144
+ _schedule();
1145
+
1146
+ return {
1147
+ stop: function () {
1148
+ if (stopped) return;
1149
+ stopped = true;
1150
+ if (timer) { clearTimeout(timer); timer = null; }
1151
+ },
1152
+ };
1153
+ }
1154
+
1155
+ // ---- Re-exports of resilience primitives from lib/retry.js ----
1156
+ //
1157
+ // withRetry + CircuitBreaker live in lib/retry.js (the canonical home).
1158
+ // We re-export them here under safe-async-shaped names so call sites
1159
+ // reaching for async safety primitives find them in one place.
1160
+
1161
+ var retryHelper = require("./retry");
1162
+
1163
+ var asyncRetry = retryHelper.withRetry;
1164
+ var CircuitBreaker = retryHelper.CircuitBreaker;
1165
+
1166
+ module.exports = {
1167
+ withTimeout: withTimeout,
1168
+ withSignal: withSignal,
1169
+ withTimeoutSignal: withTimeoutSignal,
1170
+ sleep: sleep,
1171
+ repeating: repeating,
1172
+ flushLoop: flushLoop,
1173
+ safeAwait: safeAwait,
1174
+ safeInvoke: safeInvoke,
1175
+ makeDropCallback: makeDropCallback,
1176
+ makeScheduledFlush: makeScheduledFlush,
1177
+ parallel: parallel,
1178
+ Mutex: Mutex,
1179
+ Semaphore: Semaphore,
1180
+ Once: Once,
1181
+ asyncRetry: asyncRetry,
1182
+ CircuitBreaker: CircuitBreaker,
1183
+ SafeAsyncError: SafeAsyncError,
1184
+ };