@nx-ddd/firestore 19.0.0-preview.9 → 19.1.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 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AASpD,MAAM,cAAc;IAClB,YACqB,MAAmB,EACnB,OAAyB;QADzB,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAAkB;IAC1C,CAAC;IAEL,aAAa,CAAC,GAA0B;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,iCAClC,GAAG,CAAC,IAAI,EAAE,KACb,EAAE,EAAE,GAAG,CAAC,EAAE,KACT,IAAI,CAAC,MAAM,CAAC,CAAC;QAChB,OAAO,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CAAC,MAAS;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,OAAO,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ,CAAC,MAAS;QAChB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,MAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzC,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAWpD,MAAM,eAAe;IACnB,MAAM,CAAC,aAAa,CAAyB,GAA6B,EAAE,MAAmB,EAAE,OAAyB;QACxH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,iCAAK,GAAG,CAAC,IAAI,EAAE,KAAE,EAAE,EAAE,GAAG,CAAC,EAAE,KAAG,MAAM,CAAC,CAAC;QACxE,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,cAAc;IAClB,YACqB,MAAmB,EACnB,OAAyB;QADzB,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAAkB;IAC1C,CAAC;IAEL,aAAa,CAAC,GAA0B;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,iCAC5B,GAAG,CAAC,IAAI,EAAE,KACb,EAAE,EAAE,GAAG,CAAC,EAAE,KACT,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB,CAAC,IAA6B;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,MAAS;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,MAAwB,EACxB,UAA4B,MAAM,CAAC,gBAAgB,CAAC;IAEpD,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAA8B,MAAwB;IACnF,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -10,7 +10,13 @@ export declare const createDecorator: (type: FirestoreFieldType, options?: {
10
10
  childType?: any;
11
11
  }) => (nameOrProps?: {
12
12
  name?: string;
13
- } | string) => (target: any, propName: string) => void, getAnnotations: (target: any) => FirestoreAnnotation[];
13
+ } | string) => (target: any, propName: string) => void, createPropsDecorator: (type: FirestoreFieldType, options?: {
14
+ childType?: any;
15
+ }) => (nameOrProps?: {
16
+ name?: string;
17
+ } | string) => (target: any, propName: string) => void, createClassDecorator: <Props extends {
18
+ name: string;
19
+ }>(type: string) => (nameOrProps: Props | string) => (target: any) => void, getAnnotations: (target: any) => FirestoreAnnotation[];
14
20
  /** @deprecated use getAnnotations */
15
21
  export declare function getFirestoreAnnotations(target: any): FirestoreAnnotation[];
