Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,22 @@ name: Check if Reference Docs need to be regenerated
on:
pull_request

# Least privilege. This workflow only regenerates docs and diffs them; it never
# pushes.
permissions:
contents: read

jobs:
docs:
runs-on: ubuntu-latest
name: Build
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '24'
cache: 'npm'
Expand Down
37 changes: 24 additions & 13 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,22 @@ on:
types:
- published

# Least privilege by default. No job writes to the repo through GITHUB_TOKEN;
# the publish job authenticates to npm with NODE_AUTH_TOKEN.
permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
name: Build
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '24'
cache: 'npm'
Expand All @@ -31,7 +38,7 @@ jobs:
id: pack-dir
run: ./build.sh
- name: 'Upload Artifact'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: reactfire-${{ github.run_id }}
path: |
Expand All @@ -49,30 +56,32 @@ jobs:
name: Test Node.js ${{ matrix.node }} (Ubuntu)
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ matrix.node }}
check-latest: true
cache: 'npm'
- name: Install deps
run: npm ci
- name: Setup Java
uses: actions/setup-java@v4
uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4.8.0
with:
distribution: 'temurin'
java-version: '21'
- name: Install deps for functions
run: npm install
working-directory: ./functions
- name: Firebase emulator cache
uses: actions/cache@v4
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/.cache/firebase/emulators
key: firebase_emulators
- name: 'Download Artifacts'
uses: actions/download-artifact@v4
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
- name: Expand Artifact
run: |
chmod +x reactfire-${{ github.run_id }}/unpack.sh
Expand All @@ -88,9 +97,11 @@ jobs:
name: Type check (React ${{ matrix.react }})
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '24'
cache: 'npm'
Expand All @@ -109,12 +120,12 @@ jobs:
if: ${{ github.ref == 'refs/heads/main' || github.event_name == 'release' }}
steps:
- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
registry-url: 'https://wombat-dressing-room.appspot.com'
- name: 'Download Artifacts'
uses: actions/download-artifact@v4
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
- name: Publish
run: |
cd ./reactfire-${{ github.run_id }}/
Expand Down
65 changes: 35 additions & 30 deletions package-lock.json

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

2 changes: 1 addition & 1 deletion src/SuspenseSubject.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { empty, Observable, Subject, Subscriber, Subscription } from 'rxjs';
import { catchError, shareReplay, tap } from 'rxjs/operators';
import { ObservableStatus } from './useObservable';
import { ObservableStatus } from './useObservable.js';

export class SuspenseSubject<T> extends Subject<T> {
private _value: T | undefined;
Expand Down
4 changes: 2 additions & 2 deletions src/auth.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as React from 'react';
import { user } from 'rxfire/auth';
import { preloadObservable, ReactFireOptions, useAuth, useObservable, ObservableStatus, ReactFireError } from './';
import { preloadObservable, ReactFireOptions, useAuth, useObservable, ObservableStatus, ReactFireError } from './index.js';
import { from, of, defer } from 'rxjs';
import { map, switchMap } from 'rxjs/operators';
import { useSuspenseEnabledFromConfigAndContext } from './firebaseApp';
import { useSuspenseEnabledFromConfigAndContext } from './firebaseApp.js';

import type { Auth, User, IdTokenResult } from 'firebase/auth';
type Claims = IdTokenResult['claims'];
Expand Down
2 changes: 1 addition & 1 deletion src/database.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { list, object, QueryChange, listVal, objectVal } from 'rxfire/database';
import { ReactFireOptions, useObservable, checkIdField, ObservableStatus, ReactFireGlobals } from './';
import { ReactFireOptions, useObservable, checkIdField, ObservableStatus, ReactFireGlobals } from './index.js';

import type { Query as DatabaseQuery, DatabaseReference } from 'firebase/database';

Expand Down
4 changes: 2 additions & 2 deletions src/firestore.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { collectionData, doc, docData, fromRef } from 'rxfire/firestore';
import { ReactFireOptions, useObservable, checkIdField, ReactFireGlobals } from './';
import { preloadObservable, ObservableStatus } from './useObservable';
import { ReactFireOptions, useObservable, checkIdField, ReactFireGlobals } from './index.js';
import { preloadObservable, ObservableStatus } from './useObservable.js';
import { first } from 'rxjs/operators';

import { Query as FirestoreQuery, QuerySnapshot, DocumentReference, queryEqual, DocumentData, DocumentSnapshot } from 'firebase/firestore';
Expand Down
4 changes: 2 additions & 2 deletions src/functions.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { httpsCallable as rxHttpsCallable } from 'rxfire/functions';
import { defer } from 'rxjs';
import { ReactFireOptions, useObservable, ObservableStatus } from './';
import { useFunctions } from '.';
import { ReactFireOptions, useObservable, ObservableStatus } from './index.js';
import { useFunctions } from './index.js';

import type { HttpsCallableOptions } from 'firebase/functions';

Expand Down
22 changes: 11 additions & 11 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SuspenseSubject } from './SuspenseSubject';
import { SuspenseSubject } from './SuspenseSubject.js';

