Skip to content

Commit ee6a038

Browse files
Merge remote-tracking branch 'origin/main' into pr3671-work
2 parents f1bed58 + 3e671e0 commit ee6a038

89 files changed

Lines changed: 7045 additions & 3828 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/codeql-analysis.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ jobs:
2424
analyze:
2525
name: Analyze
2626
runs-on: ubuntu-latest
27+
permissions:
28+
actions: read
29+
contents: read
30+
security-events: write
2731

2832
strategy:
2933
fail-fast: false
@@ -35,11 +39,13 @@ jobs:
3539

3640
steps:
3741
- name: Checkout repository
38-
uses: actions/checkout@v2
42+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
43+
with:
44+
persist-credentials: false
3945

4046
# Initializes the CodeQL tools for scanning.
4147
- name: Initialize CodeQL
42-
uses: github/codeql-action/init@v2
48+
uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
4349
with:
4450
languages: ${{ matrix.language }}
4551
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -50,7 +56,7 @@ jobs:
5056
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
5157
# If this step fails, then you should remove it and run the build manually (see below)
5258
- name: Autobuild
53-
uses: github/codeql-action/autobuild@v2
59+
uses: github/codeql-action/autobuild@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3
5460

5561
# ℹ️ Command-line programs to run using the OS shell.
5662
# 📚 https://git.io/JvXDl
@@ -64,4 +70,4 @@ jobs:
6470
# make release
6571

6672
- name: Perform CodeQL Analysis
67-
uses: github/codeql-action/analyze@v2
73+
uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3

.github/workflows/test.yml

Lines changed: 40 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -15,39 +15,29 @@ on:
1515
schedule:
1616
- cron: 0 0 * * 1-5
1717

18+
permissions:
19+
contents: read
20+
1821
jobs:
1922
build:
2023
runs-on: ubuntu-latest
2124
name: Build
2225
steps:
2326
- name: Checkout
24-
uses: actions/checkout@v3
27+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
28+
with:
29+
persist-credentials: false
2530
- name: Setup node
26-
uses: actions/setup-node@v3
31+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
2732
with:
2833
node-version: '20'
2934
check-latest: false
30-
- name: angular build cache
31-
uses: actions/cache@v3
32-
with:
33-
path: ./.angular
34-
key: angular-cache
35-
- name: node_modules cache
36-
uses: actions/cache@v3
37-
id: node_modules_cache
38-
with:
39-
path: ./node_modules
40-
key: ${{ runner.os }}-20-${{ hashFiles('package-lock.json') }}
41-
restore-keys: |
42-
${{ runner.os }}-20-
4335
- name: Install deps
44-
if: steps.node_modules_cache.outputs.cache-hit != 'true'
45-
run: |
46-
npm ci
36+
run: npm ci
4737
- name: Build
4838
run: ./tools/build.sh
4939
- name: 'Upload Artifact'
50-
uses: actions/upload-artifact@v4
40+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
5141
with:
5242
name: angularfire-${{ github.run_id }}
5343
path: dist
@@ -59,32 +49,26 @@ jobs:
5949
strategy:
6050
matrix:
6151
os: [ ubuntu-latest, macos-latest, windows-latest ]
62-
node: ["18", "20", "22"]
52+
node: ["20", "22", "24"]
6353
fail-fast: false
6454
name: Test Node ${{ matrix.node }} (${{ matrix.os }})
6555
steps:
6656
- name: Checkout
67-
uses: actions/checkout@v3
57+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
58+
with:
59+
persist-credentials: false
6860
- name: Setup node
69-
uses: actions/setup-node@v3
61+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
7062
with:
7163
node-version: ${{ matrix.node }}
7264
check-latest: true
73-
- name: node_modules cache
74-
id: node_modules_cache
75-
uses: actions/cache@v3
76-
with:
77-
path: ./node_modules
78-
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('package-lock.json') }}
79-
restore-keys: |
80-
${{ runner.os }}-${{ matrix.node }}-
8165
- name: Install deps
82-
if: steps.node_modules_cache.outputs.cache-hit != 'true'
8366
run: npm ci
8467
- name: Download Artifacts
85-
uses: actions/download-artifact@v4
86-
- name: Relocate Artifacts
87-
run: mv angularfire-${{ github.run_id }} dist
68+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
69+
with:
70+
name: angularfire-${{ github.run_id }}
71+
path: dist
8872
- name: Test Node
8973
run: |
9074
npm run build:jasmine
@@ -105,37 +89,26 @@ jobs:
10589
fail-fast: false
10690
steps:
10791
- name: Checkout
108-
uses: actions/checkout@v3
92+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
93+
with:
94+
persist-credentials: false
10995
- name: Setup node
110-
uses: actions/setup-node@v3
96+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
11197
with:
11298
node-version: 20
11399
check-latest: false
114100
- name: Setup java
115-
uses: actions/setup-java@v3
101+
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
116102
with:
117103
distribution: 'temurin'
118-
java-version: '11'
119-
- name: node_modules cache
120-
id: node_modules_cache
121-
uses: actions/cache@v3
122-
with:
123-
path: ./node_modules
124-
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('package-lock.json') }}
125-
restore-keys: |
126-
${{ runner.os }}-${{ matrix.node }}-
104+
java-version: '21'
127105
- name: Install deps
128-
if: steps.node_modules_cache.outputs.cache-hit != 'true'
129106
run: npm ci
130-
- name: Firebase emulator cache
131-
uses: actions/cache@v3
132-
with:
133-
path: ~/.cache/firebase/emulators
134-
key: firebase_emulators
135107
- name: Download Artifacts
136-
uses: actions/download-artifact@v4
137-
- name: Relocate Artifacts
138-
run: mv angularfire-${{ github.run_id }} dist
108+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
109+
with:
110+
name: angularfire-${{ github.run_id }}
111+
path: dist
139112
- name: Test browser
140113
run: npm run test:${{ matrix.browser }}
141114

