firetender 0.9.4 → 0.10.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.
@@ -1,5 +1,5 @@
1
- import { CollectionReference, DocumentReference, Firestore, QueryConstraint } from "firebase/firestore";
2
1
  import { z } from "zod";
2
+ import { CollectionReference, DocumentReference, Firestore, QueryConstraint } from "./firestore-deps";
3
3
  import { FiretenderDoc, FiretenderDocOptions } from "./FiretenderDoc";
4
4
  import { DeepPartial } from "./ts-helpers";
5
5
  /**
@@ -16,17 +16,18 @@ export declare class FiretenderCollection<SchemaType extends z.SomeZodObject> {
16
16
  readonly firestore: Firestore;
17
17
  /** The collection path of this object: a series of collection names */
18
18
  readonly collectionPath: string[];
19
- /** Initial values to be filled in when creating a new document */
20
- readonly baseInitialData: DeepPartial<z.input<SchemaType>> | undefined;
19
+ /** Function to return the initial values when creating a new document. */
20
+ readonly baseInitialDataFactory: (() => DeepPartial<z.input<SchemaType>>) | undefined;
21
21
  /**
22
22
  * @param schema the Zod object schema describing the documents in this
23
23
  * collection.
24
24
  * @param firestore the thing you get from getFirestore().
25
25
  * @param collectionPath the path of this collection in Firestore: the names
26
26
  * of any parent collections and of this collection.
27
- * @param baseInitialData (optional) default field values for this collection.
27
+ * @param baseInitialData (optional) an object or object factory providing
28
+ * default field values for this collection.
28
29
  */
29
- constructor(schema: SchemaType, firestore: Firestore, collectionPath: [string, ...string[]] | string, baseInitialData?: DeepPartial<z.input<SchemaType>> | undefined);
30
+ constructor(schema: SchemaType, firestore: Firestore, collectionPath: [string, ...string[]] | string, baseInitialData?: (() => DeepPartial<z.input<SchemaType>>) | DeepPartial<z.input<SchemaType>> | undefined);
30
31
  /**
31
32
  * Returns a FiretenderDoc representing a new document in this collection.
32
33
  *
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FiretenderCollection = void 0;
4
- const firestore_1 = require("firebase/firestore");
5
4
  const errors_1 = require("./errors");
5
+ const firestore_deps_1 = require("./firestore-deps");
6
6
  const FiretenderDoc_1 = require("./FiretenderDoc");
7
7
  /**
8
8
  * A representation of a Firestore collection or subcollection.
@@ -18,14 +18,20 @@ class FiretenderCollection {
18
18
  * @param firestore the thing you get from getFirestore().
19
19
  * @param collectionPath the path of this collection in Firestore: the names
20
20
  * of any parent collections and of this collection.
21
- * @param baseInitialData (optional) default field values for this collection.
21
+ * @param baseInitialData (optional) an object or object factory providing
22
+ * default field values for this collection.
22
23
  */
23
24
  constructor(schema, firestore, collectionPath, baseInitialData = undefined) {
24
25
  this.schema = schema;
25
26
  this.firestore = firestore;
26
27
  this.collectionPath = [collectionPath].flat();
27
28
  if (baseInitialData) {
28
- this.baseInitialData = baseInitialData;
29
+ if (typeof baseInitialData === "function") {
30
+ this.baseInitialDataFactory = baseInitialData;
31
+ }
32
+ else {
33
+ this.baseInitialDataFactory = () => baseInitialData;
34
+ }
29
35
  }
30
36
  }
