UNPKG

@strapi/utils

Version:

Shared utilities for the Strapi packages

1 lines 5.69 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<T>(key: string, defaultValue?: T): string | T | undefined {\n return _.has(process.env, key) ? process.env[key] : defaultValue;\n}\n\nfunction getKey(key: string) {\n return process.env[key] ?? '';\n}\n\nconst utils = {\n int(key: string, defaultValue?: number): number | undefined {\n if (!_.has(process.env, key)) {\n return defaultValue;\n }\n\n return parseInt(getKey(key), 10);\n },\n\n 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\n 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\n 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\n 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\n 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 */\n oneOf(key: string, expectedValues?: unknown[], defaultValue?: unknown) {\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 return expectedValues.includes(rawValue) ? rawValue : defaultValue;\n },\n};\n\nconst env: Env = Object.assign(envFn, utils);\n\nexport default env;\n"],"names":["envFn","key","defaultValue","_","has","process","env","getKey","utils","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","Object","assign"],"mappings":"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"}