Skip to content

Commit

Permalink
v17.1.0 (#3524)
Browse files Browse the repository at this point in the history
* Preview note in README
* Bump version
* Deprecation note on legacy ng-deploy
* Add vertexai wrapper
* Drop ng-deploy setup from ng-add
* Start moving docs towards standalone
  • Loading branch information
jamesdaniels authored May 14, 2024
1 parent 05e9da2 commit 1302e3a
Show file tree
Hide file tree
Showing 20 changed files with 534 additions and 1,226 deletions.
27 changes: 12 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ by conforming to Angular conventions.
## Example use

```ts
import { provideFirebaseApp, getApp, initializeApp } from '@angular/fire/app';
import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
import { getFirestore, provideFirestore } from '@angular/fire/firestore';

@NgModule({
imports: [
export const appConfig: ApplicationConfig = {
providers: [
provideFirebaseApp(() => initializeApp({ ... })),
provideFirestore(() => getFirestore()),
...
],
...
})
export class AppModule { }
```

```ts
Expand All @@ -44,11 +44,14 @@ interface Item {

@Component({
selector: 'app-root',
standalone: true,
template: `
<ul>
<li *ngFor="let item of item$ | async">
{{ item.name }}
</li>
@for (item of (item$ | async); track item) {
<li>
{{ item.name }}
</li>
}
</ul>
`
})
Expand Down Expand Up @@ -96,11 +99,11 @@ We have three sample apps in this repository:

Get help on our [Q&A board](https://github.com/angular/angularfire/discussions?discussions_q=category%3AQ%26A), the official [Firebase Mailing List](https://groups.google.com/forum/#!forum/firebase-talk), the [Firebase Community Slack](https://firebase.community/) (`#angularfire2`), the [Angular Community Discord](http://discord.gg/angular) (`#firebase`), [Gitter](https://gitter.im/angular/angularfire2), the [Firebase subreddit](https://www.reddit.com/r/firebase), or [Stack Overflow](https://stackoverflow.com/questions/tagged/angularfire2).

> **NOTE:** AngularFire is maintained by Googlers but is not a supported Firebase product. Questions on the mailing list and issues filed here are answered on a <strong>best-effort basis</strong> by maintainers and other community members. If you are able to reproduce a problem with Firebase <em>outside of AngularFire's implementation</em>, please [file an issue on the Firebase JS SDK](https://github.com/firebase/firebase-js-sdk/issues) or reach out to the personalized [Firebase support channel](https://firebase.google.com/support/).
> **NOTE:** While relatively stable, AngularFire is a [developer preview](https://angular.io/guide/releases#developer-preview) and is subject to change before general availability. Questions on the mailing list and issues filed here are answered on a <strong>best-effort basis</strong> by maintainers and other community members. If you are able to reproduce a problem with Firebase <em>outside of AngularFire's implementation</em>, please [file an issue on the Firebase JS SDK](https://github.com/firebase/firebase-js-sdk/issues) or reach out to the personalized [Firebase support channel](https://firebase.google.com/support/).
## Developer Guide

This developer guide assumes you're using the new tree-shakable AngularFire API, [if you're looking for the compatability API you can find the documentation here](docs/compat.md).
This developer guide assumes you're using the new tree-shakable AngularFire API, [if you're looking for the compatibility API you can find the documentation here](docs/compat.md).

[See the v7 upgrade guide for more information on this change.](docs/version-7-upgrade.md).

Expand Down Expand Up @@ -188,9 +191,3 @@ import { } from '@angular/fire/app-check';
</td>
</tr>
</table>

### Deploying your site

* Deploy to Firebase Hosting
* Angular Universal: Deploy to Cloud Functions
* Angular Universal: Deploy to Cloud Run
617 changes: 316 additions & 301 deletions package-lock.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@angular/fire",
"version": "17.0.0",
"version": "17.1.0",
"description": "Angular + Firebase = ❤️",
"private": true,
"scripts": {
Expand Down Expand Up @@ -55,7 +55,7 @@
"@angular/platform-browser-dynamic": "^17.0.0",
"@angular/router": "^17.0.0",
"@schematics/angular": "^17.0.0",
"firebase": "^10.7.0",
"firebase": "^10.12.0",
"firebase-admin": "^9.11.1",
"firebase-functions": "^3.6.0",
"firebase-tools": "^13.0.0",
Expand Down
2 changes: 2 additions & 0 deletions src/app/firebase.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"firebase-tools": { "optional": true }
},
"dependencies": {
"firebase": "^10.7.0",
"firebase": "^10.12.0",
"rxfire": "^6.0.5",
"@angular-devkit/schematics": "^17.0.0",
"@schematics/angular": "^17.0.0",
Expand Down
40 changes: 1 addition & 39 deletions src/schematics/common.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SchematicContext, SchematicsException, Tree } from '@angular-devkit/schematics';
import * as semver from 'semver';
import { FirebaseHostingSite, FirebaseRc } from './interfaces';
import { FirebaseHostingSite } from './interfaces';

