@_henriquewilson/gabirubi-domain 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -396,6 +396,7 @@ var _FirestoreService = /*#__PURE__*/ function() {
396
396
  switch(_state.label){
397
397
  case 0:
398
398
  if (!_this._path) throw new Error("Path must be set");
399
+ console.log(_this._path);
399
400
  return [
400
401
  4,
401
402
  (0, import_firestore.getDocs)((0, import_firestore.query).apply(this, [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/firebase/firebase.ts"],"names":["limitConstraint","orderByConstraint","doc"],"mappings":"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","sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/firebase/firebase.ts"],"names":["limitConstraint","orderByConstraint","doc"],"mappings":"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","sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n console.log(this._path)\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n"]}
@@ -61,6 +61,7 @@ var _FirestoreService = class _FirestoreService {
61
61
  async getAll() {
62
62
  if (!this._path)
63
63
  throw new Error("Path must be set");
64
+ console.log(this._path);
64
65
  const snap = await getDocs(query(
65
66
  collection(this._firestore, this._path),
66
67
  ...this._where,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/firebase/firebase.ts"],"sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n"],"mappings":"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","names":["doc"]}
1
+ {"version":3,"sources":["../../src/firebase/firebase.ts"],"sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n console.log(this._path)\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n"],"mappings":";AACA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,OAIG;AAYA,IAAM,oBAAN,MAAM,kBAAiB;AAAA,EAUlB,YAAY,WAAsB;AAN1C,SAAQ,QAAuB;AAC/B,SAAQ,MAA8B;AACtC,SAAQ,SAAsC;AAC9C,SAAQ,SAA4B,CAAC;AACrC,SAAQ,WAA4D,CAAC;AAGjE,SAAK,aAAa;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAc,YAAY,WAAwC;AAC9D,QAAI,CAAC,kBAAiB,WAAW;AAC7B,wBAAiB,YAAY,IAAI,kBAAiB,SAAS;AAAA,IAC/D;AACA,WAAO,kBAAiB;AAAA,EAC5B;AAAA,EAEO,KAAK,MAAoB;AAC5B,SAAK,QAAQ;AACb,WAAO;AAAA,EACX;AAAA,EAEO,GAAG,IAA2B;AACjC,SAAK,MAAM;AACX,WAAO;AAAA,EACX;AAAA,EAEO,SAAS,OAAgC;AAC5C,SAAK,SAAS;AACd,WAAO;AAAA,EACX;AAAA,EAEO,MAAM,OAAqB;AAC9B,SAAK,SAAS,gBAAgB,KAAK;AACnC,WAAO;AAAA,EACX;AAAA,EAEO,QAAQ,OAAe,YAA4B,QAAc;AACpE,SAAK,SAAS,KAAK,EAAE,OAAO,UAAU,CAAC;AACvC,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,MAA4B;AACrC,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,UAAM,OAAO,MAAM,OAAO,IAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;AACzE,SAAK,MAAM;AACX,WAAO,KAAK,OAAO,IAAI,kBAAiB,YAAe,IAAI,IAAI;AAAA,EACnE;AAAA,EAEA,MAAa,SAA0B;AACnC,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,YAAQ,IAAI,KAAK,KAAK;AACtB,UAAM,OAAO,MAAM,QAAQ;AAAA,MACzB,WAAW,KAAK,YAAY,KAAK,KAAK;AAAA,MACtC,GAAG,KAAK;AAAA,MACR,GAAG,KAAK,SAAS,IAAI,OAAK,kBAAkB,EAAE,OAAO,EAAE,SAAS,CAAC;AAAA,MACjE,GAAI,KAAK,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC;AAAA,IACrC,CAAC;AACD,SAAK,MAAM;AACX,WAAO,KAAK,KAAK,IAAI,CAACA,SAAQ,kBAAiB,YAAeA,IAAG,CAAC;AAAA,EACtE;AAAA,EAEO,eAAkB,UAAmC,YAAyB;AACjF,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,UAAM,cAAc;AAAA,MAClB,IAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE;AAAA,MAC9C,EAAE,wBAAwB,KAAK;AAAA,MAC/B,CAAC,SAAS;AACN,YAAI,KAAK,OAAO,GAAG;AACf,mBAAS,kBAAiB,YAAe,IAAI,CAAC;AAAA,QAClD,OAAO;AACH,kBAAQ,KAAK,kBAAkB,KAAK,GAAG,UAAU,KAAK,KAAK,EAAE;AAC7D,mBAAS,IAAI;AACb,cAAI;AAAY,uBAAW;AAAA,QAC/B;AAAA,MACJ;AAAA,IACF;AACA,SAAK,MAAM;AACX,WAAO;AAAA,EACX;AAAA,EAEO,WAAc,UAA+B,YAAyB;AACzE,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,UAAM,cAAc;AAAA,MAClB;AAAA,QACE,WAAW,KAAK,YAAY,KAAK,KAAK;AAAA,QACtC,GAAG,KAAK;AAAA,QACR,GAAG,KAAK,SAAS,IAAI,OAAK,kBAAkB,EAAE,OAAO,EAAE,SAAS,CAAC;AAAA,QACjE,GAAI,KAAK,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC;AAAA,MACrC;AAAA,MACA,CAAC,aAAa;AACV,YAAI,CAAC,SAAS,OAAO;AACjB,mBAAS,SAAS,KAAK,IAAI,CAAC,UAAU,kBAAiB,YAAe,KAAK,CAAC,CAAC;AAAA,QACjF,OAAO;AACH,kBAAQ,KAAK,0BAA0B,KAAK,KAAK,EAAE;AACnD,mBAAS,CAAC,CAAC;AACX,cAAI;AAAY,uBAAW;AAAA,QAC/B;AAAA,MACJ;AAAA,IACF;AACA,SAAK,MAAM;AACX,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,IAAO,MAAqB;AACrC,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,UAAM,MAAM,MAAM,OAAO,WAAW,KAAK,YAAY,KAAK,KAAK,GAAG,kBAAiB,iBAAiB,IAAI,CAAC;AACzG,SAAK,MAAM;AACX,WAAO,EAAE,GAAG,MAAM,IAAI,IAAI,GAAG;AAAA,EACjC;AAAA,EAEA,MAAa,IAAqB,MAAS,QAAQ,MAAkB;AACjE,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,UAAM,QAAQ,KAAK,OAAO,KAAK,MAAM;AAErC,QAAI,OAAO;AACP,YAAM,OAAO,IAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,EAAE,GAAG,kBAAiB,iBAAiB,IAAI,GAAG,EAAE,MAAM,CAAC;AAC7G,WAAK,MAAM;AACX,aAAO,EAAE,GAAG,MAAM,IAAI,MAAM;AAAA,IAChC,OAAO;AACH,YAAM,MAAM,MAAM,OAAO,WAAW,KAAK,YAAY,KAAK,KAAK,GAAG,kBAAiB,iBAAiB,IAAI,CAAC;AACzG,WAAK,MAAM;AACX,aAAO,EAAE,GAAG,MAAM,IAAI,IAAI,GAAG;AAAA,IACjC;AAAA,EACJ;AAAA,EAEA,MAAa,OAAU,MAAwB;AAC3C,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,UAAM,UAAU,IAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE,GAAG,kBAAiB,iBAAiB,IAAI,CAAC;AACxG,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,SAAwB;AACjC,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,UAAM,UAAU,IAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;AAC/D,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,KAAsB,MAAS,QAAQ,MAAkB;AAClE,QAAI,KAAK,IAAI;AACT,YAAM,KAAK,KAAK,KAAK,KAAM,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,MAAM,KAAK;AACxD,aAAO;AAAA,IACX,OAAO;AACH,aAAO,MAAM,KAAK,KAAK,KAAK,KAAM,EAAE,IAAI,IAAI;AAAA,IAChD;AAAA,EACJ;AAAA;AAAA,EAIA,OAAe,YAAe,UAA+B;AACzD,WAAO;AAAA,MACH,GAAG,SAAS,KAAK;AAAA,MACjB,IAAI,SAAS,KAAK,GAAG,MAAM,SAAS;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,OAAe,iBAAoB,MAAS;AACxC,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,IAAa,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,QAChD;AAAA,QACA,UAAU,SAAY,OAAO;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACJ;AAAA,EAEQ,QAAQ;AACZ,SAAK,QAAQ;AACb,SAAK,MAAM;AACX,SAAK,SAAS,CAAC;AACf,SAAK,WAAW,CAAC;AACjB,SAAK,SAAS;AAAA,EAClB;AACJ;AAnLa,kBACM,YAAqC;AADjD,IAAM,mBAAN;","names":["doc"]}
@@ -26,9 +26,9 @@ declare const IuguChargeSchema: z.ZodObject<{
26
26
  pdf: string;
27
27
  invoice_id: string;
28
28
  LR: string;
29
- reversible?: string | null | undefined;
30
29
  brand?: string | null | undefined;
31
30
  bin?: string | null | undefined;
31
+ reversible?: string | null | undefined;
32
32
  last4?: string | null | undefined;
33
33
  issuer?: string | null | undefined;
34
34
  identification?: string | null | undefined;
@@ -42,9 +42,9 @@ declare const IuguChargeSchema: z.ZodObject<{
42
42
  pdf: string;
43
43
  invoice_id: string;
44
44
  LR: string;
45
- reversible?: string | null | undefined;
46
45
  brand?: string | null | undefined;
47
46
  bin?: string | null | undefined;
47
+ reversible?: string | null | undefined;
48
48
  last4?: string | null | undefined;
49
49
  issuer?: string | null | undefined;
50
50
  identification?: string | null | undefined;
@@ -26,9 +26,9 @@ declare const IuguChargeSchema: z.ZodObject<{
26
26
  pdf: string;
27
27
  invoice_id: string;
28
28
  LR: string;
29
- reversible?: string | null | undefined;
30
29
  brand?: string | null | undefined;
31
30
  bin?: string | null | undefined;
31
+ reversible?: string | null | undefined;
32
32
  last4?: string | null | undefined;
33
33
  issuer?: string | null | undefined;
34
34
  identification?: string | null | undefined;
@@ -42,9 +42,9 @@ declare const IuguChargeSchema: z.ZodObject<{
42
42
  pdf: string;
43
43
  invoice_id: string;
44
44
  LR: string;
45
- reversible?: string | null | undefined;
46
45
  brand?: string | null | undefined;
47
46
  bin?: string | null | undefined;
47
+ reversible?: string | null | undefined;
48
48
  last4?: string | null | undefined;
49
49
  issuer?: string | null | undefined;
50
50
  identification?: string | null | undefined;
@@ -12,9 +12,9 @@ declare const dataSchema: z.ZodObject<{
12
12
  masked_number: z.ZodString;
13
13
  }, "strip", z.ZodTypeAny, {
14
14
  brand: string;
15
- bin: string;
16
15
  holder_name: string;
17
16
  display_number: string;
17
+ bin: string;
18
18
  year: number;
19
19
  month: number;
20
20
  last_digits: string;
@@ -22,9 +22,9 @@ declare const dataSchema: z.ZodObject<{
22
22
  masked_number: string;
23
23
  }, {
24
24
  brand: string;
25
- bin: string;
26
25
  holder_name: string;
27
26
  display_number: string;
27
+ bin: string;
28
28
  year: number;
29
29
  month: number;
30
30
  last_digits: string;
@@ -47,9 +47,9 @@ declare const paymentMethodSchema: z.ZodObject<{
47
47
  masked_number: z.ZodString;
48
48
  }, "strip", z.ZodTypeAny, {
49
49
  brand: string;
50
- bin: string;
51
50
  holder_name: string;
52
51
  display_number: string;
52
+ bin: string;
53
53
  year: number;
54
54
  month: number;
55
55
  last_digits: string;
@@ -57,9 +57,9 @@ declare const paymentMethodSchema: z.ZodObject<{
57
57
  masked_number: string;
58
58
  }, {
59
59
  brand: string;
60
- bin: string;
61
60
  holder_name: string;
62
61
  display_number: string;
62
+ bin: string;
63
63
  year: number;
64
64
  month: number;
65
65
  last_digits: string;
@@ -72,9 +72,9 @@ declare const paymentMethodSchema: z.ZodObject<{
72
72
  item_type: string;
73
73
  data: {
74
74
  brand: string;
75
- bin: string;
76
75
  holder_name: string;
77
76
  display_number: string;
77
+ bin: string;
78
78
  year: number;
79
79
  month: number;
80
80
  last_digits: string;
@@ -87,9 +87,9 @@ declare const paymentMethodSchema: z.ZodObject<{
87
87
  item_type: string;
88
88
  data: {
89
89
  brand: string;
90
- bin: string;
91
90
  holder_name: string;
92
91
  display_number: string;
92
+ bin: string;
93
93
  year: number;
94
94
  month: number;
95
95
  last_digits: string;
@@ -139,9 +139,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
139
139
  masked_number: z.ZodString;
140
140
  }, "strip", z.ZodTypeAny, {
141
141
  brand: string;
142
- bin: string;
143
142
  holder_name: string;
144
143
  display_number: string;
144
+ bin: string;
145
145
  year: number;
146
146
  month: number;
147
147
  last_digits: string;
@@ -149,9 +149,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
149
149
  masked_number: string;
150
150
  }, {
151
151
  brand: string;
152
- bin: string;
153
152
  holder_name: string;
154
153
  display_number: string;
154
+ bin: string;
155
155
  year: number;
156
156
  month: number;
157
157
  last_digits: string;
@@ -164,9 +164,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
164
164
  item_type: string;
165
165
  data: {
166
166
  brand: string;
167
- bin: string;
168
167
  holder_name: string;
169
168
  display_number: string;
169
+ bin: string;
170
170
  year: number;
171
171
  month: number;
172
172
  last_digits: string;
@@ -179,9 +179,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
179
179
  item_type: string;
180
180
  data: {
181
181
  brand: string;
182
- bin: string;
183
182
  holder_name: string;
184
183
  display_number: string;
184
+ bin: string;
185
185
  year: number;
186
186
  month: number;
187
187
  last_digits: string;
@@ -216,9 +216,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
216
216
  item_type: string;
217
217
  data: {
218
218
  brand: string;
219
- bin: string;
220
219
  holder_name: string;
221
220
  display_number: string;
221
+ bin: string;
222
222
  year: number;
223
223
  month: number;
224
224
  last_digits: string;
@@ -253,9 +253,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
253
253
  item_type: string;
254
254
  data: {
255
255
  brand: string;
256
- bin: string;
257
256
  holder_name: string;
258
257
  display_number: string;
258
+ bin: string;
259
259
  year: number;
260
260
  month: number;
261
261
  last_digits: string;
@@ -12,9 +12,9 @@ declare const dataSchema: z.ZodObject<{
12
12
  masked_number: z.ZodString;
13
13
  }, "strip", z.ZodTypeAny, {
14
14
  brand: string;
15
- bin: string;
16
15
  holder_name: string;
17
16
  display_number: string;
17
+ bin: string;
18
18
  year: number;
19
19
  month: number;
20
20
  last_digits: string;
@@ -22,9 +22,9 @@ declare const dataSchema: z.ZodObject<{
22
22
  masked_number: string;
23
23
  }, {
24
24
  brand: string;
25
- bin: string;
26
25
  holder_name: string;
27
26
  display_number: string;
27
+ bin: string;
28
28
  year: number;
29
29
  month: number;
30
30
  last_digits: string;
@@ -47,9 +47,9 @@ declare const paymentMethodSchema: z.ZodObject<{
47
47
  masked_number: z.ZodString;
48
48
  }, "strip", z.ZodTypeAny, {
49
49
  brand: string;
50
- bin: string;
51
50
  holder_name: string;
52
51
  display_number: string;
52
+ bin: string;
53
53
  year: number;
54
54
  month: number;
55
55
  last_digits: string;
@@ -57,9 +57,9 @@ declare const paymentMethodSchema: z.ZodObject<{
57
57
  masked_number: string;
58
58
  }, {
59
59
  brand: string;
60
- bin: string;
61
60
  holder_name: string;
62
61
  display_number: string;
62
+ bin: string;
63
63
  year: number;
64
64
  month: number;
65
65
  last_digits: string;
@@ -72,9 +72,9 @@ declare const paymentMethodSchema: z.ZodObject<{
72
72
  item_type: string;
73
73
  data: {
74
74
  brand: string;
75
- bin: string;
76
75
  holder_name: string;
77
76
  display_number: string;
77
+ bin: string;
78
78
  year: number;
79
79
  month: number;
80
80
  last_digits: string;
@@ -87,9 +87,9 @@ declare const paymentMethodSchema: z.ZodObject<{
87
87
  item_type: string;
88
88
  data: {
89
89
  brand: string;
90
- bin: string;
91
90
  holder_name: string;
92
91
  display_number: string;
92
+ bin: string;
93
93
  year: number;
94
94
  month: number;
95
95
  last_digits: string;
@@ -139,9 +139,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
139
139
  masked_number: z.ZodString;
140
140
  }, "strip", z.ZodTypeAny, {
141
141
  brand: string;
142
- bin: string;
143
142
  holder_name: string;
144
143
  display_number: string;
144
+ bin: string;
145
145
  year: number;
146
146
  month: number;
147
147
  last_digits: string;
@@ -149,9 +149,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
149
149
  masked_number: string;
150
150
  }, {
151
151
  brand: string;
152
- bin: string;
153
152
  holder_name: string;
154
153
  display_number: string;
154
+ bin: string;
155
155
  year: number;
156
156
  month: number;
157
157
  last_digits: string;
@@ -164,9 +164,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
164
164
  item_type: string;
165
165
  data: {
166
166
  brand: string;
167
- bin: string;
168
167
  holder_name: string;
169
168
  display_number: string;
169
+ bin: string;
170
170
  year: number;
171
171
  month: number;
172
172
  last_digits: string;
@@ -179,9 +179,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
179
179
  item_type: string;
180
180
  data: {
181
181
  brand: string;
182
- bin: string;
183
182
  holder_name: string;
184
183
  display_number: string;
184
+ bin: string;
185
185
  year: number;
186
186
  month: number;
187
187
  last_digits: string;
@@ -216,9 +216,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
216
216
  item_type: string;
217
217
  data: {
218
218
  brand: string;
219
- bin: string;
220
219
  holder_name: string;
221
220
  display_number: string;
221
+ bin: string;
222
222
  year: number;
223
223
  month: number;
224
224
  last_digits: string;
@@ -253,9 +253,9 @@ declare const IuguClientSchema: z.ZodObject<z.objectUtil.extendShape<{
253
253
  item_type: string;
254
254
  data: {
255
255
  brand: string;
256
- bin: string;
257
256
  holder_name: string;
258
257
  display_number: string;
258
+ bin: string;
259
259
  year: number;
260
260
  month: number;
261
261
  last_digits: string;
@@ -397,6 +397,7 @@ var _FirestoreService = /*#__PURE__*/ function() {
397
397
  switch(_state.label){
398
398
  case 0:
399
399
  if (!_this._path) throw new Error("Path must be set");
400
+ console.log(_this._path);
400
401
  return [
401
402
  4,
402
403
  (0, import_firestore.getDocs)((0, import_firestore.query).apply(this, [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/repository/base.repository.ts","../../src/firebase/firebase.ts"],"names":["where","limitConstraint","orderByConstraint","doc","import_firestore"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,uBAgBO;AAYA,IAAM,oBAAN,MAAM,kBAAiB;AAAA,EAUlB,YAAY,WAAsB;AAN1C,SAAQ,QAAuB;AAC/B,SAAQ,MAA8B;AACtC,SAAQ,SAAsC;AAC9C,SAAQ,SAA4B,CAAC;AACrC,SAAQ,WAA4D,CAAC;AAGjE,SAAK,aAAa;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAc,YAAY,WAAwC;AAC9D,QAAI,CAAC,kBAAiB,WAAW;AAC7B,wBAAiB,YAAY,IAAI,kBAAiB,SAAS;AAAA,IAC/D;AACA,WAAO,kBAAiB;AAAA,EAC5B;AAAA,EAEO,KAAK,MAAoB;AAC5B,SAAK,QAAQ;AACb,WAAO;AAAA,EACX;AAAA,EAEO,GAAG,IAA2B;AACjC,SAAK,MAAM;AACX,WAAO;AAAA,EACX;AAAA,EAEO,SAASA,QAAgC;AAC5C,SAAK,SAASA;AACd,WAAO;AAAA,EACX;AAAA,EAEO,MAAM,OAAqB;AAC9B,SAAK,aAAS,iBAAAC,OAAgB,KAAK;AACnC,WAAO;AAAA,EACX;AAAA,EAEO,QAAQ,OAAe,YAA4B,QAAc;AACpE,SAAK,SAAS,KAAK,EAAE,OAAO,UAAU,CAAC;AACvC,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,MAA4B;AACrC,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,UAAM,OAAO,UAAM,6BAAO,sBAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;AACzE,SAAK,MAAM;AACX,WAAO,KAAK,OAAO,IAAI,kBAAiB,YAAe,IAAI,IAAI;AAAA,EACnE;AAAA,EAEA,MAAa,SAA0B;AACnC,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,UAAM,OAAO,UAAM,8BAAQ;AAAA,UACzB,6BAAW,KAAK,YAAY,KAAK,KAAK;AAAA,MACtC,GAAG,KAAK;AAAA,MACR,GAAG,KAAK,SAAS,IAAI,WAAK,iBAAAC,SAAkB,EAAE,OAAO,EAAE,SAAS,CAAC;AAAA,MACjE,GAAI,KAAK,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC;AAAA,IACrC,CAAC;AACD,SAAK,MAAM;AACX,WAAO,KAAK,KAAK,IAAI,CAACC,SAAQ,kBAAiB,YAAeA,IAAG,CAAC;AAAA,EACtE;AAAA,EAEO,eAAkB,UAAmC,YAAyB;AACjF,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,UAAM,kBAAc;AAAA,UAClB,sBAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE;AAAA,MAC9C,EAAE,wBAAwB,KAAK;AAAA,MAC/B,CAAC,SAAS;AACN,YAAI,KAAK,OAAO,GAAG;AACf,mBAAS,kBAAiB,YAAe,IAAI,CAAC;AAAA,QAClD,OAAO;AACH,kBAAQ,KAAK,kBAAkB,KAAK,GAAG,UAAU,KAAK,KAAK,EAAE;AAC7D,mBAAS,IAAI;AACb,cAAI;AAAY,uBAAW;AAAA,QAC/B;AAAA,MACJ;AAAA,IACF;AACA,SAAK,MAAM;AACX,WAAO;AAAA,EACX;AAAA,EAEO,WAAc,UAA+B,YAAyB;AACzE,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,UAAM,kBAAc;AAAA,UAClB;AAAA,YACE,6BAAW,KAAK,YAAY,KAAK,KAAK;AAAA,QACtC,GAAG,KAAK;AAAA,QACR,GAAG,KAAK,SAAS,IAAI,WAAK,iBAAAD,SAAkB,EAAE,OAAO,EAAE,SAAS,CAAC;AAAA,QACjE,GAAI,KAAK,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC;AAAA,MACrC;AAAA,MACA,CAAC,aAAa;AACV,YAAI,CAAC,SAAS,OAAO;AACjB,mBAAS,SAAS,KAAK,IAAI,CAAC,UAAU,kBAAiB,YAAe,KAAK,CAAC,CAAC;AAAA,QACjF,OAAO;AACH,kBAAQ,KAAK,0BAA0B,KAAK,KAAK,EAAE;AACnD,mBAAS,CAAC,CAAC;AACX,cAAI;AAAY,uBAAW;AAAA,QAC/B;AAAA,MACJ;AAAA,IACF;AACA,SAAK,MAAM;AACX,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,IAAO,MAAqB;AACrC,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,UAAM,MAAM,UAAM,6BAAO,6BAAW,KAAK,YAAY,KAAK,KAAK,GAAG,kBAAiB,iBAAiB,IAAI,CAAC;AACzG,SAAK,MAAM;AACX,WAAO,EAAE,GAAG,MAAM,IAAI,IAAI,GAAG;AAAA,EACjC;AAAA,EAEA,MAAa,IAAqB,MAAS,QAAQ,MAAkB;AACjE,QAAI,CAAC,KAAK;AAAO,YAAM,IAAI,MAAM,kBAAkB;AACnD,UAAM,QAAQ,KAAK,OAAO,KAAK,MAAM;AAErC,QAAI,OAAO;AACP,gBAAM,6BAAO,sBAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,EAAE,GAAG,kBAAiB,iBAAiB,IAAI,GAAG,EAAE,MAAM,CAAC;AAC7G,WAAK,MAAM;AACX,aAAO,EAAE,GAAG,MAAM,IAAI,MAAM;AAAA,IAChC,OAAO;AACH,YAAM,MAAM,UAAM,6BAAO,6BAAW,KAAK,YAAY,KAAK,KAAK,GAAG,kBAAiB,iBAAiB,IAAI,CAAC;AACzG,WAAK,MAAM;AACX,aAAO,EAAE,GAAG,MAAM,IAAI,IAAI,GAAG;AAAA,IACjC;AAAA,EACJ;AAAA,EAEA,MAAa,OAAU,MAAwB;AAC3C,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,cAAM,gCAAU,sBAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE,GAAG,kBAAiB,iBAAiB,IAAI,CAAC;AACxG,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,SAAwB;AACjC,QAAI,CAAC,KAAK,SAAS,KAAK,OAAO;AAAM,YAAM,IAAI,MAAM,yBAAyB;AAC9E,cAAM,gCAAU,sBAAI,KAAK,YAAY,KAAK,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;AAC/D,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,MAAa,KAAsB,MAAS,QAAQ,MAAkB;AAClE,QAAI,KAAK,IAAI;AACT,YAAM,KAAK,KAAK,KAAK,KAAM,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,MAAM,KAAK;AACxD,aAAO;AAAA,IACX,OAAO;AACH,aAAO,MAAM,KAAK,KAAK,KAAK,KAAM,EAAE,IAAI,IAAI;AAAA,IAChD;AAAA,EACJ;AAAA;AAAA,EAIA,OAAe,YAAe,UAA+B;AACzD,WAAO;AAAA,MACH,GAAG,SAAS,KAAK;AAAA,MACjB,IAAI,SAAS,KAAK,GAAG,MAAM,SAAS;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,OAAe,iBAAoB,MAAS;AACxC,WAAO,OAAO;AAAA,MACZ,OAAO,QAAQ,IAAa,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,QAChD;AAAA,QACA,UAAU,SAAY,OAAO;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACJ;AAAA,EAEQ,QAAQ;AACZ,SAAK,QAAQ;AACb,SAAK,MAAM;AACX,SAAK,SAAS,CAAC;AACf,SAAK,WAAW,CAAC;AACjB,SAAK,SAAS;AAAA,EAClB;AACJ;AAlLa,kBACM,YAAqC;AADjD,IAAM,mBAAN;;;AD3BP,IAAAE,oBAA+B;AAExB,IAAe,iBAAf,MAA+C;AAAA,EAA/C;AAIL,SAAQ,SAAqB,CAAC;AAAA;AAAA,EAI9B,QAAQ,IAAqB;AAC3B,WAAO,iBAAiB,YAAY,KAAK,SAAS,EAAE,KAAK,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,IAAO;AAAA,EACpF;AAAA,EAEA,SAAS;AACP,SAAK,iBAAiB;AACtB,WAAO,iBAAiB,YAAY,KAAK,SAAS,EAAE,KAAK,KAAK,IAAI,EAAE,QAAQ,WAAW,EAAE,OAAU;AAAA,EACrG;AAAA,EAEA,MAAM,OAAOD,MAAQ;AACnB,UAAM,iBAAiB,YAAY,KAAK,SAAS,EAAE,KAAK,KAAK,IAAI,EAAE,GAAGA,KAAI,EAAE,EAAE,OAAOA,IAAG;AAAA,EAC1F;AAAA,EAEA,IAAIA,MAAQ,UAA4B,OAAiB;AACvD,QAAI,kBAAmB,iBAAiB,YAAY,KAAK,SAAS,EAAE,KAAK,KAAK,IAAI;AAChF,QAAG;AAAU,wBAAkB,gBAAgB,GAAG,QAAQ;AAC5D,WAAO,gBAAgB,IAAIA,MAAK,KAAK;AAAA,EACvC;AAAA,EAEA,MAAM,WAAmB,OAA0B,OAAiD;AAClG,SAAK,OAAO,KAAK,EAAE,WAAW,OAAO,MAAM,CAAC;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,OAAqB;AAC3B,SAAK,aAAa;AAClB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,GAAiB;AACrB,SAAK,aAAa;AAClB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAoB;AACxB,QAAI,kBAAmB,iBAAiB,YAAY,KAAK,SAAS,EAAE,KAAK,KAAK,IAAI;AAElF,QAAI,KAAK,OAAO,SAAS,GAAG;AAC1B,wBAAkB,gBAAgB;AAAA,QAChC,GAAG,KAAK,OAAO,IAAI,WAAK,yBAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC;AAAA,MAC9D;AAAA,IACF;AAEA,QAAI,KAAK,YAAY;AACnB,wBAAkB,gBAAgB,QAAQ,KAAK,UAAU;AAAA,IAC3D;AAEA,QAAI,KAAK,eAAe,QAAW;AACjC,wBAAkB,gBAAgB,MAAM,KAAK,UAAU;AAAA,IACzD;AACA,UAAM,SAAS,MAAM,gBAAgB,OAAU;AAC/C,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA,EAEQ,mBAAmB;AACzB,SAAK,SAAS,CAAC;AACf,SAAK,aAAa;AAClB,SAAK,aAAa;AAAA,EACpB;AACF","sourcesContent":["import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n","import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/repository/base.repository.ts","../../src/firebase/firebase.ts"],"names":["where","limitConstraint","orderByConstraint","doc","import_firestore"],"mappings":"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","sourcesContent":["import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n","import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n console.log(this._path)\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n"]}
@@ -61,6 +61,7 @@ var _FirestoreService = class _FirestoreService {
61
61
  async getAll() {
62
62
  if (!this._path)
63
63
  throw new Error("Path must be set");
64
+ console.log(this._path);
64
65
  const snap = await getDocs(query(
65
66
  collection(this._firestore, this._path),
66
67
  ...this._where,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/firebase/firebase.ts","../../src/repository/base.repository.ts"],"sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n","import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n"],"mappings":"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","names":["where","doc","doc"]}
1
+ {"version":3,"sources":["../../src/firebase/firebase.ts","../../src/repository/base.repository.ts"],"sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n console.log(this._path)\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n","import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n"],"mappings":"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","names":["where","doc","doc"]}
@@ -463,6 +463,7 @@ var _FirestoreService = /*#__PURE__*/ function() {
463
463
  switch(_state.label){
464
464
  case 0:
465
465
  if (!_this._path) throw new Error("Path must be set");
466
+ console.log(_this._path);
466
467
  return [
467
468
  4,
468
469
  (0, import_firestore.getDocs)((0, import_firestore.query).apply(this, [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/repository/product.repository.ts","../../src/firebase/firebase.ts","../../src/repository/base.repository.ts"],"names":["where","limitConstraint","orderByConstraint","doc","import_firestore"],"mappings":"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","sourcesContent":["import {BaseRepository} from \"./base.repository\";\nimport {Product} from \"../model/integrada/product\";\nimport {Firestore} from \"firebase/firestore\";\n\nexport class ProductRepository extends BaseRepository<Product>{\n protected path = 'lojaintegrada/products/products';\n protected firestore: Firestore\n\n private static instance: ProductRepository;\n\n private constructor(firestore: Firestore) {\n super();\n this.firestore = firestore;\n }\n\n public static getInstance(firestore: Firestore): ProductRepository {\n if (!ProductRepository.instance) {\n ProductRepository.instance = new ProductRepository(firestore);\n }\n return ProductRepository.instance;\n }\n}\n","import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n","import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/repository/product.repository.ts","../../src/firebase/firebase.ts","../../src/repository/base.repository.ts"],"names":["where","limitConstraint","orderByConstraint","doc","import_firestore"],"mappings":"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","sourcesContent":["import {BaseRepository} from \"./base.repository\";\nimport {Product} from \"../model/integrada/product\";\nimport {Firestore} from \"firebase/firestore\";\n\nexport class ProductRepository extends BaseRepository<Product>{\n protected path = 'lojaintegrada/products/products';\n protected firestore: Firestore\n\n private static instance: ProductRepository;\n\n private constructor(firestore: Firestore) {\n super();\n this.firestore = firestore;\n }\n\n public static getInstance(firestore: Firestore): ProductRepository {\n if (!ProductRepository.instance) {\n ProductRepository.instance = new ProductRepository(firestore);\n }\n return ProductRepository.instance;\n }\n}\n","import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n console.log(this._path)\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n","import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n"]}
@@ -61,6 +61,7 @@ var _FirestoreService = class _FirestoreService {
61
61
  async getAll() {
62
62
  if (!this._path)
63
63
  throw new Error("Path must be set");
64
+ console.log(this._path);
64
65
  const snap = await getDocs(query(
65
66
  collection(this._firestore, this._path),
66
67
  ...this._where,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/firebase/firebase.ts","../../src/repository/base.repository.ts","../../src/repository/product.repository.ts"],"sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n","import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n","import {BaseRepository} from \"./base.repository\";\nimport {Product} from \"../model/integrada/product\";\nimport {Firestore} from \"firebase/firestore\";\n\nexport class ProductRepository extends BaseRepository<Product>{\n protected path = 'lojaintegrada/products/products';\n protected firestore: Firestore\n\n private static instance: ProductRepository;\n\n private constructor(firestore: Firestore) {\n super();\n this.firestore = firestore;\n }\n\n public static getInstance(firestore: Firestore): ProductRepository {\n if (!ProductRepository.instance) {\n ProductRepository.instance = new ProductRepository(firestore);\n }\n return ProductRepository.instance;\n }\n}\n"],"mappings":"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","names":["where","doc","doc"]}
1
+ {"version":3,"sources":["../../src/firebase/firebase.ts","../../src/repository/base.repository.ts","../../src/repository/product.repository.ts"],"sourcesContent":["import {Model} from \"../model\";\nimport {\n addDoc,\n collection,\n deleteDoc,\n doc,\n getDoc,\n getDocs,\n onSnapshot,\n limit as limitConstraint,\n query,\n orderBy as orderByConstraint,\n setDoc,\n updateDoc,\n Firestore,\n QueryConstraint,\n DocumentSnapshot,\n} from 'firebase/firestore'\nimport {QueryLimitConstraint} from \"@firebase/firestore\";\nimport {FieldPath, WhereFilterOp} from \"@google-cloud/firestore\";\n\n\nexport interface Operator {\n fieldPath: string | FieldPath,\n opStr: WhereFilterOp,\n value: string | object | number | boolean\n}\n\n\nexport class FirestoreService {\n private static _instance: FirestoreService | null = null\n private readonly _firestore: Firestore\n\n private _path: string | null = null\n private _id: string | number | null = null\n private _limit: QueryLimitConstraint | null = null\n private _where: QueryConstraint[] = []\n private _orderBy: { field: string; direction?: 'asc' | 'desc' }[] = []\n\n private constructor(firestore: Firestore) {\n this._firestore = firestore\n }\n\n /**\n * Get singleton instance using provided Firestore\n */\n public static getInstance(firestore: Firestore): FirestoreService {\n if (!FirestoreService._instance) {\n FirestoreService._instance = new FirestoreService(firestore)\n }\n return FirestoreService._instance\n }\n\n public path(path: string): this {\n this._path = path\n return this\n }\n\n public id(id: string | number): this {\n this._id = id\n return this\n }\n\n public where(...where: QueryConstraint[]): this {\n this._where = where\n return this\n }\n\n public limit(limit: number): this {\n this._limit = limitConstraint(limit)\n return this\n }\n\n public orderBy(field: string, direction: 'asc' | 'desc' = 'desc'): this {\n this._orderBy.push({ field, direction })\n return this\n }\n\n public async get<T>(): Promise<T | null> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const snap = await getDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n return snap.exists() ? FirestoreService.dataToModel<T>(snap) : null\n }\n\n public async getAll<T>(): Promise<T[]> {\n if (!this._path) throw new Error('Path must be set')\n console.log(this._path)\n const snap = await getDocs(query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ))\n this.reset()\n return snap.docs.map((doc) => FirestoreService.dataToModel<T>(doc))\n }\n\n public onSnapshotById<T>(callback: (doc: T | null) => void, onNotFound?: () => void) {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n const unsubscribe = onSnapshot(\n doc(this._firestore, this._path, `${this._id}`),\n { includeMetadataChanges: true },\n (snap) => {\n if (snap.exists()) {\n callback(FirestoreService.dataToModel<T>(snap))\n } else {\n console.warn(`doc not found: ${this._id} path: ${this._path}`)\n callback(null)\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public onSnapshot<T>(callback: (docs: T[]) => void, onNotFound?: () => void) {\n if (!this._path) throw new Error('Path must be set')\n const unsubscribe = onSnapshot(\n query(\n collection(this._firestore, this._path),\n ...this._where,\n ...this._orderBy.map(o => orderByConstraint(o.field, o.direction)),\n ...(this._limit ? [this._limit] : [])\n ),\n (snapshot) => {\n if (!snapshot.empty) {\n callback(snapshot.docs.map((value) => FirestoreService.dataToModel<T>(value)))\n } else {\n console.warn(`no docs found in path: ${this._path}`)\n callback([])\n if (onNotFound) onNotFound()\n }\n }\n )\n this.reset()\n return unsubscribe\n }\n\n public async add<T>(data: T): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n\n public async set<T extends Model>(data: T, merge = true): Promise<T> {\n if (!this._path) throw new Error('Path must be set')\n const docId = this._id ?? data.id ?? null\n\n if (docId) {\n await setDoc(doc(this._firestore, this._path, `${docId}`), FirestoreService.replaceUndefined(data), { merge })\n this.reset()\n return { ...data, id: docId } as T\n } else {\n const ref = await addDoc(collection(this._firestore, this._path), FirestoreService.replaceUndefined(data))\n this.reset()\n return { ...data, id: ref.id } as T\n }\n }\n\n public async update<T>(data: T): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await updateDoc(doc(this._firestore, this._path, `${this._id}`), FirestoreService.replaceUndefined(data))\n this.reset()\n }\n\n public async delete(): Promise<void> {\n if (!this._path || this._id == null) throw new Error('Path and ID must be set')\n await deleteDoc(doc(this._firestore, this._path, `${this._id}`))\n this.reset()\n }\n\n public async save<T extends Model>(data: T, merge = true): Promise<T> {\n if (data.id) {\n await this.path(this._path!).id(data.id).set(data, merge)\n return data\n } else {\n return await this.path(this._path!).add(data)\n }\n }\n\n // ---------- UTILS ----------\n\n private static dataToModel<T>(snapshot: DocumentSnapshot): T {\n return {\n ...snapshot.data(),\n id: snapshot.data()?.id || snapshot.id,\n } as T\n }\n\n private static replaceUndefined<T>(data: T) {\n return Object.fromEntries(\n Object.entries(data as Model).map(([key, value]) => [\n key,\n value === undefined ? null : value,\n ])\n )\n }\n\n private reset() {\n this._path = null\n this._id = null\n this._where = []\n this._orderBy = []\n this._limit = null\n }\n}\n","import {Model} from \"../model\";\nimport {FirestoreService, Operator} from \"../firebase/firebase\";\nimport {Firestore, where} from 'firebase/firestore'\n\nexport abstract class BaseRepository<T extends Model> {\n protected abstract path: string;\n protected abstract firestore: Firestore;\n\n private wheres: Operator[] = [];\n private orderField?: string;\n private limitCount?: number;\n\n getById(id: string | number) {\n return FirestoreService.getInstance(this.firestore).path(this.path).id(id).get<T>();\n }\n\n getAll() {\n this.resetFluentState();\n return FirestoreService.getInstance(this.firestore).path(this.path).orderBy('createdAt').getAll<T>();\n }\n\n async update(doc: T) {\n await FirestoreService.getInstance(this.firestore).path(this.path).id(doc.id).update(doc);\n }\n\n set(doc: T, customId?: string | number, merge?: boolean) {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n if(customId) firebaseService = firebaseService.id(customId)\n return firebaseService.set(doc, merge);\n }\n\n where(fieldPath: string, opStr: Operator['opStr'], value: string | number | boolean | object): this {\n this.wheres.push({ fieldPath, opStr, value });\n return this;\n }\n\n orderBy(field: string): this {\n this.orderField = field;\n return this;\n }\n\n limit(n: number): this {\n this.limitCount = n;\n return this;\n }\n\n async get(): Promise<T[]> {\n let firebaseService = FirestoreService.getInstance(this.firestore).path(this.path)\n\n if (this.wheres.length > 0) {\n firebaseService = firebaseService.where(\n ...this.wheres.map(w => where(w.fieldPath, w.opStr, w.value))\n )\n }\n\n if (this.orderField) {\n firebaseService = firebaseService.orderBy(this.orderField)\n }\n\n if (this.limitCount !== undefined) {\n firebaseService = firebaseService.limit(this.limitCount)\n }\n const result = await firebaseService.getAll<T>();\n this.resetFluentState();\n return result;\n }\n\n private resetFluentState() {\n this.wheres = [];\n this.orderField = undefined;\n this.limitCount = undefined;\n }\n}\n","import {BaseRepository} from \"./base.repository\";\nimport {Product} from \"../model/integrada/product\";\nimport {Firestore} from \"firebase/firestore\";\n\nexport class ProductRepository extends BaseRepository<Product>{\n protected path = 'lojaintegrada/products/products';\n protected firestore: Firestore\n\n private static instance: ProductRepository;\n\n private constructor(firestore: Firestore) {\n super();\n this.firestore = firestore;\n }\n\n public static getInstance(firestore: Firestore): ProductRepository {\n if (!ProductRepository.instance) {\n ProductRepository.instance = new ProductRepository(firestore);\n }\n return ProductRepository.instance;\n }\n}\n"],"mappings":"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","names":["where","doc","doc"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@_henriquewilson/gabirubi-domain",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "gabirubi domain",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",