@decaf-ts/core 0.7.2 → 0.7.4

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 (246) hide show
  1. package/README.md +6 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/identity/decorators.d.ts +3 -4
  7. package/lib/esm/identity/decorators.js +5 -11
  8. package/lib/esm/identity/decorators.js.map +1 -1
  9. package/lib/esm/identity/index.d.ts +0 -1
  10. package/lib/esm/identity/index.js +0 -1
  11. package/lib/esm/identity/index.js.map +1 -1
  12. package/lib/esm/index.d.ts +1 -1
  13. package/lib/esm/index.js +1 -1
  14. package/lib/esm/interfaces/ContextuallyLogged.d.ts +8 -0
  15. package/lib/esm/interfaces/ContextuallyLogged.js +2 -0
  16. package/lib/esm/interfaces/ContextuallyLogged.js.map +1 -0
  17. package/lib/esm/interfaces/ErrorParser.d.ts +2 -2
  18. package/lib/esm/interfaces/Executor.d.ts +1 -1
  19. package/lib/esm/interfaces/Observable.d.ts +8 -8
  20. package/lib/esm/interfaces/Observer.d.ts +2 -2
  21. package/lib/esm/interfaces/RawExecutor.d.ts +1 -1
  22. package/lib/esm/model/BaseModel.d.ts +2 -2
  23. package/lib/esm/model/BaseModel.js +2 -2
  24. package/lib/esm/{ram/model/RamSequenceModel.d.ts → model/SequenceModel.d.ts} +3 -3
  25. package/lib/esm/{ram/model/RamSequenceModel.js → model/SequenceModel.js} +12 -11
  26. package/lib/esm/model/SequenceModel.js.map +1 -0
  27. package/lib/esm/model/construction.d.ts +9 -8
  28. package/lib/esm/model/construction.js +2 -2
  29. package/lib/esm/model/construction.js.map +1 -1
  30. package/lib/esm/model/decorators.d.ts +5 -4
  31. package/lib/esm/model/decorators.js +3 -3
  32. package/lib/esm/model/decorators.js.map +1 -1
  33. package/lib/esm/model/index.d.ts +1 -0
  34. package/lib/esm/model/index.js +1 -0
  35. package/lib/esm/model/index.js.map +1 -1
  36. package/lib/esm/overrides/Metadata.d.ts +1 -8
  37. package/lib/esm/overrides/Model.d.ts +75 -0
  38. package/lib/esm/overrides/Model.js +2 -0
  39. package/lib/esm/overrides/Model.js.map +1 -0
  40. package/lib/esm/overrides/index.d.ts +2 -0
  41. package/lib/esm/overrides/index.js +2 -0
  42. package/lib/esm/overrides/index.js.map +1 -1
  43. package/lib/esm/overrides/injectables.d.ts +10 -0
  44. package/lib/esm/overrides/injectables.js +2 -0
  45. package/lib/esm/overrides/injectables.js.map +1 -0
  46. package/lib/esm/overrides/overrides.js +45 -3
  47. package/lib/esm/overrides/overrides.js.map +1 -1
  48. package/lib/esm/persistence/Adapter.d.ts +55 -53
  49. package/lib/esm/persistence/Adapter.js +85 -61
  50. package/lib/esm/persistence/Adapter.js.map +1 -1
  51. package/lib/esm/persistence/Dispatch.d.ts +7 -6
  52. package/lib/esm/persistence/Dispatch.js +25 -18
  53. package/lib/esm/persistence/Dispatch.js.map +1 -1
  54. package/lib/esm/persistence/ObserverHandler.d.ts +7 -6
  55. package/lib/esm/persistence/ObserverHandler.js +5 -4
  56. package/lib/esm/persistence/ObserverHandler.js.map +1 -1
  57. package/lib/esm/persistence/Sequence.d.ts +34 -25
  58. package/lib/esm/persistence/Sequence.js +136 -15
  59. package/lib/esm/persistence/Sequence.js.map +1 -1
  60. package/lib/esm/persistence/constants.d.ts +1 -0
  61. package/lib/esm/persistence/constants.js +1 -0
  62. package/lib/esm/persistence/constants.js.map +1 -1
  63. package/lib/esm/persistence/generators.d.ts +14 -0
  64. package/lib/esm/persistence/generators.js +31 -0
  65. package/lib/esm/persistence/generators.js.map +1 -0
  66. package/lib/esm/persistence/index.d.ts +1 -0
  67. package/lib/esm/persistence/index.js +1 -0
  68. package/lib/esm/persistence/index.js.map +1 -1
  69. package/lib/esm/persistence/migrations.d.ts +8 -8
  70. package/lib/esm/persistence/migrations.js +8 -9
  71. package/lib/esm/persistence/migrations.js.map +1 -1
  72. package/lib/esm/persistence/types.d.ts +38 -20
  73. package/lib/esm/query/Paginator.d.ts +6 -5
  74. package/lib/esm/query/Paginator.js +4 -4
  75. package/lib/esm/query/Paginator.js.map +1 -1
  76. package/lib/esm/query/Statement.d.ts +9 -8
  77. package/lib/esm/query/Statement.js +23 -10
  78. package/lib/esm/query/Statement.js.map +1 -1
  79. package/lib/esm/ram/RamAdapter.d.ts +22 -31
  80. package/lib/esm/ram/RamAdapter.js +36 -34
  81. package/lib/esm/ram/RamAdapter.js.map +1 -1
  82. package/lib/esm/ram/RamPaginator.d.ts +2 -1
  83. package/lib/esm/ram/RamPaginator.js +5 -3
  84. package/lib/esm/ram/RamPaginator.js.map +1 -1
  85. package/lib/esm/ram/RamStatement.d.ts +7 -7
  86. package/lib/esm/ram/RamStatement.js.map +1 -1
  87. package/lib/esm/ram/handlers.d.ts +3 -4
  88. package/lib/esm/ram/handlers.js.map +1 -1
  89. package/lib/esm/ram/index.d.ts +0 -3
  90. package/lib/esm/ram/index.js +0 -3
  91. package/lib/esm/ram/index.js.map +1 -1
  92. package/lib/esm/ram/types.d.ts +4 -12
  93. package/lib/esm/repository/Repository.d.ts +31 -95
  94. package/lib/esm/repository/Repository.js +107 -203
  95. package/lib/esm/repository/Repository.js.map +1 -1
  96. package/lib/esm/repository/decorators.js +4 -3
  97. package/lib/esm/repository/decorators.js.map +1 -1
  98. package/lib/esm/repository/utils.d.ts +1 -1
  99. package/lib/esm/repository/utils.js +2 -3
  100. package/lib/esm/repository/utils.js.map +1 -1
  101. package/lib/esm/utils/ContextualLoggedClass.d.ts +16 -0
  102. package/lib/esm/utils/ContextualLoggedClass.js +29 -0
  103. package/lib/esm/utils/ContextualLoggedClass.js.map +1 -0
  104. package/lib/esm/utils/Services.d.ts +50 -0
  105. package/lib/esm/utils/Services.js +154 -0
  106. package/lib/esm/utils/Services.js.map +1 -0
  107. package/lib/esm/utils/decorators.d.ts +1 -9
  108. package/lib/esm/utils/decorators.js +26 -15
  109. package/lib/esm/utils/decorators.js.map +1 -1
  110. package/lib/esm/utils/index.d.ts +2 -1
  111. package/lib/esm/utils/index.js +2 -1
  112. package/lib/esm/utils/index.js.map +1 -1
  113. package/lib/identity/decorators.cjs +5 -11
  114. package/lib/identity/decorators.d.ts +3 -4
  115. package/lib/identity/decorators.js.map +1 -1
  116. package/lib/identity/index.cjs +0 -1
  117. package/lib/identity/index.d.ts +0 -1
  118. package/lib/identity/index.js.map +1 -1
  119. package/lib/index.cjs +1 -1
  120. package/lib/index.d.ts +1 -1
  121. package/lib/interfaces/ContextuallyLogged.cjs +3 -0
  122. package/lib/interfaces/ContextuallyLogged.d.ts +8 -0
  123. package/lib/interfaces/ContextuallyLogged.js.map +1 -0
  124. package/lib/interfaces/ErrorParser.d.ts +2 -2
  125. package/lib/interfaces/Executor.d.ts +1 -1
  126. package/lib/interfaces/Observable.d.ts +8 -8
  127. package/lib/interfaces/Observer.d.ts +2 -2
  128. package/lib/interfaces/RawExecutor.d.ts +1 -1
  129. package/lib/model/BaseModel.cjs +2 -2
  130. package/lib/model/BaseModel.d.ts +2 -2
  131. package/lib/{ram/model/RamSequenceModel.cjs → model/SequenceModel.cjs} +14 -13
  132. package/lib/{ram/model/RamSequenceModel.d.ts → model/SequenceModel.d.ts} +3 -3
  133. package/lib/model/SequenceModel.js.map +1 -0
  134. package/lib/model/construction.cjs +2 -2
  135. package/lib/model/construction.d.ts +9 -8
  136. package/lib/model/construction.js.map +1 -1
  137. package/lib/model/decorators.cjs +3 -3
  138. package/lib/model/decorators.d.ts +5 -4
  139. package/lib/model/decorators.js.map +1 -1
  140. package/lib/model/index.cjs +1 -0
  141. package/lib/model/index.d.ts +1 -0
  142. package/lib/model/index.js.map +1 -1
  143. package/lib/overrides/Metadata.d.ts +1 -8
  144. package/lib/overrides/Model.cjs +4 -0
  145. package/lib/overrides/Model.d.ts +75 -0
  146. package/lib/overrides/Model.js.map +1 -0
  147. package/lib/overrides/index.cjs +2 -0
  148. package/lib/overrides/index.d.ts +2 -0
  149. package/lib/overrides/index.js.map +1 -1
  150. package/lib/overrides/injectables.cjs +4 -0
  151. package/lib/overrides/injectables.d.ts +10 -0
  152. package/lib/overrides/injectables.js.map +1 -0
  153. package/lib/overrides/overrides.cjs +43 -1
  154. package/lib/overrides/overrides.js.map +1 -1
  155. package/lib/persistence/Adapter.cjs +90 -66
  156. package/lib/persistence/Adapter.d.ts +55 -53
  157. package/lib/persistence/Adapter.js.map +1 -1
  158. package/lib/persistence/Dispatch.cjs +25 -18
  159. package/lib/persistence/Dispatch.d.ts +7 -6
  160. package/lib/persistence/Dispatch.js.map +1 -1
  161. package/lib/persistence/ObserverHandler.cjs +5 -4
  162. package/lib/persistence/ObserverHandler.d.ts +7 -6
  163. package/lib/persistence/ObserverHandler.js.map +1 -1
  164. package/lib/persistence/Sequence.cjs +136 -15
  165. package/lib/persistence/Sequence.d.ts +34 -25
  166. package/lib/persistence/Sequence.js.map +1 -1
  167. package/lib/persistence/constants.cjs +1 -0
  168. package/lib/persistence/constants.d.ts +1 -0
  169. package/lib/persistence/constants.js.map +1 -1
  170. package/lib/persistence/generators.cjs +36 -0
  171. package/lib/persistence/generators.d.ts +14 -0
  172. package/lib/persistence/generators.js.map +1 -0
  173. package/lib/persistence/index.cjs +1 -0
  174. package/lib/persistence/index.d.ts +1 -0
  175. package/lib/persistence/index.js.map +1 -1
  176. package/lib/persistence/migrations.cjs +7 -8
  177. package/lib/persistence/migrations.d.ts +8 -8
  178. package/lib/persistence/migrations.js.map +1 -1
  179. package/lib/persistence/types.d.ts +38 -20
  180. package/lib/query/Paginator.cjs +4 -4
  181. package/lib/query/Paginator.d.ts +6 -5
  182. package/lib/query/Paginator.js.map +1 -1
  183. package/lib/query/Statement.cjs +34 -21
  184. package/lib/query/Statement.d.ts +9 -8
  185. package/lib/query/Statement.js.map +1 -1
  186. package/lib/ram/RamAdapter.cjs +35 -33
  187. package/lib/ram/RamAdapter.d.ts +22 -31
  188. package/lib/ram/RamAdapter.js.map +1 -1
  189. package/lib/ram/RamPaginator.cjs +5 -3
  190. package/lib/ram/RamPaginator.d.ts +2 -1
  191. package/lib/ram/RamPaginator.js.map +1 -1
  192. package/lib/ram/RamStatement.d.ts +7 -7
  193. package/lib/ram/RamStatement.js.map +1 -1
  194. package/lib/ram/handlers.d.ts +3 -4
  195. package/lib/ram/handlers.js.map +1 -1
  196. package/lib/ram/index.cjs +0 -3
  197. package/lib/ram/index.d.ts +0 -3
  198. package/lib/ram/index.js.map +1 -1
  199. package/lib/ram/types.d.ts +4 -12
  200. package/lib/repository/Repository.cjs +108 -204
  201. package/lib/repository/Repository.d.ts +31 -95
  202. package/lib/repository/Repository.js.map +1 -1
  203. package/lib/repository/decorators.cjs +2 -1
  204. package/lib/repository/decorators.js.map +1 -1
  205. package/lib/repository/utils.cjs +2 -3
  206. package/lib/repository/utils.d.ts +1 -1
  207. package/lib/repository/utils.js.map +1 -1
  208. package/lib/utils/ContextualLoggedClass.cjs +33 -0
  209. package/lib/utils/ContextualLoggedClass.d.ts +16 -0
  210. package/lib/utils/ContextualLoggedClass.js.map +1 -0
  211. package/lib/utils/Services.cjs +159 -0
  212. package/lib/utils/Services.d.ts +50 -0
  213. package/lib/utils/Services.js.map +1 -0
  214. package/lib/utils/decorators.cjs +27 -16
  215. package/lib/utils/decorators.d.ts +1 -9
  216. package/lib/utils/decorators.js.map +1 -1
  217. package/lib/utils/index.cjs +2 -1
  218. package/lib/utils/index.d.ts +2 -1
  219. package/lib/utils/index.js.map +1 -1
  220. package/package.json +1 -1
  221. package/lib/esm/identity/utils.d.ts +0 -24
  222. package/lib/esm/identity/utils.js +0 -44
  223. package/lib/esm/identity/utils.js.map +0 -1
  224. package/lib/esm/ram/RamContext.d.ts +0 -28
  225. package/lib/esm/ram/RamContext.js +0 -30
  226. package/lib/esm/ram/RamContext.js.map +0 -1
  227. package/lib/esm/ram/RamSequence.d.ts +0 -75
  228. package/lib/esm/ram/RamSequence.js +0 -145
  229. package/lib/esm/ram/RamSequence.js.map +0 -1
  230. package/lib/esm/ram/model/RamSequenceModel.js.map +0 -1
  231. package/lib/esm/ram/model/index.d.ts +0 -1
  232. package/lib/esm/ram/model/index.js +0 -2
  233. package/lib/esm/ram/model/index.js.map +0 -1
  234. package/lib/identity/utils.cjs +0 -49
  235. package/lib/identity/utils.d.ts +0 -24
  236. package/lib/identity/utils.js.map +0 -1
  237. package/lib/ram/RamContext.cjs +0 -34
  238. package/lib/ram/RamContext.d.ts +0 -28
  239. package/lib/ram/RamContext.js.map +0 -1
  240. package/lib/ram/RamSequence.cjs +0 -149
  241. package/lib/ram/RamSequence.d.ts +0 -75
  242. package/lib/ram/RamSequence.js.map +0 -1
  243. package/lib/ram/model/RamSequenceModel.js.map +0 -1
  244. package/lib/ram/model/index.cjs +0 -18
  245. package/lib/ram/model/index.d.ts +0 -1
  246. package/lib/ram/model/index.js.map +0 -1
