firebase-tools 10.1.3 → 10.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 (61) hide show
  1. package/lib/api.js +1 -0
  2. package/lib/apiv2.js +4 -0
  3. package/lib/auth.js +62 -25
  4. package/lib/commands/auth-import.js +1 -1
  5. package/lib/commands/ext-configure.js +1 -0
  6. package/lib/commands/ext-install.js +1 -0
  7. package/lib/commands/ext-uninstall.js +1 -0
  8. package/lib/commands/ext-update.js +1 -0
  9. package/lib/commands/functions-config-clone.js +1 -1
  10. package/lib/commands/functions-secrets-access.js +17 -0
  11. package/lib/commands/functions-secrets-destroy.js +40 -0
  12. package/lib/commands/functions-secrets-get.js +21 -0
  13. package/lib/commands/functions-secrets-prune.js +50 -0
  14. package/lib/commands/functions-secrets-set.js +46 -0
  15. package/lib/commands/index.js +7 -3
  16. package/lib/commands/login.js +1 -1
  17. package/lib/deploy/functions/backend.js +9 -1
  18. package/lib/deploy/functions/ensure.js +112 -0
  19. package/lib/deploy/functions/ensureCloudBuildEnabled.js +0 -49
  20. package/lib/deploy/functions/prepare.js +12 -18
  21. package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +1 -0
  22. package/lib/deploy/functions/runtimes/node/parseTriggers.js +12 -0
  23. package/lib/deploy/functions/validate.js +56 -1
  24. package/lib/deploy/hosting/client.js +9 -0
  25. package/lib/deploy/hosting/convertConfig.js +6 -0
  26. package/lib/deploy/hosting/index.js +5 -5
  27. package/lib/deploy/hosting/prepare.js +25 -25
  28. package/lib/deploy/hosting/release.js +21 -24
  29. package/lib/emulator/commandUtils.js +5 -1
  30. package/lib/emulator/controller.js +3 -1
  31. package/lib/emulator/downloadableEmulators.js +29 -12
  32. package/lib/emulator/emulatorLogger.js +7 -0
  33. package/lib/emulator/functionsEmulator.js +122 -80
  34. package/lib/emulator/functionsEmulatorRuntime.js +100 -83
  35. package/lib/emulator/functionsEmulatorShared.js +51 -1
  36. package/lib/emulator/functionsEmulatorShell.js +1 -2
  37. package/lib/emulator/functionsRuntimeWorker.js +1 -1
  38. package/lib/emulator/storage/apis/gcloud.js +2 -2
  39. package/lib/emulator/storage/files.js +8 -3
  40. package/lib/extensions/askUserForParam.js +1 -1
  41. package/lib/extensions/diagnose.js +56 -0
  42. package/lib/extensions/extensionsHelper.js +10 -17
  43. package/lib/extensions/listExtensions.js +2 -0
  44. package/lib/extensions/resolveSource.js +1 -53
  45. package/lib/extensions/secretsUtils.js +1 -1
  46. package/lib/extensions/updateHelper.js +0 -14
  47. package/lib/extensions/utils.js +4 -2
  48. package/lib/functions/env.js +5 -7
  49. package/lib/functions/secrets.js +112 -0
  50. package/lib/gcp/cloudfunctions.js +2 -2
  51. package/lib/gcp/secretManager.js +128 -46
  52. package/lib/gcp/storage.js +5 -3
  53. package/lib/hosting/functionsProxy.js +15 -5
  54. package/lib/previews.js +1 -1
  55. package/lib/responseToError.js +16 -7
  56. package/lib/serve/functions.js +2 -2
  57. package/lib/serve/hosting.js +1 -1
  58. package/lib/utils.js +6 -1
  59. package/npm-shrinkwrap.json +124 -45
  60. package/package.json +4 -4
  61. package/schema/firebase-config.json +27 -0
@@ -2,16 +2,25 @@
2
2
  const _ = require("lodash");
3
3
  const { FirebaseError } = require("./error");
