@blamejs/blamejs-shop 0.3.5 → 0.3.7
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 +4 -0
- package/lib/asset-manifest.json +1 -1
- package/lib/vendor/MANIFEST.json +3 -3
- package/lib/vendor/blamejs/CHANGELOG.md +14 -0
- package/lib/vendor/blamejs/api-snapshot.json +2 -2
- package/lib/vendor/blamejs/lib/_test/crypto-fixtures.js +3 -3
- package/lib/vendor/blamejs/lib/a2a-tasks.js +24 -24
- package/lib/vendor/blamejs/lib/a2a.js +4 -4
- package/lib/vendor/blamejs/lib/acme.js +3 -3
- package/lib/vendor/blamejs/lib/agent-idempotency.js +1 -1
- package/lib/vendor/blamejs/lib/agent-orchestrator.js +8 -8
- package/lib/vendor/blamejs/lib/agent-posture-chain.js +2 -2
- package/lib/vendor/blamejs/lib/agent-saga.js +1 -1
- package/lib/vendor/blamejs/lib/agent-snapshot.js +1 -1
- package/lib/vendor/blamejs/lib/agent-stream.js +1 -1
- package/lib/vendor/blamejs/lib/agent-tenant.js +1 -1
- package/lib/vendor/blamejs/lib/agent-trace.js +3 -3
- package/lib/vendor/blamejs/lib/ai-capability.js +1 -1
- package/lib/vendor/blamejs/lib/ai-dp.js +4 -4
- package/lib/vendor/blamejs/lib/ai-input.js +4 -4
- package/lib/vendor/blamejs/lib/ai-model-manifest.js +7 -7
- package/lib/vendor/blamejs/lib/ai-pref.js +3 -3
- package/lib/vendor/blamejs/lib/archive-gz.js +2 -2
- package/lib/vendor/blamejs/lib/archive-read.js +25 -25
- package/lib/vendor/blamejs/lib/archive-tar-read.js +2 -2
- package/lib/vendor/blamejs/lib/archive-tar.js +20 -20
- package/lib/vendor/blamejs/lib/archive-wrap.js +10 -10
- package/lib/vendor/blamejs/lib/argon2-builtin.js +1 -1
- package/lib/vendor/blamejs/lib/asn1-der.js +45 -34
- package/lib/vendor/blamejs/lib/atomic-file.js +2 -2
- package/lib/vendor/blamejs/lib/audit-daily-review.js +3 -3
- package/lib/vendor/blamejs/lib/audit-sign.js +5 -5
- package/lib/vendor/blamejs/lib/audit-tools.js +1 -1
- package/lib/vendor/blamejs/lib/audit.js +2 -2
- package/lib/vendor/blamejs/lib/auth/acr-vocabulary.js +2 -2
- package/lib/vendor/blamejs/lib/auth/bot-challenge.js +3 -3
- package/lib/vendor/blamejs/lib/auth/ciba.js +7 -7
- package/lib/vendor/blamejs/lib/auth/dpop.js +3 -3
- package/lib/vendor/blamejs/lib/auth/fido-mds3.js +8 -8
- package/lib/vendor/blamejs/lib/auth/jar.js +11 -0
- package/lib/vendor/blamejs/lib/auth/jwt-external.js +5 -5
- package/lib/vendor/blamejs/lib/auth/oauth.js +7 -9
- package/lib/vendor/blamejs/lib/auth/oid4vci.js +10 -10
- package/lib/vendor/blamejs/lib/auth/oid4vp.js +2 -2
- package/lib/vendor/blamejs/lib/auth/openid-federation.js +2 -2
- package/lib/vendor/blamejs/lib/auth/passkey.js +3 -3
- package/lib/vendor/blamejs/lib/auth/saml.js +31 -43
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-disclosure.js +1 -1
- package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +5 -5
- package/lib/vendor/blamejs/lib/auth/status-list.js +10 -10
- package/lib/vendor/blamejs/lib/auth/step-up.js +1 -1
- package/lib/vendor/blamejs/lib/auth-bot-challenge.js +1 -1
- package/lib/vendor/blamejs/lib/backup/index.js +7 -7
- package/lib/vendor/blamejs/lib/base32.js +8 -8
- package/lib/vendor/blamejs/lib/budr.js +2 -2
- package/lib/vendor/blamejs/lib/cache-status.js +2 -2
- package/lib/vendor/blamejs/lib/calendar.js +29 -29
- package/lib/vendor/blamejs/lib/cbor.js +12 -12
- package/lib/vendor/blamejs/lib/cdn-cache-control.js +1 -1
- package/lib/vendor/blamejs/lib/cert.js +5 -5
- package/lib/vendor/blamejs/lib/cloud-events.js +5 -5
- package/lib/vendor/blamejs/lib/cms-codec.js +21 -21
- package/lib/vendor/blamejs/lib/codepoint-class.js +12 -12
- package/lib/vendor/blamejs/lib/compliance-sanctions-fuzzy.js +4 -4
- package/lib/vendor/blamejs/lib/compliance-sanctions.js +4 -4
- package/lib/vendor/blamejs/lib/compliance.js +29 -29
- package/lib/vendor/blamejs/lib/content-credentials.js +38 -38
- package/lib/vendor/blamejs/lib/cookies.js +1 -1
- package/lib/vendor/blamejs/lib/cose.js +13 -13
- package/lib/vendor/blamejs/lib/cra-report.js +1 -1
- package/lib/vendor/blamejs/lib/crdt.js +1 -1
- package/lib/vendor/blamejs/lib/crypto-field.js +2 -2
- package/lib/vendor/blamejs/lib/crypto-xwing.js +7 -7
- package/lib/vendor/blamejs/lib/crypto.js +6 -6
- package/lib/vendor/blamejs/lib/csp.js +2 -2
- package/lib/vendor/blamejs/lib/cwt.js +4 -4
- package/lib/vendor/blamejs/lib/dark-patterns.js +2 -2
- package/lib/vendor/blamejs/lib/data-act.js +2 -2
- package/lib/vendor/blamejs/lib/db-file-lifecycle.js +4 -4
- package/lib/vendor/blamejs/lib/db-query.js +1 -1
- package/lib/vendor/blamejs/lib/db.js +6 -6
- package/lib/vendor/blamejs/lib/dbsc.js +13 -13
- package/lib/vendor/blamejs/lib/did.js +17 -17
- package/lib/vendor/blamejs/lib/dora.js +4 -4
- package/lib/vendor/blamejs/lib/dsr.js +1 -1
- package/lib/vendor/blamejs/lib/early-hints.js +2 -2
- package/lib/vendor/blamejs/lib/eat.js +4 -4
- package/lib/vendor/blamejs/lib/external-db-migrate.js +1 -1
- package/lib/vendor/blamejs/lib/external-db.js +1 -1
- package/lib/vendor/blamejs/lib/flag-cache.js +1 -1
- package/lib/vendor/blamejs/lib/flag-evaluation-context.js +2 -2
- package/lib/vendor/blamejs/lib/graphql-federation.js +13 -6
- package/lib/vendor/blamejs/lib/guard-agent-registry.js +5 -5
- package/lib/vendor/blamejs/lib/guard-archive.js +24 -24
- package/lib/vendor/blamejs/lib/guard-cidr.js +34 -34
- package/lib/vendor/blamejs/lib/guard-csv.js +1 -1
- package/lib/vendor/blamejs/lib/guard-domain.js +10 -10
- package/lib/vendor/blamejs/lib/guard-dsn.js +4 -4
- package/lib/vendor/blamejs/lib/guard-email.js +19 -19
- package/lib/vendor/blamejs/lib/guard-event-bus-payload.js +4 -4
- package/lib/vendor/blamejs/lib/guard-event-bus-topic.js +6 -6
- package/lib/vendor/blamejs/lib/guard-filename.js +7 -7
- package/lib/vendor/blamejs/lib/guard-graphql.js +9 -9
- package/lib/vendor/blamejs/lib/guard-html-wcag-tagwalk.js +1 -1
- package/lib/vendor/blamejs/lib/guard-html-wcag.js +4 -4
- package/lib/vendor/blamejs/lib/guard-html.js +7 -7
- package/lib/vendor/blamejs/lib/guard-idempotency-key.js +6 -6
- package/lib/vendor/blamejs/lib/guard-image.js +4 -4
- package/lib/vendor/blamejs/lib/guard-imap-command.js +17 -17
- package/lib/vendor/blamejs/lib/guard-jmap.js +20 -20
- package/lib/vendor/blamejs/lib/guard-json.js +12 -12
- package/lib/vendor/blamejs/lib/guard-jsonpath.js +3 -3
- package/lib/vendor/blamejs/lib/guard-jwt.js +4 -4
- package/lib/vendor/blamejs/lib/guard-list-id.js +7 -7
- package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +8 -8
- package/lib/vendor/blamejs/lib/guard-mail-compose.js +4 -4
- package/lib/vendor/blamejs/lib/guard-mail-move.js +5 -5
- package/lib/vendor/blamejs/lib/guard-mail-query.js +3 -3
- package/lib/vendor/blamejs/lib/guard-mail-reply.js +3 -3
- package/lib/vendor/blamejs/lib/guard-mail-sieve.js +6 -6
- package/lib/vendor/blamejs/lib/guard-managesieve-command.js +25 -25
- package/lib/vendor/blamejs/lib/guard-markdown.js +31 -31
- package/lib/vendor/blamejs/lib/guard-message-id.js +5 -5
- package/lib/vendor/blamejs/lib/guard-mime.js +1 -1
- package/lib/vendor/blamejs/lib/guard-oauth.js +3 -3
- package/lib/vendor/blamejs/lib/guard-pdf.js +6 -6
- package/lib/vendor/blamejs/lib/guard-pop3-command.js +11 -11
- package/lib/vendor/blamejs/lib/guard-posture-chain.js +5 -5
- package/lib/vendor/blamejs/lib/guard-regex.js +10 -10
- package/lib/vendor/blamejs/lib/guard-saga-config.js +5 -5
- package/lib/vendor/blamejs/lib/guard-smtp-command.js +6 -6
- package/lib/vendor/blamejs/lib/guard-snapshot-envelope.js +3 -3
- package/lib/vendor/blamejs/lib/guard-stream-args.js +4 -4
- package/lib/vendor/blamejs/lib/guard-svg.js +11 -11
- package/lib/vendor/blamejs/lib/guard-tenant-id.js +5 -5
- package/lib/vendor/blamejs/lib/guard-time.js +15 -15
- package/lib/vendor/blamejs/lib/guard-trace-context.js +4 -4
- package/lib/vendor/blamejs/lib/guard-uuid.js +11 -11
- package/lib/vendor/blamejs/lib/guard-xml.js +12 -12
- package/lib/vendor/blamejs/lib/guard-yaml.js +16 -16
- package/lib/vendor/blamejs/lib/honeytoken.js +5 -5
- package/lib/vendor/blamejs/lib/http-client-cache.js +18 -1
- package/lib/vendor/blamejs/lib/http-client.js +13 -10
- package/lib/vendor/blamejs/lib/http-message-signature.js +2 -2
- package/lib/vendor/blamejs/lib/iab-mspa.js +3 -3
- package/lib/vendor/blamejs/lib/iab-tcf.js +70 -70
- package/lib/vendor/blamejs/lib/inbox.js +4 -4
- package/lib/vendor/blamejs/lib/ip-utils.js +15 -15
- package/lib/vendor/blamejs/lib/jose-jwe-experimental.js +2 -2
- package/lib/vendor/blamejs/lib/json-path.js +3 -3
- package/lib/vendor/blamejs/lib/json-schema.js +1 -1
- package/lib/vendor/blamejs/lib/jsonapi.js +3 -3
- package/lib/vendor/blamejs/lib/jtd.js +2 -2
- package/lib/vendor/blamejs/lib/link-header.js +1 -1
- package/lib/vendor/blamejs/lib/local-db-thin.js +1 -1
- package/lib/vendor/blamejs/lib/log.js +8 -3
- package/lib/vendor/blamejs/lib/lro.js +4 -4
- package/lib/vendor/blamejs/lib/mail-agent.js +1 -1
- package/lib/vendor/blamejs/lib/mail-arc-sign.js +6 -6
- package/lib/vendor/blamejs/lib/mail-auth.js +44 -44
- package/lib/vendor/blamejs/lib/mail-bimi.js +3 -3
- package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +53 -45
- package/lib/vendor/blamejs/lib/mail-crypto-smime.js +6 -6
- package/lib/vendor/blamejs/lib/mail-dav.js +1 -1
- package/lib/vendor/blamejs/lib/mail-deploy.js +40 -40
- package/lib/vendor/blamejs/lib/mail-dkim.js +12 -12
- package/lib/vendor/blamejs/lib/mail-greylist.js +12 -12
- package/lib/vendor/blamejs/lib/mail-helo.js +1 -1
- package/lib/vendor/blamejs/lib/mail-journal.js +8 -8
- package/lib/vendor/blamejs/lib/mail-rbl.js +7 -7
- package/lib/vendor/blamejs/lib/mail-scan.js +7 -7
- package/lib/vendor/blamejs/lib/mail-send-deliver.js +2 -2
- package/lib/vendor/blamejs/lib/mail-server-imap.js +12 -12
- package/lib/vendor/blamejs/lib/mail-server-jmap.js +18 -20
- package/lib/vendor/blamejs/lib/mail-server-managesieve.js +4 -4
- package/lib/vendor/blamejs/lib/mail-server-mx.js +17 -17
- package/lib/vendor/blamejs/lib/mail-server-pop3.js +4 -4
- package/lib/vendor/blamejs/lib/mail-server-rate-limit.js +2 -2
- package/lib/vendor/blamejs/lib/mail-server-submission.js +21 -21
- package/lib/vendor/blamejs/lib/mail-sieve.js +2 -2
- package/lib/vendor/blamejs/lib/mail-spam-score.js +5 -5
- package/lib/vendor/blamejs/lib/mail-srs.js +12 -12
- package/lib/vendor/blamejs/lib/mail-store-fts.js +2 -2
- package/lib/vendor/blamejs/lib/mail-store.js +8 -8
- package/lib/vendor/blamejs/lib/mail-unsubscribe.js +4 -4
- package/lib/vendor/blamejs/lib/mail.js +4 -4
- package/lib/vendor/blamejs/lib/mcp-tool-registry.js +4 -4
- package/lib/vendor/blamejs/lib/mcp.js +15 -15
- package/lib/vendor/blamejs/lib/mdoc.js +2 -2
- package/lib/vendor/blamejs/lib/metrics.js +8 -8
- package/lib/vendor/blamejs/lib/middleware/age-gate.js +15 -3
- package/lib/vendor/blamejs/lib/middleware/ai-act-disclosure.js +11 -4
- package/lib/vendor/blamejs/lib/middleware/api-encrypt.js +7 -7
- package/lib/vendor/blamejs/lib/middleware/assetlinks.js +2 -2
- package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +2 -2
- package/lib/vendor/blamejs/lib/middleware/bearer-auth.js +5 -5
- package/lib/vendor/blamejs/lib/middleware/body-parser.js +5 -5
- package/lib/vendor/blamejs/lib/middleware/compose-pipeline.js +16 -16
- package/lib/vendor/blamejs/lib/middleware/csp-report.js +4 -4
- package/lib/vendor/blamejs/lib/middleware/daily-byte-quota.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/dpop.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/headers.js +2 -2
- package/lib/vendor/blamejs/lib/middleware/host-allowlist.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/idempotency-key.js +12 -12
- package/lib/vendor/blamejs/lib/middleware/nel.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +2 -2
- package/lib/vendor/blamejs/lib/middleware/protected-resource-metadata.js +2 -2
- package/lib/vendor/blamejs/lib/middleware/rate-limit.js +14 -5
- package/lib/vendor/blamejs/lib/middleware/require-aal.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +2 -2
- package/lib/vendor/blamejs/lib/middleware/require-content-type.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/require-methods.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/require-step-up.js +2 -2
- package/lib/vendor/blamejs/lib/middleware/scim-server.js +1 -1
- package/lib/vendor/blamejs/lib/middleware/security-txt.js +3 -3
- package/lib/vendor/blamejs/lib/middleware/sse.js +14 -8
- package/lib/vendor/blamejs/lib/middleware/tus-upload.js +12 -12
- package/lib/vendor/blamejs/lib/middleware/web-app-manifest.js +2 -2
- package/lib/vendor/blamejs/lib/network-byte-quota.js +1 -1
- package/lib/vendor/blamejs/lib/network-dns-resolver.js +23 -23
- package/lib/vendor/blamejs/lib/network-dns.js +29 -29
- package/lib/vendor/blamejs/lib/network-dnssec.js +33 -33
- package/lib/vendor/blamejs/lib/network-smtp-policy.js +10 -10
- package/lib/vendor/blamejs/lib/network-tls.js +100 -98
- package/lib/vendor/blamejs/lib/network-tsig.js +33 -33
- package/lib/vendor/blamejs/lib/nis2-report.js +1 -1
- package/lib/vendor/blamejs/lib/ntp-check.js +3 -3
- package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +17 -17
- package/lib/vendor/blamejs/lib/observability-tracer.js +6 -6
- package/lib/vendor/blamejs/lib/observability.js +8 -8
- package/lib/vendor/blamejs/lib/openapi-yaml.js +1 -1
- package/lib/vendor/blamejs/lib/openapi.js +1 -1
- package/lib/vendor/blamejs/lib/outbox.js +6 -6
- package/lib/vendor/blamejs/lib/pqc-agent.js +4 -4
- package/lib/vendor/blamejs/lib/pqc-software.js +1 -1
- package/lib/vendor/blamejs/lib/privacy-pass.js +5 -5
- package/lib/vendor/blamejs/lib/problem-details.js +5 -5
- package/lib/vendor/blamejs/lib/promise-pool.js +1 -1
- package/lib/vendor/blamejs/lib/protobuf-encoder.js +9 -1
- package/lib/vendor/blamejs/lib/queue.js +4 -2
- package/lib/vendor/blamejs/lib/redact.js +2 -2
- package/lib/vendor/blamejs/lib/request-helpers.js +1 -1
- package/lib/vendor/blamejs/lib/router.js +10 -10
- package/lib/vendor/blamejs/lib/safe-async.js +2 -2
- package/lib/vendor/blamejs/lib/safe-decompress.js +1 -1
- package/lib/vendor/blamejs/lib/safe-dns.js +71 -71
- package/lib/vendor/blamejs/lib/safe-ical.js +19 -19
- package/lib/vendor/blamejs/lib/safe-icap.js +24 -24
- package/lib/vendor/blamejs/lib/safe-jsonpath.js +2 -2
- package/lib/vendor/blamejs/lib/safe-mime.js +10 -10
- package/lib/vendor/blamejs/lib/safe-mount-info.js +3 -3
- package/lib/vendor/blamejs/lib/safe-redirect.js +1 -1
- package/lib/vendor/blamejs/lib/safe-sieve.js +23 -23
- package/lib/vendor/blamejs/lib/safe-smtp.js +1 -1
- package/lib/vendor/blamejs/lib/safe-url.js +1 -1
- package/lib/vendor/blamejs/lib/safe-vcard.js +14 -14
- package/lib/vendor/blamejs/lib/sandbox.js +5 -5
- package/lib/vendor/blamejs/lib/sec-cyber.js +1 -1
- package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +3 -3
- package/lib/vendor/blamejs/lib/self-update.js +3 -3
- package/lib/vendor/blamejs/lib/server-timing.js +3 -3
- package/lib/vendor/blamejs/lib/session-device-binding.js +7 -7
- package/lib/vendor/blamejs/lib/session.js +8 -8
- package/lib/vendor/blamejs/lib/sse.js +12 -5
- package/lib/vendor/blamejs/lib/standard-webhooks.js +4 -4
- package/lib/vendor/blamejs/lib/storage.js +2 -2
- package/lib/vendor/blamejs/lib/stream-throttle.js +3 -3
- package/lib/vendor/blamejs/lib/structured-fields.js +15 -15
- package/lib/vendor/blamejs/lib/subject.js +1 -1
- package/lib/vendor/blamejs/lib/tcpa-10dlc.js +1 -1
- package/lib/vendor/blamejs/lib/tenant-quota.js +3 -3
- package/lib/vendor/blamejs/lib/test-harness.js +1 -1
- package/lib/vendor/blamejs/lib/tracing.js +1 -1
- package/lib/vendor/blamejs/lib/tsa.js +5 -5
- package/lib/vendor/blamejs/lib/uri-template.js +5 -5
- package/lib/vendor/blamejs/lib/vault/index.js +2 -2
- package/lib/vendor/blamejs/lib/vault/seal-pem-file.js +4 -4
- package/lib/vendor/blamejs/lib/vc.js +2 -2
- package/lib/vendor/blamejs/lib/vendor-data.js +1 -1
- package/lib/vendor/blamejs/lib/watcher.js +4 -4
- package/lib/vendor/blamejs/lib/web-push-vapid.js +21 -21
- package/lib/vendor/blamejs/lib/webhook.js +2 -2
- package/lib/vendor/blamejs/lib/websocket.js +5 -5
- package/lib/vendor/blamejs/lib/worker-pool.js +3 -3
- package/lib/vendor/blamejs/lib/ws-client.js +24 -24
- package/lib/vendor/blamejs/lib/xml-c14n.js +2 -2
- package/lib/vendor/blamejs/package.json +1 -1
- package/lib/vendor/blamejs/release-notes/v0.13.x.json +1248 -0
- package/lib/vendor/blamejs/release-notes/v0.14.0.json +43 -0
- package/lib/vendor/blamejs/release-notes/v0.14.1.json +60 -0
- package/lib/vendor/blamejs/release-notes/v0.14.2.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.14.3.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.14.4.json +18 -0
- package/lib/vendor/blamejs/release-notes/v0.14.5.json +18 -0
- package/lib/vendor/blamejs/test/00-primitives.js +15 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +22 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/auth-jar.test.js +29 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +105 -9
- package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +15 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/graphql-federation.test.js +10 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +12 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +7 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +11 -5
- package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-registry.test.js +34 -0
- package/lib/vendor/blamejs/test/layer-0-primitives/sse.test.js +12 -0
- package/package.json +1 -1
- package/lib/vendor/blamejs/release-notes/v0.13.0.json +0 -22
- package/lib/vendor/blamejs/release-notes/v0.13.1.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.10.json +0 -44
- package/lib/vendor/blamejs/release-notes/v0.13.11.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.12.json +0 -36
- package/lib/vendor/blamejs/release-notes/v0.13.13.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.14.json +0 -22
- package/lib/vendor/blamejs/release-notes/v0.13.15.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.16.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.17.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.18.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.19.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.2.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.20.json +0 -22
- package/lib/vendor/blamejs/release-notes/v0.13.21.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.22.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.23.json +0 -42
- package/lib/vendor/blamejs/release-notes/v0.13.24.json +0 -26
- package/lib/vendor/blamejs/release-notes/v0.13.25.json +0 -39
- package/lib/vendor/blamejs/release-notes/v0.13.26.json +0 -31
- package/lib/vendor/blamejs/release-notes/v0.13.27.json +0 -34
- package/lib/vendor/blamejs/release-notes/v0.13.28.json +0 -30
- package/lib/vendor/blamejs/release-notes/v0.13.29.json +0 -30
- package/lib/vendor/blamejs/release-notes/v0.13.3.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.30.json +0 -30
- package/lib/vendor/blamejs/release-notes/v0.13.31.json +0 -26
- package/lib/vendor/blamejs/release-notes/v0.13.32.json +0 -34
- package/lib/vendor/blamejs/release-notes/v0.13.33.json +0 -26
- package/lib/vendor/blamejs/release-notes/v0.13.34.json +0 -48
- package/lib/vendor/blamejs/release-notes/v0.13.35.json +0 -35
- package/lib/vendor/blamejs/release-notes/v0.13.36.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.37.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.38.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.39.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.4.json +0 -23
- package/lib/vendor/blamejs/release-notes/v0.13.40.json +0 -22
- package/lib/vendor/blamejs/release-notes/v0.13.41.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.42.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.43.json +0 -39
- package/lib/vendor/blamejs/release-notes/v0.13.44.json +0 -31
- package/lib/vendor/blamejs/release-notes/v0.13.45.json +0 -31
- package/lib/vendor/blamejs/release-notes/v0.13.46.json +0 -35
- package/lib/vendor/blamejs/release-notes/v0.13.5.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.6.json +0 -18
- package/lib/vendor/blamejs/release-notes/v0.13.7.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.8.json +0 -27
- package/lib/vendor/blamejs/release-notes/v0.13.9.json +0 -27
|
@@ -98,8 +98,8 @@ var JSCAL_NOTE_STATUS = Object.freeze({
|
|
|
98
98
|
|
|
99
99
|
// Recurrence-expansion caps. Mirror b.safeIcal's RRULE limits so the
|
|
100
100
|
// expand path can't outpace what the parser already permitted.
|
|
101
|
-
var MAX_EXPAND_INSTANCES = 4096; //
|
|
102
|
-
var MAX_EXPAND_SPAN_MS = 10 * 365 * 24 * 60 * 60 * 1000; // allow:raw-
|
|
101
|
+
var MAX_EXPAND_INSTANCES = 4096; // instance count cap, not bytes
|
|
102
|
+
var MAX_EXPAND_SPAN_MS = 10 * 365 * 24 * 60 * 60 * 1000; // allow:raw-time-literal — 10 year max expansion span
|
|
103
103
|
|
|
104
104
|
/**
|
|
105
105
|
* @primitive b.calendar.validate
|
|
@@ -138,7 +138,7 @@ function validate(jsCal) {
|
|
|
138
138
|
throw new CalendarError("calendar/no-uid",
|
|
139
139
|
"b.calendar.validate: uid is required (RFC 8984 §5.1.4)");
|
|
140
140
|
}
|
|
141
|
-
if (jsCal.uid.length > 1024) { //
|
|
141
|
+
if (jsCal.uid.length > 1024) { // anti-DoS uid length cap
|
|
142
142
|
throw new CalendarError("calendar/oversize-uid",
|
|
143
143
|
"b.calendar.validate: uid exceeds 1024 bytes");
|
|
144
144
|
}
|
|
@@ -183,7 +183,7 @@ function validate(jsCal) {
|
|
|
183
183
|
// refuse.
|
|
184
184
|
if (typeof jsCal.percentComplete !== "number" || !isFinite(jsCal.percentComplete) ||
|
|
185
185
|
!Number.isInteger(jsCal.percentComplete) ||
|
|
186
|
-
jsCal.percentComplete < 0 || jsCal.percentComplete > 100) { //
|
|
186
|
+
jsCal.percentComplete < 0 || jsCal.percentComplete > 100) { // RFC 8984 §6 percent range
|
|
187
187
|
throw new CalendarError("calendar/bad-percent",
|
|
188
188
|
"b.calendar.validate: Task.percentComplete MUST be an integer in 0..100 (RFC 8984 §6.4.4 UnsignedInt)");
|
|
189
189
|
}
|
|
@@ -586,7 +586,7 @@ function expandRecurrence(event, opts) {
|
|
|
586
586
|
// specified, they are expanded independently and the resulting
|
|
587
587
|
// instances are UNIONed (deduped + sorted ascending). Per-rule
|
|
588
588
|
// count caps apply per-rule per the same section.
|
|
589
|
-
var globalStepBudget = MAX_EXPAND_INSTANCES * 366; //
|
|
589
|
+
var globalStepBudget = MAX_EXPAND_INSTANCES * 366; // total days/year step budget shared across all rules
|
|
590
590
|
var seen = Object.create(null);
|
|
591
591
|
var unioned = [];
|
|
592
592
|
for (var rrIndex = 0; rrIndex < event.recurrenceRules.length; rrIndex += 1) {
|
|
@@ -644,7 +644,7 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
644
644
|
byMonthSet = Object.create(null);
|
|
645
645
|
for (var mi = 0; mi < rule.byMonth.length; mi += 1) {
|
|
646
646
|
var mn = parseInt(rule.byMonth[mi], 10);
|
|
647
|
-
if (isFinite(mn) && mn >= 1 && mn <= 12) byMonthSet[mn] = true; //
|
|
647
|
+
if (isFinite(mn) && mn >= 1 && mn <= 12) byMonthSet[mn] = true; // 12 calendar months
|
|
648
648
|
}
|
|
649
649
|
}
|
|
650
650
|
var byMonthDaySet = null;
|
|
@@ -652,7 +652,7 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
652
652
|
byMonthDaySet = Object.create(null);
|
|
653
653
|
for (var mdi = 0; mdi < rule.byMonthDay.length; mdi += 1) {
|
|
654
654
|
var mdn = parseInt(rule.byMonthDay[mdi], 10);
|
|
655
|
-
if (isFinite(mdn) && mdn !== 0 && mdn >= -31 && mdn <= 31) byMonthDaySet[mdn] = true; //
|
|
655
|
+
if (isFinite(mdn) && mdn !== 0 && mdn >= -31 && mdn <= 31) byMonthDaySet[mdn] = true; // calendar day-of-month bounds
|
|
656
656
|
}
|
|
657
657
|
}
|
|
658
658
|
// RFC 5545 §3.3.10 — BYWEEKNO refines yearly recurrences to specific
|
|
@@ -663,7 +663,7 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
663
663
|
byWeekNoSet = Object.create(null);
|
|
664
664
|
for (var wni = 0; wni < rule.byWeekNo.length; wni += 1) {
|
|
665
665
|
var wn = parseInt(rule.byWeekNo[wni], 10);
|
|
666
|
-
if (isFinite(wn) && wn !== 0 && wn >= -53 && wn <= 53) byWeekNoSet[wn] = true; //
|
|
666
|
+
if (isFinite(wn) && wn !== 0 && wn >= -53 && wn <= 53) byWeekNoSet[wn] = true; // ISO 8601 week-number bounds
|
|
667
667
|
}
|
|
668
668
|
}
|
|
669
669
|
// BYYEARDAY — day-of-year (1..366 or -1..-366; negative counts from
|
|
@@ -673,7 +673,7 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
673
673
|
byYearDaySet = Object.create(null);
|
|
674
674
|
for (var ydi = 0; ydi < rule.byYearDay.length; ydi += 1) {
|
|
675
675
|
var yd = parseInt(rule.byYearDay[ydi], 10);
|
|
676
|
-
if (isFinite(yd) && yd !== 0 && yd >= -366 && yd <= 366) byYearDaySet[yd] = true; //
|
|
676
|
+
if (isFinite(yd) && yd !== 0 && yd >= -366 && yd <= 366) byYearDaySet[yd] = true; // day-of-year bounds
|
|
677
677
|
}
|
|
678
678
|
}
|
|
679
679
|
// BYHOUR / BYMINUTE / BYSECOND — time-of-day filters. RFC 5545 §3.3.10
|
|
@@ -695,9 +695,9 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
695
695
|
// unfiltered candidate per RFC 5545's tolerant grammar.
|
|
696
696
|
return hasAny ? s : null;
|
|
697
697
|
}
|
|
698
|
-
var byHourSet = _bySet(rule.byHour, 0, 23); //
|
|
699
|
-
var byMinuteSet = _bySet(rule.byMinute, 0, 59); //
|
|
700
|
-
var bySecondSet = _bySet(rule.bySecond, 0, 60); // allow:raw-
|
|
698
|
+
var byHourSet = _bySet(rule.byHour, 0, 23); // RFC 5545 hour range
|
|
699
|
+
var byMinuteSet = _bySet(rule.byMinute, 0, 59); // RFC 5545 minute range
|
|
700
|
+
var bySecondSet = _bySet(rule.bySecond, 0, 60); // allow:raw-time-literal — second-of-minute bound, not a duration
|
|
701
701
|
|
|
702
702
|
function _isoWeekParts(d) {
|
|
703
703
|
// ISO 8601 week-of-year + week-year. The week-YEAR can differ
|
|
@@ -706,10 +706,10 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
706
706
|
// Returns { week, year }.
|
|
707
707
|
var tmp = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
|
|
708
708
|
var dayOfWeek = tmp.getUTCDay() || 7;
|
|
709
|
-
tmp.setUTCDate(tmp.getUTCDate() + 4 - dayOfWeek); //
|
|
709
|
+
tmp.setUTCDate(tmp.getUTCDate() + 4 - dayOfWeek); // ISO week-year anchor (Thursday)
|
|
710
710
|
var weekYear = tmp.getUTCFullYear();
|
|
711
711
|
var yearStart = new Date(Date.UTC(weekYear, 0, 1));
|
|
712
|
-
var week = Math.ceil((((tmp - yearStart) / 86400000) + 1) / 7); // allow:raw-time-literal — 86400000 ms/day, 7 days/week
|
|
712
|
+
var week = Math.ceil((((tmp - yearStart) / 86400000) + 1) / 7); // allow:raw-time-literal — 86400000 ms/day, 7 days/week
|
|
713
713
|
return { week: week, year: weekYear };
|
|
714
714
|
}
|
|
715
715
|
function _isoWeekOf(d) {
|
|
@@ -717,10 +717,10 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
717
717
|
}
|
|
718
718
|
function _yearDayOf(d) {
|
|
719
719
|
var startOfYear = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
720
|
-
return Math.floor((d - startOfYear) / 86400000) + 1; // allow:raw-time-literal — 86400000 ms/day
|
|
720
|
+
return Math.floor((d - startOfYear) / 86400000) + 1; // allow:raw-time-literal — 86400000 ms/day
|
|
721
721
|
}
|
|
722
722
|
function _daysInYear(year) {
|
|
723
|
-
return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) ? 366 : 365; //
|
|
723
|
+
return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) ? 366 : 365; // Gregorian leap-year rule
|
|
724
724
|
}
|
|
725
725
|
function _matchesBy(t) {
|
|
726
726
|
var d = new Date(t);
|
|
@@ -738,7 +738,7 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
738
738
|
// a future explicit knob if demand surfaces.
|
|
739
739
|
var iso = _isoWeekParts(d);
|
|
740
740
|
if (iso.year !== d.getUTCFullYear()) return false;
|
|
741
|
-
var lastWeek = _isoWeekOf(new Date(Date.UTC(d.getUTCFullYear(), 11, 28))); //
|
|
741
|
+
var lastWeek = _isoWeekOf(new Date(Date.UTC(d.getUTCFullYear(), 11, 28))); // Dec 28 always in last ISO week
|
|
742
742
|
if (!byWeekNoSet[iso.week] && !byWeekNoSet[-(lastWeek - iso.week + 1)]) return false;
|
|
743
743
|
}
|
|
744
744
|
if (byYearDaySet) {
|
|
@@ -814,7 +814,7 @@ function _bySetPosArray(raw) {
|
|
|
814
814
|
var out = [];
|
|
815
815
|
for (var i = 0; i < raw.length; i += 1) {
|
|
816
816
|
var n = parseInt(raw[i], 10);
|
|
817
|
-
if (isFinite(n) && n !== 0 && n >= -366 && n <= 366) out.push(n); //
|
|
817
|
+
if (isFinite(n) && n !== 0 && n >= -366 && n <= 366) out.push(n); // RFC 5545 §3.3.10 bysetpos range
|
|
818
818
|
}
|
|
819
819
|
return out.length > 0 ? out : null;
|
|
820
820
|
}
|
|
@@ -864,12 +864,12 @@ function _expandWithBysetpos(ctx) {
|
|
|
864
864
|
// periods (e.g. YEARLY = 366 days) can't loop forever.
|
|
865
865
|
var candidates = [];
|
|
866
866
|
var dayMs = period.startMs;
|
|
867
|
-
var safety = 400; //
|
|
867
|
+
var safety = 400; // period day cap (covers leap year 366 + slack)
|
|
868
868
|
while (dayMs <= period.endMs && safety-- > 0 && stepBudgetRef.remaining > 0) {
|
|
869
869
|
stepBudgetRef.remaining -= 1;
|
|
870
870
|
var candidate = _withTimeOfDay(dayMs, hh, mm, ss, ms);
|
|
871
871
|
if (matchesBy(candidate)) candidates.push(candidate);
|
|
872
|
-
dayMs += 86400000; // allow:raw-time-literal — 86400000 ms/day step
|
|
872
|
+
dayMs += 86400000; // allow:raw-time-literal — 86400000 ms/day step
|
|
873
873
|
}
|
|
874
874
|
|
|
875
875
|
// Sort + apply BYSETPOS. Positive index 1-based from start;
|
|
@@ -919,8 +919,8 @@ function _periodForIndex(freq, startDate, offset) {
|
|
|
919
919
|
}
|
|
920
920
|
if (freq === "monthly") {
|
|
921
921
|
var bm = startDate.getUTCMonth() + offset;
|
|
922
|
-
var by = startDate.getUTCFullYear() + Math.floor(bm / 12); //
|
|
923
|
-
var mm = ((bm % 12) + 12) % 12; //
|
|
922
|
+
var by = startDate.getUTCFullYear() + Math.floor(bm / 12); // months/year
|
|
923
|
+
var mm = ((bm % 12) + 12) % 12; // months/year
|
|
924
924
|
var ms = Date.UTC(by, mm, 1, 0, 0, 0, 0);
|
|
925
925
|
var me = Date.UTC(by, mm + 1, 1, 0, 0, 0, 0) - 1;
|
|
926
926
|
return { startMs: ms, endMs: me };
|
|
@@ -928,9 +928,9 @@ function _periodForIndex(freq, startDate, offset) {
|
|
|
928
928
|
// weekly — align to WKST=Monday (RFC 5545 default WKST).
|
|
929
929
|
var anchor = new Date(Date.UTC(startDate.getUTCFullYear(), startDate.getUTCMonth(), startDate.getUTCDate(), 0, 0, 0, 0));
|
|
930
930
|
var dow = anchor.getUTCDay() || 7;
|
|
931
|
-
anchor.setUTCDate(anchor.getUTCDate() - (dow - 1) + offset * 7); //
|
|
931
|
+
anchor.setUTCDate(anchor.getUTCDate() - (dow - 1) + offset * 7); // days/week
|
|
932
932
|
var ws = anchor.getTime();
|
|
933
|
-
var we = ws + 7 * 86400000 - 1; // allow:raw-
|
|
933
|
+
var we = ws + 7 * 86400000 - 1; // allow:raw-time-literal — 7-day window
|
|
934
934
|
return { startMs: ws, endMs: we };
|
|
935
935
|
}
|
|
936
936
|
|
|
@@ -1021,7 +1021,7 @@ function _vtodoToJsCalTask(vt) {
|
|
|
1021
1021
|
var percent = _firstValue(props["PERCENT-COMPLETE"]);
|
|
1022
1022
|
if (percent !== null && percent !== undefined) {
|
|
1023
1023
|
var pn = parseInt(percent, 10);
|
|
1024
|
-
if (isFinite(pn) && pn >= 0 && pn <= 100) jsCal.percentComplete = pn; //
|
|
1024
|
+
if (isFinite(pn) && pn >= 0 && pn <= 100) jsCal.percentComplete = pn; // RFC 8984 §6 percent range
|
|
1025
1025
|
}
|
|
1026
1026
|
var completed = _firstValue(props.COMPLETED);
|
|
1027
1027
|
if (completed) jsCal.progressUpdated = _icalDateTimeToUtc(completed);
|
|
@@ -1202,7 +1202,7 @@ function _advance(ms, freq, interval) {
|
|
|
1202
1202
|
var d = new Date(ms);
|
|
1203
1203
|
switch (freq) {
|
|
1204
1204
|
case "daily": d.setUTCDate(d.getUTCDate() + interval); break;
|
|
1205
|
-
case "weekly": d.setUTCDate(d.getUTCDate() + 7 * interval); break; //
|
|
1205
|
+
case "weekly": d.setUTCDate(d.getUTCDate() + 7 * interval); break; // 7 days/week
|
|
1206
1206
|
case "monthly": d.setUTCMonth(d.getUTCMonth() + interval); break;
|
|
1207
1207
|
case "yearly": d.setUTCFullYear(d.getUTCFullYear() + interval); break;
|
|
1208
1208
|
case "hourly": d.setUTCHours(d.getUTCHours() + interval); break;
|
|
@@ -1227,10 +1227,10 @@ function _foldLine(s) {
|
|
|
1227
1227
|
// RFC 5545 §3.1 — content lines SHOULD NOT exceed 75 octets; fold
|
|
1228
1228
|
// with CRLF + leading space. We let the joining code add the
|
|
1229
1229
|
// trailing CRLF; this helper only inserts the intra-line fold.
|
|
1230
|
-
if (s.length <= 75) return s; //
|
|
1230
|
+
if (s.length <= 75) return s; // RFC 5545 §3.1 line-length cap
|
|
1231
1231
|
var out = "";
|
|
1232
|
-
for (var i = 0; i < s.length; i += 73) { //
|
|
1233
|
-
out += (i === 0 ? "" : "\r\n ") + s.slice(i, i + 73); //
|
|
1232
|
+
for (var i = 0; i < s.length; i += 73) { // 73 = 75 minus the CR/LF wrap
|
|
1233
|
+
out += (i === 0 ? "" : "\r\n ") + s.slice(i, i + 73); // same cap
|
|
1234
1234
|
}
|
|
1235
1235
|
return out;
|
|
1236
1236
|
}
|
|
@@ -58,15 +58,15 @@ var { defineClass } = require("./framework-error");
|
|
|
58
58
|
|
|
59
59
|
var CborError = defineClass("CborError", { alwaysPermanent: true });
|
|
60
60
|
|
|
61
|
-
var DEFAULT_MAX_DEPTH = 64; //
|
|
62
|
-
var ABSOLUTE_MAX_DEPTH = 256; //
|
|
61
|
+
var DEFAULT_MAX_DEPTH = 64; // nesting depth, not a size
|
|
62
|
+
var ABSOLUTE_MAX_DEPTH = 256; // nesting depth ceiling, not a size
|
|
63
63
|
var DEFAULT_MAX_BYTES = C.BYTES.mib(16);
|
|
64
64
|
var ABSOLUTE_MAX_BYTES = C.BYTES.mib(64);
|
|
65
65
|
|
|
66
66
|
// CBOR / IEEE-754 wire constants (not byte sizes — protocol values).
|
|
67
|
-
var CBOR_AI_1BYTE = 24; //
|
|
68
|
-
var BYTES_64BIT = 8; //
|
|
69
|
-
var FLOAT16_MANT_DIV = 1024; //
|
|
67
|
+
var CBOR_AI_1BYTE = 24; // RFC 8949 §3 additional-info boundary (inline vs 1-byte argument)
|
|
68
|
+
var BYTES_64BIT = 8; // width of a CBOR uint64 / float64 argument, not a cap
|
|
69
|
+
var FLOAT16_MANT_DIV = 1024; // IEEE 754 half-precision mantissa scale (2^10), not a size
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
72
|
* @primitive b.cbor.Tag
|
|
@@ -110,9 +110,9 @@ function _capInt(v, dflt, absolute) {
|
|
|
110
110
|
// + SCITT depend on this — emitting float64 for a value representable
|
|
111
111
|
// in float16 is non-canonical and trips requireDeterministic.
|
|
112
112
|
function _encodeFloat(value) {
|
|
113
|
-
if (Number.isNaN(value)) return Buffer.from([0xf9, 0x7e, 0x00]); //
|
|
114
|
-
if (value === Infinity) return Buffer.from([0xf9, 0x7c, 0x00]); //
|
|
115
|
-
if (value === -Infinity) return Buffer.from([0xf9, 0xfc, 0x00]); //
|
|
113
|
+
if (Number.isNaN(value)) return Buffer.from([0xf9, 0x7e, 0x00]); // canonical half NaN (RFC 8949 §4.2.1)
|
|
114
|
+
if (value === Infinity) return Buffer.from([0xf9, 0x7c, 0x00]); // half +Inf
|
|
115
|
+
if (value === -Infinity) return Buffer.from([0xf9, 0xfc, 0x00]); // half -Inf
|
|
116
116
|
var half = _doubleToHalfBits(value);
|
|
117
117
|
if (half >= 0) { var hb = Buffer.alloc(3); hb[0] = 0xf9; hb.writeUInt16BE(half, 1); return hb; }
|
|
118
118
|
var f4 = Buffer.alloc(5); f4[0] = 0xfa; f4.writeFloatBE(value, 1);
|
|
@@ -167,10 +167,10 @@ function _head(major, argument) {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
function _encodeValue(value, opts) {
|
|
170
|
-
if (value === null) return Buffer.from([0xf6]); //
|
|
171
|
-
if (value === undefined) return Buffer.from([0xf7]); //
|
|
172
|
-
if (value === true) return Buffer.from([0xf5]); //
|
|
173
|
-
if (value === false) return Buffer.from([0xf4]); //
|
|
170
|
+
if (value === null) return Buffer.from([0xf6]); // CBOR null simple value
|
|
171
|
+
if (value === undefined) return Buffer.from([0xf7]); // CBOR undefined simple value
|
|
172
|
+
if (value === true) return Buffer.from([0xf5]); // CBOR true simple value
|
|
173
|
+
if (value === false) return Buffer.from([0xf4]); // CBOR false simple value
|
|
174
174
|
|
|
175
175
|
if (typeof value === "number") {
|
|
176
176
|
// Exact integers within the safe range encode as CBOR integers;
|
|
@@ -251,7 +251,7 @@ function build(opts) {
|
|
|
251
251
|
// regex. RFC 7234 §5.2 token directives are tiny in practice
|
|
252
252
|
// (max-age = 7 chars, stale-while-revalidate = 22); 64 is the
|
|
253
253
|
// operator-headroom ceiling.
|
|
254
|
-
var DIRECTIVE_MAX = 64; //
|
|
254
|
+
var DIRECTIVE_MAX = 64; // directive key/value length cap
|
|
255
255
|
for (var e = 0; e < ekeys.length; e += 1) {
|
|
256
256
|
var ek = ekeys[e];
|
|
257
257
|
if (ek.length === 0 || ek.length > DIRECTIVE_MAX || !DIRECTIVE_KEY_RE.test(ek)) {
|
|
@@ -69,8 +69,8 @@ var log = boot("cert");
|
|
|
69
69
|
var DEFAULT_RENEW_INTERVAL_MS = C.TIME.hours(6);
|
|
70
70
|
var DEFAULT_MIN_DAYS_BEFORE_EXPIRY = 14;
|
|
71
71
|
var DEFAULT_OCSP_REFRESH_MS = C.TIME.hours(12);
|
|
72
|
-
var MAX_DOMAINS_PER_CERT = 100; //
|
|
73
|
-
var MAX_CERTS_PER_MANAGER = 1000; //
|
|
72
|
+
var MAX_DOMAINS_PER_CERT = 100; // operator-facing manifest size cap, not a byte count (RFC 6066 SNI permits more)
|
|
73
|
+
var MAX_CERTS_PER_MANAGER = 1000; // operator-facing manifest size cap, not a byte count
|
|
74
74
|
|
|
75
75
|
function _positiveFiniteOrDefault(value, defaultValue, label, code) {
|
|
76
76
|
if (value === undefined || value === null) return defaultValue;
|
|
@@ -481,9 +481,9 @@ function create(opts) {
|
|
|
481
481
|
// counts. The framework's leaf-key alg names embed the bit length
|
|
482
482
|
// verbatim ("rsa-2048" / "rsa-3072" / "rsa-4096"), so the literals
|
|
483
483
|
// here are protocol-constant references.
|
|
484
|
-
var RSA_MODULUS_BITS_2048 = 2048; //
|
|
485
|
-
var RSA_MODULUS_BITS_3072 = 3072; //
|
|
486
|
-
var RSA_MODULUS_BITS_4096 = 4096; //
|
|
484
|
+
var RSA_MODULUS_BITS_2048 = 2048; // RSA modulus length, not a byte count
|
|
485
|
+
var RSA_MODULUS_BITS_3072 = 3072; // RSA modulus length, not a byte count
|
|
486
|
+
var RSA_MODULUS_BITS_4096 = 4096; // RSA modulus length, not a byte count
|
|
487
487
|
|
|
488
488
|
function _generateLeafKeypair(keyAlg) {
|
|
489
489
|
switch (keyAlg) {
|
|
@@ -275,8 +275,8 @@ function parse(envelope) {
|
|
|
275
275
|
|
|
276
276
|
// ---- validate / isValid (non-throwing spec check) ----
|
|
277
277
|
|
|
278
|
-
var INT_MIN = -2147483648; //
|
|
279
|
-
var INT_MAX = 2147483647; //
|
|
278
|
+
var INT_MIN = -2147483648; // CloudEvents Integer type range
|
|
279
|
+
var INT_MAX = 2147483647; // CloudEvents Integer type range
|
|
280
280
|
// JSON-formatted media type essence (after the parameters are stripped):
|
|
281
281
|
// type/json or type/anything+json. Each run is bounded by the single "/"
|
|
282
282
|
// separator so the match is linear (no overlapping quantifiers → no
|
|
@@ -515,8 +515,8 @@ function _pctEncode(s) {
|
|
|
515
515
|
var out = "";
|
|
516
516
|
for (var i = 0; i < bytes.length; i += 1) {
|
|
517
517
|
var by = bytes[i];
|
|
518
|
-
if (by < 0x21 || by > 0x7E || by === 0x22 || by === 0x25) { //
|
|
519
|
-
out += "%" + bytes[i].toString(16).toUpperCase().padStart(2, "0"); //
|
|
518
|
+
if (by < 0x21 || by > 0x7E || by === 0x22 || by === 0x25) { // printable-ASCII bounds + double-quote and percent (HTTP binding header rule)
|
|
519
|
+
out += "%" + bytes[i].toString(16).toUpperCase().padStart(2, "0"); // 16 is the hex radix
|
|
520
520
|
} else {
|
|
521
521
|
out += String.fromCharCode(by);
|
|
522
522
|
}
|
|
@@ -528,7 +528,7 @@ function _pctDecode(s) {
|
|
|
528
528
|
var i = 0;
|
|
529
529
|
while (i < s.length) {
|
|
530
530
|
if (s[i] === "%" && /^[0-9A-Fa-f]{2}$/.test(s.slice(i + 1, i + 3))) {
|
|
531
|
-
bytes.push(parseInt(s.slice(i + 1, i + 3), 16)); //
|
|
531
|
+
bytes.push(parseInt(s.slice(i + 1, i + 3), 16)); // 16 is the hex radix
|
|
532
532
|
i += 3;
|
|
533
533
|
} else {
|
|
534
534
|
var ch = Buffer.from(s[i], "utf8");
|
|
@@ -107,14 +107,14 @@ var OID = Object.freeze({
|
|
|
107
107
|
});
|
|
108
108
|
|
|
109
109
|
// Refusal ceilings.
|
|
110
|
-
var MAX_DEPTH = 32; //
|
|
110
|
+
var MAX_DEPTH = 32; // ASN.1 recursion ceiling
|
|
111
111
|
var DEFAULT_MAX_LEN = 64 * 1024 * 1024; // allow:raw-byte-literal — 64 MiB default decode cap
|
|
112
112
|
|
|
113
113
|
// Universal-tag bytes used in encode helpers.
|
|
114
|
-
var TAG_SEQUENCE = 0x30; //
|
|
115
|
-
var TAG_SET = 0x31; //
|
|
116
|
-
var TAG_UTCTIME = 0x17; //
|
|
117
|
-
var TAG_GENTIME = 0x18; //
|
|
114
|
+
var TAG_SEQUENCE = 0x30; // ASN.1 SEQUENCE constructed
|
|
115
|
+
var TAG_SET = 0x31; // ASN.1 SET constructed
|
|
116
|
+
var TAG_UTCTIME = 0x17; // UTCTime universal
|
|
117
|
+
var TAG_GENTIME = 0x18; // GeneralizedTime universal
|
|
118
118
|
|
|
119
119
|
/**
|
|
120
120
|
* @primitive b.cms.encodeSignedData
|
|
@@ -197,7 +197,7 @@ function encodeSignedData(opts) {
|
|
|
197
197
|
|
|
198
198
|
// SignedData SEQUENCE per §5.1.
|
|
199
199
|
var signedDataSeq = asn1.writeNode(TAG_SEQUENCE, Buffer.concat([
|
|
200
|
-
asn1.writeInteger(Buffer.from([1])), //
|
|
200
|
+
asn1.writeInteger(Buffer.from([1])), // CMSVersion 1 per §5.1
|
|
201
201
|
digestAlgs,
|
|
202
202
|
encapInfo,
|
|
203
203
|
certsBlock,
|
|
@@ -258,7 +258,7 @@ function encodeEnvelopedData(opts) {
|
|
|
258
258
|
"encodeEnvelopedData: opts.recipients must be a non-empty array");
|
|
259
259
|
}
|
|
260
260
|
// Fresh ChaCha20-Poly1305 content key.
|
|
261
|
-
var contentKey = bCrypto.generateBytes(32); //
|
|
261
|
+
var contentKey = bCrypto.generateBytes(32); // 256-bit ChaCha20 key
|
|
262
262
|
|
|
263
263
|
// recipientInfos SET — one KEMRecipientInfo per recipient.
|
|
264
264
|
var ris = opts.recipients.map(function (r) {
|
|
@@ -272,7 +272,7 @@ function encodeEnvelopedData(opts) {
|
|
|
272
272
|
// EnvelopedData SEQUENCE per §6.1. CMSVersion 4 (RFC 9629 §3 — when
|
|
273
273
|
// any RecipientInfo is OtherRecipientInfo, here KEMRecipientInfo).
|
|
274
274
|
var envelopedSeq = asn1.writeNode(TAG_SEQUENCE, Buffer.concat([
|
|
275
|
-
asn1.writeInteger(Buffer.from([4])), //
|
|
275
|
+
asn1.writeInteger(Buffer.from([4])), // CMSVersion 4 per RFC 9629 §3
|
|
276
276
|
recipientInfosSet,
|
|
277
277
|
encContent,
|
|
278
278
|
]));
|
|
@@ -334,7 +334,7 @@ function decode(buf, opts) {
|
|
|
334
334
|
}
|
|
335
335
|
if (!(node.tag === asn1.TAG.SEQUENCE && node.constructed)) {
|
|
336
336
|
throw new CmsCodecError("cms/bad-content-info",
|
|
337
|
-
"decode: top-level must be SEQUENCE (got tag 0x" + node.tag.toString(16) + ")"); //
|
|
337
|
+
"decode: top-level must be SEQUENCE (got tag 0x" + node.tag.toString(16) + ")"); // hex radix for error-message formatting
|
|
338
338
|
}
|
|
339
339
|
// ContentInfo SEQUENCE children: { contentType OID, [0] EXPLICIT ANY }.
|
|
340
340
|
var children;
|
|
@@ -399,7 +399,7 @@ function _writeImplicitConstructed(tagNumber, payload) {
|
|
|
399
399
|
// [N] IMPLICIT context-specific CONSTRUCTED — for wrapping SEQUENCE /
|
|
400
400
|
// SET payloads (e.g. certificates [0], crls [1], OtherRecipientInfo
|
|
401
401
|
// value).
|
|
402
|
-
var tagByte = 0xa0 | (tagNumber & 0x1f); //
|
|
402
|
+
var tagByte = 0xa0 | (tagNumber & 0x1f); // context-specific constructed mask
|
|
403
403
|
return asn1.writeNode(tagByte, payload);
|
|
404
404
|
}
|
|
405
405
|
|
|
@@ -410,7 +410,7 @@ function _writeImplicitPrimitive(tagNumber, value) {
|
|
|
410
410
|
// reject the structure (Codex P1 finding on PR #102 — RecipientIdentifier
|
|
411
411
|
// CHOICE's SubjectKeyIdentifier alternative is `[0] IMPLICIT OCTET STRING`,
|
|
412
412
|
// a primitive type).
|
|
413
|
-
var tagByte = 0x80 | (tagNumber & 0x1f); //
|
|
413
|
+
var tagByte = 0x80 | (tagNumber & 0x1f); // context-specific primitive mask
|
|
414
414
|
return asn1.writeNode(tagByte, value);
|
|
415
415
|
}
|
|
416
416
|
|
|
@@ -459,7 +459,7 @@ function _signerInfo(signer, msgDigest, digestOid) {
|
|
|
459
459
|
// SignerInfo, and use the original `31 LL VV...` form as the signature
|
|
460
460
|
// input.
|
|
461
461
|
var signatureInput = signedAttrs;
|
|
462
|
-
var signedAttrsImplicit = Buffer.concat([Buffer.from([0xa0]), //
|
|
462
|
+
var signedAttrsImplicit = Buffer.concat([Buffer.from([0xa0]), // IMPLICIT [0] tag per RFC 5652 §5.3
|
|
463
463
|
signedAttrs.slice(1)]);
|
|
464
464
|
|
|
465
465
|
var signature;
|
|
@@ -474,7 +474,7 @@ function _signerInfo(signer, msgDigest, digestOid) {
|
|
|
474
474
|
|
|
475
475
|
// SignerInfo SEQUENCE per §5.3 (issuerAndSerialNumber variant — CMSVersion 1).
|
|
476
476
|
return asn1.writeNode(TAG_SEQUENCE, Buffer.concat([
|
|
477
|
-
asn1.writeInteger(Buffer.from([1])), //
|
|
477
|
+
asn1.writeInteger(Buffer.from([1])), // CMSVersion 1 for issuerAndSerialNumber
|
|
478
478
|
_issuerAndSerialNumber(signer.certificate),
|
|
479
479
|
_algorithmIdentifier(digestOid),
|
|
480
480
|
signedAttrsImplicit,
|
|
@@ -576,9 +576,9 @@ function _reEncodeNode(node) {
|
|
|
576
576
|
// TLV. writeNode rebuilds canonical DER from the original tag byte +
|
|
577
577
|
// value bytes; the tag byte is reconstructed from tagClass + constructed +
|
|
578
578
|
// tag number.
|
|
579
|
-
var classBits = (node.tagClass & 0x03) << 6; //
|
|
580
|
-
var consBit = node.constructed ? 0x20 : 0x00; //
|
|
581
|
-
var tagBits = node.tag & 0x1f; //
|
|
579
|
+
var classBits = (node.tagClass & 0x03) << 6; // tag-class shift
|
|
580
|
+
var consBit = node.constructed ? 0x20 : 0x00; // constructed bit
|
|
581
|
+
var tagBits = node.tag & 0x1f; // short-form tag
|
|
582
582
|
var tagByte = classBits | consBit | tagBits;
|
|
583
583
|
return asn1.writeNode(tagByte, node.value);
|
|
584
584
|
}
|
|
@@ -620,7 +620,7 @@ function _recipientInfo(recipient, contentKey) {
|
|
|
620
620
|
// composition path.
|
|
621
621
|
var infoLabel = Buffer.from("cms/kemri/chacha20-poly1305", "ascii");
|
|
622
622
|
var kdfInput = Buffer.concat([Buffer.from(encap.sharedSecret), infoLabel]);
|
|
623
|
-
var kek = bCrypto.kdf(kdfInput, 32); //
|
|
623
|
+
var kek = bCrypto.kdf(kdfInput, 32); // 256-bit KEK
|
|
624
624
|
// Wrap the content key under the KEK using ChaCha20-Poly1305.
|
|
625
625
|
var wrapped;
|
|
626
626
|
try { wrapped = bCrypto.encryptPacked(contentKey, kek); }
|
|
@@ -631,7 +631,7 @@ function _recipientInfo(recipient, contentKey) {
|
|
|
631
631
|
// KEMRecipientInfo SEQUENCE.
|
|
632
632
|
// Simplified ordering, version 0 per RFC 9629 §3.
|
|
633
633
|
var kemRi = asn1.writeNode(TAG_SEQUENCE, Buffer.concat([
|
|
634
|
-
asn1.writeInteger(Buffer.from([0])), //
|
|
634
|
+
asn1.writeInteger(Buffer.from([0])), // KEMRecipientInfo version 0
|
|
635
635
|
// rid CHOICE per RFC 9629 §3: this module ships the [0] IMPLICIT
|
|
636
636
|
// SubjectKeyIdentifier alternative — SKI is `[0] IMPLICIT OCTET
|
|
637
637
|
// STRING` (PRIMITIVE per RFC 5652 §10.2.4). The constructed form
|
|
@@ -642,7 +642,7 @@ function _recipientInfo(recipient, contentKey) {
|
|
|
642
642
|
_algorithmIdentifier(OID.mlkem1024), // kem
|
|
643
643
|
asn1.writeOctetString(Buffer.from(encap.cipherText)), // kemct
|
|
644
644
|
_algorithmIdentifier(OID.shake256), // kdf
|
|
645
|
-
asn1.writeInteger(Buffer.from([32])), //
|
|
645
|
+
asn1.writeInteger(Buffer.from([32])), // kekLength = 32 bytes
|
|
646
646
|
_algorithmIdentifier(OID.chacha20Poly1305), // wrap (also used as content-encryption AlgId; same OID)
|
|
647
647
|
asn1.writeOctetString(wrapped), // encryptedKey
|
|
648
648
|
]));
|
|
@@ -653,7 +653,7 @@ function _recipientInfo(recipient, contentKey) {
|
|
|
653
653
|
asn1.writeOid(OID.kemri),
|
|
654
654
|
kemRi,
|
|
655
655
|
]);
|
|
656
|
-
return asn1.writeNode(0xa4, oriValue); //
|
|
656
|
+
return asn1.writeNode(0xa4, oriValue); // [4] IMPLICIT context-specific constructed (ori CHOICE)
|
|
657
657
|
}
|
|
658
658
|
|
|
659
659
|
function _encryptedContentInfo(plaintext, contentKey) {
|
|
@@ -797,7 +797,7 @@ function _readSignerInfo(siNode) {
|
|
|
797
797
|
var signedAttrsRaw = null;
|
|
798
798
|
if (c[idx] && c[idx].tagClass === asn1.TAG_CLASS.CONTEXT_SPECIFIC && c[idx].tag === 0) {
|
|
799
799
|
var implicitRaw = _reEncodeNode(c[idx]);
|
|
800
|
-
signedAttrsRaw = Buffer.concat([Buffer.from([0x31]), implicitRaw.slice(1)]); //
|
|
800
|
+
signedAttrsRaw = Buffer.concat([Buffer.from([0x31]), implicitRaw.slice(1)]); // universal SET tag per RFC 5652 §5.4
|
|
801
801
|
idx += 1;
|
|
802
802
|
}
|
|
803
803
|
var sigAlgOid = _readAlgIdOid(c[idx]); idx += 1;
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
* WJ U+2060 BOM U+FEFF
|
|
51
51
|
*/
|
|
52
52
|
|
|
53
|
-
var HEX_RADIX = 16; //
|
|
53
|
+
var HEX_RADIX = 16; // base-16 radix, not byte size
|
|
54
54
|
|
|
55
55
|
function hex4(cp) {
|
|
56
56
|
var s = cp.toString(HEX_RADIX).toUpperCase();
|
|
@@ -94,17 +94,17 @@ var BOM_CHAR = fromCp(0xFEFF);
|
|
|
94
94
|
// is a single edit.
|
|
95
95
|
var SCRIPT_RANGES = {
|
|
96
96
|
latin: [[0x0041, 0x005A], [0x0061, 0x007A],
|
|
97
|
-
[0x00C0, 0x024F], [0x1E00, 0x1EFF]], //
|
|
98
|
-
cyrillic: [[0x0400, 0x04FF], [0x0500, 0x052F]], //
|
|
99
|
-
greek: [[0x0370, 0x03FF], [0x1F00, 0x1FFF]], //
|
|
100
|
-
armenian: [[0x0530, 0x058F]], //
|
|
101
|
-
cherokee: [[0x13A0, 0x13FF], [0xAB70, 0xABBF]], //
|
|
102
|
-
han: [[0x4E00, 0x9FFF]], //
|
|
103
|
-
hiragana: [[0x3040, 0x309F]], //
|
|
104
|
-
katakana: [[0x30A0, 0x30FF]], //
|
|
105
|
-
hangul: [[0xAC00, 0xD7AF]], //
|
|
106
|
-
arabic: [[0x0600, 0x06FF]], //
|
|
107
|
-
hebrew: [[0x0590, 0x05FF]], //
|
|
97
|
+
[0x00C0, 0x024F], [0x1E00, 0x1EFF]], // Unicode script ranges
|
|
98
|
+
cyrillic: [[0x0400, 0x04FF], [0x0500, 0x052F]], // Unicode Cyrillic + Cyrillic Supplement
|
|
99
|
+
greek: [[0x0370, 0x03FF], [0x1F00, 0x1FFF]], // Unicode Greek + Greek Extended
|
|
100
|
+
armenian: [[0x0530, 0x058F]], // Unicode Armenian
|
|
101
|
+
cherokee: [[0x13A0, 0x13FF], [0xAB70, 0xABBF]], // Unicode Cherokee + Cherokee Supplement
|
|
102
|
+
han: [[0x4E00, 0x9FFF]], // CJK Unified Ideographs
|
|
103
|
+
hiragana: [[0x3040, 0x309F]], // Hiragana
|
|
104
|
+
katakana: [[0x30A0, 0x30FF]], // Katakana
|
|
105
|
+
hangul: [[0xAC00, 0xD7AF]], // Hangul Syllables
|
|
106
|
+
arabic: [[0x0600, 0x06FF]], // Arabic
|
|
107
|
+
hebrew: [[0x0590, 0x05FF]], // Hebrew
|
|
108
108
|
};
|
|
109
109
|
|
|
110
110
|
// scriptFor(cp) — returns the script-name string for a codepoint, or
|
|
@@ -104,7 +104,7 @@ function tokenize(name) {
|
|
|
104
104
|
return n.split(" ").filter(function (t) { return t.length > 0; });
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
var MAX_INPUT_LEN = 512; //
|
|
107
|
+
var MAX_INPUT_LEN = 512; // name length sanity cap (operators can override fuzzy.create)
|
|
108
108
|
|
|
109
109
|
// ---- Levenshtein with cap + early-exit ----
|
|
110
110
|
|
|
@@ -155,7 +155,7 @@ function jaro(a, b) {
|
|
|
155
155
|
if (typeof a !== "string" || typeof b !== "string") return 0;
|
|
156
156
|
if (a === b) return a.length === 0 ? 0 : 1;
|
|
157
157
|
if (a.length === 0 || b.length === 0) return 0;
|
|
158
|
-
var matchWindow = Math.max(0, Math.floor(Math.max(a.length, b.length) / 2) - 1); //
|
|
158
|
+
var matchWindow = Math.max(0, Math.floor(Math.max(a.length, b.length) / 2) - 1); // Jaro match-window formula
|
|
159
159
|
var aMatched = new Array(a.length).fill(false);
|
|
160
160
|
var bMatched = new Array(b.length).fill(false);
|
|
161
161
|
var matches = 0;
|
|
@@ -183,7 +183,7 @@ function jaro(a, b) {
|
|
|
183
183
|
}
|
|
184
184
|
var transpositions = t / 2;
|
|
185
185
|
return (matches / a.length + matches / b.length +
|
|
186
|
-
(matches - transpositions) / matches) / 3; //
|
|
186
|
+
(matches - transpositions) / matches) / 3; // Jaro 3-term formula
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
function jaroWinkler(a, b, prefixWeight) {
|
|
@@ -198,7 +198,7 @@ function jaroWinkler(a, b, prefixWeight) {
|
|
|
198
198
|
var j = jaro(a, b);
|
|
199
199
|
if (j === 0) return 0;
|
|
200
200
|
// Common prefix up to 4 chars (Winkler's cap)
|
|
201
|
-
var maxPrefix = 4; //
|
|
201
|
+
var maxPrefix = 4; // Jaro-Winkler prefix cap (Winkler 1990)
|
|
202
202
|
var prefixLen = 0;
|
|
203
203
|
var max = Math.min(a.length, b.length, maxPrefix);
|
|
204
204
|
for (var i = 0; i < max; i++) {
|
|
@@ -274,7 +274,7 @@ function create(opts) {
|
|
|
274
274
|
VALID_STRATEGIES.join(", "));
|
|
275
275
|
}
|
|
276
276
|
var maxLevenshtein = (typeof fuzzyOpts.maxLevenshtein === "number" && isFinite(fuzzyOpts.maxLevenshtein))
|
|
277
|
-
? fuzzyOpts.maxLevenshtein : 3; //
|
|
277
|
+
? fuzzyOpts.maxLevenshtein : 3; // default edit-distance cap (operator-tunable)
|
|
278
278
|
var auditOn = opts.audit !== false;
|
|
279
279
|
var ruleVersion = opts.ruleVersion || ("entries:" + opts.entries.length);
|
|
280
280
|
|
|
@@ -327,10 +327,10 @@ function create(opts) {
|
|
|
327
327
|
}
|
|
328
328
|
// Substring containment scores 0.92 (high but below exact)
|
|
329
329
|
if (fuzzy.substringContains(name, qNorm)) {
|
|
330
|
-
if (0.92 > bestScore) { bestScore = 0.92; bestName = name; } //
|
|
330
|
+
if (0.92 > bestScore) { bestScore = 0.92; bestName = name; } // substring-match score weight
|
|
331
331
|
}
|
|
332
332
|
if (fuzzy.substringContains(qNorm, name)) {
|
|
333
|
-
if (0.92 > bestScore) { bestScore = 0.92; bestName = name; } //
|
|
333
|
+
if (0.92 > bestScore) { bestScore = 0.92; bestName = name; } // substring-match score weight
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
336
|
return { score: bestScore, name: bestName };
|
|
@@ -491,7 +491,7 @@ function create(opts) {
|
|
|
491
491
|
algorithm: algorithm,
|
|
492
492
|
ruleVersion: ruleVersion,
|
|
493
493
|
entryCount: index.length,
|
|
494
|
-
digest: hash.digest("hex").slice(0, 32), //
|
|
494
|
+
digest: hash.digest("hex").slice(0, 32), // first 32 hex chars (128 bits) of SHA-3 digest, sufficient for snapshot identity
|
|
495
495
|
digestAlg: "sha3-512-trunc128",
|
|
496
496
|
capturedAt: Date.now(),
|
|
497
497
|
};
|