xref: /expo/packages/@expo/env/build/env.js.map (revision 2de90eda)
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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"}