@@ -1,19 +1,20 @@
1
- import { BaseError, Context, OperationKeys, RepositoryFlags, Contextual, BulkCrudOperationKeys } from "@decaf-ts/db-decorators";
1
+ import { BaseError, Context, OperationKeys, Contextual, BulkCrudOperationKeys, PrimaryKeyType } from "@decaf-ts/db-decorators";
2
2
  import { type Observer } from "../interfaces/Observer";
3
3
  import { Model, ModelConstructor } from "@decaf-ts/decorator-validation";
4
4
  import { SequenceOptions } from "../interfaces/SequenceOptions";
5
5
  import { RawExecutor } from "../interfaces/RawExecutor";
6
- import { Observable } from "../interfaces/Observable";
7
6
  import type { Repository } from "../repository/Repository";
8
- import { Sequence } from "./Sequence";
7
+ import type { Sequence } from "./Sequence";
9
8
  import { ErrorParser } from "../interfaces";
10
9
  import { Statement } from "../query/Statement";
11
10
  import type { Dispatch } from "./Dispatch";
12
- import { type EventIds, Migration, type ObserverFilter } from "./types";
11
+ import { type EventIds, FlagsOf, Migration, type ObserverFilter, PersistenceObservable, PersistenceObserver, PreparedModel } from "./types";
13
12
  import { ObserverHandler } from "./ObserverHandler";
