UNPKG

@dataunlocker/defender

Version:

DataUnlocker core module that protects your web app's analytics.

35 lines (34 loc) 1.21 kB
import { promises as fs } from 'fs'; import { dirname, join, resolve } from 'path'; import { fileURLToPath } from 'url'; let dataunlockerJsonFilePath; const getEnvFromDataUnlockerFile = async (name) => { if (!dataunlockerJsonFilePath) { const thisPackageRootDir = resolve(dirname(fileURLToPath(import.meta.url)), '../..'); let dir = dirname(thisPackageRootDir); while (!(await fs.stat(join(dir, 'package.json')).then(() => true, () => false))) { const parent = dirname(dir); if (parent === dir) return; // reached root dir = parent; } dataunlockerJsonFilePath = join(dir, '.dataunlocker.json'); } const data = await fs .readFile(dataunlockerJsonFilePath) .catch(() => undefined); if (!data) { return; } try { const json = JSON.parse(data.toString()); return json[name]; } catch (e) { throw new Error(`Can't parse json from ${dataunlockerJsonFilePath}: ` + e); } }; export const getEnv = async (name) => process.env[name] ?? process.env[`npm_config_${name.toLowerCase()}`] ?? (await getEnvFromDataUnlockerFile(name)) ?? '';