@socketsecurity/lib
Version:
Core utilities and infrastructure for Socket.dev security tools
173 lines (172 loc) • 5.01 kB
JavaScript
;
/* Socket Lib - Built with esbuild */
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 env_exports = {};
__export(env_exports, {
createEnvProxy: () => createEnvProxy,
envAsBoolean: () => envAsBoolean,
envAsNumber: () => envAsNumber,
envAsString: () => envAsString,
findCaseInsensitiveEnvKey: () => findCaseInsensitiveEnvKey
});
module.exports = __toCommonJS(env_exports);
const NumberCtor = Number;
const NumberIsFinite = Number.isFinite;
const NumberParseInt = Number.parseInt;
const StringCtor = String;
const caseInsensitiveKeys = /* @__PURE__ */ new Set([
"APPDATA",
"COMSPEC",
"HOME",
"LOCALAPPDATA",
"PATH",
"PATHEXT",
"PROGRAMFILES",
"SYSTEMROOT",
"TEMP",
"TMP",
"USERPROFILE",
"WINDIR"
]);
function createEnvProxy(base, overrides) {
return new Proxy(
{},
{
get(_target, prop) {
if (typeof prop !== "string") {
return void 0;
}
if (overrides && prop in overrides) {
return overrides[prop];
}
if (prop in base) {
return base[prop];
}
const upperProp = prop.toUpperCase();
if (caseInsensitiveKeys.has(upperProp)) {
if (overrides) {
const key2 = findCaseInsensitiveEnvKey(overrides, upperProp);
if (key2 !== void 0) {
return overrides[key2];
}
}
const key = findCaseInsensitiveEnvKey(base, upperProp);
if (key !== void 0) {
return base[key];
}
}
return void 0;
},
ownKeys(_target) {
const keys = /* @__PURE__ */ new Set([
...Object.keys(base),
...overrides ? Object.keys(overrides) : []
]);
return [...keys];
},
getOwnPropertyDescriptor(_target, prop) {
if (typeof prop !== "string") {
return void 0;
}
const value = this.get?.(_target, prop, _target);
return value !== void 0 ? {
enumerable: true,
configurable: true,
writable: true,
value
} : void 0;
},
has(_target, prop) {
if (typeof prop !== "string") {
return false;
}
if (overrides && prop in overrides) {
return true;
}
if (prop in base) {
return true;
}
const upperProp = prop.toUpperCase();
if (caseInsensitiveKeys.has(upperProp)) {
if (overrides && findCaseInsensitiveEnvKey(overrides, upperProp) !== void 0) {
return true;
}
if (findCaseInsensitiveEnvKey(base, upperProp) !== void 0) {
return true;
}
}
return false;
},
set(_target, prop, value) {
if (typeof prop === "string" && overrides) {
overrides[prop] = value;
return true;
}
return false;
}
}
);
}
// @__NO_SIDE_EFFECTS__
function envAsBoolean(value, defaultValue = false) {
if (typeof value === "string") {
const trimmed = value.trim();
return trimmed === "1" || trimmed.toLowerCase() === "true";
}
if (value === null || value === void 0) {
return !!defaultValue;
}
return !!value;
}
// @__NO_SIDE_EFFECTS__
function envAsNumber(value, defaultValue = 0) {
const numOrNaN = NumberParseInt(String(value), 10);
const numMayBeNegZero = NumberIsFinite(numOrNaN) ? numOrNaN : NumberCtor(defaultValue);
return numMayBeNegZero || 0;
}
// @__NO_SIDE_EFFECTS__
function envAsString(value, defaultValue = "") {
if (typeof value === "string") {
return value.trim();
}
if (value === null || value === void 0) {
return defaultValue === "" ? defaultValue : StringCtor(defaultValue).trim();
}
return StringCtor(value).trim();
}
function findCaseInsensitiveEnvKey(env, upperEnvVarName) {
const targetLength = upperEnvVarName.length;
for (const key of Object.keys(env)) {
if (key.length !== targetLength) {
continue;
}
if (key.toUpperCase() === upperEnvVarName) {
return key;
}
}
return void 0;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
createEnvProxy,
envAsBoolean,
envAsNumber,
envAsString,
findCaseInsensitiveEnvKey
});