@typespec/ts-http-runtime
Version:
Isomorphic client library for making HTTP requests in node.js and browser.
185 lines (184 loc) • 5.3 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var debug_exports = {};
__export(debug_exports, {
default: () => debug_default
});
module.exports = __toCommonJS(debug_exports);
var import_log = require("./log.js");
var import_env = require("../env.js");
const debugEnvVariable = (0, import_env.getEnvironmentVariable)("DEBUG");
let enabledString;
let enabledNamespaces = [];
let skippedNamespaces = [];
const debuggers = [];
if (debugEnvVariable) {
enable(debugEnvVariable);
}
const debugObj = Object.assign(
(namespace) => {
return createDebugger(namespace);
},
{
enable,
enabled,
disable,
log: import_log.log
}
);
function enable(namespaces) {
enabledString = namespaces;
enabledNamespaces = [];
skippedNamespaces = [];
const namespaceList = namespaces.split(",").map((ns) => ns.trim());
for (const ns of namespaceList) {
if (ns.startsWith("-")) {
skippedNamespaces.push(ns.substring(1));
} else {
enabledNamespaces.push(ns);
}
}
for (const instance of debuggers) {
instance.enabled = enabled(instance.namespace);
}
}
function enabled(namespace) {
if (namespace.endsWith("*")) {
return true;
}
for (const skipped of skippedNamespaces) {
if (namespaceMatches(namespace, skipped)) {
return false;
}
}
for (const enabledNamespace of enabledNamespaces) {
if (namespaceMatches(namespace, enabledNamespace)) {
return true;
}
}
return false;
}
function namespaceMatches(namespace, patternToMatch) {
if (patternToMatch.indexOf("*") === -1) {
return namespace === patternToMatch;
}
let pattern = patternToMatch;
if (patternToMatch.indexOf("**") !== -1) {
const patternParts = [];
let lastCharacter = "";
for (const character of patternToMatch) {
if (character === "*" && lastCharacter === "*") {
continue;
} else {
lastCharacter = character;
patternParts.push(character);
}
}
pattern = patternParts.join("");
}
let namespaceIndex = 0;
let patternIndex = 0;
const patternLength = pattern.length;
const namespaceLength = namespace.length;
let lastWildcard = -1;
let lastWildcardNamespace = -1;
while (namespaceIndex < namespaceLength && patternIndex < patternLength) {
if (pattern[patternIndex] === "*") {
lastWildcard = patternIndex;
patternIndex++;
if (patternIndex === patternLength) {
return true;
}
while (namespace[namespaceIndex] !== pattern[patternIndex]) {
namespaceIndex++;
if (namespaceIndex === namespaceLength) {
return false;
}
}
lastWildcardNamespace = namespaceIndex;
namespaceIndex++;
patternIndex++;
continue;
} else if (pattern[patternIndex] === namespace[namespaceIndex]) {
patternIndex++;
namespaceIndex++;
} else if (lastWildcard >= 0) {
patternIndex = lastWildcard + 1;
namespaceIndex = lastWildcardNamespace + 1;
if (namespaceIndex === namespaceLength) {
return false;
}
while (namespace[namespaceIndex] !== pattern[patternIndex]) {
namespaceIndex++;
if (namespaceIndex === namespaceLength) {
return false;
}
}
lastWildcardNamespace = namespaceIndex;
namespaceIndex++;
patternIndex++;
continue;
} else {
return false;
}
}
const namespaceDone = namespaceIndex === namespace.length;
const patternDone = patternIndex === pattern.length;
const trailingWildCard = patternIndex === pattern.length - 1 && pattern[patternIndex] === "*";
return namespaceDone && (patternDone || trailingWildCard);
}
function disable() {
const result = enabledString || "";
enable("");
return result;
}
function createDebugger(namespace) {
const newDebugger = Object.assign(debug, {
enabled: enabled(namespace),
destroy,
log: debugObj.log,
namespace,
extend
});
function debug(...args) {
if (!newDebugger.enabled) {
return;
}
if (args.length > 0) {
args[0] = `${namespace} ${args[0]}`;
}
newDebugger.log(...args);
}
debuggers.push(newDebugger);
return newDebugger;
}
function destroy() {
const index = debuggers.indexOf(this);
if (index >= 0) {
debuggers.splice(index, 1);
return true;
}
return false;
}
function extend(namespace) {
const newDebugger = createDebugger(`${this.namespace}:${namespace}`);
newDebugger.log = this.log;
return newDebugger;
}
var debug_default = debugObj;
//# sourceMappingURL=debug.js.map