@blamejs/core 0.9.15 → 0.9.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/lib/a2a-tasks.js +2 -2
- package/lib/acme.js +2 -2
- package/lib/api-snapshot.js +1 -1
- package/lib/app-shutdown.js +2 -2
- package/lib/app.js +2 -2
- package/lib/argon2-builtin.js +1 -1
- package/lib/atomic-file.js +8 -8
- package/lib/audit-sign.js +3 -3
- package/lib/audit-tools.js +2 -2
- package/lib/auth/dpop.js +1 -1
- package/lib/auth/elevation-grant.js +4 -4
- package/lib/auth/fido-mds3.js +6 -6
- package/lib/auth/jwt-external.js +3 -3
- package/lib/auth/jwt.js +1 -1
- package/lib/auth/oauth.js +1 -1
- package/lib/auth/status-list.js +1 -1
- package/lib/backup/bundle.js +2 -2
- package/lib/backup/index.js +7 -7
- package/lib/bundler.js +4 -4
- package/lib/cli.js +1 -1
- package/lib/cloud-events.js +1 -1
- package/lib/compliance-sanctions.js +1 -1
- package/lib/compliance.js +6 -7
- package/lib/config.js +6 -6
- package/lib/credential-hash.js +4 -4
- package/lib/crypto-field.js +9 -9
- package/lib/crypto-hpke.js +1 -1
- package/lib/crypto.js +3 -3
- package/lib/daemon.js +2 -2
- package/lib/db-file-lifecycle.js +5 -5
- package/lib/db-schema.js +1 -1
- package/lib/db.js +3 -3
- package/lib/dev.js +5 -5
- package/lib/dr-runbook.js +2 -2
- package/lib/external-db-migrate.js +16 -16
- package/lib/flag-evaluation-context.js +3 -3
- package/lib/flag-providers.js +1 -1
- package/lib/http-client.js +11 -11
- package/lib/http-message-signature.js +1 -1
- package/lib/keychain.js +6 -6
- package/lib/local-db-thin.js +2 -2
- package/lib/log-stream-local.js +3 -3
- package/lib/log-stream-syslog.js +4 -4
- package/lib/log.js +2 -2
- package/lib/mail-arc-sign.js +1 -1
- package/lib/mail-dkim.js +1 -1
- package/lib/mail.js +7 -7
- package/lib/mcp-tool-registry.js +6 -6
- package/lib/middleware/asyncapi-serve.js +1 -1
- package/lib/middleware/body-parser.js +6 -6
- package/lib/middleware/openapi-serve.js +1 -1
- package/lib/middleware/require-bound-key.js +4 -4
- package/lib/middleware/require-mtls.js +4 -4
- package/lib/middleware/tus-upload.js +1 -1
- package/lib/migrations.js +3 -3
- package/lib/mtls-ca.js +4 -4
- package/lib/network-byte-quota.js +2 -2
- package/lib/network-smtp-policy.js +1 -1
- package/lib/network.js +12 -12
- package/lib/notify.js +8 -8
- package/lib/ntp-check.js +1 -1
- package/lib/object-store/azure-blob.js +3 -3
- package/lib/object-store/gcs.js +3 -3
- package/lib/object-store/http-put.js +1 -1
- package/lib/object-store/local.js +3 -3
- package/lib/object-store/sigv4-bucket-ops.js +1 -1
- package/lib/object-store/sigv4.js +3 -3
- package/lib/observability.js +1 -1
- package/lib/parsers/safe-env.js +3 -3
- package/lib/process-spawn.js +2 -2
- package/lib/restore-bundle.js +3 -3
- package/lib/restore-rollback.js +4 -4
- package/lib/restore.js +3 -3
- package/lib/retry.js +1 -1
- package/lib/router.js +16 -16
- package/lib/safe-url.js +2 -2
- package/lib/sandbox.js +1 -1
- package/lib/security-assert.js +1 -1
- package/lib/seeders.js +4 -4
- package/lib/self-update-standalone-verifier.js +2 -2
- package/lib/self-update.js +5 -5
- package/lib/session-device-binding.js +1 -1
- package/lib/storage.js +1 -1
- package/lib/template.js +2 -2
- package/lib/testing.js +2 -2
- package/lib/totp.js +1 -1
- package/lib/vault/index.js +2 -2
- package/lib/vault/passphrase-ops.js +2 -2
- package/lib/vault/passphrase-source.js +2 -2
- package/lib/vault/rotate.js +7 -7
- package/lib/vault/seal-pem-file.js +8 -8
- package/lib/vault-aad.js +5 -5
- package/lib/vendor-data.js +1 -1
- package/lib/watcher.js +5 -5
- package/lib/webhook.js +1 -1
- package/lib/websocket.js +3 -3
- package/lib/ws-client.js +8 -8
- package/package.json +1 -1
- package/sbom.cdx.json +6 -6
package/lib/seeders.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* module.exports = {
|
|
17
17
|
* description: "Create default admin user for local dev",
|
|
18
|
-
* // Optional — when omitted, the env is inferred from the
|
|
18
|
+
* // Optional — when omitted, the env is inferred from the path.
|
|
19
19
|
* // When present, this seed only applies under one of these envs.
|
|
20
20
|
* envs: ["dev", "test"],
|
|
21
21
|
* // Default false — applied once and recorded in registry.
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
* applied state)
|
|
55
55
|
*/
|
|
56
56
|
|
|
57
|
-
var nodePath = require("path");
|
|
57
|
+
var nodePath = require("node:path");
|
|
58
58
|
var atomicFile = require("./atomic-file");
|
|
59
59
|
var C = require("./constants");
|
|
60
60
|
var dbSchema = require("./db-schema");
|
|
@@ -67,7 +67,7 @@ var { SeederError } = require("./framework-error");
|
|
|
67
67
|
|
|
68
68
|
var log = boot("seeders");
|
|
69
69
|
|
|
70
|
-
var
|
|
70
|
+
var db = lazyRequire(function () { return require("./db"); });
|
|
71
71
|
var observability = lazyRequire(function () { return require("./observability"); });
|
|
72
72
|
|
|
73
73
|
var _err = SeederError.factory;
|
|
@@ -151,7 +151,7 @@ function _validateCreateOpts(opts) {
|
|
|
151
151
|
|
|
152
152
|
function _resolveDb(opts) {
|
|
153
153
|
if (opts && opts.db && typeof opts.db.prepare === "function") return opts.db;
|
|
154
|
-
var d =
|
|
154
|
+
var d = db();
|
|
155
155
|
if (typeof d.prepare !== "function") {
|
|
156
156
|
throw _err("NO_DB", "seeders: no db handle: pass opts.db or initialize b.db before create()");
|
|
157
157
|
}
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
* or systemd `install.sh`. node:crypto + node:fs only.
|
|
84
84
|
*/
|
|
85
85
|
|
|
86
|
-
var nodeCrypto = require("crypto");
|
|
87
|
-
var nodeFs = require("fs");
|
|
86
|
+
var nodeCrypto = require("node:crypto");
|
|
87
|
+
var nodeFs = require("node:fs");
|
|
88
88
|
|
|
89
89
|
// _streamHashAndVerify — read the asset in 64 KiB chunks, feed each
|
|
90
90
|
// chunk into sha256, sha3-512, AND the signature verifier in parallel.
|
package/lib/self-update.js
CHANGED
|
@@ -47,16 +47,16 @@
|
|
|
47
47
|
* Framework / vendored-deps integrity check plus version pinning — refuses to install a new build when the asset's detached signature does not verify against the operator-supplied public key, or when the vendored SHA the new build would ship does not match the manifest the opera...
|
|
48
48
|
*/
|
|
49
49
|
|
|
50
|
-
var nodeFs = require("fs");
|
|
51
|
-
var nodePath = require("path");
|
|
52
|
-
var nodeCrypto = require("crypto");
|
|
50
|
+
var nodeFs = require("node:fs");
|
|
51
|
+
var nodePath = require("node:path");
|
|
52
|
+
var nodeCrypto = require("node:crypto");
|
|
53
53
|
var numericBounds = require("./numeric-bounds");
|
|
54
54
|
var atomicFile = require("./atomic-file");
|
|
55
55
|
var validateOpts = require("./validate-opts");
|
|
56
56
|
var bCrypto = require("./crypto");
|
|
57
57
|
var httpClient = require("./http-client");
|
|
58
58
|
var safeJson = require("./safe-json");
|
|
59
|
-
var { URL: NodeUrl } = require("url");
|
|
59
|
+
var { URL: NodeUrl } = require("node:url");
|
|
60
60
|
var lazyRequire = require("./lazy-require");
|
|
61
61
|
var C = require("./constants");
|
|
62
62
|
var standaloneVerifier = require("./self-update-standalone-verifier");
|
|
@@ -178,7 +178,7 @@ function _matchAsset(name, pattern, fallback) {
|
|
|
178
178
|
* Fetch a releases feed and report whether a newer tag is available.
|
|
179
179
|
* Tags are compared semver-style with a leading `v` stripped. When
|
|
180
180
|
* `opts.etag` is supplied an `If-None-Match` header makes a 304 a fast
|
|
181
|
-
* "no update"
|
|
181
|
+
* "no update" path. The match against asset and signature URLs uses
|
|
182
182
|
* `opts.assetPattern` and `opts.signaturePattern` (RegExp or substring)
|
|
183
183
|
* with conservative fallbacks. Throws SelfUpdateError on a non-2xx
|
|
184
184
|
* upstream, malformed JSON, or unexpected shape.
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
|
|
71
71
|
var C = require("./constants");
|
|
72
72
|
var bCrypto = require("./crypto");
|
|
73
|
-
var nodeCrypto = require("crypto");
|
|
73
|
+
var nodeCrypto = require("node:crypto");
|
|
74
74
|
var lazyRequire = require("./lazy-require");
|
|
75
75
|
var requestHelpers = require("./request-helpers");
|
|
76
76
|
var validateOpts = require("./validate-opts");
|
package/lib/storage.js
CHANGED
|
@@ -399,7 +399,7 @@ async function getFileStream(key, sealedKey, opts) {
|
|
|
399
399
|
// to the consumer. Chunked-encryption with per-chunk AEAD would let us
|
|
400
400
|
// stream end-to-end, but at the cost of finer-grained tampering windows.
|
|
401
401
|
var buf = await getFileBuffer(key, sealedKey, opts);
|
|
402
|
-
return require("stream").Readable.from(buf);
|
|
402
|
+
return require("node:stream").Readable.from(buf);
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
/**
|
package/lib/template.js
CHANGED
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
* is the second line: even if a template loaded, it can't execute
|
|
90
90
|
* arbitrary JS — only the limited expression grammar above.
|
|
91
91
|
*/
|
|
92
|
-
var nodeFs = require("fs");
|
|
93
|
-
var nodePath = require("path");
|
|
92
|
+
var nodeFs = require("node:fs");
|
|
93
|
+
var nodePath = require("node:path");
|
|
94
94
|
var lazyRequire = require("./lazy-require");
|
|
95
95
|
var validateOpts = require("./validate-opts");
|
|
96
96
|
|
package/lib/testing.js
CHANGED
|
@@ -62,7 +62,7 @@ var { TestingError } = require("./framework-error");
|
|
|
62
62
|
// metrics is the only place that exposes the global `tap` slot the
|
|
63
63
|
// captureMetricsTap helper swaps; pulling it lazily keeps testing.js
|
|
64
64
|
// safe to require at any framework load order.
|
|
65
|
-
var
|
|
65
|
+
var metrics = lazyRequire(function () { return require("./metrics"); });
|
|
66
66
|
|
|
67
67
|
var _err = TestingError.factory;
|
|
68
68
|
|
|
@@ -563,7 +563,7 @@ function captureObservability() {
|
|
|
563
563
|
* }
|
|
564
564
|
*/
|
|
565
565
|
function captureMetricsTap() {
|
|
566
|
-
var m =
|
|
566
|
+
var m = metrics();
|
|
567
567
|
var original = m.tap;
|
|
568
568
|
var captured = [];
|
|
569
569
|
m.tap = function (name, value, labels) {
|
package/lib/totp.js
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
* operators should choose an authenticator that does (Authy,
|
|
60
60
|
* 1Password, Bitwarden, Aegis, Microsoft Authenticator all do).
|
|
61
61
|
*/
|
|
62
|
-
var nodeCrypto = require("crypto");
|
|
62
|
+
var nodeCrypto = require("node:crypto");
|
|
63
63
|
var C = require("./constants");
|
|
64
64
|
var { generateBytes, generateToken, timingSafeEqual } = require("./crypto");
|
|
65
65
|
var { AuthError } = require("./framework-error");
|
package/lib/vault/index.js
CHANGED
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
* @card
|
|
63
63
|
* Sealed keystore that anchors every other framework subsystem holding secrets at rest: db field encryption, encrypted session storage, audit-log signing keys, OAuth refresh tokens, anything that flows through `b.vault.seal` / `b.vault.unseal`.
|
|
64
64
|
*/
|
|
65
|
-
var nodeFs = require("fs");
|
|
66
|
-
var nodePath = require("path");
|
|
65
|
+
var nodeFs = require("node:fs");
|
|
66
|
+
var nodePath = require("node:path");
|
|
67
67
|
var atomicFile = require("../atomic-file");
|
|
68
68
|
var C = require("../constants");
|
|
69
69
|
var { generateEncryptionKeyPair, encrypt, decrypt } = require("../crypto");
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
* with the original file untouched.
|
|
36
36
|
*/
|
|
37
37
|
|
|
38
|
-
var nodeFs = require("fs");
|
|
39
|
-
var nodePath = require("path");
|
|
38
|
+
var nodeFs = require("node:fs");
|
|
39
|
+
var nodePath = require("node:path");
|
|
40
40
|
var atomicFile = require("../atomic-file");
|
|
41
41
|
var vaultWrap = require("./wrap");
|
|
42
42
|
var { defineClass } = require("../framework-error");
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
* exposure to later env-dump surfaces. This doesn't zero the memory
|
|
24
24
|
* (JavaScript can't) but does remove the env-object reference.
|
|
25
25
|
*/
|
|
26
|
-
var nodeFs = require("fs");
|
|
27
|
-
var readline = require("readline");
|
|
26
|
+
var nodeFs = require("node:fs");
|
|
27
|
+
var readline = require("node:readline");
|
|
28
28
|
var safeEnv = require("../parsers/safe-env");
|
|
29
29
|
var safeBuffer = require("../safe-buffer");
|
|
30
30
|
|
package/lib/vault/rotate.js
CHANGED
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
* sampler skips them.
|
|
49
49
|
*/
|
|
50
50
|
|
|
51
|
-
var nodeFs = require("fs");
|
|
52
|
-
var nodePath = require("path");
|
|
51
|
+
var nodeFs = require("node:fs");
|
|
52
|
+
var nodePath = require("node:path");
|
|
53
53
|
var { DatabaseSync } = require("node:sqlite");
|
|
54
54
|
var atomicFile = require("../atomic-file");
|
|
55
55
|
var safeSql = require("../safe-sql");
|
|
@@ -709,9 +709,9 @@ async function rotate(opts) {
|
|
|
709
709
|
// one for this run); log at debug so the cleanup attempt isn't
|
|
710
710
|
// silently swallowed when something genuinely unexpected fails.
|
|
711
711
|
try { nodeFs.unlinkSync(tmpDbPath + "-wal"); }
|
|
712
|
-
catch (e) { rotateLog.debug("cleanup-failed", { op: "
|
|
712
|
+
catch (e) { rotateLog.debug("cleanup-failed", { op: "fs.unlinkSync", path: tmpDbPath + "-wal", error: e.message }); }
|
|
713
713
|
try { nodeFs.unlinkSync(tmpDbPath + "-shm"); }
|
|
714
|
-
catch (e) { rotateLog.debug("cleanup-failed", { op: "
|
|
714
|
+
catch (e) { rotateLog.debug("cleanup-failed", { op: "fs.unlinkSync", path: tmpDbPath + "-shm", error: e.message }); }
|
|
715
715
|
|
|
716
716
|
var rotatedBytes = nodeFs.readFileSync(tmpDbPath);
|
|
717
717
|
nodeFs.writeFileSync(nodePath.join(stagingDir, paths.encryptedDb),
|
|
@@ -729,11 +729,11 @@ async function rotate(opts) {
|
|
|
729
729
|
} finally {
|
|
730
730
|
vdb.close();
|
|
731
731
|
try { nodeFs.unlinkSync(verifyTmp); }
|
|
732
|
-
catch (e) { rotateLog.debug("cleanup-failed", { op: "
|
|
732
|
+
catch (e) { rotateLog.debug("cleanup-failed", { op: "fs.unlinkSync", path: verifyTmp, error: e.message }); }
|
|
733
733
|
try { nodeFs.unlinkSync(verifyTmp + "-wal"); }
|
|
734
|
-
catch (e) { rotateLog.debug("cleanup-failed", { op: "
|
|
734
|
+
catch (e) { rotateLog.debug("cleanup-failed", { op: "fs.unlinkSync", path: verifyTmp + "-wal", error: e.message }); }
|
|
735
735
|
try { nodeFs.unlinkSync(verifyTmp + "-shm"); }
|
|
736
|
-
catch (e) { rotateLog.debug("cleanup-failed", { op: "
|
|
736
|
+
catch (e) { rotateLog.debug("cleanup-failed", { op: "fs.unlinkSync", path: verifyTmp + "-shm", error: e.message }); }
|
|
737
737
|
}
|
|
738
738
|
if (!verifyResult.ok) {
|
|
739
739
|
throw new VaultRotateError("vault-rotate/verify-failed",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* source: "/etc/letsencrypt/live/example.com/privkey.pem",
|
|
20
20
|
* destination: "/var/lib/blamejs/server.key.sealed",
|
|
21
21
|
* audit: true, // default
|
|
22
|
-
* pollInterval: b.constants.TIME.seconds(2), //
|
|
22
|
+
* pollInterval: b.constants.TIME.seconds(2), // fs.watchFile cadence
|
|
23
23
|
* onResealed: function (info) { ... }, // { srcPath, destPath, bytes,
|
|
24
24
|
* resealedAt, generation }
|
|
25
25
|
* onError: function (err) { ... }, // sealing failed
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
* (rename did not happen). The recovery routine re-runs the seal from
|
|
43
43
|
* source — idempotent because the source PEM is the source of truth.
|
|
44
44
|
*
|
|
45
|
-
*
|
|
45
|
+
* fs.watchFile semantics:
|
|
46
46
|
*
|
|
47
|
-
* Node's
|
|
48
|
-
* pollInterval. It fires on mtime / size change.
|
|
47
|
+
* Node's fs.watchFile is a polling stat() loop with the configured
|
|
48
|
+
* pollInterval. It fires on mtime / size change. fs.watch (the
|
|
49
49
|
* inotify / kqueue backend) is more efficient but inconsistent across
|
|
50
50
|
* platforms — single rename events surface as multiple change events
|
|
51
51
|
* on Linux (events fire on the directory entry, the file, and the
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
* pollInterval) is acceptable for renewal cadences measured in days.
|
|
55
55
|
*/
|
|
56
56
|
|
|
57
|
-
var nodeFs = require("fs");
|
|
58
|
-
var nodePath = require("path");
|
|
57
|
+
var nodeFs = require("node:fs");
|
|
58
|
+
var nodePath = require("node:path");
|
|
59
59
|
var atomicFile = require("../atomic-file");
|
|
60
60
|
var C = require("../constants");
|
|
61
61
|
var lazyRequire = require("../lazy-require");
|
|
@@ -76,7 +76,7 @@ var SealPemFileError = defineClass("SealPemFileError", { alwaysPermanent: true }
|
|
|
76
76
|
// 2-second worst-case re-seal latency — negligible against the
|
|
77
77
|
// renewal cadence. Operators with sub-second-sensitive use cases
|
|
78
78
|
// override via opts.pollInterval.
|
|
79
|
-
// H6 #6 —
|
|
79
|
+
// H6 #6 — fs.watchFile default cadence reduced from 2s to 500ms so a
|
|
80
80
|
// fast renewal-then-revert (mtime bump then second bump within ~2s)
|
|
81
81
|
// doesn't sneak past the watcher. Operators with extremely-quiet
|
|
82
82
|
// renewal cycles can override via opts.pollInterval; the cost of
|
|
@@ -126,7 +126,7 @@ var DEFAULT_MAX_SOURCE_BYTES = C.BYTES.mib(1);
|
|
|
126
126
|
* source: string, // plaintext PEM path (required)
|
|
127
127
|
* destination: string, // sealed-output path (required, must differ from source)
|
|
128
128
|
* audit: boolean, // emit b.audit events on every reseal (default true)
|
|
129
|
-
* pollInterval: number, //
|
|
129
|
+
* pollInterval: number, // fs.watchFile cadence in ms (default 500)
|
|
130
130
|
* onResealed: function, // (info) => void — { srcPath, destPath, bytes, resealedAt, generation }
|
|
131
131
|
* onError: function, // (err) => void — sealing failed
|
|
132
132
|
* maxSourceBytes: number, // refuse source larger than this (default 1 MiB)
|
package/lib/vault-aad.js
CHANGED
|
@@ -52,7 +52,7 @@ var C = require("./constants");
|
|
|
52
52
|
var { defineClass } = require("./framework-error");
|
|
53
53
|
var VaultAadError = defineClass("VaultAadError", { alwaysPermanent: true });
|
|
54
54
|
|
|
55
|
-
var
|
|
55
|
+
var bCrypto = lazyRequire(function () { return require("./crypto"); });
|
|
56
56
|
var vault = lazyRequire(function () { return require("./vault"); });
|
|
57
57
|
var audit = lazyRequire(function () { return require("./audit"); });
|
|
58
58
|
|
|
@@ -154,11 +154,11 @@ function _deriveKey(aadBytes) {
|
|
|
154
154
|
// this is a deterministic derivation; rotating vault keys produces
|
|
155
155
|
// a different root and breaks all prior AAD-sealed values (operator
|
|
156
156
|
// intent: rotation = re-seal).
|
|
157
|
-
var rootHash =
|
|
157
|
+
var rootHash = bCrypto().sha3Hash(keysJson);
|
|
158
158
|
var prefix = Buffer.from("vault.aad/v1/", "utf8");
|
|
159
159
|
var rootBuf = Buffer.from(rootHash, "hex");
|
|
160
160
|
var input = Buffer.concat([prefix, rootBuf, aadBytes]);
|
|
161
|
-
return
|
|
161
|
+
return bCrypto().kdf(input, C.BYTES.bytes(32));
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
function seal(plaintext, aadParts) {
|
|
@@ -178,7 +178,7 @@ function seal(plaintext, aadParts) {
|
|
|
178
178
|
var aadBytes = _canonicalize(aadParts);
|
|
179
179
|
var key = _deriveKey(aadBytes);
|
|
180
180
|
var ptBuf = Buffer.from(plaintext, "utf8");
|
|
181
|
-
var packed =
|
|
181
|
+
var packed = bCrypto().encryptPacked(ptBuf, key, aadBytes);
|
|
182
182
|
|
|
183
183
|
try {
|
|
184
184
|
audit().safeEmit({
|
|
@@ -213,7 +213,7 @@ function unseal(value, aadParts) {
|
|
|
213
213
|
"unseal: base64 decode failed - " + e.message);
|
|
214
214
|
}
|
|
215
215
|
var pt;
|
|
216
|
-
try { pt =
|
|
216
|
+
try { pt = bCrypto().decryptPacked(packed, key, aadBytes); }
|
|
217
217
|
catch (e) {
|
|
218
218
|
try {
|
|
219
219
|
audit().safeEmit({
|
package/lib/vendor-data.js
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
* not `fs.readFileSync`-loaded.
|
|
37
37
|
*/
|
|
38
38
|
|
|
39
|
-
var nodeCrypto = require("crypto");
|
|
39
|
+
var nodeCrypto = require("node:crypto");
|
|
40
40
|
var safeEnv = require("./parsers/safe-env");
|
|
41
41
|
var { defineClass } = require("./framework-error");
|
|
42
42
|
var pqcSoftware = require("./pqc-software");
|
package/lib/watcher.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* b.watcher — recursive filesystem-watch primitive with cross-platform
|
|
4
4
|
* event normalization.
|
|
5
5
|
*
|
|
6
|
-
* Wraps `
|
|
6
|
+
* Wraps `fs.watch(root, { recursive: true })` and turns the per-platform
|
|
7
7
|
* event soup (Linux inotify "rename" + "change", macOS FSEvents
|
|
8
8
|
* coalesced "rename", Windows ReadDirectoryChangesW pure "rename" /
|
|
9
9
|
* "change") into a single shape:
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* `type` is one of "file" or "dir". The watcher is build-tool-shaped:
|
|
16
16
|
* use it to drive incremental rebuilds, hot-reload-on-change,
|
|
17
17
|
* config-file watching, or content-store cache busts. It is NOT a
|
|
18
|
-
* security primitive —
|
|
18
|
+
* security primitive — fs.watch is best-effort across kernels and the
|
|
19
19
|
* caller must not rely on it for audit-grade change detection.
|
|
20
20
|
*
|
|
21
21
|
* Cross-platform notes baked in:
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
* watcher.WatcherError
|
|
46
46
|
*/
|
|
47
47
|
|
|
48
|
-
var nodeFs = require("fs");
|
|
49
|
-
var nodePath = require("path");
|
|
48
|
+
var nodeFs = require("node:fs");
|
|
49
|
+
var nodePath = require("node:path");
|
|
50
50
|
var lazyRequire = require("./lazy-require");
|
|
51
51
|
var validateOpts = require("./validate-opts");
|
|
52
52
|
var { WatcherError } = require("./framework-error");
|
|
@@ -434,7 +434,7 @@ function create(opts) {
|
|
|
434
434
|
((e && e.message) || String(e)) + " — pass mode: \"poll\" to fall back to interval polling");
|
|
435
435
|
}
|
|
436
436
|
throw new WatcherError("watcher/start-failed",
|
|
437
|
-
"watcher.create:
|
|
437
|
+
"watcher.create: fs.watch failed: " + ((e && e.message) || String(e)));
|
|
438
438
|
}
|
|
439
439
|
}
|
|
440
440
|
|
package/lib/webhook.js
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* Outbound webhook delivery with cryptographic signing in a single `Webhook-Signature` header, retry + dead-letter via `b.retry`, and idempotency keys baked into the signed string so a captured signature cannot be replayed with a fresh id.
|
|
48
48
|
*/
|
|
49
49
|
|
|
50
|
-
var nodeCrypto = require("crypto");
|
|
50
|
+
var nodeCrypto = require("node:crypto");
|
|
51
51
|
var bCrypto = require("./crypto");
|
|
52
52
|
var httpClient = require("./http-client");
|
|
53
53
|
var safeBuffer = require("./safe-buffer");
|
package/lib/websocket.js
CHANGED
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
* RFC 6455 WebSocket server on top of Node's `'upgrade'` event, plus RFC 8441 Extended CONNECT for HTTP/2.
|
|
75
75
|
*/
|
|
76
76
|
|
|
77
|
-
var nodeCrypto = require("crypto");
|
|
78
|
-
var zlib = require("zlib");
|
|
79
|
-
var { EventEmitter } = require("events");
|
|
77
|
+
var nodeCrypto = require("node:crypto");
|
|
78
|
+
var zlib = require("node:zlib");
|
|
79
|
+
var { EventEmitter } = require("node:events");
|
|
80
80
|
var C = require("./constants");
|
|
81
81
|
var requestHelpers = require("./request-helpers");
|
|
82
82
|
var safeAsync = require("./safe-async");
|
package/lib/ws-client.js
CHANGED
|
@@ -45,16 +45,16 @@
|
|
|
45
45
|
* (operator opts in to mTLS via tlsOpts). HSTS-style, no soft-fail.
|
|
46
46
|
*/
|
|
47
47
|
|
|
48
|
-
var net = require("net");
|
|
49
|
-
var nodeUrl = require("url");
|
|
50
|
-
var nodeCrypto = require("crypto");
|
|
51
|
-
var EventEmitter = require("events");
|
|
48
|
+
var net = require("node:net");
|
|
49
|
+
var nodeUrl = require("node:url");
|
|
50
|
+
var nodeCrypto = require("node:crypto");
|
|
51
|
+
var { EventEmitter } = require("node:events");
|
|
52
52
|
|
|
53
53
|
var lazyRequire = require("./lazy-require");
|
|
54
54
|
var validateOpts = require("./validate-opts");
|
|
55
55
|
var safeAsync = require("./safe-async");
|
|
56
56
|
var safeBuffer = require("./safe-buffer");
|
|
57
|
-
var
|
|
57
|
+
var bCrypto = lazyRequire(function () { return require("./crypto"); });
|
|
58
58
|
var websocket = lazyRequire(function () { return require("./websocket"); });
|
|
59
59
|
var audit = lazyRequire(function () { return require("./audit"); });
|
|
60
60
|
var networkTls = lazyRequire(function () { return require("./network-tls"); });
|
|
@@ -137,7 +137,7 @@ function _inflateRawCappedSync(zlib, compressed, maxBytes, windowBits) {
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
function _generateKey() {
|
|
140
|
-
return
|
|
140
|
+
return bCrypto().generateBytes(C.BYTES.bytes(16)).toString("base64");
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
function _expectedAccept(secKey, handshakeGuid) {
|
|
@@ -389,7 +389,7 @@ class WsClient extends EventEmitter {
|
|
|
389
389
|
|
|
390
390
|
var socket;
|
|
391
391
|
if (parsed.protocol === "wss:") {
|
|
392
|
-
var tls = require("tls"); // allow:inline-require — node:tls only on TLS path
|
|
392
|
+
var tls = require("node:tls"); // allow:inline-require — node:tls only on TLS path
|
|
393
393
|
var tlsOpts = Object.assign({
|
|
394
394
|
host: host,
|
|
395
395
|
port: port,
|
|
@@ -710,7 +710,7 @@ class WsClient extends EventEmitter {
|
|
|
710
710
|
this._fragmentRsv1 = false;
|
|
711
711
|
if (this._negotiatedDeflate && firstFrameRsv1) {
|
|
712
712
|
try {
|
|
713
|
-
var zlib = require("zlib"); // allow:inline-require — zlib only on deflate-negotiated path
|
|
713
|
+
var zlib = require("node:zlib"); // allow:inline-require — zlib only on deflate-negotiated path
|
|
714
714
|
var compressed = Buffer.concat([fullPayload, Buffer.from([0x00, 0x00, 0xff, 0xff])]); // allow:raw-byte-literal — RFC 7692 §7.2.2 deflate trailer
|
|
715
715
|
// Decompression-bomb defense: zlib.inflateRawSync's
|
|
716
716
|
// `maxOutputLength` aborts the inflate the moment the
|
package/package.json
CHANGED
package/sbom.cdx.json
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json",
|
|
3
3
|
"bomFormat": "CycloneDX",
|
|
4
4
|
"specVersion": "1.6",
|
|
5
|
-
"serialNumber": "urn:uuid:
|
|
5
|
+
"serialNumber": "urn:uuid:bfd9c116-6a09-4b5c-a673-96fa322cab83",
|
|
6
6
|
"version": 1,
|
|
7
7
|
"metadata": {
|
|
8
|
-
"timestamp": "2026-05-
|
|
8
|
+
"timestamp": "2026-05-14T06:23:47.607Z",
|
|
9
9
|
"lifecycles": [
|
|
10
10
|
{
|
|
11
11
|
"phase": "build"
|
|
@@ -19,14 +19,14 @@
|
|
|
19
19
|
}
|
|
20
20
|
],
|
|
21
21
|
"component": {
|
|
22
|
-
"bom-ref": "@blamejs/core@0.9.
|
|
22
|
+
"bom-ref": "@blamejs/core@0.9.17",
|
|
23
23
|
"type": "library",
|
|
24
24
|
"name": "blamejs",
|
|
25
|
-
"version": "0.9.
|
|
25
|
+
"version": "0.9.17",
|
|
26
26
|
"scope": "required",
|
|
27
27
|
"author": "blamejs contributors",
|
|
28
28
|
"description": "The Node framework that owns its stack.",
|
|
29
|
-
"purl": "pkg:npm/%40blamejs/core@0.9.
|
|
29
|
+
"purl": "pkg:npm/%40blamejs/core@0.9.17",
|
|
30
30
|
"properties": [],
|
|
31
31
|
"externalReferences": [
|
|
32
32
|
{
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"components": [],
|
|
55
55
|
"dependencies": [
|
|
56
56
|
{
|
|
57
|
-
"ref": "@blamejs/core@0.9.
|
|
57
|
+
"ref": "@blamejs/core@0.9.17",
|
|
58
58
|
"dependsOn": []
|
|
59
59
|
}
|
|
60
60
|
]
|