@typespec/ts-http-runtime
Version:
Isomorphic client library for making HTTP requests in node.js and browser.
146 lines (145 loc) • 5.13 kB
JavaScript
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 __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 logger_exports = {};
__export(logger_exports, {
TypeSpecRuntimeLogger: () => TypeSpecRuntimeLogger,
createClientLogger: () => createClientLogger,
createLoggerContext: () => createLoggerContext,
getLogLevel: () => getLogLevel,
setLogLevel: () => setLogLevel
});
module.exports = __toCommonJS(logger_exports);
var import_debug = __toESM(require("./debug.js"));
var import_env = require("../env.js");
const TYPESPEC_RUNTIME_LOG_LEVELS = ["verbose", "info", "warning", "error"];
const levelMap = {
verbose: 400,
info: 300,
warning: 200,
error: 100
};
function patchLogMethod(parent, child) {
child.log = (...args) => {
parent.log(...args);
};
}
function isTypeSpecRuntimeLogLevel(level) {
return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level);
}
function createLoggerContext(options) {
const registeredLoggers = /* @__PURE__ */ new Set();
const logLevelFromEnv = (0, import_env.getEnvironmentVariable)(options.logLevelEnvVarName);
let logLevel;
const clientLogger = (0, import_debug.default)(options.namespace);
clientLogger.log = (...args) => {
import_debug.default.log(...args);
};
function contextSetLogLevel(level) {
if (level && !isTypeSpecRuntimeLogLevel(level)) {
throw new Error(
`Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(",")}`
);
}
logLevel = level;
const enabledNamespaces = [];
for (const logger of registeredLoggers) {
if (shouldEnable(logger)) {
enabledNamespaces.push(logger.namespace);
}
}
import_debug.default.enable(enabledNamespaces.join(","));
}
if (logLevelFromEnv) {
if (isTypeSpecRuntimeLogLevel(logLevelFromEnv)) {
contextSetLogLevel(logLevelFromEnv);
} else {
console.error(
`${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(
", "
)}.`
);
}
}
function shouldEnable(logger) {
return Boolean(logLevel && levelMap[logger.level] <= levelMap[logLevel]);
}
function createLogger(parent, level) {
const logger = Object.assign(parent.extend(level), {
level
});
patchLogMethod(parent, logger);
if (shouldEnable(logger)) {
const enabledNamespaces = import_debug.default.disable();
import_debug.default.enable(enabledNamespaces + "," + logger.namespace);
}
registeredLoggers.add(logger);
return logger;
}
function contextGetLogLevel() {
return logLevel;
}
function contextCreateClientLogger(namespace) {
const clientRootLogger = clientLogger.extend(namespace);
patchLogMethod(clientLogger, clientRootLogger);
return {
error: createLogger(clientRootLogger, "error"),
warning: createLogger(clientRootLogger, "warning"),
info: createLogger(clientRootLogger, "info"),
verbose: createLogger(clientRootLogger, "verbose")
};
}
return {
setLogLevel: contextSetLogLevel,
getLogLevel: contextGetLogLevel,
createClientLogger: contextCreateClientLogger,
logger: clientLogger
};
}
const context = createLoggerContext({
logLevelEnvVarName: "TYPESPEC_RUNTIME_LOG_LEVEL",
namespace: "typeSpecRuntime"
});
const TypeSpecRuntimeLogger = context.logger;
function setLogLevel(logLevel) {
context.setLogLevel(logLevel);
}
function getLogLevel() {
return context.getLogLevel();
}
function createClientLogger(namespace) {
return context.createClientLogger(namespace);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
TypeSpecRuntimeLogger,
createClientLogger,
createLoggerContext,
getLogLevel,
setLogLevel
});
//# sourceMappingURL=logger.js.map