31
37
  /**
@@ -52,8 +58,8 @@ class FiretenderCollection {
52
58
  throw new errors_1.FiretenderUsageError("newDoc() requires an ID path for all collections and subcollections, except optionally the last.");
53
59
  }
54
60
  const data = {};
55
- if (this.baseInitialData) {
56
- Object.assign(data, this.baseInitialData);
61
+ if (this.baseInitialDataFactory) {
62
+ Object.assign(data, this.baseInitialDataFactory());
57
63
  }
58
64
  if (initialData) {
59
65
  Object.assign(data, initialData);
@@ -121,9 +127,9 @@ class FiretenderCollection {
121
127
  }
122
128
  let ref = this.makeCollectionRefInternal(ids);
123
129
  if (!ref) {
124
- ref = (0, firestore_1.collectionGroup)(this.firestore, this.collectionPath[this.collectionPath.length - 1]);
130
+ ref = (0, firestore_deps_1.collectionGroup)(this.firestore, this.collectionPath[this.collectionPath.length - 1]);
125
131
  }
126
- return this.getAndWrapDocs((0, firestore_1.query)(ref, ...whereClauses));
132
+ return this.getAndWrapDocs((0, firestore_deps_1.query)(ref, ...whereClauses));
127
133
  }
128
134
  /**
129
135
  * Deletes the given document from this collection.
@@ -141,7 +147,7 @@ class FiretenderCollection {
141
147
  throw new errors_1.FiretenderUsageError("delete() requires the full ID path of the target document.");
142
148
  }
143
149
  try {
144
- await (0, firestore_1.deleteDoc)(ref);
150
+ await (0, firestore_deps_1.deleteDoc)(ref);
145
151
  }
146
152
  catch (error) {
147
153
  (0, errors_1.addContextToError)(error, "deleteDoc", ref);
@@ -184,7 +190,7 @@ class FiretenderCollection {
184
190
  return undefined;
185
191
  }
186
192
  const path = ids.flatMap((id, i) => [this.collectionPath[i], id]);
187
- return (0, firestore_1.doc)(this.firestore, path[0], ...path.slice(1));
193
+ return (0, firestore_deps_1.doc)(this.firestore, path[0], ...path.slice(1));
188
194
  }
189
195
  /**
190
196
  * Builds a collection ref from the given IDs, or returns "undefined" if the
@@ -195,7 +201,7 @@ class FiretenderCollection {
195
201
  return undefined;
196
202
  }
197
203
  const subPath = ids.flatMap((id, i) => [id, this.collectionPath[i + 1]]);
198
- return (0, firestore_1.collection)(this.firestore, this.collectionPath[0], ...subPath);
204
+ return (0, firestore_deps_1.collection)(this.firestore, this.collectionPath[0], ...subPath);
199
205
  }
200
206
  /**
201
207
  * Executes the given query and returns an array of the results, wrapped in
@@ -204,10 +210,10 @@ class FiretenderCollection {
204
210
  async getAndWrapDocs(query) {
205
211
  let querySnapshot;
206
212
  try {
207
- querySnapshot = await (0, firestore_1.getDocs)(query);
213
+ querySnapshot = await (0, firestore_deps_1.getDocs)(query);
208
214
  }
209
215
  catch (error) {
210
- (0, errors_1.addContextToError)(error, "getDocs", query instanceof firestore_1.CollectionReference ? query : undefined);
216
+ (0, errors_1.addContextToError)(error, "getDocs", query instanceof firestore_deps_1.CollectionReference ? query : undefined);
211
217
  throw error;
212
218
  }
213
219
  return querySnapshot.docs.map((queryDoc) => new FiretenderDoc_1.FiretenderDoc(this.schema, queryDoc.ref, {
@@ -1 +1 @@
1
- {"version":3,"file":"FiretenderCollection.js","sourceRoot":"","sources":["../src/FiretenderCollection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FiretenderCollection.js","sourceRoot":"","sources":["../src/FiretenderCollection.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { CollectionReference, DocumentReference } from "firebase/firestore";
2
1
  import { z } from "zod";
2
+ import { CollectionReference, DocumentReference } from "./firestore-deps";
3
3
  import { DeepReadonly } from "./ts-helpers";
4
4
  /**
5
5
  * Public options for initializing a FiretenderDoc object.
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FiretenderDoc = void 0;
4
- const firestore_1 = require("firebase/firestore");
5
4
  const errors_1 = require("./errors");
5
+ const firestore_deps_1 = require("./firestore-deps");
6
6
  const proxies_1 = require("./proxies");
7
7
  const ts_helpers_1 = require("./ts-helpers");
8
8
  /**
@@ -36,7 +36,7 @@ class FiretenderDoc {
36
36
  else if (this.isNewDoc) {
37
37
  throw ReferenceError("Initial data must be given when creating a new doc.");
38
38
  }
39
- if (this.ref.type === "document") {
39
+ if (this.ref instanceof firestore_deps_1.DocumentReference) {
40
40
  this.docID = this.ref.path.split("/").pop();
41
41
  }
42
42
  else if (!this.isNewDoc) {
@@ -96,8 +96,8 @@ class FiretenderDoc {
96
96
  throw new errors_1.FiretenderUsageError("You must call load() before making a copy.");
97
97
  }
98
98
  let ref;
99
- if (dest instanceof firestore_1.DocumentReference ||
100
- dest instanceof firestore_1.CollectionReference) {
99
+ if (dest instanceof firestore_deps_1.DocumentReference ||
100
+ dest instanceof firestore_deps_1.CollectionReference) {
101
101
  ref = dest;
102
102
  }
103
103
  else if (Array.isArray(dest)) {
@@ -116,14 +116,14 @@ class FiretenderDoc {
116
116
  });
117
117
  ref =
118
118
  dest.length === collectionDepth
119
- ? (0, firestore_1.doc)(this.ref.firestore, path[0], ...path.slice(1))
120
- : (0, firestore_1.collection)(this.ref.firestore, path[0], ...path.slice(1));
119
+ ? (0, firestore_deps_1.doc)(this.ref.firestore, path[0], ...path.slice(1))
120
+ : (0, firestore_deps_1.collection)(this.ref.firestore, path[0], ...path.slice(1));
121
121
  }
122
122
  else {
123
123
  // For a string or undefined ...
124
- const collectionRef = this.ref.type === "document" ? this.ref.parent : this.ref;
124
+ const collectionRef = this.ref instanceof firestore_deps_1.DocumentReference ? this.ref.parent : this.ref;
125
125
  if (dest) {
126
- ref = (0, firestore_1.doc)(collectionRef, dest);
126
+ ref = (0, firestore_deps_1.doc)(collectionRef, dest);
127
127
  }
128
128
  else {
129
129
  ref = collectionRef;
@@ -153,7 +153,7 @@ class FiretenderDoc {
153
153
  * @throws Throws an error if the document does not yet have a reference.
154
154
  */
