@nx-ddd/firestore 19.2.0 → 19.3.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.
Files changed (93) hide show
  1. package/adapters/admin/index.d.ts +40 -1
  2. package/adapters/firebase/index.d.ts +35 -1
  3. package/{adapters/admin/admin.adapter.js → fesm2022/nx-ddd-firestore-adapters-admin.mjs} +21 -13
  4. package/fesm2022/nx-ddd-firestore-adapters-admin.mjs.map +1 -0
  5. package/{adapters/firebase/firebase.adapter.js → fesm2022/nx-ddd-firestore-adapters-firebase.mjs} +20 -13
  6. package/fesm2022/nx-ddd-firestore-adapters-firebase.mjs.map +1 -0
  7. package/fesm2022/nx-ddd-firestore.mjs +796 -0
  8. package/fesm2022/nx-ddd-firestore.mjs.map +1 -0
  9. package/index.d.ts +424 -7
  10. package/package.json +26 -6
  11. package/README.md +0 -172
  12. package/adapters/admin/admin.adapter.d.ts +0 -36
  13. package/adapters/admin/admin.adapter.js.map +0 -1
  14. package/adapters/admin/index.js +0 -2
  15. package/adapters/admin/index.js.map +0 -1
  16. package/adapters/base/base.adapter.d.ts +0 -35
  17. package/adapters/base/base.adapter.js +0 -189
  18. package/adapters/base/base.adapter.js.map +0 -1
  19. package/adapters/base/index.d.ts +0 -1
  20. package/adapters/base/index.js +0 -2
  21. package/adapters/base/index.js.map +0 -1
  22. package/adapters/dayjs/dayjs.adatper.d.ts +0 -15
  23. package/adapters/dayjs/dayjs.adatper.js +0 -44
  24. package/adapters/dayjs/dayjs.adatper.js.map +0 -1
  25. package/adapters/dayjs/index.d.ts +0 -1
  26. package/adapters/dayjs/index.js +0 -2
  27. package/adapters/dayjs/index.js.map +0 -1
  28. package/adapters/firebase/firebase.adapter.d.ts +0 -32
  29. package/adapters/firebase/firebase.adapter.js.map +0 -1
  30. package/adapters/firebase/index.js +0 -2
  31. package/adapters/firebase/index.js.map +0 -1
  32. package/adapters/index.d.ts +0 -1
  33. package/adapters/index.js +0 -2
  34. package/adapters/index.js.map +0 -1
  35. package/converter/converter.d.ts +0 -17
  36. package/converter/converter.js +0 -31
  37. package/converter/converter.js.map +0 -1
  38. package/converter/index.d.ts +0 -1
  39. package/converter/index.js +0 -2
  40. package/converter/index.js.map +0 -1
  41. package/dao/firestore.dao.d.ts +0 -17
  42. package/dao/firestore.dao.js +0 -22
  43. package/dao/firestore.dao.js.map +0 -1
  44. package/dao/index.d.ts +0 -1
  45. package/dao/index.js +0 -2
  46. package/dao/index.js.map +0 -1
  47. package/decorators/decorators.d.ts +0 -87
  48. package/decorators/decorators.js +0 -36
  49. package/decorators/decorators.js.map +0 -1
  50. package/decorators/index.d.ts +0 -1
  51. package/decorators/index.js +0 -2
  52. package/decorators/index.js.map +0 -1
  53. package/index.js +0 -8
  54. package/index.js.map +0 -1
  55. package/interfaces/index.d.ts +0 -1
  56. package/interfaces/index.js +0 -2
  57. package/interfaces/index.js.map +0 -1
  58. package/interfaces/interfaces.d.ts +0 -63
  59. package/interfaces/interfaces.js +0 -2
  60. package/interfaces/interfaces.js.map +0 -1
  61. package/path-builder/index.d.ts +0 -1
  62. package/path-builder/index.js +0 -2
  63. package/path-builder/index.js.map +0 -1
  64. package/path-builder/path-builder.d.ts +0 -34
  65. package/path-builder/path-builder.js +0 -33
  66. package/path-builder/path-builder.js.map +0 -1
  67. package/query/firestore.query.d.ts +0 -33
  68. package/query/firestore.query.js +0 -75
  69. package/query/firestore.query.js.map +0 -1
  70. package/query/index.d.ts +0 -1
  71. package/query/index.js +0 -2
  72. package/query/index.js.map +0 -1
  73. package/query/v2/cached-query.d.ts +0 -58
  74. package/query/v2/cached-query.js +0 -102
  75. package/query/v2/cached-query.js.map +0 -1
  76. package/query/v2/index.d.ts +0 -2
  77. package/query/v2/index.js +0 -3
  78. package/query/v2/index.js.map +0 -1
  79. package/query/v2/query.d.ts +0 -46
  80. package/query/v2/query.js +0 -81
  81. package/query/v2/query.js.map +0 -1
  82. package/repository/index.d.ts +0 -1
  83. package/repository/index.js +0 -2
  84. package/repository/index.js.map +0 -1
  85. package/repository/repository.d.ts +0 -65
  86. package/repository/repository.js +0 -218
  87. package/repository/repository.js.map +0 -1
  88. package/testing/common.d.ts +0 -7
  89. package/testing/common.js +0 -19
  90. package/testing/common.js.map +0 -1
  91. package/testing/index.d.ts +0 -1
  92. package/testing/index.js +0 -2
  93. package/testing/index.js.map +0 -1
