@blamejs/core 0.14.0 → 0.14.2
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/_test/crypto-fixtures.js +3 -3
- package/lib/a2a-tasks.js +18 -18
- package/lib/a2a.js +4 -4
- package/lib/acme.js +3 -3
- package/lib/agent-idempotency.js +1 -1
- package/lib/agent-orchestrator.js +8 -8
- package/lib/agent-posture-chain.js +2 -2
- package/lib/agent-saga.js +1 -1
- package/lib/agent-snapshot.js +1 -1
- package/lib/agent-stream.js +1 -1
- package/lib/agent-tenant.js +1 -1
- package/lib/agent-trace.js +3 -3
- package/lib/ai-capability.js +1 -1
- package/lib/ai-dp.js +4 -4
- package/lib/ai-input.js +3 -3
- package/lib/ai-model-manifest.js +7 -7
- package/lib/ai-pref.js +3 -3
- package/lib/archive-gz.js +2 -2
- package/lib/archive-read.js +25 -25
- package/lib/archive-tar-read.js +2 -2
- package/lib/archive-tar.js +20 -20
- package/lib/archive-wrap.js +10 -10
- package/lib/argon2-builtin.js +1 -1
- package/lib/asn1-der.js +45 -34
- package/lib/atomic-file.js +2 -2
- package/lib/audit-daily-review.js +3 -3
- package/lib/audit-sign.js +5 -5
- package/lib/audit-tools.js +1 -1
- package/lib/audit.js +2 -2
- package/lib/auth/acr-vocabulary.js +2 -2
- package/lib/auth/bot-challenge.js +3 -3
- package/lib/auth/ciba.js +7 -7
- package/lib/auth/dpop.js +3 -3
- package/lib/auth/fido-mds3.js +8 -8
- package/lib/auth/jar.js +11 -0
- package/lib/auth/jwt-external.js +5 -5
- package/lib/auth/oauth.js +7 -9
- package/lib/auth/oid4vci.js +10 -10
- package/lib/auth/oid4vp.js +2 -2
- package/lib/auth/openid-federation.js +2 -2
- package/lib/auth/passkey.js +3 -3
- package/lib/auth/saml.js +29 -25
- package/lib/auth/sd-jwt-vc-disclosure.js +1 -1
- package/lib/auth/sd-jwt-vc.js +4 -4
- package/lib/auth/status-list.js +10 -10
- package/lib/auth/step-up.js +1 -1
- package/lib/auth-bot-challenge.js +1 -1
- package/lib/backup/index.js +7 -7
- package/lib/base32.js +8 -8
- package/lib/budr.js +2 -2
- package/lib/cache-status.js +2 -2
- package/lib/calendar.js +23 -23
- package/lib/cbor.js +12 -12
- package/lib/cdn-cache-control.js +1 -1
- package/lib/cert.js +5 -5
- package/lib/cloud-events.js +5 -5
- package/lib/cms-codec.js +21 -21
- package/lib/codepoint-class.js +12 -12
- package/lib/compliance-sanctions-fuzzy.js +4 -4
- package/lib/compliance-sanctions.js +4 -4
- package/lib/compliance.js +29 -29
- package/lib/content-credentials.js +36 -36
- package/lib/cookies.js +1 -1
- package/lib/cose.js +13 -13
- package/lib/cra-report.js +1 -1
- package/lib/crdt.js +1 -1
- package/lib/crypto-field.js +2 -2
- package/lib/crypto-xwing.js +7 -7
- package/lib/crypto.js +6 -6
- package/lib/csp.js +2 -2
- package/lib/cwt.js +4 -4
- package/lib/dark-patterns.js +2 -2
- package/lib/data-act.js +2 -2
- package/lib/db-file-lifecycle.js +4 -4
- package/lib/db-query.js +1 -1
- package/lib/db.js +6 -6
- package/lib/dbsc.js +13 -13
- package/lib/did.js +17 -17
- package/lib/dora.js +4 -4
- package/lib/dsr.js +1 -1
- package/lib/early-hints.js +2 -2
- package/lib/eat.js +4 -4
- package/lib/external-db-migrate.js +1 -1
- package/lib/external-db.js +1 -1
- package/lib/flag-cache.js +1 -1
- package/lib/flag-evaluation-context.js +2 -2
- package/lib/graphql-federation.js +4 -4
- package/lib/guard-agent-registry.js +5 -5
- package/lib/guard-archive.js +24 -24
- package/lib/guard-cidr.js +33 -33
- package/lib/guard-csv.js +1 -1
- package/lib/guard-domain.js +10 -10
- package/lib/guard-dsn.js +4 -4
- package/lib/guard-email.js +19 -19
- package/lib/guard-event-bus-payload.js +4 -4
- package/lib/guard-event-bus-topic.js +6 -6
- package/lib/guard-filename.js +7 -7
- package/lib/guard-graphql.js +9 -9
- package/lib/guard-html-wcag-tagwalk.js +1 -1
- package/lib/guard-html-wcag.js +4 -4
- package/lib/guard-html.js +7 -7
- package/lib/guard-idempotency-key.js +6 -6
- package/lib/guard-image.js +4 -4
- package/lib/guard-imap-command.js +17 -17
- package/lib/guard-jmap.js +20 -20
- package/lib/guard-json.js +12 -12
- package/lib/guard-jsonpath.js +3 -3
- package/lib/guard-jwt.js +4 -4
- package/lib/guard-list-id.js +7 -7
- package/lib/guard-list-unsubscribe.js +8 -8
- package/lib/guard-mail-compose.js +4 -4
- package/lib/guard-mail-move.js +5 -5
- package/lib/guard-mail-query.js +3 -3
- package/lib/guard-mail-reply.js +3 -3
- package/lib/guard-mail-sieve.js +6 -6
- package/lib/guard-managesieve-command.js +25 -25
- package/lib/guard-markdown.js +31 -31
- package/lib/guard-message-id.js +5 -5
- package/lib/guard-mime.js +1 -1
- package/lib/guard-oauth.js +3 -3
- package/lib/guard-pdf.js +6 -6
- package/lib/guard-pop3-command.js +11 -11
- package/lib/guard-posture-chain.js +5 -5
- package/lib/guard-regex.js +10 -10
- package/lib/guard-saga-config.js +5 -5
- package/lib/guard-smtp-command.js +6 -6
- package/lib/guard-snapshot-envelope.js +3 -3
- package/lib/guard-stream-args.js +4 -4
- package/lib/guard-svg.js +11 -11
- package/lib/guard-tenant-id.js +5 -5
- package/lib/guard-time.js +15 -15
- package/lib/guard-trace-context.js +4 -4
- package/lib/guard-uuid.js +11 -11
- package/lib/guard-xml.js +12 -12
- package/lib/guard-yaml.js +16 -16
- package/lib/honeytoken.js +5 -5
- package/lib/http-client.js +1 -1
- package/lib/http-message-signature.js +2 -2
- package/lib/iab-mspa.js +3 -3
- package/lib/iab-tcf.js +70 -70
- package/lib/inbox.js +4 -4
- package/lib/ip-utils.js +15 -15
- package/lib/jose-jwe-experimental.js +2 -2
- package/lib/json-path.js +3 -3
- package/lib/json-schema.js +1 -1
- package/lib/jsonapi.js +3 -3
- package/lib/jtd.js +2 -2
- package/lib/link-header.js +1 -1
- package/lib/local-db-thin.js +1 -1
- package/lib/log.js +1 -1
- package/lib/lro.js +4 -4
- package/lib/mail-agent.js +1 -1
- package/lib/mail-arc-sign.js +6 -6
- package/lib/mail-auth.js +43 -43
- package/lib/mail-bimi.js +3 -3
- package/lib/mail-crypto-pgp.js +53 -45
- package/lib/mail-crypto-smime.js +5 -5
- package/lib/mail-dav.js +1 -1
- package/lib/mail-deploy.js +39 -39
- package/lib/mail-dkim.js +11 -11
- package/lib/mail-greylist.js +12 -12
- package/lib/mail-helo.js +1 -1
- package/lib/mail-journal.js +8 -8
- package/lib/mail-rbl.js +7 -7
- package/lib/mail-scan.js +7 -7
- package/lib/mail-send-deliver.js +2 -2
- package/lib/mail-server-imap.js +12 -12
- package/lib/mail-server-jmap.js +16 -16
- package/lib/mail-server-managesieve.js +4 -4
- package/lib/mail-server-mx.js +17 -17
- package/lib/mail-server-pop3.js +4 -4
- package/lib/mail-server-rate-limit.js +2 -2
- package/lib/mail-server-submission.js +21 -21
- package/lib/mail-sieve.js +2 -2
- package/lib/mail-spam-score.js +5 -5
- package/lib/mail-srs.js +12 -12
- package/lib/mail-store-fts.js +2 -2
- package/lib/mail-store.js +8 -8
- package/lib/mail-unsubscribe.js +4 -4
- package/lib/mail.js +4 -4
- package/lib/mcp-tool-registry.js +4 -4
- package/lib/mcp.js +8 -8
- package/lib/mdoc.js +2 -2
- package/lib/metrics.js +8 -8
- package/lib/middleware/age-gate.js +1 -1
- package/lib/middleware/api-encrypt.js +7 -7
- package/lib/middleware/assetlinks.js +2 -2
- package/lib/middleware/asyncapi-serve.js +2 -2
- package/lib/middleware/bearer-auth.js +5 -5
- package/lib/middleware/body-parser.js +5 -5
- package/lib/middleware/compose-pipeline.js +15 -15
- package/lib/middleware/csp-report.js +4 -4
- package/lib/middleware/daily-byte-quota.js +1 -1
- package/lib/middleware/dpop.js +1 -1
- package/lib/middleware/headers.js +2 -2
- package/lib/middleware/host-allowlist.js +1 -1
- package/lib/middleware/idempotency-key.js +12 -12
- package/lib/middleware/nel.js +1 -1
- package/lib/middleware/openapi-serve.js +2 -2
- package/lib/middleware/protected-resource-metadata.js +2 -2
- package/lib/middleware/require-aal.js +1 -1
- package/lib/middleware/require-bound-key.js +2 -2
- package/lib/middleware/require-content-type.js +1 -1
- package/lib/middleware/require-methods.js +1 -1
- package/lib/middleware/require-step-up.js +2 -2
- package/lib/middleware/scim-server.js +1 -1
- package/lib/middleware/security-txt.js +3 -3
- package/lib/middleware/tus-upload.js +12 -12
- package/lib/middleware/web-app-manifest.js +2 -2
- package/lib/network-byte-quota.js +1 -1
- package/lib/network-dns-resolver.js +23 -23
- package/lib/network-dns.js +29 -29
- package/lib/network-dnssec.js +33 -33
- package/lib/network-smtp-policy.js +10 -10
- package/lib/network-tls.js +99 -94
- package/lib/network-tsig.js +33 -33
- package/lib/nis2-report.js +1 -1
- package/lib/ntp-check.js +3 -3
- package/lib/observability-otlp-exporter.js +17 -17
- package/lib/observability-tracer.js +6 -6
- package/lib/observability.js +8 -8
- package/lib/openapi-yaml.js +1 -1
- package/lib/openapi.js +1 -1
- package/lib/outbox.js +6 -6
- package/lib/pqc-agent.js +4 -4
- package/lib/pqc-software.js +1 -1
- package/lib/privacy-pass.js +5 -5
- package/lib/problem-details.js +5 -5
- package/lib/promise-pool.js +1 -1
- package/lib/protobuf-encoder.js +9 -1
- package/lib/queue.js +4 -2
- package/lib/redact.js +2 -2
- package/lib/request-helpers.js +1 -1
- package/lib/router.js +10 -10
- package/lib/safe-async.js +2 -2
- package/lib/safe-dns.js +71 -71
- package/lib/safe-ical.js +19 -19
- package/lib/safe-icap.js +24 -24
- package/lib/safe-jsonpath.js +2 -2
- package/lib/safe-mime.js +10 -10
- package/lib/safe-mount-info.js +3 -3
- package/lib/safe-redirect.js +1 -1
- package/lib/safe-sieve.js +23 -23
- package/lib/safe-smtp.js +1 -1
- package/lib/safe-vcard.js +14 -14
- package/lib/sandbox.js +5 -5
- package/lib/sec-cyber.js +1 -1
- package/lib/self-update-standalone-verifier.js +3 -3
- package/lib/self-update.js +3 -3
- package/lib/server-timing.js +3 -3
- package/lib/session-device-binding.js +7 -7
- package/lib/session.js +8 -8
- package/lib/standard-webhooks.js +4 -4
- package/lib/storage.js +2 -2
- package/lib/stream-throttle.js +1 -1
- package/lib/structured-fields.js +15 -15
- package/lib/subject.js +1 -1
- package/lib/tcpa-10dlc.js +1 -1
- package/lib/tenant-quota.js +3 -3
- package/lib/test-harness.js +1 -1
- package/lib/tracing.js +1 -1
- package/lib/tsa.js +5 -5
- package/lib/uri-template.js +5 -5
- package/lib/vault/index.js +2 -2
- package/lib/vault/seal-pem-file.js +4 -4
- package/lib/vc.js +2 -2
- package/lib/vendor-data.js +1 -1
- package/lib/watcher.js +4 -4
- package/lib/web-push-vapid.js +21 -21
- package/lib/webhook.js +2 -2
- package/lib/websocket.js +3 -3
- package/lib/worker-pool.js +3 -3
- package/lib/ws-client.js +24 -24
- package/lib/xml-c14n.js +2 -2
- package/package.json +1 -1
- package/sbom.cdx.json +6 -6
package/lib/auth/status-list.js
CHANGED
|
@@ -55,7 +55,7 @@ var { defineClass } = require("../framework-error");
|
|
|
55
55
|
|
|
56
56
|
var StatusListError = defineClass("StatusListError", { alwaysPermanent: true });
|
|
57
57
|
|
|
58
|
-
var SUPPORTED_BIT_SIZES = { 1: 1, 2: 1, 4: 1, 8: 1 }; //
|
|
58
|
+
var SUPPORTED_BIT_SIZES = { 1: 1, 2: 1, 4: 1, 8: 1 }; // bit-size enum (1/2/4/8 bits per status), not bytes
|
|
59
59
|
var STATUS_VALID = 0;
|
|
60
60
|
var STATUS_INVALID = 1;
|
|
61
61
|
var STATUS_SUSPENDED = 2;
|
|
@@ -107,7 +107,7 @@ function create(opts) {
|
|
|
107
107
|
var bits = opts.bits === undefined ? 1 : opts.bits;
|
|
108
108
|
_validateBits(bits);
|
|
109
109
|
// Allocate the bit-packed buffer up front. byteCount = ceil(size*bits/8).
|
|
110
|
-
var bitBytes = Math.ceil((size * bits) / 8); //
|
|
110
|
+
var bitBytes = Math.ceil((size * bits) / 8); // bits-per-byte conversion
|
|
111
111
|
var bytes = Buffer.alloc(bitBytes);
|
|
112
112
|
if (opts.fill !== undefined && opts.fill !== 0) {
|
|
113
113
|
_validateStatus(opts.fill, bits);
|
|
@@ -184,19 +184,19 @@ function create(opts) {
|
|
|
184
184
|
// ---- bit-packed helpers ----
|
|
185
185
|
|
|
186
186
|
function _setAt(bytes, bits, idx, status) {
|
|
187
|
-
if (bits === 8) { bytes[idx] = status & 0xff; return; } //
|
|
187
|
+
if (bits === 8) { bytes[idx] = status & 0xff; return; } // byte mask
|
|
188
188
|
var bitOffset = idx * bits;
|
|
189
|
-
var byteIdx = Math.floor(bitOffset / 8); //
|
|
190
|
-
var bitInByte = bitOffset % 8; //
|
|
189
|
+
var byteIdx = Math.floor(bitOffset / 8); // bits-per-byte
|
|
190
|
+
var bitInByte = bitOffset % 8; // bits-per-byte
|
|
191
191
|
var mask = ((1 << bits) - 1) << bitInByte;
|
|
192
192
|
bytes[byteIdx] = (bytes[byteIdx] & ~mask) | ((status << bitInByte) & mask);
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
function _getAt(bytes, bits, idx) {
|
|
196
|
-
if (bits === 8) return bytes[idx]; //
|
|
196
|
+
if (bits === 8) return bytes[idx]; // 8-bit fast path
|
|
197
197
|
var bitOffset = idx * bits;
|
|
198
|
-
var byteIdx = Math.floor(bitOffset / 8); //
|
|
199
|
-
var bitInByte = bitOffset % 8; //
|
|
198
|
+
var byteIdx = Math.floor(bitOffset / 8); // bits-per-byte
|
|
199
|
+
var bitInByte = bitOffset % 8; // bits-per-byte
|
|
200
200
|
var mask = (1 << bits) - 1;
|
|
201
201
|
return (bytes[byteIdx] >> bitInByte) & mask;
|
|
202
202
|
}
|
|
@@ -238,13 +238,13 @@ async function fromJwt(token, opts) {
|
|
|
238
238
|
"statusList.fromJwt: compressed list exceeds " + MAX_LIST_BYTES + " bytes");
|
|
239
239
|
}
|
|
240
240
|
var inflated;
|
|
241
|
-
try { inflated = zlib.inflateRawSync(deflated, { maxOutputLength: MAX_LIST_BYTES * 8 }); } //
|
|
241
|
+
try { inflated = zlib.inflateRawSync(deflated, { maxOutputLength: MAX_LIST_BYTES * 8 }); } // 8x compression-ratio cap
|
|
242
242
|
catch (e) {
|
|
243
243
|
throw new StatusListError("status-list/inflate-failed",
|
|
244
244
|
"statusList.fromJwt: zlib inflate failed: " + ((e && e.message) || String(e)));
|
|
245
245
|
}
|
|
246
246
|
// Reconstruct the list object pointing at the inflated bytes.
|
|
247
|
-
var size = (inflated.length * 8) / bits; //
|
|
247
|
+
var size = (inflated.length * 8) / bits; // bits-per-byte
|
|
248
248
|
return {
|
|
249
249
|
list: {
|
|
250
250
|
size: size,
|
package/lib/auth/step-up.js
CHANGED
|
@@ -86,7 +86,7 @@ function _quote(value) {
|
|
|
86
86
|
// Reject CTLs and quote-injecting characters.
|
|
87
87
|
for (var i = 0; i < value.length; i += 1) {
|
|
88
88
|
var code = value.charCodeAt(i);
|
|
89
|
-
if (code < 32 || code === 127) { //
|
|
89
|
+
if (code < 32 || code === 127) { // ASCII control codepoints
|
|
90
90
|
throw new AuthError("auth-step-up/bad-challenge",
|
|
91
91
|
"challenge value contains control character at index " + i);
|
|
92
92
|
}
|
|
@@ -270,7 +270,7 @@ function create(opts) {
|
|
|
270
270
|
function _runBotGuardCheck(req) {
|
|
271
271
|
return new Promise(function (resolve) {
|
|
272
272
|
var capturedRes = {
|
|
273
|
-
statusCode: 200, //
|
|
273
|
+
statusCode: 200, // HTTP 200 status code, not bytes
|
|
274
274
|
writableEnded: false,
|
|
275
275
|
writeHead: function (status) { capturedRes.statusCode = status; },
|
|
276
276
|
end: function () { capturedRes.writableEnded = true; },
|
package/lib/backup/index.js
CHANGED
|
@@ -1118,7 +1118,7 @@ function bundleAdapterStorage(opts) {
|
|
|
1118
1118
|
var passphraseMinEntropyBits;
|
|
1119
1119
|
if (opts.passphraseMinEntropyBits === undefined ||
|
|
1120
1120
|
opts.passphraseMinEntropyBits === null) {
|
|
1121
|
-
passphraseMinEntropyBits = 80; //
|
|
1121
|
+
passphraseMinEntropyBits = 80; // entropy-bits default floor, not byte count
|
|
1122
1122
|
} else if (Number.isFinite(opts.passphraseMinEntropyBits) &&
|
|
1123
1123
|
opts.passphraseMinEntropyBits >= 0) {
|
|
1124
1124
|
passphraseMinEntropyBits = Math.floor(opts.passphraseMinEntropyBits);
|
|
@@ -1164,8 +1164,8 @@ function bundleAdapterStorage(opts) {
|
|
|
1164
1164
|
// v0.12.11 — passphrase strategy under HIPAA / PCI-DSS raises
|
|
1165
1165
|
// the entropy floor to 128 bits (matches the framework's
|
|
1166
1166
|
// existing crypto-grade-password discipline for sealed-storage).
|
|
1167
|
-
if (cryptoStrategy === "passphrase" && passphraseMinEntropyBits < 128) { //
|
|
1168
|
-
passphraseMinEntropyBits = 128; //
|
|
1167
|
+
if (cryptoStrategy === "passphrase" && passphraseMinEntropyBits < 128) { // entropy-bits floor, not byte count
|
|
1168
|
+
passphraseMinEntropyBits = 128; // entropy-bits floor, not byte count
|
|
1169
1169
|
}
|
|
1170
1170
|
}
|
|
1171
1171
|
// Codex P2 on v0.12.8 PR #159 — tar mode builds the whole archive
|
|
@@ -1754,7 +1754,7 @@ function bundleAdapterStorage(opts) {
|
|
|
1754
1754
|
// per-bundle rewrap.
|
|
1755
1755
|
async rewrapAllBundles(opts) {
|
|
1756
1756
|
opts = opts || {};
|
|
1757
|
-
var concurrency = 4; //
|
|
1757
|
+
var concurrency = 4; // default fan-out, not byte count
|
|
1758
1758
|
if (typeof opts.concurrency === "number" && Number.isFinite(opts.concurrency) &&
|
|
1759
1759
|
opts.concurrency > 0) {
|
|
1760
1760
|
concurrency = Math.max(1, Math.floor(opts.concurrency));
|
|
@@ -1855,7 +1855,7 @@ function bundleAdapterStorage(opts) {
|
|
|
1855
1855
|
// a silent ok=0/failed=0 report on non-empty storage. Default
|
|
1856
1856
|
// 4; minimum 1; non-finite / non-positive falls back to
|
|
1857
1857
|
// default.
|
|
1858
|
-
var concurrency = 4; //
|
|
1858
|
+
var concurrency = 4; // default fan-out, not byte count
|
|
1859
1859
|
if (typeof vOpts.concurrency === "number" && Number.isFinite(vOpts.concurrency) &&
|
|
1860
1860
|
vOpts.concurrency > 0) {
|
|
1861
1861
|
concurrency = Math.max(1, Math.floor(vOpts.concurrency));
|
|
@@ -2096,7 +2096,7 @@ function bundleAdapterStorage(opts) {
|
|
|
2096
2096
|
// capped 16-byte readFile via the fallback path (still
|
|
2097
2097
|
// bounded; better than full payload).
|
|
2098
2098
|
if (typeof adapter.readPartial === "function") {
|
|
2099
|
-
var probe = await adapter.readPartial(payloadKey, 16); //
|
|
2099
|
+
var probe = await adapter.readPartial(payloadKey, 16); // 16-byte probe head, magic comparison
|
|
2100
2100
|
envelopeKind = archiveLazy().sniffEnvelope(probe);
|
|
2101
2101
|
} else {
|
|
2102
2102
|
// Legacy adapter — readPartial missing. Operators using
|
|
@@ -2389,7 +2389,7 @@ bundleAdapterStorage.objectStoreAdapter = function (client, osOpts) {
|
|
|
2389
2389
|
// is consumed. PAGINATION_CAP guards against a runaway
|
|
2390
2390
|
// server returning truncated:true forever (defense-in-depth;
|
|
2391
2391
|
// shipped backends honour the contract).
|
|
2392
|
-
var PAGINATION_CAP = 1000; //
|
|
2392
|
+
var PAGINATION_CAP = 1000; // page count cap, not byte count
|
|
2393
2393
|
var out = [];
|
|
2394
2394
|
var token = null;
|
|
2395
2395
|
var pages = 0;
|
package/lib/base32.js
CHANGED
|
@@ -42,7 +42,7 @@ Object.keys(ALPHABETS).forEach(function (v) {
|
|
|
42
42
|
LOOKUPS[v] = map;
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
var GROUP = 8; //
|
|
45
|
+
var GROUP = 8; // Base32 emits 8 chars per 5 input bytes (RFC 4648 §6)
|
|
46
46
|
var BITS = 5; // 5 bits per Base32 symbol
|
|
47
47
|
|
|
48
48
|
function _alphabet(variant) {
|
|
@@ -82,14 +82,14 @@ function encode(input, opts) {
|
|
|
82
82
|
var out = "";
|
|
83
83
|
var value = 0, bits = 0;
|
|
84
84
|
for (var i = 0; i < buf.length; i++) {
|
|
85
|
-
value = (value << 8) | buf[i]; //
|
|
86
|
-
bits += 8; //
|
|
85
|
+
value = (value << 8) | buf[i]; // shift in one input byte
|
|
86
|
+
bits += 8; // eight bits per input byte
|
|
87
87
|
while (bits >= BITS) {
|
|
88
|
-
out += alphabet.charAt((value >>> (bits - BITS)) & 31); //
|
|
88
|
+
out += alphabet.charAt((value >>> (bits - BITS)) & 31); // low 5 bits mask (2^5 - 1)
|
|
89
89
|
bits -= BITS;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
if (bits > 0) out += alphabet.charAt((value << (BITS - bits)) & 31); //
|
|
92
|
+
if (bits > 0) out += alphabet.charAt((value << (BITS - bits)) & 31); // final partial group, low 5 bits
|
|
93
93
|
if (pad) while (out.length % GROUP !== 0) out += "=";
|
|
94
94
|
return out;
|
|
95
95
|
}
|
|
@@ -138,9 +138,9 @@ function decode(str, opts) {
|
|
|
138
138
|
if (idx === undefined) throw new Base32Error("base32/bad-char", "base32.decode: invalid Base32 character '" + str.charAt(i) + "' at index " + i);
|
|
139
139
|
value = (value << BITS) | idx;
|
|
140
140
|
bits += BITS;
|
|
141
|
-
if (bits >= 8) { //
|
|
142
|
-
bytes.push((value >>> (bits - 8)) & 0xff); //
|
|
143
|
-
bits -= 8; //
|
|
141
|
+
if (bits >= 8) { // emit a full output byte
|
|
142
|
+
bytes.push((value >>> (bits - 8)) & 0xff); // eight-bit output byte mask
|
|
143
|
+
bits -= 8; // consumed eight bits
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
return Buffer.from(bytes);
|
package/lib/budr.js
CHANGED
|
@@ -30,8 +30,8 @@ var audit = require("./audit");
|
|
|
30
30
|
var { defineClass } = require("./framework-error");
|
|
31
31
|
var BudrError = defineClass("BudrError", { alwaysPermanent: true });
|
|
32
32
|
|
|
33
|
-
var SERVICE_MAX = 128; //
|
|
34
|
-
var SERVICE_RE = /^[a-zA-Z0-9._:/-]{1,128}$/; //
|
|
33
|
+
var SERVICE_MAX = 128; // string-length cap, not bytes
|
|
34
|
+
var SERVICE_RE = /^[a-zA-Z0-9._:/-]{1,128}$/; // string-length cap; not bytes
|
|
35
35
|
var TIERS = ["platinum", "gold", "silver", "bronze"];
|
|
36
36
|
var CRITICALITIES = ["critical", "high", "medium", "low"];
|
|
37
37
|
|
package/lib/cache-status.js
CHANGED
|
@@ -47,7 +47,7 @@ var CacheStatusError = defineClass("CacheStatusError", { alwaysPermanent: true }
|
|
|
47
47
|
// per RFC 8941: starts with ALPHA or "*", continues with tchar / ":"
|
|
48
48
|
// / "/". tchar excludes `, ; " \ space and all controls.
|
|
49
49
|
var CACHE_NAME_RE = /^[A-Za-z*][!#$%&'*+\-.^_`|~0-9A-Za-z:/]*$/; // allow:duplicate-regex — sf-token shape per RFC 8941 §3.3.4
|
|
50
|
-
var CACHE_NAME_MAX = 128; //
|
|
50
|
+
var CACHE_NAME_MAX = 128; // cache-name length cap, not bytes
|
|
51
51
|
var FWD_VALUES = Object.freeze(["bypass", "method", "uri-miss", "vary-miss", "miss", "request", "stale", "partial"]);
|
|
52
52
|
var BOOLEAN_PARAMS = Object.freeze(["hit", "stored", "collapsed"]);
|
|
53
53
|
// Reserved parameter names per RFC 9211 §2 — the framework knows their
|
|
@@ -153,7 +153,7 @@ function entryString(entry) {
|
|
|
153
153
|
}
|
|
154
154
|
if (entry.fwdStatus !== undefined && entry.fwdStatus !== null) {
|
|
155
155
|
if (typeof entry.fwdStatus !== "number" || !Number.isInteger(entry.fwdStatus) ||
|
|
156
|
-
entry.fwdStatus < 100 || entry.fwdStatus > 599) { //
|
|
156
|
+
entry.fwdStatus < 100 || entry.fwdStatus > 599) { // HTTP status range
|
|
157
157
|
throw new CacheStatusError("cache-status/bad-fwd-status",
|
|
158
158
|
"entry.fwdStatus must be an integer 100..599");
|
|
159
159
|
}
|
package/lib/calendar.js
CHANGED
|
@@ -98,7 +98,7 @@ 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; //
|
|
101
|
+
var MAX_EXPAND_INSTANCES = 4096; // instance count cap, not bytes
|
|
102
102
|
var MAX_EXPAND_SPAN_MS = 10 * 365 * 24 * 60 * 60 * 1000; // allow:raw-byte-literal + allow:raw-time-literal — 10 year max expansion span
|
|
103
103
|
|
|
104
104
|
/**
|
|
@@ -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,8 +695,8 @@ 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); //
|
|
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
700
|
var bySecondSet = _bySet(rule.bySecond, 0, 60); // allow:raw-byte-literal — RFC 5545 second range incl. leap second // allow:raw-time-literal — second-of-minute bound, not a duration
|
|
701
701
|
|
|
702
702
|
function _isoWeekParts(d) {
|
|
@@ -706,7 +706,7 @@ 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
712
|
var week = Math.ceil((((tmp - yearStart) / 86400000) + 1) / 7); // allow:raw-time-literal — 86400000 ms/day, 7 days/week // allow:raw-byte-literal
|
|
@@ -720,7 +720,7 @@ function _expandSingleRule(rule, startMs, ctx) {
|
|
|
720
720
|
return Math.floor((d - startOfYear) / 86400000) + 1; // allow:raw-time-literal — 86400000 ms/day // allow:raw-byte-literal
|
|
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,7 +864,7 @@ 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);
|
|
@@ -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,7 +928,7 @@ 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
933
|
var we = ws + 7 * 86400000 - 1; // allow:raw-byte-literal + allow:raw-time-literal — 7-day window
|
|
934
934
|
return { startMs: ws, endMs: we };
|
|
@@ -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
|
}
|
package/lib/cbor.js
CHANGED
|
@@ -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;
|
package/lib/cdn-cache-control.js
CHANGED
|
@@ -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)) {
|
package/lib/cert.js
CHANGED
|
@@ -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) {
|
package/lib/cloud-events.js
CHANGED
|
@@ -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");
|