UNPKG

@socketsecurity/lib

Version:

Core utilities and infrastructure for Socket.dev security tools

173 lines (172 loc) 5.01 kB
"use strict"; /* 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 });