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.
Files changed (210) hide show
  1. package/README.md +3 -139
  2. package/npm-shrinkwrap.json +82 -82
  3. package/package.json +16 -15
  4. package/src/commands/addons/addons-auth.mjs +27 -30
  5. package/src/commands/addons/addons-config.mjs +145 -154
  6. package/src/commands/addons/addons-create.mjs +94 -108
  7. package/src/commands/addons/addons-delete.mjs +36 -41
  8. package/src/commands/addons/addons-list.mjs +38 -42
  9. package/src/commands/addons/addons.mjs +26 -28
  10. package/src/commands/addons/index.mjs +1 -1
  11. package/src/commands/api/api.mjs +45 -53
  12. package/src/commands/api/index.mjs +1 -1
  13. package/src/commands/base-command.mjs +597 -684
  14. package/src/commands/blobs/blobs-delete.mjs +35 -0
  15. package/src/commands/blobs/blobs-get.mjs +44 -0
  16. package/src/commands/blobs/blobs-list.mjs +48 -0
  17. package/src/commands/blobs/blobs-set.mjs +54 -0
  18. package/src/commands/blobs/blobs.mjs +32 -0
  19. package/src/commands/blobs/index.mjs +1 -0
  20. package/src/commands/build/build.mjs +55 -67
  21. package/src/commands/build/index.mjs +1 -1
  22. package/src/commands/completion/completion.mjs +41 -46
  23. package/src/commands/completion/index.mjs +1 -1
  24. package/src/commands/deploy/deploy.mjs +675 -710
  25. package/src/commands/deploy/index.mjs +1 -1
  26. package/src/commands/dev/dev-exec.mjs +20 -32
  27. package/src/commands/dev/dev.mjs +217 -302
  28. package/src/commands/dev/index.mjs +1 -1
  29. package/src/commands/dev/types.d.ts +30 -0
  30. package/src/commands/env/env-clone.mjs +157 -184
  31. package/src/commands/env/env-get.mjs +49 -68
  32. package/src/commands/env/env-import.mjs +100 -119
  33. package/src/commands/env/env-list.mjs +104 -129
  34. package/src/commands/env/env-set.mjs +160 -185
  35. package/src/commands/env/env-unset.mjs +104 -122
  36. package/src/commands/env/env.mjs +28 -30
  37. package/src/commands/env/index.mjs +1 -1
  38. package/src/commands/functions/functions-build.mjs +29 -41
  39. package/src/commands/functions/functions-create.mjs +533 -601
  40. package/src/commands/functions/functions-invoke.mjs +193 -216
  41. package/src/commands/functions/functions-list.mjs +45 -55
  42. package/src/commands/functions/functions-serve.mjs +51 -61
  43. package/src/commands/functions/functions.mjs +26 -32
  44. package/src/commands/functions/index.mjs +1 -1
  45. package/src/commands/index.mjs +2 -2
  46. package/src/commands/init/index.mjs +1 -1
  47. package/src/commands/init/init.mjs +138 -167
  48. package/src/commands/integration/deploy.mjs +337 -399
  49. package/src/commands/integration/index.mjs +12 -13
  50. package/src/commands/link/index.mjs +1 -1
  51. package/src/commands/link/link.mjs +298 -317
  52. package/src/commands/lm/index.mjs +1 -1
  53. package/src/commands/lm/lm-info.mjs +23 -31
  54. package/src/commands/lm/lm-install.mjs +13 -17
  55. package/src/commands/lm/lm-setup.mjs +80 -84
  56. package/src/commands/lm/lm-uninstall.mjs +7 -12
  57. package/src/commands/lm/lm.mjs +18 -22
  58. package/src/commands/login/index.mjs +1 -1
  59. package/src/commands/login/login.mjs +35 -41
  60. package/src/commands/logout/index.mjs +1 -1
  61. package/src/commands/logout/logout.mjs +25 -31
  62. package/src/commands/main.mjs +166 -201
  63. package/src/commands/open/index.mjs +1 -1
  64. package/src/commands/open/open-admin.mjs +15 -18
  65. package/src/commands/open/open-site.mjs +16 -19
  66. package/src/commands/open/open.mjs +24 -27
  67. package/src/commands/recipes/common.mjs +23 -34
  68. package/src/commands/recipes/index.mjs +1 -1
  69. package/src/commands/recipes/recipes-list.mjs +13 -20
  70. package/src/commands/recipes/recipes.mjs +59 -72
  71. package/src/commands/serve/index.mjs +1 -1
  72. package/src/commands/serve/serve.mjs +142 -189
  73. package/src/commands/sites/index.mjs +2 -2
  74. package/src/commands/sites/sites-create-template.mjs +214 -236
  75. package/src/commands/sites/sites-create.mjs +145 -157
  76. package/src/commands/sites/sites-delete.mjs +75 -81
  77. package/src/commands/sites/sites-list.mjs +63 -66
  78. package/src/commands/sites/sites.mjs +18 -20
  79. package/src/commands/status/index.mjs +1 -1
  80. package/src/commands/status/status-hooks.mjs +32 -34
  81. package/src/commands/status/status.mjs +99 -106
  82. package/src/commands/switch/index.mjs +1 -1
  83. package/src/commands/switch/switch.mjs +32 -37
  84. package/src/commands/types.d.ts +31 -0
  85. package/src/commands/unlink/index.mjs +1 -1
  86. package/src/commands/unlink/unlink.mjs +23 -29
  87. package/src/commands/watch/index.mjs +1 -1
  88. package/src/commands/watch/watch.mjs +91 -105
  89. package/src/functions-templates/javascript/hello/{{name}}.js +2 -3
  90. package/src/lib/account.mjs +4 -5
  91. package/src/lib/api.mjs +22 -20
  92. package/src/lib/blobs/blobs.mjs +36 -45
  93. package/src/lib/build.mjs +82 -85
  94. package/src/lib/completion/constants.mjs +2 -4
  95. package/src/lib/completion/generate-autocompletion.mjs +33 -36
  96. package/src/lib/completion/get-autocompletion.mjs +31 -35
  97. package/src/lib/completion/index.mjs +1 -1
  98. package/src/lib/completion/script.mjs +12 -19
  99. package/src/lib/edge-functions/bootstrap.mjs +3 -5
  100. package/src/lib/edge-functions/consts.mjs +9 -10
  101. package/src/lib/edge-functions/deploy.mjs +28 -34
  102. package/src/lib/edge-functions/editor-helper.mjs +29 -42
  103. package/src/lib/edge-functions/headers.mjs +24 -26
  104. package/src/lib/edge-functions/internal.mjs +38 -44
  105. package/src/lib/edge-functions/proxy.mjs +229 -228
  106. package/src/lib/edge-functions/registry.mjs +473 -574
  107. package/src/lib/exec-fetcher.mjs +115 -122
  108. package/src/lib/fs.mjs +28 -27
  109. package/src/lib/functions/background.mjs +16 -20
  110. package/src/lib/functions/config.mjs +12 -9
  111. package/src/lib/functions/form-submissions-handler.mjs +143 -149
  112. package/src/lib/functions/local-proxy.mjs +40 -44
  113. package/src/lib/functions/memoized-build.mjs +19 -21
  114. package/src/lib/functions/netlify-function.mjs +269 -249
  115. package/src/lib/functions/registry.mjs +509 -568
  116. package/src/lib/functions/runtimes/go/index.mjs +62 -71
  117. package/src/lib/functions/runtimes/index.mjs +8 -15
  118. package/src/lib/functions/runtimes/js/builders/netlify-lambda.mjs +55 -64
  119. package/src/lib/functions/runtimes/js/builders/zisi.mjs +135 -154
  120. package/src/lib/functions/runtimes/js/constants.mjs +1 -1
  121. package/src/lib/functions/runtimes/js/index.mjs +92 -109
  122. package/src/lib/functions/runtimes/js/worker.mjs +43 -45
  123. package/src/lib/functions/runtimes/rust/index.mjs +64 -73
  124. package/src/lib/functions/scheduled.mjs +70 -88
  125. package/src/lib/functions/server.mjs +269 -327
  126. package/src/lib/functions/synchronous.mjs +118 -147
  127. package/src/lib/functions/utils.mjs +38 -46
  128. package/src/lib/geo-location.mjs +69 -81
  129. package/src/lib/http-agent.mjs +87 -90
  130. package/src/lib/images/proxy.mjs +97 -89
  131. package/src/lib/log.mjs +6 -9
  132. package/src/lib/path.mjs +2 -1
  133. package/src/lib/render-error-template.mjs +19 -20
  134. package/src/lib/settings.mjs +17 -19
  135. package/src/lib/spinner.mjs +21 -23
  136. package/src/lib/string.mjs +4 -2
  137. package/src/recipes/vscode/index.mjs +69 -85
  138. package/src/recipes/vscode/settings.mjs +53 -58
  139. package/src/utils/addons/compare.mjs +31 -32
  140. package/src/utils/addons/diffs/index.mjs +16 -17
  141. package/src/utils/addons/diffs/options.mjs +99 -101
  142. package/src/utils/addons/prepare.mjs +100 -97
  143. package/src/utils/addons/prompts.mjs +73 -76
  144. package/src/utils/addons/render.mjs +33 -36
  145. package/src/utils/addons/validation.mjs +19 -15
  146. package/src/utils/banner.mjs +11 -16
  147. package/src/utils/build-info.mjs +65 -66
  148. package/src/utils/command-helpers.mjs +185 -199
  149. package/src/utils/create-deferred.mjs +9 -12
  150. package/src/utils/create-stream-promise.mjs +54 -47
  151. package/src/utils/deploy/constants.mjs +9 -11
  152. package/src/utils/deploy/deploy-site.mjs +162 -182
  153. package/src/utils/deploy/hash-config.mjs +21 -21
  154. package/src/utils/deploy/hash-files.mjs +34 -38
  155. package/src/utils/deploy/hash-fns.mjs +149 -154
  156. package/src/utils/deploy/hasher-segments.mjs +58 -52
  157. package/src/utils/deploy/upload-files.mjs +99 -113
  158. package/src/utils/deploy/util.mjs +85 -91
  159. package/src/utils/detect-server-settings.mjs +236 -268
  160. package/src/utils/dev.mjs +163 -178
  161. package/src/utils/dot-env.mjs +37 -42
  162. package/src/utils/env/index.mjs +148 -148
  163. package/src/utils/execa.mjs +9 -13
  164. package/src/utils/feature-flags.mjs +6 -5
  165. package/src/utils/framework-server.mjs +43 -52
  166. package/src/utils/functions/constants.mjs +1 -1
  167. package/src/utils/functions/functions.mjs +30 -40
  168. package/src/utils/functions/get-functions.mjs +28 -29
  169. package/src/utils/functions/index.mjs +3 -3
  170. package/src/utils/get-global-config.mjs +33 -36
  171. package/src/utils/get-package-json.mjs +14 -15
  172. package/src/utils/get-repo-data.mjs +54 -64
  173. package/src/utils/get-site.mjs +14 -14
  174. package/src/utils/gh-auth.mjs +79 -100
  175. package/src/utils/gitignore.mjs +37 -40
  176. package/src/utils/headers.mjs +33 -35
  177. package/src/utils/hooks/requires-site-info.mjs +26 -22
  178. package/src/utils/init/config-github.mjs +207 -219
  179. package/src/utils/init/config-manual.mjs +83 -100
  180. package/src/utils/init/config.mjs +25 -26
  181. package/src/utils/init/node-version.mjs +23 -30
  182. package/src/utils/init/plugins.mjs +12 -8
  183. package/src/utils/init/utils.mjs +152 -172
  184. package/src/utils/live-tunnel.mjs +118 -141
  185. package/src/utils/lm/install.mjs +220 -259
  186. package/src/utils/lm/requirements.mjs +54 -63
  187. package/src/utils/lm/steps.mjs +31 -31
  188. package/src/utils/lm/ui.mjs +13 -20
  189. package/src/utils/open-browser.mjs +31 -32
  190. package/src/utils/parse-raw-flags.mjs +39 -35
  191. package/src/utils/proxy-server.mjs +84 -71
  192. package/src/utils/proxy.mjs +696 -750
  193. package/src/utils/read-repo-url.mjs +48 -47
  194. package/src/utils/redirects.mjs +49 -49
  195. package/src/utils/request-id.mjs +2 -4
  196. package/src/utils/rules-proxy.mjs +96 -100
  197. package/src/utils/run-build.mjs +109 -132
  198. package/src/utils/shell.mjs +99 -106
  199. package/src/utils/sign-redirect.mjs +14 -14
  200. package/src/utils/sites/utils.mjs +48 -55
  201. package/src/utils/state-config.mjs +101 -101
  202. package/src/utils/static-server.mjs +28 -34
  203. package/src/utils/telemetry/index.mjs +2 -2
  204. package/src/utils/telemetry/report-error.mjs +45 -49
  205. package/src/utils/telemetry/request.mjs +36 -43
  206. package/src/utils/telemetry/telemetry.mjs +90 -105
  207. package/src/utils/telemetry/utils.mjs +5 -6
  208. package/src/utils/telemetry/validation.mjs +55 -53
  209. package/src/utils/types.d.ts +46 -0
  210. package/src/utils/validation.mjs +10 -13
