varlock 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audit.command-LLD5UIAW.js +16 -0
- package/dist/audit.command-LLD5UIAW.js.map +1 -0
- package/dist/auto-load.js +6 -6
- package/dist/{chunk-QSYH5IDD.js → chunk-5DRCCFKV.js} +3 -3
- package/dist/{chunk-QSYH5IDD.js.map → chunk-5DRCCFKV.js.map} +1 -1
- package/dist/{chunk-E3F6QKDZ.js → chunk-C5LW5EET.js} +6 -6
- package/dist/{chunk-E3F6QKDZ.js.map → chunk-C5LW5EET.js.map} +1 -1
- package/dist/chunk-CESFJIM4.js +198 -0
- package/dist/chunk-CESFJIM4.js.map +1 -0
- package/dist/{chunk-5DUWGI2N.js → chunk-DIPEXEIL.js} +3 -3
- package/dist/{chunk-5DUWGI2N.js.map → chunk-DIPEXEIL.js.map} +1 -1
- package/dist/{chunk-SDN53OAC.js → chunk-F6ZYIWAR.js} +160 -72
- package/dist/chunk-F6ZYIWAR.js.map +1 -0
- package/dist/{chunk-2PFIYNFA.js → chunk-FA5SNEKN.js} +30 -13
- package/dist/chunk-FA5SNEKN.js.map +1 -0
- package/dist/{chunk-XWYFSG46.js → chunk-GKN3UJNE.js} +651 -821
- package/dist/chunk-GKN3UJNE.js.map +1 -0
- package/dist/{chunk-TQXYC3G3.js → chunk-HH647LSU.js} +5 -5
- package/dist/{chunk-TQXYC3G3.js.map → chunk-HH647LSU.js.map} +1 -1
- package/dist/{chunk-6RF54KKR.js → chunk-HMWAOBZR.js} +78 -24
- package/dist/chunk-HMWAOBZR.js.map +1 -0
- package/dist/{chunk-H6NILU2I.js → chunk-INGOLNLE.js} +4 -4
- package/dist/{chunk-H6NILU2I.js.map → chunk-INGOLNLE.js.map} +1 -1
- package/dist/{chunk-JIUWL2NT.js → chunk-IO2OGZQU.js} +9 -9
- package/dist/chunk-IO2OGZQU.js.map +1 -0
- package/dist/chunk-IRXBCLL2.js +2045 -0
- package/dist/chunk-IRXBCLL2.js.map +1 -0
- package/dist/{chunk-QP7TS4SU.js → chunk-JOGGSYT2.js} +6 -6
- package/dist/chunk-JOGGSYT2.js.map +1 -0
- package/dist/{chunk-F6RTQ5QX.js → chunk-KFALDUEO.js} +3 -3
- package/dist/{chunk-F6RTQ5QX.js.map → chunk-KFALDUEO.js.map} +1 -1
- package/dist/{chunk-VN4LKYXR.js → chunk-KI5QLKPU.js} +6 -6
- package/dist/{chunk-VN4LKYXR.js.map → chunk-KI5QLKPU.js.map} +1 -1
- package/dist/{chunk-JUPAI2X4.js → chunk-M6QE3D2O.js} +7 -7
- package/dist/{chunk-JUPAI2X4.js.map → chunk-M6QE3D2O.js.map} +1 -1
- package/dist/{chunk-CDLU5P62.js → chunk-MPHVA4WC.js} +3 -3
- package/dist/{chunk-CDLU5P62.js.map → chunk-MPHVA4WC.js.map} +1 -1
- package/dist/{chunk-U2O3AUM2.js → chunk-NW4KR67N.js} +8 -8
- package/dist/{chunk-U2O3AUM2.js.map → chunk-NW4KR67N.js.map} +1 -1
- package/dist/{chunk-S5O4AAVX.js → chunk-OGGTDFVX.js} +8 -8
- package/dist/{chunk-S5O4AAVX.js.map → chunk-OGGTDFVX.js.map} +1 -1
- package/dist/chunk-P33JXOU6.js +523 -0
- package/dist/chunk-P33JXOU6.js.map +1 -0
- package/dist/{chunk-R73FENLU.js → chunk-QDEAHBCB.js} +3 -3
- package/dist/{chunk-R73FENLU.js.map → chunk-QDEAHBCB.js.map} +1 -1
- package/dist/{chunk-RBFS2QGC.js → chunk-RQZZDYWL.js} +8 -8
- package/dist/{chunk-RBFS2QGC.js.map → chunk-RQZZDYWL.js.map} +1 -1
- package/dist/{chunk-MGWUDHT5.js → chunk-UUJK65RS.js} +11 -3
- package/dist/chunk-UUJK65RS.js.map +1 -0
- package/dist/{chunk-A6THM3IR.js → chunk-WJLMLKSG.js} +5 -5
- package/dist/{chunk-A6THM3IR.js.map → chunk-WJLMLKSG.js.map} +1 -1
- package/dist/{chunk-YO6WHPM4.js → chunk-WTBUNHUJ.js} +5 -5
- package/dist/{chunk-YO6WHPM4.js.map → chunk-WTBUNHUJ.js.map} +1 -1
- package/dist/chunk-XUY3HAO2.js +171 -0
- package/dist/chunk-XUY3HAO2.js.map +1 -0
- package/dist/{chunk-ZJNDICC4.js → chunk-XXSPHSF7.js} +6 -6
- package/dist/{chunk-ZJNDICC4.js.map → chunk-XXSPHSF7.js.map} +1 -1
- package/dist/{chunk-GURKQO4J.js → chunk-YWTIKDGU.js} +7 -2
- package/dist/chunk-YWTIKDGU.js.map +1 -0
- package/dist/{chunk-F5H5MJ6U.js → chunk-ZTFQ7ZVH.js} +2 -5
- package/dist/chunk-ZTFQ7ZVH.js.map +1 -0
- package/dist/cli/cli-executable.js +54 -51
- package/dist/cli/cli-executable.js.map +1 -1
- package/dist/config-item-SQFJ2BJ2.js +7 -0
- package/dist/{config-item-6LTV4PNH.js.map → config-item-SQFJ2BJ2.js.map} +1 -1
- package/dist/dist-ZBZ52DPW.js +4 -0
- package/dist/{dist-WGIHRGBZ.js.map → dist-ZBZ52DPW.js.map} +1 -1
- package/dist/dotenv-compat.js +6 -6
- package/dist/encrypt.command-WISNYCTG.js +14 -0
- package/dist/{encrypt.command-F2OTB6HD.js.map → encrypt.command-WISNYCTG.js.map} +1 -1
- package/dist/{env-graph-iNQyTcya.d.ts → env-graph-DImkUkjl.d.ts} +30 -19
- package/dist/explain.command-THO6CRHD.js +15 -0
- package/dist/{explain.command-TEIPRC7Q.js.map → explain.command-THO6CRHD.js.map} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +14 -15
- package/dist/index.js.map +1 -1
- package/dist/init.command-3EDACW36.js +14 -0
- package/dist/{init.command-5LP3UFKD.js.map → init.command-3EDACW36.js.map} +1 -1
- package/dist/install-plugin.command-MXBZTBTE.js +13 -0
- package/dist/{install-plugin.command-X7RSLPUJ.js.map → install-plugin.command-MXBZTBTE.js.map} +1 -1
- package/dist/lib/exec-sync-varlock.js +1 -1
- package/dist/load.command-XRABTXAE.js +15 -0
- package/dist/{load.command-7SQRDQ3E.js.map → load.command-XRABTXAE.js.map} +1 -1
- package/dist/lock.command-O5MPBQ2I.js +7 -0
- package/dist/{lock.command-4LTGMJA3.js.map → lock.command-O5MPBQ2I.js.map} +1 -1
- package/dist/plugin-lib.d.ts +2 -2
- package/dist/plugin-lib.js +2 -2
- package/dist/printenv.command-DLCI4IPZ.js +15 -0
- package/dist/{printenv.command-ON7RMFEU.js.map → printenv.command-DLCI4IPZ.js.map} +1 -1
- package/dist/reveal.command-6BTK3FJZ.js +15 -0
- package/dist/{reveal.command-BW6XYVXH.js.map → reveal.command-6BTK3FJZ.js.map} +1 -1
- package/dist/run.command-5CIHZECD.js +16 -0
- package/dist/{run.command-5QADABYL.js.map → run.command-5CIHZECD.js.map} +1 -1
- package/dist/runtime/env.d.ts +1 -1
- package/dist/runtime/env.js +1 -1
- package/dist/runtime/init-edge.cjs +9 -1
- package/dist/runtime/init-server.cjs +9 -1
- package/dist/runtime/patch-console.js +2 -2
- package/dist/runtime/patch-response.js +2 -2
- package/dist/runtime/patch-server-response.js +2 -2
- package/dist/scan.command-PW3OOLQY.js +16 -0
- package/dist/{scan.command-ZVW3XAUG.js.map → scan.command-PW3OOLQY.js.map} +1 -1
- package/dist/telemetry.command-TZDNG2WR.js +13 -0
- package/dist/{telemetry.command-PY6E4QSH.js.map → telemetry.command-TZDNG2WR.js.map} +1 -1
- package/dist/typegen.command-QD26Q3MP.js +14 -0
- package/dist/{typegen.command-KZ4O5IKQ.js.map → typegen.command-QD26Q3MP.js.map} +1 -1
- package/native-bins/darwin/VarlockEnclave.app/Contents/CodeResources +0 -0
- package/native-bins/darwin/VarlockEnclave.app/Contents/MacOS/varlock-local-encrypt +0 -0
- package/native-bins/win32-x64/varlock-local-encrypt.exe +0 -0
- package/package.json +2 -2
- package/dist/chunk-2PFIYNFA.js.map +0 -1
- package/dist/chunk-6RF54KKR.js.map +0 -1
- package/dist/chunk-7GFD2ATN.js +0 -136
- package/dist/chunk-7GFD2ATN.js.map +0 -1
- package/dist/chunk-F5H5MJ6U.js.map +0 -1
- package/dist/chunk-GURKQO4J.js.map +0 -1
- package/dist/chunk-HDKXXS2X.js +0 -1959
- package/dist/chunk-HDKXXS2X.js.map +0 -1
- package/dist/chunk-JIUWL2NT.js.map +0 -1
- package/dist/chunk-MGWUDHT5.js.map +0 -1
- package/dist/chunk-QP7TS4SU.js.map +0 -1
- package/dist/chunk-SDN53OAC.js.map +0 -1
- package/dist/chunk-XWYFSG46.js.map +0 -1
- package/dist/config-item-6LTV4PNH.js +0 -7
- package/dist/dist-WGIHRGBZ.js +0 -4
- package/dist/encrypt.command-F2OTB6HD.js +0 -14
- package/dist/explain.command-TEIPRC7Q.js +0 -15
- package/dist/init.command-5LP3UFKD.js +0 -13
- package/dist/install-plugin.command-X7RSLPUJ.js +0 -13
- package/dist/load.command-7SQRDQ3E.js +0 -15
- package/dist/lock.command-4LTGMJA3.js +0 -7
- package/dist/printenv.command-ON7RMFEU.js +0 -15
- package/dist/reveal.command-BW6XYVXH.js +0 -15
- package/dist/run.command-5QADABYL.js +0 -16
- package/dist/scan.command-ZVW3XAUG.js +0 -16
- package/dist/telemetry.command-PY6E4QSH.js +0 -13
- package/dist/typegen.command-KZ4O5IKQ.js +0 -15
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.bun/@sindresorhus+is@7.2.0/node_modules/@sindresorhus/is/distribution/utilities.js","../../../node_modules/.bun/@sindresorhus+is@7.2.0/node_modules/@sindresorhus/is/distribution/index.js","../../utils/src/my-dash.ts","../src/env-graph/lib/errors.ts","../src/lib/debug.ts","../src/plugin-context.ts"],"names":["_"],"mappings":"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","file":"chunk-2PFIYNFA.js","sourcesContent":["export function keysOf(value) {\n return Object.keys(value);\n}\n","import { keysOf } from './utilities.js';\nconst typedArrayTypeNames = [\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array',\n];\nfunction isTypedArrayName(name) {\n return typedArrayTypeNames.includes(name);\n}\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Blob',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'WeakRef',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'FormData',\n 'URLSearchParams',\n 'HTMLElement',\n 'NaN',\n ...typedArrayTypeNames,\n];\nfunction isObjectTypeName(name) {\n return objectTypeNames.includes(name);\n}\nconst primitiveTypeNames = [\n 'null',\n 'undefined',\n 'string',\n 'number',\n 'bigint',\n 'boolean',\n 'symbol',\n];\nfunction isPrimitiveTypeName(name) {\n return primitiveTypeNames.includes(name);\n}\nconst assertionTypeDescriptions = [\n 'positive number',\n 'negative number',\n 'Class',\n 'string with a number',\n 'null or undefined',\n 'Iterable',\n 'AsyncIterable',\n 'native Promise',\n 'EnumCase',\n 'string with a URL',\n 'truthy',\n 'falsy',\n 'primitive',\n 'integer',\n 'plain object',\n 'TypedArray',\n 'array-like',\n 'tuple-like',\n 'Node.js Stream',\n 'infinite number',\n 'empty array',\n 'non-empty array',\n 'empty string',\n 'empty string or whitespace',\n 'non-empty string',\n 'non-empty string and not whitespace',\n 'empty object',\n 'non-empty object',\n 'empty set',\n 'non-empty set',\n 'empty map',\n 'non-empty map',\n 'PropertyKey',\n 'even integer',\n 'odd integer',\n 'T',\n 'in range',\n 'predicate returns truthy for any value',\n 'predicate returns truthy for all values',\n 'valid Date',\n 'valid length',\n 'whitespace string',\n ...objectTypeNames,\n ...primitiveTypeNames,\n];\nconst getObjectType = (value) => {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n if (/HTML\\w+Element/.test(objectTypeName) && isHtmlElement(value)) {\n return 'HTMLElement';\n }\n if (isObjectTypeName(objectTypeName)) {\n return objectTypeName;\n }\n return undefined;\n};\nfunction detect(value) {\n if (value === null) {\n return 'null';\n }\n switch (typeof value) {\n case 'undefined': {\n return 'undefined';\n }\n case 'string': {\n return 'string';\n }\n case 'number': {\n return Number.isNaN(value) ? 'NaN' : 'number';\n }\n case 'boolean': {\n return 'boolean';\n }\n case 'function': {\n return 'Function';\n }\n case 'bigint': {\n return 'bigint';\n }\n case 'symbol': {\n return 'symbol';\n }\n default:\n }\n if (isObservable(value)) {\n return 'Observable';\n }\n if (isArray(value)) {\n return 'Array';\n }\n if (isBuffer(value)) {\n return 'Buffer';\n }\n const tagType = getObjectType(value);\n if (tagType && tagType !== 'Object') {\n return tagType;\n }\n if (hasPromiseApi(value)) {\n return 'Promise';\n }\n if (value instanceof String || value instanceof Boolean || value instanceof Number) {\n throw new TypeError('Please don\\'t use object wrappers for primitive types');\n }\n return 'Object';\n}\nfunction hasPromiseApi(value) {\n return isFunction(value?.then) && isFunction(value?.catch);\n}\nconst is = Object.assign(detect, {\n all: isAll,\n any: isAny,\n array: isArray,\n arrayBuffer: isArrayBuffer,\n arrayLike: isArrayLike,\n asyncFunction: isAsyncFunction,\n asyncGenerator: isAsyncGenerator,\n asyncGeneratorFunction: isAsyncGeneratorFunction,\n asyncIterable: isAsyncIterable,\n bigint: isBigint,\n bigInt64Array: isBigInt64Array,\n bigUint64Array: isBigUint64Array,\n blob: isBlob,\n boolean: isBoolean,\n boundFunction: isBoundFunction,\n buffer: isBuffer,\n class: isClass,\n dataView: isDataView,\n date: isDate,\n detect,\n directInstanceOf: isDirectInstanceOf,\n emptyArray: isEmptyArray,\n emptyMap: isEmptyMap,\n emptyObject: isEmptyObject,\n emptySet: isEmptySet,\n emptyString: isEmptyString,\n emptyStringOrWhitespace: isEmptyStringOrWhitespace,\n enumCase: isEnumCase,\n error: isError,\n evenInteger: isEvenInteger,\n falsy: isFalsy,\n float32Array: isFloat32Array,\n float64Array: isFloat64Array,\n formData: isFormData,\n function: isFunction,\n generator: isGenerator,\n generatorFunction: isGeneratorFunction,\n htmlElement: isHtmlElement,\n infinite: isInfinite,\n inRange: isInRange,\n int16Array: isInt16Array,\n int32Array: isInt32Array,\n int8Array: isInt8Array,\n integer: isInteger,\n iterable: isIterable,\n map: isMap,\n nan: isNan,\n nativePromise: isNativePromise,\n negativeNumber: isNegativeNumber,\n nodeStream: isNodeStream,\n nonEmptyArray: isNonEmptyArray,\n nonEmptyMap: isNonEmptyMap,\n nonEmptyObject: isNonEmptyObject,\n nonEmptySet: isNonEmptySet,\n nonEmptyString: isNonEmptyString,\n nonEmptyStringAndNotWhitespace: isNonEmptyStringAndNotWhitespace,\n null: isNull,\n nullOrUndefined: isNullOrUndefined,\n number: isNumber,\n numericString: isNumericString,\n object: isObject,\n observable: isObservable,\n oddInteger: isOddInteger,\n plainObject: isPlainObject,\n positiveNumber: isPositiveNumber,\n primitive: isPrimitive,\n promise: isPromise,\n propertyKey: isPropertyKey,\n regExp: isRegExp,\n safeInteger: isSafeInteger,\n set: isSet,\n sharedArrayBuffer: isSharedArrayBuffer,\n string: isString,\n symbol: isSymbol,\n truthy: isTruthy,\n tupleLike: isTupleLike,\n typedArray: isTypedArray,\n uint16Array: isUint16Array,\n uint32Array: isUint32Array,\n uint8Array: isUint8Array,\n uint8ClampedArray: isUint8ClampedArray,\n undefined: isUndefined,\n urlInstance: isUrlInstance,\n urlSearchParams: isUrlSearchParams,\n urlString: isUrlString,\n optional: isOptional,\n validDate: isValidDate,\n validLength: isValidLength,\n weakMap: isWeakMap,\n weakRef: isWeakRef,\n weakSet: isWeakSet,\n whitespaceString: isWhitespaceString,\n});\nfunction isAbsoluteModule2(remainder) {\n return (value) => isInteger(value) && Math.abs(value % 2) === remainder;\n}\nfunction validatePredicateArray(predicateArray, allowEmpty) {\n if (predicateArray.length === 0) {\n if (allowEmpty) {\n // Next major release: throw for empty predicate arrays to avoid vacuous results.\n // throw new TypeError('Invalid predicate array');\n }\n else {\n throw new TypeError('Invalid predicate array');\n }\n return;\n }\n for (const predicate of predicateArray) {\n if (!isFunction(predicate)) {\n throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n }\n }\n}\nexport function isAll(predicate, ...values) {\n if (Array.isArray(predicate)) {\n const predicateArray = predicate;\n validatePredicateArray(predicateArray, values.length === 0);\n const combinedPredicate = (value) => predicateArray.every(singlePredicate => singlePredicate(value));\n if (values.length === 0) {\n return combinedPredicate;\n }\n return predicateOnArray(Array.prototype.every, combinedPredicate, values);\n }\n return predicateOnArray(Array.prototype.every, predicate, values);\n}\nexport function isAny(predicate, ...values) {\n if (Array.isArray(predicate)) {\n const predicateArray = predicate;\n validatePredicateArray(predicateArray, values.length === 0);\n const combinedPredicate = (value) => predicateArray.some(singlePredicate => singlePredicate(value));\n if (values.length === 0) {\n return combinedPredicate;\n }\n return predicateOnArray(Array.prototype.some, combinedPredicate, values);\n }\n return predicateOnArray(Array.prototype.some, predicate, values);\n}\nexport function isOptional(value, predicate) {\n return isUndefined(value) || predicate(value);\n}\nexport function isArray(value, assertion) {\n if (!Array.isArray(value)) {\n return false;\n }\n if (!isFunction(assertion)) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return value.every(element => assertion(element));\n}\nexport function isArrayBuffer(value) {\n return getObjectType(value) === 'ArrayBuffer';\n}\nexport function isArrayLike(value) {\n return !isNullOrUndefined(value) && !isFunction(value) && isValidLength(value.length);\n}\nexport function isAsyncFunction(value) {\n return getObjectType(value) === 'AsyncFunction';\n}\nexport function isAsyncGenerator(value) {\n return isAsyncIterable(value) && isFunction(value.next) && isFunction(value.throw);\n}\nexport function isAsyncGeneratorFunction(value) {\n return getObjectType(value) === 'AsyncGeneratorFunction';\n}\nexport function isAsyncIterable(value) {\n return isFunction(value?.[Symbol.asyncIterator]);\n}\nexport function isBigint(value) {\n return typeof value === 'bigint';\n}\nexport function isBigInt64Array(value) {\n return getObjectType(value) === 'BigInt64Array';\n}\nexport function isBigUint64Array(value) {\n return getObjectType(value) === 'BigUint64Array';\n}\nexport function isBlob(value) {\n return getObjectType(value) === 'Blob';\n}\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isBoundFunction(value) {\n return isFunction(value) && !Object.hasOwn(value, 'prototype');\n}\n/**\nNote: [Prefer using `Uint8Array` instead of `Buffer`.](https://sindresorhus.com/blog/goodbye-nodejs-buffer)\n*/\nexport function isBuffer(value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return value?.constructor?.isBuffer?.(value) ?? false;\n}\nexport function isClass(value) {\n return isFunction(value) && /^class(\\s+|{)/.test(value.toString());\n}\nexport function isDataView(value) {\n return getObjectType(value) === 'DataView';\n}\nexport function isDate(value) {\n return getObjectType(value) === 'Date';\n}\nexport function isDirectInstanceOf(instance, class_) {\n if (instance === undefined || instance === null) {\n return false;\n }\n return Object.getPrototypeOf(instance) === class_.prototype;\n}\nexport function isEmptyArray(value) {\n return isArray(value) && value.length === 0;\n}\nexport function isEmptyMap(value) {\n return isMap(value) && value.size === 0;\n}\nexport function isEmptyObject(value) {\n return isObject(value) && !isMap(value) && !isSet(value) && Object.keys(value).length === 0;\n}\nexport function isEmptySet(value) {\n return isSet(value) && value.size === 0;\n}\nexport function isEmptyString(value) {\n return isString(value) && value.length === 0;\n}\nexport function isEmptyStringOrWhitespace(value) {\n return isEmptyString(value) || isWhitespaceString(value);\n}\nexport function isEnumCase(value, targetEnum) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return Object.values(targetEnum).includes(value);\n}\nexport function isError(value) {\n // TODO: Use `Error.isError` when targeting Node.js 24.`\n return getObjectType(value) === 'Error';\n}\nexport function isEvenInteger(value) {\n return isAbsoluteModule2(0)(value);\n}\n// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`\nexport function isFalsy(value) {\n return !value;\n}\n// TODO: Support detecting Float16Array when targeting Node.js 24.\nexport function isFloat32Array(value) {\n return getObjectType(value) === 'Float32Array';\n}\nexport function isFloat64Array(value) {\n return getObjectType(value) === 'Float64Array';\n}\nexport function isFormData(value) {\n return getObjectType(value) === 'FormData';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isGenerator(value) {\n return isIterable(value) && isFunction(value?.next) && isFunction(value?.throw);\n}\nexport function isGeneratorFunction(value) {\n return getObjectType(value) === 'GeneratorFunction';\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst NODE_TYPE_ELEMENT = 1;\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst DOM_PROPERTIES_TO_CHECK = [\n 'innerHTML',\n 'ownerDocument',\n 'style',\n 'attributes',\n 'nodeValue',\n];\nexport function isHtmlElement(value) {\n return isObject(value)\n && value.nodeType === NODE_TYPE_ELEMENT\n && isString(value.nodeName)\n && !isPlainObject(value)\n && DOM_PROPERTIES_TO_CHECK.every(property => property in value);\n}\nexport function isInfinite(value) {\n return value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;\n}\nexport function isInRange(value, range) {\n if (isNumber(range)) {\n return value >= Math.min(0, range) && value <= Math.max(range, 0);\n }\n if (isArray(range) && range.length === 2) {\n return value >= Math.min(...range) && value <= Math.max(...range);\n }\n throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);\n}\nexport function isInt16Array(value) {\n return getObjectType(value) === 'Int16Array';\n}\nexport function isInt32Array(value) {\n return getObjectType(value) === 'Int32Array';\n}\nexport function isInt8Array(value) {\n return getObjectType(value) === 'Int8Array';\n}\nexport function isInteger(value) {\n return Number.isInteger(value);\n}\nexport function isIterable(value) {\n return isFunction(value?.[Symbol.iterator]);\n}\nexport function isMap(value) {\n return getObjectType(value) === 'Map';\n}\nexport function isNan(value) {\n return Number.isNaN(value);\n}\nexport function isNativePromise(value) {\n return getObjectType(value) === 'Promise';\n}\nexport function isNegativeNumber(value) {\n return isNumber(value) && value < 0;\n}\nexport function isNodeStream(value) {\n return isObject(value) && isFunction(value.pipe) && !isObservable(value);\n}\nexport function isNonEmptyArray(value) {\n return isArray(value) && value.length > 0;\n}\nexport function isNonEmptyMap(value) {\n return isMap(value) && value.size > 0;\n}\n// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:\n// - https://github.com/Microsoft/TypeScript/pull/29317\nexport function isNonEmptyObject(value) {\n return isObject(value) && !isMap(value) && !isSet(value) && Object.keys(value).length > 0;\n}\nexport function isNonEmptySet(value) {\n return isSet(value) && value.size > 0;\n}\n// TODO: Use `not ''` when the `not` operator is available.\nexport function isNonEmptyString(value) {\n return isString(value) && value.length > 0;\n}\n// TODO: Use `not ''` when the `not` operator is available.\nexport function isNonEmptyStringAndNotWhitespace(value) {\n return isString(value) && !isEmptyStringOrWhitespace(value);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNull(value) {\n return value === null;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNullOrUndefined(value) {\n return isNull(value) || isUndefined(value);\n}\nexport function isNumber(value) {\n return typeof value === 'number' && !Number.isNaN(value);\n}\nexport function isNumericString(value) {\n return isString(value) && !isEmptyStringOrWhitespace(value) && !Number.isNaN(Number(value));\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isObject(value) {\n return !isNull(value) && (typeof value === 'object' || isFunction(value));\n}\nexport function isObservable(value) {\n if (!value) {\n return false;\n }\n // eslint-disable-next-line no-use-extend-native/no-use-extend-native, @typescript-eslint/no-unsafe-call\n if (Symbol.observable !== undefined && value === value[Symbol.observable]?.()) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (value === value['@@observable']?.()) {\n return true;\n }\n return false;\n}\nexport function isOddInteger(value) {\n return isAbsoluteModule2(1)(value);\n}\nexport function isPlainObject(value) {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const prototype = Object.getPrototypeOf(value);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\nexport function isPositiveNumber(value) {\n return isNumber(value) && value > 0;\n}\nexport function isPrimitive(value) {\n return isNull(value) || isPrimitiveTypeName(typeof value);\n}\nexport function isPromise(value) {\n return isNativePromise(value) || hasPromiseApi(value);\n}\n// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)\nexport function isPropertyKey(value) {\n return isAny([isString, isNumber, isSymbol], value);\n}\nexport function isRegExp(value) {\n return getObjectType(value) === 'RegExp';\n}\nexport function isSafeInteger(value) {\n return Number.isSafeInteger(value);\n}\nexport function isSet(value) {\n return getObjectType(value) === 'Set';\n}\nexport function isSharedArrayBuffer(value) {\n return getObjectType(value) === 'SharedArrayBuffer';\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isSymbol(value) {\n return typeof value === 'symbol';\n}\n// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`\n// eslint-disable-next-line unicorn/prefer-native-coercion-functions\nexport function isTruthy(value) {\n return Boolean(value);\n}\nexport function isTupleLike(value, guards) {\n if (isArray(guards) && isArray(value) && guards.length === value.length) {\n return guards.every((guard, index) => guard(value[index]));\n }\n return false;\n}\nexport function isTypedArray(value) {\n return isTypedArrayName(getObjectType(value));\n}\nexport function isUint16Array(value) {\n return getObjectType(value) === 'Uint16Array';\n}\nexport function isUint32Array(value) {\n return getObjectType(value) === 'Uint32Array';\n}\nexport function isUint8Array(value) {\n return getObjectType(value) === 'Uint8Array';\n}\nexport function isUint8ClampedArray(value) {\n return getObjectType(value) === 'Uint8ClampedArray';\n}\nexport function isUndefined(value) {\n return value === undefined;\n}\nexport function isUrlInstance(value) {\n return getObjectType(value) === 'URL';\n}\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport function isUrlSearchParams(value) {\n return getObjectType(value) === 'URLSearchParams';\n}\nexport function isUrlString(value) {\n if (!isString(value)) {\n return false;\n }\n try {\n new URL(value); // eslint-disable-line no-new\n return true;\n }\n catch {\n return false;\n }\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNan(Number(value));\n}\nexport function isValidLength(value) {\n return isSafeInteger(value) && value >= 0;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isWeakMap(value) {\n return getObjectType(value) === 'WeakMap';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types, unicorn/prevent-abbreviations\nexport function isWeakRef(value) {\n return getObjectType(value) === 'WeakRef';\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isWeakSet(value) {\n return getObjectType(value) === 'WeakSet';\n}\nexport function isWhitespaceString(value) {\n return isString(value) && /^\\s+$/.test(value);\n}\nfunction predicateOnArray(method, predicate, values) {\n if (!isFunction(predicate)) {\n throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n }\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n return method.call(values, predicate);\n}\nfunction typeErrorMessage(description, value) {\n return `Expected value which is \\`${description}\\`, received value of type \\`${is(value)}\\`.`;\n}\nfunction unique(values) {\n // eslint-disable-next-line unicorn/prefer-spread\n return Array.from(new Set(values));\n}\nconst andFormatter = new Intl.ListFormat('en', { style: 'long', type: 'conjunction' });\nconst orFormatter = new Intl.ListFormat('en', { style: 'long', type: 'disjunction' });\nfunction typeErrorMessageMultipleValues(expectedType, values) {\n const uniqueExpectedTypes = unique((isArray(expectedType) ? expectedType : [expectedType]).map(value => `\\`${value}\\``));\n const uniqueValueTypes = unique(values.map(value => `\\`${is(value)}\\``));\n return `Expected values which are ${orFormatter.format(uniqueExpectedTypes)}. Received values of type${uniqueValueTypes.length > 1 ? 's' : ''} ${andFormatter.format(uniqueValueTypes)}.`;\n}\nexport const assert = {\n all: assertAll,\n any: assertAny,\n optional: assertOptional,\n array: assertArray,\n arrayBuffer: assertArrayBuffer,\n arrayLike: assertArrayLike,\n asyncFunction: assertAsyncFunction,\n asyncGenerator: assertAsyncGenerator,\n asyncGeneratorFunction: assertAsyncGeneratorFunction,\n asyncIterable: assertAsyncIterable,\n bigint: assertBigint,\n bigInt64Array: assertBigInt64Array,\n bigUint64Array: assertBigUint64Array,\n blob: assertBlob,\n boolean: assertBoolean,\n boundFunction: assertBoundFunction,\n buffer: assertBuffer,\n class: assertClass,\n dataView: assertDataView,\n date: assertDate,\n directInstanceOf: assertDirectInstanceOf,\n emptyArray: assertEmptyArray,\n emptyMap: assertEmptyMap,\n emptyObject: assertEmptyObject,\n emptySet: assertEmptySet,\n emptyString: assertEmptyString,\n emptyStringOrWhitespace: assertEmptyStringOrWhitespace,\n enumCase: assertEnumCase,\n error: assertError,\n evenInteger: assertEvenInteger,\n falsy: assertFalsy,\n float32Array: assertFloat32Array,\n float64Array: assertFloat64Array,\n formData: assertFormData,\n function: assertFunction,\n generator: assertGenerator,\n generatorFunction: assertGeneratorFunction,\n htmlElement: assertHtmlElement,\n infinite: assertInfinite,\n inRange: assertInRange,\n int16Array: assertInt16Array,\n int32Array: assertInt32Array,\n int8Array: assertInt8Array,\n integer: assertInteger,\n iterable: assertIterable,\n map: assertMap,\n nan: assertNan,\n nativePromise: assertNativePromise,\n negativeNumber: assertNegativeNumber,\n nodeStream: assertNodeStream,\n nonEmptyArray: assertNonEmptyArray,\n nonEmptyMap: assertNonEmptyMap,\n nonEmptyObject: assertNonEmptyObject,\n nonEmptySet: assertNonEmptySet,\n nonEmptyString: assertNonEmptyString,\n nonEmptyStringAndNotWhitespace: assertNonEmptyStringAndNotWhitespace,\n null: assertNull,\n nullOrUndefined: assertNullOrUndefined,\n number: assertNumber,\n numericString: assertNumericString,\n object: assertObject,\n observable: assertObservable,\n oddInteger: assertOddInteger,\n plainObject: assertPlainObject,\n positiveNumber: assertPositiveNumber,\n primitive: assertPrimitive,\n promise: assertPromise,\n propertyKey: assertPropertyKey,\n regExp: assertRegExp,\n safeInteger: assertSafeInteger,\n set: assertSet,\n sharedArrayBuffer: assertSharedArrayBuffer,\n string: assertString,\n symbol: assertSymbol,\n truthy: assertTruthy,\n tupleLike: assertTupleLike,\n typedArray: assertTypedArray,\n uint16Array: assertUint16Array,\n uint32Array: assertUint32Array,\n uint8Array: assertUint8Array,\n uint8ClampedArray: assertUint8ClampedArray,\n undefined: assertUndefined,\n urlInstance: assertUrlInstance,\n urlSearchParams: assertUrlSearchParams,\n urlString: assertUrlString,\n validDate: assertValidDate,\n validLength: assertValidLength,\n weakMap: assertWeakMap,\n weakRef: assertWeakRef,\n weakSet: assertWeakSet,\n whitespaceString: assertWhitespaceString,\n};\nconst methodTypeMap = {\n isArray: 'Array',\n isArrayBuffer: 'ArrayBuffer',\n isArrayLike: 'array-like',\n isAsyncFunction: 'AsyncFunction',\n isAsyncGenerator: 'AsyncGenerator',\n isAsyncGeneratorFunction: 'AsyncGeneratorFunction',\n isAsyncIterable: 'AsyncIterable',\n isBigint: 'bigint',\n isBigInt64Array: 'BigInt64Array',\n isBigUint64Array: 'BigUint64Array',\n isBlob: 'Blob',\n isBoolean: 'boolean',\n isBoundFunction: 'Function',\n isBuffer: 'Buffer',\n isClass: 'Class',\n isDataView: 'DataView',\n isDate: 'Date',\n isDirectInstanceOf: 'T',\n isEmptyArray: 'empty array',\n isEmptyMap: 'empty map',\n isEmptyObject: 'empty object',\n isEmptySet: 'empty set',\n isEmptyString: 'empty string',\n isEmptyStringOrWhitespace: 'empty string or whitespace',\n isEnumCase: 'EnumCase',\n isError: 'Error',\n isEvenInteger: 'even integer',\n isFalsy: 'falsy',\n isFloat32Array: 'Float32Array',\n isFloat64Array: 'Float64Array',\n isFormData: 'FormData',\n isFunction: 'Function',\n isGenerator: 'Generator',\n isGeneratorFunction: 'GeneratorFunction',\n isHtmlElement: 'HTMLElement',\n isInfinite: 'infinite number',\n isInRange: 'in range',\n isInt16Array: 'Int16Array',\n isInt32Array: 'Int32Array',\n isInt8Array: 'Int8Array',\n isInteger: 'integer',\n isIterable: 'Iterable',\n isMap: 'Map',\n isNan: 'NaN',\n isNativePromise: 'native Promise',\n isNegativeNumber: 'negative number',\n isNodeStream: 'Node.js Stream',\n isNonEmptyArray: 'non-empty array',\n isNonEmptyMap: 'non-empty map',\n isNonEmptyObject: 'non-empty object',\n isNonEmptySet: 'non-empty set',\n isNonEmptyString: 'non-empty string',\n isNonEmptyStringAndNotWhitespace: 'non-empty string and not whitespace',\n isNull: 'null',\n isNullOrUndefined: 'null or undefined',\n isNumber: 'number',\n isNumericString: 'string with a number',\n isObject: 'Object',\n isObservable: 'Observable',\n isOddInteger: 'odd integer',\n isPlainObject: 'plain object',\n isPositiveNumber: 'positive number',\n isPrimitive: 'primitive',\n isPromise: 'Promise',\n isPropertyKey: 'PropertyKey',\n isRegExp: 'RegExp',\n isSafeInteger: 'integer',\n isSet: 'Set',\n isSharedArrayBuffer: 'SharedArrayBuffer',\n isString: 'string',\n isSymbol: 'symbol',\n isTruthy: 'truthy',\n isTupleLike: 'tuple-like',\n isTypedArray: 'TypedArray',\n isUint16Array: 'Uint16Array',\n isUint32Array: 'Uint32Array',\n isUint8Array: 'Uint8Array',\n isUint8ClampedArray: 'Uint8ClampedArray',\n isUndefined: 'undefined',\n isUrlInstance: 'URL',\n isUrlSearchParams: 'URLSearchParams',\n isUrlString: 'string with a URL',\n isValidDate: 'valid Date',\n isValidLength: 'valid length',\n isWeakMap: 'WeakMap',\n isWeakRef: 'WeakRef',\n isWeakSet: 'WeakSet',\n isWhitespaceString: 'whitespace string',\n};\nconst isMethodNames = keysOf(methodTypeMap);\nfunction isIsMethodName(value) {\n return isMethodNames.includes(value);\n}\nexport function assertAll(predicate, ...values) {\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n if (!isAll(predicate, ...values)) {\n const predicateFunction = predicate;\n const expectedType = !Array.isArray(predicate) && isIsMethodName(predicateFunction.name) ? methodTypeMap[predicateFunction.name] : 'predicate returns truthy for all values';\n throw new TypeError(typeErrorMessageMultipleValues(expectedType, values));\n }\n}\nexport function assertAny(predicate, ...values) {\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n if (!isAny(predicate, ...values)) {\n const predicates = Array.isArray(predicate) ? predicate : [predicate];\n const expectedTypes = predicates.map(singlePredicate => isIsMethodName(singlePredicate.name) ? methodTypeMap[singlePredicate.name] : 'predicate returns truthy for any value');\n throw new TypeError(typeErrorMessageMultipleValues(expectedTypes, values));\n }\n}\nexport function assertOptional(value, assertion, message) {\n if (!isUndefined(value)) {\n assertion(value, message);\n }\n}\nexport function assertArray(value, assertion, message) {\n if (!isArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('Array', value));\n }\n if (assertion) {\n for (const element of value) {\n // @ts-expect-error: \"Assertions require every name in the call target to be declared with an explicit type annotation.\"\n assertion(element, message);\n }\n }\n}\nexport function assertArrayBuffer(value, message) {\n if (!isArrayBuffer(value)) {\n throw new TypeError(message ?? typeErrorMessage('ArrayBuffer', value));\n }\n}\nexport function assertArrayLike(value, message) {\n if (!isArrayLike(value)) {\n throw new TypeError(message ?? typeErrorMessage('array-like', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertAsyncFunction(value, message) {\n if (!isAsyncFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncFunction', value));\n }\n}\nexport function assertAsyncGenerator(value, message) {\n if (!isAsyncGenerator(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncGenerator', value));\n }\n}\nexport function assertAsyncGeneratorFunction(value, message) {\n if (!isAsyncGeneratorFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncGeneratorFunction', value));\n }\n}\nexport function assertAsyncIterable(value, message) {\n if (!isAsyncIterable(value)) {\n throw new TypeError(message ?? typeErrorMessage('AsyncIterable', value));\n }\n}\nexport function assertBigint(value, message) {\n if (!isBigint(value)) {\n throw new TypeError(message ?? typeErrorMessage('bigint', value));\n }\n}\nexport function assertBigInt64Array(value, message) {\n if (!isBigInt64Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('BigInt64Array', value));\n }\n}\nexport function assertBigUint64Array(value, message) {\n if (!isBigUint64Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('BigUint64Array', value));\n }\n}\nexport function assertBlob(value, message) {\n if (!isBlob(value)) {\n throw new TypeError(message ?? typeErrorMessage('Blob', value));\n }\n}\nexport function assertBoolean(value, message) {\n if (!isBoolean(value)) {\n throw new TypeError(message ?? typeErrorMessage('boolean', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertBoundFunction(value, message) {\n if (!isBoundFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('Function', value));\n }\n}\n/**\nNote: [Prefer using `Uint8Array` instead of `Buffer`.](https://sindresorhus.com/blog/goodbye-nodejs-buffer)\n*/\nexport function assertBuffer(value, message) {\n if (!isBuffer(value)) {\n throw new TypeError(message ?? typeErrorMessage('Buffer', value));\n }\n}\nexport function assertClass(value, message) {\n if (!isClass(value)) {\n throw new TypeError(message ?? typeErrorMessage('Class', value));\n }\n}\nexport function assertDataView(value, message) {\n if (!isDataView(value)) {\n throw new TypeError(message ?? typeErrorMessage('DataView', value));\n }\n}\nexport function assertDate(value, message) {\n if (!isDate(value)) {\n throw new TypeError(message ?? typeErrorMessage('Date', value));\n }\n}\nexport function assertDirectInstanceOf(instance, class_, message) {\n if (!isDirectInstanceOf(instance, class_)) {\n throw new TypeError(message ?? typeErrorMessage('T', instance));\n }\n}\nexport function assertEmptyArray(value, message) {\n if (!isEmptyArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty array', value));\n }\n}\nexport function assertEmptyMap(value, message) {\n if (!isEmptyMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty map', value));\n }\n}\nexport function assertEmptyObject(value, message) {\n if (!isEmptyObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty object', value));\n }\n}\nexport function assertEmptySet(value, message) {\n if (!isEmptySet(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty set', value));\n }\n}\nexport function assertEmptyString(value, message) {\n if (!isEmptyString(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty string', value));\n }\n}\nexport function assertEmptyStringOrWhitespace(value, message) {\n if (!isEmptyStringOrWhitespace(value)) {\n throw new TypeError(message ?? typeErrorMessage('empty string or whitespace', value));\n }\n}\nexport function assertEnumCase(value, targetEnum, message) {\n if (!isEnumCase(value, targetEnum)) {\n throw new TypeError(message ?? typeErrorMessage('EnumCase', value));\n }\n}\nexport function assertError(value, message) {\n if (!isError(value)) {\n throw new TypeError(message ?? typeErrorMessage('Error', value));\n }\n}\nexport function assertEvenInteger(value, message) {\n if (!isEvenInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('even integer', value));\n }\n}\nexport function assertFalsy(value, message) {\n if (!isFalsy(value)) {\n throw new TypeError(message ?? typeErrorMessage('falsy', value));\n }\n}\nexport function assertFloat32Array(value, message) {\n if (!isFloat32Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Float32Array', value));\n }\n}\nexport function assertFloat64Array(value, message) {\n if (!isFloat64Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Float64Array', value));\n }\n}\nexport function assertFormData(value, message) {\n if (!isFormData(value)) {\n throw new TypeError(message ?? typeErrorMessage('FormData', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertFunction(value, message) {\n if (!isFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('Function', value));\n }\n}\nexport function assertGenerator(value, message) {\n if (!isGenerator(value)) {\n throw new TypeError(message ?? typeErrorMessage('Generator', value));\n }\n}\nexport function assertGeneratorFunction(value, message) {\n if (!isGeneratorFunction(value)) {\n throw new TypeError(message ?? typeErrorMessage('GeneratorFunction', value));\n }\n}\nexport function assertHtmlElement(value, message) {\n if (!isHtmlElement(value)) {\n throw new TypeError(message ?? typeErrorMessage('HTMLElement', value));\n }\n}\nexport function assertInfinite(value, message) {\n if (!isInfinite(value)) {\n throw new TypeError(message ?? typeErrorMessage('infinite number', value));\n }\n}\nexport function assertInRange(value, range, message) {\n if (!isInRange(value, range)) {\n throw new TypeError(message ?? typeErrorMessage('in range', value));\n }\n}\nexport function assertInt16Array(value, message) {\n if (!isInt16Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Int16Array', value));\n }\n}\nexport function assertInt32Array(value, message) {\n if (!isInt32Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Int32Array', value));\n }\n}\nexport function assertInt8Array(value, message) {\n if (!isInt8Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Int8Array', value));\n }\n}\nexport function assertInteger(value, message) {\n if (!isInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('integer', value));\n }\n}\nexport function assertIterable(value, message) {\n if (!isIterable(value)) {\n throw new TypeError(message ?? typeErrorMessage('Iterable', value));\n }\n}\nexport function assertMap(value, message) {\n if (!isMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('Map', value));\n }\n}\nexport function assertNan(value, message) {\n if (!isNan(value)) {\n throw new TypeError(message ?? typeErrorMessage('NaN', value));\n }\n}\nexport function assertNativePromise(value, message) {\n if (!isNativePromise(value)) {\n throw new TypeError(message ?? typeErrorMessage('native Promise', value));\n }\n}\nexport function assertNegativeNumber(value, message) {\n if (!isNegativeNumber(value)) {\n throw new TypeError(message ?? typeErrorMessage('negative number', value));\n }\n}\nexport function assertNodeStream(value, message) {\n if (!isNodeStream(value)) {\n throw new TypeError(message ?? typeErrorMessage('Node.js Stream', value));\n }\n}\nexport function assertNonEmptyArray(value, message) {\n if (!isNonEmptyArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty array', value));\n }\n}\nexport function assertNonEmptyMap(value, message) {\n if (!isNonEmptyMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty map', value));\n }\n}\nexport function assertNonEmptyObject(value, message) {\n if (!isNonEmptyObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty object', value));\n }\n}\nexport function assertNonEmptySet(value, message) {\n if (!isNonEmptySet(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty set', value));\n }\n}\nexport function assertNonEmptyString(value, message) {\n if (!isNonEmptyString(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty string', value));\n }\n}\nexport function assertNonEmptyStringAndNotWhitespace(value, message) {\n if (!isNonEmptyStringAndNotWhitespace(value)) {\n throw new TypeError(message ?? typeErrorMessage('non-empty string and not whitespace', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertNull(value, message) {\n if (!isNull(value)) {\n throw new TypeError(message ?? typeErrorMessage('null', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertNullOrUndefined(value, message) {\n if (!isNullOrUndefined(value)) {\n throw new TypeError(message ?? typeErrorMessage('null or undefined', value));\n }\n}\nexport function assertNumber(value, message) {\n if (!isNumber(value)) {\n throw new TypeError(message ?? typeErrorMessage('number', value));\n }\n}\nexport function assertNumericString(value, message) {\n if (!isNumericString(value)) {\n throw new TypeError(message ?? typeErrorMessage('string with a number', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertObject(value, message) {\n if (!isObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('Object', value));\n }\n}\nexport function assertObservable(value, message) {\n if (!isObservable(value)) {\n throw new TypeError(message ?? typeErrorMessage('Observable', value));\n }\n}\nexport function assertOddInteger(value, message) {\n if (!isOddInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('odd integer', value));\n }\n}\nexport function assertPlainObject(value, message) {\n if (!isPlainObject(value)) {\n throw new TypeError(message ?? typeErrorMessage('plain object', value));\n }\n}\nexport function assertPositiveNumber(value, message) {\n if (!isPositiveNumber(value)) {\n throw new TypeError(message ?? typeErrorMessage('positive number', value));\n }\n}\nexport function assertPrimitive(value, message) {\n if (!isPrimitive(value)) {\n throw new TypeError(message ?? typeErrorMessage('primitive', value));\n }\n}\nexport function assertPromise(value, message) {\n if (!isPromise(value)) {\n throw new TypeError(message ?? typeErrorMessage('Promise', value));\n }\n}\nexport function assertPropertyKey(value, message) {\n if (!isPropertyKey(value)) {\n throw new TypeError(message ?? typeErrorMessage('PropertyKey', value));\n }\n}\nexport function assertRegExp(value, message) {\n if (!isRegExp(value)) {\n throw new TypeError(message ?? typeErrorMessage('RegExp', value));\n }\n}\nexport function assertSafeInteger(value, message) {\n if (!isSafeInteger(value)) {\n throw new TypeError(message ?? typeErrorMessage('integer', value));\n }\n}\nexport function assertSet(value, message) {\n if (!isSet(value)) {\n throw new TypeError(message ?? typeErrorMessage('Set', value));\n }\n}\nexport function assertSharedArrayBuffer(value, message) {\n if (!isSharedArrayBuffer(value)) {\n throw new TypeError(message ?? typeErrorMessage('SharedArrayBuffer', value));\n }\n}\nexport function assertString(value, message) {\n if (!isString(value)) {\n throw new TypeError(message ?? typeErrorMessage('string', value));\n }\n}\nexport function assertSymbol(value, message) {\n if (!isSymbol(value)) {\n throw new TypeError(message ?? typeErrorMessage('symbol', value));\n }\n}\nexport function assertTruthy(value, message) {\n if (!isTruthy(value)) {\n throw new TypeError(message ?? typeErrorMessage('truthy', value));\n }\n}\nexport function assertTupleLike(value, guards, message) {\n if (!isTupleLike(value, guards)) {\n throw new TypeError(message ?? typeErrorMessage('tuple-like', value));\n }\n}\nexport function assertTypedArray(value, message) {\n if (!isTypedArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('TypedArray', value));\n }\n}\nexport function assertUint16Array(value, message) {\n if (!isUint16Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint16Array', value));\n }\n}\nexport function assertUint32Array(value, message) {\n if (!isUint32Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint32Array', value));\n }\n}\nexport function assertUint8Array(value, message) {\n if (!isUint8Array(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint8Array', value));\n }\n}\nexport function assertUint8ClampedArray(value, message) {\n if (!isUint8ClampedArray(value)) {\n throw new TypeError(message ?? typeErrorMessage('Uint8ClampedArray', value));\n }\n}\nexport function assertUndefined(value, message) {\n if (!isUndefined(value)) {\n throw new TypeError(message ?? typeErrorMessage('undefined', value));\n }\n}\nexport function assertUrlInstance(value, message) {\n if (!isUrlInstance(value)) {\n throw new TypeError(message ?? typeErrorMessage('URL', value));\n }\n}\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport function assertUrlSearchParams(value, message) {\n if (!isUrlSearchParams(value)) {\n throw new TypeError(message ?? typeErrorMessage('URLSearchParams', value));\n }\n}\nexport function assertUrlString(value, message) {\n if (!isUrlString(value)) {\n throw new TypeError(message ?? typeErrorMessage('string with a URL', value));\n }\n}\nexport function assertValidDate(value, message) {\n if (!isValidDate(value)) {\n throw new TypeError(message ?? typeErrorMessage('valid Date', value));\n }\n}\nexport function assertValidLength(value, message) {\n if (!isValidLength(value)) {\n throw new TypeError(message ?? typeErrorMessage('valid length', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertWeakMap(value, message) {\n if (!isWeakMap(value)) {\n throw new TypeError(message ?? typeErrorMessage('WeakMap', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types, unicorn/prevent-abbreviations\nexport function assertWeakRef(value, message) {\n if (!isWeakRef(value)) {\n throw new TypeError(message ?? typeErrorMessage('WeakRef', value));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function assertWeakSet(value, message) {\n if (!isWeakSet(value)) {\n throw new TypeError(message ?? typeErrorMessage('WeakSet', value));\n }\n}\nexport function assertWhitespaceString(value, message) {\n if (!isWhitespaceString(value)) {\n throw new TypeError(message ?? typeErrorMessage('whitespace string', value));\n }\n}\nexport default is;\n","/**\n * Small utility library instead of using lodash\n * but still providing the convenience of a single `_.XXX` style import\n */\n\n\n// we'll rely on sindresorhus/is for type checking, but we'll build it into the final bundle\nimport {\n isBoolean, isError, isString, isPromise, isFunction,\n isNumber, isPlainObject, isArray, isInteger, isNan,\n} from '@sindresorhus/is';\n\nfunction keyBy<T>(array: Array<T>, key: keyof T) {\n return (array || []).reduce((r, x) => ({ ...r, [String(x[key])]: x }), {});\n}\n\n/**\n * Simple sortBy utility\n * Returns a new array sorted by the given key or function\n */\nfunction sortBy<T>(\n array: Array<T>,\n compareBy: keyof T | ((item: T) => number),\n) {\n // handle comparison using function that returns a number\n if (typeof compareBy === 'function') {\n const compareMap = new Map();\n array.forEach((item) => {\n compareMap.set(item, compareBy(item));\n });\n return array.concat().sort(\n (a, b) => compareMap.get(a)! - compareMap.get(b)!,\n );\n // handle comparison by key\n } else {\n return array.concat().sort(\n (a, b) => {\n if (a[compareBy] > b[compareBy]) return 1;\n return (b[compareBy] > a[compareBy]) ? -1 : 0;\n },\n );\n }\n}\n\nfunction compact<T>(array: Array<T | undefined | false | null>) {\n return array.filter((item) => item !== undefined && item !== false && item !== null) as Array<T>;\n}\n\nfunction filter<T>(array: Array<T>, fn: (item: T) => boolean) {\n return array.filter(fn);\n}\n\nfunction each<T>(\n array: Array<T> | Record<string, T>,\n fn: (\n ((item: T, key: string) => void)\n | ((item: T) => void)\n ),\n) {\n if (Array.isArray(array)) {\n array.forEach((item, index) => fn(item, String(index)));\n } else {\n Object.entries(array).forEach(([key, value]) => fn(value, key));\n }\n}\n\nfunction castArray<T>(value: T | Array<T>) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction mapValues<T, U>(obj: Record<string, T>, fn: (value: T) => U) {\n return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, fn(value)]));\n}\n\nfunction times<T>(count: number, fn: (index: number) => T): Array<T> {\n return Array.from({ length: count }, (_, i) => fn(i));\n}\n\nfunction map<T, U>(array: Array<T>, fn: (item: T) => U): Array<U> {\n return array.map(fn);\n}\nfunction flatMap<T, U>(array: Array<T>, fn: (item: T) => Array<U>): Array<U> {\n return array.flatMap(fn);\n}\nfunction intersection<T>(...arrays: Array<Array<T>>): Array<T> {\n return arrays.reduce((a, b) => a.filter((value) => b.includes(value)));\n}\nfunction pick<T>(obj: Record<string, T>, keys: Array<string>) {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key)));\n}\nfunction uniq<T>(array: Array<T>): Array<T> {\n return Array.from(new Set(array));\n}\nfunction fromPairs<T>(pairs: Array<[string, T]>): Record<string, T> {\n return Object.fromEntries(pairs);\n}\n\n\nconst _ = {\n keyBy,\n sortBy,\n compact,\n keys: Object.keys,\n values: Object.values,\n some: (a: Array<any>, fn: (item: any) => boolean) => a.some(fn),\n filter,\n each,\n castArray,\n mapValues,\n times,\n map,\n flatMap,\n intersection,\n pick,\n uniq,\n fromPairs,\n // type checks\n isString,\n isBoolean,\n isError,\n isPromise,\n isFunction,\n isNan,\n isNumber,\n isPlainObject,\n isArray,\n isInteger,\n};\n\nexport default _;\n","import _ from '@env-spec/utils/my-dash';\n// copied these error types from Astro\n// and we will try to keep it compatible so we can interact with their error overlay\n\nexport type ErrorLocation = {\n file?: string;\n line?: number;\n column?: number;\n};\n\n/**\n * Generic object representing an error with all possible data\n * Compatible with both Astro's and Vite's errors\n */\nexport type ErrorWithMetadata = {\n [name: string]: any;\n name: string;\n title?: string;\n // type?: ErrorTypes; // these are astro's error types\n message: string;\n stack: string;\n hint?: string;\n id?: string;\n frame?: string;\n plugin?: string;\n pluginCode?: string;\n fullCode?: string;\n loc?: ErrorLocation;\n cause?: any;\n};\n\n\nexport type VarlockErrorLocationDetails = {\n /** file path or url */\n id: string;\n /** 1-based line number */\n lineNumber: number;\n /** 1-based column number */\n colNumber: number;\n /** full line string */\n lineStr: string;\n};\n\n\nexport class VarlockError extends Error {\n originalError?: Error;\n get isUnexpected() { return !!this.originalError; }\n\n get type() { return this.name; }\n\n\n static defaultIcon = '❌';\n icon: string;\n\n _isWarning = false;\n\n constructor(errOrMessage: string | Error, readonly more?: {\n tip?: string | Array<string>,\n err?: Error,\n isWarning?: boolean,\n /** machine-friendly error code if needed for anything else */\n code?: string,\n location?: VarlockErrorLocationDetails,\n /** free-form additional metadata */\n extraMetadata?: Record<string, any>,\n }) {\n // super must be root level statement\n super(_.isError(errOrMessage) ? errOrMessage.message : errOrMessage);\n if (_.isError(errOrMessage)) {\n this.originalError = errOrMessage;\n this.icon = '💥';\n } else { // string\n this.originalError = more?.err;\n }\n if (_.isArray(more?.tip)) more.tip = more.tip.join('\\n');\n this.name = this.constructor.name;\n if (more?.isWarning) this.isWarning = true;\n\n this.icon ||= (this.constructor as any).defaultIcon;\n }\n\n get tip() {\n if (!this.more?.tip) return undefined;\n if (_.isArray(this.more.tip)) return this.more.tip.join('\\n');\n return this.more.tip;\n }\n\n get location() {\n return this.more?.location;\n }\n\n get code() {\n return this.more?.code;\n }\n get extraMetadata() {\n return this.more?.extraMetadata;\n }\n\n set isWarning(w: boolean) {\n this._isWarning = w;\n if (this._isWarning) {\n this.icon = '🧐';\n }\n }\n get isWarning() { return this._isWarning; }\n\n toJSON() {\n return {\n icon: this.icon,\n type: this.type,\n name: this.name,\n message: this.message,\n isUnexpected: this.isUnexpected,\n ...this.tip && { tip: this.tip },\n ...this.isWarning && { isWarning: this.isWarning },\n };\n }\n}\n\nexport class ConfigLoadError extends VarlockError {\n readonly cleanedStack: Array<string>;\n constructor(err: Error) {\n super(err);\n\n // remove first line since its the error message\n let stackLines = (err.stack?.split('\\n') || []).slice(1);\n stackLines = stackLines.filter((l) => {\n // filter out unimportant lines related to just running/loading\n // we could filter out more of dmno/core code once things stabilize\n //! these are probably not relevant anymore, or needs to move to a plugin layer?\n if (l.includes(' at ViteNodeRunner.')) return false;\n if (l.includes('core/src/config-loader/config-loader.ts')) return false;\n return true;\n });\n\n\n this.message = `${err.name}: ${err.message}`;\n\n\n\n this.cleanedStack = stackLines || [];\n }\n toJSON() {\n return {\n ...super.toJSON(),\n cleanedStack: this.cleanedStack,\n };\n }\n}\n\nexport class ParseError extends VarlockError {\n static defaultIcon = '😵💫';\n}\nexport class SchemaError extends VarlockError {\n static defaultIcon = '🧰';\n}\nexport class ValidationError extends VarlockError {\n static defaultIcon = '❌';\n}\nexport class CoercionError extends VarlockError {\n static defaultIcon = '🛑';\n}\nexport class ResolutionError extends VarlockError {\n static defaultIcon = '⛔';\n protected _retryable?: boolean = false;\n set retryable(val: boolean) { this._retryable = val; }\n get retryable() {\n if (this._retryable) return true;\n if (this.originalError instanceof ResolutionError) return this.originalError.retryable;\n return false;\n }\n}\n\nexport class EmptyRequiredValueError extends ValidationError {\n icon = '❓';\n constructor(_val: undefined | null | '') {\n super('Value is required but is currently empty');\n }\n}\n","/* eslint-disable no-console */\n\nimport { format } from 'node:util';\n\n/**\n * Debug logger with colors, timing, and format string support\n * Enable by setting DEBUG env var with namespaces (e.g., DEBUG=varlock:*)\n */\n\ntype DebugFn = (...args: Array<any>) => void;\n\n// Track last call time per namespace for diff timing\nconst prevTime = new Map<string, number>();\n\n// ANSI color codes\nconst colors = [\n '\\x1b[36m', // cyan\n '\\x1b[35m', // magenta\n '\\x1b[34m', // blue\n '\\x1b[33m', // yellow\n '\\x1b[32m', // green\n '\\x1b[31m', // red\n '\\x1b[96m', // bright cyan\n '\\x1b[95m', // bright magenta\n '\\x1b[94m', // bright blue\n '\\x1b[93m', // bright yellow\n '\\x1b[92m', // bright green\n '\\x1b[91m', // bright red\n];\nconst resetCode = '\\x1b[0m';\nconst grayCode = '\\x1b[90m';\n\n// Simple hash function to deterministically assign colors\nconst selectColor = (namespace: string): string => {\n let hash = 0;\n for (let i = 0; i < namespace.length; i++) {\n // eslint-disable-next-line no-bitwise\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n // eslint-disable-next-line no-bitwise\n hash |= 0; // Convert to 32bit integer\n }\n return colors[Math.abs(hash) % colors.length];\n};\n\n// Format milliseconds in human-readable form\nconst humanizeMs = (ms: number): string => {\n if (ms >= 1000) {\n return `${(ms / 1000).toFixed(1)}s`;\n }\n return `${Math.round(ms)}ms`;\n};\n\nconst isEnabled = (namespace: string): boolean => {\n const debugEnv = process.env.DEBUG || '';\n if (!debugEnv) return false;\n\n const patterns = debugEnv.split(',').map((p) => p.trim());\n let enabled = false;\n\n for (const pattern of patterns) {\n // Negative pattern (exclude)\n if (pattern.startsWith('-')) {\n const excludePattern = pattern.slice(1);\n if (excludePattern === namespace) return false;\n if (excludePattern.endsWith('*')) {\n const prefix = excludePattern.slice(0, -1);\n if (namespace.startsWith(prefix)) return false;\n }\n continue;\n }\n\n // Positive pattern (include)\n if (pattern === '*') {\n enabled = true;\n } else if (pattern === namespace) {\n enabled = true;\n } else if (pattern.endsWith('*')) {\n const prefix = pattern.slice(0, -1);\n if (namespace.startsWith(prefix)) {\n enabled = true;\n }\n }\n }\n\n return enabled;\n};\n\nexport function createDebug(namespace: string): DebugFn {\n const enabled = isEnabled(namespace);\n\n if (!enabled) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return () => {};\n }\n\n const colorCode = selectColor(namespace);\n\n return (...args: Array<any>) => {\n const now = Date.now();\n const prev = prevTime.get(namespace);\n const diff = prev ? now - prev : 0;\n prevTime.set(namespace, now);\n\n // Format the message with util.format for printf-style formatting\n const msg = format(...args);\n\n // Build the output with colored namespace and diff timing\n const diffStr = diff > 0 ? `${grayCode} +${humanizeMs(diff)}${resetCode}` : '';\n const output = `${colorCode}${namespace}${resetCode} ${msg}${diffStr}`;\n\n console.error(output);\n };\n}\n\nexport type Debugger = ReturnType<typeof createDebug>;\n","/**\n * Shared mutable plugin context used during plugin module execution.\n *\n * Kept in its own file to avoid a circular dependency between plugins.ts\n * (which sets the active plugin) and plugin-lib.ts (which exposes it to\n * plugin authors) — both of which would otherwise need to import each other.\n *\n * plugins.ts calls activatePlugin / deactivatePlugin around each load.\n * plugin-lib.ts re-exports `plugin` as a Proxy that delegates to whatever\n * is currently active.\n */\n\n\nconst ctx: { active: any } = { active: undefined };\n\nexport function activatePlugin(p: unknown): void {\n ctx.active = p;\n}\n\nexport function deactivatePlugin(): void {\n ctx.active = undefined;\n}\n\n/**\n * A proxy that always delegates to the currently-loading plugin instance.\n * Plugin code can import this and use it as if it were the plugin directly.\n *\n * Valid only between activatePlugin() and deactivatePlugin() calls.\n */\n\nexport const pluginProxy: any = new Proxy({} as any, {\n get(_, key) {\n if (!ctx.active) throw new Error('[varlock] No active plugin context — are you importing plugin-lib outside of a plugin module?');\n const val = ctx.active[key];\n return typeof val === 'function' ? val.bind(ctx.active) : val;\n },\n set(_, key, value) {\n if (!ctx.active) throw new Error('[varlock] No active plugin context');\n ctx.active[key] = value;\n return true;\n },\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/load.command.ts"],"names":[],"mappings":"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","file":"chunk-6RF54KKR.js","sourcesContent":["import { writeFileSync } from 'node:fs';\nimport { define } from 'gunshi';\nimport { gracefulExit } from 'exit-hook';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { getItemSummary } from '../../lib/formatting';\nimport {\n checkForConfigErrors, checkForNoEnvFiles, checkForSchemaErrors, showPluginWarnings,\n} from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\n\nexport const commandSpec = define({\n name: 'load',\n description: 'Load env according to schema and resolve values',\n args: {\n format: {\n type: 'enum',\n short: 'f',\n choices: ['pretty', 'json', 'env', 'shell', 'json-full'],\n description: 'Format of output',\n default: 'pretty',\n },\n compact: {\n type: 'boolean',\n description: 'Use compact format (for json-full: no indentation, for env/shell: skip undefined values)',\n },\n 'show-all': {\n type: 'boolean',\n description: 'When load is failing, show all items rather than only failing items',\n },\n env: {\n type: 'string',\n description: 'Set the environment (e.g., production, development, etc) - will be overridden by @currentEnv in the schema if present',\n },\n path: {\n type: 'string',\n short: 'p',\n multiple: true,\n description: 'Path to a specific .env file or directory to use as the entry point (can be specified multiple times)',\n },\n 'summary-stderr': {\n type: 'boolean',\n description: 'Also output the pretty (redacted) summary to stderr (useful alongside --format json-full to get both machine-readable output on stdout and a human-readable summary on stderr)',\n },\n 'summary-file': {\n type: 'string',\n description: 'Also write the pretty (redacted) summary to a file path (useful for CI, e.g. $GITHUB_STEP_SUMMARY)',\n },\n },\n examples: `\nLoads and validates environment variables according to your .env files, and prints the results.\nUseful for debugging locally, and in CI to print out a summary of env vars.\n\nExamples:\n varlock load # Load and validate with pretty output\n varlock load --format json # Output in JSON format\n eval \"$(varlock load --format shell)\" # Load vars into current shell (useful with direnv)\n varlock load --show-all # Show all items when validation fails\n varlock load --path .env.prod # Load from a specific .env file\n varlock load -p ./envs -p ./overrides # Load from multiple directories\n varlock load --compact # Use compact format - skips undefined values, no indentation for json-full\n varlock load --env production # Load for a specific environment (⚠️ ignored if using @currentEnv!)\n varlock load --format json-full --summary-stderr # JSON on stdout + redacted human summary on stderr\n varlock load --format json-full --summary-file /tmp/summary.txt # JSON on stdout + redacted human summary written to file\n`.trim(),\n});\n\n\n/**\n * Formats a string value for safe use in a shell export statement.\n * Uses single-quoted strings to prevent shell injection via backticks, `$`, etc.\n * Single quotes within the value are escaped using the `'\\''` sequence.\n */\nexport function formatShellValue(value: string): string {\n return `'${value.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const {\n format, compact, 'show-all': showAll, 'summary-stderr': summaryStderr, 'summary-file': summaryFile,\n } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n entryFilePaths: ctx.values.path,\n });\n\n // For json-full, always output the serialized graph — it includes `errors` and\n // `configErrors` fields so consumers can handle failures gracefully.\n // For all other formats, exit on errors as before.\n if (format !== 'json-full') {\n checkForSchemaErrors(envGraph);\n checkForNoEnvFiles(envGraph);\n }\n\n if (!envGraph.rootDataSource) throw new Error('expected root data source to be set');\n\n // Generate types before resolving values — uses only non-env-specific schema info\n await envGraph.generateTypesIfNeeded();\n\n await envGraph.resolveEnvValues();\n\n if (format === 'json-full') {\n checkForConfigErrors(envGraph, { showAll, noThrow: true });\n } else {\n checkForConfigErrors(envGraph, { showAll });\n }\n\n if ((summaryStderr || summaryFile) && format !== 'pretty') {\n const summaryLines = envGraph.sortedConfigKeys.map(\n (key) => getItemSummary(envGraph.configSchema[key]),\n );\n const summaryStr = `${summaryLines.join('\\n')}\\n`;\n if (summaryStderr) {\n process.stderr.write(summaryStr);\n }\n if (summaryFile) {\n writeFileSync(summaryFile, summaryStr);\n }\n }\n\n if (format === 'pretty') {\n showPluginWarnings(envGraph);\n for (const itemKey of envGraph.sortedConfigKeys) {\n const item = envGraph.configSchema[itemKey];\n console.log(getItemSummary(item));\n }\n } else if (format === 'json') {\n console.log(JSON.stringify(envGraph.getResolvedEnvObject(), null, 2));\n } else if (format === 'json-full') {\n const indent = compact ? 0 : 2;\n const serialized = envGraph.getSerializedGraph();\n console.log(JSON.stringify(serialized, null, indent));\n // Output JSON to stdout even on failure (so consumers can parse err.stdout),\n // but still exit non-zero so execSync callers know something is wrong\n if (serialized.errors) {\n gracefulExit(1);\n }\n } else if (format === 'env' || format === 'shell') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n const skipUndefined = compact === true;\n const prefix = format === 'shell' ? 'export ' : '';\n\n for (const key in resolvedEnv) {\n const value = resolvedEnv[key];\n\n if (value === undefined && skipUndefined) {\n continue;\n }\n\n let strValue: string;\n if (value === undefined) {\n strValue = '';\n } else if (typeof value === 'string') {\n if (format === 'shell') {\n strValue = formatShellValue(value);\n } else {\n strValue = `\"${value.replaceAll('\"', '\\\\\"').replaceAll('\\n', '\\\\n')}\"`;\n }\n } else {\n strValue = JSON.stringify(value);\n }\n console.log(`${prefix}${key}=${strValue}`);\n }\n } else {\n throw new Error(`Unknown format: ${format}`);\n }\n};\n"]}
|
package/dist/chunk-7GFD2ATN.js
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { gracefulExit } from './chunk-CHQDS2PI.js';
|
|
2
|
-
import { getItemSummary, joinAndCompact } from './chunk-QP7TS4SU.js';
|
|
3
|
-
import { ansis_default, FileBasedDataSource } from './chunk-XWYFSG46.js';
|
|
4
|
-
import { VarlockError, my_dash_default } from './chunk-2PFIYNFA.js';
|
|
5
|
-
import { __name } from './chunk-6PEHRAEP.js';
|
|
6
|
-
|
|
7
|
-
// src/cli/helpers/error-checks.ts
|
|
8
|
-
function showErrorLocationDetails(err) {
|
|
9
|
-
if (!(err instanceof VarlockError) || !err.location) return;
|
|
10
|
-
const errLoc = err.location;
|
|
11
|
-
const errPreview = [
|
|
12
|
-
errLoc.lineStr,
|
|
13
|
-
`${ansis_default.gray("-".repeat(errLoc.colNumber - 1))}${ansis_default.red("^")}`
|
|
14
|
-
].join("\n");
|
|
15
|
-
console.error("");
|
|
16
|
-
console.error(`\u{1F4C2} ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);
|
|
17
|
-
console.error(errPreview);
|
|
18
|
-
}
|
|
19
|
-
__name(showErrorLocationDetails, "showErrorLocationDetails");
|
|
20
|
-
function checkForNoEnvFiles(envGraph) {
|
|
21
|
-
if (Object.keys(envGraph.configSchema).length === 0) {
|
|
22
|
-
const displayPath = envGraph.basePath ?? process.cwd();
|
|
23
|
-
const hasLoadedFiles = envGraph.sortedDataSources.some((s) => s instanceof FileBasedDataSource);
|
|
24
|
-
if (!hasLoadedFiles) {
|
|
25
|
-
console.error(`\u{1F6A8} No .env files found in ${displayPath}
|
|
26
|
-
`);
|
|
27
|
-
console.error("Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.");
|
|
28
|
-
} else {
|
|
29
|
-
console.error(`\u{1F6A8} No config items defined in ${displayPath}
|
|
30
|
-
`);
|
|
31
|
-
console.error("Add items to your .env.schema file to get started.");
|
|
32
|
-
}
|
|
33
|
-
return gracefulExit(1);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
__name(checkForNoEnvFiles, "checkForNoEnvFiles");
|
|
37
|
-
function checkForSchemaErrors(envGraph) {
|
|
38
|
-
for (const source of envGraph.sortedDataSources) {
|
|
39
|
-
if (source.loadingError) {
|
|
40
|
-
console.error(`\u{1F6A8} Error encountered while loading ${source.label}
|
|
41
|
-
`);
|
|
42
|
-
console.error(source.loadingError.message);
|
|
43
|
-
showErrorLocationDetails(source.loadingError);
|
|
44
|
-
if (source.loadingError.stack && !(source.loadingError instanceof VarlockError)) {
|
|
45
|
-
console.error(`
|
|
46
|
-
${ansis_default.dim("Stack trace:")}`);
|
|
47
|
-
console.error(ansis_default.dim(source.loadingError.stack));
|
|
48
|
-
}
|
|
49
|
-
return gracefulExit(1);
|
|
50
|
-
}
|
|
51
|
-
if (source.schemaErrors.length) {
|
|
52
|
-
console.error(`\u{1F6A8} Error(s) encountered in ${source.label}`);
|
|
53
|
-
for (const schemaErr of source.schemaErrors) {
|
|
54
|
-
console.error(`- ${schemaErr.message}`);
|
|
55
|
-
showErrorLocationDetails(schemaErr);
|
|
56
|
-
}
|
|
57
|
-
return gracefulExit(1);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
__name(checkForSchemaErrors, "checkForSchemaErrors");
|
|
62
|
-
function showPluginWarnings(envGraph) {
|
|
63
|
-
for (const plugin of envGraph.plugins) {
|
|
64
|
-
if (!plugin.warnings.length) continue;
|
|
65
|
-
for (const warning of plugin.warnings) {
|
|
66
|
-
console.error(ansis_default.yellow(`[WARNING] ${warning.message}`));
|
|
67
|
-
if (warning.tip) {
|
|
68
|
-
for (const line of warning.tip.split("\n")) {
|
|
69
|
-
console.error(` ${line}`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
__name(showPluginWarnings, "showPluginWarnings");
|
|
76
|
-
var InvalidEnvError = class extends Error {
|
|
77
|
-
static {
|
|
78
|
-
__name(this, "InvalidEnvError");
|
|
79
|
-
}
|
|
80
|
-
constructor() {
|
|
81
|
-
super("Resolved config/env did not pass validation");
|
|
82
|
-
}
|
|
83
|
-
getFormattedOutput() {
|
|
84
|
-
return `
|
|
85
|
-
\u{1F4A5} ${ansis_default.red(this.message)} \u{1F4A5}
|
|
86
|
-
`;
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
function checkForConfigErrors(envGraph, opts) {
|
|
90
|
-
for (const source of envGraph.sortedDataSources) {
|
|
91
|
-
if (source.resolutionErrors.length) {
|
|
92
|
-
console.error(`\u{1F6A8} Root decorator error(s) in ${source.label}`);
|
|
93
|
-
for (const err of source.resolutionErrors) {
|
|
94
|
-
console.error(`- ${err.message}`);
|
|
95
|
-
if (err instanceof VarlockError && err.tip) {
|
|
96
|
-
for (const line of err.tip.split("\n")) {
|
|
97
|
-
console.error(` ${line}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
showErrorLocationDetails(err);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
const failingItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((item) => item.validationState === "error");
|
|
105
|
-
if (failingItems.length > 0) {
|
|
106
|
-
console.error(`
|
|
107
|
-
\u{1F6A8} \u{1F6A8} \u{1F6A8} ${ansis_default.bold.underline("Configuration is currently invalid ")} \u{1F6A8} \u{1F6A8} \u{1F6A8}
|
|
108
|
-
`);
|
|
109
|
-
console.error("Invalid items:\n");
|
|
110
|
-
my_dash_default.each(failingItems, (item) => {
|
|
111
|
-
console.error(getItemSummary(item));
|
|
112
|
-
console.error();
|
|
113
|
-
});
|
|
114
|
-
if (opts?.showAll) {
|
|
115
|
-
console.error();
|
|
116
|
-
console.error(joinAndCompact([
|
|
117
|
-
"Valid items:",
|
|
118
|
-
ansis_default.italic.gray("(remove `--show-all` flag to hide)")
|
|
119
|
-
]));
|
|
120
|
-
console.error();
|
|
121
|
-
const validItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((i) => !!i.isValid);
|
|
122
|
-
my_dash_default.each(validItems, (item) => {
|
|
123
|
-
console.error(getItemSummary(item));
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
showPluginWarnings(envGraph);
|
|
127
|
-
if (!opts?.noThrow) {
|
|
128
|
-
throw new InvalidEnvError();
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
__name(checkForConfigErrors, "checkForConfigErrors");
|
|
133
|
-
|
|
134
|
-
export { InvalidEnvError, checkForConfigErrors, checkForNoEnvFiles, checkForSchemaErrors, showPluginWarnings };
|
|
135
|
-
//# sourceMappingURL=chunk-7GFD2ATN.js.map
|
|
136
|
-
//# sourceMappingURL=chunk-7GFD2ATN.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/helpers/error-checks.ts"],"names":[],"mappings":"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","file":"chunk-7GFD2ATN.js","sourcesContent":["import ansis from 'ansis';\nimport { gracefulExit } from 'exit-hook';\nimport _ from '@env-spec/utils/my-dash';\nimport { EnvGraph, ConfigItem, FileBasedDataSource } from '../../env-graph';\nimport { getItemSummary, joinAndCompact } from '../../lib/formatting';\nimport { VarlockError } from '../../env-graph/lib/errors';\n\n\nfunction showErrorLocationDetails(err: Error) {\n if (!(err instanceof VarlockError) || !err.location) return;\n const errLoc = err.location;\n const errPreview = [\n errLoc.lineStr,\n `${ansis.gray('-'.repeat(errLoc.colNumber - 1))}${ansis.red('^')}`,\n ].join('\\n');\n\n console.error('');\n console.error(`📂 ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.error(errPreview);\n}\n\nexport function checkForNoEnvFiles(envGraph: EnvGraph) {\n if (Object.keys(envGraph.configSchema).length === 0) {\n const displayPath = envGraph.basePath ?? process.cwd();\n const hasLoadedFiles = envGraph.sortedDataSources.some((s) => s instanceof FileBasedDataSource);\n if (!hasLoadedFiles) {\n console.error(`🚨 No .env files found in ${displayPath}\\n`);\n console.error('Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.');\n } else {\n console.error(`🚨 No config items defined in ${displayPath}\\n`);\n console.error('Add items to your .env.schema file to get started.');\n }\n return gracefulExit(1);\n }\n}\n\nexport function checkForSchemaErrors(envGraph: EnvGraph) {\n // first we check for loading/parse errors - some cases we may want to let it fail silently?\n for (const source of envGraph.sortedDataSources) {\n // do we care about loading errors from disabled sources?\n // if (source.disabled) continue;\n\n if (source.loadingError) {\n console.error(`🚨 Error encountered while loading ${source.label}\\n`);\n\n console.error(source.loadingError.message);\n showErrorLocationDetails(source.loadingError);\n\n // For plugin loading errors, show the full stack trace since it's usually\n // a runtime error from executing the plugin code\n if (source.loadingError.stack && !(source.loadingError instanceof VarlockError)) {\n console.error(`\\n${ansis.dim('Stack trace:')}`);\n console.error(ansis.dim(source.loadingError.stack));\n }\n\n return gracefulExit(1);\n }\n // TODO: unify this with the above!\n if (source.schemaErrors.length) {\n console.error(`🚨 Error(s) encountered in ${source.label}`);\n\n for (const schemaErr of source.schemaErrors) {\n console.error(`- ${schemaErr.message}`);\n showErrorLocationDetails(schemaErr);\n }\n return gracefulExit(1);\n }\n }\n\n // now we check for any schema errors - where something about how things are wired up is invalid\n // NOTE - we should not have run any resolution yet\n // TODO: make sure we are calling this before attempting to resolve values\n // const failingItems = _.filter(_.values(envGraph.configSchema), (item) => item.validationState === 'error');\n // if (failingItems.length > 0) {\n // throw new CliExitError('Schema is currently invalid');\n // }\n}\n\n\nexport function showPluginWarnings(envGraph: EnvGraph) {\n for (const plugin of envGraph.plugins) {\n if (!plugin.warnings.length) continue;\n for (const warning of plugin.warnings) {\n console.error(ansis.yellow(`[WARNING] ${warning.message}`));\n if (warning.tip) {\n for (const line of warning.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n }\n }\n }\n}\n\nexport class InvalidEnvError extends Error {\n constructor() {\n super('Resolved config/env did not pass validation');\n }\n getFormattedOutput() {\n return `\\n💥 ${ansis.red(this.message)} 💥\\n`;\n }\n}\n\nexport function checkForConfigErrors(envGraph: EnvGraph, opts?: {\n showAll?: boolean;\n /** Log errors to stderr but don't throw — used when the caller will handle errors itself (e.g. json-full output) */\n noThrow?: boolean;\n}) {\n // check for root decorator \"execution\"\n for (const source of envGraph.sortedDataSources) {\n if (source.resolutionErrors.length) {\n console.error(`🚨 Root decorator error(s) in ${source.label}`);\n\n for (const err of source.resolutionErrors) {\n console.error(`- ${err.message}`);\n if (err instanceof VarlockError && err.tip) {\n for (const line of err.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n }\n showErrorLocationDetails(err);\n }\n }\n }\n\n\n\n const failingItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((item) => item.validationState === 'error');\n\n // TODO: use service.isValid?\n if (failingItems.length > 0) {\n console.error(`\\n🚨 🚨 🚨 ${ansis.bold.underline('Configuration is currently invalid ')} 🚨 🚨 🚨\\n`);\n console.error('Invalid items:\\n');\n\n _.each(failingItems, (item: ConfigItem) => {\n console.error(getItemSummary(item));\n console.error();\n });\n if (opts?.showAll) {\n console.error();\n console.error(joinAndCompact([\n 'Valid items:',\n ansis.italic.gray('(remove `--show-all` flag to hide)'),\n ]));\n console.error();\n const validItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((i) => !!i.isValid);\n _.each(validItems, (item: ConfigItem) => {\n console.error(getItemSummary(item));\n });\n }\n\n showPluginWarnings(envGraph);\n if (!opts?.noThrow) {\n throw new InvalidEnvError();\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/exec-sync-varlock.ts"],"names":["errAny"],"mappings":"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","file":"chunk-F5H5MJ6U.js","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport { execFileSync, execSync } from 'node:child_process';\n\n// weird tsup issue using `typeof execSync` from node:child_process\n// see https://github.com/egoist/tsup/issues/1367\nimport type { execSync as execSyncType } from 'child_process';\n\nconst platform = os.platform();\nconst isWindows = platform.match(/^win/i);\n\n\n/**\n * Walk up the directory tree from startDir looking for a node_modules/.bin/varlock binary.\n * Returns the full path to the binary if found, or null if not found.\n */\nfunction findVarlockBin(startDir: string): string | null {\n // On Windows, npm creates varlock.exe while pnpm only creates varlock.cmd\n // (and a shell script). Check .exe first, then fall back to .cmd.\n const binNames = isWindows ? ['varlock.exe', 'varlock.cmd'] : ['varlock'];\n\n let currentDir = startDir;\n while (currentDir) {\n const possibleBinPath = path.join(currentDir, 'node_modules', '.bin');\n if (fs.existsSync(possibleBinPath)) {\n for (const binName of binNames) {\n const possibleVarlockPath = path.join(possibleBinPath, binName);\n if (fs.existsSync(possibleVarlockPath)) {\n return possibleVarlockPath;\n }\n }\n // Found a .bin directory but varlock is not in it - keep walking up.\n // In a monorepo the root node_modules/.bin may exist without varlock,\n // which is installed only in a sub-package.\n }\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) break;\n currentDir = parentDir;\n }\n return null;\n}\n\n\n/** Error thrown by `execSyncVarlock` when the CLI exits with a non-zero status code and `fullResult` is enabled. */\nexport class VarlockExecError extends Error {\n constructor(\n message: string,\n public stdout: string,\n public stderr: string,\n public exitCode: number,\n ) {\n super(message);\n }\n}\n\nexport type ExecVarlockResult = { stdout: string, stderr: string };\n\ntype ExecSyncVarlockOpts = Parameters<typeof execSyncType>[1] & {\n exitOnError?: boolean,\n showLogsOnError?: boolean,\n /**\n * Additional directory to start searching for the varlock binary from.\n * Searched before process.cwd(). Pass `import.meta.dirname` from the\n * call-site so that in monorepos the binary installed next to the\n * importing package is found even when cwd is an unrelated workspace root.\n */\n callerDir?: string,\n /**\n * When true, return `{ stdout, stderr }` instead of just the stdout string,\n * and throw `VarlockExecError` (with `.stdout`, `.stderr`, `.exitCode`) on failure\n * instead of the raw execSync error.\n */\n fullResult?: boolean,\n};\n\n/**\n * Small helper to call execSync and call the varlock cli.\n *\n * When the user runs via a package manager, it will inject node_modules/.bin into PATH\n * but otherwise we may need to try to find that path ourselves.\n *\n * @returns stdout as a string by default, or `{ stdout, stderr }` when `fullResult: true`\n */\nexport function execSyncVarlock(command: string, opts?: ExecSyncVarlockOpts & { fullResult?: false }): string;\nexport function execSyncVarlock(command: string, opts: ExecSyncVarlockOpts & { fullResult: true }): ExecVarlockResult;\nexport function execSyncVarlock(\n command: string,\n opts?: ExecSyncVarlockOpts,\n): string | ExecVarlockResult {\n try {\n // in most cases, user will be running via their package manager\n // and a package.json script (ie `pnpm run start`)\n // which will inject node_modules/.bin into PATH\n try {\n const result = execSync(`varlock ${command}`, {\n ...opts?.env && { env: opts.env },\n ...opts?.cwd && { cwd: opts.cwd },\n stdio: 'pipe',\n });\n return opts?.fullResult\n ? { stdout: result.toString(), stderr: '' }\n : result.toString();\n } catch (err) {\n // code 127 means not found (on linux only)\n // ENOENT from execSync means that a shell was not found\n if (!isWindows && (err as any).status !== 127 && (err as any).code !== 'ENOENT') throw err;\n // on windows, we'll just do the extra checks anyway\n }\n\n // if varlock was not found, it either means it is not installed\n // or we must find the path to node_modules/.bin ourselves.\n // Search from cwd (if provided), callerDir, then process.cwd().\n // This handles monorepo setups where cwd may be an unrelated workspace\n // root while varlock is only installed in a sub-package - the callerDir\n // supplied by auto-load.ts points inside that sub-package's node_modules.\n const cwdStr = opts?.cwd ? String(opts.cwd) : undefined;\n const searchDirs = [\n ...(cwdStr ? [cwdStr] : []),\n ...(opts?.callerDir ? [opts.callerDir] : []),\n process.cwd(),\n ];\n\n for (const startDir of searchDirs) {\n const varlockPath = findVarlockBin(startDir);\n if (varlockPath) {\n // .cmd files are batch scripts that must be run through cmd.exe\n const needsShell = varlockPath.endsWith('.cmd');\n const result = execFileSync(varlockPath, command.split(' '), {\n ...opts,\n stdio: 'pipe',\n ...(needsShell && { shell: true }),\n });\n return opts?.fullResult\n ? { stdout: result.toString(), stderr: '' }\n : result.toString();\n }\n }\n throw new Error('Unable to find varlock executable');\n } catch (err) {\n // In fullResult mode, wrap the error as VarlockExecError with structured fields\n if (opts?.fullResult) {\n if (err instanceof VarlockExecError) throw err; // already wrapped\n const errAny = err as any;\n // execSync/execFileSync attach stdout/stderr Buffers on the error\n if (errAny.status != null) {\n throw new VarlockExecError(\n `varlock ${command} failed (exit code ${errAny.status})`,\n errAny.stdout?.toString() ?? '',\n errAny.stderr?.toString() ?? '',\n errAny.status ?? 1,\n );\n }\n throw err; // not a process error (e.g. \"Unable to find varlock executable\")\n }\n\n // Legacy behavior for non-fullResult callers\n const errAny = err as any;\n if (opts?.showLogsOnError) {\n /* eslint-disable no-console */\n if (errAny.stdout) console.log(errAny.stdout.toString());\n if (errAny.stderr) console.error(errAny.stderr.toString());\n\n if (!errAny.stdout && !errAny.stderr) {\n console.error(errAny);\n }\n }\n if (opts?.exitOnError) {\n process.exit((err as any).status ?? 1);\n }\n throw err;\n }\n}\n"]}
|