From 29953b31077ec09cfc9dacea8fee50c5e2b9d0fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Bou=C3=A7as?= Date: Fri, 16 Dec 2022 12:09:56 +0000 Subject: [PATCH 1/3] feat: add `functions.import_map` config property --- packages/config/src/functions_config.js | 1 + packages/config/src/validate/validations.js | 8 ++++++ .../function_config_top_level/netlify.toml | 1 + .../tests/normalize/snapshots/tests.js.md | 1 + .../tests/normalize/snapshots/tests.js.snap | Bin 3273 -> 3297 bytes .../netlify.toml | 2 ++ .../tests/validate/snapshots/tests.js.md | 25 ++++++++++++++++++ .../tests/validate/snapshots/tests.js.snap | Bin 3828 -> 3899 bytes packages/config/tests/validate/tests.js | 5 ++++ 9 files changed, 43 insertions(+) create mode 100644 packages/config/tests/validate/fixtures/function_config_invalid_import_map/netlify.toml diff --git a/packages/config/src/functions_config.js b/packages/config/src/functions_config.js index ee9858139d..672007480b 100644 --- a/packages/config/src/functions_config.js +++ b/packages/config/src/functions_config.js @@ -51,6 +51,7 @@ export const FUNCTION_CONFIG_PROPERTIES = new Set([ 'directory', 'external_node_modules', 'ignored_node_modules', + 'import_map', 'included_files', 'node_bundler', 'schedule', diff --git a/packages/config/src/validate/validations.js b/packages/config/src/validate/validations.js index 29f4435dc5..ad7f0bc3a0 100644 --- a/packages/config/src/validate/validations.js +++ b/packages/config/src/validate/validations.js @@ -211,6 +211,14 @@ export const POST_NORMALIZE_VALIDATIONS = [ functions: { [prevPath[1]]: { ignored_node_modules: ['module-one', 'module-two'] } }, }), }, + { + property: 'functions.*.import_map', + check: isString, + message: 'must be a string.', + example: (value, key, prevPath) => ({ + functions: { [prevPath[1]]: { import_map: 'path/to/import_map.json' } }, + }), + }, { property: 'functions.*.included_files', check: isArrayOfStrings, diff --git a/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml b/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml index 4bd2882c3d..8607798af3 100644 --- a/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml +++ b/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml @@ -1,3 +1,4 @@ [functions] external_node_modules = ["module-one", "module-two"] +import_map = "import_map" node_bundler = "esbuild" diff --git a/packages/config/tests/normalize/snapshots/tests.js.md b/packages/config/tests/normalize/snapshots/tests.js.md index 31c1480b1b..f4a1719b8f 100644 --- a/packages/config/tests/normalize/snapshots/tests.js.md +++ b/packages/config/tests/normalize/snapshots/tests.js.md @@ -2396,6 +2396,7 @@ Generated by [AVA](https://avajs.dev). "module-one",␊ "module-two"␊ ],␊ + "import_map": "import_map",␊ "node_bundler": "esbuild"␊ }␊ },␊ diff --git a/packages/config/tests/normalize/snapshots/tests.js.snap b/packages/config/tests/normalize/snapshots/tests.js.snap index f582e7c8f64d389bd8af0855c1eecd75abe2c632..3198c6bf4313be4d77aaa2049a1c0ff965050814 100644 GIT binary patch delta 3269 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 D89_Hh=?ppNXJM#2?7%FjM* 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 diff --git a/packages/config/tests/validate/fixtures/function_config_invalid_import_map/netlify.toml b/packages/config/tests/validate/fixtures/function_config_invalid_import_map/netlify.toml new file mode 100644 index 0000000000..4d20211439 --- /dev/null +++ b/packages/config/tests/validate/fixtures/function_config_invalid_import_map/netlify.toml @@ -0,0 +1,2 @@ +[functions] +import_map = ["not", "a", "string"] diff --git a/packages/config/tests/validate/snapshots/tests.js.md b/packages/config/tests/validate/snapshots/tests.js.md index c65c4e29a3..ed0e0c460a 100644 --- a/packages/config/tests/validate/snapshots/tests.js.md +++ b/packages/config/tests/validate/snapshots/tests.js.md @@ -1333,6 +1333,31 @@ Generated by [AVA](https://avajs.dev). "directory-two/**/*.jpg"␊ ]` +## functions.import_map: is string + +> Snapshot 1 + + `When resolving config file packages/config/tests/validate/fixtures/function_config_invalid_import_map/netlify.toml:␊ + Configuration property functions.*.import_map must be a string.␊ + ␊ + Invalid syntax␊ + ␊ + [functions]␊ + ␊ + [functions."*"]␊ + import_map = [␊ + "not",␊ + "a",␊ + "string"␊ + ]␊ + ␊ + Valid syntax␊ + ␊ + [functions]␊ + ␊ + [functions."*"]␊ + import_map = "path/to/import_map.json"` + ## functions.ignored_node_modules: array of strings > Snapshot 1 diff --git a/packages/config/tests/validate/snapshots/tests.js.snap b/packages/config/tests/validate/snapshots/tests.js.snap index ce2e86e14d888bae7485cd443db99f1ea48d340f..6c0ddf9e1bf0a1a78a3121140913cc260770ccdc 100644 GIT binary patch delta 3889 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 literal 3828 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 { t.snapshot(normalizeOutput(output)) }) +test('functions.import_map: is string', async (t) => { + const output = await new Fixture('./fixtures/function_config_invalid_import_map').runWithConfig() + t.snapshot(normalizeOutput(output)) +}) + test('functions.ignored_node_modules: array of strings', async (t) => { const output = await new Fixture('./fixtures/function_config_invalid_ignored_modules').runWithConfig() t.snapshot(normalizeOutput(output)) From 8f7126d16a1adf2b7da83d0891bb7dc72ee89c60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Bou=C3=A7as?= Date: Mon, 19 Dec 2022 12:09:53 +0000 Subject: [PATCH 2/3] refactor: rename property --- packages/config/src/functions_config.js | 1 - packages/config/src/validate/validations.js | 16 +++--- .../function_config_top_level/netlify.toml | 1 - .../tests/normalize/snapshots/tests.js.md | 1 - .../tests/normalize/snapshots/tests.js.snap | Bin 3297 -> 3273 bytes .../netlify.toml | 2 + .../netlify.toml | 2 - .../tests/validate/snapshots/tests.js.md | 48 +++++++++--------- .../tests/validate/snapshots/tests.js.snap | Bin 3899 -> 3912 bytes packages/config/tests/validate/tests.js | 10 ++-- 10 files changed, 38 insertions(+), 43 deletions(-) create mode 100644 packages/config/tests/validate/fixtures/build_edge_functions_import_map/netlify.toml delete mode 100644 packages/config/tests/validate/fixtures/function_config_invalid_import_map/netlify.toml diff --git a/packages/config/src/functions_config.js b/packages/config/src/functions_config.js index 672007480b..ee9858139d 100644 --- a/packages/config/src/functions_config.js +++ b/packages/config/src/functions_config.js @@ -51,7 +51,6 @@ export const FUNCTION_CONFIG_PROPERTIES = new Set([ 'directory', 'external_node_modules', 'ignored_node_modules', - 'import_map', 'included_files', 'node_bundler', 'schedule', diff --git a/packages/config/src/validate/validations.js b/packages/config/src/validate/validations.js index ad7f0bc3a0..3cc16b7acf 100644 --- a/packages/config/src/validate/validations.js +++ b/packages/config/src/validate/validations.js @@ -187,6 +187,14 @@ export const POST_NORMALIZE_VALIDATIONS = [ message: 'must be a string.', example: () => ({ build: { edge_functions: 'edge-functions' } }), }, + { + property: 'build.edge_functions_import_map', + check: isString, + message: 'must be a string.', + example: (value, key, prevPath) => ({ + functions: { [prevPath[1]]: { edge_functions_import_map: 'path/to/import_map.json' } }, + }), + }, { property: 'functions.*', check: isPlainObj, @@ -211,14 +219,6 @@ export const POST_NORMALIZE_VALIDATIONS = [ functions: { [prevPath[1]]: { ignored_node_modules: ['module-one', 'module-two'] } }, }), }, - { - property: 'functions.*.import_map', - check: isString, - message: 'must be a string.', - example: (value, key, prevPath) => ({ - functions: { [prevPath[1]]: { import_map: 'path/to/import_map.json' } }, - }), - }, { property: 'functions.*.included_files', check: isArrayOfStrings, diff --git a/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml b/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml index 8607798af3..4bd2882c3d 100644 --- a/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml +++ b/packages/config/tests/normalize/fixtures/function_config_top_level/netlify.toml @@ -1,4 +1,3 @@ [functions] external_node_modules = ["module-one", "module-two"] -import_map = "import_map" node_bundler = "esbuild" diff --git a/packages/config/tests/normalize/snapshots/tests.js.md b/packages/config/tests/normalize/snapshots/tests.js.md index f4a1719b8f..31c1480b1b 100644 --- a/packages/config/tests/normalize/snapshots/tests.js.md +++ b/packages/config/tests/normalize/snapshots/tests.js.md @@ -2396,7 +2396,6 @@ Generated by [AVA](https://avajs.dev). "module-one",␊ "module-two"␊ ],␊ - "import_map": "import_map",␊ "node_bundler": "esbuild"␊ }␊ },␊ diff --git a/packages/config/tests/normalize/snapshots/tests.js.snap b/packages/config/tests/normalize/snapshots/tests.js.snap index 3198c6bf4313be4d77aaa2049a1c0ff965050814..f582e7c8f64d389bd8af0855c1eecd75abe2c632 100644 GIT binary patch delta 3261 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 delta 3269 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 D8 Snapshot 1 + + `When resolving config file packages/config/tests/validate/fixtures/build_edge_functions_import_map/netlify.toml:␊ + Configuration property build.edge_functions_import_map must be a string.␊ + ␊ + Invalid syntax␊ + ␊ + [build]␊ + edge_functions_import_map = [␊ + "not",␊ + "a",␊ + "string"␊ + ]␊ + ␊ + Valid syntax␊ + ␊ + [functions]␊ + ␊ + [functions.edge_functions_import_map]␊ + edge_functions_import_map = "path/to/import_map.json"` + ## build.base: string > Snapshot 1 @@ -1333,31 +1356,6 @@ Generated by [AVA](https://avajs.dev). "directory-two/**/*.jpg"␊ ]` -## functions.import_map: is string - -> Snapshot 1 - - `When resolving config file packages/config/tests/validate/fixtures/function_config_invalid_import_map/netlify.toml:␊ - Configuration property functions.*.import_map must be a string.␊ - ␊ - Invalid syntax␊ - ␊ - [functions]␊ - ␊ - [functions."*"]␊ - import_map = [␊ - "not",␊ - "a",␊ - "string"␊ - ]␊ - ␊ - Valid syntax␊ - ␊ - [functions]␊ - ␊ - [functions."*"]␊ - import_map = "path/to/import_map.json"` - ## functions.ignored_node_modules: array of strings > Snapshot 1 diff --git a/packages/config/tests/validate/snapshots/tests.js.snap b/packages/config/tests/validate/snapshots/tests.js.snap index 6c0ddf9e1bf0a1a78a3121140913cc260770ccdc..ddde8e0d64c029a16a74fe975bda26470f83ab25 100644 GIT binary patch literal 3912 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 WuBJBUVP>sZrt^Oa0I>kN^NYkd}@B literal 3899 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 diff --git a/packages/config/tests/validate/tests.js b/packages/config/tests/validate/tests.js index f4a2d3f5c7..0d9fb9841e 100644 --- a/packages/config/tests/validate/tests.js +++ b/packages/config/tests/validate/tests.js @@ -113,6 +113,11 @@ test('build.edge_functions: parent directory', async (t) => { t.snapshot(normalizeOutput(output)) }) +test('build.edge_functions_import_map: string', async (t) => { + const output = await new Fixture('./fixtures/build_edge_functions_import_map').runWithConfig() + t.snapshot(normalizeOutput(output)) +}) + test('build.base: string', async (t) => { const output = await new Fixture('./fixtures/build_base_string').runWithConfig() t.snapshot(normalizeOutput(output)) @@ -227,11 +232,6 @@ test('functions.included_files: is array of strings', async (t) => { t.snapshot(normalizeOutput(output)) }) -test('functions.import_map: is string', async (t) => { - const output = await new Fixture('./fixtures/function_config_invalid_import_map').runWithConfig() - t.snapshot(normalizeOutput(output)) -}) - test('functions.ignored_node_modules: array of strings', async (t) => { const output = await new Fixture('./fixtures/function_config_invalid_ignored_modules').runWithConfig() t.snapshot(normalizeOutput(output)) From db9eff216ddf823c4f5a4ce13a2332243862cc9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Bou=C3=A7as?= Date: Mon, 19 Dec 2022 12:14:15 +0000 Subject: [PATCH 3/3] refactor: update validation example --- packages/config/src/validate/validations.js | 4 ++-- .../tests/validate/snapshots/tests.js.md | 6 ++---- .../tests/validate/snapshots/tests.js.snap | Bin 3912 -> 3899 bytes 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/config/src/validate/validations.js b/packages/config/src/validate/validations.js index 3cc16b7acf..149b9164d1 100644 --- a/packages/config/src/validate/validations.js +++ b/packages/config/src/validate/validations.js @@ -191,8 +191,8 @@ export const POST_NORMALIZE_VALIDATIONS = [ property: 'build.edge_functions_import_map', check: isString, message: 'must be a string.', - example: (value, key, prevPath) => ({ - functions: { [prevPath[1]]: { edge_functions_import_map: 'path/to/import_map.json' } }, + example: () => ({ + build: { edge_functions_import_map: 'path/to/import_map.json' }, }), }, { diff --git a/packages/config/tests/validate/snapshots/tests.js.md b/packages/config/tests/validate/snapshots/tests.js.md index 40b96f2a15..46cf9085c1 100644 --- a/packages/config/tests/validate/snapshots/tests.js.md +++ b/packages/config/tests/validate/snapshots/tests.js.md @@ -494,10 +494,8 @@ Generated by [AVA](https://avajs.dev). ␊ Valid syntax␊ ␊ - [functions]␊ - ␊ - [functions.edge_functions_import_map]␊ - edge_functions_import_map = "path/to/import_map.json"` + [build]␊ + edge_functions_import_map = "path/to/import_map.json"` ## build.base: string diff --git a/packages/config/tests/validate/snapshots/tests.js.snap b/packages/config/tests/validate/snapshots/tests.js.snap index ddde8e0d64c029a16a74fe975bda26470f83ab25..e032a3d4b4d18e5e89498992eabe8b22034ebd0c 100644 GIT binary patch delta 3584 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 GkN^NGlINBH delta 3597 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 TCIM5E;|@>=3IMPHg^&OM2np&q