netlify-cli 17.37.1 → 17.38.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/bin/run.js +4 -2
- package/dist/commands/addons/addons-config.d.ts.map +1 -1
- package/dist/commands/addons/addons-config.js +0 -1
- package/dist/commands/addons/addons-create.d.ts.map +1 -1
- package/dist/commands/addons/addons-create.js +0 -1
- package/dist/commands/addons/addons-delete.d.ts.map +1 -1
- package/dist/commands/addons/addons-delete.js +0 -1
- package/dist/commands/addons/addons.d.ts.map +1 -1
- package/dist/commands/addons/addons.js +0 -1
- package/dist/commands/api/api.d.ts.map +1 -1
- package/dist/commands/api/api.js +0 -1
- package/dist/commands/base-command.d.ts +2 -2
- package/dist/commands/base-command.d.ts.map +1 -1
- package/dist/commands/base-command.js +2 -2
- package/dist/commands/blobs/blobs-delete.d.ts.map +1 -1
- package/dist/commands/blobs/blobs-delete.js +7 -1
- package/dist/commands/blobs/blobs-set.d.ts +1 -0
- package/dist/commands/blobs/blobs-set.d.ts.map +1 -1
- package/dist/commands/blobs/blobs-set.js +10 -2
- package/dist/commands/build/build.d.ts.map +1 -1
- package/dist/commands/build/build.js +0 -1
- package/dist/commands/completion/completion.d.ts.map +1 -1
- package/dist/commands/completion/completion.js +35 -2
- package/dist/commands/deploy/deploy.d.ts.map +1 -1
- package/dist/commands/deploy/deploy.js +3 -5
- package/dist/commands/deploy/index.d.ts.map +1 -1
- package/dist/commands/deploy/index.js +4 -3
- package/dist/commands/env/env-clone.d.ts.map +1 -1
- package/dist/commands/env/env-clone.js +12 -3
- package/dist/commands/env/env-set.d.ts.map +1 -1
- package/dist/commands/env/env-set.js +8 -3
- package/dist/commands/env/env-unset.d.ts.map +1 -1
- package/dist/commands/env/env-unset.js +7 -3
- package/dist/commands/functions/functions-create.d.ts.map +1 -1
- package/dist/commands/functions/functions-create.js +2 -5
- package/dist/commands/functions/functions-invoke.d.ts.map +1 -1
- package/dist/commands/functions/functions-invoke.js +0 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +0 -1
- package/dist/commands/integration/deploy.d.ts.map +1 -1
- package/dist/commands/integration/deploy.js +13 -24
- package/dist/commands/link/link.d.ts.map +1 -1
- package/dist/commands/link/link.js +8 -21
- package/dist/commands/lm/lm-setup.d.ts.map +1 -1
- package/dist/commands/lm/lm-setup.js +0 -1
- package/dist/commands/login/login.d.ts.map +1 -1
- package/dist/commands/login/login.js +0 -2
- package/dist/commands/logout/logout.d.ts.map +1 -1
- package/dist/commands/logout/logout.js +0 -1
- package/dist/commands/logs/build.d.ts.map +1 -1
- package/dist/commands/logs/build.js +4 -0
- package/dist/commands/main.d.ts +34 -0
- package/dist/commands/main.d.ts.map +1 -1
- package/dist/commands/main.js +36 -6
- package/dist/commands/sites/sites-create-template.d.ts +2 -2
- package/dist/commands/sites/sites-create-template.d.ts.map +1 -1
- package/dist/commands/sites/sites-create-template.js +113 -101
- package/dist/commands/sites/sites-create.d.ts +2 -2
- package/dist/commands/sites/sites-create.d.ts.map +1 -1
- package/dist/commands/sites/sites-create.js +1 -9
- package/dist/commands/sites/sites-delete.d.ts.map +1 -1
- package/dist/commands/sites/sites-delete.js +3 -3
- package/dist/commands/sites/sites-list.d.ts.map +1 -1
- package/dist/commands/sites/sites-list.js +1 -5
- package/dist/commands/sites/sites.d.ts.map +1 -1
- package/dist/commands/sites/sites.js +0 -1
- package/dist/commands/status/status.js +3 -2
- package/dist/commands/unlink/unlink.js +2 -2
- package/dist/commands/watch/watch.d.ts.map +1 -1
- package/dist/commands/watch/watch.js +0 -1
- package/dist/lib/api.d.ts +2 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/exec-fetcher.d.ts.map +1 -1
- package/dist/lib/exec-fetcher.js +0 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/addons/prepare.d.ts.map +1 -1
- package/dist/utils/addons/prepare.js +1 -5
- package/dist/utils/command-helpers.d.ts +37 -6
- package/dist/utils/command-helpers.d.ts.map +1 -1
- package/dist/utils/command-helpers.js +21 -9
- package/dist/utils/dev.d.ts.map +1 -1
- package/dist/utils/dev.js +0 -2
- package/dist/utils/framework-server.d.ts.map +1 -1
- package/dist/utils/framework-server.js +2 -3
- package/dist/utils/get-repo-data.d.ts +2 -2
- package/dist/utils/get-repo-data.d.ts.map +1 -1
- package/dist/utils/get-repo-data.js +0 -1
- package/dist/utils/get-site.d.ts.map +1 -1
- package/dist/utils/get-site.js +7 -2
- package/dist/utils/gh-auth.js +1 -1
- package/dist/utils/hooks/requires-site-info.d.ts.map +1 -1
- package/dist/utils/hooks/requires-site-info.js +0 -3
- package/dist/utils/prompts/blob-delete-prompts.d.ts +2 -0
- package/dist/utils/prompts/blob-delete-prompts.d.ts.map +1 -0
- package/dist/utils/prompts/blob-delete-prompts.js +11 -0
- package/dist/utils/prompts/blob-set-prompt.d.ts +2 -0
- package/dist/utils/prompts/blob-set-prompt.d.ts.map +1 -0
- package/dist/utils/prompts/blob-set-prompt.js +11 -0
- package/dist/utils/prompts/confirm-prompt.d.ts +2 -0
- package/dist/utils/prompts/confirm-prompt.d.ts.map +1 -0
- package/dist/utils/prompts/confirm-prompt.js +20 -0
- package/dist/utils/prompts/env-clone-prompt.d.ts +11 -0
- package/dist/utils/prompts/env-clone-prompt.d.ts.map +1 -0
- package/dist/utils/prompts/env-clone-prompt.js +27 -0
- package/dist/utils/prompts/env-set-prompts.d.ts +2 -0
- package/dist/utils/prompts/env-set-prompts.d.ts.map +1 -0
- package/dist/utils/prompts/env-set-prompts.js +11 -0
- package/dist/utils/prompts/env-unset-prompts.d.ts +8 -0
- package/dist/utils/prompts/env-unset-prompts.d.ts.map +1 -0
- package/dist/utils/prompts/env-unset-prompts.js +17 -0
- package/dist/utils/prompts/prompt-messages.d.ts +25 -0
- package/dist/utils/prompts/prompt-messages.d.ts.map +1 -0
- package/dist/utils/prompts/prompt-messages.js +25 -0
- package/dist/utils/run-build.d.ts +2 -0
- package/dist/utils/run-build.d.ts.map +1 -1
- package/dist/utils/run-program.d.ts +3 -0
- package/dist/utils/run-program.d.ts.map +1 -0
- package/dist/utils/run-program.js +12 -0
- package/dist/utils/scripted-commands.d.ts +3 -0
- package/dist/utils/scripted-commands.d.ts.map +1 -0
- package/dist/utils/scripted-commands.js +17 -0
- package/dist/utils/sites/create-template.d.ts +14 -0
- package/dist/utils/sites/create-template.d.ts.map +1 -0
- package/dist/utils/sites/create-template.js +46 -0
- package/dist/utils/sites/utils.d.ts +8 -5
- package/dist/utils/sites/utils.d.ts.map +1 -1
- package/dist/utils/sites/utils.js +23 -11
- package/dist/utils/static-server.d.ts +3 -1
- package/dist/utils/static-server.d.ts.map +1 -1
- package/dist/utils/static-server.js +2 -0
- package/dist/utils/types.d.ts +137 -0
- package/dist/utils/types.d.ts.map +1 -1
- package/functions-templates/javascript/hello-world/{{name}}.mjs +13 -0
- package/functions-templates/javascript/scheduled-function/{{name}}.mjs +11 -0
- package/functions-templates/rust/hello-world/Cargo.toml +1 -1
- package/functions-templates/typescript/hello-world/package-lock.json +15 -15
- package/functions-templates/typescript/hello-world/package.json +1 -1
- package/functions-templates/typescript/hello-world/{{name}}.mts +14 -0
- package/functions-templates/typescript/scheduled-function/package.json +1 -1
- package/functions-templates/typescript/scheduled-function/{{name}}.mts +11 -0
- package/npm-shrinkwrap.json +181 -252
- package/package.json +9 -9
- package/functions-templates/javascript/hello-world/{{name}}.js +0 -17
- package/functions-templates/javascript/identity-signup/.netlify-function-template.mjs +0 -5
- package/functions-templates/javascript/identity-signup/{{name}}.js +0 -29
- package/functions-templates/javascript/sanity-create/.netlify-function-template.mjs +0 -5
- package/functions-templates/javascript/sanity-create/package.json +0 -20
- package/functions-templates/javascript/sanity-create/{{name}}.js +0 -72
- package/functions-templates/javascript/sanity-groq/.netlify-function-template.mjs +0 -5
- package/functions-templates/javascript/sanity-groq/package.json +0 -21
- package/functions-templates/javascript/sanity-groq/{{name}}.js +0 -56
- package/functions-templates/javascript/scheduled-function/{{name}}.js +0 -12
- package/functions-templates/javascript/submission-created/.netlify-function-template.mjs +0 -5
- package/functions-templates/javascript/submission-created/package.json +0 -19
- package/functions-templates/javascript/submission-created/{{name}}.js +0 -29
- package/functions-templates/typescript/hello-world/{{name}}.ts +0 -12
- package/functions-templates/typescript/scheduled-function/{{name}}.ts +0 -12
package/bin/run.js
CHANGED
|
@@ -3,9 +3,10 @@ import { argv } from 'process'
|
|
|
3
3
|
|
|
4
4
|
import updateNotifier from 'update-notifier'
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { runProgram } from '../dist/utils/run-program.js'
|
|
7
7
|
import { error } from '../dist/utils/command-helpers.js'
|
|
8
8
|
import getPackageJson from '../dist/utils/get-package-json.js'
|
|
9
|
+
import { createMainCommand } from '../dist/commands/main.js'
|
|
9
10
|
|
|
10
11
|
// 12 hours
|
|
11
12
|
const UPDATE_CHECK_INTERVAL = 432e5
|
|
@@ -24,7 +25,8 @@ try {
|
|
|
24
25
|
const program = createMainCommand()
|
|
25
26
|
|
|
26
27
|
try {
|
|
27
|
-
await program
|
|
28
|
+
await runProgram(program, argv)
|
|
29
|
+
|
|
28
30
|
program.onEnd()
|
|
29
31
|
} catch (error_) {
|
|
30
32
|
program.onEnd(error_)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addons-config.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAYxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"addons-config.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAYxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AA6B5C,eAAO,MAAM,YAAY,cAAqB,MAAM,WAAW,YAAY,WAAW,WAAW,+BAqHhG,CAAA"}
|
|
@@ -31,7 +31,6 @@ const update = async function ({ addonName, api, currentConfig, instanceId, newC
|
|
|
31
31
|
log(`Add-on "${addonName}" successfully updated`);
|
|
32
32
|
}
|
|
33
33
|
catch (error_) {
|
|
34
|
-
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
35
34
|
error(error_.message);
|
|
36
35
|
}
|
|
37
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addons-create.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAUxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"addons-create.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAUxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAmB5C,eAAO,MAAM,YAAY,cAAqB,MAAM,WAAW,YAAY,WAAW,WAAW,+BA2EhG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addons-delete.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,YAAY,cAAqB,MAAM,WAAW,YAAY,WAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"addons-delete.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,YAAY,cAAqB,MAAM,WAAW,YAAY,WAAW,WAAW,kBA4BhG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addons.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAM5C,eAAO,MAAM,mBAAmB,YAAa,WAAW,
|
|
1
|
+
{"version":3,"file":"addons.d.ts","sourceRoot":"","sources":["../../../src/commands/addons/addons.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAM5C,eAAO,MAAM,mBAAmB,YAAa,WAAW,gBAwEvD,CAAA"}
|
|
@@ -39,7 +39,6 @@ Add-ons are a way to extend the functionality of your Netlify site`)
|
|
|
39
39
|
.alias('addon:delete')
|
|
40
40
|
.argument('<name>', 'Add-on namespace')
|
|
41
41
|
.description(`Remove an add-on extension to your site\nAdd-ons are a way to extend the functionality of your Netlify site`)
|
|
42
|
-
.option('-f, --force', 'delete without prompting (useful for CI)')
|
|
43
42
|
.action(async (addonName, options, command) => {
|
|
44
43
|
const { addonsDelete } = await import('./addons-delete.js');
|
|
45
44
|
await addonsDelete(addonName, options, command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/commands/api/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,UAAU,cAAqB,MAAM,WAAW,YAAY,WAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/commands/api/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,UAAU,cAAqB,MAAM,WAAW,YAAY,WAAW,WAAW,kBAqC9F,CAAA"}
|
package/dist/commands/api/api.js
CHANGED
|
@@ -34,7 +34,6 @@ export const apiCommand = async (apiMethod, options, command) => {
|
|
|
34
34
|
logJson(apiResponse);
|
|
35
35
|
}
|
|
36
36
|
catch (error_) {
|
|
37
|
-
// @ts-expect-error TS(2345) FIXME: Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message
|
|
38
37
|
error(error_);
|
|
39
38
|
}
|
|
40
39
|
};
|
|
@@ -45,8 +45,8 @@ export default class BaseCommand extends Command {
|
|
|
45
45
|
createHelp(): Help;
|
|
46
46
|
/** Will be called on the end of an action to track the metrics */
|
|
47
47
|
onEnd(error_?: unknown): Promise<void>;
|
|
48
|
-
authenticate(tokenFromFlag?: string): Promise<
|
|
49
|
-
expensivelyAuthenticate(): Promise<
|
|
48
|
+
authenticate(tokenFromFlag?: string): Promise<string | undefined>;
|
|
49
|
+
expensivelyAuthenticate(): Promise<string | undefined>;
|
|
50
50
|
/** Adds some data to the analytics payload */
|
|
51
51
|
setAnalyticsPayload(payload: Record<string, unknown>): void;
|
|
52
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../../src/commands/base-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../../src/commands/base-command.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAU,MAAM,WAAW,CAAA;AA0BjD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAQxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,KAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC,CAAA;AAuGD,0EAA0E;AAC1E,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;;IAC9C,4DAA4D;IAE5D,OAAO,EAAE,cAAc,CAAA;IACvB,SAAS,EAAE,SAAS,CAAyC;IAE7D,OAAO,EAAE,OAAO,CAAA;IAEhB;;;;OAIG;IAGH,UAAU,SAAgB;IAE1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,YAAY,EAAE,YAAY,CAAK;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAsDxC,mIAAmI;IACnI,aAAa;IAKb,mFAAmF;IACnF,QAAQ,EAAE,MAAM,EAAE,CAAK;IACvB,oCAAoC;IACpC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;IAK9B,iEAAiE;IACjE,UAAU,IAAI,IAAI;IAgIlB,kEAAkE;IAC5D,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO;IAwBtB,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM;IAQnC,uBAAuB;IA4D7B,8CAA8C;IAC9C,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOpD;;OAEG;YACW,IAAI;IAkMlB,iDAAiD;IAC3C,SAAS,CAAC,MAAM,EAAE;QACtB,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,2EAA2E;QAC3E,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC;IAgDpC;;OAEG;IACH,gBAAgB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAI5C;;;;OAIG;IACH,iBAAiB,IAAI,YAAY,GAAG,KAAK;IAIzC;;OAEG;IACH,cAAc,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;CAGjE"}
|
|
@@ -10,7 +10,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
12
|
var _BaseCommand_noBaseOptions;
|
|
13
|
-
import { isCI } from 'ci-info';
|
|
14
13
|
import { existsSync } from 'fs';
|
|
15
14
|
import { join, relative, resolve } from 'path';
|
|
16
15
|
import process from 'process';
|
|
@@ -18,6 +17,7 @@ import { format } from 'util';
|
|
|
18
17
|
import { DefaultLogger, Project } from '@netlify/build-info';
|
|
19
18
|
import { NodeFS, NoopLogger } from '@netlify/build-info/node';
|
|
20
19
|
import { resolveConfig } from '@netlify/config';
|
|
20
|
+
import { isCI } from 'ci-info';
|
|
21
21
|
import { Command, Option } from 'commander';
|
|
22
22
|
// @ts-expect-error TS(7016) FIXME: Could not find a declaration file for module 'debu... Remove this comment to see the full error message
|
|
23
23
|
import debug from 'debug';
|
|
@@ -140,6 +140,7 @@ class BaseCommand extends Command {
|
|
|
140
140
|
createCommand(name) {
|
|
141
141
|
const base = new BaseCommand(name)
|
|
142
142
|
// If --silent or --json flag passed disable logger
|
|
143
|
+
// .addOption(new Option('--force', 'Force command to run. Bypasses prompts for certain destructive commands.'))
|
|
143
144
|
.addOption(new Option('--json', 'Output return values as JSON').hideHelp(true))
|
|
144
145
|
.addOption(new Option('--silent', 'Silence CLI output').hideHelp(true))
|
|
145
146
|
.addOption(new Option('--cwd <cwd>').hideHelp(true))
|
|
@@ -579,7 +580,6 @@ class BaseCommand extends Command {
|
|
|
579
580
|
// the option to say that we don't need API data.)
|
|
580
581
|
if (isUserError && !config.offline && config.token) {
|
|
581
582
|
if (flags.debug) {
|
|
582
|
-
// @ts-expect-error TS(2345) FIXME: Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message
|
|
583
583
|
error(error_, { exit: false });
|
|
584
584
|
warn('Failed to resolve config, falling back to offline resolution');
|
|
585
585
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobs-delete.d.ts","sourceRoot":"","sources":["../../../src/commands/blobs/blobs-delete.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blobs-delete.d.ts","sourceRoot":"","sources":["../../../src/commands/blobs/blobs-delete.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,WAAW,cAAqB,MAAM,OAAO,MAAM,YAAY,OAAO,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,kBAsBhH,CAAA"}
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { getStore } from '@netlify/blobs';
|
|
2
|
-
import { chalk, error as printError } from '../../utils/command-helpers.js';
|
|
2
|
+
import { chalk, error as printError, log } from '../../utils/command-helpers.js';
|
|
3
|
+
import { promptBlobDelete } from '../../utils/prompts/blob-delete-prompts.js';
|
|
3
4
|
/**
|
|
4
5
|
* The blobs:delete command
|
|
5
6
|
*/
|
|
6
7
|
export const blobsDelete = async (storeName, key, _options, command) => {
|
|
7
8
|
const { api, siteInfo } = command.netlify;
|
|
9
|
+
const { force } = _options;
|
|
8
10
|
const store = getStore({
|
|
9
11
|
apiURL: `${api.scheme}://${api.host}`,
|
|
10
12
|
name: storeName,
|
|
11
13
|
siteID: siteInfo.id ?? '',
|
|
12
14
|
token: api.accessToken ?? '',
|
|
13
15
|
});
|
|
16
|
+
if (force === undefined) {
|
|
17
|
+
await promptBlobDelete(key, storeName);
|
|
18
|
+
}
|
|
14
19
|
try {
|
|
15
20
|
await store.delete(key);
|
|
21
|
+
log(`${chalk.greenBright('Success')}: Blob ${chalk.yellow(key)} deleted from store ${chalk.yellow(storeName)}`);
|
|
16
22
|
}
|
|
17
23
|
catch {
|
|
18
24
|
return printError(`Could not delete blob ${chalk.yellow(key)} from store ${chalk.yellow(storeName)}`);
|
|
@@ -2,6 +2,7 @@ import { OptionValues } from 'commander';
|
|
|
2
2
|
import BaseCommand from '../base-command.js';
|
|
3
3
|
interface Options extends OptionValues {
|
|
4
4
|
input?: string;
|
|
5
|
+
force?: string | boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare const blobsSet: (storeName: string, key: string, valueParts: string[], options: Options, command: BaseCommand) => Promise<void>;
|
|
7
8
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobs-set.d.ts","sourceRoot":"","sources":["../../../src/commands/blobs/blobs-set.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"blobs-set.d.ts","sourceRoot":"","sources":["../../../src/commands/blobs/blobs-set.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,UAAU,OAAQ,SAAQ,YAAY;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB;AAED,eAAO,MAAM,QAAQ,cACR,MAAM,OACZ,MAAM,cACC,MAAM,EAAE,WACX,OAAO,WACP,WAAW,kBAqDrB,CAAA"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
3
|
import { getStore } from '@netlify/blobs';
|
|
4
|
-
import { chalk, error as printError, isNodeError } from '../../utils/command-helpers.js';
|
|
4
|
+
import { chalk, error as printError, isNodeError, log } from '../../utils/command-helpers.js';
|
|
5
|
+
import { promptBlobSetOverwrite } from '../../utils/prompts/blob-set-prompt.js';
|
|
5
6
|
export const blobsSet = async (storeName, key, valueParts, options, command) => {
|
|
6
7
|
const { api, siteInfo } = command.netlify;
|
|
7
|
-
const { input } = options;
|
|
8
|
+
const { force, input } = options;
|
|
8
9
|
const store = getStore({
|
|
9
10
|
apiURL: `${api.scheme}://${api.host}`,
|
|
10
11
|
name: storeName,
|
|
@@ -30,8 +31,15 @@ export const blobsSet = async (storeName, key, valueParts, options, command) =>
|
|
|
30
31
|
else if (!value) {
|
|
31
32
|
return printError(`You must provide a value as a command-line parameter (e.g. 'netlify blobs:set my-store my-key my value') or specify the path to a file from where the value should be read (e.g. 'netlify blobs:set my-store my-key --input ./my-file.txt')`);
|
|
32
33
|
}
|
|
34
|
+
if (force === undefined) {
|
|
35
|
+
const existingValue = await store.get(key);
|
|
36
|
+
if (existingValue) {
|
|
37
|
+
await promptBlobSetOverwrite(key, storeName);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
33
40
|
try {
|
|
34
41
|
await store.set(key, value);
|
|
42
|
+
log(`${chalk.greenBright('Success')}: Blob ${chalk.yellow(key)} set in store ${chalk.yellow(storeName)}`);
|
|
35
43
|
}
|
|
36
44
|
catch {
|
|
37
45
|
return printError(`Could not set blob ${chalk.yellow(key)} in store ${chalk.yellow(storeName)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C;;GAEG;AAEH,eAAO,MAAM,YAAY;;;;;UAWxB,CAAA;AAED,eAAO,MAAM,KAAK,YAAmB,YAAY,WAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C;;GAEG;AAEH,eAAO,MAAM,YAAY;;;;;UAWxB,CAAA;AAED,eAAO,MAAM,KAAK,YAAmB,YAAY,WAAW,WAAW,kBA8BtE,CAAA"}
|
|
@@ -19,7 +19,6 @@ export const build = async (options, command) => {
|
|
|
19
19
|
const { cachedConfig, siteInfo } = command.netlify;
|
|
20
20
|
command.setAnalyticsPayload({ dry: options.dry });
|
|
21
21
|
// Retrieve Netlify Build options
|
|
22
|
-
// @ts-expect-error TS(2554) FIXME: Expected 1 arguments, but got 0.
|
|
23
22
|
const [token] = await getToken();
|
|
24
23
|
const settings = await detectFrameworkSettings(command, 'build');
|
|
25
24
|
const buildOptions = await getBuildOptions({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/completion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/completion.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAaxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAI5C,eAAO,MAAM,kBAAkB,YAAmB,YAAY,WAAW,WAAW,kBAkDnF,CAAA;AAED,eAAO,MAAM,mBAAmB,YAAmB,YAAY,WAAW,WAAW,kBAQpF,CAAA"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { homedir } from 'os';
|
|
1
3
|
import { dirname, join } from 'path';
|
|
2
4
|
import { fileURLToPath } from 'url';
|
|
5
|
+
import inquirer from 'inquirer';
|
|
3
6
|
// @ts-expect-error TS(7016) FIXME: Could not find a declaration file for module 'tabt... Remove this comment to see the full error message
|
|
4
7
|
import { install, uninstall } from 'tabtab';
|
|
5
8
|
import { generateAutocompletion } from '../../lib/completion/index.js';
|
|
6
|
-
import { error } from '../../utils/command-helpers.js';
|
|
9
|
+
import { error, log, chalk, checkFileForLine, TABTAB_CONFIG_LINE, AUTOLOAD_COMPINIT, } from '../../utils/command-helpers.js';
|
|
7
10
|
const completer = join(dirname(fileURLToPath(import.meta.url)), '../../lib/completion/script.js');
|
|
8
11
|
export const completionGenerate = async (options, command) => {
|
|
9
12
|
const { parent } = command;
|
|
@@ -16,7 +19,37 @@ export const completionGenerate = async (options, command) => {
|
|
|
16
19
|
name: parent.name(),
|
|
17
20
|
completer,
|
|
18
21
|
});
|
|
19
|
-
|
|
22
|
+
const zshConfigFilepath = join(process.env.HOME || homedir(), '.zshrc');
|
|
23
|
+
if (fs.existsSync(zshConfigFilepath) &&
|
|
24
|
+
checkFileForLine(zshConfigFilepath, TABTAB_CONFIG_LINE) &&
|
|
25
|
+
!checkFileForLine(zshConfigFilepath, AUTOLOAD_COMPINIT)) {
|
|
26
|
+
log(`To enable Tabtab autocompletion with zsh, the following line may need to be added to your ~/.zshrc:`);
|
|
27
|
+
log(chalk.bold.cyan(`\n${AUTOLOAD_COMPINIT}\n`));
|
|
28
|
+
const { compinitAdded } = await inquirer.prompt([
|
|
29
|
+
{
|
|
30
|
+
type: 'confirm',
|
|
31
|
+
name: 'compinitAdded',
|
|
32
|
+
message: `Would you like to add it?`,
|
|
33
|
+
default: true,
|
|
34
|
+
},
|
|
35
|
+
]);
|
|
36
|
+
if (compinitAdded) {
|
|
37
|
+
await fs.readFile(zshConfigFilepath, 'utf8', (err, data) => {
|
|
38
|
+
const updatedZshFile = AUTOLOAD_COMPINIT + '\n' + data;
|
|
39
|
+
fs.writeFileSync(zshConfigFilepath, updatedZshFile, 'utf8');
|
|
40
|
+
});
|
|
41
|
+
log('Successfully added compinit line to .zshrc');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
log(`Completion for ${parent.name()} successfully installed!`);
|
|
45
|
+
if (process.platform !== 'win32') {
|
|
46
|
+
log("\nTo ensure proper functionality, you'll need to set appropriate file permissions.");
|
|
47
|
+
log(chalk.bold('Add executable permissions by running the following command:'));
|
|
48
|
+
log(chalk.bold.cyan(`\nchmod +x ${completer}\n`));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
log(`\nTo ensure proper functionality, you may need to set appropriate file permissions to ${completer}.`);
|
|
52
|
+
}
|
|
20
53
|
};
|
|
21
54
|
export const completionUninstall = async (options, command) => {
|
|
22
55
|
if (!command.parent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAkC7C,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAqvB5C,eAAO,MAAM,MAAM,YAAmB,YAAY,WAAW,WAAW,kBAoHvE,CAAA"}
|
|
@@ -40,12 +40,10 @@ const triggerDeploy = async ({ api, options, siteData, siteId }) => {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
catch (error_) {
|
|
43
|
-
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
44
43
|
if (error_.status === 404) {
|
|
45
44
|
error('Site not found. Please rerun "netlify link" and make sure that your site has CI configured.');
|
|
46
45
|
}
|
|
47
46
|
else {
|
|
48
|
-
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
49
47
|
error(error_.message);
|
|
50
48
|
}
|
|
51
49
|
}
|
|
@@ -289,7 +287,8 @@ const uploadDeployBlobs = async ({ cachedConfig, deployId, options, packagePath,
|
|
|
289
287
|
msg: 'Uploading blobs to deploy store...\n',
|
|
290
288
|
phase: 'start',
|
|
291
289
|
});
|
|
292
|
-
const [token] = await getToken(
|
|
290
|
+
const [token] = await getToken();
|
|
291
|
+
const blobsToken = token || undefined;
|
|
293
292
|
const { success } = await runCoreSteps(['blobs_upload'], {
|
|
294
293
|
...options,
|
|
295
294
|
quiet: silent,
|
|
@@ -297,7 +296,7 @@ const uploadDeployBlobs = async ({ cachedConfig, deployId, options, packagePath,
|
|
|
297
296
|
packagePath,
|
|
298
297
|
deployId,
|
|
299
298
|
siteId,
|
|
300
|
-
token,
|
|
299
|
+
token: blobsToken,
|
|
301
300
|
});
|
|
302
301
|
if (!success) {
|
|
303
302
|
statusCb({
|
|
@@ -448,7 +447,6 @@ const handleBuild = async ({ cachedConfig, currentDir, defaultConfig, deployHand
|
|
|
448
447
|
if (!options.build) {
|
|
449
448
|
return {};
|
|
450
449
|
}
|
|
451
|
-
// @ts-expect-error TS(2554) FIXME: Expected 1 arguments, but got 0.
|
|
452
450
|
const [token] = await getToken();
|
|
453
451
|
const resolvedOptions = await getBuildOptions({
|
|
454
452
|
cachedConfig,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy/index.ts"],"names":[],"mappings":"AAIA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,mBAAmB,YAAa,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy/index.ts"],"names":[],"mappings":"AAIA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,mBAAmB,YAAa,WAAW,gBAgIlD,CAAA"}
|
|
@@ -72,10 +72,11 @@ functions/
|
|
|
72
72
|
Support for package.json's main field, and intrinsic index.js entrypoints are coming soon.`)
|
|
73
73
|
.option('-d, --dir <path>', 'Specify a folder to deploy')
|
|
74
74
|
.option('-f, --functions <folder>', 'Specify a functions folder to deploy')
|
|
75
|
-
.
|
|
75
|
+
.addOption(new Option('-p, --prod', 'Deploy to production').default(false).conflicts(['alias', 'branch', 'prodIfUnlocked']))
|
|
76
76
|
.addOption(new Option('--prodIfUnlocked', 'Old, prefer --prod-if-unlocked. Deploy to production if unlocked, create a draft otherwise')
|
|
77
77
|
.default(false)
|
|
78
|
-
.hideHelp(true)
|
|
78
|
+
.hideHelp(true)
|
|
79
|
+
.conflicts(['alias', 'branch', 'prod']))
|
|
79
80
|
.option('--prod-if-unlocked', 'Deploy to production if unlocked, create a draft otherwise', false)
|
|
80
81
|
.option('--alias <name>', 'Specifies the alias for deployment, the string at the beginning of the deploy subdomain. Useful for creating predictable deployment URLs. Avoid setting an alias string to the same value as a deployed branch. `alias` doesn’t create a branch deploy and can’t be used in conjunction with the branch subdomain feature. Maximum 37 characters.')
|
|
81
82
|
.option('-b, --branch <name>', 'Serves the same functionality as --alias. Deprecated and will be removed in future versions')
|
|
@@ -85,7 +86,7 @@ Support for package.json's main field, and intrinsic index.js entrypoints are co
|
|
|
85
86
|
.option('-s, --site <name-or-id>', 'A site name or ID to deploy to', env.NETLIFY_SITE_ID)
|
|
86
87
|
.option('--json', 'Output deployment data as JSON')
|
|
87
88
|
.option('--timeout <number>', 'Timeout to wait for deployment to finish', (value) => Number.parseInt(value))
|
|
88
|
-
.
|
|
89
|
+
.addOption(new Option('--trigger', 'Trigger a new build of your site on Netlify without uploading local files').conflicts('build'))
|
|
89
90
|
.option('--build', 'Run build command before deploying')
|
|
90
91
|
.option('--context <context>', 'Context to use when resolving build configuration')
|
|
91
92
|
.option('--skip-functions-cache', 'Ignore any functions created as part of a previous `build` or `deploy` commands, forcing them to be bundled again as part of the deployment', false)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-clone.d.ts","sourceRoot":"","sources":["../../../src/commands/env/env-clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"env-clone.d.ts","sourceRoot":"","sources":["../../../src/commands/env/env-clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAqD5C,eAAO,MAAM,QAAQ,YAAmB,YAAY,WAAW,WAAW,qBAgDzE,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { chalk, log, error as logError } from '../../utils/command-helpers.js';
|
|
2
|
+
import { promptEnvCloneOverwrite } from '../../utils/prompts/env-clone-prompt.js';
|
|
2
3
|
// @ts-expect-error TS(7006) FIXME: Parameter 'api' implicitly has an 'any' type.
|
|
3
4
|
const safeGetSite = async (api, siteId) => {
|
|
4
5
|
try {
|
|
@@ -14,7 +15,7 @@ const safeGetSite = async (api, siteId) => {
|
|
|
14
15
|
* @returns {Promise<boolean>}
|
|
15
16
|
*/
|
|
16
17
|
// @ts-expect-error TS(7031) FIXME: Binding element 'api' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
17
|
-
const cloneEnvVars = async ({ api, siteFrom, siteTo }) => {
|
|
18
|
+
const cloneEnvVars = async ({ api, force, siteFrom, siteTo }) => {
|
|
18
19
|
const [envelopeFrom, envelopeTo] = await Promise.all([
|
|
19
20
|
api.getEnvVars({ accountId: siteFrom.account_slug, siteId: siteFrom.id }),
|
|
20
21
|
api.getEnvVars({ accountId: siteTo.account_slug, siteId: siteTo.id }),
|
|
@@ -29,6 +30,9 @@ const cloneEnvVars = async ({ api, siteFrom, siteTo }) => {
|
|
|
29
30
|
const siteId = siteTo.id;
|
|
30
31
|
// @ts-expect-error TS(7031) FIXME: Binding element 'key' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
31
32
|
const envVarsToDelete = envelopeTo.filter(({ key }) => keysFrom.includes(key));
|
|
33
|
+
if (envVarsToDelete.length !== 0 && Boolean(force) === false) {
|
|
34
|
+
await promptEnvCloneOverwrite(siteTo.id, envVarsToDelete);
|
|
35
|
+
}
|
|
32
36
|
// delete marked env vars in parallel
|
|
33
37
|
// @ts-expect-error TS(7031) FIXME: Binding element 'key' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
34
38
|
await Promise.all(envVarsToDelete.map(({ key }) => api.deleteEnvVar({ accountId, siteId, key })));
|
|
@@ -44,12 +48,17 @@ const cloneEnvVars = async ({ api, siteFrom, siteTo }) => {
|
|
|
44
48
|
};
|
|
45
49
|
export const envClone = async (options, command) => {
|
|
46
50
|
const { api, site } = command.netlify;
|
|
51
|
+
const { force } = options;
|
|
47
52
|
if (!site.id && !options.from) {
|
|
48
53
|
log('Please include the source site Id as the `--from` option, or run `netlify link` to link this folder to a Netlify site');
|
|
49
54
|
return false;
|
|
50
55
|
}
|
|
56
|
+
const sourceId = options.from || site.id;
|
|
57
|
+
if (!sourceId) {
|
|
58
|
+
log('Please include the source site Id as the `--from` option, or run `netlify link` to link this folder to a Netlify site');
|
|
59
|
+
}
|
|
51
60
|
const siteId = {
|
|
52
|
-
from:
|
|
61
|
+
from: sourceId,
|
|
53
62
|
to: options.to,
|
|
54
63
|
};
|
|
55
64
|
const [{ data: siteFrom, error: errorFrom }, { data: siteTo, error: errorTo }] = await Promise.all([
|
|
@@ -64,7 +73,7 @@ export const envClone = async (options, command) => {
|
|
|
64
73
|
logError(`Can't find site with id ${chalk.bold(siteId.to)}. Please make sure the site exists.`);
|
|
65
74
|
return false;
|
|
66
75
|
}
|
|
67
|
-
const success = await cloneEnvVars({ api, siteFrom, siteTo });
|
|
76
|
+
const success = await cloneEnvVars({ api, siteFrom, siteTo, force });
|
|
68
77
|
if (!success) {
|
|
69
78
|
return false;
|
|
70
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-set.d.ts","sourceRoot":"","sources":["../../../src/commands/env/env-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"env-set.d.ts","sourceRoot":"","sources":["../../../src/commands/env/env-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AA6G5C,eAAO,MAAM,MAAM,QAAe,MAAM,SAAS,MAAM,WAAW,YAAY,WAAW,WAAW,+BA+BnG,CAAA"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { chalk, error, log, logJson } from '../../utils/command-helpers.js';
|
|
2
2
|
import { AVAILABLE_CONTEXTS, AVAILABLE_SCOPES, translateFromEnvelopeToMongo } from '../../utils/env/index.js';
|
|
3
|
+
import { promptOverwriteEnvVariable } from '../../utils/prompts/env-set-prompts.js';
|
|
3
4
|
/**
|
|
4
5
|
* Updates the env for a site configured with Envelope with a new key/value pair
|
|
5
6
|
* @returns {Promise<object | boolean>}
|
|
6
7
|
*/
|
|
7
8
|
// @ts-expect-error TS(7031) FIXME: Binding element 'api' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
8
|
-
const setInEnvelope = async ({ api, context, key, scope, secret, siteInfo, value }) => {
|
|
9
|
+
const setInEnvelope = async ({ api, context, force, key, scope, secret, siteInfo, value }) => {
|
|
9
10
|
const accountId = siteInfo.account_slug;
|
|
10
11
|
const siteId = siteInfo.id;
|
|
11
12
|
// secret values may not be used in the post-processing scope
|
|
@@ -33,6 +34,10 @@ const setInEnvelope = async ({ api, context, key, scope, secret, siteInfo, value
|
|
|
33
34
|
let values = contexts.map((ctx) => AVAILABLE_CONTEXTS.includes(ctx) ? { context: ctx, value } : { context: 'branch', context_parameter: ctx, value });
|
|
34
35
|
// @ts-expect-error TS(7006) FIXME: Parameter 'envVar' implicitly has an 'any' type.
|
|
35
36
|
const existing = envelopeVariables.find((envVar) => envVar.key === key);
|
|
37
|
+
// Checks if --force is passed and if it is an existing variaible, then we need to prompt the user
|
|
38
|
+
if (Boolean(force) === false && existing) {
|
|
39
|
+
await promptOverwriteEnvVariable(key);
|
|
40
|
+
}
|
|
36
41
|
const params = { accountId, siteId, key };
|
|
37
42
|
try {
|
|
38
43
|
if (existing) {
|
|
@@ -92,7 +97,7 @@ const setInEnvelope = async ({ api, context, key, scope, secret, siteInfo, value
|
|
|
92
97
|
};
|
|
93
98
|
};
|
|
94
99
|
export const envSet = async (key, value, options, command) => {
|
|
95
|
-
const { context, scope, secret } = options;
|
|
100
|
+
const { context, force, scope, secret } = options;
|
|
96
101
|
const { api, cachedConfig, site } = command.netlify;
|
|
97
102
|
const siteId = site.id;
|
|
98
103
|
if (!siteId) {
|
|
@@ -101,7 +106,7 @@ export const envSet = async (key, value, options, command) => {
|
|
|
101
106
|
}
|
|
102
107
|
const { siteInfo } = cachedConfig;
|
|
103
108
|
// Get current environment variables set in the UI
|
|
104
|
-
const finalEnv = await setInEnvelope({ api, siteInfo, key, value, context, scope, secret });
|
|
109
|
+
const finalEnv = await setInEnvelope({ api, siteInfo, force, key, value, context, scope, secret });
|
|
105
110
|
if (!finalEnv) {
|
|
106
111
|
return false;
|
|
107
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-unset.d.ts","sourceRoot":"","sources":["../../../src/commands/env/env-unset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"env-unset.d.ts","sourceRoot":"","sources":["../../../src/commands/env/env-unset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAgE5C,eAAO,MAAM,QAAQ,QAAe,MAAM,WAAW,YAAY,WAAW,WAAW,+BAsBtF,CAAA"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { chalk, log, logJson } from '../../utils/command-helpers.js';
|
|
2
2
|
import { AVAILABLE_CONTEXTS, translateFromEnvelopeToMongo } from '../../utils/env/index.js';
|
|
3
|
+
import { promptOverwriteEnvVariable } from '../../utils/prompts/env-unset-prompts.js';
|
|
3
4
|
/**
|
|
4
5
|
* Deletes a given key from the env of a site configured with Envelope
|
|
5
6
|
* @returns {Promise<object>}
|
|
6
7
|
*/
|
|
7
8
|
// @ts-expect-error TS(7031) FIXME: Binding element 'api' implicitly has an 'any' type... Remove this comment to see the full error message
|
|
8
|
-
const unsetInEnvelope = async ({ api, context, key, siteInfo }) => {
|
|
9
|
+
const unsetInEnvelope = async ({ api, context, force, key, siteInfo }) => {
|
|
9
10
|
const accountId = siteInfo.account_slug;
|
|
10
11
|
const siteId = siteInfo.id;
|
|
11
12
|
// fetch envelope env vars
|
|
@@ -19,6 +20,9 @@ const unsetInEnvelope = async ({ api, context, key, siteInfo }) => {
|
|
|
19
20
|
// if not, no need to call delete; return early
|
|
20
21
|
return env;
|
|
21
22
|
}
|
|
23
|
+
if (Boolean(force) === false) {
|
|
24
|
+
await promptOverwriteEnvVariable(key);
|
|
25
|
+
}
|
|
22
26
|
const params = { accountId, siteId, key };
|
|
23
27
|
try {
|
|
24
28
|
if (context) {
|
|
@@ -52,7 +56,7 @@ const unsetInEnvelope = async ({ api, context, key, siteInfo }) => {
|
|
|
52
56
|
return env;
|
|
53
57
|
};
|
|
54
58
|
export const envUnset = async (key, options, command) => {
|
|
55
|
-
const { context } = options;
|
|
59
|
+
const { context, force } = options;
|
|
56
60
|
const { api, cachedConfig, site } = command.netlify;
|
|
57
61
|
const siteId = site.id;
|
|
58
62
|
if (!siteId) {
|
|
@@ -60,7 +64,7 @@ export const envUnset = async (key, options, command) => {
|
|
|
60
64
|
return false;
|
|
61
65
|
}
|
|
62
66
|
const { siteInfo } = cachedConfig;
|
|
63
|
-
const finalEnv = await unsetInEnvelope({ api, context, siteInfo, key });
|
|
67
|
+
const finalEnv = await unsetInEnvelope({ api, context, force, siteInfo, key });
|
|
64
68
|
// Return new environment variables of site if using json flag
|
|
65
69
|
if (options.json) {
|
|
66
70
|
logJson(finalEnv);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions-create.d.ts","sourceRoot":"","sources":["../../../src/commands/functions/functions-create.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"functions-create.d.ts","sourceRoot":"","sources":["../../../src/commands/functions/functions-create.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAsBxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAotB5C,eAAO,MAAM,eAAe,SAAgB,MAAM,WAAW,YAAY,WAAW,WAAW,kBAQ9F,CAAA"}
|
|
@@ -12,7 +12,7 @@ import fetch from 'node-fetch';
|
|
|
12
12
|
import ora from 'ora';
|
|
13
13
|
import { fileExistsAsync } from '../../lib/fs.js';
|
|
14
14
|
import { getAddons, getCurrentAddon, getSiteData } from '../../utils/addons/prepare.js';
|
|
15
|
-
import { NETLIFYDEVERR, NETLIFYDEVLOG, NETLIFYDEVWARN, chalk, error, log } from '../../utils/command-helpers.js';
|
|
15
|
+
import { NETLIFYDEVERR, NETLIFYDEVLOG, NETLIFYDEVWARN, chalk, error, log, } from '../../utils/command-helpers.js';
|
|
16
16
|
import { copyTemplateDir } from '../../utils/copy-template-dir/copy-template-dir.js';
|
|
17
17
|
import { getDotEnvVariables, injectEnvVariables } from '../../utils/dev.js';
|
|
18
18
|
import execa from '../../utils/execa.js';
|
|
@@ -410,7 +410,6 @@ const scaffoldFromTemplate = async function (command, options, argumentName, fun
|
|
|
410
410
|
}
|
|
411
411
|
catch (error_) {
|
|
412
412
|
error(`$${NETLIFYDEVERR} Error downloading from URL: ${options.url}`);
|
|
413
|
-
// @ts-expect-error TS(2345) FIXME: Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message
|
|
414
413
|
error(error_);
|
|
415
414
|
process.exit(1);
|
|
416
415
|
}
|
|
@@ -484,7 +483,6 @@ const createFunctionAddon = async function ({ addonName, addons, api, siteData,
|
|
|
484
483
|
return true;
|
|
485
484
|
}
|
|
486
485
|
catch (error_) {
|
|
487
|
-
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
488
486
|
error(error_.message);
|
|
489
487
|
}
|
|
490
488
|
};
|
|
@@ -573,8 +571,7 @@ const installAddons = async function (command, functionAddons, fnPath) {
|
|
|
573
571
|
await handleAddonDidInstall({ addonCreated, addonDidInstall, command, fnPath });
|
|
574
572
|
}
|
|
575
573
|
catch (error_) {
|
|
576
|
-
|
|
577
|
-
error(`${NETLIFYDEVERR} Error installing addon: `, error_);
|
|
574
|
+
error(`${NETLIFYDEVERR} Error installing addon: ${error_}`);
|
|
578
575
|
}
|
|
579
576
|
});
|
|
580
577
|
return Promise.all(arr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions-invoke.d.ts","sourceRoot":"","sources":["../../../src/commands/functions/functions-invoke.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAwI5C,eAAO,MAAM,eAAe,iBAAwB,MAAM,WAAW,YAAY,WAAW,WAAW,
|
|
1
|
+
{"version":3,"file":"functions-invoke.d.ts","sourceRoot":"","sources":["../../../src/commands/functions/functions-invoke.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAwI5C,eAAO,MAAM,eAAe,iBAAwB,MAAM,WAAW,YAAY,WAAW,WAAW,kBA4FtG,CAAA"}
|
|
@@ -204,7 +204,6 @@ export const functionsInvoke = async (nameArgument, options, command) => {
|
|
|
204
204
|
console.log(data);
|
|
205
205
|
}
|
|
206
206
|
catch (error_) {
|
|
207
|
-
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'.
|
|
208
207
|
error(`Ran into an error invoking your function: ${error_.message}`);
|
|
209
208
|
}
|
|
210
209
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,iBAAiB,YAAa,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,iBAAiB,YAAa,WAAW,gBAiBhD,CAAA"}
|
|
@@ -3,7 +3,6 @@ export const createInitCommand = (program) => program
|
|
|
3
3
|
.command('init')
|
|
4
4
|
.description('Configure continuous deployment for a new or existing site. To create a new site without continuous deployment, use `netlify sites:create`')
|
|
5
5
|
.option('-m, --manual', 'Manually configure a git remote for CI')
|
|
6
|
-
.option('--force', 'Reinitialize CI hooks if the linked site is already configured to use CI')
|
|
7
6
|
.addOption(new Option('--gitRemoteName <name>', 'Old, prefer --git-remote-name. Name of Git remote to use. e.g. "origin"').hideHelp(true))
|
|
8
7
|
.option('--git-remote-name <name>', 'Name of Git remote to use. e.g. "origin"')
|
|
9
8
|
.action(async (options, command) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/integration/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/integration/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAUxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAS5C,wBAAgB,cAAc,CAAC,WAAW,KAAA,EAAE,YAAY,KAAA,OAOvD;AAuFD,wBAAsB,mBAAmB,CAAC,UAAU,KAAA,EAAE,MAAM,KAAA,EAAE,SAAS,KAAA,EAAE,sBAAsB,KAAA,EAAE,KAAK,KAAA,iBAyErG;AAED,wBAAsB,iBAAiB,CAErC,UAAU,KAAA,EAEV,OAAO,KAAA,EAEP,MAAM,KAAA,EAEN,SAAS,KAAA,EAET,sBAAsB,KAAA,EAEtB,KAAK,KAAA,EAEL,qBAAqB,KAAA,iBAsHtB;AA2BD,eAAO,MAAM,gBAAgB,0BA6B5B,CAAA;AAED,eAAO,MAAM,MAAM,YAAmB,YAAY,WAAW,WAAW,kBAgEvE,CAAA"}
|