export const shortSiteName = (site?: FirebaseHostingSite) => site?.name?.split('/').pop();

Expand All @@ -18,44 +18,6 @@ export const overwriteIfExists = (
}
};

function emptyFirebaseRc() {
return {
targets: {}
};
}

function generateFirebaseRcTarget(firebaseProject: string, firebaseHostingSite: FirebaseHostingSite|undefined, project: string) {
return {
hosting: {
[project]: [
shortSiteName(firebaseHostingSite) ?? firebaseProject
]
}
};
}

export function generateFirebaseRc(
tree: Tree,
path: string,
firebaseProject: string,
firebaseHostingSite: FirebaseHostingSite|undefined,
project: string
) {
const firebaseRc: FirebaseRc = tree.exists(path)
? safeReadJSON(path, tree)
: emptyFirebaseRc();

firebaseRc.targets = firebaseRc.targets || {};
firebaseRc.targets[firebaseProject] = generateFirebaseRcTarget(
firebaseProject,
firebaseHostingSite,
project
);
firebaseRc.projects = { default: firebaseProject };

overwriteIfExists(tree, path, stringifyFormatted(firebaseRc));
}

export function safeReadJSON(path: string, tree: Tree) {
try {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
Expand Down
10 changes: 9 additions & 1 deletion src/schematics/deploy/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,8 @@ export default async function deploy(
options: DeployBuilderOptions,
firebaseToken?: string,
) {
const legacyNgDeploy = !options.version || options.version < 2;

if (!firebaseToken && !process.env.GOOGLE_APPLICATION_CREDENTIALS) {
await firebaseTools.login();
const user = await firebaseTools.login({ projectRoot: context.workspaceRoot });
Expand All @@ -401,6 +403,12 @@ export default async function deploy(
console.log(`Using Google Application Credentials.`);
}

if (legacyNgDeploy) {
console.error(`Legacy ng-deploy Firebase is deprecated.
Please migrate to Firebase Hosting's integration with Angular https://firebase.google.com/docs/hosting/frameworks/angular
or the new Firebase App Hosting product https://firebase.google.com/docs/app-hosting`);
}

if (prerenderBuildTarget) {
const run = await context.scheduleTarget(
targetFromTargetString(prerenderBuildTarget.name),
Expand Down Expand Up @@ -465,7 +473,7 @@ export default async function deploy(

firebaseTools.logger.logger.add(logger);

if ((!options.version || options.version < 2) && serverBuildTarget) {
if (legacyNgDeploy && serverBuildTarget) {
if (options.ssr === 'cloud-run') {
await deployToCloudRun(
firebaseTools,
Expand Down
4 changes: 2 additions & 2 deletions src/schematics/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { RuntimeOptions } from 'firebase-functions';

export const enum FEATURES {
Hosting,
Authentication,
Analytics,
AppCheck,
Expand All @@ -12,10 +11,10 @@ export const enum FEATURES {
Firestore,
Storage,
RemoteConfig,
VertexAI,
}

export const featureOptions = [
{ name: 'ng deploy -- hosting', value: FEATURES.Hosting },
{ name: 'Authentication', value: FEATURES.Authentication },
{ name: 'Google Analytics', value: FEATURES.Analytics },
{ name: 'App Check', value: FEATURES.AppCheck },
Expand All @@ -26,6 +25,7 @@ export const featureOptions = [
{ name: 'Performance Monitoring', value: FEATURES.Performance },
{ name: 'Cloud Storage', value: FEATURES.Storage },
{ name: 'Remote Config', value: FEATURES.RemoteConfig },
{ name: 'VertexAI (preview)', value: FEATURES.VertexAI },
];

export const enum PROJECT_TYPE { Static, CloudFunctions, CloudRun, WebFrameworks }
Expand Down
Loading

0 comments on commit 1302e3a

Please sign in to comment.