UNPKG

typenvx

Version:

Typenv is a modern, type-safe alternative to .env files, providing advanced validation, intelligent interpolation, and conditional logic for better environment management.

1 lines 79.9 kB
{"version":3,"sources":["../../src/types/index.ts","../../shared/errors/libMessages.ts","../../shared/errors/index.ts","../../src/regex.ts","../../src/core/parser/helpers.ts","../../src/config.ts","../../src/core/parser/parser.ts","../../src/core/parser/index.ts","../../src/utils/index.ts","../../src/core/validator.ts","../../src/utils/system-env.ts","../../src/core/utils.ts","../../src/core/resolver.ts","../../shared/constants.ts","../../shared/utils/index.ts","../../shared/configLoader.ts","../../src/envx/fileExt.ts","../../src/envx/index.ts"],"names":["EnvxError","message","LIB_ERROR_MESSAGES","path","lineNumber","type","key","value","allowed","ERROR_MESSAGES","TERNARY_REGEX","VALID_ENUM_VALUE_REGEX","SCHEMA_BLOCK_HEADER_REGEX","VALID_SCHEMA_KEY_REGEX","isSafeString","str","isSchemaHeader","line","assertNoTrailingPunctuation","raw","forbiddenChars","lastChar","applyDefault","target","values","num","splitKeyValue","eqIndex","stripQuotes","first","last","findCommentIndex","inSingleQuote","inDoubleQuote","i","char","handleMultilineLine","multilineKey","multilineBuffer","env","trimmedLine","quoteIndex","beforeQuote","allowedSchemaTypes","BUILTIN_SCHEMA","parseSchemaLine","getNextLine","rawKey","rawValue","descLines","currentLine","nextLine","parsed","v","parseSchemaHeader","schema","parseEnvLine","trimmedValue","parseEnvx","content","lines","currentSchemaKey","originalLine","result","commentIndex","isMultilineStart","toBoolean","_throw","checkOnly","normalized","isValid","isEmail","inferTypeFromValue","fillMissingSchemaEntries","completedSchema","resolveEnvFilePath","inputPath","parseValueByType","validateEnv","parsedMap","required","defValue","WHITELISTED_SYSTEM_KEYS","readSystemEnv","loadEnvxFromString","noValidate","parsedSchema","fullSchema","effectiveSchema","resolved","resolveEnvx","filteredResult","isTernary","cleaned","hasInterpolation","getEnvVar","name","rawEnv","resolvedEnv","resolving","depth","resolveValue","sysVal","entries","entry","currentKey","prev","resolveTernary","resolveInterpolation","_","varName","match","operator","compareValueRaw","trueValRaw","falseValRaw","actualValue","compareValue","actualValStr","condition","cmp","trueVal","falseVal","parseIfLiteral","META_JSON_FILE_NAME","JSON_CONFIG_FILE_NAME","DEFAULT_ENV_FILE","DEFAULT_ENVX_FILE","parseEnvxMetaFile","filePath","resolvedPath","fs","err","defaultUserConfig","isValidUserConfig","obj","loadUserConfig","jsonPath","existsSync","readFileSync","parsed_config","errMsg","fileExts","checkFileExt","filePathOrExt","baseName","ext","throwIfUnknownExtUsed","config","readFileSafe","e","getEnv","metaFileFullPath","metaFilePath","envFilePath","absPath","envContent","envxSchema","getEnvx","envxFilePath","loadEnvx","envVars"],"mappings":"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","file":"index.mjs","sourcesContent":["export type EnvxType =\r\n | \"string\"\r\n | \"number\"\r\n | \"boolean\"\r\n | \"enum\"\r\n | \"email\"\r\n | \"url\";\r\n\r\nexport interface EnvxVarSchema {\r\n type: EnvxType;\r\n required?: boolean;\r\n default?: string | number | boolean;\r\n values?: Array<string>;\r\n deprecated?: boolean;\r\n description?: string;\r\n}\r\n\r\nexport type EnvxSchema = Record<string, EnvxVarSchema>;\r\nexport type EnvxVarKey = keyof EnvxVarSchema;\r\n\r\nexport type EnvxResult = Record<string, string | number | boolean>;\r\n\r\nexport class EnvxError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = \"EnvxError\";\r\n }\r\n}\r\n\r\n// OTHERS\r\nexport type ParsedLine = { key: string; value: string };","export const LIB_ERROR_MESSAGES = {\r\n fileDoesNotExist: (path: string) =>\r\n `The specified file does not exist: ${path}`,\r\n\r\n unsupportedType: (lineNumber: number, type: string) =>\r\n `Line ${lineNumber + 1}: Unsupported type \"${type}\".`,\r\n\r\n validator: {\r\n invalidNumber: (key: string, value: string) =>\r\n `Invalid value for \"${key}\": expected a number but received \"${value}\".`,\r\n invalidBoolean: (key: string, value: string) =>\r\n `Invalid boolean for \"${key}\": expected \"true\" or \"false\" but received \"${value}\".`,\r\n missingEnumValues: (key: string) =>\r\n `Enum values are not defined for \"${key}\". Please specify allowed values.`,\r\n invalidEnum: (key: string, value: string, allowed: string[]) =>\r\n `Invalid enum value for \"${key}\": expected one of [${allowed.join(\r\n \", \"\r\n )}] but received \"${value}\".`,\r\n invalidEmail: (key: string, value: string) =>\r\n `Invalid email format for \"${key}\": received \"${value}\". Please provide a valid email address.`,\r\n invalidUrl: (key: string, value: string) =>\r\n `Invalid URL format for \"${key}\": received \"${value}\". Please provide a valid URL.`,\r\n unsupportedType: (key: string, type: string) =>\r\n `Unsupported type \"${type}\" specified for \"${key}\".`,\r\n requiredMissing: (key: string) =>\r\n `Required environment variable \"${key}\" is missing and has no default value.`,\r\n },\r\n\r\n resolver: {\r\n circularDependency: (key: string) =>\r\n `Circular dependency detected while resolving \"${key}\".\\n→ Check for variables referencing each other in a loop.`,\r\n interpolationFailed: (key: string, type: \"interpolation\" | \"ternary\" = \"interpolation\") =>\r\n `Failed to resolve variable \"${key}\". No value found for ${type}.`,\r\n requiredMissingInResolve: (key: string) =>\r\n `Environment variable \"${key}\" is not set and no default is defined.\\n→ Define \"${key}\" in your .envx file or provide a default value in the schema.`,\r\n },\r\n\r\n parser: {\r\n schemaBlockEmpty: (lineNumber: number) =>\r\n `Line ${lineNumber + 1}: Schema block name cannot be empty.`,\r\n schemaKeyDuplicate: (lineNumber: number, key: string) =>\r\n `Line ${\r\n lineNumber + 1\r\n }: Schema key \"${key}\" is already defined. Duplicate schema definitions are not allowed.`,\r\n typeAlreadyDefined: (lineNumber: number) =>\r\n `Line ${\r\n lineNumber + 1\r\n }: \"type\" is already defined for this variable. You cannot redefine it.`,\r\n unknownSchemaProperty: (lineNumber: number, key: string) =>\r\n `Line ${lineNumber + 1}: Unknown schema property \"${key}\".`,\r\n missingDelimiter: (lineNumber: number) =>\r\n `Line ${lineNumber + 1}: Missing \"=\" delimiter in assignment.`,\r\n variableNameEmpty: (lineNumber: number) =>\r\n `Line ${lineNumber + 1}: Variable name cannot be empty.`,\r\n typeRequiredBeforeDefault: (lineNumber: number) =>\r\n `Line ${lineNumber + 1}: \"type\" must be defined before \"default\".`,\r\n defaultMustBeNumber: (lineNumber: number) =>\r\n `Line ${lineNumber + 1}: Default value must be a valid number.`,\r\n defaultMustBeBoolean: (lineNumber: number) =>\r\n `Line ${lineNumber + 1}: Default value must be \"true\" or \"false\".`,\r\n defaultNotInEnum: (lineNumber: number, value: string) =>\r\n `Line ${lineNumber + 1}: Default \"${value}\" is not in enum values.`,\r\n invalidValuesJson: (lineNumber: number) =>\r\n `Line ${lineNumber + 1}: \"values\" must be a valid JSON string array.`,\r\n },\r\n};\r\n","import { LIB_ERROR_MESSAGES } from \"./libMessages\";\r\n\r\nexport const ERROR_MESSAGES = {\r\n lib: LIB_ERROR_MESSAGES,\r\n cli: {},\r\n};\r\n","export const TERNARY_REGEX = /^\\s*\\$\\{([^}]+)\\}(?:\\s*(==|!=)\\s*([\"'])?([^\"']+)\\3)?\\s*\\?\\s*([\"'])?([^\"']+?)\\5?\\s*:\\s*([\"'])?([^\"']+?)\\7?\\s*$/;\r\n\r\nexport const VALID_ENUM_VALUE_REGEX = /^[a-zA-Z0-9_\\-\\.]+$/;\r\nexport const SCHEMA_BLOCK_HEADER_REGEX = /^\\[.*\\]$/;\r\nexport const VALID_SCHEMA_KEY_REGEX = /^[a-zA-Z0-9_\\-\\.]+$/;\r\n","import { ERROR_MESSAGES } from \"../../../shared/errors\";\r\nimport { SCHEMA_BLOCK_HEADER_REGEX, VALID_ENUM_VALUE_REGEX } from \"../../regex\";\r\nimport { EnvxError, EnvxVarSchema, ParsedLine } from \"../../types\";\r\n\r\nfunction isSafeString(str: string): boolean {\r\n return VALID_ENUM_VALUE_REGEX.test(str);\r\n}\r\n\r\nfunction isSchemaHeader(line: string): boolean {\r\n return SCHEMA_BLOCK_HEADER_REGEX.test(line);\r\n}\r\n\r\nconst assertNoTrailingPunctuation = (raw: string, lineNumber: number) => {\r\n const forbiddenChars = [\r\n \",\",\r\n \";\",\r\n \":\",\r\n \".\",\r\n \"-\",\r\n \"?\",\r\n \"!\",\r\n \"|\",\r\n \"\\\\\",\r\n \"/\",\r\n \"(\",\r\n \")\",\r\n \"{\",\r\n \"<\",\r\n \">\",\r\n \"`\",\r\n \"~\",\r\n \"=\",\r\n ];\r\n\r\n const lastChar = raw.trimEnd().slice(-1);\r\n\r\n if (forbiddenChars.includes(lastChar)) {\r\n throw new EnvxError(\r\n `[envx:error] Line ${\r\n lineNumber + 1\r\n }: Value ends with a suspicious character (${lastChar}). Please remove unnecessary character at the end.`\r\n );\r\n }\r\n};\r\n\r\nfunction applyDefault(\r\n value: string,\r\n lineNumber: number,\r\n target: EnvxVarSchema\r\n) {\r\n const { type, values } = target;\r\n if (!type) {\r\n // [THROW_ERR_MSG] => Throws error if \"type\" is missing before \"default\".\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.typeRequiredBeforeDefault(lineNumber)\r\n );\r\n }\r\n\r\n switch (type) {\r\n case \"number\":\r\n const num = Number(value);\r\n if (isNaN(num)) {\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.defaultMustBeNumber(lineNumber)\r\n );\r\n }\r\n target.default = num;\r\n break;\r\n\r\n case \"boolean\":\r\n if (value !== \"true\" && value !== \"false\") {\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.defaultMustBeBoolean(lineNumber)\r\n );\r\n }\r\n target.default = value === \"true\";\r\n break;\r\n\r\n case \"enum\":\r\n if (!values || !values.includes(value)) {\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.defaultNotInEnum(lineNumber, value)\r\n );\r\n }\r\n target.default = value;\r\n break;\r\n\r\n default:\r\n target.default = value;\r\n }\r\n}\r\n\r\nfunction splitKeyValue(line: string, lineNumber: number): [string, string] {\r\n const eqIndex = line.indexOf(\"=\");\r\n if (eqIndex === -1) {\r\n // * Splits a line into key and value by first '=' character.\r\n // * Throws error if '=' not found.\r\n throw new EnvxError(ERROR_MESSAGES.lib.parser.missingDelimiter(lineNumber));\r\n }\r\n return [line.slice(0, eqIndex), line.slice(eqIndex + 1)];\r\n}\r\n\r\nfunction stripQuotes(value: string): string {\r\n const first = value[0];\r\n const last = value[value.length - 1];\r\n if ((first === `\"` && last === `\"`) || (first === `'` && last === `'`)) {\r\n return value.slice(1, -1);\r\n }\r\n return value;\r\n}\r\n\r\n/**\r\n * Finds index of unquoted '#' symbol to identify inline comment start.\r\n */\r\nfunction findCommentIndex(line: string): number {\r\n let inSingleQuote = false;\r\n let inDoubleQuote = false;\r\n\r\n for (let i = 0; i < line.length; i++) {\r\n const char = line[i];\r\n if (char === '\"' && !inSingleQuote) {\r\n inDoubleQuote = !inDoubleQuote;\r\n } else if (char === \"'\" && !inDoubleQuote) {\r\n inSingleQuote = !inSingleQuote;\r\n } else if (char === \"#\" && !inSingleQuote && !inDoubleQuote) {\r\n return i;\r\n }\r\n }\r\n return -1; // if comment dont have return `-1`\r\n}\r\n\r\n// func(handleMultilineLine) => its purpose is to handle multi-line strings\r\nfunction handleMultilineLine(\r\n line: string,\r\n multilineKey: string,\r\n multilineBuffer: string[],\r\n env: ParsedLine[]\r\n): { multilineKey: string | null; multilineBuffer: string[] } {\r\n const trimmedLine = line.trim();\r\n if (trimmedLine.includes('\"\"\"')) {\r\n const quoteIndex = trimmedLine.indexOf('\"\"\"');\r\n const beforeQuote = trimmedLine.slice(0, quoteIndex);\r\n multilineBuffer.push(beforeQuote.trimEnd());\r\n env.push({ key: multilineKey, value: multilineBuffer.join(\"\\n\") });\r\n return { multilineKey: null, multilineBuffer: [] };\r\n } else {\r\n multilineBuffer.push(line);\r\n return { multilineKey, multilineBuffer };\r\n }\r\n}\r\n\r\nexport {\r\n isSafeString,\r\n isSchemaHeader,\r\n assertNoTrailingPunctuation,\r\n applyDefault,\r\n splitKeyValue,\r\n stripQuotes,\r\n findCommentIndex,\r\n handleMultilineLine,\r\n};\r\n","import { EnvxSchema, EnvxType } from \"./types\";\r\n\r\nexport const allowedSchemaTypes: Array<EnvxType> = [\r\n \"string\",\r\n \"number\",\r\n \"boolean\",\r\n \"enum\",\r\n \"email\",\r\n \"url\",\r\n];\r\n\r\n// [COMING_SOON_FEATURES] future features\r\nexport const BUILTIN_SCHEMA: EnvxSchema = {\r\n};\r\n","import { ERROR_MESSAGES } from \"../../../shared/errors\";\r\nimport { allowedSchemaTypes } from \"../../config\";\r\nimport { EnvxError, EnvxSchema, EnvxVarSchema } from \"../../types\";\r\n\r\nimport {\r\n isSafeString,\r\n assertNoTrailingPunctuation,\r\n applyDefault,\r\n splitKeyValue,\r\n stripQuotes,\r\n} from \"./helpers\";\r\nimport { VALID_SCHEMA_KEY_REGEX } from \"../../regex\";\r\n\r\n/**\r\n * Parses a line inside a schema block and applies it to the given schema variable.\r\n *\r\n * Supported keys: type, required, default, values\r\n *\r\n * @param {string} line - The line inside the schema block.\r\n * @param {number} lineNumber - Current line number (zero-based).\r\n * @param {EnvxVarSchema} target - Target schema object for this variable.\r\n *\r\n * @throws {EnvxError} For unknown keys or invalid value formats.\r\n */\r\nfunction parseSchemaLine(\r\n line: string,\r\n lineNumber: number,\r\n target: EnvxVarSchema & { __pendingDefault?: string },\r\n getNextLine?: () => string | null\r\n) {\r\n const [rawKey, rawValue] = splitKeyValue(line, lineNumber);\r\n const key = rawKey.trim();\r\n const value: any = stripQuotes(rawValue.trim());\r\n\r\n if (key === \"description\" && rawValue.trim().startsWith('\"\"\"')) {\r\n let descLines = [];\r\n let currentLine = rawValue.trim().slice(3);\r\n\r\n if (currentLine.endsWith('\"\"\"')) {\r\n target.description = currentLine.slice(0, -3);\r\n return;\r\n }\r\n\r\n descLines.push(currentLine);\r\n\r\n while (getNextLine) {\r\n const nextLine = getNextLine();\r\n if (nextLine === null) {\r\n throw new EnvxError(\r\n `Line ${lineNumber + 1}: Unterminated multiline description.`\r\n );\r\n }\r\n if (nextLine.endsWith('\"\"\"')) {\r\n descLines.push(nextLine.slice(0, -3));\r\n break;\r\n } else {\r\n descLines.push(nextLine);\r\n }\r\n }\r\n\r\n target.description = descLines.join(\"\\n\");\r\n return;\r\n }\r\n\r\n switch (key) {\r\n case \"required\":\r\n target.required = value === \"true\";\r\n break;\r\n\r\n case \"type\":\r\n if (target.type !== undefined) {\r\n // [THROW_ERR_MSG] => Throw if \"type\" is defined more than once for a schema\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.typeAlreadyDefined(lineNumber)\r\n );\r\n }\r\n if (!allowedSchemaTypes.includes(value)) {\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.unsupportedType(lineNumber, value)\r\n );\r\n }\r\n target.type = value as EnvxVarSchema[\"type\"];\r\n break;\r\n\r\n case \"default\":\r\n if (target.type == \"enum\" && !target.values) {\r\n target.__pendingDefault = value;\r\n } else {\r\n applyDefault(value, lineNumber, target);\r\n }\r\n break;\r\n\r\n case \"values\":\r\n try {\r\n const parsed = JSON.parse(value);\r\n\r\n const isValidArray =\r\n Array.isArray(parsed) &&\r\n parsed.length <= 25 &&\r\n parsed.every((v) => typeof v === \"string\" && isSafeString(v));\r\n\r\n if (!isValidArray) {\r\n throw new EnvxError(\r\n `[envx:error] Line ${\r\n lineNumber + 1\r\n }: \"values\" must be a JSON array (max 25) of safe strings. Allowed characters: a-z, A-Z, 0-9, _, -, .`\r\n );\r\n }\r\n\r\n target.values = parsed;\r\n\r\n if (target.__pendingDefault) {\r\n applyDefault(target.__pendingDefault, lineNumber, target);\r\n // delete (target as any).__pendingDefault;\r\n }\r\n } catch (e) {\r\n // [THROW_ERR_MSG] => Throw if \"values\" is not a valid JSON array of strings\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.invalidValuesJson(lineNumber)\r\n );\r\n }\r\n break;\r\n\r\n // Note: 'deprecated' and 'description' are mostly for editor tooling (like VSCode extensions),\r\n // they don't affect runtime behavior directly.\r\n case \"deprecated\":\r\n target.deprecated = value;\r\n break;\r\n case \"description\":\r\n target.description = value;\r\n break;\r\n\r\n default:\r\n // [THROW_ERR_MSG] => Throws error if a schema property is unknown.\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.unknownSchemaProperty(lineNumber, key)\r\n );\r\n }\r\n}\r\n\r\nfunction parseSchemaHeader(\r\n line: string,\r\n lineNumber: number,\r\n schema: EnvxSchema\r\n): string {\r\n const key = line.slice(1, -1).trim();\r\n\r\n if (!key) {\r\n // [THROW_ERR_MSG] => Throws error if a schema block name is empty.\r\n throw new EnvxError(ERROR_MESSAGES.lib.parser.schemaBlockEmpty(lineNumber));\r\n }\r\n\r\n if (!VALID_SCHEMA_KEY_REGEX.test(key)) {\r\n throw new EnvxError(\r\n `[envx:error] Line ${lineNumber + 1}: ` +\r\n `Schema block name \"${key}\" contains invalid characters. ` +\r\n `Only letters, numbers, underscore (_), hyphen (-), and dot (.) are allowed.`\r\n );\r\n }\r\n\r\n if (schema[key]) {\r\n // [THROW_ERR_MSG] => Throws error if a schema key is duplicated.\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.schemaKeyDuplicate(lineNumber, key)\r\n );\r\n }\r\n\r\n schema[key] = schema[key] ?? {};\r\n return key;\r\n}\r\n\r\nfunction parseEnvLine(\r\n line: string,\r\n lineNumber: number\r\n): {\r\n key: string;\r\n value: string;\r\n isMultilineStart: boolean;\r\n} {\r\n const [rawKey, rawValue] = splitKeyValue(line, lineNumber);\r\n const key = rawKey.trim();\r\n\r\n if (!key) {\r\n // [THROW_ERR_MSG] => Throws error if environment variable name is empty.\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.parser.variableNameEmpty(lineNumber)\r\n );\r\n }\r\n\r\n const trimmedValue = rawValue.trim();\r\n\r\n if (trimmedValue.startsWith('\"\"\"')) {\r\n if (trimmedValue.endsWith('\"\"\"') && trimmedValue.length > 6) {\r\n return {\r\n key,\r\n value: trimmedValue.slice(3, -3),\r\n isMultilineStart: false,\r\n };\r\n }\r\n\r\n return {\r\n key,\r\n value: trimmedValue.slice(3),\r\n isMultilineStart: true,\r\n };\r\n }\r\n assertNoTrailingPunctuation(trimmedValue, lineNumber);\r\n\r\n return {\r\n key,\r\n value: stripQuotes(trimmedValue),\r\n isMultilineStart: false,\r\n };\r\n}\r\n\r\nexport { parseEnvLine, parseSchemaHeader, parseSchemaLine };\r\n","import { EnvxError, EnvxSchema, ParsedLine } from \"../../types\";\r\n\r\nimport {\r\n isSchemaHeader,\r\n findCommentIndex,\r\n handleMultilineLine,\r\n} from \"./helpers\";\r\n\r\nimport { parseEnvLine, parseSchemaHeader, parseSchemaLine } from \"./parser\";\r\n\r\ninterface ParseResult {\r\n env: ParsedLine[];\r\n schema: EnvxSchema;\r\n}\r\n\r\n/**\r\n * Parses a custom `.envx` file format into structured environment variables and their schema.\r\n *\r\n * This parser supports:\r\n * - Standard key=value pairs, with automatic trimming and comment removal.\r\n * - Multiline values wrapped in triple quotes (`\"\"\"`), preserving line breaks.\r\n * - Optional schema sections defined via headers like `[VARNAME]`, with key-specific metadata.\r\n *\r\n * Example `.envx` content:\r\n * ```\r\n * API_KEY=\"abc123\"\r\n *\r\n * [API_KEY]\r\n * type = string\r\n * required = true\r\n * ```\r\n *\r\n * @param {string} content - The raw string content of a `.envx` file to parse.\r\n * @returns {{ env: ParsedLine[], schema: EnvxSchema }} An object containing:\r\n * - `env`: An array of parsed environment variables as `{ key, value }`.\r\n * - `schema`: An object mapping variable names to their schema definitions.\r\n *\r\n * @throws {EnvxError} Throws if:\r\n * - Syntax errors are encountered (e.g., malformed lines, invalid schema headers).\r\n * - Inline comments appear improperly in schema headers.\r\n * - Required attributes are missing from schema definitions.\r\n *\r\n * @remarks\r\n * The parser maintains state to handle multi-line strings seamlessly,\r\n * buffering lines until triple quotes close the value.\r\n * Schema parsing supports metadata like type, required flags, defaults, and deprecation.\r\n */\r\nfunction parseEnvx(content: string): ParseResult {\r\n const lines = content.split(/\\r?\\n/);\r\n const env: ParsedLine[] = [];\r\n const schema: EnvxSchema = {};\r\n\r\n let currentSchemaKey: string | null = null;\r\n let multilineKey: string | null = null;\r\n let multilineBuffer: string[] = [];\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n let originalLine = lines[i];\r\n\r\n let trimmedLine = originalLine.trim();\r\n if (!trimmedLine || trimmedLine.startsWith(\"#\")) continue;\r\n if (multilineKey) {\r\n const result = handleMultilineLine(\r\n originalLine,\r\n multilineKey,\r\n multilineBuffer,\r\n env\r\n );\r\n\r\n multilineBuffer = result.multilineBuffer;\r\n multilineKey = result.multilineKey;\r\n continue;\r\n }\r\n\r\n // >_ Remove inline comments\r\n const commentIndex = findCommentIndex(originalLine);\r\n if (commentIndex !== -1) {\r\n originalLine = originalLine.slice(0, commentIndex);\r\n }\r\n trimmedLine = originalLine.trim();\r\n\r\n if (isSchemaHeader(trimmedLine)) {\r\n if (commentIndex > -1 && commentIndex > originalLine.indexOf(\"]\")) {\r\n throw new EnvxError(\r\n `[envx:error] Line ${\r\n i + 1\r\n }: Schema header line cannot contain inline comments.`\r\n );\r\n }\r\n currentSchemaKey = parseSchemaHeader(trimmedLine, i, schema);\r\n continue;\r\n }\r\n\r\n if (currentSchemaKey) {\r\n parseSchemaLine(trimmedLine, i, schema[currentSchemaKey], () => {\r\n i++;\r\n if (i >= lines.length) return null;\r\n let nextLine = lines[i].trim();\r\n return nextLine;\r\n });\r\n continue;\r\n }\r\n\r\n const { key, value, isMultilineStart } = parseEnvLine(trimmedLine, i);\r\n if (isMultilineStart) {\r\n multilineKey = key;\r\n multilineBuffer.push(value);\r\n } else {\r\n env.push({ key, value });\r\n }\r\n }\r\n\r\n if (multilineKey) {\r\n throw new EnvxError(\r\n `[envx:error] End of file reached but multiline value for key \"${multilineKey}\" was not closed with triple quotes (\"\"\").`\r\n );\r\n }\r\n return { env, schema };\r\n}\r\n\r\nexport { parseEnvx };\r\n","import { ERROR_MESSAGES } from \"../../shared/errors\";\r\nimport { BUILTIN_SCHEMA } from \"../config\";\r\nimport { EnvxError, EnvxSchema, EnvxVarSchema } from \"../types\";\r\nimport path from \"path\";\r\n\r\nexport function toBoolean(\r\n value: any,\r\n key?: string,\r\n _throw = false,\r\n checkOnly = false\r\n): boolean {\r\n const normalized = typeof value === \"string\" ? value.toLowerCase() : value;\r\n\r\n const isValid =\r\n normalized === true ||\r\n normalized === false ||\r\n normalized === \"true\" ||\r\n normalized === \"false\" ||\r\n normalized === 1 ||\r\n normalized === 0;\r\n\r\n if (checkOnly) return isValid;\r\n\r\n if (!isValid) {\r\n if (_throw) {\r\n throw new EnvxError(\r\n ERROR_MESSAGES.lib.validator.invalidBoolean(key || \"\", value)\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n if (normalized === true || normalized === \"true\" || normalized === 1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport const isEmail = (value: string) => {\r\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\r\n};\r\n\r\nfunction inferTypeFromValue(value: any): EnvxVarSchema[\"type\"] {\r\n const isBoolean = toBoolean(value, \"\", false, true);\r\n if (isBoolean) return \"boolean\";\r\n if (!isNaN(Number(value)) && value !== \"\" && value !== null) return \"number\";\r\n return \"string\";\r\n}\r\n\r\n/**\r\n * Completes the environment variable schema by adding entries for variables\r\n * present in the `.envx` file but missing in the user-defined schema.\r\n *\r\n * For each variable without an explicit schema:\r\n * - Infers the type from its value (string, number, boolean).\r\n * - Marks it as optional (`required: false`).\r\n *\r\n * Al