85 lines
2.8 KiB
JavaScript
85 lines
2.8 KiB
JavaScript
"use strict";
|
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.formatRequestDetails = exports.parseLogLevel = void 0;
|
|
exports.loggerFor = loggerFor;
|
|
const values_1 = require("./values.js");
|
|
const levelNumbers = {
|
|
off: 0,
|
|
error: 200,
|
|
warn: 300,
|
|
info: 400,
|
|
debug: 500,
|
|
};
|
|
const parseLogLevel = (maybeLevel, sourceName, client) => {
|
|
if (!maybeLevel) {
|
|
return undefined;
|
|
}
|
|
if ((0, values_1.hasOwn)(levelNumbers, maybeLevel)) {
|
|
return maybeLevel;
|
|
}
|
|
loggerFor(client).warn(`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(Object.keys(levelNumbers))}`);
|
|
return undefined;
|
|
};
|
|
exports.parseLogLevel = parseLogLevel;
|
|
function noop() { }
|
|
function makeLogFn(fnLevel, logger, logLevel) {
|
|
if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) {
|
|
return noop;
|
|
}
|
|
else {
|
|
// Don't wrap logger functions, we want the stacktrace intact!
|
|
return logger[fnLevel].bind(logger);
|
|
}
|
|
}
|
|
const noopLogger = {
|
|
error: noop,
|
|
warn: noop,
|
|
info: noop,
|
|
debug: noop,
|
|
};
|
|
let cachedLoggers = /* @__PURE__ */ new WeakMap();
|
|
function loggerFor(client) {
|
|
const logger = client.logger;
|
|
const logLevel = client.logLevel ?? 'off';
|
|
if (!logger) {
|
|
return noopLogger;
|
|
}
|
|
const cachedLogger = cachedLoggers.get(logger);
|
|
if (cachedLogger && cachedLogger[0] === logLevel) {
|
|
return cachedLogger[1];
|
|
}
|
|
const levelLogger = {
|
|
error: makeLogFn('error', logger, logLevel),
|
|
warn: makeLogFn('warn', logger, logLevel),
|
|
info: makeLogFn('info', logger, logLevel),
|
|
debug: makeLogFn('debug', logger, logLevel),
|
|
};
|
|
cachedLoggers.set(logger, [logLevel, levelLogger]);
|
|
return levelLogger;
|
|
}
|
|
const formatRequestDetails = (details) => {
|
|
if (details.options) {
|
|
details.options = { ...details.options };
|
|
delete details.options['headers']; // redundant + leaks internals
|
|
}
|
|
if (details.headers) {
|
|
details.headers = Object.fromEntries((details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(([name, value]) => [
|
|
name,
|
|
(name.toLowerCase() === 'authorization' ||
|
|
name.toLowerCase() === 'cookie' ||
|
|
name.toLowerCase() === 'set-cookie') ?
|
|
'***'
|
|
: value,
|
|
]));
|
|
}
|
|
if ('retryOfRequestLogID' in details) {
|
|
if (details.retryOfRequestLogID) {
|
|
details.retryOf = details.retryOfRequestLogID;
|
|
}
|
|
delete details.retryOfRequestLogID;
|
|
}
|
|
return details;
|
|
};
|
|
exports.formatRequestDetails = formatRequestDetails;
|
|
//# sourceMappingURL=log.js.map
|