@@ -1,87 +0,0 @@
1
- export declare const FIRESTORE_ANNOTATIONS = "firestore_annotations";
2
- export type FirestoreFieldType = 'id' | 'boolean' | 'number' | 'timestamp' | 'string' | 'geopoint' | 'null' | 'map' | 'array' | 'reference';
3
- export interface FirestoreAnnotation {
4
- type: FirestoreFieldType;
5
- fieldName: string;
6
- propName: string;
7
- childType: any;
8
- }
9
- export declare const createDecorator: (type: FirestoreFieldType, options?: {
10
- childType?: any;
11
- }) => (nameOrProps?: {
12
- name?: string;
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[];
20
- /** @deprecated use getAnnotations */
21
- export declare function getFirestoreAnnotations(target: any): FirestoreAnnotation[];
22
- export declare const ID: (nameOrProps?: {
23
- name?: string;
24
- } | string) => (target: any, propName: string) => void;
25
- export declare const String: (nameOrProps?: {
26
- name?: string;
27
- } | string) => (target: any, propName: string) => void;
28
- export declare const Null: (nameOrProps?: {
29
- name?: string;
30
- } | string) => (target: any, propName: string) => void;
31
- export declare const Geopoint: (nameOrProps?: {
32
- name?: string;
33
- } | string) => (target: any, propName: string) => void;
34
- export declare const Boolean: (nameOrProps?: {
35
- name?: string;
36
- } | string) => (target: any, propName: string) => void;
37
- export declare const Timestamp: (nameOrProps?: {
38
- name?: string;
39
- } | string) => (target: any, propName: string) => void;
40
- export declare const Number: (nameOrProps?: {
41
- name?: string;
42
- } | string) => (target: any, propName: string) => void;
43
- export declare const Map: (childType?: () => any, props?: {
44
- name?: string;
45
- }) => (target: any, propName: string) => void;
46
- export declare const Array: (childType?: () => any, props?: {
47
- name?: string;
48
- }) => (target: any, propName: string) => void;
49
- export declare const Reference: (nameOrProps?: {
50
- name?: string;
51
- } | string) => (target: any, propName: string) => void;
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?: {
58
- name?: string;
59
- } | string) => (target: any, propName: string) => void;
60
- String: (nameOrProps?: {
61
- name?: string;
62
- } | string) => (target: any, propName: string) => void;
63
- Null: (nameOrProps?: {
64
- name?: string;
65
- } | string) => (target: any, propName: string) => void;
66
- Geopoint: (nameOrProps?: {
67
- name?: string;
68
- } | string) => (target: any, propName: string) => void;
69
- Boolean: (nameOrProps?: {
70
- name?: string;
71
- } | string) => (target: any, propName: string) => void;
72
- Timestamp: (nameOrProps?: {
73
- name?: string;
74
- } | string) => (target: any, propName: string) => void;
75
- Number: (nameOrProps?: {
76
- name?: string;
77
- } | string) => (target: any, propName: string) => void;
78
- Map: (childType?: () => any, props?: {
79
- name?: string;
80
- }) => (target: any, propName: string) => void;
81
- Array: (childType?: () => any, props?: {
82
- name?: string;
83
- }) => (target: any, propName: string) => void;
84
- Reference: (nameOrProps?: {
85
- name?: string;
86
- } | string) => (target: any, propName: string) => void;
87
- };
@@ -1,36 +0,0 @@
1
- import { makeDecoratorFactories } from '@nx-ddd/core';
2
- export const FIRESTORE_ANNOTATIONS = 'firestore_annotations';
3
- export const { createDecorator, createPropsDecorator, createClassDecorator, getAnnotations, } = makeDecoratorFactories((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), FIRESTORE_ANNOTATIONS);
4
- /** @deprecated use getAnnotations */
5
- export function getFirestoreAnnotations(target) {
6
- return getAnnotations(target);
7
- }
8
- export const ID = createDecorator('id');
9
- export const String = createDecorator('string');
10
- export const Null = createDecorator('null');
11
- export const Geopoint = createDecorator('geopoint');
12
- export const Boolean = createDecorator('boolean');
13
- export const Timestamp = createDecorator('timestamp');
14
- export const Number = createDecorator('number');
15
- export const Map = (childType, props) => createDecorator('map', { childType })(props);
16
- export const Array = (childType, props) => createDecorator('array', { childType })(props);
17
- export const Reference = createDecorator('reference');
18
- export function getCollection(target) {
19
- const annotations = getAnnotations(target);
20
- const annotation = annotations.find((annotation) => annotation.type === 'collection');
21
- return annotation.name;
22
- }
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
- };
36
- //# sourceMappingURL=decorators.js.map
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- export { Firestore } from './decorators';
@@ -1,2 +0,0 @@
1
- export { Firestore } from './decorators';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
package/index.js DELETED
@@ -1,8 +0,0 @@
1
- export * from './adapters';
2
- export * from './converter';
3
- export * from './dao';
4
- export * from './decorators';
5
- export * from './path-builder';
6
- export * from './query';
7
- export * from './repository';
8
- //# sourceMappingURL=index.js.map
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/firestore/src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- export * from './interfaces';
@@ -1,2 +0,0 @@
1
- export * from './interfaces';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,63 +0,0 @@
1
- import type { QueryDocumentSnapshot } from 'firebase-admin/firestore';
2
- import { Observable } from 'rxjs';
3
- export type DocumentData = {
4
- [field: string]: any;
5
- };
6
- export interface GetOptions {
7
- readonly source?: 'default' | 'server' | 'cache';
8
- }
9
- export interface DocumentChangeAction<T> {
10
- type: any;
11
- payload: {
12
- doc: DocumentSnapshot<T>;
13
- };
14
- }
15
- export interface DocumentSnapshot<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> {
16
- id: string;
17
- ref: {
18
- path: string;
19
- };
20
- data: () => AppModelType | undefined;
21
- get: (fieldPath: string) => any;
22
- exists?: (() => boolean) | boolean;
23
- }
24
- export interface QuerySnapshot<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> {
25
- docs: Array<QueryDocumentSnapshot<AppModelType, DbModelType>>;
26
- }
27
- export interface Timestamp {
28
- readonly seconds: number;
29
- readonly nanoseconds: number;
30
- toDate(): Date;
31
- toMillis(): number;
32
- isEqual(other: Timestamp): boolean;
33
- valueOf(): string;
34
- }
35
- export interface TimestampConstructor {
36
- new (seconds: number, nanoseconds: number): Timestamp;
37
- now(): Timestamp;
38
- fromDate(date: Date): Timestamp;
39
- fromMillis(milliseconds: number): Timestamp;
40
- }
41
- export type FieldValue = any;
42
- export type ToFirestoreData<Entity, Date> = {
43
- [K in keyof Entity]: Entity[K] extends Date ? Timestamp | FieldValue : Entity[K];
44
- };
45
- export interface DocumentReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> {
46
- __ref?: Origin;
47
- exists(): Promise<boolean>;
48
- set(data: AppModelType, options?: any): Promise<void | any>;
49
- get(): Promise<DocumentSnapshot<AppModelType, DbModelType>>;
50
- update(data: AppModelType): Promise<void | any>;
51
- delete(): Promise<void | any>;
52
- stateChanges?: () => Observable<DocumentSnapshot<AppModelType, DbModelType>>;
53
- }
54
- export type CollectionReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> = Query<AppModelType, DbModelType, Origin>;
55
- export type CollectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> = Query<AppModelType, DbModelType, Origin>;
56
- export interface Query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> {
57
- __ref?: Origin;
58
- stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
59
- get(options?: GetOptions): Promise<QuerySnapshot<AppModelType, DbModelType>>;
60
- onSnapshot?(onNext: (snapshot: QuerySnapshot<AppModelType, DbModelType>) => void, onError?: (error: Error) => void): () => void;
61
- count(): Promise<number>;
62
- }
63
- export type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> = CollectionReference<AppModelType, DbModelType, Origin> | CollectionGroup<AppModelType, DbModelType, Origin> | Query<AppModelType, DbModelType, Origin>;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/interfaces.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- export * from './path-builder';
@@ -1,2 +0,0 @@
1
- export * from './path-builder';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,34 +0,0 @@
1
- type CollectionParamMap<Entity extends {
2
- id: string;
3
- }> = Partial<Entity>;
4
- type DocParamMap<Entity extends {
5
- id: string;
6
- }> = CollectionParamMap<Entity> & Pick<Entity, 'id'>;
7
- export type ExtractParams<T extends string> = T extends `${infer _Start}:${infer Param}/${infer Rest}` ? {
8
- [K in Param | keyof ExtractParams<Rest>]: string;
9
- } : T extends `${infer _Start}:${infer Param}` ? {
10
- [K in Param]: string;
11
- } : {};
12
- export type ColParam<T extends {
13
- readonly collectionPath: string;
14
- }> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
15
- export type DocParam<T extends {
16
- readonly collectionPath: string;
17
- }> = ColParam<T> & {
18
- id: string;
19
- };
20
- export declare class FirestorePathBuilder<Entity extends {
21
- id: string;
22
- }, Path extends string = string> {
23
- private paths;
24
- doc(param: DocParamMap<Entity>): string;
25
- collection(param?: Omit<ExtractParams<Path>, 'id'> | {}): string;
26
- collectionGroup(): string;
27
- constructor(paths: string[]);
28
- }
29
- export declare function pathBuilderFactory<E extends {
30
- id: string;
31
- }, Path extends string = string>(path: Path): FirestorePathBuilder<E, Path>;
32
- export declare function parsePath<Path extends string = string>(path: Path): string[];
33
- export declare const resolvePaths: (obj: object, paths: string[]) => string;
34
- export {};
@@ -1,33 +0,0 @@
1
- export class FirestorePathBuilder {
2
- doc(param) {
3
- return resolvePaths(param, this.paths);
4
- }
5
- collection(param = {}) {
6
- return resolvePaths(param, this.paths.slice(0, -1));
7
- }
8
- collectionGroup() {
9
- return this.paths[this.paths.length - 2];
10
- }
11
- constructor(paths) {
12
- this.paths = paths;
13
- }
14
- }
15
- export function pathBuilderFactory(path) {
16
- const paths = parsePath(path);
17
- return new FirestorePathBuilder(paths);
18
- }
19
- export function parsePath(path) {
20
- const paths = path.split('/').filter(p => p.length);
21
- if (!paths[paths.length - 1].startsWith(':'))
22
- paths.push(':id');
23
- return paths;
24
- }
25
- export const resolvePaths = (obj, paths) => {
26
- return paths.map((path) => path.startsWith(':') ? resolvePath(obj, path.slice(1)) : path).join('/');
27
- };
28
- const resolvePath = (obj, key) => {
29
- if (!(obj === null || obj === void 0 ? void 0 : obj[key]))
30
- throw new Error(`Invalid key is detected in resolving paths, key: \`${key}\`, obj: \`${JSON.stringify(obj)}\``);
31
- return obj === null || obj === void 0 ? void 0 : obj[key];
32
- };
33
- //# sourceMappingURL=path-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,oBAAoB;IAI/B,GAAG,CAAC,KAA0B;QAC5B,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,QAA8C,EAAE;QACzD,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAI,CAAC;CACzC;AAED,MAAM,UAAU,kBAAkB,CAIhC,IAAU;IAEV,MAAM,KAAK,GAAG,SAAS,CAAO,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAA+B,IAAU;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,KAAe,EAAU,EAAE;IACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtG,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;IAC/C,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAA;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjI,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAC;AACpB,CAAC,CAAA"}
@@ -1,33 +0,0 @@
1
- import dayjs from 'dayjs';
2
- import { Observable, ReplaySubject } from 'rxjs';
3
- import { FirestoreAdapter } from '../adapters/base';
4
- import { IFirestoreConverter } from '../converter';
5
- import { FirestoreDAO } from '../dao';
6
- import { FirestorePathBuilder } from '../path-builder';
7
- import { CollectionReference, CollectionGroup, ToFirestoreData, CollectionLike } from '../interfaces';
8
- export declare class FirestoreQuery<Entity extends {
9
- id: string;
10
- } = any, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> extends FirestoreDAO<Entity, FirestoreData> {
11
- protected converter: IFirestoreConverter<Entity>;
12
- protected pathBuilder: FirestorePathBuilder<Entity>;
13
- constructor(adapter: FirestoreAdapter, converter: IFirestoreConverter<Entity>, pathBuilder: FirestorePathBuilder<Entity>);
14
- protected readonly collection$: ReplaySubject<CollectionLike<FirestoreData>>;
15
- protected readonly list$: Observable<Entity[]>;
16
- /** @deprecated */
17
- listChanges(paramMap?: Partial<Entity>, options?: {
18
- switch?: boolean;
19
- }): Observable<Entity[]>;
20
- listChangesV2(paramMap?: Partial<Entity>): Observable<Entity[]>;
21
- listChangesAfter(updatedAt: dayjs.Dayjs, { limit }?: {
22
- limit?: number;
23
- }): Observable<Entity[]>;
24
- changes({ id }: Partial<Entity>): Observable<Entity>;
25
- changesV2(params: Partial<Entity>): Observable<Entity>;
26
- get({ id }: Partial<Entity> & {
27
- id: string;
28
- }): Promise<Entity>;
29
- list(paramMap?: Partial<Entity>): Promise<Entity[]>;
30
- protected listChangesByCollectionRef(collection: CollectionReference<FirestoreData> | CollectionGroup<FirestoreData>): Observable<Entity[]>;
31
- protected switchCollectionRef(paramMap?: Partial<Entity>): void;
32
- switchCollection(collection: CollectionLike<any>): void;
33
- }
@@ -1,75 +0,0 @@
1
- import dayjs from 'dayjs';
2
- import { ReplaySubject, lastValueFrom, of, throwError } from 'rxjs';
3
- import { catchError, distinctUntilChanged, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';
4
- import { FirestoreDAO } from '../dao';
5
- export class FirestoreQuery extends FirestoreDAO {
6
- constructor(adapter, converter, pathBuilder) {
7
- super(adapter, pathBuilder);
8
- this.converter = converter;
9
- this.pathBuilder = pathBuilder;
10
- this.collection$ = new ReplaySubject(1);
11
- this.list$ = this.collection$.pipe(switchMap((collection) => this.listChangesByCollectionRef(collection).pipe(catchError(error => throwError(() => error)))), shareReplay(1));
12
- this.switchCollectionRef();
13
- }
14
- /** @deprecated */
15
- listChanges(paramMap, options = { switch: true }) {
16
- return of(paramMap).pipe(tap((paramMap) => (options === null || options === void 0 ? void 0 : options.switch) && this.switchCollectionRef(paramMap)), switchMap(() => this.list$));
17
- }
18
- listChangesV2(paramMap) {
19
- return of(paramMap).pipe(tap((paramMap) => paramMap && this.switchCollectionRef(paramMap)), switchMap(() => this.list$));
20
- }
21
- listChangesAfter(updatedAt, { limit } = {}) {
22
- const entitiesMap = new Map();
23
- const _updatedAt = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt;
24
- return this.adapter.query(this.collection(), ...[
25
- this.adapter.where('updatedAt', '>', _updatedAt),
26
- this.adapter.orderBy('updatedAt', 'asc'),
27
- limit ? this.adapter.limit(limit) : undefined,
28
- ].filter(Boolean)).stateChanges().pipe(
29
- // bufferTime(1_000),
30
- // map(zippedActions => zippedActions.flat()),
31
- tap(actions => actions.forEach(({ type, payload: { doc } }) => {
32
- if (new Set(['added', 'modified']).has(type)) {
33
- entitiesMap.set(doc.id, this.converter.fromFirestore(doc));
34
- }
35
- else if (type === 'removed') {
36
- entitiesMap.delete(doc.id);
37
- }
38
- })), map(() => [...entitiesMap.values()]));
39
- }
40
- changes({ id }) {
41
- if (!id)
42
- throw new Error(`Invalid Id. it must be Truthy`);
43
- return this.list$.pipe(map(entities => entities.find(entity => entity.id === id)), distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
44
- }
45
- changesV2(params) {
46
- const docRef = this.doc(params);
47
- return docRef.stateChanges().pipe(map((doc) => this.converter.fromFirestore(doc)));
48
- }
49
- get({ id }) {
50
- return lastValueFrom(this.list$.pipe(take(1), map(entities => entities.find(entity => entity.id === id))));
51
- }
52
- list(paramMap) {
53
- this.switchCollectionRef(paramMap);
54
- return lastValueFrom(this.list$.pipe(take(1)));
55
- }
56
- listChangesByCollectionRef(collection) {
57
- const entitiesMap = new Map();
58
- return collection.stateChanges().pipe(tap(actions => actions.forEach(({ type, payload: { doc } }) => {
59
- if (new Set(['added', 'modified']).has(type)) {
60
- entitiesMap.set(doc.id, this.converter.fromFirestore(doc));
61
- }
62
- else if (type === 'removed') {
63
- entitiesMap.delete(doc.id);
64
- }
65
- })), map(() => [...entitiesMap.values()]));
66
- }
67
- switchCollectionRef(paramMap) {
68
- const collection = this.getCollection(paramMap);
69
- this.switchCollection(collection);
70
- }
71
- switchCollection(collection) {
72
- this.collection$.next(collection);
73
- }
74
- }
75
- //# sourceMappingURL=firestore.query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":"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"}
package/query/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './firestore.query';
package/query/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './firestore.query';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -1,58 +0,0 @@
1
- import { FirestoreQuery } from "./query";
2
- import { ExtractParams } from "@nx-ddd/firestore/path-builder";
3
- import Dexie from 'dexie';
4
- import { Observable } from 'rxjs';
5
- import dayjs from "dayjs";
6
- import { CollectionLike } from "@nx-ddd/firestore/interfaces";
7
- type ColParam<T extends {
8
- readonly collectionPath: string;
9
- }> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
10
- interface EntityData {
11
- id: string;
12
- value: string;
13
- collectionPath: string;
14
- updatedAt: string;
15
- }
16
- declare class DexieAdapter<E extends {
17
- id: string;
18
- updatedAt: dayjs.Dayjs;
19
- }> extends Dexie {
20
- entities: Dexie.Table<EntityData, string>;
21
- constructor();
22
- count$(): Observable<number>;
23
- getLastUpdatedAt$(collectionPath: string): Observable<dayjs.Dayjs>;
24
- bulkPut(collectionPath: string, entities: E[]): Promise<string>;
25
- listChanges(collectionPath: string): Observable<E[]>;
26
- }
27
- declare class FirestoreIndexedDbCached<E extends {
28
- id: string;
29
- updatedAt: dayjs.Dayjs;
30
- }> {
31
- protected collectionPath: string;
32
- constructor(collectionPath: string);
33
- readonly adapter: DexieAdapter<E>;
34
- getLastUpdatedAt$(): Observable<dayjs.Dayjs>;
35
- setMany(entities: E[]): Promise<string>;
36
- listChanges(): Observable<E[]>;
37
- }
38
- export declare abstract class CachedFirestoreQuery<E extends {
39
- id: string;
40
- updatedAt: dayjs.Dayjs;
41
- } = any> extends FirestoreQuery<E> {
42
- protected _cached: FirestoreIndexedDbCached<E>;
43
- protected get cached(): FirestoreIndexedDbCached<E>;
44
- protected readonly config: {
45
- throttleTime: number;
46
- loadChunkSize: number;
47
- };
48
- listChanges(paramMap?: ColParam<this>): Observable<E[]>;
49
- protected _listChange(paramMap?: ColParam<this>): Observable<E[]>;
50
- protected _listChangesAfter(collection: CollectionLike, updatedAt: dayjs.Dayjs, { limit }?: {
51
- limit?: number;
52
- }): Observable<E[]>;
53
- progressChanges(): Observable<{
54
- cloud: number;
55
- local: number;
56
- }>;
57
- }
58
- export {};
@@ -1,102 +0,0 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { Injectable } from "@angular/core";
3
- import { FirestoreQuery } from "./query";
4
- import Dexie, { liveQuery } from 'dexie';
5
- import { catchError, combineLatest, distinctUntilChanged, map, NEVER, Observable, of, retry, switchMap, tap, throttleTime } from 'rxjs';
6
- import dayjs from "dayjs";
7
- function fromDexie(observable) {
8
- return new Observable(subscriber => observable.subscribe(subscriber));
9
- }
10
- class DexieAdapter extends Dexie {
11
- constructor() {
12
- super('@nx-ddd/firestore/cached-query');
13
- this.version(3).stores({ entities: '++id' });
14
- }
15
- count$() {
16
- return fromDexie(liveQuery(() => this.entities.count()));
17
- }
18
- getLastUpdatedAt$(collectionPath) {
19
- return of(null).pipe(switchMap((() => fromDexie(liveQuery(() => this.entities.toArray())))), map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)), map(entities => entities.sort((a, b) => {
20
- if (!(a === null || a === void 0 ? void 0 : a.updatedAt))
21
- return -1;
22
- if (!(b === null || b === void 0 ? void 0 : b.updatedAt))
23
- return 1;
24
- return dayjs(a === null || a === void 0 ? void 0 : a.updatedAt).diff(dayjs(b === null || b === void 0 ? void 0 : b.updatedAt));
25
- }).at(-1)), map(entity => (entity === null || entity === void 0 ? void 0 : entity.updatedAt) ? dayjs(entity === null || entity === void 0 ? void 0 : entity.updatedAt) : dayjs('1970-01-01')), distinctUntilChanged((pre, cur) => pre.isSame(cur)));
26
- }
27
- bulkPut(collectionPath, entities) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- return this.entities.bulkPut(entities.map(entity => {
30
- const key = `${entity.id}`;
31
- return {
32
- id: key,
33
- collectionPath,
34
- value: JSON.stringify(entity),
35
- updatedAt: entity.updatedAt.toISOString(),
36
- };
37
- }));
38
- });
39
- }
40
- listChanges(collectionPath) {
41
- return of(null).pipe(switchMap(() => fromDexie(liveQuery(() => this.entities.toArray()))), map((entities) => entities.filter(entity => entity.collectionPath === collectionPath)), map((entities) => entities.map(entity => JSON.parse(entity.value))));
42
- }
43
- }
44
- class FirestoreIndexedDbCached {
45
- constructor(collectionPath) {
46
- this.collectionPath = collectionPath;
47
- this.adapter = new DexieAdapter();
48
- }
49
- getLastUpdatedAt$() {
50
- return this.adapter.getLastUpdatedAt$(this.collectionPath);
51
- }
52
- setMany(entities) {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- return this.adapter.bulkPut(this.collectionPath, entities);
55
- });
56
- }
57
- listChanges() {
58
- return this.adapter.listChanges(this.collectionPath);
59
- }
60
- }
61
- let CachedFirestoreQuery = class CachedFirestoreQuery extends FirestoreQuery {
62
- constructor() {
63
- super(...arguments);
64
- this.config = {
65
- throttleTime: 5000,
66
- loadChunkSize: 1000,
67
- };
68
- }
69
- get cached() {
70
- var _a;
71
- return (_a = this._cached) !== null && _a !== void 0 ? _a : (this._cached = new FirestoreIndexedDbCached(this.collectionPath));
72
- }
73
- listChanges(paramMap) {
74
- const collection = this.dao.getCollection(paramMap);
75
- return this.cached.getLastUpdatedAt$().pipe(switchMap((lastUpdatedAt) => this._listChangesAfter(collection, lastUpdatedAt, {
76
- limit: this.config.loadChunkSize,
77
- }).pipe(retry(3), tap((updated) => this.cached.setMany(updated)), tap((updated) => console.log('updated:', updated)), catchError((error) => (console.error(error), NEVER)))), switchMap(() => this.cached.listChanges()), map((entities) => entities.map(entity => this.converter.fromObject(entity))), throttleTime(this.config.throttleTime));
78
- }
79
- _listChange(paramMap) {
80
- return of(paramMap).pipe(map((paramMap) => this.dao.getCollection(paramMap)), map((collection) => this.adapter.query(collection, this.adapter.limit(10))), switchMap((collection) => this.getListChanges$ByCollectionLike(collection)));
81
- }
82
- _listChangesAfter(collection, updatedAt, { limit } = {}) {
83
- const updatedAtTs = dayjs.isDayjs(updatedAt) ? this.adapter.convertDateToTimestamp(updatedAt) : updatedAt;
84
- const query = this.adapter.query(collection, ...[
85
- this.adapter.where('updatedAt', '>', updatedAtTs),
86
- this.adapter.orderBy('updatedAt', 'asc'),
87
- limit ? this.adapter.limit(limit) : undefined,
88
- ].filter(Boolean));
89
- return this.getListChanges$ByCollectionLike(query);
90
- }
91
- progressChanges() {
92
- return combineLatest({
93
- cloud: this.count(),
94
- local: this.listChanges().pipe(map(items => items.length)),
95
- });
96
- }
97
- };
98
- CachedFirestoreQuery = __decorate([
99
- Injectable()
100
- ], CachedFirestoreQuery);
101
- export { CachedFirestoreQuery };
102
- //# sourceMappingURL=cached-query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cached-query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/cached-query.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './query';
2
- export * from './cached-query';
package/query/v2/index.js DELETED
@@ -1,3 +0,0 @@
1
- export * from './query';
2
- export * from './cached-query';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}