{
  "version": 3,
  "sources": ["../../../../src/plugin/definitions.ts"],
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { execSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport pkgUp from 'pkg-up';\nimport { parse } from 'yaml';\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { setDeep } from '@dxos/util';\n\nimport { mapFromKeyValues } from '../config';\nimport { type ConfigPluginOpts } from './types';\n\nconst CWD = process.cwd();\n\nexport const definitions = ({\n  configPath,\n  envPath,\n  devPath,\n  mode = process.env.NODE_ENV,\n  publicUrl = '',\n  env,\n}: ConfigPluginOpts) => {\n  const KEYS_TO_FILE = {\n    __CONFIG_DEFAULTS__: configPath?.length ? configPath : resolve(CWD, 'dx.yml'),\n    __CONFIG_ENVS__: envPath?.length ? envPath : resolve(CWD, 'dx-env.yml'),\n  } as { [key: string]: string };\n  if (mode !== 'production') {\n    KEYS_TO_FILE.__CONFIG_LOCAL__ = devPath ?? resolve(CWD, 'dx-local.yml');\n  }\n\n  return Object.entries(KEYS_TO_FILE).reduce(\n    (prev, [key, value]) => {\n      invariant(key);\n      let content = {};\n      try {\n        content = parse(readFileSync(value, 'utf-8')) as any;\n\n        // Map environment variables to config values.\n        if (key === '__CONFIG_ENVS__') {\n          content = mapFromKeyValues(content, process.env);\n        }\n\n        if (key === '__CONFIG_DEFAULTS__') {\n          // Load app environment variables into default config.\n          Object.entries(process.env).forEach(([key, value]) => {\n            if (key.startsWith('DX_') || env?.includes(key)) {\n              setDeep(content, ['runtime', 'app', 'env', key], value);\n            }\n          });\n\n          // Set build info automatically if available.\n          try {\n            const timestamp = new Date().toISOString();\n            const commitHash =\n              process.env.DX_COMMIT_HASH ??\n              execSync('git rev-parse --short HEAD', { encoding: 'utf-8' }).replace('\\n', '');\n            const packagePath = pkgUp.sync();\n            const packageJson = packagePath && JSON.parse(readFileSync(packagePath, 'utf-8'));\n            setDeep(content, ['runtime', 'app', 'build', 'timestamp'], timestamp);\n            setDeep(content, ['runtime', 'app', 'build', 'commitHash'], commitHash);\n            setDeep(content, ['runtime', 'app', 'build', 'version'], packageJson?.version);\n          } catch {}\n        }\n      } catch (err: any) {\n        if (err.message.includes('YAMLException')) {\n          log.error(`Failed to parse file ${value}:`, err);\n        } else {\n          log(`Failed to load file ${value}:`, err);\n        }\n\n        if (key === '__CONFIG_DEFAULTS__') {\n          // Default config is required.\n          throw new Error(`Failed to load default config file from ${value}`);\n        }\n      }\n\n      return {\n        ...prev,\n        [key]: content,\n      };\n    },\n    {\n      __CONFIG_DEFAULTS__: {},\n      __CONFIG_ENVS__: {},\n      __CONFIG_LOCAL__: {},\n      __DXOS_CONFIG__: { dynamic: mode === 'production', publicUrl },\n    },\n  );\n};\n"],
  "mappings": ";;;;;AAIA,SAASA,gBAAgB;AACzB,SAASC,oBAAoB;AAC7B,SAASC,eAAe;AACxB,OAAOC,WAAW;AAClB,SAASC,aAAa;AAEtB,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,eAAe;AAKxB,IAAA,eAAYC;IAUV,MAAMC,QAAAA,IAAAA;IACJC,cAAAA,CAAAA,EAAqBC,YAAYC,SAASD,SAAAA,OAAaE,eAAa,YAAA,IAAA,IAAA,MAAA;QACpEC,eAAiBC;IACnB,qBAAA,YAAA,SAAA,aAAA,QAAA,KAAA,QAAA;IACIC,iBAAS,SAAc,SAAA,UAAA,QAAA,KAAA,YAAA;;AAE3B,MAAA,SAAA,cAAA;AAEA,iBAAcC,mBAAsBC,WACjCC,QAAOC,KAAKC,cAAM;;SAEjB,OAAIC,QAAW,YAAA,EAAA,OAAA,CAAA,MAAA,CAAA,KAAA,KAAA,MAAA;AACf,cAAI,KAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,QAAA,GAAA,CAAA,OAAA,EAAA,EAAA,CAAA;QACFA,UAAUC,CAAAA;QAEV;AACA,gBAAIH,MAAQ,aAAA,OAAmB,OAAA,CAAA;AAE/B,UAAA,QAAA,mBAAA;AAEIA,kBAAQ,iBAAA,SAAuB,QAAA,GAAA;;UAEjCI,QAAOP,uBAAqBQ;uBAExBC,QAAQJ,GAAS,EAAA,QAAA,CAAA,CAAAF,MAAAC,MAAA,MAAA;mBAAC,WAAA,KAAA,KAAA,KAAA,SAAAD,IAAA,GAAA;oBAAW,SAAA;cAAO;cAAOA;cAAMC;cACnDD;YACF,GAAAC,MAAA;UAEA;QACA,CAAA;YAEE;gBAE2CM,aAAU,oBAAA,KAAA,GAAA,YAAA;AAAQ,gBAAGC,aAAc,QAAA,IAAA,kBAAA,SAAA,8BAAA;YAC9E,UAAMC;UACN,CAAA,EAAA,QAAMC,MAAAA,EAAAA;AACNJ,gBAAAA,cAAiB,MAAA,KAAA;gBAAC,cAAA,eAAA,KAAA,MAAA,aAAA,aAAA,OAAA,CAAA;kBAAW,SAAA;YAAO;YAAS;YAAcK;YAC3DL;sBAAkB;kBAAW,SAAA;YAAO;YAAS;YAAeM;YAC5DN;uBAAkB;kBAAW,SAAA;YAAO;YAAS;YAAYI;YACzD;UACJ,GAAA,aAAA,OAAA;QACA,QAAiB;QAAA;MACjB;aACEG,KAAIC;AACN,UAAA,IAAO,QAAA,SAAA,eAAA,GAAA;AACLD,YAAI,MAAC,wBAA6B,KAAGE,KAAAA,KAAAA,EAAAA,YAAAA,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,OAAAA,CAAAA;MACvC,OAAA;AAEIf,YAAAA,uBAAQ,KAAuB,KAAA,KAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;;UAEjC,QAAM,uBAAW;AAErB,cAAA,IAAA,MAAA,2CAAA,KAAA,EAAA;MAEA;;WAEGA;MACH,GAAA;MAEF,CAAA,GAAA,GAAA;IACEV;;IAEA0B,qBAAmB,CAAA;IACnBC,iBAAiB,CAAA;sBAAWrB,CAAAA;qBAAuBsB;MAAU,SAAA,SAAA;MAC/D;IAEF;;;",
  "names": ["execSync", "readFileSync", "resolve", "pkgUp", "parse", "invariant", "log", "setDeep", "process", "KEYS_TO_FILE", "__CONFIG_DEFAULTS__", "configPath", "length", "resolve", "__CONFIG_ENVS__", "envPath", "mode", "entries", "reduce", "prev", "key", "value", "content", "parse", "Object", "forEach", "setDeep", "encoding", "replace", "packagePath", "packageJson", "timestamp", "commitHash", "log", "error", "err", "__CONFIG_LOCAL__", "__DXOS_CONFIG__", "publicUrl"]
}