import type { Query as FirestoreQuery } from 'firebase/firestore';
import type { Query as DatabaseQuery } from 'firebase/database';
Expand Down Expand Up @@ -48,13 +48,13 @@ export function checkIdField(options: ReactFireOptions) {
return checkOptions(options, 'idField');
}

export * from './auth';
export * from './database';
export * from './firebaseApp';
export * from './firestore';
export * from './functions';
export * from './performance';
export * from './remote-config';
export * from './storage';
export * from './useObservable';
export * from './sdk';
export * from './auth.js';
export * from './database.js';
export * from './firebaseApp.js';
export * from './firestore.js';
export * from './functions.js';
export * from './performance.js';
export * from './remote-config.js';
export * from './storage.js';
export * from './useObservable.js';
export * from './sdk.js';
4 changes: 2 additions & 2 deletions src/remote-config.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useRemoteConfig } from './';
import { useObservable, ObservableStatus } from './useObservable';
import { useRemoteConfig } from './index.js';
import { useObservable, ObservableStatus } from './useObservable.js';
import { getValue, getString, getBoolean, getNumber, getAll, AllParameters } from 'rxfire/remote-config';
import { Observable } from 'rxjs';

Expand Down
6 changes: 3 additions & 3 deletions src/sdk.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import type { Functions } from 'firebase/functions';
import type { FirebasePerformance } from 'firebase/performance';
import type { FirebaseStorage } from 'firebase/storage';
import type { RemoteConfig } from 'firebase/remote-config';
import { useFirebaseApp } from './firebaseApp';
import { useFirebaseApp } from './firebaseApp.js';
import { FirebaseApp } from 'firebase/app';
import { ObservableStatus, useObservable } from './useObservable';
import { ObservableStatus, useObservable } from './useObservable.js';
import { from } from 'rxjs';
import { ReactFireOptions } from '.';
import { ReactFireOptions } from './index.js';

export const AppCheckSdkContext = React.createContext<AppCheck | undefined>(undefined);
export const AuthSdkContext = React.createContext<Auth | undefined>(undefined);
Expand Down
4 changes: 2 additions & 2 deletions src/storage.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import * as React from 'react';
import { getDownloadURL, fromTask } from 'rxfire/storage';
import { defer } from 'rxjs';
import { ReactFireOptions, useObservable, ObservableStatus, useStorage } from './';
import { useSuspenseEnabledFromConfigAndContext } from './firebaseApp';
import { ReactFireOptions, useObservable, ObservableStatus, useStorage } from './index.js';
import { useSuspenseEnabledFromConfigAndContext } from './firebaseApp.js';
import { ref } from 'firebase/storage';

import type { UploadTask, UploadTaskSnapshot, StorageReference, FirebaseStorage } from 'firebase/storage';
Expand Down
Loading
Loading