From 61f300806f2aaccdbbb3cc875ac13a4d75437f0d Mon Sep 17 00:00:00 2001 From: ehmicky Date: Wed, 13 Jan 2021 10:45:00 +0100 Subject: [PATCH] Improve environment variables in local builds (#2040) feat: improve environment variables in local builds --- packages/build/package-lock.json | 637 +++++++--- packages/build/src/core/config.js | 26 +- packages/build/src/core/flags.js | 5 + packages/build/src/core/main.js | 2 + packages/build/src/core/normalize_flags.js | 1 + packages/build/src/env/main.js | 106 +- .../build/tests/core/snapshots/tests.js.md | 71 ++ .../build/tests/core/snapshots/tests.js.snap | Bin 3406 -> 3667 bytes .../{build_readonly => branch}/manifest.yml | 0 .../{build_readonly => branch}/netlify.toml | 2 +- .../env/fixtures/{lang => branch}/plugin.js | 4 +- .../env/fixtures/build_readonly/plugin.js | 11 - .../tests/env/fixtures/context/netlify.toml | 3 + .../manifest.yml | 0 .../tests/env/fixtures/deploy_id/netlify.toml | 5 + .../fixtures/{netlify => deploy_id}/plugin.js | 4 +- .../tests/env/fixtures/empty_string/index.js | 5 - .../env/fixtures/empty_string/netlify.toml | 5 - .../env/fixtures/gatsby_telemetry/plugin.js | 11 - .../build/tests/env/fixtures/git/netlify.toml | 2 - .../build/tests/env/fixtures/git/plugin.js | 15 - .../env/fixtures/git_branch/manifest.yml | 2 - .../env/fixtures/git_branch/netlify.toml | 2 - .../tests/env/fixtures/git_branch/plugin.js | 11 - .../tests/env/fixtures/lang/manifest.yml | 2 - .../tests/env/fixtures/lang/netlify.toml | 2 - .../tests/env/fixtures/language/manifest.yml | 2 - .../tests/env/fixtures/language/netlify.toml | 2 - .../tests/env/fixtures/language/plugin.js | 11 - .../tests/env/fixtures/lc_all/manifest.yml | 2 - .../tests/env/fixtures/lc_all/netlify.toml | 2 - .../tests/env/fixtures/netlify/manifest.yml | 2 - .../tests/env/fixtures/netlify/netlify.toml | 2 - .../env/fixtures/next_telemetry/manifest.yml | 2 - .../env/fixtures/next_telemetry/netlify.toml | 2 - .../env/fixtures/next_telemetry/plugin.js | 11 - .../env/fixtures/{git => plugin}/manifest.yml | 0 .../{gatsby_telemetry => plugin}/netlify.toml | 0 .../env/fixtures/{lc_all => plugin}/plugin.js | 0 .../tests/env/fixtures/site_info/manifest.yml | 2 - .../tests/env/fixtures/site_info/netlify.toml | 2 - .../tests/env/fixtures/site_info/plugin.js | 11 - .../build/tests/env/snapshots/tests.js.md | 638 +--------- .../build/tests/env/snapshots/tests.js.snap | Bin 1556 -> 909 bytes packages/build/tests/env/tests.js | 78 +- .../build/tests/error/snapshots/tests.js.md | 93 +- .../build/tests/error/snapshots/tests.js.snap | Bin 7806 -> 7270 bytes packages/build/tests/error/tests.js | 8 +- packages/build/tests/helpers/common.js | 5 + packages/build/tests/helpers/normalize.js | 2 + .../build/tests/plugins/snapshots/tests.js.md | 1 + .../tests/plugins/snapshots/tests.js.snap | Bin 9217 -> 9252 bytes packages/build/tests/plugins/tests.js | 2 +- packages/config/README.md | 31 + packages/config/package-lock.json | 5 + packages/config/package.json | 1 + packages/config/src/api/build_settings.js | 4 +- packages/config/src/api/client.js | 4 +- packages/config/src/api/site_info.js | 55 +- packages/config/src/bin/flags.js | 9 + packages/{build => config}/src/env/git.js | 0 packages/config/src/env/main.js | 157 +++ packages/config/src/main.js | 25 +- packages/config/src/options/main.js | 2 + .../config/tests/api/snapshots/tests.js.md | 1122 ++++++++++++++++- .../config/tests/api/snapshots/tests.js.snap | Bin 1075 -> 1662 bytes packages/config/tests/api/tests.js | 160 +-- .../config/tests/base/snapshots/tests.js.md | 272 ++++ .../config/tests/base/snapshots/tests.js.snap | Bin 448 -> 700 bytes .../config/tests/cli/snapshots/tests.js.md | 277 +++- .../config/tests/cli/snapshots/tests.js.snap | Bin 1062 -> 1370 bytes .../tests/context/snapshots/tests.js.md | 674 ++++++++++ .../tests/context/snapshots/tests.js.snap | Bin 585 -> 977 bytes .../config/tests/cwd/snapshots/tests.js.md | 396 ++++++ .../config/tests/cwd/snapshots/tests.js.snap | Bin 528 -> 821 bytes .../config/tests/env/fixtures/empty/.gitkeep | 0 .../tests/env/fixtures/file_env/netlify.toml | 2 + .../env/fixtures/file_env_empty/netlify.toml | 2 + .../tests/env/fixtures/readonly/netlify.toml | 2 + packages/config/tests/env/tests.js | 384 ++++++ packages/config/tests/helpers/main.js | 11 +- .../config/tests/load/snapshots/tests.js.md | 1014 +++++++++++++++ .../config/tests/load/snapshots/tests.js.snap | Bin 1013 -> 1388 bytes .../config/tests/log/snapshots/tests.js.md | 426 +++++++ .../config/tests/log/snapshots/tests.js.snap | Bin 751 -> 1038 bytes .../tests/normalize/snapshots/tests.js.md | 902 +++++++++++++ .../tests/normalize/snapshots/tests.js.snap | Bin 769 -> 1178 bytes .../config/tests/parse/snapshots/tests.js.md | 68 + .../tests/parse/snapshots/tests.js.snap | Bin 442 -> 641 bytes .../tests/validate/snapshots/tests.js.snap | Bin 1584 -> 1588 bytes 90 files changed, 6454 insertions(+), 1365 deletions(-) rename packages/build/tests/env/fixtures/{build_readonly => branch}/manifest.yml (100%) rename packages/build/tests/env/fixtures/{build_readonly => branch}/netlify.toml (76%) rename packages/build/tests/env/fixtures/{lang => branch}/plugin.js (67%) delete mode 100644 packages/build/tests/env/fixtures/build_readonly/plugin.js rename packages/build/tests/env/fixtures/{gatsby_telemetry => deploy_id}/manifest.yml (100%) create mode 100644 packages/build/tests/env/fixtures/deploy_id/netlify.toml rename packages/build/tests/env/fixtures/{netlify => deploy_id}/plugin.js (64%) delete mode 100644 packages/build/tests/env/fixtures/empty_string/index.js delete mode 100644 packages/build/tests/env/fixtures/empty_string/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/gatsby_telemetry/plugin.js delete mode 100644 packages/build/tests/env/fixtures/git/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/git/plugin.js delete mode 100644 packages/build/tests/env/fixtures/git_branch/manifest.yml delete mode 100644 packages/build/tests/env/fixtures/git_branch/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/git_branch/plugin.js delete mode 100644 packages/build/tests/env/fixtures/lang/manifest.yml delete mode 100644 packages/build/tests/env/fixtures/lang/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/language/manifest.yml delete mode 100644 packages/build/tests/env/fixtures/language/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/language/plugin.js delete mode 100644 packages/build/tests/env/fixtures/lc_all/manifest.yml delete mode 100644 packages/build/tests/env/fixtures/lc_all/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/netlify/manifest.yml delete mode 100644 packages/build/tests/env/fixtures/netlify/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/next_telemetry/manifest.yml delete mode 100644 packages/build/tests/env/fixtures/next_telemetry/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/next_telemetry/plugin.js rename packages/build/tests/env/fixtures/{git => plugin}/manifest.yml (100%) rename packages/build/tests/env/fixtures/{gatsby_telemetry => plugin}/netlify.toml (100%) rename packages/build/tests/env/fixtures/{lc_all => plugin}/plugin.js (100%) delete mode 100644 packages/build/tests/env/fixtures/site_info/manifest.yml delete mode 100644 packages/build/tests/env/fixtures/site_info/netlify.toml delete mode 100644 packages/build/tests/env/fixtures/site_info/plugin.js rename packages/{build => config}/src/env/git.js (100%) create mode 100644 packages/config/src/env/main.js create mode 100644 packages/config/tests/env/fixtures/empty/.gitkeep create mode 100644 packages/config/tests/env/fixtures/file_env/netlify.toml create mode 100644 packages/config/tests/env/fixtures/file_env_empty/netlify.toml create mode 100644 packages/config/tests/env/fixtures/readonly/netlify.toml create mode 100644 packages/config/tests/env/tests.js diff --git a/packages/build/package-lock.json b/packages/build/package-lock.json index f20479fd06..68474de311 100644 --- a/packages/build/package-lock.json +++ b/packages/build/package-lock.json @@ -1057,12 +1057,83 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, "requires": { "call-me-maybe": "^1.0.1", "glob-to-regexp": "^0.3.0" } }, + "@netlify/cache-utils": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@netlify/cache-utils/-/cache-utils-1.0.6.tgz", + "integrity": "sha512-Pz/TzLZhMUACT+X7Un6jZCXgEUwLPVNbx69DQtEOMZ6hNBE1b1ErTHFbSaHA0KfDn/yqCII5vS274DERvNuRwg==", + "requires": { + "array-flat-polyfill": "^1.0.1", + "cpy": "^8.1.0", + "del": "^5.1.0", + "get-stream": "^5.1.0", + "global-cache-dir": "^1.0.1", + "globby": "^10.0.2", + "locate-path": "^5.0.0", + "make-dir": "^3.1.0", + "move-file": "^1.2.0", + "path-exists": "^4.0.0", + "readdirp": "^3.4.0" + } + }, + "@netlify/config": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@netlify/config/-/config-2.4.3.tgz", + "integrity": "sha512-Uz7Oo3tJP2VTgNgsJtRlwAhO5jTozkpNMCKALb814ssJKx7nE/4QvNxJPCQNBDXY9BSeXVIPfy0vMfshxatL+g==", + "requires": { + "array-flat-polyfill": "^1.0.1", + "chalk": "^3.0.0", + "deepmerge": "^4.2.2", + "execa": "^3.4.0", + "fast-safe-stringify": "^2.0.7", + "figures": "^3.2.0", + "filter-obj": "^2.0.1", + "find-up": "^4.1.0", + "indent-string": "^4.0.0", + "is-plain-obj": "^2.1.0", + "js-yaml": "^4.0.0", + "netlify": "^6.0.0", + "omit.js": "^2.0.2", + "p-locate": "^4.1.0", + "path-exists": "^4.0.0", + "path-type": "^4.0.0", + "toml": "^3.0.0", + "tomlify-j0.4": "^3.0.0", + "validate-npm-package-name": "^3.0.0", + "yargs": "^15.3.0" + } + }, + "@netlify/functions-utils": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-1.3.4.tgz", + "integrity": "sha512-AkVd03D6K7Uwli+t5xTMm5c1jn1HRFY3YgslLV91huHI++3CjOsGpsnDfhoN2kj1aN8OLqliTOvs4PQHC2dKpw==", + "requires": { + "@netlify/zip-it-and-ship-it": "^2.0.0", + "cpy": "^8.1.0", + "path-exists": "^4.0.0" + } + }, + "@netlify/git-utils": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@netlify/git-utils/-/git-utils-1.0.6.tgz", + "integrity": "sha512-JpuvzCTf9QXVEgVA4mSshH6fi9Dtg0Pqe5d19yaN2f1H9DNnWro3kJUaoR68Hfo0rBls6kYwWJuNZ/csb03VuQ==", + "requires": { + "execa": "^3.4.0", + "map-obj": "^4.1.0", + "micromatch": "^4.0.2", + "moize": "^5.4.7", + "path-exists": "^4.0.0" + } + }, + "@netlify/open-api": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-1.0.0.tgz", + "integrity": "sha512-LAicAlsAZXybGtKzaOTmIYelSe82vgZlc17IeNUQxab2IlUCH7VhTKCx9EyJEgiXhLvmYoOjuYE1Ee9ZsnrybA==" + }, "@netlify/plugin-edge-handlers": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@netlify/plugin-edge-handlers/-/plugin-edge-handlers-1.11.0.tgz", @@ -1093,6 +1164,14 @@ "resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-2.2.0.tgz", "integrity": "sha512-8OCwatZIPsyze2KZ8fj21/+luzdTA78fxQ6p7UFLE9IRJlZqCRVXtgiIVd/HtEr6B9OacywX3fV1hVRBVlbmDA==" }, + "@netlify/run-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@netlify/run-utils/-/run-utils-1.0.5.tgz", + "integrity": "sha512-Ovgkw9b7HSLsdhTBA+LNq3KY83gU9DP0xHbwDlg07zLpY3RtRN2IBy11w+nRPjQwfNT33OmuTvayH6amJDku5Q==", + "requires": { + "execa": "^3.4.0" + } + }, "@netlify/zip-it-and-ship-it": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-2.0.2.tgz", @@ -1630,20 +1709,17 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, "array-find-index": { "version": "1.0.2", @@ -1670,20 +1746,17 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "ast-module-types": { "version": "2.7.1", @@ -1704,8 +1777,7 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "ava": { "version": "2.4.0", @@ -2314,6 +2386,14 @@ "estraverse": "^4.1.1" } }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", + "requires": { + "precond": "0.2" + } + }, "bail": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", @@ -2328,7 +2408,6 @@ "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -2343,7 +2422,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -2352,7 +2430,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2361,7 +2438,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2370,7 +2446,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -2390,16 +2465,6 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -2485,6 +2550,11 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==" }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" + }, "byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", @@ -2494,7 +2564,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -2583,8 +2652,7 @@ "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, "call-signature": { "version": "0.0.2", @@ -2726,7 +2794,6 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -2738,13 +2805,22 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } } } }, + "clean-deep": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-3.4.0.tgz", + "integrity": "sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==", + "requires": { + "lodash.isempty": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.transform": "^4.6.0" + } + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -2833,7 +2909,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -2886,8 +2961,7 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "compress-commons": { "version": "3.0.0", @@ -2987,8 +3061,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { "version": "2.6.12", @@ -3032,7 +3105,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/cpy/-/cpy-8.1.1.tgz", "integrity": "sha512-vqHT+9o67sMwJ5hUd/BAOYeemkU+MuFRsK2c36Xc3eefQpAsp1kAsyDxEDcc5JS1+y9l/XHPrIsVTcyGGmkUUQ==", - "dev": true, "requires": { "arrify": "^2.0.1", "cp-file": "^7.0.0", @@ -3048,14 +3120,12 @@ "@nodelib/fs.stat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, "requires": { "array-uniq": "^1.0.1" } @@ -3063,14 +3133,12 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -3088,7 +3156,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3099,7 +3166,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, "requires": { "path-type": "^3.0.0" } @@ -3108,7 +3174,6 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, "requires": { "@mrmlnc/readdir-enhanced": "^2.2.1", "@nodelib/fs.stat": "^1.1.2", @@ -3122,7 +3187,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -3134,7 +3198,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3145,7 +3208,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -3155,7 +3217,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, "requires": { "is-extglob": "^2.1.0" } @@ -3166,7 +3227,6 @@ "version": "9.2.0", "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, "requires": { "@types/glob": "^7.1.1", "array-union": "^1.0.2", @@ -3181,20 +3241,17 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -3203,7 +3260,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -3214,7 +3270,6 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -3235,7 +3290,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, "requires": { "pify": "^3.0.0" }, @@ -3243,22 +3297,19 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" } } }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -3307,6 +3358,11 @@ "array-find-index": "^1.0.1" } }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, "date-time": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", @@ -3350,8 +3406,7 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress-response": { "version": "3.3.0", @@ -3416,7 +3471,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -3426,7 +3480,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -3435,7 +3488,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -3444,7 +3496,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -3792,7 +3843,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -3807,7 +3857,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -3816,7 +3865,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -3825,7 +3873,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3833,8 +3880,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -3847,7 +3893,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -3857,7 +3902,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -3866,7 +3910,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -3877,7 +3920,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -3893,7 +3935,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -3902,7 +3943,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3911,7 +3951,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -3920,7 +3959,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -3929,7 +3967,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -3967,6 +4004,11 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, "fast-stringify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fast-stringify/-/fast-stringify-1.1.2.tgz", @@ -4109,21 +4151,69 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" }, + "flush-write-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-2.0.0.tgz", + "integrity": "sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "folder-walker": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/folder-walker/-/folder-walker-3.2.0.tgz", + "integrity": "sha512-VjAQdSLsl6AkpZNyrQJfO7BXLo4chnStqb055bumZMbRUPpVuPN3a4ktsnRCmrFZjtMlYLkyXiR5rAs4WOpC4Q==", + "requires": { + "from2": "^2.1.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, "requires": { "map-cache": "^0.2.2" } }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "from2-array": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/from2-array/-/from2-array-0.0.4.tgz", + "integrity": "sha1-6vwWtl9uJxm81X/cGGkAWsEzLNY=", + "requires": { + "from2": "^2.0.3" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -4268,8 +4358,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, "glob": { "version": "7.1.6", @@ -4295,8 +4384,7 @@ "glob-to-regexp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" }, "global-cache-dir": { "version": "1.0.1", @@ -4411,7 +4499,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", - "dev": true, "requires": { "is-glob": "^3.0.0" }, @@ -4420,7 +4507,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, "requires": { "is-extglob": "^2.1.0" } @@ -4436,7 +4522,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -4447,7 +4532,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -4456,14 +4540,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -4472,7 +4554,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4483,7 +4564,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4499,7 +4579,6 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, "requires": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -4663,7 +4742,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -4671,14 +4749,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4739,7 +4815,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -4747,14 +4822,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4771,7 +4844,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -4781,8 +4853,7 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -4795,8 +4866,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { "version": "2.1.1", @@ -4948,8 +5018,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-yarn-global": { "version": "0.3.0", @@ -4974,8 +5043,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "jest-get-type": { "version": "24.9.0", @@ -5145,8 +5213,7 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "latest-version": { "version": "5.1.0", @@ -5251,6 +5318,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -5289,6 +5361,11 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, "lodash.islength": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.islength/-/lodash.islength-4.0.1.tgz", @@ -5306,6 +5383,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=" + }, "lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", @@ -5410,8 +5492,7 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-obj": { "version": "4.1.0", @@ -5422,7 +5503,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, "requires": { "object-visit": "^1.0.0" } @@ -5603,6 +5683,11 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, + "micro-api-client": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/micro-api-client/-/micro-api-client-3.3.0.tgz", + "integrity": "sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==" + }, "micro-memoize": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-2.1.2.tgz", @@ -5668,7 +5753,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -5678,7 +5762,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -5687,7 +5770,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -5732,7 +5814,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/move-file/-/move-file-1.2.0.tgz", "integrity": "sha512-USHrRmxzGowUWAGBbJPdFjHzEqtxDU03pLHY0Rfqgtnq+q8FOIs8wvkkf+Udmg77SJKs47y9sI0jJvQeYsmiCA==", - "dev": true, "requires": { "cp-file": "^6.1.0", "make-dir": "^3.0.0", @@ -5743,7 +5824,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "make-dir": "^2.0.0", @@ -5756,7 +5836,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, "requires": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -5767,14 +5846,12 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -5787,7 +5864,6 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -5807,6 +5883,34 @@ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" }, + "netlify": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/netlify/-/netlify-6.0.12.tgz", + "integrity": "sha512-WAOvHMmd4E/SF8wagbbg0/HV2CXNsmKHvqxJ1carJ6eX1xhqtvLs5xjNL6fFqajj8Qmyl02YmHIq3eb6yyFRWA==", + "requires": { + "@netlify/open-api": "^1.0.0", + "@netlify/zip-it-and-ship-it": "^2.0.0", + "backoff": "^2.5.0", + "clean-deep": "^3.3.0", + "flush-write-stream": "^2.0.0", + "folder-walker": "^3.2.0", + "from2-array": "0.0.4", + "hasha": "^5.0.0", + "lodash.camelcase": "^4.3.0", + "micro-api-client": "^3.3.0", + "node-fetch": "^2.2.0", + "omit.js": "^2.0.2", + "p-map": "^3.0.0", + "p-wait-for": "^3.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "qs": "^6.9.3", + "rimraf": "^3.0.2", + "tempy": "^0.3.0", + "through2-filter": "^3.0.0", + "through2-map": "^3.0.0" + } + }, "netlify-plugin-deploy-preview-commenting": { "version": "0.0.1-alpha.16", "resolved": "https://registry.npmjs.org/netlify-plugin-deploy-preview-commenting/-/netlify-plugin-deploy-preview-commenting-0.0.1-alpha.16.tgz", @@ -5953,7 +6057,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -5964,7 +6067,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -5972,14 +6074,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -6011,7 +6111,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, "requires": { "isobject": "^3.0.0" } @@ -6031,7 +6130,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -6046,6 +6144,11 @@ "symbol-observable": "^1.0.4" } }, + "omit.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz", + "integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6179,7 +6282,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz", "integrity": "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==", - "dev": true, "requires": { "p-map": "^2.0.0" }, @@ -6187,8 +6289,7 @@ "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" } } }, @@ -6209,7 +6310,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dev": true, "requires": { "p-map": "^2.0.0" }, @@ -6217,8 +6317,7 @@ "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" } } }, @@ -6269,6 +6368,14 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "requires": { + "p-timeout": "^3.0.0" + } + }, "package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", @@ -6305,6 +6412,32 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, "parse-github-repo-url": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", @@ -6334,14 +6467,12 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { "version": "4.0.0", @@ -6399,8 +6530,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "pinkie": { "version": "2.0.4", @@ -6512,8 +6642,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { "version": "7.0.35", @@ -6590,6 +6719,11 @@ "node-source-walk": "^4.2.0" } }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -6688,6 +6822,11 @@ "escape-goat": "^2.0.0" } }, + "qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + }, "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", @@ -6812,7 +6951,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -6911,14 +7049,12 @@ "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "require-directory": { "version": "2.1.1", @@ -6968,8 +7104,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "responselike": { "version": "1.0.2", @@ -6992,8 +7127,7 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "reusify": { "version": "1.0.4", @@ -7086,7 +7220,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, "requires": { "ret": "~0.1.10" } @@ -7143,7 +7276,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -7155,7 +7287,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -7164,7 +7295,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -7249,7 +7379,6 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -7265,7 +7394,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -7274,7 +7402,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -7283,7 +7410,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -7291,8 +7417,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -7300,7 +7425,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -7311,7 +7435,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -7320,7 +7443,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -7329,7 +7451,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -7338,7 +7459,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -7351,7 +7471,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, "requires": { "kind-of": "^3.2.0" }, @@ -7359,14 +7478,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -7382,7 +7499,6 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -7410,8 +7526,7 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "sourcemap-codec": { "version": "1.4.8", @@ -7455,7 +7570,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, "requires": { "extend-shallow": "^3.0.0" } @@ -7500,7 +7614,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -7510,7 +7623,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -7718,6 +7830,63 @@ "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" + }, + "dependencies": { + "bl": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", + "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "dependencies": { + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + } } }, "term-size": { @@ -7742,6 +7911,49 @@ } } }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "through2-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-map/-/through2-map-3.0.0.tgz", + "integrity": "sha1-psMCbOY7SJipl9VAUGtm/9lw8nE=", + "requires": { + "through2": "~2.0.0", + "xtend": "^4.0.0" + } + }, "time-zone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", @@ -7773,7 +7985,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -7781,14 +7992,12 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -7804,7 +8013,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -7820,6 +8028,16 @@ "is-number": "^7.0.0" } }, + "toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + }, + "tomlify-j0.4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz", + "integrity": "sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==" + }, "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", @@ -7935,7 +8153,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -8021,7 +8238,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -8031,7 +8247,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -8042,7 +8257,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "requires": { "isarray": "1.0.0" } @@ -8052,8 +8266,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" } } }, @@ -8080,8 +8293,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, "url-parse-lax": { "version": "3.0.0", @@ -8094,8 +8306,7 @@ "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "util-deprecate": { "version": "1.0.2", @@ -8116,6 +8327,14 @@ "spdx-expression-parse": "^3.0.0" } }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "requires": { + "builtins": "^1.0.3" + } + }, "vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", diff --git a/packages/build/src/core/config.js b/packages/build/src/core/config.js index eec63b60a0..bd440a0fd0 100644 --- a/packages/build/src/core/config.js +++ b/packages/build/src/core/config.js @@ -1,6 +1,7 @@ 'use strict' const resolveConfig = require('@netlify/config') +const mapObj = require('map-obj') const { getChildEnv } = require('../env/main') const { addApiErrorHandlers } = require('../error/api') @@ -24,6 +25,7 @@ const tLoadConfig = async function ({ envOpt, debug, mode, + offline, deployId, logs, testOpts, @@ -33,10 +35,10 @@ const tLoadConfig = async function ({ buildDir, config: netlifyConfig, context: contextA, - branch: branchA, token: tokenA, api, siteInfo, + env, } = await resolveFullConfig({ config, defaultConfig, @@ -48,26 +50,18 @@ const tLoadConfig = async function ({ baseRelDir, token, siteId, + deployId, mode, + offline, envOpt, testOpts, }) logConfigInfo({ logs, configPath, buildDir, netlifyConfig, context: contextA, debug }) const apiA = addApiErrorHandlers(api) - const [childEnv, { packageJson }] = await Promise.all([ - getChildEnv({ - netlifyConfig, - buildDir, - context: contextA, - branch: branchA, - siteInfo, - deployId, - envOpt, - mode, - }), - getPackageJson(buildDir), - ]) + const envValues = mapObj(env, (key, { value }) => [key, value]) + const childEnv = getChildEnv({ envOpt, env: envValues }) + const { packageJson } = await getPackageJson(buildDir) return { netlifyConfig, configPath, buildDir, packageJson, childEnv, token: tokenA, api: apiA, siteInfo } } @@ -86,7 +80,9 @@ const resolveFullConfig = async function ({ baseRelDir, token, siteId, + deployId, mode, + offline, envOpt, testOpts, }) { @@ -102,7 +98,9 @@ const resolveFullConfig = async function ({ baseRelDir, token, siteId, + deployId, mode, + offline, env: envOpt, testOpts, }) diff --git a/packages/build/src/core/flags.js b/packages/build/src/core/flags.js index 1be0fa4b91..c8d3d39524 100644 --- a/packages/build/src/core/flags.js +++ b/packages/build/src/core/flags.js @@ -135,6 +135,11 @@ Default: true`, describe: 'Statsd port', hidden: true, }, + offline: { + boolean: true, + describe: `Do not send requests to the Netlify API to retrieve site settings. +Default: false`, + }, buffer: { boolean: true, describe: 'Buffer output instead of printing it', diff --git a/packages/build/src/core/main.js b/packages/build/src/core/main.js index 450c34236a..a9ce5df406 100644 --- a/packages/build/src/core/main.js +++ b/packages/build/src/core/main.js @@ -120,6 +120,7 @@ const tExecBuild = async function ({ functionsDistDir, dry, mode, + offline, deployId, testOpts, featureFlags, @@ -154,6 +155,7 @@ const tExecBuild = async function ({ envOpt, debug, mode, + offline, deployId, logs, testOpts, diff --git a/packages/build/src/core/normalize_flags.js b/packages/build/src/core/normalize_flags.js index 271cfc020f..786a178cde 100644 --- a/packages/build/src/core/normalize_flags.js +++ b/packages/build/src/core/normalize_flags.js @@ -33,6 +33,7 @@ const getDefaultFlags = function ({ env: envOpt = {}, mode = REQUIRE_MODE }) { nodePath: execPath, token: combinedEnv.NETLIFY_AUTH_TOKEN, mode: REQUIRE_MODE, + offline: false, functionsDistDir: DEFAULT_FUNCTIONS_DIST, deployId: combinedEnv.DEPLOY_ID, debug: Boolean(combinedEnv.NETLIFY_BUILD_DEBUG), diff --git a/packages/build/src/env/main.js b/packages/build/src/env/main.js index ccbf01e5bd..ab4acfbde2 100644 --- a/packages/build/src/env/main.js +++ b/packages/build/src/env/main.js @@ -5,35 +5,12 @@ const { env } = require('process') const filterObj = require('filter-obj') const { getParentColorEnv } = require('../log/colors') -const { omit } = require('../utils/omit') - -const { getGitEnv } = require('./git') // Retrieve the environment variables passed to plugins and `build.command` // When run locally, this tries to emulate the production environment. -const getChildEnv = async function ({ netlifyConfig, buildDir, branch, context, siteInfo, deployId, envOpt, mode }) { - const parentEnv = getParentEnv(envOpt) - - if (mode === 'buildbot') { - return parentEnv - } - - const defaultEnv = getDefaultEnv() - const configurableEnv = getConfigurableEnv() - const configEnv = getConfigEnv(netlifyConfig, deployId) - const forcedEnv = await getForcedEnv({ buildDir, branch, context, siteInfo }) - return { - ...defaultEnv, - ...parentEnv, - ...configurableEnv, - ...configEnv, - ...forcedEnv, - } -} - -// Current process's environment variables, with some of them removed -const getParentEnv = function (envOpt) { - const parentEnv = { ...env, ...envOpt } +const getChildEnv = function ({ envOpt, env: allConfigEnv }) { + const parentColorEnv = getParentColorEnv() + const parentEnv = { ...env, ...allConfigEnv, ...envOpt, ...parentColorEnv } return filterObj(parentEnv, shouldKeepEnv) } @@ -43,81 +20,4 @@ const shouldKeepEnv = function (key) { const REMOVED_PARENT_ENV = new Set(['bugsnag_key']) -// Environment variables that can be unset by local ones or configuration ones -const getDefaultEnv = function () { - return {} -} - -// Environment variables that can be unset by configuration ones but not local -const getConfigurableEnv = function () { - const parentColorEnv = getParentColorEnv() - return { - // Localization - LANG: 'en_US.UTF-8', - LANGUAGE: 'en_US:en', - LC_ALL: 'en_US.UTF-8', - // Disable telemetry of some tools - GATSBY_TELEMETRY_DISABLED: '1', - NEXT_TELEMETRY_DISABLED: '1', - // Colors - ...parentColorEnv, - } -} - -// Environment variables specified in UI settings, in `build.environment` or -// in CLI flags -const getConfigEnv = function ({ build: { environment } }, deployId) { - const deployIdEnv = deployId === undefined ? {} : { DEPLOY_ID: deployId } - const configEnv = omit(environment, READONLY_ENV) - return { ...deployIdEnv, ...configEnv } -} - -// Those environment variables cannot be overriden by configuration -const READONLY_ENV = [ - // Set in local builds - 'BRANCH', - 'CACHED_COMMIT_REF', - 'COMMIT_REF', - 'CONTEXT', - 'HEAD', - 'REPOSITORY_URL', - 'URL', - - // Purposely left unset in local builds - 'NETLIFY', - - // Not set in local builds because there is CI build/deploy, incoming hooks nor PR - 'BUILD_ID', - 'DEPLOY_ID', - 'DEPLOY_PRIME_URL', - 'DEPLOY_URL', - 'INCOMING_HOOK_BODY', - 'INCOMING_HOOK_TITLE', - 'INCOMING_HOOK_URL', - 'NETLIFY_BUILD_BASE', - 'NETLIFY_BUILD_LIFECYCLE_TRIAL', - 'NETLIFY_IMAGES_CDN_DOMAIN', - 'PULL_REQUEST', - 'REVIEW_ID', -] - -// Environment variables that can be unset by neither local nor configuration -const getForcedEnv = async function ({ - buildDir, - branch, - context, - siteInfo: { url, build_settings: { repo_url: REPOSITORY_URL } = {} }, -}) { - const gitEnv = await getGitEnv(buildDir, branch) - return { - // Netlify Site information - ...(url === undefined ? {} : { URL: url }), - ...(REPOSITORY_URL === undefined ? {} : { REPOSITORY_URL }), - // Configuration file context - CONTEXT: context, - // Git-related environment variables - ...gitEnv, - } -} - module.exports = { getChildEnv } diff --git a/packages/build/tests/core/snapshots/tests.js.md b/packages/build/tests/core/snapshots/tests.js.md index f1e059c740..c8acab9850 100644 --- a/packages/build/tests/core/snapshots/tests.js.md +++ b/packages/build/tests/core/snapshots/tests.js.md @@ -22,6 +22,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -585,6 +653,9 @@ Generated by [AVA](https://ava.li). Default: Current Node.js binary [string]␊ --telemetry Enable telemetry.␊ Default: true [boolean]␊ + --offline Do not send requests to the Netlify API to retrieve site␊ + settings.␊ + Default: false [boolean]␊ --buffer Buffer output instead of printing it [boolean]` ## --node-path is not used by core plugins diff --git a/packages/build/tests/core/snapshots/tests.js.snap b/packages/build/tests/core/snapshots/tests.js.snap index 6600aa708ec54b4b930df95eca45c74d6363b8be..14136596f4e2c543f6d8e2dd8a063a75deb95f5a 100644 GIT binary patch literal 3667 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 literal 3406 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 kbra+o9 Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - build:␊ - command: node index.js␊ - commandOrigin: config␊ - ␊ - > Context␊ - production␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. build.command from netlify.toml ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - $ node index.js␊ - undefined␊ - ␊ - (build.command completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Empty string environment variables - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - build:␊ - command: node index.js␊ - commandOrigin: config␊ - environment:␊ - - TEST␊ - ␊ - > Context␊ - production␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. build.command from netlify.toml ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - $ node index.js␊ - Contains TEST environment variable true␊ - ␊ - (build.command completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable CONTEXT - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - production␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable GATSBY_TELEMETRY_DISABLED - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - 1␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable LANG - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - en_US.UTF-8␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable LANGUAGE - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - en_US:en␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable LC_ALL - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - en_US.UTF-8␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable NETLIFY CI - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - mode: buildbot␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - true␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable NETLIFY local - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - undefined␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable NEXT_TELEMETRY_DISABLED +## BRANCH environment variables is set with --branch > Snapshot 1 @@ -482,6 +17,7 @@ Generated by [AVA](https://ava.li). @netlify/build 1.0.0␊ ␊ > Flags␊ + branch: test␊ debug: true␊ featureFlags: {}␊ repositoryRoot: /file/path␊ @@ -496,6 +32,9 @@ Generated by [AVA](https://ava.li). /file/path␊ ␊ > Resolved config␊ + build:␊ + environment:␊ + - TEST␊ plugins:␊ - inputs: {}␊ origin: config␊ @@ -511,7 +50,7 @@ Generated by [AVA](https://ava.li). 1. onPreBuild command from /file/path ␊ ────────────────────────────────────────────────────────────────␊ ␊ - 1␊ + test␊ ␊ (/file/path onPreBuild completed in 1ms)␊ ␊ @@ -521,7 +60,7 @@ Generated by [AVA](https://ava.li). ␊ (Netlify Build completed in 1ms)` -## Environment variable git +## CONTEXT environment variables is set with --context > Snapshot 1 @@ -534,6 +73,7 @@ Generated by [AVA](https://ava.li). @netlify/build 1.0.0␊ ␊ > Flags␊ + context: test␊ debug: true␊ featureFlags: {}␊ repositoryRoot: /file/path␊ @@ -548,13 +88,16 @@ Generated by [AVA](https://ava.li). /file/path␊ ␊ > Resolved config␊ + build:␊ + environment:␊ + - TEST␊ plugins:␊ - inputs: {}␊ origin: config␊ package: /file/path␊ ␊ > Context␊ - production␊ + test␊ ␊ > Loading plugins␊ - /file/path from netlify.toml␊ @@ -563,11 +106,7 @@ Generated by [AVA](https://ava.li). 1. onPreBuild command from /file/path ␊ ────────────────────────────────────────────────────────────────␊ ␊ - true␊ - true␊ - true␊ - true␊ - false␊ + test␊ ␊ (/file/path onPreBuild completed in 1ms)␊ ␊ @@ -577,7 +116,7 @@ Generated by [AVA](https://ava.li). ␊ (Netlify Build completed in 1ms)` -## Environment variable git no repository +## DEPLOY_ID environment variables is set with --deploy-id > Snapshot 1 @@ -591,6 +130,7 @@ Generated by [AVA](https://ava.li). ␊ > Flags␊ debug: true␊ + deployId: test␊ featureFlags: {}␊ repositoryRoot: /file/path␊ testOpts:␊ @@ -604,6 +144,9 @@ Generated by [AVA](https://ava.li). /file/path␊ ␊ > Resolved config␊ + build:␊ + environment:␊ + - TEST␊ plugins:␊ - inputs: {}␊ origin: config␊ @@ -619,11 +162,7 @@ Generated by [AVA](https://ava.li). 1. onPreBuild command from /file/path ␊ ────────────────────────────────────────────────────────────────␊ ␊ - true␊ - true␊ - false␊ - false␊ - false␊ + test␊ ␊ (/file/path onPreBuild completed in 1ms)␊ ␊ @@ -633,7 +172,7 @@ Generated by [AVA](https://ava.li). ␊ (Netlify Build completed in 1ms)` -## Environment variable git with --branch +## Does not pass BUGSNAG_KEY to build command and plugins > Snapshot 1 @@ -646,7 +185,6 @@ Generated by [AVA](https://ava.li). @netlify/build 1.0.0␊ ␊ > Flags␊ - branch: test␊ debug: true␊ featureFlags: {}␊ repositoryRoot: /file/path␊ @@ -661,24 +199,21 @@ Generated by [AVA](https://ava.li). /file/path␊ ␊ > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ + build:␊ + command: node index.js␊ + commandOrigin: config␊ ␊ > Context␊ production␊ ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ + 1. build.command from netlify.toml ␊ ────────────────────────────────────────────────────────────────␊ ␊ - test test␊ + $ node index.js␊ + undefined␊ ␊ - (/file/path onPreBuild completed in 1ms)␊ + (build.command completed in 1ms)␊ ␊ ────────────────────────────────────────────────────────────────␊ Netlify Build Complete ␊ @@ -735,62 +270,7 @@ Generated by [AVA](https://ava.li). ␊ (Netlify Build completed in 1ms)` -## Environment variable siteInfo empty - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - siteId: test␊ - testOpts:␊ - host: /file/path␊ - pluginsListUrl: test␊ - scheme: http␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - { SITE_ID: 'test', URL: undefined, REPOSITORY_URL: undefined }␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` - -## Environment variable siteInfo success +## Environment variables are set in plugins > Snapshot 1 @@ -806,11 +286,8 @@ Generated by [AVA](https://ava.li). debug: true␊ featureFlags: {}␊ repositoryRoot: /file/path␊ - siteId: test␊ testOpts:␊ - host: /file/path␊ pluginsListUrl: test␊ - scheme: http␊ silentLingeringProcesses: true␊ ␊ > Current directory␊ @@ -835,7 +312,7 @@ Generated by [AVA](https://ava.li). 1. onPreBuild command from /file/path ␊ ────────────────────────────────────────────────────────────────␊ ␊ - { SITE_ID: 'test', URL: 'test', REPOSITORY_URL: 'test' }␊ + en_US.UTF-8␊ ␊ (/file/path onPreBuild completed in 1ms)␊ ␊ @@ -845,7 +322,7 @@ Generated by [AVA](https://ava.li). ␊ (Netlify Build completed in 1ms)` -## build.environment +## build.environment are set in plugins > Snapshot 1 @@ -899,58 +376,3 @@ Generated by [AVA](https://ava.li). ────────────────────────────────────────────────────────────────␊ ␊ (Netlify Build completed in 1ms)` - -## build.environment readonly - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - build:␊ - environment:␊ - - NETLIFY␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - true␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build Complete ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - (Netlify Build completed in 1ms)` diff --git a/packages/build/tests/env/snapshots/tests.js.snap b/packages/build/tests/env/snapshots/tests.js.snap index 13aab1b17ddd1ed5b6a6204ceef57c70d2a5ed33..b642fff0b45e13c1ced3796edea73fae307050de 100644 GIT binary patch literal 909 zcmV;819JR9RzVInmc8dfujh}jx)=9Anbxi`!?(w21qOspNd z_3Xl-Eu+ElYgab<-*b-i_67i&gUQR|AGc3UzIw3u>D%W!oFm;<2f)KKLiWq^&BrsZ zyYDAYzld{=^tvB_g;{kU@LhbIO^nW;tDWD&xzb$#G|Wv;Ph1LUb@e-+PQCozz&TQ5 zHvnts$?d__g7r09ef-S%6RY~gL)eQ)N&*)Ocv_bVUN?K_Fn#4l%R|<)yMUbNu;Mh175u{^7F)0qK5LIxrj>4czG&8DbX+-E-Kfw|*3}oc@rN`;8 z2%%G;tPmvGo6&VeJJ~a^mQvEtmX+xSkb%`>NQRO#iRv9|-BU?8mlHKvfJn+<=4=y{ zLiqvnP<8C4k|-8sYVOi5ytBvhqH;KSq6Je1W38W{LIYX`agptwE=V^40!8MQdW3=3 zdoiyFyoVWhy%2MD6aBxSExx@n+%nuU+*VENtq8YA8E(B0^S{TfjC2)`^vDHNGX66D z{+p^~{AK)Q{QW(DTN!`75Oa3jWgK0x>S7$_kv5cwg%a_u;9iDPhSOi-6f>N9A?B6f jG)Y8F%CLWJ*=2S`Ymz~jU1k}5%cA@P+B>z@WHyXP9m zqQ|Ep^pShZ!qc<69-7_#^s1eccL^Me78M}0Gk^OpM;?!UuP$A@VeOj34vs}nKS`gl z``pK6bB;Ss-S~F%jKIU49E(=WMaX%6;(?8&k%N2dPP}pKsr4MkqU{1gQ;z0s+mtVU zu|v_GU9@@1IgUk7RwHz%XSeHoUu7X*^x2IE)?Yiyv1p+Sp)+so?{mCXm3MW{g%$3u z9kf4Iw6zhTrMXp;{#fJQGV{AH`?m5+E^{pU!*dADZ+K+w*H%L6kjDyCO*EP5h@(De#Wd;jvAN3Jegb!g7?1utz_6+zF57@V(ns-_>^>V-GPEIkXbj#AQXoncnXH5#Swo z5z!4Kt0#7slrt)Yu4@vy8KZrL!KbwyyUtihnGsHR(1 z!$hYKjk*>jhCz(vcIocSkLx;J1WU3`g4V|9dMR77meACY9L82`M4Oiwn$k)n9Apd8 zcGla(UIn#iR8%DalVC){1q-TuO*JikpVRGJ==6D8{I#y8>KeDRHg(|!U8X$|2A(gm zd6TqR-HGX%6c3u#@ZSA%1=AUk7_5?H*KtVKqBuEgN=z-P*t}W_ZaXo`d45*<7}1|G zg_v~4$to_78nbON719r!^OJoXM+eSX=_4>A%V}6T082aM9I(74mZ~NZI_)LWR6B)vPn{IFRn%oMppfJY2297p zfi)vcCjh2)$T?v8uP_BJZCo3}xs20aLb6IE0C9XA95Vv30zkAw&H==MT}kX$F`ewO zxH-@x>!yu7p`zl3Lm=t4l$4mr;R(SRAlN)RW zTSv2X2iR(dod0(xsI-B&q(L^*ZH;Kg@a4w>Hy9yN3R%Q7V<0dHY`3Cp$4xGu)9|_*3Gz1HcBbM+Lhcz_vrq?DIkcGEu0akdc7971})dh~iTeX1b7>G6kqISqRAPR_Pt-1iw#K|ao z2#Jc3{s_DRuW+%dt#b~%0kzDlYhpp%vBiA>#I-}tLEPJl%l^*|aGSj%1a5iwGDhGQ zK9OwyoCCMuXx6F=9EDFL1E>Fp(@Nmf4mk%-fzzy27jT;3R3Pw?DX=sx%YOrDywLtG Gh5!INf&M)J diff --git a/packages/build/tests/env/tests.js b/packages/build/tests/env/tests.js index 97d0841c77..5377758d50 100644 --- a/packages/build/tests/env/tests.js +++ b/packages/build/tests/env/tests.js @@ -5,18 +5,9 @@ const { platform } = require('process') const test = require('ava') const { runFixture } = require('../helpers/main') -const { startServer } = require('../helpers/server') -test('Environment variable git', async (t) => { - await runFixture(t, 'git') -}) - -test('Environment variable git with --branch', async (t) => { - await runFixture(t, 'git_branch', { flags: { branch: 'test' } }) -}) - -test('Environment variable git no repository', async (t) => { - await runFixture(t, 'git', { copyRoot: { git: false } }) +test('Environment variables are set in plugins', async (t) => { + await runFixture(t, 'plugin') }) // Windows environment variables work differently @@ -26,66 +17,23 @@ if (platform !== 'win32') { }) } -test('Environment variable GATSBY_TELEMETRY_DISABLED', async (t) => { - await runFixture(t, 'gatsby_telemetry') -}) - -test('Environment variable NEXT_TELEMETRY_DISABLED', async (t) => { - await runFixture(t, 'next_telemetry') -}) - -test('Environment variable NETLIFY local', async (t) => { - await runFixture(t, 'netlify') -}) - -test('Environment variable NETLIFY CI', async (t) => { - await runFixture(t, 'netlify', { flags: { mode: 'buildbot' }, env: { NETLIFY: 'true' } }) -}) - -test('Environment variable LANG', async (t) => { - await runFixture(t, 'lang') -}) - -test('Environment variable LANGUAGE', async (t) => { - await runFixture(t, 'language') -}) - -test('Environment variable LC_ALL', async (t) => { - await runFixture(t, 'lc_all') -}) - -test('Environment variable CONTEXT', async (t) => { - await runFixture(t, 'context') -}) - -const SITE_INFO_PATH = '/api/v1/sites/test' -const SITE_INFO_DATA = { url: 'test', build_settings: { repo_url: 'test' } } - -test('Environment variable siteInfo success', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_DATA }) - await runFixture(t, 'site_info', { flags: { token: 'test', siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() -}) - -test('Environment variable siteInfo empty', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH }) - await runFixture(t, 'site_info', { flags: { token: 'test', siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() +test('build.environment are set in plugins', async (t) => { + await runFixture(t, 'build') }) -test('Empty string environment variables', async (t) => { - await runFixture(t, 'empty_string') +const BUGSNAG_TEST_KEY = '00000000000000000000000000000000' +test('Does not pass BUGSNAG_KEY to build command and plugins', async (t) => { + await runFixture(t, 'bugsnag_key', { env: { BUGSNAG_KEY: BUGSNAG_TEST_KEY } }) }) -test('build.environment', async (t) => { - await runFixture(t, 'build') +test('BRANCH environment variables is set with --branch', async (t) => { + await runFixture(t, 'branch', { flags: { branch: 'test' } }) }) -test('build.environment readonly', async (t) => { - await runFixture(t, 'build_readonly') +test('DEPLOY_ID environment variables is set with --deploy-id', async (t) => { + await runFixture(t, 'deploy_id', { flags: { deployId: 'test' } }) }) -const BUGSNAG_TEST_KEY = '00000000000000000000000000000000' -test('Does not pass BUGSNAG_KEY to build command and plugins', async (t) => { - await runFixture(t, 'bugsnag_key', { env: { BUGSNAG_KEY: BUGSNAG_TEST_KEY } }) +test('CONTEXT environment variables is set with --context', async (t) => { + await runFixture(t, 'context', { flags: { context: 'test' } }) }) diff --git a/packages/build/tests/error/snapshots/tests.js.md b/packages/build/tests/error/snapshots/tests.js.md index 7cfa824457..a7fad02014 100644 --- a/packages/build/tests/error/snapshots/tests.js.md +++ b/packages/build/tests/error/snapshots/tests.js.md @@ -79,97 +79,6 @@ Generated by [AVA](https://ava.li). ␊ node: bad option: --invalid` -## Early exit - -> Snapshot 1 - - `␊ - ────────────────────────────────────────────────────────────────␊ - Netlify Build ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - > Version␊ - @netlify/build 1.0.0␊ - ␊ - > Flags␊ - debug: true␊ - featureFlags: {}␊ - repositoryRoot: /file/path␊ - testOpts:␊ - pluginsListUrl: test␊ - silentLingeringProcesses: true␊ - ␊ - > Current directory␊ - /file/path␊ - ␊ - > Config file␊ - /file/path␊ - ␊ - > Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - ␊ - > Context␊ - production␊ - ␊ - > Loading plugins␊ - - /file/path from netlify.toml␊ - - /file/path from netlify.toml␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 1. onPreBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - ␊ - (/file/path onPreBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 2. onBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - ␊ - (/file/path onBuild completed in 1ms)␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - 3. onPostBuild command from /file/path ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - ␊ - ────────────────────────────────────────────────────────────────␊ - Plugin "/file/path" internal error ␊ - ────────────────────────────────────────────────────────────────␊ - ␊ - Error message␊ - Could not receive event from child process because it already exited.␊ - The plugin might have exited due to a bug terminating the process, such as an infinite loop.␊ - The plugin might also have explicitly terminated the process, for example with process.exit().␊ - Plugin methods should instead:␊ - - on success: return␊ - - on failure: call utils.build.failPlugin() or utils.build.failBuild()␊ - ␊ - Plugin details␊ - Package: /file/path␊ - Version: 1.0.0␊ - Repository: git+https://github.com/netlify/build.git␊ - Report issues: https://github.com/netlify/build/issues␊ - ␊ - Error location␊ - In "onPostBuild" event in "/file/path" from netlify.toml␊ - ␊ - Resolved config␊ - plugins:␊ - - inputs: {}␊ - origin: config␊ - package: /file/path␊ - - inputs: {}␊ - origin: config␊ - package: /file/path` - ## Exits in plugins > Snapshot 1 @@ -933,6 +842,7 @@ Generated by [AVA](https://ava.li). featureFlags: {}␊ repositoryRoot: /file/path␊ testOpts:␊ + env: false␊ errorMonitor: true␊ pluginsListUrl: test␊ silentLingeringProcesses: true␊ @@ -2873,6 +2783,7 @@ Generated by [AVA](https://ava.li). featureFlags: {}␊ repositoryRoot: /file/path␊ testOpts:␊ + env: false␊ host: ...␊ pluginsListUrl: test␊ silentLingeringProcesses: true␊ diff --git a/packages/build/tests/error/snapshots/tests.js.snap b/packages/build/tests/error/snapshots/tests.js.snap index 501d1ed28bfac2ad59804a7ca59d89b581a51eec..4f3209d8a8e2bd2b06eec8d54b085963282c5f11 100644 GIT binary patch literal 7270 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 AHvj+t literal 7806 zcmY*;RZtvE6D{rzf#59e4vV|HyF-uw!QBb&1b4||0fGceaCdiicUxqU%m3Y~TXpAQ z=DhSwP0Q)-8F3wP3e9ik&Th6&?i8M!C@@e@7m5{M_^^haBkB+5=B>5JW09c#8?fib zsNTf$Y5B-L00kU_!hLL47g*O&8kz>RVwiq;k{uxjU>z<>7(1DWYLSth*g*2wOuKoE~oj^vKPUh@9rojqM1pyCIq35+pO3dxo!xa`eZ* zU_qXo&4thf|3mI=0oOx5lj<|u%eb%aVQQ&z{37e?3oOAH7W^|8mso;vgwxB@ z_CuBM;f?);C|I`|7#sJzL@n;!cAlD-vDRFE3h}!j0S4XQZN|h2?DmE_e?2-CC5A{n zfa(N0I;hEeEWw(YkjsQnTj79g%M4jm;YX$GtqwRlr{@zKKgs&6&(?5r+QyVK^@a3iCKD-oJct-&y#S zcxg<}dE!Wb-1E4FI*j_p=3I3%)M}Ftc~u=FAmm|1?I9o#Vz)e~_A*_YyQ{GwZQX18 zBPAo;m_gF+JKW*uM*eylqkJW;wd=SF`kTW00&~ zW=w;$C~|j`#^%xJUoWmqw&3b|fS0W9v?S+!HQnS=LC2d{>uGt&Q-H6RW2hplkkGo4(E*#0~s#HHu!K8<0Ib0rNewQ_8@8Abfk$ZZT z*8%REpiwqTa+8;KJDZE=ZQaB`@LNUhKVMqHN?g&0)y1H|huJ}+$BExOA@Q1gjklJ? zg+ZPRb*-ubkg&=2$BKZA+{e?rT;FRW^{Eb_n$yZoQ|>Q*m-?90o)52anv#mr+o`A* z&j;4qzt&B?6@C4VM^~M;=6U}rq&mEK3|5J{o($?n_spM`v2!~YtWDMO~pIvTIbb_;ymUhFr0V>B1-i>DUAt-71fw|(UA z4}=+_SFXKHk$m?jqf*S|gcGzuFk(O;XTs5^@rjr8G zG`)hp%WdBsUv3t$*tY8D{CjF`u4zfvbZSw?!%%92lqh2sJStXlxakQ5z8>=5gIcA{ zMm}E;H zn<4$Jzo&JSpB8Q}h5c~LL|#GkZI1&S)14yVGtJXd5!b%E1COBnIh%ak@KUCY*1MzE z=2HAN$XfluX3zz-O8W(7AFI&y+zxrw>s^zb#Uhte-n=Jt*+@-PPfkI{ugli=dzIU) znN2~J<(nOD72#WS^~asJ0prbNPobtKSo^mr$c00!=6z>$4}nU-5`$>t^Fq^OV$+-B zh$#7Fg;OUT%Da!x?RsTejwp`b9r)?}Mm6#BaE@*u9$TR1P4>n9`F%{l!l?6VhAShF zGeUikbogCFz%I^te{VPg#Iu`m{#OE%m>HV38Wl6}5K=xq;Q?99k!;uWl61tOg&Y8>r#R}h29vP&i1|&cN4U?nU zfW4RORGg`kQDl7?o+SSpq_2oqjYzy#fFYStXJ;`hk|6|cYcNlur7!)gS2`&+G3p1k zBC)umfLYv7Y&lw6Q5nD&VYNV?6oB{E0sz@oH0-;lz8ytKB*?na)gET-nN%Rk#$GyX zdo<87NG6tiiB$-m$~e-9yBqkc8@$fo#TY~Ei?eKjV(6=JAC5nPL1lc(&b}z2uS!e9 zG62b5^m=DBfAxYcI!Ms@-7A$^E}qU!SULI$b<)PVxcfaFuLytPm6}6RYIpd7RawCh z*#e)nw{FcvJA)>ccr6W?vn83if^pu5Ddf*vl#6C;iF^3xS~CFfd%0;H&Ky>?jdf|r z>dw4E6(EMFJlcWc4*jnm4pmA|M2Xo~^#v+r1)NyCGirQWa~m5(dt3*JQfV~4I$QDr zo>t_3YDG%N&==0Mh6vu(mSdX%)sgZ(3>nx4FLVdBaZQ?8P+p3Lf~018Tk35#*^mvd z6TppF5%V8{4anAAhUk${I3iyqnNE*BD;kiOeu~f;91V#A)^pxjc~a7qHNtV&GM4TX zZA4?|xro^|;gN>S{)xpak8YNiN5IaP_V)z0h3u)yLOodmcV|wv&P=W9TL)<7_Y#X! zifs1sf0FRlx-@r(;{g+@gU%5^dN>+;3Z}siYgf~-EdQXl0aTs8ZhyUW4}{pQm?88m zw5#(h#pE52z%9rLiLYbbW4mJfYn9E)@i_BV8l;_ZN8R?YVuv>xuzTuzKE(fA#@Vy9 z5@S#~F>*6Vx%At--k8^Rl0qaQ#coz&{jJ2R>B(r;z(e*oM zaraND%Kg>304ZaXL~Yd@mnN8n<|L>w?{#a2o*Hz$>fG zdaqI{sPu`J4Uu^7_Zl{Kr-o-|?x3PK3o{~L)f+CiKMb_e)R!W;_>!{rsa)`4pKm?n z?gvb2B$>E8XLDFYZ}hhOsI5vRjF$pwF`gkMISWd(k?~T^=}yDB=A`yv=eHg7J%JU! z(5;_a{01_i7`W)yG!@JIAH?{W(D8qE*LBqT1S3R}qu2jw^+2Tn zh)D#8-9u25u>LQUj0lT_^c+A_hb>M7Ln$s2iv(X5;;sHJDxF@E&(AYXGntY+3 zvRB*}pKAh#sfDANh-eSE95oc>Iuz{YC9G1*>IlhHxHENL65xbK*!T@-N;Co&$;Cng zQ@{2nZFQ%W)Qcr$7Z>?H0L_Ym$p>5<+Yqbz>*JDE3B_zEnqkS-BQ?U;F!nqtnz^Lz z9-NX^ufLBI!~Z1>_K7Sffx3k{cvAcI7U8qi*&X!#-TK)g2(^ZzJ0$TdVm=TnbG<3@ z^k(9~CszHi{=kQ&0}JR4#u0`b_eT^fEnalYu&**^yo($}JrjI>bn=F9;x&`0+K(~h zNUom!IcZzmWZtj@Rvz8xnib2cTd0^JF^~?_*R%Kj$=WUmbLy%)c5<)?8VqHabec;KwhF_M?CgFY8SP+8Bp(k&zU9JDzxk0om`dCE&$QY>d>gD+PGx zo`2nh#T(mYBpTSr`n5+g7HAD1TkTi#HBk$U@8BYpO_! zfz&E^saO#DaX!0OcXtqqYFn^N?5B*BQ`F(zwqUk1+xIkK1In=D#0ACe++|sO8T5fi z&bnMfO6F_=PL^Bs_t65-Y4BdET5h4G*Hn{dI zdh+kyzZ@t}QoJ@Prda<%3p&<`TBprijMGE-3nZGp@p5JMo#l<QmV&^p5!vQ9s^VOHBrax@;)+Ia4M@l|D&vj=WxMmGaB)MU%*gL%b zQt96siKSYu9;enHV7MtruNx!~$H5;tvOAfwqWL|=f3sW-IHajvQ%ocRZ#4{N|9L=h zd0p4PWYC`&D#=g1-MG$aY94!n}V zZy_!eI4E;1DIDXGtqIQcR{^!^_q$~wmSoG}ya) zpWzGNRU1Y2ill{UKUp@+wE9VE8#*L&a#QqZb%oPJ{)TtIEdVfxoA+|MQ+QQqXa$Gr zW}rwl}sOWCT!zxDhd9kd06}(L7GqnB1;G4jaGk)5 z#O9-eff!b)G_^K#3R-rdW+a&=MpP8Q5?RsqU&Nrp}SV2=~p7E4L0bQ58Hk1kg; z=x^%h!L~Va*(=KIlZ+vLI=aCib=zM;Nc6jrwUfVAd5ad>BGSPtp!-u~@${<)+|#Xx zA@pEYjd-+njJk?kh$}`HJb|qv0F^f%7;*CjsnD%Y>=0|iua<=9_Ej?QFj;ut>{1Y_ z1IEAFVqux5iV4&1G7{b_kbS%s3a!?@zX7$@zOkUlpAg2A6s~oF9K-$TnjiPnRBmgq zJ29h@jCWGvg%R+3okqYt(cZf%t5k$N2s(sqtxw#joj~`cEckviJh$c{X$dR+`=Tgf z1VDY?PDTL+d1H)xEk^6Jh__HWs%#r9Uk@e`6kjo~OP^01B$yUTd2W!cFj}D~+C1pJ zq~wR3c7w^G?*zl^>#Mn|L;UbWy`xeeBpD&+@)M!3*pa20{vhTEs$0NTz_1(>>D~&W zb7nP|lm3Dv6#T2)Eb}@}dtNR@6nVe77&WD*Jns`y^bK_CE!TwCVg|-~gHhPNT^3`? zZJMwWI2NCHoypVQZ)F5U0Ov6db26FQ*0_p0j}JL|D4hOYqIEFcj@&GsKQXXOU-3ztMw+xGKVvLZ;(;MF*8b1;W$bQ9iK5BfECGBq`N9jByVz+A%Q z&TkTu8d_dJq5l>6Twm|yT8F8w$C17DUXNB#p9yF)=7vwizc!eMBRuw;Cum`?2Ti}e zR|$5NMMG#BzO4agLk}9L1aBg56hLJtVbMi|Ane>W{&fP43(CoKl^yx^@B>qpk+OqsO8wNRMM8{(#M_W&)W8mvqMp$VV^%-e)_#Ae# zE#}fr+R|s#eFq&IF%vF{p&GIxtvK@X#UC$Guq+%Rgxf3aA$;e;&lOK1hVAc}%y^9` zGzk>$<7bSXvH>@*sE&^vMWjpv*}+7HdDq)()k+iRM-@#dpgj=aV<0A-x^mY)jH6M z#9&*O1O=I$D7QIU04 zGR$JEn~*ZG?SV6Ha5b?c+jI9sWE18le4t6DWD_3TUffle^DpA80!n>{JZf;t74fVQ zUY)n~%N7mxo;*t8GAaOyS>Rhy1kR#@0(e3%qa1);{R3sk<=%WgG0M~VKFW4uCAlP{ znuN-T3LRt!f867jh0Q37_|wly)~m4PW>eK4Iv21DMTj`W7gswYK2Y@E{mpp^+IT81 zmyP&?(Nq5V6LNbi9k>FP0@%j~G1EVnK3#e2zEn7Hf08Cb50?b^8Fsx`p7-;9vJZ$U zvX{S6Q(qm5n7T>#88r|<Fxt?7Bh``gmBS+cFwSWrCX{<4my(zlij!1Izr2XCBWW|Pd;m3SYQ>zP zBZ&{P#5#2g20fE2K>0%5p;;d3T|D)om?1cQJfb$Yp_#oth$fvv=qs(<1je#!-dV-u z$Hi|uqim}q;#G#=b*Tu9nj~wU9~n)hMP*pd0olvXmqA?@eno!wf1JX3I!dap1C}B= z+3w5U_@QQXM=%m+72qWeZTuA~QrYg%t$%Al2uCsiRcRqvO!?Ca9d$%aX8T(QpFAze zyR(?>O2};L&^+kCyR>tijxb_|JYu6jYqvux6r$CV(bXI zh)tug|HECxe)ggYC<*l5`j}h&mz?8rjw3`l-RD1V1Wkb_G? zqDUUGBaozISt$y}>O9KOj7)>DXii%xRr{l|I4A$VG?Vbybgo==!=T#*S6%XpNH6A# z_r3-R)o%KYdOEjq^HPk&jd02wI*Cjka=&{_)e5{?oy6g+G%O&M_qxkN`COnvE)i2} zGgT)jO?$YoX+}W~zh-jevVW0>H#xG&HaWrwu?HMbp*yQQ>S^x-bo=~YRzZuMjReib z-e&eZI~@CF@&z#`SEd+RyeVBkxJ!AokH=m8WYX8y`BWai+zOtdN`K!k{fWcGxnIGb zd4w7t+8A0=^(ob#{#GOCqyQERO^jWQ|2(t-^q~qhH!X>AA{E7FiE1dP^iW_KxyidQ zLK|`;15`x92WN!Dd=-^^;$*hpHu)$7n`}aGDyf_U)BaTqc6*;2$LX{oeA zr9Dc-sW}c0ukQ6?W&qm=EZjw-2-^VOy&uN(mi&;_dGP5wGR|f$@x##>6(C&o<5nQ* znE=kQWeq8O_U%kJcIZ-#>OsrRMm{c*`uJPH6+;Wo{16WQ{2^?@jdoKEog~MTJQTPz zyo$+)AP0)zeGAKLQ=B(l8YcFE8ktgXANl_>3wdG|hwq+Dfm2^)j zX6OIOr5nQj{}Cuo6b>bA`e(@x0;M*g!2dqavL{m;jc=z!VbGvX1rxlmP z^W*Eugs{dhN~ZMeVUz5&8IOIwV-gcO^~6a*OLFAdL;GCpiF>~2>M$~{ypw3pM(IJ{ z6QUYwI~>%nW;+xOYtXG1ly#twzSM~MhtM#TG$jDfJ-0WieaHJVt>I&LAoLh)rtU|) zWghw>tKSbYm=*^=3SpUMXo^@6mO_+omVeGcQGdeyQ}Gi)P;4=ODMj`i*9>fXKDO+Q ziy!tZE(|>dRalYf30?S6(3y*uJ9ezaid{wkfq_`(MSfx(9P;+er|lzd(a3ohhC~>V z-QuC&;SlxNI;G;qNvl1%YwT5?2KHmZ54m8cw}OZbNcM=mS)$!oo>>Q?qocpX$}!N) z432#bGgRf0KsOA#Wp0&B3!zCtI1#3Fvt(1*3!@|1vvO-XTNVv{k1K?PhlQrP>4QjR^AgJJs%Z3 z$M4%WW01);{Y@y*&5BD5pp+U%`EigSY4m?c`63!%~%eOq=3U^ z7xwfS@y;| zXL9GQnXfFpCbeQtW`lHe?BhdfG_a~iT&hS}UjGXTWyCfUWl1|x(x# zoI30dHuA0`ZuQhYo6o8wpvWRv3MyJlskJLyT!*NBhN{YaYleaeJ-;?R5J3B&sDz<^ zTwHZ0<)Vc9^zMH10C0Ix-)XV#P2wy*^3N9Xsi#1IQ^)J0lDc*{1l6_gy*KV%GVNU& zAMRbBue*n|@XZ&prb9&l diff --git a/packages/build/tests/error/tests.js b/packages/build/tests/error/tests.js index 8b88c12bde..69407c7abd 100644 --- a/packages/build/tests/error/tests.js +++ b/packages/build/tests/error/tests.js @@ -80,7 +80,9 @@ test('build.cancelBuild() API call no token', async (t) => { // TODO: remove once dropping Node 8 if (!version.startsWith('v8.')) { test('build.cancelBuild() API call failure', async (t) => { - await runFixture(t, 'cancel', { flags: { token: 'test', deployId: 'test', testOpts: { host: '...' } } }) + await runFixture(t, 'cancel', { + flags: { token: 'test', deployId: 'test', testOpts: { host: '...', env: false } }, + }) }) } @@ -212,7 +214,9 @@ test('Report IPC error', async (t) => { }) test.serial('Report API error', async (t) => { - await runFixture(t, 'cancel_build', { flags: { ...flags, token: 'test', deployId: 'test' } }) + await runFixture(t, 'cancel_build', { + flags: { ...flags, token: 'test', deployId: 'test', testOpts: { ...flags.testOpts, env: false } }, + }) }) // Node v8 uses a different error message format diff --git a/packages/build/tests/helpers/common.js b/packages/build/tests/helpers/common.js index 1e34e4d3f0..5d8ba0ac48 100644 --- a/packages/build/tests/helpers/common.js +++ b/packages/build/tests/helpers/common.js @@ -145,6 +145,11 @@ const getCliFlag = function ({ name, value, prefix }) { } const key = [...prefix, name].join('.') + + if (value === false) { + return [`--no-${key}`] + } + return [`--${key}=${value}`] } diff --git a/packages/build/tests/helpers/normalize.js b/packages/build/tests/helpers/normalize.js index cc4df2be49..818c6fb0b1 100644 --- a/packages/build/tests/helpers/normalize.js +++ b/packages/build/tests/helpers/normalize.js @@ -66,6 +66,8 @@ const NORMALIZE_REGEXPS = [ [/\snpm ERR! 404([^]*npm ERR! 404)?.*/g, ''], // Empty lines [/^ +$/gm, ''], + // Hexadecimal identifiers, like commit hash + [/[a-fA-F\d]{8,}/gm, 'HEXADECIMAL_ID'], // HTTP errors are shown differently in Node 8 [/ \.\.\.:443/g, ''], // List of available plugins from `plugins.json`. diff --git a/packages/build/tests/plugins/snapshots/tests.js.md b/packages/build/tests/plugins/snapshots/tests.js.md index a428022e03..a41c4441b9 100644 --- a/packages/build/tests/plugins/snapshots/tests.js.md +++ b/packages/build/tests/plugins/snapshots/tests.js.md @@ -4252,6 +4252,7 @@ Generated by [AVA](https://ava.li). featureFlags: {}␊ repositoryRoot: /file/path␊ testOpts:␊ + env: false␊ pluginsListUrl: test␊ silentLingeringProcesses: true␊ ␊ diff --git a/packages/build/tests/plugins/snapshots/tests.js.snap b/packages/build/tests/plugins/snapshots/tests.js.snap index 17fefeed9a06f824a0a8e0ef1caa923ebdf69f8a..88d2ee127ae6746c868bff17780a84c91a2591a3 100644 GIT binary patch literal 9252 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

)ni-My-} zvFPv^5aVzV!>Qe4a|YZVm>hOA=k5pue&7=+-guE!|G{TJh^|Z^q^j?S(|JRCeJUw2 zAB;M>yEp{@#2zS4VGi7OY@e=M86*=%wuNA!lSt>fa~JE=YtL&j)5~2Ehk${lW$Ol3 zZkvnF(gL2-_s&hnkEbAk_S`ea1X_G)#~sE{=~t-syie_`MP&R+7^kT$#mO5` zi>j+Kcr*X5G4G>zNHGu<8E$mf%OCVwkaA(m1Eu#xDH8x3Sd+!Xaq%_L+k{g)uY;%|H#0bOKq*c#iIQrwLq_6w4`O+u>^xpr@@zS?=!!Q z2|Ed{Iv~E+v2;*SQ>gKaMA3BEj?Xxe`O~(ejLwf~k%UC$1EWHU9^s4Cslg1q+aom>a0E z8m`8-b)d*4cYgCw4z#ooL1fFZXXiv4r-`N@cBTq3Tbemw2ZEK~f%A%pnm=EI<}qUs z<_wJL4aoCAMwqk7P=P^P4&k_=Nn_7x0Xw%HtaWd(6|vBvvA4?a-%_ zG%J~Cv%)K#+#kwL?@+Ppp;-lYsO-IG?octurE0`*iYwd!16DOu?K}Y>YT6e!*f++G z-lpg`LjfbeEMQjJrDTUST>NhsU<@$E-2?*Q0G6fzIC1xpyBmpp9tzpBgQ|e%jm~Fx z?xs=1E6-^J&wYwMLHysJ>|hr{9Li>)ZXP^mia+5pTtO}QY3ZG37v!vb{DnE1O~v}w zE3Djwdy$pGhxwioF38~a{mx>&*$Nhc2(gt)1=IMD$4#_vNQW78^6KqE7M{4k{bxV= SsQ~&1N#&WlU_c@=;C}$457&MG literal 9217 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 gPC0_|OnrK { }) test('constants.NETLIFY_API_TOKEN', async (t) => { - await runFixture(t, 'netlify_api_token', { flags: { token: 'test' } }) + await runFixture(t, 'netlify_api_token', { flags: { token: 'test', testOpts: { env: false } } }) }) test('Pass packageJson to plugins', async (t) => { diff --git a/packages/config/README.md b/packages/config/README.md index 59ad1ca2c7..a786872253 100644 --- a/packages/config/README.md +++ b/packages/config/README.md @@ -80,6 +80,17 @@ const exampleFunction = async function () { // }, // ... // }, + // "env": { + // "general": { + // "CONTEXT": "production", + // ... + // }, + // "accounts": { ... }, + // "addons": { ... }, + // "ui": { ... }, + // "configFile": { ... }, + // "all": { ... }, + // } // "token": "564194bc-12cd-511a-037a-be4c734f17c4" // } } @@ -98,6 +109,13 @@ _Default value_: `false` unless the `NETLIFY_BUILD_DEBUG` environment variable i Prints debugging information showing the configuration being resolved. +#### offline + +_Type_: `boolean`\ +_Default value_: `false` + +Do not send requests to the Netlify API to retrieve site settings. + #### buffer _Type_: `boolean`\ @@ -284,6 +302,19 @@ _Type_: `object?` When the [`buffer`](#buffer) option is used, this contains two arrays `stdout` and `stderr` with the logs. +#### env + +_Type_: `object?` + +Site's environment variables. Each property is an object of key-value pairs: + +- `general`: general environment variables set for all sites +- `account`: environment variables set in the Netlify UI for a specific account +- `addons`: addon-specific environment variables +- `ui`: environment variables set in the Netlify UI for a specific site +- `configFile`: environment variables set in `netlify.toml` +- `all`: all of the above, merged + # Usage (CLI) ```bash diff --git a/packages/config/package-lock.json b/packages/config/package-lock.json index 341cc9c446..998e3ff45a 100644 --- a/packages/config/package-lock.json +++ b/packages/config/package-lock.json @@ -575,6 +575,11 @@ "tsutils": "^3.17.1" } }, + "@ungap/from-entries": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@ungap/from-entries/-/from-entries-0.2.1.tgz", + "integrity": "sha512-CAqefTFAfnUPwYqsWHXpOxHaq1Zo5UQ3m9Zm2p09LggGe57rqHoBn3c++xcoomzXKynAUuiBMDUCQvKMnXjUpA==" + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", diff --git a/packages/config/package.json b/packages/config/package.json index 1dac6c3219..6a7fee883d 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -52,6 +52,7 @@ }, "license": "MIT", "dependencies": { + "@ungap/from-entries": "^0.2.1", "array-flat-polyfill": "^1.0.1", "chalk": "^3.0.0", "deepmerge": "^4.2.2", diff --git a/packages/config/src/api/build_settings.js b/packages/config/src/api/build_settings.js index b6f13e9076..8770b0915f 100644 --- a/packages/config/src/api/build_settings.js +++ b/packages/config/src/api/build_settings.js @@ -22,11 +22,11 @@ const addBuildSettings = function ({ // From the `getSite` API response to the corresponding configuration properties const getDefaultConfig = function ( - { cmd: command, dir: publish, functions_dir: functions, base, env: environment }, + { cmd: command, dir: publish, functions_dir: functions, base }, { build, plugins = [], ...defaultConfig }, uiPlugins = [], ) { - const siteBuild = removeFalsy({ command, publish, functions, base, environment }) + const siteBuild = removeFalsy({ command, publish, functions, base }) const uiPluginsA = uiPlugins.map(normalizeUiPlugin) const pluginsA = [...uiPluginsA, ...plugins] return { ...defaultConfig, build: { ...siteBuild, ...build }, plugins: pluginsA } diff --git a/packages/config/src/api/client.js b/packages/config/src/api/client.js index 70b56776c6..0056c3d181 100644 --- a/packages/config/src/api/client.js +++ b/packages/config/src/api/client.js @@ -5,8 +5,8 @@ const NetlifyAPI = require('netlify') const { removeFalsy } = require('../utils/remove_falsy') // Retrieve Netlify API client, if an access token was passed -const getApiClient = function ({ token, testOpts: { scheme, host } = {} }) { - if (!token) { +const getApiClient = function ({ token, offline, testOpts: { scheme, host } = {} }) { + if (!token || offline) { return } diff --git a/packages/config/src/api/site_info.js b/packages/config/src/api/site_info.js index 4a6406cbae..cb9719e61e 100644 --- a/packages/config/src/api/site_info.js +++ b/packages/config/src/api/site_info.js @@ -1,30 +1,63 @@ 'use strict' -// Retrieve Netlify Site information, if availabled. +const { throwError } = require('../error') + +// Retrieve Netlify Site information, if available. // Used to retrieve local build environment variables and UI build settings. // This is not used in production builds since the buildbot passes this // information instead. // Requires knowing the `siteId` and having the access `token`. -const getSiteInfo = async function (api, siteId, mode) { +// Silently ignore API errors. For example the network connection might be down, +// but local builds should still work regardless. +const getSiteInfo = async function ({ api, siteId, mode, testOpts: { env: testEnv = true } = {} }) { + if (api === undefined || mode === 'buildbot' || !testEnv) { + const siteInfo = siteId === undefined ? {} : { id: siteId } + return { siteInfo, accounts: [], addons: [] } + } + + const [siteInfo, accounts, addons] = await Promise.all([ + getSite(api, siteId), + getAccounts(api), + getAddons(api, siteId), + ]) + return { siteInfo, accounts, addons } +} + +const getSite = async function (api, siteId) { if (siteId === undefined) { return {} } - if (api === undefined || mode === 'buildbot') { - return { id: siteId } + + try { + const site = await api.getSite({ siteId }) + return { ...site, id: siteId } + } catch (error) { + throwError(`Failed retrieving site data for site ${siteId}: ${error.message}. ${ERROR_CALL_TO_ACTION}`) } +} - const siteInfo = await getSite(siteId, api) - return { ...siteInfo, id: siteId } +const getAccounts = async function (api) { + try { + const accounts = await api.listAccountsForUser() + return Array.isArray(accounts) ? accounts : [] + } catch (error) { + throwError(`Failed retrieving user account: ${error.message}. ${ERROR_CALL_TO_ACTION}`) + } } -const getSite = async function (siteId, api) { +const getAddons = async function (api, siteId) { + if (siteId === undefined) { + return [] + } + try { - return await api.getSite({ site_id: siteId }) - // Silently ignore errors. For example the network connection might be down, - // but local builds should still work regardless. + const addons = await api.listServiceInstancesForSite({ siteId }) + return Array.isArray(addons) ? addons : [] } catch (error) { - return {} + throwError(`Failed retrieving addons for site ${siteId}: ${error.message}. ${ERROR_CALL_TO_ACTION}`) } } +const ERROR_CALL_TO_ACTION = `Double-check your login status with 'netlify status' or contact support with details of your error.` + module.exports = { getSiteInfo } diff --git a/packages/config/src/bin/flags.js b/packages/config/src/bin/flags.js index 11b4425b00..b1ea1cfaf7 100644 --- a/packages/config/src/bin/flags.js +++ b/packages/config/src/bin/flags.js @@ -92,6 +92,15 @@ Default: true`, describe: 'Print debugging information', hidden: true, }, + testOpts: { + describe: 'Options for testing only', + hidden: true, + }, + offline: { + boolean: true, + describe: `Do not send requests to the Netlify API to retrieve site settings. +Default: false`, + }, buffer: { boolean: true, describe: 'Buffer output instead of streaming it', diff --git a/packages/build/src/env/git.js b/packages/config/src/env/git.js similarity index 100% rename from packages/build/src/env/git.js rename to packages/config/src/env/git.js diff --git a/packages/config/src/env/main.js b/packages/config/src/env/main.js new file mode 100644 index 0000000000..7e1108d4d6 --- /dev/null +++ b/packages/config/src/env/main.js @@ -0,0 +1,157 @@ +'use strict' + +const fromEntries = require('@ungap/from-entries') +const omit = require('omit.js').default + +const { getGitEnv } = require('./git') + +// Retrieve this site's environment variable. Also take into account team-wide +// environment variables and addons. +// The buildbot already has the right environment variables. This is mostly +// meant so that local builds can mimic production builds +// TODO: add `netlify.toml` `build.environment`, after normalization +// TODO: add `CONTEXT` and others +const getEnv = async function ({ mode, config, siteInfo, accounts, addons, buildDir, branch, deployId, context }) { + if (mode === 'buildbot') { + return {} + } + + const generalEnv = await getGeneralEnv({ siteInfo, buildDir, branch, deployId, context }) + const [accountEnv, addonsEnv, uiEnv, configFileEnv] = getUserEnv({ config, siteInfo, accounts, addons }) + + // Sources of environment variables, in descending order of precedence. + const sources = [ + { key: 'configFile', values: configFileEnv }, + { key: 'ui', values: uiEnv }, + { key: 'addons', values: addonsEnv }, + { key: 'account', values: accountEnv }, + { key: 'general', values: generalEnv }, + ] + + // A hash mapping names of environment variables to objects containing the following properties: + // - sources: List of sources where the environment variable was found. The first element is the source that + // actually provided the variable (i.e. the one with the highest precedence). + // - value: The value of the environment variable. + const env = new Map() + + sources.forEach((source) => { + Object.keys(source.values).forEach((key) => { + if (env.has(key)) { + const { sources: envSources, value } = env.get(key) + + env.set(key, { + sources: [...envSources, source.key], + value, + }) + } else { + env.set(key, { + sources: [source.key], + value: source.values[key], + }) + } + }) + }) + + return fromEntries(env) +} + +// Environment variables not set by users, but meant to mimic the production +// environment. +const getGeneralEnv = async function ({ + siteInfo: { url, build_settings: { repo_url: REPOSITORY_URL } = {} }, + buildDir, + branch, + deployId, + context, +}) { + const gitEnv = await getGitEnv(buildDir, branch) + return { + ...(deployId === undefined ? {} : { DEPLOY_ID: deployId }), + // The API sometimes returns `null`, not only `undefined` + ...(url == null ? {} : { URL: url }), + ...(REPOSITORY_URL == null ? {} : { REPOSITORY_URL }), + CONTEXT: context, + ...gitEnv, + // Localization + LANG: 'en_US.UTF-8', + LANGUAGE: 'en_US:en', + LC_ALL: 'en_US.UTF-8', + // Disable telemetry of some tools + GATSBY_TELEMETRY_DISABLED: '1', + NEXT_TELEMETRY_DISABLED: '1', + } +} + +// Environment variables specified by the user +const getUserEnv = function ({ config, siteInfo, accounts, addons }) { + const accountEnv = getAccountEnv({ siteInfo, accounts }) + const addonsEnv = getAddonsEnv(addons) + const uiEnv = getUiEnv({ siteInfo }) + const configFileEnv = getConfigFileEnv({ config }) + return [accountEnv, addonsEnv, uiEnv, configFileEnv].map(cleanUserEnv) +} + +// Account-wide environment variables +const getAccountEnv = function ({ siteInfo: { account_slug: accountSlug }, accounts }) { + const { site_env: siteEnv = {} } = accounts.find(({ slug }) => slug === accountSlug) || {} + return siteEnv +} + +// Environment variables from addons +const getAddonsEnv = function (addons) { + return Object.assign({}, ...addons.map(getAddonEnv)) +} + +const getAddonEnv = function ({ env }) { + return env +} + +// Site-specific environment variables set in the UI +const getUiEnv = function ({ siteInfo: { build_settings: { env = {} } = {} } }) { + return env +} + +// Site-specific environment variables set in netlify.toml +const getConfigFileEnv = function ({ + config: { + build: { environment = {} }, + }, +}) { + return environment +} + +// Some environment variables cannot be overridden by configuration +const cleanUserEnv = function (userEnv) { + return omit(userEnv, READONLY_ENV) +} + +const READONLY_ENV = [ + // Set in local builds + 'BRANCH', + 'CACHED_COMMIT_REF', + 'COMMIT_REF', + 'CONTEXT', + 'DEPLOY_ID', + 'HEAD', + 'REPOSITORY_URL', + 'URL', + + // Purposely left unset in local builds + 'NETLIFY', + + // Not set in local builds because there is CI build/deploy, incoming hooks nor PR + 'BUILD_ID', + 'DEPLOY_ID', + 'DEPLOY_PRIME_URL', + 'DEPLOY_URL', + 'INCOMING_HOOK_BODY', + 'INCOMING_HOOK_TITLE', + 'INCOMING_HOOK_URL', + 'NETLIFY_BUILD_BASE', + 'NETLIFY_BUILD_LIFECYCLE_TRIAL', + 'NETLIFY_IMAGES_CDN_DOMAIN', + 'PULL_REQUEST', + 'REVIEW_ID', +] + +module.exports = { getEnv } diff --git a/packages/config/src/main.js b/packages/config/src/main.js index 9866cd5bc6..c7435d0159 100644 --- a/packages/config/src/main.js +++ b/packages/config/src/main.js @@ -1,3 +1,4 @@ +/* eslint-disable max-lines */ 'use strict' require('./utils/polyfills') @@ -7,6 +8,7 @@ const { getSiteInfo } = require('./api/site_info') const { normalizeConfigCase } = require('./case') const { mergeContext } = require('./context') const { getConfig, parseDefaultConfig } = require('./default') +const { getEnv } = require('./env/main') const { handleFiles } = require('./files') const { getInlineConfig } = require('./inline_config') const { cleanupConfig } = require('./log/cleanup') @@ -28,9 +30,9 @@ const { // Takes an optional configuration file path as input and return the resolved // `config` together with related properties such as the `configPath`. const resolveConfig = async function (opts) { - const { cachedConfig, token, ...optsA } = addDefaultOpts(opts) + const { cachedConfig, token, offline, ...optsA } = addDefaultOpts(opts) // `api` is not JSON-serializable, so we cannot cache it inside `cachedConfig` - const api = getApiClient({ ...optsA, token }) + const api = getApiClient({ ...optsA, token, offline }) // Performance optimization when @netlify/config caller has already previously // called it and cached the result. @@ -54,13 +56,15 @@ const resolveConfig = async function (opts) { base, branch, siteId, + deployId, baseRelDir, mode, debug, logs, + testOpts, } = await normalizeOpts(optsA) - const siteInfo = await getSiteInfo(api, siteId, mode) + const { siteInfo, accounts, addons } = await getSiteInfo({ api, siteId, mode, testOpts }) const { defaultConfig: defaultConfigA, baseRelDir: baseRelDirA } = parseDefaultConfig({ defaultConfig, @@ -85,7 +89,19 @@ const resolveConfig = async function (opts) { const { config: configA, buildDir } = await handleFiles({ config, repositoryRoot, baseRelDir: baseRelDirA }) - const result = { siteInfo, configPath, buildDir, config: configA, context, branch, token, api, logs } + const env = await getEnv({ + mode, + config: configA, + siteInfo, + accounts, + addons, + buildDir, + branch, + deployId, + context, + }) + + const result = { siteInfo, env, configPath, buildDir, config: configA, context, branch, token, api, logs } logResult(result, { logs, debug }) return result } @@ -193,3 +209,4 @@ module.exports = resolveConfig // TODO: on next major release, export a single object instead of mutating the // top-level function module.exports.cleanupConfig = cleanupConfig +/* eslint-enable max-lines */ diff --git a/packages/config/src/options/main.js b/packages/config/src/options/main.js index 8e7fefec61..beefd4c5a2 100644 --- a/packages/config/src/options/main.js +++ b/packages/config/src/options/main.js @@ -37,7 +37,9 @@ const getDefaultOpts = function ({ env: envOpt = {}, cwd: cwdOpt, defaultConfig branch: combinedEnv.BRANCH, token: combinedEnv.NETLIFY_AUTH_TOKEN, siteId: combinedEnv.NETLIFY_SITE_ID, + deployId: combinedEnv.DEPLOY_ID, mode: 'require', + offline: false, debug: getDefaultDebug(combinedEnv, defaultConfig), buffer: false, } diff --git a/packages/config/tests/api/snapshots/tests.js.md b/packages/config/tests/api/snapshots/tests.js.md index f98358ec10..171f3e21d4 100644 --- a/packages/config/tests/api/snapshots/tests.js.md +++ b/packages/config/tests/api/snapshots/tests.js.md @@ -19,6 +19,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {␊ "id": "test"␊ }␊ @@ -39,6 +107,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {},␊ "token": "test"␊ @@ -59,6 +195,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "hasApi": true,␊ "logs": {␊ "stderr": [],␊ @@ -67,28 +271,6 @@ Generated by [AVA](https://ava.li). "siteInfo": {}␊ }` -## Build settings are not used if getSite call fails - -> Snapshot 1 - - `{␊ - "branch": "branch",␊ - "buildDir": "/file/path",␊ - "config": {␊ - "build": {␊ - "environment": {}␊ - },␊ - "plugins": []␊ - },␊ - "configPath": "/file/path",␊ - "context": "production",␊ - "hasApi": true,␊ - "siteInfo": {␊ - "id": "test"␊ - },␊ - "token": "test"␊ - }` - ## Build settings are not used in CI > Snapshot 1 @@ -104,6 +286,7 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {},␊ "hasApi": true,␊ "siteInfo": {␊ "id": "test"␊ @@ -126,6 +309,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {},␊ "token": "test"␊ @@ -146,6 +397,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {␊ "id": "test"␊ }␊ @@ -166,6 +485,80 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "URL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {␊ "build_settings": {␊ @@ -212,6 +605,87 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "TEST_ENV": {␊ + "sources": [␊ + "configFile",␊ + "ui"␊ + ],␊ + "value": "fixture"␊ + },␊ + "URL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {␊ "build_settings": {␊ @@ -241,6 +715,12 @@ Generated by [AVA](https://ava.li). ## Environment variable siteInfo API error +> Snapshot 1 + + 'Failed retrieving site data for site test: Bad Request. Double-check your login status with \'netlify status\' or contact support with details of your error.' + +## Environment variable siteInfo CI + > Snapshot 1 `{␊ @@ -254,6 +734,7 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {},␊ "hasApi": true,␊ "siteInfo": {␊ "id": "test"␊ @@ -261,7 +742,7 @@ Generated by [AVA](https://ava.li). "token": "test"␊ }` -## Environment variable siteInfo CI +## Environment variable siteInfo no siteId > Snapshot 1 @@ -276,14 +757,80 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ - "hasApi": true,␊ - "siteInfo": {␊ - "id": "test"␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ },␊ + "hasApi": true,␊ + "siteInfo": {},␊ "token": "test"␊ }` -## Environment variable siteInfo no siteId +## Environment variable siteInfo no token > Snapshot 1 @@ -298,12 +845,80 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ - "hasApi": true,␊ - "siteInfo": {},␊ - "token": "test"␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ + "siteInfo": {␊ + "id": "test"␊ + }␊ }` -## Environment variable siteInfo no token +## Environment variable siteInfo offline > Snapshot 1 @@ -318,9 +933,78 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {␊ "id": "test"␊ - }␊ + },␊ + "token": "test"␊ }` ## Environment variable siteInfo success @@ -338,6 +1022,86 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "REPOSITORY_URL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + },␊ + "URL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {␊ "build_settings": {␊ @@ -364,6 +1128,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {},␊ "token": "test"␊ @@ -384,6 +1216,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {␊ "id": "test"␊ }␊ @@ -401,9 +1301,7 @@ Generated by [AVA](https://ava.li). "base": "/file/path",␊ "command": "testCommand",␊ "commandOrigin": "ui",␊ - "environment": {␊ - "TEST_ENV": "test"␊ - },␊ + "environment": {},␊ "functions": "/file/path",␊ "publish": "/file/path"␊ },␊ @@ -419,6 +1317,86 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "TEST_ENV": {␊ + "sources": [␊ + "ui"␊ + ],␊ + "value": "test"␊ + },␊ + "URL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {␊ "build_settings": {␊ @@ -463,6 +1441,80 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "URL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {␊ "build_settings": {␊ diff --git a/packages/config/tests/api/snapshots/tests.js.snap b/packages/config/tests/api/snapshots/tests.js.snap index 5f4f77cd1922d4d96e6a07cad36cfbdd92ad3160..1eb4da491c691d0e832943ce2bac6d997d669dde 100644 GIT binary patch literal 1662 zcmV-^27&oORzVfiF=V6WgB_E3j00000000B+ zn{8}URT#(51vX#_i6ROC(VLQhO4nfmDw9CE_I9hZUFi#KBT(_tyI|AY>Xu z68u1d!UtZ$2NDDZ_!12cQ6e7z6I~RPC1_BCUm%DiN(dMwdU|@--IjH0vku01mNeV_ zpL5T1&U4TG{m(h+eqs=sjBeK6e!J`PA7w8ey;8g7!lg4rBtM79=lZ8w=<|c1zf`VVv%Pr%L)GJx5bFB&t*39DlsYFSl+J5Y^&1RTD;`6rY7JV1 z8)t96+WqsLf4ql3W2o9R4WaIH{wcqn3wHiC<=D6bmrivvR6R5kp(n)m7q`u9pX#sd z5LR1$#0*s@%|dAU+*qf-Y1=P7&tBYgGB|e$L)BH!Ahd7B?rUGqYU`F(H*J1%!>Pp# zRWH~OihcCR(rN9_z5bMM)9ou;mh~`HT{s`17dPIywqVB|dE1H=uS$EJUoliYQH{{$ z)8*BNzgy@Xe{<~RDdSrIW2m~;RXv%M6)jychBeX+m6hY^rm&*OiY=?B)0p)YENf|2cq!Uqsm}amrK&E7F{hxU z^r|=+P*sxGj4~21E+j}v>i*uknM)#Isa;THsSQh7O75U~hc#V0De7cYDk)gGs=|3LA?QU5uiBFWxz-dNQzeyaw-lHAIxD1lYDuNv zl8LU#tyt=lJ0MNPrzuc2deW3`x+Y-vIqJ+kQOTPW#Wa{95ix-!tni}6P*z!cYq#^F zj!l`!>bJx0sN&5`jxzLn|dm3@;oJ#ER%2BQX}2BQX} z9)U(3A}vQa-||6QC-^JKs2_|4K>BySB>>G+&KjV9uS?gbWq!k-a#jT<2QuZ_lI0S4 zR}Hk9E8~oVEFgx#{syr*Q_Xg)s3{_*Cb4avZC;KA!a*k3H`q7WH`sS+?7KiaEC8^z z!*-B4&?YkPKCrlL9@j09&Bk%}!RwOK~(ged2vSnv4r;HC@4jpH3P9 z^Ep%BvoderjMfL(!R6~B9Akplg4crAg4f=cW6U(VT!dI=3=Vj>nZ^1C!Q3ryzS*me z{PRr}&NuVD9pLNW>)`9f4`DR;`T%w)$|lRRs9Fpw3gwtJqsY3JO}4Bv(Ta}$0l=b3 IfZbmJ01Q+iS^xk5 literal 1075 zcmV-31kC$ERzV#JjWo>BTsm+5@k zKVvx~Sd@*EfuYz-=8Dqh^~=N9k`})6<(kO|7FFP4U|1qO`^_ok+%tJ`Q5{WU2x$Z57h=0Eiub_uU@0*mG_EouEitD!6|K;~ zo&+H3!Eyo6NI@$`$cy=SB!k`H$$>zLLxVUc5VuGw%TkMqL2(3BX{cwQXMh&(WEYB4 zXjUlV%lhaACYf1pP$YNsgiZB&>)Sw=&S{wyC8b5FgbQe>g`^eIP}4`t>Ctj}w4BCS t2uKXi#%oSKQo2+sE=fr(Dgs-k0~g6JEkU&&Wq^gN768{CX { - await runFixture(t, 'empty', { flags: { token: 'test' } }) + await runFixture(t, 'empty', { flags: { token: 'test', testOpts: { env: false } } }) }) test('--token in CLI', async (t) => { - await runFixture(t, 'empty', { flags: { token: 'test' }, useBinary: true }) + await runFixture(t, 'empty', { flags: { token: 'test', testOpts: { env: false } }, useBinary: true }) }) test('NETLIFY_AUTH_TOKEN environment variable', async (t) => { - await runFixture(t, 'empty', { env: { NETLIFY_AUTH_TOKEN: 'test' } }) + await runFixture(t, 'empty', { flags: { testOpts: { env: false } }, env: { NETLIFY_AUTH_TOKEN: 'test' } }) }) test('--site-id', async (t) => { @@ -24,134 +58,80 @@ test('NETLIFY_SITE_ID environment variable', async (t) => { await runFixture(t, 'empty', { env: { NETLIFY_SITE_ID: 'test' } }) }) -const SITE_INFO_PATH = '/api/v1/sites/test' -const SITE_INFO_DATA = { url: 'test', build_settings: { repo_url: 'test' } } -const SITE_INFO_ERROR = { error: 'invalid' } - test('Environment variable siteInfo success', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_DATA }) - await runFixture(t, 'empty', { flags: { token: 'test', siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() + await runWithMockServer(t, 'empty', { response: SITE_INFO_DATA, flags: { token: 'test', siteId: 'test' } }) }) test('Environment variable siteInfo API error', async (t) => { - const { scheme, host, stopServer } = await startServer({ - path: SITE_INFO_PATH, + await runWithMockServer(t, 'empty', { response: SITE_INFO_ERROR, status: 400, + flags: { token: 'test', siteId: 'test' }, }) - await runFixture(t, 'empty', { flags: { token: 'test', siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() }) test('Environment variable siteInfo no token', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_DATA }) - await runFixture(t, 'empty', { flags: { siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() + await runWithMockServer(t, 'empty', { response: SITE_INFO_DATA, flags: { siteId: 'test' } }) }) test('Environment variable siteInfo no siteId', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_DATA }) - await runFixture(t, 'empty', { flags: { token: 'test', testOpts: { scheme, host } } }) - await stopServer() + await runWithMockServer(t, 'empty', { response: SITE_INFO_DATA, flags: { token: 'test' } }) }) -test('Environment variable siteInfo CI', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_DATA }) - await runFixture(t, 'empty', { - flags: { token: 'test', siteId: 'test', mode: 'buildbot', testOpts: { scheme, host } }, +test('Environment variable siteInfo offline', async (t) => { + await runWithMockServer(t, 'empty', { + response: SITE_INFO_DATA, + flags: { siteId: 'test', token: 'test', offline: true }, }) - await stopServer() }) -const SITE_INFO_BUILD_SETTINGS_NULL = { - url: 'test', - build_settings: { cmd: null, dir: null, functions_dir: null, base: null, env: null, base_rel_dir: null }, -} +test('Environment variable siteInfo CI', async (t) => { + await runWithMockServer(t, 'empty', { + response: SITE_INFO_DATA, + flags: { token: 'test', siteId: 'test', mode: 'buildbot' }, + }) +}) test('Build settings can be null', async (t) => { - const { scheme, host, stopServer } = await startServer({ - path: SITE_INFO_PATH, + await runWithMockServer(t, 'empty', { response: SITE_INFO_BUILD_SETTINGS_NULL, + flags: { token: 'test', siteId: 'test' }, }) - await runFixture(t, 'empty', { flags: { token: 'test', siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() }) -const SITE_INFO_BUILD_SETTINGS = { - url: 'test', - build_settings: { - cmd: 'testCommand', - dir: 'testPublish', - functions_dir: 'testFunctions', - base: 'base', - env: { TEST_ENV: 'test' }, - base_rel_dir: false, - }, - plugins: [{ package: 'netlify-plugin-test', version: '1.0.0', inputs: { test: true } }], -} - test('Use build settings if a siteId and token are provided', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_BUILD_SETTINGS }) - await runFixture(t, 'base', { flags: { token: 'test', siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() + await runWithMockServer(t, 'base', { response: SITE_INFO_BUILD_SETTINGS, flags: { token: 'test', siteId: 'test' } }) }) test('Build settings have low merging priority', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_BUILD_SETTINGS }) - await runFixture(t, 'build_settings', { - flags: { token: 'test', siteId: 'test', baseRelDir: true, testOpts: { scheme, host } }, - }) - await stopServer() -}) - -test('Build settings are not used if getSite call fails', async (t) => { - const { scheme, host, stopServer } = await startServer({ - path: SITE_INFO_PATH, + await runWithMockServer(t, 'build_settings', { response: SITE_INFO_BUILD_SETTINGS, - status: 400, + flags: { token: 'test', siteId: 'test', baseRelDir: true }, }) - await runFixture(t, 'base', { flags: { token: 'test', siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() }) test('Build settings are not used without a token', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_BUILD_SETTINGS }) - await runFixture(t, 'base', { flags: { siteId: 'test', testOpts: { scheme, host } } }) - await stopServer() + await runWithMockServer(t, 'base', { response: SITE_INFO_BUILD_SETTINGS, flags: { siteId: 'test' } }) }) test('Build settings are not used without a siteId', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_BUILD_SETTINGS }) - await runFixture(t, 'base', { flags: { token: 'test', testOpts: { scheme, host } } }) - await stopServer() + await runWithMockServer(t, 'base', { response: SITE_INFO_BUILD_SETTINGS, flags: { token: 'test' } }) }) test('Build settings are not used in CI', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_BUILD_SETTINGS }) - await runFixture(t, 'base', { - flags: { token: 'test', siteId: 'test', mode: 'buildbot', testOpts: { scheme, host } }, + await runWithMockServer(t, 'base', { + response: SITE_INFO_BUILD_SETTINGS, + flags: { token: 'test', siteId: 'test', mode: 'buildbot' }, }) - await stopServer() }) -const SITE_INFO_BASE_REL_DIR = { - url: 'test', - build_settings: { base_rel_dir: false }, -} - test('baseRelDir is true if build.base is overridden', async (t) => { - const { scheme, host, stopServer } = await startServer({ path: SITE_INFO_PATH, response: SITE_INFO_BASE_REL_DIR }) - try { - await runFixture(t, 'build_base_override', { - flags: { - cwd: `${FIXTURES_DIR}/build_base_override/subdir`, - token: 'test', - siteId: 'test', - testOpts: { scheme, host }, - }, - }) - } finally { - await stopServer() - } + await runWithMockServer(t, 'build_base_override', { + response: SITE_INFO_BASE_REL_DIR, + flags: { + cwd: `${FIXTURES_DIR}/build_base_override/subdir`, + token: 'test', + siteId: 'test', + }, + }) }) diff --git a/packages/config/tests/base/snapshots/tests.js.md b/packages/config/tests/base/snapshots/tests.js.md index ea1e16d3fe..7d355556b8 100644 --- a/packages/config/tests/base/snapshots/tests.js.md +++ b/packages/config/tests/base/snapshots/tests.js.md @@ -31,6 +31,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -52,6 +120,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -73,6 +209,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -97,5 +301,73 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` diff --git a/packages/config/tests/base/snapshots/tests.js.snap b/packages/config/tests/base/snapshots/tests.js.snap index 0d695aa8d9964e7b0bb53facb560a441b059c855..c06809e593ac5c8ff2e1384223ed2438cffdafff 100644 GIT binary patch literal 700 zcmV;t0z>^lRzVwb>uHtXrBjel3Gf4tAg00RG685r`^oLD`(pKOg3y_Rd|o|4N57M;t@ zz+m1RU$<_Ub$@#gtiFqL9N~y^i z`3f*Tx&r^A%=FAWkTR%sa0RI;>8bG3O%57!7s7guLbUq_#KPZu=%=x32%h-*X$6>LF@926Ve z9YcbhBI83`eO!HALxLjXT|9#woqSwfs9>ids#PAYj?^#}TLSQL^mC_z(W!ayp}~5g zA#S=BnC6E%y1P=#4y#nOXz+24cl7b0r5F5w>4+}T91!Z`1I!wMp{~KyNVsWP%hL*+x4S0$7szlT656E i3nQiG7;V>&md>N4^JwWjS~?Gw(is5GIN!DX7XSc}jy`<= literal 448 zcmV;x0YCmhRzV#3mO^Th(fNc^``i00000000B) zU|?WiWyn)=V)g8PvNcllTCSaYN-iS<2si_&CDXO;=a_D@o}SwHceVP*`;1`G=S&O? zEQ~A@Z%(S(z~H&OJ5MF0pAjtD&%(eEJ3If=KLh4ztv57I-Fk8S6eC#l5-S6Pd2f8( zx(&;gtE5gkG^ujC8Y5VglZ}CanSmW_CnGC^Ad?AWHJ5^dQc_W3UUG(#6`Z957A?)p zNpZ<60*ULVW#**n7bKQI<&yLB(lXP5G9djhwQw#-Ah9?Vi$<_qa(-@ZVjf7jQfhKW zz5J1#Zfaf$$l_YCcr8R)sUW8msI3?%5gp3~ z6^5D+0CEd`DN`7jwLSBA}LTW{3afy`z!WsbSx6!nb1^@ss_`=-) diff --git a/packages/config/tests/cli/snapshots/tests.js.md b/packages/config/tests/cli/snapshots/tests.js.md index dda9ec5827..1c032da8b3 100644 --- a/packages/config/tests/cli/snapshots/tests.js.md +++ b/packages/config/tests/cli/snapshots/tests.js.md @@ -38,7 +38,10 @@ Generated by [AVA](https://ava.li). --context Build context.␊ Default: 'production' [string]␊ --branch Repository branch.␊ - Default: automatically guessed [string]` + Default: automatically guessed [string]␊ + --offline Do not send requests to the Netlify API to retrieve site␊ + settings.␊ + Default: false [boolean]` ## --version @@ -61,6 +64,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "test"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "logs": {␊ "stderr": [],␊ "stdout": []␊ @@ -74,6 +145,74 @@ Generated by [AVA](https://ava.li). `{␊ "siteInfo": {},␊ + "env": {␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + }␊ + },␊ "configPath": "/file/path",␊ "buildDir": "/file/path",␊ "config": {␊ @@ -105,6 +244,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "logs": {␊ "stderr": [],␊ "stdout": []␊ @@ -127,6 +334,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "logs": {␊ "stderr": [],␊ "stdout": []␊ diff --git a/packages/config/tests/cli/snapshots/tests.js.snap b/packages/config/tests/cli/snapshots/tests.js.snap index f6e12f955df97c4eb99c94481602e921e5301a9d..5cfe30966fe890654048fa709da987b2047b1ad8 100644 GIT binary patch literal 1370 zcmV-g1*Q5yRzV)MSI#>(#KyPLi?PnK(1sUMYDx z@lk#EL_9?BRZvjs9~68z6yZPwJw;IjIYqgr^F^JR-6XqB`tMBoav5kzzWL_+egEe7 zO?EU*8`Zve@%P02AO0}$ck1fD`SZW+L^Qc3#NS=xkG=J^d*8duADm09{rvfR5heX+ zRMTF6`Q$GZNBim9QF`s2Z^mAUC~4uOrY)VjcmsSAyK(dU%-vsJx;_(8($B^;?PBSr zKkm8n@?YZ*KKkm;n@@ZcQPP+&Ir09L#HHl*%g>&ee&gfD;;#`UeeGUN`|f7`ZI1r@ z>c^D*>6J&me<7lzV-INB9l~?DA|u*(WaLbIIzAl~owzoNA$L%9D^?-6ifUjbw`8Vs z*+M)XUyVldkW&OVAh56vC}hMDpLrdEtal1{r(9}rL~uN6iY=k$IvgMd8Wdp;ZD28A zfhP;OEFk6QV1)yM0pm7tIoL$Jt_)U*df>ld25|igd zQGnm5aZc79fUvSvLtOM*J6n_x-qTjQHh@sCWEO(~Y0rqfdiVit+M&&)ODV*>V@vWC6q*h!VUmYrJ7mq=K$k7?dG! znIg-c<~E_@#CxZ4&lS!u;xHX3L@Tm_kb`vUP`1NYqQh`%g~;uI@|+SRZ@U$ly;DcQ z4A7-oT}(Nk<|NgsgK(#zQUqXep%_$S@p)m#haL@pMOU5tUtu%ob@?c4ZhRz|7khXqRH;DXcNd(yzl~IJoJ9BMz)35lV0*CXWO5q zl+>S~Qrd6HoRZ8X- z7t>}bZ_M=pXTdnDr;KEJQO}gpsa<%-2b499vt}Pq0>ud-%*ry}wYMwRc9(z1v_q!-KTJD(+3uPD;mh_mXWQY+cF4B_;@gl) zH-`=WHV%{}2YCOEj}VWU=?B=%L+Uzg2*)_12G5ew!@aAH^2iH5+x$2V`R)rkv)41O c_an56fm?jrVc-@gOOR;uKNRD$d&wRE0J({%DgXcg literal 1062 zcmV+>1ljvRRzVZ|LzySs#lC00000000B+ zRZWN-RS@oui5pu5*PH|oMLa}hwzD3Dun4-l6XWgmhdw$`@g zbIa@luYDQc@z%+APc3cy^vT<{*1kAnSu3Z`U4;+lu3kHR?6%L&UpZ!L?HdOz>(DzF zm(DL=x$xA!`By%Op7_Pq+K+CstaIzn{dW8Q3xCYsb^lA-uRip?t+kgN%lhV8^>u-N z|NMty@bSfazk9~k+RHav)(tXqCH4Vp);{rM8xdfL)3Ad{3w%nNxCKodA~>pkk4Bzo zJIh)fGf!Yjj5VN$1EB)YST7lIYbN-fdcS2c<^YgQU=<18u^1{atX2tB>1UgE0QJH;<5_Tdaw`r zRZtz#ALs6F+?18}?$H2^7>7X-GZohW$heCQ88;RPq7;($ga9)co3h>@yg+9KWKJ(> z$HZiUFpv0c$huWgL^)PaiQRE3k;>9AGS^071SzStX%}`X_m;H=r6Kaj84cJ$j4Ki{ zfCD9oHyeme2bk)amc4m*ojk-MYI<^zxH>1B0?DAdf^LR@iNrVU^2ql)19Oo%sjFE`Yxicn`|c365B(N)iB0 zj59MS+1$jYF2IXrgQU0bg<%g`G2$xJ64b&U0k)-ExZA7t{kVVrA zIm+`G&MB+~8E2D)pc{y!+y{GZais*t)|3+@Yn1C*)o9jUULds!%g5`FmmWU3zPMU{ zWW8Q_?06Xv>0n05rs{FWV^|mMdjuK?Vy>5EE?gIdp_@!3sg!qVo+I4>Y-G; zF6``;7;QK$ndLU2JxAn{4`N@jcVwEFsdcGkY*YUG!V!Z diff --git a/packages/config/tests/context/snapshots/tests.js.md b/packages/config/tests/context/snapshots/tests.js.md index 1d20ea0d58..ce36315536 100644 --- a/packages/config/tests/context/snapshots/tests.js.md +++ b/packages/config/tests/context/snapshots/tests.js.md @@ -23,6 +23,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -44,6 +112,86 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "one": {␊ + "sources": [␊ + "configFile"␊ + ],␊ + "value": "one"␊ + },␊ + "two": {␊ + "sources": [␊ + "configFile"␊ + ],␊ + "value": "two"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -64,6 +212,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -84,6 +300,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "testContext",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testContext"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -104,6 +388,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -124,6 +476,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -144,6 +564,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -164,6 +652,62 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "master"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "master"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -184,6 +728,68 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -204,5 +810,73 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "testContext",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testContext"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` diff --git a/packages/config/tests/context/snapshots/tests.js.snap b/packages/config/tests/context/snapshots/tests.js.snap index 26ac991461b3668ad07a82b6e466b05a00eac112..c6dd803fa70951218d5713a51d0028d6da3332d4 100644 GIT binary patch literal 977 zcmV;?11|hQRzVh$Tks)^DMxgU!N00000000B+ znO#T}Q547T_?2xBX+;RV=!7X|sUam2*|&!AcYl8Sy7Fr0Q zkrEU{;6q5zLqd=*hR}mg_8`$y5CjqSsrh0wb9Y?FO>L`LEj{}(JO6v<{O`SU_jfL5 zO$0(Fl;R#6dfWMI7n?z5wLkuxrijX?I}xE{x9)vBL0#{!OU|D0_Vphpu$sIBq4C*Q z+2aMIe`c=tvUktbRsyTnQV`l-STdh~=fl9skqgrcjX6q-s;2Eli1DCVZ+GFsk%Xjg zUG0Sj39Jt9L#V6aO;T1IlU8FQQ*Tc9jT2aXo`I0%-GlDIl%A(gI!A{lCptX@R*SL_ zn(CdHwV%#uIp=)6ee}_ACV|z-T!cn)zE0geJ6|&Q@)Pm!ef)OEwBd6MRd67S^&wW}63+<_CC zc}WzSI6+o}w_&|4)J*z)LFKW4(r~81q{&)@8g-y64_oG1)L5jfjKr+n;x@%=X+EX3 zRF%0xKcRpalw2Hk(%n1<&W`?raVmXB>Wh1T2 zYp!wHY|3xrl#{j_v2#7FFTiOIVJZc9nX?KWF$A$TU@$N^c1FNpU@$QFw-_AQx(xP9 zqC4o4c~Jla8)jq_f^{zk2)tToAn+z2a7QG8)ze2QP&nO43hUMsNW4`^yxJxJ8Uu}i z#z5m(8Uc-?-2^~mpz$J&cPGWFIuXIprCEpq9;$lDT~g(XBHpvgMHBx&>Ov)AixU?r z5nGnFnnMU~YX=Tdt4x8_8nM+t%OZyWX+Y#KVx!9tY|QG{k*DnNPR<%qQ=-9Kf zVcU!|M;p=@!J=Q;85k~g9{m~|rB#s-`jB(m#$~FEU{N(r28K0SUoOpy`C>lYoS&DLnGTcz>4&L>bHNI7a})DG zLQ1L08TkrOen@I@3D^W=MgB#Z>6v*TrBGwx3R3gRGK=!_a#Qn4K!(?X#cLtbN(DKk zKyAf9iRf4^s4&!o0FXnmJG&&c0%Vp_3D70ZP%c=mII|?xGcPS4Vo~jAIFS)f5+gU9 z3X1YmN|Q@6^YaJ?lMH$=fdbiSG^j>{ijtsWp;_ib^B`0hD3PC+3NjEx=^#W)%Jac7 z1*D*Y0~I7}^a_$%cw)#*&&w|Yg-SFcK$4L|Cj}NLu>%w+N&}Upkn9*z84IIU%S|jU XNi7;Je@2UH;)4nR*I1+Ef(!rv*N*+i diff --git a/packages/config/tests/cwd/snapshots/tests.js.md b/packages/config/tests/cwd/snapshots/tests.js.md index 35a15d905f..cd4b84f8b4 100644 --- a/packages/config/tests/cwd/snapshots/tests.js.md +++ b/packages/config/tests/cwd/snapshots/tests.js.md @@ -31,6 +31,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -50,6 +118,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -68,6 +204,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -98,6 +302,62 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -117,6 +377,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -136,5 +464,73 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` diff --git a/packages/config/tests/cwd/snapshots/tests.js.snap b/packages/config/tests/cwd/snapshots/tests.js.snap index d4367de941df902266707596cf0be6e27fa21d14..26caaaeaaa543f3fa45627364d866496fa7588ff 100644 GIT binary patch delta 709 zcmV;$0y_PW1hobtK~_N^Q*L2!b7*gLAa*he0syqNGntv{^;Tlelizm_ zw`Ix4z1La3?&@=31dGZlFfcGPuz!Pn&B)3i$Y||fP?DLSr=Xr(o}#W$ke``XQmjyt zuaKyam!GGbT9H{?l9`vTkdj%Hnp~1!RB5H4pO%@Es$Y;;l0h4T++YS3r55BDXM)rQ z<>!|SHZz%YS*y7e6qJ&R67!NXl&s(^9k6I=W=@JrW)Vmnp&ufboS&DLnSTzH0qKXS zg>!)dsd;6YMfrKTsd*(J;aaeGtqw$WK~8CUW?nH+B081}DhxF;0AvMr3rkWfKxQcw z6y>LsCWFEPA_cSx;Si@FM?Yr|WS11@mlh?bf-Qpz0R_`j^HPfvbCjSWu{to-Wr;bZ zsYoG#;%;Y0XAf7GcxQiKUw_Y#_#js|D%j)U8sX^T>g?(3=o9bhf@UB6EbKF zEl81rVuQP5NU&36e2A-$tFLQFP-MJ|XRxD_kE;t6>@-BR%EQ%>8m3}P06va>?o=>3 zH7`CiST8ihP1gd`{7^@CS8CZ|m5LS(KF;xuK0dVcf*&v)(IuJ#LVtaHfLS9j)HRqI z2{$bw2+L?+9~wtkVl6vIi5O29N|IK~_N^Q*L2!b7*gLAa*he0syE@kDD20AHPnZI|4je_ePN-et)Hz z7#OZMPxz&JJo?%rrQOlJW^?W_f<+~m85r`q51&y!%hdnGgk{n647C_Wu;@=9&MaNM z>}~TU3)6Iw-#^bylwkymeq&)^IO$t(%;Aqj^OpUa_Evm+y^s+s`k9r1Va`{*Uw`ek zEcv+iI?LBxeGZIZ(JO2W49pDdV1HjTvN8xVTKgB2Waj57s3(`Fs4EoYXXcd@E0p9b zBr4?P=joC8-r4vy=*o z@>5EaL16)r0)|DZXI@%9#GYCd55A+B2a^(uQ?Y0qOr9T&-QgU&Bii%BF=+z;PD#y% H-Uk2x^d`Oj diff --git a/packages/config/tests/env/fixtures/empty/.gitkeep b/packages/config/tests/env/fixtures/empty/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/config/tests/env/fixtures/file_env/netlify.toml b/packages/config/tests/env/fixtures/file_env/netlify.toml new file mode 100644 index 0000000000..efa2561c94 --- /dev/null +++ b/packages/config/tests/env/fixtures/file_env/netlify.toml @@ -0,0 +1,2 @@ +[build.environment] +TEST = "testFile" diff --git a/packages/config/tests/env/fixtures/file_env_empty/netlify.toml b/packages/config/tests/env/fixtures/file_env_empty/netlify.toml new file mode 100644 index 0000000000..2e9067d78e --- /dev/null +++ b/packages/config/tests/env/fixtures/file_env_empty/netlify.toml @@ -0,0 +1,2 @@ +[build.environment] +TEST = "" diff --git a/packages/config/tests/env/fixtures/readonly/netlify.toml b/packages/config/tests/env/fixtures/readonly/netlify.toml new file mode 100644 index 0000000000..c224ba05bc --- /dev/null +++ b/packages/config/tests/env/fixtures/readonly/netlify.toml @@ -0,0 +1,2 @@ +[build.environment] +REVIEW_ID = "test" diff --git a/packages/config/tests/env/tests.js b/packages/config/tests/env/tests.js new file mode 100644 index 0000000000..f9bce9cfe3 --- /dev/null +++ b/packages/config/tests/env/tests.js @@ -0,0 +1,384 @@ +'use strict' + +const test = require('ava') + +const { getFixtureConfig, startServer } = require('../helpers/main') + +// List of API endpoints to mock +const SITE_INFO_PATH = '/api/v1/sites/test' +const LIST_ACCOUNTS_PATH = '/api/v1/accounts' +const LIST_ADDONS_PATH = '/api/v1/sites/test/service-instances' + +// List of API mock URLs, responses and status codes +const SITE_INFO_RESPONSE_URL = { + path: SITE_INFO_PATH, + response: { url: 'test' }, +} +const SITE_INFO_RESPONSE_REPO_URL = { + path: SITE_INFO_PATH, + response: { build_settings: { repo_url: 'test' } }, +} +const SITE_INFO_RESPONSE_ENV = { + path: SITE_INFO_PATH, + response: { build_settings: { env: { TEST: 'test' } } }, +} +const SITE_INFO_RESPONSE_ERROR = { + path: SITE_INFO_PATH, + status: 500, +} +const SITE_INFO_RESPONSE_ACCOUNT = { + path: SITE_INFO_PATH, + response: { account_slug: 'testAccount' }, +} +const LIST_ACCOUNTS_RESPONSE_SUCCESS = [ + SITE_INFO_RESPONSE_ACCOUNT, + { + path: LIST_ACCOUNTS_PATH, + response: [{ slug: 'testAccount', site_env: { TEST: 'test' } }], + }, +] +const LIST_ACCOUNTS_RESPONSE_MISMATCH = { + path: LIST_ACCOUNTS_PATH, + response: [{ slug: 'testAccount', site_env: { TEST: 'test' } }], +} +const LIST_ACCOUNTS_RESPONSE_ERROR = [ + SITE_INFO_RESPONSE_ACCOUNT, + { + path: LIST_ACCOUNTS_PATH, + status: 500, + }, +] +const LIST_ACCOUNTS_RESPONSE_WRONG_SHAPE = [ + SITE_INFO_RESPONSE_ACCOUNT, + { + path: LIST_ACCOUNTS_PATH, + response: {}, + }, +] +const LIST_ADDONS_RESPONSE_SUCCESS = { + path: LIST_ADDONS_PATH, + response: [{ env: { TEST: 'test' } }], +} +const LIST_ADDONS_RESPONSE_ERROR = { + path: LIST_ADDONS_PATH, + status: 500, +} +const LIST_ADDONS_RESPONSE_WRONG_SHAPE = { + path: LIST_ADDONS_PATH, + response: {}, +} + +// List of authenticating-related CLI flags +const AUTH_FLAGS = { token: 'test', siteId: 'test' } +const AUTH_FLAGS_NO_SITE_ID = { token: 'test' } +const AUTH_FLAGS_NO_TOKEN = { siteId: 'test' } +const AUTH_FLAGS_BUILDBOT = { token: 'test', siteId: 'test', mode: 'buildbot' } +const AUTH_FLAGS_OFFLINE = { token: 'test', siteId: 'test', offline: true } + +// Runs a fixture using a mock API server +const runWithMockServer = async function (t, handlers, { flags, fixtureName = 'empty' }) { + const { scheme, host, stopServer } = await startServer(handlers) + try { + return await getFixtureConfig(t, fixtureName, { flags: { testOpts: { scheme, host }, ...flags } }) + } finally { + await stopServer() + } +} + +const isDefinedString = function (string) { + return typeof string === 'string' && string.trim().length !== 0 +} + +test('Does not set environment variable in the buildbot', async (t) => { + const { env } = await getFixtureConfig(t, 'empty', { flags: { mode: 'buildbot' } }) + t.is(Object.keys(env).length, 0) +}) + +test('Sets LANG environment variable', async (t) => { + const { + env: { LANG }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(LANG.sources, ['general']) + t.true(isDefinedString(LANG.value)) +}) + +test('Sets LANGUAGE environment variable', async (t) => { + const { + env: { LANGUAGE }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(LANGUAGE.sources, ['general']) + t.true(isDefinedString(LANGUAGE.value)) +}) + +test('Sets LC_ALL environment variable', async (t) => { + const { + env: { LC_ALL }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(LC_ALL.sources, ['general']) + t.true(isDefinedString(LC_ALL.value)) +}) + +test('Sets GATSBY_TELEMETRY_DISABLED environment variable', async (t) => { + const { + env: { GATSBY_TELEMETRY_DISABLED }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(GATSBY_TELEMETRY_DISABLED.sources, ['general']) + t.true(isDefinedString(GATSBY_TELEMETRY_DISABLED.value)) +}) + +test('Sets NEXT_TELEMETRY_DISABLED environment variable', async (t) => { + const { + env: { NEXT_TELEMETRY_DISABLED }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(NEXT_TELEMETRY_DISABLED.sources, ['general']) + t.true(isDefinedString(NEXT_TELEMETRY_DISABLED.value)) +}) + +test('Sets PULL_REQUEST environment variable', async (t) => { + const { + env: { PULL_REQUEST }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(PULL_REQUEST.sources, ['general']) + t.true(isDefinedString(PULL_REQUEST.value)) +}) + +test('Sets COMMIT_REF environment variable', async (t) => { + const { + env: { COMMIT_REF }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(COMMIT_REF.sources, ['general']) + t.true(isDefinedString(COMMIT_REF.value)) +}) + +test('Sets CACHED_COMMIT_REF environment variable', async (t) => { + const { + env: { CACHED_COMMIT_REF }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(CACHED_COMMIT_REF.sources, ['general']) + t.true(isDefinedString(CACHED_COMMIT_REF.value)) +}) + +test('Sets HEAD environment variable', async (t) => { + const { + env: { HEAD }, + } = await getFixtureConfig(t, 'empty') + t.deepEqual(HEAD.sources, ['general']) + t.true(isDefinedString(HEAD.value)) +}) + +test('Sets BRANCH environment variable', async (t) => { + const { + env: { BRANCH }, + } = await getFixtureConfig(t, 'empty', { flags: { branch: 'test' } }) + t.deepEqual(BRANCH.sources, ['general']) + t.is(BRANCH.value, 'test') +}) + +test('Does not set some git-related environment variables if no repository', async (t) => { + const { + env: { COMMIT_REF }, + } = await getFixtureConfig(t, 'empty', { copyRoot: { git: false } }) + t.is(COMMIT_REF, undefined) +}) + +test('Sets CONTEXT environment variable', async (t) => { + const { + env: { CONTEXT }, + } = await getFixtureConfig(t, 'empty', { flags: { context: 'test' } }) + t.deepEqual(CONTEXT.sources, ['general']) + t.is(CONTEXT.value, 'test') +}) + +test('Sets DEPLOY_ID environment variable', async (t) => { + const { + env: { DEPLOY_ID }, + } = await getFixtureConfig(t, 'empty', { flags: { deployId: 'test' } }) + t.deepEqual(DEPLOY_ID.sources, ['general']) + t.is(DEPLOY_ID.value, 'test') +}) + +test('Sets URL environment variable', async (t) => { + const { + env: { URL }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_URL, { flags: AUTH_FLAGS }) + t.deepEqual(URL.sources, ['general']) + t.is(URL.value, 'test') +}) + +test('Sets REPOSITORY_URL environment variable', async (t) => { + const { + env: { REPOSITORY_URL }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_REPO_URL, { flags: AUTH_FLAGS }) + t.deepEqual(REPOSITORY_URL.sources, ['general']) + t.is(REPOSITORY_URL.value, 'test') +}) + +test('Sets config file environment variables', async (t) => { + const { + env: { TEST }, + } = await getFixtureConfig(t, 'file_env') + t.deepEqual(TEST.sources, ['configFile']) + t.is(TEST.value, 'testFile') +}) + +test('Sets config file empty environment variables', async (t) => { + const { + env: { TEST }, + } = await getFixtureConfig(t, 'file_env_empty') + t.deepEqual(TEST.sources, ['configFile']) + t.is(TEST.value, '') +}) + +test('Merges all environment variables', async (t) => { + const { + env: { TEST, LANG }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_ENV, { flags: AUTH_FLAGS, fixtureName: 'file_env' }) + t.deepEqual(TEST.sources, ['configFile', 'ui']) + t.is(TEST.value, 'testFile') + t.deepEqual(LANG.sources, ['general']) + t.true(isDefinedString(LANG.value)) +}) + +test('Sets site environment variables', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_ENV, { flags: AUTH_FLAGS }) + t.deepEqual(TEST.sources, ['ui']) + t.is(TEST.value, 'test') +}) + +test('Does not set site environment variables on API error', async (t) => { + const error = await runWithMockServer(t, SITE_INFO_RESPONSE_ERROR, { flags: AUTH_FLAGS }) + t.true(isDefinedString(error)) +}) + +test('Does not set site environment variables in the buildbot', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_ENV, { flags: AUTH_FLAGS_BUILDBOT }) + t.is(TEST, undefined) +}) + +test('Does not set site environment variables if offline', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_ENV, { flags: AUTH_FLAGS_OFFLINE }) + t.is(TEST, undefined) +}) + +test('Does not set site environment variables without a siteId', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_ENV, { flags: AUTH_FLAGS_NO_SITE_ID }) + t.is(TEST, undefined) +}) + +test('Does not set site environment variables without a token', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, SITE_INFO_RESPONSE_ENV, { flags: AUTH_FLAGS_NO_TOKEN }) + t.is(TEST, undefined) +}) + +test('Sets accounts environment variables', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS }) + t.deepEqual(TEST.sources, ['account']) + t.is(TEST.value, 'test') +}) + +test('Does not set accounts environment variables if no matching account', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_MISMATCH, { flags: AUTH_FLAGS }) + t.is(TEST, undefined) +}) + +test('Does not set accounts environment variables on API error', async (t) => { + const error = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_ERROR, { flags: AUTH_FLAGS }) + t.true(isDefinedString(error)) +}) + +test('Does not set accounts environment variables on API wrong response shape', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_WRONG_SHAPE, { flags: AUTH_FLAGS }) + t.is(TEST, undefined) +}) + +test('Does not set accounts environment variables in the buildbot', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS_BUILDBOT }) + t.is(TEST, undefined) +}) + +test('Does not set accounts environment variables if offline', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS_OFFLINE }) + t.is(TEST, undefined) +}) + +test('Does not set accounts environment variables without a siteId', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS_NO_SITE_ID }) + t.is(TEST, undefined) +}) + +test('Does not set accounts environment variables without a token', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ACCOUNTS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS_NO_TOKEN }) + t.is(TEST, undefined) +}) + +test('Sets addons environment variables', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ADDONS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS }) + t.deepEqual(TEST.sources, ['addons']) + t.is(TEST.value, 'test') +}) + +test('Does not set addons environment variables on API error', async (t) => { + const error = await runWithMockServer(t, LIST_ADDONS_RESPONSE_ERROR, { flags: AUTH_FLAGS }) + t.true(isDefinedString(error)) +}) + +test('Does not set addons environment variables on API wrong response shape', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ADDONS_RESPONSE_WRONG_SHAPE, { flags: AUTH_FLAGS }) + t.is(TEST, undefined) +}) + +test('Does not set addons environment variables if offline', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ADDONS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS_OFFLINE }) + t.is(TEST, undefined) +}) + +test('Does not set addons environment variables without a siteId', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ADDONS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS_NO_SITE_ID }) + t.is(TEST, undefined) +}) + +test('Does not set addons environment variables without a token', async (t) => { + const { + env: { TEST }, + } = await runWithMockServer(t, LIST_ADDONS_RESPONSE_SUCCESS, { flags: AUTH_FLAGS_NO_TOKEN }) + t.is(TEST, undefined) +}) + +test('Does not allow overridding readonly environment variables', async (t) => { + const { + env: { REVIEW_ID }, + } = await getFixtureConfig(t, 'readonly') + t.is(REVIEW_ID, undefined) +}) diff --git a/packages/config/tests/helpers/main.js b/packages/config/tests/helpers/main.js index ebe468e5c0..074c28fc0e 100644 --- a/packages/config/tests/helpers/main.js +++ b/packages/config/tests/helpers/main.js @@ -10,6 +10,15 @@ const { runFixtureCommon, FIXTURES_DIR, startServer } = require('../../../build/ const ROOT_DIR = `${__dirname}/../..` +const getFixtureConfig = async function (t, fixtureName, opts) { + const { returnValue } = await runFixture(t, fixtureName, { snapshot: false, ...opts }) + try { + return JSON.parse(returnValue) + } catch (error) { + return returnValue + } +} + const runFixture = async function (t, fixtureName, { flags = {}, env, ...opts } = {}) { const binaryPath = await BINARY_PATH const flagsA = { stable: true, buffer: true, branch: 'branch', ...flags } @@ -38,4 +47,4 @@ const serializeApi = function ({ api, ...result }) { // Use a top-level promise so it's only performed once at load time const BINARY_PATH = getBinPath({ cwd: ROOT_DIR }) -module.exports = { runFixture, FIXTURES_DIR, startServer } +module.exports = { getFixtureConfig, runFixture, FIXTURES_DIR, startServer } diff --git a/packages/config/tests/load/snapshots/tests.js.md b/packages/config/tests/load/snapshots/tests.js.md index da96ff42b6..ff876c4416 100644 --- a/packages/config/tests/load/snapshots/tests.js.md +++ b/packages/config/tests/load/snapshots/tests.js.md @@ -21,6 +21,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -41,6 +109,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {␊ "id": "test"␊ }␊ @@ -63,6 +199,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "hasApi": true,␊ "siteInfo": {},␊ "token": "test"␊ @@ -90,6 +294,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -108,6 +380,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -136,6 +476,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -168,6 +576,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -188,6 +664,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -216,6 +760,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "logs": {␊ "stderr": [],␊ "stdout": []␊ @@ -239,6 +851,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -259,6 +939,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -280,6 +1028,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -300,6 +1116,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -318,6 +1202,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -335,5 +1287,67 @@ Generated by [AVA](https://ava.li). "plugins": []␊ },␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` diff --git a/packages/config/tests/load/snapshots/tests.js.snap b/packages/config/tests/load/snapshots/tests.js.snap index f713ce3dd5df3ab8950d67e7a58c965c1f439e8b..61b8c40e2d4e71c111b54c0a164f2c2adcb3cddc 100644 GIT binary patch literal 1388 zcmV-y1(W(gRzV8%8*pETx)0UwJ900000000B+ zn|o|iRUF691%^ohGeFU3GOx{q8M-Y)z`11LZF{$twB6Q6fQ{MQwP)*fclXwNZ^y!z z4CV~F#ArYhAJHkIaX^3!0=^a*zWy+oG4mfD!6;#i?*!2VqVe9-t}nM_X!of5HRXWQ8eZo{43=QUBg)oS;@o*aC=+iZKFcj)EO z{O^jMrigk{yDz%H1Fi?IVh)C8Y=z zzhS#?)3Gb(9x@c%vFjy0qN~H@2+jZIm!(VI@67u)cjvm{f#n}kL~XPnv?1s7l~)g+ zUGCm^`bGouz19L<9k3yEu=ZAZkZR{o_3vHZy}0WUil~AUp}-3c;p>jwZ2jWlORLtM z=%a{Q?$LbEE#xdxIcO>6*c`$lEn`IzT6wXF4sd}G4$=WhY~-6FGNf-0;Y@g$Ko)j zh76Wur)V@NVTBeYmBwwnq9zxeSD4doplM@+%!z@Ju`K?|MAQf`1g*TR>j{TwEb6XB z^y9~J<8L(qi>J2eDRj- zOO?}U_xjyzMFxCq>=wq#TI^27;kR4U{HD*yB8L!8@)$e5;tdsS+ zxB9Ji4`X())(m)-q*~cnCKFZ1n*a{RRhfa(SoHfmMLusuVd+2X`;!fK zJ8!-Vz)oN%uoKt`?7aCd%o%n*GiB@yNG&a#7$n0S2ubwVdsA9MmCS1x)ze}n;|b~X zjR(S!27y=72@7zZzz5(Aa0WPMA)J-zhO-wd>VE(<5O@L~ATSUZ2%Lok&R;mwTMM!L z_Cz;%F&t5qq*_E(b##}}svN8Q~=HZXMi)nc^1MsGTm^tivq8GZ-zY;U@$Nk z7z_-CU2PyR5Euvy1fDqpOIfr<0rZ`~2j~m*1^Q+oefI->fxa0s0{Tv70swvI7JWmU z!i0Ha;%bOg9utN9S6Z(?E}Te1bQd5R5S<|-K=foL03dp9AvzhzQCB{gps}8rN@V+# z5xId=@HhvO7_fGdKEPUFEwDBVSewq(*A~q51nN5mSsXMQ(TcEYAVOlfc`f~O#aOmRR92DJE4jI literal 1013 zcmVRzV>`#t0T&%gn&wd;YHO_hV{yiF%&L zgMW3eX9SDBXJKGa32KODs#?&{T=Qi4sxKDz8Ns4rYzz!VJ2o7h^PANqP|j@2g^p|~ zMzH8Rb_Rx~&#Rv6HP+e6?elk9KiMdh5iDxJ$-r<>;kARt*6nL|SzWoZX7R>lj9}47 zE(V73ufCp|7SFo_c8clD3!G`i2o`PNW?-23wqD@;-IL0V8?nw?em($ z!a?>sekVD;0=fVsDlfpmur!KK;SghW=Jw4UX01HUag1QmM?joB%_rw-ZKG=}&z1Y? zrdw7qf<+^Qfc7x3gJY4Al|hivCp;rHPoXHaI6tQ>GcR2sIWajSHANvgKQApay|gH? zBr`vcD>N^)q98T71SnCGpAA%Bt&o|g;1%rer;u2pP>^4o2~wtDh+?uYn#n1tX^Evd zCDbt59o^AjBNfszb5a%bL8N{`Vo3&WOR1nJKczGo~i!yzs;1UI;NjaIt z=)o{RAt*ub5DZBzE}km0CGuUa&}^RDo8RvFI9;PO*d9&kzsZT(1kFw!SrYWGRO-M zDSC&XXI@SwFa-{|B4o6rB`TOihER?ipdhjw4I+?KMq;sJK_*gNhZ<;L5pWj@T(N*M z16nw0jD{n6s6ounOhE)0s3JxUws$n^RU{=Ar()4KnDXA1!PTWA#|!C0DA^BOn00000000B+ znNMibP#ni!l}(8X4ljb2*oz`g(Th?QD(;``QMxq~uRgWP*o@ASi+& z9t7DzPokg)6+}=(yr>9XJa`eDUOWs>Ui9T9OVU|u(QJ0(_0snDd++!C{a)UFpS{;9 z06;&uICyX4s_ChZ9|oRpest!=Kmxe0JN*DW>9^0{y|V57+V8hs-e1$KCW!UfYCP)# z_vYR0$$O_K_32ml&rKzW_3}CZ9)7LwD?k3Rn|pNk%j?|D^9f>ovjKoJmFxBTOmi1F zdT?@e-=-4@V!fIKVB?q)6mC}ZZl)1qL=F_)_Z5LE5)$vAX|W7|oQ1)sJOtDl`~4-@fx-gNA7=g*D}zLEh%&YkNfKxRc9ULLO74;2iE ztd|>bg4icKce0^5c$$SBM~*SRIT^0lZ&Gy^&UJ-L=ee*{SVFqU6*Bo~4VK}UWkke$ z6E@b6j!Z>M`j%rs-c3bwP-G2T^3HIXJj}|Ok>O!pl#4JIgH9eE=CUxu4|9UdXXofG zoKQi8hs79FA`hoUVTcn;=}}pP0vv{7aa7LoB`z(%Yz&$^TBY)kiz8~g4IprZp%_9V zU6xAQBr!L*``7pqHw5F-NTE58LCDCQAk1e81-y?IN``-;anyDh{%_{^<4=W~$4j3~+8SDo;5_80$%x%A zCpbs>9#4+~jRK7VjRLI~fi}1@E}*&Q63i5#`0s2BuE!#|q)1hP1`d=Fc($r3Zh$|I zm&HRPi|y90Q~AHv*7H|{;Xd}#CK2(|j&d|CDDbwRlwL4W_EPpz_Vzk^eTAUWb&l;d zt{m=H9m0prur<2hEaO$^>VJm^u^on^=Cs5MSvd>S(om0FoYLR<=8YW-u?OzopFQpJB`? Iv)L*D09Ygim;e9( literal 751 zcmVK-5BydVid9haZaw00000000A9 z#K6G7#;~8Qq|hTb9Pi00KLK6kDI;g{x~@H`lf1JwLalV-X`*RG)=` zpy6sd;6YMfrKTsd*(_Nkxfy$r)A(5Sj}pWyPhSpsV2L z8sg*W78&mt8sZTj;_vP1$5oVCkYAixl3!FAl%HQ>rJ$ddnUkttkXVwz1+*g66KZ;K zYDr0EUV1TCQetsxP->1#W|5UbNl|GkNL5g3aehu&Y6@YOfE9rCBH5FipI4Gv0kpfI zC_kk%xg;|`55-iVd|GBYS9L8HS2fTZN)WS@tl%siuqf1MkT}9{h#bTOpbSVqOf8%X z6hLw^NVpa(UaJF9U650no|#t+l!%Vyf(k1^9SyP#;cSR)z~D^v%uCCMm{f}rap_Eh zCgPypf>@B5S5R6~4EK6LVsdt3dMZ$5YHxPJgkQ2^(9QtXTm000`pO78#w diff --git a/packages/config/tests/normalize/snapshots/tests.js.md b/packages/config/tests/normalize/snapshots/tests.js.md index 525a8f4bd4..fa95191c7e 100644 --- a/packages/config/tests/normalize/snapshots/tests.js.md +++ b/packages/config/tests/normalize/snapshots/tests.js.md @@ -21,6 +21,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -41,6 +109,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -60,6 +196,74 @@ Generated by [AVA](https://ava.li). "plugins": []␊ },␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -78,6 +282,74 @@ Generated by [AVA](https://ava.li). "plugins": []␊ },␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -96,6 +368,74 @@ Generated by [AVA](https://ava.li). "plugins": []␊ },␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -114,6 +454,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -131,6 +539,74 @@ Generated by [AVA](https://ava.li). "plugins": []␊ },␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -150,6 +626,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -169,6 +713,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -201,6 +813,80 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "TEST": {␊ + "sources": [␊ + "configFile"␊ + ],␊ + "value": "test"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -232,6 +918,80 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "testContext",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testContext"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "testBranch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "TEST": {␊ + "sources": [␊ + "configFile"␊ + ],␊ + "value": "testTestBranch"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -264,6 +1024,80 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + },␊ + "TEST": {␊ + "sources": [␊ + "configFile"␊ + ],␊ + "value": "test"␊ + }␊ + },␊ "siteInfo": {}␊ }` @@ -282,5 +1116,73 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` diff --git a/packages/config/tests/normalize/snapshots/tests.js.snap b/packages/config/tests/normalize/snapshots/tests.js.snap index 16c50ec283c3978146fa89600354a81fa6f7763e..06561df3c75a49a9788cf5ccc5b7ce39f84e7151 100644 GIT binary patch literal 1178 zcmV;L1ZDd{RzV>rB=00000000B+ zns00qWgN$!lMGCQE`;G^32~G#32sc00YS~Uw%4uZT1I!36R#GD+kO3r6FVXrjq7eL*1cPnLiZ1p?8#r`N7MwozugKllL8>NW){Zj~? z3%z;vRF&}Eh85Au1EB>sDWWb}iBMIIp8D+2Y4zSWj~-Zkr1x`*sOoBjetPTfvX8DO zTb2)%UFyfbK1mVvTs=aU{#fzJNb2d0%-L^0yu5f|kRs|64G3Lq>@DvfT6*mF8>3(G zJJ*`sEcNaS2)(>{_;}wdU!SiqPCnj1zkZk^>J<+{$yeWQ41U})5O&v`+^tuPQbZjN zAT$pxAZtjKp+%3>mF;s?SGzk@UXJf_Z_3`QC8{Axojy^u^!kJ-;rbM>+qJkNCq%)l zSkKRl%|0{*EO&{jA}6t|TXHwiyKB>w_I zxGpMkx@207O~ezXL*C}xnP`fk#xXIoB~uizj8$H8+e&+FW^@-X88~Mp^5*TOz0Hg- z=G_tu2Dn(5@fX3TnQ5baj5iRZ*;v5m@S8rP5XZD}MR3X4oIHmnnrrn$V;sXWL52%Q zW4=Hu?O_>T5j>yEw`ykSVsstv0I+nZsR*sH9E-HBiE#e9jraGD&`nISJT_s+Hn83p z&9bF@2_f?wP0Kd7L|E2*Yix}$t;IOF30~5$?T}@XCh9mKCzLe8y7SmsKD*cnbS$9} z(6NvM0CWU8!Y4~$XTA}zvycM->;!gZ*eR5ZopB|ZsZs>wT{9TRW$KwmF-s9 z0YKdXeSo?^U7#*d7pM!=1?mEIfx44Ymzf3BHN<~OTwrPmjex0z8~|V{Fg3%}XQ%DE z*X(2yhD_dCnxie?6YvT61bogVe1_&2KH+*F;0kaBxE8d{GY!{urGsmyfMdJN3wsHx zPL9ImJs=bi3JCpAAT&G&5elDC0k8mA0Bk|qJkx;vVScFq+reviBCh8AUL_b(syh8- zXL*wU3QPgsW6Q{;*E;=EnJqu~`-$uTQIHjtytGawkiMU-ncy&YO%r7y-!iUgc>-B5 zYx<_Ds|L;%y6>A$%IJ_p%^4?xH`GnsML+Ia1U sB@8*;vHTEp54Cie9h&1wH_<78w1c#pYT7x$K4I?t1I2s%wK7Wp0I1_Wga7~l literal 769 zcmV+c1OEI$RzVesP;u~hnHbLB|!7C-hcj9}3PObiV7y8g(n`H&l+c$W3py3|(^j9}3YW(I~w?dj`` z>|dWf^5c$nsN0kOj9}4B76yhTM`qi~8Xu`QnJaAebIQ}5j9^hORtAQ7FPKfuPjS6% z>im^eHrM4TBUm(*je$W`jm<5JEBf1aPcElP5w~I(!J-Z93=C3gB?WsYE-CtZo})!; z@`B@xV9_QH28LswmABj}P`7Yhe`)mv;T=a9!J-|UK)W1nO5dj7U zW(Ia}7&5Xl2r_M9sOC~oP)aIF%uCKtvVya8z@nv@IVmogMIdqgw9K4T{er|2s9bV> zURq{4PzIzQrWVcx3Z&+hWftY<<)-G9fP`zo;6v-OK#AyBE~qfb$dc3w zkZPrZqWqN7qaMWKK_13|FNUB-QI>p1gNBYl^LdDs;nWX-??bSJr+z3XFwrU$k`jwk zad{po`=poV6evJ6laPtX2w|u&P$I-NI0T+^p~8fdDO^EjdR~4J*lQ{Io)9)%4jA;w zsl~;adFiNDCKnf@2!I0&4D*f>ME*is7s%Y7qPY!Lte0HkCE diff --git a/packages/config/tests/parse/snapshots/tests.js.md b/packages/config/tests/parse/snapshots/tests.js.md index 31688ec5ba..bb839ba917 100644 --- a/packages/config/tests/parse/snapshots/tests.js.md +++ b/packages/config/tests/parse/snapshots/tests.js.md @@ -21,6 +21,74 @@ Generated by [AVA](https://ava.li). },␊ "configPath": "/file/path",␊ "context": "production",␊ + "env": {␊ + "BRANCH": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "CACHED_COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "COMMIT_REF": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "HEXADECIMAL_ID"␊ + },␊ + "CONTEXT": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "production"␊ + },␊ + "GATSBY_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "HEAD": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "branch"␊ + },␊ + "LANG": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "LANGUAGE": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US:en"␊ + },␊ + "LC_ALL": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "en_US.UTF-8"␊ + },␊ + "NEXT_TELEMETRY_DISABLED": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "1"␊ + },␊ + "PULL_REQUEST": {␊ + "sources": [␊ + "general"␊ + ],␊ + "value": "false"␊ + }␊ + },␊ "siteInfo": {}␊ }` diff --git a/packages/config/tests/parse/snapshots/tests.js.snap b/packages/config/tests/parse/snapshots/tests.js.snap index 1768f5f8e8598cc4a7530caab989121eb9049bcc..1dda67b28a0af3816fd8d2a62958166371142350 100644 GIT binary patch literal 641 zcmV-{0)G8LRzVt|-8`2lI_U4j5czbjB z^_$N|wThHp55@Ci=f$n<%XfF*AAi_=^y&3ZB|{$zg7y9R(`U0MlaH@H@2eZPUsf`7 zdn?u3%H~%#rCMcrJjN7o9I;?Zs1F=QJ>mn81Q;~Zu@RzpTvb^TxPY=)P?4Ln5{_cR zXhyC=eW2<6CLlq8eG~u|;yf*G1YE+g6El8Z&lDDG*!U^^YY`#h5nfxxStx9<3*?3@ z*Tq=OUWxviEGGht14Pe(Ge#VVqBs~OF~HOX%majmBJfy3-MyvFV4D|J0OS!z)EUdo z;;o*c2?<<{@DyM4O>^_z5SeuT6}Jd8!eoMI3dz_RGjJ8xR|tok_=KjkT(TfwIwhRZ z38rx>Jj?LeJS~SoBBn(masRZM!@0syTIBkYV|{=ryiUC!e+k!!<_gGV+Q~L*@-M7 literal 442 zcmV;r0Y&~nRzV>C9yBcImEpKY#FeHLGXrWl7~tWb^vCR@U21k1!A< z;(nVl7i`WP>ViXk0u}YHgedlm8c%!-jK|W7aN$Y>iYaHA*;sC@*Bfh9puSIBrZ0{HaT_miklA|lf zq@%LTP;i{s>WFeFqA_VOhv)xEhmPn&`|F-UBqB0$QJqk3f?(OrG_B!=L+DrWe-Lm1 kh;_mCkU+AOfL0O%VHmgrl!X#FJYjg@6F+;?HwXg&07;C`761SM diff --git a/packages/config/tests/validate/snapshots/tests.js.snap b/packages/config/tests/validate/snapshots/tests.js.snap index 81f51e734d4e8b5de25c05f2ff51a6a649860d06..a748f111d61353d54c2c3b4159902054e52d1cd8 100644 GIT binary patch literal 1588 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