"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