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,58 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { ADDON_VALIDATION, prepareAddonCommand } from '../../utils/addons/prepare.mjs'
|
|
5
|
-
import { error, exit, log } from '../../utils/command-helpers.mjs'
|
|
6
|
-
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import { ADDON_VALIDATION, prepareAddonCommand } from '../../utils/addons/prepare.mjs';
|
|
3
|
+
import { error, exit, log } from '../../utils/command-helpers.mjs';
|
|
7
4
|
/**
|
|
8
5
|
* The addons:delete command
|
|
9
6
|
* @param {string} addonName
|
|
10
7
|
* @param {import('commander').OptionValues} options
|
|
11
8
|
* @param {import('../base-command.mjs').default} command
|
|
12
9
|
*/
|
|
10
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'addonName' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
13
11
|
const addonsDelete = async (addonName, options, command) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
12
|
+
const { addon } = await prepareAddonCommand({
|
|
13
|
+
command,
|
|
14
|
+
addonName,
|
|
15
|
+
validation: ADDON_VALIDATION.EXISTS,
|
|
16
|
+
});
|
|
17
|
+
if (!options.force && !options.f) {
|
|
18
|
+
const { wantsToDelete } = await inquirer.prompt({
|
|
19
|
+
type: 'confirm',
|
|
20
|
+
name: 'wantsToDelete',
|
|
21
|
+
message: `Are you sure you want to delete the ${addonName} add-on? (to skip this prompt, pass a --force flag)`,
|
|
22
|
+
default: false,
|
|
23
|
+
});
|
|
24
|
+
if (!wantsToDelete) {
|
|
25
|
+
exit();
|
|
26
|
+
}
|
|
29
27
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
28
|
+
try {
|
|
29
|
+
await command.netlify.api.deleteServiceInstance({
|
|
30
|
+
siteId: command.netlify.site.id,
|
|
31
|
+
addon: addonName,
|
|
32
|
+
instanceId: addon.id,
|
|
33
|
+
});
|
|
34
|
+
log(`Addon "${addonName}" deleted`);
|
|
35
|
+
}
|
|
36
|
+
catch (error_) {
|
|
37
|
+
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
38
|
+
error(error_.message);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
44
41
|
/**
|
|
45
42
|
* Creates the `netlify addons:delete` command
|
|
46
43
|
* @param {import('../base-command.mjs').default} program
|
|
47
44
|
* @returns
|
|
48
45
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'program' implicitly has an 'any' type.
|
|
47
|
+
export const createAddonsDeleteCommand = (program) => program
|
|
51
48
|
.command('addons:delete', { hidden: true })
|
|
52
49
|
.alias('addon:delete')
|
|
53
50
|
.argument('<name>', 'Add-on namespace')
|
|
54
|
-
.description(
|
|
55
|
-
`Remove an add-on extension to your site\nAdd-ons are a way to extend the functionality of your Netlify site`,
|
|
56
|
-
)
|
|
51
|
+
.description(`Remove an add-on extension to your site\nAdd-ons are a way to extend the functionality of your Netlify site`)
|
|
57
52
|
.option('-f, --force', 'delete without prompting (useful for CI)')
|
|
58
|
-
.action(addonsDelete)
|
|
53
|
+
.action(addonsDelete);
|
|
@@ -1,59 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { prepareAddonCommand } from '../../utils/addons/prepare.mjs'
|
|
5
|
-
import { log, logJson } from '../../utils/command-helpers.mjs'
|
|
6
|
-
|
|
1
|
+
import AsciiTable from 'ascii-table';
|
|
2
|
+
import { prepareAddonCommand } from '../../utils/addons/prepare.mjs';
|
|
3
|
+
import { log, logJson } from '../../utils/command-helpers.mjs';
|
|
7
4
|
/**
|
|
8
5
|
* The addons:list command
|
|
9
6
|
* @param {import('commander').OptionValues} options
|
|
10
7
|
* @param {import('../base-command.mjs').default} command
|
|
11
8
|
* @returns {Promise<boolean>}
|
|
12
9
|
*/
|
|
10
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'options' implicitly has an 'any' type.
|
|
13
11
|
const addonsList = async (options, command) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
log(table.toString())
|
|
44
|
-
}
|
|
45
|
-
|
|
12
|
+
// @ts-expect-error TS(2345) FIXME: Argument of type '{ command: any; }' is not assign... Remove this comment to see the full error message
|
|
13
|
+
const { addons, siteData } = await prepareAddonCommand({ command });
|
|
14
|
+
// Return json response for piping commands
|
|
15
|
+
if (options.json) {
|
|
16
|
+
logJson(addons);
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (!addons || addons.length === 0) {
|
|
20
|
+
log(`No addons currently installed for ${siteData.name}`);
|
|
21
|
+
log(`> Run \`netlify addons:create addon-namespace\` to install an addon`);
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'addon' implicitly has an 'any' type.
|
|
25
|
+
const addonData = addons.map((addon) => ({
|
|
26
|
+
namespace: addon.service_path.replace('/.netlify/', ''),
|
|
27
|
+
name: addon.service_name,
|
|
28
|
+
id: addon.id,
|
|
29
|
+
}));
|
|
30
|
+
// Build a table out of addons
|
|
31
|
+
log(`site: ${siteData.name}`);
|
|
32
|
+
const table = new AsciiTable(`Currently Installed addons`);
|
|
33
|
+
table.setHeading('NameSpace', 'Name', 'Instance Id');
|
|
34
|
+
// @ts-expect-error TS(7031) FIXME: Binding element 'id' implicitly has an 'any' type.
|
|
35
|
+
addonData.forEach(({ id, name, namespace }) => {
|
|
36
|
+
table.addRow(namespace, name, id);
|
|
37
|
+
});
|
|
38
|
+
// Log da addons
|
|
39
|
+
log(table.toString());
|
|
40
|
+
};
|
|
46
41
|
/**
|
|
47
42
|
* Creates the `netlify addons:list` command
|
|
48
43
|
* @param {import('../base-command.mjs').default} program
|
|
49
44
|
* @returns
|
|
50
45
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'program' implicitly has an 'any' type.
|
|
47
|
+
export const createAddonsListCommand = (program) => program
|
|
53
48
|
.command('addons:list', { hidden: true })
|
|
54
49
|
.alias('addon:list')
|
|
55
50
|
.description(`List currently installed add-ons for site`)
|
|
56
51
|
.option('--json', 'Output add-on data as JSON')
|
|
52
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'options' implicitly has an 'any' type.
|
|
57
53
|
.action(async (options, command) => {
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
await addonsList(options, command);
|
|
55
|
+
});
|
|
@@ -1,41 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { createAddonsListCommand } from './addons-list.mjs'
|
|
7
|
-
|
|
1
|
+
import { createAddonsAuthCommand } from './addons-auth.mjs';
|
|
2
|
+
import { createAddonsConfigCommand } from './addons-config.mjs';
|
|
3
|
+
import { createAddonsCreateCommand } from './addons-create.mjs';
|
|
4
|
+
import { createAddonsDeleteCommand } from './addons-delete.mjs';
|
|
5
|
+
import { createAddonsListCommand } from './addons-list.mjs';
|
|
8
6
|
/**
|
|
9
7
|
* The addons command
|
|
10
8
|
* @param {import('commander').OptionValues} options
|
|
11
9
|
* @param {import('../base-command.mjs').default} command
|
|
12
10
|
*/
|
|
11
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'options' implicitly has an 'any' type.
|
|
13
12
|
const addons = (options, command) => {
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
13
|
+
command.help();
|
|
14
|
+
};
|
|
17
15
|
/**
|
|
18
16
|
* Creates the `netlify addons` command
|
|
19
17
|
* @param {import('../base-command.mjs').default} program
|
|
20
18
|
* @returns
|
|
21
19
|
*/
|
|
20
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'program' implicitly has an 'any' type.
|
|
22
21
|
export const createAddonsCommand = (program) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
'netlify addons:auth addon-xyz',
|
|
22
|
+
createAddonsAuthCommand(program);
|
|
23
|
+
createAddonsConfigCommand(program);
|
|
24
|
+
createAddonsCreateCommand(program);
|
|
25
|
+
createAddonsDeleteCommand(program);
|
|
26
|
+
createAddonsListCommand(program);
|
|
27
|
+
return program
|
|
28
|
+
.command('addons', { hidden: true })
|
|
29
|
+
.alias('addon')
|
|
30
|
+
.description('[Deprecated and will be removed from future versions] Manage Netlify Add-ons')
|
|
31
|
+
.addExamples([
|
|
32
|
+
'netlify addons:create addon-xyz',
|
|
33
|
+
'netlify addons:list',
|
|
34
|
+
'netlify addons:config addon-xyz',
|
|
35
|
+
'netlify addons:delete addon-xyz',
|
|
36
|
+
'netlify addons:auth addon-xyz',
|
|
39
37
|
])
|
|
40
|
-
|
|
41
|
-
}
|
|
38
|
+
.action(addons);
|
|
39
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createAddonsCommand } from './addons.mjs'
|
|
1
|
+
export { createAddonsCommand } from './addons.mjs';
|
package/src/commands/api/api.mjs
CHANGED
|
@@ -1,70 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { chalk, error, exit, log, logJson } from '../../utils/command-helpers.mjs'
|
|
6
|
-
|
|
1
|
+
import AsciiTable from 'ascii-table';
|
|
2
|
+
import { methods } from 'netlify';
|
|
3
|
+
import { chalk, error, exit, log, logJson } from '../../utils/command-helpers.mjs';
|
|
7
4
|
/**
|
|
8
5
|
* The api command
|
|
9
6
|
* @param {string} apiMethod
|
|
10
7
|
* @param {import('commander').OptionValues} options
|
|
11
8
|
* @param {import('../base-command.mjs').default} command
|
|
12
9
|
*/
|
|
10
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'apiMethod' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
13
11
|
const apiCommand = async (apiMethod, options, command) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
12
|
+
const { api } = command.netlify;
|
|
13
|
+
if (options.list) {
|
|
14
|
+
const table = new AsciiTable(`Netlify API Methods`);
|
|
15
|
+
table.setHeading('API Method', 'Docs Link');
|
|
16
|
+
methods.forEach((method) => {
|
|
17
|
+
const { operationId } = method;
|
|
18
|
+
table.addRow(operationId, `https://open-api.netlify.com/#operation/${operationId}`);
|
|
19
|
+
});
|
|
20
|
+
log(table.toString());
|
|
21
|
+
log();
|
|
22
|
+
log('Above is a list of available API methods');
|
|
23
|
+
log(`To run a method use "${chalk.cyanBright('netlify api methodName')}"`);
|
|
24
|
+
exit();
|
|
25
|
+
}
|
|
26
|
+
if (!apiMethod) {
|
|
27
|
+
error(`You must provide an API method. Run "netlify api --list" to see available methods`);
|
|
28
|
+
}
|
|
29
|
+
if (!api[apiMethod] || typeof api[apiMethod] !== 'function') {
|
|
30
|
+
error(`"${apiMethod}"" is not a valid api method. Run "netlify api --list" to see available methods`);
|
|
31
|
+
}
|
|
32
|
+
let payload;
|
|
33
|
+
if (options.data) {
|
|
34
|
+
payload = typeof options.data === 'string' ? JSON.parse(options.data) : options.data;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
payload = {};
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const apiResponse = await api[apiMethod](payload);
|
|
41
|
+
logJson(apiResponse);
|
|
42
|
+
}
|
|
43
|
+
catch (error_) {
|
|
44
|
+
// @ts-expect-error TS(2345) FIXME: Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message
|
|
45
|
+
error(error_);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
52
48
|
/**
|
|
53
49
|
* Creates the `netlify api` command
|
|
54
50
|
* @param {import('../base-command.mjs').default} program
|
|
55
51
|
* @returns
|
|
56
52
|
*/
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
// @ts-expect-error TS(7006) FIXME: Parameter 'program' implicitly has an 'any' type.
|
|
54
|
+
export const createApiCommand = (program) => program
|
|
59
55
|
.command('api')
|
|
60
56
|
.argument('[apiMethod]', 'Open API method to run')
|
|
61
|
-
.description(
|
|
62
|
-
|
|
63
|
-
For more information on available methods checkout https://open-api.netlify.com/ or run '${chalk.grey(
|
|
64
|
-
'netlify api --list',
|
|
65
|
-
)}'`,
|
|
66
|
-
)
|
|
57
|
+
.description(`Run any Netlify API method
|
|
58
|
+
For more information on available methods checkout https://open-api.netlify.com/ or run '${chalk.grey('netlify api --list')}'`)
|
|
67
59
|
.option('-d, --data <data>', 'Data to use')
|
|
68
60
|
.option('--list', 'List out available API methods', false)
|
|
69
61
|
.addExamples(['netlify api --list', `netlify api getSite --data '{ "site_id": "123456" }'`])
|
|
70
|
-
.action(apiCommand)
|
|
62
|
+
.action(apiCommand);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { createApiCommand } from './api.mjs'
|
|
1
|
+
export { createApiCommand } from './api.mjs';
|