firebase-tools 11.0.1 → 11.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/lib/accountExporter.js +11 -4
  2. package/lib/accountImporter.js +93 -95
  3. package/lib/api.js +77 -218
  4. package/lib/apiv2.js +5 -4
  5. package/lib/appdistribution/client.js +7 -9
  6. package/lib/auth.js +72 -52
  7. package/lib/bin/firebase.js +42 -47
  8. package/lib/checkValidTargetFilters.js +36 -25
  9. package/lib/commands/appdistribution-distribute.js +2 -1
  10. package/lib/commands/appdistribution-testers-add.js +2 -1
  11. package/lib/commands/appdistribution-testers-remove.js +2 -1
  12. package/lib/commands/apps-android-sha-create.js +2 -1
  13. package/lib/commands/apps-android-sha-delete.js +2 -1
  14. package/lib/commands/apps-android-sha-list.js +2 -1
  15. package/lib/commands/apps-create.js +2 -1
  16. package/lib/commands/apps-list.js +2 -1
  17. package/lib/commands/apps-sdkconfig.js +2 -1
  18. package/lib/commands/auth-export.js +2 -1
  19. package/lib/commands/auth-import.js +7 -10
  20. package/lib/commands/crashlytics-symbols-upload.js +2 -1
  21. package/lib/commands/database-get.js +4 -3
  22. package/lib/commands/database-instances-create.js +2 -1
  23. package/lib/commands/database-instances-list.js +3 -3
  24. package/lib/commands/database-profile.js +4 -4
  25. package/lib/commands/database-push.js +4 -4
  26. package/lib/commands/database-remove.js +3 -3
  27. package/lib/commands/database-rules-canary.js +2 -1
  28. package/lib/commands/database-rules-get.js +2 -1
  29. package/lib/commands/database-rules-list.js +2 -1
  30. package/lib/commands/database-rules-release.js +2 -1
  31. package/lib/commands/database-rules-stage.js +2 -1
  32. package/lib/commands/database-set.js +3 -3
  33. package/lib/commands/database-settings-get.js +2 -1
  34. package/lib/commands/database-settings-set.js +2 -1
  35. package/lib/commands/database-update.js +2 -1
  36. package/lib/commands/deploy.js +26 -25
  37. package/lib/commands/emulators-exec.js +2 -1
  38. package/lib/commands/emulators-export.js +2 -1
  39. package/lib/commands/emulators-start.js +2 -1
  40. package/lib/commands/experimental-functions-shell.js +10 -8
  41. package/lib/commands/ext-configure.js +2 -1
  42. package/lib/commands/ext-dev-deprecate.js +2 -1
  43. package/lib/commands/ext-dev-emulators-exec.js +3 -2
  44. package/lib/commands/ext-dev-emulators-start.js +3 -2
  45. package/lib/commands/ext-dev-extension-delete.js +2 -1
  46. package/lib/commands/ext-dev-init.js +2 -1
  47. package/lib/commands/ext-dev-list.js +8 -8
  48. package/lib/commands/ext-dev-publish.js +2 -1
  49. package/lib/commands/ext-dev-register.js +2 -1
  50. package/lib/commands/ext-dev-undeprecate.js +2 -1
  51. package/lib/commands/ext-dev-unpublish.js +2 -1
  52. package/lib/commands/ext-dev-usage.js +2 -1
  53. package/lib/commands/ext-export.js +2 -1
  54. package/lib/commands/ext-info.js +14 -14
  55. package/lib/commands/ext-install.js +2 -1
  56. package/lib/commands/ext-list.js +2 -1
  57. package/lib/commands/ext-sources-create.js +2 -1
  58. package/lib/commands/ext-uninstall.js +2 -1
  59. package/lib/commands/ext-update.js +2 -1
  60. package/lib/commands/ext.js +4 -4
  61. package/lib/commands/firestore-delete.js +2 -1
  62. package/lib/commands/firestore-indexes-list.js +2 -1
  63. package/lib/commands/functions-config-clone.js +4 -3
  64. package/lib/commands/functions-config-export.js +2 -1
  65. package/lib/commands/functions-config-get.js +2 -1
  66. package/lib/commands/functions-config-set.js +2 -1
  67. package/lib/commands/functions-config-unset.js +2 -1
  68. package/lib/commands/functions-delete.js +3 -8
  69. package/lib/commands/functions-deletegcfartifacts.js +2 -1
  70. package/lib/commands/functions-list.js +2 -1
  71. package/lib/commands/functions-log.js +2 -1
  72. package/lib/commands/functions-secrets-access.js +2 -1
  73. package/lib/commands/functions-secrets-destroy.js +2 -1
  74. package/lib/commands/functions-secrets-get.js +2 -1
  75. package/lib/commands/functions-secrets-prune.js +2 -1
  76. package/lib/commands/functions-secrets-set.js +2 -1
  77. package/lib/commands/functions-shell.js +12 -10
  78. package/lib/commands/help.js +2 -1
  79. package/lib/commands/hosting-channel-create.js +2 -1
  80. package/lib/commands/hosting-channel-delete.js +2 -1
  81. package/lib/commands/hosting-channel-deploy.js +2 -1
  82. package/lib/commands/hosting-channel-list.js +2 -1
  83. package/lib/commands/hosting-channel-open.js +2 -1
  84. package/lib/commands/hosting-clone.js +2 -1
  85. package/lib/commands/hosting-disable.js +2 -1
  86. package/lib/commands/hosting-sites-create.js +2 -1
  87. package/lib/commands/hosting-sites-delete.js +2 -1
  88. package/lib/commands/hosting-sites-get.js +2 -1
  89. package/lib/commands/hosting-sites-list.js +2 -1
  90. package/lib/commands/index.js +23 -13
  91. package/lib/commands/init.js +47 -43
  92. package/lib/commands/login-add.js +2 -1
  93. package/lib/commands/login-ci.js +2 -1
  94. package/lib/commands/login-list.js +2 -1
  95. package/lib/commands/login-use.js +2 -1
  96. package/lib/commands/login.js +2 -1
  97. package/lib/commands/logout.js +2 -1
  98. package/lib/commands/open.js +7 -7
  99. package/lib/commands/projects-addfirebase.js +2 -1
  100. package/lib/commands/projects-create.js +2 -1
  101. package/lib/commands/projects-list.js +2 -1
  102. package/lib/commands/remoteconfig-get.js +2 -1
  103. package/lib/commands/remoteconfig-rollback.js +2 -1
  104. package/lib/commands/remoteconfig-versions-list.js +2 -1
  105. package/lib/commands/serve.js +30 -30
  106. package/lib/commands/setup-emulators-database.js +2 -1
  107. package/lib/commands/setup-emulators-firestore.js +2 -1
  108. package/lib/commands/setup-emulators-pubsub.js +2 -1
  109. package/lib/commands/setup-emulators-storage.js +2 -1
  110. package/lib/commands/setup-emulators-ui.js +2 -1
  111. package/lib/commands/target-apply.js +2 -1
  112. package/lib/commands/target-clear.js +2 -1
  113. package/lib/commands/target-remove.js +2 -1
  114. package/lib/commands/target.js +2 -1
  115. package/lib/commands/use.js +54 -53
  116. package/lib/config.js +7 -6
  117. package/lib/deploy/database/deploy.js +3 -2
  118. package/lib/deploy/database/index.js +8 -5
  119. package/lib/deploy/database/prepare.js +22 -20
  120. package/lib/deploy/database/release.js +12 -9
  121. package/lib/deploy/extensions/secrets.js +3 -3
  122. package/lib/deploy/firestore/prepare.js +2 -2
  123. package/lib/deploy/functions/build.js +33 -20
  124. package/lib/deploy/functions/ensure.js +1 -11
  125. package/lib/deploy/functions/prepare.js +3 -13
  126. package/lib/deploy/functions/prepareFunctionsUpload.js +2 -3
  127. package/lib/deploy/functions/release/fabricator.js +0 -1
  128. package/lib/deploy/functions/release/index.js +1 -5
  129. package/lib/deploy/functions/runtimes/discovery/index.js +18 -3
  130. package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +188 -54
  131. package/lib/deploy/functions/runtimes/golang/index.js +2 -22
  132. package/lib/deploy/functions/runtimes/node/index.js +3 -7
  133. package/lib/deploy/functions/runtimes/node/parseTriggers.js +16 -4
  134. package/lib/deploy/functions/services/database.js +14 -0
  135. package/lib/deploy/functions/services/index.js +14 -0
  136. package/lib/deploy/index.js +3 -3
  137. package/lib/deploy/lifecycleHooks.js +27 -27
  138. package/lib/deploy/remoteconfig/prepare.js +2 -2
  139. package/lib/deploy/storage/prepare.js +1 -1
  140. package/lib/emulator/auth/apiSpec.js +14 -46
  141. package/lib/emulator/auth/index.js +1 -1
  142. package/lib/emulator/auth/operations.js +342 -93
  143. package/lib/emulator/auth/server.js +2 -2
  144. package/lib/emulator/auth/state.js +34 -32
  145. package/lib/emulator/commandUtils.js +1 -1
  146. package/lib/emulator/constants.js +1 -1
  147. package/lib/emulator/controller.js +7 -6
  148. package/lib/emulator/databaseEmulator.js +4 -4
  149. package/lib/emulator/download.js +1 -1
  150. package/lib/emulator/downloadableEmulators.js +5 -5
  151. package/lib/emulator/events/types.js +2 -3
  152. package/lib/emulator/firestoreEmulator.js +2 -2
  153. package/lib/emulator/functionsEmulator.js +31 -45
  154. package/lib/emulator/functionsEmulatorRuntime.js +12 -16
  155. package/lib/emulator/functionsEmulatorShared.js +7 -5
  156. package/lib/emulator/functionsRuntimeWorker.js +0 -6
  157. package/lib/emulator/hostingEmulator.js +1 -1
  158. package/lib/emulator/hub.js +1 -1
  159. package/lib/emulator/loggingEmulator.js +1 -1
  160. package/lib/emulator/pubsubEmulator.js +1 -1
  161. package/lib/emulator/storage/crc.js +4 -4
  162. package/lib/emulator/storage/index.js +1 -1
  163. package/lib/emulator/types.js +1 -1
  164. package/lib/errorOut.js +2 -2
  165. package/lib/extensions/askUserForConsent.js +1 -2
  166. package/lib/extensions/askUserForParam.js +15 -18
  167. package/lib/extensions/emulator/optionsHelper.js +4 -4
  168. package/lib/extensions/extensionsApi.js +1 -22
  169. package/lib/extensions/extensionsHelper.js +6 -6
  170. package/lib/extensions/listExtensions.js +9 -10
  171. package/lib/extensions/manifest.js +2 -2
  172. package/lib/extensions/resolveSource.js +11 -7
  173. package/lib/extensions/secretsUtils.js +3 -3
  174. package/lib/extensions/types.js +24 -0
  175. package/lib/extensions/updateHelper.js +1 -1
  176. package/lib/extensions/utils.js +1 -2
  177. package/lib/extensions/warnings.js +3 -3
  178. package/lib/firestore/encodeFirestoreValue.js +11 -8
  179. package/lib/fsAsync.js +3 -3
  180. package/lib/functions/events/v2.js +7 -1
  181. package/lib/functionsConfig.js +17 -14
  182. package/lib/functionsConfigClone.js +46 -46
  183. package/lib/gcp/cloudfunctions.js +2 -15
  184. package/lib/gcp/cloudfunctionsv2.js +17 -2
  185. package/lib/gcp/iam.js +1 -1
  186. package/lib/gcp/index.js +10 -10
  187. package/lib/gcp/rules.js +1 -1
  188. package/lib/gcp/runtimeconfig.js +45 -47
  189. package/lib/hosting/proxy.js +1 -1
  190. package/lib/index.js +29 -28
  191. package/lib/init/features/database.js +10 -2
  192. package/lib/init/features/functions/index.js +1 -1
  193. package/lib/init/features/functions/javascript.js +23 -20
  194. package/lib/init/features/functions/npm-dependencies.js +17 -14
  195. package/lib/init/features/functions/typescript.js +27 -24
  196. package/lib/init/features/hosting/github.js +6 -5
  197. package/lib/init/features/hosting/index.js +2 -2
  198. package/lib/loadCJSON.js +9 -6
  199. package/lib/localFunction.js +4 -4
  200. package/lib/logError.js +15 -12
  201. package/lib/parseBoltRules.js +15 -14
  202. package/lib/previews.js +1 -1
  203. package/lib/profileReport.js +504 -512
  204. package/lib/profiler.js +4 -4
  205. package/lib/prompt.js +1 -2
  206. package/lib/rc.js +1 -1
  207. package/lib/requireAuth.js +0 -1
  208. package/lib/responseToError.js +8 -5
  209. package/lib/rulesDeploy.js +2 -2
  210. package/lib/scopes.js +9 -9
  211. package/lib/serve/index.js +4 -5
  212. package/lib/utils.js +30 -6
  213. package/npm-shrinkwrap.json +537 -193
  214. package/package.json +17 -14