4
4
  module.exports = function (response, body) {
5
- if (typeof body === "string" && response.statusCode === 404) {
6
- body = {
7
- error: {
8
- message: "Not Found",
9
- },
10
- };
11
- }
12
5
  if (response.statusCode < 400) {
13
6
  return null;
14
7
  }
8
+ if (typeof body === "string") {
9
+ if (response.statusCode === 404) {
10
+ body = {
11
+ error: {
12
+ message: "Not Found",
13
+ },
14
+ };
15
+ }
16
+ else {
17
+ body = {
18
+ error: {
19
+ message: body,
20
+ },
21
+ };
22
+ }
23
+ }
15
24
  if (typeof body !== "object") {
16
25
  try {
17
26
  body = JSON.parse(body);
@@ -27,10 +27,10 @@ class FunctionsServer {
27
27
  const nodeMajorVersion = (0, functionsEmulatorUtils_1.parseRuntimeVersion)(options.config.get("functions.runtime"));
28
28
  this.backend = {
29
29
  functionsDir,
30
- env: {},
31
30
  nodeMajorVersion,
31
+ env: {},
32
32
  };
33
- const args = Object.assign({ projectId, emulatableBackends: [this.backend], account }, partialArgs);
33
+ const args = Object.assign({ projectId, projectDir: options.config.projectDir, emulatableBackends: [this.backend], account }, partialArgs);
34
34
  if (options.host) {
35
35
  utils.assertIsStringOrUndefined(options.host);
36
36
  args.host = options.host;
@@ -46,7 +46,7 @@ function startServer(options, config, port, init) {
46
46
  },
47
47
  },
48
48
  rewriters: {
49
- function: (0, functionsProxy_1.default)(options),
49
+ function: (0, functionsProxy_1.functionsProxy)(options),
50
50
  run: (0, cloudRunProxy_1.default)(options),
51
51
  },
52
52
  }).listen(() => {
package/lib/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertIsStringOrUndefined = exports.assertIsNumber = exports.assertIsString = exports.assertDefined = exports.thirtyDaysFromNow = exports.isRunningInWSL = exports.isCloudEnvironment = exports.datetimeString = exports.createDestroyer = exports.promiseWithSpinner = exports.setupLoggers = exports.tryParse = exports.tryStringify = exports.promiseProps = exports.promiseWhile = exports.promiseAllSettled = exports.getFunctionsEventProvider = exports.endpoint = exports.makeActiveProject = exports.streamToString = exports.stringToStream = exports.explainStdin = exports.allSettled = exports.reject = exports.logLabeledWarning = exports.logWarning = exports.logLabeledBullet = exports.logBullet = exports.logLabeledSuccess = exports.logSuccess = exports.addSubdomain = exports.addDatabaseNamespace = exports.getDatabaseViewDataUrl = exports.getDatabaseUrl = exports.envOverride = exports.getInheritedOption = exports.consoleUrl = exports.envOverrides = void 0;
3
+ exports.assertIsStringOrUndefined = exports.assertIsNumber = exports.assertIsString = exports.assertDefined = exports.thirtyDaysFromNow = exports.isRunningInWSL = exports.isCloudEnvironment = exports.datetimeString = exports.createDestroyer = exports.promiseWithSpinner = exports.setupLoggers = exports.tryParse = exports.tryStringify = exports.promiseProps = exports.promiseWhile = exports.promiseAllSettled = exports.getFunctionsEventProvider = exports.endpoint = exports.makeActiveProject = exports.streamToString = exports.stringToStream = exports.explainStdin = exports.allSettled = exports.reject = exports.logLabeledError = exports.logLabeledWarning = exports.logWarning = exports.logLabeledBullet = exports.logBullet = exports.logLabeledSuccess = exports.logSuccess = exports.addSubdomain = exports.addDatabaseNamespace = exports.getDatabaseViewDataUrl = exports.getDatabaseUrl = exports.envOverride = exports.getInheritedOption = exports.consoleUrl = exports.envOverrides = void 0;
4
4
  const _ = require("lodash");
5
5
  const url = require("url");
6
6
  const clc = require("cli-color");
@@ -17,6 +17,7 @@ const logger_1 = require("./logger");
17
17
  const IS_WINDOWS = process.platform === "win32";
18
18
  const SUCCESS_CHAR = IS_WINDOWS ? "+" : "✔";
19
19
  const WARNING_CHAR = IS_WINDOWS ? "!" : "⚠";
20
+ const ERROR_CHAR = IS_WINDOWS ? "!!" : "⬢";
20
21
  const THIRTY_DAYS_IN_MILLISECONDS = 30 * 24 * 60 * 60 * 1000;
21
22
  exports.envOverrides = [];
22
23
  function consoleUrl(project, path) {
@@ -104,6 +105,10 @@ function logLabeledWarning(label, message, type = "warn", data = undefined) {
104
105
  logger_1.logger[type](clc.yellow.bold(`${WARNING_CHAR} ${label}:`), message, data);
105
106
  }
106
107
  exports.logLabeledWarning = logLabeledWarning;
108
+ function logLabeledError(label, message, type = "error", data = undefined) {
109
+ logger_1.logger[type](clc.red.bold(`${ERROR_CHAR} ${label}:`), message, data);
110
+ }
111
+ exports.logLabeledError = logLabeledError;
107
112
  function reject(message, options) {
108
113
  return Promise.reject(new error_1.FirebaseError(message, options));
109
114
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "firebase-tools",
3
- "version": "10.1.3",
3
+ "version": "10.2.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "firebase-tools",
9
- "version": "10.1.3",
9
+ "version": "10.2.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@google-cloud/pubsub": "^2.18.4",
@@ -43,7 +43,7 @@
43
43
  "mime": "^2.5.2",
44
44
  "minimatch": "^3.0.4",
45
45
  "morgan": "^1.10.0",
46
- "node-fetch": "^2.6.1",
46
+ "node-fetch": "^2.6.7",
47
47
  "open": "^6.3.0",
48
48
  "ora": "^5.4.1",
49
49
  "portfinder": "^1.0.23",
@@ -99,7 +99,7 @@
99
99
  "@types/mocha": "^9.0.0",
100
100
  "@types/multer": "^1.4.3",
101
101
  "@types/node": "^12.20.39",
102
- "@types/node-fetch": "^2.5.7",
102
+ "@types/node-fetch": "^2.5.12",
103
103
  "@types/progress": "^2.0.3",
104
104
  "@types/puppeteer": "^5.4.2",
105
105
  "@types/request": "^2.48.1",
@@ -116,7 +116,6 @@
116
116
  "@types/triple-beam": "^1.3.0",
117
117
  "@types/unzipper": "^0.10.0",
118
118
  "@types/uuid": "^8.3.1",
119
- "@types/winston": "^2.4.4",
120
119
  "@types/ws": "^7.2.3",
121
120
  "@typescript-eslint/eslint-plugin": "^5.9.0",
122
121
  "@typescript-eslint/parser": "^5.9.0",
@@ -836,6 +835,15 @@
836
835
  "tslib": "^1.11.1"
837
836
  }
838
837
  },
838
+ "node_modules/@firebase/firestore/node_modules/node-fetch": {
839
+ "version": "2.6.1",
840
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
841
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
842
+ "dev": true,
843
+ "engines": {
844
+ "node": "4.x || >=6.0.0"
845
+ }
846
+ },
839
847
  "node_modules/@firebase/functions": {
840
848
  "version": "0.5.1",
841
849
  "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz",
@@ -878,6 +886,15 @@
878
886
  "tslib": "^1.11.1"
879
887
  }
880
888
  },
889
+ "node_modules/@firebase/functions/node_modules/node-fetch": {
890
+ "version": "2.6.1",
891
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
892
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
893
+ "dev": true,
894
+ "engines": {
895
+ "node": "4.x || >=6.0.0"
896
+ }
897
+ },
881
898
  "node_modules/@firebase/installations": {
882
899
  "version": "0.4.17",
883
900
  "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz",
@@ -2121,9 +2138,9 @@
2121
2138
  "integrity": "sha512-U7PMwkDmc3bnL0e4U8oA0POpi1vfsYDc+DEUS2+rPxm9NlLcW1dBa5JcRhO633PoPUcCSWMNXrMsqhmAVEo+IQ=="
2122
2139
  },
2123
2140
  "node_modules/@types/node-fetch": {
2124
- "version": "2.5.7",
2125
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz",
2126
- "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==",
2141
+ "version": "2.5.12",
2142
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz",
2143
+ "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
2127
2144
  "dev": true,
2128
2145
  "dependencies": {
2129
2146
  "@types/node": "*",
@@ -2359,16 +2376,6 @@
2359
2376
  "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==",
2360
2377
  "dev": true
2361
2378
  },
2362
- "node_modules/@types/winston": {
2363
- "version": "2.4.4",
2364
- "resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.4.4.tgz",
2365
- "integrity": "sha512-BVGCztsypW8EYwJ+Hq+QNYiT/MUyCif0ouBH+flrY66O5W+KIXAMML6E/0fJpm7VjIzgangahl5S03bJJQGrZw==",
2366
- "deprecated": "This is a stub types definition. winston provides its own type definitions, so you do not need this installed.",
2367
- "dev": true,
2368
- "dependencies": {
2369
- "winston": "*"
2370
- }
2371
- },
2372
2379
  "node_modules/@types/ws": {
2373
2380
  "version": "7.2.3",
2374
2381
  "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.3.tgz",
@@ -6791,11 +6798,11 @@
6791
6798
  }
6792
6799
  },
6793
6800
  "node_modules/google-p12-pem": {
6794
- "version": "3.0.3",
6795
- "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
6796
- "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
6801
+ "version": "3.1.3",
6802
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz",
6803
+ "integrity": "sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==",
6797
6804
  "dependencies": {
6798
- "node-forge": "^0.10.0"
6805
+ "node-forge": "^1.0.0"
6799
6806
  },
6800
6807
  "bin": {
6801
6808
  "gp12-pem": "build/src/bin/gp12-pem.js"
@@ -6804,6 +6811,14 @@
6804
6811
  "node": ">=10"
6805
6812
  }
6806
6813
  },
6814
+ "node_modules/google-p12-pem/node_modules/node-forge": {
6815
+ "version": "1.2.1",
6816
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz",
6817
+ "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==",
6818
+ "engines": {
6819
+ "node": ">= 6.13.0"
6820
+ }
6821
+ },
6807
6822
  "node_modules/got": {
6808
6823
  "version": "9.6.0",
6809
6824
  "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
@@ -9175,11 +9190,22 @@
9175
9190
  }
9176
9191
  },
9177
9192
  "node_modules/node-fetch": {
9178
- "version": "2.6.1",
9179
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
9180
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
9193
+ "version": "2.6.7",
9194
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
9195
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
9196
+ "dependencies": {
9197
+ "whatwg-url": "^5.0.0"
9198
+ },
9181
9199
  "engines": {
9182
9200
  "node": "4.x || >=6.0.0"
9201
+ },
9202
+ "peerDependencies": {
9203
+ "encoding": "^0.1.0"
9204
+ },
9205
+ "peerDependenciesMeta": {
9206
+ "encoding": {
9207
+ "optional": true
9208
+ }
9183
9209
  }
9184
9210
  },
9185
9211
  "node_modules/node-fetch-h2": {
@@ -9198,6 +9224,7 @@
9198
9224
  "version": "0.10.0",
9199
9225
  "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
9200
9226
  "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
9227
+ "dev": true,
9201
9228
  "engines": {
9202
9229
  "node": ">= 6.0.0"
9203
9230
  }
@@ -12390,6 +12417,11 @@
12390
12417
  "lodash": "^4.17.10"
12391
12418
  }
12392
12419
  },
12420
+ "node_modules/tr46": {
12421
+ "version": "0.0.3",
12422
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
12423
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
12424
+ },
12393
12425
  "node_modules/traverse": {
12394
12426
  "version": "0.3.9",
12395
12427
  "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
@@ -13073,6 +13105,11 @@
13073
13105
  "defaults": "^1.0.3"
13074
13106
  }
13075
13107
  },