16
22
  export declare const ID: (nameOrProps?: {
@@ -43,35 +49,39 @@ export declare const Array: (childType?: () => any, props?: {
43
49
  export declare const Reference: (nameOrProps?: {
44
50
  name?: string;
45
51
  } | string) => (target: any, propName: string) => void;
46
- export declare class Firestore {
47
- static ID: (nameOrProps?: {
52
+ export declare function getCollection(target: any): string;
53
+ export declare const Firestore: {
54
+ Collection: (nameOrProps: string | {
55
+ name: string;
56
+ }) => (target: any) => void;
57
+ ID: (nameOrProps?: {
48
58
  name?: string;
49
59
  } | string) => (target: any, propName: string) => void;
50
- static String: (nameOrProps?: {
60
+ String: (nameOrProps?: {
51
61
  name?: string;
52
62
  } | string) => (target: any, propName: string) => void;
53
- static Null: (nameOrProps?: {
63
+ Null: (nameOrProps?: {
54
64
  name?: string;
55
65
  } | string) => (target: any, propName: string) => void;
56
- static Geopoint: (nameOrProps?: {
66
+ Geopoint: (nameOrProps?: {
57
67
  name?: string;
58
68
  } | string) => (target: any, propName: string) => void;
59
- static Boolean: (nameOrProps?: {
69
+ Boolean: (nameOrProps?: {
60
70
  name?: string;
61
71
  } | string) => (target: any, propName: string) => void;
62
- static Timestamp: (nameOrProps?: {
72
+ Timestamp: (nameOrProps?: {
63
73
  name?: string;
64
74
  } | string) => (target: any, propName: string) => void;
65
- static Number: (nameOrProps?: {
75
+ Number: (nameOrProps?: {
66
76
  name?: string;
67
77
  } | string) => (target: any, propName: string) => void;
68
- static Map: (childType?: () => any, props?: {
78
+ Map: (childType?: () => any, props?: {
69
79
  name?: string;
70
80
  }) => (target: any, propName: string) => void;
71
- static Array: (childType?: () => any, props?: {
81
+ Array: (childType?: () => any, props?: {
72
82
  name?: string;
73
83
  }) => (target: any, propName: string) => void;
74
- static Reference: (nameOrProps?: {
84
+ Reference: (nameOrProps?: {
75
85
  name?: string;
76
86
  } | string) => (target: any, propName: string) => void;
77
- }
87
+ };
@@ -1,6 +1,6 @@
1
- import { makeDecoratorFactories } from '@nx-ddd/core/create-decorator';
1
+ import { makeDecoratorFactories } from '@nx-ddd/core';
2
2
  export const FIRESTORE_ANNOTATIONS = 'firestore_annotations';
3
- export const { createDecorator, getAnnotations, } = makeDecoratorFactories((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), FIRESTORE_ANNOTATIONS);
3
+ export const { createDecorator, createPropsDecorator, createClassDecorator, getAnnotations, } = makeDecoratorFactories((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), FIRESTORE_ANNOTATIONS);
4
4
  /** @deprecated use getAnnotations */
5
5
  export function getFirestoreAnnotations(target) {
6
6
  return getAnnotations(target);
@@ -15,16 +15,22 @@ export const Number = createDecorator('number');
15
15
  export const Map = (childType, props) => createDecorator('map', { childType })(props);
16
16
  export const Array = (childType, props) => createDecorator('array', { childType })(props);
17
17
  export const Reference = createDecorator('reference');
18
- export class Firestore {
18
+ export function getCollection(target) {
19
+ const annotations = getAnnotations(target);
20
+ const annotation = annotations.find((annotation) => annotation.type === 'collection');
21
+ return annotation.name;
19
22
  }
20
- Firestore.ID = ID;
21
- Firestore.String = String;
22
- Firestore.Null = Null;
23
- Firestore.Geopoint = Geopoint;
24
- Firestore.Boolean = Boolean;
25
- Firestore.Timestamp = Timestamp;
26
- Firestore.Number = Number;
27
- Firestore.Map = Map;
28
- Firestore.Array = Array;
29
- Firestore.Reference = Reference;
23
+ export const Firestore = {
24
+ Collection: createClassDecorator('collection'),
25
+ ID: ID,
26
+ String: String,
27
+ Null: Null,
28
+ Geopoint: Geopoint,
29
+ Boolean: Boolean,
30
+ Timestamp: Timestamp,
31
+ Number: Number,
32
+ Map: Map,
33
+ Array: Array,
34
+ Reference: Reference,
35
+ };
30
36
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/decorators/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAW7D,MAAM,CAAC,MAAM,EACX,eAAe,EACf,cAAc,GACf,GAAG,sBAAsB,CAKxB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,EACnG,qBAAqB,CACtB,CAAC;AAEF,qCAAqC;AACrC,MAAM,UAAU,uBAAuB,CAAC,MAAW;IACjD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,SAAqB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAqB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AAEtD,MAAM,OAAO,SAAS;;AACb,YAAE,GAAG,EAAE,CAAC;AACR,gBAAM,GAAG,MAAM,CAAC;AAChB,cAAI,GAAG,IAAI,CAAC;AACZ,kBAAQ,GAAG,QAAQ,CAAC;AACpB,iBAAO,GAAG,OAAO,CAAC;AAClB,mBAAS,GAAG,SAAS,CAAC;AACtB,gBAAM,GAAG,MAAM,CAAC;AAChB,aAAG,GAAG,GAAG,CAAC;AACV,eAAK,GAAG,KAAK,CAAC;AACd,mBAAS,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/decorators/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAW7D,MAAM,CAAC,MAAM,EACX,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,GACf,GAAG,sBAAsB,CAKxB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,EACnG,qBAAqB,CACtB,CAAC;AAEF,qCAAqC;AACrC,MAAM,UAAU,uBAAuB,CAAC,MAAW;IACjD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,SAAqB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAqB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,MAAW;IACvC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC3F,OAAQ,UAAkB,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE,oBAAoB,CAAmB,YAAY,CAAC;IAChE,EAAE,EAAE,EAAE;IACN,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-ddd/firestore",
3
- "version": "19.0.0-preview.9",
3
+ "version": "19.1.0",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "homepage": "https://github.com/xx-machina/plaform/tree/main/packages/@nx-ddd/firestore",
@@ -9,21 +9,8 @@
9
9
  "url": "https://github.com/xx-machina/plaform.git"
10
10
  },
11
11
  "peerDependencies": {
12
- "@angular/core": "19.1.4",
13
- "@nx-ddd/common": "19.0.0-preview.9",
14
- "@nx-ddd/core": "19.0.0-preview.9",
15
- "axios": "^1.0.0",
16
- "class-transformer": "^0.5.1",
17
- "class-validator-extended": "^3.2.0",
18
- "dayjs": "1.11.13",
19
- "dexie": "^3.2.6",
20
- "firebase": "^10.7.0",
21
- "firebase-admin": "^12.1.1",
22
- "lodash-es": "^4.17.15",
23
- "reflect-metadata": "^0.1.13",
24
- "rxjs": "^7.0.0",
25
- "tslib": "^2.3.0",
26
- "@angular/compiler": "19.1.4"
12
+ "@nx-ddd/common": "19.1.0",
13
+ "@nx-ddd/core": "19.1.0"
27
14
  },
28
15
  "dependencies": {},
29
16
  "module": "./index.js",
@@ -4,18 +4,18 @@ import { FirestoreDAO } from '@nx-ddd/firestore/dao';
4
4
  import { CollectionLike, DocumentReference } from '@nx-ddd/firestore/interfaces';
5
5
  import { ExtractParams, FirestorePathBuilder } from '@nx-ddd/firestore/path-builder';
6
6
  import { Observable } from 'rxjs';
7
- type ColParam<T extends FirestoreQuery<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
8
- type DocParam<T extends FirestoreQuery<any>> = ColParam<T> & {
7
+ type ColParam<T extends BaseFirestoreQuery<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
8
+ type DocParam<T extends BaseFirestoreQuery<any>> = ColParam<T> & {
9
9
  id: string;
10
10
  };
11
- export declare abstract class FirestoreQuery<Entity extends {
11
+ export declare abstract class BaseFirestoreQuery<Entity extends {
12
12
  id: string;
13
13
  } = any> {
14
- abstract readonly collectionPath: string;
14
+ protected abstract readonly adapter: FirestoreAdapter;
15
15
  protected abstract readonly converter: IFirestoreConverter<Entity>;
16
- protected readonly adapter: FirestoreAdapter<any>;
17
- get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
18
- protected get dao(): FirestoreDAO<Entity, import("@nx-ddd/firestore/interfaces").ToFirestoreData<Entity, import("dayjs").Dayjs>>;
16
+ abstract readonly collectionPath: string;
17
+ protected abstract pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
18
+ protected abstract dao: FirestoreDAO<Entity>;
19
19
  count(paramMap?: ColParam<this>): Promise<number>;
20
20
  changes(params: DocParam<this>): Observable<Entity>;
21
21
  get(paramMap: DocParam<this>): Promise<Entity>;
@@ -24,4 +24,23 @@ export declare abstract class FirestoreQuery<Entity extends {
24
24
  protected getChanges$ByDocument(doc: DocumentReference): Observable<Entity>;
25
25
  protected getListChanges$ByCollectionLike(collection: CollectionLike): Observable<Entity[]>;
26
26
  }
27
+ export declare abstract class FirestoreQuery<Entity extends {
28
+ id: string;
29
+ } = any> extends BaseFirestoreQuery<Entity> {
30
+ protected readonly adapter: FirestoreAdapter<any>;
31
+ abstract readonly collectionPath: string;
32
+ protected abstract readonly converter: IFirestoreConverter<Entity>;
33
+ get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
34
+ protected get dao(): FirestoreDAO<Entity, import("@nx-ddd/firestore/interfaces").ToFirestoreData<Entity, import("dayjs").Dayjs>>;
35
+ }
36
+ export declare function getFirestoreQuery<Entity extends {
37
+ id: string;
38
+ }>(entity: {
39
+ new (): Entity;
40
+ }, adapter?: FirestoreAdapter): BaseFirestoreQuery<Entity>;
41
+ export declare function injectFirestoreQuery<Entity extends {
42
+ id: string;
43
+ }>(entity: {
44
+ new (): Entity;
45
+ }): BaseFirestoreQuery<Entity>;
27
46
  export {};
package/query/v2/query.js CHANGED
@@ -1,19 +1,12 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { inject, Injectable } from '@angular/core';
3
3
  import { FirestoreAdapter } from '@nx-ddd/firestore/adapters';
4
+ import { getConverter } from '@nx-ddd/firestore/converter';
4
5
  import { FirestoreDAO } from '@nx-ddd/firestore/dao';
6
+ import { getCollection } from '@nx-ddd/firestore/decorators/decorators';
5
7
  import { pathBuilderFactory } from '@nx-ddd/firestore/path-builder';
6
8
  import { catchError, lastValueFrom, map, NEVER, of, switchMap, take, tap } from 'rxjs';
7
- let FirestoreQuery = class FirestoreQuery {
8
- constructor() {
9
- this.adapter = inject(FirestoreAdapter);
10
- }
11
- get pathBuilder() {
12
- return pathBuilderFactory(this.collectionPath);
13
- }
14
- get dao() {
15
- return new FirestoreDAO(this.adapter, this.pathBuilder);
16
- }
9
+ export class BaseFirestoreQuery {
17
10
  count(paramMap) {
18
11
  return this.dao.getCollection(paramMap).count();
19
12
  }
@@ -52,9 +45,37 @@ let FirestoreQuery = class FirestoreQuery {
52
45
  return NEVER;
53
46
  }));
54
47
  }
48
+ }
49
+ let FirestoreQuery = class FirestoreQuery extends BaseFirestoreQuery {
50
+ constructor() {
51
+ super(...arguments);
52
+ this.adapter = inject(FirestoreAdapter);
53
+ }
54
+ get pathBuilder() {
55
+ return pathBuilderFactory(this.collectionPath);
56
+ }
57
+ get dao() {
58
+ return new FirestoreDAO(this.adapter, this.pathBuilder);
59
+ }
55
60
  };
56
61
  FirestoreQuery = __decorate([
57
62
  Injectable()
58
63
  ], FirestoreQuery);
59
64
  export { FirestoreQuery };
65
+ export function getFirestoreQuery(entity, adapter = inject(FirestoreAdapter)) {
66
+ class FirestoreQuery extends BaseFirestoreQuery {
67
+ constructor(converter, collectionPath, pathBuilder, adapter, dao) {
68
+ super();
69
+ this.converter = converter;
70
+ this.collectionPath = collectionPath;
71
+ this.pathBuilder = pathBuilder;
72
+ this.adapter = adapter;
73
+ this.dao = dao;
74
+ }
75
+ }
76
+ return new FirestoreQuery(getConverter(entity, adapter), getCollection(entity), pathBuilderFactory(getCollection(entity)), adapter, new FirestoreDAO(adapter, pathBuilderFactory(getCollection(entity))));
77
+ }
78
+ export function injectFirestoreQuery(entity) {
79
+ return getFirestoreQuery(entity, inject(FirestoreAdapter));
80
+ }
60
81
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/query.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,43 @@
1
- import { Repository } from '@nx-ddd/common/domain/repository';
1
+ import { Repository } from '@nx-ddd/common/domain';
2
2
  import { FirestoreAdapter } from '../adapters/base';
3
3
  import { IFirestoreConverter } from '../converter';
4
4
  import { ExtractParams, FirestorePathBuilder } from '../path-builder';
5
5
  import { CollectionReference, CollectionGroup, DocumentReference, DocumentSnapshot } from '../interfaces';
6
- type ColParam<T extends FirestoreRepository<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
7
- type DocParam<T extends FirestoreRepository<any>> = ColParam<T> & {
6
+ import { Observable } from 'rxjs';
7
+ export type ExtractEntity<T extends BaseFirestoreRepository<any, any>> = T extends BaseFirestoreRepository<infer Entity, any> ? Entity : never;
8
+ type ColParam<T extends BaseFirestoreRepository<any, any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
9
+ type DocParam<T extends BaseFirestoreRepository<any, any>, TExtra = {}> = ColParam<T> & {
8
10
  id: string;
9
- };
10
- export declare abstract class FirestoreRepository<Entity extends {
11
+ } & TExtra;
12
+ export declare abstract class BaseFirestoreRepository<Entity extends {
11
13
  id: string;
12
- }> extends Repository<Entity> {
14
+ }, TExtraParams = {}> extends Repository<Entity> {
13
15
  abstract readonly collectionPath: string;
16
+ protected abstract readonly adapter: FirestoreAdapter;
14
17
  protected abstract converter: IFirestoreConverter<Entity>;
15
- get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
16
- protected adapter: FirestoreAdapter<any>;
18
+ abstract readonly pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
17
19
  list(paramMap?: ColParam<this>, query?: any): Promise<Entity[]>;
20
+ listChanges(): Observable<Entity[]>;
18
21
  count(paramMap?: ColParam<this>): Promise<number>;
19
- get(paramMap?: DocParam<this>): Promise<Entity>;
20
- save(entity: DocParam<this> & Entity): Promise<[Entity, boolean]>;
21
- create(entity: DocParam<this> & Entity): Promise<Entity>;
22
- createMany(entities: (DocParam<this> & Entity)[]): Promise<Entity[]>;
23
- update(entity: DocParam<this> & Partial<Entity>): Promise<void>;
24
- delete(paramMap: DocParam<this>): Promise<void>;
25
- bulkWrite(entities: (DocParam<this> & Entity)[], timestamps?: string[]): Promise<void>;
26
- bulkCreate(entities: (DocParam<this> & Entity)[]): Promise<void>;
27
- bulkUpdate(entities: (DocParam<this> & Partial<Entity>)[]): Promise<void>;
28
- bulkDelete(paramMaps: DocParam<this>[]): Promise<void>;
22
+ get(paramMap?: DocParam<this, TExtraParams>): Promise<Entity>;
23
+ save(entity: DocParam<this, TExtraParams> & Entity): Promise<[Entity, boolean]>;
24
+ saveMany(entities: Entity[]): Promise<void>;
25
+ create(entity: DocParam<this, TExtraParams> & Entity): Promise<Entity>;
26
+ createMany(entities: (DocParam<this, TExtraParams> & Entity)[]): Promise<Entity[]>;
27
+ update(entity: DocParam<this, TExtraParams> & Partial<Entity>): Promise<void>;
28
+ updateMany(data: Partial<Entity>[]): Promise<void>;
29
+ delete(paramMap: DocParam<this, TExtraParams>): Promise<void>;
30
+ deleteMany(params: {
31
+ id: string;
32
+ }[]): Promise<number>;
33
+ deleteAll(): Promise<void>;
34
+ bulkWrite(entities: (DocParam<this, TExtraParams> & Entity)[], timestamps?: string[]): Promise<void>;
35
+ bulkCreate(entities: (DocParam<this, TExtraParams> & Entity)[]): Promise<void>;
36
+ bulkUpdate(entities: (DocParam<this, TExtraParams> & Partial<Entity>)[]): Promise<void>;
37
+ bulkDelete(paramMaps: DocParam<this, TExtraParams>[]): Promise<void>;
29
38
  protected collection(paramMap?: Omit<ExtractParams<typeof this.collectionPath>, 'id'>): CollectionReference<object>;
30
39
  protected collectionGroup(): CollectionGroup<object>;
31
- protected doc(paramMap: DocParam<this>): DocumentReference<object>;
40
+ protected doc(paramMap: DocParam<this, TExtraParams>): DocumentReference<object>;
32
41
  protected genId: () => string;
33
42
  protected _list(collection: CollectionReference<object>): Promise<Entity[]>;
34
43
  protected _get(doc: DocumentReference<object>): Promise<Entity>;
@@ -37,9 +46,20 @@ export declare abstract class FirestoreRepository<Entity extends {
37
46
  protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<DocumentSnapshot<object, import("../interfaces").DocumentData>>;
38
47
  protected buildServerTimestampObject(keys?: string[]): {};
39
48
  }
40
- /** @deprecated use FirebaseRepository instaed. */
41
- export declare abstract class BaseFirestoreRepository<Entity extends {
49
+ export declare abstract class FirestoreRepository<Entity extends {
42
50
  id: string;
43
- }> extends FirestoreRepository<Entity> {
51
+ }, TExtraParams = {}> extends BaseFirestoreRepository<Entity, TExtraParams> {
52
+ protected readonly adapter: FirestoreAdapter<any>;
53
+ get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
44
54
  }
55
+ export declare function getFirestoreRepository<Entity extends {
56
+ id: string;
57
+ }, TExtraParams = {}>(entity: {
58
+ new (): Entity;
59
+ }, adapter?: FirestoreAdapter): BaseFirestoreRepository<Entity, TExtraParams>;
60
+ export declare function injectFirestoreRepository<Entity extends {
61
+ id: string;
62
+ }, TExtraParams = {}>(entity: {
63
+ new (): Entity;
64
+ }): BaseFirestoreRepository<Entity, TExtraParams>;
45
65
  export {};
@@ -1,96 +1,133 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
2
  import { inject, Injectable } from '@angular/core';
3
- import { Repository } from '@nx-ddd/common/domain/repository';
4
- import { toObject } from '@nx-ddd/common/utilities/to-object';
5
- import { generateId } from '@nx-ddd/common/utilities';
3
+ import { Repository } from '@nx-ddd/common/domain';
4
+ import { toObject } from '@nx-ddd/common';
5
+ import { generateId } from '@nx-ddd/common';
6
6
  import { FirestoreAdapter } from '../adapters/base';
7
+ import { getConverter } from '../converter';
7
8
  import { pathBuilderFactory } from '../path-builder';
8
- const toPromise = callback => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
9
+ import { getCollection } from '../decorators/decorators';
10
+ const toPromise = callback => new Promise((resolve, reject) => {
9
11
  try {
10
12
  resolve(callback());
11
13
  }
12
14
  catch (error) {
13
15
  reject(error);
14
16
  }
15
- }));
17
+ });
16
18
  function doesExist(doc) {
17
19
  if (typeof doc.exists === 'function') {
18
20
  return doc.exists();
19
21
  }
20
22
  return doc.exists;
21
23
  }
22
- let FirestoreRepository = class FirestoreRepository extends Repository {
24
+ export class BaseFirestoreRepository extends Repository {
23
25
  constructor() {
24
26
  super(...arguments);
25
- // protected adapter: FirestoreAdapter;
26
- this.adapter = inject(FirestoreAdapter);
27
27
  this.genId = () => generateId();
28
28
  }
29
- // protected pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
30
- get pathBuilder() {
31
- return pathBuilderFactory(this.collectionPath);
32
- }
33
29
  list(paramMap_1) {
34
30
  return __awaiter(this, arguments, void 0, function* (paramMap, query = q => q) {
35
31
  const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();
36
32
  return this._list(query(collection));
37
33
  });
38
34
  }
35
+ listChanges() {
36
+ throw new Error('Method not implemented.');
37
+ }
39
38
  count(paramMap) {
40
39
  return __awaiter(this, void 0, void 0, function* () {
41
40
  return this.collection(paramMap).count();
42
41
  });
43
42
  }
44
43
  get(paramMap) {
45
- return this._get(this.doc(paramMap));
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ return this._get(this.doc(paramMap));
46
+ });
46
47
  }
47
48
  save(entity) {
48
- const docRef = this.doc(Object.assign(Object.assign({}, entity), { id: (entity === null || entity === void 0 ? void 0 : entity.id) || this.genId() }));
49
- return this._save(docRef, entity);
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const docRef = this.doc(Object.assign(Object.assign({}, entity), { id: (entity === null || entity === void 0 ? void 0 : entity.id) || this.genId() }));
51
+ return this._save(docRef, entity);
52
+ });
53
+ }
54
+ saveMany(entities) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ return this.bulkWrite(entities);
57
+ });
50
58
  }
51
59
  create(entity) {
52
- const obj = toObject(entity);
53
- const id = (obj === null || obj === void 0 ? void 0 : obj.id) || this.genId();
54
- return toPromise(() => this.doc(Object.assign(Object.assign({}, obj), { id }))).then(doc => this._create(doc, entity));
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ const obj = toObject(entity);
62
+ const id = (obj === null || obj === void 0 ? void 0 : obj.id) || this.genId();
63
+ return toPromise(() => this.doc(Object.assign(Object.assign({}, obj), { id }))).then(doc => this._create(doc, entity));
64
+ });
55
65
  }
56
66
  createMany(entities) {
57
- return Promise.all(entities.map(entity => this.create(entity)));
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ return Promise.all(entities.map(entity => this.create(entity)));
69
+ });
58
70
  }
59
71
  update(entity) {
60
72
  return __awaiter(this, void 0, void 0, function* () {
61
73
  return this.doc(entity).update(this.adapter.flattenForUpdate(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['updatedAt'])))).then(() => { });
62
74
  });
63
75
  }
76
+ updateMany(data) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ return this.bulkUpdate(data);
79
+ });
80
+ }
64
81
  delete(paramMap) {
65
82
  return this.doc(paramMap).delete();
66
83
  }
67
- bulkWrite(entities, timestamps = []) {
68
- return entities.reduce((batch, entity) => {
69
- const doc = this.doc(entity).__ref;
70
- return batch.set(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(timestamps)));
71
- }, this.adapter.batch()).commit();
84
+ deleteMany(params) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ return params.reduce((batch, param) => {
87
+ const doc = this.doc(param).__ref;
88
+ return batch.delete(doc);
89
+ }, this.adapter.batch()).commit().then(() => params.length);
90
+ });
91
+ }
92
+ deleteAll() {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ throw new Error('Method not implemented.');
95
+ });
96
+ }
97
+ bulkWrite(entities_1) {
98
+ return __awaiter(this, arguments, void 0, function* (entities, timestamps = []) {
99
+ return entities.reduce((batch, entity) => {
100
+ const doc = this.doc(entity).__ref;
101
+ return batch.set(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(timestamps)));
102
+ }, this.adapter.batch()).commit();
103
+ });
72
104
  }
73
105
  bulkCreate(entities) {
74
- // TODO(nontangent): add maximum 500 record validation
75
- return entities.reduce((batch, entity) => {
76
- console.debug('batch:', batch);
77
- const doc = this.doc(entity).__ref;
78
- return batch.create(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['createdAt', 'updatedAt'])));
79
- }, this.adapter.batch()).commit();
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ // TODO(nontangent): add maximum 500 record validation
108
+ return entities.reduce((batch, entity) => {
109
+ const doc = this.doc(entity).__ref;
110
+ return batch.create(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['createdAt', 'updatedAt'])));
111
+ }, this.adapter.batch()).commit();
112
+ });
80
113
  }
