netlify-cli 17.3.2 → 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 +2 -138
- package/npm-shrinkwrap.json +76 -76
- 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 -99
- 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
package/src/lib/exec-fetcher.mjs
CHANGED
|
@@ -1,92 +1,88 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
export const getExecName = ({ execName }) => (isWindows() ? `${execName}.exe` : execName)
|
|
16
|
-
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import process from 'process';
|
|
3
|
+
import { fetchLatest, fetchVersion, newerVersion, updateAvailable } from 'gh-release-fetch';
|
|
4
|
+
// @ts-expect-error TS(7016) FIXME: Could not find a declaration file for module 'isex... Remove this comment to see the full error message
|
|
5
|
+
import isExe from 'isexe';
|
|
6
|
+
import { NETLIFYDEVWARN, error, getTerminalLink, log } from '../utils/command-helpers.mjs';
|
|
7
|
+
// @ts-expect-error TS(7034) FIXME: Variable 'execa' implicitly has type 'any' in some... Remove this comment to see the full error message
|
|
8
|
+
import execa from '../utils/execa.mjs';
|
|
9
|
+
const isWindows = () => process.platform === 'win32';
|
|
10
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'packageName' implicitly has an 'a... Remove this comment to see the full error message
|
|
11
|
+
const getRepository = ({ packageName }) => `netlify/${packageName}`;
|
|
12
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'execName' implicitly has an 'any'... Remove this comment to see the full error message
|
|
13
|
+
export const getExecName = ({ execName }) => (isWindows() ? `${execName}.exe` : execName);
|
|
17
14
|
const getOptions = () => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
// this is used in out CI tests to avoid hitting GitHub API limit
|
|
16
|
+
// when calling gh-release-fetch
|
|
17
|
+
if (process.env.NETLIFY_TEST_GITHUB_TOKEN) {
|
|
18
|
+
return {
|
|
19
|
+
headers: { Authorization: `token ${process.env.NETLIFY_TEST_GITHUB_TOKEN}` },
|
|
20
|
+
};
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
};
|
|
23
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'currentVersion' implicitly has an... Remove this comment to see the full error message
|
|
27
24
|
const isVersionOutdated = async ({ currentVersion, latestVersion, packageName }) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
const options = getOptions()
|
|
32
|
-
const outdated = await updateAvailable(getRepository({ packageName }), currentVersion, options)
|
|
33
|
-
return outdated
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export const shouldFetchLatestVersion = async ({
|
|
37
|
-
binPath,
|
|
38
|
-
execArgs,
|
|
39
|
-
execName,
|
|
40
|
-
latestVersion,
|
|
41
|
-
packageName,
|
|
42
|
-
pattern,
|
|
43
|
-
}) => {
|
|
44
|
-
const execPath = path.join(binPath, getExecName({ execName }))
|
|
45
|
-
|
|
46
|
-
const exists = await isExe(execPath, { ignoreErrors: true })
|
|
47
|
-
if (!exists) {
|
|
48
|
-
return true
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const { stdout } = await execa(execPath, execArgs)
|
|
52
|
-
|
|
53
|
-
if (!stdout) {
|
|
54
|
-
return false
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const match = stdout.match(new RegExp(pattern))
|
|
58
|
-
if (!match) {
|
|
59
|
-
return false
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
try {
|
|
63
|
-
const [, currentVersion] = match
|
|
64
|
-
const outdated = await isVersionOutdated({
|
|
65
|
-
packageName,
|
|
66
|
-
currentVersion,
|
|
67
|
-
latestVersion,
|
|
68
|
-
})
|
|
69
|
-
return outdated
|
|
70
|
-
} catch (error_) {
|
|
71
|
-
if (exists) {
|
|
72
|
-
log(NETLIFYDEVWARN, `failed checking for new version of '${packageName}'. Using existing version`)
|
|
73
|
-
return false
|
|
25
|
+
if (latestVersion) {
|
|
26
|
+
return newerVersion(latestVersion, currentVersion);
|
|
74
27
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
28
|
+
const options = getOptions();
|
|
29
|
+
const outdated = await updateAvailable(getRepository({ packageName }), currentVersion, options);
|
|
30
|
+
return outdated;
|
|
31
|
+
};
|
|
32
|
+
export const shouldFetchLatestVersion = async ({
|
|
33
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'binPath' implicitly has an 'any' ... Remove this comment to see the full error message
|
|
34
|
+
binPath,
|
|
35
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'execArgs' implicitly has an 'any'... Remove this comment to see the full error message
|
|
36
|
+
execArgs,
|
|
37
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'execName' implicitly has an 'any'... Remove this comment to see the full error message
|
|
38
|
+
execName,
|
|
39
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'latestVersion' implicitly has an ... Remove this comment to see the full error message
|
|
40
|
+
latestVersion,
|
|
41
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'packageName' implicitly has an 'a... Remove this comment to see the full error message
|
|
42
|
+
packageName,
|
|
43
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'pattern' implicitly has an 'any' ... Remove this comment to see the full error message
|
|
44
|
+
pattern, }) => {
|
|
45
|
+
const execPath = path.join(binPath, getExecName({ execName }));
|
|
46
|
+
const exists = await isExe(execPath, { ignoreErrors: true });
|
|
47
|
+
if (!exists) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
// @ts-expect-error TS(7005) FIXME: Variable 'execa' implicitly has an 'any' type.
|
|
51
|
+
const { stdout } = await execa(execPath, execArgs);
|
|
52
|
+
if (!stdout) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const match = stdout.match(new RegExp(pattern));
|
|
56
|
+
if (!match) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const [, currentVersion] = match;
|
|
61
|
+
const outdated = await isVersionOutdated({
|
|
62
|
+
packageName,
|
|
63
|
+
currentVersion,
|
|
64
|
+
latestVersion,
|
|
65
|
+
});
|
|
66
|
+
return outdated;
|
|
67
|
+
}
|
|
68
|
+
catch (error_) {
|
|
69
|
+
if (exists) {
|
|
70
|
+
log(NETLIFYDEVWARN, `failed checking for new version of '${packageName}'. Using existing version`);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
throw error_;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
79
76
|
export const getArch = () => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
77
|
+
switch (process.arch) {
|
|
78
|
+
case 'x64':
|
|
79
|
+
return 'amd64';
|
|
80
|
+
case 'ia32':
|
|
81
|
+
return '386';
|
|
82
|
+
default:
|
|
83
|
+
return process.arch;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
90
86
|
/**
|
|
91
87
|
* Tries to get the latest release from the github releases to download the binary.
|
|
92
88
|
* Is throwing an error if there is no binary that matches the system os or arch
|
|
@@ -98,45 +94,42 @@ export const getArch = () => {
|
|
|
98
94
|
* @param {string} config.packageName
|
|
99
95
|
* @param {string} [config.latestVersion ]
|
|
100
96
|
*/
|
|
97
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'destination' implicitly has an 'a... Remove this comment to see the full error message
|
|
101
98
|
export const fetchLatestVersion = async ({ destination, execName, extension, latestVersion, packageName }) => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const issueLink = getTerminalLink('Create a new CLI issue', createIssueLink.href)
|
|
133
|
-
|
|
134
|
-
error(`The operating system ${platform} with the CPU architecture ${arch} is currently not supported!
|
|
99
|
+
const win = isWindows();
|
|
100
|
+
const arch = getArch();
|
|
101
|
+
const platform = win ? 'windows' : process.platform;
|
|
102
|
+
const pkgName = `${execName}-${platform}-${arch}.${extension}`;
|
|
103
|
+
const release = {
|
|
104
|
+
repository: getRepository({ packageName }),
|
|
105
|
+
package: pkgName,
|
|
106
|
+
destination,
|
|
107
|
+
extract: true,
|
|
108
|
+
};
|
|
109
|
+
const options = getOptions();
|
|
110
|
+
const fetch = latestVersion
|
|
111
|
+
// @ts-expect-error TS(2345) FIXME: Argument of type '{ headers: { Authorization: stri... Remove this comment to see the full error message
|
|
112
|
+
? fetchVersion({ ...release, version: latestVersion }, options)
|
|
113
|
+
// @ts-expect-error TS(2345) FIXME: Argument of type '{ repository: string; package: s... Remove this comment to see the full error message
|
|
114
|
+
: fetchLatest(release, options);
|
|
115
|
+
try {
|
|
116
|
+
await fetch;
|
|
117
|
+
}
|
|
118
|
+
catch (error_) {
|
|
119
|
+
// @ts-expect-error TS(2531) FIXME: Object is possibly 'null'.
|
|
120
|
+
if (typeof error_ === 'object' && 'statusCode' in error_ && error_.statusCode === 404) {
|
|
121
|
+
const createIssueLink = new URL('https://github.com/netlify/cli/issues/new');
|
|
122
|
+
createIssueLink.searchParams.set('assignees', '');
|
|
123
|
+
createIssueLink.searchParams.set('labels', 'type: bug');
|
|
124
|
+
createIssueLink.searchParams.set('template', 'bug_report.md');
|
|
125
|
+
createIssueLink.searchParams.set('title', `${execName} is not supported on ${platform} with CPU architecture ${arch}`);
|
|
126
|
+
const issueLink = getTerminalLink('Create a new CLI issue', createIssueLink.href);
|
|
127
|
+
error(`The operating system ${platform} with the CPU architecture ${arch} is currently not supported!
|
|
135
128
|
|
|
136
129
|
Please open up an issue on our CLI repository so that we can support it:
|
|
137
|
-
${issueLink}`)
|
|
130
|
+
${issueLink}`);
|
|
131
|
+
}
|
|
132
|
+
// @ts-expect-error TS(2345) FIXME: Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message
|
|
133
|
+
error(error_);
|
|
138
134
|
}
|
|
139
|
-
|
|
140
|
-
error(error_)
|
|
141
|
-
}
|
|
142
|
-
}
|
|
135
|
+
};
|
package/src/lib/fs.mjs
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { constants } from 'fs';
|
|
2
|
+
import { access, stat } from 'fs/promises';
|
|
3
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'filePath' implicitly has an 'any' type.
|
|
5
4
|
export const fileExistsAsync = async (filePath) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
5
|
+
try {
|
|
6
|
+
await access(filePath, constants.F_OK);
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
14
13
|
/**
|
|
15
14
|
* calls stat async with a function and catches potential errors
|
|
16
15
|
* @param {string} filePath
|
|
17
16
|
* @param {keyof import('fs').StatsBase<number>} type For example `isDirectory` or `isFile`
|
|
18
17
|
*/
|
|
18
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'filePath' implicitly has an 'any' type.
|
|
19
19
|
const isType = async (filePath, type) => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
try {
|
|
21
|
+
const stats = await stat(filePath);
|
|
22
|
+
// @ts-expect-error TS(7053) FIXME: Element implicitly has an 'any' type because expre... Remove this comment to see the full error message
|
|
23
|
+
return typeof stats[type] === 'function' ? stats[type]() : stats[type];
|
|
24
|
+
}
|
|
25
|
+
catch (error_) {
|
|
26
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
27
|
+
if (error_.code === 'ENOENT') {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
throw error_;
|
|
27
31
|
}
|
|
28
|
-
|
|
29
|
-
throw error_
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
32
|
+
};
|
|
33
33
|
/**
|
|
34
34
|
* Checks if the provided filePath is a file
|
|
35
35
|
* @param {string} filePath
|
|
36
36
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'filePath' implicitly has an 'any' type.
|
|
38
|
+
export const isFileAsync = (filePath) => isType(filePath, 'isFile');
|
|
39
39
|
/**
|
|
40
40
|
* Checks if the provided filePath is a directory
|
|
41
41
|
* @param {string} filePath
|
|
42
42
|
*/
|
|
43
|
-
|
|
43
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'filePath' implicitly has an 'any' type.
|
|
44
|
+
export const isDirectoryAsync = (filePath) => isType(filePath, 'isDirectory');
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import { NETLIFYDEVERR, NETLIFYDEVLOG } from '../../utils/command-helpers.mjs'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const BACKGROUND_FUNCTION_STATUS_CODE = 202
|
|
6
|
-
|
|
1
|
+
import { NETLIFYDEVERR, NETLIFYDEVLOG } from '../../utils/command-helpers.mjs';
|
|
2
|
+
import { formatLambdaError, styleFunctionName } from './utils.mjs';
|
|
3
|
+
const BACKGROUND_FUNCTION_STATUS_CODE = 202;
|
|
4
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'functionName' implicitly has an 'any' t... Remove this comment to see the full error message
|
|
7
5
|
export const handleBackgroundFunction = (functionName, response) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
6
|
+
console.log(`${NETLIFYDEVLOG} Queueing background function ${styleFunctionName(functionName)} for execution`);
|
|
7
|
+
response.status(BACKGROUND_FUNCTION_STATUS_CODE);
|
|
8
|
+
response.end();
|
|
9
|
+
};
|
|
10
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'functionName' implicitly has an 'any' t... Remove this comment to see the full error message
|
|
13
11
|
export const handleBackgroundFunctionResult = (functionName, err) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
}
|
|
12
|
+
if (err) {
|
|
13
|
+
console.log(`${NETLIFYDEVERR} Error during background function ${styleFunctionName(functionName)} execution:`, formatLambdaError(err));
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
console.log(`${NETLIFYDEVLOG} Done executing background function ${styleFunctionName(functionName)}`);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
// The function configuration keys returned by @netlify/config are not an exact
|
|
2
2
|
// match to the properties that @netlify/zip-it-and-ship-it expects. We do that
|
|
3
3
|
// translation here.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'projectRoot' implicitly has an 'a... Remove this comment to see the full error message
|
|
5
|
+
export const normalizeFunctionsConfig = ({ functionsConfig = {}, projectRoot, siteEnv = {} }) => Object.entries(functionsConfig).reduce((result, [pattern, config]) => ({
|
|
6
|
+
...result,
|
|
7
|
+
[pattern]: {
|
|
8
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
9
9
|
externalNodeModules: config.external_node_modules,
|
|
10
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
10
11
|
includedFiles: config.included_files,
|
|
11
12
|
includedFilesBasePath: projectRoot,
|
|
13
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
12
14
|
ignoredNodeModules: config.ignored_node_modules,
|
|
15
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
13
16
|
nodeBundler: config.node_bundler === 'esbuild' ? 'esbuild_zisi' : config.node_bundler,
|
|
17
|
+
// @ts-expect-error TS(2339) FIXME: Property 'AWS_LAMBDA_JS_RUNTIME' does not exist on... Remove this comment to see the full error message
|
|
14
18
|
nodeVersion: siteEnv.AWS_LAMBDA_JS_RUNTIME,
|
|
15
19
|
processDynamicNodeImports: true,
|
|
20
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
16
21
|
schedule: config.schedule,
|
|
17
22
|
zipGo: true,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
{},
|
|
21
|
-
)
|
|
23
|
+
},
|
|
24
|
+
}), {});
|