@sofiakb/fireblaze-ts 1.0.0-dev.1

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 sofiakb
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,139 @@
1
+ [![Contributors][contributors-shield]][contributors-url]
2
+ [![Forks][forks-shield]][forks-url]
3
+ [![Stargazers][stars-shield]][stars-url]
4
+ [![Issues][issues-shield]][issues-url]
5
+ [![MIT License][license-shield]][license-url]
6
+
7
+ [comment]: <> ([![LinkedIn][linkedin-shield]][linkedin-url])
8
+
9
+
10
+
11
+ <!-- PROJECT LOGO -->
12
+ <br />
13
+ <p align="center">
14
+
15
+ <h1 align="center">fireblaze-ts</h1>
16
+
17
+ <p align="center">
18
+ A typescript library for axios API calls.
19
+ <br />
20
+ <!--<a href="https://github.com/sofiakb/fireblaze-ts"><strong>Explore the docs »</strong></a>-->
21
+ <br />
22
+ <br />
23
+ <a href="https://github.com/sofiakb/fireblaze-ts/issues">Report Bug</a>
24
+ ·
25
+ <a href="https://github.com/sofiakb/fireblaze-ts/issues">Request Feature</a>
26
+ </p>
27
+
28
+ </p>
29
+
30
+
31
+
32
+ <!-- TABLE OF CONTENTS -->
33
+ <details open="open">
34
+ <summary>Table of Contents</summary>
35
+ <ol>
36
+ <li>
37
+ <a href="#about-the-project">About the library</a>
38
+ <ul>
39
+ <li><a href="#built-with">Built With</a></li>
40
+ </ul>
41
+ </li>
42
+ <li>
43
+ <a href="#getting-started">Getting Started</a>
44
+ <ul>
45
+ <li><a href="#prerequisites">Prerequisites</a></li>
46
+ <li><a href="#installation">Installation</a></li>
47
+ </ul>
48
+ </li>
49
+ <li><a href="#usage">Usage</a></li>
50
+ <li><a href="#roadmap">Roadmap</a></li>
51
+ <li><a href="#contributing">Contributing</a></li>
52
+ <li><a href="#license">License</a></li>
53
+ <li><a href="#contact">Contact</a></li>
54
+ <li><a href="#acknowledgements">Acknowledgements</a></li>
55
+ </ol>
56
+ </details>
57
+
58
+
59
+
60
+ <!-- ABOUT THE PROJECT -->
61
+
62
+ ## About The Library
63
+
64
+ The library simplify API calls with axios library.
65
+
66
+ ### Built With
67
+
68
+ * [Javascript](https://developer.mozilla.org/fr/docs/Web/JavaScript)
69
+ * [Typescript](https://www.typescriptlang.org/)
70
+ * [Axios](https://axios-http.com/docs/intro)
71
+
72
+ <!-- GETTING STARTED -->
73
+
74
+ ### Prerequisites
75
+
76
+ - axios
77
+ - typescript
78
+
79
+ ### Installation
80
+
81
+ ```shell
82
+ npm install --save @sofiakb/fireblaze-ts
83
+ ```
84
+
85
+ <!-- USAGE EXAMPLES -->
86
+
87
+ ## Usage
88
+
89
+ ```typescript
90
+ import Api from "@sofiakb/fireblaze-ts";
91
+
92
+ // Use in controller
93
+ class ExampleController extends Api {
94
+
95
+ }
96
+ ```
97
+
98
+ <!-- ROADMAP -->
99
+
100
+ ## Roadmap
101
+
102
+ See the [open issues](https://github.com/sofiakb/fireblaze-ts/issues) for a list of proposed features (and known issues).
103
+
104
+
105
+ <!-- LICENSE -->
106
+
107
+ ## License
108
+
109
+ Distributed under the MIT License. See `LICENSE` for more information.
110
+
111
+
112
+
113
+
114
+ <!-- MARKDOWN LINKS & IMAGES -->
115
+ <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
116
+
117
+ [contributors-shield]: https://img.shields.io/github/contributors/sofiakb/fireblaze-ts.svg?style=for-the-badge
118
+
119
+ [contributors-url]: https://github.com/sofiakb/fireblaze-ts/graphs/contributors
120
+
121
+ [forks-shield]: https://img.shields.io/github/forks/sofiakb/fireblaze-ts.svg?style=for-the-badge
122
+
123
+ [forks-url]: https://github.com/sofiakb/fireblaze-ts/network/members
124
+
125
+ [stars-shield]: https://img.shields.io/github/stars/sofiakb/fireblaze-ts.svg?style=for-the-badge
126
+
127
+ [stars-url]: https://github.com/sofiakb/fireblaze-ts/stargazers
128
+
129
+ [issues-shield]: https://img.shields.io/github/issues/sofiakb/fireblaze-ts.svg?style=for-the-badge
130
+
131
+ [issues-url]: https://github.com/sofiakb/fireblaze-ts/issues
132
+
133
+ [license-shield]: https://img.shields.io/github/license/sofiakb/fireblaze-ts.svg?style=for-the-badge
134
+
135
+ [license-url]: https://github.com/sofiakb/fireblaze-ts/blob/main/LICENSE
136
+
137
+ [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
138
+
139
+ [linkedin-url]: https://www.linkedin.com/in/sofiane-akbly/
@@ -0,0 +1,15 @@
1
+ interface FirebaseConfig {
2
+ apiKey: string;
3
+ authDomain: string;
4
+ projectId: string;
5
+ storageBucket: string;
6
+ messagingSenderId: string;
7
+ appId: string;
8
+ withEmulator?: boolean;
9
+ emulators?: {
10
+ ports?: {
11
+ firestore?: number;
12
+ };
13
+ };
14
+ }
15
+ export default FirebaseConfig;
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=firebase-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase-config.js","sourceRoot":"","sources":["../../src/core/firebase-config.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { FirebaseApp } from 'firebase/app';
2
+ import { CollectionReference, DocumentReference, FieldPath, Firestore, FirestoreError, OrderByDirection, Query, QueryConstraint, QuerySnapshot, WhereFilterOp } from 'firebase/firestore';
3
+ import { ClassConstructor } from '../types/class-constructor';
4
+ import Nullable from '../types/nullable';
5
+ export interface FirebaseRepositoryAttributes {
6
+ collectionName: string;
7
+ options?: FirebaseRepositoryOptions;
8
+ firebase?: FirebaseApp;
9
+ }
10
+ export interface FirebaseRepositoryOptions {
11
+ cache: {
12
+ use: boolean;
13
+ until: number;
14
+ };
15
+ }
16
+ export default class FirebaseRepository<T> {
17
+ #private;
18
+ model: ClassConstructor<T> | null;
19
+ options?: FirebaseRepositoryOptions;
20
+ _firestoreLocalStoragePrefix: string;
21
+ constructor(attributes: FirebaseRepositoryAttributes);
22
+ clearLocalStorage(): boolean;
23
+ cleanup(data: any): any;
24
+ casting(data: any): Promise<T | null>;
25
+ castingAll(values: any): Promise<T | (Awaited<T> | null)[] | null>;
26
+ _castData(querySnapshot: QuerySnapshot): Promise<(Awaited<T> | null)[]>;
27
+ all(): this;
28
+ where(column: string, value: string | string[] | number | boolean | null, operator?: WhereFilterOp): this;
29
+ whereSnapshot(column: string, value: string | string[] | number | boolean | null, operator?: WhereFilterOp): this;
30
+ findOneById(id: string): Promise<any[] | null>;
31
+ documentReference(docID: string): null | DocumentReference;
32
+ doc(docID: string, cast?: boolean): Promise<any>;
33
+ orderBy(fieldPath: string | FieldPath, directionStr?: OrderByDirection): this;
34
+ limit(_limit?: number): this;
35
+ first(): Promise<any>;
36
+ offset(_offset?: number): this;
37
+ prepareData(data: any): {
38
+ documentReference: DocumentReference<import("firebase/firestore").DocumentData>;
39
+ data: any;
40
+ };
41
+ store(data: any): Promise<T | null>;
42
+ storeMultiple(values: any[]): Promise<void>;
43
+ update(docID: string, data: any, force?: boolean): Promise<any>;
44
+ delete(docID: string): Promise<any>;
45
+ deleteMultiple(values: any[]): Promise<void>;
46
+ count(_where?: QueryConstraint): Promise<number>;
47
+ get(snapshot?: QuerySnapshot): Promise<any | null>;
48
+ snapshots(callback?: (value: any) => any, cast?: boolean): Promise<any[] | null>;
49
+ static verifyLogin(error: FirestoreError): null | Promise<any> | FirestoreError;
50
+ static _now(): Date;
51
+ get collection(): CollectionReference;
52
+ set collection(collection: CollectionReference);
53
+ get collectionName(): string;
54
+ set collectionName(collectionName: string);
55
+ get snapshot(): Nullable<Query>;
56
+ get firestore(): Firestore;
57
+ set firestore(firestore: Firestore);
58
+ get instance(): FirebaseApp;
59
+ }
@@ -0,0 +1,312 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const firestore_1 = require("firebase/firestore");
7
+ const lodash_1 = require("lodash");
8
+ const moment_1 = __importDefault(require("moment"));
9
+ const jquery_1 = __importDefault(require("jquery"));
10
+ const local_storage_1 = __importDefault(require("@sofiakb/local-storage"));
11
+ const utils_1 = require("../utils");
12
+ const date_1 = require("../utils/date");
13
+ const no_firebase_instance_exception_1 = __importDefault(require("../exceptions/no-firebase-instance-exception"));
14
+ class FirebaseRepository {
15
+ #instance;
16
+ #firestore;
17
+ #collection;
18
+ #collectionName;
19
+ #snapshot;
20
+ model = null;
21
+ options;
22
+ _firestoreLocalStoragePrefix = 'firestore:query:';
23
+ constructor(attributes) {
24
+ if (!attributes.firebase && !globalThis.__sofiakb_firebase)
25
+ throw new no_firebase_instance_exception_1.default();
26
+ this.#instance = attributes.firebase ?? globalThis.__sofiakb_firebase;
27
+ this.#firestore = (0, firestore_1.getFirestore)();
28
+ this.#collectionName = attributes.collectionName;
29
+ this.#collection = (0, firestore_1.collection)(this.#firestore, attributes.collectionName);
30
+ this.options = attributes.options;
31
+ this._firestoreLocalStoragePrefix = `${this._firestoreLocalStoragePrefix}${this.collection.path}:`;
32
+ this.#snapshot = null;
33
+ const self = this;
34
+ if (this.options?.cache.use) {
35
+ (0, jquery_1.default)(window).on('unload', function () {
36
+ return self.clearLocalStorage();
37
+ });
38
+ }
39
+ }
40
+ clearLocalStorage() {
41
+ const localStorageKeys = Object.keys(localStorage), _firestoreLocalStoragePrefix = this._firestoreLocalStoragePrefix;
42
+ for (const localStorageKey of localStorageKeys)
43
+ if (localStorageKey.startsWith(_firestoreLocalStoragePrefix))
44
+ local_storage_1.default.delete(localStorageKey);
45
+ return true;
46
+ }
47
+ cleanup(data) {
48
+ const object = this.model ? new this.model(data) : null;
49
+ const item = ['collection', 'instance', 'firestore', 'model'];
50
+ item.forEach((attribute) => delete object[attribute]);
51
+ return object;
52
+ }
53
+ async casting(data) {
54
+ return this.model ? new this.model(data) : null;
55
+ }
56
+ async castingAll(values) {
57
+ return Array.isArray(values)
58
+ ? await Promise.all((0, lodash_1.map)(values, async (item) => await this.casting(item)))
59
+ : await this.casting(values);
60
+ }
61
+ async _castData(querySnapshot) {
62
+ return await Promise.all(querySnapshot.docs.map(async (doc) => await this.casting(doc.data())));
63
+ }
64
+ all() {
65
+ this.#snapshot = (0, firestore_1.query)(this.#collection);
66
+ return this;
67
+ }
68
+ where(column, value, operator = '==') {
69
+ return this.whereSnapshot(column, value, operator);
70
+ }
71
+ whereSnapshot(column, value, operator = '==') {
72
+ this.#snapshot = (0, firestore_1.query)(this.#snapshot ?? this.#collection, (0, firestore_1.where)(column, operator, value));
73
+ return this;
74
+ }
75
+ async findOneById(id) {
76
+ return this.doc(id);
77
+ }
78
+ documentReference(docID) {
79
+ if (docID.trim() === '')
80
+ return null;
81
+ return (0, firestore_1.doc)(this.#collection, docID);
82
+ }
83
+ async doc(docID, cast = true) {
84
+ if (docID.trim() === '')
85
+ return null;
86
+ return new Promise(async (resolve, reject) => {
87
+ const documentData = await (0, firestore_1.getDoc)(this.documentReference(docID)).catch((error) => reject(FirebaseRepository.verifyLogin(error)));
88
+ if (documentData instanceof firestore_1.DocumentSnapshot) {
89
+ return documentData.exists()
90
+ ? resolve(cast ? await this.casting(documentData.data()) : documentData)
91
+ : resolve(null);
92
+ }
93
+ else
94
+ reject(null);
95
+ });
96
+ }
97
+ orderBy(fieldPath, directionStr) {
98
+ this.#snapshot = (0, firestore_1.query)(this.#snapshot ?? this.#collection, (0, firestore_1.orderBy)(fieldPath, directionStr));
99
+ return this;
100
+ }
101
+ limit(_limit = 1) {
102
+ this.#snapshot = (0, firestore_1.query)(this.#snapshot ?? this.#collection, (0, firestore_1.limit)(_limit));
103
+ return this;
104
+ }
105
+ first() {
106
+ return this.limit(1).get();
107
+ }
108
+ offset(_offset = 1) {
109
+ this.#snapshot = (0, firestore_1.query)(this.#snapshot ?? this.#collection, (0, firestore_1.startAt)(_offset));
110
+ return this;
111
+ }
112
+ prepareData(data) {
113
+ if (!data.id) {
114
+ data.id = '';
115
+ }
116
+ data.createdAt = (0, date_1.toMoment)(data.createdAt ?? FirebaseRepository._now());
117
+ data.updatedAt = (0, date_1.toMoment)(data.updatedAt ?? FirebaseRepository._now());
118
+ data = (0, lodash_1.pickBy)(data, (v) => v !== undefined);
119
+ Object.keys(data).map((key) => (data[key] =
120
+ typeof data[key] === 'object'
121
+ ? data[key]?.constructor?.name?.toLowerCase() === 'moment'
122
+ ? data[key].toDate()
123
+ : (0, utils_1.toJSON)(data[key])
124
+ : data[key]));
125
+ const documentReference = data.id && data.id.trim() !== '' ? (0, firestore_1.doc)(this.collection, data.id) : (0, firestore_1.doc)(this.collection);
126
+ return { documentReference, data: { ...data, id: documentReference.id } };
127
+ }
128
+ async store(data) {
129
+ const prepared = this.prepareData(data);
130
+ await (0, firestore_1.setDoc)(prepared.documentReference, { ...this.cleanup(prepared.data), id: prepared.documentReference.id });
131
+ return await this.casting({ ...data, id: prepared.documentReference.id });
132
+ }
133
+ async storeMultiple(values) {
134
+ const chunkValues = (0, lodash_1.chunk)(values, 500);
135
+ for await (const chunkValue of chunkValues) {
136
+ const batch = (0, firestore_1.writeBatch)(this.firestore);
137
+ (0, lodash_1.each)(chunkValue, (data) => {
138
+ const prepared = this.prepareData(data);
139
+ batch.set(prepared.documentReference, {
140
+ ...prepared.data,
141
+ id: prepared.documentReference.id,
142
+ });
143
+ });
144
+ await batch.commit();
145
+ }
146
+ }
147
+ async update(docID, data, force = false) {
148
+ if (docID.trim() === '')
149
+ return null;
150
+ const documentReference = this.documentReference(docID);
151
+ if (documentReference) {
152
+ data.updatedAt = FirebaseRepository._now();
153
+ delete data.createdAt;
154
+ if (force) {
155
+ await (0, firestore_1.setDoc)(documentReference, data);
156
+ }
157
+ else {
158
+ await (0, firestore_1.updateDoc)(documentReference, data);
159
+ }
160
+ }
161
+ this.clearLocalStorage();
162
+ return this.doc(docID);
163
+ }
164
+ async delete(docID) {
165
+ if (docID.trim() === '')
166
+ return null;
167
+ const documentReference = this.documentReference(docID);
168
+ this.clearLocalStorage();
169
+ if (documentReference) {
170
+ await (0, firestore_1.deleteDoc)(documentReference);
171
+ return true;
172
+ }
173
+ return false;
174
+ }
175
+ async deleteMultiple(values) {
176
+ const chunkValues = (0, lodash_1.chunk)(values, 500);
177
+ this.clearLocalStorage();
178
+ for await (const chunkValue of chunkValues) {
179
+ const batch = (0, firestore_1.writeBatch)(this.#firestore);
180
+ for await (const data of chunkValue) {
181
+ const _documentReference = typeof data === 'string' ? await this.documentReference(data) : data;
182
+ if (_documentReference)
183
+ batch.delete(_documentReference);
184
+ }
185
+ await batch.commit();
186
+ }
187
+ }
188
+ async count(_where) {
189
+ const _limit = 500;
190
+ let count = 0;
191
+ const _query = _where
192
+ ? (0, firestore_1.query)(this.#collection, _where, (0, firestore_1.orderBy)('id', 'desc'), (0, firestore_1.limit)(_limit))
193
+ : (0, firestore_1.query)(this.#collection, (0, firestore_1.orderBy)('id', 'desc'), (0, firestore_1.limit)(_limit));
194
+ let snapshot = await (0, firestore_1.getDocs)(_query);
195
+ if (snapshot.docs != null) {
196
+ while (snapshot.size > 0 && !snapshot.empty) {
197
+ count += snapshot.size;
198
+ snapshot = await (0, firestore_1.getDocs)((0, firestore_1.query)(_query, (0, firestore_1.startAfter)(snapshot.docs[snapshot.size - 1])));
199
+ }
200
+ }
201
+ return count;
202
+ }
203
+ async get(snapshot) {
204
+ return new Promise((resolve, reject) => {
205
+ if (!this.#snapshot) {
206
+ return reject(null);
207
+ }
208
+ const _query = this.#snapshot;
209
+ // @ts-ignore
210
+ const queryObject = _query._query;
211
+ let queryString = utils_1.base64.encode(JSON.stringify({
212
+ collectionGroup: queryObject.collectionGroup,
213
+ endAt: queryObject.endAt,
214
+ explicitOrderBy: queryObject.explicitOrderBy,
215
+ filters: queryObject.filters,
216
+ limit: queryObject.limit,
217
+ limitType: queryObject.limitType,
218
+ path: queryObject.path,
219
+ startAt: queryObject.startAt,
220
+ }));
221
+ if (this.options?.cache.use) {
222
+ queryString = utils_1.base64.encode(JSON.stringify({
223
+ collectionGroup: queryObject.collectionGroup,
224
+ endAt: queryObject.endAt,
225
+ explicitOrderBy: queryObject.explicitOrderBy,
226
+ filters: queryObject.filters,
227
+ limit: queryObject.limit,
228
+ limitType: queryObject.limitType,
229
+ path: queryObject.path,
230
+ startAt: queryObject.startAt,
231
+ }));
232
+ const cacheStorage = local_storage_1.default.get(`${this._firestoreLocalStoragePrefix}${queryString}`);
233
+ if (cacheStorage?.data && cacheStorage?.until && (0, moment_1.default)().unix() < (0, moment_1.default)(cacheStorage.until)?.unix()) {
234
+ return resolve(this.castingAll(cacheStorage?.data));
235
+ }
236
+ }
237
+ (0, firestore_1.getDocs)(_query)
238
+ .then(async (querySnapshot) => {
239
+ this.#snapshot = null;
240
+ const result = await this._castData(querySnapshot);
241
+ if (this.options?.cache.use) {
242
+ const firestoreStorage = {
243
+ data: await Promise.all(querySnapshot.docs.map(async (doc) => doc.data())),
244
+ until: (0, moment_1.default)().add(this.options?.cache.until, 'seconds'),
245
+ };
246
+ // @ts-ignore
247
+ local_storage_1.default.set(`${this._firestoreLocalStoragePrefix}${queryString}`, firestoreStorage);
248
+ }
249
+ resolve(result);
250
+ })
251
+ .catch((error) => reject(FirebaseRepository.verifyLogin(error)))
252
+ .finally(() => (this.#snapshot = null));
253
+ });
254
+ }
255
+ async snapshots(callback, cast) {
256
+ return new Promise((resolve, reject) => {
257
+ if (!this.#snapshot) {
258
+ return reject(null);
259
+ }
260
+ const _query = this.#snapshot;
261
+ (0, firestore_1.onSnapshot)(_query, { includeMetadataChanges: true }, async (querySnapshot) => {
262
+ this.#snapshot = null;
263
+ const results = cast
264
+ ? await this._castData(querySnapshot)
265
+ : await Promise.all(querySnapshot.docs.map(async (doc) => await doc.data()));
266
+ if (callback) {
267
+ callback(results);
268
+ }
269
+ return resolve(results);
270
+ }, (error) => reject(FirebaseRepository.verifyLogin(error)), () => (this.#snapshot = null));
271
+ });
272
+ }
273
+ static verifyLogin(error) {
274
+ if (error.code === 'permission-denied') {
275
+ return null;
276
+ /*cookie.delete(store.getters.TOKEN_NAME)
277
+ return redirect.login.view()*/
278
+ }
279
+ else {
280
+ return error;
281
+ }
282
+ }
283
+ static _now() {
284
+ return firestore_1.Timestamp.now().toDate();
285
+ }
286
+ get collection() {
287
+ return this.#collection;
288
+ }
289
+ set collection(collection) {
290
+ this.#collection = collection;
291
+ }
292
+ get collectionName() {
293
+ return this.#collectionName;
294
+ }
295
+ set collectionName(collectionName) {
296
+ this.#collectionName = collectionName;
297
+ }
298
+ get snapshot() {
299
+ return this.#snapshot;
300
+ }
301
+ get firestore() {
302
+ return this.#firestore;
303
+ }
304
+ set firestore(firestore) {
305
+ this.#firestore = firestore;
306
+ }
307
+ get instance() {
308
+ return this.#instance;
309
+ }
310
+ }
311
+ exports.default = FirebaseRepository;
312
+ //# sourceMappingURL=firebase-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase-repository.js","sourceRoot":"","sources":["../../src/core/firebase-repository.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAYb,kDA8B4B;AAE5B,mCAAkD;AAClD,oDAAwC;AACxC,oDAAuB;AAEvB,2EAAqD;AAErD,oCAA0C;AAC1C,wCAAyC;AAKzC,kHAAuF;AAiBvF,MAAqB,kBAAkB;IAC7B,SAAS,CAAc;IAChC,UAAU,CAAY;IACtB,WAAW,CAAsB;IAEjC,eAAe,CAAS;IAExB,SAAS,CAAkB;IAE3B,KAAK,GAA+B,IAAI,CAAC;IAEzC,OAAO,CAA6B;IAEpC,4BAA4B,GAAG,kBAAkB,CAAC;IAElD,YAAY,UAAwC;QACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAE,UAAkB,CAAC,kBAAkB;YAAE,MAAM,IAAI,wCAA2B,EAAE,CAAC;QAE7G,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,IAAK,UAAkB,CAAC,kBAAkB,CAAC;QAC/E,IAAI,CAAC,UAAU,GAAG,IAAA,wBAAY,GAAE,CAAC;QAEjC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAElC,IAAI,CAAC,4BAA4B,GAAG,GAAG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;QAEnG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE;YAC5B,IAAA,gBAAC,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;gBACtB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;SACH;IACF,CAAC;IAED,iBAAiB;QAChB,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EACjD,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;QAElE,KAAK,MAAM,eAAe,IAAI,gBAAgB;YAC7C,IAAI,eAAe,CAAC,UAAU,CAAC,4BAA4B,CAAC;gBAAE,uBAAe,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACvG,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CAAC,IAAS;QAChB,MAAM,MAAM,GAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAS;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAW;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAA,YAAG,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,aAA4B;QAC3C,OAAO,MAAM,OAAO,CAAC,GAAG,CACvB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAA0B,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAC5F,CAAC;IACH,CAAC;IAED,GAAG;QACF,IAAI,CAAC,SAAS,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,KAAkD,EAAE,WAA0B,IAAI;QACvG,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,aAAa,CACZ,MAAc,EACd,KAAkD,EAClD,WAA0B,IAAI;QAE9B,IAAI,CAAC,SAAS,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,IAAA,iBAAK,EAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,IAAA,eAAG,EAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,IAAI,GAAG,IAAI;QACnC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,MAAM,YAAY,GAA4B,MAAM,IAAA,kBAAM,EAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1G,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAC7C,CAAC;YAEF,IAAI,YAAY,YAAY,4BAAgB,EAAE;gBAC7C,OAAO,YAAY,CAAC,MAAM,EAAE;oBAC3B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;oBACxE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;;gBAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,SAA6B,EAAE,YAA+B;QACrE,IAAI,CAAC,SAAS,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,IAAA,mBAAO,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAE7F,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,MAAM,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,IAAA,iBAAK,EAAC,MAAM,CAAC,CAAC,CAAC;QAE1E,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,OAAO,GAAG,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,IAAA,mBAAO,EAAC,OAAO,CAAC,CAAC,CAAC;QAE7E,OAAO,IAAI,CAAC;IACb,CAAC;IAED,WAAW,CAAC,IAAS;QACpB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;SACb;QAED,IAAI,CAAC,SAAS,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QAEvE,IAAI,GAAG,IAAA,eAAM,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CACpB,CAAC,GAAG,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,GAAG,CAAC;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,QAAQ;oBACzD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;oBACpB,CAAC,CAAC,IAAA,cAAM,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACf,CAAC;QAEF,MAAM,iBAAiB,GACtB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAA,eAAG,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,eAAG,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzF,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAS;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAA,kBAAM,EAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAa;QAChC,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,WAAW,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEzC,IAAA,aAAI,EAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,EAAE;oBACrC,GAAG,QAAQ,CAAC,IAAI;oBAChB,EAAE,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE;iBACjC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;SACrB;IACF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,IAAS,EAAE,KAAK,GAAG,KAAK;QACnD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,iBAAiB,GAAgC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAErF,IAAI,iBAAiB,EAAE;YACtB,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,SAAS,CAAC;YACtB,IAAI,KAAK,EAAE;gBACV,MAAM,IAAA,kBAAM,EAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;aACtC;iBAAM;gBACN,MAAM,IAAA,qBAAS,EAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;aACzC;SACD;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACzB,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,iBAAiB,GAAgC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAErF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,iBAAiB,EAAE;YACtB,MAAM,IAAA,qBAAS,EAAC,iBAAiB,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;SACZ;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAa;QACjC,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,WAAW,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE1C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,UAAU,EAAE;gBACpC,MAAM,kBAAkB,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChG,IAAI,kBAAkB;oBAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;aACzD;YACD,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;SACrB;IACF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAwB;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM;YACpB,CAAC,CAAC,IAAA,iBAAK,EAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,mBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAA,iBAAK,EAAC,MAAM,CAAC,CAAC;YACvE,CAAC,CAAC,IAAA,iBAAK,EAAC,IAAI,CAAC,WAAW,EAAE,IAAA,mBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAA,iBAAK,EAAC,MAAM,CAAC,CAAC,CAAC;QAEjE,IAAI,QAAQ,GAAkB,MAAM,IAAA,mBAAO,EAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE;YAC1B,OAAO,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAC5C,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC;gBACvB,QAAQ,GAAG,MAAM,IAAA,mBAAO,EAAC,IAAA,iBAAK,EAAC,MAAM,EAAE,IAAA,sBAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtF;SACD;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAwB;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACpB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;aACpB;YAED,MAAM,MAAM,GAAU,IAAI,CAAC,SAAS,CAAC;YACrC,aAAa;YACb,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,IAAI,WAAW,GAAG,cAAM,CAAC,MAAM,CAC9B,IAAI,CAAC,SAAS,CAAC;gBACd,eAAe,EAAE,WAAW,CAAC,eAAe;gBAC5C,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,eAAe,EAAE,WAAW,CAAC,eAAe;gBAC5C,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC5B,CAAC,CACF,CAAC;YAEF,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE;gBAC5B,WAAW,GAAG,cAAM,CAAC,MAAM,CAC1B,IAAI,CAAC,SAAS,CAAC;oBACd,eAAe,EAAE,WAAW,CAAC,eAAe;oBAC5C,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,eAAe,EAAE,WAAW,CAAC,eAAe;oBAC5C,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;iBAC5B,CAAC,CACF,CAAC;gBAEF,MAAM,YAAY,GAAG,uBAAe,CAAC,GAAG,CACvC,GAAG,IAAI,CAAC,4BAA4B,GAAG,WAAW,EAAE,CAChC,CAAC;gBAEtB,IAAI,YAAY,EAAE,IAAI,IAAI,YAAY,EAAE,KAAK,IAAI,IAAA,gBAAM,GAAE,CAAC,IAAI,EAAE,GAAG,IAAA,gBAAM,EAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE;oBACtG,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;iBACpD;aACD;YAED,IAAA,mBAAO,EAAC,MAAM,CAAC;iBACb,IAAI,CAAC,KAAK,EAAE,aAA4B,EAAE,EAAE;gBAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE;oBAC5B,MAAM,gBAAgB,GAAqB;wBAC1C,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CACtB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CACxE;wBACD,KAAK,EAAE,IAAA,gBAAM,GAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;qBACzD,CAAC;oBACF,aAAa;oBACb,uBAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,4BAA4B,GAAG,WAAW,EAAE,EAAE,gBAAgB,CAAC,CAAC;iBAC5F;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC/D,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAA8B,EAAE,IAAc;QAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACpB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;aACpB;YAED,MAAM,MAAM,GAAU,IAAI,CAAC,SAAS,CAAC;YAErC,IAAA,sBAAU,EACT,MAAM,EACN,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAChC,KAAK,EAAE,aAA4B,EAAE,EAAE;gBACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,MAAM,OAAO,GAAG,IAAI;oBACnB,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;oBACrC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CACjB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAA0B,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAC7E,CAAC;gBACL,IAAI,QAAQ,EAAE;oBACb,QAAQ,CAAC,OAAO,CAAC,CAAC;iBAClB;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EACxD,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAC7B,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,KAAqB;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;YACvC,OAAO,IAAI,CAAC;YACZ;0CAC8B;SAC9B;aAAM;YACN,OAAO,KAAK,CAAC;SACb;IACF,CAAC;IAED,MAAM,CAAC,IAAI;QACV,OAAO,qBAAS,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,IAAI,UAAU,CAAC,UAA+B;QAC7C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED,IAAI,cAAc,CAAC,cAAsB;QACxC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,IAAI,SAAS,CAAC,SAAoB;QACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACD;AA3YD,qCA2YC"}
@@ -0,0 +1,19 @@
1
+ import { FirebaseApp } from 'firebase/app';
2
+ import { Auth } from 'firebase/auth';
3
+ import { FirebaseStorage } from 'firebase/storage';
4
+ import FirebaseConfig from './firebase-config';
5
+ export default class Firebase {
6
+ config: FirebaseConfig;
7
+ app: FirebaseApp;
8
+ auth?: Auth;
9
+ storage?: FirebaseStorage;
10
+ constructor(config: FirebaseConfig);
11
+ test(): void;
12
+ withAuth(): void;
13
+ withStorage(): void;
14
+ get(): {
15
+ app: FirebaseApp;
16
+ auth: Auth | undefined;
17
+ storage: FirebaseStorage | undefined;
18
+ };
19
+ }
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*
4
+ * @sofiakb/fireblaze-ts
5
+ *
6
+ * (c) Sofiane Akbly <sofiane.akbly@digi-service.fr>
7
+ *
8
+ * Created by WebStorm on 21/09/2022 at 10:04
9
+ * File src/core/firebase
10
+ */
11
+ const app_1 = require("firebase/app");
12
+ const firestore_1 = require("firebase/firestore");
13
+ const auth_1 = require("firebase/auth");
14
+ const storage_1 = require("firebase/storage");
15
+ class Firebase {
16
+ config;
17
+ app;
18
+ auth;
19
+ storage;
20
+ constructor(config) {
21
+ this.config = config;
22
+ this.app = (0, app_1.initializeApp)(this.config);
23
+ if (config.withEmulator === true)
24
+ (0, firestore_1.connectFirestoreEmulator)((0, firestore_1.getFirestore)(), 'localhost', config.emulators?.ports?.firestore ?? 9100);
25
+ globalThis.__sofiakb_firebase = this.app;
26
+ }
27
+ test() {
28
+ // declare let firebase: Window["firebase"] = 'test';
29
+ }
30
+ withAuth() {
31
+ this.auth = (0, auth_1.getAuth)(this.app);
32
+ }
33
+ withStorage() {
34
+ this.storage = (0, storage_1.getStorage)(this.app);
35
+ }
36
+ get() {
37
+ return {
38
+ app: this.app,
39
+ auth: this.auth,
40
+ storage: this.storage,
41
+ };
42
+ }
43
+ }
44
+ exports.default = Firebase;
45
+ //# sourceMappingURL=firebase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/core/firebase.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;GAOG;AAEH,sCAA0D;AAC1D,kDAA4E;AAE5E,wCAA8C;AAC9C,8CAA+D;AAI/D,MAAqB,QAAQ;IAC5B,MAAM,CAAiB;IACvB,GAAG,CAAc;IAEjB,IAAI,CAAQ;IACZ,OAAO,CAAmB;IAE1B,YAAY,MAAsB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,GAAG,GAAG,IAAA,mBAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;YAC/B,IAAA,oCAAwB,EAAC,IAAA,wBAAY,GAAE,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC;QAElG,UAAkB,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC;IACnD,CAAC;IAED,IAAI;QACH,qDAAqD;IACtD,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW;QACV,IAAI,CAAC,OAAO,GAAG,IAAA,oBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,GAAG;QACF,OAAO;YACN,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC;IACH,CAAC;CACD;AArCD,2BAqCC"}
@@ -0,0 +1,3 @@
1
+ export default class NoFirebaseInstanceException extends Error {
2
+ constructor(message?: string);
3
+ }
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*
4
+ * @sofiakb/fireblaze-ts
5
+ *
6
+ * (c) Sofiane Akbly <sofiane.akbly@digi-service.fr>
7
+ *
8
+ * Created by WebStorm on 21/09/2022 at 14:27
9
+ * File src/exceptions/no-firebase-instance-exception
10
+ */
11
+ class NoFirebaseInstanceException extends Error {
12
+ constructor(message = 'No firebase instance found') {
13
+ super(message);
14
+ }
15
+ }
16
+ exports.default = NoFirebaseInstanceException;
17
+ //# sourceMappingURL=no-firebase-instance-exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-firebase-instance-exception.js","sourceRoot":"","sources":["../../src/exceptions/no-firebase-instance-exception.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;GAOG;AAEH,MAAqB,2BAA4B,SAAQ,KAAK;IAC7D,YAAY,OAAO,GAAG,4BAA4B;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;IAChB,CAAC;CACD;AAJD,8CAIC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { default as Firebase } from './core/firebase';
2
+ export { default as FirebaseConfig } from './core/firebase-config';
3
+ export { default as FirebaseRepository } from './core/firebase-repository';
4
+ export { default as NoFirebaseInstanceException } from './exceptions/no-firebase-instance-exception';
package/lib/index.js ADDED
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NoFirebaseInstanceException = exports.FirebaseRepository = exports.Firebase = void 0;
7
+ /*
8
+ * @sofiakb/fireblaze-ts
9
+ *
10
+ * (c) Sofiakb <contact.sofiakb@gmail.com>
11
+ *
12
+ * Created by WebStorm on 10/01/2022 at 09:57
13
+ * File src/index
14
+ */
15
+ var firebase_1 = require("./core/firebase");
16
+ Object.defineProperty(exports, "Firebase", { enumerable: true, get: function () { return __importDefault(firebase_1).default; } });
17
+ var firebase_repository_1 = require("./core/firebase-repository");
18
+ Object.defineProperty(exports, "FirebaseRepository", { enumerable: true, get: function () { return __importDefault(firebase_repository_1).default; } });
19
+ var no_firebase_instance_exception_1 = require("./exceptions/no-firebase-instance-exception");
20
+ Object.defineProperty(exports, "NoFirebaseInstanceException", { enumerable: true, get: function () { return __importDefault(no_firebase_instance_exception_1).default; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb;;;;;;;GAOG;AAEH,4CAAsD;AAA7C,qHAAA,OAAO,OAAY;AAE5B,kEAA2E;AAAlE,0IAAA,OAAO,OAAsB;AACtC,8FAAqG;AAA5F,8JAAA,OAAO,OAA+B"}
@@ -0,0 +1,3 @@
1
+ export interface ClassConstructor<T> {
2
+ new (attributes?: any): T;
3
+ }
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=class-constructor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-constructor.js","sourceRoot":"","sources":["../../src/types/class-constructor.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare type Nullable<T> = T | null;
2
+ export default Nullable;
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=nullable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../src/types/nullable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const toMoment: (value: any) => any;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.toMoment = void 0;
7
+ /*
8
+ * @sofiakb/fireblaze-ts
9
+ *
10
+ * (c) Sofiane Akbly <sofiane.akbly@digi-service.fr>
11
+ *
12
+ * Created by WebStorm on 21/09/2022 at 14:20
13
+ * File src/utils/date
14
+ */
15
+ const moment_1 = __importDefault(require("moment"));
16
+ const toMoment = (value) => typeof value !== 'undefined' && value !== null
17
+ ? value?.constructor?.name?.toLowerCase() === 'moment'
18
+ ? value
19
+ : value?.constructor?.name?.toLowerCase() === 'date'
20
+ ? (0, moment_1.default)(value?.toLocaleDateString('fr') + ' ' + value?.toLocaleTimeString('fr'), 'DD/MM/YYYY HH:mm:ss')
21
+ : moment_1.default.unix(value?._seconds ?? value?.seconds ?? null)
22
+ : value;
23
+ exports.toMoment = toMoment;
24
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb;;;;;;;GAOG;AAEH,oDAA4B;AAErB,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAE,EAAE,CACtC,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI;IAC7C,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,QAAQ;QACrD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,MAAM;YACpD,CAAC,CAAC,IAAA,gBAAM,EAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC;YACxG,CAAC,CAAC,gBAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;IACzD,CAAC,CAAC,KAAK,CAAC;AAPG,QAAA,QAAQ,YAOX"}
@@ -0,0 +1,7 @@
1
+ interface Base64Interface {
2
+ encode(data: string): string;
3
+ decode(data: string): string;
4
+ }
5
+ export declare const base64: Base64Interface;
6
+ export declare const toJSON: (object: any) => any;
7
+ export {};
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toJSON = exports.base64 = void 0;
4
+ exports.base64 = {
5
+ encode: (data) => Buffer.from(data).toString('base64'),
6
+ decode: (data) => Buffer.from(data, 'base64').toString('ascii'),
7
+ };
8
+ const toJSON = (object) => ({ ...object });
9
+ exports.toJSON = toJSON;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAiBA,QAAA,MAAM,GAAoB;IACtC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC9D,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;CACvE,CAAC;AAEK,MAAM,MAAM,GAAG,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAA1C,QAAA,MAAM,UAAoC"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@sofiakb/fireblaze-ts",
3
+ "version": "1.0.0-dev.1",
4
+ "description": "A typescript library for axios API calls.",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "scripts": {
8
+ "test": "jest",
9
+ "build": "rm -rf lib && tsc",
10
+ "format": "prettier --write \"src/**/*.ts\"",
11
+ "lint": "eslint 'src/**/*.{ts,tsx}' --quiet --fix",
12
+ "prepare": "npm run lint && npm run format && npm run build",
13
+ "prepublishOnly": "npm run lint",
14
+ "preversion": "npm run lint",
15
+ "version": "npm run test && npm run build && npm run format && git add -A src && npm publish --access public",
16
+ "postversion": "git push origin main && git push origin main --tags"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+ssh://git@github.com/sofiakb/fireblaze-ts.git"
21
+ },
22
+ "author": {
23
+ "name": "Sofiakb",
24
+ "email": "<contact.sofiakb@gmail.com>",
25
+ "url": "https://sofianeakbly.fr"
26
+ },
27
+ "license": "MIT",
28
+ "bugs": {
29
+ "url": "https://github.com/sofiakb/fireblaze-ts/issues"
30
+ },
31
+ "homepage": "https://github.com/sofiakb/fireblaze-ts#readme",
32
+ "devDependencies": {
33
+ "@babel/core": "^7.19.1",
34
+ "@babel/preset-env": "^7.19.1",
35
+ "@babel/preset-typescript": "^7.18.6",
36
+ "@sofiakb/local-storage": "1.0.0-alpha.3",
37
+ "@types/jest": "^29.0.3",
38
+ "@types/jquery": "^3.5.14",
39
+ "@types/lodash": "^4.14.185",
40
+ "@types/node": "^18.7.18",
41
+ "@typescript-eslint/eslint-plugin": "^5.38.0",
42
+ "@typescript-eslint/parser": "^5.38.0",
43
+ "babel-jest": "^28.1.3",
44
+ "buffer": "^6.0.3",
45
+ "eslint": "^8.22.0",
46
+ "eslint-config-prettier": "^8.5.0",
47
+ "eslint-plugin-prettier": "^4.2.1",
48
+ "firebase": "^9.10.0",
49
+ "jest": "^28.1.3",
50
+ "jquery": "^3.6.1",
51
+ "lodash": "^4.17.21",
52
+ "moment": "^2.29.4",
53
+ "prettier": "^2.7.1",
54
+ "ts-jest": "^28.0.8",
55
+ "ts-node": "^10.9.1",
56
+ "typescript": "^4.8.3"
57
+ },
58
+ "files": [
59
+ "lib/**/*"
60
+ ],
61
+ "peerDependencies": {
62
+ "@sofiakb/local-storage": "1.0.0-alpha.3",
63
+ "buffer": "^6.0.3",
64
+ "firebase": "^9.10.0",
65
+ "jquery": "^3.6.1",
66
+ "moment": "^2.29.4"
67
+ }
68
+ }