14
- import { LoggedClass } from "@decaf-ts/logging";
13
+ import { Impersonatable } from "@decaf-ts/logging";
15
14
  import { AdapterDispatch } from "./types";
16
15
  import { type Constructor } from "@decaf-ts/decoration";
16
+ import { ContextualArgs, ContextualizedArgs, ContextualLoggedClass } from "../utils/ContextualLoggedClass";
17
+ export type AdapterSubClass<A> = A extends Adapter<any, any, any, any> ? A : never;
17
18
  /**
18
19
  * @description Abstract Facade class for persistence adapters
19
20
  * @summary Provides the foundation for all database adapters in the persistence layer. This class
@@ -106,15 +107,16 @@ import { type Constructor } from "@decaf-ts/decoration";
106
107
  * Adapter --|> Observer
107
108
  * Adapter --|> ErrorParser
108
109
  */
109
- export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends RepositoryFlags = RepositoryFlags, CONTEXT extends Context<FLAGS> = Context<FLAGS>> extends LoggedClass implements RawExecutor<QUERY>, Contextual<FLAGS, CONTEXT>, Observable, Observer, ErrorParser {
110
+ export declare abstract class Adapter<CONF, CONN, QUERY, CONTEXT extends Context<any> = Context> extends ContextualLoggedClass<CONTEXT> implements RawExecutor<QUERY>, Contextual<CONTEXT>, PersistenceObservable<CONTEXT>, PersistenceObserver<CONTEXT>, Impersonatable<any, [Partial<CONF>, ...any[]]>, ErrorParser {
110
111
  private readonly _config;
111
112
  readonly flavour: string;
112
113
  private readonly _alias?;
113
114
  private static _currentFlavour;
114
115
  private static _cache;
115
116
  private static _baseRepository;
117
+ private static _baseSequence;
116
118
  private static _baseDispatch;
117
- protected dispatch?: AdapterDispatch;
119
+ protected dispatch?: AdapterDispatch<typeof this>;
118
120
  protected readonly observerHandler?: ObserverHandler;
119
121
  protected _client?: CONN;
120
122
  /**
@@ -134,9 +136,9 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
134
136
  * @description Gets the repository constructor for this adapter
135
137
  * @summary Returns the constructor for creating repositories that work with this adapter
136
138
  * @template M - The model type
137
- * @return {Constructor<Repository<M, QUERY, Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT>, FLAGS, CONTEXT>>} The repository constructor
139
+ * @return {Constructor<Repository<any, Adapter<CONF, CONN, QUERY, CONTEXT>>>} The repository constructor
138
140
  */
139
- repository<M extends Model<boolean>>(): Constructor<Repository<M, QUERY, Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT>, FLAGS, CONTEXT>>;
141
+ repository<R extends Repository<any, Adapter<CONF, CONN, QUERY, CONTEXT>>>(): Constructor<R>;
140
142
  protected shutdownProxies(k?: string): Promise<void>;
141
143
  /**
142
144
  * @description Shuts down the adapter
@@ -156,13 +158,13 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
156
158
  * @template M - The model type
157
159
  * @return {Statement} A statement builder for the model
158
160
  */
159
- abstract Statement<M extends Model>(): Statement<QUERY, M, any>;
161
+ abstract Statement<M extends Model>(): Statement<M, Adapter<CONF, CONN, QUERY, CONTEXT>, any>;
160
162
  /**
161
163
  * @description Creates a new dispatch instance
162
164
  * @summary Factory method that creates a dispatch instance for this adapter
163
165
  * @return {Dispatch} A new dispatch instance
164
166
  */
165
- protected Dispatch(): Dispatch;
167
+ protected Dispatch(): Dispatch<Adapter<CONF, CONN, QUERY, CONTEXT>>;
166
168
  /**
167
169
  * @description Creates a new observer handler
168
170
  * @summary Factory method that creates an observer handler for this adapter
@@ -180,9 +182,10 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
180
182
  * @description Parses a database error into a standardized error
181
183
  * @summary Converts database-specific errors into standardized application errors
182
184
  * @param {Error} err - The original database error
185
+ * @param args
183
186
  * @return {BaseError} A standardized error
184
187
  */
185
- abstract parseError(err: Error): BaseError;
188
+ abstract parseError<E extends BaseError>(err: Error, ...args: any[]): E;
186
189
  /**
187
190
  * @description Initializes the adapter
188
191
  * @summary Performs any necessary setup for the adapter, such as establishing connections
@@ -196,7 +199,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
196
199
  * @param {SequenceOptions} options - Configuration options for the sequence
197
200
  * @return {Promise<Sequence>} A promise that resolves to a new sequence instance
198
201
  */
199
- abstract Sequence(options: SequenceOptions): Promise<Sequence>;
202
+ Sequence(options: SequenceOptions): Promise<Sequence>;
200
203
  /**
201
204
  * @description Creates repository flags for an operation
202
205
  * @summary Generates a set of flags that describe a database operation, combining default flags with overrides
@@ -208,18 +211,12 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
208
211
  * @param {...any[]} args - Additional arguments
209
212
  * @return {Promise<F>} The complete set of flags
210
213
  */
211
- protected flags<M extends Model>(operation: OperationKeys, model: Constructor<M>, flags: Partial<FLAGS>, ...args: any[]): Promise<FLAGS>;
214
+ protected flags<M extends Model>(operation: OperationKeys | string, model: Constructor<M> | Constructor<M>[], flags: Partial<FlagsOf<CONTEXT>>, ...args: any[]): Promise<FlagsOf<CONTEXT>>;
212
215
  /**
213
216
  * @description The context constructor for this adapter
214
217
  * @summary Reference to the context class constructor used by this adapter
215
218
  */
216
- protected Context: {
217
- new (): Context<FLAGS>;
218
- factory: import("@decaf-ts/db-decorators").ContextFactory<any>;
219
- childFrom<F extends RepositoryFlags, C extends Context<F>>(context: C, overrides?: Partial<F>): C;
220
- from<M extends Model, F extends RepositoryFlags, C extends Context<F>>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<F>, model: Constructor<M>, ...args: any[]): Promise<C>;
221
- args<M extends Model<any>, C extends Context<F>, F extends RepositoryFlags>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, model: Constructor<M>, args: any[], contextual?: Contextual<F>, overrides?: Partial<F>): Promise<import("@decaf-ts/db-decorators").ContextArgs<F, C>>;
222
- };
219
+ protected readonly Context: Constructor<CONTEXT>;
223
220
  /**
224
221
  * @description Creates a context for a database operation
225
222
  * @summary Generates a context object that describes a database operation, used for tracking and auditing
@@ -231,46 +228,42 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
231
228
  * @param {...any[]} args - Additional arguments
232
229
  * @return {Promise<C>} A promise that resolves to the context object
233
230
  */