13108
+ "node_modules/webidl-conversions": {
13109
+ "version": "3.0.1",
13110
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
13111
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
13112
+ },
13076
13113
  "node_modules/websocket-driver": {
13077
13114
  "version": "0.7.3",
13078
13115
  "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
@@ -13102,6 +13139,15 @@
13102
13139
  "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==",
13103
13140
  "dev": true
13104
13141
  },
13142
+ "node_modules/whatwg-url": {
13143
+ "version": "5.0.0",
13144
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
13145
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
13146
+ "dependencies": {
13147
+ "tr46": "~0.0.3",
13148
+ "webidl-conversions": "^3.0.0"
13149
+ }
13150
+ },
13105
13151
  "node_modules/which": {
13106
13152
  "version": "1.3.1",
13107
13153
  "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -14059,6 +14105,12 @@
14059
14105
  "requires": {
14060
14106
  "tslib": "^1.11.1"
14061
14107
  }
14108
+ },
14109
+ "node-fetch": {
14110
+ "version": "2.6.1",
14111
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
14112
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
14113
+ "dev": true
14062
14114
  }
14063
14115
  }
14064
14116
  },
@@ -14100,6 +14152,12 @@
14100
14152
  "requires": {
14101
14153
  "tslib": "^1.11.1"
14102
14154
  }