81
114
  bulkUpdate(entities) {
82
- // TODO(nontangent): add maximum 500 record validation
83
- return entities.reduce((batch, entity) => {
84
- const doc = this.doc(entity).__ref;
85
- return batch.update(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['updatedAt'])));
86
- }, this.adapter.batch()).commit();
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ // TODO(nontangent): add maximum 500 record validation
117
+ return entities.reduce((batch, entity) => {
118
+ const doc = this.doc(entity).__ref;
119
+ return batch.update(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['updatedAt'])));
120
+ }, this.adapter.batch()).commit();
121
+ });
87
122
  }
88
123
  bulkDelete(paramMaps) {
89
- // MEMO(@nontangent): 500件以上の削除は未対応
90
- return paramMaps.reduce((batch, paramMap) => {
91
- const doc = this.doc(paramMap).__ref;
92
- return batch.delete(doc);
93
- }, this.adapter.batch()).commit();
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ // MEMO(@nontangent): 500件以上の削除は未対応
126
+ return paramMaps.reduce((batch, paramMap) => {
127
+ const doc = this.doc(paramMap).__ref;
128
+ return batch.delete(doc);
129
+ }, this.adapter.batch()).commit();
130
+ });
94
131
  }
95
132
  collection(paramMap) {
96
133
  const path = this.pathBuilder.collection(paramMap);
@@ -143,21 +180,39 @@ let FirestoreRepository = class FirestoreRepository extends Repository {
143
180
  });
