Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prune old versions when creating new secret version using secrets:set command #6080

Merged
merged 10 commits into from
Jul 13, 2023

Conversation

taeold
Copy link
Contributor

@taeold taeold commented Jul 5, 2023

Fixes #6074.

To make it easy to identify secret versions associated with existing functions, I made small refactoring changes on couple of functions in src/gcp/cloudfunctionsv2.ts as part of this PR.

@taeold taeold marked this pull request as ready for review July 6, 2023 17:44
import { assertExhaustive } from "../functional";
import { needProjectId } from "../projectUtils";

const FIREBASE_MANAGED = "firebase-managed";

const gcfV1PollerOptions: Omit<poller.OperationPollerOptions, "operationResourceName"> = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

*nit: we have the same poller options specified in fabricator.ts, should we keep them all in the same place?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For some crazy reason... I have to make a copy here other wise some of the value in the options are empty. I wish I knew what was going on... but not going to bother for now. Adding a comment.

Copy link
Contributor

@blidd-google blidd-google left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@codecov-commenter
Copy link

Codecov Report

Patch coverage: 65.51% and no project coverage change.

Comparison is base (0586de7) 54.60% compared to head (802d0e4) 54.61%.

❗ Current head 802d0e4 differs from pull request most recent head d9ada90. Consider uploading reports for the commit d9ada90 to get more accurate results

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #6080   +/-   ##
=======================================
  Coverage   54.60%   54.61%           
=======================================
  Files         346      346           
  Lines       23606    23619   +13     
  Branches     4856     4859    +3     
