firebase-tools 10.9.2 → 11.1.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 +15 -9
- package/lib/accountImporter.js +92 -93
- package/lib/api.js +77 -218
- package/lib/apiv2.js +5 -4
- package/lib/appdistribution/client.js +16 -25
- package/lib/auth.js +69 -47
- package/lib/bin/firebase.js +42 -47
- package/lib/checkValidTargetFilters.js +13 -12
- package/lib/commands/appdistribution-distribute.js +2 -1
- package/lib/commands/appdistribution-testers-add.js +2 -1
- package/lib/commands/appdistribution-testers-remove.js +2 -1
- package/lib/commands/apps-android-sha-create.js +2 -1
- package/lib/commands/apps-android-sha-delete.js +2 -1
- package/lib/commands/apps-android-sha-list.js +2 -1
- package/lib/commands/apps-create.js +2 -1
- package/lib/commands/apps-list.js +2 -1
- package/lib/commands/apps-sdkconfig.js +8 -3
- package/lib/commands/auth-export.js +2 -1
- package/lib/commands/auth-import.js +7 -10
- package/lib/commands/crashlytics-symbols-upload.js +2 -1
- package/lib/commands/database-get.js +4 -3
- package/lib/commands/database-instances-create.js +2 -1
- package/lib/commands/database-instances-list.js +3 -3
- package/lib/commands/database-profile.js +2 -1
- package/lib/commands/database-push.js +2 -1
- package/lib/commands/database-remove.js +2 -1
- package/lib/commands/database-rules-canary.js +2 -1
- package/lib/commands/database-rules-get.js +2 -1
- package/lib/commands/database-rules-list.js +2 -1
- package/lib/commands/database-rules-release.js +2 -1
- package/lib/commands/database-rules-stage.js +2 -1
- package/lib/commands/database-set.js +2 -1
- package/lib/commands/database-settings-get.js +2 -1
- package/lib/commands/database-settings-set.js +2 -1
- package/lib/commands/database-update.js +2 -1
- package/lib/commands/deploy.js +23 -21
- package/lib/commands/emulators-exec.js +2 -1
- package/lib/commands/emulators-export.js +2 -1
- package/lib/commands/emulators-start.js +2 -1
- package/lib/commands/experimental-functions-shell.js +10 -8
- package/lib/commands/ext-configure.js +56 -120
- package/lib/commands/ext-dev-deprecate.js +2 -1
- package/lib/commands/ext-dev-emulators-exec.js +13 -7
- package/lib/commands/ext-dev-emulators-start.js +12 -27
- package/lib/commands/ext-dev-extension-delete.js +2 -1
- package/lib/commands/ext-dev-init.js +2 -1
- package/lib/commands/ext-dev-list.js +2 -1
- package/lib/commands/ext-dev-publish.js +2 -1
- package/lib/commands/ext-dev-register.js +2 -1
- package/lib/commands/ext-dev-undeprecate.js +2 -1
- package/lib/commands/ext-dev-unpublish.js +2 -1
- package/lib/commands/ext-dev-usage.js +2 -1
- package/lib/commands/ext-export.js +2 -1
- package/lib/commands/ext-info.js +2 -1
- package/lib/commands/ext-install.js +14 -198
- package/lib/commands/ext-list.js +2 -1
- package/lib/commands/ext-sources-create.js +2 -1
- package/lib/commands/ext-uninstall.js +9 -92
- package/lib/commands/ext-update.js +67 -225
- package/lib/commands/ext.js +2 -1
- package/lib/commands/firestore-delete.js +2 -1
- package/lib/commands/firestore-indexes-list.js +2 -1
- package/lib/commands/functions-config-clone.js +4 -3
- package/lib/commands/functions-config-export.js +2 -1
- package/lib/commands/functions-config-get.js +2 -1
- package/lib/commands/functions-config-set.js +2 -1
- package/lib/commands/functions-config-unset.js +2 -1
- package/lib/commands/functions-delete.js +2 -1
- package/lib/commands/functions-deletegcfartifacts.js +2 -1
- package/lib/commands/functions-list.js +2 -1
- package/lib/commands/functions-log.js +2 -1
- package/lib/commands/functions-secrets-access.js +2 -1
- package/lib/commands/functions-secrets-destroy.js +2 -1
- package/lib/commands/functions-secrets-get.js +2 -1
- package/lib/commands/functions-secrets-prune.js +2 -1
- package/lib/commands/functions-secrets-set.js +2 -1
- package/lib/commands/functions-shell.js +12 -10
- package/lib/commands/help.js +2 -1
- package/lib/commands/hosting-channel-create.js +2 -1
- package/lib/commands/hosting-channel-delete.js +2 -1
- package/lib/commands/hosting-channel-deploy.js +2 -1
- package/lib/commands/hosting-channel-list.js +2 -1
- package/lib/commands/hosting-channel-open.js +2 -1
- package/lib/commands/hosting-clone.js +2 -1
- package/lib/commands/hosting-disable.js +2 -1
- package/lib/commands/hosting-sites-create.js +2 -1
- package/lib/commands/hosting-sites-delete.js +2 -1
- package/lib/commands/hosting-sites-get.js +2 -1
- package/lib/commands/hosting-sites-list.js +2 -1
- package/lib/commands/index.js +23 -13
- package/lib/commands/init.js +47 -43
- package/lib/commands/login-add.js +2 -1
- package/lib/commands/login-ci.js +2 -1
- package/lib/commands/login-list.js +2 -1
- package/lib/commands/login-use.js +2 -1
- package/lib/commands/login.js +2 -1
- package/lib/commands/logout.js +2 -1
- package/lib/commands/open.js +2 -1
- package/lib/commands/projects-addfirebase.js +2 -1
- package/lib/commands/projects-create.js +2 -1
- package/lib/commands/projects-list.js +2 -1
- package/lib/commands/remoteconfig-get.js +2 -1
- package/lib/commands/remoteconfig-rollback.js +2 -1
- package/lib/commands/remoteconfig-versions-list.js +2 -1
- package/lib/commands/serve.js +29 -27
- package/lib/commands/setup-emulators-database.js +2 -1
- package/lib/commands/setup-emulators-firestore.js +2 -1
- package/lib/commands/setup-emulators-pubsub.js +2 -1
- package/lib/commands/setup-emulators-storage.js +2 -1
- package/lib/commands/setup-emulators-ui.js +2 -1
- package/lib/commands/target-apply.js +2 -1
- package/lib/commands/target-clear.js +2 -1
- package/lib/commands/target-remove.js +2 -1
- package/lib/commands/target.js +2 -1
- package/lib/commands/use.js +54 -52
- package/lib/config.js +3 -3
- package/lib/deploy/database/deploy.js +3 -2
- package/lib/deploy/database/index.js +8 -5
- package/lib/deploy/database/prepare.js +22 -19
- package/lib/deploy/database/release.js +12 -9
- package/lib/deploy/firestore/prepare.js +2 -2
- package/lib/deploy/functions/build.js +32 -20
- package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +187 -54
- package/lib/deploy/functions/runtimes/node/parseTriggers.js +14 -2
- package/lib/deploy/functions/services/database.js +14 -0
- package/lib/deploy/functions/services/index.js +14 -0
- package/lib/deploy/index.js +3 -3
- package/lib/deploy/lifecycleHooks.js +23 -20
- package/lib/deploy/remoteconfig/functions.js +18 -14
- package/lib/deploy/remoteconfig/prepare.js +2 -2
- package/lib/emulator/auth/apiSpec.js +14 -46
- package/lib/emulator/auth/operations.js +6 -29
- package/lib/emulator/auth/state.js +2 -25
- package/lib/emulator/commandUtils.js +1 -1
- package/lib/emulator/controller.js +3 -3
- package/lib/emulator/databaseEmulator.js +9 -7
- package/lib/emulator/downloadableEmulators.js +6 -6
- package/lib/emulator/extensionsEmulator.js +7 -3
- package/lib/emulator/firestoreEmulator.js +10 -12
- package/lib/emulator/functionsEmulator.js +39 -42
- package/lib/emulator/hubClient.js +11 -22
- package/lib/emulator/hubExport.js +26 -16
- package/lib/emulator/portUtils.js +2 -0
- package/lib/emulator/storage/crc.js +3 -0
- package/lib/emulator/storage/rules/runtime.js +1 -1
- package/lib/errorOut.js +2 -2
- package/lib/extensions/extensionsHelper.js +4 -5
- package/lib/extensions/manifest.js +5 -11
- package/lib/firebaseConfigValidate.js +1 -1
- package/lib/firestore/checkDatabaseType.js +4 -5
- package/lib/firestore/indexes.js +17 -34
- package/lib/functions/events/v2.js +7 -1
- package/lib/functionsConfigClone.js +43 -41
- package/lib/gcp/cloudfunctionsv2.js +17 -2
- package/lib/gcp/iam.js +1 -1
- package/lib/gcp/index.js +10 -10
- package/lib/gcp/runtimeconfig.js +45 -47
- package/lib/gcp/storage.js +2 -4
- package/lib/hosting/cloudRunProxy.js +19 -15
- package/lib/index.js +29 -28
- package/lib/init/features/database.js +11 -5
- package/lib/init/features/functions/index.js +1 -1
- package/lib/init/features/functions/javascript.js +23 -20
- package/lib/init/features/functions/npm-dependencies.js +17 -14
- package/lib/init/features/functions/typescript.js +27 -24
- package/lib/init/features/hosting/github.js +5 -4
- package/lib/loadCJSON.js +9 -6
- package/lib/logError.js +15 -12
- package/lib/management/apps.js +47 -43
- package/lib/management/database.js +33 -31
- package/lib/management/projects.js +13 -7
- package/lib/parseBoltRules.js +15 -14
- package/lib/profileReport.js +503 -511
- package/lib/profiler.js +4 -4
- package/lib/requireAuth.js +0 -1
- package/lib/responseToError.js +8 -5
- package/lib/rtdb.js +31 -29
- package/lib/scopes.js +9 -9
- package/npm-shrinkwrap.json +1485 -670
- package/package.json +21 -22
- package/standalone/package.json +1 -1
package/lib/commands/help.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const clc = require("cli-color");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const logger_1 = require("../logger");
|
|
6
7
|
const utils = require("../utils");
|
|
7
|
-
exports.
|
|
8
|
+
exports.command = new command_1.Command("help [command]")
|
|
8
9
|
.description("display help information")
|
|
9
10
|
.action(function (commandName) {
|
|
10
11
|
const client = this.client;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const api_1 = require("../hosting/api");
|
|
5
6
|
const command_1 = require("../command");
|
|
@@ -14,7 +15,7 @@ const requireConfig_1 = require("../requireConfig");
|
|
|
14
15
|
const { marked } = require("marked");
|
|
15
16
|
const requireHostingSite_1 = require("../requireHostingSite");
|
|
16
17
|
const LOG_TAG = "hosting:channel";
|
|
17
|
-
exports.
|
|
18
|
+
exports.command = new command_1.Command("hosting:channel:create [channelId]")
|
|
18
19
|
.description("create a Firebase Hosting channel")
|
|
19
20
|
.option("-e, --expires <duration>", "duration string (e.g. 12h or 30d) for channel expiration, max 30d")
|
|
20
21
|
.option("--site <siteId>", "site for which to create the channel")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const { marked } = require("marked");
|
|
5
6
|
const command_1 = require("../command");
|
|
@@ -11,7 +12,7 @@ const requirePermissions_1 = require("../requirePermissions");
|
|
|
11
12
|
const projectUtils_1 = require("../projectUtils");
|
|
12
13
|
const requireConfig_1 = require("../requireConfig");
|
|
13
14
|
const logger_1 = require("../logger");
|
|
14
|
-
exports.
|
|
15
|
+
exports.command = new command_1.Command("hosting:channel:delete <channelId>")
|
|
15
16
|
.description("delete a Firebase Hosting channel")
|
|
16
17
|
.withForce()
|
|
17
18
|
.option("--site <siteId>", "site in which the channel exists")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const error_1 = require("../error");
|
|
@@ -15,7 +16,7 @@ const utils_1 = require("../utils");
|
|
|
15
16
|
const { marked } = require("marked");
|
|
16
17
|
const requireHostingSite_1 = require("../requireHostingSite");
|
|
17
18
|
const LOG_TAG = "hosting:channel";
|
|
18
|
-
exports.
|
|
19
|
+
exports.command = new command_1.Command("hosting:channel:deploy [channelId]")
|
|
19
20
|
.description("deploy to a specific Firebase Hosting channel")
|
|
20
21
|
.option("-e, --expires <duration>", "duration string (e.g. 12h, 30d) for channel expiration, max 30d; defaults to 7d")
|
|
21
22
|
.option("--only <target1,target2...>", "only create previews for specified targets")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const Table = require("cli-table");
|
|
5
6
|
const api_1 = require("../hosting/api");
|
|
@@ -11,7 +12,7 @@ const requireConfig_1 = require("../requireConfig");
|
|
|
11
12
|
const utils_1 = require("../utils");
|
|
12
13
|
const requireHostingSite_1 = require("../requireHostingSite");
|
|
13
14
|
const TABLE_HEAD = ["Channel ID", "Last Release Time", "URL", "Expire Time"];
|
|
14
|
-
exports.
|
|
15
|
+
exports.command = new command_1.Command("hosting:channel:list")
|
|
15
16
|
.description("list all Firebase Hosting channels for your project")
|
|
16
17
|
.option("--site <siteName>", "list channels for the specified site")
|
|
17
18
|
.before(requireConfig_1.requireConfig)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const lodash_1 = require("lodash");
|
|
4
5
|
const cli_color_1 = require("cli-color");
|
|
5
6
|
const open = require("open");
|
|
@@ -12,7 +13,7 @@ const requireConfig_1 = require("../requireConfig");
|
|
|
12
13
|
const utils_1 = require("../utils");
|
|
13
14
|
const prompt_1 = require("../prompt");
|
|
14
15
|
const requireHostingSite_1 = require("../requireHostingSite");
|
|
15
|
-
exports.
|
|
16
|
+
exports.command = new command_1.Command("hosting:channel:open [channelId]")
|
|
16
17
|
.description("opens the URL for a Firebase Hosting channel")
|
|
17
18
|
.help("if unable to open the URL in a browser, it will be displayed in the output")
|
|
18
19
|
.option("--site <siteId>", "the site to which the channel belongs")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const ora = require("ora");
|
|
5
6
|
const command_1 = require("../command");
|
|
@@ -9,7 +10,7 @@ const utils = require("../utils");
|
|
|
9
10
|
const requireAuth_1 = require("../requireAuth");
|
|
10
11
|
const { marked } = require("marked");
|
|
11
12
|
const logger_1 = require("../logger");
|
|
12
|
-
exports.
|
|
13
|
+
exports.command = new command_1.Command("hosting:clone <source> <targetChannel>")
|
|
13
14
|
.description("clone a version from one site to another")
|
|
14
15
|
.before(requireAuth_1.requireAuth)
|
|
15
16
|
.action(async (source = "", targetChannel = "") => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const clc = require("cli-color");
|
|
4
5
|
const apiv2_1 = require("../apiv2");
|
|
5
6
|
const command_1 = require("../command");
|
|
@@ -8,7 +9,7 @@ const prompt_1 = require("../prompt");
|
|
|
8
9
|
const requireHostingSite_1 = require("../requireHostingSite");
|
|
9
10
|
const requirePermissions_1 = require("../requirePermissions");
|
|
10
11
|
const utils = require("../utils");
|
|
11
|
-
exports.
|
|
12
|
+
exports.command = new command_1.Command("hosting:disable")
|
|
12
13
|
.description("stop serving web traffic to your Firebase Hosting site")
|
|
13
14
|
.option("-f, --force", "skip confirmation")
|
|
14
15
|
.option("-s, --site <siteName>", "the site to disable")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const utils_1 = require("../utils");
|
|
5
6
|
const command_1 = require("../command");
|
|
@@ -10,7 +11,7 @@ const requirePermissions_1 = require("../requirePermissions");
|
|
|
10
11
|
const projectUtils_1 = require("../projectUtils");
|
|
11
12
|
const logger_1 = require("../logger");
|
|
12
13
|
const LOG_TAG = "hosting:sites";
|
|
13
|
-
exports.
|
|
14
|
+
exports.command = new command_1.Command("hosting:sites:create [siteId]")
|
|
14
15
|
.description("create a Firebase Hosting site")
|
|
15
16
|
.option("--app <appId>", "specify an existing Firebase Web App ID")
|
|
16
17
|
.before(requirePermissions_1.requirePermissions, ["firebasehosting.sites.update"])
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const utils_1 = require("../utils");
|
|
@@ -11,7 +12,7 @@ const projectUtils_1 = require("../projectUtils");
|
|
|
11
12
|
const requireConfig_1 = require("../requireConfig");
|
|
12
13
|
const logger_1 = require("../logger");
|
|
13
14
|
const LOG_TAG = "hosting:sites";
|
|
14
|
-
exports.
|
|
15
|
+
exports.command = new command_1.Command("hosting:sites:delete <siteId>")
|
|
15
16
|
.description("delete a Firebase Hosting site")
|
|
16
17
|
.withForce()
|
|
17
18
|
.before(requireConfig_1.requireConfig)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const Table = require("cli-table");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const api_1 = require("../hosting/api");
|
|
@@ -7,7 +8,7 @@ const requirePermissions_1 = require("../requirePermissions");
|
|
|
7
8
|
const projectUtils_1 = require("../projectUtils");
|
|
8
9
|
const logger_1 = require("../logger");
|
|
9
10
|
const error_1 = require("../error");
|
|
10
|
-
exports.
|
|
11
|
+
exports.command = new command_1.Command("hosting:sites:get <siteId>")
|
|
11
12
|
.description("print info about a Firebase Hosting site")
|
|
12
13
|
.before(requirePermissions_1.requirePermissions, ["firebasehosting.sites.get"])
|
|
13
14
|
.action(async (siteId, options) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const cli_color_1 = require("cli-color");
|
|
4
5
|
const Table = require("cli-table");
|
|
5
6
|
const command_1 = require("../command");
|
|
@@ -8,7 +9,7 @@ const requirePermissions_1 = require("../requirePermissions");
|
|
|
8
9
|
const projectUtils_1 = require("../projectUtils");
|
|
9
10
|
const logger_1 = require("../logger");
|
|
10
11
|
const TABLE_HEAD = ["Site ID", "Default URL", "App ID (if set)"];
|
|
11
|
-
exports.
|
|
12
|
+
exports.command = new command_1.Command("hosting:sites:list")
|
|
12
13
|
.description("list Firebase Hosting sites")
|
|
13
14
|
.before(requirePermissions_1.requirePermissions, ["firebasehosting.sites.get"])
|
|
14
15
|
.action(async (options) => {
|
package/lib/commands/index.js
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.load = void 0;
|
|
4
|
+
const previews_1 = require("../previews");
|
|
5
|
+
function load(client) {
|
|
6
|
+
function loadCommand(name) {
|
|
7
|
+
const t0 = process.hrtime.bigint();
|
|
8
|
+
const { command: cmd } = require(`./${name}`);
|
|
9
9
|
cmd.register(client);
|
|
10
|
+
const t1 = process.hrtime.bigint();
|
|
11
|
+
const diffMS = (t1 - t0) / BigInt(1e6);
|
|
12
|
+
if (diffMS > 75) {
|
|
13
|
+
}
|
|
10
14
|
return cmd.runner();
|
|
11
|
-
}
|
|
15
|
+
}
|
|
16
|
+
const t0 = process.hrtime.bigint();
|
|
12
17
|
client.appdistribution = {};
|
|
13
18
|
client.appdistribution.distribute = loadCommand("appdistribution-distribute");
|
|
14
19
|
client.appdistribution.testers = {};
|
|
@@ -37,7 +42,7 @@ module.exports = function (client) {
|
|
|
37
42
|
client.database.profile = loadCommand("database-profile");
|
|
38
43
|
client.database.push = loadCommand("database-push");
|
|
39
44
|
client.database.remove = loadCommand("database-remove");
|
|
40
|
-
if (previews.rtdbrules) {
|
|
45
|
+
if (previews_1.previews.rtdbrules) {
|
|
41
46
|
client.database.rules = {};
|
|
42
47
|
client.database.rules.get = loadCommand("database-rules-get");
|
|
43
48
|
client.database.rules.list = loadCommand("database-rules-list");
|
|
@@ -66,11 +71,11 @@ module.exports = function (client) {
|
|
|
66
71
|
client.ext.list = loadCommand("ext-list");
|
|
67
72
|
client.ext.uninstall = loadCommand("ext-uninstall");
|
|
68
73
|
client.ext.update = loadCommand("ext-update");
|
|
69
|
-
if (previews.ext) {
|
|
74
|
+
if (previews_1.previews.ext) {
|
|
70
75
|
client.ext.sources = {};
|
|
71
76
|
client.ext.sources.create = loadCommand("ext-sources-create");
|
|
72
77
|
}
|
|
73
|
-
if (previews.extdev) {
|
|
78
|
+
if (previews_1.previews.extdev) {
|
|
74
79
|
client.ext.dev = {};
|
|
75
80
|
client.ext.dev.init = loadCommand("ext-dev-init");
|
|
76
81
|
client.ext.dev.list = loadCommand("ext-dev-list");
|
|
@@ -99,7 +104,7 @@ module.exports = function (client) {
|
|
|
99
104
|
client.functions.log = loadCommand("functions-log");
|
|
100
105
|
client.functions.shell = loadCommand("functions-shell");
|
|
101
106
|
client.functions.list = loadCommand("functions-list");
|
|
102
|
-
if (previews.deletegcfartifacts) {
|
|
107
|
+
if (previews_1.previews.deletegcfartifacts) {
|
|
103
108
|
client.functions.deletegcfartifacts = loadCommand("functions-deletegcfartifacts");
|
|
104
109
|
}
|
|
105
110
|
client.functions.secrets = {};
|
|
@@ -153,5 +158,10 @@ module.exports = function (client) {
|
|
|
153
158
|
client.target.clear = loadCommand("target-clear");
|
|
154
159
|
client.target.remove = loadCommand("target-remove");
|
|
155
160
|
client.use = loadCommand("use");
|
|
161
|
+
const t1 = process.hrtime.bigint();
|
|
162
|
+
const diffMS = (t1 - t0) / BigInt(1e6);
|
|
163
|
+
if (diffMS > 100) {
|
|
164
|
+
}
|
|
156
165
|
return client;
|
|
157
|
-
}
|
|
166
|
+
}
|
|
167
|
+
exports.load = load;
|
package/lib/commands/init.js
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
4
|
+
const clc = require("cli-color");
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const os = require("os");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const command_1 = require("../command");
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
const auth_1 = require("../auth");
|
|
11
|
+
const init_1 = require("../init");
|
|
12
|
+
const logger_1 = require("../logger");
|
|
13
|
+
const prompt_1 = require("../prompt");
|
|
14
|
+
const requireAuth_1 = require("../requireAuth");
|
|
15
|
+
const fsutils = require("../fsutils");
|
|
16
|
+
const utils = require("../utils");
|
|
17
|
+
const homeDir = os.homedir();
|
|
18
|
+
const TEMPLATE_ROOT = path.resolve(__dirname, "../../templates/");
|
|
19
|
+
const BANNER_TEXT = fs.readFileSync(path.join(TEMPLATE_ROOT, "banner.txt"), "utf8");
|
|
20
|
+
const GITIGNORE_TEMPLATE = fs.readFileSync(path.join(TEMPLATE_ROOT, "_gitignore"), "utf8");
|
|
21
|
+
function isOutside(from, to) {
|
|
22
|
+
return !!/^\.\./.exec(path.relative(from, to));
|
|
23
|
+
}
|
|
21
24
|
const choices = [
|
|
22
25
|
{
|
|
23
26
|
value: "database",
|
|
@@ -70,30 +73,30 @@ ${[...featureNames]
|
|
|
70
73
|
.sort()
|
|
71
74
|
.map((n) => `\n - ${n}`)
|
|
72
75
|
.join("")}`;
|
|
73
|
-
|
|
76
|
+
exports.command = new command_1.Command("init [feature]")
|
|
74
77
|
.description(DESCRIPTION)
|
|
75
|
-
.before(requireAuth)
|
|
76
|
-
.action(
|
|
78
|
+
.before(requireAuth_1.requireAuth)
|
|
79
|
+
.action((feature, options) => {
|
|
77
80
|
if (feature && !featureNames.includes(feature)) {
|
|
78
81
|
return utils.reject(clc.bold(feature) +
|
|
79
82
|
" is not a supported feature; must be one of " +
|
|
80
83
|
featureNames.join(", ") +
|
|
81
|
-
"."
|
|
84
|
+
".");
|
|
82
85
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (
|
|
86
|
+
const cwd = options.cwd || process.cwd();
|
|
87
|
+
const warnings = [];
|
|
88
|
+
let warningText = "";
|
|
89
|
+
if (isOutside(homeDir, cwd)) {
|
|
87
90
|
warnings.push("You are currently outside your home directory");
|
|
88
91
|
}
|
|
89
92
|
if (cwd === homeDir) {
|
|
90
93
|
warnings.push("You are initializing your home directory as a Firebase project directory");
|
|
91
94
|
}
|
|
92
|
-
|
|
95
|
+
const existingConfig = config_1.Config.load(options, true);
|
|
93
96
|
if (existingConfig) {
|
|
94
97
|
warnings.push("You are initializing within an existing Firebase project directory");
|
|
95
98
|
}
|
|
96
|
-
|
|
99
|
+
const config = existingConfig !== null ? existingConfig : new config_1.Config({}, { projectDir: cwd, cwd: cwd });
|
|
97
100
|
if (warnings.length) {
|
|
98
101
|
warningText =
|
|
99
102
|
"\nBefore we get started, keep in mind:\n\n " +
|
|
@@ -101,21 +104,21 @@ module.exports = new Command("init [feature]")
|
|
|
101
104
|
warnings.join("\n " + clc.yellow.bold("* ")) +
|
|
102
105
|
"\n";
|
|
103
106
|
}
|
|
104
|
-
logger.info(clc.yellow.bold(BANNER_TEXT) +
|
|
107
|
+
logger_1.logger.info(clc.yellow.bold(BANNER_TEXT) +
|
|
105
108
|
"\nYou're about to initialize a Firebase project in this directory:\n\n " +
|
|
106
109
|
clc.bold(config.projectDir) +
|
|
107
110
|
"\n" +
|
|
108
111
|
warningText);
|
|
109
|
-
|
|
112
|
+
const setup = {
|
|
110
113
|
config: config.src,
|
|
111
114
|
rcfile: config.readProjectFile(".firebaserc", {
|
|
112
115
|
json: true,
|
|
113
116
|
fallback: {},
|
|
114
117
|
}),
|
|
115
118
|
};
|
|
116
|
-
|
|
119
|
+
let next;
|
|
117
120
|
if (process.platform === "win32") {
|
|
118
|
-
next = promptOnce({
|
|
121
|
+
next = (0, prompt_1.promptOnce)({
|
|
119
122
|
type: "confirm",
|
|
120
123
|
message: "Are you ready to proceed?",
|
|
121
124
|
});
|
|
@@ -124,7 +127,7 @@ module.exports = new Command("init [feature]")
|
|
|
124
127
|
next = Promise.resolve(true);
|
|
125
128
|
}
|
|
126
129
|
return next
|
|
127
|
-
.then(
|
|
130
|
+
.then((proceed) => {
|
|
128
131
|
if (!proceed) {
|
|
129
132
|
return utils.reject("Aborted by user.", { exit: 1 });
|
|
130
133
|
}
|
|
@@ -133,7 +136,7 @@ module.exports = new Command("init [feature]")
|
|
|
133
136
|
setup.features = [feature];
|
|
134
137
|
return undefined;
|
|
135
138
|
}
|
|
136
|
-
return prompt(setup, [
|
|
139
|
+
return (0, prompt_1.prompt)(setup, [
|
|
137
140
|
{
|
|
138
141
|
type: "checkbox",
|
|
139
142
|
name: "features",
|
|
@@ -143,25 +146,26 @@ module.exports = new Command("init [feature]")
|
|
|
143
146
|
},
|
|
144
147
|
]);
|
|
145
148
|
})
|
|
146
|
-
.then(
|
|
147
|
-
|
|
149
|
+
.then(() => {
|
|
150
|
+
var _a;
|
|
151
|
+
if (!setup.features || ((_a = setup.features) === null || _a === void 0 ? void 0 : _a.length) === 0) {
|
|
148
152
|
return utils.reject("Must select at least one feature. Use " +
|
|
149
153
|
clc.bold.underline("SPACEBAR") +
|
|
150
154
|
" to select features, or specify a feature by running " +
|
|
151
155
|
clc.bold("firebase init [feature_name]"));
|
|
152
156
|
}
|
|
153
157
|
setup.features.unshift("project");
|
|
154
|
-
const allAccounts = getAllAccounts();
|
|
158
|
+
const allAccounts = (0, auth_1.getAllAccounts)();
|
|
155
159
|
if (allAccounts.length > 1) {
|
|
156
160
|
setup.features.unshift("account");
|
|
157
161
|
}
|
|
158
162
|
if (setup.features.includes("hosting") && setup.features.includes("hosting:github")) {
|
|
159
|
-
setup.features = setup.features.filter((f) => f
|
|
163
|
+
setup.features = setup.features.filter((f) => f !== "hosting:github");
|
|
160
164
|
}
|
|
161
|
-
return init(setup, config, options);
|
|
165
|
+
return (0, init_1.init)(setup, config, options);
|
|
162
166
|
})
|
|
163
|
-
.then(
|
|
164
|
-
logger.info();
|
|
167
|
+
.then(() => {
|
|
168
|
+
logger_1.logger.info();
|
|
165
169
|
utils.logBullet("Writing configuration info to " + clc.bold("firebase.json") + "...");
|
|
166
170
|
config.writeProjectFile("firebase.json", setup.config);
|
|
167
171
|
utils.logBullet("Writing project information to " + clc.bold(".firebaserc") + "...");
|
|
@@ -170,7 +174,7 @@ module.exports = new Command("init [feature]")
|
|
|
170
174
|
utils.logBullet("Writing gitignore file to " + clc.bold(".gitignore") + "...");
|
|
171
175
|
config.writeProjectFile(".gitignore", GITIGNORE_TEMPLATE);
|
|
172
176
|
}
|
|
173
|
-
logger.info();
|
|
177
|
+
logger_1.logger.info();
|
|
174
178
|
utils.logSuccess("Firebase initialization complete!");
|
|
175
179
|
});
|
|
176
180
|
});
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const clc = require("cli-color");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const logger_1 = require("../logger");
|
|
6
7
|
const utils = require("../utils");
|
|
7
8
|
const error_1 = require("../error");
|
|
8
9
|
const auth = require("../auth");
|
|
9
|
-
|
|
10
|
+
exports.command = new command_1.Command("login:add [email]")
|
|
10
11
|
.description("authorize the CLI for an additional account")
|
|
11
12
|
.option("--no-localhost", "copy and paste a code instead of starting a local server for authentication")
|
|
12
13
|
.action(async (email, options) => {
|
package/lib/commands/login-ci.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const clc = require("cli-color");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const error_1 = require("../error");
|
|
6
7
|
const logger_1 = require("../logger");
|
|
7
8
|
const auth = require("../auth");
|
|
8
9
|
const utils = require("../utils");
|
|
9
|
-
exports.
|
|
10
|
+
exports.command = new command_1.Command("login:ci")
|
|
10
11
|
.description("generate an access token for use in non-interactive environments")
|
|
11
12
|
.option("--no-localhost", "copy and paste a code instead of starting a local server for authentication")
|
|
12
13
|
.action(async (options) => {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const clc = require("cli-color");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const logger_1 = require("../logger");
|
|
6
7
|
const utils = require("../utils");
|
|
7
8
|
const auth = require("../auth");
|
|
8
|
-
|
|
9
|
+
exports.command = new command_1.Command("login:list")
|
|
9
10
|
.description("list authorized CLI accounts")
|
|
10
11
|
.action((options) => {
|
|
11
12
|
const user = options.user;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const clc = require("cli-color");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const utils = require("../utils");
|
|
6
7
|
const auth = require("../auth");
|
|
7
8
|
const error_1 = require("../error");
|
|
8
|
-
|
|
9
|
+
exports.command = new command_1.Command("login:use <email>")
|
|
9
10
|
.description("set the default account to use for this project directory")
|
|
10
11
|
.action((email, options) => {
|
|
11
12
|
const allAccounts = auth.getAllAccounts();
|
package/lib/commands/login.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const _ = require("lodash");
|
|
4
5
|
const clc = require("cli-color");
|
|
5
6
|
const command_1 = require("../command");
|
|
@@ -10,7 +11,7 @@ const error_1 = require("../error");
|
|
|
10
11
|
const prompt_1 = require("../prompt");
|
|
11
12
|
const auth = require("../auth");
|
|
12
13
|
const utils_1 = require("../utils");
|
|
13
|
-
|
|
14
|
+
exports.command = new command_1.Command("login")
|
|
14
15
|
.description("log the CLI into Firebase")
|
|
15
16
|
.option("--no-localhost", "login from a device without an accessible localhost")
|
|
16
17
|
.option("--reauth", "force reauthentication even if already logged in")
|
package/lib/commands/logout.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const command_1 = require("../command");
|
|
4
5
|
const logger_1 = require("../logger");
|
|
5
6
|
const clc = require("cli-color");
|
|
6
7
|
const utils = require("../utils");
|
|
7
8
|
const auth = require("../auth");
|
|
8
9
|
const prompt_1 = require("../prompt");
|
|
9
|
-
|
|
10
|
+
exports.command = new command_1.Command("logout [email]")
|
|
10
11
|
.description("log the CLI out of Firebase")
|
|
11
12
|
.action(async (email, options) => {
|
|
12
13
|
const globalToken = utils.getInheritedOption(options, "token");
|
package/lib/commands/open.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const _ = require("lodash");
|
|
4
5
|
const clc = require("cli-color");
|
|
5
6
|
const open = require("open");
|
|
@@ -42,7 +43,7 @@ const LINKS = [
|
|
|
42
43
|
{ name: "Test Lab", arg: "testlab", consolePath: "/testlab/histories/" },
|
|
43
44
|
];
|
|
44
45
|
const CHOICES = _.map(LINKS, "name");
|
|
45
|
-
exports.
|
|
46
|
+
exports.command = new command_1.Command("open [link]")
|
|
46
47
|
.description("quickly open a browser to relevant project resources")
|
|
47
48
|
.before(requirePermissions_1.requirePermissions)
|
|
48
49
|
.before(requireDatabaseInstance_1.requireDatabaseInstance)
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const command_1 = require("../command");
|
|
4
5
|
const error_1 = require("../error");
|
|
5
6
|
const projects_1 = require("../management/projects");
|
|
6
7
|
const requireAuth_1 = require("../requireAuth");
|
|
7
|
-
|
|
8
|
+
exports.command = new command_1.Command("projects:addfirebase [projectId]")
|
|
8
9
|
.description("add Firebase resources to a Google Cloud Platform project")
|
|
9
10
|
.before(requireAuth_1.requireAuth)
|
|
10
11
|
.action(async (projectId, options) => {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const command_1 = require("../command");
|
|
4
5
|
const error_1 = require("../error");
|
|
5
6
|
const projects_1 = require("../management/projects");
|
|
6
7
|
const prompt_1 = require("../prompt");
|
|
7
8
|
const requireAuth_1 = require("../requireAuth");
|
|
8
|
-
|
|
9
|
+
exports.command = new command_1.Command("projects:create [projectId]")
|
|
9
10
|
.description("creates a new Google Cloud Platform project, then adds Firebase resources to the project")
|
|
10
11
|
.option("-n, --display-name <displayName>", "(optional) display name for the project")
|
|
11
12
|
.option("-o, --organization <organizationId>", "(optional) ID of the parent Google Cloud Platform organization under which to create this project")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const clc = require("cli-color");
|
|
4
5
|
const ora = require("ora");
|
|
5
6
|
const Table = require("cli-table");
|
|
@@ -40,7 +41,7 @@ function logProjectCount(arr = []) {
|
|
|
40
41
|
logger_1.logger.info("");
|
|
41
42
|
logger_1.logger.info(`${arr.length} project(s) total.`);
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
+
exports.command = new command_1.Command("projects:list")
|
|
44
45
|
.description("list all Firebase projects you have access to")
|
|
45
46
|
.before(requireAuth_1.requireAuth)
|
|
46
47
|
.action(async (options) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const rcGet = require("../remoteconfig/get");
|
|
4
5
|
const command_1 = require("../command");
|
|
5
6
|
const requireAuth_1 = require("../requireAuth");
|
|
@@ -20,7 +21,7 @@ function checkValidOptionalNumber(versionNumber) {
|
|
|
20
21
|
}
|
|
21
22
|
throw new error_1.FirebaseError(`Could not interpret "${versionNumber}" as a valid number.`);
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
+
exports.command = new command_1.Command("remoteconfig:get")
|
|
24
25
|
.description("get a Firebase project's Remote Config template")
|
|
25
26
|
.option("-v, --version-number <versionNumber>", "grabs the specified version of the template")
|
|
26
27
|
.option("-o, --output [filename]", "write config output to a filename (if omitted, will use the default file path)")
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.command = void 0;
|
|
3
4
|
const command_1 = require("../command");
|
|
4
5
|
const error_1 = require("../error");
|
|
5
6
|
const prompt_1 = require("../prompt");
|
|
@@ -8,7 +9,7 @@ const rollback_1 = require("../remoteconfig/rollback");
|
|
|
8
9
|
const requirePermissions_1 = require("../requirePermissions");
|
|
9
10
|
const versionslist_1 = require("../remoteconfig/versionslist");
|
|
10
11
|
const projectUtils_1 = require("../projectUtils");
|
|
11
|
-
|
|
12
|
+
exports.command = new command_1.Command("remoteconfig:rollback")
|
|
12
13
|
.description("roll back a project's published Remote Config template to the one specified by the provided version number")
|
|
13
14
|
.before(requireAuth_1.requireAuth)
|
|
14
15
|
.before(requirePermissions_1.requirePermissions, ["cloudconfig.configs.get", "cloudconfig.configs.update"])
|