UNPKG

@strapi/utils

Version:

Shared utilities for the Strapi packages

1 lines 7.27 kB
{"version":3,"file":"env-helper.mjs","sources":["../src/env-helper.ts"],"sourcesContent":["import _ from 'lodash';\n\nexport type Env = typeof envFn & typeof utils;\n\nfunction envFn(key: string): string | undefined;\nfunction envFn(key: string, defaultValue: string): string;\nfunction envFn<T>(key: string, defaultValue: T): string | T;\nfunction envFn(key: string, defaultValue?: any): any {\n return _.has(process.env, key) ? process.env[key] : defaultValue;\n}\n\nfunction getKey(key: string) {\n return process.env[key] ?? '';\n}\n\nfunction int(key: string, defaultValue: number): number;\nfunction int(key: string, defaultValue?: number | undefined): number | undefined;\nfunction int(key: string, defaultValue?: number | undefined): number | undefined {\n if (!_.has(process.env, key)) {\n return defaultValue;\n }\n\n return parseInt(getKey(key), 10);\n}\n\nfunction float(key: string, defaultValue: number): number;\nfunction float(key: string, defaultValue?: number | undefined): number | undefined;\nfunction float(key: string, defaultValue?: number): number | undefined {\n if (!_.has(process.env, key)) {\n return defaultValue;\n }\n\n return parseFloat(getKey(key));\n}\n\nfunction bool(key: string, defaultValue: boolean): boolean;\nfunction bool(key: string, defaultValue?: boolean | undefined): boolean | undefined;\nfunction bool(key: string, defaultValue?: boolean): boolean | undefined {\n if (!_.has(process.env, key)) {\n return defaultValue;\n }\n\n return getKey(key) === 'true';\n}\n\nfunction json<T extends object>(key: string, defaultValue: T): T;\nfunction json<T extends object>(key: string, defaultValue?: T | undefined): T | undefined;\nfunction json(key: string, defaultValue?: object) {\n if (!_.has(process.env, key)) {\n return defaultValue;\n }\n\n try {\n return JSON.parse(getKey(key));\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Invalid json environment variable ${key}: ${error.message}`);\n }\n\n throw error;\n }\n}\n\nfunction array(key: string, defaultValue: string[]): string[];\nfunction array(key: string, defaultValue?: string[] | undefined): string[] | undefined;\nfunction array(key: string, defaultValue?: string[]): string[] | undefined {\n if (!_.has(process.env, key)) {\n return defaultValue;\n }\n\n let value = getKey(key);\n\n if (value.startsWith('[') && value.endsWith(']')) {\n value = value.substring(1, value.length - 1);\n }\n\n return value.split(',').map((v) => {\n return _.trim(_.trim(v, ' '), '\"');\n });\n}\n\nfunction date(key: string, defaultValue: Date): Date;\nfunction date(key: string, defaultValue?: Date | undefined): Date | undefined;\nfunction date(key: string, defaultValue?: Date): Date | undefined {\n if (!_.has(process.env, key)) {\n return defaultValue;\n }\n\n return new Date(getKey(key));\n}\n\n/**\n * Gets a value from env that matches oneOf provided values\n * @param {string} key\n * @param {string[]} expectedValues\n * @param {string|undefined} defaultValue\n * @returns {string|undefined}\n */\nfunction oneOf<T extends string, TDefault extends T = T>(\n key: string,\n expectedValues: T[],\n defaultValue: TDefault\n): T;\nfunction oneOf<T extends string, TDefault extends T = T>(\n key: string,\n expectedValues: T[],\n defaultValue?: TDefault | undefined\n): T | undefined;\nfunction oneOf(key: string, expectedValues?: string[], defaultValue?: string) {\n if (!expectedValues) {\n throw new Error(`env.oneOf requires expectedValues`);\n }\n\n if (defaultValue && !expectedValues.includes(defaultValue)) {\n throw new Error(`env.oneOf requires defaultValue to be included in expectedValues`);\n }\n\n const rawValue = env(key, defaultValue);\n if (rawValue !== undefined && expectedValues.includes(rawValue)) {\n return rawValue;\n }\n\n return defaultValue;\n}\n\nconst utils = {\n int,\n float,\n bool,\n json,\n array,\n date,\n oneOf,\n};\n\nconst env: Env = Object.assign(envFn, utils);\n\nexport default env;\n"],"names":["envFn","key","defaultValue","_","has","process","env","getKey","int","parseInt","float","parseFloat","bool","json","JSON","parse","error","Error","message","array","value","startsWith","endsWith","substring","length","split","map","v","trim","date","Date","oneOf","expectedValues","includes","rawValue","undefined","utils","Object","assign"],"mappings":"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"}