diff --git a/.env.sample b/.env.sample index 7283f25..ec944a5 100644 --- a/.env.sample +++ b/.env.sample @@ -4,6 +4,7 @@ HIGHCHARTS_CDN_URL = https://code.highcharts.com/ HIGHCHARTS_CORE_SCRIPTS = HIGHCHARTS_MODULE_SCRIPTS = HIGHCHARTS_INDICATOR_SCRIPTS = +HIGHCHARTS_CUSTOM_SCRIPTS = HIGHCHARTS_FORCE_FETCH = false HIGHCHARTS_CACHE_PATH = HIGHCHARTS_ADMIN_TOKEN = diff --git a/README.md b/README.md index effeb48..eac1953 100644 --- a/README.md +++ b/README.md @@ -290,6 +290,7 @@ These variables are set in your environment and take precedence over options fro - `HIGHCHARTS_CORE_SCRIPTS`: Highcharts core scripts to fetch (defaults to ``). - `HIGHCHARTS_MODULE_SCRIPTS`: Highcharts module scripts to fetch (defaults to ``). - `HIGHCHARTS_INDICATOR_SCRIPTS`: Highcharts indicator scripts to fetch (defaults to ``). +- `HIGHCHARTS_CUSTOM_SCRIPTS`: Custom scripts that you want to fetch, ex. additional maps (defaults to ``). - `HIGHCHARTS_FORCE_FETCH`: The flag that determines whether to refetch all scripts after each server rerun (defaults to `false`). - `HIGHCHARTS_CACHE_PATH`: In which directory should the fetched Highcharts scripts be placed (defaults to `.cache`). - `HIGHCHARTS_ADMIN_TOKEN`: An authentication token that is required to switch the Highcharts version on the server at runtime (defaults to ``). diff --git a/lib/envs.js b/lib/envs.js index 885d7f0..4991c7e 100644 --- a/lib/envs.js +++ b/lib/envs.js @@ -30,7 +30,7 @@ const v = { value .split(',') .map((value) => value.trim()) - .filter((value) => filterArray.includes(value)) + .filter((value) => !filterArray || filterArray.includes(value)) ) .transform((value) => (value.length ? value : undefined)), @@ -123,6 +123,7 @@ export const Config = z.object({ HIGHCHARTS_CORE_SCRIPTS: v.array(scriptsNames.core), HIGHCHARTS_MODULE_SCRIPTS: v.array(scriptsNames.modules), HIGHCHARTS_INDICATOR_SCRIPTS: v.array(scriptsNames.indicators), + HIGHCHARTS_CUSTOM_SCRIPTS: v.array(), HIGHCHARTS_FORCE_FETCH: v.boolean(), HIGHCHARTS_CACHE_PATH: v.string(), HIGHCHARTS_ADMIN_TOKEN: v.string(), diff --git a/lib/schemas/config.js b/lib/schemas/config.js index 50600df..ccb23d1 100644 --- a/lib/schemas/config.js +++ b/lib/schemas/config.js @@ -182,6 +182,7 @@ export const defaultConfig = { customScripts: { value: scriptsNames.custom, type: 'string[]', + envLink: 'HIGHCHARTS_CUSTOM_SCRIPTS', description: 'Additional custom scripts or dependencies to fetch.' }, forceFetch: { diff --git a/tests/unit/envs.test.js b/tests/unit/envs.test.js index fe31e8b..d0363e7 100644 --- a/tests/unit/envs.test.js +++ b/tests/unit/envs.test.js @@ -42,7 +42,8 @@ describe('Environment variables should be correctly parsed', () => { const env = { HIGHCHARTS_CORE_SCRIPTS: 'core1, core2, highcharts', HIGHCHARTS_MODULE_SCRIPTS: 'module1, map, module2', - HIGHCHARTS_INDICATOR_SCRIPTS: 'indicators-all, indicator1, indicator2' + HIGHCHARTS_INDICATOR_SCRIPTS: 'indicators-all, indicator1, indicator2', + HIGHCHARTS_CUSTOM_SCRIPTS: 'custom1, custom2' }; const parsed = Config.partial().parse(env); @@ -50,6 +51,7 @@ describe('Environment variables should be correctly parsed', () => { expect(parsed.HIGHCHARTS_CORE_SCRIPTS).toEqual(['highcharts']); expect(parsed.HIGHCHARTS_MODULE_SCRIPTS).toEqual(['map']); expect(parsed.HIGHCHARTS_INDICATOR_SCRIPTS).toEqual(['indicators-all']); + expect(parsed.HIGHCHARTS_CUSTOM_SCRIPTS).toEqual(['custom1', 'custom2']); }); test('HIGHCHARTS_FORCE_FETCH should be a boolean', () => {