@brightnkhoma/domain 1.0.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 (37) hide show
  1. package/dist/index.d.ts +7 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +54111 -0
  4. package/dist/index.mjs +54101 -0
  5. package/dist/lib/@exprimental/domain.d.ts +21 -0
  6. package/dist/lib/@exprimental/domain.d.ts.map +1 -0
  7. package/dist/lib/abstract/x.d.ts +166 -0
  8. package/dist/lib/abstract/x.d.ts.map +1 -0
  9. package/dist/lib/data/baseTable.d.ts +5 -0
  10. package/dist/lib/data/baseTable.d.ts.map +1 -0
  11. package/dist/lib/data/user.d.ts +7 -0
  12. package/dist/lib/data/user.d.ts.map +1 -0
  13. package/dist/lib/domain/baseDomain.d.ts +44 -0
  14. package/dist/lib/domain/baseDomain.d.ts.map +1 -0
  15. package/dist/lib/domain/helper.d.ts +7 -0
  16. package/dist/lib/domain/helper.d.ts.map +1 -0
  17. package/dist/lib/domain/mainDomain.d.ts +18 -0
  18. package/dist/lib/domain/mainDomain.d.ts.map +1 -0
  19. package/dist/lib/domain/userDomain.d.ts +11 -0
  20. package/dist/lib/domain/userDomain.d.ts.map +1 -0
  21. package/dist/lib/error/error.d.ts +3 -0
  22. package/dist/lib/error/error.d.ts.map +1 -0
  23. package/dist/lib/router/baseRouter.d.ts +39 -0
  24. package/dist/lib/router/baseRouter.d.ts.map +1 -0
  25. package/dist/lib/types/activity.d.ts +44 -0
  26. package/dist/lib/types/activity.d.ts.map +1 -0
  27. package/dist/lib/types/entity.d.ts +10 -0
  28. package/dist/lib/types/entity.d.ts.map +1 -0
  29. package/dist/lib/types/loginProps.d.ts +6 -0
  30. package/dist/lib/types/loginProps.d.ts.map +1 -0
  31. package/dist/lib/types/routerQuery.d.ts +19 -0
  32. package/dist/lib/types/routerQuery.d.ts.map +1 -0
  33. package/dist/lib/types/signUpProps.d.ts +8 -0
  34. package/dist/lib/types/signUpProps.d.ts.map +1 -0
  35. package/dist/lib/types/user.d.ts +12 -0
  36. package/dist/lib/types/user.d.ts.map +1 -0
  37. package/package.json +45 -0