144
181
  }
145
182
  _set(doc, entity, isUpdate = true) {
183
+ const data = this.converter.toFirestore(entity);
146
184
  return doc.set(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(isUpdate ? ['updatedAt'] : [])), { merge: isUpdate }).then(() => doc.get());
147
185
  }
148
186
  buildServerTimestampObject(keys = ['createdAt', 'updatedAt']) {
149
187
  return keys.reduce((m, k) => (Object.assign(Object.assign({}, m), { [k]: this.adapter.FieldValue.serverTimestamp() })), {});
150
188
  }
189
+ }
190
+ let FirestoreRepository = class FirestoreRepository extends BaseFirestoreRepository {
191
+ constructor() {
192
+ super(...arguments);
193
+ this.adapter = inject(FirestoreAdapter);
194
+ }
195
+ get pathBuilder() {
196
+ return pathBuilderFactory(this.collectionPath);
197
+ }
151
198
  };
152
199
  FirestoreRepository = __decorate([
153
200
  Injectable()
154
201
  ], FirestoreRepository);
155
202
  export { FirestoreRepository };
156
- /** @deprecated use FirebaseRepository instaed. */
157
- let BaseFirestoreRepository = class BaseFirestoreRepository extends FirestoreRepository {
158
- };
159
- BaseFirestoreRepository = __decorate([
160
- Injectable()
161
- ], BaseFirestoreRepository);
162
- export { BaseFirestoreRepository };
203
+ export function getFirestoreRepository(entity, adapter = inject(FirestoreAdapter)) {
204
+ class FirestoreRepository extends BaseFirestoreRepository {
205
+ constructor(converter, collectionPath, pathBuilder, adapter) {
206
+ super();
207
+ this.converter = converter;
208
+ this.collectionPath = collectionPath;
209
+ this.pathBuilder = pathBuilder;
210
+ this.adapter = adapter;
211
+ }
212
+ }
213
+ return new FirestoreRepository(getConverter(entity, adapter), getCollection(entity), pathBuilderFactory(getCollection(entity)), adapter);
214
+ }
215
+ export function injectFirestoreRepository(entity) {
216
+ return getFirestoreRepository(entity, inject(FirestoreAdapter));
217
+ }
163
218
  //# sourceMappingURL=repository.js.map