14155
+ },
14156
+ "node-fetch": {
14157
+ "version": "2.6.1",
14158
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
14159
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
14160
+ "dev": true
14103
14161
  }
14104
14162
  }
14105
14163
  },
@@ -15200,9 +15258,9 @@
15200
15258
  "integrity": "sha512-U7PMwkDmc3bnL0e4U8oA0POpi1vfsYDc+DEUS2+rPxm9NlLcW1dBa5JcRhO633PoPUcCSWMNXrMsqhmAVEo+IQ=="
15201
15259
  },
15202
15260
  "@types/node-fetch": {
15203
- "version": "2.5.7",
15204
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz",
15205
- "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==",
15261
+ "version": "2.5.12",
15262
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz",
15263
+ "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
15206
15264
  "dev": true,
15207
15265
  "requires": {
15208
15266
  "@types/node": "*",
@@ -15436,15 +15494,6 @@
15436
15494
  "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==",
15437
15495
  "dev": true
15438
15496
  },
15439
- "@types/winston": {
15440
- "version": "2.4.4",
15441
- "resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.4.4.tgz",
15442
- "integrity": "sha512-BVGCztsypW8EYwJ+Hq+QNYiT/MUyCif0ouBH+flrY66O5W+KIXAMML6E/0fJpm7VjIzgangahl5S03bJJQGrZw==",
15443
- "dev": true,
15444
- "requires": {
15445
- "winston": "*"
15446
- }
15447
- },
15448
15497
  "@types/ws": {
15449
15498
  "version": "7.2.3",
15450
15499
  "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.3.tgz",
@@ -18881,11 +18930,18 @@
18881
18930
  }
18882
18931
  },