@@ -0,0 +1,21 @@
1
+ import { App } from "firebase-admin/app";
2
+ import { AppDomain, DomainDB } from "../domain/helper";
3
+ import { UserDomain } from "../domain/userDomain";
4
+ import { Entity } from "../types/entity";
5
+ import { User } from "../types/user";
6
+ export declare class Domain<T extends Entity> extends UserDomain {
7
+ db: DomainDB<T>;
8
+ domain: AppDomain<T>;
9
+ constructor(user: User, tableName: string, db: App);
10
+ }
11
+ export declare const getDomainClass: <T extends Entity>(tableName: string, db: App) => {
12
+ new (user: User): {
13
+ db: DomainDB<T>;
14
+ domain: AppDomain<T>;
15
+ user: User;
16
+ userDb: DomainDB<User>;
17
+ userDomain: AppDomain<User>;
18
+ verifyUser(): Promise<true>;
19
+ };
20
+ };
21
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/lib/@exprimental/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,qBAAa,MAAM,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,UAAU;IACpD,EAAE,EAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,EAAG,SAAS,CAAC,CAAC,CAAC,CAAA;IACrB,YAAY,IAAI,EAAG,IAAI,EAAC,SAAS,EAAG,MAAM,EAAC,EAAE,EAAG,GAAG,EAIlD;CAEJ;AAMD,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,aAAc,MAAM,MAAM,GAAG;eAIrD,IAAI;YAFlB,QAAQ,CAAC,CAAC,CAAC;gBACP,SAAS,CAAC,CAAC,CAAC;;;;;;CAOxB,CAAA"}
@@ -0,0 +1,166 @@
1
+ import { FieldValue } from "firebase-admin/firestore";
2
+ import { LoggerConfig, LogLevel, LogEntry, DocActivity } from "../types/activity";
3
+ import { App } from "firebase-admin/app";
4
+ export declare abstract class AppDb<T extends {
5
+ id?: string;
6
+ }> {
7
+ protected path: string;
8
+ protected collection: FirebaseFirestore.CollectionReference;
9
+ protected loggerConfig: LoggerConfig;
10
+ protected userId?: string;
11
+ protected depth: number;
12
+ db: App;
13
+ constructor(path: string, db: App, userId?: string, loggerConfig?: Partial<LoggerConfig>, collectionRef?: FirebaseFirestore.CollectionReference);
14
+ /**
15
+ * Create an AppDb instance from an existing collection reference
16
+ * This is the preferred way to work with subcollections
17
+ */
18
+ static fromRef<T extends {
19
+ id?: string;
20
+ }>(db: App, ref: FirebaseFirestore.CollectionReference, path: string, userId?: string, loggerConfig?: Partial<LoggerConfig>): AppDb<T>;
21
+ /**
22
+ * Create an AppDb instance from a document reference and subcollection name
23
+ */
24
+ static fromDocRef<T extends {
25
+ id?: string;
26
+ }>(db: App, docRef: FirebaseFirestore.DocumentReference, subcollectionName: string, userId?: string, loggerConfig?: Partial<LoggerConfig>): AppDb<T>;
27
+ private validatePath;
28
+ now(): string;
29
+ setUserId(userId: string): void;
30
+ updateLoggerConfig(config: Partial<LoggerConfig>): void;
31
+ /**
32
+ * Get a subcollection that inherits all logging, performance tracking, and activity tracking
33
+ * Returns a full AppDb instance, not a lightweight helper
34
+ */
35
+ subcollection<S extends {
36
+ id?: string;
37
+ }>(documentId: string, subcollectionName: string): AppDb<S>;
38
+ /**
39
+ * Create a reusable subcollection factory function
40
+ */
41
+ subcollectionFactory<S extends {
42
+ id?: string;
43
+ }>(subcollectionName: string): (documentId: string) => AppDb<S>;
44
+ /**
45
+ * Get the parent document reference if this is a subcollection
46
+ */
47
+ getParentDoc(): FirebaseFirestore.DocumentReference | null;
48
+ private log;
49
+ private logToConsoleMethod;
50
+ private logActivity;
51
+ /**
52
+ * Validates that an array field doesn't exceed Firestore's practical limits
53
+ */
54
+ private validateArrayField;
55
+ /**
56
+ * Enhances Firestore errors with actionable messages
57
+ */
58
+ private enhanceError;
59
+ create(data: Omit<T, 'id'>, userId?: string): Promise<string>;
60
+ getRef(id: string): Promise<FirebaseFirestore.DocumentSnapshot>;
61
+ createWithId(id: string, data: Omit<T, 'id'>): Promise<void>;
62
+ count(field: keyof T, value: any): Promise<number | null>;
63
+ queryCount(q: {
64
+ field: keyof T;
65
+ operator: FirebaseFirestore.WhereFilterOp;
66
+ value: any;
67
+ }[]): Promise<number | null>;
68
+ countIn(field: keyof T, values: any[]): Promise<number | null>;
69
+ add(data: T): Promise<void>;
70
+ set(id: string, data: T, userId?: string): Promise<void>;
71
+ get(id: string, userId?: string): Promise<T | null>;
72
+ getAll(): Promise<T[]>;
73
+ exists(id: string): Promise<boolean>;
74
+ select<K extends keyof T>(key: K, value: T[K], fields: K[]): Promise<Pick<T, K>[]>;
75
+ selectAll<K extends keyof T>(key: K): Promise<Pick<T, K>[]>;
76
+ getSortable(options?: {
77
+ lastDoc?: string;
78
+ sort?: "asc" | "desc";
79
+ limit?: number;
80
+ orderBy?: keyof T;
81
+ where?: {
82
+ field: keyof T;
83
+ value: string | number;
84
+ };
85
+ }): Promise<T[]>;
86
+ getFromFieldList<X extends keyof T>(key: X, values: T[X][]): Promise<T[]>;
87
+ getByField(field: keyof T, value: any, filter?: {
88
+ limit?: number;
89
+ startAfter?: string;
90
+ orderBy?: keyof T;
91
+ order?: "asc" | "desc";
92
+ }, userId?: string): Promise<T[]>;
93
+ getOneByField(field: keyof T, value: any): Promise<T | null>;
94
+ update(id: string, updates: Partial<Omit<T, 'id'>>): Promise<void>;
95
+ delete(id: string): Promise<void>;
96
+ batchCreate(items: Omit<T, 'id'>[]): Promise<string[]>;
97
+ batchDelete(ids: string[]): Promise<void>;
98
+ batchUpdate(updates: {
99
+ id: string;
100
+ data: Partial<Omit<T, 'id'>>;
101
+ }[]): Promise<void>;
102
+ incrementField(id: string, field: keyof T, value: number): Promise<void>;
103
+ arrayUnion(id: string, field: keyof T, ...elements: any[]): Promise<void>;
104
+ arrayRemove(id: string, field: keyof T, ...elements: any[]): Promise<void>;
105
+ query(queries: {
106
+ field: keyof T;
107
+ operator: FirebaseFirestore.WhereFilterOp;
108
+ value: any;
109
+ }[]): Promise<T[]>;
110
+ paginatedQuery(options: {
111
+ queries?: {
112
+ field: keyof T;
113
+ operator: FirebaseFirestore.WhereFilterOp;
114
+ value: any;
115
+ }[];
116
+ orderBy: {
117
+ key: keyof T;
118
+ order: "desc" | "asc";
119
+ };
120
+ limit?: number;
121
+ startAfter?: FirebaseFirestore.DocumentSnapshot;
122
+ startAt?: FirebaseFirestore.DocumentSnapshot;
123
+ }): Promise<T[]>;
124
+ /**
125
+ * Run a transaction with automatic retries and enhanced error handling
126
+ */
127
+ runTransaction<R>(updateFunction: (transaction: FirebaseFirestore.Transaction) => Promise<R>): Promise<R>;
128
+ /**
129
+ * Common transaction pattern: Get document, update it, return result
130
+ */
131
+ transactionGetAndUpdate<R>(documentId: string, updateFn: (data: T) => Partial<T> | Promise<Partial<T>>): Promise<R>;
132
+ /**
133
+ * Common transaction pattern: Get two documents atomically and update them
134
+ */
135
+ transactionGetTwoAndUpdate<R>(documentId1: string, documentId2: string, updateFn: (data1: T, data2: T) => {
136
+ updates1: Partial<T>;
137
+ updates2: Partial<T>;
138
+ result: R;
139
+ }): Promise<R>;
140
+ withPerformanceLogging<R>(operation: () => Promise<R>, methodName: string, metadata?: Record<string, any>): Promise<R>;
141
+ getLogs(limit?: number, level?: LogLevel, startDate?: string, endDate?: string): Promise<LogEntry[]>;
142
+ getActivities(limit?: number, userId?: string, startDate?: string, endDate?: string): Promise<DocActivity[]>;
143
+ private chunkArray;
144
+ /**
145
+ * Get the underlying Firestore collection reference
146
+ * Use sparingly - prefer the abstracted methods
147
+ */
148
+ getCollectionRef(): FirebaseFirestore.CollectionReference;
149
+ /**
150
+ * Get the collection path
151
+ */
152
+ getPath(): string;
153
+ }
154
+ export declare class TimestampHelper {
155
+ static get createdAt(): {
156
+ createdAt: FieldValue;
157
+ };
158
+ static get updatedAt(): {
159
+ updatedAt: FieldValue;
160
+ };
161
+ static get timestamps(): {
162
+ createdAt: FieldValue;
163
+ updatedAt: FieldValue;
164
+ };
165
+ }
166
+ //# sourceMappingURL=x.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x.d.ts","sourceRoot":"","sources":["../../../src/lib/abstract/x.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AA+BzC,8BAAsB,KAAK,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE;IACnD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,CAAC;IAC5D,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,GAAG,CAAA;IAEP,YACE,IAAI,EAAE,MAAM,EACZ,EAAE,EAAG,GAAG,EACR,MAAM,GAAE,MAAe,EACvB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EACpC,aAAa,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,EAiBtD;IAID;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,EACtC,EAAE,EAAG,GAAG,EACR,GAAG,EAAE,iBAAiB,CAAC,mBAAmB,EAC1C,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACnC,KAAK,CAAC,CAAC,CAAC,CAEV;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,EACzC,EAAE,EAAG,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,iBAAiB,EAC3C,iBAAiB,EAAE,MAAM,EACzB,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACnC,KAAK,CAAC,CAAC,CAAC,CAIV;IAID,OAAO,CAAC,YAAY;IAmBpB,GAAG,IAAI,MAAM,CAEZ;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEtD;IAID;;;OAGG;IACH,aAAa,CAAC,CAAC,SAAS;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,EACrC,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,GACxB,KAAK,CAAC,CAAC,CAAC,CAWV;IAED;;OAEG;IACH,oBAAoB,CAAC,CAAC,SAAS;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5C,iBAAiB,EAAE,MAAM,GACxB,CAAC,UAAU,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAElC;IAED;;OAEG;IACH,YAAY,IAAI,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAQzD;YAIa,GAAG;IAsDjB,OAAO,CAAC,kBAAkB;YAuBZ,WAAW;IAkCzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBd,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelE;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAMpE;IAEK,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS9D;IACG,UAAU,CACd,CAAC,EAAE;QACD,KAAK,EAAE,MAAM,CAAC,CAAC;QACf,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC;QAC1C,KAAK,EAAE,GAAG,CAAC;KACZ,EAAE,GACF,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;IAEO,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcnE;IAEK,GAAG,CAAC,IAAI,EAAG,CAAC,iBAKjB;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7D;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAaxD;IAEK,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAa3B;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzC;IAEK,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,EAC5B,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,MAAM,EAAE,CAAC,EAAE,GACV,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAUvB;IAEK,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAGhE;IAEK,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAClB,KAAK,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KACpD,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CA4Bf;IAEK,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAO9E;IAEK,UAAU,CACd,KAAK,EAAE,MAAM,CAAC,EACd,KAAK,EAAE,GAAG,EACV,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAClB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACxB,EACD,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,EAAE,CAAC,CA8Bd;IAEK,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAGjE;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvE;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtC;IAIK,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgC3D;IAEK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB9C;IAEK,WAAW,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxF;IAIK,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7E;IAEK,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9E;IAEK,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/E;IAIK,KAAK,CACT,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC,CAAC;QACf,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC;QAC1C,KAAK,EAAE,GAAG,CAAA;KACX,EAAE,GACF,OAAO,CAAC,CAAC,EAAE,CAAC,CAyBd;IAEK,cAAc,CAAC,OAAO,EAAE;QAC5B,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAAC,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,EAAE,CAAC;QACtF,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAA;SAAE,CAAC;QACjD,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC;QAChD,OAAO,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC;KAC9C,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAmCf;IAID;;OAEG;IACG,cAAc,CAAC,CAAC,EACpB,cAAc,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GACzE,OAAO,CAAC,CAAC,CAAC,CAWZ;IAED;;OAEG;IACG,uBAAuB,CAAC,CAAC,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACtD,OAAO,CAAC,CAAC,CAAC,CAgBZ;IAED;;OAEG;IACG,0BAA0B,CAAC,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK;QAChC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,EAAE,CAAC,CAAC;KACX,GACA,OAAO,CAAC,CAAC,CAAC,CA2BZ;IAIK,sBAAsB,CAAC,CAAC,EAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAqCZ;IAIK,OAAO,CACX,KAAK,GAAE,MAAY,EACnB,KAAK,CAAC,EAAE,QAAQ,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,EAAE,CAAC,CA8BrB;IAEK,aAAa,CACjB,KAAK,GAAE,MAAY,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CA8BxB;IAID,OAAO,CAAC,UAAU;IAQlB;;;OAGG;IACH,gBAAgB,IAAI,iBAAiB,CAAC,mBAAmB,CAExD;IAED;;OAEG;IACH,OAAO,IAAI,MAAM,CAEhB;CACF;AAID,qBAAa,eAAe;IAC1B,MAAM,KAAK,SAAS;QAEhB,SAAS;MAEZ;IAED,MAAM,KAAK,SAAS;QAEhB,SAAS;MAEZ;IAED,MAAM,KAAK,UAAU;QAEjB,SAAS;QACT,SAAS;MAEZ;CACF"}
@@ -0,0 +1,5 @@
1
+ import { App } from "firebase-admin/app";
2
+ import { AppDb } from "../abstract/x";
3
+ import { Entity } from "../types/entity";
4
+ export declare const createTable: <T extends Entity>(tableName: string, db: App) => AppDb<T>;
5
+ //# sourceMappingURL=baseTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTable.d.ts","sourceRoot":"","sources":["../../../src/lib/data/baseTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,aAAc,MAAM,MAAM,GAAG,KAAI,KAAK,CAAC,CAAC,CAQnF,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { App } from "firebase-admin/app";
2
+ import { AppDb } from "../abstract/x";
3
+ import { User } from "../types/user";
4
+ export declare class AppUser extends AppDb<User> {
5
+ constructor(userId: string | undefined, db: App);
6
+ }
7
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/data/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAIrC,qBAAa,OAAQ,SAAQ,KAAK,CAAC,IAAI,CAAC;IACpC,YAAY,MAAM,EAAG,MAAM,YAAS,EAAE,EAAE,EAAG,GAAG,EAG7C;CAEJ"}
@@ -0,0 +1,44 @@
1
+ import { AppDb } from "../abstract/x";
2
+ import { Entity } from "../types/entity";
3
+ import { PaginatedQuery, RouterQuery } from "../types/routerQuery";
4
+ import { ElementType } from "./helper";
5
+ export declare const createDomain: <T extends AppDb<U>, U extends Entity>(db: T, key?: string, userId?: string) => {
6
+ exists: (id: string) => Promise<boolean>;
7
+ queryRouter: (q: RouterQuery<U>) => Promise<U[]>;
8
+ onSet: (id: string, v: U) => Promise<boolean>;
9
+ create: (v: U) => Promise<string>;
10
+ getByFied: (key: keyof U, value: string, filter?: {
11
+ limit?: number;
12
+ startAfter: string | undefined;
13
+ orderBy: keyof U;
14
+ order?: "asc" | "desc";
15
+ } | undefined, userId?: string) => Promise<U[]>;
16
+ delete: () => Promise<boolean>;
17
+ update: (updates: Partial<U>) => Promise<boolean>;
18
+ get: () => U;
19
+ set: (id: string) => Promise<void>;
20
+ search: (text: string, limit?: number, lastDoc?: string) => Promise<U[]>;
21
+ createTags: (word: string) => string[];
22
+ increment: (field: keyof U, amount: number, allowNegatives?: boolean) => Promise<true | undefined>;
23
+ getAll: () => Promise<U[]>;
24
+ getSortable: (lastDoc?: string, sort?: "asc" | "desc", limit?: number, orderBy?: keyof U, where?: {
25
+ field: keyof U;
26
+ value: string | number;
27
+ }) => Promise<U[]>;
28
+ count: (field: keyof U, value: string) => Promise<number | null>;
29
+ append: <B extends keyof U>(id: string, key: B, ...value: ElementType<U[B]>[]) => Promise<boolean>;
30
+ arrayRemove: <B extends keyof U>(id: string, key: B, ...value: ElementType<U[B]>[]) => Promise<boolean>;
31
+ paginatedQuery: (q: PaginatedQuery<U>) => Promise<U[]>;
32
+ select: <V extends keyof U>(options: {
33
+ key: V;
34
+ value: U[V];
35
+ fields: (keyof U)[];
36
+ }) => Promise<Pick<U, keyof U>[]>;
37
+ queryCount: (q: RouterQuery<U>) => Promise<number | null>;
38
+ encode: (obj: U) => {
39
+ size: number;
40
+ canUpload: boolean;
41
+ };
42
+ add: (v: U) => Promise<boolean>;
43
+ };
44
+ //# sourceMappingURL=baseDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseDomain.d.ts","sourceRoot":"","sources":["../../../src/lib/domain/baseDomain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,MAAM,MAAO,CAAC,QAAQ,MAAM,WAAa,MAAM;iBAuF3E,MAAM;qBALF,WAAW,CAAC,CAAC,CAAC;gBAnBnB,MAAM,KAAM,CAAC;gBALT,CAAC;qBAHI,MAAM,CAAC,SAAU,MAAM,WAAU;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KAAE,GAAG,SAAS,WAAW,MAAM;;sBAlC9J,OAAO,CAAC,CAAC,CAAC;;cAnBlB,MAAM;mBAyFA,MAAM,UAAS,MAAM,YAAiB,MAAM;uBAwClD,MAAM,KAAG,MAAM,EAAE;uBA7DR,MAAM,CAAC,UAAW,MAAM,mBAAmB,OAAO;;4BAxB9C,MAAM,SAAS,KAAK,GAAG,MAAM,UAAU,MAAM,YAAa,MAAM,CAAC,UAAW;QAAC,KAAK,EAAG,MAAM,CAAC,CAAC;QAAC,KAAK,EAAG,MAAM,GAAG,MAAM,CAAA;KAAC;mBA2GlI,MAAM,CAAC,SAAS,MAAM;aA1HzB,CAAC,SAAS,MAAM,CAAC,MAAO,MAAM,OAAO,CAAC,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;kBAIhE,CAAC,SAAS,MAAM,CAAC,MAAO,MAAM,OAAO,CAAC,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBAqE9D,cAAc,CAAC,CAAC,CAAC;aA6DjC,CAAC,SAAS,MAAM,CAAC,WAAY;QAAC,GAAG,EAAG,CAAC,CAAC;QAAA,KAAK,EAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAAA,MAAM,EAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;KAAC;oBAPhE,WAAW,CAAC,CAAC,CAAC;kBAvJjB,CAAC;;;;aA2FD,CAAC;CA0E1B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { createTable } from "../data/baseTable";
2
+ import { Entity } from "../types/entity";
3
+ import { createDomain } from "./baseDomain";
4
+ export type DomainDB<T extends Entity> = ReturnType<typeof createTable<T>>;
5
+ export type AppDomain<T extends Entity> = ReturnType<typeof createDomain<DomainDB<T>, T>>;
6
+ export type ElementType<T> = T extends (infer E)[] ? E : never;
7
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../src/lib/domain/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1E,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAA;AACxF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { App } from "firebase-admin/app";
2
+ import { Entity } from "../types/entity";
3
+ export declare class MainDomain {
4
+ db: App;
5
+ constructor(db: App);
6
+ domain<T extends Entity>(collectionName: string): {
7
+ new (user: import("../..").User): {
8
+ db: import("../abstract/x").AppDb<T>;
9
+ domain: import("./helper").AppDomain<T>;
10
+ user: import("../..").User;
11
+ userDb: import("./helper").DomainDB<import("../..").User>;
12
+ userDomain: import("./helper").AppDomain<import("../..").User>;
13
+ verifyUser(): Promise<true>;
14
+ };
15
+ };
16
+ static init(serviceAccount: string): MainDomain;
17
+ }
18
+ //# sourceMappingURL=mainDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mainDomain.d.ts","sourceRoot":"","sources":["../../../src/lib/domain/mainDomain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAuB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,qBAAa,UAAU;IACnB,EAAE,EAAG,GAAG,CAAC;IACT,YAAY,EAAE,EAAG,GAAG,EAEnB;IAED,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,cAAc,EAAG,MAAM;;;;;;;;;MAE/C;IAED,MAAM,CAAC,IAAI,CAAC,cAAc,EAAG,MAAM,cAMlC;CAEJ"}
@@ -0,0 +1,11 @@
1
+ import { App } from "firebase-admin/app";
2
+ import { User } from "../types/user";
3
+ import { AppDomain, DomainDB } from "./helper";
4
+ export declare class UserDomain {
5
+ user: User;
6
+ userDb: DomainDB<User>;
7
+ userDomain: AppDomain<User>;
8
+ constructor(user: User, db: App);
9
+ verifyUser(): Promise<true>;
10
+ }
11
+ //# sourceMappingURL=userDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userDomain.d.ts","sourceRoot":"","sources":["../../../src/lib/domain/userDomain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE/C,qBAAa,UAAU;IACnB,IAAI,EAAG,IAAI,CAAC;IACZ,MAAM,EAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,UAAU,EAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,YAAY,IAAI,EAAG,IAAI,EAAC,EAAE,EAAG,GAAG,EAK/B;IAMK,UAAU,kBAIf;CACJ"}
@@ -0,0 +1,3 @@
1
+ import { Response } from "express";
2
+ export declare const onError: (res: Response, error: any) => void;
3
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/lib/error/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,eAAO,MAAM,OAAO,QAAU,QAAQ,SAAS,GAAG,SAGjD,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { AppDomain } from "../domain/helper";
2
+ import { UserDomain } from "../domain/userDomain";
3
+ import { Entity } from "../types/entity";
4
+ import express, { NextFunction, Request, Response } from "express";
5
+ import { User } from "../types/user";
6
+ interface AppRouter {
7
+ middleware: ((req: express.Request<any, any, any, any, Record<string, any>>, res: Response, next: NextFunction) => Promise<express.Response<any, Record<string, any>> | any | undefined>)[];
8
+ fn: (req: Request, res: Response, next?: NextFunction) => Promise<void>;
9
+ path: string;
10
+ }
11
+ type HTTPREQUEST = "post" | "get" | "put" | "delete";
12
+ export declare class BaseRouter<U extends Entity, T extends UserDomain & {
13
+ domain: AppDomain<U>;
14
+ create?: (v: U) => Promise<any>;
15
+ }> {
16
+ BaseDomain: new (user: User) => T;
17
+ router: express.Router;
18
+ routes: Map<HTTPREQUEST, AppRouter[]>;
19
+ setRouter: ((route: express.Router) => void) | null;
20
+ defaultMiddleware: AppRouter["middleware"];
21
+ constructor(domain: new (user: User) => T);
22
+ get(): void;
23
+ post(): void;
24
+ update(): void;
25
+ delete(): void;
26
+ query(): void;
27
+ qCount(): void;
28
+ pQuery(): void;
29
+ search(): void;
30
+ default(): void;
31
+ getRouter(): express.Router;
32
+ replace(target: HTTPREQUEST, path: string, fn: (req: Request, res: Response, next?: NextFunction) => Promise<any>, middleware?: AppRouter["middleware"]): express.Router;
33
+ addRoute(target: HTTPREQUEST, path: string, fn: (req: Request, res: Response, next?: NextFunction) => Promise<any>, middleware?: AppRouter["middleware"]): express.Router;
34
+ removeRoute(target: HTTPREQUEST, path: string): express.Router;
35
+ addMiddleWare(target: HTTPREQUEST, path: string, middleware: ((req: express.Request<any, any, any, any, Record<string, any>>, res: Response, next: NextFunction) => Promise<express.Response<any, Record<string, any>> | any | undefined>)): express.Router;
36
+ replaceMiddleWare(target: HTTPREQUEST, path: string, middleware: AppRouter["middleware"]): express.Router;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=baseRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseRouter.d.ts","sourceRoot":"","sources":["../../../src/lib/router/baseRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export interface DocActivity {
2
+ depth: number;
3
+ userId: string;
4
+ date: string;
5
+ action: string;
6
+ status: "success" | "failed";
7
+ id: string;
8
+ documentId: string;
9
+ collection: string;
10
+ error?: string | undefined;
11
+ }
12
+ export declare enum LogLevel {
13
+ DEBUG = "DEBUG",
14
+ INFO = "INFO",
15
+ WARN = "WARN",
16
+ ERROR = "ERROR"
17
+ }
18
+ export interface LogEntry {
19
+ id: string;
20
+ depth: number;
21
+ timestamp: string;
22
+ level: LogLevel;
23
+ message: string;
24
+ method: string;
25
+ collection: string;
26
+ userId?: string | undefined;
27
+ documentId?: string | undefined;
28
+ metadata?: Record<string, any> | undefined;
29
+ error?: {
30
+ message: string;
31
+ stack?: string;
32
+ code?: string;
33
+ } | undefined;
34
+ }
35
+ export interface LoggerConfig {
36
+ enabled: boolean;
37
+ logLevel: LogLevel;
38
+ logToConsole: boolean;
39
+ logToDatabase: boolean;
40
+ activityCollection?: string;
41
+ logsCollection?: string;
42
+ includeMetadata: boolean;
43
+ }
44
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/lib/types/activity.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAG,MAAM,CAAC;IAChB,IAAI,EAAG,MAAM,CAAC;IACd,MAAM,EAAG,MAAM,CAAC;IAChB,MAAM,EAAG,SAAS,GAAG,QAAQ,CAAC;IAC9B,EAAE,EAAG,MAAM,CAAC;IACZ,UAAU,EAAG,MAAM,CAAC;IACpB,UAAU,EAAG,MAAM,CAAC;IACpB,KAAM,CAAC,EAAG,MAAM,GAAG,SAAS,CAAC;CAChC;AAID,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAG,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,SAAS,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B"}
@@ -0,0 +1,10 @@
1
+ export interface Entity {
2
+ id: string;
3
+ name: string;
4
+ dateCreated: string;
5
+ dateUpdated: string;
6
+ tags: string[];
7
+ createdBy: string;
8
+ updatedBy?: string[];
9
+ }
10
+ //# sourceMappingURL=entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/lib/types/entity.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACnB,EAAE,EAAG,MAAM,CAAC;IACZ,IAAI,EAAG,MAAM,CAAC;IACd,WAAW,EAAG,MAAM,CAAC;IACrB,WAAW,EAAG,MAAM,CAAC;IACrB,IAAI,EAAG,MAAM,EAAE,CAAC;IAChB,SAAS,EAAG,MAAM,CAAC;IACnB,SAAU,CAAC,EAAG,MAAM,EAAE,CAAA;CAEzB"}
@@ -0,0 +1,6 @@
1
+ export interface LoginProps {
2
+ email: string;
3
+ password: string;
4
+ phoneNumber?: string;
5
+ }
6
+ //# sourceMappingURL=loginProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loginProps.d.ts","sourceRoot":"","sources":["../../../src/lib/types/loginProps.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACvB,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,MAAM,CAAC;IAClB,WAAY,CAAC,EAAG,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,19 @@
1
+ export interface RouterQuery<T> {
2
+ queries: Query<T>[];
3
+ }
4
+ interface Query<T> {
5
+ key: keyof T;
6
+ value: string;
7
+ operator: FirebaseFirestore.WhereFilterOp;
8
+ replacable?: boolean;
9
+ }
10
+ export interface PaginatedQuery<T> extends RouterQuery<T> {
11
+ startAfter?: string;
12
+ limit?: number;
13
+ defaultQueries?: Query<T>[];
14
+ orderBy?: string;
15
+ defultOrderBy?: string;
16
+ hasMore?: boolean;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=routerQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerQuery.d.ts","sourceRoot":"","sources":["../../../src/lib/types/routerQuery.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,OAAO,EAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;CACvB;AAED,UAAU,KAAK,CAAC,CAAC;IACb,GAAG,EAAG,MAAM,CAAC,CAAC;IACd,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,iBAAiB,CAAC,aAAa,CAAC;IAC3C,UAAW,CAAC,EAAG,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACrD,UAAW,CAAC,EAAG,MAAM,CAAC;IACtB,KAAM,CAAC,EAAG,MAAM,CAAC;IACjB,cAAe,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,OAAQ,CAAC,EAAG,MAAM,CAAC;IACnB,aAAc,CAAC,EAAG,MAAM,CAAC;IACzB,OAAQ,CAAC,EAAG,OAAO,CAAC;CAEvB"}
@@ -0,0 +1,8 @@
1
+ export interface SignUpProps {
2
+ name: string;
3
+ email: string;
4
+ password: string;
5
+ userName: string;
6
+ otp?: string;
7
+ }
8
+ //# sourceMappingURL=signUpProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signUpProps.d.ts","sourceRoot":"","sources":["../../../src/lib/types/signUpProps.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAG,MAAM,CAAC;IACd,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,MAAM,CAAC;IAClB,QAAQ,EAAG,MAAM,CAAC;IAClB,GAAI,CAAC,EAAG,MAAM,CAAC;CAClB"}
@@ -0,0 +1,12 @@
1
+ import { Entity } from "./entity";
2
+ export interface User extends Entity {
3
+ email: string;
4
+ phoneNumber?: string | undefined;
5
+ avatar?: string | undefined;
6
+ }
7
+ export interface UserLocation {
8
+ district: string;
9
+ area: string;
10
+ }
11
+ export type PublicUser = Pick<User, "phoneNumber" | "email" | "name" | "dateCreated" | "avatar">;
12
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,MAAM,WAAW,IAAK,SAAQ,MAAM;IAChC,KAAK,EAAG,MAAM,CAAC;IACf,WAAW,CAAC,EAAG,MAAM,GAAG,SAAS,CAAC;IAClC,MAAO,CAAC,EAAG,MAAM,GAAG,SAAS,CAAC;CAEjC;AAGD,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAG,MAAM,CAAC;IAClB,IAAI,EAAG,MAAM,CAAC;CACjB;AAKD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAC,aAAa,GAAG,OAAO,GAAG,MAAM,GAAI,aAAa,GAAG,QAAQ,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@brightnkhoma/domain",
3
+ "version": "1.0.0",
4
+ "description": "A module that automates CRUD functionality and routing and helps you follow DDD(Domain Driven Design) with ease using firebase, express and typescript",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.mjs"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsup src/index.ts --format cjs,esm && tsc --emitDeclarationOnly --declaration --outDir dist",
25
+ "dev": "tsup src/index.ts --format cjs,esm --watch",
26
+ "test": "vitest",
27
+ "prepublishOnly": "npm run build"
28
+ },
29
+ "keywords": [],
30
+ "author": "Bright Nkhoma",
31
+ "license": "ISC",
32
+ "type": "commonjs",
33
+ "peerDependencies": {
34
+ "firebase-admin": "^13.8.0",
35
+ "uuid": "^14.0.2"
36
+ },
37
+ "devDependencies": {
38
+ "@types/express": "^5.0.6",
39
+ "express": "^5.2.1",
40
+ "firebase-admin": "^13.8.0",
41
+ "tsup": "^8.5.1",
42
+ "typescript": "^7.0.2",
43
+ "uuid": "^14.0.2"
44
+ }
45
+ }