@hyper-fetch/firebase-admin 6.0.0 → 7.0.0
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
package/dist/index.cjs.js
DELETED
|
@@ -1,704 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
9
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
-
var __spreadValues = (a, b) => {
|
|
11
|
-
for (var prop in b || (b = {}))
|
|
12
|
-
if (__hasOwnProp.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
if (__getOwnPropSymbols)
|
|
15
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
16
|
-
if (__propIsEnum.call(b, prop))
|
|
17
|
-
__defNormalProp(a, prop, b[prop]);
|
|
18
|
-
}
|
|
19
|
-
return a;
|
|
20
|
-
};
|
|
21
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
22
|
-
var __export = (target, all) => {
|
|
23
|
-
for (var name in all)
|
|
24
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
25
|
-
};
|
|
26
|
-
var __copyProps = (to, from, except, desc) => {
|
|
27
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
28
|
-
for (let key of __getOwnPropNames(from))
|
|
29
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
30
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
31
|
-
}
|
|
32
|
-
return to;
|
|
33
|
-
};
|
|
34
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
|
-
var __async = (__this, __arguments, generator) => {
|
|
36
|
-
return new Promise((resolve, reject) => {
|
|
37
|
-
var fulfilled = (value) => {
|
|
38
|
-
try {
|
|
39
|
-
step(generator.next(value));
|
|
40
|
-
} catch (e) {
|
|
41
|
-
reject(e);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
var rejected = (value) => {
|
|
45
|
-
try {
|
|
46
|
-
step(generator.throw(value));
|
|
47
|
-
} catch (e) {
|
|
48
|
-
reject(e);
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
52
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// src/index.ts
|
|
57
|
-
var src_exports = {};
|
|
58
|
-
__export(src_exports, {
|
|
59
|
-
$endAt: () => $endAt,
|
|
60
|
-
$endBefore: () => $endBefore,
|
|
61
|
-
$equalTo: () => $equalTo,
|
|
62
|
-
$limit: () => $limit,
|
|
63
|
-
$limitToFirst: () => $limitToFirst,
|
|
64
|
-
$limitToLast: () => $limitToLast,
|
|
65
|
-
$orderBy: () => $orderBy,
|
|
66
|
-
$orderByChild: () => $orderByChild,
|
|
67
|
-
$orderByKey: () => $orderByKey,
|
|
68
|
-
$orderByValue: () => $orderByValue,
|
|
69
|
-
$startAfter: () => $startAfter,
|
|
70
|
-
$startAt: () => $startAt,
|
|
71
|
-
$where: () => $where,
|
|
72
|
-
FirestoreMethods: () => FirestoreMethods,
|
|
73
|
-
FirestoreQueryConstraints: () => FirestoreQueryConstraints,
|
|
74
|
-
RealtimeDBMethods: () => RealtimeDBMethods,
|
|
75
|
-
RealtimeQueryConstraints: () => RealtimeQueryConstraints,
|
|
76
|
-
SharedQueryConstraints: () => SharedQueryConstraints,
|
|
77
|
-
applyFireStoreAdminConstraint: () => applyFireStoreAdminConstraint,
|
|
78
|
-
applyFireStoreAdminConstraints: () => applyFireStoreAdminConstraints,
|
|
79
|
-
applyRealtimeAdminConstraint: () => applyRealtimeAdminConstraint,
|
|
80
|
-
applyRealtimeAdminConstraints: () => applyRealtimeAdminConstraints,
|
|
81
|
-
firebaseAdminAdapter: () => firebaseAdminAdapter,
|
|
82
|
-
firebaseSocketsAdminAdapter: () => firebaseSocketsAdminAdapter,
|
|
83
|
-
firestoreAdminSockets: () => firestoreAdminSockets,
|
|
84
|
-
getFirestoreAdminMethods: () => getFirestoreAdminMethods,
|
|
85
|
-
getGroupedResultFirestore: () => getGroupedResultFirestore,
|
|
86
|
-
getOrderedResultFirestore: () => getOrderedResultFirestore,
|
|
87
|
-
getOrderedResultRealtime: () => getOrderedResultRealtime,
|
|
88
|
-
getRealtimeDbAdminMethods: () => getRealtimeDbAdminMethods,
|
|
89
|
-
getRef: () => getRef,
|
|
90
|
-
realtimeSocketsAdmin: () => realtimeSocketsAdmin
|
|
91
|
-
});
|
|
92
|
-
module.exports = __toCommonJS(src_exports);
|
|
93
|
-
|
|
94
|
-
// src/adapter/types/adapter.firestore.types.ts
|
|
95
|
-
var FirestoreMethods = /* @__PURE__ */ ((FirestoreMethods2) => {
|
|
96
|
-
FirestoreMethods2["addDoc"] = "addDoc";
|
|
97
|
-
FirestoreMethods2["getDoc"] = "getDoc";
|
|
98
|
-
FirestoreMethods2["getDocs"] = "getDocs";
|
|
99
|
-
FirestoreMethods2["setDoc"] = "setDoc";
|
|
100
|
-
FirestoreMethods2["updateDoc"] = "updateDoc";
|
|
101
|
-
FirestoreMethods2["deleteDoc"] = "deleteDoc";
|
|
102
|
-
return FirestoreMethods2;
|
|
103
|
-
})(FirestoreMethods || {});
|
|
104
|
-
|
|
105
|
-
// src/adapter/types/adapter.realtime.types.ts
|
|
106
|
-
var RealtimeDBMethods = /* @__PURE__ */ ((RealtimeDBMethods2) => {
|
|
107
|
-
RealtimeDBMethods2["set"] = "set";
|
|
108
|
-
RealtimeDBMethods2["push"] = "push";
|
|
109
|
-
RealtimeDBMethods2["update"] = "update";
|
|
110
|
-
RealtimeDBMethods2["get"] = "get";
|
|
111
|
-
RealtimeDBMethods2["remove"] = "remove";
|
|
112
|
-
return RealtimeDBMethods2;
|
|
113
|
-
})(RealtimeDBMethods || {});
|
|
114
|
-
|
|
115
|
-
// src/adapter/adapter.sockets.ts
|
|
116
|
-
var import_firestore2 = require("firebase-admin/firestore");
|
|
117
|
-
|
|
118
|
-
// src/firestore/firestore.sockets.ts
|
|
119
|
-
var import_firestore = require("firebase-admin/firestore");
|
|
120
|
-
var import_sockets = require("@hyper-fetch/sockets");
|
|
121
|
-
|
|
122
|
-
// src/firestore/utils/result.utils.ts
|
|
123
|
-
var getOrderedResultFirestore = (snapshot) => {
|
|
124
|
-
const result = [];
|
|
125
|
-
snapshot.docs.forEach((d) => {
|
|
126
|
-
result.push(__spreadProps(__spreadValues({}, d.data()), { __key: d.id }));
|
|
127
|
-
});
|
|
128
|
-
return result.length > 0 ? result : null;
|
|
129
|
-
};
|
|
130
|
-
var getGroupedResultFirestore = (snapshot) => {
|
|
131
|
-
const groupedResult = { added: [], modified: [], removed: [] };
|
|
132
|
-
snapshot.docChanges().forEach((change) => {
|
|
133
|
-
groupedResult[change.type].push(change.doc.data());
|
|
134
|
-
});
|
|
135
|
-
return [...groupedResult.added, ...groupedResult.modified, ...groupedResult.removed].length > 0 ? groupedResult : null;
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
// src/firestore/utils/ref.utils.ts
|
|
139
|
-
var getRef = (db, fullUrl) => {
|
|
140
|
-
const withoutSurroundingSlashes = fullUrl.replace(/^\/|\/$/g, "");
|
|
141
|
-
const urlParts = withoutSurroundingSlashes.split("/").map((element, index) => {
|
|
142
|
-
return index % 2 === 0 ? ["collection", element] : ["doc", element];
|
|
143
|
-
});
|
|
144
|
-
return urlParts.reduce((_db, value) => {
|
|
145
|
-
const [method, pathPart] = value;
|
|
146
|
-
if (method === "doc" && "doc" in _db) {
|
|
147
|
-
return _db.doc(pathPart);
|
|
148
|
-
}
|
|
149
|
-
if (method === "collection" && "collection" in _db) {
|
|
150
|
-
return _db.collection(pathPart);
|
|
151
|
-
}
|
|
152
|
-
return _db;
|
|
153
|
-
}, db);
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
// src/constraints/firebase.constraints.ts
|
|
157
|
-
var SharedQueryConstraints = /* @__PURE__ */ ((SharedQueryConstraints2) => {
|
|
158
|
-
SharedQueryConstraints2["START_AT"] = "startAt";
|
|
159
|
-
SharedQueryConstraints2["START_AFTER"] = "startAfter";
|
|
160
|
-
SharedQueryConstraints2["END_AT"] = "endAt";
|
|
161
|
-
SharedQueryConstraints2["END_BEFORE"] = "endBefore";
|
|
162
|
-
return SharedQueryConstraints2;
|
|
163
|
-
})(SharedQueryConstraints || {});
|
|
164
|
-
var RealtimeQueryConstraints = /* @__PURE__ */ ((RealtimeQueryConstraints2) => {
|
|
165
|
-
RealtimeQueryConstraints2["ORDER_BY_CHILD"] = "orderByChild";
|
|
166
|
-
RealtimeQueryConstraints2["ORDER_BY_KEY"] = "orderByKey";
|
|
167
|
-
RealtimeQueryConstraints2["ORDER_BY_VALUE"] = "orderByValue";
|
|
168
|
-
RealtimeQueryConstraints2["LIMIT_TO_FIRST"] = "limitToFirst";
|
|
169
|
-
RealtimeQueryConstraints2["LIMIT_TO_LAST"] = "limitToLast";
|
|
170
|
-
RealtimeQueryConstraints2["EQUAL_TO"] = "equalTo";
|
|
171
|
-
return RealtimeQueryConstraints2;
|
|
172
|
-
})(RealtimeQueryConstraints || {});
|
|
173
|
-
var FirestoreQueryConstraints = /* @__PURE__ */ ((FirestoreQueryConstraints2) => {
|
|
174
|
-
FirestoreQueryConstraints2["WHERE"] = "where";
|
|
175
|
-
FirestoreQueryConstraints2["ORDER_BY"] = "orderBy";
|
|
176
|
-
FirestoreQueryConstraints2["LIMIT"] = "limit";
|
|
177
|
-
return FirestoreQueryConstraints2;
|
|
178
|
-
})(FirestoreQueryConstraints || {});
|
|
179
|
-
var $where = (fieldPath, opStr, value) => {
|
|
180
|
-
return {
|
|
181
|
-
toString: () => `${"where" /* WHERE */}_${fieldPath}${opStr}${value}`,
|
|
182
|
-
type: "where" /* WHERE */,
|
|
183
|
-
values: [fieldPath, opStr, value]
|
|
184
|
-
};
|
|
185
|
-
};
|
|
186
|
-
var $orderBy = (fieldPath, directionStr) => {
|
|
187
|
-
return {
|
|
188
|
-
toString: () => `${"orderBy" /* ORDER_BY */}_${fieldPath}_${directionStr || ""}`,
|
|
189
|
-
type: "orderBy" /* ORDER_BY */,
|
|
190
|
-
values: [fieldPath, directionStr]
|
|
191
|
-
};
|
|
192
|
-
};
|
|
193
|
-
var $limit = (num) => {
|
|
194
|
-
return {
|
|
195
|
-
toString: () => `${"limit" /* LIMIT */}_${num}`,
|
|
196
|
-
type: "limit" /* LIMIT */,
|
|
197
|
-
values: [num]
|
|
198
|
-
};
|
|
199
|
-
};
|
|
200
|
-
var startEndConstraintsImpl = (constraintType) => {
|
|
201
|
-
return (...docOrFields) => {
|
|
202
|
-
if (docOrFields.length === 1 && docOrFields[0].query) {
|
|
203
|
-
return {
|
|
204
|
-
toString: () => {
|
|
205
|
-
var _a, _b, _c;
|
|
206
|
-
return `${constraintType}_${(_c = (_b = (_a = docOrFields[0].query) == null ? void 0 : _a._query) == null ? void 0 : _b.memoizedTarget) == null ? void 0 : _c.memoizedCanonicalId}`;
|
|
207
|
-
},
|
|
208
|
-
type: constraintType,
|
|
209
|
-
values: [docOrFields]
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
return {
|
|
213
|
-
toString: () => `${constraintType}_${docOrFields}`,
|
|
214
|
-
type: constraintType,
|
|
215
|
-
values: [docOrFields]
|
|
216
|
-
};
|
|
217
|
-
};
|
|
218
|
-
};
|
|
219
|
-
var $startAt = startEndConstraintsImpl("startAt" /* START_AT */);
|
|
220
|
-
var $startAfter = startEndConstraintsImpl("startAfter" /* START_AFTER */);
|
|
221
|
-
var $endAt = startEndConstraintsImpl("endAt" /* END_AT */);
|
|
222
|
-
var $endBefore = startEndConstraintsImpl("endBefore" /* END_BEFORE */);
|
|
223
|
-
var $orderByChild = (path) => {
|
|
224
|
-
return {
|
|
225
|
-
toString: () => `${"orderByChild" /* ORDER_BY_CHILD */}_${path}`,
|
|
226
|
-
type: "orderByChild" /* ORDER_BY_CHILD */,
|
|
227
|
-
values: [path]
|
|
228
|
-
};
|
|
229
|
-
};
|
|
230
|
-
var $orderByKey = () => {
|
|
231
|
-
return {
|
|
232
|
-
toString: () => `${"orderByKey" /* ORDER_BY_KEY */}`,
|
|
233
|
-
type: "orderByKey" /* ORDER_BY_KEY */,
|
|
234
|
-
values: []
|
|
235
|
-
};
|
|
236
|
-
};
|
|
237
|
-
var $orderByValue = () => {
|
|
238
|
-
return {
|
|
239
|
-
toString: () => `${"orderByValue" /* ORDER_BY_VALUE */}`,
|
|
240
|
-
type: "orderByValue" /* ORDER_BY_VALUE */,
|
|
241
|
-
values: []
|
|
242
|
-
};
|
|
243
|
-
};
|
|
244
|
-
var $limitToFirst = (num) => {
|
|
245
|
-
return {
|
|
246
|
-
toString: () => `${"limitToFirst" /* LIMIT_TO_FIRST */}_${num}`,
|
|
247
|
-
type: "limitToFirst" /* LIMIT_TO_FIRST */,
|
|
248
|
-
values: [num]
|
|
249
|
-
};
|
|
250
|
-
};
|
|
251
|
-
var $limitToLast = (num) => {
|
|
252
|
-
return {
|
|
253
|
-
toString: () => `${"limitToLast" /* LIMIT_TO_LAST */}_${num}`,
|
|
254
|
-
type: "limitToLast" /* LIMIT_TO_LAST */,
|
|
255
|
-
values: [num]
|
|
256
|
-
};
|
|
257
|
-
};
|
|
258
|
-
var $equalTo = (value) => {
|
|
259
|
-
return {
|
|
260
|
-
toString: () => `${"limitToLast" /* LIMIT_TO_LAST */}_${value}`,
|
|
261
|
-
type: "equalTo" /* EQUAL_TO */,
|
|
262
|
-
values: [value]
|
|
263
|
-
};
|
|
264
|
-
};
|
|
265
|
-
|
|
266
|
-
// src/firestore/utils/constraints.utils.ts
|
|
267
|
-
var applyFireStoreAdminConstraint = (collectionRef, { type, values }) => {
|
|
268
|
-
switch (type) {
|
|
269
|
-
case "where" /* WHERE */: {
|
|
270
|
-
const [fieldPath, strOp, value] = values;
|
|
271
|
-
return collectionRef.where(fieldPath, strOp, value);
|
|
272
|
-
}
|
|
273
|
-
case "orderBy" /* ORDER_BY */: {
|
|
274
|
-
const [field, ord] = values;
|
|
275
|
-
return collectionRef.orderBy(field, ord);
|
|
276
|
-
}
|
|
277
|
-
case "limit" /* LIMIT */: {
|
|
278
|
-
const [limitValue] = values;
|
|
279
|
-
return collectionRef.limit(limitValue);
|
|
280
|
-
}
|
|
281
|
-
case "startAt" /* START_AT */: {
|
|
282
|
-
const [docOrFields] = values;
|
|
283
|
-
return collectionRef.startAt(docOrFields);
|
|
284
|
-
}
|
|
285
|
-
case "startAfter" /* START_AFTER */: {
|
|
286
|
-
const [docOrFields] = values;
|
|
287
|
-
return collectionRef.startAfter(docOrFields);
|
|
288
|
-
}
|
|
289
|
-
case "endAt" /* END_AT */: {
|
|
290
|
-
const [docOrFields] = values;
|
|
291
|
-
return collectionRef.endAt(docOrFields);
|
|
292
|
-
}
|
|
293
|
-
case "endBefore" /* END_BEFORE */: {
|
|
294
|
-
const [docOrFields] = values;
|
|
295
|
-
return collectionRef.endBefore(docOrFields);
|
|
296
|
-
}
|
|
297
|
-
default:
|
|
298
|
-
throw new Error(`Unknown method ${type}`);
|
|
299
|
-
}
|
|
300
|
-
};
|
|
301
|
-
var applyFireStoreAdminConstraints = (collectionRef, constraints) => {
|
|
302
|
-
return constraints.reduce((collection, constraint) => {
|
|
303
|
-
return applyFireStoreAdminConstraint(collection, constraint);
|
|
304
|
-
}, collectionRef);
|
|
305
|
-
};
|
|
306
|
-
|
|
307
|
-
// src/utils/misc.ts
|
|
308
|
-
var getStatus = (res) => {
|
|
309
|
-
return Array.isArray(res) && res.length === 0 || res == null ? "emptyResource" : "success";
|
|
310
|
-
};
|
|
311
|
-
var isDocOrQuery = (fullUrl) => {
|
|
312
|
-
const withoutSurroundingSlashes = fullUrl.replace(/^\/|\/$/g, "");
|
|
313
|
-
const pathElements = withoutSurroundingSlashes.split("/").length;
|
|
314
|
-
return pathElements % 2 === 0 ? "doc" : "query";
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
// src/firestore/firestore.sockets.ts
|
|
318
|
-
var firestoreAdminSockets = (database) => {
|
|
319
|
-
return (socket) => {
|
|
320
|
-
const {
|
|
321
|
-
open,
|
|
322
|
-
connecting,
|
|
323
|
-
reconnectionAttempts,
|
|
324
|
-
listeners,
|
|
325
|
-
removeListener,
|
|
326
|
-
onReconnect,
|
|
327
|
-
onListen,
|
|
328
|
-
onEvent,
|
|
329
|
-
onError
|
|
330
|
-
} = (0, import_sockets.getSocketAdapterBindings)(socket, { open: true });
|
|
331
|
-
const connect = () => {
|
|
332
|
-
throw new Error("Connect function is not implemented for Firestore Admin socket.");
|
|
333
|
-
};
|
|
334
|
-
const disconnect = () => {
|
|
335
|
-
throw new Error("Cannot disconnect from Firestore database socket. Use 'app.delete()' instead.");
|
|
336
|
-
};
|
|
337
|
-
const reconnect = () => {
|
|
338
|
-
onReconnect(disconnect, connect);
|
|
339
|
-
};
|
|
340
|
-
const listen = (listener, callback) => {
|
|
341
|
-
const fullUrl = socket.url + listener.endpoint;
|
|
342
|
-
const { options } = listener;
|
|
343
|
-
let pathRef = getRef(database, fullUrl);
|
|
344
|
-
if (pathRef instanceof import_firestore.CollectionReference) {
|
|
345
|
-
pathRef = applyFireStoreAdminConstraints(pathRef, (options == null ? void 0 : options.constraints) || []);
|
|
346
|
-
}
|
|
347
|
-
let unsubscribe = () => {
|
|
348
|
-
};
|
|
349
|
-
let unmount = () => {
|
|
350
|
-
};
|
|
351
|
-
let clearListeners = () => {
|
|
352
|
-
};
|
|
353
|
-
unsubscribe = pathRef.onSnapshot(
|
|
354
|
-
(snapshot) => {
|
|
355
|
-
const getSnapshotData = (s) => s.data() ? __spreadProps(__spreadValues({}, s.data()), { __key: s.id }) : null;
|
|
356
|
-
const response = snapshot instanceof import_firestore.DocumentSnapshot ? getSnapshotData(snapshot) : getOrderedResultFirestore(snapshot);
|
|
357
|
-
const status = getStatus(response);
|
|
358
|
-
const groupedResult = (options == null ? void 0 : options.groupByChangeType) === true ? getGroupedResultFirestore(snapshot) : null;
|
|
359
|
-
const extra = { ref: pathRef, snapshot, unsubscribe, groupedResult, status };
|
|
360
|
-
callback({ data: response, extra });
|
|
361
|
-
onEvent(listener.endpoint, response, extra);
|
|
362
|
-
},
|
|
363
|
-
(error) => {
|
|
364
|
-
onError(error);
|
|
365
|
-
}
|
|
366
|
-
);
|
|
367
|
-
unmount = onListen(listener, callback, unsubscribe);
|
|
368
|
-
clearListeners = () => {
|
|
369
|
-
unsubscribe();
|
|
370
|
-
unmount();
|
|
371
|
-
};
|
|
372
|
-
return clearListeners;
|
|
373
|
-
};
|
|
374
|
-
const emit = () => __async(void 0, null, function* () {
|
|
375
|
-
throw new Error("Cannot emit from Firestore database socket.");
|
|
376
|
-
});
|
|
377
|
-
return {
|
|
378
|
-
open,
|
|
379
|
-
reconnectionAttempts,
|
|
380
|
-
listeners,
|
|
381
|
-
connecting,
|
|
382
|
-
listen,
|
|
383
|
-
removeListener,
|
|
384
|
-
emit,
|
|
385
|
-
connect,
|
|
386
|
-
reconnect,
|
|
387
|
-
disconnect
|
|
388
|
-
};
|
|
389
|
-
};
|
|
390
|
-
};
|
|
391
|
-
|
|
392
|
-
// src/realtime/realtime.sockets.ts
|
|
393
|
-
var import_sockets2 = require("@hyper-fetch/sockets");
|
|
394
|
-
|
|
395
|
-
// src/realtime/utils/result.utils.ts
|
|
396
|
-
var getOrderedResultRealtime = (snapshot) => {
|
|
397
|
-
const res = [];
|
|
398
|
-
snapshot.forEach((child) => {
|
|
399
|
-
res.push(__spreadProps(__spreadValues({}, child.val()), { __key: child.key }));
|
|
400
|
-
});
|
|
401
|
-
return res.length > 0 ? res : null;
|
|
402
|
-
};
|
|
403
|
-
|
|
404
|
-
// src/realtime/utils/constraints.utils.ts
|
|
405
|
-
var applyRealtimeAdminConstraint = (ref, { type, values }) => {
|
|
406
|
-
switch (type) {
|
|
407
|
-
case "orderByChild" /* ORDER_BY_CHILD */: {
|
|
408
|
-
const [value] = values;
|
|
409
|
-
return ref.orderByChild(value);
|
|
410
|
-
}
|
|
411
|
-
case "orderByKey" /* ORDER_BY_KEY */: {
|
|
412
|
-
return ref.orderByKey();
|
|
413
|
-
}
|
|
414
|
-
case "orderByValue" /* ORDER_BY_VALUE */: {
|
|
415
|
-
return ref.orderByValue();
|
|
416
|
-
}
|
|
417
|
-
case "startAt" /* START_AT */: {
|
|
418
|
-
const [[value]] = values;
|
|
419
|
-
return ref.startAt(value);
|
|
420
|
-
}
|
|
421
|
-
case "startAfter" /* START_AFTER */: {
|
|
422
|
-
const [[value]] = values;
|
|
423
|
-
return ref.startAfter(value);
|
|
424
|
-
}
|
|
425
|
-
case "endAt" /* END_AT */: {
|
|
426
|
-
const [[value]] = values;
|
|
427
|
-
return ref.endAt(value);
|
|
428
|
-
}
|
|
429
|
-
case "endBefore" /* END_BEFORE */: {
|
|
430
|
-
const [[value]] = values;
|
|
431
|
-
return ref.endBefore(value);
|
|
432
|
-
}
|
|
433
|
-
case "limitToFirst" /* LIMIT_TO_FIRST */: {
|
|
434
|
-
const [value] = values;
|
|
435
|
-
return ref.limitToFirst(value);
|
|
436
|
-
}
|
|
437
|
-
case "limitToLast" /* LIMIT_TO_LAST */: {
|
|
438
|
-
const [value] = values;
|
|
439
|
-
return ref.limitToLast(value);
|
|
440
|
-
}
|
|
441
|
-
case "equalTo" /* EQUAL_TO */: {
|
|
442
|
-
const [value] = values;
|
|
443
|
-
return ref.equalTo(value);
|
|
444
|
-
}
|
|
445
|
-
default:
|
|
446
|
-
throw new Error(`Unknown method ${type}`);
|
|
447
|
-
}
|
|
448
|
-
};
|
|
449
|
-
var applyRealtimeAdminConstraints = (ref, constraints) => {
|
|
450
|
-
return constraints.reduce((collection, constraint) => {
|
|
451
|
-
return applyRealtimeAdminConstraint(collection, constraint);
|
|
452
|
-
}, ref);
|
|
453
|
-
};
|
|
454
|
-
|
|
455
|
-
// src/realtime/realtime.sockets.ts
|
|
456
|
-
var realtimeSocketsAdmin = (database) => {
|
|
457
|
-
return (socket) => {
|
|
458
|
-
const {
|
|
459
|
-
open,
|
|
460
|
-
connecting,
|
|
461
|
-
reconnectionAttempts,
|
|
462
|
-
listeners,
|
|
463
|
-
removeListener,
|
|
464
|
-
onConnect,
|
|
465
|
-
onReconnect,
|
|
466
|
-
onDisconnect,
|
|
467
|
-
onListen,
|
|
468
|
-
onOpen,
|
|
469
|
-
onClose,
|
|
470
|
-
onEvent,
|
|
471
|
-
onError
|
|
472
|
-
} = (0, import_sockets2.getSocketAdapterBindings)(socket, { open: true });
|
|
473
|
-
const connect = () => {
|
|
474
|
-
const enabled = onConnect();
|
|
475
|
-
if (enabled) {
|
|
476
|
-
database.goOnline();
|
|
477
|
-
onOpen();
|
|
478
|
-
}
|
|
479
|
-
};
|
|
480
|
-
const disconnect = () => {
|
|
481
|
-
database.goOffline();
|
|
482
|
-
onDisconnect();
|
|
483
|
-
onClose();
|
|
484
|
-
};
|
|
485
|
-
const reconnect = () => {
|
|
486
|
-
onReconnect(disconnect, connect);
|
|
487
|
-
};
|
|
488
|
-
const listen = (listener, callback) => {
|
|
489
|
-
const fullUrl = socket.url + listener.endpoint;
|
|
490
|
-
const path = database.ref(fullUrl);
|
|
491
|
-
const { options } = listener;
|
|
492
|
-
const onlyOnce = (options == null ? void 0 : options.onlyOnce) || false;
|
|
493
|
-
const q = applyRealtimeAdminConstraints(path, (options == null ? void 0 : options.constraints) || []);
|
|
494
|
-
const method = onlyOnce === true ? "once" : "on";
|
|
495
|
-
q[method](
|
|
496
|
-
"value",
|
|
497
|
-
(snapshot) => {
|
|
498
|
-
const getSnapshotData = (s) => s.val() ? __spreadProps(__spreadValues({}, s.val()), { __key: s.key }) : null;
|
|
499
|
-
const response = isDocOrQuery(fullUrl) === "doc" ? getSnapshotData(snapshot) : getOrderedResultRealtime(snapshot);
|
|
500
|
-
const status = getStatus(response);
|
|
501
|
-
const extra = { ref: path, snapshot, status };
|
|
502
|
-
callback({ data: response, extra });
|
|
503
|
-
onEvent(listener.endpoint, response, extra);
|
|
504
|
-
},
|
|
505
|
-
(error) => {
|
|
506
|
-
onError(error);
|
|
507
|
-
}
|
|
508
|
-
);
|
|
509
|
-
const unsubscribe = () => q.off("value");
|
|
510
|
-
const unmount = onListen(listener, callback, unsubscribe);
|
|
511
|
-
const clearListeners = () => {
|
|
512
|
-
unsubscribe();
|
|
513
|
-
unmount();
|
|
514
|
-
};
|
|
515
|
-
return clearListeners;
|
|
516
|
-
};
|
|
517
|
-
const emit = () => __async(void 0, null, function* () {
|
|
518
|
-
throw new Error("Cannot emit from Realtime database socket.");
|
|
519
|
-
});
|
|
520
|
-
return {
|
|
521
|
-
open,
|
|
522
|
-
reconnectionAttempts,
|
|
523
|
-
listeners,
|
|
524
|
-
connecting,
|
|
525
|
-
listen,
|
|
526
|
-
removeListener,
|
|
527
|
-
emit,
|
|
528
|
-
connect,
|
|
529
|
-
reconnect,
|
|
530
|
-
disconnect
|
|
531
|
-
};
|
|
532
|
-
};
|
|
533
|
-
};
|
|
534
|
-
|
|
535
|
-
// src/adapter/adapter.sockets.ts
|
|
536
|
-
var firebaseSocketsAdminAdapter = (database) => {
|
|
537
|
-
if (database instanceof import_firestore2.Firestore) {
|
|
538
|
-
return firestoreAdminSockets(database);
|
|
539
|
-
}
|
|
540
|
-
return realtimeSocketsAdmin(database);
|
|
541
|
-
};
|
|
542
|
-
|
|
543
|
-
// src/adapter/adapter.ts
|
|
544
|
-
var import_core = require("@hyper-fetch/core");
|
|
545
|
-
var import_firestore4 = require("firebase-admin/firestore");
|
|
546
|
-
|
|
547
|
-
// src/firestore/firestore.methods.ts
|
|
548
|
-
var getFirestoreAdminMethods = (request, database, url, onSuccess, onError, resolve, events) => {
|
|
549
|
-
const [cleanUrl] = url.split("?");
|
|
550
|
-
const methods = {
|
|
551
|
-
getDoc: () => __async(void 0, null, function* () {
|
|
552
|
-
const path = getRef(database, cleanUrl);
|
|
553
|
-
const snapshot = yield path.get();
|
|
554
|
-
const result = snapshot.data() ? __spreadProps(__spreadValues({}, snapshot.data()), { __key: snapshot.id }) : null;
|
|
555
|
-
const status = result ? "success" : "emptyResource";
|
|
556
|
-
return { result, status, extra: { ref: path, snapshot } };
|
|
557
|
-
}),
|
|
558
|
-
getDocs: (_0) => __async(void 0, [_0], function* ({ constraints = [] }) {
|
|
559
|
-
const path = getRef(database, cleanUrl);
|
|
560
|
-
const query = applyFireStoreAdminConstraints(path, constraints);
|
|
561
|
-
const querySnapshot = yield query.get();
|
|
562
|
-
const result = getOrderedResultFirestore(querySnapshot);
|
|
563
|
-
const status = getStatus(result);
|
|
564
|
-
return { result, status, extra: { ref: path, snapshot: querySnapshot } };
|
|
565
|
-
}),
|
|
566
|
-
setDoc: (_0) => __async(void 0, [_0], function* ({ data, options }) {
|
|
567
|
-
const path = getRef(database, cleanUrl);
|
|
568
|
-
const merge = (options == null ? void 0 : options.merge) === true;
|
|
569
|
-
const res = yield path.set(data, { merge });
|
|
570
|
-
return { result: res, status: "success", extra: { ref: path } };
|
|
571
|
-
}),
|
|
572
|
-
addDoc: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
573
|
-
const ref = getRef(database, cleanUrl);
|
|
574
|
-
const docRef = yield ref.add(data);
|
|
575
|
-
return { result: __spreadProps(__spreadValues({}, data), { __key: docRef.id }), status: "success", extra: { ref: docRef } };
|
|
576
|
-
}),
|
|
577
|
-
updateDoc: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
578
|
-
const path = getRef(database, cleanUrl);
|
|
579
|
-
yield path.update(data);
|
|
580
|
-
return { result: data, status: "success", extra: { ref: path } };
|
|
581
|
-
}),
|
|
582
|
-
deleteDoc: () => __async(void 0, null, function* () {
|
|
583
|
-
const path = getRef(database, cleanUrl);
|
|
584
|
-
yield path.delete();
|
|
585
|
-
return { result: null, status: "success", extra: { ref: path } };
|
|
586
|
-
})
|
|
587
|
-
};
|
|
588
|
-
return (methodName, data) => __async(void 0, null, function* () {
|
|
589
|
-
try {
|
|
590
|
-
events.onRequestStart();
|
|
591
|
-
const { result, status, extra } = yield methods[methodName](data);
|
|
592
|
-
events.onRequestEnd();
|
|
593
|
-
events.onResponseStart();
|
|
594
|
-
onSuccess(result, status, extra, resolve);
|
|
595
|
-
events.onResponseEnd();
|
|
596
|
-
} catch (e) {
|
|
597
|
-
events.onRequestEnd();
|
|
598
|
-
events.onResponseStart();
|
|
599
|
-
onError(e, "error", {}, resolve);
|
|
600
|
-
events.onResponseEnd();
|
|
601
|
-
}
|
|
602
|
-
});
|
|
603
|
-
};
|
|
604
|
-
|
|
605
|
-
// src/realtime/realtime.methods.ts
|
|
606
|
-
var getRealtimeDbAdminMethods = (request, database, url, onSuccess, onError, resolve, events) => {
|
|
607
|
-
const [fullUrl] = url.split("?");
|
|
608
|
-
const path = database.ref(fullUrl);
|
|
609
|
-
const methods = {
|
|
610
|
-
get: (_0) => __async(void 0, [_0], function* ({ constraints }) {
|
|
611
|
-
const docOrQuery = isDocOrQuery(fullUrl);
|
|
612
|
-
const q = applyRealtimeAdminConstraints(path, constraints);
|
|
613
|
-
const snapshot = yield q.get();
|
|
614
|
-
const res = docOrQuery === "doc" ? snapshot.val() : getOrderedResultRealtime(snapshot);
|
|
615
|
-
const status = getStatus(res);
|
|
616
|
-
return { result: res, status, extra: { ref: path, snapshot } };
|
|
617
|
-
}),
|
|
618
|
-
set: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
619
|
-
yield path.set(data);
|
|
620
|
-
return { result: data, status: "success", extra: { ref: path } };
|
|
621
|
-
}),
|
|
622
|
-
push: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
623
|
-
const resRef = yield path.push(data);
|
|
624
|
-
return { result: __spreadProps(__spreadValues({}, data), { __key: resRef.key }), status: "success", extra: { ref: resRef, key: resRef.key } };
|
|
625
|
-
}),
|
|
626
|
-
update: (_0) => __async(void 0, [_0], function* ({ data }) {
|
|
627
|
-
yield path.update(data);
|
|
628
|
-
return { result: data, status: "success", extra: { ref: path } };
|
|
629
|
-
}),
|
|
630
|
-
remove: () => __async(void 0, null, function* () {
|
|
631
|
-
yield path.remove();
|
|
632
|
-
return { result: null, status: "success", extra: { ref: path } };
|
|
633
|
-
})
|
|
634
|
-
};
|
|
635
|
-
return (methodName, data) => __async(void 0, null, function* () {
|
|
636
|
-
try {
|
|
637
|
-
events.onRequestStart();
|
|
638
|
-
const { result, status, extra } = yield methods[methodName](data);
|
|
639
|
-
events.onRequestEnd();
|
|
640
|
-
events.onResponseStart();
|
|
641
|
-
onSuccess(result, status, extra, resolve);
|
|
642
|
-
events.onResponseEnd();
|
|
643
|
-
} catch (e) {
|
|
644
|
-
events.onRequestEnd();
|
|
645
|
-
events.onResponseStart();
|
|
646
|
-
onError(e, "error", {}, resolve);
|
|
647
|
-
events.onResponseEnd();
|
|
648
|
-
}
|
|
649
|
-
});
|
|
650
|
-
};
|
|
651
|
-
|
|
652
|
-
// src/adapter/adapter.ts
|
|
653
|
-
var firebaseAdminAdapter = (database) => () => {
|
|
654
|
-
const adapter = (request, requestId) => __async(void 0, null, function* () {
|
|
655
|
-
const { fullUrl, onSuccess, onError, onRequestStart, onResponseEnd, onResponseStart, onRequestEnd } = yield (0, import_core.getAdapterBindings)(request, requestId, "error", {});
|
|
656
|
-
return new Promise((resolve) => {
|
|
657
|
-
if (database instanceof import_firestore4.Firestore) {
|
|
658
|
-
const {
|
|
659
|
-
method = "getDocs" /* getDocs */,
|
|
660
|
-
queryParams,
|
|
661
|
-
data,
|
|
662
|
-
options
|
|
663
|
-
} = request;
|
|
664
|
-
const availableMethods = getFirestoreAdminMethods(request, database, fullUrl, onSuccess, onError, resolve, {
|
|
665
|
-
onRequestStart,
|
|
666
|
-
onResponseEnd,
|
|
667
|
-
onResponseStart,
|
|
668
|
-
onRequestEnd
|
|
669
|
-
});
|
|
670
|
-
if (!Object.values(FirestoreMethods).includes(method)) {
|
|
671
|
-
throw new Error(`Cannot find method ${method} in Firestore available methods.`);
|
|
672
|
-
}
|
|
673
|
-
availableMethods(method, {
|
|
674
|
-
constraints: (queryParams == null ? void 0 : queryParams.constraints) ? queryParams.constraints : [],
|
|
675
|
-
data,
|
|
676
|
-
options
|
|
677
|
-
});
|
|
678
|
-
} else {
|
|
679
|
-
const {
|
|
680
|
-
method = "get" /* get */,
|
|
681
|
-
queryParams,
|
|
682
|
-
data,
|
|
683
|
-
options
|
|
684
|
-
} = request;
|
|
685
|
-
const availableMethods = getRealtimeDbAdminMethods(request, database, fullUrl, onSuccess, onError, resolve, {
|
|
686
|
-
onRequestStart,
|
|
687
|
-
onResponseEnd,
|
|
688
|
-
onResponseStart,
|
|
689
|
-
onRequestEnd
|
|
690
|
-
});
|
|
691
|
-
if (!Object.values(RealtimeDBMethods).includes(method)) {
|
|
692
|
-
throw new Error(`Cannot find method ${method} in Realtime database available methods.`);
|
|
693
|
-
}
|
|
694
|
-
availableMethods(method, {
|
|
695
|
-
constraints: (queryParams == null ? void 0 : queryParams.constraints) ? queryParams.constraints : [],
|
|
696
|
-
options,
|
|
697
|
-
data
|
|
698
|
-
});
|
|
699
|
-
}
|
|
700
|
-
});
|
|
701
|
-
});
|
|
702
|
-
return adapter;
|
|
703
|
-
};
|
|
704
|
-
//# sourceMappingURL=index.cjs.js.map
|