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,79 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const isWindows = platform === 'win32'
|
|
15
|
-
|
|
16
|
-
export const name = 'rs'
|
|
17
|
-
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { dirname, extname, join, resolve } from 'path';
|
|
3
|
+
import { platform } from 'process';
|
|
4
|
+
import { findUp } from 'find-up';
|
|
5
|
+
import toml from 'toml';
|
|
6
|
+
// @ts-expect-error TS(7034) FIXME: Variable 'execa' implicitly has type 'any' in some... Remove this comment to see the full error message
|
|
7
|
+
import execa from '../../../../utils/execa.mjs';
|
|
8
|
+
import { SERVE_FUNCTIONS_FOLDER } from '../../../../utils/functions/functions.mjs';
|
|
9
|
+
import { getPathInProject } from '../../../settings.mjs';
|
|
10
|
+
import { runFunctionsProxy } from '../../local-proxy.mjs';
|
|
11
|
+
const isWindows = platform === 'win32';
|
|
12
|
+
export const name = 'rs';
|
|
13
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'func' implicitly has an 'any' typ... Remove this comment to see the full error message
|
|
18
14
|
const build = async ({ func }) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
() =>
|
|
39
|
-
build({ func })
|
|
40
|
-
|
|
15
|
+
const functionDirectory = dirname(func.mainFile);
|
|
16
|
+
const cacheDirectory = resolve(getPathInProject([SERVE_FUNCTIONS_FOLDER]));
|
|
17
|
+
const targetDirectory = join(cacheDirectory, func.name);
|
|
18
|
+
const crateName = await getCrateName(functionDirectory);
|
|
19
|
+
const binaryName = `${crateName}${isWindows ? '.exe' : ''}`;
|
|
20
|
+
const binaryPath = join(targetDirectory, 'debug', binaryName);
|
|
21
|
+
// @ts-expect-error TS(7005) FIXME: Variable 'execa' implicitly has an 'any' type.
|
|
22
|
+
await execa('cargo', ['build', '--target-dir', targetDirectory], {
|
|
23
|
+
cwd: functionDirectory,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
binaryPath,
|
|
27
|
+
srcFiles: [functionDirectory],
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export const getBuildFunction =
|
|
31
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'func' implicitly has an 'any' typ... Remove this comment to see the full error message
|
|
32
|
+
({ func }) => () => build({ func });
|
|
33
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'cwd' implicitly has an 'any' type.
|
|
41
34
|
const getCrateName = async (cwd) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
35
|
+
const manifestPath = await findUp('Cargo.toml', { cwd, type: 'file' });
|
|
36
|
+
// @ts-expect-error TS(2769) FIXME: No overload matches this call.
|
|
37
|
+
const manifest = await readFile(manifestPath, 'utf-8');
|
|
38
|
+
const { package: CargoPackage } = toml.parse(manifest);
|
|
39
|
+
return CargoPackage.name;
|
|
40
|
+
};
|
|
41
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'context' implicitly has an 'any' ... Remove this comment to see the full error message
|
|
49
42
|
export const invokeFunction = async ({ context, event, func, timeout }) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
statusCode,
|
|
43
|
+
const { stdout } = await runFunctionsProxy({
|
|
44
|
+
binaryPath: func.buildData.binaryPath,
|
|
45
|
+
context,
|
|
46
|
+
directory: dirname(func.mainFile),
|
|
47
|
+
event,
|
|
48
|
+
name: func.name,
|
|
49
|
+
timeout,
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
const { body, headers, multiValueHeaders, statusCode } = JSON.parse(stdout);
|
|
53
|
+
return {
|
|
54
|
+
body,
|
|
55
|
+
headers,
|
|
56
|
+
multiValueHeaders,
|
|
57
|
+
statusCode,
|
|
58
|
+
};
|
|
67
59
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
catch {
|
|
61
|
+
return {
|
|
62
|
+
statusCode: 500,
|
|
63
|
+
};
|
|
71
64
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
};
|
|
66
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'func' implicitly has an 'any' type.
|
|
75
67
|
export const onRegister = (func) => {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
68
|
+
const isSource = extname(func.mainFile) === '.rs';
|
|
69
|
+
return isSource ? func : null;
|
|
70
|
+
};
|
|
@@ -1,98 +1,80 @@
|
|
|
1
|
-
import AnsiToHtml from 'ansi-to-html'
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const ansiToHtml = new AnsiToHtml()
|
|
8
|
-
|
|
1
|
+
import AnsiToHtml from 'ansi-to-html';
|
|
2
|
+
import { CLOCKWORK_USERAGENT } from '../../utils/functions/index.mjs';
|
|
3
|
+
import { formatLambdaError } from './utils.mjs';
|
|
4
|
+
const ansiToHtml = new AnsiToHtml();
|
|
5
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'error' implicitly has an 'any' ty... Remove this comment to see the full error message
|
|
9
6
|
export const buildHelpResponse = ({ error, headers, path, result }) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const isSimulatedRequest = headers['user-agent'] === CLOCKWORK_USERAGENT
|
|
29
|
-
|
|
30
|
-
let message = ''
|
|
31
|
-
|
|
32
|
-
if (!isSimulatedRequest) {
|
|
33
|
-
message += paragraph(`
|
|
7
|
+
const acceptsHtml = headers.accept && headers.accept.includes('text/html');
|
|
8
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'text' implicitly has an 'any' type.
|
|
9
|
+
const paragraph = (text) => {
|
|
10
|
+
text = text.trim();
|
|
11
|
+
if (acceptsHtml) {
|
|
12
|
+
return ansiToHtml.toHtml(`<p>${text}</p>`);
|
|
13
|
+
}
|
|
14
|
+
text = text
|
|
15
|
+
.replace(/<pre><code>/gm, '```\n')
|
|
16
|
+
.replace(/<\/code><\/pre>/gm, '\n```')
|
|
17
|
+
.replace(/<code>/gm, '`')
|
|
18
|
+
.replace(/<\/code>/gm, '`');
|
|
19
|
+
return `${text}\n\n`;
|
|
20
|
+
};
|
|
21
|
+
const isSimulatedRequest = headers['user-agent'] === CLOCKWORK_USERAGENT;
|
|
22
|
+
let message = '';
|
|
23
|
+
if (!isSimulatedRequest) {
|
|
24
|
+
message += paragraph(`
|
|
34
25
|
You performed an HTTP request to <code>${path}</code>, which is a scheduled function.
|
|
35
26
|
You can do this to test your functions locally, but it won't work in production.
|
|
36
|
-
`)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
message += paragraph(`
|
|
27
|
+
`);
|
|
28
|
+
}
|
|
29
|
+
if (error) {
|
|
30
|
+
message += paragraph(`
|
|
41
31
|
There was an error during execution of your scheduled function:
|
|
42
32
|
|
|
43
|
-
<pre><code>${formatLambdaError(error)}</code></pre>`)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (statusCode >= 500) {
|
|
53
|
-
message += paragraph(`
|
|
33
|
+
<pre><code>${formatLambdaError(error)}</code></pre>`);
|
|
34
|
+
}
|
|
35
|
+
if (result) {
|
|
36
|
+
// lambda emulator adds level field, which isn't user-provided
|
|
37
|
+
const returnValue = { ...result };
|
|
38
|
+
delete returnValue.level;
|
|
39
|
+
const { statusCode } = returnValue;
|
|
40
|
+
if (statusCode >= 500) {
|
|
41
|
+
message += paragraph(`
|
|
54
42
|
Your function returned a status code of <code>${statusCode}</code>.
|
|
55
43
|
At the moment, Netlify does nothing about that. In the future, there might be a retry mechanism based on this.
|
|
56
|
-
`)
|
|
44
|
+
`);
|
|
45
|
+
}
|
|
46
|
+
const allowedKeys = new Set(['statusCode']);
|
|
47
|
+
const returnedKeys = Object.keys(returnValue);
|
|
48
|
+
const ignoredKeys = returnedKeys.filter((key) => !allowedKeys.has(key));
|
|
49
|
+
if (ignoredKeys.length !== 0) {
|
|
50
|
+
message += paragraph(`Your function returned ${ignoredKeys
|
|
51
|
+
.map((key) => `<code>${key}</code>`)
|
|
52
|
+
.join(', ')}. Is this an accident? It won't be interpreted by Netlify.`);
|
|
53
|
+
}
|
|
57
54
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
message += paragraph(
|
|
65
|
-
`Your function returned ${ignoredKeys
|
|
66
|
-
.map((key) => `<code>${key}</code>`)
|
|
67
|
-
.join(', ')}. Is this an accident? It won't be interpreted by Netlify.`,
|
|
68
|
-
)
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const statusCode = error ? 500 : 200
|
|
73
|
-
return acceptsHtml
|
|
74
|
-
? {
|
|
75
|
-
statusCode,
|
|
76
|
-
contentType: 'text/html',
|
|
77
|
-
message: `<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">\n
|
|
55
|
+
const statusCode = error ? 500 : 200;
|
|
56
|
+
return acceptsHtml
|
|
57
|
+
? {
|
|
58
|
+
statusCode,
|
|
59
|
+
contentType: 'text/html',
|
|
60
|
+
message: `<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">\n
|
|
78
61
|
${message}`,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
62
|
+
}
|
|
63
|
+
: {
|
|
64
|
+
statusCode,
|
|
65
|
+
contentType: 'text/plain',
|
|
66
|
+
message,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'error' implicitly has an 'any' ty... Remove this comment to see the full error message
|
|
87
70
|
export const handleScheduledFunction = ({ error, request, response, result }) => {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
71
|
+
const { contentType, message, statusCode } = buildHelpResponse({
|
|
72
|
+
error,
|
|
73
|
+
headers: request.headers,
|
|
74
|
+
path: request.path,
|
|
75
|
+
result,
|
|
76
|
+
});
|
|
77
|
+
response.status(statusCode);
|
|
78
|
+
response.set('Content-Type', contentType);
|
|
79
|
+
response.send(message);
|
|
80
|
+
};
|