diff --git a/lana/package.json b/lana/package.json index 061ec8c5..04d86744 100644 --- a/lana/package.json +++ b/lana/package.json @@ -308,8 +308,8 @@ "dependencies": { "@apexdevtools/apex-ls": "^5.10.0", "@apexdevtools/apex-parser": "^4.4.0", - "@apexdevtools/sfdx-auth-helper": "^2.1.0", - "@salesforce/apex-node": "^1.6.2" + "@salesforce/apex-node": "^8.4.6", + "@salesforce/core": "^8.25.1" }, "devDependencies": { "@types/node": "~22.16.3", diff --git a/lana/src/salesforce/logs/GetLogFile.ts b/lana/src/salesforce/logs/GetLogFile.ts index abab21ed..12a735aa 100644 --- a/lana/src/salesforce/logs/GetLogFile.ts +++ b/lana/src/salesforce/logs/GetLogFile.ts @@ -1,22 +1,15 @@ /* * Copyright (c) 2020 Certinia Inc. All rights reserved. */ +import { getSalesforceConnection } from './SalesforceConnection.js'; export class GetLogFile { static async apply(wsPath: string, logDir: string, logId: string): Promise { + const connection = await getSalesforceConnection(wsPath); + // Dynamic import for code splitting. Improves performance by reducing the amount of JS that is loaded and parsed at the start. // eslint-disable-next-line @typescript-eslint/naming-convention - const { AuthHelper } = await import('@apexdevtools/sfdx-auth-helper'); - - const ah = await AuthHelper.instance(wsPath); - const connection = await ah.connect(await ah.getDefaultUsername()); - - if (connection) { - // Dynamic import for code splitting. Improves performance by reducing the amount of JS that is loaded and parsed at the start. - // eslint-disable-next-line @typescript-eslint/naming-convention - const { LogService } = await import('@salesforce/apex-node'); - await new LogService(connection).getLogs({ logId: logId, outputDir: logDir }); - } - return new Promise((resolve) => resolve()); + const { LogService } = await import('@salesforce/apex-node'); + await new LogService(connection).getLogs({ logId: logId, outputDir: logDir }); } } diff --git a/lana/src/salesforce/logs/GetLogFiles.ts b/lana/src/salesforce/logs/GetLogFiles.ts index d4485e2c..7a9735ed 100644 --- a/lana/src/salesforce/logs/GetLogFiles.ts +++ b/lana/src/salesforce/logs/GetLogFiles.ts @@ -3,20 +3,15 @@ */ import { type LogRecord } from '@salesforce/apex-node'; +import { getSalesforceConnection } from './SalesforceConnection.js'; + export class GetLogFiles { static async apply(wsPath: string): Promise { + const connection = await getSalesforceConnection(wsPath); + // Dynamic import for code splitting. Improves performance by reducing the amount of JS that is loaded and parsed at the start. // eslint-disable-next-line @typescript-eslint/naming-convention - const { AuthHelper } = await import('@apexdevtools/sfdx-auth-helper'); - const ah = await AuthHelper.instance(wsPath); - const connection = await ah.connect(await ah.getDefaultUsername()); - - if (connection) { - // Dynamic import for code splitting. Improves performance by reducing the amount of JS that is loaded and parsed at the start. - // eslint-disable-next-line @typescript-eslint/naming-convention - const { LogService } = await import('@salesforce/apex-node'); - return new LogService(connection).getLogRecords(); - } - return []; + const { LogService } = await import('@salesforce/apex-node'); + return new LogService(connection).getLogRecords(); } } diff --git a/lana/src/salesforce/logs/SalesforceConnection.ts b/lana/src/salesforce/logs/SalesforceConnection.ts new file mode 100644 index 00000000..397f2520 --- /dev/null +++ b/lana/src/salesforce/logs/SalesforceConnection.ts @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 Certinia Inc. All rights reserved. + */ +import type { Connection } from '@salesforce/core'; + +import { setupPinoBundlerPaths } from '../setupPinoPaths.js'; + +export async function getSalesforceConnection(wsPath: string): Promise { + // Must be called before importing @salesforce packages that use pino + setupPinoBundlerPaths(); + + // Dynamic import for code splitting. Improves performance by reducing the amount of JS that is loaded and parsed at the start. + // eslint-disable-next-line @typescript-eslint/naming-convention + const { ConfigAggregator, OrgConfigProperties, Org } = await import('@salesforce/core'); + + const aggregator = await ConfigAggregator.create({ projectPath: wsPath }); + const aliasOrUsername = aggregator.getPropertyValue(OrgConfigProperties.TARGET_ORG); + + if (!aliasOrUsername) { + throw new Error('No default org configured for workspace'); + } + + const org = await Org.create({ aliasOrUsername }); + return org.getConnection(); +} diff --git a/lana/src/salesforce/setupPinoPaths.ts b/lana/src/salesforce/setupPinoPaths.ts new file mode 100644 index 00000000..cf1def19 --- /dev/null +++ b/lana/src/salesforce/setupPinoPaths.ts @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2020 Certinia Inc. All rights reserved. + */ +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; + +/** + * Sets up pino bundler path overrides for worker threads. + * Must be called before any @salesforce/* imports that use pino. + * + * Pino uses worker threads that need to load files from disk at runtime. + * When bundled with rollup, the paths break. This injects the correct + * paths to the separately copied worker files. + */ +export function setupPinoBundlerPaths(): void { + if ('__bundlerPathsOverrides' in globalThis) return; + + const __dirname = dirname(fileURLToPath(import.meta.url)); + + (globalThis as Record).__bundlerPathsOverrides = { + 'thread-stream-worker': join(__dirname, 'thread-stream-worker.js'), + 'pino-worker': join(__dirname, 'pino-worker.js'), + 'pino/file': join(__dirname, 'pino-file.js'), + '../../lib/logger/transformStream': join(__dirname, 'salesforce-transform-stream.js'), + }; +} diff --git a/package.json b/package.json index b136beff..f9e0fef1 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "prepare": "husky", "bump-prerelease": "node ./scripts/pre-release.js", "build": "NODE_ENV=production pnpm run build:dev", - "build:fast": "NODE_ENV=production pnpm run build:dev", + "build:fast": "NODE_ENV=production pnpm run build:dev:fast", "build:dev": "rm -rf lana/out && concurrently -r -g 'rollup -c rollup.config.mjs' 'tsc --noemit --skipLibCheck -p apex-log-parser/tsconfig.json' 'tsc --noemit --skipLibCheck -p log-viewer/tsconfig.json' 'tsc --noemit --skipLibCheck -p lana/tsconfig.json'", "build:dev:fast": "rm -rf lana/out && concurrently -r -g 'rolldown -c rolldown.config.ts' 'tsc --noemit --skipLibCheck -p apex-log-parser/tsconfig.json' 'tsc --noemit --skipLibCheck -p log-viewer/tsconfig.json' 'tsc --noemit --skipLibCheck -p lana/tsconfig.json'", "watch": "rm -rf lana/out && rollup -w -c rollup.config.mjs", @@ -51,16 +51,5 @@ }, "lint-staged": { "*.{ts,css,md,scss}": "prettier --cache --write --experimental-cli" - }, - "pnpm": { - "patchedDependencies": { - "@salesforce/bunyan@2.0.0": "patches/@salesforce__bunyan@2.0.0.patch" - }, - "overrides": { - "@salesforce/core>jsforce": "^2.0.0-beta.27", - "@salesforce/apex-node>@salesforce/core": "^4.3.11", - "@apexdevtools/sfdx-auth-helper>jsforce": "^2.0.0-beta.27", - "@apexdevtools/sfdx-auth-helper>@salesforce/core": "^4.3.11" - } } } diff --git a/patches/@salesforce__bunyan@2.0.0.patch b/patches/@salesforce__bunyan@2.0.0.patch deleted file mode 100644 index bf312696..00000000 --- a/patches/@salesforce__bunyan@2.0.0.patch +++ /dev/null @@ -1,2330 +0,0 @@ -diff --git a/lib/bunyan.js b/lib/bunyan.js -index 44d0157bced5f6fc74bcbcf1c3fe6044e4197524..286294adc4c9b541e0f80af7041d3d317f6472e4 100644 ---- a/lib/bunyan.js -+++ b/lib/bunyan.js -@@ -8,7 +8,7 @@ - * vim: expandtab:ts=4:sw=4 - */ - --var VERSION = '1.8.2'; -+var VERSION = "1.8.2"; - - /* - * Bunyan log format version. This becomes the 'v' field on all log records. -@@ -17,14 +17,14 @@ var VERSION = '1.8.2'; - */ - var LOG_VERSION = 0; - -- --var xxx = function xxx(s) { // internal dev/debug logging -- var args = ['XX' + 'X: '+s].concat( -- Array.prototype.slice.call(arguments, 1)); -- console.error.apply(this, args); -+var xxx = function xxx(s) { -+ // internal dev/debug logging -+ var args = ["XX" + "X: " + s].concat( -+ Array.prototype.slice.call(arguments, 1) -+ ); -+ console.error.apply(this, args); - }; --var xxx = function xxx() {}; // comment out to turn on debug logging -- -+var xxx = function xxx() {}; // comment out to turn on debug logging - - /* - * Runtime environment notes: -@@ -47,73 +47,70 @@ var xxx = function xxx() {}; // comment out to turn on debug logging - * - Other? Please open issues if things are broken. - */ - var runtimeEnv; --if (typeof (process) !== 'undefined' && process.versions) { -- if (process.versions.nw) { -- runtimeEnv = 'nw'; -- } else if (process.versions.node) { -- runtimeEnv = 'node'; -- } -+if (typeof process !== "undefined" && process.versions) { -+ if (process.versions.nw) { -+ runtimeEnv = "nw"; -+ } else if (process.versions.node) { -+ runtimeEnv = "node"; -+ } - } --if (!runtimeEnv && typeof (window) !== 'undefined' && -- window.window === window) { -- runtimeEnv = 'browser'; -+if (!runtimeEnv && typeof window !== "undefined" && window.window === window) { -+ runtimeEnv = "browser"; - } - if (!runtimeEnv) { -- throw new Error('unknown runtime environment'); -+ throw new Error("unknown runtime environment"); - } - -- - var os, fs, dtrace; --if (runtimeEnv === 'browser') { -- os = { -- hostname: function () { -- return window.location.host; -- } -- }; -- fs = {}; -- dtrace = null; -+if (runtimeEnv === "browser") { -+ os = { -+ hostname: function () { -+ return window.location.host; -+ }, -+ }; -+ fs = {}; -+ dtrace = null; - } else { -- os = require('os'); -- fs = require('fs'); -- -- if (process.env.BUNYAN_DTRACE) { -- try { -- dtrace = require('dtrace-provider' + ''); -- } catch (e) { -- dtrace = null; -- } -- } else { -- dtrace = null; -+ os = require("os"); -+ fs = require("fs"); -+ -+ if (process.env.BUNYAN_DTRACE) { -+ try { -+ dtrace = require("dtrace-provider" + ""); -+ } catch (e) { -+ dtrace = null; - } -+ } else { -+ dtrace = null; -+ } - } --var util = require('util'); --var assert = require('assert'); --var EventEmitter = require('events').EventEmitter; --var stream = require('stream'); -+var util = require("util"); -+var assert = require("assert"); -+var EventEmitter = require("events").EventEmitter; -+var stream = require("stream"); - - try { -- var safeJsonStringify = require('safe-json-stringify'); -+ var safeJsonStringify = require("safe-json-stringify"); - } catch (e) { -- safeJsonStringify = null; -+ safeJsonStringify = null; - } - if (process.env.BUNYAN_TEST_NO_SAFE_JSON_STRINGIFY) { -- safeJsonStringify = null; -+ safeJsonStringify = null; - } - - // The 'mv' module is required for rotating-file stream support. - try { -- var mv = require('mv' + ''); -+ var mv = require("mv"); - } catch (e) { -- mv = null; -+ mv = null; - } - - try { -- var sourceMapSupport = require('source-map-support' + ''); -+ var sourceMapSupport = require("source-map-support" + ""); - } catch (_) { -- sourceMapSupport = null; -+ sourceMapSupport = null; - } - -- - //---- Internal support stuff - - /** -@@ -121,103 +118,103 @@ try { - * exceptions, so this function attempts to handle non-objects gracefully. - */ - function objCopy(obj) { -- if (obj == null) { // null or undefined -- return obj; -- } else if (Array.isArray(obj)) { -- return obj.slice(); -- } else if (typeof (obj) === 'object') { -- var copy = {}; -- Object.keys(obj).forEach(function (k) { -- copy[k] = obj[k]; -- }); -- return copy; -- } else { -- return obj; -- } -+ if (obj == null) { -+ // null or undefined -+ return obj; -+ } else if (Array.isArray(obj)) { -+ return obj.slice(); -+ } else if (typeof obj === "object") { -+ var copy = {}; -+ Object.keys(obj).forEach(function (k) { -+ copy[k] = obj[k]; -+ }); -+ return copy; -+ } else { -+ return obj; -+ } - } - - var format = util.format; - if (!format) { -- // If node < 0.6, then use its `util.format`: -- // : -- var inspect = util.inspect; -- var formatRegExp = /%[sdj%]/g; -- format = function format(f) { -- if (typeof (f) !== 'string') { -- var objects = []; -- for (var i = 0; i < arguments.length; i++) { -- objects.push(inspect(arguments[i])); -- } -- return objects.join(' '); -- } -+ // If node < 0.6, then use its `util.format`: -+ // : -+ var inspect = util.inspect; -+ var formatRegExp = /%[sdj%]/g; -+ format = function format(f) { -+ if (typeof f !== "string") { -+ var objects = []; -+ for (var i = 0; i < arguments.length; i++) { -+ objects.push(inspect(arguments[i])); -+ } -+ return objects.join(" "); -+ } - -- var i = 1; -- var args = arguments; -- var len = args.length; -- var str = String(f).replace(formatRegExp, function (x) { -- if (i >= len) -- return x; -- switch (x) { -- case '%s': return String(args[i++]); -- case '%d': return Number(args[i++]); -- case '%j': return JSON.stringify(args[i++], safeCycles()); -- case '%%': return '%'; -- default: -- return x; -- } -- }); -- for (var x = args[i]; i < len; x = args[++i]) { -- if (x === null || typeof (x) !== 'object') { -- str += ' ' + x; -- } else { -- str += ' ' + inspect(x); -- } -- } -- return str; -- }; -+ var i = 1; -+ var args = arguments; -+ var len = args.length; -+ var str = String(f).replace(formatRegExp, function (x) { -+ if (i >= len) return x; -+ switch (x) { -+ case "%s": -+ return String(args[i++]); -+ case "%d": -+ return Number(args[i++]); -+ case "%j": -+ return JSON.stringify(args[i++], safeCycles()); -+ case "%%": -+ return "%"; -+ default: -+ return x; -+ } -+ }); -+ for (var x = args[i]; i < len; x = args[++i]) { -+ if (x === null || typeof x !== "object") { -+ str += " " + x; -+ } else { -+ str += " " + inspect(x); -+ } -+ } -+ return str; -+ }; - } - -- - /** - * Gather some caller info 3 stack levels up. - * See . - */ - function getCaller3Info() { -- if (this === undefined) { -- // Cannot access caller info in 'strict' mode. -- return; -+ if (this === undefined) { -+ // Cannot access caller info in 'strict' mode. -+ return; -+ } -+ var obj = {}; -+ var saveLimit = Error.stackTraceLimit; -+ var savePrepare = Error.prepareStackTrace; -+ Error.stackTraceLimit = 3; -+ Error.captureStackTrace(this, getCaller3Info); -+ -+ Error.prepareStackTrace = function (_, stack) { -+ var caller = stack[2]; -+ if (sourceMapSupport) { -+ caller = sourceMapSupport.wrapCallSite(caller); - } -- var obj = {}; -- var saveLimit = Error.stackTraceLimit; -- var savePrepare = Error.prepareStackTrace; -- Error.stackTraceLimit = 3; -- Error.captureStackTrace(this, getCaller3Info); -- -- Error.prepareStackTrace = function (_, stack) { -- var caller = stack[2]; -- if (sourceMapSupport) { -- caller = sourceMapSupport.wrapCallSite(caller); -- } -- obj.file = caller.getFileName(); -- obj.line = caller.getLineNumber(); -- var func = caller.getFunctionName(); -- if (func) -- obj.func = func; -- }; -- this.stack; -- Error.stackTraceLimit = saveLimit; -- Error.prepareStackTrace = savePrepare; -- return obj; -+ obj.file = caller.getFileName(); -+ obj.line = caller.getLineNumber(); -+ var func = caller.getFunctionName(); -+ if (func) obj.func = func; -+ }; -+ this.stack; -+ Error.stackTraceLimit = saveLimit; -+ Error.prepareStackTrace = savePrepare; -+ return obj; - } - -- - function _indent(s, indent) { -- if (!indent) indent = ' '; -- var lines = s.split(/\r?\n/g); -- return indent + lines.join('\n' + indent); -+ if (!indent) indent = " "; -+ var lines = s.split(/\r?\n/g); -+ return indent + lines.join("\n" + indent); - } - -- - /** - * Warn about an bunyan processing error. - * -@@ -226,35 +223,33 @@ function _indent(s, indent) { - * have its warning only printed once. - */ - function _warn(msg, dedupKey) { -- assert.ok(msg); -- if (dedupKey) { -- if (_warned[dedupKey]) { -- return; -- } -- _warned[dedupKey] = true; -+ assert.ok(msg); -+ if (dedupKey) { -+ if (_warned[dedupKey]) { -+ return; - } -- process.stderr.write(msg + '\n'); -+ _warned[dedupKey] = true; -+ } -+ process.stderr.write(msg + "\n"); - } - function _haveWarned(dedupKey) { -- return _warned[dedupKey]; -+ return _warned[dedupKey]; - } - var _warned = {}; - -- - function ConsoleRawStream() {} - ConsoleRawStream.prototype.write = function (rec) { -- if (rec.level < INFO) { -- console.log(rec); -- } else if (rec.level < WARN) { -- console.info(rec); -- } else if (rec.level < ERROR) { -- console.warn(rec); -- } else { -- console.error(rec); -- } -+ if (rec.level < INFO) { -+ console.log(rec); -+ } else if (rec.level < WARN) { -+ console.info(rec); -+ } else if (rec.level < ERROR) { -+ console.warn(rec); -+ } else { -+ console.error(rec); -+ } - }; - -- - //---- Levels - - var TRACE = 10; -@@ -265,16 +260,16 @@ var ERROR = 50; - var FATAL = 60; - - var levelFromName = { -- 'trace': TRACE, -- 'debug': DEBUG, -- 'info': INFO, -- 'warn': WARN, -- 'error': ERROR, -- 'fatal': FATAL -+ trace: TRACE, -+ debug: DEBUG, -+ info: INFO, -+ warn: WARN, -+ error: ERROR, -+ fatal: FATAL, - }; - var nameFromLevel = {}; - Object.keys(levelFromName).forEach(function (name) { -- nameFromLevel[levelFromName[name]] = name; -+ nameFromLevel[levelFromName[name]] = name; - }); - - // Dtrace probes. -@@ -289,34 +284,34 @@ var probes = dtrace && {}; - * @api public - */ - function resolveLevel(nameOrNum) { -- var level; -- var type = typeof (nameOrNum); -- if (type === 'string') { -- level = levelFromName[nameOrNum.toLowerCase()]; -- if (!level) { -- throw new Error(format('unknown level name: "%s"', nameOrNum)); -- } -- } else if (type !== 'number') { -- throw new TypeError(format('cannot resolve level: invalid arg (%s):', -- type, nameOrNum)); -- } else if (nameOrNum < 0 || Math.floor(nameOrNum) !== nameOrNum) { -- throw new TypeError(format('level is not a positive integer: %s', -- nameOrNum)); -- } else { -- level = nameOrNum; -+ var level; -+ var type = typeof nameOrNum; -+ if (type === "string") { -+ level = levelFromName[nameOrNum.toLowerCase()]; -+ if (!level) { -+ throw new Error(format('unknown level name: "%s"', nameOrNum)); - } -- return level; -+ } else if (type !== "number") { -+ throw new TypeError( -+ format("cannot resolve level: invalid arg (%s):", type, nameOrNum) -+ ); -+ } else if (nameOrNum < 0 || Math.floor(nameOrNum) !== nameOrNum) { -+ throw new TypeError( -+ format("level is not a positive integer: %s", nameOrNum) -+ ); -+ } else { -+ level = nameOrNum; -+ } -+ return level; - } - -- - function isWritable(obj) { -- if (obj instanceof stream.Writable) { -- return true; -- } -- return typeof (obj.write) === 'function'; -+ if (obj instanceof stream.Writable) { -+ return true; -+ } -+ return typeof obj.write === "function"; - } - -- - //---- Logger class - - /** -@@ -355,186 +350,188 @@ function isWritable(obj) { - * creation. - */ - function Logger(options, _childOptions, _childSimple) { -- xxx('Logger start:', options) -- if (!(this instanceof Logger)) { -- return new Logger(options, _childOptions); -+ xxx("Logger start:", options); -+ if (!(this instanceof Logger)) { -+ return new Logger(options, _childOptions); -+ } -+ -+ // Input arg validation. -+ var parent; -+ if (_childOptions !== undefined) { -+ parent = options; -+ options = _childOptions; -+ if (!(parent instanceof Logger)) { -+ throw new TypeError("invalid Logger creation: do not pass a second arg"); - } -- -- // Input arg validation. -- var parent; -- if (_childOptions !== undefined) { -- parent = options; -- options = _childOptions; -- if (!(parent instanceof Logger)) { -- throw new TypeError( -- 'invalid Logger creation: do not pass a second arg'); -- } -+ } -+ if (!options) { -+ throw new TypeError("options (object) is required"); -+ } -+ if (!parent) { -+ if (!options.name) { -+ throw new TypeError("options.name (string) is required"); - } -- if (!options) { -- throw new TypeError('options (object) is required'); -+ } else { -+ if (options.name) { -+ throw new TypeError("invalid options.name: child cannot set logger name"); - } -- if (!parent) { -- if (!options.name) { -- throw new TypeError('options.name (string) is required'); -- } -- } else { -- if (options.name) { -- throw new TypeError( -- 'invalid options.name: child cannot set logger name'); -- } -+ } -+ if (options.stream && options.streams) { -+ throw new TypeError('cannot mix "streams" and "stream" options'); -+ } -+ if (options.streams && !Array.isArray(options.streams)) { -+ throw new TypeError("invalid options.streams: must be an array"); -+ } -+ if ( -+ options.serializers && -+ (typeof options.serializers !== "object" || -+ Array.isArray(options.serializers)) -+ ) { -+ throw new TypeError("invalid options.serializers: must be an object"); -+ } -+ -+ EventEmitter.call(this); -+ -+ // Fast path for simple child creation. -+ if (parent && _childSimple) { -+ // `_isSimpleChild` is a signal to stream close handling that this child -+ // owns none of its streams. -+ this._isSimpleChild = true; -+ -+ this._level = parent._level; -+ this.streams = parent.streams; -+ this.serializers = parent.serializers; -+ this.src = parent.src; -+ var fields = (this.fields = {}); -+ var parentFieldNames = Object.keys(parent.fields); -+ for (var i = 0; i < parentFieldNames.length; i++) { -+ var name = parentFieldNames[i]; -+ fields[name] = parent.fields[name]; - } -- if (options.stream && options.streams) { -- throw new TypeError('cannot mix "streams" and "stream" options'); -+ var names = Object.keys(options); -+ for (var i = 0; i < names.length; i++) { -+ var name = names[i]; -+ fields[name] = options[name]; - } -- if (options.streams && !Array.isArray(options.streams)) { -- throw new TypeError('invalid options.streams: must be an array') -+ return; -+ } -+ -+ // Start values. -+ var self = this; -+ if (parent) { -+ this._level = parent._level; -+ this.streams = []; -+ for (var i = 0; i < parent.streams.length; i++) { -+ var s = objCopy(parent.streams[i]); -+ s.closeOnExit = false; // Don't own parent stream. -+ this.streams.push(s); - } -- if (options.serializers && (typeof (options.serializers) !== 'object' || -- Array.isArray(options.serializers))) { -- throw new TypeError('invalid options.serializers: must be an object') -+ this.serializers = objCopy(parent.serializers); -+ this.src = parent.src; -+ this.fields = objCopy(parent.fields); -+ if (options.level) { -+ this.level(options.level); - } -- -- EventEmitter.call(this); -- -- // Fast path for simple child creation. -- if (parent && _childSimple) { -- // `_isSimpleChild` is a signal to stream close handling that this child -- // owns none of its streams. -- this._isSimpleChild = true; -- -- this._level = parent._level; -- this.streams = parent.streams; -- this.serializers = parent.serializers; -- this.src = parent.src; -- var fields = this.fields = {}; -- var parentFieldNames = Object.keys(parent.fields); -- for (var i = 0; i < parentFieldNames.length; i++) { -- var name = parentFieldNames[i]; -- fields[name] = parent.fields[name]; -- } -- var names = Object.keys(options); -- for (var i = 0; i < names.length; i++) { -- var name = names[i]; -- fields[name] = options[name]; -- } -- return; -+ } else { -+ this._level = Number.POSITIVE_INFINITY; -+ this.streams = []; -+ this.serializers = null; -+ this.src = false; -+ this.fields = {}; -+ } -+ -+ if (!dtp && dtrace) { -+ dtp = dtrace.createDTraceProvider("bunyan"); -+ -+ for (var level in levelFromName) { -+ var probe; -+ -+ probes[levelFromName[level]] = probe = dtp.addProbe( -+ "log-" + level, -+ "char *" -+ ); -+ -+ // Explicitly add a reference to dtp to prevent it from being GC'd -+ probe.dtp = dtp; - } - -- // Start values. -- var self = this; -- if (parent) { -- this._level = parent._level; -- this.streams = []; -- for (var i = 0; i < parent.streams.length; i++) { -- var s = objCopy(parent.streams[i]); -- s.closeOnExit = false; // Don't own parent stream. -- this.streams.push(s); -- } -- this.serializers = objCopy(parent.serializers); -- this.src = parent.src; -- this.fields = objCopy(parent.fields); -- if (options.level) { -- this.level(options.level); -- } -+ dtp.enable(); -+ } -+ -+ // Handle *config* options (i.e. options that are not just plain data -+ // for log records). -+ if (options.stream) { -+ self.addStream({ -+ type: "stream", -+ stream: options.stream, -+ closeOnExit: false, -+ level: options.level, -+ }); -+ } else if (options.streams) { -+ options.streams.forEach(function (s) { -+ self.addStream(s, options.level); -+ }); -+ } else if (parent && options.level) { -+ this.level(options.level); -+ } else if (!parent) { -+ if (runtimeEnv === "browser") { -+ /* -+ * In the browser we'll be emitting to console.log by default. -+ * Any console.log worth its salt these days can nicely render -+ * and introspect objects (e.g. the Firefox and Chrome console) -+ * so let's emit the raw log record. Are there browsers for which -+ * that breaks things? -+ */ -+ self.addStream({ -+ type: "raw", -+ stream: new ConsoleRawStream(), -+ closeOnExit: false, -+ level: options.level, -+ }); - } else { -- this._level = Number.POSITIVE_INFINITY; -- this.streams = []; -- this.serializers = null; -- this.src = false; -- this.fields = {}; -- } -- -- if (!dtp && dtrace) { -- dtp = dtrace.createDTraceProvider('bunyan'); -- -- for (var level in levelFromName) { -- var probe; -- -- probes[levelFromName[level]] = probe = -- dtp.addProbe('log-' + level, 'char *'); -- -- // Explicitly add a reference to dtp to prevent it from being GC'd -- probe.dtp = dtp; -- } -- -- dtp.enable(); -- } -- -- // Handle *config* options (i.e. options that are not just plain data -- // for log records). -- if (options.stream) { -- self.addStream({ -- type: 'stream', -- stream: options.stream, -- closeOnExit: false, -- level: options.level -- }); -- } else if (options.streams) { -- options.streams.forEach(function (s) { -- self.addStream(s, options.level); -- }); -- } else if (parent && options.level) { -- this.level(options.level); -- } else if (!parent) { -- if (runtimeEnv === 'browser') { -- /* -- * In the browser we'll be emitting to console.log by default. -- * Any console.log worth its salt these days can nicely render -- * and introspect objects (e.g. the Firefox and Chrome console) -- * so let's emit the raw log record. Are there browsers for which -- * that breaks things? -- */ -- self.addStream({ -- type: 'raw', -- stream: new ConsoleRawStream(), -- closeOnExit: false, -- level: options.level -- }); -- } else { -- self.addStream({ -- type: 'stream', -- stream: process.stdout, -- closeOnExit: false, -- level: options.level -- }); -- } -- } -- if (options.serializers) { -- self.addSerializers(options.serializers); -- } -- if (options.src) { -- this.src = true; -- } -- xxx('Logger: ', self) -- -- // Fields. -- // These are the default fields for log records (minus the attributes -- // removed in this constructor). To allow storing raw log records -- // (unrendered), `this.fields` must never be mutated. Create a copy for -- // any changes. -- var fields = objCopy(options); -- delete fields.stream; -- delete fields.level; -- delete fields.streams; -- delete fields.serializers; -- delete fields.src; -- if (this.serializers) { -- this._applySerializers(fields); -- } -- if (!fields.hostname && !self.fields.hostname) { -- fields.hostname = os.hostname(); -- } -- if (!fields.pid) { -- fields.pid = process.pid; -+ self.addStream({ -+ type: "stream", -+ stream: process.stdout, -+ closeOnExit: false, -+ level: options.level, -+ }); - } -- Object.keys(fields).forEach(function (k) { -- self.fields[k] = fields[k]; -- }); -+ } -+ if (options.serializers) { -+ self.addSerializers(options.serializers); -+ } -+ if (options.src) { -+ this.src = true; -+ } -+ xxx("Logger: ", self); -+ -+ // Fields. -+ // These are the default fields for log records (minus the attributes -+ // removed in this constructor). To allow storing raw log records -+ // (unrendered), `this.fields` must never be mutated. Create a copy for -+ // any changes. -+ var fields = objCopy(options); -+ delete fields.stream; -+ delete fields.level; -+ delete fields.streams; -+ delete fields.serializers; -+ delete fields.src; -+ if (this.serializers) { -+ this._applySerializers(fields); -+ } -+ if (!fields.hostname && !self.fields.hostname) { -+ fields.hostname = os.hostname(); -+ } -+ if (!fields.pid) { -+ fields.pid = process.pid; -+ } -+ Object.keys(fields).forEach(function (k) { -+ self.fields[k] = fields[k]; -+ }); - } - - util.inherits(Logger, EventEmitter); - -- - /** - * Add a stream - * -@@ -553,89 +550,93 @@ util.inherits(Logger, EventEmitter); - * `stream.level` is not set. If neither is given, this defaults to INFO. - */ - Logger.prototype.addStream = function addStream(s, defaultLevel) { -- var self = this; -- if (defaultLevel === null || defaultLevel === undefined) { -- defaultLevel = INFO; -- } -- -- s = objCopy(s); -- -- // Implicit 'type' from other args. -- if (!s.type) { -- if (s.stream) { -- s.type = 'stream'; -- } else if (s.path) { -- s.type = 'file' -- } -+ var self = this; -+ if (defaultLevel === null || defaultLevel === undefined) { -+ defaultLevel = INFO; -+ } -+ -+ s = objCopy(s); -+ -+ // Implicit 'type' from other args. -+ if (!s.type) { -+ if (s.stream) { -+ s.type = "stream"; -+ } else if (s.path) { -+ s.type = "file"; - } -- s.raw = (s.type === 'raw'); // PERF: Allow for faster check in `_emit`. -- -- if (s.level !== undefined) { -- s.level = resolveLevel(s.level); -- } else { -- s.level = resolveLevel(defaultLevel); -- } -- if (s.level < self._level) { -- self._level = s.level; -- } -- -- switch (s.type) { -- case 'stream': -- assert.ok(isWritable(s.stream), -- '"stream" stream is not writable: ' + util.inspect(s.stream)); -- -- if (!s.closeOnExit) { -- s.closeOnExit = false; -- } -- break; -- case 'file': -- if (s.reemitErrorEvents === undefined) { -- s.reemitErrorEvents = true; -- } -- if (!s.stream) { -- s.stream = fs.createWriteStream(s.path, -- {flags: 'a', encoding: 'utf8'}); -- if (!s.closeOnExit) { -- s.closeOnExit = true; -- } -- } else { -- if (!s.closeOnExit) { -- s.closeOnExit = false; -- } -- } -- break; -- case 'rotating-file': -- assert.ok(!s.stream, -- '"rotating-file" stream should not give a "stream"'); -- assert.ok(s.path); -- assert.ok(mv, '"rotating-file" stream type is not supported: ' -- + 'missing "mv" module'); -- s.stream = new RotatingFileStream(s); -+ } -+ s.raw = s.type === "raw"; // PERF: Allow for faster check in `_emit`. -+ -+ if (s.level !== undefined) { -+ s.level = resolveLevel(s.level); -+ } else { -+ s.level = resolveLevel(defaultLevel); -+ } -+ if (s.level < self._level) { -+ self._level = s.level; -+ } -+ -+ switch (s.type) { -+ case "stream": -+ assert.ok( -+ isWritable(s.stream), -+ '"stream" stream is not writable: ' + util.inspect(s.stream) -+ ); -+ -+ if (!s.closeOnExit) { -+ s.closeOnExit = false; -+ } -+ break; -+ case "file": -+ if (s.reemitErrorEvents === undefined) { -+ s.reemitErrorEvents = true; -+ } -+ if (!s.stream) { -+ s.stream = fs.createWriteStream(s.path, { -+ flags: "a", -+ encoding: "utf8", -+ }); - if (!s.closeOnExit) { -- s.closeOnExit = true; -+ s.closeOnExit = true; - } -- break; -- case 'raw': -+ } else { - if (!s.closeOnExit) { -- s.closeOnExit = false; -+ s.closeOnExit = false; - } -- break; -+ } -+ break; -+ case "rotating-file": -+ assert.ok(!s.stream, '"rotating-file" stream should not give a "stream"'); -+ assert.ok(s.path); -+ assert.ok( -+ mv, -+ '"rotating-file" stream type is not supported: ' + 'missing "mv" module' -+ ); -+ s.stream = new RotatingFileStream(s); -+ if (!s.closeOnExit) { -+ s.closeOnExit = true; -+ } -+ break; -+ case "raw": -+ if (!s.closeOnExit) { -+ s.closeOnExit = false; -+ } -+ break; - default: -- throw new TypeError('unknown stream type "' + s.type + '"'); -- } -- -- if (s.reemitErrorEvents && typeof (s.stream.on) === 'function') { -- // TODO: When we have `.close()`, it should remove event -- // listeners to not leak Logger instances. -- s.stream.on('error', function onStreamError(err) { -- self.emit('error', err, s); -- }); -- } -- -- self.streams.push(s); -- delete self.haveNonRawStreams; // reset --} -+ throw new TypeError('unknown stream type "' + s.type + '"'); -+ } -+ -+ if (s.reemitErrorEvents && typeof s.stream.on === "function") { -+ // TODO: When we have `.close()`, it should remove event -+ // listeners to not leak Logger instances. -+ s.stream.on("error", function onStreamError(err) { -+ self.emit("error", err, s); -+ }); -+ } - -+ self.streams.push(s); -+ delete self.haveNonRawStreams; // reset -+}; - - /** - * Add serializers -@@ -644,24 +645,22 @@ Logger.prototype.addStream = function addStream(s, defaultLevel) { - * to serializing functions. See README.md for details. - */ - Logger.prototype.addSerializers = function addSerializers(serializers) { -- var self = this; -- -- if (!self.serializers) { -- self.serializers = {}; -+ var self = this; -+ -+ if (!self.serializers) { -+ self.serializers = {}; -+ } -+ Object.keys(serializers).forEach(function (field) { -+ var serializer = serializers[field]; -+ if (typeof serializer !== "function") { -+ throw new TypeError( -+ format('invalid serializer for "%s" field: must be a function', field) -+ ); -+ } else { -+ self.serializers[field] = serializer; - } -- Object.keys(serializers).forEach(function (field) { -- var serializer = serializers[field]; -- if (typeof (serializer) !== 'function') { -- throw new TypeError(format( -- 'invalid serializer for "%s" field: must be a function', -- field)); -- } else { -- self.serializers[field] = serializer; -- } -- }); --} -- -- -+ }); -+}; - - /** - * Create a child logger, typically to add a few log record fields. -@@ -690,9 +689,8 @@ Logger.prototype.addSerializers = function addSerializers(serializers) { - * creation. See 'tools/timechild.js' for numbers. - */ - Logger.prototype.child = function (options, simple) { -- return new (this.constructor)(this, options || {}, simple); --} -- -+ return new this.constructor(this, options || {}, simple); -+}; - - /** - * A convenience method to reopen 'file' streams on a logger. This can be -@@ -712,26 +710,24 @@ Logger.prototype.child = function (options, simple) { - * See . - */ - Logger.prototype.reopenFileStreams = function () { -- var self = this; -- self.streams.forEach(function (s) { -- if (s.type === 'file') { -- if (s.stream) { -- // Not sure if typically would want this, or more immediate -- // `s.stream.destroy()`. -- s.stream.end(); -- s.stream.destroySoon(); -- delete s.stream; -- } -- s.stream = fs.createWriteStream(s.path, -- {flags: 'a', encoding: 'utf8'}); -- s.stream.on('error', function (err) { -- self.emit('error', err, s); -- }); -- } -- }); -+ var self = this; -+ self.streams.forEach(function (s) { -+ if (s.type === "file") { -+ if (s.stream) { -+ // Not sure if typically would want this, or more immediate -+ // `s.stream.destroy()`. -+ s.stream.end(); -+ s.stream.destroySoon(); -+ delete s.stream; -+ } -+ s.stream = fs.createWriteStream(s.path, { flags: "a", encoding: "utf8" }); -+ s.stream.on("error", function (err) { -+ self.emit("error", err, s); -+ }); -+ } -+ }); - }; - -- - /* BEGIN JSSTYLED */ - /** - * Close this logger. -@@ -756,7 +752,6 @@ Logger.prototype.close = function () { - */ - /* END JSSTYLED */ - -- - /** - * Get/set the level of all streams on this logger. - * -@@ -769,17 +764,16 @@ Logger.prototype.close = function () { - * log.level('info') // can use 'info' et al aliases - */ - Logger.prototype.level = function level(value) { -- if (value === undefined) { -- return this._level; -- } -- var newLevel = resolveLevel(value); -- var len = this.streams.length; -- for (var i = 0; i < len; i++) { -- this.streams[i].level = newLevel; -- } -- this._level = newLevel; --} -- -+ if (value === undefined) { -+ return this._level; -+ } -+ var newLevel = resolveLevel(value); -+ var len = this.streams.length; -+ for (var i = 0; i < len; i++) { -+ this.streams[i].level = newLevel; -+ } -+ this._level = newLevel; -+}; - - /** - * Get/set the level of a particular stream on this logger. -@@ -814,41 +808,41 @@ Logger.prototype.level = function level(value) { - * @throws {Error} If there is no stream with the given name. - */ - Logger.prototype.levels = function levels(name, value) { -- if (name === undefined) { -- assert.equal(value, undefined); -- return this.streams.map( -- function (s) { return s.level }); -+ if (name === undefined) { -+ assert.equal(value, undefined); -+ return this.streams.map(function (s) { -+ return s.level; -+ }); -+ } -+ var stream; -+ if (typeof name === "number") { -+ stream = this.streams[name]; -+ if (stream === undefined) { -+ throw new Error("invalid stream index: " + name); - } -- var stream; -- if (typeof (name) === 'number') { -- stream = this.streams[name]; -- if (stream === undefined) { -- throw new Error('invalid stream index: ' + name); -- } -- } else { -- var len = this.streams.length; -- for (var i = 0; i < len; i++) { -- var s = this.streams[i]; -- if (s.name === name) { -- stream = s; -- break; -- } -- } -- if (!stream) { -- throw new Error(format('no stream with name "%s"', name)); -- } -+ } else { -+ var len = this.streams.length; -+ for (var i = 0; i < len; i++) { -+ var s = this.streams[i]; -+ if (s.name === name) { -+ stream = s; -+ break; -+ } - } -- if (value === undefined) { -- return stream.level; -- } else { -- var newLevel = resolveLevel(value); -- stream.level = newLevel; -- if (newLevel < this._level) { -- this._level = newLevel; -- } -+ if (!stream) { -+ throw new Error(format('no stream with name "%s"', name)); - } --} -- -+ } -+ if (value === undefined) { -+ return stream.level; -+ } else { -+ var newLevel = resolveLevel(value); -+ stream.level = newLevel; -+ if (newLevel < this._level) { -+ this._level = newLevel; -+ } -+ } -+}; - - /** - * Apply registered serializers to the appropriate keys in the given fields. -@@ -860,32 +854,37 @@ Logger.prototype.levels = function levels(name, value) { - * keys to NOT apply a serializer. - */ - Logger.prototype._applySerializers = function (fields, excludeFields) { -- var self = this; -+ var self = this; - -- xxx('_applySerializers: excludeFields', excludeFields); -- -- // Check each serializer against these (presuming number of serializers -- // is typically less than number of fields). -- Object.keys(this.serializers).forEach(function (name) { -- if (fields[name] === undefined || -- (excludeFields && excludeFields[name])) -- { -- return; -- } -- xxx('_applySerializers; apply to "%s" key', name) -- try { -- fields[name] = self.serializers[name](fields[name]); -- } catch (err) { -- _warn(format('bunyan: ERROR: Exception thrown from the "%s" ' -- + 'Bunyan serializer. This should never happen. This is a bug' -- + 'in that serializer function.\n%s', -- name, err.stack || err)); -- fields[name] = format('(Error in Bunyan log "%s" serializer ' -- + 'broke field. See stderr for details.)', name); -- } -- }); --} -+ xxx("_applySerializers: excludeFields", excludeFields); - -+ // Check each serializer against these (presuming number of serializers -+ // is typically less than number of fields). -+ Object.keys(this.serializers).forEach(function (name) { -+ if (fields[name] === undefined || (excludeFields && excludeFields[name])) { -+ return; -+ } -+ xxx('_applySerializers; apply to "%s" key', name); -+ try { -+ fields[name] = self.serializers[name](fields[name]); -+ } catch (err) { -+ _warn( -+ format( -+ 'bunyan: ERROR: Exception thrown from the "%s" ' + -+ "Bunyan serializer. This should never happen. This is a bug" + -+ "in that serializer function.\n%s", -+ name, -+ err.stack || err -+ ) -+ ); -+ fields[name] = format( -+ '(Error in Bunyan log "%s" serializer ' + -+ "broke field. See stderr for details.)", -+ name -+ ); -+ } -+ }); -+}; - - /** - * Emit a log record. -@@ -895,166 +894,187 @@ Logger.prototype._applySerializers = function (fields, excludeFields) { - * and just return the JSON string. - */ - Logger.prototype._emit = function (rec, noemit) { -- var i; -- -- // Lazily determine if this Logger has non-'raw' streams. If there are -- // any, then we need to stringify the log record. -- if (this.haveNonRawStreams === undefined) { -- this.haveNonRawStreams = false; -- for (i = 0; i < this.streams.length; i++) { -- if (!this.streams[i].raw) { -- this.haveNonRawStreams = true; -- break; -- } -- } -- } -+ var i; - -- // Stringify the object. Attempt to warn/recover on error. -- var str; -- if (noemit || this.haveNonRawStreams) { -- try { -- str = JSON.stringify(rec, safeCycles()) + '\n'; -- } catch (e) { -- if (safeJsonStringify) { -- str = safeJsonStringify(rec) + '\n'; -- } else { -- var dedupKey = e.stack.split(/\n/g, 2).join('\n'); -- _warn('bunyan: ERROR: Exception in ' -- + '`JSON.stringify(rec)`. You can install the ' -- + '"safe-json-stringify" module to have Bunyan fallback ' -- + 'to safer stringification. Record:\n' -- + _indent(format('%s\n%s', util.inspect(rec), e.stack)), -- dedupKey); -- str = format('(Exception in JSON.stringify(rec): %j. ' -- + 'See stderr for details.)\n', e.message); -- } -- } -- } -- -- if (noemit) -- return str; -- -- var level = rec.level; -+ // Lazily determine if this Logger has non-'raw' streams. If there are -+ // any, then we need to stringify the log record. -+ if (this.haveNonRawStreams === undefined) { -+ this.haveNonRawStreams = false; - for (i = 0; i < this.streams.length; i++) { -- var s = this.streams[i]; -- if (s.level <= level) { -- xxx('writing log rec "%s" to "%s" stream (%d <= %d): %j', -- rec.msg, s.type, s.level, level, rec); -- s.stream.write(s.raw ? rec : str); -- } -- }; -+ if (!this.streams[i].raw) { -+ this.haveNonRawStreams = true; -+ break; -+ } -+ } -+ } - -- return str; --} -+ // Stringify the object. Attempt to warn/recover on error. -+ var str; -+ if (noemit || this.haveNonRawStreams) { -+ try { -+ str = JSON.stringify(rec, safeCycles()) + "\n"; -+ } catch (e) { -+ if (safeJsonStringify) { -+ str = safeJsonStringify(rec) + "\n"; -+ } else { -+ var dedupKey = e.stack.split(/\n/g, 2).join("\n"); -+ _warn( -+ "bunyan: ERROR: Exception in " + -+ "`JSON.stringify(rec)`. You can install the " + -+ '"safe-json-stringify" module to have Bunyan fallback ' + -+ "to safer stringification. Record:\n" + -+ _indent(format("%s\n%s", util.inspect(rec), e.stack)), -+ dedupKey -+ ); -+ str = format( -+ "(Exception in JSON.stringify(rec): %j. " + -+ "See stderr for details.)\n", -+ e.message -+ ); -+ } -+ } -+ } -+ -+ if (noemit) return str; -+ -+ var level = rec.level; -+ for (i = 0; i < this.streams.length; i++) { -+ var s = this.streams[i]; -+ if (s.level <= level) { -+ xxx( -+ 'writing log rec "%s" to "%s" stream (%d <= %d): %j', -+ rec.msg, -+ s.type, -+ s.level, -+ level, -+ rec -+ ); -+ s.stream.write(s.raw ? rec : str); -+ } -+ } - -+ return str; -+}; - - /** - * Build a log emitter function for level minLevel. I.e. this is the - * creator of `log.info`, `log.error`, etc. - */ - function mkLogEmitter(minLevel) { -- return function () { -- var log = this; -- -- function mkRecord(args) { -- var excludeFields; -- if (args[0] instanceof Error) { -- // `log.(err, ...)` -- fields = { -- // Use this Logger's err serializer, if defined. -- err: (log.serializers && log.serializers.err -- ? log.serializers.err(args[0]) -- : Logger.stdSerializers.err(args[0])) -- }; -- excludeFields = {err: true}; -- if (args.length === 1) { -- msgArgs = [fields.err.message]; -- } else { -- msgArgs = Array.prototype.slice.call(args, 1); -- } -- } else if (typeof (args[0]) !== 'object' && args[0] !== null || -- Array.isArray(args[0])) { -- // `log.(msg, ...)` -- fields = null; -- msgArgs = Array.prototype.slice.call(args); -- } else if (Buffer.isBuffer(args[0])) { // `log.(buf, ...)` -- // Almost certainly an error, show `inspect(buf)`. See bunyan -- // issue #35. -- fields = null; -- msgArgs = Array.prototype.slice.call(args); -- msgArgs[0] = util.inspect(msgArgs[0]); -- } else { // `log.(fields, msg, ...)` -- fields = args[0]; -- if (args.length === 1 && fields.err -- && fields.err instanceof Error) -- { -- msgArgs = [fields.err.message]; -- } else { -- msgArgs = Array.prototype.slice.call(args, 1); -- } -- } -- -- // Build up the record object. -- var rec = objCopy(log.fields); -- var level = rec.level = minLevel; -- var recFields = (fields ? objCopy(fields) : null); -- if (recFields) { -- if (log.serializers) { -- log._applySerializers(recFields, excludeFields); -- } -- Object.keys(recFields).forEach(function (k) { -- rec[k] = recFields[k]; -- }); -- } -- rec.msg = format.apply(log, msgArgs); -- if (!rec.time) { -- rec.time = (new Date()); -- } -- // Get call source info -- if (log.src && !rec.src) { -- rec.src = getCaller3Info() -- } -- rec.v = LOG_VERSION; -- -- return rec; -+ return function () { -+ var log = this; -+ -+ function mkRecord(args) { -+ var excludeFields; -+ if (args[0] instanceof Error) { -+ // `log.(err, ...)` -+ fields = { -+ // Use this Logger's err serializer, if defined. -+ err: -+ log.serializers && log.serializers.err -+ ? log.serializers.err(args[0]) -+ : Logger.stdSerializers.err(args[0]), - }; -- -- var fields = null; -- var msgArgs = arguments; -- var str = null; -- var rec = null; -- if (! this._emit) { -- /* -- * Show this invalid Bunyan usage warning *once*. -- * -- * See for -- * an example of how this can happen. -- */ -- var dedupKey = 'unbound'; -- if (!_haveWarned[dedupKey]) { -- var caller = getCaller3Info(); -- _warn(format('bunyan usage error: %s:%s: attempt to log ' -- + 'with an unbound log method: `this` is: %s', -- caller.file, caller.line, util.inspect(this)), -- dedupKey); -- } -- return; -- } else if (arguments.length === 0) { // `log.()` -- return (this._level <= minLevel); -- } else if (this._level > minLevel) { -- /* pass through */ -+ excludeFields = { err: true }; -+ if (args.length === 1) { -+ msgArgs = [fields.err.message]; -+ } else { -+ msgArgs = Array.prototype.slice.call(args, 1); -+ } -+ } else if ( -+ (typeof args[0] !== "object" && args[0] !== null) || -+ Array.isArray(args[0]) -+ ) { -+ // `log.(msg, ...)` -+ fields = null; -+ msgArgs = Array.prototype.slice.call(args); -+ } else if (Buffer.isBuffer(args[0])) { -+ // `log.(buf, ...)` -+ // Almost certainly an error, show `inspect(buf)`. See bunyan -+ // issue #35. -+ fields = null; -+ msgArgs = Array.prototype.slice.call(args); -+ msgArgs[0] = util.inspect(msgArgs[0]); -+ } else { -+ // `log.(fields, msg, ...)` -+ fields = args[0]; -+ if (args.length === 1 && fields.err && fields.err instanceof Error) { -+ msgArgs = [fields.err.message]; - } else { -- rec = mkRecord(msgArgs); -- str = this._emit(rec); -+ msgArgs = Array.prototype.slice.call(args, 1); -+ } -+ } -+ -+ // Build up the record object. -+ var rec = objCopy(log.fields); -+ var level = (rec.level = minLevel); -+ var recFields = fields ? objCopy(fields) : null; -+ if (recFields) { -+ if (log.serializers) { -+ log._applySerializers(recFields, excludeFields); - } -- probes && probes[minLevel].fire(function () { -- return [ str || -- (rec && log._emit(rec, true)) || -- log._emit(mkRecord(msgArgs), true) ]; -+ Object.keys(recFields).forEach(function (k) { -+ rec[k] = recFields[k]; - }); -+ } -+ rec.msg = format.apply(log, msgArgs); -+ if (!rec.time) { -+ rec.time = new Date(); -+ } -+ // Get call source info -+ if (log.src && !rec.src) { -+ rec.src = getCaller3Info(); -+ } -+ rec.v = LOG_VERSION; -+ -+ return rec; - } --} - -+ var fields = null; -+ var msgArgs = arguments; -+ var str = null; -+ var rec = null; -+ if (!this._emit) { -+ /* -+ * Show this invalid Bunyan usage warning *once*. -+ * -+ * See for -+ * an example of how this can happen. -+ */ -+ var dedupKey = "unbound"; -+ if (!_haveWarned[dedupKey]) { -+ var caller = getCaller3Info(); -+ _warn( -+ format( -+ "bunyan usage error: %s:%s: attempt to log " + -+ "with an unbound log method: `this` is: %s", -+ caller.file, -+ caller.line, -+ util.inspect(this) -+ ), -+ dedupKey -+ ); -+ } -+ return; -+ } else if (arguments.length === 0) { -+ // `log.()` -+ return this._level <= minLevel; -+ } else if (this._level > minLevel) { -+ /* pass through */ -+ } else { -+ rec = mkRecord(msgArgs); -+ str = this._emit(rec); -+ } -+ probes && -+ probes[minLevel].fire(function () { -+ return [ -+ str || -+ (rec && log._emit(rec, true)) || -+ log._emit(mkRecord(msgArgs), true), -+ ]; -+ }); -+ }; -+} - - /** - * The functions below log a record at a specific level. -@@ -1081,8 +1101,6 @@ Logger.prototype.warn = mkLogEmitter(WARN); - Logger.prototype.error = mkLogEmitter(ERROR); - Logger.prototype.fatal = mkLogEmitter(FATAL); - -- -- - //---- Standard serializers - // A serializer is a function that serializes a JavaScript object to a - // JSON representation for logging. There is a standard set of presumed -@@ -1092,33 +1110,30 @@ Logger.stdSerializers = {}; - - // Serialize an HTTP request. - Logger.stdSerializers.req = function req(req) { -- if (!req || !req.connection) -- return req; -- return { -- method: req.method, -- url: req.url, -- headers: req.headers, -- remoteAddress: req.connection.remoteAddress, -- remotePort: req.connection.remotePort -- }; -- // Trailers: Skipping for speed. If you need trailers in your app, then -- // make a custom serializer. -- //if (Object.keys(trailers).length > 0) { -- // obj.trailers = req.trailers; -- //} -+ if (!req || !req.connection) return req; -+ return { -+ method: req.method, -+ url: req.url, -+ headers: req.headers, -+ remoteAddress: req.connection.remoteAddress, -+ remotePort: req.connection.remotePort, -+ }; -+ // Trailers: Skipping for speed. If you need trailers in your app, then -+ // make a custom serializer. -+ //if (Object.keys(trailers).length > 0) { -+ // obj.trailers = req.trailers; -+ //} - }; - - // Serialize an HTTP response. - Logger.stdSerializers.res = function res(res) { -- if (!res || !res.statusCode) -- return res; -- return { -- statusCode: res.statusCode, -- header: res._header -- } -+ if (!res || !res.statusCode) return res; -+ return { -+ statusCode: res.statusCode, -+ header: res._header, -+ }; - }; - -- - /* - * This function dumps long stack traces for exceptions having a cause() - * method. The error classes from -@@ -1128,108 +1143,114 @@ Logger.stdSerializers.res = function res(res) { - * Based on `dumpException` in - * https://github.com/davepacheco/node-extsprintf/blob/master/lib/extsprintf.js - */ --function getFullErrorStack(ex) --{ -- var ret = ex.stack || ex.toString(); -- if (ex.cause && typeof (ex.cause) === 'function') { -- var cex = ex.cause(); -- if (cex) { -- ret += '\nCaused by: ' + getFullErrorStack(cex); -- } -+function getFullErrorStack(ex) { -+ var ret = ex.stack || ex.toString(); -+ if (ex.cause && typeof ex.cause === "function") { -+ var cex = ex.cause(); -+ if (cex) { -+ ret += "\nCaused by: " + getFullErrorStack(cex); - } -- return (ret); -+ } -+ return ret; - } - - // Serialize an Error object - // (Core error properties are enumerable in node 0.4, not in 0.6). --var errSerializer = Logger.stdSerializers.err = function err(err) { -- if (!err || !err.stack) -- return err; -- var obj = { -- message: err.message, -- name: err.name, -- stack: getFullErrorStack(err), -- code: err.code, -- signal: err.signal -- } -- return obj; --}; -- -+var errSerializer = (Logger.stdSerializers.err = function err(err) { -+ if (!err || !err.stack) return err; -+ var obj = { -+ message: err.message, -+ name: err.name, -+ stack: getFullErrorStack(err), -+ code: err.code, -+ signal: err.signal, -+ }; -+ return obj; -+}); - - // A JSON stringifier that handles cycles safely. - // Usage: JSON.stringify(obj, safeCycles()) - function safeCycles() { -- var seen = []; -- return function (key, val) { -- if (!val || typeof (val) !== 'object') { -- return val; -- } -- if (seen.indexOf(val) !== -1) { -- return '[Circular]'; -- } -- seen.push(val); -- return val; -- }; -+ var seen = []; -+ return function (key, val) { -+ if (!val || typeof val !== "object") { -+ return val; -+ } -+ if (seen.indexOf(val) !== -1) { -+ return "[Circular]"; -+ } -+ seen.push(val); -+ return val; -+ }; - } - -- -- - var RotatingFileStream = null; - if (mv) { -- --RotatingFileStream = function RotatingFileStream(options) { -+ RotatingFileStream = function RotatingFileStream(options) { - this.path = options.path; - -- this.count = (options.count == null ? 10 : options.count); -- assert.equal(typeof (this.count), 'number', -- format('rotating-file stream "count" is not a number: %j (%s) in %j', -- this.count, typeof (this.count), this)); -- assert.ok(this.count >= 0, -- format('rotating-file stream "count" is not >= 0: %j in %j', -- this.count, this)); -+ this.count = options.count == null ? 10 : options.count; -+ assert.equal( -+ typeof this.count, -+ "number", -+ format( -+ 'rotating-file stream "count" is not a number: %j (%s) in %j', -+ this.count, -+ typeof this.count, -+ this -+ ) -+ ); -+ assert.ok( -+ this.count >= 0, -+ format( -+ 'rotating-file stream "count" is not >= 0: %j in %j', -+ this.count, -+ this -+ ) -+ ); - - // Parse `options.period`. - if (options.period) { -- // where scope is: -- // h hours (at the start of the hour) -- // d days (at the start of the day, i.e. just after midnight) -- // w weeks (at the start of Sunday) -- // m months (on the first of the month) -- // y years (at the start of Jan 1st) -- // with special values 'hourly' (1h), 'daily' (1d), "weekly" (1w), -- // 'monthly' (1m) and 'yearly' (1y) -- var period = { -- 'hourly': '1h', -- 'daily': '1d', -- 'weekly': '1w', -- 'monthly': '1m', -- 'yearly': '1y' -+ // where scope is: -+ // h hours (at the start of the hour) -+ // d days (at the start of the day, i.e. just after midnight) -+ // w weeks (at the start of Sunday) -+ // m months (on the first of the month) -+ // y years (at the start of Jan 1st) -+ // with special values 'hourly' (1h), 'daily' (1d), "weekly" (1w), -+ // 'monthly' (1m) and 'yearly' (1y) -+ var period = -+ { -+ hourly: "1h", -+ daily: "1d", -+ weekly: "1w", -+ monthly: "1m", -+ yearly: "1y", - }[options.period] || options.period; -- var m = /^([1-9][0-9]*)([hdwmy]|ms)$/.exec(period); -- if (!m) { -- throw new Error(format('invalid period: "%s"', options.period)); -- } -- this.periodNum = Number(m[1]); -- this.periodScope = m[2]; -+ var m = /^([1-9][0-9]*)([hdwmy]|ms)$/.exec(period); -+ if (!m) { -+ throw new Error(format('invalid period: "%s"', options.period)); -+ } -+ this.periodNum = Number(m[1]); -+ this.periodScope = m[2]; - } else { -- this.periodNum = 1; -- this.periodScope = 'd'; -+ this.periodNum = 1; -+ this.periodScope = "d"; - } - - var lastModified = null; - try { -- var fileInfo = fs.statSync(this.path); -- lastModified = fileInfo.mtime.getTime(); -- } -- catch (err) { -- // file doesn't exist -+ var fileInfo = fs.statSync(this.path); -+ lastModified = fileInfo.mtime.getTime(); -+ } catch (err) { -+ // file doesn't exist - } - var rotateAfterOpen = false; - if (lastModified) { -- var lastRotTime = this._calcRotTime(0); -- if (lastModified < lastRotTime) { -- rotateAfterOpen = true; -- } -+ var lastRotTime = this._calcRotTime(0); -+ if (lastModified < lastRotTime) { -+ rotateAfterOpen = true; -+ } - } - - // TODO: template support for backup files -@@ -1248,252 +1269,278 @@ RotatingFileStream = function RotatingFileStream(options) { - // prior art? Want to avoid ':' in - // filenames (illegal on Windows for one). - -- this.stream = fs.createWriteStream(this.path, -- {flags: 'a', encoding: 'utf8'}); -+ this.stream = fs.createWriteStream(this.path, { -+ flags: "a", -+ encoding: "utf8", -+ }); - - this.rotQueue = []; - this.rotating = false; - if (rotateAfterOpen) { -- this._debug('rotateAfterOpen -> call rotate()'); -- this.rotate(); -+ this._debug("rotateAfterOpen -> call rotate()"); -+ this.rotate(); - } else { -- this._setupNextRot(); -+ this._setupNextRot(); - } --} -+ }; - --util.inherits(RotatingFileStream, EventEmitter); -+ util.inherits(RotatingFileStream, EventEmitter); - --RotatingFileStream.prototype._debug = function () { -+ RotatingFileStream.prototype._debug = function () { - // Set this to `true` to add debug logging. - if (false) { -- if (arguments.length === 0) { -- return true; -- } -- var args = Array.prototype.slice.call(arguments); -- args[0] = '[' + (new Date().toISOString()) + ', ' -- + this.path + '] ' + args[0]; -- console.log.apply(this, args); -+ if (arguments.length === 0) { -+ return true; -+ } -+ var args = Array.prototype.slice.call(arguments); -+ args[0] = -+ "[" + new Date().toISOString() + ", " + this.path + "] " + args[0]; -+ console.log.apply(this, args); - } else { -- return false; -+ return false; - } --}; -+ }; - --RotatingFileStream.prototype._setupNextRot = function () { -+ RotatingFileStream.prototype._setupNextRot = function () { - this.rotAt = this._calcRotTime(1); - this._setRotationTimer(); --} -+ }; - --RotatingFileStream.prototype._setRotationTimer = function () { -+ RotatingFileStream.prototype._setRotationTimer = function () { - var self = this; - var delay = this.rotAt - Date.now(); - // Cap timeout to Node's max setTimeout, see - // . - var TIMEOUT_MAX = 2147483647; // 2^31-1 - if (delay > TIMEOUT_MAX) { -- delay = TIMEOUT_MAX; -+ delay = TIMEOUT_MAX; - } -- this.timeout = setTimeout( -- function () { -- self._debug('_setRotationTimer timeout -> call rotate()'); -- self.rotate(); -- }, -- delay); -- if (typeof (this.timeout.unref) === 'function') { -- this.timeout.unref(); -+ this.timeout = setTimeout(function () { -+ self._debug("_setRotationTimer timeout -> call rotate()"); -+ self.rotate(); -+ }, delay); -+ if (typeof this.timeout.unref === "function") { -+ this.timeout.unref(); - } --} -+ }; - --RotatingFileStream.prototype._calcRotTime = --function _calcRotTime(periodOffset) { -- this._debug('_calcRotTime: %s%s', this.periodNum, this.periodScope); -+ RotatingFileStream.prototype._calcRotTime = function _calcRotTime( -+ periodOffset -+ ) { -+ this._debug("_calcRotTime: %s%s", this.periodNum, this.periodScope); - var d = new Date(); - -- this._debug(' now local: %s', d); -- this._debug(' now utc: %s', d.toISOString()); -+ this._debug(" now local: %s", d); -+ this._debug(" now utc: %s", d.toISOString()); - var rotAt; - switch (this.periodScope) { -- case 'ms': -+ case "ms": - // Hidden millisecond period for debugging. - if (this.rotAt) { -- rotAt = this.rotAt + this.periodNum * periodOffset; -+ rotAt = this.rotAt + this.periodNum * periodOffset; - } else { -- rotAt = Date.now() + this.periodNum * periodOffset; -+ rotAt = Date.now() + this.periodNum * periodOffset; - } - break; -- case 'h': -+ case "h": - if (this.rotAt) { -- rotAt = this.rotAt + this.periodNum * 60 * 60 * 1000 * periodOffset; -+ rotAt = this.rotAt + this.periodNum * 60 * 60 * 1000 * periodOffset; - } else { -- // First time: top of the next hour. -- rotAt = Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), -- d.getUTCDate(), d.getUTCHours() + periodOffset); -+ // First time: top of the next hour. -+ rotAt = Date.UTC( -+ d.getUTCFullYear(), -+ d.getUTCMonth(), -+ d.getUTCDate(), -+ d.getUTCHours() + periodOffset -+ ); - } - break; -- case 'd': -+ case "d": - if (this.rotAt) { -- rotAt = this.rotAt + this.periodNum * 24 * 60 * 60 * 1000 -- * periodOffset; -+ rotAt = -+ this.rotAt + this.periodNum * 24 * 60 * 60 * 1000 * periodOffset; - } else { -- // First time: start of tomorrow (i.e. at the coming midnight) UTC. -- rotAt = Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), -- d.getUTCDate() + periodOffset); -+ // First time: start of tomorrow (i.e. at the coming midnight) UTC. -+ rotAt = Date.UTC( -+ d.getUTCFullYear(), -+ d.getUTCMonth(), -+ d.getUTCDate() + periodOffset -+ ); - } - break; -- case 'w': -+ case "w": - // Currently, always on Sunday morning at 00:00:00 (UTC). - if (this.rotAt) { -- rotAt = this.rotAt + this.periodNum * 7 * 24 * 60 * 60 * 1000 -- * periodOffset; -+ rotAt = -+ this.rotAt + -+ this.periodNum * 7 * 24 * 60 * 60 * 1000 * periodOffset; - } else { -- // First time: this coming Sunday. -- var dayOffset = (7 - d.getUTCDay()); -- if (periodOffset < 1) { -- dayOffset = -d.getUTCDay(); -- } -- if (periodOffset > 1 || periodOffset < -1) { -- dayOffset += 7 * periodOffset; -- } -- rotAt = Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), -- d.getUTCDate() + dayOffset); -+ // First time: this coming Sunday. -+ var dayOffset = 7 - d.getUTCDay(); -+ if (periodOffset < 1) { -+ dayOffset = -d.getUTCDay(); -+ } -+ if (periodOffset > 1 || periodOffset < -1) { -+ dayOffset += 7 * periodOffset; -+ } -+ rotAt = Date.UTC( -+ d.getUTCFullYear(), -+ d.getUTCMonth(), -+ d.getUTCDate() + dayOffset -+ ); - } - break; -- case 'm': -+ case "m": - if (this.rotAt) { -- rotAt = Date.UTC(d.getUTCFullYear(), -- d.getUTCMonth() + this.periodNum * periodOffset, 1); -+ rotAt = Date.UTC( -+ d.getUTCFullYear(), -+ d.getUTCMonth() + this.periodNum * periodOffset, -+ 1 -+ ); - } else { -- // First time: the start of the next month. -- rotAt = Date.UTC(d.getUTCFullYear(), -- d.getUTCMonth() + periodOffset, 1); -+ // First time: the start of the next month. -+ rotAt = Date.UTC( -+ d.getUTCFullYear(), -+ d.getUTCMonth() + periodOffset, -+ 1 -+ ); - } - break; -- case 'y': -+ case "y": - if (this.rotAt) { -- rotAt = Date.UTC(d.getUTCFullYear() + this.periodNum * periodOffset, -- 0, 1); -+ rotAt = Date.UTC( -+ d.getUTCFullYear() + this.periodNum * periodOffset, -+ 0, -+ 1 -+ ); - } else { -- // First time: the start of the next year. -- rotAt = Date.UTC(d.getUTCFullYear() + periodOffset, 0, 1); -+ // First time: the start of the next year. -+ rotAt = Date.UTC(d.getUTCFullYear() + periodOffset, 0, 1); - } - break; -- default: -+ default: - assert.fail(format('invalid period scope: "%s"', this.periodScope)); - } - - if (this._debug()) { -- this._debug(' **rotAt**: %s (utc: %s)', rotAt, -- new Date(rotAt).toUTCString()); -- var now = Date.now(); -- this._debug(' now: %s (%sms == %smin == %sh to go)', -- now, -- rotAt - now, -- (rotAt-now)/1000/60, -- (rotAt-now)/1000/60/60); -+ this._debug( -+ " **rotAt**: %s (utc: %s)", -+ rotAt, -+ new Date(rotAt).toUTCString() -+ ); -+ var now = Date.now(); -+ this._debug( -+ " now: %s (%sms == %smin == %sh to go)", -+ now, -+ rotAt - now, -+ (rotAt - now) / 1000 / 60, -+ (rotAt - now) / 1000 / 60 / 60 -+ ); - } - return rotAt; --}; -+ }; - --RotatingFileStream.prototype.rotate = function rotate() { -+ RotatingFileStream.prototype.rotate = function rotate() { - // XXX What about shutdown? - var self = this; - - // If rotation period is > ~25 days, we have to break into multiple - // setTimeout's. See . - if (self.rotAt && self.rotAt > Date.now()) { -- return self._setRotationTimer(); -+ return self._setRotationTimer(); - } - -- this._debug('rotate'); -+ this._debug("rotate"); - if (self.rotating) { -- throw new TypeError('cannot start a rotation when already rotating'); -+ throw new TypeError("cannot start a rotation when already rotating"); - } - self.rotating = true; - -- self.stream.end(); // XXX can do moves sync after this? test at high rate -+ self.stream.end(); // XXX can do moves sync after this? test at high rate - - function del() { -- var toDel = self.path + '.' + String(n - 1); -- if (n === 0) { -- toDel = self.path; -- } -- n -= 1; -- self._debug(' rm %s', toDel); -- fs.unlink(toDel, function (delErr) { -- //XXX handle err other than not exists -- moves(); -- }); -+ var toDel = self.path + "." + String(n - 1); -+ if (n === 0) { -+ toDel = self.path; -+ } -+ n -= 1; -+ self._debug(" rm %s", toDel); -+ fs.unlink(toDel, function (delErr) { -+ //XXX handle err other than not exists -+ moves(); -+ }); - } - - function moves() { -- if (self.count === 0 || n < 0) { -- return finish(); -- } -- var before = self.path; -- var after = self.path + '.' + String(n); -- if (n > 0) { -- before += '.' + String(n - 1); -- } -- n -= 1; -- fs.exists(before, function (exists) { -- if (!exists) { -- moves(); -+ if (self.count === 0 || n < 0) { -+ return finish(); -+ } -+ var before = self.path; -+ var after = self.path + "." + String(n); -+ if (n > 0) { -+ before += "." + String(n - 1); -+ } -+ n -= 1; -+ fs.exists(before, function (exists) { -+ if (!exists) { -+ moves(); -+ } else { -+ self._debug(" mv %s %s", before, after); -+ mv(before, after, function (mvErr) { -+ if (mvErr) { -+ self.emit("error", mvErr); -+ finish(); // XXX finish here? - } else { -- self._debug(' mv %s %s', before, after); -- mv(before, after, function (mvErr) { -- if (mvErr) { -- self.emit('error', mvErr); -- finish(); // XXX finish here? -- } else { -- moves(); -- } -- }); -+ moves(); - } -- }) -+ }); -+ } -+ }); - } - - function finish() { -- self._debug(' open %s', self.path); -- self.stream = fs.createWriteStream(self.path, -- {flags: 'a', encoding: 'utf8'}); -- var q = self.rotQueue, len = q.length; -- for (var i = 0; i < len; i++) { -- self.stream.write(q[i]); -- } -- self.rotQueue = []; -- self.rotating = false; -- self.emit('drain'); -- self._setupNextRot(); -+ self._debug(" open %s", self.path); -+ self.stream = fs.createWriteStream(self.path, { -+ flags: "a", -+ encoding: "utf8", -+ }); -+ var q = self.rotQueue, -+ len = q.length; -+ for (var i = 0; i < len; i++) { -+ self.stream.write(q[i]); -+ } -+ self.rotQueue = []; -+ self.rotating = false; -+ self.emit("drain"); -+ self._setupNextRot(); - } - - var n = this.count; - del(); --}; -+ }; - --RotatingFileStream.prototype.write = function write(s) { -+ RotatingFileStream.prototype.write = function write(s) { - if (this.rotating) { -- this.rotQueue.push(s); -- return false; -+ this.rotQueue.push(s); -+ return false; - } else { -- return this.stream.write(s); -+ return this.stream.write(s); - } --}; -+ }; - --RotatingFileStream.prototype.end = function end(s) { -+ RotatingFileStream.prototype.end = function end(s) { - this.stream.end(); --}; -+ }; - --RotatingFileStream.prototype.destroy = function destroy(s) { -+ RotatingFileStream.prototype.destroy = function destroy(s) { - this.stream.destroy(); --}; -+ }; - --RotatingFileStream.prototype.destroySoon = function destroySoon(s) { -+ RotatingFileStream.prototype.destroySoon = function destroySoon(s) { - this.stream.destroySoon(); --}; -- -+ }; - } /* if (mv) */ - -- -- - /** - * RingBuffer is a Writable Stream that just stores the last N records in - * memory. -@@ -1503,42 +1550,39 @@ RotatingFileStream.prototype.destroySoon = function destroySoon(s) { - * - limit: number of records to keep in memory - */ - function RingBuffer(options) { -- this.limit = options && options.limit ? options.limit : 100; -- this.writable = true; -- this.records = []; -- EventEmitter.call(this); -+ this.limit = options && options.limit ? options.limit : 100; -+ this.writable = true; -+ this.records = []; -+ EventEmitter.call(this); - } - - util.inherits(RingBuffer, EventEmitter); - - RingBuffer.prototype.write = function (record) { -- if (!this.writable) -- throw (new Error('RingBuffer has been ended already')); -+ if (!this.writable) throw new Error("RingBuffer has been ended already"); - -- this.records.push(record); -+ this.records.push(record); - -- if (this.records.length > this.limit) -- this.records.shift(); -+ if (this.records.length > this.limit) this.records.shift(); - -- return (true); -+ return true; - }; - - RingBuffer.prototype.end = function () { -- if (arguments.length > 0) -- this.write.apply(this, Array.prototype.slice.call(arguments)); -- this.writable = false; -+ if (arguments.length > 0) -+ this.write.apply(this, Array.prototype.slice.call(arguments)); -+ this.writable = false; - }; - - RingBuffer.prototype.destroy = function () { -- this.writable = false; -- this.emit('close'); -+ this.writable = false; -+ this.emit("close"); - }; - - RingBuffer.prototype.destroySoon = function () { -- this.destroy(); -+ this.destroy(); - }; - -- - //---- Exports - - module.exports = Logger; -@@ -1557,7 +1601,7 @@ module.exports.VERSION = VERSION; - module.exports.LOG_VERSION = LOG_VERSION; - - module.exports.createLogger = function createLogger(options) { -- return new Logger(options); -+ return new Logger(options); - }; - - module.exports.RingBuffer = RingBuffer; \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 349faf02..676b4661 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,17 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - '@salesforce/core>jsforce': ^2.0.0-beta.27 - '@salesforce/apex-node>@salesforce/core': ^4.3.11 - '@apexdevtools/sfdx-auth-helper>jsforce': ^2.0.0-beta.27 - '@apexdevtools/sfdx-auth-helper>@salesforce/core': ^4.3.11 - -patchedDependencies: - '@salesforce/bunyan@2.0.0': - hash: 87fc9fb354d512b35022ce352e5932d281653338f098cf6916f71ee5e80dbcb5 - path: patches/@salesforce__bunyan@2.0.0.patch - importers: .: @@ -121,12 +110,12 @@ importers: '@apexdevtools/apex-parser': specifier: ^4.4.0 version: 4.4.1 - '@apexdevtools/sfdx-auth-helper': - specifier: ^2.1.0 - version: 2.1.0 '@salesforce/apex-node': - specifier: ^1.6.2 - version: 1.6.2 + specifier: ^8.4.6 + version: 8.4.6(tslib@2.8.1) + '@salesforce/core': + specifier: ^8.25.1 + version: 8.25.1(tslib@2.8.1) devDependencies: '@types/node': specifier: ~22.16.3 @@ -315,9 +304,6 @@ packages: resolution: {integrity: sha512-tLHQ8DkI7/aoL9nOax+Xb3OEXk8IK1mTIpcCBaBJ3kk0Mhy4ik9jfQVAoSxjbWo8aLrjz2E4jnjmSU1iZlEt+Q==} engines: {node: '>=8.0.0'} - '@apexdevtools/sfdx-auth-helper@2.1.0': - resolution: {integrity: sha512-D/oNZwxP4erngD007XgunMaVJdmUfptGhB02lboUvA8yIn2g1+CUPAeSaYhuZqD8reb3ezRdaSYuZo7AIOraGQ==} - '@apexdevtools/vf-parser@1.1.0': resolution: {integrity: sha512-dP45Y3b4F0b8HosvGEMo6ugRx8yKhaz7h6eJh1cD/YvFxajk6x9Hfrtw63U2EKAstug6waBsT6QC7h+4USjBnA==} engines: {node: '>=8.0.0'} @@ -952,10 +938,6 @@ packages: resolution: {integrity: sha512-FVFaVs2/dZgD3Y9ZD+AKNKjyGKzwu0C54laAXWUXgLcVXcCX6YZ6GhK2cp7FogSN2OA0Fu+QT8dP3FUdo9ShSQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.2': - resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.3': resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==} engines: {node: '>=6.9.0'} @@ -1667,6 +1649,130 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jsforce/jsforce-node@3.10.13': + resolution: {integrity: sha512-Ft42/lp3WaVxijcX88Rb3yIxujk/u3LwL3913OTcB4WCpwjB9xTqP6jkVTKt2riXg+ZlNiS62SMpQeC3U1Efkw==} + engines: {node: '>=18'} + + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@17.67.0': + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@1.0.0': + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@17.67.0': + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-core@4.56.10': + resolution: {integrity: sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.56.10': + resolution: {integrity: sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.56.10': + resolution: {integrity: sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.56.10': + resolution: {integrity: sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.56.10': + resolution: {integrity: sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.56.10': + resolution: {integrity: sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.56.10': + resolution: {integrity: sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.56.10': + resolution: {integrity: sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@17.67.0': + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@17.67.0': + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.9.0': + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@17.67.0': + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -1829,6 +1935,9 @@ packages: '@oxc-project/types@0.82.3': resolution: {integrity: sha512-6nCUxBnGX0c6qfZW5MaF6/fmu5dHJDMiMPaioKHKs5mi5+8/FHQ7WGjgQIz1zxpmceMYfdIXkOaLYE+ejbuOtA==} + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} + '@pixi/colord@2.9.6': resolution: {integrity: sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==} @@ -2168,24 +2277,16 @@ packages: resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} engines: {node: '>=16.0.0'} - '@salesforce/apex-node@1.6.2': - resolution: {integrity: sha512-EeBdfkVd6nA6MK8gdkNgk+aVuoxc8KzQvMIBzP1hBYNP0SDGOmq3bSINV3cyiAGCuBgt4VbYTznb/+iPdWRr/w==} - engines: {node: '>=16.13.0'} - - '@salesforce/bunyan@2.0.0': - resolution: {integrity: sha512-5hq+HWQSeymuygl3i9ehlQo3XWrlBE+A+QzmpDaoK37op4u9M+SBUbXfOW0IABOQCg+JmfQPocSMV74hRoqU9w==} - engines: {node: '>=10.5.0'} - hasBin: true - - '@salesforce/core@4.3.11': - resolution: {integrity: sha512-rjrS0VoDlNaB4RYKLNZQ8+7QayWh5yTV79apCU9fYe0fR1D1p5tb+GAXe4B7AaOReQ8JOQhPBRMx1uzF3Lqn4A==} - engines: {node: '>=16.0.0'} + '@salesforce/apex-node@8.4.6': + resolution: {integrity: sha512-bEQbNiFxim74n5HTtTc/5UDsE3THcigXLFBsvaeCp/gUrkZPzArpcmdLLbyTpZ9ca2iIkF2bVmZRTfV9F3ORvg==} + engines: {node: '>=18.18.2'} - '@salesforce/kit@3.2.3': - resolution: {integrity: sha512-X8rZouLt06dxRkn+uYTwywWDS/NqZ783AyomGqgtWdUxF61EOJvu0ehtcYeutx9Ng08uuZ+s6wNvWiDsdhUcPg==} + '@salesforce/core@8.25.1': + resolution: {integrity: sha512-Jon0a9uZpp+mNa5PiY+y8dTjaPcsMaxXEkswdzWotrdrZ4g84MmPKSEv+Q/LtXw3uc9i4RmqBJBUXSIvZhgrjg==} + engines: {node: '>=18.0.0'} - '@salesforce/schemas@1.9.1': - resolution: {integrity: sha512-9I8kZBYT7HFXsbz2ukkSyZDRPjSsfRyx3pKGCsjWe2av8wuNm6tYUnmuXzMH5JoVSu3MvtOeIlwp5fFURdsNjg==} + '@salesforce/kit@3.2.4': + resolution: {integrity: sha512-9buqZ2puIGWqjUFWYNroSeNih4d1s9kdQAzZfutr/Re/JMl6xBct0ATO5LVb1ty5UhdBruJrVaiTg03PqVKU+Q==} '@salesforce/ts-types@2.0.12': resolution: {integrity: sha512-BIJyduJC18Kc8z+arUm5AZ9VkPRyw1KKAm+Tk+9LT99eOzhNilyfKzhZ4t+tG2lIGgnJpmytZfVDZ0e2kFul8g==} @@ -2583,9 +2684,6 @@ packages: '@types/node-forge@1.3.13': resolution: {integrity: sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==} - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -2622,9 +2720,6 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} - '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -3046,6 +3141,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -3109,6 +3208,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64url@3.0.1: resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} engines: {node: '>=6.0.0'} @@ -3165,6 +3267,9 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -3251,9 +3356,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -3296,10 +3398,6 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -3312,10 +3410,6 @@ packages: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -3379,10 +3473,6 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -3657,21 +3747,18 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + csv-parse@5.6.0: + resolution: {integrity: sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==} - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + csv-stringify@6.6.0: + resolution: {integrity: sha512-YW32lKOmIBgbxtu3g5SaiqWNwa/9ISQt2EcgOq0+RAIFufFp9is6tqNnKahqE5kuKvrnYAzs28r+s6pXJR8Vcw==} data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} - dayjs-plugin-utc@0.1.2: - resolution: {integrity: sha512-ExERH5o3oo6jFOdkvMP3gytTCQ9Ksi5PtylclJWghr7k7m3o2U5QrwtdiJkOxLOH4ghr0EKhpqGefzGz1VvVJg==} - - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -3684,14 +3771,6 @@ packages: supports-color: optional: true - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -3830,10 +3909,6 @@ packages: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} - dtrace-provider@0.6.0: - resolution: {integrity: sha512-yqNrDWYWOR3wumcWPhlIGIKRSFMbDEwilGi+xYeaY4wW82cZrWsqGE+jsVnouxMqt/kCVsNmy/XDXLrm/J6SJg==} - engines: {node: '>=0.10'} - dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -3890,6 +3965,9 @@ packages: encoding-sniffer@0.2.1: resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + enhanced-resolve@5.18.3: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} @@ -4107,9 +4185,8 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4124,9 +4201,19 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-levenshtein@3.0.0: + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -4137,10 +4224,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - faye@1.4.0: - resolution: {integrity: sha512-kRrIg4be8VNYhycS2PY//hpBJSzZPr/DBbcy9VWelhZMW3KhyLkQR0HL0k0MNpmVoNFF4EdfMFkNAWjTP65g6w==} - engines: {node: '>=0.8.0'} - faye@1.4.1: resolution: {integrity: sha512-Cg/khikhqlvumHO3efwx2tps2ZgQRjUMrO24G0quz7MMzRYYaEjU224YFXOeuPIvanRegIchVxj6pmHK1W0ikA==} engines: {node: '>=0.8.0'} @@ -4322,6 +4405,12 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -4329,19 +4418,10 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@6.0.4: - resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} - deprecated: Glob versions prior to v9 are no longer supported - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} @@ -4444,6 +4524,9 @@ packages: header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -4556,6 +4639,10 @@ packages: engines: {node: '>=18'} hasBin: true + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -4573,6 +4660,9 @@ packages: peerDependencies: postcss: ^8.1.0 + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -4648,10 +4738,6 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -4823,8 +4909,8 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} jackspeak@3.4.3: @@ -4986,6 +5072,10 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-binary-schema-parser@2.0.3: resolution: {integrity: sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==} @@ -5022,11 +5112,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsforce@2.0.0-beta.29: - resolution: {integrity: sha512-Fq7xjOYOikyozZZDQNTfzsAdhcO0rUXwtavsjM+cCYUFiCMVOJJavgco303zOsJk3v8sdAYnGgHyKckLIhnyAg==} - engines: {node: '>=8.0'} - hasBin: true - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -5042,6 +5127,10 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stream-stringify@3.1.6: + resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} + engines: {node: '>=7.10.1'} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -5056,18 +5145,18 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsonwebtoken@9.0.1: - resolution: {integrity: sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==} + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - jwa@1.4.2: - resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -5224,12 +5313,33 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -5364,6 +5474,11 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} + memfs@4.56.10: + resolution: {integrity: sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==} + peerDependencies: + tslib: '2' + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -5558,10 +5673,6 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -5573,10 +5684,6 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -5594,16 +5701,6 @@ packages: multistream@3.1.0: resolution: {integrity: sha512-zBgD3kn8izQAN/TaL1PCMv15vYpf+Vcrsfub06njuYVYlzUldzpopTlrEZ53pZVEbfn3Shtv7vRFoOv6LOV87Q==} - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mv@2.1.1: - resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} - engines: {node: '>=0.8.0'} - - nan@2.23.0: - resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==} - nano-spawn@1.0.2: resolution: {integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==} engines: {node: '>=20.17'} @@ -5621,10 +5718,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - ncp@2.0.0: - resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} - hasBin: true - negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -5720,6 +5813,10 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -5739,10 +5836,6 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -5755,10 +5848,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -5919,6 +6008,23 @@ packages: resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} engines: {node: '>=10'} + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-pretty@11.3.0: + resolution: {integrity: sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA==} + hasBin: true + + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} + + pino@9.14.0: + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} + hasBin: true + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -6545,6 +6651,13 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + promise.series@0.2.0: resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} engines: {node: '>=0.12'} @@ -6572,6 +6685,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -6590,6 +6706,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -6667,10 +6786,18 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -6692,9 +6819,6 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regexpu-core@6.2.0: resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} engines: {node: '>=4'} @@ -6800,10 +6924,6 @@ packages: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -6823,11 +6943,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@2.4.5: - resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -6880,17 +6995,9 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -6903,8 +7010,9 @@ packages: safe-identifier@0.4.2: resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - safe-json-stringify@1.2.0: - resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -6942,6 +7050,9 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} @@ -6962,6 +7073,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -7083,6 +7199,9 @@ packages: sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + sort-css-media-queries@2.2.0: resolution: {integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==} engines: {node: '>= 6.3.0'} @@ -7115,6 +7234,10 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -7299,8 +7422,14 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -7326,10 +7455,6 @@ packages: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -7356,6 +7481,12 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -7372,8 +7503,8 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-retry-promise@0.7.1: - resolution: {integrity: sha512-NhHOCZ2AQORvH42hOPO5UZxShlcuiRtm7P2jIq2L2RY3PBxw2mLnUsEdHrIslVBFya1v5aZmrR55lWkzo13LrQ==} + ts-retry-promise@0.8.1: + resolution: {integrity: sha512-+AHPUmAhr5bSRRK5CurE9kNH8gZlEHnCgusZ0zy2bjfatUBDX0h6vGQjiT0YrGwSDwRZmU+bapeX6mj55FOPvg==} engines: {node: '>=6'} tslib@1.14.1: @@ -7731,8 +7862,8 @@ packages: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} - xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} engines: {node: '>=4.0.0'} xmlbuilder@11.0.1: @@ -7777,6 +7908,9 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -7918,14 +8052,6 @@ snapshots: antlr4ts: 0.5.0-alpha.4 node-dir: 0.1.17 - '@apexdevtools/sfdx-auth-helper@2.1.0': - dependencies: - '@salesforce/core': 4.3.11 - jsforce: 2.0.0-beta.29 - transitivePeerDependencies: - - encoding - - supports-color - '@apexdevtools/vf-parser@1.1.0': dependencies: antlr4ts: 0.5.0-alpha.4 @@ -8737,8 +8863,6 @@ snapshots: dependencies: core-js-pure: 3.45.0 - '@babel/runtime@7.28.2': {} - '@babel/runtime@7.28.3': {} '@babel/template@7.27.2': @@ -10111,7 +10235,7 @@ snapshots: istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 jest-message-util: 30.0.5 jest-util: 30.0.5 jest-worker: 30.0.5 @@ -10228,6 +10352,149 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@jsforce/jsforce-node@3.10.13': + dependencies: + '@sindresorhus/is': 4.6.0 + base64url: 3.0.1 + csv-parse: 5.6.0 + csv-stringify: 6.6.0 + faye: 1.4.1 + form-data: 4.0.4 + https-proxy-agent: 5.0.1 + multistream: 3.1.0 + node-fetch: 2.7.0 + xml2js: 0.6.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.56.10(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + '@leichtgewicht/ip-codec@2.0.5': {} '@lit-labs/ssr-dom-shim@1.3.0': {} @@ -10407,6 +10674,8 @@ snapshots: '@oxc-project/types@0.82.3': {} + '@pinojs/redact@0.4.0': {} + '@pixi/colord@2.9.6': {} '@pkgjs/parseargs@0.11.0': @@ -10655,56 +10924,52 @@ snapshots: '@rspack/lite-tapable@1.0.1': {} - '@salesforce/apex-node@1.6.2': + '@salesforce/apex-node@8.4.6(tslib@2.8.1)': dependencies: - '@salesforce/core': 4.3.11 + '@salesforce/core': 8.25.1(tslib@2.8.1) + '@salesforce/kit': 3.2.4 '@types/istanbul-reports': 3.0.4 - faye: 1.4.0 - glob: 8.1.0 + fast-glob: 3.3.3 + faye: 1.4.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 + json-stream-stringify: 3.1.6 transitivePeerDependencies: - encoding - supports-color + - tslib - '@salesforce/bunyan@2.0.0(patch_hash=87fc9fb354d512b35022ce352e5932d281653338f098cf6916f71ee5e80dbcb5)': - dependencies: - dayjs: 1.11.13 - dayjs-plugin-utc: 0.1.2 - optionalDependencies: - dtrace-provider: 0.6.0 - mv: 2.1.1 - safe-json-stringify: 1.2.0 - - '@salesforce/core@4.3.11': + '@salesforce/core@8.25.1(tslib@2.8.1)': dependencies: - '@salesforce/bunyan': 2.0.0(patch_hash=87fc9fb354d512b35022ce352e5932d281653338f098cf6916f71ee5e80dbcb5) - '@salesforce/kit': 3.2.3 - '@salesforce/schemas': 1.9.1 + '@jsforce/jsforce-node': 3.10.13 + '@salesforce/kit': 3.2.4 '@salesforce/ts-types': 2.0.12 - '@types/semver': 7.7.0 ajv: 8.17.1 change-case: 4.1.2 - debug: 3.2.7 + fast-levenshtein: 3.0.0 faye: 1.4.1 form-data: 4.0.4 js2xmlparser: 4.0.2 - jsforce: 2.0.0-beta.29 - jsonwebtoken: 9.0.1 + jsonwebtoken: 9.0.3 jszip: 3.10.1 + memfs: 4.56.10(tslib@2.8.1) + pino: 9.14.0 + pino-abstract-transport: 1.2.0 + pino-pretty: 11.3.0 proper-lockfile: 4.1.2 - ts-retry-promise: 0.7.1 + semver: 7.7.4 + ts-retry-promise: 0.8.1 + zod: 4.3.6 transitivePeerDependencies: - encoding - supports-color + - tslib - '@salesforce/kit@3.2.3': + '@salesforce/kit@3.2.4': dependencies: '@salesforce/ts-types': 2.0.12 - '@salesforce/schemas@1.9.1': {} - '@salesforce/ts-types@2.0.12': {} '@sideway/address@4.1.5': @@ -11110,8 +11375,6 @@ snapshots: dependencies: '@types/node': 22.16.3 - '@types/node@12.20.55': {} - '@types/node@17.0.45': {} '@types/node@22.16.3': @@ -11153,8 +11416,6 @@ snapshots: dependencies: '@types/node': 22.16.3 - '@types/semver@7.7.0': {} - '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 @@ -11588,6 +11849,8 @@ snapshots: asynckit@0.4.0: {} + atomic-sleep@1.0.0: {} + autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.25.1 @@ -11691,6 +11954,8 @@ snapshots: balanced-match@1.0.2: {} + base64-js@1.5.1: {} + base64url@3.0.1: {} batch@0.6.1: {} @@ -11773,6 +12038,11 @@ snapshots: buffer-from@1.1.2: {} + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + bytes@3.0.0: {} bytes@3.1.2: {} @@ -11868,8 +12138,6 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} - cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -11931,10 +12199,6 @@ snapshots: cli-boxes@3.0.0: {} - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -11950,8 +12214,6 @@ snapshots: slice-ansi: 5.0.0 string-width: 7.2.0 - cli-width@3.0.0: {} - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -12000,8 +12262,6 @@ snapshots: commander@2.20.3: {} - commander@4.1.1: {} - commander@5.1.0: {} commander@7.2.0: {} @@ -12155,7 +12415,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.4 optionalDependencies: '@rspack/core': 1.4.11(@swc/helpers@0.5.17) webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) @@ -12327,18 +12587,16 @@ snapshots: csstype@3.1.3: {} - csv-parse@4.16.3: {} + csv-parse@5.6.0: {} - csv-stringify@5.6.5: {} + csv-stringify@6.6.0: {} data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - dayjs-plugin-utc@0.1.2: {} - - dayjs@1.11.13: {} + dateformat@4.6.3: {} debounce@1.2.1: {} @@ -12346,10 +12604,6 @@ snapshots: dependencies: ms: 2.0.0 - debug@3.2.7: - dependencies: - ms: 2.1.3 - debug@4.4.1: dependencies: ms: 2.1.3 @@ -12474,11 +12728,6 @@ snapshots: dependencies: is-obj: 2.0.0 - dtrace-provider@0.6.0: - dependencies: - nan: 2.23.0 - optional: true - dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -12522,6 +12771,10 @@ snapshots: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 @@ -12791,11 +13044,7 @@ snapshots: extend@3.0.2: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 + fast-copy@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -12811,8 +13060,16 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-levenshtein@3.0.0: + dependencies: + fastest-levenshtein: 1.0.16 + + fast-safe-stringify@2.1.1: {} + fast-uri@3.0.6: {} + fastest-levenshtein@1.0.16: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -12825,15 +13082,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - faye@1.4.0: - dependencies: - asap: 2.0.6 - csprng: 0.1.2 - faye-websocket: 0.11.4 - safe-buffer: 5.2.1 - tough-cookie: 5.1.2 - tunnel-agent: 0.6.0 - faye@1.4.1: dependencies: asap: 2.0.6 @@ -13020,6 +13268,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regex.js@1.2.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + glob-to-regexp@0.4.1: {} glob@10.4.5: @@ -13031,15 +13283,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@6.0.4: - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - optional: true - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -13049,14 +13292,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - global-dirs@3.0.1: dependencies: ini: 2.0.0 @@ -13245,6 +13480,8 @@ snapshots: capital-case: 1.0.4 tslib: 2.8.1 + help-me@5.0.0: {} + history@4.10.1: dependencies: '@babel/runtime': 7.28.3 @@ -13400,6 +13637,8 @@ snapshots: husky@9.1.7: {} + hyperdyperid@1.2.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -13414,6 +13653,8 @@ snapshots: dependencies: postcss: 8.5.6 + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} @@ -13467,22 +13708,6 @@ snapshots: inline-style-parser@0.2.4: {} - inquirer@7.3.3: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -13599,7 +13824,7 @@ snapshots: '@babel/parser': 7.28.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 + semver: 7.7.4 transitivePeerDependencies: - supports-color @@ -13617,7 +13842,7 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -13983,6 +14208,8 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + joycon@3.1.1: {} + js-binary-schema-parser@2.0.3: {} js-tokens@4.0.0: {} @@ -14031,32 +14258,6 @@ snapshots: jsesc@3.1.0: {} - jsforce@2.0.0-beta.29: - dependencies: - '@babel/runtime': 7.28.2 - '@babel/runtime-corejs3': 7.28.2 - '@types/node': 12.20.55 - abort-controller: 3.0.0 - base64url: 3.0.1 - commander: 4.1.1 - core-js: 3.45.0 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - faye: 1.4.1 - form-data: 4.0.4 - fs-extra: 8.1.0 - https-proxy-agent: 5.0.1 - inquirer: 7.3.3 - multistream: 3.1.0 - node-fetch: 2.7.0 - open: 7.4.2 - regenerator-runtime: 0.13.11 - strip-ansi: 6.0.1 - xml2js: 0.5.0 - transitivePeerDependencies: - - encoding - - supports-color - json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -14067,6 +14268,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stream-stringify@3.1.6: {} + json5@2.2.3: {} jsonc-parser@3.3.1: {} @@ -14081,12 +14284,18 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonwebtoken@9.0.1: + jsonwebtoken@9.0.3: dependencies: - jws: 3.2.2 - lodash: 4.17.21 + jws: 4.0.1 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.2 + semver: 7.7.4 jszip@3.10.1: dependencies: @@ -14095,15 +14304,15 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 - jwa@1.4.2: + jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - jws@3.2.2: + jws@4.0.1: dependencies: - jwa: 1.4.2 + jwa: 2.0.1 safe-buffer: 5.2.1 keyv@4.5.4: @@ -14255,10 +14464,24 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} + lodash.once@4.1.1: {} + lodash.uniq@4.5.0: {} lodash@4.17.21: {} @@ -14299,7 +14522,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.4 makeerror@1.0.12: dependencies: @@ -14517,6 +14740,23 @@ snapshots: dependencies: fs-monkey: 1.1.0 + memfs@4.56.10(tslib@2.8.1): + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -14861,10 +15101,6 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.2 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -14873,11 +15109,6 @@ snapshots: minipass@7.1.2: {} - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - optional: true - mrmime@2.0.1: {} ms@2.0.0: {} @@ -14894,18 +15125,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - mute-stream@0.0.8: {} - - mv@2.1.1: - dependencies: - mkdirp: 0.5.6 - ncp: 2.0.0 - rimraf: 2.4.5 - optional: true - - nan@2.23.0: - optional: true - nano-spawn@1.0.2: {} nanoid@3.3.11: {} @@ -14914,9 +15133,6 @@ snapshots: natural-compare@1.4.0: {} - ncp@2.0.0: - optional: true - negotiator@0.6.3: {} negotiator@0.6.4: {} @@ -14992,6 +15208,8 @@ snapshots: obuf@1.1.2: {} + on-exit-leak-free@2.1.2: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -15010,11 +15228,6 @@ snapshots: dependencies: mimic-function: 5.0.1 - open@7.4.2: - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -15032,8 +15245,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - os-tmpdir@1.0.2: {} - p-cancelable@3.0.0: {} p-finally@1.0.0: {} @@ -15089,7 +15300,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.1.0 registry-url: 6.0.1 - semver: 7.7.2 + semver: 7.7.4 pako@1.0.11: {} @@ -15185,6 +15396,48 @@ snapshots: pify@5.0.0: {} + pino-abstract-transport@1.2.0: + dependencies: + readable-stream: 4.7.0 + split2: 4.2.0 + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-pretty@11.3.0: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pump: 3.0.3 + readable-stream: 4.7.0 + secure-json-parse: 2.7.0 + sonic-boom: 4.2.0 + strip-json-comments: 3.1.1 + + pino-std-serializers@7.1.0: {} + + pino@9.14.0: + dependencies: + '@pinojs/redact': 0.4.0 + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + pirates@4.0.7: {} pixi.js@8.14.0: @@ -15399,7 +15652,7 @@ snapshots: cosmiconfig: 8.3.6(typescript@5.9.2) jiti: 1.21.7 postcss: 8.5.6 - semver: 7.7.2 + semver: 7.7.4 webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) transitivePeerDependencies: - typescript @@ -15842,6 +16095,10 @@ snapshots: process-nextick-args@2.0.1: {} + process-warning@5.0.0: {} + + process@0.11.10: {} + promise.series@0.2.0: {} prompts@2.4.2: @@ -15872,6 +16129,11 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@2.3.1: {} pupa@3.1.0: @@ -15886,6 +16148,8 @@ snapshots: queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + quick-lru@5.1.1: {} randombytes@2.1.0: @@ -15979,10 +16243,20 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 + real-require@0.2.0: {} + recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.8 @@ -16018,8 +16292,6 @@ snapshots: regenerate@1.4.2: {} - regenerator-runtime@0.13.11: {} - regexpu-core@6.2.0: dependencies: regenerate: 1.4.2 @@ -16168,11 +16440,6 @@ snapshots: dependencies: lowercase-keys: 3.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -16186,11 +16453,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@2.4.5: - dependencies: - glob: 6.0.4 - optional: true - rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -16303,16 +16565,10 @@ snapshots: postcss: 8.5.6 strip-json-comments: 3.1.1 - run-async@2.4.1: {} - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - rxjs@6.6.7: - dependencies: - tslib: 1.14.1 - rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -16323,8 +16579,7 @@ snapshots: safe-identifier@0.4.2: {} - safe-json-stringify@1.2.0: - optional: true + safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} @@ -16364,6 +16619,8 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 + secure-json-parse@2.7.0: {} + select-hose@2.0.0: {} selfsigned@2.4.1: @@ -16379,6 +16636,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.4: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -16547,6 +16806,10 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.4 + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + sort-css-media-queries@2.2.0: {} source-map-js@1.2.1: {} @@ -16588,6 +16851,8 @@ snapshots: transitivePeerDependencies: - supports-color + split2@4.2.0: {} + sprintf-js@1.0.3: {} srcset@4.0.0: {} @@ -16764,7 +17029,13 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - through@2.3.8: {} + thingies@2.5.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 thunky@1.1.0: {} @@ -16782,10 +17053,6 @@ snapshots: dependencies: tldts-core: 6.1.86 - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -16806,6 +17073,10 @@ snapshots: dependencies: punycode: 2.3.1 + tree-dump@1.1.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + tree-kill@1.2.2: {} trim-lines@3.0.1: {} @@ -16816,7 +17087,7 @@ snapshots: dependencies: typescript: 5.9.2 - ts-retry-promise@0.7.1: {} + ts-retry-promise@0.8.1: {} tslib@1.14.1: {} @@ -17255,7 +17526,7 @@ snapshots: xml-name-validator@5.0.0: {} - xml2js@0.5.0: + xml2js@0.6.2: dependencies: sax: 1.4.1 xmlbuilder: 11.0.1 @@ -17290,4 +17561,6 @@ snapshots: yocto-queue@1.2.1: {} + zod@4.3.6: {} + zwitch@2.0.4: {} diff --git a/rollup.config.mjs b/rollup.config.mjs index bcf7f689..99e34a13 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -14,6 +14,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const production = process.env.NODE_ENV === 'production'; + console.log('Package mode:', production ? 'production' : 'development'); export default [ { @@ -35,7 +36,7 @@ export default [ }, ], }), - nodeResolve({ preferBuiltins: true, dedupe: ['@salesforce/core'] }), + nodeResolve({ preferBuiltins: true }), commonjs(), json(), swc( @@ -55,6 +56,33 @@ export default [ }, }), ), + // Copy runtime dependency files for salesforce bundle compatibility + copy({ + targets: [ + // Pino worker files (thread-stream requires these at runtime) + { + src: 'node_modules/.pnpm/thread-stream@*/node_modules/thread-stream/lib/worker.js', + dest: 'lana/out', + rename: 'thread-stream-worker.js', + }, + { + src: 'node_modules/.pnpm/pino@*/node_modules/pino/lib/worker.js', + dest: 'lana/out', + rename: 'pino-worker.js', + }, + { + src: 'node_modules/.pnpm/pino@*/node_modules/pino/file.js', + dest: 'lana/out', + rename: 'pino-file.js', + }, + // @salesforce/core logger transform stream (pino transport pipeline) + { + src: 'node_modules/.pnpm/@salesforce+core@*/node_modules/@salesforce/core/lib/logger/transformStream.js', + dest: 'lana/out', + rename: 'salesforce-transform-stream.js', + }, + ], + }), ], }, {