firetender 0.8.4 → 0.9.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.
@@ -140,7 +140,12 @@ class FiretenderCollection {
140
140
  if (!ref) {
141
141
  throw new errors_1.FiretenderUsageError("delete() requires the full ID path of the target document.");
142
142
  }
143
- await (0, firestore_1.deleteDoc)(ref);
143
+ try {
144
+ await (0, firestore_1.deleteDoc)(ref);
145
+ }
146
+ catch (error) {
147
+ (0, errors_1.addContextToError)(error, "deleteDoc", ref);
148
+ }
144
149
  }
145
150
  /**
146
151
  * Returns a document reference for the specified ID.
@@ -197,7 +202,14 @@ class FiretenderCollection {
197
202
  * FiretenderDoc objects.
198
203
  */
199
204
  async getAndWrapDocs(query) {
200
- const querySnapshot = await (0, firestore_1.getDocs)(query);
205
+ let querySnapshot;
206
+ try {
207
+ querySnapshot = await (0, firestore_1.getDocs)(query);
208
+ }
209
+ catch (error) {
210
+ (0, errors_1.addContextToError)(error, "getDocs", query instanceof firestore_1.CollectionReference ? query : undefined);
211
+ throw error;
212
+ }
201
213
  return querySnapshot.docs.map((queryDoc) => new FiretenderDoc_1.FiretenderDoc(this.schema, queryDoc.ref, {
202
214
  initialData: queryDoc.data(),
203
215
  }));
@@ -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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"}
@@ -196,7 +196,14 @@ class FiretenderDoc {
196
196
  }
197
197
  else {
198
198
  this.resolvesWaitingForLoad = [];
199
- const snapshot = await (0, firestore_1.getDoc)(this.ref);
199
+ let snapshot;
200
+ try {
201
+ snapshot = await (0, firestore_1.getDoc)(this.ref);
202
+ }
203
+ catch (error) {
204
+ (0, errors_1.addContextToError)(error, "getDoc", this.ref);
205
+ throw error;
206
+ }
200
207
  if (!snapshot.exists()) {
201
208
  const error = new errors_1.FiretenderIOError(`Document does not exist: "${this.ref.path}"`);
202
209
  this.resolvesWaitingForLoad.forEach((wait) => wait.reject(error));
@@ -256,10 +263,22 @@ class FiretenderDoc {
256
263
  if (this.isSettingNewContents) {
257
264
  (0, ts_helpers_1.assertIsDefined)(this.data);
258
265
  if (this.ref.type === "document") {
259
- await (0, firestore_1.setDoc)(this.ref, this.data);
266
+ try {
267
+ await (0, firestore_1.setDoc)(this.ref, this.data);
268
+ }
269
+ catch (error) {
270
+ (0, errors_1.addContextToError)(error, "setDoc", this.ref, this.data);
271
+ throw error;
272
+ }
260
273
  }
261
274
  else {
262
- this.ref = await (0, firestore_1.addDoc)(this.ref, this.data);
275
+ try {
276
+ this.ref = await (0, firestore_1.addDoc)(this.ref, this.data);
277
+ }
278
+ catch (error) {
279
+ (0, errors_1.addContextToError)(error, "addDoc", this.ref, this.data);
280
+ throw error;
281
+ }
263
282
  this.docID = this.ref.path.split("/").pop(); // ID is last part of path.
264
283
  }
265
284
  this.isSettingNewContents = false;
@@ -274,7 +293,13 @@ class FiretenderDoc {
274
293
  if (this.updates.size > 0) {
275
294
  // updateDoc() takes alternating field path and field value parameters.
276
295
  const flatUpdateList = Array.from(this.updates.entries()).flat();
277
- await (0, firestore_1.updateDoc)(this.ref, flatUpdateList[0], flatUpdateList[1], ...flatUpdateList.slice(2));
296
+ try {
297
+ await (0, firestore_1.updateDoc)(this.ref, flatUpdateList[0], flatUpdateList[1], ...flatUpdateList.slice(2));
298
+ }
299
+ catch (error) {
300
+ (0, errors_1.addContextToError)(error, "updateDoc", this.ref, flatUpdateList);
301
+ throw error;
302
+ }
278
303
  this.updates.clear();
279
304
  }
280
305
  }
@@ -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":";;;AAAA,kDAU4B;AAG5B,qCAKkB;AAClB,uCAAiD;AACjD,6CAA6D;AA8B7D;;GAEG;AACH,MAAa,aAAa;IAiCxB;;;;;;;OAOG;IACH,YACE,MAAkB,EAClB,GAA4C,EAC5C,UAAmC,EAAE;QArCvC,yEAAyE;QACjE,UAAK,GAAuB,SAAS,CAAC;QAQ9C,gEAAgE;QACxD,SAAI,GAAoC,SAAS,CAAC;QAE1D,6EAA6E;QACrE,cAAS,GAAkD,SAAS,CAAC;QAE7E,2EAA2E;QACnE,YAAO,GAAG,IAAI,GAAG,EAAe,CAAC;QAuBvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1C,IAAI,OAAO,CAAC,WAAW,EAAE;YACvB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAC/C;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,MAAM,cAAc,CAClB,qDAAqD,CACtD,CAAC;SACH;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;SAC7C;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzB,MAAM,SAAS,CACb,+HAA+H,CAChI,CAAC;SACH;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,YAAY,CACjB,MAAmB,EACnB,GAA4C,EAC5C,WAAiC,EACjC,UAAgC,EAAE;QAElC,MAAM,aAAa,GAA4B;YAC7C,GAAG,OAAO;YACV,SAAS,EAAE,IAAI;YACf,WAAW;SACZ,CAAC;QACF,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,IAAI,CACF,OAKgB,SAAS,EACzB,UAAmC,EAAE;QAErC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,6BAAoB,CAC5B,4CAA4C,CAC7C,CAAC;SACH;QACD,IAAI,GAA4C,CAAC;QACjD,IACE,IAAI,YAAY,6BAAiB;YACjC,IAAI,YAAY,+BAAmB,EACnC;YACA,GAAG,GAAG,IAAI,CAAC;SACZ;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;gBACzB,qEAAqE;gBACrE,2CAA2C;gBAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;aAClB;YACD,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE;gBACtE,MAAM,IAAI,6BAAoB,CAC5B,6GAA6G,CAC9G,CAAC;aACH;YACD,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBACzB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,GAAG;gBACD,IAAI,CAAC,MAAM,KAAK,eAAe;oBAC7B,CAAC,CAAC,IAAA,eAAG,EAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACpD,CAAC,CAAC,IAAA,sBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACjE;aAAM;YACL,gCAAgC;YAChC,MAAM,aAAa,GACjB,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5D,IAAI,IAAI,EAAE;gBACR,GAAG,GAAG,IAAA,eAAG,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACL,GAAG,GAAG,aAAa,CAAC;aACrB;SACF;QACD,MAAM,aAAa,GAA4B;YAC7C,GAAG,OAAO;YACV,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,IAAI;SACvB,CAAC;QACF,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,IAAI,EAAE;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,6BAAoB,CAC5B,6DAA6D,CAC9D,CAAC;SACH;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;YAChC,MAAM,IAAI,6BAAoB,CAC5B,iEAAiE,CAClE,CAAC;SACH;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;QACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;YACnD,MAAM,IAAI,6BAAoB,CAC5B,gDAAgD,CACjD,CAAC;SACH;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE;YACvB,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE;gBAC7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,IAAA,4BAAe,EAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBAC7C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;gBACjC,IAAI,QAA0B,CAAC;gBAC/B,IAAI;oBACF,QAAQ,GAAG,MAAM,IAAA,kBAAM,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACnC;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAA,0BAAiB,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7C,MAAM,KAAK,CAAC;iBACb;gBACD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;oBACtB,MAAM,KAAK,GAAG,IAAI,0BAAiB,CACjC,6BAA6B,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAC9C,CAAC;oBACF,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBAClE,MAAM,KAAK,CAAC;iBACb;gBACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/C,mEAAmE;gBACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;aACzC;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,6BAAoB,CAC5B,oDAAoD,CACrD,CAAC;SACH;QACD,OAAO,IAAI,CAAC,IAAyC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,oEAAoE;YACpE,OAAO,IAAI,CAAC,IAA2B,CAAC;SACzC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACd,oEAAoE;gBACpE,MAAM,IAAI,6BAAoB,CAC5B,qDAAqD,CACtD,CAAC;aACH;YACD,IAAI,CAAC,SAAS,GAAG,IAAA,8BAAoB,EACnC,EAAE,EACF,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CAAC;SACH;QACD,OAAO,IAAI,CAAC,SAAgC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,CAAC,OAA4B;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,4DAA4D;QAC5D,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAA,4BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;gBAChC,IAAI;oBACF,MAAM,IAAA,kBAAM,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnC;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAA,0BAAiB,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxD,MAAM,KAAK,CAAC;iBACb;aACF;iBAAM;gBACL,IAAI;oBACF,IAAI,CAAC,GAAG,GAAG,MAAM,IAAA,kBAAM,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBAAC,OAAO,KAAU,EAAE;oBACnB,IAAA,0BAAiB,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxD,MAAM,KAAK,CAAC;iBACb;gBACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,2BAA2B;aACzE;YACD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QACD,oEAAoE;aAC/D;YACH,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;gBACnC,4BAA4B;gBAC5B,MAAM,IAAI,gCAAuB,CAC/B,sGAAsG,CACvG,CAAC;aACH;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;gBACzB,uEAAuE;gBACvE,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjE,IAAI;oBACF,MAAM,IAAA,qBAAS,EACb,IAAI,CAAC,GAAG,EACR,cAAc,CAAC,CAAC,CAAC,EACjB,cAAc,CAAC,CAAC,CAAC,EACjB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3B,CAAC;iBACH;gBAAC,OAAO,KAAU,EAAE;oBACnB,IAAA,0BAAiB,EAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;oBAChE,MAAM,KAAK,CAAC;iBACb;gBACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;aACtB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,OAA4C;QACvD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,oBAAoB;IAEpB;;;;OAIG;IACK,eAAe,CACrB,SAAmB,EACnB,QAAkC;QAElC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;YACzB,yEAAyE;YACzE,oEAAoE;YACpE,oEAAoE;YACpE,mEAAmE;YACnE,IACE,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC1B,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3D,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClE,CAAC,CAAC,EACF;gBACA,OAAO;aACR;YACD,wDAAwD;YACxD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;oBAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC1B;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,8DAA8D;YAC9D,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AA9aD,sCA8aC"}
package/dist/errors.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { CollectionReference, DocumentReference } from "firebase/firestore";
1
2
  export declare class FiretenderError extends Error {
2
3
  }
3
4
  /**
@@ -17,3 +18,13 @@ export declare class FiretenderUsageError extends FiretenderError {
17
18
  */
18
19
  export declare class FiretenderInternalError extends FiretenderError {
19
20
  }
21
+ /**
22
+ * Adds a "firetenderContext" property to the given error.
23
+ *
24
+ * @param error the error to which the context is added. If `error` is not an
25
+ * object, this call does not modify it.
26
+ * @param call the name of the Firestore function in which the error occurred.
27
+ * @param ref the path of the target document or collection, if any.
28
+ * @param data arbitrary data associated with this call.
29
+ */
30
+ export declare function addContextToError(error: any, call: string, ref?: DocumentReference | CollectionReference, data?: any): void;
package/dist/errors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FiretenderInternalError = exports.FiretenderUsageError = exports.FiretenderIOError = exports.FiretenderError = void 0;
3
+ exports.addContextToError = exports.FiretenderInternalError = exports.FiretenderUsageError = exports.FiretenderIOError = exports.FiretenderError = void 0;
4
4
  class FiretenderError extends Error {
5
5
  }
6
6
  exports.FiretenderError = FiretenderError;
@@ -24,4 +24,26 @@ exports.FiretenderUsageError = FiretenderUsageError;
24
24
  class FiretenderInternalError extends FiretenderError {
25
25
  }
26
26
  exports.FiretenderInternalError = FiretenderInternalError;
27
+ /**
28
+ * Adds a "firetenderContext" property to the given error.
29
+ *
30
+ * @param error the error to which the context is added. If `error` is not an
31
+ * object, this call does not modify it.
32
+ * @param call the name of the Firestore function in which the error occurred.
33
+ * @param ref the path of the target document or collection, if any.
34
+ * @param data arbitrary data associated with this call.
35
+ */
36
+ function addContextToError(error, call, ref, data) {
37
+ if (typeof error !== "object") {
38
+ return;
39
+ }
40
+ error.firetenderContext = { call };
41
+ if (ref) {
42
+ error.firetenderContext.ref = ref.path;
43
+ }
44
+ if (data !== undefined) {
45
+ error.firetenderContext.data = data;
46
+ }
47
+ }
48
+ exports.addContextToError = addContextToError;
27
49
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAgB,SAAQ,KAAK;CAAG;AAA7C,0CAA6C;AAE7C;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,eAAe;CAAG;AAAzD,8CAAyD;AAEzD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,eAAe;CAAG;AAA5D,oDAA4D;AAE5D;;GAEG;AACH,MAAa,uBAAwB,SAAQ,eAAe;CAAG;AAA/D,0DAA+D"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAgB,SAAQ,KAAK;CAAG;AAA7C,0CAA6C;AAE7C;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,eAAe;CAAG;AAAzD,8CAAyD;AAEzD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,eAAe;CAAG;AAA5D,oDAA4D;AAE5D;;GAEG;AACH,MAAa,uBAAwB,SAAQ,eAAe;CAAG;AAA/D,0DAA+D;AAE/D;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAC/B,KAAU,EACV,IAAY,EACZ,GAA6C,EAC7C,IAAU;IAEV,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO;KACR;IACD,KAAK,CAAC,iBAAiB,GAAG,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,GAAG,EAAE;QACP,KAAK,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;KACxC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,KAAK,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;KACrC;AACH,CAAC;AAhBD,8CAgBC"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,5 @@ import { FiretenderError, FiretenderInternalError, FiretenderIOError, Firetender
2
2
  import { FiretenderCollection } from "./FiretenderCollection";
3
3
  import type { FiretenderDocOptions } from "./FiretenderDoc";
4
4
  import { FiretenderDoc } from "./FiretenderDoc";
5
- export { FiretenderCollection, FiretenderDoc, FiretenderDocOptions, FiretenderError, FiretenderInternalError, FiretenderIOError, FiretenderUsageError, };
6
- export * from "./Timestamps";
5
+ import { futureTimestampDays, timestampSchema } from "./timestamps";
6
+ export { FiretenderCollection, FiretenderDoc, FiretenderDocOptions, FiretenderError, FiretenderInternalError, FiretenderIOError, FiretenderUsageError, futureTimestampDays, timestampSchema, };
package/dist/index.js CHANGED
@@ -1,20 +1,6 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.FiretenderUsageError = exports.FiretenderIOError = exports.FiretenderInternalError = exports.FiretenderError = exports.FiretenderDoc = exports.FiretenderCollection = void 0;
3
+ exports.timestampSchema = exports.futureTimestampDays = exports.FiretenderUsageError = exports.FiretenderIOError = exports.FiretenderInternalError = exports.FiretenderError = exports.FiretenderDoc = exports.FiretenderCollection = void 0;
18
4
  const errors_1 = require("./errors");
19
5
  Object.defineProperty(exports, "FiretenderError", { enumerable: true, get: function () { return errors_1.FiretenderError; } });
20
6
  Object.defineProperty(exports, "FiretenderInternalError", { enumerable: true, get: function () { return errors_1.FiretenderInternalError; } });
@@ -24,7 +10,7 @@ const FiretenderCollection_1 = require("./FiretenderCollection");
24
10
  Object.defineProperty(exports, "FiretenderCollection", { enumerable: true, get: function () { return FiretenderCollection_1.FiretenderCollection; } });
25
11
  const FiretenderDoc_1 = require("./FiretenderDoc");
26
12
  Object.defineProperty(exports, "FiretenderDoc", { enumerable: true, get: function () { return FiretenderDoc_1.FiretenderDoc; } });
27
- // TODO #6, #9, #10: stop using a direct export after the timestamp module gets
28
- // cleaned up.
29
- __exportStar(require("./Timestamps"), exports);
13
+ const timestamps_1 = require("./timestamps");
14
+ Object.defineProperty(exports, "futureTimestampDays", { enumerable: true, get: function () { return timestamps_1.futureTimestampDays; } });
15
+ Object.defineProperty(exports, "timestampSchema", { enumerable: true, get: function () { return timestamps_1.timestampSchema; } });
30
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAKkB;AAShB,gGAbA,wBAAe,OAaA;AACf,wGAbA,gCAAuB,OAaA;AACvB,kGAbA,0BAAiB,OAaA;AACjB,qGAbA,6BAAoB,OAaA;AAXtB,iEAA8D;AAK5D,qGALO,2CAAoB,OAKP;AAHtB,mDAAgD;AAI9C,8FAJO,6BAAa,OAIP;AAQf,+EAA+E;AAC/E,cAAc;AACd,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAKkB;AAUhB,gGAdA,wBAAe,OAcA;AACf,wGAdA,gCAAuB,OAcA;AACvB,kGAdA,0BAAiB,OAcA;AACjB,qGAdA,6BAAoB,OAcA;AAZtB,iEAA8D;AAM5D,qGANO,2CAAoB,OAMP;AAJtB,mDAAgD;AAK9C,8FALO,6BAAa,OAKP;AAJf,6CAAoE;AAUlE,oGAVO,gCAAmB,OAUP;AACnB,gGAX4B,4BAAe,OAW5B"}
@@ -0,0 +1,30 @@
1
+ import { FieldValue, Timestamp } from "firebase/firestore";
2
+ import { z } from "zod";
3
+ /**
4
+ * Timestamp representation used by Firestore: seconds and nanoseconds since the
5
+ * epoch.
6
+ */
7
+ export declare const timestampSchema: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
8
+ seconds: z.ZodNumber;
9
+ nanoseconds: z.ZodNumber;
10
+ }, "strip", z.ZodTypeAny, {
11
+ seconds: number;
12
+ nanoseconds: number;
13
+ }, {
14
+ seconds: number;
15
+ nanoseconds: number;
16
+ }>, Timestamp, {
17
+ seconds: number;
18
+ nanoseconds: number;
19
+ }>, z.ZodType<FieldValue, z.ZodTypeDef, FieldValue>]>;
20
+ /**
21
+ * Returns a Firestore Timestamp for some future date. The result is typically
22
+ * used for writing TTLs.
23
+ *
24
+ * The client's clock (specifically `Date.now()`) is used to generate the
25
+ * timestamp. For TTLs days in the future, this is generally not a concern.
26
+ * However, this function should not be depended on for short offsets.
27
+ *
28
+ * @param daysFromNow days in the future to set this Timestamp.
29
+ */
30
+ export declare function futureTimestampDays(daysFromNow: number): Timestamp;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.futureTimestampDays = exports.timestampSchema = void 0;
4
+ const firestore_1 = require("firebase/firestore");
5
+ const zod_1 = require("zod");
6
+ /**
7
+ * Timestamp representation used by Firestore: seconds and nanoseconds since the
8
+ * epoch.
9
+ */
10
+ exports.timestampSchema = zod_1.z.union([
11
+ zod_1.z
12
+ .object({
13
+ seconds: zod_1.z.number().positive().int(),
14
+ nanoseconds: zod_1.z.number().nonnegative().int(),
15
+ })
16
+ .transform(({ seconds, nanoseconds }) => new firestore_1.Timestamp(seconds, nanoseconds)),
17
+ zod_1.z.custom((value) => value._methodName === "serverTimestamp"),
18
+ ]);
19
+ /**
20
+ * Returns a Firestore Timestamp for some future date. The result is typically
21
+ * used for writing TTLs.
22
+ *
23
+ * The client's clock (specifically `Date.now()`) is used to generate the
24
+ * timestamp. For TTLs days in the future, this is generally not a concern.
25
+ * However, this function should not be depended on for short offsets.
26
+ *
27
+ * @param daysFromNow days in the future to set this Timestamp.
28
+ */
29
+ function futureTimestampDays(daysFromNow) {
30
+ return firestore_1.Timestamp.fromMillis(Date.now() + daysFromNow * 24 * 60 * 60 * 1000);
31
+ }
32
+ exports.futureTimestampDays = futureTimestampDays;
33
+ //# sourceMappingURL=timestamps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../src/timestamps.ts"],"names":[],"mappings":";;;AAAA,kDAA2D;AAC3D,6BAAwB;AAExB;;;GAGG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,KAAK,CAAC;IACrC,OAAC;SACE,MAAM,CAAC;QACN,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE;QACpC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;KAC5C,CAAC;SACD,SAAS,CACR,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,qBAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAClE;IACH,OAAC,CAAC,MAAM,CAAa,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,iBAAiB,CAAC;CAC9E,CAAC,CAAC;AAEH;;;;;;;;;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"}
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.8.4",
5
+ "version": "0.9.0",
6
6
  "author": "Jake Hartman",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/jakes-space/firetender",
@@ -10,10 +10,11 @@ import {
10
10
  Query,
11
11
  query,
12
12
  QueryConstraint,
13
+ QuerySnapshot,
13
14
  } from "firebase/firestore";
14
15
  import { z } from "zod";
15
16
 
16
- import { FiretenderUsageError } from "./errors";
17
+ import { addContextToError, FiretenderUsageError } from "./errors";
17
18
  import { FiretenderDoc, FiretenderDocOptions } from "./FiretenderDoc";
18
19
  import { DeepPartial } from "./ts-helpers";
19
20
 
@@ -198,7 +199,11 @@ export class FiretenderCollection<SchemaType extends z.SomeZodObject> {
198
199
  "delete() requires the full ID path of the target document."
199
200
  );
200
201
  }
201
- await deleteDoc(ref);
202
+ try {
203
+ await deleteDoc(ref);
204
+ } catch (error) {
205
+ addContextToError(error, "deleteDoc", ref);
206
+ }
202
207
  }
203
208
 
204
209
  /**
@@ -275,7 +280,17 @@ export class FiretenderCollection<SchemaType extends z.SomeZodObject> {
275
280
  private async getAndWrapDocs(
276
281
  query: CollectionReference | Query
277
282
  ): Promise<FiretenderDoc<SchemaType>[]> {
278
- const querySnapshot = await getDocs(query);
283
+ let querySnapshot: QuerySnapshot;
284
+ try {
285
+ querySnapshot = await getDocs(query);
286
+ } catch (error) {
287
+ addContextToError(
288
+ error,
289
+ "getDocs",
290
+ query instanceof CollectionReference ? query : undefined
291
+ );
292
+ throw error;
293
+ }
279
294
  return querySnapshot.docs.map(
280
295
  (queryDoc) =>
281
296
  new FiretenderDoc(this.schema, queryDoc.ref, {
@@ -4,6 +4,7 @@ import {
4
4
  CollectionReference,
5
5
  doc,
6
6
  DocumentReference,
7
+ DocumentSnapshot,
7
8
  getDoc,
8
9
  setDoc,
9
10
  updateDoc,
@@ -11,6 +12,7 @@ import {
11
12
  import { z } from "zod";
12
13
 
13
14
  import {
15
+ addContextToError,
14
16
  FiretenderInternalError,
15
17
  FiretenderIOError,
16
18
  FiretenderUsageError,
@@ -297,7 +299,13 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
297
299
  });
298
300
  } else {
299
301
  this.resolvesWaitingForLoad = [];
300
- const snapshot = await getDoc(this.ref);
302
+ let snapshot: DocumentSnapshot;
303
+ try {
304
+ snapshot = await getDoc(this.ref);
305
+ } catch (error) {
306
+ addContextToError(error, "getDoc", this.ref);
307
+ throw error;
308
+ }
301
309
  if (!snapshot.exists()) {
302
310
  const error = new FiretenderIOError(
303
311
  `Document does not exist: "${this.ref.path}"`
@@ -372,9 +380,19 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
372
380
  if (this.isSettingNewContents) {
373
381
  assertIsDefined(this.data);
374
382
  if (this.ref.type === "document") {
375
- await setDoc(this.ref, this.data);
383
+ try {
384
+ await setDoc(this.ref, this.data);
385
+ } catch (error) {
386
+ addContextToError(error, "setDoc", this.ref, this.data);
387
+ throw error;
388
+ }
376
389
  } else {
377
- this.ref = await addDoc(this.ref, this.data);
390
+ try {
391
+ this.ref = await addDoc(this.ref, this.data);
392
+ } catch (error: any) {
393
+ addContextToError(error, "addDoc", this.ref, this.data);
394
+ throw error;
395
+ }
378
396
  this.docID = this.ref.path.split("/").pop(); // ID is last part of path.
379
397
  }
380
398
  this.isSettingNewContents = false;
@@ -391,12 +409,17 @@ export class FiretenderDoc<SchemaType extends z.SomeZodObject> {
391
409
  if (this.updates.size > 0) {
392
410
  // updateDoc() takes alternating field path and field value parameters.
393
411
  const flatUpdateList = Array.from(this.updates.entries()).flat();
394
- await updateDoc(
395
- this.ref,
396
- flatUpdateList[0],
397
- flatUpdateList[1],
398
- ...flatUpdateList.slice(2)
399
- );
412
+ try {
413
+ await updateDoc(
414
+ this.ref,
415
+ flatUpdateList[0],
416
+ flatUpdateList[1],
417
+ ...flatUpdateList.slice(2)
418
+ );
419
+ } catch (error: any) {
420
+ addContextToError(error, "updateDoc", this.ref, flatUpdateList);
421
+ throw error;
422
+ }
400
423
  this.updates.clear();
401
424
  }
402
425
  }
package/src/errors.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { CollectionReference, DocumentReference } from "firebase/firestore";
2
+
1
3
  export class FiretenderError extends Error {}
2
4
 
3
5
  /**
@@ -16,3 +18,30 @@ export class FiretenderUsageError extends FiretenderError {}
16
18
  * Something went wrong internally. These errors indicate a bug in Firetender.
17
19
  */
18
20
  export class FiretenderInternalError extends FiretenderError {}
21
+
22
+ /**
23
+ * Adds a "firetenderContext" property to the given error.
24
+ *
25
+ * @param error the error to which the context is added. If `error` is not an
26
+ * object, this call does not modify it.
27
+ * @param call the name of the Firestore function in which the error occurred.
28
+ * @param ref the path of the target document or collection, if any.
29
+ * @param data arbitrary data associated with this call.
30
+ */
31
+ export function addContextToError(
32
+ error: any,
33
+ call: string,
34
+ ref?: DocumentReference | CollectionReference,
35
+ data?: any
36
+ ) {
37
+ if (typeof error !== "object") {
38
+ return;
39
+ }
40
+ error.firetenderContext = { call };
41
+ if (ref) {
42
+ error.firetenderContext.ref = ref.path;
43
+ }
44
+ if (data !== undefined) {
45
+ error.firetenderContext.data = data;
46
+ }
47
+ }
package/src/index.ts CHANGED
@@ -7,6 +7,7 @@ import {
7
7
  import { FiretenderCollection } from "./FiretenderCollection";
8
8
  import type { FiretenderDocOptions } from "./FiretenderDoc";
9
9
  import { FiretenderDoc } from "./FiretenderDoc";
10
+ import { futureTimestampDays, timestampSchema } from "./timestamps";
10
11
 
11
12
  export {
12
13
  FiretenderCollection,
@@ -16,8 +17,6 @@ export {
16
17
  FiretenderInternalError,
17
18
  FiretenderIOError,
18
19
  FiretenderUsageError,
20
+ futureTimestampDays,
21
+ timestampSchema,
19
22
  };
20
-
21
- // TODO #6, #9, #10: stop using a direct export after the timestamp module gets
22
- // cleaned up.
23
- export * from "./Timestamps";
@@ -0,0 +1,32 @@
1
+ import { FieldValue, Timestamp } from "firebase/firestore";
2
+ import { z } from "zod";
3
+
4
+ /**
5
+ * Timestamp representation used by Firestore: seconds and nanoseconds since the
6
+ * epoch.
7
+ */
8
+ export const timestampSchema = z.union([
9
+ z
10
+ .object({
11
+ seconds: z.number().positive().int(),
12
+ nanoseconds: z.number().nonnegative().int(),
13
+ })
14
+ .transform(
15
+ ({ seconds, nanoseconds }) => new Timestamp(seconds, nanoseconds)
16
+ ),
17
+ z.custom<FieldValue>((value: any) => value._methodName === "serverTimestamp"),
18
+ ]);
19
+
20
+ /**
21
+ * Returns a Firestore Timestamp for some future date. The result is typically
22
+ * used for writing TTLs.
23
+ *
24
+ * The client's clock (specifically `Date.now()`) is used to generate the
25
+ * timestamp. For TTLs days in the future, this is generally not a concern.
26
+ * However, this function should not be depended on for short offsets.
27
+ *
28
+ * @param daysFromNow days in the future to set this Timestamp.
29
+ */
30
+ export function futureTimestampDays(daysFromNow: number) {
31
+ return Timestamp.fromMillis(Date.now() + daysFromNow * 24 * 60 * 60 * 1000);
32
+ }
@@ -1,27 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * Timestamp representation used by Firestore: seconds and nanoseconds since the
4
- * epoch.
5
- */
6
- export declare const timestampSchema: z.ZodObject<{
7
- seconds: z.ZodNumber;
8
- nanoseconds: z.ZodNumber;
9
- }, "strip", z.ZodTypeAny, {
10
- seconds: number;
11
- nanoseconds: number;
12
- }, {
13
- seconds: number;
14
- nanoseconds: number;
15
- }>;
16
- export type TimestampData = z.infer<typeof timestampSchema>;
17
- export declare function dateFromTimestamp(timestamp: TimestampData): Date;
18
- export declare function makeTTL(daysFromNow?: number): {
19
- seconds: number;
20
- nanoseconds: number;
21
- };
22
- export declare function timestampFromDate(date: Date): TimestampData;
23
- export declare function timestampFromUnixMillis(msSinceEpoch: number): TimestampData;
24
- export declare function nowTimestamp(): {
25
- seconds: number;
26
- nanoseconds: number;
27
- };
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nowTimestamp = exports.timestampFromUnixMillis = exports.timestampFromDate = exports.makeTTL = exports.dateFromTimestamp = exports.timestampSchema = void 0;
4
- const zod_1 = require("zod");
5
- /**
6
- * Timestamp representation used by Firestore: seconds and nanoseconds since the
7
- * epoch.
8
- */
9
- exports.timestampSchema = zod_1.z.object({
10
- seconds: zod_1.z.number().positive().int(),
11
- nanoseconds: zod_1.z.number().nonnegative().int(),
12
- });
13
- function dateFromTimestamp(timestamp) {
14
- return new Date(timestamp.seconds * 1e3 + timestamp.nanoseconds / 1e6);
15
- }
16
- exports.dateFromTimestamp = dateFromTimestamp;
17
- function makeTTL(daysFromNow = 30) {
18
- // TODO: #10 is there a way to use the server time rather than Date.now()?
19
- return timestampFromUnixMillis(Date.now() + daysFromNow * 24 * 60 * 60 * 1000);
20
- }
21
- exports.makeTTL = makeTTL;
22
- function timestampFromDate(date) {
23
- return timestampFromUnixMillis(date.getTime());
24
- }
25
- exports.timestampFromDate = timestampFromDate;
26
- function timestampFromUnixMillis(msSinceEpoch) {
27
- return {
28
- seconds: Math.floor(msSinceEpoch / 1000),
29
- nanoseconds: Math.floor((msSinceEpoch % 1000) * 1000000),
30
- };
31
- }
32
- exports.timestampFromUnixMillis = timestampFromUnixMillis;
33
- function nowTimestamp() {
34
- // TODO: #9 is there a way to use the server time rather than Date.now()?
35
- return timestampFromUnixMillis(Date.now());
36
- }
37
- exports.nowTimestamp = nowTimestamp;
38
- //# sourceMappingURL=Timestamps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Timestamps.js","sourceRoot":"","sources":["../src/Timestamps.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB;;;GAGG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE;IACpC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;CAC5C,CAAC,CAAC;AAGH,SAAgB,iBAAiB,CAAC,SAAwB;IACxD,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;AACzE,CAAC;AAFD,8CAEC;AAED,SAAgB,OAAO,CAAC,WAAW,GAAG,EAAE;IACtC,0EAA0E;IAC1E,OAAO,uBAAuB,CAC5B,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAC/C,CAAC;AACJ,CAAC;AALD,0BAKC;AAED,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,OAAO,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC;AAFD,8CAEC;AAED,SAAgB,uBAAuB,CAAC,YAAoB;IAC1D,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;KACzD,CAAC;AACJ,CAAC;AALD,0DAKC;AAED,SAAgB,YAAY;IAC1B,yEAAyE;IACzE,OAAO,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7C,CAAC;AAHD,oCAGC"}
package/src/Timestamps.ts DELETED
@@ -1,38 +0,0 @@
1
- import { z } from "zod";
2
-
3
- /**
4
- * Timestamp representation used by Firestore: seconds and nanoseconds since the
5
- * epoch.
6
- */
7
- export const timestampSchema = z.object({
8
- seconds: z.number().positive().int(),
9
- nanoseconds: z.number().nonnegative().int(),
10
- });
11
- export type TimestampData = z.infer<typeof timestampSchema>;
12
-
13
- export function dateFromTimestamp(timestamp: TimestampData): Date {
14
- return new Date(timestamp.seconds * 1e3 + timestamp.nanoseconds / 1e6);
15
- }
16
-
17
- export function makeTTL(daysFromNow = 30) {
18
- // TODO: #10 is there a way to use the server time rather than Date.now()?
19
- return timestampFromUnixMillis(
20
- Date.now() + daysFromNow * 24 * 60 * 60 * 1000
21
- );
22
- }
23
-
24
- export function timestampFromDate(date: Date): TimestampData {
25
- return timestampFromUnixMillis(date.getTime());
26
- }
27
-
28
- export function timestampFromUnixMillis(msSinceEpoch: number): TimestampData {
29
- return {
30
- seconds: Math.floor(msSinceEpoch / 1000),
31
- nanoseconds: Math.floor((msSinceEpoch % 1000) * 1000000),
32
- };
33
- }
34
-
35
- export function nowTimestamp() {
36
- // TODO: #9 is there a way to use the server time rather than Date.now()?
37
- return timestampFromUnixMillis(Date.now());
38
- }