@@ -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.default = new command_1.Command("hosting:disable")
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.default = new command_1.Command("hosting:sites:create [siteId]")
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.default = new command_1.Command("hosting:sites:delete <siteId>")
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.default = new command_1.Command("hosting:sites:get <siteId>")
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.default = new command_1.Command("hosting:sites:list")
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) => {
@@ -1,14 +1,19 @@
1
1
  "use strict";
2
- const previews = require("../previews").previews;
3
- module.exports = function (client) {
4
- var loadCommand = function (name) {
5
- var cmd = require("./" + name);
6
- if (cmd.default) {
7
- cmd = cmd.default;
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;
@@ -1,23 +1,26 @@
1
1
  "use strict";
2
- var clc = require("cli-color");
3
- var fs = require("fs");
4
- var homeDir = require("os").homedir();
5
- var path = require("path");
6
- var { Command } = require("../command");
7
- var { Config } = require("../config");
8
- var fsutils = require("../fsutils");
9
- var { init } = require("../init");
10
- const { logger } = require("../logger");
11
- var { prompt, promptOnce } = require("../prompt");
12
- var { requireAuth } = require("../requireAuth");
13
- var utils = require("../utils");
14
- const { getAllAccounts } = require("../auth");
15
- var TEMPLATE_ROOT = path.resolve(__dirname, "../../templates/");
16
- var BANNER_TEXT = fs.readFileSync(path.join(TEMPLATE_ROOT, "banner.txt"), "utf8");
17
- var GITIGNORE_TEMPLATE = fs.readFileSync(path.join(TEMPLATE_ROOT, "_gitignore"), "utf8");
18
- var _isOutside = function (from, to) {
19
- return path.relative(from, to).match(/^\.\./);
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
- module.exports = new Command("init [feature]")
76
+ exports.command = new command_1.Command("init [feature]")
74
77
  .description(DESCRIPTION)
75
- .before(requireAuth)
76
- .action(function (feature, options) {
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
- ".", { exit: 1 });
84
+ ".");
82
85
  }
83
- var cwd = options.cwd || process.cwd();
84
- var warnings = [];
85
- var warningText = "";
86
- if (_isOutside(homeDir, cwd)) {
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
- var existingConfig = Config.load(options, true);
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
- var config = existingConfig !== null ? existingConfig : new Config({}, { projectDir: cwd, cwd: cwd });
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
- var setup = {
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
- var next;
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(function (proceed) {
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(function () {
147
- if (setup.features.length === 0) {
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 != "hosting:github");
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(function () {
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
- module.exports = new command_1.Command("login:add [email]")
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) => {
@@ -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.default = new command_1.Command("login:ci")
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
- module.exports = new command_1.Command("login:list")
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
- module.exports = new command_1.Command("login:use <email>")
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();
@@ -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
- module.exports = new command_1.Command("login")
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")
@@ -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
- module.exports = new command_1.Command("logout [email]")
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");
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const _ = require("lodash");
3
+ exports.command = void 0;
4
4
  const clc = require("cli-color");
5
5
  const open = require("open");
6
6
  const error_1 = require("../error");
@@ -41,15 +41,15 @@ const LINKS = [
41
41
  { name: "Storage: Rules", arg: "storage:rules", consolePath: "/storage/rules" },
42
42
  { name: "Test Lab", arg: "testlab", consolePath: "/testlab/histories/" },
43
43
  ];
44
- const CHOICES = _.map(LINKS, "name");
45
- exports.default = new command_1.Command("open [link]")
44
+ const CHOICES = LINKS.map((l) => l.name);
45
+ exports.command = new command_1.Command("open [link]")
46
46
  .description("quickly open a browser to relevant project resources")
47
47
  .before(requirePermissions_1.requirePermissions)
48
48
  .before(requireDatabaseInstance_1.requireDatabaseInstance)
49
49
  .action(async (linkName, options) => {
50
- let link = _.find(LINKS, { arg: linkName });
50
+ let link = LINKS.find((l) => l.arg === linkName);
51
51
  if (linkName && !link) {
52
- throw new error_1.FirebaseError("Unrecognized link name. Valid links are:\n\n" + _.map(LINKS, "arg").join("\n"));
52
+ throw new error_1.FirebaseError("Unrecognized link name. Valid links are:\n\n" + LINKS.map((l) => l.arg).join("\n"));
53
53
  }
54
54
  if (!link) {
55
55
  const name = await (0, prompt_1.promptOnce)({
@@ -57,10 +57,10 @@ exports.default = new command_1.Command("open [link]")
57
57
  message: "What link would you like to open?",
58
58
  choices: CHOICES,
59
59
  });
60
- link = _.find(LINKS, { name });
60
+ link = LINKS.find((l) => l.name === name);
61
61
  }
62
62
  if (!link) {
63
- throw new error_1.FirebaseError("Unrecognized link name. Valid links are:\n\n" + _.map(LINKS, "arg").join("\n"));
63
+ throw new error_1.FirebaseError("Unrecognized link name. Valid links are:\n\n" + LINKS.map((l) => l.arg).join("\n"));
64
64
  }
65
65
  let url;
66
66
  if (link.consolePath) {
@@ -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
- module.exports = new command_1.Command("projects:addfirebase [projectId]")
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
- module.exports = new command_1.Command("projects:create [projectId]")
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
- module.exports = new command_1.Command("projects:list")
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
- module.exports = new command_1.Command("remoteconfig:get")
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
- module.exports = new command_1.Command("remoteconfig:rollback")
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"])
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.command = void 0;
3
4
  const logger_1 = require("../logger");
4
5
  const rcVersion = require("../remoteconfig/versionslist");
5
6
  const command_1 = require("../command");
@@ -17,7 +18,7 @@ function pushTableContents(table, version) {
17
18
  version.updateTime ? (0, utils_1.datetimeString)(new Date(version.updateTime)) : "",
18
19
  ]);
19
20
  }
20
- module.exports = new command_1.Command("remoteconfig:versions:list")
21
+ exports.command = new command_1.Command("remoteconfig:versions:list")
21
22
  .description("get a list of Remote Config template versions that have been published for a Firebase project")
22
23
  .option("--limit <maxResults>", "limit the number of versions being returned. Pass '0' to fetch all versions.")
23
24
  .before(requireAuth_1.requireAuth)