=======================================
+ Hits        12890    12899    +9     
- Misses       9537     9540    +3     
- Partials     1179     1180    +1     
Impacted Files Coverage Δ
src/deploy/functions/backend.ts 85.71% <ø> (ø)
src/deploy/functions/release/fabricator.ts 79.40% <33.33%> (ø)
src/gcp/cloudfunctionsv2.ts 59.53% <33.33%> (-0.28%) ⬇️
src/functions/secrets.ts 81.56% <80.00%> (-0.62%) ⬇️

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@taeold taeold enabled auto-merge (squash) July 13, 2023 16:45
@taeold taeold merged commit bd73173 into master Jul 13, 2023
joehan added a commit that referenced this pull request Dec 14, 2023
* Missed a few changes from comments (#6015)

* Fixed a bug in the hosting config for emulators. Also fixed an issue
where an empty folder creates an issue loading the side panel.

* Missed some changes

* Update firebase-vscode/webviews/components/EmulatorPanel.tsx

Co-authored-by: joehan <joehanley@google.com>

---------

Co-authored-by: joehan <joehanley@google.com>

* Fix firebase emulators:start crashing (#6005)

* Update proxyResponse method

* Add proper types to proxyResponse function

* Changelog

* Changelog formatting

* Update CHANGELOG.md

* Update firebase-vscode/package-lock.json

---------

Co-authored-by: joehan <joehanley@google.com>

* Revert incorrectly included code (#6022)

* Init flow frameworks cli. (#6010)

* Added init flow commands

* change region name

* Enable frameworkstacks api

* Added code review changes

* Revert unwanted changes

* Revert unwanted changes

* Revert unwanted changes

* change according to project id

* Removed unwanted statements related to projectId

* Frameworks (#6012)

* Initial commit to stacks api

* Added more properties to the Stack and Build object

* Added api calls for framework stacks

* Changed naming

* Changed naming

* Review changes

* Removed and used minimal fields

* Moved frameworks api file

* Switched most uses of track to GA4 (#6016)

* Switched most uses of track to GA4

* Move duration out of params, and improve debug logging slightly

* Release Firestore emulator 1.18.1 (#5942)

* Release Firestore emulator 1.18.1

* Update CHANGELOG.md

Co-authored-by: joehan <joehanley@google.com>

* Formatting changes in CHANGE.md

* Update CHANGELOG.md

---------

Co-authored-by: Jia You <jiayou@google.com>
Co-authored-by: joehan <joehanley@google.com>
Co-authored-by: christhompsongoogle <106194718+christhompsongoogle@users.noreply.github.com>

* Fix frameworks deploy to preview channel (#6025)

* Inject GOOGLE_CLOUD_QUOTA_PROJECT environment variable during function discovery and emulation (#5985)

When deploying functions that makes use of GCP's usage-based (not resource-based) APIs , such as Vertex AI or ML Vision API, users may see an error like this:


```
// main.py
import vertexai
# Initialize the Vertex AI client
vertexai.init()

$ firebase deploy
Failed to load function definition from source: FirebaseError: Failed to parse build specification

Caused by:
403 Vertex AI API has not been used in project 563584335869 before or it is disabled. 
```

During function discovery, `vertex.init()` makes a call to the Vertex AI with the client credentials associated with Firebase CLI . In the case of usage-based APIs, the call is being made on the Firebase CLI project, not the users project, resulting in the error message like `been used in project 563584335869 before or it is disabled.` (project `563584335869` is the Firebase CLI GCP project).

Similar issue happens when running the function on the emulator.

To workaround the issue, we have to properly override the client project associated with the Vertex AI API call. There are few ways for doing this, and here we choose to leverage `GOOGLE_CLOUD_QUOTA_PROJECT` environment variable to correctly override the quota project to be the user project associated with the Firebase CLI session.

* Reimplement Storage emulator /internal/setRules (#6014)

* stash

* commit

* commit

* lint

* fix tests

* const

* Adding JSON schema for extension yaml (#5984)

* Starting on extension.yaml json schema

* finsh extension.yaml schema

* adding events

* add billingrequired

* Adding schemas to vscode plugin too

* reverting new format for firebase-config.json

* Set up vscode plugin test flow (#6024)

* Print functions discovery to stdout/error (#5931)

* Print functions discovery to stdout/error

* More tweaking

* lint fixes

* Use logger instead of console to work with --json

---------

Co-authored-by: Daniel Lee <danielylee@google.com>

* Bump firebase-frameworks version in constants.ts (#6038)

Fixes compatibility with latest Next.js

* Revert emulators changes (#6030)

* Fix table in CONTRIBUTING.md (#6029)

Multi-line table syntax is not supported in GitHub Markdown.

* Implement module to link stack to GitHub repository (#5793)

* add internal testing cmd for connecting gh to cloud build repos

* use regex to extract repo slug

* add comments

* add unit tests

* fix tests

* refactoring & allow changing gh app access settings

* refactor & update unit tests

* add comments & change internaltesting name

* rename to composer

* Imporved extensions metrics (#6037)

* Switched most uses of track to GA4

* Move duration out of params, and improve debug logging slightly

* Improved metrics for extensions

* formats

* 12.4.1

* [firebase-release] Removed change log and reset repo after 12.4.1 release

* Refactored ext:install to use the latest extension metadata. (#5997)

* Added cascading of latest approved version to latest version when installing.

* Changed output of extension version info.

* Formatting, added more metadata, and cleaned up TODOs.

* Formatting and extra notices.

* Added even more metadata.

* Formatting.

* Fixing tests.

* Added display of extension resources.

* Added link to Extensions Hub.

* Added displaying of events.

* Formatting.

* Formatting.

* Version bug.

* Added displaying of secrets and task queues.

* Added displaying of external services.

* Fixed resolveVersion() + tests.

* Added tests for displayExtensionInfo().

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: joehan <joehanley@google.com>

* Better messaging and parameterizing.

* Update displayExtensionInfo.ts

* Update displayExtensionInfo.spec.ts

* Update CHANGELOG.md

---------

Co-authored-by: joehan <joehanley@google.com>

* Discovery: Added node runtime. (#5993)

* Added runtime command discovery

* Resolved comments

* Added error case to analyse codebase method

* Updated install command

* Reorganized tests and removed unwated promise.resolve stmt

* Added review changes on install command and node version string array

* Changes to node.ts to include additional condions on run script

* Added code comments to types

* Added undefied to return if no cmd

* Added undefied to return if no cmd

* Increased create extensions instance timeout to 1h to match the backend (#5969)

* Normalized extension root path before usage in ext:dev:upload. (#6054)

* Normalized extension root path before usage.

* Update CHANGELOG.md

* Update publisherApi.ts

* Update extensionsHelper.ts

* Update CHANGELOG.md

* Replaced join() with normalize() and fixed regex.

* Update extensionsHelper.ts

* Update extensionsHelper.ts

* Migrates functions metrics to GA4  (#6053)

* track functions metrics with ga4

* remove old track() calls

* Fix incorrect warnings when emulating extensions with httpsTriggers (#6055)

* Only record metrics if user confirms ext:install (#6047)

* Only record metrics if user confirms ext:install

* format

* Added descriptive error when repo is private or not found during ext:dev:upload. (#6052)

* Added more descriptive error message when repo is private (or not found).

* Formatting.

* Formatting.

* Update CHANGELOG.md

---------

Co-authored-by: joehan <joehanley@google.com>

* Allow $schema property in firebase.json (#6051)

* Allow $schema property in firebase.json

* Add $schema property via firebaseConfig.ts

---------

Co-authored-by: joehan <joehanley@google.com>

* Run lifecycle hooks for specific functions (#6023)

* run lifecycle hooks for individual functions

* 12.4.2

* [firebase-release] Removed change log and reset repo after 12.4.2 release

* Integrate discovery with composer (#6042)

* Added runtime command discovery

* Resolved comments

* Added error case to analyse codebase method

* Updated install command

* Reorganized tests and removed unwated promise.resolve stmt

* Added review changes on install command and node version string array

* Changes to node.ts to include additional condions on run script

* Added code comments to types

* Integrate discovery with composer

* Minor modification

* Minor changes

* Minor changes

* Resolved code commits

* Added undefied to return if no cmd

* Added undefied to return if no cmd

* Added frameworkhook interface

* code comments

* format error msg

* format error msg

* format error msg

* format error msg

* Code comments

* Fixed imports and compose command

* Fix bugs.

* Update base image for node runtime.

* bug fix

* bug fix

* Remove hooks

---------

Co-authored-by: Daniel Young Lee <danielylee@google.com>

* VSCode plugin: Workarounds for functions code + Monospace settings (#6056)

* Git to cloud build (#6044)

* Initial commit integrate init with api

* Revert "Initial commit integrate init with api"

This reverts commit 14751512d769d675e9d9fc624c34dfe41f461f0e.

* removed internaltesting:frameworks:int command

* integrate git repo with cloudBuildRepo

* Added changes to create stack

* Added changes to create stack

* Added code to omit output fields in Stack

* Added poller operation

* Added poller operation

* Added code to integrate init flow to link Git repo and to call frameworks api

* Minor changes

* minor changes

* deleted output file

* Rearranged files

* Fix imports

* Reorganized files

* minor changes

* Frameworks: Call "next build" from command line instead of import (#6066)

* Add support for running package manager install command. (#6064)

* Release Firebase Emulator UI v 1.11.7 (#6079)

* Release Firebase Emulator Ui v 1.11.7

* Update commit

---------

Co-authored-by: joehan <joehanley@google.com>

* Update firebase open links (#6073)

* Update firebase open links

* adding changelog

---------

Co-authored-by: joehan <joehanley@google.com>

* 12.4.3

* [firebase-release] Removed change log and reset repo after 12.4.3 release

* VSCode plugin: Handle service accounts better (#6078)

* Disables KeepAlive timeout when debugger is attached to the functions emulator (#6069)

Node.js 19 introduced a change that sets `keepAlive` to true by default, with a default keep-alive duration of 5 seconds. This change broke our functions emulator behavior when a debugger was attached, as the Node.js HTTP server would consider the connection to be idle when a breakpoint was hit and disconnect after 5 seconds. This PR disables HTTP Keep-Alive and sets the socket timeout to 0 so that breakpoints won't cause the connection to timeout.

Fixes https://github.com/firebase/firebase-tools/issues/5991.

* Make firebase:database:list to always use the RTDB management API (#6063)

* remove rtdbmanagement experiment

* rm firedata api

* m

* avoid breaking changes

* m

* doc

* Update database-instances-list.ts

* Update CHANGELOG.md

* Clarifying what the CLI does with dynamic content on next.js (per customer feedback). (#6093)

* Rewrite `src/localFunction.js` in TypeScript. (#6092)

`src/localFunction.js` is used to power the `functions:shell` command. We need to make substantial changes to it to properly support 2nd Gen functions (https://github.com/firebase/firebase-tools/issues/6089). Rewriting the source in modern TypeScript as a prep.

* VSCode plugin: Add UX improvements (#6091)

* Round of dependabot updates (#6116)

* Bump tough-cookie in /scripts/webframeworks-deploy-tests/angular (#6097)

Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump semver and npm in /standalone (#6107)

Bumps [semver](https://github.com/npm/node-semver) to 7.5.4 and updates ancestor dependency [npm](https://github.com/npm/cli). These dependencies need to be updated together.


Updates `semver` from 7.5.1 to 7.5.4
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.1...v7.5.4)

Updates `npm` from 6.14.18 to 9.8.0
- [Release notes](https://github.com/npm/cli/releases)
- [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md)
- [Commits](https://github.com/npm/cli/compare/v6.14.18...v9.8.0)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
- dependency-name: npm
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump semver from 7.3.8 to 7.5.4 in /scripts/emulator-tests/functions (#6106)

Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.8...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump semver from 7.3.8 to 7.5.4 in /scripts/triggers-end-to-end-tests/v1 (#6105)

Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.8...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump semver in /scripts/triggers-end-to-end-tests/triggers (#6104)

Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.8...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump semver from 7.3.8 to 7.5.4 in /scripts/triggers-end-to-end-tests/v2 (#6103)

Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.8...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump @grpc/grpc-js and google-gax in /scripts/emulator-tests/functions (#6084)

Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) and [google-gax](https://github.com/googleapis/gax-nodejs). These dependencies needed to be updated together.

Updates `@grpc/grpc-js` from 1.7.3 to 1.8.17
- [Release notes](https://github.com/grpc/grpc-node/releases)
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.7.3...@grpc/grpc-js@1.8.17)

Updates `google-gax` from 3.5.3 to 3.6.0
- [Release notes](https://github.com/googleapis/gax-nodejs/releases)
- [Changelog](https://github.com/googleapis/gax-nodejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/gax-nodejs/compare/v3.5.3...v3.6.0)

---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
  dependency-type: indirect
- dependency-name: google-gax
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel Lee <danielylee@google.com>

* Bump @grpc/grpc-js and google-gax (#6083)

Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) and [google-gax](https://github.com/googleapis/gax-nodejs). These dependencies needed to be updated together.

Updates `@grpc/grpc-js` from 1.7.3 to 1.8.17
- [Release notes](https://github.com/grpc/grpc-node/releases)
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.7.3...@grpc/grpc-js@1.8.17)

Updates `google-gax` from 3.5.3 to 3.6.0
- [Release notes](https://github.com/googleapis/gax-nodejs/releases)
- [Changelog](https://github.com/googleapis/gax-nodejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/gax-nodejs/compare/v3.5.3...v3.6.0)

---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
  dependency-type: indirect
- dependency-name: google-gax
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump @grpc/grpc-js and google-gax (#6082)

Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) and [google-gax](https://github.com/googleapis/gax-nodejs). These dependencies needed to be updated together.

Updates `@grpc/grpc-js` from 1.7.3 to 1.8.17
- [Release notes](https://github.com/grpc/grpc-node/releases)
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.7.3...@grpc/grpc-js@1.8.17)

Updates `google-gax` from 3.5.3 to 3.6.0
- [Release notes](https://github.com/googleapis/gax-nodejs/releases)
- [Changelog](https://github.com/googleapis/gax-nodejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/gax-nodejs/compare/v3.5.3...v3.6.0)

---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
  dependency-type: indirect
- dependency-name: google-gax
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump @grpc/grpc-js and google-gax (#6081)

Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) and [google-gax](https://github.com/googleapis/gax-nodejs). These dependencies needed to be updated together.

Updates `@grpc/grpc-js` from 1.7.3 to 1.8.17
- [Release notes](https://github.com/grpc/grpc-node/releases)
- [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.7.3...@grpc/grpc-js@1.8.17)

Updates `google-gax` from 3.5.3 to 3.6.0
- [Release notes](https://github.com/googleapis/gax-nodejs/releases)
- [Changelog](https://github.com/googleapis/gax-nodejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/gax-nodejs/compare/v3.5.3...v3.6.0)

---
updated-dependencies:
- dependency-name: "@grpc/grpc-js"
  dependency-type: indirect
- dependency-name: google-gax
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump semver from 5.7.1 to 7.5.2 (#6035)

Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v7.5.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump socket.io-parser in /scripts/webframeworks-deploy-tests/angular (#5928)

Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.2 to 4.2.4.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io-parser/compare/4.2.2...4.2.4)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel Lee <danielylee@google.com>

* fix spelling errors in functions (#6087)

Co-authored-by: joehan <joehanley@google.com>

* Fix requireAuthWrapper logic and service account email detection (#6115)

* Better logging to help debug login issues (#6119)

* Better logging to help debug login issues

* formats

* Disabling flaky test on windows (#6122)

* 12.4.4

* [firebase-release] Removed change log and reset repo after 12.4.4 release

* Prune old versions when creating new secret version using `secrets:set` command (#6080)

Fixes https://github.com/firebase/firebase-tools/issues/6074.

To make it easy to identify secret versions associated with existing functions, I made small refactoring changes on couple of functions in `src/gcp/cloudfunctionsv2.ts` as part of this PR.

* VSCode Plugin: Better error handling for init and deploy (#6124)

* VSCode plugin: Disable Google login flow in monospace environment (#6131)

* Improve error message when functions:shell command fails due to missing project association. (#6088)

**Before**:

```
$ firebase functions:shell
Error: An unexpected error has occurred.
```

**After**:

```
$  firebase functions:shell
Error: No currently active project.
To run this command, you need to specify a project. You have two options:
- Run this command with --project <alias_or_project_id>.
- Set an active project by running firebase use --add, then rerun this command.
To list all the Firebase projects to which you have access, run firebase projects:list.
To learn about active projects for the CLI, visit https://firebase.google.com/docs/cli#project_aliases
```

Fixes https://github.com/firebase/firebase-tools/issues/6070

* Fix issue where Flutter Web is not detected as a web framework (#6140)

* Fix issue where Flutter Web is not detected as a web framework

* b/390633880 fix --only in firestore deploy (#6129)

b/390633880

* Better message for api enablement failures (#6130)

* Patch fix for issues caused by adding type check in #5906 (#6127)

* Next.js image optimization fixes (#6143)

* fix Next.js optimization for latest version

* fix unit tests

* `isUsingNextImageInAppDirectory` tests

* move Next version logic to getNextVersion + tests

* remove findDependency stubs

---------

Co-authored-by: Alex Astrum <alexastrum@gmail.com>

* Updating proxy-agent (#6160)

* Updating proxy-agent

* changelog

* 12.4.5

* [firebase-release] Removed change log and reset repo after 12.4.5 release

* Clarifying the difference between experimental and preview docs for c… (#6149)

* Clarifying the difference between experimental and preview docs for contributors.

* Adding a guide for Astro experimental support.

* Update src/frameworks/docs/astro.md per Austin's suggestion.

Co-authored-by: Austin Crim <aust.crim@gmail.com>

* Update src/frameworks/docs/astro.md per suggestion.

Co-authored-by: Austin Crim <aust.crim@gmail.com>

---------

Co-authored-by: Austin Crim <aust.crim@gmail.com>

* Next.js glob fix (#6166)

* replace `Glob` with `* as glob`

* use glob sync for testability

* changelog

* for await > for

* add image test to Next.js deploy tests

* add static image.html to expected build files

* Make Extensions TOS calls best effort (#6167)

* Starting to make TOS checks and acceptance best effort

* Fixing fallthrough behavior

* changelog

* Send enabled experiments to the UI (#6169)

* Update CHANGELOG.md for emulator UI experiments (#6174)

Add a changelog entry for #6169

* 12.4.6

* [firebase-release] Removed change log and reset repo after 12.4.6 release

* Remove proxy-agent stub (#6172)

* Support 2nd Gen functions in `functions:shell` command (#6096)

Fixes https://github.com/firebase/firebase-tools/issues/6089

* Require auth for functions:secrets family of commands. (#6190)

Need requireAuth call to properly setup credentials when developer is relying on  GOOGLE_APPLICATION_CREDENTIALS.

Fixes https://github.com/firebase/firebase-tools/issues/6186

* Removing Django variables from experimental Astro guide (#6165)

* Removing Django variables from experimental Astro guide.

* Fixing some minor differences in my local copy.

* Vscode version 0.0.24 (#6185)

* New version

* Better handling when updating from LOCATION to system param (#6202)

* Better handling when updating from LOCATION to system param

* test fix

* Format

* Use the correct spec in test

* Improve error message when `firebase init hosting:github` fails because of key limit. (#6192)

* Improve error message when  fails because of key limit.

* Added a constant for service account max key number

* Disambiguate logging for framework discovery (#6203)

* Disambiguate logging for framework discovery

* format

* Storage tests (#6209)

* Update this test to use more files and download in parallel.

* Fixing a couple typos and adding version info. (#6211)

* Fixing a couple typos and adding version info.

* Rewording per feedback from leoortiz.

* 12.4.7

* [firebase-release] Removed change log and reset repo after 12.4.7 release

* Increase Next.js config bundle timeout to 60s (#6214)

* increase bundle next config timeout to 60s

* changelog

* Create stack (#6095)

* Create stack

* Get or Create stack

* small correction

* tests

* Added createStack method

* comment updated

* Added tests

* Modified tests

* Minor change

* Minor change

* Minor change

* Added env var for placeholder

* Restructure code

* Minor change code

* Minor change

* Minor change

* Minor change

* Test comments

* Minor change

* Removed codebase

* Bug fix

* Code comments

* Minor changes

* Minor changes

* Minor changes

* Minor changes

* Web frameworks - Fix Astro config loading (#6213)

* change config loading depending on version

* compare correct version

* update changelog

* remove fs

* extract configPath

* Switch functions emulator https body limit to 32mb (#6207)

* Switch functions emualtor https body limit to 32mb

* Add changelog

* Changelog

* Hide confusing debug logs (#6220)

* Tweaks to comply with DevSite linter and Jen. (#6221)

* Add `sveltekit.md` (#6232)

* add sveltekit readme

* tweaks

* clarify static/server deployment

* more static/server clarification

* pr comments

* Add frameworks/docs/react.md (#6233)

* Add frameworks/docs/react.md

* Suggested update.

---------

Co-authored-by: egilmorez <egilmore@google.com>

* Update autogenerated auth emulator files (#6234)

* Adding basic script to build a Firebase Docker image (#6094)

* Adding basic script to build a Firebase Docker image

* Fixing vulnerabilty in base image

* Format

* Refactor webview registration to cut down on boilerplate (#6257)

* VSCode plugin: fix predeploy call (#6238)

* Revert "Hide confusing debug logs (#6220)" (#6263)

This reverts commit 9b6c1d81b9a7b46954f2f4d54418bdccceaa0e7f.

* 12.4.8

* [firebase-release] Removed change log and reset repo after 12.4.8 release

* Consolidate extension-state into context (#6259)

* Consolidate extension-state into context

* Ability to easily re-use in other webviews
* Quick access to state via hooks
* Signals are the new hot-ness, surgical UI updates
* BONUS: enable strict-mode

Note - this isn't _replacing_ the legacy SidebarApp internal-state, that should be a follow-up effort.

* Improve performance and reliability when deploying multiple 2nd gen functions using single builds (#6275)

* use single builds in v2

* reset token after scraper times out

* Fix issue where extensions emulator would error if params = undefined (#6272)

* Fix issue where extensions emulator would error is params = undefined

* changelog

* Remove test that was leaking into network

* Remove unnecessary node_modules check

* Fix bundle next.config.js (#6287)

* add esbuild version to `npx esbuild`

* pin esbuild version

* changelog

---------

Co-authored-by: Alex Astrum <sandu@google.com>

* fix broken nextjs docs links (#6288)

* 12.5.0

* [firebase-release] Removed change log and reset repo after 12.5.0 release

* Fix issue with mixed v1 and v2 functions deployments (#6293)

* fix source token scraper issue

* 12.5.1

* [firebase-release] Removed change log and reset repo after 12.5.1 release

* fix: error message typo (#6294)

* Revert "Fix issue with mixed v1 and v2 functions deployments (#6293)" (#6295)

This reverts commit d44e23653715c2f5225663e6e9cbe5d64e6bc847.

* Revert "Improve performance and reliability when deploying multiple 2nd gen functions using single builds (#6275)" (#6296)

This reverts commit eea3e2256121ab2648a764d007222e88b86de344.

* Changelog entry for rolling back single build support (#6297)

* Changelog for rolling back single build support

* Changelog for rolling back single build support

* Changelog for rolling back single build support

* 12.5.2

* [firebase-release] Removed change log and reset repo after 12.5.2 release

* Roll back standalone to npm@8.x.x, remove redundant configs (#6300)

* Roll back standalone to npm@8.x.x, remove redundant configs

* Adding CHANGELOG entry

* Add Quickstart Button to `SidebarPanel`  (#6277)

* Added flow w/ button example

* Added dialog for selecting files

* Changed workflow.ts

* additionaln commands in workflow.ts

* Update command for new dir structure and add conditional render of sidebar panel button

* Clean up CLI command

* Added comments

* Add pluginLogger and try/catch block

* Change brackets

* Added additional pluginLogger calls

* Vscode emulators (#6256)

* Branch for emulator features in the VSCode extension.

* add Vite and related frameworks readme (#6289)

* add svelte.md

* consolidate to vite.md

* pr comments

* VSCode plugin: Set up working unit test framework (#6314)

* Fixed the regex in extensions changelog parser to lazy match the version prefix to allow matching higher versions (#6326)

* Port over config load/watch to signals (#6328)

* Move emulator lifecycle to disposable wrapper (#6329)

* Move vscode environment to signal (#6333)

* Better handling when emulators crash (#6331)

* Pull settings (and generic listeners) out of workflow (#6334)

* Pull settings (and generic listeners) out of workflow

* Ensure logSetup is called before any log statements

* Fork user logic into singal based disposable (#6336)

* Don't prompt for OOB change confirmation in noninteractive mode (#6337)

* Don't prompt for OOB change confirmation in noninteractive mode

* add changelog

* Move quickstart functionality to disposable (#6342)

* and out of workflow

* First pass at moving projects to singals (#6338)

TODO: need to teardown the old picker at the same time as we build the new picker

* 12.5.3

* [firebase-release] Removed change log and reset repo after 12.5.3 release

* Move vscode hosting functionality to disposable pattern (#6343)

* Turndown workflow file (#6348)

Updated project-picking at the same time (could only have one picker at a time)

* Released Firestore emulator v1.18.2. (#6354)

- Removed nano precision in timestamp used in Firestore emulator (#5893)
  - Fixed a bug where query behaves differently from production.

* Fix output buffer pipe issue (#5310)

* Fixed issue where piped results were truncated

* Fixed pipe limit issue

* Update CHANGELOG.md

---------

Co-authored-by: joehan <joehanley@google.com>

* Revert "Fix output buffer pipe issue (#5310)" (#6358)

This reverts commit 8cf0fd24016f23686562e2036ca4a02f39fc0ca4.

* Add loading and success/error toasts to emulator start/stop (#6344)

* Add loading + success/error notifs to emulator start/stop

* remove commented out code

* Ensure long outputs are written to stdout before exiting process (#6359)

* Ensure long outputs are written to stdout before exiting process

* Cleaning up old approach

* format

* formats changelog

* 12.5.4

* [firebase-release] Removed change log and reset repo after 12.5.4 release

* update config to watch for "getInitialData" (#6360)

* Added description for experiments:list command (#6363)

* fix `npm root` issues on Next.js deploy (#6372)

* increase npm root timeout to 5s

* memoize npm root

* changelog

* Fix npm packaging so that npm commands work (#6367)

Co-authored-by: joehan <joehanley@google.com>

* Added a check to see if export target folder is empty (#6357)

* check if export target folder is empty

* Updated CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: joehan <joehanley@google.com>

* Changed promptOnce to confirm

---------

Co-authored-by: joehan <joehanley@google.com>

* Improve performance and reliability when deploying multiple 2nd gen functions using single builds (#6376)

* enable single builds v2

* Fix Issue #6382 Firebase not working for NextJs >=v13.5.0 (#6404)

* Fix Issue #6382 Firebase not working for NextJs >=v13.5.0

Fixes https://github.com/firebase/firebase-tools/issues/6382

Due to braking changes on the signature of loadConfig (https://github.com/vercel/next.js/blob/d96e0258de2caf34e9322d0d32ab5748533c4465/packages/next/src/server/config.ts#L784) Firebase does not deploy correctly.

* Changelog

---------

Co-authored-by: Ferid Zuber <feridyz@gmail.com>

* Fix retry for event triggered functions (#6391)

* linking up retry to the api call

* add changelog entry

---------

Co-authored-by: joehan <joehanley@google.com>

* 12.6.0

* [firebase-release] Removed change log and reset repo after 12.6.0 release

* Support non-ASCII file names in `appdistribution:distribute` (#6409)

* Use default bucket api (#6406)

* Call GetDefaultBucket in FirebaseStorage

* Correctly set FUNCTION_TARGET for grouped functions (#6410)

* Fix service account option to be a param (#6389)

* treat the service account option as a param

* add changelog entry

---------

Co-authored-by: joehan <joehanley@google.com>

* 12.6.1

* [firebase-release] Removed change log and reset repo after 12.6.1 release

* Use correct bucket name field when reading DefaultBucket for storage (#6420)

* Correctly set FUNCTION_TARGET for multilevel grouped functions (#6423)

Co-authored-by: joehan <joehanley@google.com>

* Fixed an issue where functions deployment required a new permission. (#6425)

* - Fixed an issue where functions deployment required a new permission.

* pretty

---------

Co-authored-by: joehan <joehanley@google.com>

* 12.6.2

* [firebase-release] Removed change log and reset repo after 12.6.2 release

* Allow enabling and disabling PITR on Firestore databases (#6427)

Also show Point In Time Recovery setting, earliest version time, and version retention period on get

* Rename frameworks experiment to internalframeworks to avoid confusion. (#6439)

* Rename frameworks experiment to internalframeworks to avoid confusion.

* Missed a spot.

* Resolve vpc value prior to checking it's value (#6332)

* fix: resolve vpc value prior to checking it's value

closes #6327

* chore: correct endpoint resolution

* style: correct linting

* fix: do not overwrite entire object

---------

Co-authored-by: joehan <joehanley@google.com>

* Add verbosity flag (#6429)

* Add verbosity flag

* Fixme fix

* Changed name, added SILENT

---------

Co-authored-by: joehan <joehanley@google.com>

* Ignore Firestore emulator host on functions deploy (#6442)

* do not read firestore emulator env var on deploy

Co-authored-by: joehan <joehanley@google.com>

* Adding changelog for #2859 and #6327 (#6440)

* Fix type mismatch for parametrized function region (#6205)

* fix type mismatch for region param

* 12.7.0

* [firebase-release] Removed change log and reset repo after 12.7.0 release

* Enable preferRest option by default for Firestore functions (#6147)

* enable preferRest option by default

* update changelog

* Update CHANGELOG.md

Co-authored-by: Jeff <3759507+jhuleatt@users.noreply.github.com>

* Fix bug where 2nd Gen firestore functions were mistakenly parsed as pubsub function (#6456)

Firestore trigger also includes pubsubTopic since they use pubsub as transport. This triggered a bug where 2nd Gen Firestore bugs were being parsed as pubsub function which manifests in bugs like https://github.com/firebase/firebase-tools/issues/6453.

* Update CHANGELOG.md to include #6453 (#6464)

* Update CHANGELOG.md to include #6453

* Update CHANGELOG.md

---------

Co-authored-by: joehan <joehanley@google.com>

* corrects regex for domain matching authorized domains (#6479)

* corrects regex for domain matching authorized domains

* add changelog

* Init flow demo (#6218)

* testing

* testing

* Init demo flow

* Create Stack request body changed

* Updated CRUD API's for stacks

* Updated changes

* updated comments

* Update CRUD options

* resolved comments

* resolved comments

* resolved comments

* Changing stack to backend in APIs

* Added changes to modify api

* minor change to region

* Added error messages

* catch block added

* Added few changes

* Returned stack

* Return stack

* Added return statements

* Removed comments

* changed comments

* Added minor change

* Format code

* Format code

* 12.8.0

* [firebase-release] Removed change log and reset repo after 12.8.0 release

* Svn main 001 rem (#6486)

* Change name from stack to backend

* Change name from stack to backend

* changed file names

* changed file names in experiments

* changed name

* lower case backend

* Fix two issues with Firestore database updating: (#6478)

* Performing an update on a Datastore mode database could silently change it to Firestore Native
* Enabling PITR (--point-in-time-recovery=ENABLED) while not specifying --disaster-recovery=ENABLED
  would silently disable disaster recovery, and vice-versa

 The former issue was due to always sending FIRESTORE_NATIVE as the database type, when we
 actually didn't need to send it at all. The latter issue was due to command-line option
 parsing that assumed not specifying an option was equivalent to sending an explicit DISABLE.

* Svn main 001 rem (#6489)

* Change name from stack to backend

* Change name from stack to backend

* changed file names

* changed file names in experiments

* changed name

* lower case backend

* Changed stack to backend

* change stack to backend in index file

* List stacks in table

* Backends for project message

* resolve merge conflicts

* removed linter errors

* changed table head color to green

* test method stack to backend

* Changed stack to backend (#6488)

* Changed stack to backend

* change stack to backend in index file

* List stacks in table

* Backends for project message

* Changed file names

* removed linter errors

* change file names from stack to backend

* changed table head color to green

* test method stack to backend

* changed file name

* 12.8.1

* [firebase-release] Removed change log and reset repo after 12.8.1 release

* Svn main 001 rem (#6492)

* Change name from stack to backend

* Change name from stack to backend

* changed file names

* changed file names in experiments

* changed name

* lower case backend

* Changed stack to backend

* change stack to backend in index file

* List stacks in table

* Backends for project message

* resolve merge conflicts

* removed linter errors

* changed table head color to green

* test method stack to backend

* Changed stack to backend (#6488)

* Changed stack to backend

* change stack to backend in index file

* List stacks in table

* Backends for project message

* Changed file names

* removed linter errors

* change file names from stack to backend

* changed table head color to green

* test method stack to backend

* changed file name

* Change Stack objects to Backend (#6490)

* Change Stack objects to Backend

* formatted files

* Fix blocking functions in the emulator when using multiple codebases (#6504)

* fix emulator bug

* Add changelog entry

* Add force flag call-out for bypassing prompts (#6506)

* add min instances callout

* add changelog entry

* update to skip all prompts

* Ensure functionsEmulator respects logVerbosity (#6521)

* adds a check for a hosting site to exist in hosting init (#6493)

* adds a check for a hosting site to exist in hosting init

* formatting is hard

* sites:create now will better prompt for a site name if one isn't provided

* fix non-interactive flow

* better organize catch block

* protect deploy and channel:deploy with errors

* linting is hard

* always make good and valid suggestions for site creation

* formatting is hard

* rm experiment

* add changelog

* Revert "Enable preferRest option by default for Firestore functions" (#6520)

* revert enabling preferrest by default

* 12.9.0

* [firebase-release] Removed change log and reset repo after 12.9.0 release

* fix issues where project ID was missing in Hosting setup (#6528)

* fix issues where project ID was missing in Hosting setup

fixes #6527

* formatting is SO HARD

* 12.9.1

* [firebase-release] Removed change log and reset repo after 12.9.1 release

* Updated backends:list command. (#6519)

* Updated backends:list command w.r.t M2

* formatting file

* Added changes to backends:list

* resolved linter errors

* Updated delete command for M2 (#6525)

* Updated delete command for M2

* removed unused variable

* Added changes to backends:get operation for M2 (#6524)

* Added changes to backends:get operation for M2

* Modified backends:get command

* Modified backends:get command swapped position of location and uri in output

* updated error message

* updated location in all rows

* resolved unsupported argument errors

* change error to info meassage

* Updated the backends:create flow for M2. (#6518)

* Updated the backends:create flow for M2.

* added branch as main to send

* changes to output

* Angular v17 support  (#6480)

* Updated the documentation to reflect Angular v17
* Added support for the application builder
* Renamed the existing builders to LEGACY_* so it's clearer the code we can deprecate later
* Cleaned up some of the mess in getContext & adding more guardrails

---------

Co-authored-by: Paweł Kubiak <43759569+9kubczas4@users.noreply.github.com>

* Feature: login:use can be used outside of Firebase project to change the global default account. (#6533)

* logic: set user outside proj

* remove: comment out

* remove: log, lint

* add: change log

* Don't prompt on non-interactive mode (#6541)

* Don't prompt on non-interactive mode

* Updated changelog

* Updated changelog

---------

Co-authored-by: joehan <joehanley@google.com>

* fix: properly warn users not to use "=" character in pre or post deploy commands (#6503)

Co-authored-by: joehan <joehanley@google.com>

* Better error message when failing to fetch MOTD (#6556)

* Better error message when failing to fetch MOTD

* Update src/fetchMOTD.ts

Co-authored-by: Bryan Kendall <bkend@google.com>

* format

---------

Co-authored-by: Bryan Kendall <bkend@google.com>

* BREAKING: Ignore 'functions' directory in a Firebase project without a functions config in firebase.json (#6555)

Historically, Firebase CLI reserved directory named `functions` inside a Firebase project directory for use by Cloud Functions for Firebase. This meant that if `functions` directory exists, it was assumed to hold CF3 source code.

However, we recognize that there are valid use case for using `functions` directory name, especially in monorepo-like setups.

With this change, Firebase CLI will only reserve `functions` directory when there is a `functions` configuration entry in firebase.json that does not specify the `source` directory.

This change will be released in the next breaking change of the Firebase CLI (v13).

Fixes https://github.com/firebase/firebase-tools/issues/6450

* Fix Angular SSR deployment on Windows (#6544)

fixes #6543

* On NextJS deploy check if `not-found` is static (#6558)

* use only site id in list versions API (#6565)

* Install missing dependencies during clean install by default (#6572)

Currently npx prompts for confirmation from user to install missing dependencies
when running the script. However, there is now a use case (b/299490916) that
requires the script to be run unattendedly. `--yes` suppresses the prompt
(https://docs.npmjs.com/cli/v10/commands/npx).

See b/299490916 and go/firebase-3p-frameworks-compatibility-testing for more details.

* Add utility function to list GCB connections w/ well-known names. (#6535)

Update naming convention for GCB connection maintained by the frameworks service. In the meantime, add a small utility feature that can filters all GCB connections for frameworks-maintained ones.

* Make FIREBASE_FRAMEWORKS_VERSION injectable for testing (#6571)

* Make FIREBASE_FRAMEWORKS_VERSION injectable for testing

When `internaltesting` experiment is enabled, the value for
`FIREBASE_FRAMEWORKS_VERSION` shall be derived from the environment
variable with the same name.

This is only intended for testing purposes. Code behavior for
production does not change.

---------

Co-authored-by: James Daniels <jamesdaniels@google.com>

* Manage GCB connection resources more efficiently (#6536)

During onboarding, the CLI will create only the necessary GCB connection and repositories.

Unlike previous implemention where a connection was created per project/region, the new algorithm manages a single "oauth" connection resource and the same project/region connection. The new implementation also biases heavily towards reusing the GCB connection when any valid connection already exists in the project.

See internal doc for more detail.

The specific format for naming the GCB connection resource is one shared with the Firebase console so that all Firebase client manages the GCB resource in the same way.

* Launch/v13.0.0 (#6559)

* Update min node version to 18, add 20 to supported versions & CI

* Update min node version to 18, add 20 to supported versions & CI (#6447)

* Update min node version to 18, add 20 to supported versions & CI

* Fix broken unit test

* Bump dockefiles to Node 20 as well

* Skip frameworks test for now so that it doesn't run indefinitely

* GetStorageDefaultBucket through Storage API (#6471)

* GetStorageDefaultBucket through Storage API

* pretty it up

* Update CHANGELOG.md

---------

Co-authored-by: joehan <joehanley@google.com>

* Remove 'request' from 'functions:shell' (#5808)

* removing request and api from functions shell

* typing is powerful

* return sentinal value on http function to avoid weird output

* fix get/post functions to accept data

* spelling is hard

* Cleaning up old code

* Replace request with a shim

* refactoring to pipe through body correctly

* Use correct function signature

* format

* format

* remove overly specific error message

* remove request from storage-integration-test

* formats

---------

Co-authored-by: Bryan Kendall <bkend@google.com>

* Removing deprecated ext:dev:publish, as promised (#6522)

* Added CHANGELOG entries

* Updating various test dependencies

* Update functions node version error message

* First crack at getting webframeworks tests back up and running (#6573)

* First crack at getting webframeworks tests back up and running

* More dep upates, specify type:modules for functions

* Update Angular

* --exit on mocha, fixes for Angular

* Lint

* Next14

* Couple nextjs tests

* More stuffs

---------

Co-authored-by: James Daniels <jamesdaniels@google.com>

* Better error message for missing storage default bucket (#6575)

* Better error message for missing storage default bucket

* ===

* ===

* format

---------

Co-authored-by: abhis3 <abhisun@google.com>
Co-authored-by: Bryan Kendall <bkend@google.com>
Co-authored-by: James Daniels <jamesdaniels@google.com>

* 13.0.0

* [firebase-release] Removed change log and reset repo after 13.0.0 release

* Fix tiny bug where backends:list command fails when API responds without any backend resources. (#6547)

Previously, the command threw an error given a project with no backends.

* Ensure API is enabled for frameworks commands. (#6548)

Before running any frameworks command, we ensure that the API is enabled.

* Allow GCB repos to be reused in backend. (#6579)

Previously, we assumed that each new GCB Repository resource would be associated with at most 1 backends. Our new data model now allows GCB Repository to be reused across different backends. Updating code to reflect the change.

* Include serving locality in create backend requests. (#6577)

Backends resource now require setting up servingLocality when creating a new backend.

* Prompt required IAM permission during frameworks onboarding. (#6576)

Before the CLI attempts to create a connection to GitHub using the Cloud Build API, the CLI now prompts the user if they want the CLI to grant the necessary IAM permissions on the Cloud Build Service Agent (as documented in the [Cloud Build public doc](https://cloud.google.com/build/docs/automating-builds/github/connect-repo-github?generation=2nd-gen#iam_perms)):

```
i To create a new GitHub connection, Secret Manager Admin role (roles/secretmanager.admin) is required on the Cloud Build Service Agent.
? Grant the required role to the Cloud Build Service Agent? Yes
✅ Successfully granted the required role!
```

* Make consistent use of logger during backends onboarding (#6578)

Use utility log functions, like logBullet, instead of raw logger for consistent log style during backends onboarding.

e.g.

**Before**
```
i  First we need a few details to create your backend.
? Create a name for your backend [1-30 characters] adsad
? Please select a region (info: Your region determines where your backend is located):
 us-central1 (Iowa)
✔  Region set to us-central1.

=== Connect a GitHub repository
To create a new GitHub connection, Secret Manager Admin role (roles/secretmanager.admin) is required on the Cloud Build Service Agent.
...
```

**After**
```
...
i === Connect a GitHub repository
i To create a new GitHub connection, Secret Manager Admin role (roles/secretmanager.admin) is required on the Cloud Build Service Agent.

...
...

* Refactor createBackend and other utility functions. (#6580)

As written, various utility command used for onboarding uses untyped `setup` object. Making a small refactoring here to explicitly pull out `backenId`, `locations`, and other variables that's used throughout the module.

* Update backends:get command to match approved API design. (#6581)

As written, `backend:get` accepts a `--backend` flag:

```
firebase backends:get --backend foo
```

However, the approved API design accepts backend as an argument instead:

```
firebase backends:get foo
```

* ng-deploy may not have configurations configured... (#6584)

* Grab the raw options, if a configuration isn't present
* Accept serveTarget from ng-deploy, setting this by default in angularfire@17

* Add well known version ranges to Web Frameworks (#6562)

* Limit web frameworks generated functionId to 20 chars max (#6260)

* [Fix] Astro relatives dirs (#5709)

Use fileURLToPath to address astro relative directories

---------

Co-authored-by: James Daniels <jamesdaniels@google.com>

* Strip special characters from vite output (#6588)

Fix issue #5561 emulators not starting with vite

---------

Co-authored-by: Viktor Sotov <sotov.victor@gmail.com>
Co-authored-by: sotovviktor <70816266+sotovviktor@users.noreply.github.com>

* Add `nuxt.md` to docs (#6303)

Co-authored-by: Leonardo Ortiz <leo@monogram.io>

* Update ALLOWED_SSR_REGIONS constant for web frameworks (#6591)

Update list of `ALLOWED_SSR_REGIONS` in web frameworks config to include the current list of regions that support gen 2 Cloud Functions.

---------

Co-authored-by: James Xabregas <james@sparkello.com>
Co-authored-by: Alex Astrum <sandu@google.com>

* add nuxt init method for firebase hosting (#6309)

* add nuxt init method for firebase init hosting
* Changelog, supportedRange, and address feedback

---------

Co-authored-by: Leonardo Ortiz <leo@monogram.io>
Co-authored-by: James Daniels <jamesdaniels@google.com>

* Rolling firepit back to node 18 (#6589)

* Memoize firestore.getDatabase API calls when deploying Firestore functions (#6583)

During deployment of a 2nd Gen Firestore functions, the CLI retrieves metadata associated with the Firestore database in order to ensure that the region of the Firestore database matches the region of the deployed function:

https://github.com/firebase/firebase-tools/blob/1f4f6f494fd7a8a29887a8306930cda56aa7e13b/src/deploy/functions/services/firestore.ts#L9-L15

Unfortunately, when a large number of functions are deployed that each target a different Firestore instance (you are allowed to have multiple instances of Firestore on a single GCP project), developer will likely see a quota exceeds error:

```
Quota exceeded for quota metric 'Database operation requests' and limit 'Database Operations Per Minute' of service 'firestore.googleapis.com' for consumer ...
```

We mitigate the issue by memoizing the API calls. This should help with cases where multiple firestore functions are associated with a database, but wouldn't help if developer is setting up and deploying 60+ unique functions.

Mitigates https://github.com/firebase/firebase-tools/issues/6574

* Ensure that depedent APIs are enabled during Backend creation flow. (#6595)

* Clearing out some scanner vulns (#6590)

Co-authored-by: joehan <joehanley@google.com>

* Fix bug where connection single repository properly prompted. (#6596)

* 13.0.1

* [firebase-release] Removed change log and reset repo after 13.0.1 release

* fix Next.js dynamic and static OG images  (#6592)

Fixed by adding the VERCEL_URL env var

---------

Co-authored-by: James Daniels <jamesdaniels@google.com>

* Fix for the default import of strip-ansi (#6599)

* Fix bug where backends:list and backends:get command fails when no backends exists. (#6600)

* Change default name of backend to something more generic ("my-web-app") (#6601)

* Add RSC headers of Next.js app directory pages to Hosting headers. (#6608)

* check route or page from app path routes manifest

* add pages headers to framework deploy tests

* Dynamically load available locations from App Hosting API (#6609)

Instead of hard-coding supported regions, we dynamically fetch the list of supported regions from the API.

This is great especially when a org policy is set to restrict region availability for a project!

* Rename frameworks to apphosting (#6610)

Quick refactor to rename "frameworks" to "apphosting".

Also include a change to rename `backends:*` family of commands to `apphosting:backends:*` which matches the approved API proposal.

* Create build and update traffic during backends:create (#6611)

After creating a build via the "backends:create" command, follow up by creating a new build and updating the traffic setting to the newly created build.

This allows users to access their newly created site without having to manually trigger a rollout themselves.

* Fix bug where fetching linkable repos for a connection uses location associated with the backend instead of the resource itself. (#6612)

The existing implementation includes a bug where it will only look for connection in the region of the backend.

* Add utility commands for app hosting. (#6616)

We haven't finalized the design of these commands, but they sure are handy for local testing.

* 13.0.2

* [firebase-release] Removed change log and reset repo after 13.0.2 release

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: christhompsongoogle <106194718+christhompsongoogle@users.noreply.github.com>
Co-authored-by: Chalo Salvador <chalo@monogram.io>
Co-authored-by: Christina Holland <chholland@google.com>
Co-authored-by: Sairam Sakhamuri <svnsairam@google.com>
Co-authored-by: clairekeer1997 <chinayoujia97@gmail.com>
Co-authored-by: Jia You <jiayou@google.com>
Co-authored-by: Daniel Lee <danielylee@google.com>
Co-authored-by: Tony Huang <tony.huang.jun@gmail.com>
Co-authored-by: Thomas Bouldin <inlined@users.noreply.github.com>
Co-authored-by: Alex Astrum <alexastrum@gmail.com>
Co-authored-by: blidd-google <112491344+blidd-google@users.noreply.github.com>
Co-authored-by: Google Open Source Bot <firebase-oss-bot@google.com>
Co-authored-by: Alex Pascal <apascal07@gmail.com>
Co-authored-by: Pavel Jbanov <pavelj@google.com>
Co-authored-by: Dominic Bartl <dominic.bartl.at@gmail.com>
Co-authored-by: aalej <alejandromarco@google.com>
Co-authored-by: Fred Zhang <fredzqm@google.com>
Co-authored-by: egilmorez <egilmore@google.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael <michael@richardsons.co.za>
Co-authored-by: Victor Elmir Verchkovski <victor.verchkovski@gmail.com>
Co-authored-by: Leonardo Ortiz <leo@monogram.io>
Co-authored-by: Austin Crim <aust.crim@gmail.com>
Co-authored-by: Jeff <3759507+jhuleatt@users.noreply.github.com>
Co-authored-by: Austin Crim <austin@monogram.io>
Co-authored-by: Lisa Jian <lisajian@google.com>
Co-authored-by: TJ Lavelle <tlavelle@google.com>
Co-authored-by: Alex Astrum <sandu@google.com>
Co-authored-by: Mustafa Ateş Uzun <mustafauzun0@gmail.com>
Co-authored-by: Alphonso Bradham <72625136+ABradham@users.noreply.github.com>
Co-authored-by: HansiMou <HansiMou@users.noreply.github.com>
Co-authored-by: Maneesh Tewani <maneesht@users.noreply.github.com>
Co-authored-by: Harold Shen <hlshen@google.com>
Co-authored-by: Hugo Visser <hvisser@users.noreply.github.com>
Co-authored-by: Ferid Zuber <feridyz@gmail.com>
Co-authored-by: Cole Rogers <colerogers@users.noreply.github.com>
Co-authored-by: Anthony Barone <abarone@google.com>
Co-authored-by: abhis3 <abhisun@google.com>
Co-authored-by: Bob "Wombat" Hogg <rwhogg@google.com>
Co-authored-by: steveoh <sgourley@utah.gov>
Co-authored-by: Bryan Kendall <bkend@google.com>
Co-authored-by: James Daniels <jamesdaniels@google.com>
Co-authored-by: Paweł Kubiak <43759569+9kubczas4@users.noreply.github.com>
Co-authored-by: Yuki Takada (Yukinosuke Takada) <42461864+Yukinosuke-Takada@users.noreply.github.com>
Co-authored-by: Russell Wheatley <russellwheatley85@gmail.com>
Co-authored-by: Jonas <sonallux@gmx.de>
Co-authored-by: Yifan Yang <yifayan@gmail.com>
Co-authored-by: Geoffrey-Pliez <geoffrey.pliez@crem.be>
Co-authored-by: Viktor Sotov <sotov.victor@gmail.com>
Co-authored-by: sotovviktor <70816266+sotovviktor@users.noreply.github.com>
Co-authored-by: ju <33211907+JulienMartel@users.noreply.github.com>
Co-authored-by: James Xabregas <james@sparkello.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
4 participants