@ddd-ts/store-firestore 0.0.0-compute-timeout-on-process.8 → 0.0.0-compute-timeout-on-process.10

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.
@@ -0,0 +1,3 @@
1
+ export declare function combine<T>(iterables: AsyncIterable<T>[]): AsyncGenerator<Awaited<T>, void, unknown>;
2
+ export declare function batch<T>(iterator: AsyncIterable<T>, size: number): AsyncGenerator<Awaited<T>[], void, unknown>;
3
+ //# sourceMappingURL=asyncTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncTools.d.ts","sourceRoot":"","sources":["../src/asyncTools.ts"],"names":[],"mappings":"AAAA,wBAAuB,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,6CA0B9D;AAED,wBAAuB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,+CAavE"}
@@ -12,5 +12,4 @@ async function* batch(iterator, size) {
12
12
  }
13
13
 
14
14
  //#endregion
15
- export { batch };
16
- //# sourceMappingURL=asyncTools.mjs.map
15
+ export { batch };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=asyncTools.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncTools.spec.d.ts","sourceRoot":"","sources":["../src/asyncTools.spec.ts"],"names":[],"mappings":""}
@@ -1,12 +1,13 @@
1
- import { FirestoreDataConverter } from "firebase-admin/firestore";
2
-
3
- //#region src/converter.d.ts
4
- declare class DefaultConverter<T extends FirebaseFirestore.DocumentData> implements FirestoreDataConverter<T> {
5
- toFirestore(modelObject: T): FirebaseFirestore.DocumentData;
6
- fromFirestore(snapshot: FirebaseFirestore.QueryDocumentSnapshot): T;
7
- fromFirestoreSnapshot(snapshot: FirebaseFirestore.DocumentSnapshot): T | undefined;
8
- toFirestorePartial(modelObject: Partial<T> | FirebaseFirestore.UpdateData<T>): FirebaseFirestore.UpdateData<T>;
1
+ import { type FirestoreDataConverter } from "firebase-admin/firestore";
2
+ export declare class DefaultConverter<T extends FirebaseFirestore.DocumentData> implements FirestoreDataConverter<T> {
3
+ toFirestore(modelObject: T): FirebaseFirestore.DocumentData;
4
+ fromFirestore(snapshot: FirebaseFirestore.QueryDocumentSnapshot): T;
5
+ fromFirestoreSnapshot(snapshot: FirebaseFirestore.DocumentSnapshot): T | undefined;
6
+ toFirestorePartial(modelObject: Partial<T> | FirebaseFirestore.UpdateData<T>): FirebaseFirestore.UpdateData<T>;
9
7
  }
10
- //#endregion
11
- export { DefaultConverter };
8
+ export declare function toFirestore<T>(obj: T): T;
9
+ /**
10
+ * decode Firebase timestamps into Dates
11
+ */
12
+ export declare function decodeFirebaseTimestamps(obj: FirebaseFirestore.DocumentData): FirebaseFirestore.DocumentData;
12
13
  //# sourceMappingURL=converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"converter.d.ts","names":[],"sources":["../src/converter.ts"],"mappings":";;;cAOa,gBAAA,WAA2B,iBAAA,CAAkB,YAAA,aAC7C,sBAAA,CAAuB,CAAA;EAE3B,WAAA,CAAY,WAAA,EAAa,CAAA,GAAI,iBAAA,CAAkB,YAAA;EAI/C,aAAA,CAAc,QAAA,EAAU,iBAAA,CAAkB,qBAAA,GAAwB,CAAA;EAIlE,qBAAA,CACL,QAAA,EAAU,iBAAA,CAAkB,gBAAA,GAC3B,CAAA;EAQI,kBAAA,CACL,WAAA,EAAa,OAAA,CAAQ,CAAA,IAAK,iBAAA,CAAkB,UAAA,CAAW,CAAA,IACtD,iBAAA,CAAkB,UAAA,CAAW,CAAA;AAAA"}
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,0BAA0B,CAAC;AAElC,qBAAa,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,CAAC,YAAY,CACpE,YAAW,sBAAsB,CAAC,CAAC,CAAC;IAE7B,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,iBAAiB,CAAC,YAAY;IAI3D,aAAa,CAAC,QAAQ,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,CAAC;IAInE,qBAAqB,CAC1B,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,GAC3C,CAAC,GAAG,SAAS;IAQT,kBAAkB,CACvB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,GACxD,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;CAGnC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAmCxC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,iBAAiB,CAAC,YAAY,GAClC,iBAAiB,CAAC,YAAY,CAgChC"}
@@ -1,5 +1,5 @@
1
1
  import "./shape/src/index.mjs";
2
- import { FieldValue, FirestoreDataConverter, Timestamp } from "firebase-admin/firestore";
2
+ import { FieldValue, Timestamp } from "firebase-admin/firestore";
3
3
 
4
4
  //#region src/converter.ts
5
5
  var DefaultConverter = class {
@@ -59,5 +59,4 @@ function decodeFirebaseTimestamps(obj) {
59
59
  }
60
60
 
61
61
  //#endregion
62
- export { DefaultConverter };
63
- //# sourceMappingURL=converter.mjs.map
62
+ export { DefaultConverter };
@@ -1,30 +1,26 @@
1
- import { FirestoreTransaction } from "./firestore.transaction.js";
2
- import { DefaultConverter } from "./converter.js";
3
- import { CollectionReference, DocumentData, QueryDocumentSnapshot } from "firebase-admin/firestore";
4
- import { IIdentifiable, ISerializer, Serialized, Store } from "@ddd-ts/core";
5
-
6
- //#region src/firestore.store.d.ts
7
- declare class FirestoreStore<M extends IIdentifiable, S extends ISerializer<M> = ISerializer<M>> implements Store<M> {
8
- readonly _collection: CollectionReference;
9
- readonly serializer: S;
10
- readonly $name?: string | undefined;
11
- defaultConverter: DefaultConverter<DocumentData>;
12
- constructor(_collection: CollectionReference, serializer: S, $name?: string | undefined);
13
- get firestore(): FirebaseFirestore.Firestore;
14
- get collection(): CollectionReference<Serialized<S>, Serialized<S>>;
15
- executeQuery(query: FirebaseFirestore.Query<any>, trx?: FirestoreTransaction): Promise<M[]>;
16
- streamPages(query: FirebaseFirestore.Query<any>, pageSize: number): AsyncGenerator<QueryDocumentSnapshot<any, DocumentData>, void, unknown>;
17
- streamQuery(query: FirebaseFirestore.Query<any>, pageSize?: number): AsyncIterable<M>;
18
- save(model: M, trx?: FirestoreTransaction): Promise<void>;
19
- saveAll(models: M[], trx?: FirestoreTransaction): Promise<void>;
20
- load(id: M["id"], trx?: FirestoreTransaction): Promise<M | undefined>;
21
- loadAll(transaction?: FirestoreTransaction): Promise<M[]>;
22
- delete(id: M["id"], trx?: FirestoreTransaction): Promise<void>;
23
- loadMany(ids: M["id"][], trx?: FirestoreTransaction): Promise<M[]>;
24
- streamAll(pageSize?: number): AsyncIterable<M>;
25
- countAll(): Promise<number>;
26
- count(query: FirebaseFirestore.Query<DocumentData>): Promise<number>;
1
+ import { CollectionReference, type DocumentData, QueryDocumentSnapshot } from "firebase-admin/firestore";
2
+ import type { Store, ISerializer, IIdentifiable, Serialized } from "@ddd-ts/core";
3
+ import { FirestoreTransaction } from "./firestore.transaction";
4
+ import { DefaultConverter } from "./converter";
5
+ export declare class FirestoreStore<M extends IIdentifiable, S extends ISerializer<M> = ISerializer<M>> implements Store<M> {
6
+ readonly _collection: CollectionReference;
7
+ readonly serializer: S;
8
+ readonly $name?: string | undefined;
9
+ defaultConverter: DefaultConverter<DocumentData>;
10
+ constructor(_collection: CollectionReference, serializer: S, $name?: string | undefined);
11
+ get firestore(): FirebaseFirestore.Firestore;
12
+ get collection(): CollectionReference<Serialized<S>, Serialized<S>>;
13
+ executeQuery(query: FirebaseFirestore.Query<any>, trx?: FirestoreTransaction): Promise<M[]>;
14
+ streamPages(query: FirebaseFirestore.Query<any>, pageSize: number): AsyncGenerator<QueryDocumentSnapshot<any, DocumentData>, void, unknown>;
15
+ streamQuery(query: FirebaseFirestore.Query<any>, pageSize?: number): AsyncIterable<M>;
16
+ save(model: M, trx?: FirestoreTransaction): Promise<void>;
17
+ saveAll(models: M[], trx?: FirestoreTransaction): Promise<void>;
18
+ load(id: M["id"], trx?: FirestoreTransaction): Promise<M | undefined>;
19
+ loadAll(transaction?: FirestoreTransaction): Promise<M[]>;
20
+ delete(id: M["id"], trx?: FirestoreTransaction): Promise<void>;
21
+ loadMany(ids: M["id"][], trx?: FirestoreTransaction): Promise<M[]>;
22
+ streamAll(pageSize?: number): AsyncIterable<M>;
23
+ countAll(): Promise<number>;
24
+ count(query: FirebaseFirestore.Query<DocumentData>): Promise<number>;
27
25
  }
28
- //#endregion
29
- export { FirestoreStore };
30
26
  //# sourceMappingURL=firestore.store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.store.d.ts","names":[],"sources":["../src/firestore.store.ts"],"mappings":";;;;;;cAkBa,cAAA,WACD,aAAA,YACA,WAAA,CAAY,CAAA,IAAK,WAAA,CAAY,CAAA,cAC5B,KAAA,CAAM,CAAA;EAAA,SAIC,WAAA,EAAa,mBAAA;EAAA,SACb,UAAA,EAAY,CAAA;EAAA,SACZ,KAAA;EAJX,gBAAA,EAAgB,gBAAA,CAAA,YAAA;cAEL,WAAA,EAAa,mBAAA,EACb,UAAA,EAAY,CAAA,EACZ,KAAA;EAAA,IAGd,SAAA,CAAA,GAAS,iBAAA,CAAA,SAAA;EAAA,IAIT,UAAA,CAAA,GAGG,mBAAA,CAAoB,UAAA,CAAW,CAAA,GAAI,UAAA,CAAW,CAAA;EAG/C,YAAA,CACJ,KAAA,EAAO,iBAAA,CAAkB,KAAA,OACzB,GAAA,GAAM,oBAAA,GACL,OAAA,CAAQ,CAAA;EAcJ,WAAA,CAAY,KAAA,EAAO,iBAAA,CAAkB,KAAA,OAAY,QAAA,WAAgB,cAAA,CAAA,qBAAA,MAAA,YAAA;EAyBjE,WAAA,CACL,KAAA,EAAO,iBAAA,CAAkB,KAAA,OACzB,QAAA,YACC,aAAA,CAAc,CAAA;EAsBX,IAAA,CAAK,KAAA,EAAO,CAAA,EAAG,GAAA,GAAM,oBAAA,GAAuB,OAAA;EAU5C,OAAA,CAAQ,MAAA,EAAQ,CAAA,IAAK,GAAA,GAAM,oBAAA,GAAuB,OAAA;EAIlD,IAAA,CAAK,EAAA,EAAI,CAAA,QAAS,GAAA,GAAM,oBAAA,GAAuB,OAAA,CAAQ,CAAA;EAgBvD,OAAA,CAAQ,WAAA,GAAc,oBAAA,GAAuB,OAAA,CAAQ,CAAA;EAmBrD,MAAA,CAAO,EAAA,EAAI,CAAA,QAAS,GAAA,GAAM,oBAAA,GAAuB,OAAA;EAQjD,QAAA,CAAS,GAAA,EAAK,CAAA,UAAW,GAAA,GAAM,oBAAA,GAAuB,OAAA,CAAQ,CAAA;EAKpE,SAAA,CAAU,QAAA,YAAoB,aAAA,CAAc,CAAA;EAItC,QAAA,CAAA,GAAQ,OAAA;EAIR,KAAA,CAAM,KAAA,EAAO,iBAAA,CAAkB,KAAA,CAAM,YAAA,IAAa,OAAA;AAAA"}
1
+ {"version":3,"file":"firestore.store.d.ts","sourceRoot":"","sources":["../src/firestore.store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,YAAY,EACjB,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,qBAAa,cAAc,CACzB,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CACzC,YAAW,KAAK,CAAC,CAAC,CAAC;aAID,WAAW,EAAE,mBAAmB;aAChC,UAAU,EAAE,CAAC;aACb,KAAK,CAAC,EAAE,MAAM;IAJzB,gBAAgB,iCAA0B;gBAE/B,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,CAAC,EACb,KAAK,CAAC,EAAE,MAAM,YAAA;IAGhC,IAAI,SAAS,gCAEZ;IAED,IAAI,UAAU,IAGP,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CACvD;IAEK,YAAY,CAChB,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EACnC,GAAG,CAAC,EAAE,oBAAoB,GACzB,OAAO,CAAC,CAAC,EAAE,CAAC;IAcR,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM;IAyBjE,WAAW,CAChB,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EACnC,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,CAAC,CAAC,CAAC;IAsBb,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzD,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAgBrE,OAAO,CAAC,WAAW,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAmBzD,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9D,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAKxE,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC;IAIxC,QAAQ;IAIR,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;CAGzD"}
@@ -2,7 +2,6 @@ require('./firestore.transaction.js');
2
2
  const require_asyncTools = require('./asyncTools.js');
3
3
  const require_converter = require('./converter.js');
4
4
  let firebase_admin_firestore = require("firebase-admin/firestore");
5
- let _ddd_ts_core = require("@ddd-ts/core");
6
5
 
7
6
  //#region src/firestore.store.ts
8
7
  var FirestoreStore = class {
@@ -1,8 +1,7 @@
1
1
  import "./firestore.transaction.mjs";
2
2
  import { batch } from "./asyncTools.mjs";
3
3
  import { DefaultConverter } from "./converter.mjs";
4
- import { CollectionReference, DocumentData, QueryDocumentSnapshot } from "firebase-admin/firestore";
5
- import { ISerializer, Serialized, Store } from "@ddd-ts/core";
4
+ import "firebase-admin/firestore";
6
5
 
7
6
  //#region src/firestore.store.ts
8
7
  var FirestoreStore = class {
@@ -98,5 +97,4 @@ var FirestoreStore = class {
98
97
  };
99
98
 
100
99
  //#endregion
101
- export { FirestoreStore };
102
- //# sourceMappingURL=firestore.store.mjs.map
100
+ export { FirestoreStore };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=firestore.store.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.store.spec.d.ts","sourceRoot":"","sources":["../src/firestore.store.spec.ts"],"names":[],"mappings":""}
@@ -1,19 +1,15 @@
1
- import { Firestore, Transaction } from "firebase-admin/firestore";
2
- import { CommitListener, Transaction as Transaction$1, TransactionPerformer } from "@ddd-ts/core";
3
-
4
- //#region src/firestore.transaction.d.ts
5
- declare class FirestoreTransaction implements Transaction$1 {
6
- readonly transaction: Transaction;
7
- commitListeners: CommitListener[];
8
- constructor(transaction: Transaction);
9
- counter: number;
10
- increment(): number;
11
- onCommit(callback: CommitListener): void;
12
- executeCommitListeners(): Promise<void>;
1
+ import type { Firestore, Transaction as FirebaseTransaction } from "firebase-admin/firestore";
2
+ import { TransactionPerformer, type Transaction, type CommitListener } from "@ddd-ts/core";
3
+ export declare class FirestoreTransaction implements Transaction {
4
+ readonly transaction: FirebaseTransaction;
5
+ commitListeners: CommitListener[];
6
+ constructor(transaction: FirebaseTransaction);
7
+ counter: number;
8
+ increment(): number;
9
+ onCommit(callback: CommitListener): void;
10
+ executeCommitListeners(): Promise<void>;
13
11
  }
14
- declare class FirestoreTransactionPerformer extends TransactionPerformer<FirestoreTransaction> {
15
- constructor(db: Firestore);
12
+ export declare class FirestoreTransactionPerformer extends TransactionPerformer<FirestoreTransaction> {
13
+ constructor(db: Firestore);
16
14
  }
17
- //#endregion
18
- export { FirestoreTransaction, FirestoreTransactionPerformer };
19
15
  //# sourceMappingURL=firestore.transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.transaction.d.ts","names":[],"sources":["../src/firestore.transaction.ts"],"mappings":";;;;cAUa,oBAAA,YAAgC,aAAA;EAAA,SAEf,WAAA,EAAa,WAAA;EADzC,eAAA,EAAiB,cAAA;cACW,WAAA,EAAa,WAAA;EAEzC,OAAA;EAEA,SAAA,CAAA;EAKA,QAAA,CAAS,QAAA,EAAU,cAAA;EAIb,sBAAA,CAAA,GAAsB,OAAA;AAAA;AAAA,cAKjB,6BAAA,SAAsC,oBAAA,CAAqB,oBAAA;cAC1D,EAAA,EAAI,SAAA;AAAA"}
1
+ {"version":3,"file":"firestore.transaction.d.ts","sourceRoot":"","sources":["../src/firestore.transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,IAAI,mBAAmB,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAEtB,qBAAa,oBAAqB,YAAW,WAAW;aAE1B,WAAW,EAAE,mBAAmB;IAD5D,eAAe,EAAE,cAAc,EAAE,CAAM;gBACX,WAAW,EAAE,mBAAmB;IAE5D,OAAO,SAAM;IAEb,SAAS;IAKT,QAAQ,CAAC,QAAQ,EAAE,cAAc;IAI3B,sBAAsB;CAG7B;AAED,qBAAa,6BAA8B,SAAQ,oBAAoB,CAAC,oBAAoB,CAAC;gBAC/E,EAAE,EAAE,SAAS;CAK1B"}
@@ -25,5 +25,4 @@ var FirestoreTransactionPerformer = class extends TransactionPerformer {
25
25
  };
26
26
 
27
27
  //#endregion
28
- export { FirestoreTransaction, FirestoreTransactionPerformer };
29
- //# sourceMappingURL=firestore.transaction.mjs.map
28
+ export { FirestoreTransaction, FirestoreTransactionPerformer };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { FirestoreTransaction, FirestoreTransactionPerformer } from "./firestore.transaction.js";
2
- import { DefaultConverter } from "./converter.js";
3
- import { FirestoreStore } from "./firestore.store.js";
4
- export { DefaultConverter, FirestoreStore, FirestoreTransaction, FirestoreTransactionPerformer };
1
+ export { FirestoreStore } from "./firestore.store";
2
+ export { FirestoreTransactionPerformer, FirestoreTransaction, } from "./firestore.transaction";
3
+ export { DefaultConverter } from "./converter";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -58,5 +58,4 @@ var MicrosecondTimestamp = class MicrosecondTimestamp {
58
58
  };
59
59
 
60
60
  //#endregion
61
- export { MicrosecondTimestamp };
62
- //# sourceMappingURL=microsecond-timestamp.mjs.map
61
+ export { MicrosecondTimestamp };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-ts/store-firestore",
3
- "version": "0.0.0-compute-timeout-on-process.8",
3
+ "version": "0.0.0-compute-timeout-on-process.10",
4
4
  "types": "dist/index.d.ts",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,24 +10,24 @@
10
10
  "dist"
11
11
  ],
12
12
  "dependencies": {
13
- "@ddd-ts/core": "0.0.0-compute-timeout-on-process.8",
13
+ "@ddd-ts/core": "0.0.0-compute-timeout-on-process.10",
14
14
  "firebase-admin": "^13.2.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@ddd-ts/shape": "0.0.0-compute-timeout-on-process.8",
18
- "@ddd-ts/tools": "0.0.0-compute-timeout-on-process.8",
19
- "@ddd-ts/types": "0.0.0-compute-timeout-on-process.8",
17
+ "@ddd-ts/shape": "0.0.0-compute-timeout-on-process.10",
18
+ "@ddd-ts/tools": "0.0.0-compute-timeout-on-process.10",
19
+ "@ddd-ts/types": "0.0.0-compute-timeout-on-process.10",
20
20
  "@types/jest": "^29.5.1"
21
21
  },
22
22
  "exports": {
23
23
  ".": {
24
- "default": "./dist/index.js",
25
24
  "import": "./dist/index.mjs",
26
- "require": "./dist/index.js",
27
- "types": "./dist/index.d.ts"
25
+ "require": "./dist/index.js"
28
26
  },
29
27
  "./package.json": "./package.json"
30
28
  },
29
+ "main": "./dist/index.js",
30
+ "module": "./dist/index.mjs",
31
31
  "scripts": {
32
32
  "build": "tsdown --config node_modules/@ddd-ts/tools/tsdown.config.js"
33
33
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"asyncTools.mjs","names":[],"sources":["../src/asyncTools.ts"],"sourcesContent":["export async function* combine<T>(iterables: AsyncIterable<T>[]) {\n function getNext(asyncIterator: AsyncIterator<T>) {\n return asyncIterator.next().then((result) => ({\n asyncIterator,\n result,\n }));\n }\n\n const asyncIterators = new Map(iterables.map((iterable) => {\n const iterator = iterable[Symbol.asyncIterator]();\n return [iterator, getNext(iterator)]\n }));\n\n while (asyncIterators.size > 0) {\n const { asyncIterator, result } = await Promise.race(asyncIterators.values());\n\n if (result.done) {\n if (asyncIterator.return) {\n asyncIterator.return().catch(console.error);\n }\n asyncIterators.delete(asyncIterator)\n } else {\n asyncIterators.set(asyncIterator, getNext(asyncIterator));\n yield result.value;\n }\n }\n}\n\nexport async function* batch<T>(iterator: AsyncIterable<T>, size: number) {\n let batch = [];\n\n for await (const item of iterator) {\n batch.push(item);\n if (batch.length === size) {\n yield batch;\n batch = [];\n }\n }\n if (batch.length > 0) {\n yield batch;\n }\n}\n"],"mappings":";AA4BA,gBAAuB,MAAS,UAA4B,MAAc;CACxE,IAAI,QAAQ,EAAE;AAEd,YAAW,MAAM,QAAQ,UAAU;AACjC,QAAM,KAAK,KAAK;AAChB,MAAI,MAAM,WAAW,MAAM;AACzB,SAAM;AACN,WAAQ,EAAE;;;AAGd,KAAI,MAAM,SAAS,EACjB,OAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter.mjs","names":[],"sources":["../src/converter.ts"],"sourcesContent":["import { MicrosecondTimestamp } from \"@ddd-ts/shape\";\nimport {\n FieldValue,\n FirestoreDataConverter,\n Timestamp,\n} from \"firebase-admin/firestore\";\n\nexport class DefaultConverter<T extends FirebaseFirestore.DocumentData>\n implements FirestoreDataConverter<T>\n{\n public toFirestore(modelObject: T): FirebaseFirestore.DocumentData {\n return toFirestore(modelObject) as FirebaseFirestore.DocumentData;\n }\n\n public fromFirestore(snapshot: FirebaseFirestore.QueryDocumentSnapshot): T {\n return decodeFirebaseTimestamps(snapshot.data()) as T;\n }\n\n public fromFirestoreSnapshot(\n snapshot: FirebaseFirestore.DocumentSnapshot,\n ): T | undefined {\n const data = snapshot.data();\n if (!data) {\n return undefined;\n }\n return decodeFirebaseTimestamps(data) as T;\n }\n\n public toFirestorePartial(\n modelObject: Partial<T> | FirebaseFirestore.UpdateData<T>,\n ): FirebaseFirestore.UpdateData<T> {\n return toFirestore(modelObject) as any;\n }\n}\n\nexport function toFirestore<T>(obj: T): T {\n if (obj instanceof Date) {\n if (\n \"microseconds\" in obj &&\n typeof (obj as any).microseconds === \"bigint\"\n ) {\n const microseconds = (obj as any).microseconds as bigint;\n const seconds = microseconds / 1_000_000n;\n const micros = microseconds % 1_000_000n;\n const nanoseconds = micros * 1000n; // Convert to nanoseconds\n return new Timestamp(\n Number(seconds),\n Number(nanoseconds),\n ) as unknown as T;\n }\n return obj;\n }\n if (obj instanceof FieldValue || obj?.constructor?.name === \"VectorValue\") {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(toFirestore) as unknown as T;\n }\n if (obj instanceof Object) {\n return Object.entries(obj).reduce(\n (map, [key, value]) => {\n if (value !== undefined) {\n map[key] = toFirestore(value);\n }\n return map;\n },\n {} as { [key: string]: any },\n ) as T;\n }\n return obj;\n}\n\n/**\n * decode Firebase timestamps into Dates\n */\nexport function decodeFirebaseTimestamps(\n obj: FirebaseFirestore.DocumentData,\n): FirebaseFirestore.DocumentData {\n if (obj instanceof Date) {\n return obj;\n }\n if (obj?.toDate) {\n const result = obj.toDate();\n\n if (obj?.seconds !== undefined && obj?.nanoseconds !== undefined) {\n const microseconds =\n BigInt(obj.seconds) * BigInt(1_000_000) +\n BigInt(obj.nanoseconds) / BigInt(1_000);\n (result as any).microseconds = microseconds; // Attach microseconds to the date\n return result;\n }\n return result;\n }\n if (obj?.constructor?.name === \"VectorValue\") {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map(decodeFirebaseTimestamps);\n }\n if (obj instanceof Object) {\n return Object.entries(obj).reduce(\n (map, [key, value]) => {\n map[key] = decodeFirebaseTimestamps(value);\n return map;\n },\n {} as { [key: string]: any },\n );\n }\n return obj;\n}\n"],"mappings":";;;;AAOA,IAAa,mBAAb,MAEA;CACE,AAAO,YAAY,aAAgD;AACjE,SAAO,YAAY,YAAY;;CAGjC,AAAO,cAAc,UAAsD;AACzE,SAAO,yBAAyB,SAAS,MAAM,CAAC;;CAGlD,AAAO,sBACL,UACe;EACf,MAAM,OAAO,SAAS,MAAM;AAC5B,MAAI,CAAC,KACH;AAEF,SAAO,yBAAyB,KAAK;;CAGvC,AAAO,mBACL,aACiC;AACjC,SAAO,YAAY,YAAY;;;AAInC,SAAgB,YAAe,KAAW;AACxC,KAAI,eAAe,MAAM;AACvB,MACE,kBAAkB,OAClB,OAAQ,IAAY,iBAAiB,UACrC;GACA,MAAM,eAAgB,IAAY;GAClC,MAAM,UAAU,eAAe;GAE/B,MAAM,cADS,eAAe,WACD;AAC7B,UAAO,IAAI,UACT,OAAO,QAAQ,EACf,OAAO,YAAY,CACpB;;AAEH,SAAO;;AAET,KAAI,eAAe,cAAc,KAAK,aAAa,SAAS,cAC1D,QAAO;AAET,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,IAAI,YAAY;AAE7B,KAAI,eAAe,OACjB,QAAO,OAAO,QAAQ,IAAI,CAAC,QACxB,KAAK,CAAC,KAAK,WAAW;AACrB,MAAI,UAAU,OACZ,KAAI,OAAO,YAAY,MAAM;AAE/B,SAAO;IAET,EAAE,CACH;AAEH,QAAO;;;;;AAMT,SAAgB,yBACd,KACgC;AAChC,KAAI,eAAe,KACjB,QAAO;AAET,KAAI,KAAK,QAAQ;EACf,MAAM,SAAS,IAAI,QAAQ;AAE3B,MAAI,KAAK,YAAY,UAAa,KAAK,gBAAgB,QAAW;AAIhE,GAAC,OAAe,eAFd,OAAO,IAAI,QAAQ,GAAG,OAAO,IAAU,GACvC,OAAO,IAAI,YAAY,GAAG,OAAO,IAAM;AAEzC,UAAO;;AAET,SAAO;;AAET,KAAI,KAAK,aAAa,SAAS,cAC7B,QAAO;AAET,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,IAAI,yBAAyB;AAE1C,KAAI,eAAe,OACjB,QAAO,OAAO,QAAQ,IAAI,CAAC,QACxB,KAAK,CAAC,KAAK,WAAW;AACrB,MAAI,OAAO,yBAAyB,MAAM;AAC1C,SAAO;IAET,EAAE,CACH;AAEH,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"firestore.store.mjs","names":[],"sources":["../src/firestore.store.ts"],"sourcesContent":["import {\n CollectionReference,\n DocumentData,\n QueryDocumentSnapshot,\n DocumentSnapshot,\n} from \"firebase-admin/firestore\";\n\nimport {\n Store,\n ISerializer,\n type IIdentifiable,\n Serialized,\n} from \"@ddd-ts/core\";\n\nimport { FirestoreTransaction } from \"./firestore.transaction\";\nimport { batch } from \"./asyncTools\";\nimport { DefaultConverter } from \"./converter\";\n\nexport class FirestoreStore<\n M extends IIdentifiable,\n S extends ISerializer<M> = ISerializer<M>,\n> implements Store<M>\n{\n public defaultConverter = new DefaultConverter();\n constructor(\n public readonly _collection: CollectionReference,\n public readonly serializer: S,\n public readonly $name?: string,\n ) {}\n\n get firestore() {\n return this._collection.firestore;\n }\n\n get collection() {\n return this._collection.withConverter(\n this.defaultConverter,\n ) as CollectionReference<Serialized<S>, Serialized<S>>;\n }\n\n async executeQuery(\n query: FirebaseFirestore.Query<any>,\n trx?: FirestoreTransaction,\n ): Promise<M[]> {\n const result = trx ? await trx.transaction.get(query) : await query.get();\n\n return Promise.all(\n result.docs.map((doc) =>\n this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n id: doc.id,\n ...doc.data(),\n }),\n ),\n );\n }\n\n async *streamPages(query: FirebaseFirestore.Query<any>, pageSize: number) {\n let last: DocumentSnapshot | undefined;\n let nextPagePromise:\n | Promise<FirebaseFirestore.QuerySnapshot<any>>\n | undefined;\n\n function getNextPagePromise(cursor: DocumentSnapshot | undefined) {\n return cursor\n ? query.limit(pageSize).startAfter(cursor).get()\n : query.limit(pageSize).get();\n }\n\n do {\n const paginatedQuery = nextPagePromise ?? getNextPagePromise(last);\n const { docs } = await paginatedQuery;\n last = docs[pageSize - 1];\n if (last) {\n nextPagePromise = getNextPagePromise(last);\n }\n for (const doc of docs) {\n yield doc;\n }\n } while (last);\n }\n\n async *streamQuery(\n query: FirebaseFirestore.Query<any>,\n pageSize?: number,\n ): AsyncIterable<M> {\n const finalPageSize = pageSize ?? 50;\n const stream =\n finalPageSize === 1\n ? (query.stream() as AsyncIterable<QueryDocumentSnapshot>)\n : this.streamPages(query, finalPageSize);\n for await (const docs of batch(stream, finalPageSize)) {\n const deserializedDocs = await Promise.all(\n docs.map((doc) =>\n this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n id: doc.id,\n ...(doc.data() as any),\n }),\n ),\n );\n for (const deserializedDoc of deserializedDocs) {\n yield deserializedDoc;\n }\n }\n }\n\n async save(model: M, trx?: FirestoreTransaction): Promise<void> {\n const serialized = await this.serializer.serialize(model);\n\n const ref = this.collection.doc(model.id.serialize());\n\n trx\n ? trx.transaction.set(ref, serialized)\n : await ref.set(serialized as any);\n }\n\n async saveAll(models: M[], trx?: FirestoreTransaction): Promise<void> {\n await Promise.all(models.map((m) => this.save(m, trx)));\n }\n\n async load(id: M[\"id\"], trx?: FirestoreTransaction): Promise<M | undefined> {\n const ref = this.collection.doc(id.serialize());\n\n const snapshot = trx ? await trx.transaction.get(ref) : await ref.get();\n\n if (!snapshot.exists) {\n return undefined;\n }\n\n return this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n id: id.serialize(),\n ...snapshot.data(),\n });\n }\n\n async loadAll(transaction?: FirestoreTransaction): Promise<M[]> {\n let docs: DocumentSnapshot[];\n\n if (transaction) {\n docs = await transaction.transaction.getAll();\n } else {\n ({ docs } = await this.collection.get());\n }\n return Promise.all(\n docs.map((doc) =>\n this.serializer.deserialize({\n ...(this.$name ? { $name: this.$name } : {}),\n id: doc.id,\n ...doc.data(),\n }),\n ),\n );\n }\n\n async delete(id: M[\"id\"], trx?: FirestoreTransaction): Promise<void> {\n if (trx) {\n trx.transaction.delete(this.collection.doc(id.serialize()));\n } else {\n await this.collection.doc(id.serialize()).delete();\n }\n }\n\n async loadMany(ids: M[\"id\"][], trx?: FirestoreTransaction): Promise<M[]> {\n const result = await Promise.all(ids.map((id) => this.load(id, trx)));\n return result.filter((m) => m !== undefined) as M[];\n }\n\n streamAll(pageSize?: number): AsyncIterable<M> {\n return this.streamQuery(this.collection, pageSize);\n }\n\n async countAll() {\n return (await this.collection.count().get()).data().count;\n }\n\n async count(query: FirebaseFirestore.Query<DocumentData>) {\n return (await query.count().get()).data().count;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"firestore.transaction.mjs","names":[],"sources":["../src/firestore.transaction.ts"],"sourcesContent":["import type {\n Firestore,\n Transaction as FirebaseTransaction,\n} from \"firebase-admin/firestore\";\nimport {\n TransactionPerformer,\n type Transaction,\n type CommitListener,\n} from \"@ddd-ts/core\";\n\nexport class FirestoreTransaction implements Transaction {\n commitListeners: CommitListener[] = [];\n constructor(public readonly transaction: FirebaseTransaction) {}\n\n counter = -1;\n\n increment() {\n this.counter++;\n return this.counter;\n }\n\n onCommit(callback: CommitListener) {\n this.commitListeners.push(callback);\n }\n\n async executeCommitListeners() {\n await Promise.all(this.commitListeners.map((cb) => cb()));\n }\n}\n\nexport class FirestoreTransactionPerformer extends TransactionPerformer<FirestoreTransaction> {\n constructor(db: Firestore) {\n super((effect) =>\n db.runTransaction((trx) => effect(new FirestoreTransaction(trx))),\n );\n }\n}\n"],"mappings":";;;AAUA,IAAa,uBAAb,MAAyD;CACvD,kBAAoC,EAAE;CACtC,YAAY,AAAgB,aAAkC;EAAlC;;CAE5B,UAAU;CAEV,YAAY;AACV,OAAK;AACL,SAAO,KAAK;;CAGd,SAAS,UAA0B;AACjC,OAAK,gBAAgB,KAAK,SAAS;;CAGrC,MAAM,yBAAyB;AAC7B,QAAM,QAAQ,IAAI,KAAK,gBAAgB,KAAK,OAAO,IAAI,CAAC,CAAC;;;AAI7D,IAAa,gCAAb,cAAmD,qBAA2C;CAC5F,YAAY,IAAe;AACzB,SAAO,WACL,GAAG,gBAAgB,QAAQ,OAAO,IAAI,qBAAqB,IAAI,CAAC,CAAC,CAClE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"microsecond-timestamp.mjs","names":[],"sources":["../../../../../shape/src/addons/microsecond-timestamp.ts"],"sourcesContent":["export class MicrosecondTimestamp {\n static MILLISECOND = new MicrosecondTimestamp(BigInt(1_000));\n static SECOND = this.MILLISECOND.mult(1000);\n static MINUTE = this.SECOND.mult(60);\n static HOUR = this.MINUTE.mult(60);\n static DAY = this.HOUR.mult(24);\n static WEEK = this.DAY.mult(7);\n static MONTH = this.DAY.mult(30);\n\n constructor(readonly micros: bigint) {}\n\n isAfter(other: MicrosecondTimestamp): boolean {\n return this.micros > other.micros;\n }\n\n equals(other: MicrosecondTimestamp): boolean {\n return this.micros === other.micros;\n }\n\n isBefore(other: MicrosecondTimestamp): boolean {\n return this.micros < other.micros;\n }\n\n add(micros: bigint | MicrosecondTimestamp): MicrosecondTimestamp {\n const value =\n micros instanceof MicrosecondTimestamp ? micros.micros : micros;\n return new MicrosecondTimestamp(this.micros + value);\n }\n\n sub(micros: bigint | MicrosecondTimestamp): MicrosecondTimestamp {\n const value =\n micros instanceof MicrosecondTimestamp ? micros.micros : micros;\n return new MicrosecondTimestamp(this.micros - value);\n }\n\n mult(factor: number): MicrosecondTimestamp {\n return new MicrosecondTimestamp(this.micros * BigInt(factor));\n }\n\n static now(): MicrosecondTimestamp {\n return new MicrosecondTimestamp(BigInt(Date.now()) * BigInt(1000));\n }\n\n static fromNanoseconds(nanoseconds: bigint): MicrosecondTimestamp {\n return new MicrosecondTimestamp(nanoseconds / BigInt(1000));\n }\n\n static fromMicroseconds(microseconds: bigint): MicrosecondTimestamp {\n return new MicrosecondTimestamp(microseconds);\n }\n\n static deserialize(\n serialized: Date | MicrosecondTimestamp | bigint,\n ): MicrosecondTimestamp {\n if (serialized instanceof MicrosecondTimestamp) {\n return serialized;\n }\n if (typeof serialized === \"bigint\") {\n return new MicrosecondTimestamp(serialized);\n }\n\n if (\n \"microseconds\" in serialized &&\n typeof serialized.microseconds === \"bigint\"\n ) {\n return new MicrosecondTimestamp(serialized.microseconds);\n }\n\n const micros = BigInt(serialized.getTime()) * BigInt(1000);\n return new MicrosecondTimestamp(micros);\n }\n\n serialize() {\n const date = new Date(Number(this.micros / BigInt(1000)));\n (date as any).microseconds = this.micros;\n return date;\n }\n\n static sort(left: MicrosecondTimestamp, right: MicrosecondTimestamp): number {\n if (left.isAfter(right)) {\n return 1;\n }\n if (left.isBefore(right)) {\n return -1;\n }\n return 0;\n }\n}\n"],"mappings":";AAAA,IAAa,uBAAb,MAAa,qBAAqB;CAChC,OAAO,cAAc,IAAI,qBAAqB,OAAO,IAAM,CAAC;CAC5D,OAAO,SAAS,KAAK,YAAY,KAAK,IAAK;CAC3C,OAAO,SAAS,KAAK,OAAO,KAAK,GAAG;CACpC,OAAO,OAAO,KAAK,OAAO,KAAK,GAAG;CAClC,OAAO,MAAM,KAAK,KAAK,KAAK,GAAG;CAC/B,OAAO,OAAO,KAAK,IAAI,KAAK,EAAE;CAC9B,OAAO,QAAQ,KAAK,IAAI,KAAK,GAAG;CAEhC,YAAY,AAAS,QAAgB;EAAhB;;CAErB,QAAQ,OAAsC;AAC5C,SAAO,KAAK,SAAS,MAAM;;CAG7B,OAAO,OAAsC;AAC3C,SAAO,KAAK,WAAW,MAAM;;CAG/B,SAAS,OAAsC;AAC7C,SAAO,KAAK,SAAS,MAAM;;CAG7B,IAAI,QAA6D;EAC/D,MAAM,QACJ,kBAAkB,uBAAuB,OAAO,SAAS;AAC3D,SAAO,IAAI,qBAAqB,KAAK,SAAS,MAAM;;CAGtD,IAAI,QAA6D;EAC/D,MAAM,QACJ,kBAAkB,uBAAuB,OAAO,SAAS;AAC3D,SAAO,IAAI,qBAAqB,KAAK,SAAS,MAAM;;CAGtD,KAAK,QAAsC;AACzC,SAAO,IAAI,qBAAqB,KAAK,SAAS,OAAO,OAAO,CAAC;;CAG/D,OAAO,MAA4B;AACjC,SAAO,IAAI,qBAAqB,OAAO,KAAK,KAAK,CAAC,GAAG,OAAO,IAAK,CAAC;;CAGpE,OAAO,gBAAgB,aAA2C;AAChE,SAAO,IAAI,qBAAqB,cAAc,OAAO,IAAK,CAAC;;CAG7D,OAAO,iBAAiB,cAA4C;AAClE,SAAO,IAAI,qBAAqB,aAAa;;CAG/C,OAAO,YACL,YACsB;AACtB,MAAI,sBAAsB,qBACxB,QAAO;AAET,MAAI,OAAO,eAAe,SACxB,QAAO,IAAI,qBAAqB,WAAW;AAG7C,MACE,kBAAkB,cAClB,OAAO,WAAW,iBAAiB,SAEnC,QAAO,IAAI,qBAAqB,WAAW,aAAa;AAI1D,SAAO,IAAI,qBADI,OAAO,WAAW,SAAS,CAAC,GAAG,OAAO,IAAK,CACnB;;CAGzC,YAAY;EACV,MAAM,OAAO,IAAI,KAAK,OAAO,KAAK,SAAS,OAAO,IAAK,CAAC,CAAC;AACzD,EAAC,KAAa,eAAe,KAAK;AAClC,SAAO;;CAGT,OAAO,KAAK,MAA4B,OAAqC;AAC3E,MAAI,KAAK,QAAQ,MAAM,CACrB,QAAO;AAET,MAAI,KAAK,SAAS,MAAM,CACtB,QAAO;AAET,SAAO"}