apitally
Version:
Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, Hapi, and Koa.
1,510 lines (1,487 loc) • 195 kB
JavaScript
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
// node_modules/pino-std-serializers/lib/err-helpers.js
var require_err_helpers = __commonJS({
"node_modules/pino-std-serializers/lib/err-helpers.js"(exports2, module2) {
"use strict";
var isErrorLike = /* @__PURE__ */ __name((err) => {
return err && typeof err.message === "string";
}, "isErrorLike");
var getErrorCause = /* @__PURE__ */ __name((err) => {
if (!err) return;
const cause = err.cause;
if (typeof cause === "function") {
const causeResult = err.cause();
return isErrorLike(causeResult) ? causeResult : void 0;
} else {
return isErrorLike(cause) ? cause : void 0;
}
}, "getErrorCause");
var _stackWithCauses = /* @__PURE__ */ __name((err, seen) => {
if (!isErrorLike(err)) return "";
const stack = err.stack || "";
if (seen.has(err)) {
return stack + "\ncauses have become circular...";
}
const cause = getErrorCause(err);
if (cause) {
seen.add(err);
return stack + "\ncaused by: " + _stackWithCauses(cause, seen);
} else {
return stack;
}
}, "_stackWithCauses");
var stackWithCauses = /* @__PURE__ */ __name((err) => _stackWithCauses(err, /* @__PURE__ */ new Set()), "stackWithCauses");
var _messageWithCauses = /* @__PURE__ */ __name((err, seen, skip) => {
if (!isErrorLike(err)) return "";
const message = skip ? "" : err.message || "";
if (seen.has(err)) {
return message + ": ...";
}
const cause = getErrorCause(err);
if (cause) {
seen.add(err);
const skipIfVErrorStyleCause = typeof err.cause === "function";
return message + (skipIfVErrorStyleCause ? "" : ": ") + _messageWithCauses(cause, seen, skipIfVErrorStyleCause);
} else {
return message;
}
}, "_messageWithCauses");
var messageWithCauses = /* @__PURE__ */ __name((err) => _messageWithCauses(err, /* @__PURE__ */ new Set()), "messageWithCauses");
module2.exports = {
isErrorLike,
getErrorCause,
stackWithCauses,
messageWithCauses
};
}
});
// node_modules/pino-std-serializers/lib/err-proto.js
var require_err_proto = __commonJS({
"node_modules/pino-std-serializers/lib/err-proto.js"(exports2, module2) {
"use strict";
var seen = Symbol("circular-ref-tag");
var rawSymbol = Symbol("pino-raw-err-ref");
var pinoErrProto = Object.create({}, {
type: {
enumerable: true,
writable: true,
value: void 0
},
message: {
enumerable: true,
writable: true,
value: void 0
},
stack: {
enumerable: true,
writable: true,
value: void 0
},
aggregateErrors: {
enumerable: true,
writable: true,
value: void 0
},
raw: {
enumerable: false,
get: /* @__PURE__ */ __name(function() {
return this[rawSymbol];
}, "get"),
set: /* @__PURE__ */ __name(function(val) {
this[rawSymbol] = val;
}, "set")
}
});
Object.defineProperty(pinoErrProto, rawSymbol, {
writable: true,
value: {}
});
module2.exports = {
pinoErrProto,
pinoErrorSymbols: {
seen,
rawSymbol
}
};
}
});
// node_modules/pino-std-serializers/lib/err.js
var require_err = __commonJS({
"node_modules/pino-std-serializers/lib/err.js"(exports2, module2) {
"use strict";
module2.exports = errSerializer;
var { messageWithCauses, stackWithCauses, isErrorLike } = require_err_helpers();
var { pinoErrProto, pinoErrorSymbols } = require_err_proto();
var { seen } = pinoErrorSymbols;
var { toString } = Object.prototype;
function errSerializer(err) {
if (!isErrorLike(err)) {
return err;
}
err[seen] = void 0;
const _err = Object.create(pinoErrProto);
_err.type = toString.call(err.constructor) === "[object Function]" ? err.constructor.name : err.name;
_err.message = messageWithCauses(err);
_err.stack = stackWithCauses(err);
if (Array.isArray(err.errors)) {
_err.aggregateErrors = err.errors.map((err2) => errSerializer(err2));
}
for (const key in err) {
if (_err[key] === void 0) {
const val = err[key];
if (isErrorLike(val)) {
if (key !== "cause" && !Object.prototype.hasOwnProperty.call(val, seen)) {
_err[key] = errSerializer(val);
}
} else {
_err[key] = val;
}
}
}
delete err[seen];
_err.raw = err;
return _err;
}
__name(errSerializer, "errSerializer");
}
});
// node_modules/pino-std-serializers/lib/err-with-cause.js
var require_err_with_cause = __commonJS({
"node_modules/pino-std-serializers/lib/err-with-cause.js"(exports2, module2) {
"use strict";
module2.exports = errWithCauseSerializer;
var { isErrorLike } = require_err_helpers();
var { pinoErrProto, pinoErrorSymbols } = require_err_proto();
var { seen } = pinoErrorSymbols;
var { toString } = Object.prototype;
function errWithCauseSerializer(err) {
if (!isErrorLike(err)) {
return err;
}
err[seen] = void 0;
const _err = Object.create(pinoErrProto);
_err.type = toString.call(err.constructor) === "[object Function]" ? err.constructor.name : err.name;
_err.message = err.message;
_err.stack = err.stack;
if (Array.isArray(err.errors)) {
_err.aggregateErrors = err.errors.map((err2) => errWithCauseSerializer(err2));
}
if (isErrorLike(err.cause) && !Object.prototype.hasOwnProperty.call(err.cause, seen)) {
_err.cause = errWithCauseSerializer(err.cause);
}
for (const key in err) {
if (_err[key] === void 0) {
const val = err[key];
if (isErrorLike(val)) {
if (!Object.prototype.hasOwnProperty.call(val, seen)) {
_err[key] = errWithCauseSerializer(val);
}
} else {
_err[key] = val;
}
}
}
delete err[seen];
_err.raw = err;
return _err;
}
__name(errWithCauseSerializer, "errWithCauseSerializer");
}
});
// node_modules/pino-std-serializers/lib/req.js
var require_req = __commonJS({
"node_modules/pino-std-serializers/lib/req.js"(exports2, module2) {
"use strict";
module2.exports = {
mapHttpRequest,
reqSerializer
};
var rawSymbol = Symbol("pino-raw-req-ref");
var pinoReqProto = Object.create({}, {
id: {
enumerable: true,
writable: true,
value: ""
},
method: {
enumerable: true,
writable: true,
value: ""
},
url: {
enumerable: true,
writable: true,
value: ""
},
query: {
enumerable: true,
writable: true,
value: ""
},
params: {
enumerable: true,
writable: true,
value: ""
},
headers: {
enumerable: true,
writable: true,
value: {}
},
remoteAddress: {
enumerable: true,
writable: true,
value: ""
},
remotePort: {
enumerable: true,
writable: true,
value: ""
},
raw: {
enumerable: false,
get: /* @__PURE__ */ __name(function() {
return this[rawSymbol];
}, "get"),
set: /* @__PURE__ */ __name(function(val) {
this[rawSymbol] = val;
}, "set")
}
});
Object.defineProperty(pinoReqProto, rawSymbol, {
writable: true,
value: {}
});
function reqSerializer(req) {
const connection = req.info || req.socket;
const _req = Object.create(pinoReqProto);
_req.id = typeof req.id === "function" ? req.id() : req.id || (req.info ? req.info.id : void 0);
_req.method = req.method;
if (req.originalUrl) {
_req.url = req.originalUrl;
} else {
const path = req.path;
_req.url = typeof path === "string" ? path : req.url ? req.url.path || req.url : void 0;
}
if (req.query) {
_req.query = req.query;
}
if (req.params) {
_req.params = req.params;
}
_req.headers = req.headers;
_req.remoteAddress = connection && connection.remoteAddress;
_req.remotePort = connection && connection.remotePort;
_req.raw = req.raw || req;
return _req;
}
__name(reqSerializer, "reqSerializer");
function mapHttpRequest(req) {
return {
req: reqSerializer(req)
};
}
__name(mapHttpRequest, "mapHttpRequest");
}
});
// node_modules/pino-std-serializers/lib/res.js
var require_res = __commonJS({
"node_modules/pino-std-serializers/lib/res.js"(exports2, module2) {
"use strict";
module2.exports = {
mapHttpResponse,
resSerializer
};
var rawSymbol = Symbol("pino-raw-res-ref");
var pinoResProto = Object.create({}, {
statusCode: {
enumerable: true,
writable: true,
value: 0
},
headers: {
enumerable: true,
writable: true,
value: ""
},
raw: {
enumerable: false,
get: /* @__PURE__ */ __name(function() {
return this[rawSymbol];
}, "get"),
set: /* @__PURE__ */ __name(function(val) {
this[rawSymbol] = val;
}, "set")
}
});
Object.defineProperty(pinoResProto, rawSymbol, {
writable: true,
value: {}
});
function resSerializer(res) {
const _res = Object.create(pinoResProto);
_res.statusCode = res.headersSent ? res.statusCode : null;
_res.headers = res.getHeaders ? res.getHeaders() : res._headers;
_res.raw = res;
return _res;
}
__name(resSerializer, "resSerializer");
function mapHttpResponse(res) {
return {
res: resSerializer(res)
};
}
__name(mapHttpResponse, "mapHttpResponse");
}
});
// node_modules/pino-std-serializers/index.js
var require_pino_std_serializers = __commonJS({
"node_modules/pino-std-serializers/index.js"(exports2, module2) {
"use strict";
var errSerializer = require_err();
var errWithCauseSerializer = require_err_with_cause();
var reqSerializers = require_req();
var resSerializers = require_res();
module2.exports = {
err: errSerializer,
errWithCause: errWithCauseSerializer,
mapHttpRequest: reqSerializers.mapHttpRequest,
mapHttpResponse: resSerializers.mapHttpResponse,
req: reqSerializers.reqSerializer,
res: resSerializers.resSerializer,
wrapErrorSerializer: /* @__PURE__ */ __name(function wrapErrorSerializer(customSerializer) {
if (customSerializer === errSerializer) return customSerializer;
return /* @__PURE__ */ __name(function wrapErrSerializer(err) {
return customSerializer(errSerializer(err));
}, "wrapErrSerializer");
}, "wrapErrorSerializer"),
wrapRequestSerializer: /* @__PURE__ */ __name(function wrapRequestSerializer(customSerializer) {
if (customSerializer === reqSerializers.reqSerializer) return customSerializer;
return /* @__PURE__ */ __name(function wrappedReqSerializer(req) {
return customSerializer(reqSerializers.reqSerializer(req));
}, "wrappedReqSerializer");
}, "wrapRequestSerializer"),
wrapResponseSerializer: /* @__PURE__ */ __name(function wrapResponseSerializer(customSerializer) {
if (customSerializer === resSerializers.resSerializer) return customSerializer;
return /* @__PURE__ */ __name(function wrappedResSerializer(res) {
return customSerializer(resSerializers.resSerializer(res));
}, "wrappedResSerializer");
}, "wrapResponseSerializer")
};
}
});
// node_modules/pino/lib/caller.js
var require_caller = __commonJS({
"node_modules/pino/lib/caller.js"(exports2, module2) {
"use strict";
function noOpPrepareStackTrace(_, stack) {
return stack;
}
__name(noOpPrepareStackTrace, "noOpPrepareStackTrace");
module2.exports = /* @__PURE__ */ __name(function getCallers() {
const originalPrepare = Error.prepareStackTrace;
Error.prepareStackTrace = noOpPrepareStackTrace;
const stack = new Error().stack;
Error.prepareStackTrace = originalPrepare;
if (!Array.isArray(stack)) {
return void 0;
}
const entries = stack.slice(2);
const fileNames = [];
for (const entry of entries) {
if (!entry) {
continue;
}
fileNames.push(entry.getFileName());
}
return fileNames;
}, "getCallers");
}
});
// node_modules/fast-redact/lib/validator.js
var require_validator = __commonJS({
"node_modules/fast-redact/lib/validator.js"(exports2, module2) {
"use strict";
module2.exports = validator;
function validator(opts = {}) {
const { ERR_PATHS_MUST_BE_STRINGS = /* @__PURE__ */ __name(() => "fast-redact - Paths must be (non-empty) strings", "ERR_PATHS_MUST_BE_STRINGS"), ERR_INVALID_PATH = /* @__PURE__ */ __name((s) => `fast-redact \u2013 Invalid path (${s})`, "ERR_INVALID_PATH") } = opts;
return /* @__PURE__ */ __name(function validate({ paths }) {
paths.forEach((s) => {
if (typeof s !== "string") {
throw Error(ERR_PATHS_MUST_BE_STRINGS());
}
try {
if (/〇/.test(s)) throw Error();
const expr = (s[0] === "[" ? "" : ".") + s.replace(/^\*/, "\u3007").replace(/\.\*/g, ".\u3007").replace(/\[\*\]/g, "[\u3007]");
if (/\n|\r|;/.test(expr)) throw Error();
if (/\/\*/.test(expr)) throw Error();
Function(`
'use strict'
const o = new Proxy({}, { get: () => o, set: () => { throw Error() } });
const \u3007 = null;
o${expr}
if ([o${expr}].length !== 1) throw Error()`)();
} catch (e) {
throw Error(ERR_INVALID_PATH(s));
}
});
}, "validate");
}
__name(validator, "validator");
}
});
// node_modules/fast-redact/lib/rx.js
var require_rx = __commonJS({
"node_modules/fast-redact/lib/rx.js"(exports2, module2) {
"use strict";
module2.exports = /[^.[\]]+|\[((?:.)*?)\]/g;
}
});
// node_modules/fast-redact/lib/parse.js
var require_parse = __commonJS({
"node_modules/fast-redact/lib/parse.js"(exports2, module2) {
"use strict";
var rx = require_rx();
module2.exports = parse;
function parse({ paths }) {
const wildcards = [];
var wcLen = 0;
const secret = paths.reduce(function(o, strPath, ix) {
var path = strPath.match(rx).map((p) => p.replace(/'|"|`/g, ""));
const leadingBracket = strPath[0] === "[";
path = path.map((p) => {
if (p[0] === "[") return p.substr(1, p.length - 2);
else return p;
});
const star = path.indexOf("*");
if (star > -1) {
const before = path.slice(0, star);
const beforeStr = before.join(".");
const after = path.slice(star + 1, path.length);
const nested = after.length > 0;
wcLen++;
wildcards.push({
before,
beforeStr,
after,
nested
});
} else {
o[strPath] = {
path,
val: void 0,
precensored: false,
circle: "",
escPath: JSON.stringify(strPath),
leadingBracket
};
}
return o;
}, {});
return {
wildcards,
wcLen,
secret
};
}
__name(parse, "parse");
}
});
// node_modules/fast-redact/lib/redactor.js
var require_redactor = __commonJS({
"node_modules/fast-redact/lib/redactor.js"(exports2, module2) {
"use strict";
var rx = require_rx();
module2.exports = redactor;
function redactor({ secret, serialize, wcLen, strict, isCensorFct, censorFctTakesPath }, state) {
const redact = Function("o", `
if (typeof o !== 'object' || o == null) {
${strictImpl(strict, serialize)}
}
const { censor, secret } = this
const originalSecret = {}
const secretKeys = Object.keys(secret)
for (var i = 0; i < secretKeys.length; i++) {
originalSecret[secretKeys[i]] = secret[secretKeys[i]]
}
${redactTmpl(secret, isCensorFct, censorFctTakesPath)}
this.compileRestore()
${dynamicRedactTmpl(wcLen > 0, isCensorFct, censorFctTakesPath)}
this.secret = originalSecret
${resultTmpl(serialize)}
`).bind(state);
redact.state = state;
if (serialize === false) {
redact.restore = (o) => state.restore(o);
}
return redact;
}
__name(redactor, "redactor");
function redactTmpl(secret, isCensorFct, censorFctTakesPath) {
return Object.keys(secret).map((path) => {
const { escPath, leadingBracket, path: arrPath } = secret[path];
const skip = leadingBracket ? 1 : 0;
const delim = leadingBracket ? "" : ".";
const hops = [];
var match;
while ((match = rx.exec(path)) !== null) {
const [, ix] = match;
const { index, input } = match;
if (index > skip) hops.push(input.substring(0, index - (ix ? 0 : 1)));
}
var existence = hops.map((p) => `o${delim}${p}`).join(" && ");
if (existence.length === 0) existence += `o${delim}${path} != null`;
else existence += ` && o${delim}${path} != null`;
const circularDetection = `
switch (true) {
${hops.reverse().map((p) => `
case o${delim}${p} === censor:
secret[${escPath}].circle = ${JSON.stringify(p)}
break
`).join("\n")}
}
`;
const censorArgs = censorFctTakesPath ? `val, ${JSON.stringify(arrPath)}` : `val`;
return `
if (${existence}) {
const val = o${delim}${path}
if (val === censor) {
secret[${escPath}].precensored = true
} else {
secret[${escPath}].val = val
o${delim}${path} = ${isCensorFct ? `censor(${censorArgs})` : "censor"}
${circularDetection}
}
}
`;
}).join("\n");
}
__name(redactTmpl, "redactTmpl");
function dynamicRedactTmpl(hasWildcards, isCensorFct, censorFctTakesPath) {
return hasWildcards === true ? `
{
const { wildcards, wcLen, groupRedact, nestedRedact } = this
for (var i = 0; i < wcLen; i++) {
const { before, beforeStr, after, nested } = wildcards[i]
if (nested === true) {
secret[beforeStr] = secret[beforeStr] || []
nestedRedact(secret[beforeStr], o, before, after, censor, ${isCensorFct}, ${censorFctTakesPath})
} else secret[beforeStr] = groupRedact(o, before, censor, ${isCensorFct}, ${censorFctTakesPath})
}
}
` : "";
}
__name(dynamicRedactTmpl, "dynamicRedactTmpl");
function resultTmpl(serialize) {
return serialize === false ? `return o` : `
var s = this.serialize(o)
this.restore(o)
return s
`;
}
__name(resultTmpl, "resultTmpl");
function strictImpl(strict, serialize) {
return strict === true ? `throw Error('fast-redact: primitives cannot be redacted')` : serialize === false ? `return o` : `return this.serialize(o)`;
}
__name(strictImpl, "strictImpl");
}
});
// node_modules/fast-redact/lib/modifiers.js
var require_modifiers = __commonJS({
"node_modules/fast-redact/lib/modifiers.js"(exports2, module2) {
"use strict";
module2.exports = {
groupRedact,
groupRestore,
nestedRedact,
nestedRestore
};
function groupRestore({ keys, values, target }) {
if (target == null || typeof target === "string") return;
const length = keys.length;
for (var i = 0; i < length; i++) {
const k = keys[i];
target[k] = values[i];
}
}
__name(groupRestore, "groupRestore");
function groupRedact(o, path, censor, isCensorFct, censorFctTakesPath) {
const target = get(o, path);
if (target == null || typeof target === "string") return {
keys: null,
values: null,
target,
flat: true
};
const keys = Object.keys(target);
const keysLength = keys.length;
const pathLength = path.length;
const pathWithKey = censorFctTakesPath ? [
...path
] : void 0;
const values = new Array(keysLength);
for (var i = 0; i < keysLength; i++) {
const key = keys[i];
values[i] = target[key];
if (censorFctTakesPath) {
pathWithKey[pathLength] = key;
target[key] = censor(target[key], pathWithKey);
} else if (isCensorFct) {
target[key] = censor(target[key]);
} else {
target[key] = censor;
}
}
return {
keys,
values,
target,
flat: true
};
}
__name(groupRedact, "groupRedact");
function nestedRestore(instructions) {
for (let i = 0; i < instructions.length; i++) {
const { target, path, value } = instructions[i];
let current = target;
for (let i2 = path.length - 1; i2 > 0; i2--) {
current = current[path[i2]];
}
current[path[0]] = value;
}
}
__name(nestedRestore, "nestedRestore");
function nestedRedact(store, o, path, ns, censor, isCensorFct, censorFctTakesPath) {
const target = get(o, path);
if (target == null) return;
const keys = Object.keys(target);
const keysLength = keys.length;
for (var i = 0; i < keysLength; i++) {
const key = keys[i];
specialSet(store, target, key, path, ns, censor, isCensorFct, censorFctTakesPath);
}
return store;
}
__name(nestedRedact, "nestedRedact");
function has(obj, prop) {
return obj !== void 0 && obj !== null ? "hasOwn" in Object ? Object.hasOwn(obj, prop) : Object.prototype.hasOwnProperty.call(obj, prop) : false;
}
__name(has, "has");
function specialSet(store, o, k, path, afterPath, censor, isCensorFct, censorFctTakesPath) {
const afterPathLen = afterPath.length;
const lastPathIndex = afterPathLen - 1;
const originalKey = k;
var i = -1;
var n;
var nv;
var ov;
var oov = null;
var wc = null;
var kIsWc;
var wcov;
var consecutive = false;
var level = 0;
var depth = 0;
var redactPathCurrent = tree();
ov = n = o[k];
if (typeof n !== "object") return;
while (n != null && ++i < afterPathLen) {
depth += 1;
k = afterPath[i];
oov = ov;
if (k !== "*" && !wc && !(typeof n === "object" && k in n)) {
break;
}
if (k === "*") {
if (wc === "*") {
consecutive = true;
}
wc = k;
if (i !== lastPathIndex) {
continue;
}
}
if (wc) {
const wcKeys = Object.keys(n);
for (var j = 0; j < wcKeys.length; j++) {
const wck = wcKeys[j];
wcov = n[wck];
kIsWc = k === "*";
if (consecutive) {
redactPathCurrent = node(redactPathCurrent, wck, depth);
level = i;
ov = iterateNthLevel(wcov, level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, o[originalKey], depth + 1);
} else {
if (kIsWc || typeof wcov === "object" && wcov !== null && k in wcov) {
if (kIsWc) {
ov = wcov;
} else {
ov = wcov[k];
}
nv = i !== lastPathIndex ? ov : isCensorFct ? censorFctTakesPath ? censor(ov, [
...path,
originalKey,
...afterPath
]) : censor(ov) : censor;
if (kIsWc) {
const rv = restoreInstr(node(redactPathCurrent, wck, depth), ov, o[originalKey]);
store.push(rv);
n[wck] = nv;
} else {
if (wcov[k] === nv) {
} else if (nv === void 0 && censor !== void 0 || has(wcov, k) && nv === ov) {
redactPathCurrent = node(redactPathCurrent, wck, depth);
} else {
redactPathCurrent = node(redactPathCurrent, wck, depth);
const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, o[originalKey]);
store.push(rv);
wcov[k] = nv;
}
}
}
}
}
wc = null;
} else {
ov = n[k];
redactPathCurrent = node(redactPathCurrent, k, depth);
nv = i !== lastPathIndex ? ov : isCensorFct ? censorFctTakesPath ? censor(ov, [
...path,
originalKey,
...afterPath
]) : censor(ov) : censor;
if (has(n, k) && nv === ov || nv === void 0 && censor !== void 0) {
} else {
const rv = restoreInstr(redactPathCurrent, ov, o[originalKey]);
store.push(rv);
n[k] = nv;
}
n = n[k];
}
if (typeof n !== "object") break;
if (ov === oov || typeof ov === "undefined") {
}
}
}
__name(specialSet, "specialSet");
function get(o, p) {
var i = -1;
var l = p.length;
var n = o;
while (n != null && ++i < l) {
n = n[p[i]];
}
return n;
}
__name(get, "get");
function iterateNthLevel(wcov, level, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth) {
if (level === 0) {
if (kIsWc || typeof wcov === "object" && wcov !== null && k in wcov) {
if (kIsWc) {
ov = wcov;
} else {
ov = wcov[k];
}
nv = i !== lastPathIndex ? ov : isCensorFct ? censorFctTakesPath ? censor(ov, [
...path,
originalKey,
...afterPath
]) : censor(ov) : censor;
if (kIsWc) {
const rv = restoreInstr(redactPathCurrent, ov, parent);
store.push(rv);
n[wck] = nv;
} else {
if (wcov[k] === nv) {
} else if (nv === void 0 && censor !== void 0 || has(wcov, k) && nv === ov) {
} else {
const rv = restoreInstr(node(redactPathCurrent, k, depth + 1), ov, parent);
store.push(rv);
wcov[k] = nv;
}
}
}
}
for (const key in wcov) {
if (typeof wcov[key] === "object") {
redactPathCurrent = node(redactPathCurrent, key, depth);
iterateNthLevel(wcov[key], level - 1, k, path, afterPath, censor, isCensorFct, censorFctTakesPath, originalKey, n, nv, ov, kIsWc, wck, i, lastPathIndex, redactPathCurrent, store, parent, depth + 1);
}
}
}
__name(iterateNthLevel, "iterateNthLevel");
function tree() {
return {
parent: null,
key: null,
children: [],
depth: 0
};
}
__name(tree, "tree");
function node(parent, key, depth) {
if (parent.depth === depth) {
return node(parent.parent, key, depth);
}
var child = {
parent,
key,
depth,
children: []
};
parent.children.push(child);
return child;
}
__name(node, "node");
function restoreInstr(node2, value, target) {
let current = node2;
const path = [];
do {
path.push(current.key);
current = current.parent;
} while (current.parent != null);
return {
path,
value,
target
};
}
__name(restoreInstr, "restoreInstr");
}
});
// node_modules/fast-redact/lib/restorer.js
var require_restorer = __commonJS({
"node_modules/fast-redact/lib/restorer.js"(exports2, module2) {
"use strict";
var { groupRestore, nestedRestore } = require_modifiers();
module2.exports = restorer;
function restorer() {
return /* @__PURE__ */ __name(function compileRestore() {
if (this.restore) {
this.restore.state.secret = this.secret;
return;
}
const { secret, wcLen } = this;
const paths = Object.keys(secret);
const resetters = resetTmpl(secret, paths);
const hasWildcards = wcLen > 0;
const state = hasWildcards ? {
secret,
groupRestore,
nestedRestore
} : {
secret
};
this.restore = Function("o", restoreTmpl(resetters, paths, hasWildcards)).bind(state);
this.restore.state = state;
}, "compileRestore");
}
__name(restorer, "restorer");
function resetTmpl(secret, paths) {
return paths.map((path) => {
const { circle, escPath, leadingBracket } = secret[path];
const delim = leadingBracket ? "" : ".";
const reset = circle ? `o.${circle} = secret[${escPath}].val` : `o${delim}${path} = secret[${escPath}].val`;
const clear = `secret[${escPath}].val = undefined`;
return `
if (secret[${escPath}].val !== undefined) {
try { ${reset} } catch (e) {}
${clear}
}
`;
}).join("");
}
__name(resetTmpl, "resetTmpl");
function restoreTmpl(resetters, paths, hasWildcards) {
const dynamicReset = hasWildcards === true ? `
const keys = Object.keys(secret)
const len = keys.length
for (var i = len - 1; i >= ${paths.length}; i--) {
const k = keys[i]
const o = secret[k]
if (o) {
if (o.flat === true) this.groupRestore(o)
else this.nestedRestore(o)
secret[k] = null
}
}
` : "";
return `
const secret = this.secret
${dynamicReset}
${resetters}
return o
`;
}
__name(restoreTmpl, "restoreTmpl");
}
});
// node_modules/fast-redact/lib/state.js
var require_state = __commonJS({
"node_modules/fast-redact/lib/state.js"(exports2, module2) {
"use strict";
module2.exports = state;
function state(o) {
const { secret, censor, compileRestore, serialize, groupRedact, nestedRedact, wildcards, wcLen } = o;
const builder = [
{
secret,
censor,
compileRestore
}
];
if (serialize !== false) builder.push({
serialize
});
if (wcLen > 0) builder.push({
groupRedact,
nestedRedact,
wildcards,
wcLen
});
return Object.assign(...builder);
}
__name(state, "state");
}
});
// node_modules/fast-redact/index.js
var require_fast_redact = __commonJS({
"node_modules/fast-redact/index.js"(exports2, module2) {
"use strict";
var validator = require_validator();
var parse = require_parse();
var redactor = require_redactor();
var restorer = require_restorer();
var { groupRedact, nestedRedact } = require_modifiers();
var state = require_state();
var rx = require_rx();
var validate = validator();
var noop = /* @__PURE__ */ __name((o) => o, "noop");
noop.restore = noop;
var DEFAULT_CENSOR = "[REDACTED]";
fastRedact.rx = rx;
fastRedact.validator = validator;
module2.exports = fastRedact;
function fastRedact(opts = {}) {
const paths = Array.from(new Set(opts.paths || []));
const serialize = "serialize" in opts ? opts.serialize === false ? opts.serialize : typeof opts.serialize === "function" ? opts.serialize : JSON.stringify : JSON.stringify;
const remove = opts.remove;
if (remove === true && serialize !== JSON.stringify) {
throw Error("fast-redact \u2013 remove option may only be set when serializer is JSON.stringify");
}
const censor = remove === true ? void 0 : "censor" in opts ? opts.censor : DEFAULT_CENSOR;
const isCensorFct = typeof censor === "function";
const censorFctTakesPath = isCensorFct && censor.length > 1;
if (paths.length === 0) return serialize || noop;
validate({
paths,
serialize,
censor
});
const { wildcards, wcLen, secret } = parse({
paths,
censor
});
const compileRestore = restorer();
const strict = "strict" in opts ? opts.strict : true;
return redactor({
secret,
wcLen,
serialize,
strict,
isCensorFct,
censorFctTakesPath
}, state({
secret,
censor,
compileRestore,
serialize,
groupRedact,
nestedRedact,
wildcards,
wcLen
}));
}
__name(fastRedact, "fastRedact");
}
});
// node_modules/pino/lib/symbols.js
var require_symbols = __commonJS({
"node_modules/pino/lib/symbols.js"(exports2, module2) {
"use strict";
var setLevelSym = Symbol("pino.setLevel");
var getLevelSym = Symbol("pino.getLevel");
var levelValSym = Symbol("pino.levelVal");
var levelCompSym = Symbol("pino.levelComp");
var useLevelLabelsSym = Symbol("pino.useLevelLabels");
var useOnlyCustomLevelsSym = Symbol("pino.useOnlyCustomLevels");
var mixinSym = Symbol("pino.mixin");
var lsCacheSym = Symbol("pino.lsCache");
var chindingsSym = Symbol("pino.chindings");
var asJsonSym = Symbol("pino.asJson");
var writeSym = Symbol("pino.write");
var redactFmtSym = Symbol("pino.redactFmt");
var timeSym = Symbol("pino.time");
var timeSliceIndexSym = Symbol("pino.timeSliceIndex");
var streamSym = Symbol("pino.stream");
var stringifySym = Symbol("pino.stringify");
var stringifySafeSym = Symbol("pino.stringifySafe");
var stringifiersSym = Symbol("pino.stringifiers");
var endSym = Symbol("pino.end");
var formatOptsSym = Symbol("pino.formatOpts");
var messageKeySym = Symbol("pino.messageKey");
var errorKeySym = Symbol("pino.errorKey");
var nestedKeySym = Symbol("pino.nestedKey");
var nestedKeyStrSym = Symbol("pino.nestedKeyStr");
var mixinMergeStrategySym = Symbol("pino.mixinMergeStrategy");
var msgPrefixSym = Symbol("pino.msgPrefix");
var wildcardFirstSym = Symbol("pino.wildcardFirst");
var serializersSym = Symbol.for("pino.serializers");
var formattersSym = Symbol.for("pino.formatters");
var hooksSym = Symbol.for("pino.hooks");
var needsMetadataGsym = Symbol.for("pino.metadata");
module2.exports = {
setLevelSym,
getLevelSym,
levelValSym,
levelCompSym,
useLevelLabelsSym,
mixinSym,
lsCacheSym,
chindingsSym,
asJsonSym,
writeSym,
serializersSym,
redactFmtSym,
timeSym,
timeSliceIndexSym,
streamSym,
stringifySym,
stringifySafeSym,
stringifiersSym,
endSym,
formatOptsSym,
messageKeySym,
errorKeySym,
nestedKeySym,
wildcardFirstSym,
needsMetadataGsym,
useOnlyCustomLevelsSym,
formattersSym,
hooksSym,
nestedKeyStrSym,
mixinMergeStrategySym,
msgPrefixSym
};
}
});
// node_modules/pino/lib/redaction.js
var require_redaction = __commonJS({
"node_modules/pino/lib/redaction.js"(exports2, module2) {
"use strict";
var fastRedact = require_fast_redact();
var { redactFmtSym, wildcardFirstSym } = require_symbols();
var { rx, validator } = fastRedact;
var validate = validator({
ERR_PATHS_MUST_BE_STRINGS: /* @__PURE__ */ __name(() => "pino \u2013 redacted paths must be strings", "ERR_PATHS_MUST_BE_STRINGS"),
ERR_INVALID_PATH: /* @__PURE__ */ __name((s) => `pino \u2013 redact paths array contains an invalid path (${s})`, "ERR_INVALID_PATH")
});
var CENSOR = "[Redacted]";
var strict = false;
function redaction(opts, serialize) {
const { paths, censor } = handle(opts);
const shape = paths.reduce((o, str) => {
rx.lastIndex = 0;
const first = rx.exec(str);
const next = rx.exec(str);
let ns = first[1] !== void 0 ? first[1].replace(/^(?:"|'|`)(.*)(?:"|'|`)$/, "$1") : first[0];
if (ns === "*") {
ns = wildcardFirstSym;
}
if (next === null) {
o[ns] = null;
return o;
}
if (o[ns] === null) {
return o;
}
const { index } = next;
const nextPath = `${str.substr(index, str.length - 1)}`;
o[ns] = o[ns] || [];
if (ns !== wildcardFirstSym && o[ns].length === 0) {
o[ns].push(...o[wildcardFirstSym] || []);
}
if (ns === wildcardFirstSym) {
Object.keys(o).forEach(function(k) {
if (o[k]) {
o[k].push(nextPath);
}
});
}
o[ns].push(nextPath);
return o;
}, {});
const result = {
[redactFmtSym]: fastRedact({
paths,
censor,
serialize,
strict
})
};
const topCensor = /* @__PURE__ */ __name((...args) => {
return typeof censor === "function" ? serialize(censor(...args)) : serialize(censor);
}, "topCensor");
return [
...Object.keys(shape),
...Object.getOwnPropertySymbols(shape)
].reduce((o, k) => {
if (shape[k] === null) {
o[k] = (value) => topCensor(value, [
k
]);
} else {
const wrappedCensor = typeof censor === "function" ? (value, path) => {
return censor(value, [
k,
...path
]);
} : censor;
o[k] = fastRedact({
paths: shape[k],
censor: wrappedCensor,
serialize,
strict
});
}
return o;
}, result);
}
__name(redaction, "redaction");
function handle(opts) {
if (Array.isArray(opts)) {
opts = {
paths: opts,
censor: CENSOR
};
validate(opts);
return opts;
}
let { paths, censor = CENSOR, remove } = opts;
if (Array.isArray(paths) === false) {
throw Error("pino \u2013 redact must contain an array of strings");
}
if (remove === true) censor = void 0;
validate({
paths,
censor
});
return {
paths,
censor
};
}
__name(handle, "handle");
module2.exports = redaction;
}
});
// node_modules/pino/lib/time.js
var require_time = __commonJS({
"node_modules/pino/lib/time.js"(exports2, module2) {
"use strict";
var nullTime = /* @__PURE__ */ __name(() => "", "nullTime");
var epochTime = /* @__PURE__ */ __name(() => `,"time":${Date.now()}`, "epochTime");
var unixTime = /* @__PURE__ */ __name(() => `,"time":${Math.round(Date.now() / 1e3)}`, "unixTime");
var isoTime = /* @__PURE__ */ __name(() => `,"time":"${new Date(Date.now()).toISOString()}"`, "isoTime");
var NS_PER_MS = 1000000n;
var NS_PER_SEC = 1000000000n;
var startWallTimeNs = BigInt(Date.now()) * NS_PER_MS;
var startHrTime = process.hrtime.bigint();
var isoTimeNano = /* @__PURE__ */ __name(() => {
const elapsedNs = process.hrtime.bigint() - startHrTime;
const currentTimeNs = startWallTimeNs + elapsedNs;
const secondsSinceEpoch = currentTimeNs / NS_PER_SEC;
const nanosWithinSecond = currentTimeNs % NS_PER_SEC;
const msSinceEpoch = Number(secondsSinceEpoch * 1000n + nanosWithinSecond / 1000000n);
const date = new Date(msSinceEpoch);
const year = date.getUTCFullYear();
const month = (date.getUTCMonth() + 1).toString().padStart(2, "0");
const day = date.getUTCDate().toString().padStart(2, "0");
const hours = date.getUTCHours().toString().padStart(2, "0");
const minutes = date.getUTCMinutes().toString().padStart(2, "0");
const seconds = date.getUTCSeconds().toString().padStart(2, "0");
return `,"time":"${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${nanosWithinSecond.toString().padStart(9, "0")}Z"`;
}, "isoTimeNano");
module2.exports = {
nullTime,
epochTime,
unixTime,
isoTime,
isoTimeNano
};
}
});
// node_modules/quick-format-unescaped/index.js
var require_quick_format_unescaped = __commonJS({
"node_modules/quick-format-unescaped/index.js"(exports2, module2) {
"use strict";
function tryStringify(o) {
try {
return JSON.stringify(o);
} catch (e) {
return '"[Circular]"';
}
}
__name(tryStringify, "tryStringify");
module2.exports = format5;
function format5(f, args, opts) {
var ss = opts && opts.stringify || tryStringify;
var offset = 1;
if (typeof f === "object" && f !== null) {
var len = args.length + offset;
if (len === 1) return f;
var objects = new Array(len);
objects[0] = ss(f);
for (var index = 1; index < len; index++) {
objects[index] = ss(args[index]);
}
return objects.join(" ");
}
if (typeof f !== "string") {
return f;
}
var argLen = args.length;
if (argLen === 0) return f;
var str = "";
var a = 1 - offset;
var lastPos = -1;
var flen = f && f.length || 0;
for (var i = 0; i < flen; ) {
if (f.charCodeAt(i) === 37 && i + 1 < flen) {
lastPos = lastPos > -1 ? lastPos : 0;
switch (f.charCodeAt(i + 1)) {
case 100:
case 102:
if (a >= argLen) break;
if (args[a] == null) break;
if (lastPos < i) str += f.slice(lastPos, i);
str += Number(args[a]);
lastPos = i + 2;
i++;
break;
case 105:
if (a >= argLen) break;
if (args[a] == null) break;
if (lastPos < i) str += f.slice(lastPos, i);
str += Math.floor(Number(args[a]));
lastPos = i + 2;
i++;
break;
case 79:
case 111:
case 106:
if (a >= argLen) break;
if (args[a] === void 0) break;
if (lastPos < i) str += f.slice(lastPos, i);
var type = typeof args[a];
if (type === "string") {
str += "'" + args[a] + "'";
lastPos = i + 2;
i++;
break;
}
if (type === "function") {
str += args[a].name || "<anonymous>";
lastPos = i + 2;
i++;
break;
}
str += ss(args[a]);
lastPos = i + 2;
i++;
break;
case 115:
if (a >= argLen) break;
if (lastPos < i) str += f.slice(lastPos, i);
str += String(args[a]);
lastPos = i + 2;
i++;
break;
case 37:
if (lastPos < i) str += f.slice(lastPos, i);
str += "%";
lastPos = i + 2;
i++;
a--;
break;
}
++a;
}
++i;
}
if (lastPos === -1) return f;
else if (lastPos < flen) {
str += f.slice(lastPos);
}
return str;
}
__name(format5, "format");
}
});
// node_modules/atomic-sleep/index.js
var require_atomic_sleep = __commonJS({
"node_modules/atomic-sleep/index.js"(exports2, module2) {
"use strict";
if (typeof SharedArrayBuffer !== "undefined" && typeof Atomics !== "undefined") {
let sleep = function(ms) {
const valid = ms > 0 && ms < Infinity;
if (valid === false) {
if (typeof ms !== "number" && typeof ms !== "bigint") {
throw TypeError("sleep: ms must be a number");
}
throw RangeError("sleep: ms must be a number that is greater than 0 but less than Infinity");
}
Atomics.wait(nil, 0, 0, Number(ms));
};
__name(sleep, "sleep");
const nil = new Int32Array(new SharedArrayBuffer(4));
module2.exports = sleep;
} else {
let sleep1 = function(ms) {
const valid = ms > 0 && ms < Infinity;
if (valid === false) {
if (typeof ms !== "number" && typeof ms !== "bigint") {
throw TypeError("sleep: ms must be a number");
}
throw RangeError("sleep: ms must be a number that is greater than 0 but less than Infinity");
}
const target = Date.now() + Number(ms);
while (target > Date.now()) {
}
};
__name(sleep1, "sleep1");
module2.exports = sleep1;
}
}
});
// node_modules/sonic-boom/index.js
var require_sonic_boom = __commonJS({
"node_modules/sonic-boom/index.js"(exports2, module2) {
"use strict";
var fs = require("fs");
var EventEmitter = require("events");
var inherits = require("util").inherits;
var path = require("path");
var sleep = require_atomic_sleep();
var assert = require("assert");
var BUSY_WRITE_TIMEOUT = 100;
var kEmptyBuffer = Buffer.allocUnsafe(0);
var MAX_WRITE = 16 * 1024;
var kContentModeBuffer = "buffer";
var kContentModeUtf8 = "utf8";
var [major, minor] = (process.versions.node || "0.0").split(".").map(Number);
var kCopyBuffer = major >= 22 && minor >= 7;
function openFile(file, sonic) {
sonic._opening = true;
sonic._writing = true;
sonic._asyncDrainScheduled = false;
function fileOpened(err, fd) {
if (err) {
sonic._reopening = false;
sonic._writing = false;
sonic._opening = false;
if (sonic.sync) {
process.nextTick(() => {
if (sonic.listenerCount("error") > 0) {
sonic.emit("error", err);
}
});
} else {
sonic.emit("error", err);
}
return;
}
const reopening = sonic._reopening;
sonic.fd = fd;
sonic.file = file;
sonic._reopening = false;
sonic._opening = false;
sonic._writing = false;
if (sonic.sync) {
process.nextTick(() => sonic.emit("ready"));
} else {
sonic.emit("ready");
}
if (sonic.destroyed) {
return;
}
if (!sonic._writing && sonic._len > sonic.minLength || sonic._flushPending) {
sonic._actualWrite();
} else if (reopening) {
process.nextTick(() => sonic.emit("drain"));
}
}
__name(fileOpened, "fileOpened");
const flags = sonic.append ? "a" : "w";
const mode = sonic.mode;
if (sonic.sync) {
try {
if (sonic.mkdir) fs.mkdirSync(path.dirname(file), {
recursive: true
});
const fd = fs.openSync(file, flags, mode);
fileOpened(null, fd);
} catch (err) {
fileOpened(err);
throw err;
}
} else if (sonic.mkdir) {
fs.mkdir(path.dirname(file), {
recursive: true
}, (err) => {
if (err) return fileOpened(err);
fs.open(file, flags, mode, fileOpened);
});
} else {
fs.open(file, flags, mode, fileOpened);
}
}
__name(openFile, "openFile");
function SonicBoom(opts) {
if (!(this instanceof SonicBoom)) {
return new SonicBoom(opts);
}
let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append =