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
|
@@ -1,120 +1,106 @@
|
|
|
1
|
-
import fs from 'fs'
|
|
2
|
-
|
|
3
|
-
import backoff from 'backoff'
|
|
4
|
-
import pMap from 'p-map'
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
// @ts-expect-error TS(7016) FIXME: Could not find a declaration file for module 'back... Remove this comment to see the full error message
|
|
3
|
+
import backoff from 'backoff';
|
|
4
|
+
import pMap from 'p-map';
|
|
5
|
+
import { UPLOAD_INITIAL_DELAY, UPLOAD_MAX_DELAY, UPLOAD_RANDOM_FACTOR } from './constants.mjs';
|
|
6
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'api' implicitly has an 'any' type.
|
|
8
7
|
const uploadFiles = async (api, deployId, uploadList, { concurrentUpload, maxRetry, statusCb }) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type: 'upload',
|
|
12
|
-
msg: `Uploading ${uploadList.length} files`,
|
|
13
|
-
phase: 'start',
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
const uploadFile = async (fileObj, index) => {
|
|
17
|
-
const { assetType, body, filepath, invocationMode, normalizedPath, runtime } = fileObj
|
|
18
|
-
|
|
19
|
-
const readStreamCtor = () => body ?? fs.createReadStream(filepath)
|
|
20
|
-
|
|
8
|
+
if (!concurrentUpload || !statusCb || !maxRetry)
|
|
9
|
+
throw new Error('Missing required option concurrentUpload');
|
|
21
10
|
statusCb({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
11
|
+
type: 'upload',
|
|
12
|
+
msg: `Uploading ${uploadList.length} files`,
|
|
13
|
+
phase: 'start',
|
|
14
|
+
});
|
|
15
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'fileObj' implicitly has an 'any' type.
|
|
16
|
+
const uploadFile = async (fileObj, index) => {
|
|
17
|
+
const { assetType, body, filepath, invocationMode, normalizedPath, runtime } = fileObj;
|
|
18
|
+
const readStreamCtor = () => body ?? fs.createReadStream(filepath);
|
|
19
|
+
statusCb({
|
|
20
|
+
type: 'upload',
|
|
21
|
+
msg: `(${index}/${uploadList.length}) Uploading ${normalizedPath}...`,
|
|
22
|
+
phase: 'progress',
|
|
23
|
+
});
|
|
24
|
+
let response;
|
|
25
|
+
switch (assetType) {
|
|
26
|
+
case 'file': {
|
|
27
|
+
response = await retryUpload(() => api.uploadDeployFile({
|
|
28
|
+
body: readStreamCtor,
|
|
29
|
+
deployId,
|
|
30
|
+
path: encodeURI(normalizedPath),
|
|
31
|
+
}), maxRetry);
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'function': {
|
|
35
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'retryCount' implicitly has an 'any' typ... Remove this comment to see the full error message
|
|
36
|
+
response = await retryUpload((retryCount) => {
|
|
37
|
+
const params = {
|
|
38
|
+
body: readStreamCtor,
|
|
39
|
+
deployId,
|
|
40
|
+
invocationMode,
|
|
41
|
+
name: encodeURI(normalizedPath),
|
|
42
|
+
runtime,
|
|
43
|
+
};
|
|
44
|
+
if (retryCount > 0) {
|
|
45
|
+
// @ts-expect-error TS(2339) FIXME: Property 'xNfRetryCount' does not exist on type '{... Remove this comment to see the full error message
|
|
46
|
+
params.xNfRetryCount = retryCount;
|
|
47
|
+
}
|
|
48
|
+
return api.uploadDeployFunction(params);
|
|
49
|
+
}, maxRetry);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
default: {
|
|
53
|
+
const error = new Error('File Object missing assetType property');
|
|
54
|
+
// @ts-expect-error TS(2339) FIXME: Property 'fileObj' does not exist on type 'Error'.
|
|
55
|
+
error.fileObj = fileObj;
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return response;
|
|
60
|
+
};
|
|
61
|
+
const results = await pMap(uploadList, uploadFile, { concurrency: concurrentUpload });
|
|
62
|
+
statusCb({
|
|
63
|
+
type: 'upload',
|
|
64
|
+
msg: `Finished uploading ${uploadList.length} assets`,
|
|
65
|
+
phase: 'stop',
|
|
66
|
+
});
|
|
67
|
+
return results;
|
|
68
|
+
};
|
|
69
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'uploadFn' implicitly has an 'any' type.
|
|
70
|
+
const retryUpload = (uploadFn, maxRetry) => new Promise((resolve, reject) => {
|
|
71
|
+
// @ts-expect-error TS(7034) FIXME: Variable 'lastError' implicitly has type 'any' in ... Remove this comment to see the full error message
|
|
72
|
+
let lastError;
|
|
81
73
|
const fibonacciBackoff = backoff.fibonacci({
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
})
|
|
86
|
-
|
|
74
|
+
randomisationFactor: UPLOAD_RANDOM_FACTOR,
|
|
75
|
+
initialDelay: UPLOAD_INITIAL_DELAY,
|
|
76
|
+
maxDelay: UPLOAD_MAX_DELAY,
|
|
77
|
+
});
|
|
87
78
|
const tryUpload = async (retryIndex = -1) => {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
79
|
+
try {
|
|
80
|
+
const results = await uploadFn(retryIndex + 1);
|
|
81
|
+
return resolve(results);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
lastError = error;
|
|
85
|
+
// observed errors: 408, 401 (4** swallowed), 502
|
|
86
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
87
|
+
if (error.status >= 400 || error.name === 'FetchError') {
|
|
88
|
+
fibonacciBackoff.backoff();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
return reject(error);
|
|
99
92
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
fibonacciBackoff.failAfter(maxRetry)
|
|
105
|
-
|
|
93
|
+
};
|
|
94
|
+
fibonacciBackoff.failAfter(maxRetry);
|
|
106
95
|
fibonacciBackoff.on('backoff', () => {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
fibonacciBackoff.on('ready', tryUpload)
|
|
112
|
-
|
|
96
|
+
// Do something when backoff starts, e.g. show to the
|
|
97
|
+
// user the delay before next reconnection attempt.
|
|
98
|
+
});
|
|
99
|
+
fibonacciBackoff.on('ready', tryUpload);
|
|
113
100
|
fibonacciBackoff.on('fail', () => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
tryUpload()
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
export default uploadFiles
|
|
101
|
+
// @ts-expect-error TS(7005) FIXME: Variable 'lastError' implicitly has an 'any' type.
|
|
102
|
+
reject(lastError);
|
|
103
|
+
});
|
|
104
|
+
tryUpload();
|
|
105
|
+
});
|
|
106
|
+
export default uploadFiles;
|
|
@@ -1,99 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import pWaitFor from 'p-wait-for'
|
|
5
|
-
|
|
6
|
-
import { DEPLOY_POLL } from './constants.mjs'
|
|
7
|
-
|
|
1
|
+
import { sep } from 'path';
|
|
2
|
+
import pWaitFor from 'p-wait-for';
|
|
3
|
+
import { DEPLOY_POLL } from './constants.mjs';
|
|
8
4
|
// normalize windows paths to unix paths
|
|
5
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'relname' implicitly has an 'any' type.
|
|
9
6
|
export const normalizePath = (relname) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
7
|
+
if (relname.includes('#') || relname.includes('?')) {
|
|
8
|
+
throw new Error(`Invalid filename ${relname}. Deployed filenames cannot contain # or ? characters`);
|
|
9
|
+
}
|
|
10
|
+
return relname.split(sep).join('/');
|
|
11
|
+
};
|
|
16
12
|
// poll an async deployId until its done diffing
|
|
13
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'api' implicitly has an 'any' type.
|
|
17
14
|
export const waitForDiff = async (api, deployId, siteId, timeout) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return deploy
|
|
54
|
-
}
|
|
55
|
-
|
|
15
|
+
// capture ready deploy during poll
|
|
16
|
+
let deploy;
|
|
17
|
+
const loadDeploy = async () => {
|
|
18
|
+
const siteDeploy = await api.getSiteDeploy({ siteId, deployId });
|
|
19
|
+
switch (siteDeploy.state) {
|
|
20
|
+
// https://github.com/netlify/bitballoon/blob/master/app/models/deploy.rb#L21-L33
|
|
21
|
+
case 'error': {
|
|
22
|
+
const deployError = new Error(siteDeploy.error_message || `Deploy ${deployId} had an error`);
|
|
23
|
+
// @ts-expect-error TS(2339) FIXME: Property 'deploy' does not exist on type 'Error'.
|
|
24
|
+
deployError.deploy = siteDeploy;
|
|
25
|
+
throw deployError;
|
|
26
|
+
}
|
|
27
|
+
case 'prepared':
|
|
28
|
+
case 'uploading':
|
|
29
|
+
case 'uploaded':
|
|
30
|
+
case 'ready': {
|
|
31
|
+
deploy = siteDeploy;
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
case 'preparing':
|
|
35
|
+
default: {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
await pWaitFor(loadDeploy, {
|
|
41
|
+
interval: DEPLOY_POLL,
|
|
42
|
+
timeout: {
|
|
43
|
+
milliseconds: timeout,
|
|
44
|
+
message: 'Timeout while waiting for deploy',
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
return deploy;
|
|
48
|
+
};
|
|
56
49
|
// Poll a deployId until its ready
|
|
50
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'api' implicitly has an 'any' type.
|
|
57
51
|
export const waitForDeploy = async (api, deployId, siteId, timeout) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return deploy
|
|
93
|
-
}
|
|
94
|
-
|
|
52
|
+
// capture ready deploy during poll
|
|
53
|
+
let deploy;
|
|
54
|
+
const loadDeploy = async () => {
|
|
55
|
+
const siteDeploy = await api.getSiteDeploy({ siteId, deployId });
|
|
56
|
+
switch (siteDeploy.state) {
|
|
57
|
+
// https://github.com/netlify/bitballoon/blob/master/app/models/deploy.rb#L21-L33
|
|
58
|
+
case 'error': {
|
|
59
|
+
const deployError = new Error(siteDeploy.error_message || `Deploy ${deployId} had an error`);
|
|
60
|
+
// @ts-expect-error TS(2339) FIXME: Property 'deploy' does not exist on type 'Error'.
|
|
61
|
+
deployError.deploy = siteDeploy;
|
|
62
|
+
throw deployError;
|
|
63
|
+
}
|
|
64
|
+
case 'ready': {
|
|
65
|
+
deploy = siteDeploy;
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
case 'preparing':
|
|
69
|
+
case 'prepared':
|
|
70
|
+
case 'uploaded':
|
|
71
|
+
case 'uploading':
|
|
72
|
+
default: {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
await pWaitFor(loadDeploy, {
|
|
78
|
+
interval: DEPLOY_POLL,
|
|
79
|
+
timeout: {
|
|
80
|
+
milliseconds: timeout,
|
|
81
|
+
message: 'Timeout while waiting for deploy',
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
return deploy;
|
|
85
|
+
};
|
|
95
86
|
// Transform the fileShaMap and fnShaMap into a generic shaMap that file-uploader.js can use
|
|
87
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'required' implicitly has an 'any' type.
|
|
96
88
|
export const getUploadList = (required, shaMap) => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
if (!required || !shaMap)
|
|
90
|
+
return [];
|
|
91
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'sha' implicitly has an 'any' type.
|
|
92
|
+
return required.flatMap((sha) => shaMap[sha]);
|
|
93
|
+
};
|