Skip to content
Open
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
4 changes: 2 additions & 2 deletions libs/ngfire/analytics/src/tokens.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inject, InjectFlags, InjectionToken } from "@angular/core";
import { inject, InjectionToken } from "@angular/core";
import { Analytics, initializeAnalytics } from "firebase/analytics";
import { ANALYTICS_SETTINGS, getConfig } from "ngfire/tokens";
import { FIREBASE_APP } from "ngfire/app";
Expand All @@ -8,7 +8,7 @@ export const FIRE_ANALYTICS = new InjectionToken<Analytics>('Firebase Analytics
providedIn: 'root',
factory: () => {
const config = getConfig();
const settings = inject(ANALYTICS_SETTINGS, InjectFlags.Optional);
const settings = inject(ANALYTICS_SETTINGS, { optional: true });
const app = inject(FIREBASE_APP);
if (config.analytics) {
return config.analytics(app, settings ?? {});
Expand Down
6 changes: 3 additions & 3 deletions libs/ngfire/app/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { inject, InjectFlags, InjectionToken } from "@angular/core";
import { inject, InjectionToken } from "@angular/core";
import { FirebaseApp, initializeApp } from "firebase/app";
import { FIREBASE_APP_SETTINGS, FIREBASE_CONFIG } from "ngfire/tokens";

export const FIREBASE_APP = new InjectionToken<FirebaseApp>('Firebase application', {
providedIn: 'root',
factory: () => {
const config = inject(FIREBASE_CONFIG);
const settings = inject(FIREBASE_APP_SETTINGS, InjectFlags.Optional);
const settings = inject(FIREBASE_APP_SETTINGS, { optional: true });
if (config.app) {
return config.app(config.options, settings ?? {});
return config.app();
} else {
return initializeApp(config.options, settings ?? {});
}
Expand Down
4 changes: 2 additions & 2 deletions libs/ngfire/auth/src/tokens.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inject, InjectFlags, InjectionToken } from "@angular/core";
import { inject, InjectionToken } from "@angular/core";
import { Auth, getAuth, initializeAuth } from "firebase/auth";
import { FIREBASE_APP } from "ngfire/app";
import { AUTH_DEPS, getConfig } from "ngfire/tokens";
Expand All @@ -8,7 +8,7 @@ export const FIRE_AUTH = new InjectionToken<Auth>('Fire auth instance', {
factory: () => {
const config = getConfig();
const app = inject(FIREBASE_APP);
const deps = inject(AUTH_DEPS, InjectFlags.Optional) || undefined;
const deps = inject(AUTH_DEPS, { optional: true }) || undefined;
if (config.auth) {
return config.auth(app, deps);
} else {
Expand Down
5 changes: 3 additions & 2 deletions libs/ngfire/core/src/zone.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { SchedulerAction, SchedulerLike, queueScheduler, Subscription, Observabl
import { observeOn, subscribeOn, tap } from "rxjs/operators";

export class ɵZoneScheduler implements SchedulerLike {
constructor(private zone: Zone, private delegate: SchedulerLike = queueScheduler) {}
constructor(private zone: any, private delegate: SchedulerLike = queueScheduler) {}

now() {
return this.delegate.now();
Expand All @@ -29,9 +29,10 @@ export class ɵZoneScheduler implements SchedulerLike {

// eslint-disable-next-line @typescript-eslint/no-empty-function
function noop() {}
declare const Zone: any;

class BlockUntilFirstOperator<T> implements Operator<T, T> {
private task: MacroTask | null = null;
private task: any = null;

constructor(private zone: NgZone) {}

Expand Down
4 changes: 2 additions & 2 deletions libs/ngfire/database/src/tokens.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inject, InjectFlags, InjectionToken } from "@angular/core";
import { inject, InjectionToken } from "@angular/core";
import { Database, getDatabase } from "firebase/database";
import { FIREBASE_APP } from "ngfire/app";
import { DB_URL, getConfig } from "ngfire/tokens";
Expand All @@ -9,7 +9,7 @@ export const DATABASE = new InjectionToken<Database>('Database instance', {
factory: () => {
const config = getConfig();
const app = inject(FIREBASE_APP);
const url = inject(DB_URL, InjectFlags.Optional);
const url = inject(DB_URL, { optional: true });
if (config.database) {
return config.database(app, url ?? undefined)
} else {
Expand Down
8 changes: 4 additions & 4 deletions libs/ngfire/firestore/src/collection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export abstract class FireCollection<E extends DocumentData> {

protected useCache<T extends E>(ref: DocumentReference<T>): Observable<T>
protected useCache<T extends E>(ref: Query<T>): Observable<T[]>
protected useCache<T extends E>(ref: DocumentReference<T> | Query<T>): Observable<T | T[]>
protected useCache<T extends E>(ref: DocumentReference<T> | Query<T>): Observable<T | T[]>
protected useCache<T extends E>(ref: DocumentReference<T> | Query<T>): Observable<T | T[]> {
if (isPlatformServer(this.platformId)) {
return this.zone.runOutsideAngular(() => fromRef(ref as Query<T>)).pipe(
Expand Down Expand Up @@ -177,11 +177,11 @@ export abstract class FireCollection<E extends DocumentData> {
if (!arguments.length) return this.firestore.getRef(this.path);
// Id is undefined or null
if (!ids) return undefined;

if (Array.isArray(ids)) {
// List of ref
if ((ids as any[]).every(isPathRef)) return this.firestore.getRef(ids as string[]);

const path = pathWithParams(this.path, parameters);
// List of ids
if (isIdList(ids)) return this.firestore.getRef(ids.map((id) => getDocPath(path, id)));
Expand Down Expand Up @@ -273,7 +273,7 @@ export abstract class FireCollection<E extends DocumentData> {
const doesExist = async (doc: FireEntity<T>) => {
const id: string | FieldValue | undefined = doc[this.idKey];
if (typeof id !== 'string') return false;
const ref = this.getRef(id, options.params);
const ref: any = this.getRef(id, options.params);
const snap = (options.write instanceof Transaction)
? await options.write?.get(ref)
: await getDoc(ref);
Expand Down
7 changes: 3 additions & 4 deletions libs/ngfire/firestore/src/firestore.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { inject, Injectable, InjectFlags, Injector, PLATFORM_ID } from "@angular/core";
import { inject, Injectable, Injector, PLATFORM_ID, makeStateKey, TransferState } from "@angular/core";
import { collection, doc, DocumentData, DocumentSnapshot, query, queryEqual, QuerySnapshot, runTransaction, writeBatch } from 'firebase/firestore';
import type { Transaction, CollectionReference, DocumentReference, Query, QueryConstraint } from 'firebase/firestore';
import { FIRESTORE } from "./tokens";
import { shareWithDelay, assertCollection, assertPath, isCollectionRef, isDocPath, isQuery } from "ngfire/core";
import { fromRef } from "./operators";
import { makeStateKey, TransferState } from "@angular/platform-browser";
import { isPlatformBrowser, isPlatformServer } from "@angular/common";
import { Observable } from "rxjs";
import { stringifyQuery } from "./query";
Expand All @@ -18,7 +17,7 @@ export class FirestoreService {
private injector = inject(Injector);
private plateformId = inject(PLATFORM_ID);
/** Transfer state between server and */
private transferState = inject(TransferState, InjectFlags.Optional);
private transferState = inject(TransferState, { optional: true });
/** Cache based state for document */
private state: Map<string | Query, Snapshot<unknown>> = new Map();

Expand Down Expand Up @@ -138,7 +137,7 @@ export class FirestoreService {
if (Array.isArray(paths)) {
return paths.map((path) => this.getRef<E>(path) as DocumentReference<E>);
}

const hasContraints = Array.isArray(constraints);
if (hasContraints) {
assertPath(paths);
Expand Down
6 changes: 4 additions & 2 deletions libs/ngfire/firestore/src/query.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import type { Target, OrderBy, FieldFilter } from '@firebase/firestore/dist/firestore/src/core/target';
import type { Target } from '@firebase/firestore/dist/firestore/src/core/target';
import type { OrderBy } from '@firebase/firestore/dist/firestore/src/core/order_by';
import type { FieldFilter } from '@firebase/firestore/dist/firestore/src/core/filter';
import type { Value, ArrayValue, MapValue, Timestamp, LatLng } from '@firebase/firestore/dist/firestore/src/protos/firestore_proto_api';
import type { Query } from 'firebase/firestore';
import { exist } from 'ngfire/core';


// Simplfied version of
// Simplfied version of
// https://github.com/firebase/firebase-js-sdk/blob/master/packages/firestore/src/core/query.ts#L442
export function stringifyQuery(query: Query) {
if ('_query' in query) {
Expand Down
4 changes: 2 additions & 2 deletions libs/ngfire/firestore/src/tokens.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inject, InjectFlags, InjectionToken } from "@angular/core";
import { inject, InjectionToken } from "@angular/core";
import { Firestore } from 'firebase/firestore';
import { initializeFirestore } from "firebase/firestore";
import { FIRESTORE_SETTINGS, getConfig } from "ngfire/tokens";
Expand All @@ -9,7 +9,7 @@ export const FIRESTORE = new InjectionToken<Firestore>('Firestore instance', {
providedIn: 'root',
factory: () => {
const config = getConfig();
const settings = inject(FIRESTORE_SETTINGS, InjectFlags.Optional);
const settings = inject(FIRESTORE_SETTINGS, { optional: true });
const app = inject(FIREBASE_APP);
if (config.firestore) {
return config.firestore(app, settings ?? {});
Expand Down
4 changes: 2 additions & 2 deletions libs/ngfire/functions/src/tokens.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inject, InjectFlags, InjectionToken } from "@angular/core";
import { inject, InjectionToken } from "@angular/core";
import { Functions, getFunctions } from "firebase/functions";
import { FIREBASE_APP } from "ngfire/app";
import { getConfig, REGION_OR_DOMAIN } from "ngfire/tokens";
Expand All @@ -7,7 +7,7 @@ export const CLOUD_FUNCTIONS = new InjectionToken<Functions>('Firebase cloud fun
providedIn: 'root',
factory: () => {
const config = getConfig();
const regionOrDomain = inject(REGION_OR_DOMAIN, InjectFlags.Optional);
const regionOrDomain = inject(REGION_OR_DOMAIN, { optional: true });
const app = inject(FIREBASE_APP);
if (config.functions) {
return config.functions(app, regionOrDomain ?? undefined);
Expand Down
12 changes: 6 additions & 6 deletions libs/ngfire/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "ngfire",
"version": "0.0.50",
"version": "0.0.54",
"homepage": "https://github.com/dappsnation/ngfire",
"peerDependencies": {
"@angular/common": ">12.2.0",
"@angular/core": ">12.2.0",
"@angular/platform-browser": ">12.2.0",
"@nrwl/devkit": ">13.0.0",
"firebase": ">9.0.0",
"@angular/common": ">20.0.3",
"@angular/core": ">20.0.3",
"@angular/platform-browser": ">20.0.3",
"@nrwl/devkit": ">19.0.0",
"firebase": ">11.0.0",
"rxjs": ">7.0.0"
},
"dependencies": {
Expand Down
4 changes: 2 additions & 2 deletions libs/ngfire/storage/src/tokens.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inject, InjectFlags, InjectionToken } from "@angular/core";
import { inject, InjectionToken } from "@angular/core";
import { FirebaseStorage, getStorage } from "firebase/storage";
import { FIREBASE_APP } from "ngfire/app";
import { getConfig, STORAGE_BUCKET } from "ngfire/tokens";
Expand All @@ -9,7 +9,7 @@ export const FIRE_STORAGE = new InjectionToken<FirebaseStorage>('Firebase Storag
factory: () => {
const config = getConfig();
const app = inject(FIREBASE_APP);
const bucket = inject(STORAGE_BUCKET, InjectFlags.Optional);
const bucket = inject(STORAGE_BUCKET, { optional: true });
if (config.storage) {
return config.storage(app, bucket ?? undefined);
} else {
Expand Down