@hyper-fetch/firebase-admin 6.0.1 → 7.0.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/.eslintrc.json +8 -3
- package/README.md +74 -26
- package/dist/index.d.ts +71 -57
- package/dist/{index.esm.js → index.js} +231 -230
- package/dist/index.js.map +7 -0
- package/package.json +7 -9
- package/src/adapter/adapter.sockets.ts +3 -3
- package/src/adapter/adapter.ts +59 -61
- package/src/adapter/types/adapter.base.types.ts +31 -0
- package/src/adapter/types/adapter.firestore.types.ts +24 -8
- package/src/adapter/types/adapter.realtime.types.ts +12 -8
- package/src/adapter/types/firestore.socket.types.ts +6 -6
- package/src/adapter/types/realtime.socket.types.ts +4 -4
- package/src/firestore/firestore.methods.ts +46 -29
- package/src/firestore/firestore.sockets.ts +32 -34
- package/src/firestore/utils/constraints.utils.ts +4 -10
- package/src/firestore/utils/ref.utils.ts +14 -11
- package/src/firestore/utils/result.utils.ts +11 -5
- package/src/realtime/realtime.methods.ts +35 -24
- package/src/realtime/realtime.sockets.ts +66 -80
- package/src/realtime/utils/constraints.utils.ts +3 -3
- package/src/realtime/utils/result.utils.ts +4 -2
- package/src/utils/cache.utils.ts +19 -7
- package/tsconfig.json +1 -1
- package/dist/index.cjs.js +0 -704
- package/dist/index.cjs.js.map +0 -7
- package/dist/index.esm.js.map +0 -7
|
@@ -63,8 +63,11 @@ var RealtimeDBMethods = /* @__PURE__ */ ((RealtimeDBMethods2) => {
|
|
|
63
63
|
import { Firestore as Firestore2 } from "firebase-admin/firestore";
|
|
64
64
|
|
|
65
65
|
// src/firestore/firestore.sockets.ts
|
|
66
|
-
import {
|
|
67
|
-
|
|
66
|
+
import {
|
|
67
|
+
CollectionReference,
|
|
68
|
+
DocumentSnapshot
|
|
69
|
+
} from "firebase-admin/firestore";
|
|
70
|
+
import { SocketAdapter } from "@hyper-fetch/sockets";
|
|
68
71
|
|
|
69
72
|
// src/firestore/utils/result.utils.ts
|
|
70
73
|
var getOrderedResultFirestore = (snapshot) => {
|
|
@@ -72,10 +75,14 @@ var getOrderedResultFirestore = (snapshot) => {
|
|
|
72
75
|
snapshot.docs.forEach((d) => {
|
|
73
76
|
result.push(__spreadProps(__spreadValues({}, d.data()), { __key: d.id }));
|
|
74
77
|
});
|
|
75
|
-
return result
|
|
78
|
+
return result;
|
|
76
79
|
};
|
|
77
80
|
var getGroupedResultFirestore = (snapshot) => {
|
|
78
|
-
const groupedResult = {
|
|
81
|
+
const groupedResult = {
|
|
82
|
+
added: [],
|
|
83
|
+
modified: [],
|
|
84
|
+
removed: []
|
|
85
|
+
};
|
|
79
86
|
snapshot.docChanges().forEach((change) => {
|
|
80
87
|
groupedResult[change.type].push(change.doc.data());
|
|
81
88
|
});
|
|
@@ -88,16 +95,19 @@ var getRef = (db, fullUrl) => {
|
|
|
88
95
|
const urlParts = withoutSurroundingSlashes.split("/").map((element, index) => {
|
|
89
96
|
return index % 2 === 0 ? ["collection", element] : ["doc", element];
|
|
90
97
|
});
|
|
91
|
-
return urlParts.reduce(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
return urlParts.reduce(
|
|
99
|
+
(_db, value) => {
|
|
100
|
+
const [method, pathPart] = value;
|
|
101
|
+
if (method === "doc" && "doc" in _db) {
|
|
102
|
+
return _db.doc(pathPart);
|
|
103
|
+
}
|
|
104
|
+
if (method === "collection" && "collection" in _db) {
|
|
105
|
+
return _db.collection(pathPart);
|
|
106
|
+
}
|
|
107
|
+
return _db;
|
|
108
|
+
},
|
|
109
|
+
db
|
|
110
|
+
);
|
|
101
111
|
};
|
|
102
112
|
|
|
103
113
|
// src/constraints/firebase.constraints.ts
|
|
@@ -263,18 +273,10 @@ var isDocOrQuery = (fullUrl) => {
|
|
|
263
273
|
|
|
264
274
|
// src/firestore/firestore.sockets.ts
|
|
265
275
|
var firestoreAdminSockets = (database) => {
|
|
266
|
-
return (
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
reconnectionAttempts,
|
|
271
|
-
listeners,
|
|
272
|
-
removeListener,
|
|
273
|
-
onReconnect,
|
|
274
|
-
onListen,
|
|
275
|
-
onEvent,
|
|
276
|
-
onError
|
|
277
|
-
} = getSocketAdapterBindings(socket, { open: true });
|
|
276
|
+
return new SocketAdapter({
|
|
277
|
+
name: "firebase-admin-firestore",
|
|
278
|
+
defaultConnected: true
|
|
279
|
+
}).setConnector(({ socket, onReconnect, onListen, onEvent, onError }) => {
|
|
278
280
|
const connect = () => {
|
|
279
281
|
throw new Error("Connect function is not implemented for Firestore Admin socket.");
|
|
280
282
|
};
|
|
@@ -282,10 +284,10 @@ var firestoreAdminSockets = (database) => {
|
|
|
282
284
|
throw new Error("Cannot disconnect from Firestore database socket. Use 'app.delete()' instead.");
|
|
283
285
|
};
|
|
284
286
|
const reconnect = () => {
|
|
285
|
-
onReconnect(disconnect, connect);
|
|
287
|
+
onReconnect({ disconnect, connect });
|
|
286
288
|
};
|
|
287
289
|
const listen = (listener, callback) => {
|
|
288
|
-
const fullUrl = socket.url + listener.
|
|
290
|
+
const fullUrl = socket.url + listener.topic;
|
|
289
291
|
const { options } = listener;
|
|
290
292
|
let pathRef = getRef(database, fullUrl);
|
|
291
293
|
if (pathRef instanceof CollectionReference) {
|
|
@@ -305,13 +307,13 @@ var firestoreAdminSockets = (database) => {
|
|
|
305
307
|
const groupedResult = (options == null ? void 0 : options.groupByChangeType) === true ? getGroupedResultFirestore(snapshot) : null;
|
|
306
308
|
const extra = { ref: pathRef, snapshot, unsubscribe, groupedResult, status };
|
|
307
309
|
callback({ data: response, extra });
|
|
308
|
-
onEvent(listener.
|
|
310
|
+
onEvent({ topic: listener.topic, data: response, extra });
|
|
309
311
|
},
|
|
310
312
|
(error) => {
|
|
311
|
-
onError(error);
|
|
313
|
+
onError({ error });
|
|
312
314
|
}
|
|
313
315
|
);
|
|
314
|
-
unmount = onListen(listener, callback, unsubscribe);
|
|
316
|
+
unmount = onListen({ listener, callback, onUnmount: unsubscribe });
|
|
315
317
|
clearListeners = () => {
|
|
316
318
|
unsubscribe();
|
|
317
319
|
unmount();
|
|
@@ -322,22 +324,83 @@ var firestoreAdminSockets = (database) => {
|
|
|
322
324
|
throw new Error("Cannot emit from Firestore database socket.");
|
|
323
325
|
});
|
|
324
326
|
return {
|
|
325
|
-
open,
|
|
326
|
-
reconnectionAttempts,
|
|
327
|
-
listeners,
|
|
328
|
-
connecting,
|
|
329
|
-
listen,
|
|
330
|
-
removeListener,
|
|
331
|
-
emit,
|
|
332
327
|
connect,
|
|
333
328
|
reconnect,
|
|
334
|
-
disconnect
|
|
329
|
+
disconnect,
|
|
330
|
+
emit,
|
|
331
|
+
listen
|
|
335
332
|
};
|
|
336
|
-
};
|
|
333
|
+
});
|
|
337
334
|
};
|
|
338
335
|
|
|
339
|
-
// src/
|
|
340
|
-
|
|
336
|
+
// src/firestore/firestore.methods.ts
|
|
337
|
+
var getFirestoreAdminMethods = ({
|
|
338
|
+
database,
|
|
339
|
+
url,
|
|
340
|
+
onSuccess,
|
|
341
|
+
onError,
|
|
342
|
+
onResponseStart,
|
|
343
|
+
onRequestStart,
|
|
344
|
+
onRequestEnd,
|
|
345
|
+
onResponseEnd
|
|
346
|
+
}) => {
|
|
347
|
+
const [cleanUrl] = url.split("?");
|
|
348
|
+
const methods = {
|
|
349
|
+
getDoc: () => __async(void 0, null, function* () {
|
|
350
|
+
const path = getRef(database, cleanUrl);
|
|
351
|
+
const snapshot = yield path.get();
|
|
352
|
+
const result = snapshot.data() ? __spreadProps(__spreadValues({}, snapshot.data()), { __key: snapshot.id }) : null;
|
|
353
|
+
const status = result ? "success" : "emptyResource";
|
|
354
|
+
return { result, status, extra: { ref: path, snapshot } };
|
|
355
|
+
}),
|
|
356
|
+
getDocs: (_0) => __async(void 0, [_0], function* ({
|
|
357
|
+
constraints = []
|
|
358
|
+
}) {
|
|
359
|
+
const path = getRef(database, cleanUrl);
|
|
360
|
+
const query = applyFireStoreAdminConstraints(path, constraints);
|
|
361
|
+
const querySnapshot = yield query.get();
|
|
362
|
+
const result = getOrderedResultFirestore(querySnapshot);
|
|
363
|
+
const status = getStatus(result);
|
|
364
|
+
return { result, status, extra: { ref: path, snapshot: querySnapshot } };
|
|
365
|
+
}),
|
|
366
|
+
setDoc: (_0) => __async(void 0, [_0], function* ({ data, options }) {
|
|
367
|
+
const path = getRef(database, cleanUrl);
|
|
368
|
+
const merge = (options == null ? void 0 : options.merge) === true;
|
|
369
|
+
const res = yield path.set(data, { merge });
|
|
370
|
+
return { result: res, status: "success", extra: { ref: path } };
|
|
371
|
+
}),
|
|
372
|
+
addDoc: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
373
|
+
const ref = getRef(database, cleanUrl);
|
|
374
|
+
const docRef = yield ref.add(data);
|
|
375
|
+
return { result: __spreadProps(__spreadValues({}, data), { __key: docRef.id }), status: "success", extra: { ref: docRef } };
|
|
376
|
+
}),
|
|
377
|
+
updateDoc: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
378
|
+
const path = getRef(database, cleanUrl);
|
|
379
|
+
yield path.update(data);
|
|
380
|
+
return { result: data, status: "success", extra: { ref: path } };
|
|
381
|
+
}),
|
|
382
|
+
deleteDoc: () => __async(void 0, null, function* () {
|
|
383
|
+
const path = getRef(database, cleanUrl);
|
|
384
|
+
yield path.delete();
|
|
385
|
+
return { result: null, status: "success", extra: { ref: path } };
|
|
386
|
+
})
|
|
387
|
+
};
|
|
388
|
+
return (methodName, data) => __async(void 0, null, function* () {
|
|
389
|
+
try {
|
|
390
|
+
onRequestStart();
|
|
391
|
+
const { result, status, extra } = yield methods[methodName](data);
|
|
392
|
+
onRequestEnd();
|
|
393
|
+
onResponseStart();
|
|
394
|
+
onSuccess({ data: result, status, extra });
|
|
395
|
+
onResponseEnd();
|
|
396
|
+
} catch (error) {
|
|
397
|
+
onRequestEnd();
|
|
398
|
+
onResponseStart();
|
|
399
|
+
onError({ error, status: "error", extra: {} });
|
|
400
|
+
onResponseEnd();
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
};
|
|
341
404
|
|
|
342
405
|
// src/realtime/utils/result.utils.ts
|
|
343
406
|
var getOrderedResultRealtime = (snapshot) => {
|
|
@@ -399,162 +462,21 @@ var applyRealtimeAdminConstraints = (ref, constraints) => {
|
|
|
399
462
|
}, ref);
|
|
400
463
|
};
|
|
401
464
|
|
|
402
|
-
// src/realtime/realtime.sockets.ts
|
|
403
|
-
var realtimeSocketsAdmin = (database) => {
|
|
404
|
-
return (socket) => {
|
|
405
|
-
const {
|
|
406
|
-
open,
|
|
407
|
-
connecting,
|
|
408
|
-
reconnectionAttempts,
|
|
409
|
-
listeners,
|
|
410
|
-
removeListener,
|
|
411
|
-
onConnect,
|
|
412
|
-
onReconnect,
|
|
413
|
-
onDisconnect,
|
|
414
|
-
onListen,
|
|
415
|
-
onOpen,
|
|
416
|
-
onClose,
|
|
417
|
-
onEvent,
|
|
418
|
-
onError
|
|
419
|
-
} = getSocketAdapterBindings2(socket, { open: true });
|
|
420
|
-
const connect = () => {
|
|
421
|
-
const enabled = onConnect();
|
|
422
|
-
if (enabled) {
|
|
423
|
-
database.goOnline();
|
|
424
|
-
onOpen();
|
|
425
|
-
}
|
|
426
|
-
};
|
|
427
|
-
const disconnect = () => {
|
|
428
|
-
database.goOffline();
|
|
429
|
-
onDisconnect();
|
|
430
|
-
onClose();
|
|
431
|
-
};
|
|
432
|
-
const reconnect = () => {
|
|
433
|
-
onReconnect(disconnect, connect);
|
|
434
|
-
};
|
|
435
|
-
const listen = (listener, callback) => {
|
|
436
|
-
const fullUrl = socket.url + listener.endpoint;
|
|
437
|
-
const path = database.ref(fullUrl);
|
|
438
|
-
const { options } = listener;
|
|
439
|
-
const onlyOnce = (options == null ? void 0 : options.onlyOnce) || false;
|
|
440
|
-
const q = applyRealtimeAdminConstraints(path, (options == null ? void 0 : options.constraints) || []);
|
|
441
|
-
const method = onlyOnce === true ? "once" : "on";
|
|
442
|
-
q[method](
|
|
443
|
-
"value",
|
|
444
|
-
(snapshot) => {
|
|
445
|
-
const getSnapshotData = (s) => s.val() ? __spreadProps(__spreadValues({}, s.val()), { __key: s.key }) : null;
|
|
446
|
-
const response = isDocOrQuery(fullUrl) === "doc" ? getSnapshotData(snapshot) : getOrderedResultRealtime(snapshot);
|
|
447
|
-
const status = getStatus(response);
|
|
448
|
-
const extra = { ref: path, snapshot, status };
|
|
449
|
-
callback({ data: response, extra });
|
|
450
|
-
onEvent(listener.endpoint, response, extra);
|
|
451
|
-
},
|
|
452
|
-
(error) => {
|
|
453
|
-
onError(error);
|
|
454
|
-
}
|
|
455
|
-
);
|
|
456
|
-
const unsubscribe = () => q.off("value");
|
|
457
|
-
const unmount = onListen(listener, callback, unsubscribe);
|
|
458
|
-
const clearListeners = () => {
|
|
459
|
-
unsubscribe();
|
|
460
|
-
unmount();
|
|
461
|
-
};
|
|
462
|
-
return clearListeners;
|
|
463
|
-
};
|
|
464
|
-
const emit = () => __async(void 0, null, function* () {
|
|
465
|
-
throw new Error("Cannot emit from Realtime database socket.");
|
|
466
|
-
});
|
|
467
|
-
return {
|
|
468
|
-
open,
|
|
469
|
-
reconnectionAttempts,
|
|
470
|
-
listeners,
|
|
471
|
-
connecting,
|
|
472
|
-
listen,
|
|
473
|
-
removeListener,
|
|
474
|
-
emit,
|
|
475
|
-
connect,
|
|
476
|
-
reconnect,
|
|
477
|
-
disconnect
|
|
478
|
-
};
|
|
479
|
-
};
|
|
480
|
-
};
|
|
481
|
-
|
|
482
|
-
// src/adapter/adapter.sockets.ts
|
|
483
|
-
var firebaseSocketsAdminAdapter = (database) => {
|
|
484
|
-
if (database instanceof Firestore2) {
|
|
485
|
-
return firestoreAdminSockets(database);
|
|
486
|
-
}
|
|
487
|
-
return realtimeSocketsAdmin(database);
|
|
488
|
-
};
|
|
489
|
-
|
|
490
|
-
// src/adapter/adapter.ts
|
|
491
|
-
import { getAdapterBindings } from "@hyper-fetch/core";
|
|
492
|
-
import { Firestore as Firestore3 } from "firebase-admin/firestore";
|
|
493
|
-
|
|
494
|
-
// src/firestore/firestore.methods.ts
|
|
495
|
-
var getFirestoreAdminMethods = (request, database, url, onSuccess, onError, resolve, events) => {
|
|
496
|
-
const [cleanUrl] = url.split("?");
|
|
497
|
-
const methods = {
|
|
498
|
-
getDoc: () => __async(void 0, null, function* () {
|
|
499
|
-
const path = getRef(database, cleanUrl);
|
|
500
|
-
const snapshot = yield path.get();
|
|
501
|
-
const result = snapshot.data() ? __spreadProps(__spreadValues({}, snapshot.data()), { __key: snapshot.id }) : null;
|
|
502
|
-
const status = result ? "success" : "emptyResource";
|
|
503
|
-
return { result, status, extra: { ref: path, snapshot } };
|
|
504
|
-
}),
|
|
505
|
-
getDocs: (_0) => __async(void 0, [_0], function* ({ constraints = [] }) {
|
|
506
|
-
const path = getRef(database, cleanUrl);
|
|
507
|
-
const query = applyFireStoreAdminConstraints(path, constraints);
|
|
508
|
-
const querySnapshot = yield query.get();
|
|
509
|
-
const result = getOrderedResultFirestore(querySnapshot);
|
|
510
|
-
const status = getStatus(result);
|
|
511
|
-
return { result, status, extra: { ref: path, snapshot: querySnapshot } };
|
|
512
|
-
}),
|
|
513
|
-
setDoc: (_0) => __async(void 0, [_0], function* ({ data, options }) {
|
|
514
|
-
const path = getRef(database, cleanUrl);
|
|
515
|
-
const merge = (options == null ? void 0 : options.merge) === true;
|
|
516
|
-
const res = yield path.set(data, { merge });
|
|
517
|
-
return { result: res, status: "success", extra: { ref: path } };
|
|
518
|
-
}),
|
|
519
|
-
addDoc: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
520
|
-
const ref = getRef(database, cleanUrl);
|
|
521
|
-
const docRef = yield ref.add(data);
|
|
522
|
-
return { result: __spreadProps(__spreadValues({}, data), { __key: docRef.id }), status: "success", extra: { ref: docRef } };
|
|
523
|
-
}),
|
|
524
|
-
updateDoc: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
525
|
-
const path = getRef(database, cleanUrl);
|
|
526
|
-
yield path.update(data);
|
|
527
|
-
return { result: data, status: "success", extra: { ref: path } };
|
|
528
|
-
}),
|
|
529
|
-
deleteDoc: () => __async(void 0, null, function* () {
|
|
530
|
-
const path = getRef(database, cleanUrl);
|
|
531
|
-
yield path.delete();
|
|
532
|
-
return { result: null, status: "success", extra: { ref: path } };
|
|
533
|
-
})
|
|
534
|
-
};
|
|
535
|
-
return (methodName, data) => __async(void 0, null, function* () {
|
|
536
|
-
try {
|
|
537
|
-
events.onRequestStart();
|
|
538
|
-
const { result, status, extra } = yield methods[methodName](data);
|
|
539
|
-
events.onRequestEnd();
|
|
540
|
-
events.onResponseStart();
|
|
541
|
-
onSuccess(result, status, extra, resolve);
|
|
542
|
-
events.onResponseEnd();
|
|
543
|
-
} catch (e) {
|
|
544
|
-
events.onRequestEnd();
|
|
545
|
-
events.onResponseStart();
|
|
546
|
-
onError(e, "error", {}, resolve);
|
|
547
|
-
events.onResponseEnd();
|
|
548
|
-
}
|
|
549
|
-
});
|
|
550
|
-
};
|
|
551
|
-
|
|
552
465
|
// src/realtime/realtime.methods.ts
|
|
553
|
-
var getRealtimeDbAdminMethods = (
|
|
466
|
+
var getRealtimeDbAdminMethods = ({
|
|
467
|
+
database,
|
|
468
|
+
url,
|
|
469
|
+
onSuccess,
|
|
470
|
+
onError,
|
|
471
|
+
onResponseStart,
|
|
472
|
+
onRequestStart,
|
|
473
|
+
onRequestEnd,
|
|
474
|
+
onResponseEnd
|
|
475
|
+
}) => {
|
|
554
476
|
const [fullUrl] = url.split("?");
|
|
555
477
|
const path = database.ref(fullUrl);
|
|
556
478
|
const methods = {
|
|
557
|
-
get: (_0) => __async(void 0, [_0], function* ({ constraints }) {
|
|
479
|
+
get: (_0) => __async(void 0, [_0], function* ({ constraints = [] }) {
|
|
558
480
|
const docOrQuery = isDocOrQuery(fullUrl);
|
|
559
481
|
const q = applyRealtimeAdminConstraints(path, constraints);
|
|
560
482
|
const snapshot = yield q.get();
|
|
@@ -581,34 +503,115 @@ var getRealtimeDbAdminMethods = (request, database, url, onSuccess, onError, res
|
|
|
581
503
|
};
|
|
582
504
|
return (methodName, data) => __async(void 0, null, function* () {
|
|
583
505
|
try {
|
|
584
|
-
|
|
506
|
+
onRequestStart();
|
|
585
507
|
const { result, status, extra } = yield methods[methodName](data);
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
onSuccess(result, status, extra
|
|
589
|
-
|
|
590
|
-
} catch (
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
onError(
|
|
594
|
-
|
|
508
|
+
onRequestEnd();
|
|
509
|
+
onResponseStart();
|
|
510
|
+
onSuccess({ data: result, status, extra });
|
|
511
|
+
onResponseEnd();
|
|
512
|
+
} catch (error) {
|
|
513
|
+
onRequestEnd();
|
|
514
|
+
onResponseStart();
|
|
515
|
+
onError({ error, status: "error", extra: {} });
|
|
516
|
+
onResponseEnd();
|
|
595
517
|
}
|
|
596
518
|
});
|
|
597
519
|
};
|
|
598
520
|
|
|
521
|
+
// src/realtime/realtime.sockets.ts
|
|
522
|
+
import { SocketAdapter as SocketAdapter2 } from "@hyper-fetch/sockets";
|
|
523
|
+
var realtimeSocketsAdmin = (database) => {
|
|
524
|
+
return new SocketAdapter2({
|
|
525
|
+
name: "firebase-admin-realtime",
|
|
526
|
+
defaultConnected: true
|
|
527
|
+
}).setConnector(
|
|
528
|
+
({ socket, onReconnect, onConnect, onConnected, onDisconnect, onDisconnected, onListen, onEvent, onError }) => {
|
|
529
|
+
const connect = () => __async(void 0, null, function* () {
|
|
530
|
+
const enabled = onConnect();
|
|
531
|
+
if (enabled) {
|
|
532
|
+
database.goOnline();
|
|
533
|
+
onConnected();
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
const disconnect = () => __async(void 0, null, function* () {
|
|
537
|
+
database.goOffline();
|
|
538
|
+
onDisconnect();
|
|
539
|
+
onDisconnected();
|
|
540
|
+
});
|
|
541
|
+
const reconnect = () => {
|
|
542
|
+
onReconnect({ disconnect, connect });
|
|
543
|
+
};
|
|
544
|
+
const listen = (listener, callback) => {
|
|
545
|
+
const fullUrl = socket.url + listener.topic;
|
|
546
|
+
const path = database.ref(fullUrl);
|
|
547
|
+
const { options } = listener;
|
|
548
|
+
const onlyOnce = (options == null ? void 0 : options.onlyOnce) || false;
|
|
549
|
+
const q = applyRealtimeAdminConstraints(path, (options == null ? void 0 : options.constraints) || []);
|
|
550
|
+
const method = onlyOnce === true ? "once" : "on";
|
|
551
|
+
q[method](
|
|
552
|
+
"value",
|
|
553
|
+
(snapshot) => {
|
|
554
|
+
const getSnapshotData = (s) => s.val() ? __spreadProps(__spreadValues({}, s.val()), { __key: s.key }) : null;
|
|
555
|
+
const response = isDocOrQuery(fullUrl) === "doc" ? getSnapshotData(snapshot) : getOrderedResultRealtime(snapshot);
|
|
556
|
+
const status = getStatus(response);
|
|
557
|
+
const extra = { ref: path, snapshot, status };
|
|
558
|
+
callback({ data: response, extra });
|
|
559
|
+
onEvent({ topic: listener.topic, data: response, extra });
|
|
560
|
+
},
|
|
561
|
+
(error) => {
|
|
562
|
+
onError({ error });
|
|
563
|
+
}
|
|
564
|
+
);
|
|
565
|
+
const unsubscribe = () => q.off("value");
|
|
566
|
+
const unmount = onListen({ listener, callback, onUnmount: unsubscribe });
|
|
567
|
+
const clearListeners = () => {
|
|
568
|
+
unsubscribe();
|
|
569
|
+
unmount();
|
|
570
|
+
};
|
|
571
|
+
return clearListeners;
|
|
572
|
+
};
|
|
573
|
+
const emit = () => __async(void 0, null, function* () {
|
|
574
|
+
throw new Error("Cannot emit from Realtime database socket.");
|
|
575
|
+
});
|
|
576
|
+
return {
|
|
577
|
+
connect,
|
|
578
|
+
reconnect,
|
|
579
|
+
disconnect,
|
|
580
|
+
listen,
|
|
581
|
+
emit
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
);
|
|
585
|
+
};
|
|
586
|
+
|
|
587
|
+
// src/adapter/adapter.sockets.ts
|
|
588
|
+
var FirebaseSocketsAdminAdapter = (database) => {
|
|
589
|
+
if (database instanceof Firestore2) {
|
|
590
|
+
return firestoreAdminSockets(database);
|
|
591
|
+
}
|
|
592
|
+
return realtimeSocketsAdmin(database);
|
|
593
|
+
};
|
|
594
|
+
|
|
599
595
|
// src/adapter/adapter.ts
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
596
|
+
import { Adapter } from "@hyper-fetch/core";
|
|
597
|
+
import { Firestore as Firestore3 } from "firebase-admin/firestore";
|
|
598
|
+
var FirebaseAdminAdapter = (database) => {
|
|
599
|
+
return new Adapter({
|
|
600
|
+
name: "firebase-admin",
|
|
601
|
+
defaultMethod: "getDoc",
|
|
602
|
+
defaultExtra: {},
|
|
603
|
+
systemErrorStatus: "error",
|
|
604
|
+
systemErrorExtra: {}
|
|
605
|
+
}).setFetcher(
|
|
606
|
+
(_0) => __async(void 0, [_0], function* ({ request, onSuccess, onError, onResponseStart, onResponseEnd, onRequestStart, onRequestEnd }) {
|
|
607
|
+
const fullUrl = `${request.client.url}${request.endpoint}`;
|
|
604
608
|
if (database instanceof Firestore3) {
|
|
605
|
-
const {
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
const availableMethods = getFirestoreAdminMethods(request, database, fullUrl, onSuccess, onError, resolve, {
|
|
609
|
+
const { method = "getDocs" /* getDocs */, queryParams, payload, options } = request;
|
|
610
|
+
const availableMethods = getFirestoreAdminMethods({
|
|
611
|
+
database,
|
|
612
|
+
url: fullUrl,
|
|
613
|
+
onSuccess,
|
|
614
|
+
onError,
|
|
612
615
|
onRequestStart,
|
|
613
616
|
onResponseEnd,
|
|
614
617
|
onResponseStart,
|
|
@@ -619,17 +622,16 @@ var firebaseAdminAdapter = (database) => () => {
|
|
|
619
622
|
}
|
|
620
623
|
availableMethods(method, {
|
|
621
624
|
constraints: (queryParams == null ? void 0 : queryParams.constraints) ? queryParams.constraints : [],
|
|
622
|
-
|
|
625
|
+
payload,
|
|
623
626
|
options
|
|
624
627
|
});
|
|
625
628
|
} else {
|
|
626
|
-
const {
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
const availableMethods = getRealtimeDbAdminMethods(request, database, fullUrl, onSuccess, onError, resolve, {
|
|
629
|
+
const { method = "get" /* get */, queryParams, payload, options } = request;
|
|
630
|
+
const availableMethods = getRealtimeDbAdminMethods({
|
|
631
|
+
database,
|
|
632
|
+
url: fullUrl,
|
|
633
|
+
onSuccess,
|
|
634
|
+
onError,
|
|
633
635
|
onRequestStart,
|
|
634
636
|
onResponseEnd,
|
|
635
637
|
onResponseStart,
|
|
@@ -641,12 +643,11 @@ var firebaseAdminAdapter = (database) => () => {
|
|
|
641
643
|
availableMethods(method, {
|
|
642
644
|
constraints: (queryParams == null ? void 0 : queryParams.constraints) ? queryParams.constraints : [],
|
|
643
645
|
options,
|
|
644
|
-
|
|
646
|
+
payload
|
|
645
647
|
});
|
|
646
648
|
}
|
|
647
|
-
})
|
|
648
|
-
|
|
649
|
-
return adapter;
|
|
649
|
+
})
|
|
650
|
+
);
|
|
650
651
|
};
|
|
651
652
|
export {
|
|
652
653
|
$endAt,
|
|
@@ -662,6 +663,8 @@ export {
|
|
|
662
663
|
$startAfter,
|
|
663
664
|
$startAt,
|
|
664
665
|
$where,
|
|
666
|
+
FirebaseAdminAdapter,
|
|
667
|
+
FirebaseSocketsAdminAdapter,
|
|
665
668
|
FirestoreMethods,
|
|
666
669
|
FirestoreQueryConstraints,
|
|
667
670
|
RealtimeDBMethods,
|
|
@@ -671,8 +674,6 @@ export {
|
|
|
671
674
|
applyFireStoreAdminConstraints,
|
|
672
675
|
applyRealtimeAdminConstraint,
|
|
673
676
|
applyRealtimeAdminConstraints,
|
|
674
|
-
firebaseAdminAdapter,
|
|
675
|
-
firebaseSocketsAdminAdapter,
|
|
676
677
|
firestoreAdminSockets,
|
|
677
678
|
getFirestoreAdminMethods,
|
|
678
679
|
getGroupedResultFirestore,
|
|
@@ -682,4 +683,4 @@ export {
|
|
|
682
683
|
getRef,
|
|
683
684
|
realtimeSocketsAdmin
|
|
684
685
|
};
|
|
685
|
-
//# sourceMappingURL=index.
|
|
686
|
+
//# sourceMappingURL=index.js.map
|