234
- context<M extends Model>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<FLAGS>, model: Constructor<M>, ...args: any[]): Promise<CONTEXT>;
231
+ context<M extends Model>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE | string, overrides: Partial<FlagsOf<CONTEXT>>, model: Constructor<M> | Constructor<M>[], ...args: any[]): Promise<CONTEXT>;
235
232
  /**
236
233
  * @description Prepares a model for persistence
237
234
  * @summary Converts a model instance into a format suitable for database storage,
238
235
  * handling column mapping and separating transient properties
236
+ * handling column mapping and separating transient properties
239
237
  * @template M - The model type
240
238
  * @param {M} model - The model instance to prepare
241
- * @param pk - The primary key property name
242
239
  * @param args - optional args for subclassing purposes
243
240
  * @return The prepared data
244
241
  */
245
- prepare<M extends Model>(model: M, pk: keyof M, ...args: any[]): {
246
- record: Record<string, any>;
247
- id: string;
248
- transient?: Record<string, any>;
249
- };
242
+ prepare<M extends Model>(model: M, ...args: ContextualArgs<CONTEXT>): PreparedModel;
250
243
  /**
251
244
  * @description Converts database data back into a model instance
252
245
  * @summary Reconstructs a model instance from database data, handling column mapping
253
246
  * and reattaching transient properties
254
247
  * @template M - The model type
255
248
  * @param obj - The database record
256
- * @param {string|Constructor<M>} clazz - The model class or name
249
+ * @param {Constructor<M>} clazz - The model class or name
257
250
  * @param pk - The primary key property name
258
251
  * @param {string|number|bigint} id - The primary key value
259
252
  * @param [transient] - Transient properties to reattach
260
253
  * @param [args] - options args for subclassing purposes
261
254
  * @return {M} The reconstructed model instance
262
255
  */
263
- revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk: keyof M, id: string | number | bigint, transient?: Record<string, any>, ...args: any[]): M;
256
+ revert<M extends Model>(obj: Record<string, any>, clazz: Constructor<M>, id: PrimaryKeyType, transient?: Record<string, any>, ...args: ContextualArgs<CONTEXT>): M;
264
257
  /**
265
258
  * @description Creates a new record in the database
266
259
  * @summary Inserts a new record with the given ID and data into the specified table
267
- * @param {string} tableName - The name of the table to insert into
268
- * @param {string|number} id - The identifier for the new record
260
+ * @param {string} clazz - The name of the table to insert into
261
+ * @param {PrimaryKeyType} id - The identifier for the new record
269
262
  * @param model - The data to insert
270
263
  * @param {any[]} args - Additional arguments specific to the adapter implementation
271
264
  * @return A promise that resolves to the created record
272
265
  */
