netlify-cli 17.3.1 → 17.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -139
- package/npm-shrinkwrap.json +82 -82
- package/package.json +16 -15
- package/src/commands/addons/addons-auth.mjs +27 -30
- package/src/commands/addons/addons-config.mjs +145 -154
- package/src/commands/addons/addons-create.mjs +94 -108
- package/src/commands/addons/addons-delete.mjs +36 -41
- package/src/commands/addons/addons-list.mjs +38 -42
- package/src/commands/addons/addons.mjs +26 -28
- package/src/commands/addons/index.mjs +1 -1
- package/src/commands/api/api.mjs +45 -53
- package/src/commands/api/index.mjs +1 -1
- package/src/commands/base-command.mjs +597 -684
- package/src/commands/blobs/blobs-delete.mjs +35 -0
- package/src/commands/blobs/blobs-get.mjs +44 -0
- package/src/commands/blobs/blobs-list.mjs +48 -0
- package/src/commands/blobs/blobs-set.mjs +54 -0
- package/src/commands/blobs/blobs.mjs +32 -0
- package/src/commands/blobs/index.mjs +1 -0
- package/src/commands/build/build.mjs +55 -67
- package/src/commands/build/index.mjs +1 -1
- package/src/commands/completion/completion.mjs +41 -46
- package/src/commands/completion/index.mjs +1 -1
- package/src/commands/deploy/deploy.mjs +675 -710
- package/src/commands/deploy/index.mjs +1 -1
- package/src/commands/dev/dev-exec.mjs +20 -32
- package/src/commands/dev/dev.mjs +217 -302
- package/src/commands/dev/index.mjs +1 -1
- package/src/commands/dev/types.d.ts +30 -0
- package/src/commands/env/env-clone.mjs +157 -184
- package/src/commands/env/env-get.mjs +49 -68
- package/src/commands/env/env-import.mjs +100 -119
- package/src/commands/env/env-list.mjs +104 -129
- package/src/commands/env/env-set.mjs +160 -185
- package/src/commands/env/env-unset.mjs +104 -122
- package/src/commands/env/env.mjs +28 -30
- package/src/commands/env/index.mjs +1 -1
- package/src/commands/functions/functions-build.mjs +29 -41
- package/src/commands/functions/functions-create.mjs +533 -601
- package/src/commands/functions/functions-invoke.mjs +193 -216
- package/src/commands/functions/functions-list.mjs +45 -55
- package/src/commands/functions/functions-serve.mjs +51 -61
- package/src/commands/functions/functions.mjs +26 -32
- package/src/commands/functions/index.mjs +1 -1
- package/src/commands/index.mjs +2 -2
- package/src/commands/init/index.mjs +1 -1
- package/src/commands/init/init.mjs +138 -167
- package/src/commands/integration/deploy.mjs +337 -399
- package/src/commands/integration/index.mjs +12 -13
- package/src/commands/link/index.mjs +1 -1
- package/src/commands/link/link.mjs +298 -317
- package/src/commands/lm/index.mjs +1 -1
- package/src/commands/lm/lm-info.mjs +23 -31
- package/src/commands/lm/lm-install.mjs +13 -17
- package/src/commands/lm/lm-setup.mjs +80 -84
- package/src/commands/lm/lm-uninstall.mjs +7 -12
- package/src/commands/lm/lm.mjs +18 -22
- package/src/commands/login/index.mjs +1 -1
- package/src/commands/login/login.mjs +35 -41
- package/src/commands/logout/index.mjs +1 -1
- package/src/commands/logout/logout.mjs +25 -31
- package/src/commands/main.mjs +166 -201
- package/src/commands/open/index.mjs +1 -1
- package/src/commands/open/open-admin.mjs +15 -18
- package/src/commands/open/open-site.mjs +16 -19
- package/src/commands/open/open.mjs +24 -27
- package/src/commands/recipes/common.mjs +23 -34
- package/src/commands/recipes/index.mjs +1 -1
- package/src/commands/recipes/recipes-list.mjs +13 -20
- package/src/commands/recipes/recipes.mjs +59 -72
- package/src/commands/serve/index.mjs +1 -1
- package/src/commands/serve/serve.mjs +142 -189
- package/src/commands/sites/index.mjs +2 -2
- package/src/commands/sites/sites-create-template.mjs +214 -236
- package/src/commands/sites/sites-create.mjs +145 -157
- package/src/commands/sites/sites-delete.mjs +75 -81
- package/src/commands/sites/sites-list.mjs +63 -66
- package/src/commands/sites/sites.mjs +18 -20
- package/src/commands/status/index.mjs +1 -1
- package/src/commands/status/status-hooks.mjs +32 -34
- package/src/commands/status/status.mjs +99 -106
- package/src/commands/switch/index.mjs +1 -1
- package/src/commands/switch/switch.mjs +32 -37
- package/src/commands/types.d.ts +31 -0
- package/src/commands/unlink/index.mjs +1 -1
- package/src/commands/unlink/unlink.mjs +23 -29
- package/src/commands/watch/index.mjs +1 -1
- package/src/commands/watch/watch.mjs +91 -105
- package/src/functions-templates/javascript/hello/{{name}}.js +2 -3
- package/src/lib/account.mjs +4 -5
- package/src/lib/api.mjs +22 -20
- package/src/lib/blobs/blobs.mjs +36 -45
- package/src/lib/build.mjs +82 -85
- package/src/lib/completion/constants.mjs +2 -4
- package/src/lib/completion/generate-autocompletion.mjs +33 -36
- package/src/lib/completion/get-autocompletion.mjs +31 -35
- package/src/lib/completion/index.mjs +1 -1
- package/src/lib/completion/script.mjs +12 -19
- package/src/lib/edge-functions/bootstrap.mjs +3 -5
- package/src/lib/edge-functions/consts.mjs +9 -10
- package/src/lib/edge-functions/deploy.mjs +28 -34
- package/src/lib/edge-functions/editor-helper.mjs +29 -42
- package/src/lib/edge-functions/headers.mjs +24 -26
- package/src/lib/edge-functions/internal.mjs +38 -44
- package/src/lib/edge-functions/proxy.mjs +229 -228
- package/src/lib/edge-functions/registry.mjs +473 -574
- package/src/lib/exec-fetcher.mjs +115 -122
- package/src/lib/fs.mjs +28 -27
- package/src/lib/functions/background.mjs +16 -20
- package/src/lib/functions/config.mjs +12 -9
- package/src/lib/functions/form-submissions-handler.mjs +143 -149
- package/src/lib/functions/local-proxy.mjs +40 -44
- package/src/lib/functions/memoized-build.mjs +19 -21
- package/src/lib/functions/netlify-function.mjs +269 -249
- package/src/lib/functions/registry.mjs +509 -568
- package/src/lib/functions/runtimes/go/index.mjs +62 -71
- package/src/lib/functions/runtimes/index.mjs +8 -15
- package/src/lib/functions/runtimes/js/builders/netlify-lambda.mjs +55 -64
- package/src/lib/functions/runtimes/js/builders/zisi.mjs +135 -154
- package/src/lib/functions/runtimes/js/constants.mjs +1 -1
- package/src/lib/functions/runtimes/js/index.mjs +92 -109
- package/src/lib/functions/runtimes/js/worker.mjs +43 -45
- package/src/lib/functions/runtimes/rust/index.mjs +64 -73
- package/src/lib/functions/scheduled.mjs +70 -88
- package/src/lib/functions/server.mjs +269 -327
- package/src/lib/functions/synchronous.mjs +118 -147
- package/src/lib/functions/utils.mjs +38 -46
- package/src/lib/geo-location.mjs +69 -81
- package/src/lib/http-agent.mjs +87 -90
- package/src/lib/images/proxy.mjs +97 -89
- package/src/lib/log.mjs +6 -9
- package/src/lib/path.mjs +2 -1
- package/src/lib/render-error-template.mjs +19 -20
- package/src/lib/settings.mjs +17 -19
- package/src/lib/spinner.mjs +21 -23
- package/src/lib/string.mjs +4 -2
- package/src/recipes/vscode/index.mjs +69 -85
- package/src/recipes/vscode/settings.mjs +53 -58
- package/src/utils/addons/compare.mjs +31 -32
- package/src/utils/addons/diffs/index.mjs +16 -17
- package/src/utils/addons/diffs/options.mjs +99 -101
- package/src/utils/addons/prepare.mjs +100 -97
- package/src/utils/addons/prompts.mjs +73 -76
- package/src/utils/addons/render.mjs +33 -36
- package/src/utils/addons/validation.mjs +19 -15
- package/src/utils/banner.mjs +11 -16
- package/src/utils/build-info.mjs +65 -66
- package/src/utils/command-helpers.mjs +185 -199
- package/src/utils/create-deferred.mjs +9 -12
- package/src/utils/create-stream-promise.mjs +54 -47
- package/src/utils/deploy/constants.mjs +9 -11
- package/src/utils/deploy/deploy-site.mjs +162 -182
- package/src/utils/deploy/hash-config.mjs +21 -21
- package/src/utils/deploy/hash-files.mjs +34 -38
- package/src/utils/deploy/hash-fns.mjs +149 -154
- package/src/utils/deploy/hasher-segments.mjs +58 -52
- package/src/utils/deploy/upload-files.mjs +99 -113
- package/src/utils/deploy/util.mjs +85 -91
- package/src/utils/detect-server-settings.mjs +236 -268
- package/src/utils/dev.mjs +163 -178
- package/src/utils/dot-env.mjs +37 -42
- package/src/utils/env/index.mjs +148 -148
- package/src/utils/execa.mjs +9 -13
- package/src/utils/feature-flags.mjs +6 -5
- package/src/utils/framework-server.mjs +43 -52
- package/src/utils/functions/constants.mjs +1 -1
- package/src/utils/functions/functions.mjs +30 -40
- package/src/utils/functions/get-functions.mjs +28 -29
- package/src/utils/functions/index.mjs +3 -3
- package/src/utils/get-global-config.mjs +33 -36
- package/src/utils/get-package-json.mjs +14 -15
- package/src/utils/get-repo-data.mjs +54 -64
- package/src/utils/get-site.mjs +14 -14
- package/src/utils/gh-auth.mjs +79 -100
- package/src/utils/gitignore.mjs +37 -40
- package/src/utils/headers.mjs +33 -35
- package/src/utils/hooks/requires-site-info.mjs +26 -22
- package/src/utils/init/config-github.mjs +207 -219
- package/src/utils/init/config-manual.mjs +83 -100
- package/src/utils/init/config.mjs +25 -26
- package/src/utils/init/node-version.mjs +23 -30
- package/src/utils/init/plugins.mjs +12 -8
- package/src/utils/init/utils.mjs +152 -172
- package/src/utils/live-tunnel.mjs +118 -141
- package/src/utils/lm/install.mjs +220 -259
- package/src/utils/lm/requirements.mjs +54 -63
- package/src/utils/lm/steps.mjs +31 -31
- package/src/utils/lm/ui.mjs +13 -20
- package/src/utils/open-browser.mjs +31 -32
- package/src/utils/parse-raw-flags.mjs +39 -35
- package/src/utils/proxy-server.mjs +84 -71
- package/src/utils/proxy.mjs +696 -750
- package/src/utils/read-repo-url.mjs +48 -47
- package/src/utils/redirects.mjs +49 -49
- package/src/utils/request-id.mjs +2 -4
- package/src/utils/rules-proxy.mjs +96 -100
- package/src/utils/run-build.mjs +109 -132
- package/src/utils/shell.mjs +99 -106
- package/src/utils/sign-redirect.mjs +14 -14
- package/src/utils/sites/utils.mjs +48 -55
- package/src/utils/state-config.mjs +101 -101
- package/src/utils/static-server.mjs +28 -34
- package/src/utils/telemetry/index.mjs +2 -2
- package/src/utils/telemetry/report-error.mjs +45 -49
- package/src/utils/telemetry/request.mjs +36 -43
- package/src/utils/telemetry/telemetry.mjs +90 -105
- package/src/utils/telemetry/utils.mjs +5 -6
- package/src/utils/telemetry/validation.mjs +55 -53
- package/src/utils/types.d.ts +46 -0
- package/src/utils/validation.mjs +10 -13
|
@@ -1,125 +1,108 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { exit, log } from '../command-helpers.mjs'
|
|
5
|
-
|
|
6
|
-
import { createDeployKey, getBuildSettings, saveNetlifyToml, setupSite } from './utils.mjs'
|
|
7
|
-
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import { exit, log } from '../command-helpers.mjs';
|
|
3
|
+
import { createDeployKey, getBuildSettings, saveNetlifyToml, setupSite } from './utils.mjs';
|
|
8
4
|
/**
|
|
9
5
|
* Prompts for granting the netlify ssh public key access to your repo
|
|
10
6
|
* @param {object} deployKey
|
|
11
7
|
* @param {string} deployKey.public_key
|
|
12
8
|
*/
|
|
9
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'deployKey' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
13
10
|
const addDeployKey = async (deployKey) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
11
|
+
log('\nGive this Netlify SSH public key access to your repository:\n');
|
|
12
|
+
log(`\n${deployKey.public_key}\n\n`);
|
|
13
|
+
const { sshKeyAdded } = await inquirer.prompt([
|
|
14
|
+
{
|
|
15
|
+
type: 'confirm',
|
|
16
|
+
name: 'sshKeyAdded',
|
|
17
|
+
message: 'Continue?',
|
|
18
|
+
default: true,
|
|
19
|
+
},
|
|
20
|
+
]);
|
|
21
|
+
if (!sshKeyAdded) {
|
|
22
|
+
exit();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
31
25
|
/**
|
|
32
26
|
* @param {object} config
|
|
33
27
|
* @param {Awaited<ReturnType<import('../../utils/get-repo-data.mjs').default>>} config.repoData
|
|
34
28
|
* @returns {Promise<string>}
|
|
35
29
|
*/
|
|
30
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'repoData' implicitly has an 'any'... Remove this comment to see the full error message
|
|
36
31
|
const getRepoPath = async ({ repoData }) => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
32
|
+
const { repoPath } = await inquirer.prompt([
|
|
33
|
+
{
|
|
34
|
+
type: 'input',
|
|
35
|
+
name: 'repoPath',
|
|
36
|
+
message: 'The SSH URL of the remote git repo:',
|
|
37
|
+
default: repoData.url,
|
|
38
|
+
/**
|
|
39
|
+
* @param {string} url
|
|
40
|
+
*/
|
|
41
|
+
validate: (url) => SSH_URL_REGEXP.test(url) || 'The URL provided does not use the SSH protocol',
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
return repoPath;
|
|
45
|
+
};
|
|
53
46
|
/**
|
|
54
47
|
* @param {string} deployHook
|
|
55
48
|
* @returns
|
|
56
49
|
*/
|
|
50
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'deployHook' implicitly has an 'any' typ... Remove this comment to see the full error message
|
|
57
51
|
const addDeployHook = async (deployHook) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
52
|
+
log('\nConfigure the following webhook for your repository:\n');
|
|
53
|
+
log(`\n${deployHook}\n\n`);
|
|
54
|
+
const { deployHookAdded } = await inquirer.prompt([
|
|
55
|
+
{
|
|
56
|
+
type: 'confirm',
|
|
57
|
+
name: 'deployHookAdded',
|
|
58
|
+
message: 'Continue?',
|
|
59
|
+
default: true,
|
|
60
|
+
},
|
|
61
|
+
]);
|
|
62
|
+
return deployHookAdded;
|
|
63
|
+
};
|
|
72
64
|
/**
|
|
73
65
|
* @param {object} config
|
|
74
66
|
* @param {import('../../commands/base-command.mjs').default} config.command
|
|
75
67
|
* @param {Awaited<ReturnType<import('../../utils/get-repo-data.mjs').default>>} config.repoData
|
|
76
68
|
* @param {string} config.siteId
|
|
77
69
|
*/
|
|
70
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'command' implicitly has an 'any' ... Remove this comment to see the full error message
|
|
78
71
|
export default async function configManual({ command, repoData, siteId }) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
siteId,
|
|
115
|
-
repo,
|
|
116
|
-
configPlugins: config.plugins,
|
|
117
|
-
pluginsToInstall,
|
|
118
|
-
})
|
|
119
|
-
const deployHookAdded = await addDeployHook(updatedSite.deploy_hook)
|
|
120
|
-
if (!deployHookAdded) {
|
|
121
|
-
exit()
|
|
122
|
-
}
|
|
72
|
+
const { netlify } = command;
|
|
73
|
+
const { api, cachedConfig: { configPath }, config, repositoryRoot, site: { root: siteRoot }, } = netlify;
|
|
74
|
+
const { baseDir, buildCmd, buildDir, functionsDir, pluginsToInstall } = await getBuildSettings({
|
|
75
|
+
// @ts-expect-error TS(2345) FIXME: Argument of type '{ repositoryRoot: any; siteRoot:... Remove this comment to see the full error message
|
|
76
|
+
repositoryRoot,
|
|
77
|
+
siteRoot,
|
|
78
|
+
config,
|
|
79
|
+
command,
|
|
80
|
+
});
|
|
81
|
+
await saveNetlifyToml({ repositoryRoot, config, configPath, baseDir, buildCmd, buildDir, functionsDir });
|
|
82
|
+
const deployKey = await createDeployKey({ api });
|
|
83
|
+
await addDeployKey(deployKey);
|
|
84
|
+
const repoPath = await getRepoPath({ repoData });
|
|
85
|
+
const repo = {
|
|
86
|
+
provider: 'manual',
|
|
87
|
+
repo_path: repoPath,
|
|
88
|
+
repo_branch: repoData.branch,
|
|
89
|
+
allowed_branches: [repoData.branch],
|
|
90
|
+
deploy_key_id: deployKey.id,
|
|
91
|
+
base: baseDir,
|
|
92
|
+
dir: buildDir,
|
|
93
|
+
functions_dir: functionsDir,
|
|
94
|
+
...(buildCmd && { cmd: buildCmd }),
|
|
95
|
+
};
|
|
96
|
+
const updatedSite = await setupSite({
|
|
97
|
+
api,
|
|
98
|
+
siteId,
|
|
99
|
+
repo,
|
|
100
|
+
configPlugins: config.plugins,
|
|
101
|
+
pluginsToInstall,
|
|
102
|
+
});
|
|
103
|
+
const deployHookAdded = await addDeployHook(updatedSite.deploy_hook);
|
|
104
|
+
if (!deployHookAdded) {
|
|
105
|
+
exit();
|
|
106
|
+
}
|
|
123
107
|
}
|
|
124
|
-
|
|
125
|
-
const SSH_URL_REGEXP = /(ssh:\/\/|[a-zA-Z]*@|[a-zA-Z.].*:(?!\/\/))/
|
|
108
|
+
const SSH_URL_REGEXP = /(ssh:\/\/|[a-zA-Z]*@|[a-zA-Z.].*:(?!\/\/))/;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import configManual from './config-manual.mjs'
|
|
6
|
-
|
|
1
|
+
import { chalk, log } from '../command-helpers.mjs';
|
|
2
|
+
import { configGithub } from './config-github.mjs';
|
|
3
|
+
import configManual from './config-manual.mjs';
|
|
4
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'repoData' implicitly has an 'any' type.
|
|
7
5
|
const logSuccess = (repoData) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
log();
|
|
7
|
+
log(chalk.greenBright.bold.underline(`Success! Netlify CI/CD Configured!`));
|
|
8
|
+
log();
|
|
9
|
+
log(`This site is now configured to automatically deploy from ${repoData.provider} branches & pull requests`);
|
|
10
|
+
log();
|
|
11
|
+
log(`Next steps:
|
|
14
12
|
|
|
15
13
|
${chalk.cyanBright.bold('git push')} Push to your git repository to trigger new site builds
|
|
16
14
|
${chalk.cyanBright.bold('netlify open')} Open the Netlify admin URL of your site
|
|
17
|
-
`)
|
|
18
|
-
}
|
|
19
|
-
|
|
15
|
+
`);
|
|
16
|
+
};
|
|
20
17
|
/**
|
|
21
18
|
* @param {object} config
|
|
22
19
|
* @param {import('../../commands/base-command.mjs').default} config.command
|
|
@@ -24,15 +21,17 @@ const logSuccess = (repoData) => {
|
|
|
24
21
|
* @param {*} config.repoData
|
|
25
22
|
* @param {string} config.siteId
|
|
26
23
|
*/
|
|
24
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'command' implicitly has an 'any' ... Remove this comment to see the full error message
|
|
27
25
|
export const configureRepo = async ({ command, manual, repoData, siteId }) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
if (manual) {
|
|
27
|
+
await configManual({ command, siteId, repoData });
|
|
28
|
+
}
|
|
29
|
+
else if (repoData.provider === 'github') {
|
|
30
|
+
await configGithub({ command, siteId, repoName: repoData.name, repoOwner: repoData.owner });
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
log(`No configurator found for the provided git remote. Configuring manually...`);
|
|
34
|
+
await configManual({ command, siteId, repoData });
|
|
35
|
+
}
|
|
36
|
+
logSuccess(repoData);
|
|
37
|
+
};
|
|
@@ -1,32 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { warn } from '../command-helpers.mjs'
|
|
8
|
-
|
|
9
|
-
const DEFAULT_NODE_VERSION = '12.18.0'
|
|
10
|
-
const NVM_FLAG_PREFIX = '--'
|
|
11
|
-
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { locatePath } from 'locate-path';
|
|
3
|
+
import nodeVersionAlias from 'node-version-alias';
|
|
4
|
+
import { warn } from '../command-helpers.mjs';
|
|
5
|
+
const DEFAULT_NODE_VERSION = '12.18.0';
|
|
6
|
+
const NVM_FLAG_PREFIX = '--';
|
|
12
7
|
// to support NODE_VERSION=--lts, etc.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'version' implicitly has an 'any' type.
|
|
9
|
+
const normalizeConfiguredVersion = (version) => version.startsWith(NVM_FLAG_PREFIX) ? version.slice(NVM_FLAG_PREFIX.length) : version;
|
|
10
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'baseDirectory' implicitly has an ... Remove this comment to see the full error message
|
|
16
11
|
export const detectNodeVersion = async ({ baseDirectory, env }) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
}
|
|
12
|
+
try {
|
|
13
|
+
const nodeVersionFile = await locatePath(['.nvmrc', '.node-version'], { cwd: baseDirectory });
|
|
14
|
+
const configuredVersion = nodeVersionFile === undefined ? env.NODE_VERSION?.value : await readFile(nodeVersionFile, 'utf8');
|
|
15
|
+
const version = configuredVersion === undefined || configuredVersion === null
|
|
16
|
+
? DEFAULT_NODE_VERSION
|
|
17
|
+
: await nodeVersionAlias(normalizeConfiguredVersion(configuredVersion));
|
|
18
|
+
return version;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
22
|
+
warn(`Failed detecting Node.js version: ${error.message}`);
|
|
23
|
+
return DEFAULT_NODE_VERSION;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'configPlugins' implicitly has an 'any' ... Remove this comment to see the full error message
|
|
2
|
+
const isPluginInstalled = (configPlugins, plugin) =>
|
|
3
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'configPlugin' implicitly has an '... Remove this comment to see the full error message
|
|
4
|
+
configPlugins.some(({ package: configPlugin }) => configPlugin === plugin);
|
|
5
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'frameworkPlugins' implicitly has an 'an... Remove this comment to see the full error message
|
|
6
|
+
export const getRecommendPlugins = (frameworkPlugins, config) =>
|
|
7
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'plugin' implicitly has an 'any' type.
|
|
8
|
+
frameworkPlugins.filter((plugin) => !isPluginInstalled(config.plugins, plugin));
|
|
9
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'configPlugins' implicitly has an 'any' ... Remove this comment to see the full error message
|
|
10
|
+
export const getUIPlugins = (configPlugins) =>
|
|
11
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'origin' implicitly has an 'any' t... Remove this comment to see the full error message
|
|
12
|
+
configPlugins.filter(({ origin }) => origin === 'ui').map(({ package: pkg }) => ({ package: pkg }));
|