1{"version":3,"file":"env.js","names":["_chalk","data","_interopRequireDefault","require","dotenv","_interopRequireWildcard","_dotenvExpand","fs","path","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","debug","createControlledEnvironment","IS_DEBUG","enabled","userDefinedEnvironment","undefined","memoEnvironment","_getForce","projectRoot","process","env","dotenvFiles","getFiles","NODE_ENV","loadedEnvFiles","parsed","forEach","dotenvFile","absoluteDotenvFile","resolve","existsSync","results","expand","config","override","push","keys","_userDefinedEnvironme","error","Error","console","message","length","force","load","mode","chalk","red","includes","filter","Boolean"],"sources":["../src/env.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport chalk from 'chalk';\nimport * as dotenv from 'dotenv';\nimport { expand } from 'dotenv-expand';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nconst debug = require('debug')('expo:env') as typeof console.log;\n\nexport function createControlledEnvironment() {\n const IS_DEBUG = require('debug').enabled('expo:env');\n\n let userDefinedEnvironment: NodeJS.ProcessEnv | undefined = undefined;\n let memoEnvironment: NodeJS.ProcessEnv | undefined = undefined;\n\n function _getForce(projectRoot: string): Record<string, string | undefined> {\n if (!userDefinedEnvironment) {\n userDefinedEnvironment = { ...process.env };\n }\n\n // https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use\n const dotenvFiles = getFiles(process.env.NODE_ENV);\n\n const loadedEnvFiles: string[] = [];\n const parsed: dotenv.DotenvParseOutput = {};\n\n // Load environment variables from .env* files. Suppress warnings using silent\n // if this file is missing. dotenv will never modify any environment variables\n // that have already been set. Variable expansion is supported in .env files.\n // https://github.com/motdotla/dotenv\n // https://github.com/motdotla/dotenv-expand\n dotenvFiles.forEach((dotenvFile) => {\n const absoluteDotenvFile = path.resolve(projectRoot, dotenvFile);\n if (!fs.existsSync(absoluteDotenvFile)) {\n return;\n }\n try {\n const results = expand(\n dotenv.config({\n debug: IS_DEBUG,\n path: absoluteDotenvFile,\n // We will handle overriding ourselves to allow for HMR.\n override: true,\n })\n );\n if (results.parsed) {\n loadedEnvFiles.push(absoluteDotenvFile);\n debug(`Loaded environment variables from: ${absoluteDotenvFile}`);\n\n for (const key of Object.keys(results.parsed || {})) {\n if (\n typeof parsed[key] === 'undefined' &&\n // Custom override logic to prevent overriding variables that\n // were set before the CLI process began.\n typeof userDefinedEnvironment?.[key] === 'undefined'\n ) {\n parsed[key] = results.parsed[key];\n }\n }\n } else {\n debug(`Failed to load environment variables from: ${absoluteDotenvFile}`);\n }\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(\n `Failed to load environment variables from ${absoluteDotenvFile}: ${error.message}`\n );\n } else {\n throw error;\n }\n }\n });\n\n if (!loadedEnvFiles.length) {\n debug(`No environment variables loaded from .env files.`);\n }\n\n return parsed;\n }\n\n /** Get the environment variables without mutating the environment. This returns memoized values unless the `force` property is provided. */\n function get(\n projectRoot: string,\n { force }: { force?: boolean } = {}\n ): Record<string, string | undefined> {\n if (!force && memoEnvironment) {\n return memoEnvironment;\n }\n memoEnvironment = _getForce(projectRoot);\n return memoEnvironment;\n }\n\n /** Load environment variables from .env files and mutate the current `process.env` with the results. */\n function load(projectRoot: string, { force }: { force?: boolean } = {}) {\n const env = get(projectRoot, { force });\n process.env = { ...process.env, ...env };\n return process.env;\n }\n\n return {\n load,\n get,\n _getForce,\n };\n}\n\nexport function getFiles(mode: string | undefined): string[] {\n if (!mode) {\n console.error(\n chalk.red(\n 'The NODE_ENV environment variable is required but was not specified. Ensure the project is bundled with Expo CLI or NODE_ENV is set.'\n )\n );\n console.error(chalk.red('Proceeding without mode-specific .env'));\n }\n\n if (mode && !['development', 'test', 'production'].includes(mode)) {\n throw new Error(\n `Environment variable \"NODE_ENV=${mode}\" is invalid. Valid values are \"development\", \"test\", and \"production`\n );\n }\n\n if (!mode) {\n // Support environments that don't respect NODE_ENV\n return [`.env.local`, '.env'];\n }\n // https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use\n const dotenvFiles = [\n `.env.${mode}.local`,\n // Don't include `.env.local` for `test` environment\n // since normally you expect tests to produce the same\n // results for everyone\n mode !== 'test' && `.env.local`,\n `.env.${mode}`,\n '.env',\n ].filter(Boolean) as string[];\n\n return dotenvFiles;\n}\n"],"mappings":"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"}