@blamejs/blamejs-shop 0.5.12 → 0.5.13
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 +2 -0
- package/lib/asset-manifest.json +1 -1
- package/lib/vendor/MANIFEST.json +632 -416
- package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +21 -10
- package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +30 -9
- package/lib/vendor/blamejs/.github/dependabot.yml +8 -0
- package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +3 -3
- package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +7 -2
- package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +7 -2
- package/lib/vendor/blamejs/.github/workflows/ci.yml +21 -21
- package/lib/vendor/blamejs/.github/workflows/codeql.yml +3 -3
- package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +4 -4
- package/lib/vendor/blamejs/.github/workflows/release-container.yml +7 -7
- package/lib/vendor/blamejs/.github/workflows/scorecard.yml +3 -3
- package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +1 -1
- package/lib/vendor/blamejs/.gitignore +2 -0
- package/lib/vendor/blamejs/CHANGELOG.md +122 -0
- package/lib/vendor/blamejs/NOTICE +26 -1
- package/lib/vendor/blamejs/SECURITY.md +1 -1
- package/lib/vendor/blamejs/api-snapshot.json +207 -5
- package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +29 -0
- package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +1 -0
- package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +31 -0
- package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +109 -0
- package/lib/vendor/blamejs/examples/wiki/nginx.conf +106 -0
- package/lib/vendor/blamejs/examples/wiki/package-lock.json +1 -1
- package/lib/vendor/blamejs/examples/wiki/test/e2e.js +92 -0
- package/lib/vendor/blamejs/fuzz/asn1-der.fuzz.js +28 -0
- package/lib/vendor/blamejs/fuzz/cms-codec.fuzz.js +17 -0
- package/lib/vendor/blamejs/fuzz/link-header.fuzz.js +18 -0
- package/lib/vendor/blamejs/index.js +6 -0
- package/lib/vendor/blamejs/lib/a2a.js +4 -4
- package/lib/vendor/blamejs/lib/agent-idempotency.js +18 -2
- package/lib/vendor/blamejs/lib/agent-saga.js +36 -8
- package/lib/vendor/blamejs/lib/agent-snapshot.js +63 -6
- package/lib/vendor/blamejs/lib/app-shutdown.js +23 -20
- package/lib/vendor/blamejs/lib/archive-read.js +8 -0
- package/lib/vendor/blamejs/lib/archive-tar.js +12 -2
- package/lib/vendor/blamejs/lib/arg-parser.js +49 -5
- package/lib/vendor/blamejs/lib/asn1-der.js +12 -0
- package/lib/vendor/blamejs/lib/audit-sign.js +47 -1
- package/lib/vendor/blamejs/lib/audit.js +71 -8
- package/lib/vendor/blamejs/lib/auth/ciba.js +14 -2
- package/lib/vendor/blamejs/lib/auth/fido-mds3.js +58 -47
- package/lib/vendor/blamejs/lib/auth/jwt.js +34 -0
- package/lib/vendor/blamejs/lib/auth/oauth.js +90 -13
- package/lib/vendor/blamejs/lib/auth/oid4vci.js +20 -17
- package/lib/vendor/blamejs/lib/auth/openid-federation.js +214 -23
- package/lib/vendor/blamejs/lib/auth/saml.js +38 -20
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +10 -4
- package/lib/vendor/blamejs/lib/backup/bundle.js +13 -3
- package/lib/vendor/blamejs/lib/backup/index.js +16 -5
- package/lib/vendor/blamejs/lib/backup/manifest.js +18 -5
- package/lib/vendor/blamejs/lib/base32.js +21 -0
- package/lib/vendor/blamejs/lib/break-glass.js +19 -10
- package/lib/vendor/blamejs/lib/bundler.js +5 -1
- package/lib/vendor/blamejs/lib/cache-status.js +3 -7
- package/lib/vendor/blamejs/lib/calendar.js +21 -1
- package/lib/vendor/blamejs/lib/cbor.js +12 -1
- package/lib/vendor/blamejs/lib/cert.js +29 -11
- package/lib/vendor/blamejs/lib/cli.js +94 -24
- package/lib/vendor/blamejs/lib/cloud-events.js +2 -2
- package/lib/vendor/blamejs/lib/cluster-provider-db.js +13 -3
- package/lib/vendor/blamejs/lib/codepoint-class.js +85 -0
- package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +8 -4
- package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +19 -4
- package/lib/vendor/blamejs/lib/compliance-ai-act.js +6 -8
- package/lib/vendor/blamejs/lib/content-credentials.js +1 -1
- package/lib/vendor/blamejs/lib/content-digest.js +2 -1
- package/lib/vendor/blamejs/lib/cookies.js +13 -3
- package/lib/vendor/blamejs/lib/cose.js +31 -16
- package/lib/vendor/blamejs/lib/crypto-field.js +32 -0
- package/lib/vendor/blamejs/lib/crypto-oprf.js +11 -2
- package/lib/vendor/blamejs/lib/crypto-xwing.js +22 -4
- package/lib/vendor/blamejs/lib/crypto.js +314 -19
- package/lib/vendor/blamejs/lib/csp.js +11 -3
- package/lib/vendor/blamejs/lib/daemon.js +270 -24
- package/lib/vendor/blamejs/lib/dark-patterns.js +5 -2
- package/lib/vendor/blamejs/lib/db-declare-view.js +2 -2
- package/lib/vendor/blamejs/lib/db-query.js +34 -7
- package/lib/vendor/blamejs/lib/db.js +18 -6
- package/lib/vendor/blamejs/lib/dbsc.js +17 -0
- package/lib/vendor/blamejs/lib/dev.js +21 -2
- package/lib/vendor/blamejs/lib/dsr.js +157 -102
- package/lib/vendor/blamejs/lib/external-db.js +41 -2
- package/lib/vendor/blamejs/lib/file-upload.js +25 -7
- package/lib/vendor/blamejs/lib/flag-providers.js +27 -15
- package/lib/vendor/blamejs/lib/forms.js +113 -27
- package/lib/vendor/blamejs/lib/gate-contract.js +23 -10
- package/lib/vendor/blamejs/lib/gdpr-ropa.js +8 -1
- package/lib/vendor/blamejs/lib/guard-agent-registry.js +1 -1
- package/lib/vendor/blamejs/lib/guard-archive.js +2 -2
- package/lib/vendor/blamejs/lib/guard-cidr.js +27 -1
- package/lib/vendor/blamejs/lib/guard-graphql.js +30 -11
- package/lib/vendor/blamejs/lib/guard-html.js +26 -53
- package/lib/vendor/blamejs/lib/guard-image.js +24 -5
- package/lib/vendor/blamejs/lib/guard-imap-command.js +10 -2
- package/lib/vendor/blamejs/lib/guard-jmap.js +19 -3
- package/lib/vendor/blamejs/lib/guard-jwt.js +18 -2
- package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +2 -2
- package/lib/vendor/blamejs/lib/guard-managesieve-command.js +10 -2
- package/lib/vendor/blamejs/lib/guard-markdown.js +11 -24
- package/lib/vendor/blamejs/lib/guard-pdf.js +18 -2
- package/lib/vendor/blamejs/lib/guard-pop3-command.js +10 -2
- package/lib/vendor/blamejs/lib/guard-regex.js +8 -5
- package/lib/vendor/blamejs/lib/guard-svg.js +31 -32
- package/lib/vendor/blamejs/lib/guard-time.js +1 -1
- package/lib/vendor/blamejs/lib/guard-uuid.js +2 -2
- package/lib/vendor/blamejs/lib/html-balance.js +3 -3
- package/lib/vendor/blamejs/lib/http-client-cache.js +82 -4
- package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +16 -1
- package/lib/vendor/blamejs/lib/http-client.js +39 -7
- package/lib/vendor/blamejs/lib/http-message-signature.js +35 -1
- package/lib/vendor/blamejs/lib/i18n-messageformat.js +31 -6
- package/lib/vendor/blamejs/lib/i18n.js +35 -21
- package/lib/vendor/blamejs/lib/incident-report.js +8 -1
- package/lib/vendor/blamejs/lib/ip-utils.js +11 -1
- package/lib/vendor/blamejs/lib/json-path.js +23 -1
- package/lib/vendor/blamejs/lib/jwk.js +20 -3
- package/lib/vendor/blamejs/lib/link-header.js +2 -1
- package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +5 -1
- package/lib/vendor/blamejs/lib/log-stream-otlp.js +5 -1
- package/lib/vendor/blamejs/lib/log-stream.js +8 -3
- package/lib/vendor/blamejs/lib/mail-auth.js +123 -22
- package/lib/vendor/blamejs/lib/mail-bimi.js +1 -1
- package/lib/vendor/blamejs/lib/mail-bounce.js +8 -0
- package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +46 -10
- package/lib/vendor/blamejs/lib/mail-dav.js +22 -3
- package/lib/vendor/blamejs/lib/mail-dkim.js +96 -30
- package/lib/vendor/blamejs/lib/mail-helo.js +6 -1
- package/lib/vendor/blamejs/lib/mail-scan.js +23 -16
- package/lib/vendor/blamejs/lib/mail-send-deliver.js +34 -8
- package/lib/vendor/blamejs/lib/mail-server-imap.js +3 -4
- package/lib/vendor/blamejs/lib/mail-server-managesieve.js +7 -11
- package/lib/vendor/blamejs/lib/mail-server-mx.js +93 -7
- package/lib/vendor/blamejs/lib/mail-server-registry.js +8 -2
- package/lib/vendor/blamejs/lib/mail.js +15 -5
- package/lib/vendor/blamejs/lib/metrics.js +268 -63
- package/lib/vendor/blamejs/lib/middleware/age-gate.js +7 -1
- package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/body-parser.js +19 -4
- package/lib/vendor/blamejs/lib/middleware/bot-guard.js +5 -9
- package/lib/vendor/blamejs/lib/middleware/csp-report.js +40 -8
- package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +24 -10
- package/lib/vendor/blamejs/lib/middleware/dpop.js +10 -5
- package/lib/vendor/blamejs/lib/middleware/index.js +6 -1
- package/lib/vendor/blamejs/lib/middleware/nel.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/rate-limit.js +12 -1
- package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/scim-server.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/tus-upload.js +6 -2
- package/lib/vendor/blamejs/lib/mtls-ca.js +18 -2
- package/lib/vendor/blamejs/lib/network-dns-resolver.js +11 -1
- package/lib/vendor/blamejs/lib/network-dns.js +21 -2
- package/lib/vendor/blamejs/lib/network-tls.js +69 -7
- package/lib/vendor/blamejs/lib/nonce-store.js +9 -1
- package/lib/vendor/blamejs/lib/object-store/gcs.js +7 -0
- package/lib/vendor/blamejs/lib/object-store/sigv4.js +31 -0
- package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +1 -1
- package/lib/vendor/blamejs/lib/outbox.js +1 -1
- package/lib/vendor/blamejs/lib/parsers/safe-ini.js +9 -1
- package/lib/vendor/blamejs/lib/parsers/safe-toml.js +10 -1
- package/lib/vendor/blamejs/lib/permissions.js +6 -3
- package/lib/vendor/blamejs/lib/pid-probe.js +55 -0
- package/lib/vendor/blamejs/lib/pqc-agent.js +8 -1
- package/lib/vendor/blamejs/lib/pqc-software.js +3 -3
- package/lib/vendor/blamejs/lib/pubsub.js +20 -9
- package/lib/vendor/blamejs/lib/queue-local.js +8 -1
- package/lib/vendor/blamejs/lib/queue-redis.js +5 -0
- package/lib/vendor/blamejs/lib/redact.js +54 -0
- package/lib/vendor/blamejs/lib/restore-bundle.js +10 -2
- package/lib/vendor/blamejs/lib/restore.js +19 -0
- package/lib/vendor/blamejs/lib/retention.js +12 -4
- package/lib/vendor/blamejs/lib/router.js +60 -6
- package/lib/vendor/blamejs/lib/safe-buffer.js +69 -0
- package/lib/vendor/blamejs/lib/safe-decompress.js +8 -2
- package/lib/vendor/blamejs/lib/safe-dns.js +25 -20
- package/lib/vendor/blamejs/lib/safe-ical.js +7 -3
- package/lib/vendor/blamejs/lib/safe-mime.js +12 -1
- package/lib/vendor/blamejs/lib/safe-object.js +80 -0
- package/lib/vendor/blamejs/lib/safe-path.js +52 -4
- package/lib/vendor/blamejs/lib/safe-redirect.js +10 -2
- package/lib/vendor/blamejs/lib/safe-schema.js +4 -1
- package/lib/vendor/blamejs/lib/safe-sieve.js +33 -1
- package/lib/vendor/blamejs/lib/safe-sql.js +88 -0
- package/lib/vendor/blamejs/lib/safe-vcard.js +7 -3
- package/lib/vendor/blamejs/lib/scheduler.js +8 -1
- package/lib/vendor/blamejs/lib/security-assert.js +6 -6
- package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +74 -27
- package/lib/vendor/blamejs/lib/self-update.js +517 -87
- package/lib/vendor/blamejs/lib/server-timing.js +2 -4
- package/lib/vendor/blamejs/lib/session.js +34 -12
- package/lib/vendor/blamejs/lib/sql.js +15 -1
- package/lib/vendor/blamejs/lib/ssrf-guard.js +52 -0
- package/lib/vendor/blamejs/lib/static.js +55 -13
- package/lib/vendor/blamejs/lib/storage.js +8 -2
- package/lib/vendor/blamejs/lib/subject.js +6 -1
- package/lib/vendor/blamejs/lib/tenant-quota.js +52 -13
- package/lib/vendor/blamejs/lib/tls-exporter.js +3 -3
- package/lib/vendor/blamejs/lib/tsa.js +34 -13
- package/lib/vendor/blamejs/lib/uri-template.js +8 -1
- package/lib/vendor/blamejs/lib/vault/index.js +13 -0
- package/lib/vendor/blamejs/lib/vc.js +44 -5
- package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +26 -26
- package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +792 -1
- package/lib/vendor/blamejs/lib/vendor/noble-curves.cjs +3443 -1
- package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +2737 -1
- package/lib/vendor/blamejs/lib/vendor/pki.cjs +39550 -13
- package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +55 -53
- package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5551 -5554
- package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +22459 -32
- package/lib/vendor/blamejs/lib/watcher.js +89 -17
- package/lib/vendor/blamejs/lib/webhook-dispatcher.js +25 -3
- package/lib/vendor/blamejs/lib/webhook.js +12 -2
- package/lib/vendor/blamejs/lib/ws-client.js +32 -1
- package/lib/vendor/blamejs/lib/xml-c14n.js +29 -1
- package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +1 -1
- package/lib/vendor/blamejs/package-lock.json +2 -2
- package/lib/vendor/blamejs/package.json +1 -1
- package/lib/vendor/blamejs/release-notes/v0.16.x.json +1462 -0
- package/lib/vendor/blamejs/release-notes/v0.17.0.json +31 -0
- package/lib/vendor/blamejs/release-notes/v0.17.1.json +31 -0
- package/lib/vendor/blamejs/release-notes/v0.17.10.json +30 -0
- package/lib/vendor/blamejs/release-notes/v0.17.11.json +22 -0
- package/lib/vendor/blamejs/release-notes/v0.17.12.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.13.json +77 -0
- package/lib/vendor/blamejs/release-notes/v0.17.14.json +40 -0
- package/lib/vendor/blamejs/release-notes/v0.17.15.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.16.json +27 -0
- package/lib/vendor/blamejs/release-notes/v0.17.17.json +31 -0
- package/lib/vendor/blamejs/release-notes/v0.17.18.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.19.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.2.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.20.json +43 -0
- package/lib/vendor/blamejs/release-notes/v0.17.21.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.22.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.17.3.json +43 -0
- package/lib/vendor/blamejs/release-notes/v0.17.4.json +35 -0
- package/lib/vendor/blamejs/release-notes/v0.17.5.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.6.json +26 -0
- package/lib/vendor/blamejs/release-notes/v0.17.7.json +35 -0
- package/lib/vendor/blamejs/release-notes/v0.17.8.json +22 -0
- package/lib/vendor/blamejs/release-notes/v0.17.9.json +26 -0
- package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +4 -0
- package/lib/vendor/blamejs/scripts/vendor-update.sh +293 -9
- package/lib/vendor/blamejs/socket.yml +94 -0
- package/lib/vendor/blamejs/test/00-primitives.js +605 -0
- package/lib/vendor/blamejs/test/helpers/drivers.js +12 -9
- package/lib/vendor/blamejs/test/integration/audit-stack-mysql.test.js +90 -1
- package/lib/vendor/blamejs/test/integration/audit-stack-postgres.test.js +122 -1
- package/lib/vendor/blamejs/test/integration/data-layer-mysql.test.js +30 -0
- package/lib/vendor/blamejs/test/integration/data-layer-pg.test.js +29 -0
- package/lib/vendor/blamejs/test/integration/dsr-cluster-mysql.test.js +479 -0
- package/lib/vendor/blamejs/test/integration/dsr-cluster-pg.test.js +487 -0
- package/lib/vendor/blamejs/test/integration/federation-auth.test.js +313 -5
- package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +80 -0
- package/lib/vendor/blamejs/test/integration/openid-federation-chain.test.js +275 -0
- package/lib/vendor/blamejs/test/integration/webhook-dispatcher-pg.test.js +96 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +401 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +1649 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +33 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +60 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +524 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +891 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +128 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-adapters.test.js +271 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-read.test.js +628 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-tar-read.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/archive-wrap.test.js +227 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +15 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +73 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file.test.js +114 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-anchor.test.js +141 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit-tools.test.js +624 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/audit.test.js +769 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +436 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth.test.js +1697 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-oid4vp.test.js +495 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-password.test.js +500 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml.test.js +1809 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-status-list.test.js +243 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-index.test.js +2226 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +183 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/base32.test.js +105 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +693 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +603 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +557 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/case-insensitive-security-token-guard.test.js +214 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cbor.test.js +25 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +843 -6
- package/lib/vendor/blamejs/test/layer-0-primitives/ciba-authreqid-binding.test.js +77 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/ciba.test.js +866 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +18 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +19 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cli.test.js +2790 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cluster-lease-renewal-ttl.test.js +114 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cluster.test.js +1032 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +575 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +739 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/codepoint-class.test.js +8 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +194 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-lifecycle-proto-key.test.js +104 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +254 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +613 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/cookies.test.js +140 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/cose.test.js +407 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-adversarial.test.js +352 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field-derived-hash.test.js +32 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-field.test.js +575 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +10 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +24 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-oprf.test.js +17 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-spki-pin.test.js +183 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto-xwing.test.js +48 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/crypto.test.js +345 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +58 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +48 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +459 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +19 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-query.test.js +1019 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db-raw-residency-gate.test.js +77 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/db.test.js +1621 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +462 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/dnssec.test.js +323 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dpop-middleware-verify.test.js +562 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +901 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +249 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +561 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/external-db.test.js +1214 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +21 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +46 -20
- package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +147 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +907 -38
- package/lib/vendor/blamejs/test/layer-0-primitives/file-upload-content-safety-skip-audit.test.js +29 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/file-upload.test.js +1135 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/forms.test.js +747 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/gate-contract.test.js +1855 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-auth.test.js +117 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-cidr.test.js +151 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-domain.test.js +422 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +424 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{guard-gate-disposition-coverage.test.js → guard-gate-disposition.test.js} +1 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-graphql.test.js +340 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +29 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +28 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-image.test.js +519 -45
- 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 +51 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-jsonpath.test.js +66 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-jwt.test.js +436 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +25 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +16 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-mime.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-oauth.test.js +140 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-pdf.test.js +80 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +27 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-regex.test.js +99 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-shell.test.js +76 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{guard-sql-coverage.test.js → guard-sql.test.js} +3 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +524 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-template.test.js +71 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-time.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/guard-uuid.test.js +86 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +38 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache-authorization.test.js +347 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +908 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client.test.js +2874 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +643 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +38 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +1153 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +494 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ip-utils.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jsdoc-example-execution.test.js +177 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/json-path.test.js +103 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/json-schema.test.js +214 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jwk.test.js +41 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +276 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/log-stream.test.js +241 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/log.test.js +106 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +441 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +2136 -4
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +759 -12
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +811 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +401 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +751 -8
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +864 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto.test.js +110 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +830 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +635 -86
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +818 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +27 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +199 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +686 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +778 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +1438 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +449 -6
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +773 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +623 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +55 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +13 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +877 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +326 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +55 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +242 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +1596 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +440 -4
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +89 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics.test.js +1230 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-assetlinks.test.js +113 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-body-parser.test.js +1169 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-bot-disclose.test.js +123 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-cookies.test.js +108 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-gpc.test.js +121 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-headers.test.js +163 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-host-allowlist.test.js +154 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-require-content-type.test.js +127 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{middleware-tus-upload-coverage.test.js → middleware-tus-upload.test.js} +45 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/middleware-web-app-manifest.test.js +132 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-crl-fingerprint-only.test.js +92 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +65 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +1727 -1
- package/lib/vendor/blamejs/test/layer-0-primitives/network-nts.test.js +699 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy.test.js +1181 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +1876 -3
- package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +32 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/nonce-store-enforce-replay-nonboolean.test.js +81 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ntp-check.test.js +122 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +378 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +77 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/oid4vci.test.js +1016 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/openid-federation.test.js +946 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/outbox.test.js +818 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/own-property-membership-guards.test.js +109 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/parsers-safe-toml.test.js +543 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/{parsers-safe-yaml-coverage.test.js → parsers-safe-yaml.test.js} +2 -2
- package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +73 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +649 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +524 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +22 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +295 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +36 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/queue.test.js +83 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-xff-spoofing.test.js +34 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/redact.test.js +1031 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +94 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/require-bound-key.test.js +401 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/restore-empty-manifest-wipe.test.js +154 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/retention.test.js +600 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router-host-path-injection.test.js +231 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +21 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/router.test.js +1277 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-async.test.js +133 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer-linear-scans.test.js +14 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-buffer.test.js +80 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +28 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +245 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +32 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-ini.test.js +376 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-json.test.js +175 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +518 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-object.test.js +62 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +30 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-schema.test.js +104 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-sql.test.js +142 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-url.test.js +112 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +26 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/scheduler.test.js +157 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +396 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +930 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +755 -82
- package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +1053 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +200 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/session-strict-binding-missing-failclosed.test.js +110 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +636 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sql-offset-without-limit.test.js +94 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sql.test.js +1190 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +21 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +850 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +146 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/storage.test.js +621 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/subject.test.js +47 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/template.test.js +582 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +587 -25
- package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +11 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/tsa.test.js +524 -63
- package/lib/vendor/blamejs/test/layer-0-primitives/uri-template.test.js +27 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vault-rotate.test.js +866 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vault.test.js +74 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/vc.test.js +215 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +550 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/webhook-dispatcher.test.js +388 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +262 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/websocket.test.js +1294 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +629 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/xml-c14n-attr-normalization.test.js +164 -0
- package/lib/vendor/blamejs/test/smoke.js +2 -0
- package/package.json +1 -1
- package/lib/vendor/blamejs/release-notes/v0.16.0.json +0 -44
- package/lib/vendor/blamejs/release-notes/v0.16.1.json +0 -36
- package/lib/vendor/blamejs/release-notes/v0.16.2.json +0 -71
- package/lib/vendor/blamejs/release-notes/v0.16.3.json +0 -71
- package/lib/vendor/blamejs/test/layer-0-primitives/acme-coverage.test.js +0 -441
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-oauth-coverage.test.js +0 -482
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-saml-coverage.test.js +0 -671
- package/lib/vendor/blamejs/test/layer-0-primitives/backup-index-coverage.test.js +0 -690
- package/lib/vendor/blamejs/test/layer-0-primitives/cli-coverage.test.js +0 -238
- package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials-coverage.test.js +0 -319
- package/lib/vendor/blamejs/test/layer-0-primitives/keychain-coverage.test.js +0 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth-coverage.test.js +0 -437
- package/lib/vendor/blamejs/test/layer-0-primitives/mcp-coverage.test.js +0 -443
- package/lib/vendor/blamejs/test/layer-0-primitives/metrics-coverage.test.js +0 -395
- package/lib/vendor/blamejs/test/layer-0-primitives/network-smtp-policy-coverage.test.js +0 -565
- package/lib/vendor/blamejs/test/layer-0-primitives/router-coverage.test.js +0 -592
- package/lib/vendor/blamejs/test/layer-0-primitives/sql-coverage.test.js +0 -422
- package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +0 -573
|
@@ -74,6 +74,14 @@ var DEFAULT_POLL_MAX_FILES = 50000;
|
|
|
74
74
|
// Operators with legitimate high-churn directories raise this via opts.
|
|
75
75
|
var DEFAULT_MAX_PENDING = 10000; // pending-event queue cap
|
|
76
76
|
|
|
77
|
+
// Native fs.watch runtime-error codes that leave the underlying handle dead —
|
|
78
|
+
// change detection is permanently off, not a transient blip. Classified as a
|
|
79
|
+
// fatal watcher/handle-dead so a wrapper can recreate/alert rather than ignore.
|
|
80
|
+
var HANDLE_DEAD_CODES = ["EPERM", "EBADF", "ENOSPC", "EMFILE", "ENFILE", "EACCES"];
|
|
81
|
+
// Windows MAX_PATH is 260; a path approaching it needs the \\?\ long-path
|
|
82
|
+
// prefix for lstat to resolve it (below the threshold, plain paths are fine).
|
|
83
|
+
var WIN32_LONG_PATH_THRESHOLD = 250;
|
|
84
|
+
|
|
77
85
|
// ---- glob-style matcher ----
|
|
78
86
|
//
|
|
79
87
|
// Supports three shapes per entry:
|
|
@@ -133,7 +141,7 @@ function _matchGlobBasename(parts, base) {
|
|
|
133
141
|
return true;
|
|
134
142
|
}
|
|
135
143
|
|
|
136
|
-
function _compileIgnore(patterns) {
|
|
144
|
+
function _compileIgnore(patterns, caseFold) {
|
|
137
145
|
if (!Array.isArray(patterns) || patterns.length === 0) {
|
|
138
146
|
return function () { return false; };
|
|
139
147
|
}
|
|
@@ -154,26 +162,33 @@ function _compileIgnore(patterns) {
|
|
|
154
162
|
throw new WatcherError("watcher/bad-ignore",
|
|
155
163
|
"watcher.create: ignore[" + i + "] exceeds " + MAX_IGNORE_STAR_COUNT + "-wildcard cap");
|
|
156
164
|
}
|
|
157
|
-
|
|
165
|
+
// When ignoreCaseFold is on, fold the pattern to lower case at compile time
|
|
166
|
+
// and the walked path at match time, so the walk-prune aligns with a
|
|
167
|
+
// case-insensitive consumer's own filter (an on-disk 'Node_Modules' is
|
|
168
|
+
// pruned by a 'node_modules/**' ignore, not stat'd toward pollMaxFiles).
|
|
169
|
+
// Length + wildcard caps stay measured on the original pattern.
|
|
170
|
+
var pk = caseFold ? p.toLowerCase() : p;
|
|
171
|
+
if (pk.indexOf("**") !== -1) {
|
|
158
172
|
// dir/** prefix-match — strip the trailing **; reject `**` mid-pattern.
|
|
159
|
-
if (!/^[^*]*\/?\*\*$/.test(
|
|
173
|
+
if (!/^[^*]*\/?\*\*$/.test(pk)) {
|
|
160
174
|
throw new WatcherError("watcher/bad-ignore",
|
|
161
175
|
"watcher.create: ignore[" + i + "] '**' is only supported as a trailing dir/** prefix form");
|
|
162
176
|
}
|
|
163
|
-
var prefix =
|
|
177
|
+
var prefix = pk.replace(/\/?\*\*$/, "");
|
|
164
178
|
compiled.push({ kind: "prefix", value: prefix });
|
|
165
179
|
} else if (starCount > 0) {
|
|
166
|
-
compiled.push({ kind: "glob", value: _parseGlobBasename(
|
|
180
|
+
compiled.push({ kind: "glob", value: _parseGlobBasename(pk) });
|
|
167
181
|
} else {
|
|
168
|
-
compiled.push({ kind: "exact", value:
|
|
182
|
+
compiled.push({ kind: "exact", value: pk });
|
|
169
183
|
}
|
|
170
184
|
}
|
|
171
185
|
return function (relPath) {
|
|
172
|
-
var
|
|
173
|
-
var
|
|
186
|
+
var matchPath = caseFold ? relPath.toLowerCase() : relPath;
|
|
187
|
+
var base = nodePath.basename(matchPath);
|
|
188
|
+
var normalized = matchPath.split(nodePath.sep).join("/");
|
|
174
189
|
for (var j = 0; j < compiled.length; j += 1) {
|
|
175
190
|
var c = compiled[j];
|
|
176
|
-
if (c.kind === "exact" && (c.value ===
|
|
191
|
+
if (c.kind === "exact" && (c.value === matchPath || c.value === normalized)) return true;
|
|
177
192
|
if (c.kind === "prefix" && (normalized === c.value || normalized.indexOf(c.value + "/") === 0)) return true;
|
|
178
193
|
if (c.kind === "glob" && _matchGlobBasename(c.value, base)) return true;
|
|
179
194
|
}
|
|
@@ -312,6 +327,21 @@ function _validateOpts(opts) {
|
|
|
312
327
|
throw new WatcherError("watcher/bad-ignore",
|
|
313
328
|
"watcher.create: ignore must be an array of glob patterns");
|
|
314
329
|
}
|
|
330
|
+
validateOpts.optionalBoolean(opts.ignoreCaseFold, "ignoreCaseFold", WatcherError, "watcher/bad-ignore");
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
function _lstatLongPathSafe(fullPath) {
|
|
334
|
+
// Windows MAX_PATH (260): lstatSync on a path at/over the limit without the
|
|
335
|
+
// \\?\ long-path prefix spuriously throws ENOENT, which _normalizeAndDispatch
|
|
336
|
+
// would misread as a delete. The prefix needs a backslashed absolute path
|
|
337
|
+
// (the watcher root is realpathSync.native'd → absolute) and disables path
|
|
338
|
+
// normalization, which is safe here — fullPath has no relative components. A
|
|
339
|
+
// genuinely-missing file still ENOENTs on the plain-path fallback → real delete.
|
|
340
|
+
if (process.platform === "win32" && fullPath.length >= WIN32_LONG_PATH_THRESHOLD && fullPath.indexOf("\\\\?\\") !== 0) {
|
|
341
|
+
try { return nodeFs.lstatSync("\\\\?\\" + fullPath); }
|
|
342
|
+
catch (_e) { /* fall through to the plain path so a real ENOENT resurfaces */ }
|
|
343
|
+
}
|
|
344
|
+
return nodeFs.lstatSync(fullPath);
|
|
315
345
|
}
|
|
316
346
|
|
|
317
347
|
function create(opts) {
|
|
@@ -339,7 +369,7 @@ function create(opts) {
|
|
|
339
369
|
var onChange = opts.onChange || function () {};
|
|
340
370
|
var onDelete = opts.onDelete || function () {};
|
|
341
371
|
var onError = opts.onError || function () {};
|
|
342
|
-
var isIgnored = _compileIgnore(opts.ignore);
|
|
372
|
+
var isIgnored = _compileIgnore(opts.ignore, opts.ignoreCaseFold === true);
|
|
343
373
|
var auditOn = opts.audit !== false;
|
|
344
374
|
|
|
345
375
|
// Pre-flight: root must exist and be a directory.
|
|
@@ -375,13 +405,33 @@ function create(opts) {
|
|
|
375
405
|
try { onError(err); } catch (_e) { /* operator error handler must not crash the watcher */ }
|
|
376
406
|
}
|
|
377
407
|
|
|
408
|
+
// Native-backend (fs.watch) error handler. A runtime error whose code leaves
|
|
409
|
+
// the handle dead (EPERM after the watched root is deleted/recreated on
|
|
410
|
+
// Windows, EBADF, inotify exhaustion) permanently stops detection — classify
|
|
411
|
+
// it fatal so a consumer can react (recreate/alert) rather than treat it as a
|
|
412
|
+
// transient blip. Non-handle-dead errors pass through unclassified.
|
|
413
|
+
function _handleBackendError(err) {
|
|
414
|
+
if (err && HANDLE_DEAD_CODES.indexOf(err.code) !== -1) {
|
|
415
|
+
var dead = new WatcherError("watcher/handle-dead",
|
|
416
|
+
"watcher: native watch handle died (" + err.code + ") — change detection has " +
|
|
417
|
+
"permanently stopped; recreate the watcher to resume: " + (err.message || String(err)));
|
|
418
|
+
dead.fatal = true;
|
|
419
|
+
dead.cause = err;
|
|
420
|
+
_safeError(dead);
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
_safeError(err);
|
|
424
|
+
}
|
|
425
|
+
|
|
378
426
|
function _normalizeAndDispatch(relPath) {
|
|
379
427
|
if (stopped) return;
|
|
380
428
|
if (isIgnored(relPath)) return;
|
|
381
429
|
var fullPath = nodePath.join(root, relPath);
|
|
382
|
-
// lstat (NOT stat) — refuses to follow symlinks out of root.
|
|
430
|
+
// lstat (NOT stat) — refuses to follow symlinks out of root. Long-path-safe
|
|
431
|
+
// so a Windows path over MAX_PATH isn't misread as a delete (issue: a deep
|
|
432
|
+
// change delivered to onDelete instead of onChange).
|
|
383
433
|
var lst;
|
|
384
|
-
try { lst =
|
|
434
|
+
try { lst = _lstatLongPathSafe(fullPath); }
|
|
385
435
|
catch (e) {
|
|
386
436
|
if (e && e.code === "ENOENT") {
|
|
387
437
|
// Path is gone — delete event. Type unknown by the time we
|
|
@@ -456,10 +506,23 @@ function create(opts) {
|
|
|
456
506
|
var absDir = relDir === "" ? root : nodePath.join(root, relDir);
|
|
457
507
|
var entries;
|
|
458
508
|
try { entries = nodeFs.readdirSync(absDir, { withFileTypes: true }); }
|
|
459
|
-
catch (
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
509
|
+
catch (rootErr) {
|
|
510
|
+
if (relDir === "") {
|
|
511
|
+
// The ROOT itself is unreadable (unmounted NFS/SMB/USB volume, or a
|
|
512
|
+
// deleted root). Returning an empty snapshot would diff as a delete
|
|
513
|
+
// of EVERY tracked entry — a mass-delete a consumer can't tell apart
|
|
514
|
+
// from a real rm -rf. Surface a distinct fatal root-lost signal and
|
|
515
|
+
// abort the walk; _pollTick's catch keeps the prior snapshot, so no
|
|
516
|
+
// spurious onDelete fires.
|
|
517
|
+
var lost = new WatcherError("watcher/root-lost",
|
|
518
|
+
"watcher.poll: root '" + root + "' is no longer readable: " +
|
|
519
|
+
((rootErr && rootErr.message) || String(rootErr)));
|
|
520
|
+
lost.fatal = true;
|
|
521
|
+
lost.cause = rootErr;
|
|
522
|
+
throw lost;
|
|
523
|
+
}
|
|
524
|
+
// Inner dir vanished mid-walk between the parent listing and the
|
|
525
|
+
// descent. Skip — the next tick's diff surfaces the deletion.
|
|
463
526
|
continue;
|
|
464
527
|
}
|
|
465
528
|
for (var i = 0; i < entries.length; i += 1) {
|
|
@@ -544,7 +607,7 @@ function create(opts) {
|
|
|
544
607
|
if (rel === "" || rel === ".") return;
|
|
545
608
|
_enqueue(rel);
|
|
546
609
|
});
|
|
547
|
-
watcherHandle.on("error", function (err) {
|
|
610
|
+
watcherHandle.on("error", function (err) { _handleBackendError(err); });
|
|
548
611
|
} catch (e) {
|
|
549
612
|
if (e && (e.code === "ERR_FEATURE_UNAVAILABLE_ON_PLATFORM" || e.code === "ENOSYS")) {
|
|
550
613
|
throw new WatcherError("watcher/recursive-unsupported",
|
|
@@ -609,10 +672,19 @@ function create(opts) {
|
|
|
609
672
|
root: root,
|
|
610
673
|
mode: mode,
|
|
611
674
|
_flushForTest: _flushForTest,
|
|
675
|
+
// Test seam — drives the native-backend error classification path (the OS
|
|
676
|
+
// killing the handle isn't deterministically reproducible). Not part of the
|
|
677
|
+
// operator contract.
|
|
678
|
+
_simulateBackendErrorForTest: _handleBackendError,
|
|
612
679
|
};
|
|
613
680
|
}
|
|
614
681
|
|
|
615
682
|
module.exports = {
|
|
616
683
|
create: create,
|
|
617
684
|
WatcherError: WatcherError,
|
|
685
|
+
// Exported so a consumer pre-filtering operator ignore patterns (to keep one
|
|
686
|
+
// bad pattern from aborting the whole watcher) can align with the caps
|
|
687
|
+
// create() enforces, instead of pinning hand-copied mirror constants.
|
|
688
|
+
MAX_IGNORE_PATTERN_LEN: MAX_IGNORE_PATTERN_LEN,
|
|
689
|
+
MAX_IGNORE_STAR_COUNT: MAX_IGNORE_STAR_COUNT,
|
|
618
690
|
};
|
|
@@ -72,7 +72,7 @@ var HTTP_OK_MAX = 300;
|
|
|
72
72
|
function _validateTableName(name, label) {
|
|
73
73
|
validateOpts.requireNonEmptyString(name, label, WebhookDispatcherError, "webhook-dispatcher/bad-opts");
|
|
74
74
|
// safeSql.quoteIdentifier refuses an injection-bearing name at construction.
|
|
75
|
-
safeSql.quoteIdentifier(name);
|
|
75
|
+
safeSql.quoteIdentifier(name, undefined, { allowReserved: true }); // parity with b.db.from()
|
|
76
76
|
return name;
|
|
77
77
|
}
|
|
78
78
|
|
|
@@ -154,6 +154,7 @@ function _coercePayloadString(payload) {
|
|
|
154
154
|
* allowInternalDestinations: boolean, // default false — refuse SSRF (private/loopback/metadata)
|
|
155
155
|
* httpRequest: function, // (url, body, headers) → { status } — inject for tests
|
|
156
156
|
* now: function, // clock injection → ms epoch
|
|
157
|
+
* dnsLookup: function, // (host) → [{ address, family }] — override the SSRF destination resolver
|
|
157
158
|
*
|
|
158
159
|
* @example
|
|
159
160
|
* var wd = b.webhook.dispatcher({ externalDb: b.externalDb });
|
|
@@ -186,6 +187,7 @@ function dispatcher(opts) {
|
|
|
186
187
|
allowInternalDestinations: "optional-boolean",
|
|
187
188
|
httpRequest: "optional-function",
|
|
188
189
|
now: "optional-function",
|
|
190
|
+
dnsLookup: "optional-function",
|
|
189
191
|
}, "webhook.dispatcher", WebhookDispatcherError, "webhook-dispatcher/bad-opts");
|
|
190
192
|
var externalDb = opts.externalDb;
|
|
191
193
|
var endpointsTable = _validateTableName(
|
|
@@ -216,12 +218,20 @@ function dispatcher(opts) {
|
|
|
216
218
|
// because the IP check resolves the host. Throws a dispatcher-coded error.
|
|
217
219
|
async function _assertSafeDestination(url, where) {
|
|
218
220
|
safeUrl.parse(url, { allowedProtocols: allowedProtocols, errorClass: WebhookDispatcherError });
|
|
221
|
+
var checkOpts = { allowInternal: allowInternal };
|
|
222
|
+
if (typeof opts.dnsLookup === "function") checkOpts.dnsLookup = opts.dnsLookup;
|
|
219
223
|
try {
|
|
220
|
-
await ssrfGuard().checkUrl(url,
|
|
224
|
+
await ssrfGuard().checkUrl(url, checkOpts);
|
|
221
225
|
} catch (e) {
|
|
222
226
|
if (e && e.isSsrfError) {
|
|
227
|
+
// A genuine SSRF refusal (destination resolved to a private / loopback /
|
|
228
|
+
// metadata IP, or a rebind since registration) is PERMANENT — dead-letter.
|
|
223
229
|
throw _err("webhook-dispatcher/ssrf-refused", where + ": " + e.message);
|
|
224
230
|
}
|
|
231
|
+
// A non-SsrfError from checkUrl is a raw resolver / network fault during
|
|
232
|
+
// host resolution (EAI_AGAIN, ETIMEDOUT, SERVFAIL, ...). Re-throw it as-is
|
|
233
|
+
// so the caller classifies it as TRANSIENT (retry), not permanent — a
|
|
234
|
+
// transient DNS blip must not dead-letter a delivery.
|
|
225
235
|
throw e;
|
|
226
236
|
}
|
|
227
237
|
}
|
|
@@ -483,8 +493,20 @@ function dispatcher(opts) {
|
|
|
483
493
|
try {
|
|
484
494
|
await _assertSafeDestination(row.url, "deliver");
|
|
485
495
|
} catch (err) {
|
|
496
|
+
// Permanence by CLASS: a genuine SSRF refusal or malformed URL surfaces
|
|
497
|
+
// as a WebhookDispatcherError (won't fix on retry) -> dead-letter. A
|
|
498
|
+
// resolver fault from the host-resolution step carries the framework's
|
|
499
|
+
// own terminal-vs-transient verdict on err.permanent — honor it so a
|
|
500
|
+
// PERMANENT lookup failure (no addresses / a removed record: the
|
|
501
|
+
// dns/no-result DnsError) dead-letters, while a transient one (a lookup
|
|
502
|
+
// timeout, a system/resolve failure) is retried on the backoff curve
|
|
503
|
+
// (capped at maxAttempts) like every other transport error below. A raw
|
|
504
|
+
// resolver error without that verdict (EAI_AGAIN from the native
|
|
505
|
+
// fallback, an injected resolver) is treated as transient — a DNS blip
|
|
506
|
+
// must not dead-letter a delivery.
|
|
507
|
+
var permanent = (err instanceof WebhookDispatcherError) || (err && err.permanent === true);
|
|
486
508
|
return await _onFailure(deliveryId, attemptNo,
|
|
487
|
-
(err && err.message) || String(err),
|
|
509
|
+
(err && err.message) || String(err), permanent);
|
|
488
510
|
}
|
|
489
511
|
// Sign + POST. Transport errors (network, TLS, timeout, DNS) and any
|
|
490
512
|
// non-2xx HTTP status are TRANSIENT — back off and retry (capped at
|
|
@@ -669,8 +669,18 @@ function verifier(opts) {
|
|
|
669
669
|
throw _failure("MISSING_TIMESTAMP", "webhook: t= field missing from signature header", "missing-timestamp", ctxReq);
|
|
670
670
|
}
|
|
671
671
|
var ts = Number(parsed.t);
|
|
672
|
-
|
|
673
|
-
|
|
672
|
+
// The authenticated timestamp is re-composed into the signed string from
|
|
673
|
+
// `ts` (the Number) below, so it must be the exact canonical decimal the
|
|
674
|
+
// signer emits (`String(Math.floor(now / 1000))`). Validating only the
|
|
675
|
+
// post-coercion value would accept every string Number() maps to the same
|
|
676
|
+
// integer — scientific ("1.7e9"), a trailing ".0", hex ("0x..."), a
|
|
677
|
+
// leading "0"/"+"/whitespace — each of which re-canonicalizes into the
|
|
678
|
+
// signed string and re-verifies, making the authenticated t= field
|
|
679
|
+
// malleable. Require the raw bytes to equal String(ts) so the sole
|
|
680
|
+
// canonical form the signer produces is the sole form accepted (matching
|
|
681
|
+
// the strict digits-only parse the Stripe verifier already applies).
|
|
682
|
+
if (!numericBounds.isNonNegativeFiniteInt(ts) || String(ts) !== parsed.t) {
|
|
683
|
+
throw _failure("BAD_TIMESTAMP", "webhook: t= field is not a canonical non-negative integer, got " + JSON.stringify(parsed.t), "bad-timestamp", ctxReq);
|
|
674
684
|
}
|
|
675
685
|
if (parsed.id === null || parsed.id.length === 0) {
|
|
676
686
|
throw _failure("MISSING_ID", "webhook: id= field missing from signature header", "missing-id", ctxReq);
|
|
@@ -268,6 +268,7 @@ function connect(target, opts) {
|
|
|
268
268
|
// performs the (async) check + pinning before the dial and reruns it on
|
|
269
269
|
// every reconnect, so a urlFor-swapped target is validated too.
|
|
270
270
|
client._prepareDial().then(function () {
|
|
271
|
+
if (client._closed) return; // close() during the async SSRF re-resolve retires the dial
|
|
271
272
|
client._dial();
|
|
272
273
|
}).catch(function (e) {
|
|
273
274
|
setImmediate(function () { client._handleSocketError(e); });
|
|
@@ -366,6 +367,10 @@ class WsClient extends EventEmitter {
|
|
|
366
367
|
}
|
|
367
368
|
|
|
368
369
|
_dial() {
|
|
370
|
+
// Guard the shared dial funnel: a close() during the pending _prepareDial
|
|
371
|
+
// (initial dial) or the reconnect backoff sets _closed; without this check
|
|
372
|
+
// the resolved continuation would open a socket + heartbeat nobody owns.
|
|
373
|
+
if (this._closed) return;
|
|
369
374
|
var self = this;
|
|
370
375
|
this._readyState = "connecting";
|
|
371
376
|
|
|
@@ -406,10 +411,24 @@ class WsClient extends EventEmitter {
|
|
|
406
411
|
var tlsOpts = Object.assign({
|
|
407
412
|
host: host,
|
|
408
413
|
port: port,
|
|
409
|
-
servername: host,
|
|
410
414
|
rejectUnauthorized: true,
|
|
411
415
|
minVersion: "TLSv1.3",
|
|
412
416
|
}, dialTlsOpts || {});
|
|
417
|
+
// RFC 6066 §3: the TLS SNI ServerName MUST be a hostname, never an IP
|
|
418
|
+
// literal — Node throws ERR_INVALID_ARG_VALUE when servername is an IP,
|
|
419
|
+
// which made wss:// to any IP-literal target unusable. Send SNI only for
|
|
420
|
+
// hostname targets; for an IP-literal host omit it (cert identity is still
|
|
421
|
+
// verified against the address' iPAddress SAN by the default
|
|
422
|
+
// checkServerIdentity). An operator servername in tlsOpts still wins.
|
|
423
|
+
// Decide via ssrfGuard.canonicalizeHost so an IPv6 literal is recognized:
|
|
424
|
+
// parsed.hostname keeps the brackets (`[::1]`), and net.isIP only accepts
|
|
425
|
+
// the bare form — canonicalizeHost strips the brackets (and normalizes the
|
|
426
|
+
// address) so the IP test is correct. Without it an IPv6 literal would set
|
|
427
|
+
// servername=`[::1]`, a malformed SNI a strict server rejects. Hostnames
|
|
428
|
+
// canonicalize to a non-IP form, so they still get their SNI.
|
|
429
|
+
if (!tlsOpts.servername && !net.isIP(ssrfGuard.canonicalizeHost(host))) {
|
|
430
|
+
tlsOpts.servername = host;
|
|
431
|
+
}
|
|
413
432
|
if (lookup) tlsOpts.lookup = lookup;
|
|
414
433
|
try {
|
|
415
434
|
var pqcShares = networkTls().pqc.getKeyShares();
|
|
@@ -869,6 +888,18 @@ class WsClient extends EventEmitter {
|
|
|
869
888
|
this._closed = true;
|
|
870
889
|
return;
|
|
871
890
|
}
|
|
891
|
+
if (this._readyState === "connecting") {
|
|
892
|
+
// No socket is established yet (the dial is still in _prepareDial's SSRF
|
|
893
|
+
// re-resolve or the handshake). There is no peer to exchange a graceful
|
|
894
|
+
// close frame with, so the 1000ms grace window buys nothing — and leaving
|
|
895
|
+
// _closed false across it lets a slow _prepareDial resolve into _dial()
|
|
896
|
+
// and open a socket nobody owns. Retire immediately (sets _closed and
|
|
897
|
+
// destroys any partial socket).
|
|
898
|
+
code = (typeof code === "number") ? code : CLOSE_NORMAL;
|
|
899
|
+
reason = (typeof reason === "string") ? reason : "";
|
|
900
|
+
this._teardown(code, reason, false);
|
|
901
|
+
return;
|
|
902
|
+
}
|
|
872
903
|
code = (typeof code === "number") ? code : CLOSE_NORMAL;
|
|
873
904
|
reason = (typeof reason === "string") ? reason : "";
|
|
874
905
|
// RFC 6455 §5.5: control frames must be <= 125 bytes total. The
|
|
@@ -112,6 +112,20 @@ function parse(xml) {
|
|
|
112
112
|
"parse: <!ENTITY> declarations refused");
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
// XML 1.0 §2.11 end-of-line handling — a conforming processor folds every
|
|
116
|
+
// literal CRLF and lone CR to a single LF across the WHOLE document (text,
|
|
117
|
+
// CDATA, comments, attribute literals) BEFORE the InfoSet is built. A CR
|
|
118
|
+
// delivered through a character reference (
) is NOT a source line
|
|
119
|
+
// ending and is preserved. Doing this document-wide once (rather than the
|
|
120
|
+
// attribute literal alone) closes the same distinct-input / identical-output
|
|
121
|
+
// collision in element text and CDATA: without it a literal CR in text and
|
|
122
|
+
// the 
 reference both canonicalize to `
` (the escape _escapeText
|
|
123
|
+
// applies to a surviving CR), letting a signed document be swapped for one
|
|
124
|
+
// whose character data differs but whose canonical bytes match. The
|
|
125
|
+
// attribute §3.3.3 whitespace fold below still runs (it additionally folds
|
|
126
|
+
// TAB and the now-LF to a single space, which §2.11 alone does not).
|
|
127
|
+
xml = xml.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
128
|
+
|
|
115
129
|
var pos = 0;
|
|
116
130
|
function err(msg) {
|
|
117
131
|
throw _xmlErr("xml-c14n/parse", "parse: " + msg + " at offset " + pos);
|
|
@@ -159,7 +173,21 @@ function parse(xml) {
|
|
|
159
173
|
if (pos >= xml.length) err("unterminated attribute value");
|
|
160
174
|
var raw = xml.slice(start, pos);
|
|
161
175
|
pos += 1; // closing quote
|
|
162
|
-
|
|
176
|
+
// XML 1.0 §2.11 line-ending + §3.3.3 attribute-value normalization: a
|
|
177
|
+
// literal TAB / CR / LF in the attribute literal (and a CRLF / lone-CR
|
|
178
|
+
// line ending) folds to a single SPACE. The SAME character delivered
|
|
179
|
+
// through a character reference (	 / 
 / 
) is decoded AFTER
|
|
180
|
+
// this fold and is therefore preserved. Because c14n later escapes the
|
|
181
|
+
// surviving literal control characters back to 	 / 
 / 
,
|
|
182
|
+
// skipping the fold makes `a="x<TAB>y"` and `a="x	y"` canonicalize
|
|
183
|
+
// to IDENTICAL bytes even though their InfoSet attribute values differ
|
|
184
|
+
// ("x y" vs a real TAB) — a distinct-input / identical-output collision
|
|
185
|
+
// that would let a signed document be swapped for a semantically
|
|
186
|
+
// different one whose canonical bytes still match (XML-signature-
|
|
187
|
+
// wrapping / smuggling). Normalize the literal text BEFORE entity
|
|
188
|
+
// decode so character-reference whitespace stays intact.
|
|
189
|
+
var normalized = raw.replace(/\r\n/g, " ").replace(/[\r\n\t]/g, " ");
|
|
190
|
+
return _decodeEntities(normalized);
|
|
163
191
|
}
|
|
164
192
|
|
|
165
193
|
function _decodeEntities(s) {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
# never built by OSS-Fuzz's own infra. The actual upstream OSS-Fuzz submission
|
|
12
12
|
# un-pins the FROM in its own PR per OSS-Fuzz convention (that infra tracks the
|
|
13
13
|
# latest base-builder). This is a CI-only fuzzing image, never deployed.
|
|
14
|
-
FROM gcr.io/oss-fuzz-base/base-builder-javascript@sha256:
|
|
14
|
+
FROM gcr.io/oss-fuzz-base/base-builder-javascript@sha256:649105c8df1de6b5e752aaad2c944198aba5cb79481b9ccbcaa189854d9f50d2
|
|
15
15
|
|
|
16
16
|
# Clone the framework into the build context. OSS-Fuzz builds against
|
|
17
17
|
# main on every run; once the project is accepted, ClusterFuzz tracks
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blamejs/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.22",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@blamejs/core",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.17.22",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"bin": {
|
|
12
12
|
"blamejs": "bin/blamejs.js"
|