@@ -149,22 +122,15 @@ jobs:
149122
fail-fast: false
150123
steps:
151124
- name: Checkout
152-
uses: actions/checkout@v3
125+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
126+
with:
127+
persist-credentials: false
153128
- name: Setup node
154-
uses: actions/setup-node@v3
129+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
155130
with:
156131
node-version: ${{ matrix.node }}
157132
check-latest: true
158-
- name: node_modules cache
159-
uses: actions/cache@v3
160-
id: node_modules_cache
161-
with:
162-
path: ./node_modules
163-
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('package-lock.json') }}
164-
restore-keys: |
165-
${{ runner.os }}-${{ matrix.node }}-
166133
- name: Install deps
167-
if: steps.node_modules_cache.outputs.cache-hit != 'true'
168134
run: npm ci
169135
#- name: Lint
170136
# run: npm run lint
@@ -174,16 +140,11 @@ jobs:
174140
run: |
175141
npm run build:jasmine
176142
npm run test:node
177-
- name: Firebase emulator cache
178-
uses: actions/cache@v3
179-
with:
180-
path: ~/.cache/firebase/emulators
181-
key: firebase_emulators
182143
- name: Setup java
183-
uses: actions/setup-java@v3
144+
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
184145
with:
185146
distribution: 'temurin'
186-
java-version: '11'
147+
java-version: '21'
187148
- name: Test headless
188149
run: npm run test:chrome-headless
189150
# Tests are flaky on Windows
@@ -204,16 +165,19 @@ jobs:
204165
if: ${{ github.ref == 'refs/heads/main' || github.event_name == 'release' }}
205166
steps:
206167
- name: Setup node
207-
uses: actions/setup-node@v3
168+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
208169
with:
209170
node-version: '20'
210171
registry-url: 'https://registry.npmjs.org'
211172
check-latest: false
212173
- name: 'Download Artifacts'
213-
uses: actions/download-artifact@v4
174+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
175+
with:
176+
name: angularfire-${{ github.run_id }}
177+
path: dist
214178
- name: Publish
215179
run: |
216-
cd ./angularfire-${{ github.run_id }}/packages-dist
180+
cd ./dist/packages-dist
217181
chmod +x publish.sh
218182
./publish.sh
219183
env:

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ interface Item {
4646
selector: 'app-root',
4747
template: `
4848
<ul>
49-
@for (item of (item$ | async); track item) {
49+
@for (item of (items$ | async); track item) {
5050
<li>
5151
{{ item.name }}
5252
</li>
@@ -58,14 +58,16 @@ interface Item {
5858
export class AppComponent {
5959
firestore = inject(Firestore);
6060
itemCollection = collection(this.firestore, 'items');
61-
item$ = collectionData<Item>(itemCollection);
61+
items$ = collectionData<Item>(this.itemCollection);
6262
}
6363
```
6464

6565
## Resources
6666

6767
[Quickstart](docs/install-and-setup.md) - Get your first application up and running by following our quickstart guide.
6868

69+
[Deploying SSR to App Hosting](docs/app-hosting.md) - Deploy a server-rendered app to Firebase App Hosting, and avoid the silent SSR-to-CSR fallback.
70+
6971
[Contributing](CONTRIBUTING.md)
7072

7173
[Stackblitz Template](https://stackblitz.com/edit/angular-fire-start) - Remember to set your Firebase configuration in `app/app.module.ts`.
@@ -174,9 +176,9 @@ import { } from '@angular/fire/app-check';
174176
<tr>
175177
<td>
176178

177-
#### [Vertex AI](docs/vertexai.md#vertex-ai)
179+
#### [AI Logic](docs/ai.md#ai-logic)
178180
```ts
179-
import { } from '@angular/fire/vertexai';
181+
import { } from '@angular/fire/ai';
180182
```
181183
</td>
182184

docs/ai.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<small>
2+
<a href="https://github.com/angular/angularfire">AngularFire</a> &#10097; <a href="../README.md#developer-guide">Developer Guide</a> &#10097; AI Logic
3+
</small>
4+
5+
# AI Logic
6+
7+
Firebase AI Logic gives you access to the latest generative AI models from Google: the Gemini models and Imagen models.
8+
9+
[Learn more](https://firebase.google.com/docs/ai-logic)
10+
11+
## Dependency Injection
12+
13+
As a prerequisite, ensure that `AngularFire` has been added to your project via
14+
```bash
15+
ng add @angular/fire
16+
```
17+
18+
Provide an AI instance in the application's `app.config.ts`:
19+
20+
```ts
21+
import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
22+
import { provideAI, getAI } from '@angular/fire/ai';
23+
24+
export const appConfig: ApplicationConfig = {
25+
providers: [
26+
provideFirebaseApp(() => initializeApp({ ... })),
27+
provideAI(() => getAI()),
28+
...
29+
],
30+
...,
31+
}
32+
```
33+
34+
Next inject `AI` into your component:
35+
36+
```typescript
37+
import { Component, inject } from '@angular/core';
38+
import { AI } from '@angular/fire/ai';
39+
40+
@Component({ ... })
41+
export class MyComponent {
42+
private ai = inject(AI);
43+
...
44+
}
45+
```
46+
47+
## Firebase API
48+
49+
AngularFire wraps the Firebase JS SDK to ensure proper functionality in Angular, while providing the same API.
50+
51+
Update the imports from `import { ... } from 'firebase/ai'` to `import { ... } from '@angular/fire/ai'` and follow the official documentation.
52+
53+
[Getting Started](https://firebase.google.com/docs/ai-logic/get-started?platform=web) | [API Reference](https://firebase.google.com/docs/reference/js/ai)

0 commit comments

Comments
 (0)