@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.
- package/CHANGELOG.md +87 -0
- package/LICENSE +17 -0
- package/README.md +117 -0
- package/SECURITY.md +139 -0
- package/lib/admin.js +952 -0
- package/lib/analytics.js +267 -0
- package/lib/cart.js +279 -0
- package/lib/catalog-import.js +344 -0
- package/lib/catalog.js +769 -0
- package/lib/checkout.js +320 -0
- package/lib/config.js +151 -0
- package/lib/customers.js +322 -0
- package/lib/email.js +242 -0
- package/lib/externaldb-d1.js +283 -0
- package/lib/index.js +57 -0
- package/lib/inventory-alerts.js +198 -0
- package/lib/newsletter.js +142 -0
- package/lib/order.js +380 -0
- package/lib/payment.js +318 -0
- package/lib/pricing.js +185 -0
- package/lib/r2-bridge.js +169 -0
- package/lib/shipping.js +185 -0
- package/lib/storefront.js +2160 -0
- package/lib/subscriptions.js +410 -0
- package/lib/tax.js +161 -0
- package/lib/theme.js +194 -0
- package/lib/vendor/MANIFEST.json +19 -0
- package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +23 -0
- package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +34 -0
- package/lib/vendor/blamejs/.clusterfuzzlite/project.yaml +16 -0
- package/lib/vendor/blamejs/.dockerignore +45 -0
- package/lib/vendor/blamejs/.gitattributes +42 -0
- package/lib/vendor/blamejs/.github/CODEOWNERS +4 -0
- package/lib/vendor/blamejs/.github/FUNDING.yml +2 -0
- package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/bug_report.md +58 -0
- package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/feature_request.md +99 -0
- package/lib/vendor/blamejs/.github/PULL_REQUEST_TEMPLATE.md +77 -0
- package/lib/vendor/blamejs/.github/dependabot.yml +37 -0
- package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +148 -0
- package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +107 -0
- package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +122 -0
- package/lib/vendor/blamejs/.github/workflows/ci.yml +511 -0
- package/lib/vendor/blamejs/.github/workflows/codeql.yml +50 -0
- package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +655 -0
- package/lib/vendor/blamejs/.github/workflows/release-container.yml +406 -0
- package/lib/vendor/blamejs/.github/workflows/scorecard.yml +101 -0
- package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +134 -0
- package/lib/vendor/blamejs/.gitignore +102 -0
- package/lib/vendor/blamejs/.gitleaks.toml +166 -0
- package/lib/vendor/blamejs/.hadolint.yaml +18 -0
- package/lib/vendor/blamejs/.npmrc +5 -0
- package/lib/vendor/blamejs/.pinact.yaml +17 -0
- package/lib/vendor/blamejs/ARCHITECTURE.md +158 -0
- package/lib/vendor/blamejs/CHANGELOG.md +1351 -0
- package/lib/vendor/blamejs/CODE_OF_CONDUCT.md +86 -0
- package/lib/vendor/blamejs/CONTRIBUTING.md +156 -0
- package/lib/vendor/blamejs/GOVERNANCE.md +201 -0
- package/lib/vendor/blamejs/LICENSE +201 -0
- package/lib/vendor/blamejs/LTS-CALENDAR.md +29 -0
- package/lib/vendor/blamejs/MIGRATING.md +29 -0
- package/lib/vendor/blamejs/NOTICE +81 -0
- package/lib/vendor/blamejs/README.md +304 -0
- package/lib/vendor/blamejs/SECURITY.md +432 -0
- package/lib/vendor/blamejs/api-snapshot.json +48709 -0
- package/lib/vendor/blamejs/assets/BlameJS_Logo.png +0 -0
- package/lib/vendor/blamejs/assets/BlameJS_Logo.svg +129 -0
- package/lib/vendor/blamejs/bench/README.md +77 -0
- package/lib/vendor/blamejs/bench/_helpers.js +70 -0
- package/lib/vendor/blamejs/bench/baseline.json +183 -0
- package/lib/vendor/blamejs/bench/crypto-hash.bench.js +19 -0
- package/lib/vendor/blamejs/bench/crypto-symmetric.bench.js +28 -0
- package/lib/vendor/blamejs/bench/run.js +140 -0
- package/lib/vendor/blamejs/bench/safe-json.bench.js +31 -0
- package/lib/vendor/blamejs/bin/blamejs.js +13 -0
- package/lib/vendor/blamejs/docker/caddy/Caddyfile +46 -0
- package/lib/vendor/blamejs/docker/coredns/Corefile +37 -0
- package/lib/vendor/blamejs/docker/haproxy/haproxy.cfg +52 -0
- package/lib/vendor/blamejs/docker/init/generate-certs.sh +118 -0
- package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +87 -0
- package/lib/vendor/blamejs/docker/mitmproxy/config.yaml +16 -0
- package/lib/vendor/blamejs/docker/mongo/init-tls.sh +17 -0
- package/lib/vendor/blamejs/docker/mysql/my.cnf +12 -0
- package/lib/vendor/blamejs/docker/nats/nats.conf +33 -0
- package/lib/vendor/blamejs/docker/postgres/init-tls.sh +17 -0
- package/lib/vendor/blamejs/docker/postgres/postgresql.conf +18 -0
- package/lib/vendor/blamejs/docker/rabbitmq/rabbitmq.conf +18 -0
- package/lib/vendor/blamejs/docker/redis/redis.conf +15 -0
- package/lib/vendor/blamejs/docker/squid/squid.conf +24 -0
- package/lib/vendor/blamejs/docker/syslog/syslog-ng.conf +34 -0
- package/lib/vendor/blamejs/docker-compose.test.yml +545 -0
- package/lib/vendor/blamejs/docs/cis-postgres-crosswalk.md +102 -0
- package/lib/vendor/blamejs/docs/cis-sqlite-equivalent.md +92 -0
- package/lib/vendor/blamejs/eslint.config.mjs +204 -0
- package/lib/vendor/blamejs/examples/wiki/Caddyfile +40 -0
- package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +218 -0
- package/lib/vendor/blamejs/examples/wiki/Dockerfile +120 -0
- package/lib/vendor/blamejs/examples/wiki/README.md +157 -0
- package/lib/vendor/blamejs/examples/wiki/cli-snapshot.json +250 -0
- package/lib/vendor/blamejs/examples/wiki/docker-compose.prod.yml +231 -0
- package/lib/vendor/blamejs/examples/wiki/docker-compose.yml +166 -0
- package/lib/vendor/blamejs/examples/wiki/env-snapshot.json +217 -0
- package/lib/vendor/blamejs/examples/wiki/lib/auto-site-entries.js +139 -0
- package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +555 -0
- package/lib/vendor/blamejs/examples/wiki/lib/harvest-cli.js +507 -0
- package/lib/vendor/blamejs/examples/wiki/lib/harvest-env-vars.js +435 -0
- package/lib/vendor/blamejs/examples/wiki/lib/harvest-errors.js +282 -0
- package/lib/vendor/blamejs/examples/wiki/lib/harvest-vendored-deps.js +321 -0
- package/lib/vendor/blamejs/examples/wiki/lib/nav.js +15 -0
- package/lib/vendor/blamejs/examples/wiki/lib/opts-resolver.js +75 -0
- package/lib/vendor/blamejs/examples/wiki/lib/page-generator.js +508 -0
- package/lib/vendor/blamejs/examples/wiki/lib/section.js +276 -0
- package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +587 -0
- package/lib/vendor/blamejs/examples/wiki/lib/source-doc-parser.js +318 -0
- package/lib/vendor/blamejs/examples/wiki/lib/symbol-index.js +122 -0
- package/lib/vendor/blamejs/examples/wiki/migrations/0001-pages-schema.js +74 -0
- package/lib/vendor/blamejs/examples/wiki/package.json +18 -0
- package/lib/vendor/blamejs/examples/wiki/public/img/blamejs-logo.png +0 -0
- package/lib/vendor/blamejs/examples/wiki/public/img/blamejs-logo.svg +129 -0
- package/lib/vendor/blamejs/examples/wiki/public/robots.txt +5 -0
- package/lib/vendor/blamejs/examples/wiki/public/vendor/MANIFEST.json +30 -0
- package/lib/vendor/blamejs/examples/wiki/public/vendor/prism.css +1 -0
- package/lib/vendor/blamejs/examples/wiki/public/vendor/prism.js +15 -0
- package/lib/vendor/blamejs/examples/wiki/public/wiki.css +1250 -0
- package/lib/vendor/blamejs/examples/wiki/routes/admin.js +366 -0
- package/lib/vendor/blamejs/examples/wiki/routes/integration.js +230 -0
- package/lib/vendor/blamejs/examples/wiki/routes/pages.js +266 -0
- package/lib/vendor/blamejs/examples/wiki/scripts/backfill-module-metadata.js +214 -0
- package/lib/vendor/blamejs/examples/wiki/seeders/prod/0001-default-pages.js +35 -0
- package/lib/vendor/blamejs/examples/wiki/seeders/prod/pages/_index.js +34 -0
- package/lib/vendor/blamejs/examples/wiki/seeders/prod/pages/api.js +76 -0
- package/lib/vendor/blamejs/examples/wiki/server.js +129 -0
- package/lib/vendor/blamejs/examples/wiki/site.config.js +197 -0
- package/lib/vendor/blamejs/examples/wiki/snippets/README.md +38 -0
- package/lib/vendor/blamejs/examples/wiki/snippets/auth/password-hash.example.js +15 -0
- package/lib/vendor/blamejs/examples/wiki/src/editor.js +103 -0
- package/lib/vendor/blamejs/examples/wiki/src/wiki.js +349 -0
- package/lib/vendor/blamejs/examples/wiki/test/AUDIT.md +155 -0
- package/lib/vendor/blamejs/examples/wiki/test/codebase-patterns.test.js +594 -0
- package/lib/vendor/blamejs/examples/wiki/test/e2e.js +741 -0
- package/lib/vendor/blamejs/examples/wiki/test/find-missing-pages.js +254 -0
- package/lib/vendor/blamejs/examples/wiki/test/integration.js +391 -0
- package/lib/vendor/blamejs/examples/wiki/test/validate-cli-snapshot.js +379 -0
- package/lib/vendor/blamejs/examples/wiki/test/validate-env-snapshot.js +346 -0
- package/lib/vendor/blamejs/examples/wiki/test/validate-nav-coverage.js +212 -0
- package/lib/vendor/blamejs/examples/wiki/test/validate-site-coverage.js +252 -0
- package/lib/vendor/blamejs/examples/wiki/test/validate-source-comment-blocks.js +107 -0
- package/lib/vendor/blamejs/examples/wiki/views/_layout.html +115 -0
- package/lib/vendor/blamejs/examples/wiki/views/admin/api-keys.html +51 -0
- package/lib/vendor/blamejs/examples/wiki/views/admin/dashboard.html +22 -0
- package/lib/vendor/blamejs/examples/wiki/views/admin/edit.html +17 -0
- package/lib/vendor/blamejs/examples/wiki/views/home.html +85 -0
- package/lib/vendor/blamejs/examples/wiki/views/login.html +18 -0
- package/lib/vendor/blamejs/examples/wiki/views/page.html +5 -0
- package/lib/vendor/blamejs/examples/wiki/views/partials/nav.html +13 -0
- package/lib/vendor/blamejs/examples/wiki/views/search.html +19 -0
- package/lib/vendor/blamejs/examples/wiki/wiki.config.js +15 -0
- package/lib/vendor/blamejs/fuzz/README.md +137 -0
- package/lib/vendor/blamejs/fuzz/_expected.js +35 -0
- package/lib/vendor/blamejs/fuzz/guard-agent-registry.fuzz.js +22 -0
- package/lib/vendor/blamejs/fuzz/guard-csv.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/01-basic.csv +3 -0
- package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/02-formula.csv +1 -0
- package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/03-hyperlink.csv +1 -0
- package/lib/vendor/blamejs/fuzz/guard-dsn.fuzz.js +22 -0
- package/lib/vendor/blamejs/fuzz/guard-email.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-email_seed_corpus/01-basic.eml +5 -0
- package/lib/vendor/blamejs/fuzz/guard-envelope.fuzz.js +24 -0
- package/lib/vendor/blamejs/fuzz/guard-event-bus-payload.fuzz.js +24 -0
- package/lib/vendor/blamejs/fuzz/guard-event-bus-topic.fuzz.js +20 -0
- package/lib/vendor/blamejs/fuzz/guard-html.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/01-basic.html +1 -0
- package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/02-script.html +1 -0
- package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/03-event.html +1 -0
- package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/04-jsurl.html +1 -0
- package/lib/vendor/blamejs/fuzz/guard-idempotency-key.fuzz.js +20 -0
- package/lib/vendor/blamejs/fuzz/guard-imap-command.fuzz.js +35 -0
- package/lib/vendor/blamejs/fuzz/guard-jmap.fuzz.js +41 -0
- package/lib/vendor/blamejs/fuzz/guard-json.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/01-basic.json +1 -0
- package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/02-proto.json +1 -0
- package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/03-dupkey.json +1 -0
- package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/04-nan.json +1 -0
- package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/05-bom.json +1 -0
- package/lib/vendor/blamejs/fuzz/guard-list-id.fuzz.js +21 -0
- package/lib/vendor/blamejs/fuzz/guard-list-unsubscribe.fuzz.js +25 -0
- package/lib/vendor/blamejs/fuzz/guard-mail-compose.fuzz.js +22 -0
- package/lib/vendor/blamejs/fuzz/guard-mail-move.fuzz.js +22 -0
- package/lib/vendor/blamejs/fuzz/guard-mail-query.fuzz.js +27 -0
- package/lib/vendor/blamejs/fuzz/guard-mail-reply.fuzz.js +23 -0
- package/lib/vendor/blamejs/fuzz/guard-mail-sieve.fuzz.js +36 -0
- package/lib/vendor/blamejs/fuzz/guard-managesieve-command.fuzz.js +26 -0
- package/lib/vendor/blamejs/fuzz/guard-markdown.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/01-basic.md +2 -0
- package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/02-jsurl.md +1 -0
- package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/03-jsimg.md +1 -0
- package/lib/vendor/blamejs/fuzz/guard-message-id.fuzz.js +26 -0
- package/lib/vendor/blamejs/fuzz/guard-pop3-command.fuzz.js +23 -0
- package/lib/vendor/blamejs/fuzz/guard-posture-chain.fuzz.js +22 -0
- package/lib/vendor/blamejs/fuzz/guard-saga-config.fuzz.js +32 -0
- package/lib/vendor/blamejs/fuzz/guard-smtp-command.fuzz.js +27 -0
- package/lib/vendor/blamejs/fuzz/guard-snapshot-envelope.fuzz.js +22 -0
- package/lib/vendor/blamejs/fuzz/guard-stream-args.fuzz.js +22 -0
- package/lib/vendor/blamejs/fuzz/guard-svg.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-svg_seed_corpus/01-basic.svg +1 -0
- package/lib/vendor/blamejs/fuzz/guard-svg_seed_corpus/02-script.svg +1 -0
- package/lib/vendor/blamejs/fuzz/guard-tenant-id.fuzz.js +20 -0
- package/lib/vendor/blamejs/fuzz/guard-trace-context.fuzz.js +30 -0
- package/lib/vendor/blamejs/fuzz/guard-xml.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-xml_seed_corpus/01-basic.xml +1 -0
- package/lib/vendor/blamejs/fuzz/guard-xml_seed_corpus/02-xxe.xml +1 -0
- package/lib/vendor/blamejs/fuzz/guard-yaml.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/01-basic.yaml +2 -0
- package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/02-anchor.yaml +2 -0
- package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/03-norway.yaml +1 -0
- package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/04-multidoc.yaml +4 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-ini.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-ini_seed_corpus/01-basic.ini +2 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-toml.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-toml_seed_corpus/01-basic.toml +4 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-xml.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-xml_seed_corpus/01-basic.xml +1 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-yaml.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/parsers__safe-yaml_seed_corpus/01-basic.yaml +4 -0
- package/lib/vendor/blamejs/fuzz/safe-decompress.fuzz.js +49 -0
- package/lib/vendor/blamejs/fuzz/safe-dns.fuzz.js +29 -0
- package/lib/vendor/blamejs/fuzz/safe-ical.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/safe-icap.fuzz.js +42 -0
- package/lib/vendor/blamejs/fuzz/safe-json.fuzz.js +25 -0
- package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/01-object.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/02-array.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/03-string.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/04-proto.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/05-deep.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-jsonpath.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/01-basic.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/02-filter.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/03-deepscan.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/04-slice.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-mime.fuzz.js +27 -0
- package/lib/vendor/blamejs/fuzz/safe-mount-info.fuzz.js +33 -0
- package/lib/vendor/blamejs/fuzz/safe-sieve.fuzz.js +28 -0
- package/lib/vendor/blamejs/fuzz/safe-smtp.fuzz.js +64 -0
- package/lib/vendor/blamejs/fuzz/safe-url.fuzz.js +16 -0
- package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/01-basic.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/02-userinfo.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/03-dangerous.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/04-data.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/05-ipv6.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/06-idn.txt +1 -0
- package/lib/vendor/blamejs/fuzz/safe-vcard.fuzz.js +16 -0
- package/lib/vendor/blamejs/index.js +678 -0
- package/lib/vendor/blamejs/keys/release-pqc-pub.json +7 -0
- package/lib/vendor/blamejs/lib/_test/crypto-fixtures.js +67 -0
- package/lib/vendor/blamejs/lib/a2a-tasks.js +598 -0
- package/lib/vendor/blamejs/lib/a2a.js +407 -0
- package/lib/vendor/blamejs/lib/acme.js +1448 -0
- package/lib/vendor/blamejs/lib/agent-audit.js +45 -0
- package/lib/vendor/blamejs/lib/agent-event-bus.js +382 -0
- package/lib/vendor/blamejs/lib/agent-idempotency.js +497 -0
- package/lib/vendor/blamejs/lib/agent-orchestrator.js +717 -0
- package/lib/vendor/blamejs/lib/agent-posture-chain.js +366 -0
- package/lib/vendor/blamejs/lib/agent-saga.js +321 -0
- package/lib/vendor/blamejs/lib/agent-snapshot.js +676 -0
- package/lib/vendor/blamejs/lib/agent-stream.js +269 -0
- package/lib/vendor/blamejs/lib/agent-tenant.js +632 -0
- package/lib/vendor/blamejs/lib/agent-trace.js +281 -0
- package/lib/vendor/blamejs/lib/ai-adverse-decision.js +184 -0
- package/lib/vendor/blamejs/lib/ai-content-detect.js +268 -0
- package/lib/vendor/blamejs/lib/ai-input.js +201 -0
- package/lib/vendor/blamejs/lib/ai-model-manifest.js +363 -0
- package/lib/vendor/blamejs/lib/ai-pref.js +340 -0
- package/lib/vendor/blamejs/lib/api-key.js +721 -0
- package/lib/vendor/blamejs/lib/api-snapshot.js +458 -0
- package/lib/vendor/blamejs/lib/app-shutdown.js +557 -0
- package/lib/vendor/blamejs/lib/app.js +365 -0
- package/lib/vendor/blamejs/lib/archive.js +547 -0
- package/lib/vendor/blamejs/lib/arg-parser.js +697 -0
- package/lib/vendor/blamejs/lib/argon2-builtin.js +173 -0
- package/lib/vendor/blamejs/lib/asn1-der.js +424 -0
- package/lib/vendor/blamejs/lib/asyncapi-bindings.js +160 -0
- package/lib/vendor/blamejs/lib/asyncapi-traits.js +143 -0
- package/lib/vendor/blamejs/lib/asyncapi.js +575 -0
- package/lib/vendor/blamejs/lib/atomic-file.js +1023 -0
- package/lib/vendor/blamejs/lib/audit-chain.js +266 -0
- package/lib/vendor/blamejs/lib/audit-daily-review.js +389 -0
- package/lib/vendor/blamejs/lib/audit-sign.js +751 -0
- package/lib/vendor/blamejs/lib/audit-tools.js +1113 -0
- package/lib/vendor/blamejs/lib/audit.js +1671 -0
- package/lib/vendor/blamejs/lib/auth/aal.js +169 -0
- package/lib/vendor/blamejs/lib/auth/access-lock.js +220 -0
- package/lib/vendor/blamejs/lib/auth/acr-vocabulary.js +265 -0
- package/lib/vendor/blamejs/lib/auth/ato-kill-switch.js +112 -0
- package/lib/vendor/blamejs/lib/auth/auth-time-tracker.js +111 -0
- package/lib/vendor/blamejs/lib/auth/bot-challenge.js +573 -0
- package/lib/vendor/blamejs/lib/auth/ciba.js +637 -0
- package/lib/vendor/blamejs/lib/auth/dpop.js +516 -0
- package/lib/vendor/blamejs/lib/auth/elevation-grant.js +306 -0
- package/lib/vendor/blamejs/lib/auth/fal.js +229 -0
- package/lib/vendor/blamejs/lib/auth/fido-mds3.js +681 -0
- package/lib/vendor/blamejs/lib/auth/jwt-external.js +519 -0
- package/lib/vendor/blamejs/lib/auth/jwt.js +430 -0
- package/lib/vendor/blamejs/lib/auth/lockout.js +449 -0
- package/lib/vendor/blamejs/lib/auth/oauth.js +2141 -0
- package/lib/vendor/blamejs/lib/auth/oid4vci.js +657 -0
- package/lib/vendor/blamejs/lib/auth/oid4vp.js +531 -0
- package/lib/vendor/blamejs/lib/auth/openid-federation.js +600 -0
- package/lib/vendor/blamejs/lib/auth/passkey.js +676 -0
- package/lib/vendor/blamejs/lib/auth/password.js +693 -0
- package/lib/vendor/blamejs/lib/auth/saml.js +2109 -0
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-disclosure.js +95 -0
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-holder.js +225 -0
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-issuer.js +197 -0
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +728 -0
- package/lib/vendor/blamejs/lib/auth/status-list.js +272 -0
- package/lib/vendor/blamejs/lib/auth/step-up-policy.js +335 -0
- package/lib/vendor/blamejs/lib/auth/step-up.js +454 -0
- package/lib/vendor/blamejs/lib/auth-bot-challenge.js +505 -0
- package/lib/vendor/blamejs/lib/auth-header.js +148 -0
- package/lib/vendor/blamejs/lib/backup/bundle.js +265 -0
- package/lib/vendor/blamejs/lib/backup/crypto.js +176 -0
- package/lib/vendor/blamejs/lib/backup/index.js +1001 -0
- package/lib/vendor/blamejs/lib/backup/manifest.js +443 -0
- package/lib/vendor/blamejs/lib/boot-gates.js +174 -0
- package/lib/vendor/blamejs/lib/breach-deadline.js +272 -0
- package/lib/vendor/blamejs/lib/break-glass.js +1753 -0
- package/lib/vendor/blamejs/lib/budr.js +205 -0
- package/lib/vendor/blamejs/lib/bundler.js +461 -0
- package/lib/vendor/blamejs/lib/cache-redis.js +256 -0
- package/lib/vendor/blamejs/lib/cache-status.js +288 -0
- package/lib/vendor/blamejs/lib/cache.js +1331 -0
- package/lib/vendor/blamejs/lib/calendar.js +1240 -0
- package/lib/vendor/blamejs/lib/canonical-json.js +143 -0
- package/lib/vendor/blamejs/lib/cdn-cache-control.js +473 -0
- package/lib/vendor/blamejs/lib/cert.js +763 -0
- package/lib/vendor/blamejs/lib/chain-writer.js +259 -0
- package/lib/vendor/blamejs/lib/circuit-breaker.js +101 -0
- package/lib/vendor/blamejs/lib/cli-helpers.js +237 -0
- package/lib/vendor/blamejs/lib/cli.js +2328 -0
- package/lib/vendor/blamejs/lib/client-hints.js +318 -0
- package/lib/vendor/blamejs/lib/cloud-events.js +277 -0
- package/lib/vendor/blamejs/lib/cluster-provider-db.js +317 -0
- package/lib/vendor/blamejs/lib/cluster-storage.js +351 -0
- package/lib/vendor/blamejs/lib/cluster.js +1017 -0
- package/lib/vendor/blamejs/lib/cms-codec.js +826 -0
- package/lib/vendor/blamejs/lib/codepoint-class.js +262 -0
- package/lib/vendor/blamejs/lib/compliance-ai-act-logging.js +190 -0
- package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +205 -0
- package/lib/vendor/blamejs/lib/compliance-ai-act-risk.js +189 -0
- package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +200 -0
- package/lib/vendor/blamejs/lib/compliance-ai-act.js +821 -0
- package/lib/vendor/blamejs/lib/compliance-eaa.js +204 -0
- package/lib/vendor/blamejs/lib/compliance-sanctions-aliases.js +167 -0
- package/lib/vendor/blamejs/lib/compliance-sanctions-fetcher.js +206 -0
- package/lib/vendor/blamejs/lib/compliance-sanctions-fuzzy.js +297 -0
- package/lib/vendor/blamejs/lib/compliance-sanctions.js +569 -0
- package/lib/vendor/blamejs/lib/compliance.js +1558 -0
- package/lib/vendor/blamejs/lib/config-drift.js +426 -0
- package/lib/vendor/blamejs/lib/config.js +446 -0
- package/lib/vendor/blamejs/lib/consent.js +369 -0
- package/lib/vendor/blamejs/lib/constants.js +209 -0
- package/lib/vendor/blamejs/lib/content-credentials.js +704 -0
- package/lib/vendor/blamejs/lib/cookies.js +560 -0
- package/lib/vendor/blamejs/lib/cra-report.js +299 -0
- package/lib/vendor/blamejs/lib/credential-hash.js +394 -0
- package/lib/vendor/blamejs/lib/crypto-field.js +1017 -0
- package/lib/vendor/blamejs/lib/crypto-hpke-pq.js +187 -0
- package/lib/vendor/blamejs/lib/crypto-hpke.js +256 -0
- package/lib/vendor/blamejs/lib/crypto.js +1908 -0
- package/lib/vendor/blamejs/lib/csp.js +271 -0
- package/lib/vendor/blamejs/lib/csv.js +418 -0
- package/lib/vendor/blamejs/lib/daemon.js +481 -0
- package/lib/vendor/blamejs/lib/dark-patterns.js +488 -0
- package/lib/vendor/blamejs/lib/data-act.js +328 -0
- package/lib/vendor/blamejs/lib/db-collection.js +587 -0
- package/lib/vendor/blamejs/lib/db-declare-row-policy.js +267 -0
- package/lib/vendor/blamejs/lib/db-declare-view.js +420 -0
- package/lib/vendor/blamejs/lib/db-file-lifecycle.js +333 -0
- package/lib/vendor/blamejs/lib/db-query.js +802 -0
- package/lib/vendor/blamejs/lib/db-role-context.js +50 -0
- package/lib/vendor/blamejs/lib/db-schema.js +322 -0
- package/lib/vendor/blamejs/lib/db.js +3111 -0
- package/lib/vendor/blamejs/lib/dbsc.js +299 -0
- package/lib/vendor/blamejs/lib/ddl-change-control.js +523 -0
- package/lib/vendor/blamejs/lib/deprecate.js +377 -0
- package/lib/vendor/blamejs/lib/dev.js +405 -0
- package/lib/vendor/blamejs/lib/dora.js +402 -0
- package/lib/vendor/blamejs/lib/dr-runbook.js +368 -0
- package/lib/vendor/blamejs/lib/dsr.js +1188 -0
- package/lib/vendor/blamejs/lib/dual-control.js +526 -0
- package/lib/vendor/blamejs/lib/early-hints.js +212 -0
- package/lib/vendor/blamejs/lib/error-page.js +420 -0
- package/lib/vendor/blamejs/lib/events.js +214 -0
- package/lib/vendor/blamejs/lib/external-db-migrate.js +659 -0
- package/lib/vendor/blamejs/lib/external-db.js +1877 -0
- package/lib/vendor/blamejs/lib/fapi2.js +394 -0
- package/lib/vendor/blamejs/lib/fda-21cfr11.js +395 -0
- package/lib/vendor/blamejs/lib/fdx.js +370 -0
- package/lib/vendor/blamejs/lib/fedcm.js +264 -0
- package/lib/vendor/blamejs/lib/file-type.js +360 -0
- package/lib/vendor/blamejs/lib/file-upload.js +1256 -0
- package/lib/vendor/blamejs/lib/flag-cache.js +136 -0
- package/lib/vendor/blamejs/lib/flag-evaluation-context.js +135 -0
- package/lib/vendor/blamejs/lib/flag-providers.js +279 -0
- package/lib/vendor/blamejs/lib/flag-targeting.js +210 -0
- package/lib/vendor/blamejs/lib/flag.js +346 -0
- package/lib/vendor/blamejs/lib/forms.js +525 -0
- package/lib/vendor/blamejs/lib/framework-error.js +724 -0
- package/lib/vendor/blamejs/lib/framework-schema.js +845 -0
- package/lib/vendor/blamejs/lib/framework-sha1-hibp.js +34 -0
- package/lib/vendor/blamejs/lib/fsm.js +469 -0
- package/lib/vendor/blamejs/lib/gate-contract.js +1661 -0
- package/lib/vendor/blamejs/lib/gdpr-ropa.js +261 -0
- package/lib/vendor/blamejs/lib/graphql-federation.js +234 -0
- package/lib/vendor/blamejs/lib/guard-agent-registry.js +179 -0
- package/lib/vendor/blamejs/lib/guard-all.js +555 -0
- package/lib/vendor/blamejs/lib/guard-archive.js +901 -0
- package/lib/vendor/blamejs/lib/guard-auth.js +451 -0
- package/lib/vendor/blamejs/lib/guard-cidr.js +676 -0
- package/lib/vendor/blamejs/lib/guard-csv.js +1176 -0
- package/lib/vendor/blamejs/lib/guard-domain.js +814 -0
- package/lib/vendor/blamejs/lib/guard-dsn.js +382 -0
- package/lib/vendor/blamejs/lib/guard-email.js +951 -0
- package/lib/vendor/blamejs/lib/guard-envelope.js +294 -0
- package/lib/vendor/blamejs/lib/guard-event-bus-payload.js +217 -0
- package/lib/vendor/blamejs/lib/guard-event-bus-topic.js +150 -0
- package/lib/vendor/blamejs/lib/guard-filename.js +956 -0
- package/lib/vendor/blamejs/lib/guard-graphql.js +731 -0
- package/lib/vendor/blamejs/lib/guard-html-wcag-aria.js +164 -0
- package/lib/vendor/blamejs/lib/guard-html-wcag-forms.js +144 -0
- package/lib/vendor/blamejs/lib/guard-html-wcag-tables.js +154 -0
- package/lib/vendor/blamejs/lib/guard-html-wcag-tagwalk.js +44 -0
- package/lib/vendor/blamejs/lib/guard-html-wcag.js +470 -0
- package/lib/vendor/blamejs/lib/guard-html.js +1209 -0
- package/lib/vendor/blamejs/lib/guard-idempotency-key.js +151 -0
- package/lib/vendor/blamejs/lib/guard-image.js +584 -0
- package/lib/vendor/blamejs/lib/guard-imap-command.js +337 -0
- package/lib/vendor/blamejs/lib/guard-jmap.js +321 -0
- package/lib/vendor/blamejs/lib/guard-json.js +935 -0
- package/lib/vendor/blamejs/lib/guard-jsonpath.js +512 -0
- package/lib/vendor/blamejs/lib/guard-jwt.js +772 -0
- package/lib/vendor/blamejs/lib/guard-list-id.js +318 -0
- package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +412 -0
- package/lib/vendor/blamejs/lib/guard-mail-compose.js +282 -0
- package/lib/vendor/blamejs/lib/guard-mail-move.js +202 -0
- package/lib/vendor/blamejs/lib/guard-mail-query.js +310 -0
- package/lib/vendor/blamejs/lib/guard-mail-reply.js +172 -0
- package/lib/vendor/blamejs/lib/guard-mail-sieve.js +207 -0
- package/lib/vendor/blamejs/lib/guard-managesieve-command.js +566 -0
- package/lib/vendor/blamejs/lib/guard-markdown.js +768 -0
- package/lib/vendor/blamejs/lib/guard-message-id.js +267 -0
- package/lib/vendor/blamejs/lib/guard-mime.js +609 -0
- package/lib/vendor/blamejs/lib/guard-oauth.js +650 -0
- package/lib/vendor/blamejs/lib/guard-pdf.js +569 -0
- package/lib/vendor/blamejs/lib/guard-pop3-command.js +317 -0
- package/lib/vendor/blamejs/lib/guard-posture-chain.js +201 -0
- package/lib/vendor/blamejs/lib/guard-regex.js +632 -0
- package/lib/vendor/blamejs/lib/guard-saga-config.js +157 -0
- package/lib/vendor/blamejs/lib/guard-shell.js +522 -0
- package/lib/vendor/blamejs/lib/guard-smtp-command.js +594 -0
- package/lib/vendor/blamejs/lib/guard-snapshot-envelope.js +168 -0
- package/lib/vendor/blamejs/lib/guard-stream-args.js +166 -0
- package/lib/vendor/blamejs/lib/guard-svg.js +1163 -0
- package/lib/vendor/blamejs/lib/guard-template.js +490 -0
- package/lib/vendor/blamejs/lib/guard-tenant-id.js +138 -0
- package/lib/vendor/blamejs/lib/guard-time.js +586 -0
- package/lib/vendor/blamejs/lib/guard-trace-context.js +172 -0
- package/lib/vendor/blamejs/lib/guard-uuid.js +548 -0
- package/lib/vendor/blamejs/lib/guard-xml.js +666 -0
- package/lib/vendor/blamejs/lib/guard-yaml.js +726 -0
- package/lib/vendor/blamejs/lib/hal.js +125 -0
- package/lib/vendor/blamejs/lib/handlers.js +350 -0
- package/lib/vendor/blamejs/lib/honeytoken.js +168 -0
- package/lib/vendor/blamejs/lib/html-balance.js +347 -0
- package/lib/vendor/blamejs/lib/http-client-cache.js +923 -0
- package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +519 -0
- package/lib/vendor/blamejs/lib/http-client.js +2152 -0
- package/lib/vendor/blamejs/lib/http-message-signature.js +589 -0
- package/lib/vendor/blamejs/lib/http2-teardown.js +34 -0
- package/lib/vendor/blamejs/lib/i18n-messageformat.js +398 -0
- package/lib/vendor/blamejs/lib/i18n.js +931 -0
- package/lib/vendor/blamejs/lib/iab-mspa.js +257 -0
- package/lib/vendor/blamejs/lib/iab-tcf.js +461 -0
- package/lib/vendor/blamejs/lib/importmap-integrity.js +90 -0
- package/lib/vendor/blamejs/lib/inbox.js +435 -0
- package/lib/vendor/blamejs/lib/incident-report.js +314 -0
- package/lib/vendor/blamejs/lib/ip-utils.js +102 -0
- package/lib/vendor/blamejs/lib/jobs.js +185 -0
- package/lib/vendor/blamejs/lib/jose-jwe-experimental.js +228 -0
- package/lib/vendor/blamejs/lib/jsonapi.js +230 -0
- package/lib/vendor/blamejs/lib/keychain.js +865 -0
- package/lib/vendor/blamejs/lib/lazy-require.js +48 -0
- package/lib/vendor/blamejs/lib/legal-hold.js +374 -0
- package/lib/vendor/blamejs/lib/local-db-thin.js +321 -0
- package/lib/vendor/blamejs/lib/log-stream-cloudwatch.js +369 -0
- package/lib/vendor/blamejs/lib/log-stream-local.js +146 -0
- package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +410 -0
- package/lib/vendor/blamejs/lib/log-stream-otlp.js +286 -0
- package/lib/vendor/blamejs/lib/log-stream-syslog.js +310 -0
- package/lib/vendor/blamejs/lib/log-stream-webhook.js +199 -0
- package/lib/vendor/blamejs/lib/log-stream.js +584 -0
- package/lib/vendor/blamejs/lib/log.js +625 -0
- package/lib/vendor/blamejs/lib/lro.js +200 -0
- package/lib/vendor/blamejs/lib/mail-agent.js +786 -0
- package/lib/vendor/blamejs/lib/mail-arc-sign.js +417 -0
- package/lib/vendor/blamejs/lib/mail-arf.js +343 -0
- package/lib/vendor/blamejs/lib/mail-auth.js +2144 -0
- package/lib/vendor/blamejs/lib/mail-bimi.js +1047 -0
- package/lib/vendor/blamejs/lib/mail-bounce.js +955 -0
- package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +1286 -0
- package/lib/vendor/blamejs/lib/mail-crypto-smime.js +789 -0
- package/lib/vendor/blamejs/lib/mail-crypto.js +108 -0
- package/lib/vendor/blamejs/lib/mail-dav.js +1224 -0
- package/lib/vendor/blamejs/lib/mail-deploy.js +1119 -0
- package/lib/vendor/blamejs/lib/mail-dkim.js +1250 -0
- package/lib/vendor/blamejs/lib/mail-greylist.js +448 -0
- package/lib/vendor/blamejs/lib/mail-helo.js +473 -0
- package/lib/vendor/blamejs/lib/mail-journal.js +435 -0
- package/lib/vendor/blamejs/lib/mail-mdn.js +424 -0
- package/lib/vendor/blamejs/lib/mail-rbl.js +392 -0
- package/lib/vendor/blamejs/lib/mail-require-tls.js +198 -0
- package/lib/vendor/blamejs/lib/mail-scan.js +502 -0
- package/lib/vendor/blamejs/lib/mail-send-deliver.js +629 -0
- package/lib/vendor/blamejs/lib/mail-server-imap.js +1858 -0
- package/lib/vendor/blamejs/lib/mail-server-jmap.js +1565 -0
- package/lib/vendor/blamejs/lib/mail-server-managesieve.js +908 -0
- package/lib/vendor/blamejs/lib/mail-server-mx.js +969 -0
- package/lib/vendor/blamejs/lib/mail-server-pop3.js +915 -0
- package/lib/vendor/blamejs/lib/mail-server-rate-limit.js +315 -0
- package/lib/vendor/blamejs/lib/mail-server-registry.js +378 -0
- package/lib/vendor/blamejs/lib/mail-server-submission.js +1396 -0
- package/lib/vendor/blamejs/lib/mail-server-tls.js +445 -0
- package/lib/vendor/blamejs/lib/mail-sieve.js +557 -0
- package/lib/vendor/blamejs/lib/mail-spam-score.js +284 -0
- package/lib/vendor/blamejs/lib/mail-srs.js +248 -0
- package/lib/vendor/blamejs/lib/mail-store-fts.js +394 -0
- package/lib/vendor/blamejs/lib/mail-store.js +929 -0
- package/lib/vendor/blamejs/lib/mail-unsubscribe.js +400 -0
- package/lib/vendor/blamejs/lib/mail.js +1971 -0
- package/lib/vendor/blamejs/lib/mcp-tool-registry.js +473 -0
- package/lib/vendor/blamejs/lib/mcp.js +950 -0
- package/lib/vendor/blamejs/lib/metrics.js +1503 -0
- package/lib/vendor/blamejs/lib/middleware/age-gate.js +177 -0
- package/lib/vendor/blamejs/lib/middleware/ai-act-disclosure.js +203 -0
- package/lib/vendor/blamejs/lib/middleware/api-encrypt.js +981 -0
- package/lib/vendor/blamejs/lib/middleware/assetlinks.js +137 -0
- package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +171 -0
- package/lib/vendor/blamejs/lib/middleware/attach-user.js +220 -0
- package/lib/vendor/blamejs/lib/middleware/bearer-auth.js +293 -0
- package/lib/vendor/blamejs/lib/middleware/body-parser.js +1519 -0
- package/lib/vendor/blamejs/lib/middleware/bot-disclose.js +183 -0
- package/lib/vendor/blamejs/lib/middleware/bot-guard.js +217 -0
- package/lib/vendor/blamejs/lib/middleware/clear-site-data.js +122 -0
- package/lib/vendor/blamejs/lib/middleware/compose-pipeline.js +355 -0
- package/lib/vendor/blamejs/lib/middleware/compression.js +489 -0
- package/lib/vendor/blamejs/lib/middleware/cookies.js +130 -0
- package/lib/vendor/blamejs/lib/middleware/cors.js +386 -0
- package/lib/vendor/blamejs/lib/middleware/csp-nonce.js +388 -0
- package/lib/vendor/blamejs/lib/middleware/csp-report.js +167 -0
- package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +499 -0
- package/lib/vendor/blamejs/lib/middleware/daily-byte-quota.js +243 -0
- package/lib/vendor/blamejs/lib/middleware/db-role-for.js +304 -0
- package/lib/vendor/blamejs/lib/middleware/dpop.js +402 -0
- package/lib/vendor/blamejs/lib/middleware/error-handler.js +69 -0
- package/lib/vendor/blamejs/lib/middleware/fetch-metadata.js +168 -0
- package/lib/vendor/blamejs/lib/middleware/flag-context.js +110 -0
- package/lib/vendor/blamejs/lib/middleware/gpc.js +153 -0
- package/lib/vendor/blamejs/lib/middleware/headers.js +242 -0
- package/lib/vendor/blamejs/lib/middleware/health.js +438 -0
- package/lib/vendor/blamejs/lib/middleware/host-allowlist.js +189 -0
- package/lib/vendor/blamejs/lib/middleware/idempotency-key.js +964 -0
- package/lib/vendor/blamejs/lib/middleware/index.js +183 -0
- package/lib/vendor/blamejs/lib/middleware/nel.js +214 -0
- package/lib/vendor/blamejs/lib/middleware/network-allowlist.js +237 -0
- package/lib/vendor/blamejs/lib/middleware/no-cache.js +106 -0
- package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +177 -0
- package/lib/vendor/blamejs/lib/middleware/protected-resource-metadata.js +277 -0
- package/lib/vendor/blamejs/lib/middleware/rate-limit.js +556 -0
- package/lib/vendor/blamejs/lib/middleware/request-id.js +79 -0
- package/lib/vendor/blamejs/lib/middleware/request-log.js +205 -0
- package/lib/vendor/blamejs/lib/middleware/require-aal.js +138 -0
- package/lib/vendor/blamejs/lib/middleware/require-auth.js +144 -0
- package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +290 -0
- package/lib/vendor/blamejs/lib/middleware/require-content-type.js +113 -0
- package/lib/vendor/blamejs/lib/middleware/require-methods.js +97 -0
- package/lib/vendor/blamejs/lib/middleware/require-mtls.js +212 -0
- package/lib/vendor/blamejs/lib/middleware/require-step-up.js +226 -0
- package/lib/vendor/blamejs/lib/middleware/scim-server.js +375 -0
- package/lib/vendor/blamejs/lib/middleware/security-headers.js +285 -0
- package/lib/vendor/blamejs/lib/middleware/security-txt.js +170 -0
- package/lib/vendor/blamejs/lib/middleware/span-http-server.js +280 -0
- package/lib/vendor/blamejs/lib/middleware/speculation-rules.js +323 -0
- package/lib/vendor/blamejs/lib/middleware/sse.js +200 -0
- package/lib/vendor/blamejs/lib/middleware/trace-log-correlation.js +167 -0
- package/lib/vendor/blamejs/lib/middleware/trace-propagate.js +148 -0
- package/lib/vendor/blamejs/lib/middleware/tus-upload.js +749 -0
- package/lib/vendor/blamejs/lib/middleware/web-app-manifest.js +164 -0
- package/lib/vendor/blamejs/lib/migration-files.js +37 -0
- package/lib/vendor/blamejs/lib/migrations.js +385 -0
- package/lib/vendor/blamejs/lib/mime-parse.js +198 -0
- package/lib/vendor/blamejs/lib/money.js +699 -0
- package/lib/vendor/blamejs/lib/mtls-ca.js +572 -0
- package/lib/vendor/blamejs/lib/mtls-engine-default.js +501 -0
- package/lib/vendor/blamejs/lib/network-byte-quota.js +308 -0
- package/lib/vendor/blamejs/lib/network-dns-resolver.js +533 -0
- package/lib/vendor/blamejs/lib/network-dns.js +1930 -0
- package/lib/vendor/blamejs/lib/network-heartbeat.js +425 -0
- package/lib/vendor/blamejs/lib/network-nts.js +574 -0
- package/lib/vendor/blamejs/lib/network-proxy.js +265 -0
- package/lib/vendor/blamejs/lib/network-smtp-policy.js +836 -0
- package/lib/vendor/blamejs/lib/network-tls.js +3126 -0
- package/lib/vendor/blamejs/lib/network.js +346 -0
- package/lib/vendor/blamejs/lib/nis2-report.js +181 -0
- package/lib/vendor/blamejs/lib/nist-crosswalk.js +293 -0
- package/lib/vendor/blamejs/lib/nonce-store.js +177 -0
- package/lib/vendor/blamejs/lib/notify.js +683 -0
- package/lib/vendor/blamejs/lib/ntp-check.js +458 -0
- package/lib/vendor/blamejs/lib/numeric-bounds.js +111 -0
- package/lib/vendor/blamejs/lib/numeric-checks.js +40 -0
- package/lib/vendor/blamejs/lib/object-store/azure-blob-bucket-ops.js +349 -0
- package/lib/vendor/blamejs/lib/object-store/azure-blob.js +488 -0
- package/lib/vendor/blamejs/lib/object-store/gcs-bucket-ops.js +351 -0
- package/lib/vendor/blamejs/lib/object-store/gcs.js +515 -0
- package/lib/vendor/blamejs/lib/object-store/http-put.js +153 -0
- package/lib/vendor/blamejs/lib/object-store/http-request.js +38 -0
- package/lib/vendor/blamejs/lib/object-store/index.js +197 -0
- package/lib/vendor/blamejs/lib/object-store/local.js +163 -0
- package/lib/vendor/blamejs/lib/object-store/sigv4-bucket-ops.js +1133 -0
- package/lib/vendor/blamejs/lib/object-store/sigv4.js +957 -0
- package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +420 -0
- package/lib/vendor/blamejs/lib/observability-tracer.js +395 -0
- package/lib/vendor/blamejs/lib/observability.js +720 -0
- package/lib/vendor/blamejs/lib/openapi-paths-builder.js +248 -0
- package/lib/vendor/blamejs/lib/openapi-schema-walk.js +192 -0
- package/lib/vendor/blamejs/lib/openapi-security.js +169 -0
- package/lib/vendor/blamejs/lib/openapi-yaml.js +154 -0
- package/lib/vendor/blamejs/lib/openapi.js +489 -0
- package/lib/vendor/blamejs/lib/otel-export.js +278 -0
- package/lib/vendor/blamejs/lib/outbox.js +547 -0
- package/lib/vendor/blamejs/lib/pagination.js +542 -0
- package/lib/vendor/blamejs/lib/parsers/index.js +91 -0
- package/lib/vendor/blamejs/lib/parsers/safe-env.js +642 -0
- package/lib/vendor/blamejs/lib/parsers/safe-ini.js +293 -0
- package/lib/vendor/blamejs/lib/parsers/safe-toml.js +784 -0
- package/lib/vendor/blamejs/lib/parsers/safe-xml.js +390 -0
- package/lib/vendor/blamejs/lib/parsers/safe-yaml.js +1015 -0
- package/lib/vendor/blamejs/lib/permissions.js +793 -0
- package/lib/vendor/blamejs/lib/pick.js +105 -0
- package/lib/vendor/blamejs/lib/pqc-agent.js +351 -0
- package/lib/vendor/blamejs/lib/pqc-gate.js +279 -0
- package/lib/vendor/blamejs/lib/pqc-software.js +271 -0
- package/lib/vendor/blamejs/lib/problem-details.js +482 -0
- package/lib/vendor/blamejs/lib/process-spawn.js +196 -0
- package/lib/vendor/blamejs/lib/promise-pool.js +162 -0
- package/lib/vendor/blamejs/lib/protobuf-encoder.js +190 -0
- package/lib/vendor/blamejs/lib/protocol-dispatcher.js +161 -0
- package/lib/vendor/blamejs/lib/public-suffix.js +403 -0
- package/lib/vendor/blamejs/lib/pubsub-cluster.js +154 -0
- package/lib/vendor/blamejs/lib/pubsub-redis.js +167 -0
- package/lib/vendor/blamejs/lib/pubsub.js +463 -0
- package/lib/vendor/blamejs/lib/queue-local.js +476 -0
- package/lib/vendor/blamejs/lib/queue-redis.js +745 -0
- package/lib/vendor/blamejs/lib/queue-sqs.js +319 -0
- package/lib/vendor/blamejs/lib/queue.js +1016 -0
- package/lib/vendor/blamejs/lib/redact.js +1007 -0
- package/lib/vendor/blamejs/lib/redis-client.js +520 -0
- package/lib/vendor/blamejs/lib/render.js +285 -0
- package/lib/vendor/blamejs/lib/request-helpers.js +767 -0
- package/lib/vendor/blamejs/lib/resource-access-lock.js +116 -0
- package/lib/vendor/blamejs/lib/restore-bundle.js +340 -0
- package/lib/vendor/blamejs/lib/restore-rollback.js +365 -0
- package/lib/vendor/blamejs/lib/restore.js +409 -0
- package/lib/vendor/blamejs/lib/retention.js +640 -0
- package/lib/vendor/blamejs/lib/retry.js +523 -0
- package/lib/vendor/blamejs/lib/router.js +1289 -0
- package/lib/vendor/blamejs/lib/safe-async.js +1184 -0
- package/lib/vendor/blamejs/lib/safe-buffer.js +562 -0
- package/lib/vendor/blamejs/lib/safe-decompress.js +297 -0
- package/lib/vendor/blamejs/lib/safe-dns.js +665 -0
- package/lib/vendor/blamejs/lib/safe-ical.js +634 -0
- package/lib/vendor/blamejs/lib/safe-icap.js +502 -0
- package/lib/vendor/blamejs/lib/safe-json.js +946 -0
- package/lib/vendor/blamejs/lib/safe-jsonpath.js +285 -0
- package/lib/vendor/blamejs/lib/safe-mime.js +831 -0
- package/lib/vendor/blamejs/lib/safe-mount-info.js +306 -0
- package/lib/vendor/blamejs/lib/safe-path.js +254 -0
- package/lib/vendor/blamejs/lib/safe-redirect.js +106 -0
- package/lib/vendor/blamejs/lib/safe-schema.js +1810 -0
- package/lib/vendor/blamejs/lib/safe-sieve.js +684 -0
- package/lib/vendor/blamejs/lib/safe-smtp.js +185 -0
- package/lib/vendor/blamejs/lib/safe-sql.js +363 -0
- package/lib/vendor/blamejs/lib/safe-url.js +428 -0
- package/lib/vendor/blamejs/lib/safe-vcard.js +473 -0
- package/lib/vendor/blamejs/lib/sandbox-worker.js +135 -0
- package/lib/vendor/blamejs/lib/sandbox.js +358 -0
- package/lib/vendor/blamejs/lib/scheduler.js +827 -0
- package/lib/vendor/blamejs/lib/sd-notify.js +269 -0
- package/lib/vendor/blamejs/lib/sec-cyber.js +214 -0
- package/lib/vendor/blamejs/lib/security-assert.js +395 -0
- package/lib/vendor/blamejs/lib/seeders.js +620 -0
- package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +309 -0
- package/lib/vendor/blamejs/lib/self-update.js +804 -0
- package/lib/vendor/blamejs/lib/server-timing.js +174 -0
- package/lib/vendor/blamejs/lib/session-device-binding.js +431 -0
- package/lib/vendor/blamejs/lib/session-stores.js +138 -0
- package/lib/vendor/blamejs/lib/session.js +1162 -0
- package/lib/vendor/blamejs/lib/slug.js +381 -0
- package/lib/vendor/blamejs/lib/sse.js +349 -0
- package/lib/vendor/blamejs/lib/ssrf-guard.js +792 -0
- package/lib/vendor/blamejs/lib/standard-webhooks.js +183 -0
- package/lib/vendor/blamejs/lib/static.js +1249 -0
- package/lib/vendor/blamejs/lib/storage.js +1272 -0
- package/lib/vendor/blamejs/lib/stream-throttle.js +235 -0
- package/lib/vendor/blamejs/lib/structured-fields.js +244 -0
- package/lib/vendor/blamejs/lib/subject.js +667 -0
- package/lib/vendor/blamejs/lib/tcpa-10dlc.js +175 -0
- package/lib/vendor/blamejs/lib/template.js +931 -0
- package/lib/vendor/blamejs/lib/tenant-quota.js +545 -0
- package/lib/vendor/blamejs/lib/test-harness.js +275 -0
- package/lib/vendor/blamejs/lib/testing.js +1185 -0
- package/lib/vendor/blamejs/lib/time.js +578 -0
- package/lib/vendor/blamejs/lib/tls-exporter.js +239 -0
- package/lib/vendor/blamejs/lib/totp.js +318 -0
- package/lib/vendor/blamejs/lib/tracing.js +546 -0
- package/lib/vendor/blamejs/lib/uuid.js +207 -0
- package/lib/vendor/blamejs/lib/validate-opts.js +381 -0
- package/lib/vendor/blamejs/lib/vault/index.js +638 -0
- package/lib/vendor/blamejs/lib/vault/passphrase-ops.js +311 -0
- package/lib/vendor/blamejs/lib/vault/passphrase-source.js +198 -0
- package/lib/vendor/blamejs/lib/vault/rotate.js +803 -0
- package/lib/vendor/blamejs/lib/vault/seal-pem-file.js +471 -0
- package/lib/vendor/blamejs/lib/vault/wrap.js +296 -0
- package/lib/vendor/blamejs/lib/vault-aad.js +259 -0
- package/lib/vendor/blamejs/lib/vendor/.vendor-data-pubkey +4 -0
- package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +161 -0
- package/lib/vendor/blamejs/lib/vendor/bimi-trust-anchors.data.js +68 -0
- package/lib/vendor/blamejs/lib/vendor/bimi-trust-anchors.pem +33 -0
- package/lib/vendor/blamejs/lib/vendor/common-passwords-top-10000.data.js +1325 -0
- package/lib/vendor/blamejs/lib/vendor/common-passwords-top-10000.txt +10002 -0
- package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +9 -0
- package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +18 -0
- package/lib/vendor/blamejs/lib/vendor/pki.cjs +181 -0
- package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +16382 -0
- package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5881 -0
- package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +328 -0
- package/lib/vendor/blamejs/lib/vendor/vendor-data-pubkey.js +16 -0
- package/lib/vendor/blamejs/lib/vendor-data.js +520 -0
- package/lib/vendor/blamejs/lib/vex.js +630 -0
- package/lib/vendor/blamejs/lib/watcher.js +608 -0
- package/lib/vendor/blamejs/lib/web-push-vapid.js +322 -0
- package/lib/vendor/blamejs/lib/webhook.js +977 -0
- package/lib/vendor/blamejs/lib/websocket-channels.js +327 -0
- package/lib/vendor/blamejs/lib/websocket.js +1561 -0
- package/lib/vendor/blamejs/lib/wiki-concepts.js +338 -0
- package/lib/vendor/blamejs/lib/worker-pool.js +464 -0
- package/lib/vendor/blamejs/lib/ws-client.js +978 -0
- package/lib/vendor/blamejs/lib/xml-c14n.js +506 -0
- package/lib/vendor/blamejs/memory/specs/node-26-map-getorinsert-migration.md +164 -0
- package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +19 -0
- package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/README.md +88 -0
- package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/build.sh +26 -0
- package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/project.yaml +28 -0
- package/lib/vendor/blamejs/package.json +81 -0
- package/lib/vendor/blamejs/release-notes/v0.0.x.json +310 -0
- package/lib/vendor/blamejs/release-notes/v0.1.x.json +1798 -0
- package/lib/vendor/blamejs/release-notes/v0.10.x.json +1288 -0
- package/lib/vendor/blamejs/release-notes/v0.11.x.json +2551 -0
- package/lib/vendor/blamejs/release-notes/v0.12.0.json +64 -0
- package/lib/vendor/blamejs/release-notes/v0.12.1.json +32 -0
- package/lib/vendor/blamejs/release-notes/v0.12.2.json +45 -0
- package/lib/vendor/blamejs/release-notes/v0.2.x.json +706 -0
- package/lib/vendor/blamejs/release-notes/v0.3.x.json +786 -0
- package/lib/vendor/blamejs/release-notes/v0.4.x.json +588 -0
- package/lib/vendor/blamejs/release-notes/v0.5.x.json +390 -0
- package/lib/vendor/blamejs/release-notes/v0.6.x.json +1947 -0
- package/lib/vendor/blamejs/release-notes/v0.7.x.json +3811 -0
- package/lib/vendor/blamejs/release-notes/v0.8.x.json +3318 -0
- package/lib/vendor/blamejs/release-notes/v0.9.x.json +2257 -0
- package/lib/vendor/blamejs/scripts/build-vendored-sbom.js +325 -0
- package/lib/vendor/blamejs/scripts/check-api-snapshot.js +62 -0
- package/lib/vendor/blamejs/scripts/check-changelog-extract.js +108 -0
- package/lib/vendor/blamejs/scripts/check-pack-against-gitignore.js +83 -0
- package/lib/vendor/blamejs/scripts/check-services.js +483 -0
- package/lib/vendor/blamejs/scripts/check-vendor-currency.js +349 -0
- package/lib/vendor/blamejs/scripts/consolidate-release-notes.js +216 -0
- package/lib/vendor/blamejs/scripts/gen-migrating.js +275 -0
- package/lib/vendor/blamejs/scripts/generate-changelog-entry.js +577 -0
- package/lib/vendor/blamejs/scripts/generate-release-signing-key.js +79 -0
- package/lib/vendor/blamejs/scripts/publish-dep-confusion-placeholder.sh +101 -0
- package/lib/vendor/blamejs/scripts/refresh-api-snapshot.js +31 -0
- package/lib/vendor/blamejs/scripts/refresh-vendor-manifest.js +132 -0
- package/lib/vendor/blamejs/scripts/release.js +652 -0
- package/lib/vendor/blamejs/scripts/sha3-digest.js +62 -0
- package/lib/vendor/blamejs/scripts/sign-release-artifact.js +92 -0
- package/lib/vendor/blamejs/scripts/test-integration.js +181 -0
- package/lib/vendor/blamejs/scripts/test-wiki-integration.js +126 -0
- package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +77 -0
- package/lib/vendor/blamejs/scripts/vendor-data-gen.js +186 -0
- package/lib/vendor/blamejs/scripts/vendor-data-keygen.js +101 -0
- package/lib/vendor/blamejs/scripts/vendor-update.sh +278 -0
- package/lib/vendor/blamejs/test/00-primitives.js +19075 -0
- package/lib/vendor/blamejs/test/10-state.js +622 -0
- package/lib/vendor/blamejs/test/20-db.js +561 -0
- package/lib/vendor/blamejs/test/30-chain.js +2110 -0
- package/lib/vendor/blamejs/test/40-consumers.js +2453 -0
- package/lib/vendor/blamejs/test/50-integration.js +486 -0
- package/lib/vendor/blamejs/test/_helpers.js +10 -0
- package/lib/vendor/blamejs/test/_smoke-worker.js +69 -0
- package/lib/vendor/blamejs/test/fixtures/exploit-corpus/corpus.json +368 -0
- package/lib/vendor/blamejs/test/fixtures/http-client-stream-payload.txt +2 -0
- package/lib/vendor/blamejs/test/fixtures/worker-pool/echo.js +52 -0
- package/lib/vendor/blamejs/test/helpers/_codebase-shingle-worker.js +24 -0
- package/lib/vendor/blamejs/test/helpers/_codebase-shingle.js +203 -0
- package/lib/vendor/blamejs/test/helpers/_shape-match.js +513 -0
- package/lib/vendor/blamejs/test/helpers/check.js +36 -0
- package/lib/vendor/blamejs/test/helpers/cluster.js +70 -0
- package/lib/vendor/blamejs/test/helpers/db.js +143 -0
- package/lib/vendor/blamejs/test/helpers/drivers.js +207 -0
- package/lib/vendor/blamejs/test/helpers/fs-watch.js +101 -0
- package/lib/vendor/blamejs/test/helpers/http.js +14 -0
- package/lib/vendor/blamejs/test/helpers/index.js +93 -0
- package/lib/vendor/blamejs/test/helpers/json-round-trip.js +120 -0
- package/lib/vendor/blamejs/test/helpers/mocks.js +20 -0
- package/lib/vendor/blamejs/test/helpers/otel.js +13 -0
- package/lib/vendor/blamejs/test/helpers/services.js +380 -0
- package/lib/vendor/blamejs/test/helpers/wait.js +206 -0
- package/lib/vendor/blamejs/test/integration/cache.test.js +235 -0
- package/lib/vendor/blamejs/test/integration/cluster-provider-mysql.test.js +174 -0
- package/lib/vendor/blamejs/test/integration/federation-auth.test.js +611 -0
- package/lib/vendor/blamejs/test/integration/http-client.test.js +129 -0
- package/lib/vendor/blamejs/test/integration/log-stream.test.js +219 -0
- package/lib/vendor/blamejs/test/integration/mail-crypto-smime.test.js +181 -0
- package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +152 -0
- package/lib/vendor/blamejs/test/integration/mail-smtp.test.js +161 -0
- package/lib/vendor/blamejs/test/integration/mtls-ca.test.js +289 -0
- package/lib/vendor/blamejs/test/integration/network-dns.test.js +123 -0
- package/lib/vendor/blamejs/test/integration/network-heartbeat.test.js +101 -0
- package/lib/vendor/blamejs/test/integration/ntp-check.test.js +89 -0
- package/lib/vendor/blamejs/test/integration/object-store-sigv4.test.js +403 -0
- package/lib/vendor/blamejs/test/integration/pqc-pkcs8-forward-compat.test.js +271 -0
- package/lib/vendor/blamejs/test/integration/pubsub.test.js +137 -0
- package/lib/vendor/blamejs/test/integration/queue-redis.test.js +352 -0
- package/lib/vendor/blamejs/test/integration/redis-client-tls.test.js +96 -0
- package/lib/vendor/blamejs/test/integration/ssrf-guard.test.js +98 -0
- package/lib/vendor/blamejs/test/integration/websocket-permessage-deflate.test.js +261 -0
- package/lib/vendor/blamejs/test/integration/ws-client-roundtrip.test.js +230 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +211 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/a2a.test.js +59 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/access-lock.test.js +136 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +219 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +69 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-event-bus.test.js +266 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +262 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-orchestrator.test.js +390 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-posture-chain.test.js +174 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +279 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +322 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-stream.test.js +227 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-tenant.test.js +302 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-trace.test.js +150 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ai-adverse-decision.test.js +44 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ai-content-detect.test.js +150 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ai-input.test.js +50 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ai-model-manifest.test.js +96 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ai-pref.test.js +76 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +1080 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +311 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-zip-stream.test.js +291 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/archive.test.js +140 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +267 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +108 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/asyncapi.test.js +929 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file-conflict-path.test.js +80 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-cve-defensive.test.js +176 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-daily-review.test.js +132 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-export-cadf.test.js +97 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-framework-namespaces.test.js +141 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-segregation.test.js +115 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-ml-dsa-65.test.js +163 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-use-store.test.js +246 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-bot-challenge-verifier.test.js +485 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-bot-challenge.test.js +331 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +352 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-lockout.test.js +572 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-password-audit.test.js +61 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/azure-blob-bucket-ops.test.js +258 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +105 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-worker.test.js +34 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/bearer-auth.test.js +107 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/body-parser-chunked-malformed.test.js +131 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/body-parser-smuggling.test.js +118 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/boot-gates.test.js +85 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/breach-deadline.test.js +38 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +861 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/budr.test.js +55 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/bundler-engine.test.js +209 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cache-status.test.js +129 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +871 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +891 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/canonical-json-jcs.test.js +43 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cdn-cache-control.test.js +243 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +550 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +107 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-api-key.test.js +147 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-audit-verify-chain.test.js +104 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-backup.test.js +135 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-config-drift.test.js +67 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +75 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-file-type.test.js +98 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-helpers.test.js +145 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-mtls.test.js +133 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-password.test.js +97 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-restore.test.js +160 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-retention.test.js +84 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-security.test.js +69 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-vault.test.js +142 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/client-hints.test.js +133 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +237 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +9600 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +575 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-cascade.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-eaa.test.js +36 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +712 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance.test.js +278 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/config-drift.test.js +97 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/config.test.js +424 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +94 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cors.test.js +357 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cra-report.test.js +31 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/credential-hash.test.js +226 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-base64url.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-envelope.test.js +85 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +193 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +98 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hpke-pq.test.js +132 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hpke.test.js +155 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-mlkem768-x25519.test.js +129 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-namespace-hash.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-random-int.test.js +72 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csp-builder.test.js +96 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csp-nonce.test.js +401 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +34 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +180 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +210 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/daily-byte-quota.test.js +153 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +66 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/data-act.test.js +74 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-collection-extensions.test.js +226 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-collection.test.js +136 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-init-extensions.test.js +165 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-query-cross-schema.test.js +150 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-query-extensions.test.js +191 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-role-for.test.js +228 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-vacuum.test.js +55 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-worm.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +184 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/declare-row-policy.test.js +203 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/declare-view.test.js +303 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dns-dnssec-algorithm.test.js +163 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dns-null-mx.test.js +39 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dora.test.js +165 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dr-runbook.test.js +59 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dsr-state-rules.test.js +55 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +786 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +105 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/early-hints.test.js +147 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/events.test.js +105 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/exploit-replay.test.js +243 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/external-db-hardening.test.js +181 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +190 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/external-db-routing.test.js +531 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +118 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fapi2.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fda-21cfr11.test.js +156 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fdx.test.js +79 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +216 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +434 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +432 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/file-type.test.js +81 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +887 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/forensic-snapshot.test.js +51 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fsm.test.js +375 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/gcs-bucket-ops.test.js +321 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +41 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/graphql-federation.test.js +32 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-agent-registry.test.js +87 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-all.test.js +328 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +339 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-csv.test.js +694 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-dsn.test.js +296 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-email.test.js +234 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-envelope.test.js +192 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-event-bus-payload.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-event-bus-topic.test.js +71 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +386 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-html-wcag.test.js +859 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +357 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +174 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-json.test.js +317 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-list-id.test.js +199 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-list-unsubscribe.test.js +214 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-compose.test.js +111 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-move.test.js +110 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-query.test.js +112 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-reply.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-sieve.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +301 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +265 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-message-id.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +161 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-posture-chain.test.js +100 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-saga-config.test.js +79 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-smtp-command.test.js +269 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-snapshot-envelope.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-stream-args.test.js +78 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +288 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-tenant-id.test.js +69 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-trace-context.test.js +102 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-xml.test.js +202 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-yaml.test.js +203 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/hal.test.js +51 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/honeytoken.test.js +50 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +37 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +692 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client-stream.test.js +280 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +225 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +203 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +991 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/iab-mspa.test.js +63 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/iab-tcf.test.js +73 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +612 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/importmap-integrity.test.js +56 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/inbox.test.js +166 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/incident-report.test.js +29 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jose-jwe-experimental.test.js +121 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/json-api.test.js +58 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/json-round-trip-helper.test.js +110 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +159 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/legal-hold.test.js +118 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/local-db-thin.test.js +150 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-cloudwatch.test.js +489 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-otlp-grpc.test.js +207 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-otlp.test.js +283 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/lro.test.js +65 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +417 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-arf.test.js +208 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +910 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +502 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +680 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-canspam.test.js +128 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +149 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +323 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +297 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +514 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy-tlsrpt.test.js +369 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +199 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +627 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-feedback-id.test.js +56 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-greylist.test.js +217 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +283 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-journal.test.js +217 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-mdn.test.js +334 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-rbl.test.js +271 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-require-tls.test.js +128 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +215 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +336 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +732 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +840 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +130 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +285 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +74 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +112 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +229 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +394 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-tls.test.js +147 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +151 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-spam-score.test.js +204 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-srs.test.js +152 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +279 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +323 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-unsubscribe.test.js +165 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +439 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mcp-tool-registry.test.js +202 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +155 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics-shadow-registry.test.js +112 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +224 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-compose-pipeline.test.js +278 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/money.test.js +376 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-paths.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/nel.test.js +200 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-allowlist.test.js +106 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-byte-quota.test.js +133 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +372 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +635 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-heartbeat-passive.test.js +128 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-tls-build-options.test.js +130 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-tls-ct-inclusion.test.js +179 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +447 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +369 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/nis2-report.test.js +21 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/nist-crosswalk.test.js +42 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/no-cache.test.js +98 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/notify.test.js +707 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/numeric-bounds.test.js +142 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/oauth-callback.test.js +72 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +597 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +190 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/openapi.test.js +877 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/otel-export.test.js +257 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pagination.test.js +522 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +216 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +324 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +546 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +153 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pqc-software.test.js +94 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/problem-details.test.js +195 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/process-spawn.test.js +62 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/promise-pool.test.js +93 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/protected-resource-metadata.test.js +68 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/protobuf-encoder.test.js +138 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/protocol-dispatcher.test.js +174 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/public-suffix.test.js +197 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +232 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue-dlq-extend-lease.test.js +178 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +322 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue-priority-rate-progress.test.js +266 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue-sqs.test.js +300 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-cluster.test.js +338 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-registry.test.js +75 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/redact-dlp.test.js +246 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/redis-client.test.js +130 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +335 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/request-log.test.js +170 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/require-auth-cache-control.test.js +93 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/require-mtls.test.js +34 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/resource-access-lock.test.js +52 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/retention-floor.test.js +67 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/retry.test.js +535 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router-cross-origin-redirect.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +128 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-async-loops.test.js +163 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-async-parallel.test.js +170 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +248 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +451 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +289 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-icap.test.js +206 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-jsonpath.test.js +104 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +339 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-mount-info.test.js +180 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +78 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-sieve.test.js +123 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-smtp.test.js +95 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-url-idn-homograph.test.js +77 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +257 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/saml-slo.test.js +249 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sandbox.test.js +228 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/scheduler-exactly-once.test.js +238 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +700 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sd-notify.test.js +67 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sec-cyber.test.js +85 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +107 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/security-headers.test.js +175 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/seeders.test.js +816 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/self-update-standalone-verifier.test.js +168 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +302 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/server-timing.test.js +93 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +247 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/session-extensions.test.js +295 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/shape-match.test.js +142 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +952 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-multipart-sse.test.js +441 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/slug.test.js +330 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/smtp-policy.test.js +233 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/source-comment-blocks.test.js +105 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/speculation-rules.test.js +319 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sse.test.js +148 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +283 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/standard-webhooks.test.js +67 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +266 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/step-up.test.js +487 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/storage-chunk-scratch.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +773 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/stream-throttle.test.js +173 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/structured-fields.test.js +180 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tcpa-10dlc.test.js +66 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +571 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/test-harness.test.js +190 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/testing-request.test.js +119 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/testing.test.js +522 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +151 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tls-exporter.test.js +168 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tls-ocsp-ct.test.js +275 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tls-ocsp-verify.test.js +105 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tls-pinset-drift.test.js +35 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tls-preferred-groups.test.js +81 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tracing.test.js +280 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/uuid.test.js +93 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vault-aad.test.js +277 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vault-seal-pem-file.test.js +252 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vendor-data.test.js +149 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vendor-manifest.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vex.test.js +661 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +308 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/web-push-vapid.test.js +144 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +674 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/websocket-channels.test.js +360 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/worker-pool.test.js +302 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +349 -0
- package/lib/vendor/blamejs/test/layer-1-state/api-key.test.js +717 -0
- package/lib/vendor/blamejs/test/layer-5-integration/bundler-output.test.js +444 -0
- package/lib/vendor/blamejs/test/layer-5-integration/guard-host-integration.test.js +597 -0
- package/lib/vendor/blamejs/test/layer-5-integration/security-chaos.test.js +308 -0
- package/lib/vendor/blamejs/test/smoke.js +431 -0
- package/lib/webhooks.js +305 -0
- package/package.json +43 -0
|
@@ -0,0 +1,845 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @module b.frameworkSchema
|
|
4
|
+
* @nav Production
|
|
5
|
+
* @title Framework Schema
|
|
6
|
+
*
|
|
7
|
+
* @intro
|
|
8
|
+
* Framework-defined SQL schema (audit / sessions / api_keys / cache /
|
|
9
|
+
* break-glass / scheduler-ticks / pubsub / rate-limit / seeders /
|
|
10
|
+
* etc.) — declarative, migration-aware, and dialect-portable across
|
|
11
|
+
* Postgres and SQLite.
|
|
12
|
+
*
|
|
13
|
+
* When cluster mode is active the framework's audit chain, consent
|
|
14
|
+
* log, audit checkpoints, audit tip, scheduler ticks, rate-limit
|
|
15
|
+
* counters, pubsub fan-out, sessions, jobs, cache, seeders, and
|
|
16
|
+
* break-glass policies/grants live in the operator's external
|
|
17
|
+
* database (configured via `b.externalDb.init`). This module owns
|
|
18
|
+
* the DDL for those tables and exposes a single idempotent entry
|
|
19
|
+
* point — `b.frameworkSchema.ensureSchema` — that operators (or the
|
|
20
|
+
* framework's leader-acquire hook in a later release) call to create
|
|
21
|
+
* them at boot.
|
|
22
|
+
*
|
|
23
|
+
* External-db tables are prefixed with `_blamejs_` so they never
|
|
24
|
+
* collide with the operator's application tables:
|
|
25
|
+
*
|
|
26
|
+
* audit_log — local-SQLite name
|
|
27
|
+
* _blamejs_audit_log — external-db name
|
|
28
|
+
*
|
|
29
|
+
* `b.frameworkSchema.tableName` exposes the mapping so write-
|
|
30
|
+
* dispatch code (`cluster-storage.js`) can use a single name
|
|
31
|
+
* reference. `b.frameworkSchema.LOCAL_TO_EXTERNAL` is the frozen
|
|
32
|
+
* read-only mapping object.
|
|
33
|
+
*
|
|
34
|
+
* Append-only WORM enforcement: `ensureSchema` installs BEFORE
|
|
35
|
+
* DELETE / BEFORE UPDATE triggers on `audit_log`, `consent_log`,
|
|
36
|
+
* and `audit_checkpoints` — Postgres via plpgsql RAISE EXCEPTION
|
|
37
|
+
* functions, SQLite via `RAISE(ABORT, ...)`. Idempotent across
|
|
38
|
+
* reboots; any operator-applied DROP TRIGGER is restored on the
|
|
39
|
+
* next ensureSchema pass. MySQL is not currently supported —
|
|
40
|
+
* operators on MySQL must run on Postgres or SQLite until a MySQL
|
|
41
|
+
* adapter ships.
|
|
42
|
+
*
|
|
43
|
+
* @card
|
|
44
|
+
* Framework-defined SQL schema (audit / sessions / api_keys / cache / break-glass / scheduler-ticks / pubsub / rate-limit / seeders / etc.) — declarative, migration-aware, and dialect-portable across Postgres and SQLite.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
var externalDb = require("./external-db");
|
|
48
|
+
var { FrameworkError } = require("./framework-error");
|
|
49
|
+
|
|
50
|
+
class FrameworkSchemaError extends FrameworkError {
|
|
51
|
+
constructor(message, code) {
|
|
52
|
+
super(message);
|
|
53
|
+
this.name = "FrameworkSchemaError";
|
|
54
|
+
this.code = code || "framework-schema/invalid";
|
|
55
|
+
this.isFrameworkSchemaError = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Local-SQLite name → external-db name. The prefix protects against
|
|
60
|
+
// operator-app-table collision when the framework writes alongside
|
|
61
|
+
// app tables in the same database.
|
|
62
|
+
var LOCAL_TO_EXTERNAL = Object.freeze({
|
|
63
|
+
audit_log: "_blamejs_audit_log",
|
|
64
|
+
consent_log: "_blamejs_consent_log",
|
|
65
|
+
audit_checkpoints: "_blamejs_audit_checkpoints",
|
|
66
|
+
// No local equivalent — only exists in external-db. Coordinates with
|
|
67
|
+
// the cluster module's lease + fencing-token guard.
|
|
68
|
+
_blamejs_audit_tip: "_blamejs_audit_tip",
|
|
69
|
+
// Same shape and purpose as _blamejs_audit_tip but for consent_log.
|
|
70
|
+
// Single-row coordination state recording the tip of the consent
|
|
71
|
+
// chain so a new leader (or any boot) can detect external-db
|
|
72
|
+
// rollback against the consent chain too.
|
|
73
|
+
_blamejs_consent_tip: "_blamejs_consent_tip",
|
|
74
|
+
// Single-row anchor recording the boundary of the most recent
|
|
75
|
+
// audit-tools.purge(). After a purge, audit-chain.verifyChain reads
|
|
76
|
+
// this row to set its starting prevHash to lastPurgedRowHash and skip
|
|
77
|
+
// rows whose monotonicCounter ≤ lastPurgedCounter — without it the
|
|
78
|
+
// chain math breaks the moment the row referenced by survivors'
|
|
79
|
+
// prevHash is gone.
|
|
80
|
+
_blamejs_audit_purge_anchor: "_blamejs_audit_purge_anchor",
|
|
81
|
+
// Scheduler tick-claim table: closes the once-globally gap during
|
|
82
|
+
// cluster leader hand-offs (where two leaders briefly coexist) by
|
|
83
|
+
// making each fire claim a row before dispatching. UNIQUE on the
|
|
84
|
+
// composite tickKey (name + ":" + scheduledAtUnix) — loser of the
|
|
85
|
+
// INSERT race skips the tick.
|
|
86
|
+
_blamejs_scheduler_ticks: "_blamejs_scheduler_ticks",
|
|
87
|
+
// Rate-limit cluster-shared backend storage — fixed-window counter
|
|
88
|
+
// per key. The middleware atomically INSERT...ON CONFLICT increments
|
|
89
|
+
// count within the current window and rolls over when the window
|
|
90
|
+
// advances. Created in cluster mode by ensureSchema; mirrored in
|
|
91
|
+
// single-node SQLite by db.js's FRAMEWORK_SCHEMA so the same SQL
|
|
92
|
+
// works on either side of cluster-storage's dispatch.
|
|
93
|
+
_blamejs_rate_limit_counters: "_blamejs_rate_limit_counters",
|
|
94
|
+
// WebSocket channel-hub cluster fan-out — publish() writes a row,
|
|
95
|
+
// other nodes poll for new ids and dispatch to their local
|
|
96
|
+
// subscribers. Same dual-storage shape as sessions / jobs / etc.
|
|
97
|
+
_blamejs_pubsub_messages: "_blamejs_pubsub_messages",
|
|
98
|
+
_blamejs_api_encrypt_nonces: "_blamejs_api_encrypt_nonces",
|
|
99
|
+
// _blamejs_api_keys — operator-facing API-key registry table for the
|
|
100
|
+
// b.apiKey primitive. PRIMARY KEY is namespace-scoped id (so multiple
|
|
101
|
+
// namespaces can coexist in one table). Sealed columns: ownerId,
|
|
102
|
+
// scopes (JSON array), metadata (JSON object). Indexed lookup by
|
|
103
|
+
// ownerIdHash. The secret itself never lands here — only its
|
|
104
|
+
// SHA3-512 hash, constant-time-compared on verify.
|
|
105
|
+
_blamejs_api_keys: "_blamejs_api_keys",
|
|
106
|
+
// _blamejs_sessions exists in both local SQLite (single-node mode,
|
|
107
|
+
// created by db.js's FRAMEWORK_SCHEMA at boot) and external-db
|
|
108
|
+
// (cluster mode, created by ensureSchema below). Same name in both
|
|
109
|
+
// places — cluster-storage.execute routes the SQL to the right DB
|
|
110
|
+
// based on cluster.isClusterMode().
|
|
111
|
+
_blamejs_sessions: "_blamejs_sessions",
|
|
112
|
+
// _blamejs_jobs — same dual-storage pattern as sessions. The local-
|
|
113
|
+
// protocol queue (lib/queue-local.js) routes through cluster-storage
|
|
114
|
+
// so writes/reads land in the leader's external-db when cluster
|
|
115
|
+
// mode is active and any node can observe the queue state.
|
|
116
|
+
_blamejs_jobs: "_blamejs_jobs",
|
|
117
|
+
// _blamejs_cache — operator-facing cache primitive's cluster backend.
|
|
118
|
+
// Single shared table across all CacheInstance instances; the
|
|
119
|
+
// namespace prefix in cacheKey isolates instances. JSON-serialized
|
|
120
|
+
// values, BIGINT expiresAt for ttl. Indexed on expiresAt for the
|
|
121
|
+
// periodic prune query.
|
|
122
|
+
_blamejs_cache: "_blamejs_cache",
|
|
123
|
+
// _blamejs_cache_tags — junction table for tag-based cache
|
|
124
|
+
// invalidation on the cluster backend. Composite PK
|
|
125
|
+
// (cacheKey, tag) lets a single cacheKey carry many tags;
|
|
126
|
+
// index on tag makes invalidateTag(t) a single indexed scan.
|
|
127
|
+
_blamejs_cache_tags: "_blamejs_cache_tags",
|
|
128
|
+
// _blamejs_seeders — registry of applied seed files for b.seeders
|
|
129
|
+
// (lib/seeders.js). Composite PK (env, name) lets the same filename
|
|
130
|
+
// apply per env. Mirrors the local-SQLite shape in db.js
|
|
131
|
+
// FRAMEWORK_SCHEMA so cluster-storage.execute routes to either side.
|
|
132
|
+
_blamejs_seeders: "_blamejs_seeders",
|
|
133
|
+
_blamejs_seeders_lock: "_blamejs_seeders_lock",
|
|
134
|
+
// Break-glass policy + grant tables. Cluster-shared so a grant
|
|
135
|
+
// issued on node A is honored on node B; policies updated on the
|
|
136
|
+
// leader propagate to all followers via the shared table.
|
|
137
|
+
_blamejs_break_glass_policies: "_blamejs_break_glass_policies",
|
|
138
|
+
_blamejs_break_glass_grants: "_blamejs_break_glass_grants",
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @primitive b.frameworkSchema.tableName
|
|
143
|
+
* @signature b.frameworkSchema.tableName(localName)
|
|
144
|
+
* @since 0.5.0
|
|
145
|
+
* @status stable
|
|
146
|
+
* @related b.frameworkSchema.ensureSchema
|
|
147
|
+
*
|
|
148
|
+
* Translate a local-SQLite table name into the external-db name. The
|
|
149
|
+
* mapping is the frozen `LOCAL_TO_EXTERNAL` object — tables that already
|
|
150
|
+
* carry the `_blamejs_` prefix locally pass through unchanged. Cluster
|
|
151
|
+
* write-dispatch code uses this lookup so the same SQL works against
|
|
152
|
+
* both backends without per-call branching.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* b.frameworkSchema.tableName("audit_log");
|
|
156
|
+
* // → "_blamejs_audit_log"
|
|
157
|
+
*
|
|
158
|
+
* b.frameworkSchema.tableName("_blamejs_sessions");
|
|
159
|
+
* // → "_blamejs_sessions"
|
|
160
|
+
*
|
|
161
|
+
* b.frameworkSchema.tableName("operator_app_table");
|
|
162
|
+
* // → "operator_app_table"
|
|
163
|
+
*/
|
|
164
|
+
function tableName(localName) {
|
|
165
|
+
if (Object.prototype.hasOwnProperty.call(LOCAL_TO_EXTERNAL, localName)) {
|
|
166
|
+
return LOCAL_TO_EXTERNAL[localName];
|
|
167
|
+
}
|
|
168
|
+
// For framework-internal tables that are already prefixed locally
|
|
169
|
+
// (any name starting with _blamejs_), keep the same name.
|
|
170
|
+
return localName;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// ---- Dialect-specific column types ----
|
|
174
|
+
// TEXT and BOOLEAN are identical across both. INTEGER and BLOB diverge.
|
|
175
|
+
|
|
176
|
+
function _types(dialect) {
|
|
177
|
+
if (dialect === "postgres") {
|
|
178
|
+
return { INT: "BIGINT", BLOB: "BYTEA" };
|
|
179
|
+
}
|
|
180
|
+
if (dialect === "sqlite") {
|
|
181
|
+
return { INT: "INTEGER", BLOB: "BLOB" };
|
|
182
|
+
}
|
|
183
|
+
throw new FrameworkSchemaError(
|
|
184
|
+
"unsupported dialect '" + dialect + "' (postgres or sqlite)",
|
|
185
|
+
"framework-schema/unsupported-dialect"
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// ---- Table DDL builders ----
|
|
190
|
+
//
|
|
191
|
+
// Each builder returns { create: <CREATE TABLE SQL>, indexes: [<CREATE INDEX SQL>, ...] }.
|
|
192
|
+
// All DDL uses IF NOT EXISTS so re-running is idempotent.
|
|
193
|
+
|
|
194
|
+
function _auditLogDDL(dialect) {
|
|
195
|
+
var t = _types(dialect);
|
|
196
|
+
var name = LOCAL_TO_EXTERNAL.audit_log;
|
|
197
|
+
return {
|
|
198
|
+
create:
|
|
199
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
200
|
+
" _id TEXT PRIMARY KEY," +
|
|
201
|
+
" recordedAt " + t.INT + " NOT NULL," +
|
|
202
|
+
" monotonicCounter " + t.INT + " NOT NULL," +
|
|
203
|
+
" actorUserId TEXT," +
|
|
204
|
+
" actorUserIdHash TEXT," +
|
|
205
|
+
" actorIp TEXT," +
|
|
206
|
+
" actorUserAgent TEXT," +
|
|
207
|
+
" actorSessionId TEXT," +
|
|
208
|
+
" action TEXT NOT NULL," +
|
|
209
|
+
" resourceKind TEXT," +
|
|
210
|
+
" resourceId TEXT," +
|
|
211
|
+
" resourceIdHash TEXT," +
|
|
212
|
+
" outcome TEXT NOT NULL," +
|
|
213
|
+
" reason TEXT," +
|
|
214
|
+
" metadata TEXT," +
|
|
215
|
+
" requestId TEXT," +
|
|
216
|
+
" prevHash TEXT NOT NULL," +
|
|
217
|
+
" rowHash TEXT NOT NULL," +
|
|
218
|
+
" nonce " + t.BLOB + " NOT NULL," +
|
|
219
|
+
" fencingToken " + t.INT + " NOT NULL DEFAULT 0" +
|
|
220
|
+
")",
|
|
221
|
+
indexes: [
|
|
222
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_actorUserIdHash ON " + name + " (actorUserIdHash)",
|
|
223
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_resourceIdHash ON " + name + " (resourceIdHash)",
|
|
224
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_recordedAt ON " + name + " (recordedAt)",
|
|
225
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_action ON " + name + " (action)",
|
|
226
|
+
"CREATE UNIQUE INDEX IF NOT EXISTS idx_" + name + "_monotonic ON " + name + " (monotonicCounter)",
|
|
227
|
+
],
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function _consentLogDDL(dialect) {
|
|
232
|
+
var t = _types(dialect);
|
|
233
|
+
var name = LOCAL_TO_EXTERNAL.consent_log;
|
|
234
|
+
return {
|
|
235
|
+
create:
|
|
236
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
237
|
+
" _id TEXT PRIMARY KEY," +
|
|
238
|
+
" recordedAt " + t.INT + " NOT NULL," +
|
|
239
|
+
" monotonicCounter " + t.INT + " NOT NULL," +
|
|
240
|
+
" subjectId TEXT NOT NULL," +
|
|
241
|
+
" subjectIdHash TEXT NOT NULL," +
|
|
242
|
+
" purpose TEXT NOT NULL," +
|
|
243
|
+
" lawfulBasis TEXT NOT NULL," +
|
|
244
|
+
" action TEXT NOT NULL," +
|
|
245
|
+
" scope TEXT," +
|
|
246
|
+
" channel TEXT NOT NULL," +
|
|
247
|
+
" evidenceRef TEXT," +
|
|
248
|
+
" prevHash TEXT NOT NULL," +
|
|
249
|
+
" rowHash TEXT NOT NULL," +
|
|
250
|
+
" nonce " + t.BLOB + " NOT NULL," +
|
|
251
|
+
" fencingToken " + t.INT + " NOT NULL DEFAULT 0" +
|
|
252
|
+
")",
|
|
253
|
+
indexes: [
|
|
254
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_subjectIdHash ON " + name + " (subjectIdHash)",
|
|
255
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_recordedAt ON " + name + " (recordedAt)",
|
|
256
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_purpose ON " + name + " (purpose)",
|
|
257
|
+
"CREATE UNIQUE INDEX IF NOT EXISTS idx_" + name + "_monotonic ON " + name + " (monotonicCounter)",
|
|
258
|
+
],
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function _auditCheckpointsDDL(dialect) {
|
|
263
|
+
var t = _types(dialect);
|
|
264
|
+
var name = LOCAL_TO_EXTERNAL.audit_checkpoints;
|
|
265
|
+
return {
|
|
266
|
+
create:
|
|
267
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
268
|
+
" _id TEXT PRIMARY KEY," +
|
|
269
|
+
" createdAt " + t.INT + " NOT NULL," +
|
|
270
|
+
" atMonotonicCounter " + t.INT + " NOT NULL," +
|
|
271
|
+
" atRowHash TEXT NOT NULL," +
|
|
272
|
+
" signature " + t.BLOB + " NOT NULL," +
|
|
273
|
+
" publicKeyFingerprint TEXT NOT NULL," +
|
|
274
|
+
" fencingToken " + t.INT + " NOT NULL DEFAULT 0" +
|
|
275
|
+
")",
|
|
276
|
+
indexes: [
|
|
277
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_createdAt ON " + name + " (createdAt)",
|
|
278
|
+
"CREATE UNIQUE INDEX IF NOT EXISTS idx_" + name + "_chkpt_counter ON " + name + " (atMonotonicCounter)",
|
|
279
|
+
],
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// audit_tip is single-row coordination state for cluster-mode rollback
|
|
284
|
+
// detection. The CHECK constraint on fencingToken is the canonical
|
|
285
|
+
// fencing-token guard from the cluster spec — enforced at the DB
|
|
286
|
+
// level so a partitioned old leader can't insert rows behind a new
|
|
287
|
+
// leader's back regardless of application-layer state.
|
|
288
|
+
//
|
|
289
|
+
// Postgres and SQLite both honour CHECK constraints. The single-row
|
|
290
|
+
// invariant is enforced via PRIMARY KEY on the constant-valued
|
|
291
|
+
// `scope` column.
|
|
292
|
+
function _auditTipDDL(dialect) {
|
|
293
|
+
var t = _types(dialect);
|
|
294
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_audit_tip;
|
|
295
|
+
return {
|
|
296
|
+
create:
|
|
297
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
298
|
+
" scope TEXT PRIMARY KEY," +
|
|
299
|
+
" atMonotonicCounter " + t.INT + " NOT NULL," +
|
|
300
|
+
" rowHash TEXT," +
|
|
301
|
+
" signedAt TEXT," +
|
|
302
|
+
" fencingToken " + t.INT + " NOT NULL DEFAULT 0," +
|
|
303
|
+
" CHECK (scope = 'audit')" +
|
|
304
|
+
")",
|
|
305
|
+
indexes: [],
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// Same shape + invariants as audit_tip but for the consent chain.
|
|
310
|
+
// Updated on every consent.grant / consent.withdraw write so the boot-
|
|
311
|
+
// time rollback check can detect external-db rollback against the
|
|
312
|
+
// consent chain (previously only the audit chain had this protection).
|
|
313
|
+
function _consentTipDDL(dialect) {
|
|
314
|
+
var t = _types(dialect);
|
|
315
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_consent_tip;
|
|
316
|
+
return {
|
|
317
|
+
create:
|
|
318
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
319
|
+
" scope TEXT PRIMARY KEY," +
|
|
320
|
+
" atMonotonicCounter " + t.INT + " NOT NULL," +
|
|
321
|
+
" rowHash TEXT," +
|
|
322
|
+
" signedAt TEXT," +
|
|
323
|
+
" fencingToken " + t.INT + " NOT NULL DEFAULT 0," +
|
|
324
|
+
" CHECK (scope = 'consent')" +
|
|
325
|
+
")",
|
|
326
|
+
indexes: [],
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// _blamejs_audit_purge_anchor — single-row chain-origin anchor written
|
|
331
|
+
// by audit-tools.purge(). Holds the lastRowHash of the most recently
|
|
332
|
+
// purged range so verifyChain can ground its walk at the new origin.
|
|
333
|
+
// Single-row invariant via PRIMARY KEY on the constant-valued `scope`
|
|
334
|
+
// column (matches _blamejs_audit_tip pattern).
|
|
335
|
+
function _auditPurgeAnchorDDL(dialect) {
|
|
336
|
+
var t = _types(dialect);
|
|
337
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_audit_purge_anchor;
|
|
338
|
+
return {
|
|
339
|
+
create:
|
|
340
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
341
|
+
" scope TEXT PRIMARY KEY," +
|
|
342
|
+
" lastPurgedCounter " + t.INT + " NOT NULL," +
|
|
343
|
+
" lastPurgedRowHash TEXT NOT NULL," +
|
|
344
|
+
" archiveBundleId TEXT NOT NULL," +
|
|
345
|
+
" purgedAt " + t.INT + " NOT NULL," +
|
|
346
|
+
" CHECK (scope = 'audit')" +
|
|
347
|
+
")",
|
|
348
|
+
indexes: [],
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// _blamejs_scheduler_ticks — exactly-once tick-claim table. PRIMARY KEY
|
|
353
|
+
// on composite tickKey makes concurrent INSERTs race; the loser skips
|
|
354
|
+
// the tick. claimedBy carries the node id for diagnostic.
|
|
355
|
+
function _schedulerTicksDDL(dialect) {
|
|
356
|
+
var t = _types(dialect);
|
|
357
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_scheduler_ticks;
|
|
358
|
+
return {
|
|
359
|
+
create:
|
|
360
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
361
|
+
" tickKey TEXT PRIMARY KEY," +
|
|
362
|
+
" name TEXT NOT NULL," +
|
|
363
|
+
" scheduledAtUnix " + t.INT + " NOT NULL," +
|
|
364
|
+
" claimedAtUnix " + t.INT + " NOT NULL," +
|
|
365
|
+
" claimedBy TEXT" +
|
|
366
|
+
")",
|
|
367
|
+
indexes: [
|
|
368
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_scheduledAt ON " + name + " (scheduledAtUnix)",
|
|
369
|
+
],
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// _blamejs_rate_limit_counters — fixed-window counter table for the
|
|
374
|
+
// cluster-shared rate-limit backend. PRIMARY KEY on the rate-limit
|
|
375
|
+
// key lets INSERT...ON CONFLICT atomically increment within a window
|
|
376
|
+
// and roll over on window advance. The windowStart index supports
|
|
377
|
+
// retention sweeps of expired windows.
|
|
378
|
+
function _rateLimitCountersDDL(dialect) {
|
|
379
|
+
var t = _types(dialect);
|
|
380
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_rate_limit_counters;
|
|
381
|
+
return {
|
|
382
|
+
create:
|
|
383
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
384
|
+
" key TEXT PRIMARY KEY," +
|
|
385
|
+
" windowStart " + t.INT + " NOT NULL," +
|
|
386
|
+
" count " + t.INT + " NOT NULL DEFAULT 0" +
|
|
387
|
+
")",
|
|
388
|
+
indexes: [
|
|
389
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_windowStart ON " + name + " (windowStart)",
|
|
390
|
+
],
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// _blamejs_pubsub_messages — cluster fan-out for `b.pubsub` (the
|
|
395
|
+
// generalization of the previous WebSocket-specific table). publish()
|
|
396
|
+
// on any node writes a row; other nodes poll for new ids past their
|
|
397
|
+
// last seen and dispatch to local subscribers. Auto-incrementing id
|
|
398
|
+
// is essential — postgres needs BIGSERIAL, sqlite gets INTEGER
|
|
399
|
+
// PRIMARY KEY (which auto-increments implicitly).
|
|
400
|
+
function _pubsubMessagesDDL(dialect) {
|
|
401
|
+
var t = _types(dialect);
|
|
402
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_pubsub_messages;
|
|
403
|
+
var idCol = dialect === "postgres"
|
|
404
|
+
? "id BIGSERIAL PRIMARY KEY"
|
|
405
|
+
: "id INTEGER PRIMARY KEY AUTOINCREMENT";
|
|
406
|
+
return {
|
|
407
|
+
create:
|
|
408
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
409
|
+
" " + idCol + "," +
|
|
410
|
+
" topic TEXT NOT NULL," +
|
|
411
|
+
" payload TEXT NOT NULL," +
|
|
412
|
+
" publishedAt " + t.INT + " NOT NULL," +
|
|
413
|
+
" publishedBy TEXT NOT NULL" +
|
|
414
|
+
")",
|
|
415
|
+
indexes: [
|
|
416
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_publishedAt ON " + name + " (publishedAt)",
|
|
417
|
+
],
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
function _apiEncryptNoncesDDL(dialect) {
|
|
422
|
+
var t = _types(dialect);
|
|
423
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_api_encrypt_nonces;
|
|
424
|
+
return {
|
|
425
|
+
create:
|
|
426
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
427
|
+
" nonceHash TEXT PRIMARY KEY," +
|
|
428
|
+
" expireAt " + t.INT + " NOT NULL" +
|
|
429
|
+
")",
|
|
430
|
+
indexes: [
|
|
431
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_expireAt ON " + name + " (expireAt)",
|
|
432
|
+
],
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// _blamejs_api_keys — operator-facing API-key registry. PRIMARY KEY is
|
|
437
|
+
// the namespace-scoped id ("<namespace>:<idHex>"); ownerId/scopes/metadata
|
|
438
|
+
// are sealed by cryptoField. ownerIdHash supports indexed listForOwner
|
|
439
|
+
// lookups; expiresAt index supports purgeExpired sweeps.
|
|
440
|
+
function _apiKeysDDL(dialect) {
|
|
441
|
+
var t = _types(dialect);
|
|
442
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_api_keys;
|
|
443
|
+
return {
|
|
444
|
+
create:
|
|
445
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
446
|
+
" id TEXT PRIMARY KEY," +
|
|
447
|
+
" namespace TEXT NOT NULL," +
|
|
448
|
+
" ownerId TEXT NOT NULL," +
|
|
449
|
+
" ownerIdHash TEXT NOT NULL," +
|
|
450
|
+
" secretHash TEXT NOT NULL," +
|
|
451
|
+
" secondarySecretHash TEXT," +
|
|
452
|
+
" secondaryExpiresAt " + t.INT + "," +
|
|
453
|
+
" scopes TEXT," +
|
|
454
|
+
" metadata TEXT," +
|
|
455
|
+
" createdAt " + t.INT + " NOT NULL," +
|
|
456
|
+
" expiresAt " + t.INT + "," +
|
|
457
|
+
" revokedAt " + t.INT + "," +
|
|
458
|
+
" lastUsedAt " + t.INT + "," +
|
|
459
|
+
" prefix TEXT NOT NULL" +
|
|
460
|
+
")",
|
|
461
|
+
indexes: [
|
|
462
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_ownerIdHash ON " + name + " (ownerIdHash)",
|
|
463
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_namespace_owner ON " + name + " (namespace, ownerIdHash)",
|
|
464
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_expiresAt ON " + name + " (expiresAt)",
|
|
465
|
+
],
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
// _blamejs_sessions — DB-backed session store. Mirrors the local-SQLite
|
|
470
|
+
// schema in db.js's FRAMEWORK_SCHEMA so single-node and cluster-mode
|
|
471
|
+
// behavior is identical at the column level. Sealed columns (userId,
|
|
472
|
+
// data) are stored vault-sealed; sidHash is the PRIMARY KEY (the raw
|
|
473
|
+
// session id never lands here).
|
|
474
|
+
function _sessionsDDL(dialect) {
|
|
475
|
+
var t = _types(dialect);
|
|
476
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_sessions;
|
|
477
|
+
return {
|
|
478
|
+
create:
|
|
479
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
480
|
+
" sidHash TEXT PRIMARY KEY," +
|
|
481
|
+
" userId TEXT NOT NULL," +
|
|
482
|
+
" userIdHash TEXT NOT NULL," +
|
|
483
|
+
" data TEXT," +
|
|
484
|
+
" createdAt " + t.INT + " NOT NULL," +
|
|
485
|
+
" expiresAt " + t.INT + " NOT NULL," +
|
|
486
|
+
" lastActivity " + t.INT + " NOT NULL" +
|
|
487
|
+
")",
|
|
488
|
+
indexes: [
|
|
489
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_userIdHash ON " + name + " (userIdHash)",
|
|
490
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_expiresAt ON " + name + " (expiresAt)",
|
|
491
|
+
],
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
// _blamejs_jobs — local-protocol queue jobs. Mirrors db.js's
|
|
496
|
+
// FRAMEWORK_SCHEMA for the same table; sealed columns (payload,
|
|
497
|
+
// lastError) are stored vault-sealed. Indexes target the lease
|
|
498
|
+
// hot-path (queueName + status + availableAt) and lease-expiry
|
|
499
|
+
// sweep (leaseExpiresAt).
|
|
500
|
+
function _jobsDDL(dialect) {
|
|
501
|
+
var t = _types(dialect);
|
|
502
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_jobs;
|
|
503
|
+
return {
|
|
504
|
+
create:
|
|
505
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
506
|
+
" _id TEXT PRIMARY KEY," +
|
|
507
|
+
" queueName TEXT NOT NULL," +
|
|
508
|
+
" payload TEXT," +
|
|
509
|
+
" status TEXT NOT NULL," +
|
|
510
|
+
" enqueuedAt " + t.INT + " NOT NULL," +
|
|
511
|
+
" availableAt " + t.INT + " NOT NULL," +
|
|
512
|
+
" leasedAt " + t.INT + "," +
|
|
513
|
+
" leaseExpiresAt " + t.INT + "," +
|
|
514
|
+
" attempts " + t.INT + " NOT NULL DEFAULT 0," +
|
|
515
|
+
" maxAttempts " + t.INT + " NOT NULL DEFAULT 5," +
|
|
516
|
+
" lastError TEXT," +
|
|
517
|
+
" finishedAt " + t.INT + "," +
|
|
518
|
+
" traceId TEXT," +
|
|
519
|
+
" classification TEXT," +
|
|
520
|
+
" priority " + t.INT + " NOT NULL DEFAULT 0," +
|
|
521
|
+
" repeatCron TEXT," +
|
|
522
|
+
" repeatTimezone TEXT," +
|
|
523
|
+
" flowId TEXT," +
|
|
524
|
+
" flowChildName TEXT," +
|
|
525
|
+
" dependsOn TEXT" +
|
|
526
|
+
")",
|
|
527
|
+
indexes: [
|
|
528
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_lease ON " + name + " (queueName, status, availableAt)",
|
|
529
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_priority ON " + name + " (queueName, status, priority, availableAt)",
|
|
530
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_flow ON " + name + " (flowId)",
|
|
531
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_leaseExpiresAt ON " + name + " (leaseExpiresAt)",
|
|
532
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_finishedAt ON " + name + " (finishedAt)",
|
|
533
|
+
],
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
// _blamejs_seeders — registry of applied seed files for the b.seeders
|
|
538
|
+
// primitive (lib/seeders.js). Composite PK (env, name) so the same
|
|
539
|
+
// filename can apply per env without collision. rerunnable=1 entries
|
|
540
|
+
// have their appliedAt updated in place on each run; non-rerunnable
|
|
541
|
+
// entries are insert-once.
|
|
542
|
+
function _seedersDDL(dialect) {
|
|
543
|
+
var t = _types(dialect);
|
|
544
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_seeders;
|
|
545
|
+
return {
|
|
546
|
+
create:
|
|
547
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
548
|
+
" env TEXT NOT NULL," +
|
|
549
|
+
" name TEXT NOT NULL," +
|
|
550
|
+
" description TEXT," +
|
|
551
|
+
" appliedAt TEXT NOT NULL," +
|
|
552
|
+
" rerunnable " + t.INT + " NOT NULL DEFAULT 0," +
|
|
553
|
+
" PRIMARY KEY (env, name)" +
|
|
554
|
+
")",
|
|
555
|
+
indexes: [],
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
// _blamejs_seeders_lock — single-row advisory lock matching the
|
|
560
|
+
// _blamejs_migrations_lock pattern. CHECK enforces single row.
|
|
561
|
+
function _seedersLockDDL(dialect) {
|
|
562
|
+
var t = _types(dialect);
|
|
563
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_seeders_lock;
|
|
564
|
+
return {
|
|
565
|
+
create:
|
|
566
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
567
|
+
" scope TEXT PRIMARY KEY CHECK (scope = 'lock')," +
|
|
568
|
+
" lockedAt " + t.INT + " NOT NULL," +
|
|
569
|
+
" lockedBy TEXT NOT NULL" +
|
|
570
|
+
")",
|
|
571
|
+
indexes: [],
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
// _blamejs_cache — operator-facing cache primitive's cluster backend
|
|
576
|
+
// (lib/cache.js). PRIMARY KEY is the composite "<namespace>:<key>" so a
|
|
577
|
+
// single shared table serves every CacheInstance regardless of namespace
|
|
578
|
+
// without per-namespace table proliferation. valueJson is the
|
|
579
|
+
// JSON-serialized stored value; expiresAt is the unix-ms TTL boundary
|
|
580
|
+
// (Number.MAX_SAFE_INTEGER for never-expiring entries). Indexed on
|
|
581
|
+
// expiresAt for the periodic prune query.
|
|
582
|
+
function _cacheDDL(dialect) {
|
|
583
|
+
var t = _types(dialect);
|
|
584
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_cache;
|
|
585
|
+
return {
|
|
586
|
+
create:
|
|
587
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
588
|
+
" cacheKey TEXT PRIMARY KEY," +
|
|
589
|
+
" valueJson TEXT NOT NULL," +
|
|
590
|
+
" expiresAt " + t.INT + " NOT NULL," +
|
|
591
|
+
" updatedAt " + t.INT + " NOT NULL" +
|
|
592
|
+
")",
|
|
593
|
+
indexes: [
|
|
594
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_expiresAt ON " + name + " (expiresAt)",
|
|
595
|
+
],
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
// _blamejs_cache_tags — tag→cacheKey junction for cluster-backend
|
|
600
|
+
// tag invalidation. b.cache.invalidateTag(t) finds matching cacheKeys
|
|
601
|
+
// via the indexed `tag` column, deletes them from _blamejs_cache, and
|
|
602
|
+
// drops the junction rows. Cleared on cache.clear() and del() too.
|
|
603
|
+
function _cacheTagsDDL(_dialect) {
|
|
604
|
+
// Junction table is TEXT-only — no dialect-specific INT / BLOB needed.
|
|
605
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_cache_tags;
|
|
606
|
+
return {
|
|
607
|
+
create:
|
|
608
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
609
|
+
" cacheKey TEXT NOT NULL," +
|
|
610
|
+
" tag TEXT NOT NULL," +
|
|
611
|
+
" PRIMARY KEY (cacheKey, tag)" +
|
|
612
|
+
")",
|
|
613
|
+
indexes: [
|
|
614
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_tag ON " + name + " (tag)",
|
|
615
|
+
],
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
// _blamejs_break_glass_policies — column-level break-glass policy
|
|
620
|
+
// registry. One row per (table) declares which columns are
|
|
621
|
+
// glass-locked + the operator's grant rules. Sealed columns hide
|
|
622
|
+
// column-list / factor-list / bypass config from cleartext browsing.
|
|
623
|
+
function _breakGlassPoliciesDDL(dialect) {
|
|
624
|
+
var t = _types(dialect);
|
|
625
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_break_glass_policies;
|
|
626
|
+
return {
|
|
627
|
+
create:
|
|
628
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
629
|
+
" tableName TEXT PRIMARY KEY," +
|
|
630
|
+
" columnsJson TEXT NOT NULL," +
|
|
631
|
+
" factorsJson TEXT NOT NULL," +
|
|
632
|
+
" cryptographic " + t.INT + " NOT NULL DEFAULT 0," +
|
|
633
|
+
" grantTtlMs " + t.INT + " NOT NULL," +
|
|
634
|
+
" maxRowsPerGrant " + t.INT + " NOT NULL DEFAULT 1," +
|
|
635
|
+
" reasonRequired " + t.INT + " NOT NULL DEFAULT 1," +
|
|
636
|
+
" reasonMinLength " + t.INT + " NOT NULL DEFAULT 12," +
|
|
637
|
+
" pinIp " + t.INT + " NOT NULL DEFAULT 1," +
|
|
638
|
+
" sessionPin " + t.INT + " NOT NULL DEFAULT 1," +
|
|
639
|
+
" onLockedAccess TEXT NOT NULL DEFAULT 'throw'," +
|
|
640
|
+
" requireScope TEXT," +
|
|
641
|
+
" serviceAccountBypassJson TEXT," +
|
|
642
|
+
" dekSealed TEXT," +
|
|
643
|
+
" auditReasonStorage TEXT NOT NULL DEFAULT 'cleartext'," +
|
|
644
|
+
" updatedAt " + t.INT + " NOT NULL" +
|
|
645
|
+
")",
|
|
646
|
+
indexes: [],
|
|
647
|
+
};
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
// _blamejs_break_glass_grants — issued grants. One row per successful
|
|
651
|
+
// step-up. Default maxRowsPerGrant=1 enforces row-by-row auth per the
|
|
652
|
+
// operator-confirmed shape ("each row access = its own grant").
|
|
653
|
+
function _breakGlassGrantsDDL(dialect) {
|
|
654
|
+
var t = _types(dialect);
|
|
655
|
+
var name = LOCAL_TO_EXTERNAL._blamejs_break_glass_grants;
|
|
656
|
+
return {
|
|
657
|
+
create:
|
|
658
|
+
"CREATE TABLE IF NOT EXISTS " + name + " (" +
|
|
659
|
+
" _id TEXT PRIMARY KEY," +
|
|
660
|
+
" issuedToActorId TEXT NOT NULL," +
|
|
661
|
+
" issuedToActorHash TEXT NOT NULL," +
|
|
662
|
+
" factorType TEXT NOT NULL," +
|
|
663
|
+
" reasonSealed TEXT," +
|
|
664
|
+
" scopeTable TEXT NOT NULL," +
|
|
665
|
+
" scopeColumnsJson TEXT NOT NULL," +
|
|
666
|
+
" issuedAt " + t.INT + " NOT NULL," +
|
|
667
|
+
" expiresAt " + t.INT + " NOT NULL," +
|
|
668
|
+
" maxRowsPerGrant " + t.INT + " NOT NULL," +
|
|
669
|
+
" rowsConsumed " + t.INT + " NOT NULL DEFAULT 0," +
|
|
670
|
+
" revokedAt " + t.INT + "," +
|
|
671
|
+
" sessionId TEXT," +
|
|
672
|
+
" ip TEXT," +
|
|
673
|
+
" kwGrantHalf TEXT" +
|
|
674
|
+
")",
|
|
675
|
+
indexes: [
|
|
676
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_actor ON " + name + " (issuedToActorHash)",
|
|
677
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_table ON " + name + " (scopeTable)",
|
|
678
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_expires ON " + name + " (expiresAt)",
|
|
679
|
+
"CREATE INDEX IF NOT EXISTS idx_" + name + "_revoked ON " + name + " (revokedAt)",
|
|
680
|
+
],
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
// ---- ensureSchema ----
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* @primitive b.frameworkSchema.ensureSchema
|
|
688
|
+
* @signature b.frameworkSchema.ensureSchema(opts)
|
|
689
|
+
* @since 0.5.0
|
|
690
|
+
* @status stable
|
|
691
|
+
* @related b.frameworkSchema.tableName, b.externalDb.init, b.audit
|
|
692
|
+
*
|
|
693
|
+
* Create every framework-owned table + index in the operator's
|
|
694
|
+
* external database, then install append-only WORM triggers on
|
|
695
|
+
* `_blamejs_audit_log`, `_blamejs_consent_log`, and
|
|
696
|
+
* `_blamejs_audit_checkpoints`. Idempotent: every DDL uses
|
|
697
|
+
* `IF NOT EXISTS` and re-running is safe across reboots.
|
|
698
|
+
*
|
|
699
|
+
* Returns `{ tables }` with the set of CREATE TABLE names emitted
|
|
700
|
+
* so the operator can confirm the expected surface landed.
|
|
701
|
+
*
|
|
702
|
+
* Throws `FrameworkSchemaError("framework-schema/invalid-config")`
|
|
703
|
+
* when `externalDbBackend` is missing and
|
|
704
|
+
* `FrameworkSchemaError("framework-schema/unsupported-dialect")`
|
|
705
|
+
* when `dialect` is anything other than `postgres` or `sqlite`.
|
|
706
|
+
*
|
|
707
|
+
* @opts
|
|
708
|
+
* externalDbBackend: string, // backend name registered with b.externalDb (required)
|
|
709
|
+
* dialect: "postgres"|"sqlite", // default: "postgres"
|
|
710
|
+
*
|
|
711
|
+
* @example
|
|
712
|
+
* try {
|
|
713
|
+
* var report = await b.frameworkSchema.ensureSchema({
|
|
714
|
+
* externalDbBackend: "primary",
|
|
715
|
+
* dialect: "postgres",
|
|
716
|
+
* });
|
|
717
|
+
* report.tables[0]; // → "_blamejs_audit_log"
|
|
718
|
+
* } catch (e) {
|
|
719
|
+
* e.code; // → "framework-schema/unsupported-dialect"
|
|
720
|
+
* }
|
|
721
|
+
*/
|
|
722
|
+
async function ensureSchema(opts) {
|
|
723
|
+
if (!opts || !opts.externalDbBackend) {
|
|
724
|
+
throw new FrameworkSchemaError(
|
|
725
|
+
"ensureSchema requires { externalDbBackend: <name> }",
|
|
726
|
+
"framework-schema/invalid-config"
|
|
727
|
+
);
|
|
728
|
+
}
|
|
729
|
+
var dialect = (opts.dialect || "postgres").toLowerCase();
|
|
730
|
+
if (dialect !== "postgres" && dialect !== "sqlite") {
|
|
731
|
+
throw new FrameworkSchemaError(
|
|
732
|
+
"unsupported dialect '" + dialect + "' (postgres or sqlite)",
|
|
733
|
+
"framework-schema/unsupported-dialect"
|
|
734
|
+
);
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
var ddls = [
|
|
738
|
+
_auditLogDDL(dialect),
|
|
739
|
+
_consentLogDDL(dialect),
|
|
740
|
+
_auditCheckpointsDDL(dialect),
|
|
741
|
+
_auditTipDDL(dialect),
|
|
742
|
+
_consentTipDDL(dialect),
|
|
743
|
+
_auditPurgeAnchorDDL(dialect),
|
|
744
|
+
_schedulerTicksDDL(dialect),
|
|
745
|
+
_rateLimitCountersDDL(dialect),
|
|
746
|
+
_pubsubMessagesDDL(dialect),
|
|
747
|
+
_apiEncryptNoncesDDL(dialect),
|
|
748
|
+
_apiKeysDDL(dialect),
|
|
749
|
+
_sessionsDDL(dialect),
|
|
750
|
+
_jobsDDL(dialect),
|
|
751
|
+
_cacheDDL(dialect),
|
|
752
|
+
_cacheTagsDDL(dialect),
|
|
753
|
+
_seedersDDL(dialect),
|
|
754
|
+
_seedersLockDDL(dialect),
|
|
755
|
+
_breakGlassPoliciesDDL(dialect),
|
|
756
|
+
_breakGlassGrantsDDL(dialect),
|
|
757
|
+
];
|
|
758
|
+
|
|
759
|
+
var created = [];
|
|
760
|
+
for (var i = 0; i < ddls.length; i++) {
|
|
761
|
+
var d = ddls[i];
|
|
762
|
+
await externalDb.query(d.create, [], { backend: opts.externalDbBackend });
|
|
763
|
+
for (var j = 0; j < d.indexes.length; j++) {
|
|
764
|
+
await externalDb.query(d.indexes[j], [], { backend: opts.externalDbBackend });
|
|
765
|
+
}
|
|
766
|
+
created.push(d.create.match(/CREATE TABLE IF NOT EXISTS\s+(\S+)/)[1]);
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
// D-M11 — append-only WORM enforcement on audit_log / consent_log /
|
|
770
|
+
// audit_checkpoints in cluster mode. Local-SQLite path already
|
|
771
|
+
// installs CREATE TRIGGER IF NOT EXISTS via lib/db.js's
|
|
772
|
+
// _installAppendOnlyTriggers; Postgres needs equivalent rules
|
|
773
|
+
// (BEFORE-row triggers raising an exception) so a privileged
|
|
774
|
+
// cluster-side actor with the framework role can't DELETE / UPDATE
|
|
775
|
+
// a row out from under the chain. The chain integrity check still
|
|
776
|
+
// catches it at next boot, but the trigger is the in-band defense.
|
|
777
|
+
await _installWormTriggers(opts.externalDbBackend, dialect);
|
|
778
|
+
|
|
779
|
+
return { tables: created };
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
// D-M11 — WORM enforcement helper. Idempotent: rebuilding triggers
|
|
783
|
+
// per boot is cheap and any operator-applied DROP TRIGGER is restored
|
|
784
|
+
// at the next ensureSchema pass.
|
|
785
|
+
async function _installWormTriggers(backend, dialect) {
|
|
786
|
+
var wormTables = [
|
|
787
|
+
LOCAL_TO_EXTERNAL.audit_log,
|
|
788
|
+
LOCAL_TO_EXTERNAL.consent_log,
|
|
789
|
+
LOCAL_TO_EXTERNAL.audit_checkpoints,
|
|
790
|
+
];
|
|
791
|
+
for (var i = 0; i < wormTables.length; i++) {
|
|
792
|
+
var t = wormTables[i];
|
|
793
|
+
if (dialect === "postgres") {
|
|
794
|
+
// Per-table trigger function. Postgres rejects the statement
|
|
795
|
+
// with a SQLSTATE that bubbles up as a query-failure audit row.
|
|
796
|
+
var fnName = t + "_worm_block";
|
|
797
|
+
await externalDb.query(
|
|
798
|
+
"CREATE OR REPLACE FUNCTION " + fnName + "() RETURNS trigger AS $$ " +
|
|
799
|
+
"BEGIN RAISE EXCEPTION '" + t + " is append-only — % prohibited', TG_OP " +
|
|
800
|
+
"USING ERRCODE = '0A000'; END; $$ LANGUAGE plpgsql",
|
|
801
|
+
[], { backend: backend }
|
|
802
|
+
);
|
|
803
|
+
await externalDb.query(
|
|
804
|
+
"DROP TRIGGER IF EXISTS no_delete_" + t + " ON " + t,
|
|
805
|
+
[], { backend: backend }
|
|
806
|
+
);
|
|
807
|
+
await externalDb.query(
|
|
808
|
+
"CREATE TRIGGER no_delete_" + t + " BEFORE DELETE ON " + t +
|
|
809
|
+
" FOR EACH ROW EXECUTE FUNCTION " + fnName + "()",
|
|
810
|
+
[], { backend: backend }
|
|
811
|
+
);
|
|
812
|
+
await externalDb.query(
|
|
813
|
+
"DROP TRIGGER IF EXISTS no_update_" + t + " ON " + t,
|
|
814
|
+
[], { backend: backend }
|
|
815
|
+
);
|
|
816
|
+
await externalDb.query(
|
|
817
|
+
"CREATE TRIGGER no_update_" + t + " BEFORE UPDATE ON " + t +
|
|
818
|
+
" FOR EACH ROW EXECUTE FUNCTION " + fnName + "()",
|
|
819
|
+
[], { backend: backend }
|
|
820
|
+
);
|
|
821
|
+
} else {
|
|
822
|
+
// SQLite cluster path. CREATE TRIGGER IF NOT EXISTS matches the
|
|
823
|
+
// local-SQLite shape installed by lib/db.js.
|
|
824
|
+
await externalDb.query(
|
|
825
|
+
'CREATE TRIGGER IF NOT EXISTS "no_delete_' + t + '" ' +
|
|
826
|
+
'BEFORE DELETE ON "' + t + '" ' +
|
|
827
|
+
"BEGIN SELECT RAISE(ABORT, '" + t + " is append-only — DELETE prohibited'); END",
|
|
828
|
+
[], { backend: backend }
|
|
829
|
+
);
|
|
830
|
+
await externalDb.query(
|
|
831
|
+
'CREATE TRIGGER IF NOT EXISTS "no_update_' + t + '" ' +
|
|
832
|
+
'BEFORE UPDATE ON "' + t + '" ' +
|
|
833
|
+
"BEGIN SELECT RAISE(ABORT, '" + t + " is append-only — UPDATE prohibited'); END",
|
|
834
|
+
[], { backend: backend }
|
|
835
|
+
);
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
module.exports = {
|
|
841
|
+
ensureSchema: ensureSchema,
|
|
842
|
+
tableName: tableName,
|
|
843
|
+
LOCAL_TO_EXTERNAL: LOCAL_TO_EXTERNAL,
|
|
844
|
+
FrameworkSchemaError: FrameworkSchemaError,
|
|
845
|
+
};
|