firebase-tools 11.29.0 → 11.29.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.
@@ -37,8 +37,8 @@ const secretsInSpec = (spec) => {
37
37
  return spec.params.filter((p) => p.type === types_1.ParamType.SECRET);
38
38
  };
39
39
  async function handleSecretsCreateInstance(i, nonInteractive) {
40
- const extensionVersion = await (0, planner_1.getExtensionVersion)(i);
41
- const secretParams = secretsInSpec(extensionVersion.spec);
40
+ const spec = await (0, planner_1.getExtensionSpec)(i);
41
+ const secretParams = secretsInSpec(spec);
42
42
  for (const s of secretParams) {
43
43
  await handleSecretParamForCreate(s, i, nonInteractive);
44
44
  }
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepare = void 0;
3
+ exports.unsafePins = exports.prepare = void 0;
4
4
  const error_1 = require("../../error");
5
5
  const api = require("../../hosting/api");
6
6
  const config = require("../../hosting/config");
7
7
  const deploymentTool = require("../../deploymentTool");
8
8
  const functional_1 = require("../../functional");
9
9
  const track_1 = require("../../track");
10
+ const utils = require("../../utils");
11
+ const backend = require("../functions/backend");
10
12
  async function prepare(context, options) {
11
13
  if (options.public) {
12
14
  if (Array.isArray(options.config.get("hosting"))) {
@@ -23,6 +25,12 @@ async function prepare(context, options) {
23
25
  if (config.webFramework) {
24
26
  labels["firebase-web-framework"] = config.webFramework;
25
27
  }
28
+ const unsafe = await unsafePins(context, config);
29
+ if (unsafe.length) {
30
+ const msg = `Cannot deploy site ${config.site} to channel ${context.hostingChannel} because it would modify one or more rewrites in "live" that are not pinned, breaking production. Please pin "live" before pinning other channels.`;
31
+ utils.logLabeledError("Hosting", msg);
32
+ throw new Error(msg);
33
+ }
26
34
  const version = {
27
35
  status: "CREATED",
28
36
  labels,
@@ -41,3 +49,50 @@ async function prepare(context, options) {
41
49
  }
42
50
  }
43
51
  exports.prepare = prepare;
52
+ function rewriteTarget(source) {
53
+ if ("glob" in source) {
54
+ return source.glob;
55
+ }
56
+ else if ("source" in source) {
57
+ return source.source;
58
+ }
59
+ else if ("regex" in source) {
60
+ return source.regex;
61
+ }
62
+ else {
63
+ (0, functional_1.assertExhaustive)(source);
64
+ }
65
+ }
66
+ async function unsafePins(context, config) {
67
+ var _a, _b, _c;
68
+ if ((context.hostingChannel || "live") === "live") {
69
+ return [];
70
+ }
71
+ const targetTaggedRewrites = {};
72
+ for (const rewrite of config.rewrites || []) {
73
+ const target = rewriteTarget(rewrite);
74
+ if ("run" in rewrite && rewrite.run.pinTag) {
75
+ targetTaggedRewrites[target] = `${rewrite.run.region || "us-central1"}/${rewrite.run.serviceId}`;
76
+ }
77
+ if ("function" in rewrite && typeof rewrite.function === "object" && rewrite.function.pinTag) {
78
+ const region = rewrite.function.region || "us-central1";
79
+ const endpoint = (await backend.existingBackend(context)).endpoints[region][rewrite.function.functionId];
80
+ if (!endpoint) {
81
+ continue;
82
+ }
83
+ targetTaggedRewrites[target] = `${region}/${endpoint.runServiceId || endpoint.id}`;
84
+ }
85
+ }
86
+ if (!Object.keys(targetTaggedRewrites).length) {
87
+ return [];
88
+ }
89
+ const channelConfig = await api.getChannel(context.projectId, config.site, "live");
90
+ const existingUntaggedRewrites = {};
91
+ for (const rewrite of ((_c = (_b = (_a = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.release) === null || _a === void 0 ? void 0 : _a.version) === null || _b === void 0 ? void 0 : _b.config) === null || _c === void 0 ? void 0 : _c.rewrites) || []) {
92
+ if ("run" in rewrite && !rewrite.run.tag) {
93
+ existingUntaggedRewrites[rewriteTarget(rewrite)] = `${rewrite.run.region}/${rewrite.run.serviceId}`;
94
+ }
95
+ }
96
+ return Object.keys(targetTaggedRewrites).filter((target) => targetTaggedRewrites[target] === existingUntaggedRewrites[target]);
97
+ }
98
+ exports.unsafePins = unsafePins;
@@ -23,9 +23,9 @@ const EMULATOR_UPDATE_DETAILS = {
23
23
  expectedChecksum: "311609538bd65666eb724ef47c2e6466",
24
24
  },
25
25
  firestore: {
26
- version: "1.17.2",
27
- expectedSize: 64907894,
28
- expectedChecksum: "bc56ccf2419be3242e7b53def0a51566",
26
+ version: "1.17.3",
27
+ expectedSize: 64970588,
28
+ expectedChecksum: "75beb285dc404176b974fec9e3032712",
29
29
  },
30
30
  storage: {
31
31
  version: "1.1.3",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "firebase-tools",
3
- "version": "11.29.0",
3
+ "version": "11.29.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "firebase-tools",
9
- "version": "11.29.0",
9
+ "version": "11.29.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@google-cloud/pubsub": "^3.0.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firebase-tools",
3
- "version": "11.29.0",
3
+ "version": "11.29.1",
4
4
  "description": "Command-Line Interface for Firebase",
5
5
  "main": "./lib/index.js",
6
6
  "bin": {