@data-weave/firestore-admin-adapter 0.6.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/dist/FirestoreAdminAdapter.d.ts +31 -0
- package/dist/FirestoreAdminAdapter.js +106 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +18 -0
- package/package.json +38 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type AggregateResult, type AggregateSpec, FieldValues, Firestore, FirestoreApp, FirestoreTypes } from '@data-weave/backend-firestore';
|
|
2
|
+
export declare class FirestoreAdminAdapter extends Firestore {
|
|
3
|
+
readonly firestore: FirestoreApp;
|
|
4
|
+
readonly fieldValues: FieldValues;
|
|
5
|
+
app: FirestoreApp;
|
|
6
|
+
constructor(firestore: FirestoreApp, fieldValues: FieldValues);
|
|
7
|
+
collection(reference: any, path: string): any;
|
|
8
|
+
getDocs(reference: any): any;
|
|
9
|
+
getAggregateFromServer<Spec extends AggregateSpec>(query: any, spec: Spec): Promise<AggregateResult<Spec>>;
|
|
10
|
+
getDoc(reference: any, path?: string): any;
|
|
11
|
+
serverTimestamp(): FirestoreTypes.FieldValue;
|
|
12
|
+
increment(n: number): FirestoreTypes.FieldValue;
|
|
13
|
+
query(reference: any, filter: any): any;
|
|
14
|
+
where(field: string | FirestoreTypes.FieldPath, op: string, value: unknown): any;
|
|
15
|
+
limit(limit: number): {
|
|
16
|
+
type: string;
|
|
17
|
+
limit: number;
|
|
18
|
+
};
|
|
19
|
+
orderBy(orderBy: string, direction: FirestoreTypes.OrderByDirection): {
|
|
20
|
+
type: string;
|
|
21
|
+
field: string;
|
|
22
|
+
direction: FirestoreTypes.OrderByDirection;
|
|
23
|
+
};
|
|
24
|
+
setDoc(reference: any, data: any, options?: FirestoreTypes.SetOptions): any;
|
|
25
|
+
updateDoc(reference: any, data: any): any;
|
|
26
|
+
deleteDoc(reference: any): any;
|
|
27
|
+
doc(reference: any, path?: string): any;
|
|
28
|
+
onSnapshot(reference: any, onNext: (snapshot: any) => void, onError?: (error: Error) => void): any;
|
|
29
|
+
runTransaction<T>(firestore: FirestoreApp, transaction: (transaction: FirestoreTypes.Transaction) => Promise<T>, options?: FirestoreTypes.TransactionOptions): Promise<T>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=FirestoreAdminAdapter.d.ts.map
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FirestoreAdminAdapter = void 0;
|
|
4
|
+
const firestore_1 = require("firebase-admin/firestore");
|
|
5
|
+
const backend_firestore_1 = require("@data-weave/backend-firestore");
|
|
6
|
+
/*
|
|
7
|
+
* FirestoreAdminAdapter creates an interface between modular and namespaced
|
|
8
|
+
* firestore libraries.
|
|
9
|
+
* - admin sdk doesn't support modular imports
|
|
10
|
+
*/
|
|
11
|
+
// TODO: add types
|
|
12
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
13
|
+
class FirestoreAdminAdapter extends backend_firestore_1.Firestore {
|
|
14
|
+
firestore;
|
|
15
|
+
fieldValues;
|
|
16
|
+
app;
|
|
17
|
+
constructor(firestore, fieldValues) {
|
|
18
|
+
super();
|
|
19
|
+
this.firestore = firestore;
|
|
20
|
+
this.fieldValues = fieldValues;
|
|
21
|
+
this.app = firestore;
|
|
22
|
+
this.fieldValues = fieldValues;
|
|
23
|
+
}
|
|
24
|
+
collection(reference, path) {
|
|
25
|
+
return reference.collection(path);
|
|
26
|
+
}
|
|
27
|
+
getDocs(reference) {
|
|
28
|
+
return reference.get();
|
|
29
|
+
}
|
|
30
|
+
async getAggregateFromServer(query, spec) {
|
|
31
|
+
const adminSpec = Object.fromEntries(Object.keys(spec).map(alias => {
|
|
32
|
+
const fieldSpec = spec[alias];
|
|
33
|
+
if (fieldSpec.type === 'count') {
|
|
34
|
+
return [alias, firestore_1.AggregateField.count()];
|
|
35
|
+
}
|
|
36
|
+
return [alias, firestore_1.AggregateField[fieldSpec.type](fieldSpec.field)];
|
|
37
|
+
}));
|
|
38
|
+
const snapshot = await query.aggregate(adminSpec).get();
|
|
39
|
+
return snapshot.data();
|
|
40
|
+
}
|
|
41
|
+
getDoc(reference, path) {
|
|
42
|
+
return reference.get(path);
|
|
43
|
+
}
|
|
44
|
+
serverTimestamp() {
|
|
45
|
+
return this.fieldValues.serverTimestamp();
|
|
46
|
+
}
|
|
47
|
+
increment(n) {
|
|
48
|
+
return this.fieldValues.increment(n);
|
|
49
|
+
}
|
|
50
|
+
query(reference, filter) {
|
|
51
|
+
if (filter.type === 'where') {
|
|
52
|
+
return reference.where(filter.field, filter.op, filter.value);
|
|
53
|
+
}
|
|
54
|
+
if (filter.type === 'orderBy') {
|
|
55
|
+
return reference.orderBy(filter.field, filter.direction);
|
|
56
|
+
}
|
|
57
|
+
if (filter.type === 'limit') {
|
|
58
|
+
return reference.limit(filter.limit);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
where(field, op, value) {
|
|
62
|
+
return {
|
|
63
|
+
type: 'where',
|
|
64
|
+
field,
|
|
65
|
+
op,
|
|
66
|
+
value,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
limit(limit) {
|
|
70
|
+
return {
|
|
71
|
+
type: 'limit',
|
|
72
|
+
limit,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
orderBy(orderBy, direction) {
|
|
76
|
+
return {
|
|
77
|
+
type: 'orderBy',
|
|
78
|
+
field: orderBy,
|
|
79
|
+
direction,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
setDoc(reference, data, options) {
|
|
83
|
+
return reference.set(data, options);
|
|
84
|
+
}
|
|
85
|
+
updateDoc(reference, data) {
|
|
86
|
+
return reference.update(data);
|
|
87
|
+
}
|
|
88
|
+
deleteDoc(reference) {
|
|
89
|
+
return reference.delete();
|
|
90
|
+
}
|
|
91
|
+
doc(reference, path) {
|
|
92
|
+
if (!path)
|
|
93
|
+
return reference.doc();
|
|
94
|
+
return reference.doc(path);
|
|
95
|
+
}
|
|
96
|
+
onSnapshot(reference, onNext, onError) {
|
|
97
|
+
return reference.onSnapshot(onNext, onError);
|
|
98
|
+
}
|
|
99
|
+
runTransaction(firestore, transaction, options) {
|
|
100
|
+
// firestore.runTransaction is Admin SDK specific
|
|
101
|
+
return firestore.runTransaction(transaction, options);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.FirestoreAdminAdapter = FirestoreAdminAdapter;
|
|
105
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
106
|
+
//# sourceMappingURL=FirestoreAdminAdapter.js.map
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./FirestoreAdminAdapter"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@data-weave/firestore-admin-adapter",
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"author": "",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/**/*.js",
|
|
9
|
+
"dist/**/*.d.ts"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"clean": "rm -rf dist",
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"build:clean": "npm run clean && npm run build",
|
|
15
|
+
"prepare": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/data-weave/datamanager/tree/master/packages/firestore-admin-adapter"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public",
|
|
23
|
+
"registry": "https://registry.npmjs.org/"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@data-weave/backend-firestore": "~0.6.1"
|
|
27
|
+
},
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"firebase-admin": ">=12.0.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@data-weave/backend-firestore": "~0.6.1",
|
|
33
|
+
"@data-weave/datamanager": "~0.6.1",
|
|
34
|
+
"@types/node": "^22.10.2",
|
|
35
|
+
"firebase-admin": "^13.0.0",
|
|
36
|
+
"typescript": "5.9.3"
|
|
37
|
+
}
|
|
38
|
+
}
|