273
- abstract create(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
266
+ abstract create<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType, model: Record<string, any>, ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>>;
274
267
  /**
275
268
  * @description Creates multiple records in the database
276
269
  * @summary Inserts multiple records with the given IDs and data into the specified table
@@ -280,7 +273,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
280
273
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
281
274
  * @return A promise that resolves to an array of created records
282
275
  */
283
- createAll(tableName: string, id: (string | number)[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
276
+ createAll<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType[], model: Record<string, any>[], ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>[]>;
284
277
  /**
285
278
  * @description Retrieves a record from the database
286
279
  * @summary Fetches a record with the given ID from the specified table
@@ -289,7 +282,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
289
282
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
290
283
  * @return A promise that resolves to the retrieved record
291
284
  */
292
- abstract read(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
285
+ abstract read<M extends Model>(tableName: Constructor<M>, id: PrimaryKeyType, ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>>;
293
286
  /**
294
287
  * @description Retrieves multiple records from the database
295
288
  * @summary Fetches multiple records with the given IDs from the specified table
@@ -298,27 +291,28 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
298
291
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
299
292
  * @return A promise that resolves to an array of retrieved records
300
293
  */
301
- readAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
294
+ readAll<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType[], ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>[]>;
302
295
  /**
303
296
  * @description Updates a record in the database
304
297
  * @summary Modifies an existing record with the given ID in the specified table
305
- * @param {string} tableName - The name of the table to update
306
- * @param {string|number} id - The identifier of the record to update
298
+ * @template M - The model type
299
+ * @param {Constructor<M>} tableName - The name of the table to update
300
+ * @param {PrimaryKeyType} id - The identifier of the record to update
307
301
  * @param model - The new data for the record
308
302
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
309
303
  * @return A promise that resolves to the updated record
310
304
  */
311
- abstract update(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
305
+ abstract update<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType, model: Record<string, any>, ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>>;
312
306
  /**
313
307
  * @description Updates multiple records in the database
314
308
  * @summary Modifies multiple existing records with the given IDs in the specified table
315
- * @param {string} tableName - The name of the table to update
309
+ * @param {Constructor<M>} tableName - The name of the table to update
316
310
  * @param {string[]|number[]} id - The identifiers of the records to update
317
311
  * @param model - The new data for each record
318
312
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
319
313
  * @return A promise that resolves to an array of updated records
320
314
  */
321
- updateAll(tableName: string, id: string[] | number[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
315
+ updateAll<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType[], model: Record<string, any>[], ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>[]>;
322
316
  /**
323
317
  * @description Deletes a record from the database
324
318
  * @summary Removes a record with the given ID from the specified table
@@ -327,7 +321,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
327
321
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
328
322
  * @return A promise that resolves to the deleted record
329
323
  */
330
- abstract delete(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
324
+ abstract delete<M extends Model>(tableName: Constructor<M>, id: PrimaryKeyType, ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>>;
331
325
  /**
332
326
  * @description Deletes multiple records from the database
333
327
  * @summary Removes multiple records with the given IDs from the specified table
@@ -336,7 +330,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
336
330
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
337
331
  * @return A promise that resolves to an array of deleted records
338
332
  */
339
- deleteAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
333
+ deleteAll<M extends Model>(tableName: Constructor<M>, id: PrimaryKeyType[], ...args: ContextualArgs<CONTEXT>): Promise<Record<string, any>[]>;
340
334
  /**
341
335
  * @description Executes a raw query against the database
342
336
  * @summary Allows executing database-specific queries directly
@@ -346,7 +340,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
346
340
  * @param {...any[]} args - Additional arguments specific to the adapter implementation
347
341
  * @return {Promise<R>} A promise that resolves to the query result
348
342
  */
349
- abstract raw<R>(rawInput: QUERY, ...args: any[]): Promise<R>;
343
+ abstract raw<R>(rawInput: QUERY, ...args: ContextualArgs<CONTEXT>): Promise<R>;
350
344
  /**
351
345
  * @description Registers an observer for database events
352
346
  * @summary Adds an observer to be notified about database changes. The observer can optionally
@@ -373,7 +367,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
373
367
  * @param {...any[]} args - Additional arguments to pass to the observers
374
368
  * @return {Promise<void>} A promise that resolves when all observers have been notified
375
369
  */
376
- updateObservers(table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: any[]): Promise<void>;
370
+ updateObservers<M extends Model>(table: Constructor<M> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<CONTEXT>): Promise<void>;
377
371
  /**
378
372
  * @description Refreshes data based on a database event
379
373
  * @summary Implementation of the Observer interface method that delegates to updateObservers
@@ -383,7 +377,7 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
383
377
  * @param {...any[]} args - Additional arguments related to the event
384
378
  * @return {Promise<void>} A promise that resolves when the refresh is complete
385
379
  */
386
- refresh(table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: any[]): Promise<void>;
380
+ refresh<M extends Model>(table: Constructor<M> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<CONTEXT>): Promise<void>;
387
381
  /**
388
382
  * @description Gets a string representation of the adapter
389
383
  * @summary Returns a human-readable string identifying this adapter
@@ -411,12 +405,11 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
411
405
  * @template CONF - The database driver config
412
406
  * @template CONN - The database driver instance
413
407
  * @template QUERY - The query type
414
- * @template CCONTEXT - The context type
415
- * @template FLAGS - The repository flags type
408
+ * @template CONTEXT - The context type
416
409
  * @param {string} flavour - The flavor name of the adapter to retrieve
417
- * @return {Adapter<CONF, CONN, QUERY, CONTEXT, FLAGS> | undefined} The adapter instance or undefined if not found
410
+ * @return {Adapter<CONF, CONN, QUERY, CONTEXT> | undefined} The adapter instance or undefined if not found
418
411
  */
419
- static get<CONF, CONN, QUERY, CONTEXT extends Context<FLAGS>, FLAGS extends RepositoryFlags>(flavour?: any): Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT> | undefined;
412
+ static get<A extends Adapter<any, any, any, any>>(flavour?: any): A | undefined;
420
413
  /**
421
414
  * @description Sets the current default adapter
422
415
  * @summary Changes which adapter is used as the default for operations
@@ -433,6 +426,14 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
433
426
  */
434
427
  static models<M extends Model>(flavour: string): ModelConstructor<M>[];
435
428
  static decoration(): void;
429
+ /**
430
+ * @description retrieves the context from args and returns it, the logger and the args (with context at the end)
431
+ * @summary NOTE: if the last argument was a context, this removes the context from the arg list
432
+ * @param args
433
+ * @param method
434
+ */
435
+ static logCtx<CONTEXT extends Context<any>, ARGS extends any[] = any[]>(this: any, args: ARGS, method: string): ContextualizedArgs<CONTEXT, ARGS>;
436
+ static logCtx<CONTEXT extends Context<any>, ARGS extends any[] = any[]>(this: any, args: ARGS, method: (...args: any[]) => any): ContextualizedArgs<CONTEXT, ARGS>;
436
437
  protected proxies?: Record<string, typeof this>;
437
438
  /**
438
439
  * @description Returns the client instance for the adapter
@@ -447,7 +448,8 @@ export declare abstract class Adapter<CONF, CONN, QUERY, FLAGS extends Repositor
447
448
  */
448
449
  protected abstract getClient(): CONN;
449
450
  get client(): CONN;
450
- for(config: Partial<CONF>, ...args: any[]): typeof this;
451
- migrations(): Constructor<Migration<any, this, unknown, unknown, unknown, RepositoryFlags, Context<RepositoryFlags>>>[];
452
- migrate(migrations?: Constructor<Migration<any, any, any, any, any>>[]): Promise<void>;
451
+ for(config: Partial<CONF>, ...args: any[]): this;
452
+ migrations(): Constructor<Migration<any, this>>[];
453
+ protected getQueryRunner(): Promise<CONN>;
454
+ migrate(...args: [...any[], CONTEXT]): Promise<void>;
453
455
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Adapter.js","sourceRoot":"","sources":["../../src/persistence/Adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DASiC;AAEjC,yEAIwC;AAIxC,+CAA8C;AAK9C,gDAAiC;AAGjC,2DAAoD;AACpD,+CAAgD;AAChD,mDAAgE;AAEhE,qDAK8B;AAC9B,yCAA0C;AAE1C,MAAM,eAAe,GAAG,uBAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC;AACvE,uBAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAW,EAAE,EAAE;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,MAAM,IAAI,MAAM,KAAK,2BAAc;YAAE,OAAO,MAAM,CAAC;QACvD,MAAM,UAAU,GACd,OAAO,GAAG,KAAK,UAAU;YACvB,CAAC,CAAE,GAAmB;YACtB,CAAC,CAAG,GAAqC,EAAE,WAE3B,CAAC;QACrB,MAAM,iBAAiB,GACrB,UAAU,IAAI,OAAO,qBAAQ,CAAC,mBAAmB,CAAC,KAAK,UAAU;YAC/D,CAAC,CAAC,qBAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,iBAAiB,IAAI,iBAAiB,KAAK,2BAAc;YAC3D,OAAO,iBAAiB,CAAC;QAC3B,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;YAC1D,IAAI,aAAa,EAAE,OAAO;gBAAE,OAAO,aAAa,CAAC,OAAO,CAAC;YACzD,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,6DAA6D;IAC/D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,OAAO,2BAAc,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,MAAsB,OAOpB,SAAQ,qBAAW;aASJ,WAAM,GAAqD,EAAE,AAAvD,CAAwD;IAY7E;;;;;OAKG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,UAAU;QASR,IAAI,CAAC,OAAO,CAAC,eAAe;YAC1B,MAAM,IAAI,6BAAa,CACrB,gFAAgF,CACjF,CAAC;QACJ,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAGe,AAAN,KAAK,CAAC,eAAe,CAAC,CAAU;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;YAC3B,MAAM,IAAI,6BAAa,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACrC,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;oBAClE,SAAS;gBACX,CAAC;gBACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,YACmB,OAAa,EACrB,OAAe,EACP,MAAe;QAEhC,KAAK,EAAE,CAAC;QAJS,YAAO,GAAP,OAAO,CAAM;QACrB,YAAO,GAAP,OAAO,CAAQ;QACP,WAAM,GAAN,MAAM,CAAS;QA4GlC;;;WAGG;QACO,YAAO,GAAG,CAAA,uBAAc,CAAA,CAAC;QA7GjC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM;YAC9B,MAAM,IAAI,6BAAa,CACrB,GAAG,IAAI,CAAC,KAAK,wBAAwB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAClG,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,WAAW,IAAI,CAAC,KAAK,wBAAwB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAC3G,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,KAAK,iCAAiC,CAAC,CAAC;YACzE,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC;QACvC,CAAC;IACH,CAAC;IAUD;;;;OAIG;IACO,QAAQ;QAChB,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACO,eAAe;QACvB,OAAO,IAAI,iCAAe,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACO,UAAU,CAAC,IAAY;QAC/B,OAAO,CAAC,IAAI,CAAC;IACf,CAAC;IAUD;;;;;OAKG;IACH,6DAA6D;IAC7D,KAAK,CAAC,UAAU,CAAC,GAAG,IAAW,IAAkB,CAAC;IAUlD;;;;;;;;;;OAUG;IACO,KAAK,CAAC,KAAK,CACnB,SAAwB,EACxB,KAAqB,EACrB,KAAqB;IACrB,6DAA6D;IAC7D,GAAG,IAAW;QAEd,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,sCAAsB,EAAE,KAAK,EAAE;YACtD,cAAc,EAAE,IAAA,oBAAY,EAAC,KAAK,CAAC;YACnC,cAAc,EAAE,SAAS,KAAK,6BAAa,CAAC,IAAI;YAChD,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,SAAS;YACpB,2BAA2B,EAAE,qBAAQ,CAAC,oBAAoB,CACxD,KAAK,EACL,SAAS,CACV;SACF,CAAU,CAAC;IACd,CAAC;IAQD;;;;;;;;;;OAUG;IAEG,AAAN,KAAK,CAAC,OAAO,CACX,SAIwB,EACxB,SAAyB,EACzB,KAAqB,EACrB,GAAG,IAAW;QAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,KAAK,CACP,4BAA4B,SAAS,iBAAiB,KAAK,CAAC,IAAI,+BAA+B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAC3H,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;QACrE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAuB,CAAC;IACpE,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO,CACL,KAAQ,EACR,EAAW;IACX,6DAA6D;IAC7D,GAAG,IAAW;QAMd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAC/C,CAAC,KAA0B,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;YACzC,IAAI,OAAO,GAAG,KAAK,WAAW;gBAAE,OAAO,KAAK,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC7B,MAAM,IAAI,6BAAa,CAAC,iBAAiB,UAAU,cAAc,CAAC,CAAC;YACrE,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC,EACD,EAAE,CACH,CAAC;QACF,IAAK,KAAa,CAAC,2BAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CACP,0CAA2C,KAAa,CAAC,2BAAe,CAAC,QAAQ,CAAC,EAAE,CACrF,CAAC;YACF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,2BAAe,CAAC,QAAQ,EAAE;gBACtD,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAG,KAAa,CAAC,2BAAe,CAAC,QAAQ,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM;YACd,EAAE,EAAE,KAAK,CAAC,EAAE,CAAW;YACvB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CACJ,GAAwB,EACxB,KAA8B,EAC9B,EAAW,EACX,EAA4B,EAC5B,SAA+B;IAC/B,6DAA6D;IAC7D,GAAG,IAAW;QAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,EAAE,GAAwB,EAAE,CAAC;QACnC,EAAE,CAAC,EAAY,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CACR,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAC9D,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,2BAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAQ,EAAE,GAAG,EAAE,EAAE;YACrD,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,KAA6B,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAA,qBAAa,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,OAAO,CACT,mCAAmC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvE,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;gBAC/C,IAAI,GAAG,IAAI,MAAM;oBACf,MAAM,IAAI,6BAAa,CACrB,sBAAsB,GAAG,4BAA4B,CAAC,CAAC,WAAW,CAAC,IAAI,wBAAwB,CAChG,CAAC;gBACJ,MAAM,CAAC,GAAc,CAAC,GAAG,GAAG,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CACP,iBAAiB,IAAI,CAAC,OAAO,6BAA6B,CAAC,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CACrG,CAAC;YACF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,2BAAe,CAAC,QAAQ,EAAE;gBACtD,UAAU,EAAE,KAAK;gBACjB,YAAY,EAAE,KAAK;gBACnB,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAkBD;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,EAAuB,EACvB,KAA4B,EAC5B,GAAG,IAAW;QAEd,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC5B,MAAM,IAAI,6BAAa,CAAC,0CAA0C,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,YAAY,SAAS,QAAQ,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,GAAG,CAChB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CACvE,CAAC;IACJ,CAAC;IAgBD;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,EAAgC,EAChC,GAAG,IAAW;QAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,YAAY,SAAS,QAAQ,CAAC,CAAC;QAC/D,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAkBD;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,EAAuB,EACvB,KAA4B,EAC5B,GAAG,IAAW;QAEd,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC5B,MAAM,IAAI,6BAAa,CAAC,0CAA0C,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,YAAY,SAAS,QAAQ,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,GAAG,CAChB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CACvE,CAAC;IACJ,CAAC;IAgBD;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,EAAgC,EAChC,GAAG,IAAW;QAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,YAAY,SAAS,QAAQ,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAaD;;;;;;;OAOG;IAEH,OAAO,CAAC,QAAkB,EAAE,MAAuB;QACjD,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE;gBAC7C,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;gBAC7B,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,IAAI,CAAC,eAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG;aACL,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;aACjB,OAAO,CAAC,4BAA4B,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IAEH,SAAS,CAAC,QAAkB;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,MAAM,IAAI,6BAAa,CACrB,oEAAoE,CACrE,CAAC;QACJ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG;aACL,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;aACnB,OAAO,CAAC,YAAY,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,KAAqD,EACrD,EAAY,EACZ,GAAG,IAAW;QAEd,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB,MAAM,IAAI,6BAAa,CACrB,oEAAoE,CACrE,CAAC;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,GAAG,CAAC,OAAO,CACT,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,0BAA0B,IAAI,CAAC,KAAK,EAAE,CAC/E,CAAC;QACF,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CACxC,IAAI,CAAC,GAAG,EACR,KAAK,EACL,KAAK,EACL,EAAE,EACF,GAAG,IAAI,CACR,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CACX,KAAa,EACb,KAAqD,EACrD,EAAY,EACZ,GAAG,IAAW;QAEd,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACM,QAAQ;QACf,OAAO,GAAG,IAAI,CAAC,OAAO,sBAAsB,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAkB,KAAqB;QACrD,OAAO,qBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,cAAc;QACvB,IAAI,CAAC,OAAO,CAAC,eAAe;YAC1B,MAAM,IAAI,6BAAa,CACrB,4DAA4D,CAC7D,CAAC;QACJ,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,MAAM,KAAK,OAAO;QAChB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,GAAG,CAMR,OAAa;QACb,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,6BAAa,CAAC,+BAA+B,OAAO,GAAG,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,OAAe;QAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAkB,OAAe;QAC5C,IAAI,CAAC;YACH,OAAO,qBAAQ,CAAC,WAAW,CAAC,OAAO,CAA0B,CAAC;QAChE,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,6BAAa,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,UAAU,KAAU,CAAC;IAiB5B,IACI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,6DAA6D;IAC7D,GAAG,CAAC,MAAqB,EAAE,GAAG,IAAW;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,MAAM,IAAA,8BAAO,EAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAgB,CAAC;QAEjE,IAAI,MAAW,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE;YAC5B,GAAG,EAAE,CAAC,MAAmB,EAAE,CAAkB,EAAE,QAAa,EAAE,EAAE;gBAC9D,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpB,MAAM,YAAY,GAAS,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;gBACjD,CAAC;gBACD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC;YACD,GAAG,EAAE,CAAC,MAAW,EAAE,CAAkB,EAAE,KAAU,EAAE,QAAa,EAAE,EAAE;gBAClE,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpB,MAAM,GAAG,KAAK,CAAC;oBACf,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU;QACR,OAAO,qBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,aAEM,IAAI,CAAC,UAAU,EAAE;QAEvB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,EAAE,CAAC,IAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,uBAAc,CAAC,CAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;;AAhxBH,0BAixBC;AA3sBiB;IADf,IAAA,aAAK,GAAE;;;;8CAuBP;AAkJK;IADL,IAAA,aAAK,GAAE;;;;sCAiBP;AA8RD;IADC,IAAA,aAAK,GAAE;;;;sCAgBP;AASD;IADC,IAAA,aAAK,GAAE;;;;wCAUP;AA2JD;IAAC,IAAA,aAAK,GAAE;;;qCAMP"}
1
+ {"version":3,"file":"Adapter.js","sourceRoot":"","sources":["../../src/persistence/Adapter.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dispatch = void 0;
4
4
  const db_decorators_1 = require("@decaf-ts/db-decorators");
5
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
5
6
  const Adapter_1 = require("./Adapter.cjs");
6
7
  const errors_1 = require("./errors.cjs");
7
- const logging_1 = require("@decaf-ts/logging");
8
+ const ContextualLoggedClass_1 = require("./../utils/ContextualLoggedClass.cjs");
8
9
  /**
9
10
  * @description Dispatches database operation events to observers
10
11
  * @summary The Dispatch class implements the Observable interface and is responsible for intercepting
@@ -31,7 +32,7 @@ const logging_1 = require("@decaf-ts/logging");
31
32
  * dispatch.unObserve(adapter);
32
33
  * ```
33
34
  */
34
- class Dispatch extends logging_1.LoggedClass {
35
+ class Dispatch extends ContextualLoggedClass_1.ContextualLoggedClass {
35
36
  /**
36
37
  * @description Creates a new Dispatch instance
37
38
  * @summary Initializes a new Dispatch instance without any adapter
@@ -80,7 +81,9 @@ class Dispatch extends logging_1.LoggedClass {
80
81
  // Gracefully skip initialization when no adapter is observed yet.
81
82
  // Some tests or setups may construct a Dispatch before calling observe().
82
83
  // Instead of throwing, we no-op so that later observe() can proceed.
83
- this.log.verbose(`No adapter observed for dispatch; skipping initialization`);
84
+ this.log
85
+ .for(this.initialize)
86
+ .verbose(`No adapter observed for dispatch; skipping initialization`);
84
87
  return;
85
88
  }
86
89
  const adapter = this.adapter;
@@ -91,17 +94,17 @@ class Dispatch extends logging_1.LoggedClass {
91
94
  db_decorators_1.BulkCrudOperationKeys.CREATE_ALL,
92
95
  db_decorators_1.BulkCrudOperationKeys.UPDATE_ALL,
93
96
  db_decorators_1.BulkCrudOperationKeys.DELETE_ALL,
94
- ].forEach((method) => {
95
- if (!adapter[method])
96
- throw new db_decorators_1.InternalError(`Method ${method} not found in ${adapter.alias} adapter to bind Observables Dispatch`);
97
- let descriptor = Object.getOwnPropertyDescriptor(adapter, method);
97
+ ].forEach((toWrap) => {
98
+ if (!adapter[toWrap])
99
+ throw new db_decorators_1.InternalError(`Method ${toWrap} not found in ${adapter.alias} adapter to bind Observables Dispatch`);
100
+ let descriptor = Object.getOwnPropertyDescriptor(adapter, toWrap);
98
101
  let proto = adapter;
99
102
  while (!descriptor && proto !== Object.prototype) {
100
103
  proto = Object.getPrototypeOf(proto);
101
- descriptor = Object.getOwnPropertyDescriptor(proto, method);
104
+ descriptor = Object.getOwnPropertyDescriptor(proto, toWrap);
102
105
  }
103
106
  if (!descriptor || !descriptor.writable) {
104
- this.log.error(`Could not find method ${method} to bind Observables Dispatch`);
107
+ this.log.error(`Could not find method ${toWrap} to bind Observables Dispatch`);
105
108
  return;
106
109
  }
107
110
  function bulkToSingle(method) {
@@ -117,16 +120,17 @@ class Dispatch extends logging_1.LoggedClass {
117
120
  }
118
121
  }
119
122
  // @ts-expect-error because there are read only properties
120
- adapter[method] = new Proxy(adapter[method], {
123
+ adapter[toWrap] = new Proxy(adapter[toWrap], {
121
124
  apply: async (target, thisArg, argArray) => {
125
+ const { log, ctxArgs } = thisArg["logCtx"](argArray, target);
122
126
  const [tableName, ids] = argArray;
123
- const result = await target.apply(thisArg, argArray);
124
- this.updateObservers(tableName, bulkToSingle(method), ids)
127
+ const result = await target.apply(thisArg, ctxArgs);
128
+ this.updateObservers(tableName, bulkToSingle(toWrap), ids, result, ...ctxArgs.slice(argArray.length))
125
129
  .then(() => {
126
- this.log.verbose(`Observer refresh dispatched by ${method} for ${tableName}`);
127
- this.log.debug(`pks: ${ids}`);
130
+ log.verbose(`Observer refresh dispatched by ${toWrap} for ${tableName}`);
131
+ log.debug(`pks: ${ids}`);
128
132
  })
129
- .catch((e) => this.log.error(`Failed to dispatch observer refresh for ${method} on ${tableName}: ${e}`));
133
+ .catch((e) => log.error(`Failed to dispatch observer refresh for ${toWrap} on ${tableName}: ${e}`));
130
134
  return result;
131
135
  },
132
136
  });
@@ -172,13 +176,16 @@ class Dispatch extends logging_1.LoggedClass {
172
176
  * @param {EventIds} id - The identifier(s) of the affected record(s)
173
177
  * @return {Promise<void>} A promise that resolves when all observers have been notified
174
178
  */
175
- async updateObservers(table, event, id) {
179
+ async updateObservers(model, event, id, ...args) {
180
+ const table = typeof model === "string" ? model : decorator_validation_1.Model.tableName(model);
181
+ const { log, ctxArgs } = this.logCtx(args, this.updateObservers);
176
182
  if (!this.adapter) {
177
- this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${table}:${event}`);
183
+ log.verbose(`No adapter observed for dispatch; skipping observer update for ${table}:${event}`);
178
184
  return;
179
185
  }
180
186
  try {
181
- await this.adapter.refresh(table, event, id);
187
+ log.debug(`Dispatching ${event} from table ${table} for ${event} with id: ${JSON.stringify(id)}`);
188
+ await this.adapter.refresh(model, event, id, ...ctxArgs);
182
189
  }
183
190
  catch (e) {
184
191
  throw new db_decorators_1.InternalError(`Failed to refresh dispatch: ${e}`);
@@ -2,8 +2,9 @@ import { OperationKeys, BulkCrudOperationKeys } from "@decaf-ts/db-decorators";
2
2
  import { ModelConstructor } from "@decaf-ts/decorator-validation";
3
3
  import { Observer } from "../interfaces";
4
4
  import { Adapter } from "./Adapter";
5
- import { AdapterDispatch, EventIds } from "./types";
6
- import { LoggedClass } from "@decaf-ts/logging";
5
+ import { AdapterDispatch, ContextOf, EventIds, LoggerOf } from "./types";
6
+ import { Constructor } from "@decaf-ts/decoration";
7
+ import { ContextualLoggedClass } from "../utils/ContextualLoggedClass";
7
8
  /**
8
9
  * @description Dispatches database operation events to observers
9
10
  * @summary The Dispatch class implements the Observable interface and is responsible for intercepting
@@ -30,12 +31,12 @@ import { LoggedClass } from "@decaf-ts/logging";
30
31
  * dispatch.unObserve(adapter);
31
32
  * ```
32
33
  */
33
- export declare class Dispatch extends LoggedClass implements AdapterDispatch {
34
+ export declare class Dispatch<A extends Adapter<any, any, any, any>> extends ContextualLoggedClass<LoggerOf<A>> implements AdapterDispatch<A> {
34
35
  /**
35
36
  * @description The adapter being observed
36
37
  * @summary Reference to the database adapter whose operations are being monitored
37
38
  */
38
- protected adapter?: Adapter<any, any, any, any, any>;
39
+ protected adapter?: A;
39
40
  /**
40
41
  * @description List of model constructors
41
42
  * @summary Array of model constructors that are registered with the adapter
@@ -95,7 +96,7 @@ export declare class Dispatch extends LoggedClass implements AdapterDispatch {
95
96
  * @param {Adapter<any, any, any, any>} observer - The adapter to observe
96
97
  * @return {void}
97
98
  */
98
- observe(observer: Adapter<any, any, any, any>): void;
99
+ observe(observer: A): void;
99
100
  /**
100
101
  * @description Stops observing an adapter
101
102
  * @summary Disconnects this dispatch from an adapter
@@ -111,5 +112,5 @@ export declare class Dispatch extends LoggedClass implements AdapterDispatch {
111
112
  * @param {EventIds} id - The identifier(s) of the affected record(s)
112
113
  * @return {Promise<void>} A promise that resolves when all observers have been notified
113
114
  */
114
- updateObservers(table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds): Promise<void>;
115
+ updateObservers(model: Constructor<any> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: [...any, ContextOf<A>]): Promise<void>;
115
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Dispatch.js","sourceRoot":"","sources":["../../src/persistence/Dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dispatch.js","sourceRoot":"","sources":["../../src/persistence/Dispatch.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ObserverHandler = void 0;
4
4
  const db_decorators_1 = require("@decaf-ts/db-decorators");
5
+ const Adapter_1 = require("./Adapter.cjs");
5
6
  /**
6
7
  * @description Manages a collection of observers for database events
7
8
  * @summary The ObserverHandler class implements the Observable interface and provides a centralized
@@ -75,7 +76,6 @@ class ObserverHandler {
75
76
  /**
76
77
  * @description Notifies all relevant observers about a database event
77
78
  * @summary Filters observers based on their filter functions and calls refresh on each matching observer
78
- * @param {Logger} log - Logger for recording notification activities
79
79
  * @param {string} table - The name of the table where the event occurred
80
80
  * @param {OperationKeys|BulkCrudOperationKeys|string} event - The type of operation that occurred
81
81
  * @param {EventIds} id - The identifier(s) of the affected record(s)
@@ -116,14 +116,15 @@ class ObserverHandler {
116
116
  *
117
117
  * ObserverHandler-->>Client: Return
118
118
  */
119
- async updateObservers(log, table, event, id, ...args) {
119
+ async updateObservers(model, event, id, ...args) {
120
+ const { log, ctxArgs } = Adapter_1.Adapter.logCtx(args, this.updateObservers);
120
121
  const results = await Promise.allSettled(this.observers
121
122
  .filter((o) => {
122
123
  const { filter } = o;
123
124
  if (!filter)
124
125
  return true;
125
126
  try {
126
- return filter(table, event, id);
127
+ return filter(model, event, id, ...ctxArgs);
127
128
  }
128
129
  catch (e) {
129
130
  log.error(`Failed to filter observer ${o.observer.toString()}: ${e}`);
@@ -131,7 +132,7 @@ class ObserverHandler {
131
132
  }
132
133
  })
133
134
  .map((o) => {
134
- o.observer.refresh(table, event, id, ...args);
135
+ o.observer.refresh(model, event, id, ...ctxArgs);
135
136
  }));
136
137
  results.forEach((result, i) => {
137
138
  if (result.status === "rejected")
@@ -1,7 +1,9 @@
1
- import { Observable, Observer } from "../interfaces";
2
- import { EventIds, ObserverFilter } from "./types";
1
+ import { Observer } from "../interfaces";
2
+ import { EventIds, ObserverFilter, PersistenceObservable } from "./types";
3
3
  import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators";
4
- import { Logger } from "@decaf-ts/logging";
4
+ import { Model } from "@decaf-ts/decorator-validation";
5
+ import { Constructor } from "@decaf-ts/decoration";
6
+ import { ContextualArgs } from "../utils/ContextualLoggedClass";
5
7
  /**
6
8
  * @description Manages a collection of observers for database events
7
9
  * @summary The ObserverHandler class implements the Observable interface and provides a centralized
@@ -31,7 +33,7 @@ import { Logger } from "@decaf-ts/logging";
31
33
  * handler.unObserve(myObserver);
32
34
  * ```
33
35
  */
34
- export declare class ObserverHandler implements Observable {
36
+ export declare class ObserverHandler implements PersistenceObservable<any> {
35
37
  /**
36
38
  * @description Collection of registered observers
37
39
  * @summary Array of observer objects along with their optional filters
@@ -64,7 +66,6 @@ export declare class ObserverHandler implements Observable {
64
66
  /**
65
67
  * @description Notifies all relevant observers about a database event
66
68
  * @summary Filters observers based on their filter functions and calls refresh on each matching observer
67
- * @param {Logger} log - Logger for recording notification activities
68
69
  * @param {string} table - The name of the table where the event occurred
69
70
  * @param {OperationKeys|BulkCrudOperationKeys|string} event - The type of operation that occurred
70
71
  * @param {EventIds} id - The identifier(s) of the affected record(s)
@@ -105,5 +106,5 @@ export declare class ObserverHandler implements Observable {
105
106
  *
106
107
  * ObserverHandler-->>Client: Return
107
108
  */
108
- updateObservers(log: Logger, table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: any[]): Promise<void>;
109
+ updateObservers<M extends Model>(model: Constructor<M> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<any>): Promise<void>;
109
110
  }