18883
18932
  "google-p12-pem": {
18884
- "version": "3.0.3",
18885
- "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
18886
- "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
18933
+ "version": "3.1.3",
18934
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz",
18935
+ "integrity": "sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==",
18887
18936
  "requires": {
18888
- "node-forge": "^0.10.0"
18937
+ "node-forge": "^1.0.0"
18938
+ },
18939
+ "dependencies": {
18940
+ "node-forge": {
18941
+ "version": "1.2.1",
18942
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz",
18943
+ "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w=="
18944
+ }
18889
18945
  }
18890
18946
  },
18891
18947
  "got": {
@@ -20777,9 +20833,12 @@
20777
20833
  }
20778
20834
  },
20779
20835
  "node-fetch": {
20780
- "version": "2.6.1",
20781
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
20782
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
20836
+ "version": "2.6.7",
20837
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
20838
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
20839
+ "requires": {
20840
+ "whatwg-url": "^5.0.0"
20841
+ }
20783
20842
  },
20784
20843
  "node-fetch-h2": {
20785
20844
  "version": "2.3.0",
@@ -20793,7 +20852,8 @@
20793
20852
  "node-forge": {
20794
20853
  "version": "0.10.0",
20795
20854
  "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
20796
- "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
20855
+ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
20856
+ "dev": true
20797
20857
  },
20798
20858
  "node-gyp": {
20799
20859
  "version": "8.4.1",
@@ -23301,6 +23361,11 @@
23301
23361
  "lodash": "^4.17.10"
23302
23362
  }
23303
23363
  },
23364
+ "tr46": {
23365
+ "version": "0.0.3",
23366
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
23367
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
23368
+ },
23304
23369
  "traverse": {
23305
23370
  "version": "0.3.9",
23306
23371
  "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
@@ -23803,6 +23868,11 @@
23803
23868
  "defaults": "^1.0.3"
23804
23869
  }
23805
23870
  },
23871
+ "webidl-conversions": {
23872
+ "version": "3.0.1",
23873
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
23874
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
23875
+ },
23806
23876
  "websocket-driver": {
23807
23877
  "version": "0.7.3",
23808
23878
  "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
@@ -23826,6 +23896,15 @@
23826
23896
  "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==",
23827
23897
  "dev": true
23828
23898
  },