155
155
  get docRef() {
156
- if (this.ref.type !== "document") {
156
+ if (!(this.ref instanceof firestore_deps_1.DocumentReference)) {
157
157
  throw new errors_1.FiretenderUsageError("docRef can only be accessed after the new doc has been written.");
158
158
  }
159
159
  return this.ref;
@@ -184,7 +184,7 @@ class FiretenderDoc {
184
184
  * the document already contains data.
185
185
  */
186
186
  async load(force = false) {
187
- if (this.isNewDoc || this.ref.type === "collection") {
187
+ if (this.isNewDoc || this.ref instanceof firestore_deps_1.CollectionReference) {
188
188
  throw new errors_1.FiretenderUsageError("load() should not be called for new documents.");
189
189
  }
190
190
  if (!this.data || force) {
@@ -198,13 +198,16 @@ class FiretenderDoc {
198
198
  this.resolvesWaitingForLoad = [];
199
199
  let snapshot;
200
200
  try {
201
- snapshot = await (0, firestore_1.getDoc)(this.ref);
201
+ snapshot = await (0, firestore_deps_1.getDoc)(this.ref);
202
202
  }
203
203
  catch (error) {
204
204
  (0, errors_1.addContextToError)(error, "getDoc", this.ref);
205
205
  throw error;
206
206
  }
207
- if (!snapshot.exists()) {
207
+ // DocumentSnapshot.prototype.exists is a boolean for
208
+ // "firebase-admin/firestore" and a function for "firebase/firestore".
209
+ if ((typeof snapshot.exists === "boolean" && !snapshot.exists) ||
210
+ (typeof snapshot.exists === "function" && !snapshot.exists())) {
208
211
  const error = new errors_1.FiretenderIOError(`Document does not exist: "${this.ref.path}"`);
209
212
  this.resolvesWaitingForLoad.forEach((wait) => wait.reject(error));
210
213
  throw error;
@@ -262,9 +265,9 @@ class FiretenderDoc {
262
265
  // For new docs, this.data should contain its initial state.
263
266
  if (this.isSettingNewContents) {
264
267
  (0, ts_helpers_1.assertIsDefined)(this.data);
265
- if (this.ref.type === "document") {
268
+ if (this.ref instanceof firestore_deps_1.DocumentReference) {
266
269
  try {
267
- await (0, firestore_1.setDoc)(this.ref, this.data);
270
+ await (0, firestore_deps_1.setDoc)(this.ref, this.data);
268
271
  }
269
272
  catch (error) {
270
273
  (0, errors_1.addContextToError)(error, "setDoc", this.ref, this.data);
@@ -273,7 +276,7 @@ class FiretenderDoc {
273
276
  }
274
277
  else {
275
278
  try {
276
- this.ref = await (0, firestore_1.addDoc)(this.ref, this.data);
279
+ this.ref = await (0, firestore_deps_1.addDoc)(this.ref, this.data);
277
280
  }
278
281
  catch (error) {
279
282
  (0, errors_1.addContextToError)(error, "addDoc", this.ref, this.data);
@@ -286,18 +289,17 @@ class FiretenderDoc {
286
289
  }
287
290
  // For existing docs, this.updates should contain a list of changes.
288
291
  else {
289
- if (!(this.ref.type === "document")) {
292
+ if (!(this.ref instanceof firestore_deps_1.DocumentReference)) {
290
293
  // We should never get here.
291
294
  throw new errors_1.FiretenderInternalError("Internal error. Firetender object should always reference a document when updating an existing doc.");
292
295
  }
293
296
  if (this.updates.size > 0) {
294
- // updateDoc() takes alternating field path and field value parameters.
295
- const flatUpdateList = Array.from(this.updates.entries()).flat();
297
+ const updateData = Object.fromEntries(this.updates);
296
298
  try {
297
- await (0, firestore_1.updateDoc)(this.ref, flatUpdateList[0], flatUpdateList[1], ...flatUpdateList.slice(2));
299
+ await (0, firestore_deps_1.updateDoc)(this.ref, updateData);
298
300
  }
299
301
  catch (error) {
300
- (0, errors_1.addContextToError)(error, "updateDoc", this.ref, flatUpdateList);
302
+ (0, errors_1.addContextToError)(error, "updateDoc", this.ref, updateData);
301
303
  throw error;
302
304
  }
303
305
  this.updates.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"FiretenderDoc.js","sourceRoot":"","sources":["../src/FiretenderDoc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FiretenderDoc.js","sourceRoot":"","sources":["../src/FiretenderDoc.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CollectionReference, DocumentReference } from "firebase/firestore";
1
+ import { CollectionReference, DocumentReference } from "./firestore-deps";
2
2
  export declare class FiretenderError extends Error {
3
3
  }
4
4
  /**
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Provides all dependencies normally imported from "firebase/firestore".
3
+ *
4
+ * For web clients, the "firebase/firestore" API is simply re-exported.
5
+ *
6
+ * For the server client API, ...
7
+ */
8
+ import { CollectionGroup, CollectionReference, DocumentReference, DocumentSnapshot, FieldValue, Filter, Firestore, Query, QuerySnapshot, Timestamp, UpdateData, WithFieldValue } from "@google-cloud/firestore";
9
+ export declare const FIRESTORE_DEPS_TYPE: "web" | "admin";
10
+ export { CollectionReference, DocumentReference, DocumentSnapshot, Firestore, Query, QuerySnapshot, Timestamp, };
11
+ export type QueryConstraint = Filter;
12
+ export declare const where: typeof Filter.where;
13
+ export declare const arrayRemove: typeof FieldValue.arrayRemove;
14
+ export declare const deleteField: typeof FieldValue.delete;
15
+ export declare const serverTimestamp: typeof FieldValue.serverTimestamp;
16
+ export declare const isServerTimestamp: (x: any) => boolean;
17
+ export declare const addDoc: <T>(ref: CollectionReference<T>, data: WithFieldValue<T>) => Promise<DocumentReference<T>>;
18
+ export declare const collection: (firestoreOrRef: Firestore | CollectionReference, path: string, ...pathSegments: string[]) => CollectionReference;
19
+ export declare const collectionGroup: (firestore: Firestore, collectionID: string) => CollectionGroup;
20
+ export declare const deleteDoc: (ref: DocumentReference<unknown>) => Promise<void>;
21
+ export declare const doc: (firestoreOrRef: Firestore | CollectionReference, path?: string, ...pathSegments: string[]) => DocumentReference;
22
+ export declare const getDoc: <T>(ref: DocumentReference<T>) => Promise<DocumentSnapshot<T>>;
23
+ export declare const getDocs: <T>(query: Query<T>) => Promise<QuerySnapshot<T>>;
24
+ export declare const query: <T>(ref: Query<T>, ...queryConstraints: QueryConstraint[]) => Query<T>;
25
+ export declare const setDoc: <T>(ref: DocumentReference<T>, data: WithFieldValue<T>) => Promise<void>;
26
+ export declare const updateDoc: <T>(ref: DocumentReference<T>, data: UpdateData<T>) => Promise<void>;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Provides all dependencies normally imported from "firebase/firestore".
4
+ *
5
+ * For web clients, the "firebase/firestore" API is simply re-exported.
6
+ *
7
+ * For the server client API, ...
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.updateDoc = exports.setDoc = exports.query = exports.getDocs = exports.getDoc = exports.doc = exports.deleteDoc = exports.collectionGroup = exports.collection = exports.addDoc = exports.isServerTimestamp = exports.serverTimestamp = exports.deleteField = exports.arrayRemove = exports.where = exports.Timestamp = exports.QuerySnapshot = exports.Query = exports.Firestore = exports.DocumentSnapshot = exports.DocumentReference = exports.CollectionReference = exports.FIRESTORE_DEPS_TYPE = void 0;
11
+ const firestore_1 = require("@google-cloud/firestore");
12
+ Object.defineProperty(exports, "CollectionReference", { enumerable: true, get: function () { return firestore_1.CollectionReference; } });
13
+ Object.defineProperty(exports, "DocumentReference", { enumerable: true, get: function () { return firestore_1.DocumentReference; } });
14
+ Object.defineProperty(exports, "DocumentSnapshot", { enumerable: true, get: function () { return firestore_1.DocumentSnapshot; } });
15
+ Object.defineProperty(exports, "Firestore", { enumerable: true, get: function () { return firestore_1.Firestore; } });
16
+ Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return firestore_1.Query; } });
17
+ Object.defineProperty(exports, "QuerySnapshot", { enumerable: true, get: function () { return firestore_1.QuerySnapshot; } });
18
+ Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return firestore_1.Timestamp; } });
19
+ exports.FIRESTORE_DEPS_TYPE = "admin";
20
+ exports.where = firestore_1.Filter.where;
21
+ exports.arrayRemove = firestore_1.FieldValue.arrayRemove;
22
+ exports.deleteField = firestore_1.FieldValue.delete;
23
+ exports.serverTimestamp = firestore_1.FieldValue.serverTimestamp;
24
+ const isServerTimestamp = (x) => x instanceof firestore_1.FieldValue;
25
+ exports.isServerTimestamp = isServerTimestamp;
26
+ const addDoc = (ref, data) => ref.add(data);
27
+ exports.addDoc = addDoc;
28
+ const collection = (firestoreOrRef, path, ...pathSegments) => firestoreOrRef instanceof firestore_1.Firestore
29
+ ? firestoreOrRef.collection([path, ...pathSegments].join("/"))
30
+ : firestoreOrRef.firestore.collection([firestoreOrRef.path, path, ...pathSegments].join("/"));
31
+ exports.collection = collection;
32
+ const collectionGroup = (firestore, collectionID) => firestore.collectionGroup(collectionID);
33
+ exports.collectionGroup = collectionGroup;
34
+ const deleteDoc = async (ref) => {
35
+ await ref.delete();
36
+ };
37
+ exports.deleteDoc = deleteDoc;
38
+ const doc = (firestoreOrRef, path, ...pathSegments) => firestoreOrRef instanceof firestore_1.Firestore
39
+ ? firestoreOrRef.doc([path, ...pathSegments].join("/"))
40
+ : path
41
+ ? firestoreOrRef.doc([path, ...pathSegments].join("/"))
42
+ : firestoreOrRef.doc();
43
+ exports.doc = doc;
44
+ const getDoc = (ref) => ref.get();
45
+ exports.getDoc = getDoc;
46
+ const getDocs = (query) => query.get();
47
+ exports.getDocs = getDocs;
48
+ const query = (ref, ...queryConstraints) => queryConstraints.length === 0
49
+ ? ref
50
+ : queryConstraints.length === 1
51
+ ? ref.where(queryConstraints[0])
52
+ : ref.where(firestore_1.Filter.and(...queryConstraints));
53
+ exports.query = query;
54
+ const setDoc = async (ref, data) => {
55
+ await ref.set(data);
56
+ };
57
+ exports.setDoc = setDoc;
58
+ const updateDoc = async (ref, data) => {
59
+ await ref.update(data);
60
+ };
61
+ exports.updateDoc = updateDoc;
62
+ //# sourceMappingURL=firestore-deps-admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-deps-admin.js","sourceRoot":"","sources":["../src/firestore-deps-admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Provides all dependencies normally imported from "firebase/firestore".
3
+ *
4
+ * For web clients, the "firebase/firestore" API is simply re-exported.
5
+ *
6
+ * For the server client API, ...
7
+ */
8
+ export * from "firebase/firestore";
9
+ export declare const FIRESTORE_DEPS_TYPE: "web" | "admin";
10
+ export declare const isServerTimestamp: (data: any) => boolean;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Provides all dependencies normally imported from "firebase/firestore".
4
+ *
5
+ * For web clients, the "firebase/firestore" API is simply re-exported.
6
+ *
7
+ * For the server client API, ...
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.isServerTimestamp = exports.FIRESTORE_DEPS_TYPE = void 0;
25
+ __exportStar(require("firebase/firestore"), exports);
26
+ exports.FIRESTORE_DEPS_TYPE = "web";
27
+ const isServerTimestamp = (data) => data._methodName === "serverTimestamp";
28
+ exports.isServerTimestamp = isServerTimestamp;
29
+ //# sourceMappingURL=firestore-deps-web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-deps-web.js","sourceRoot":"","sources":["../src/firestore-deps-web.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,qDAAmC;AAEtB,QAAA,mBAAmB,GAAoB,KAAK,CAAC;AAEnD,MAAM,iBAAiB,GAAG,CAAC,IAAS,EAAE,EAAE,CAC7C,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC;AAD5B,QAAA,iBAAiB,qBACW"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Provides all dependencies normally imported from "firebase/firestore".
3
+ *
4
+ * For web clients, the "firebase/firestore" API is simply re-exported.
5
+ *
6
+ * For the server client API, ...
7
+ */
8
+ export * from "firebase/firestore";
9
+ export declare const FIRESTORE_DEPS_TYPE: "web" | "admin";
10
+ export declare const isServerTimestamp: (data: any) => boolean;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Provides all dependencies normally imported from "firebase/firestore".
4
+ *
5
+ * For web clients, the "firebase/firestore" API is simply re-exported.
6
+ *
7
+ * For the server client API, ...
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.isServerTimestamp = exports.FIRESTORE_DEPS_TYPE = void 0;
25
+ __exportStar(require("firebase/firestore"), exports);
26
+ exports.FIRESTORE_DEPS_TYPE = "web";
27
+ const isServerTimestamp = (data) => data._methodName === "serverTimestamp";
28
+ exports.isServerTimestamp = isServerTimestamp;
29
+ //# sourceMappingURL=firestore-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore-deps.js","sourceRoot":"","sources":["../src/firestore-deps.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,qDAAmC;AAEtB,QAAA,mBAAmB,GAAoB,KAAK,CAAC;AAEnD,MAAM,iBAAiB,GAAG,CAAC,IAAS,EAAE,EAAE,CAC7C,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC;AAD5B,QAAA,iBAAiB,qBACW"}
package/dist/proxies.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.watchFieldForChanges = exports.watchArrayForChanges = void 0;
4
- const firestore_1 = require("firebase/firestore");
5
4
  const zod_1 = require("zod");
5
+ const firestore_deps_1 = require("./firestore-deps");
6
6
  const ts_helpers_1 = require("./ts-helpers");
7
7
  /**
8
8
  * Given a Zod schema representing a collection, returns the sub-schema of the
@@ -145,7 +145,7 @@ function watchArrayForChanges(arrayPath, array, fieldSchema, field, addToUpdateL
145
145
  }
146
146
  // Only top-level elements can be deleted with Firestore's arrayRemove.
147
147
  if (target === array) {
148
- addToUpdateList(arrayPath, (0, firestore_1.arrayRemove)(removedValues[0]));
148
+ addToUpdateList(arrayPath, (0, firestore_deps_1.arrayRemove)(removedValues[0]));
149
149
  }
150
150
  else {
151
151
  addToUpdateList(arrayPath, array);
@@ -234,7 +234,7 @@ function watchFieldForChanges(fieldPath, fieldSchema, field, addToUpdateList) {
234
234
  (0, ts_helpers_1.assertKeyIsString)(propertyKey);
235
235
  // Delete the field in Firestore by marking it with the deleteField
236
236
  // operator.
237
- addToUpdateList([...fieldPath, propertyKey], (0, firestore_1.deleteField)());
237
+ addToUpdateList([...fieldPath, propertyKey], (0, firestore_deps_1.deleteField)());
238
238
  return Reflect.deleteProperty(target, propertyKey);
239
239
  },
240
240
  });
@@ -1 +1 @@
1
- {"version":3,"file":"proxies.js","sourceRoot":"","sources":["../src/proxies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxies.js","sourceRoot":"","sources":["../src/proxies.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { Timestamp } from "firebase/firestore";
2
1
  import { z } from "zod";
2
+ import { Timestamp } from "./firestore-deps";
3
3
  /**
4
4
  * Timestamp representation used by Firestore: seconds and nanoseconds since the
5
5
  * epoch.
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serverTimestampWithClientTime = exports.serverTimestamp = exports.futureTimestampDays = exports.timestampSchema = void 0;
4
- const firestore_1 = require("firebase/firestore");
5
4
  const zod_1 = require("zod");
5
+ const firestore_deps_1 = require("./firestore-deps");
6
6
  /**
7
7
  * Timestamp representation used by Firestore: seconds and nanoseconds since the
8
8
  * epoch.
9
9
  */
10
- exports.timestampSchema = zod_1.z.custom((data) => data instanceof firestore_1.Timestamp || data._methodName === "serverTimestamp");
10
+ exports.timestampSchema = zod_1.z.custom((data) => data instanceof firestore_deps_1.Timestamp || (0, firestore_deps_1.isServerTimestamp)(data));
11
11
  /**
12
12
  * Returns a Firestore Timestamp for some future date. The result is typically
13
13
  * used for writing TTLs.
@@ -19,7 +19,7 @@ exports.timestampSchema = zod_1.z.custom((data) => data instanceof firestore_1.T
19
19
  * @param daysFromNow days in the future to set this Timestamp.
20
20
  */
21
21
  function futureTimestampDays(daysFromNow) {
22
- return firestore_1.Timestamp.fromMillis(Date.now() + daysFromNow * 24 * 60 * 60 * 1000);
22
+ return firestore_deps_1.Timestamp.fromMillis(Date.now() + daysFromNow * 24 * 60 * 60 * 1000);
23
23
  }
24
24
  exports.futureTimestampDays = futureTimestampDays;
25
25
  /**
@@ -31,7 +31,7 @@ exports.futureTimestampDays = futureTimestampDays;
31
31
  * as a Timestamp, see {@link serverTimestampWithClientTime}.
32
32
  */
33
33
  function serverTimestamp() {
34
- return (0, firestore_1.serverTimestamp)();
34
+ return (0, firestore_deps_1.serverTimestamp)();
35
35
  }
36
36
  exports.serverTimestamp = serverTimestamp;
37
37
  /**
@@ -44,12 +44,11 @@ exports.serverTimestamp = serverTimestamp;
44
44
  * clock is incorrect. Caveat coder.
45
45
  */
46
46
  function serverTimestampWithClientTime() {
47
- const sentinel = (0, firestore_1.serverTimestamp)();
48
- const timestamp = firestore_1.Timestamp.now();
47
+ const sentinel = (0, firestore_deps_1.serverTimestamp)();
48
+ const timestamp = firestore_deps_1.Timestamp.now();
49
49
  Object.assign(sentinel, timestamp);
50
50
  sentinel.isEqual = (other) => timestamp.isEqual(other);
51
51
  sentinel.toDate = () => timestamp.toDate();
52
- sentinel.toJSON = () => timestamp.toJSON();
53
52
  sentinel.toMillis = () => timestamp.toMillis();
54
53
  sentinel.toString = () => timestamp.toString();
55
54
  sentinel.valueOf = () => timestamp.valueOf();
@@ -1 +1 @@
1
- {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../src/timestamps.ts"],"names":[],"mappings":";;;AAAA,kDAG4B;AAC5B,6BAAwB;AAExB;;;GAGG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CACrC,CAAC,IAAS,EAAE,EAAE,CACZ,IAAI,YAAY,qBAAS,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB,CACtE,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,OAAO,qBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9E,CAAC;AAFD,kDAEC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe;IAC7B,OAAO,IAAA,2BAAwB,GAAe,CAAC;AACjD,CAAC;AAFD,0CAEC;AAED;;;;;;;;GAQG;AACH,SAAgB,6BAA6B;IAC3C,MAAM,QAAQ,GAAG,IAAA,2BAAwB,GAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,qBAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClC,QAAgB,CAAC,OAAO,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1E,QAAgB,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACnD,QAAgB,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACnD,QAAgB,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACvD,QAAgB,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACvD,QAAgB,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACtD,OAAO,QAAqB,CAAC;AAC/B,CAAC;AAXD,sEAWC"}
1
+ {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../src/timestamps.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,qDAI0B;AAE1B;;;GAGG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CACrC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,YAAY,0BAAS,IAAI,IAAA,kCAAiB,EAAC,IAAI,CAAC,CACpE,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,OAAO,0BAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9E,CAAC;AAFD,kDAEC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe;IAC7B,OAAO,IAAA,gCAAwB,GAAe,CAAC;AACjD,CAAC;AAFD,0CAEC;AAED;;;;;;;;GAQG;AACH,SAAgB,6BAA6B;IAC3C,MAAM,QAAQ,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,0BAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClC,QAAgB,CAAC,OAAO,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1E,QAAgB,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACnD,QAAgB,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACvD,QAAgB,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACvD,QAAgB,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACtD,OAAO,QAAqB,CAAC;AAC/B,CAAC;AAVD,sEAUC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "firetender",
3
3
  "displayName": "Firetender",
4
4
  "description": "Typescript wrapper for Firestore documents",
5
- "version": "0.9.4",
5
+ "version": "0.10.0",
6
6
  "author": "Jake Hartman",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/jakes-space/firetender",
@@ -20,7 +20,8 @@
20
20
  "exports": {
21
21
  ".": {
22
22
  "types": "./dist/index.d.ts",
23
- "import": "./dist/index.js"
23
+ "import": "./dist/index.js",
24
+ "require": "./dist/index.js"
24
25
  }
25
26
  },
26
27
  "files": [
@@ -28,6 +29,9 @@
28
29
  "/src/*.ts"
29
30
  ],
30
31
  "scripts": {
32
+ "use-admin-firestore": "cp package-admin.json package.json && cp src/firestore-deps-admin.ts src/firestore-deps.ts && npm install",
33
+ "use-web-firestore": "echo Already using web firestore.",
34
+ "diff-web-admin": "diff package-web.json package-admin.json",
31
35
  "lint:check": "eslint src --ext .ts",
32
36
  "lint:fix": "eslint --fix src --ext .ts",
33
37
  "prettier:check": "prettier --check src/*.ts src/**/*.ts",
@@ -57,6 +61,7 @@
57
61
  "eslint-plugin-import": "^2.27.5",
58
62
  "eslint-plugin-prettier": "^4.2.1",
59
63
  "eslint-plugin-simple-import-sort": "^10.0.0",
64
+ "firebase-admin": "^11.6.0",
60
65
  "husky": "^8.0.3",
61
66
  "jest": "^29.4.3",
62
67
  "prettier": "^2.8.4",
@@ -1,3 +1,6 @@
1
+ import { z } from "zod";
2
+
3
+ import { addContextToError, FiretenderUsageError } from "./errors";
1
4
  import {
2
5
  collection,
3
6
  collectionGroup,
@@ -11,10 +14,7 @@ import {
11
14
  query,
12
15
  QueryConstraint,
13
16
  QuerySnapshot,
14
- } from "firebase/firestore";
15
- import { z } from "zod";
16
-
17
- import { addContextToError, FiretenderUsageError } from "./errors";
17
+ } from "./firestore-deps";
18
18
  import { FiretenderDoc, FiretenderDocOptions } from "./FiretenderDoc";
19
19
  import { DeepPartial } from "./ts-helpers";
20
20
 
@@ -35,8 +35,10 @@ export class FiretenderCollection<SchemaType extends z.SomeZodObject> {
35
35
  /** The collection path of this object: a series of collection names */
36
36
  readonly collectionPath: string[];
37
37
 
38
- /** Initial values to be filled in when creating a new document */
39
- readonly baseInitialData: DeepPartial<z.input<SchemaType>> | undefined;
38
+ /** Function to return the initial values when creating a new document. */
39
+ readonly baseInitialDataFactory:
40
+ | (() => DeepPartial<z.input<SchemaType>>)
41
+ | undefined;
40
42
 
41
43
  /**
42
44
  * @param schema the Zod object schema describing the documents in this
@@ -44,19 +46,27 @@ export class FiretenderCollection<SchemaType extends z.SomeZodObject> {
44
46
  * @param firestore the thing you get from getFirestore().
45
47
  * @param collectionPath the path of this collection in Firestore: the names
46
48
  * of any parent collections and of this collection.
47
- * @param baseInitialData (optional) default field values for this collection.
49
+ * @param baseInitialData (optional) an object or object factory providing
50
+ * default field values for this collection.
48
51
  */
49
52
  constructor(
50
53
  schema: SchemaType,
51
54
  firestore: Firestore,
52
55
  collectionPath: [string, ...string[]] | string,
53
- baseInitialData: DeepPartial<z.input<SchemaType>> | undefined = undefined
56
+ baseInitialData:
57
+ | (() => DeepPartial<z.input<SchemaType>>)
58
+ | DeepPartial<z.input<SchemaType>>
59
+ | undefined = undefined
54
60
  ) {
55
61
  this.schema = schema;
56
62
  this.firestore = firestore;
57
63
  this.collectionPath = [collectionPath].flat();
58
64
  if (baseInitialData) {
59
- this.baseInitialData = baseInitialData;
65
+ if (typeof baseInitialData === "function") {
66
+ this.baseInitialDataFactory = baseInitialData;
67
+ } else {
68
+ this.baseInitialDataFactory = () => baseInitialData;
69
+ }
60
70
  }
61
71
  }
62
72
 
@@ -91,8 +101,8 @@ export class FiretenderCollection<SchemaType extends z.SomeZodObject> {
91
101
  );
92
102
  }
93
103
  const data = {};
94
- if (this.baseInitialData) {
95
- Object.assign(data, this.baseInitialData);
104
+ if (this.baseInitialDataFactory) {
105
+ Object.assign(data, this.baseInitialDataFactory());
96
106
  }
97
107
  if (initialData) {
98
108
  Object.assign(data, initialData);
@@ -1,3 +1,11 @@
1
+ import { z } from "zod";
2
+
3
+ import {
4
+ addContextToError,
5
+ FiretenderInternalError,
6
+ FiretenderIOError,
7
+ FiretenderUsageError,
8
+ } from "./errors";
1
9
  import {
2
10
  addDoc,
3
11
  collection,
@@ -8,15 +16,7 @@ import {
8
16
  getDoc,
9
17
  setDoc,
10
18
  updateDoc,
11
- } from "firebase/firestore";
12
- import { z } from "zod";
13
-
14
- import {
15
- addContextToError,
16
- FiretenderInternalError,
17
- FiretenderIOError,
18
- FiretenderUsageError,
19
- } from "./errors";
19
+ } from "./firestore-deps";
20
20
  import { watchFieldForChanges } from "./proxies";
21
21
  import { assertIsDefined, DeepReadonly } from "./ts-helpers";
22
22
 
@@ -108,7 +108,7 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
108
108
  "Initial data must be given when creating a new doc."
109
109
  );
110
110
  }
111
- if (this.ref.type === "document") {
111
+ if (this.ref instanceof DocumentReference) {
112
112
  this.docID = this.ref.path.split("/").pop();
113
113
  } else if (!this.isNewDoc) {
114
114
  throw TypeError(
@@ -214,7 +214,7 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
214
214
  } else {
215
215
  // For a string or undefined ...
216
216
  const collectionRef =
217
- this.ref.type === "document" ? this.ref.parent : this.ref;
217
+ this.ref instanceof DocumentReference ? this.ref.parent : this.ref;
218
218
  if (dest) {
219
219
  ref = doc(collectionRef, dest);
220
220
  } else {
@@ -249,7 +249,7 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
249
249
  * @throws Throws an error if the document does not yet have a reference.
250
250
  */
251
251
  get docRef(): DocumentReference {
252
- if (this.ref.type !== "document") {
252
+ if (!(this.ref instanceof DocumentReference)) {
253
253
  throw new FiretenderUsageError(
254
254
  "docRef can only be accessed after the new doc has been written."
255
255
  );
@@ -286,7 +286,7 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
286
286
  * the document already contains data.
287
287
  */
288
288
  async load(force = false): Promise<this> {
289
- if (this.isNewDoc || this.ref.type === "collection") {
289
+ if (this.isNewDoc || this.ref instanceof CollectionReference) {
290
290
  throw new FiretenderUsageError(
291
291
  "load() should not be called for new documents."
292
292
  );
@@ -306,7 +306,12 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
306
306
  addContextToError(error, "getDoc", this.ref);
307
307
  throw error;
308
308
  }
309
- if (!snapshot.exists()) {
309
+ // DocumentSnapshot.prototype.exists is a boolean for
310
+ // "firebase-admin/firestore" and a function for "firebase/firestore".
311
+ if (
312
+ (typeof snapshot.exists === "boolean" && !snapshot.exists) ||
313
+ (typeof snapshot.exists === "function" && !(snapshot.exists as any)())
314
+ ) {
310
315
  const error = new FiretenderIOError(
311
316
  `Document does not exist: "${this.ref.path}"`
312
317
  );
@@ -379,7 +384,7 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
379
384
  // For new docs, this.data should contain its initial state.
380
385
  if (this.isSettingNewContents) {
381
386
  assertIsDefined(this.data);
382
- if (this.ref.type === "document") {
387
+ if (this.ref instanceof DocumentReference) {
383
388
  try {
384
389
  await setDoc(this.ref, this.data);
385
390
  } catch (error) {
@@ -400,24 +405,18 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
400
405
  }
401
406
  // For existing docs, this.updates should contain a list of changes.
402
407
  else {
403
- if (!(this.ref.type === "document")) {
408
+ if (!(this.ref instanceof DocumentReference)) {
404
409
  // We should never get here.
405
410
  throw new FiretenderInternalError(
406
411
  "Internal error. Firetender object should always reference a document when updating an existing doc."
407
412
  );
408
413
  }
409
414
  if (this.updates.size > 0) {
410
- // updateDoc() takes alternating field path and field value parameters.
411
- const flatUpdateList = Array.from(this.updates.entries()).flat();
415
+ const updateData = Object.fromEntries(this.updates);
412
416
  try {
413
- await updateDoc(
414
- this.ref,
415
- flatUpdateList[0],
416
- flatUpdateList[1],
417
- ...flatUpdateList.slice(2)
418
- );
417
+ await updateDoc(this.ref, updateData);
419
418
  } catch (error: any) {
420
- addContextToError(error, "updateDoc", this.ref, flatUpdateList);
419
+ addContextToError(error, "updateDoc", this.ref, updateData);
421
420
  throw error;
422
421
  }
423
422
  this.updates.clear();
package/src/errors.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CollectionReference, DocumentReference } from "firebase/firestore";
1
+ import { CollectionReference, DocumentReference } from "./firestore-deps";
2
2
 
3
3
  export class FiretenderError extends Error {}
4
4
 
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Provides all dependencies normally imported from "firebase/firestore".
3
+ *
4
+ * For web clients, the "firebase/firestore" API is simply re-exported.
5
+ *
6
+ * For the server client API, ...
7
+ */
8
+
9
+ import {
10
+ CollectionGroup,
11
+ CollectionReference,
12
+ DocumentReference,
13
+ DocumentSnapshot,
14
+ FieldValue,
15
+ Filter,
16
+ Firestore,
17
+ Query,
18
+ QuerySnapshot,
19
+ Timestamp,
20
+ UpdateData,
21
+ WithFieldValue,
22
+ } from "@google-cloud/firestore";
23
+
24
+ export const FIRESTORE_DEPS_TYPE: "web" | "admin" = "admin";
25
+
26
+ export {
27
+ CollectionReference,
28
+ DocumentReference,
29
+ DocumentSnapshot,
30
+ Firestore,
31
+ Query,
32
+ QuerySnapshot,
33
+ Timestamp,
34
+ };
35
+
36
+ export type QueryConstraint = Filter;
37
+ export const where = Filter.where;
38
+ export const arrayRemove = FieldValue.arrayRemove;
39
+ export const deleteField = FieldValue.delete;
40
+ export const serverTimestamp = FieldValue.serverTimestamp;
41
+
42
+ export const isServerTimestamp = (x: any) => x instanceof FieldValue;
43
+
44
+ export const addDoc = <T>(
45
+ ref: CollectionReference<T>,
46
+ data: WithFieldValue<T>
47
+ ): Promise<DocumentReference<T>> => ref.add(data);
48
+
49
+ export const collection = (
50
+ firestoreOrRef: Firestore | CollectionReference,
51
+ path: string,
52
+ ...pathSegments: string[]
53
+ ): CollectionReference =>
54
+ firestoreOrRef instanceof Firestore
55
+ ? firestoreOrRef.collection([path, ...pathSegments].join("/"))
56
+ : firestoreOrRef.firestore.collection(
57
+ [firestoreOrRef.path, path, ...pathSegments].join("/")
58
+ );
59
+
60
+ export const collectionGroup = (
61
+ firestore: Firestore,
62
+ collectionID: string
63
+ ): CollectionGroup => firestore.collectionGroup(collectionID);
64
+
65
+ export const deleteDoc = async (
66
+ ref: DocumentReference<unknown>
67
+ ): Promise<void> => {
68
+ await ref.delete();
69
+ };
70
+
71
+ export const doc = (
72
+ firestoreOrRef: Firestore | CollectionReference,
73
+ path?: string,
74
+ ...pathSegments: string[]
75
+ ): DocumentReference =>
76
+ firestoreOrRef instanceof Firestore
77
+ ? firestoreOrRef.doc([path, ...pathSegments].join("/"))
78
+ : path
79
+ ? firestoreOrRef.doc([path, ...pathSegments].join("/"))
80
+ : firestoreOrRef.doc();
81
+
82
+ export const getDoc = <T>(
83
+ ref: DocumentReference<T>
84
+ ): Promise<DocumentSnapshot<T>> => ref.get();
85
+
86
+ export const getDocs = <T>(query: Query<T>): Promise<QuerySnapshot<T>> =>
87
+ query.get();
88
+
89
+ export const query = <T>(
90
+ ref: Query<T>,
91
+ ...queryConstraints: QueryConstraint[]
92
+ ): Query<T> =>
93
+ queryConstraints.length === 0
94
+ ? ref
95
+ : queryConstraints.length === 1
96
+ ? ref.where(queryConstraints[0])
97
+ : ref.where(Filter.and(...queryConstraints));
98
+
99
+ export const setDoc = async <T>(
100
+ ref: DocumentReference<T>,
101
+ data: WithFieldValue<T>
102
+ ): Promise<void> => {
103
+ await ref.set(data);
104
+ };
105
+
106
+ export const updateDoc = async <T>(
107
+ ref: DocumentReference<T>,
108
+ data: UpdateData<T>
109
+ ): Promise<void> => {
110
+ await ref.update(data);
111
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Provides all dependencies normally imported from "firebase/firestore".
3
+ *
4
+ * For web clients, the "firebase/firestore" API is simply re-exported.
5
+ *
6
+ * For the server client API, ...
7
+ */
8
+
9
+ export * from "firebase/firestore";
10
+
11
+ export const FIRESTORE_DEPS_TYPE: "web" | "admin" = "web";
12
+
13
+ export const isServerTimestamp = (data: any) =>
14
+ data._methodName === "serverTimestamp";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Provides all dependencies normally imported from "firebase/firestore".
3
+ *
4
+ * For web clients, the "firebase/firestore" API is simply re-exported.
5
+ *
6
+ * For the server client API, ...
7
+ */
8
+
9
+ export * from "firebase/firestore";
10
+
11
+ export const FIRESTORE_DEPS_TYPE: "web" | "admin" = "web";
12
+
13
+ export const isServerTimestamp = (data: any) =>
14
+ data._methodName === "serverTimestamp";
package/src/proxies.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { arrayRemove, deleteField } from "firebase/firestore";
2
1
  import { z } from "zod";
3
2
 
3
+ import { arrayRemove, deleteField } from "./firestore-deps";
4
4
  import { assertKeyIsString } from "./ts-helpers";
5
5
 
6
6
  /**
package/src/timestamps.ts CHANGED
@@ -1,16 +1,17 @@
1
+ import { z } from "zod";
2
+
1
3
  import {
4
+ isServerTimestamp,
2
5
  serverTimestamp as firestoreServerTimestamp,
3
6
  Timestamp,
4
- } from "firebase/firestore";
5
- import { z } from "zod";
7
+ } from "./firestore-deps";
6
8
 
7
9
  /**
8
10
  * Timestamp representation used by Firestore: seconds and nanoseconds since the
9
11
  * epoch.
10
12
  */
11
13
  export const timestampSchema = z.custom<Timestamp>(
12
- (data: any) =>
13
- data instanceof Timestamp || data._methodName === "serverTimestamp"
14
+ (data: any) => data instanceof Timestamp || isServerTimestamp(data)
14
15
  );
15
16
 
16
17
  /**
@@ -54,7 +55,6 @@ export function serverTimestampWithClientTime(): Timestamp {
54
55
  Object.assign(sentinel, timestamp);
55
56
  (sentinel as any).isEqual = (other: Timestamp) => timestamp.isEqual(other);
56
57
  (sentinel as any).toDate = () => timestamp.toDate();
57
- (sentinel as any).toJSON = () => timestamp.toJSON();
58
58
  (sentinel as any).toMillis = () => timestamp.toMillis();
59
59
  (sentinel as any).toString = () => timestamp.toString();
60
60
  (sentinel as any).valueOf = () => timestamp.valueOf();