@@ -1,79 +1,70 @@
1
- // @ts-check
2
- import { readFile } from 'fs/promises'
3
- import { dirname, extname, join, resolve } from 'path'
4
- import { platform } from 'process'
5
-
6
- import { findUp } from 'find-up'
7
- import toml from 'toml'
8
-
9
- import execa from '../../../../utils/execa.mjs'
10
- import { SERVE_FUNCTIONS_FOLDER } from '../../../../utils/functions/functions.mjs'
11
- import { getPathInProject } from '../../../settings.mjs'
12
- import { runFunctionsProxy } from '../../local-proxy.mjs'
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
- const functionDirectory = dirname(func.mainFile)
20
- const cacheDirectory = resolve(getPathInProject([SERVE_FUNCTIONS_FOLDER]))
21
- const targetDirectory = join(cacheDirectory, func.name)
22
- const crateName = await getCrateName(functionDirectory)
23
- const binaryName = `${crateName}${isWindows ? '.exe' : ''}`
24
- const binaryPath = join(targetDirectory, 'debug', binaryName)
25
-
26
- await execa('cargo', ['build', '--target-dir', targetDirectory], {
27
- cwd: functionDirectory,
28
- })
29
-
30
- return {
31
- binaryPath,
32
- srcFiles: [functionDirectory],
33
- }
34
- }
35
-
36
- export const getBuildFunction =
37
- ({ func }) =>
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
- const manifestPath = await findUp('Cargo.toml', { cwd, type: 'file' })
43
- const manifest = await readFile(manifestPath, 'utf-8')
44
- const { package: CargoPackage } = toml.parse(manifest)
45
-
46
- return CargoPackage.name
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
- const { stdout } = await runFunctionsProxy({
51
- binaryPath: func.buildData.binaryPath,
52
- context,
53
- directory: dirname(func.mainFile),
54
- event,
55
- name: func.name,
56
- timeout,
57
- })
58
-
59
- try {
60
- const { body, headers, multiValueHeaders, statusCode } = JSON.parse(stdout)
61
-
62
- return {
63
- body,
64
- headers,
65
- multiValueHeaders,
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
- } catch {
69
- return {
70
- statusCode: 500,
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
- const isSource = extname(func.mainFile) === '.rs'
77
-
78
- return isSource ? func : null
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 { CLOCKWORK_USERAGENT } from '../../utils/functions/index.mjs'
4
-
5
- import { formatLambdaError } from './utils.mjs'
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
- const acceptsHtml = headers.accept && headers.accept.includes('text/html')
11
-
12
- const paragraph = (text) => {
13
- text = text.trim()
14
-
15
- if (acceptsHtml) {
16
- return ansiToHtml.toHtml(`<p>${text}</p>`)
17
- }
18
-
19
- text = text
20
- .replace(/<pre><code>/gm, '```\n')
21
- .replace(/<\/code><\/pre>/gm, '\n```')
22
- .replace(/<code>/gm, '`')
23
- .replace(/<\/code>/gm, '`')
24
-
25
- return `${text}\n\n`
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
- if (error) {
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
- if (result) {
47
- // lambda emulator adds level field, which isn't user-provided
48
- const returnValue = { ...result }
49
- delete returnValue.level
50
-
51
- const { statusCode } = returnValue
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
- const allowedKeys = new Set(['statusCode'])
60
- const returnedKeys = Object.keys(returnValue)
61
- const ignoredKeys = returnedKeys.filter((key) => !allowedKeys.has(key))
62
-
63
- if (ignoredKeys.length !== 0) {
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
- statusCode,
82
- contentType: 'text/plain',
83
- message,
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
- const { contentType, message, statusCode } = buildHelpResponse({
89
- error,
90
- headers: request.headers,
91
- path: request.path,
92
- result,
93
- })
94
-
95
- response.status(statusCode)
96
- response.set('Content-Type', contentType)
97
- response.send(message)
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
+ };