23899
+ "whatwg-url": {
23900
+ "version": "5.0.0",
23901
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
23902
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
23903
+ "requires": {
23904
+ "tr46": "~0.0.3",
23905
+ "webidl-conversions": "^3.0.0"
23906
+ }
23907
+ },
23829
23908
  "which": {
23830
23909
  "version": "1.3.1",
23831
23910
  "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firebase-tools",
3
- "version": "10.1.3",
3
+ "version": "10.2.1",
4
4
  "description": "Command-Line Interface for Firebase",
5
5
  "main": "./lib/index.js",
6
6
  "bin": {
@@ -30,6 +30,7 @@
30
30
  "test:extensions-emulator": "./scripts/extensions-emulator-tests/run.sh",
31
31
  "test:hosting": "./scripts/hosting-tests/run.sh",
32
32
  "test:triggers-end-to-end": "./scripts/triggers-end-to-end-tests/run.sh",
33
+ "test:storage-deploy": "./scripts/storage-deploy-tests/run.sh",
33
34
  "test:storage-emulator-integration": "./scripts/storage-emulator-integration/run.sh"
34
35
  },
35
36
  "files": [
@@ -118,7 +119,7 @@
118
119
  "mime": "^2.5.2",
119
120
  "minimatch": "^3.0.4",
120
121
  "morgan": "^1.10.0",
121
- "node-fetch": "^2.6.1",
122
+ "node-fetch": "^2.6.7",
122
123
  "open": "^6.3.0",
123
124
  "ora": "^5.4.1",
124
125
  "portfinder": "^1.0.23",
@@ -171,7 +172,7 @@
171
172
  "@types/mocha": "^9.0.0",
172
173
  "@types/multer": "^1.4.3",
173
174
  "@types/node": "^12.20.39",
174
- "@types/node-fetch": "^2.5.7",
175
+ "@types/node-fetch": "^2.5.12",
175
176
  "@types/progress": "^2.0.3",
176
177
  "@types/puppeteer": "^5.4.2",
177
178
  "@types/request": "^2.48.1",
@@ -188,7 +189,6 @@
188
189
  "@types/triple-beam": "^1.3.0",
189
190
  "@types/unzipper": "^0.10.0",
190
191
  "@types/uuid": "^8.3.1",
191
- "@types/winston": "^2.4.4",
192
192
  "@types/ws": "^7.2.3",
193
193
  "@typescript-eslint/eslint-plugin": "^5.9.0",
194
194
  "@typescript-eslint/parser": "^5.9.0",
@@ -622,6 +622,9 @@
622
622
  },
623
623
  "glob": {
624
624
  "type": "string"
625
+ },
626
+ "region": {
627
+ "type": "string"
625
628
  }
626
629
  },
627
630
  "required": [
@@ -696,6 +699,9 @@
696
699
  "function": {
697
700
  "type": "string"
698
701
  },
702
+ "region": {
703
+ "type": "string"
704
+ },
699
705
  "source": {
700
706
  "type": "string"
701
707
  }
@@ -774,6 +780,9 @@
774
780
  },
775
781
  "regex": {
776
782
  "type": "string"
783
+ },
784
+ "region": {
785
+ "type": "string"
777
786
  }
778
787
  },
779
788
  "required": [
@@ -1095,6 +1104,9 @@
1095
1104
  },
1096
1105
  "glob": {
1097
1106
  "type": "string"
1107
+ },
1108
+ "region": {
1109
+ "type": "string"
1098
1110
  }
1099
1111
  },
1100
1112
  "required": [
@@ -1169,6 +1181,9 @@
1169
1181
  "function": {
1170
1182
  "type": "string"
1171
1183
  },
1184
+ "region": {
1185
+ "type": "string"
1186
+ },
1172
1187
  "source": {
1173
1188
  "type": "string"
1174
1189
  }
@@ -1247,6 +1262,9 @@
1247
1262
  },
1248
1263
  "regex": {
1249
1264
  "type": "string"
1265
+ },
1266
+ "region": {
1267
+ "type": "string"
1250
1268
  }
1251
1269
  },
1252
1270
  "required": [
@@ -1568,6 +1586,9 @@
1568
1586
  },
1569
1587
  "glob": {
1570
1588
  "type": "string"
1589
+ },
1590
+ "region": {
1591
+ "type": "string"
1571
1592
  }
1572
1593
  },
1573
1594
  "required": [
@@ -1642,6 +1663,9 @@
1642
1663
  "function": {
1643
1664
  "type": "string"
1644
1665
  },
1666
+ "region": {
1667
+ "type": "string"
1668
+ },
1645
1669
  "source": {
1646
1670
  "type": "string"
1647
1671
  }
@@ -1720,6 +1744,9 @@
1720
1744
  },
1721
1745
  "regex": {
1722
1746
  "type": "string"
1747
+ },
1748
+ "region": {
1749
+ "type": "string"
1723
1750
  }
1724
1751
  },
1725
1752
  "required": [