@goatlab/fluent-firebase 0.7.24 → 0.7.25

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.
@@ -0,0 +1,9 @@
1
+ import * as admin from 'firebase-admin';
2
+ import { getAuth as firebaseGetAuth } from 'firebase-admin/auth';
3
+ export declare type FirebaseUser = admin.auth.DecodedIdToken;
4
+ declare class FirebaseClass {
5
+ verifyIdToken: (token: string) => Promise<import("firebase-admin/auth").DecodedIdToken>;
6
+ getAuth: typeof firebaseGetAuth;
7
+ }
8
+ export declare const Firebase: FirebaseClass;
9
+ export {};
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Firebase = void 0;
4
+ const admin = require("firebase-admin");
5
+ const auth_1 = require("firebase-admin/auth");
6
+ class FirebaseClass {
7
+ verifyIdToken = (token) => admin.auth().verifyIdToken(token);
8
+ getAuth = auth_1.getAuth;
9
+ }
10
+ exports.Firebase = new FirebaseClass();
11
+ //# sourceMappingURL=Firebase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Firebase.js","sourceRoot":"","sources":["../src/Firebase.ts"],"names":[],"mappings":";;;AAAA,wCAAuC;AACvC,8CAAgE;AAGhE,MAAM,aAAa;IACjB,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAEpE,OAAO,GAAG,cAAe,CAAA;CAC1B;AAEY,QAAA,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA"}
@@ -0,0 +1,66 @@
1
+ import * as admin from 'firebase-admin';
2
+ import { AnyObject, FluentQuery, LoadedResult, QueryOutput } from '@goatlab/fluent';
3
+ import { BaseConnector, FluentConnectorInterface } from '@goatlab/fluent';
4
+ import { z } from 'zod';
5
+ export interface FirebaseConnectorParams<Input, Output> {
6
+ entity: any;
7
+ inputSchema: z.ZodType<Input>;
8
+ outputSchema?: z.ZodType<Output>;
9
+ }
10
+ /**
11
+ *
12
+ */
13
+ export declare class FirebaseConnector<ModelDTO extends admin.firestore.DocumentData = AnyObject, InputDTO = ModelDTO, OutputDTO = InputDTO> extends BaseConnector<ModelDTO, InputDTO, OutputDTO> implements FluentConnectorInterface<ModelDTO, InputDTO, OutputDTO> {
14
+ private readonly inputSchema;
15
+ private readonly outputSchema;
16
+ private collection;
17
+ private readonly entity;
18
+ constructor({ entity, inputSchema, outputSchema }: FirebaseConnectorParams<InputDTO, OutputDTO>);
19
+ initDB(): number;
20
+ /**
21
+ * Insert the data object into the database.
22
+ * @param data
23
+ */
24
+ insert(data: InputDTO): Promise<OutputDTO>;
25
+ insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
26
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>;
27
+ /**
28
+ * PATCH operation
29
+ * @param data
30
+ */
31
+ updateById(id: string, data: InputDTO): Promise<OutputDTO>;
32
+ /**
33
+ *
34
+ * PUT operation. All fields not included in the data
35
+ * param will be set to null
36
+ *
37
+ * @param id
38
+ * @param data
39
+ */
40
+ replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
41
+ deleteById(id: string): Promise<string>;
42
+ clear(): Promise<boolean>;
43
+ loadFirst(query?: FluentQuery<ModelDTO>): LoadedResult<this>;
44
+ loadById(id: string): LoadedResult<this>;
45
+ /**
46
+ *
47
+ * Returns the firebase-admin collection, you can use it
48
+ * for more complex queries that require the base library
49
+ *
50
+ * @param query
51
+ */
52
+ raw(): admin.firestore.CollectionReference<ModelDTO>;
53
+ rawFirebase(): admin.firestore.Firestore;
54
+ private deleteQueryBatch;
55
+ /**
56
+ * Creates a Clone of the current instance of the class
57
+ * @returns
58
+ */
59
+ protected clone(): any;
60
+ protected loadRelatedData(data: any[], loadedKeys: AnyObject): Promise<admin.firestore.DocumentData[]>;
61
+ /**
62
+ *
63
+ */
64
+ private getGeneratedQueries;
65
+ private getFirebaseWhereQuery;
66
+ }
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FirebaseConnector = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const admin = require("firebase-admin");
6
+ const fluent_1 = require("@goatlab/fluent");
7
+ const fluent_2 = require("@goatlab/fluent");
8
+ const js_utils_1 = require("@goatlab/js-utils");
9
+ /**
10
+ *
11
+ */
12
+ class FirebaseConnector extends fluent_2.BaseConnector {
13
+ inputSchema;
14
+ outputSchema;
15
+ collection;
16
+ entity;
17
+ constructor({ entity, inputSchema, outputSchema }) {
18
+ super();
19
+ this.inputSchema = inputSchema;
20
+ this.outputSchema =
21
+ outputSchema || inputSchema;
22
+ this.entity = entity;
23
+ }
24
+ initDB() {
25
+ const relationShipBuilder = fluent_1.modelGeneratorDataSource.getRepository(this.entity);
26
+ const name = relationShipBuilder.metadata.givenTableName;
27
+ if (!name) {
28
+ throw new Error(`Could not find table by name. Did you include @f.entity in your model?`);
29
+ }
30
+ this.collection = admin
31
+ .firestore()
32
+ .collection(name);
33
+ const { relations } = (0, fluent_1.getRelationsFromModelGenerator)(relationShipBuilder);
34
+ this.modelRelations = relations;
35
+ this.outputKeys = (0, fluent_2.getOutputKeys)(relationShipBuilder) || [];
36
+ return 1;
37
+ }
38
+ // CREATE
39
+ /**
40
+ * Insert the data object into the database.
41
+ * @param data
42
+ */
43
+ async insert(data) {
44
+ this.initDB();
45
+ // Validate Input
46
+ const validatedData = this.inputSchema.parse(data);
47
+ if (data['id']) {
48
+ const found = await this.findById(data['id']);
49
+ if (found) {
50
+ throw new Error(`A document with id ${found[0]['id']} already exists.`);
51
+ }
52
+ }
53
+ const id = data['id'] || js_utils_1.Ids.uuid();
54
+ const item = {
55
+ id,
56
+ ...validatedData
57
+ };
58
+ await this.collection.doc(id).set(item);
59
+ // Validate Output
60
+ return this.outputSchema.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(item)));
61
+ }
62
+ async insertMany(data) {
63
+ this.initDB();
64
+ const validatedData = this.inputSchema.array().parse(data);
65
+ const batch = admin.firestore().batch();
66
+ const batchInserted = [];
67
+ validatedData.forEach(d => {
68
+ const id = d['id'] || js_utils_1.Ids.uuid();
69
+ const item = { id, ...d };
70
+ const insert = this.collection.doc(id);
71
+ batch.set(insert, item);
72
+ batchInserted.push(item);
73
+ });
74
+ await batch.commit();
75
+ return this.outputSchema.array().parse(batchInserted.map(d => {
76
+ return js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(d));
77
+ }));
78
+ }
79
+ // READ
80
+ async findMany(query) {
81
+ this.initDB();
82
+ const [andQuery, orQueries] = this.getGeneratedQueries(query);
83
+ const results = [];
84
+ if (andQuery) {
85
+ const snapshot = await andQuery.get();
86
+ snapshot.forEach(doc => {
87
+ results.push(doc.data());
88
+ });
89
+ }
90
+ const promises = [];
91
+ for (const orQuery of orQueries) {
92
+ promises.push(orQuery.get());
93
+ }
94
+ const orSnapshots = await Promise.all(promises);
95
+ for (const orSnapshot of orSnapshots) {
96
+ orSnapshot.forEach(doc => {
97
+ results.push(doc.data());
98
+ });
99
+ }
100
+ // As there might be duplicated results from the queries,
101
+ // we will deduplicate by ID
102
+ let found = [...new Map(results.map(v => [v.id, v])).values()];
103
+ found.map(d => {
104
+ js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(d));
105
+ });
106
+ if (query?.include) {
107
+ found = await this.loadRelatedData(found, js_utils_1.Objects.flatten(query?.include || {}));
108
+ }
109
+ if (query?.paginated) {
110
+ const paginationInfo = {
111
+ total: 0,
112
+ perPage: query.paginated.perPage,
113
+ currentPage: query.paginated.page,
114
+ nextPage: query.paginated.page + 1,
115
+ firstPage: 1,
116
+ lastPage: Math.ceil(0 / query.paginated.perPage),
117
+ prevPage: query.paginated.page === 1 ? null : query.paginated.page - 1,
118
+ from: (query.paginated.page - 1) * query.paginated.perPage + 1,
119
+ to: query.paginated.perPage * query.paginated.page,
120
+ data: found
121
+ };
122
+ return paginationInfo;
123
+ }
124
+ if (query?.select) {
125
+ // TODO: validate based on the select properties
126
+ return found;
127
+ }
128
+ // Validate Output against schema
129
+ return this.outputSchema?.array().parse(found);
130
+ }
131
+ // UPDATE
132
+ /**
133
+ * PATCH operation
134
+ * @param data
135
+ */
136
+ async updateById(id, data) {
137
+ this.initDB();
138
+ const dataToInsert = this.outputKeys.includes('updated')
139
+ ? {
140
+ ...data,
141
+ ...{ updated: new Date() }
142
+ }
143
+ : data;
144
+ const validatedData = this.inputSchema.parse(dataToInsert);
145
+ await this.collection.doc(id).update({
146
+ ...validatedData,
147
+ id
148
+ });
149
+ const dbResult = await this.findById(id);
150
+ if (!dbResult) {
151
+ throw new Error(`Object not found: ${id}`);
152
+ }
153
+ // Validate Output
154
+ return this.outputSchema?.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(dbResult)));
155
+ }
156
+ /**
157
+ *
158
+ * PUT operation. All fields not included in the data
159
+ * param will be set to null
160
+ *
161
+ * @param id
162
+ * @param data
163
+ */
164
+ async replaceById(id, data) {
165
+ this.initDB();
166
+ const value = await this.findById(id);
167
+ const flatValue = js_utils_1.Objects.flatten(JSON.parse(JSON.stringify(value)));
168
+ Object.keys(flatValue).forEach(key => {
169
+ flatValue[key] = null;
170
+ });
171
+ const nullObject = js_utils_1.Objects.nest(flatValue);
172
+ const newValue = { ...nullObject, ...data };
173
+ delete newValue._id;
174
+ delete newValue.id;
175
+ delete newValue.created;
176
+ delete newValue.updated;
177
+ const dataToInsert = this.outputKeys.includes('updated')
178
+ ? {
179
+ ...data,
180
+ ...{ updated: new Date() }
181
+ }
182
+ : data;
183
+ const validatedData = this.inputSchema.parse(dataToInsert);
184
+ await this.collection
185
+ .doc(id)
186
+ .update(validatedData);
187
+ // TODO: do we need to pull the info again?
188
+ const val = await this.requireById(id);
189
+ return this.outputSchema.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(val)));
190
+ }
191
+ // DELETE
192
+ async deleteById(id) {
193
+ this.initDB();
194
+ await this.collection.doc(id).delete();
195
+ return id;
196
+ }
197
+ async clear() {
198
+ this.initDB();
199
+ const query = this.collection.orderBy('__name__').limit(300);
200
+ return new Promise((resolve, reject) => {
201
+ this.deleteQueryBatch(admin.firestore(), query, 300, resolve, reject);
202
+ });
203
+ }
204
+ // RELATIONS
205
+ loadFirst(query) {
206
+ this.initDB();
207
+ // Create a clone of the original class
208
+ // to avoid polluting attributes (relatedQuery)
209
+ const newInstance = this.clone();
210
+ newInstance.setRelatedQuery({
211
+ entity: this.entity,
212
+ repository: this,
213
+ query: {
214
+ ...query,
215
+ limit: 1
216
+ }
217
+ });
218
+ return newInstance;
219
+ }
220
+ loadById(id) {
221
+ this.initDB();
222
+ // Create a new instance to avoid polluting the original one
223
+ const newInstance = this.clone();
224
+ newInstance.setRelatedQuery({
225
+ entity: this.entity,
226
+ repository: this,
227
+ query: {
228
+ where: {
229
+ id
230
+ }
231
+ }
232
+ });
233
+ return newInstance;
234
+ }
235
+ /**
236
+ *
237
+ * Returns the firebase-admin collection, you can use it
238
+ * for more complex queries that require the base library
239
+ *
240
+ * @param query
241
+ */
242
+ raw() {
243
+ this.initDB();
244
+ return this.collection;
245
+ }
246
+ rawFirebase() {
247
+ this.initDB();
248
+ return admin.firestore();
249
+ }
250
+ deleteQueryBatch(db, query, batchSize, resolve, reject) {
251
+ this.initDB();
252
+ query
253
+ .get()
254
+ .then(snapshot => {
255
+ // When there are no documents left, we are done
256
+ if (snapshot.size == 0) {
257
+ return 0;
258
+ }
259
+ // Delete documents in a batch
260
+ const batch = db.batch();
261
+ snapshot.docs.forEach(doc => {
262
+ batch.delete(doc.ref);
263
+ });
264
+ return batch.commit().then(() => snapshot.size);
265
+ })
266
+ .then(numDeleted => {
267
+ if (numDeleted === 0) {
268
+ resolve();
269
+ return;
270
+ }
271
+ // Recurse on the next process tick, to avoid
272
+ // exploding the stack.
273
+ process.nextTick(() => {
274
+ this.deleteQueryBatch(db, query, batchSize, resolve, reject);
275
+ });
276
+ })
277
+ .catch(reject);
278
+ }
279
+ /**
280
+ * Creates a Clone of the current instance of the class
281
+ * @returns
282
+ */
283
+ clone() {
284
+ this.initDB();
285
+ return new this.constructor();
286
+ }
287
+ //////////////////////////////////////////////////////////////
288
+ // ALL OF THESE METHODS PROBABLY SHOULD BE IN SOMEWHERE ELSE
289
+ //////////////////////////////////////////////////////////////
290
+ async loadRelatedData(data, loadedKeys) {
291
+ const result = await (0, fluent_2.loadRelations)({
292
+ data,
293
+ relations: loadedKeys,
294
+ modelRelations: this.modelRelations,
295
+ provider: 'firebase',
296
+ self: this,
297
+ returnPivot: false
298
+ });
299
+ return result;
300
+ }
301
+ /**
302
+ *
303
+ */
304
+ getGeneratedQueries(query) {
305
+ let { andWhere, orWhere } = this.getFirebaseWhereQuery(query?.where);
306
+ let mergedQueries = [];
307
+ if (andWhere) {
308
+ mergedQueries = [andWhere, ...orWhere];
309
+ }
310
+ else {
311
+ mergedQueries = orWhere;
312
+ }
313
+ const select = Object.keys(js_utils_1.Objects.flatten(query?.select || {}));
314
+ for (const [index] of mergedQueries.entries()) {
315
+ if (select?.length > 0) {
316
+ // Force select the ID
317
+ mergedQueries[index] = mergedQueries[index].select(...['id', ...select]);
318
+ }
319
+ mergedQueries[index] = mergedQueries[index].limit(query?.limit || 10);
320
+ mergedQueries[index] = mergedQueries[index].offset(query?.offset || 0);
321
+ if (query?.orderBy) {
322
+ for (const order of query?.orderBy) {
323
+ const flattenObject = js_utils_1.Objects.flatten(order);
324
+ for (const attribute of Object.keys(flattenObject)) {
325
+ mergedQueries[index] = mergedQueries[index].orderBy(attribute, flattenObject[attribute]);
326
+ }
327
+ }
328
+ }
329
+ }
330
+ const cloned = [...mergedQueries];
331
+ if (andWhere) {
332
+ cloned.shift();
333
+ }
334
+ return [andWhere ? mergedQueries[0] : undefined, cloned];
335
+ }
336
+ getFirebaseWhereQuery(where) {
337
+ if (!where || Object.keys(where).length === 0) {
338
+ return { andWhere: this.collection, orWhere: [] };
339
+ }
340
+ // Every element of the array is an OR
341
+ let andWhereQuery = this.collection;
342
+ let orWhereQueries = [];
343
+ const orConditions = (0, fluent_1.extractConditions)((where['OR'] || []));
344
+ const andConditions = (0, fluent_1.extractConditions)((where['AND'] || []));
345
+ const copy = js_utils_1.Objects.clone(where);
346
+ if (!!copy['AND']) {
347
+ delete copy['AND'];
348
+ }
349
+ if (!!copy['OR']) {
350
+ delete copy['OR'];
351
+ }
352
+ const rootLevelConditions = (0, fluent_1.extractConditions)([copy]);
353
+ // We can merge root level and And conditions in the same query
354
+ for (const condition of andConditions) {
355
+ const { element, operator, value } = condition;
356
+ switch (operator) {
357
+ case fluent_1.LogicOperator.equals:
358
+ andWhereQuery = andWhereQuery.where(element, '==', value);
359
+ break;
360
+ case fluent_1.LogicOperator.isNot:
361
+ andWhereQuery = andWhereQuery.where(element, '!=', value);
362
+ break;
363
+ case fluent_1.LogicOperator.greaterThan:
364
+ andWhereQuery = andWhereQuery.where(element, '>', value);
365
+ break;
366
+ case fluent_1.LogicOperator.greaterOrEqualThan:
367
+ andWhereQuery = andWhereQuery.where(element, '>=', value);
368
+ break;
369
+ case fluent_1.LogicOperator.lessThan:
370
+ andWhereQuery = andWhereQuery.where(element, '<', value);
371
+ break;
372
+ case fluent_1.LogicOperator.lessOrEqualThan:
373
+ andWhereQuery = andWhereQuery.where(element, '<=', value);
374
+ break;
375
+ case fluent_1.LogicOperator.in:
376
+ andWhereQuery = andWhereQuery.where(element, 'in', value);
377
+ break;
378
+ case fluent_1.LogicOperator.arrayContains:
379
+ andWhereQuery = andWhereQuery.where(element, 'array-contains', value);
380
+ break;
381
+ case fluent_1.LogicOperator.notIn:
382
+ andWhereQuery = andWhereQuery.where(element, 'not-in', value);
383
+ break;
384
+ case fluent_1.LogicOperator.exists:
385
+ throw new Error('The nin Operator cannot be used in Firabase');
386
+ case fluent_1.LogicOperator.notExists:
387
+ throw new Error('The !exists Operator cannot be used in Firabase');
388
+ case fluent_1.LogicOperator.regexp:
389
+ throw new Error('The regexp Operator cannot be used in Firabase');
390
+ default:
391
+ throw new Error('The regexp Operator cannot be used in Firabase');
392
+ }
393
+ }
394
+ for (const condition of rootLevelConditions) {
395
+ const { element, operator, value } = condition;
396
+ switch (operator) {
397
+ case fluent_1.LogicOperator.equals:
398
+ andWhereQuery = andWhereQuery.where(element, '==', value);
399
+ break;
400
+ case fluent_1.LogicOperator.isNot:
401
+ andWhereQuery = andWhereQuery.where(element, '!=', value);
402
+ break;
403
+ case fluent_1.LogicOperator.greaterThan:
404
+ andWhereQuery = andWhereQuery.where(element, '>', value);
405
+ break;
406
+ case fluent_1.LogicOperator.greaterOrEqualThan:
407
+ andWhereQuery = andWhereQuery.where(element, '>=', value);
408
+ break;
409
+ case fluent_1.LogicOperator.lessThan:
410
+ andWhereQuery = andWhereQuery.where(element, '<', value);
411
+ break;
412
+ case fluent_1.LogicOperator.lessOrEqualThan:
413
+ andWhereQuery = andWhereQuery.where(element, '<=', value);
414
+ break;
415
+ case fluent_1.LogicOperator.in:
416
+ andWhereQuery = andWhereQuery.where(element, 'in', value);
417
+ break;
418
+ case fluent_1.LogicOperator.arrayContains:
419
+ andWhereQuery = andWhereQuery.where(element, 'array-contains', value);
420
+ break;
421
+ case fluent_1.LogicOperator.notIn:
422
+ andWhereQuery = andWhereQuery.where(element, 'not-in', value);
423
+ break;
424
+ case fluent_1.LogicOperator.exists:
425
+ throw new Error('The nin Operator cannot be used in Firabase');
426
+ case fluent_1.LogicOperator.notExists:
427
+ throw new Error('The !exists Operator cannot be used in Firabase');
428
+ case fluent_1.LogicOperator.regexp:
429
+ throw new Error('The regexp Operator cannot be used in Firabase');
430
+ default:
431
+ throw new Error('The regexp Operator cannot be used in Firabase');
432
+ }
433
+ }
434
+ // Each or query needs to be an independent query in Firebase
435
+ for (const condition of orConditions) {
436
+ const { element, operator, value } = condition;
437
+ let orQuery = this.collection;
438
+ switch (operator) {
439
+ case fluent_1.LogicOperator.equals:
440
+ orQuery = orQuery.where(element, '==', value);
441
+ break;
442
+ case fluent_1.LogicOperator.isNot:
443
+ orQuery = orQuery.where(element, '!=', value);
444
+ break;
445
+ case fluent_1.LogicOperator.greaterThan:
446
+ orQuery = orQuery.where(element, '>', value);
447
+ break;
448
+ case fluent_1.LogicOperator.greaterOrEqualThan:
449
+ orQuery = orQuery.where(element, '>=', value);
450
+ break;
451
+ case fluent_1.LogicOperator.lessThan:
452
+ orQuery = orQuery.where(element, '<', value);
453
+ break;
454
+ case fluent_1.LogicOperator.lessOrEqualThan:
455
+ orQuery = orQuery.where(element, '<=', value);
456
+ break;
457
+ case fluent_1.LogicOperator.in:
458
+ orQuery = orQuery.where(element, 'in', value);
459
+ break;
460
+ case fluent_1.LogicOperator.arrayContains:
461
+ orQuery = orQuery.where(element, 'array-contains', value);
462
+ break;
463
+ case fluent_1.LogicOperator.notIn:
464
+ orQuery = orQuery.where(element, 'not-in', value);
465
+ break;
466
+ case fluent_1.LogicOperator.exists:
467
+ throw new Error('The nin Operator cannot be used in Firabase');
468
+ case fluent_1.LogicOperator.notExists:
469
+ throw new Error('The !exists Operator cannot be used in Firabase');
470
+ case fluent_1.LogicOperator.regexp:
471
+ throw new Error('The regexp Operator cannot be used in Firabase');
472
+ default:
473
+ throw new Error('The regexp Operator cannot be used in Firabase');
474
+ }
475
+ orWhereQueries.push(orQuery);
476
+ }
477
+ let andWhereCondition = undefined;
478
+ // If there is no query, just return the collection
479
+ if (!andConditions?.length &&
480
+ !rootLevelConditions?.length &&
481
+ !orConditions?.length) {
482
+ andWhereCondition = this.collection;
483
+ }
484
+ if (andConditions?.length || rootLevelConditions?.length) {
485
+ andWhereCondition = andWhereQuery;
486
+ }
487
+ return {
488
+ andWhere: andWhereCondition,
489
+ orWhere: orWhereQueries
490
+ };
491
+ }
492
+ }
493
+ exports.FirebaseConnector = FirebaseConnector;
494
+ tslib_1.__decorate([
495
+ js_utils_1.Memo.syncMethod(),
496
+ tslib_1.__metadata("design:type", Function),
497
+ tslib_1.__metadata("design:paramtypes", []),
498
+ tslib_1.__metadata("design:returntype", void 0)
499
+ ], FirebaseConnector.prototype, "initDB", null);
500
+ //# sourceMappingURL=FirebaseConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirebaseConnector.js","sourceRoot":"","sources":["../src/FirebaseConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface ConnectionOptions {
2
+ host?: string;
3
+ port?: number;
4
+ databaseName?: string;
5
+ serviceAccount?: string;
6
+ emulator?: boolean;
7
+ }
8
+ export declare const FirebaseInit: ({ host, port, databaseName, serviceAccount, emulator }: ConnectionOptions) => void;
9
+ export declare const deleteFirebaseApps: () => Promise<(void | undefined)[]>;
10
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteFirebaseApps = exports.FirebaseInit = void 0;
4
+ const admin = require("firebase-admin");
5
+ const FirebaseInit = ({ host, port, databaseName, serviceAccount, emulator = false }) => {
6
+ if (admin.apps.length) {
7
+ return;
8
+ }
9
+ // Set up emulator environment if specified
10
+ if (emulator || (host && port)) {
11
+ const emulatorHost = host || 'localhost';
12
+ const emulatorPort = port || 8080;
13
+ process.env['FIRESTORE_EMULATOR_HOST'] = `${emulatorHost}:${emulatorPort}`;
14
+ // Also set auth emulator for completeness
15
+ if (!process.env['FIREBASE_AUTH_EMULATOR_HOST']) {
16
+ process.env['FIREBASE_AUTH_EMULATOR_HOST'] = `${emulatorHost}:9099`;
17
+ }
18
+ }
19
+ const initOptions = {
20
+ projectId: databaseName || 'fluent-firebase-test'
21
+ };
22
+ // Only add credentials if not using emulator and serviceAccount is provided
23
+ if (!emulator && serviceAccount) {
24
+ initOptions.credential = admin.credential.cert(serviceAccount);
25
+ }
26
+ else if (!emulator) {
27
+ initOptions.credential = admin.credential.applicationDefault();
28
+ }
29
+ admin.initializeApp(initOptions);
30
+ const fireStore = admin.firestore();
31
+ fireStore.settings({ ignoreUndefinedProperties: true });
32
+ if (!fireStore) {
33
+ throw new Error('Could not initialize FireStore');
34
+ }
35
+ };
36
+ exports.FirebaseInit = FirebaseInit;
37
+ const deleteFirebaseApps = () => {
38
+ return Promise.all(admin.apps.map(app => app?.delete()));
39
+ };
40
+ exports.deleteFirebaseApps = deleteFirebaseApps;
41
+ //# sourceMappingURL=FirebaseInit.js.map