@decaf-ts/core 0.5.0 → 0.5.1

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 (294) hide show
  1. package/dist/core.cjs +574 -999
  2. package/dist/core.esm.cjs +572 -984
  3. package/lib/esm/identity/decorators.d.ts +1 -8
  4. package/lib/esm/identity/decorators.js +12 -19
  5. package/lib/esm/identity/utils.d.ts +1 -1
  6. package/lib/esm/identity/utils.js +3 -2
  7. package/lib/esm/index.d.ts +4 -15
  8. package/lib/esm/index.js +8 -17
  9. package/lib/esm/interfaces/Executor.d.ts +2 -18
  10. package/lib/esm/interfaces/Executor.js +1 -1
  11. package/lib/esm/interfaces/Observable.d.ts +2 -27
  12. package/lib/esm/interfaces/Observable.js +1 -1
  13. package/lib/esm/interfaces/Observer.d.ts +0 -13
  14. package/lib/esm/interfaces/Observer.js +1 -1
  15. package/lib/esm/interfaces/Paginatable.d.ts +3 -2
  16. package/lib/esm/interfaces/Paginatable.js +1 -1
  17. package/lib/esm/interfaces/Queriable.d.ts +19 -3
  18. package/lib/esm/interfaces/Queriable.js +1 -1
  19. package/lib/esm/interfaces/RawExecutor.d.ts +1 -18
  20. package/lib/esm/interfaces/RawExecutor.js +1 -1
  21. package/lib/esm/interfaces/SequenceOptions.d.ts +0 -7
  22. package/lib/esm/interfaces/SequenceOptions.js +1 -1
  23. package/lib/esm/interfaces/index.d.ts +0 -1
  24. package/lib/esm/interfaces/index.js +1 -2
  25. package/lib/esm/model/construction.d.ts +9 -9
  26. package/lib/esm/model/construction.js +1 -1
  27. package/lib/esm/model/decorators.d.ts +6 -12
  28. package/lib/esm/model/decorators.js +6 -12
  29. package/lib/esm/model/index.js +1 -2
  30. package/lib/esm/persistence/Adapter.d.ts +29 -26
  31. package/lib/esm/persistence/Adapter.js +133 -45
  32. package/lib/esm/persistence/Dispatch.d.ts +18 -0
  33. package/lib/esm/persistence/Dispatch.js +89 -0
  34. package/lib/esm/persistence/ObserverHandler.d.ts +14 -0
  35. package/lib/esm/persistence/ObserverHandler.js +42 -0
  36. package/lib/esm/persistence/Sequence.d.ts +4 -12
  37. package/lib/esm/persistence/Sequence.js +22 -1
  38. package/lib/esm/persistence/constants.d.ts +0 -5
  39. package/lib/esm/persistence/constants.js +1 -7
  40. package/lib/esm/persistence/errors.d.ts +0 -3
  41. package/lib/esm/persistence/errors.js +2 -7
  42. package/lib/esm/persistence/index.d.ts +3 -0
  43. package/lib/esm/persistence/index.js +4 -1
  44. package/lib/esm/persistence/types.d.ts +3 -0
  45. package/lib/esm/persistence/types.js +2 -0
  46. package/lib/esm/query/Condition.d.ts +10 -13
  47. package/lib/esm/query/Condition.js +13 -10
  48. package/lib/esm/query/Paginator.d.ts +11 -10
  49. package/lib/esm/query/Paginator.js +8 -10
  50. package/lib/esm/query/Statement.d.ts +37 -53
  51. package/lib/esm/query/Statement.js +130 -128
  52. package/lib/esm/query/constants.d.ts +0 -64
  53. package/lib/esm/query/constants.js +1 -68
  54. package/lib/esm/query/index.d.ts +0 -5
  55. package/lib/esm/query/index.js +1 -6
  56. package/lib/esm/query/options.d.ts +48 -175
  57. package/lib/esm/query/options.js +1 -1
  58. package/lib/esm/query/selectors.d.ts +3 -33
  59. package/lib/esm/query/selectors.js +1 -1
  60. package/lib/esm/ram/RamAdapter.d.ts +11 -20
  61. package/lib/esm/ram/RamAdapter.js +49 -140
  62. package/lib/esm/ram/RamPaginator.d.ts +8 -6
  63. package/lib/esm/ram/RamPaginator.js +5 -5
  64. package/lib/esm/ram/RamSequence.d.ts +0 -36
  65. package/lib/esm/ram/RamSequence.js +2 -51
  66. package/lib/esm/ram/RamStatement.d.ts +10 -6
  67. package/lib/esm/ram/RamStatement.js +101 -6
  68. package/lib/esm/ram/constants.d.ts +1 -0
  69. package/lib/esm/ram/constants.js +2 -0
  70. package/lib/esm/ram/handlers.d.ts +6 -0
  71. package/lib/esm/ram/handlers.js +8 -0
  72. package/lib/esm/ram/index.d.ts +4 -4
  73. package/lib/esm/ram/index.js +9 -5
  74. package/lib/esm/ram/model/RamSequence.d.ts +0 -13
  75. package/lib/esm/ram/model/RamSequence.js +1 -1
  76. package/lib/esm/ram/types.d.ts +5 -5
  77. package/lib/esm/ram/types.js +1 -1
  78. package/lib/esm/repository/Repository.d.ts +21 -17
  79. package/lib/esm/repository/Repository.js +89 -31
  80. package/lib/esm/repository/constants.d.ts +0 -15
  81. package/lib/esm/repository/constants.js +1 -16
  82. package/lib/esm/repository/errors.d.ts +0 -6
  83. package/lib/esm/repository/errors.js +1 -11
  84. package/lib/esm/repository/injectables.js +1 -1
  85. package/lib/esm/repository/types.d.ts +0 -3
  86. package/lib/esm/repository/types.js +1 -1
  87. package/lib/esm/utils/decorators.d.ts +1 -0
  88. package/lib/esm/utils/decorators.js +11 -0
  89. package/lib/esm/utils/errors.d.ts +10 -0
  90. package/lib/esm/utils/errors.js +17 -0
  91. package/lib/esm/utils/index.d.ts +2 -0
  92. package/lib/esm/utils/index.js +3 -0
  93. package/lib/identity/decorators.cjs +12 -19
  94. package/lib/identity/decorators.d.ts +1 -8
  95. package/lib/identity/utils.cjs +3 -2
  96. package/lib/identity/utils.d.ts +1 -1
  97. package/lib/index.cjs +8 -17
  98. package/lib/index.d.ts +4 -15
  99. package/lib/interfaces/Executor.cjs +1 -1
  100. package/lib/interfaces/Executor.d.ts +2 -18
  101. package/lib/interfaces/Observable.cjs +1 -1
  102. package/lib/interfaces/Observable.d.ts +2 -27
  103. package/lib/interfaces/Observer.cjs +1 -1
  104. package/lib/interfaces/Observer.d.ts +0 -13
  105. package/lib/interfaces/Paginatable.cjs +1 -1
  106. package/lib/interfaces/Paginatable.d.ts +3 -2
  107. package/lib/interfaces/Queriable.cjs +1 -1
  108. package/lib/interfaces/Queriable.d.ts +19 -3
  109. package/lib/interfaces/RawExecutor.cjs +1 -1
  110. package/lib/interfaces/RawExecutor.d.ts +1 -18
  111. package/lib/interfaces/SequenceOptions.cjs +1 -1
  112. package/lib/interfaces/SequenceOptions.d.ts +0 -7
  113. package/lib/interfaces/index.cjs +1 -2
  114. package/lib/interfaces/index.d.ts +0 -1
  115. package/lib/model/construction.cjs +1 -1
  116. package/lib/model/construction.d.ts +9 -9
  117. package/lib/model/decorators.cjs +6 -12
  118. package/lib/model/decorators.d.ts +6 -12
  119. package/lib/model/index.cjs +1 -2
  120. package/lib/persistence/Adapter.cjs +132 -44
  121. package/lib/persistence/Adapter.d.ts +29 -26
  122. package/lib/persistence/Dispatch.cjs +93 -0
  123. package/lib/persistence/Dispatch.d.ts +18 -0
  124. package/lib/persistence/ObserverHandler.cjs +46 -0
  125. package/lib/persistence/ObserverHandler.d.ts +14 -0
  126. package/lib/persistence/Sequence.cjs +22 -1
  127. package/lib/persistence/Sequence.d.ts +4 -12
  128. package/lib/persistence/constants.cjs +2 -8
  129. package/lib/persistence/constants.d.ts +0 -5
  130. package/lib/persistence/errors.cjs +3 -9
  131. package/lib/persistence/errors.d.ts +0 -3
  132. package/lib/persistence/index.cjs +4 -1
  133. package/lib/persistence/index.d.ts +3 -0
  134. package/lib/persistence/types.cjs +3 -0
  135. package/lib/persistence/types.d.ts +3 -0
  136. package/lib/query/Condition.cjs +12 -9
  137. package/lib/query/Condition.d.ts +10 -13
  138. package/lib/query/Paginator.cjs +8 -10
  139. package/lib/query/Paginator.d.ts +11 -10
  140. package/lib/query/Statement.cjs +129 -127
  141. package/lib/query/Statement.d.ts +37 -53
  142. package/lib/query/constants.cjs +2 -69
  143. package/lib/query/constants.d.ts +0 -64
  144. package/lib/query/index.cjs +1 -6
  145. package/lib/query/index.d.ts +0 -5
  146. package/lib/query/options.cjs +1 -1
  147. package/lib/query/options.d.ts +48 -175
  148. package/lib/query/selectors.cjs +1 -1
  149. package/lib/query/selectors.d.ts +3 -33
  150. package/lib/ram/RamAdapter.cjs +47 -172
  151. package/lib/ram/RamAdapter.d.ts +11 -20
  152. package/lib/ram/RamPaginator.cjs +5 -5
  153. package/lib/ram/RamPaginator.d.ts +8 -6
  154. package/lib/ram/RamSequence.cjs +2 -52
  155. package/lib/ram/RamSequence.d.ts +0 -36
  156. package/lib/ram/RamStatement.cjs +101 -6
  157. package/lib/ram/RamStatement.d.ts +10 -6
  158. package/lib/ram/constants.cjs +5 -0
  159. package/lib/ram/constants.d.ts +1 -0
  160. package/lib/ram/handlers.cjs +11 -0
  161. package/lib/ram/handlers.d.ts +6 -0
  162. package/lib/ram/index.cjs +9 -5
  163. package/lib/ram/index.d.ts +4 -4
  164. package/lib/ram/model/RamSequence.cjs +1 -1
  165. package/lib/ram/model/RamSequence.d.ts +0 -13
  166. package/lib/ram/types.cjs +1 -1
  167. package/lib/ram/types.d.ts +5 -5
  168. package/lib/repository/Repository.cjs +89 -31
  169. package/lib/repository/Repository.d.ts +21 -17
  170. package/lib/repository/constants.cjs +1 -16
  171. package/lib/repository/constants.d.ts +0 -15
  172. package/lib/repository/errors.cjs +2 -14
  173. package/lib/repository/errors.d.ts +0 -6
  174. package/lib/repository/injectables.cjs +1 -1
  175. package/lib/repository/types.cjs +1 -1
  176. package/lib/repository/types.d.ts +0 -3
  177. package/lib/utils/decorators.cjs +14 -0
  178. package/lib/utils/decorators.d.ts +1 -0
  179. package/lib/utils/errors.cjs +23 -0
  180. package/lib/utils/errors.d.ts +10 -0
  181. package/lib/{validators → utils}/index.cjs +2 -2
  182. package/lib/utils/index.d.ts +2 -0
  183. package/package.json +1 -1
  184. package/lib/esm/interfaces/Builder.d.ts +0 -16
  185. package/lib/esm/interfaces/Builder.js +0 -2
  186. package/lib/esm/model/IdentifiedBaseModel.d.ts +0 -7
  187. package/lib/esm/model/IdentifiedBaseModel.js +0 -25
  188. package/lib/esm/query/Clause.d.ts +0 -50
  189. package/lib/esm/query/Clause.js +0 -82
  190. package/lib/esm/query/ClauseFactory.d.ts +0 -71
  191. package/lib/esm/query/ClauseFactory.js +0 -6
  192. package/lib/esm/query/Query.d.ts +0 -43
  193. package/lib/esm/query/Query.js +0 -54
  194. package/lib/esm/query/clauses/FromClause.d.ts +0 -45
  195. package/lib/esm/query/clauses/FromClause.js +0 -59
  196. package/lib/esm/query/clauses/GroupByClause.d.ts +0 -21
  197. package/lib/esm/query/clauses/GroupByClause.js +0 -19
  198. package/lib/esm/query/clauses/InsertClause.d.ts +0 -37
  199. package/lib/esm/query/clauses/InsertClause.js +0 -55
  200. package/lib/esm/query/clauses/LimitClause.d.ts +0 -29
  201. package/lib/esm/query/clauses/LimitClause.js +0 -27
  202. package/lib/esm/query/clauses/OffsetClause.d.ts +0 -21
  203. package/lib/esm/query/clauses/OffsetClause.js +0 -19
  204. package/lib/esm/query/clauses/OrderByClause.d.ts +0 -37
  205. package/lib/esm/query/clauses/OrderByClause.js +0 -39
  206. package/lib/esm/query/clauses/SelectClause.d.ts +0 -47
  207. package/lib/esm/query/clauses/SelectClause.js +0 -62
  208. package/lib/esm/query/clauses/SelectorBasedClause.d.ts +0 -25
  209. package/lib/esm/query/clauses/SelectorBasedClause.js +0 -44
  210. package/lib/esm/query/clauses/ValuesClause.d.ts +0 -21
  211. package/lib/esm/query/clauses/ValuesClause.js +0 -36
  212. package/lib/esm/query/clauses/WhereClause.d.ts +0 -46
  213. package/lib/esm/query/clauses/WhereClause.js +0 -71
  214. package/lib/esm/query/clauses/index.d.ts +0 -10
  215. package/lib/esm/query/clauses/index.js +0 -11
  216. package/lib/esm/query/types.d.ts +0 -2
  217. package/lib/esm/query/types.js +0 -2
  218. package/lib/esm/ram/RamClauseFactory.d.ts +0 -17
  219. package/lib/esm/ram/RamClauseFactory.js +0 -92
  220. package/lib/esm/ram/clauses/FromClause.d.ts +0 -7
  221. package/lib/esm/ram/clauses/FromClause.js +0 -11
  222. package/lib/esm/ram/clauses/InsertClause.d.ts +0 -7
  223. package/lib/esm/ram/clauses/InsertClause.js +0 -13
  224. package/lib/esm/ram/clauses/OrderByClause.d.ts +0 -7
  225. package/lib/esm/ram/clauses/OrderByClause.js +0 -39
  226. package/lib/esm/ram/clauses/SelectClause.d.ts +0 -7
  227. package/lib/esm/ram/clauses/SelectClause.js +0 -16
  228. package/lib/esm/ram/clauses/ValuesClause.d.ts +0 -7
  229. package/lib/esm/ram/clauses/ValuesClause.js +0 -12
  230. package/lib/esm/ram/clauses/WhereClause.d.ts +0 -7
  231. package/lib/esm/ram/clauses/WhereClause.js +0 -11
  232. package/lib/esm/ram/clauses/index.d.ts +0 -6
  233. package/lib/esm/ram/clauses/index.js +0 -7
  234. package/lib/esm/validators/ClauseSequenceValidator.d.ts +0 -28
  235. package/lib/esm/validators/ClauseSequenceValidator.js +0 -95
  236. package/lib/esm/validators/decorators.d.ts +0 -10
  237. package/lib/esm/validators/decorators.js +0 -24
  238. package/lib/esm/validators/index.d.ts +0 -2
  239. package/lib/esm/validators/index.js +0 -3
  240. package/lib/interfaces/Builder.cjs +0 -3
  241. package/lib/interfaces/Builder.d.ts +0 -16
  242. package/lib/model/IdentifiedBaseModel.cjs +0 -29
  243. package/lib/model/IdentifiedBaseModel.d.ts +0 -7
  244. package/lib/query/Clause.cjs +0 -86
  245. package/lib/query/Clause.d.ts +0 -50
  246. package/lib/query/ClauseFactory.cjs +0 -10
  247. package/lib/query/ClauseFactory.d.ts +0 -71
  248. package/lib/query/Query.cjs +0 -58
  249. package/lib/query/Query.d.ts +0 -43
  250. package/lib/query/clauses/FromClause.cjs +0 -63
  251. package/lib/query/clauses/FromClause.d.ts +0 -45
  252. package/lib/query/clauses/GroupByClause.cjs +0 -23
  253. package/lib/query/clauses/GroupByClause.d.ts +0 -21
  254. package/lib/query/clauses/InsertClause.cjs +0 -59
  255. package/lib/query/clauses/InsertClause.d.ts +0 -37
  256. package/lib/query/clauses/LimitClause.cjs +0 -31
  257. package/lib/query/clauses/LimitClause.d.ts +0 -29
  258. package/lib/query/clauses/OffsetClause.cjs +0 -23
  259. package/lib/query/clauses/OffsetClause.d.ts +0 -21
  260. package/lib/query/clauses/OrderByClause.cjs +0 -43
  261. package/lib/query/clauses/OrderByClause.d.ts +0 -37
  262. package/lib/query/clauses/SelectClause.cjs +0 -66
  263. package/lib/query/clauses/SelectClause.d.ts +0 -47
  264. package/lib/query/clauses/SelectorBasedClause.cjs +0 -48
  265. package/lib/query/clauses/SelectorBasedClause.d.ts +0 -25
  266. package/lib/query/clauses/ValuesClause.cjs +0 -40
  267. package/lib/query/clauses/ValuesClause.d.ts +0 -21
  268. package/lib/query/clauses/WhereClause.cjs +0 -75
  269. package/lib/query/clauses/WhereClause.d.ts +0 -46
  270. package/lib/query/clauses/index.cjs +0 -27
  271. package/lib/query/clauses/index.d.ts +0 -10
  272. package/lib/query/types.cjs +0 -3
  273. package/lib/query/types.d.ts +0 -2
  274. package/lib/ram/RamClauseFactory.cjs +0 -96
  275. package/lib/ram/RamClauseFactory.d.ts +0 -17
  276. package/lib/ram/clauses/FromClause.cjs +0 -15
  277. package/lib/ram/clauses/FromClause.d.ts +0 -7
  278. package/lib/ram/clauses/InsertClause.cjs +0 -17
  279. package/lib/ram/clauses/InsertClause.d.ts +0 -7
  280. package/lib/ram/clauses/OrderByClause.cjs +0 -43
  281. package/lib/ram/clauses/OrderByClause.d.ts +0 -7
  282. package/lib/ram/clauses/SelectClause.cjs +0 -20
  283. package/lib/ram/clauses/SelectClause.d.ts +0 -7
  284. package/lib/ram/clauses/ValuesClause.cjs +0 -16
  285. package/lib/ram/clauses/ValuesClause.d.ts +0 -7
  286. package/lib/ram/clauses/WhereClause.cjs +0 -15
  287. package/lib/ram/clauses/WhereClause.d.ts +0 -7
  288. package/lib/ram/clauses/index.cjs +0 -23
  289. package/lib/ram/clauses/index.d.ts +0 -6
  290. package/lib/validators/ClauseSequenceValidator.cjs +0 -98
  291. package/lib/validators/ClauseSequenceValidator.d.ts +0 -28
  292. package/lib/validators/decorators.cjs +0 -27
  293. package/lib/validators/decorators.d.ts +0 -10
  294. package/lib/validators/index.d.ts +0 -2
@@ -0,0 +1,18 @@
1
+ import { OperationKeys, BulkCrudOperationKeys } from "@decaf-ts/db-decorators";
2
+ import { ModelConstructor } from "@decaf-ts/decorator-validation";
3
+ import { Observable, Observer } from "../interfaces";
4
+ import { Adapter } from "./Adapter";
5
+ import { Logger } from "@decaf-ts/logging";
6
+ import { EventIds } from "./types";
7
+ export declare class Dispatch<Y> implements Observable {
8
+ protected adapter?: Adapter<Y, any, any, any>;
9
+ protected native?: Y;
10
+ protected models: ModelConstructor<any>[];
11
+ private logger;
12
+ protected get log(): Logger;
13
+ constructor();
14
+ protected initialize(): void;
15
+ observe(observer: Adapter<Y, any, any, any>): void;
16
+ unObserve(observer: Observer): void;
17
+ updateObservers(table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds): Promise<void>;
18
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObserverHandler = void 0;
4
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
5
+ class ObserverHandler {
6
+ constructor() {
7
+ this.observers = [];
8
+ }
9
+ count() {
10
+ return this.observers.length;
11
+ }
12
+ observe(observer, filter) {
13
+ const index = this.observers.map((o) => o.observer).indexOf(observer);
14
+ if (index !== -1)
15
+ throw new db_decorators_1.InternalError("Observer already registered");
16
+ this.observers.push({ observer: observer, filter: filter });
17
+ }
18
+ unObserve(observer) {
19
+ const index = this.observers.map((o) => o.observer).indexOf(observer);
20
+ if (index === -1)
21
+ throw new db_decorators_1.InternalError("Failed to find Observer");
22
+ this.observers.splice(index, 1);
23
+ }
24
+ async updateObservers(log, table, event, id, ...args) {
25
+ const results = await Promise.allSettled(this.observers
26
+ .filter((o) => {
27
+ const { filter } = o;
28
+ if (!filter)
29
+ return true;
30
+ try {
31
+ return filter(table, event, id);
32
+ }
33
+ catch (e) {
34
+ log.error(`Failed to filter observer ${o.observer.toString()}: ${e}`);
35
+ return false;
36
+ }
37
+ })
38
+ .map((o) => o.observer.refresh(table, event, id, ...args)));
39
+ results.forEach((result, i) => {
40
+ if (result.status === "rejected")
41
+ log.error(`Failed to update observable ${this.observers[i].toString()}: ${result.reason}`);
42
+ });
43
+ }
44
+ }
45
+ exports.ObserverHandler = ObserverHandler;
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JzZXJ2ZXJIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL09ic2VydmVySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwyREFJaUM7QUFHakMsTUFBYSxlQUFlO0lBQTVCO1FBQ3FCLGNBQVMsR0FHdEIsRUFBRSxDQUFDO0lBZ0RYLENBQUM7SUE5Q0MsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFrQixFQUFFLE1BQXVCO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSw2QkFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxTQUFTLENBQUMsUUFBa0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLDZCQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQ25CLEdBQVcsRUFDWCxLQUFhLEVBQ2IsS0FBcUQsRUFDckQsRUFBWSxFQUNaLEdBQUcsSUFBVztRQUVkLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FDdEMsSUFBSSxDQUFDLFNBQVM7YUFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNaLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDO2dCQUNILE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7Z0JBQ3BCLEdBQUcsQ0FBQyxLQUFLLENBQ1AsNkJBQTZCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQzNELENBQUM7Z0JBQ0YsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQzdELENBQUM7UUFDRixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVO2dCQUM5QixHQUFHLENBQUMsS0FBSyxDQUNQLCtCQUErQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FDaEYsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBcERELDBDQW9EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IEV2ZW50SWRzLCBPYnNlcnZlckZpbHRlciB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMsXG4gIEludGVybmFsRXJyb3IsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmV4cG9ydCBjbGFzcyBPYnNlcnZlckhhbmRsZXIgaW1wbGVtZW50cyBPYnNlcnZhYmxlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9ic2VydmVyczoge1xuICAgIG9ic2VydmVyOiBPYnNlcnZlcjtcbiAgICBmaWx0ZXI/OiBPYnNlcnZlckZpbHRlcjtcbiAgfVtdID0gW107XG5cbiAgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMub2JzZXJ2ZXJzLmxlbmd0aDtcbiAgfVxuXG4gIG9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyLCBmaWx0ZXI/OiBPYnNlcnZlckZpbHRlcik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vYnNlcnZlcnMubWFwKChvKSA9PiBvLm9ic2VydmVyKS5pbmRleE9mKG9ic2VydmVyKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk9ic2VydmVyIGFscmVhZHkgcmVnaXN0ZXJlZFwiKTtcbiAgICB0aGlzLm9ic2VydmVycy5wdXNoKHsgb2JzZXJ2ZXI6IG9ic2VydmVyLCBmaWx0ZXI6IGZpbHRlciB9KTtcbiAgfVxuXG4gIHVuT2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMub2JzZXJ2ZXJzLm1hcCgobykgPT4gby5vYnNlcnZlcikuaW5kZXhPZihvYnNlcnZlcik7XG4gICAgaWYgKGluZGV4ID09PSAtMSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJGYWlsZWQgdG8gZmluZCBPYnNlcnZlclwiKTtcbiAgICB0aGlzLm9ic2VydmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlT2JzZXJ2ZXJzKFxuICAgIGxvZzogTG9nZ2VyLFxuICAgIHRhYmxlOiBzdHJpbmcsXG4gICAgZXZlbnQ6IE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsXG4gICAgaWQ6IEV2ZW50SWRzLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICB0aGlzLm9ic2VydmVyc1xuICAgICAgICAuZmlsdGVyKChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBmaWx0ZXIgfSA9IG87XG4gICAgICAgICAgaWYgKCFmaWx0ZXIpIHJldHVybiB0cnVlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyKHRhYmxlLCBldmVudCwgaWQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBmaWx0ZXIgb2JzZXJ2ZXIgJHtvLm9ic2VydmVyLnRvU3RyaW5nKCl9OiAke2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5tYXAoKG8pID0+IG8ub2JzZXJ2ZXIucmVmcmVzaCh0YWJsZSwgZXZlbnQsIGlkLCAuLi5hcmdzKSlcbiAgICApO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0LCBpKSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJyZWplY3RlZFwiKVxuICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byB1cGRhdGUgb2JzZXJ2YWJsZSAke3RoaXMub2JzZXJ2ZXJzW2ldLnRvU3RyaW5nKCl9OiAke3Jlc3VsdC5yZWFzb259YFxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { Observable, Observer } from "../interfaces";
2
+ import { EventIds, ObserverFilter } from "./types";
3
+ import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators";
4
+ import { Logger } from "@decaf-ts/logging";
5
+ export declare class ObserverHandler implements Observable {
6
+ protected readonly observers: {
7
+ observer: Observer;
8
+ filter?: ObserverFilter;
9
+ }[];
10
+ count(): number;
11
+ observe(observer: Observer, filter?: ObserverFilter): void;
12
+ unObserve(observer: Observer): void;
13
+ updateObservers(log: Logger, table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: any[]): Promise<void>;
14
+ }
@@ -2,13 +2,34 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Sequence = void 0;
4
4
  const utils_1 = require("./../identity/utils.cjs");
5
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
6
+ const logging_1 = require("@decaf-ts/logging");
5
7
  class Sequence {
8
+ get log() {
9
+ if (!this.logger)
10
+ this.logger = logging_1.Logging.for(this);
11
+ return this.logger;
12
+ }
6
13
  constructor(options) {
7
14
  this.options = options;
8
15
  }
9
16
  static pk(model) {
10
17
  return (0, utils_1.sequenceNameForModel)(model, "pk");
11
18
  }
19
+ static parseValue(type, value) {
20
+ switch (type) {
21
+ case "Number":
22
+ return typeof value === "string"
23
+ ? parseInt(value)
24
+ : typeof value === "number"
25
+ ? value
26
+ : BigInt(value);
27
+ case "BigInt":
28
+ return BigInt(value);
29
+ default:
30
+ throw new db_decorators_1.InternalError("Should never happen");
31
+ }
32
+ }
12
33
  }
13
34
  exports.Sequence = Sequence;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUEsbURBQXlEO0FBR3pELE1BQXNCLFFBQVE7SUFDNUIsWUFBeUMsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7SUFBRyxDQUFDO0lBV3JFLE1BQU0sQ0FBQyxFQUFFLENBQWtCLEtBQXlCO1FBQ2xELE9BQU8sSUFBQSw0QkFBb0IsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBZkQsNEJBZUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IFNlcXVlbmNlXG4gKlxuICogQGludGVyZmFjZSBTZXF1ZW5jZVxuICpcbiAqIEBjYXRlZ29yeSBTZXF1ZW5jZXNcbiAqL1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgc2VxdWVuY2VOYW1lRm9yTW9kZWwgfSBmcm9tIFwiLi4vaWRlbnRpdHkvdXRpbHNcIjtcbmltcG9ydCB7IFNlcXVlbmNlT3B0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9uc1wiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2VxdWVuY2Uge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge31cblxuICAvKipcbiAgICogQHN1bW1hcnkgZ2VuZXJhdGVzIHRoZSBuZXh0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZVxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBhYnN0cmFjdCBuZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PjtcbiAgYWJzdHJhY3QgY3VycmVudCgpOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD47XG4gIGFic3RyYWN0IHJhbmdlKGNvdW50OiBudW1iZXIpOiBQcm9taXNlPChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10+O1xuXG4gIHN0YXRpYyBwazxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNIHwgQ29uc3RydWN0b3I8TT4pIHtcbiAgICByZXR1cm4gc2VxdWVuY2VOYW1lRm9yTW9kZWwobW9kZWwsIFwicGtcIik7XG4gIH1cbn1cbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQXlEO0FBRXpELDJEQUF3RDtBQUN4RCwrQ0FBb0Q7QUFFcEQsTUFBc0IsUUFBUTtJQUc1QixJQUFjLEdBQUc7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFPLENBQUMsR0FBRyxDQUFDLElBQVcsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBeUMsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7SUFBRyxDQUFDO0lBTXJFLE1BQU0sQ0FBQyxFQUFFLENBQWtCLEtBQXlCO1FBQ2xELE9BQU8sSUFBQSw0QkFBb0IsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQ2YsSUFBcUMsRUFDckMsS0FBK0I7UUFFL0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVE7b0JBQzlCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO29CQUNqQixDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUTt3QkFDekIsQ0FBQyxDQUFDLEtBQUs7d0JBQ1AsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkI7Z0JBQ0UsTUFBTSxJQUFJLDZCQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbkNELDRCQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHNlcXVlbmNlTmFtZUZvck1vZGVsIH0gZnJvbSBcIi4uL2lkZW50aXR5L3V0aWxzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnNcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2VxdWVuY2Uge1xuICBwcml2YXRlIGxvZ2dlciE6IExvZ2dlcjtcblxuICBwcm90ZWN0ZWQgZ2V0IGxvZygpIHtcbiAgICBpZiAoIXRoaXMubG9nZ2VyKSB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KTtcbiAgICByZXR1cm4gdGhpcy5sb2dnZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge31cblxuICBhYnN0cmFjdCBuZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PjtcbiAgYWJzdHJhY3QgY3VycmVudCgpOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD47XG4gIGFic3RyYWN0IHJhbmdlKGNvdW50OiBudW1iZXIpOiBQcm9taXNlPChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10+O1xuXG4gIHN0YXRpYyBwazxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNIHwgQ29uc3RydWN0b3I8TT4pIHtcbiAgICByZXR1cm4gc2VxdWVuY2VOYW1lRm9yTW9kZWwobW9kZWwsIFwicGtcIik7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VWYWx1ZShcbiAgICB0eXBlOiBcIk51bWJlclwiIHwgXCJCaWdJbnRcIiB8IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICk6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiTnVtYmVyXCI6XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IHBhcnNlSW50KHZhbHVlKVxuICAgICAgICAgIDogdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IEJpZ0ludCh2YWx1ZSk7XG4gICAgICBjYXNlIFwiQmlnSW50XCI6XG4gICAgICAgIHJldHVybiBCaWdJbnQodmFsdWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTaG91bGQgbmV2ZXIgaGFwcGVuXCIpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,22 +1,14 @@
1
- /**
2
- * @summary Sequence
3
- *
4
- * @interface Sequence
5
- *
6
- * @category Sequences
7
- */
8
1
  import { Constructor, Model } from "@decaf-ts/decorator-validation";
9
2
  import { SequenceOptions } from "../interfaces/SequenceOptions";
3
+ import { Logger } from "@decaf-ts/logging";
10
4
  export declare abstract class Sequence {
11
5
  protected readonly options: SequenceOptions;
6
+ private logger;
7
+ protected get log(): Logger;
12
8
  protected constructor(options: SequenceOptions);
13
- /**
14
- * @summary generates the next value in the sequence
15
- *
16
- * @method
17
- */
18
9
  abstract next(): Promise<string | number | bigint>;
19
10
  abstract current(): Promise<string | number | bigint>;
20
11
  abstract range(count: number): Promise<(number | string | bigint)[]>;
21
12
  static pk<M extends Model>(model: M | Constructor<M>): string;
13
+ static parseValue(type: "Number" | "BigInt" | undefined, value: string | number | bigint): string | number | bigint;
22
14
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Roles = exports.PersistenceKeys = void 0;
3
+ exports.PersistenceKeys = void 0;
4
4
  var PersistenceKeys;
5
5
  (function (PersistenceKeys) {
6
6
  PersistenceKeys["INDEX"] = "index";
@@ -21,10 +21,4 @@ var PersistenceKeys;
21
21
  PersistenceKeys["MANY_TO_ONE"] = "relations.many-to-one";
22
22
  PersistenceKeys["POPULATE"] = "populate";
23
23
  })(PersistenceKeys || (exports.PersistenceKeys = PersistenceKeys = {}));
24
- var Roles;
25
- (function (Roles) {
26
- Roles["ADMIN"] = "admin";
27
- Roles["WRITER"] = "writer";
28
- Roles["READER"] = "reader";
29
- })(Roles || (exports.Roles = Roles = {}));
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLGVBa0JYO0FBbEJELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2Ysb0NBQWlCLENBQUE7SUFDakIsc0NBQW1CLENBQUE7SUFDbkIsMkRBQXdDLENBQUE7SUFDeEMsa0NBQWUsQ0FBQTtJQUNmLG9DQUFpQixDQUFBO0lBQ2pCLDBDQUF1QixDQUFBO0lBQ3ZCLDRDQUF5QixDQUFBO0lBQ3pCLHNEQUFtQyxDQUFBO0lBQ25DLFlBQVk7SUFDWixzREFBbUMsQ0FBQTtJQUNuQyxzREFBbUMsQ0FBQTtJQUNuQyxZQUFZO0lBQ1osc0RBQW1DLENBQUE7SUFDbkMsd0RBQXFDLENBQUE7SUFDckMsd0RBQXFDLENBQUE7SUFDckMsd0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQWxCVyxlQUFlLCtCQUFmLGVBQWUsUUFrQjFCO0FBRUQsSUFBWSxLQUlYO0FBSkQsV0FBWSxLQUFLO0lBQ2Ysd0JBQWUsQ0FBQTtJQUNmLDBCQUFpQixDQUFBO0lBQ2pCLDBCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxLQUFLLHFCQUFMLEtBQUssUUFJaEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBQZXJzaXN0ZW5jZUtleXMge1xuICBJTkRFWCA9IFwiaW5kZXhcIixcbiAgVU5JUVVFID0gXCJ1bmlxdWVcIixcbiAgQURBUFRFUiA9IFwiYWRhcHRlclwiLFxuICBJTkpFQ1RBQkxFID0gXCJkZWNhZl97MH1fYWRhcHRlcl9mb3JfezF9XCIsXG4gIFRBQkxFID0gXCJ0YWJsZVwiLFxuICBDT0xVTU4gPSBcImNvbHVtblwiLFxuICBNRVRBREFUQSA9IFwiX19tZXRhZGF0YVwiLFxuICBSRUxBVElPTlMgPSBcIl9fcmVsYXRpb25zXCIsXG4gIENMQVVTRV9TRVFVRU5DRSA9IFwiY2xhdXNlLXNlcXVlbmNlXCIsXG4gIC8vIE93bmVyc2hpcFxuICBDUkVBVEVEX0JZID0gXCJvd25lcnNoaXAuY3JlYXRlZC1ieVwiLFxuICBVUERBVEVEX0JZID0gXCJvd25lcnNoaXAudXBkYXRlZC1ieVwiLFxuICAvLyBSZWxhdGlvbnNcbiAgT05FX1RPX09ORSA9IFwicmVsYXRpb25zLm9uZS10by1vbmVcIixcbiAgT05FX1RPX01BTlkgPSBcInJlbGF0aW9ucy5vbmUtdG8tbWFueVwiLFxuICBNQU5ZX1RPX09ORSA9IFwicmVsYXRpb25zLm1hbnktdG8tb25lXCIsXG4gIFBPUFVMQVRFID0gXCJwb3B1bGF0ZVwiLFxufVxuXG5leHBvcnQgZW51bSBSb2xlcyB7XG4gIEFETUlOID0gXCJhZG1pblwiLFxuICBXUklURVIgPSBcIndyaXRlclwiLFxuICBSRUFERVIgPSBcInJlYWRlclwiLFxufVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLGVBa0JYO0FBbEJELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2Ysb0NBQWlCLENBQUE7SUFDakIsc0NBQW1CLENBQUE7SUFDbkIsMkRBQXdDLENBQUE7SUFDeEMsa0NBQWUsQ0FBQTtJQUNmLG9DQUFpQixDQUFBO0lBQ2pCLDBDQUF1QixDQUFBO0lBQ3ZCLDRDQUF5QixDQUFBO0lBQ3pCLHNEQUFtQyxDQUFBO0lBQ25DLFlBQVk7SUFDWixzREFBbUMsQ0FBQTtJQUNuQyxzREFBbUMsQ0FBQTtJQUNuQyxZQUFZO0lBQ1osc0RBQW1DLENBQUE7SUFDbkMsd0RBQXFDLENBQUE7SUFDckMsd0RBQXFDLENBQUE7SUFDckMsd0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQWxCVyxlQUFlLCtCQUFmLGVBQWUsUUFrQjFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUGVyc2lzdGVuY2VLZXlzIHtcbiAgSU5ERVggPSBcImluZGV4XCIsXG4gIFVOSVFVRSA9IFwidW5pcXVlXCIsXG4gIEFEQVBURVIgPSBcImFkYXB0ZXJcIixcbiAgSU5KRUNUQUJMRSA9IFwiZGVjYWZfezB9X2FkYXB0ZXJfZm9yX3sxfVwiLFxuICBUQUJMRSA9IFwidGFibGVcIixcbiAgQ09MVU1OID0gXCJjb2x1bW5cIixcbiAgTUVUQURBVEEgPSBcIl9fbWV0YWRhdGFcIixcbiAgUkVMQVRJT05TID0gXCJfX3JlbGF0aW9uc1wiLFxuICBDTEFVU0VfU0VRVUVOQ0UgPSBcImNsYXVzZS1zZXF1ZW5jZVwiLFxuICAvLyBPd25lcnNoaXBcbiAgQ1JFQVRFRF9CWSA9IFwib3duZXJzaGlwLmNyZWF0ZWQtYnlcIixcbiAgVVBEQVRFRF9CWSA9IFwib3duZXJzaGlwLnVwZGF0ZWQtYnlcIixcbiAgLy8gUmVsYXRpb25zXG4gIE9ORV9UT19PTkUgPSBcInJlbGF0aW9ucy5vbmUtdG8tb25lXCIsXG4gIE9ORV9UT19NQU5ZID0gXCJyZWxhdGlvbnMub25lLXRvLW1hbnlcIixcbiAgTUFOWV9UT19PTkUgPSBcInJlbGF0aW9ucy5tYW55LXRvLW9uZVwiLFxuICBQT1BVTEFURSA9IFwicG9wdWxhdGVcIixcbn1cbiJdfQ==
@@ -15,8 +15,3 @@ export declare enum PersistenceKeys {
15
15
  MANY_TO_ONE = "relations.many-to-one",
16
16
  POPULATE = "populate"
17
17
  }
18
- export declare enum Roles {
19
- ADMIN = "admin",
20
- WRITER = "writer",
21
- READER = "reader"
22
- }
@@ -1,17 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnsupportedError = exports.ConnectionError = void 0;
3
+ exports.UnsupportedError = void 0;
4
4
  const db_decorators_1 = require("@decaf-ts/db-decorators");
5
- class ConnectionError extends db_decorators_1.BaseError {
6
- constructor(msg) {
7
- super(ConnectionError.name, msg);
8
- }
9
- }
10
- exports.ConnectionError = ConnectionError;
11
5
  class UnsupportedError extends db_decorators_1.BaseError {
12
6
  constructor(msg) {
13
- super(UnsupportedError.name, msg);
7
+ super(UnsupportedError.name, msg, 500);
14
8
  }
15
9
  }
16
10
  exports.UnsupportedError = UnsupportedError;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBb0Q7QUFFcEQsTUFBYSxlQUFnQixTQUFRLHlCQUFTO0lBQzVDLFlBQVksR0FBbUI7UUFDN0IsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBSkQsMENBSUM7QUFFRCxNQUFhLGdCQUFpQixTQUFRLHlCQUFTO0lBQzdDLFlBQVksR0FBbUI7UUFDN0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFKRCw0Q0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvbkVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKENvbm5lY3Rpb25FcnJvci5uYW1lLCBtc2cpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKFVuc3VwcG9ydGVkRXJyb3IubmFtZSwgbXNnKTtcbiAgfVxufVxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBb0Q7QUFFcEQsTUFBYSxnQkFBaUIsU0FBUSx5QkFBUztJQUM3QyxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUpELDRDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKFVuc3VwcG9ydGVkRXJyb3IubmFtZSwgbXNnLCA1MDApO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,4 @@
1
1
  import { BaseError } from "@decaf-ts/db-decorators";
2
- export declare class ConnectionError extends BaseError {
3
- constructor(msg: string | Error);
4
- }
5
2
  export declare class UnsupportedError extends BaseError {
6
3
  constructor(msg: string | Error);
7
4
  }
@@ -17,6 +17,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Adapter.cjs"), exports);
18
18
  __exportStar(require("./constants.cjs"), exports);
19
19
  __exportStar(require("./decorators.cjs"), exports);
20
+ __exportStar(require("./Dispatch.cjs"), exports);
20
21
  __exportStar(require("./errors.cjs"), exports);
22
+ __exportStar(require("./ObserverHandler.cjs"), exports);
21
23
  __exportStar(require("./Sequence.cjs"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwQjtBQUMxQixrREFBNEI7QUFDNUIsbURBQTZCO0FBQzdCLCtDQUF5QjtBQUN6QixpREFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9BZGFwdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vU2VxdWVuY2VcIjtcbiJdfQ==
24
+ __exportStar(require("./types.cjs"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwQjtBQUMxQixrREFBNEI7QUFDNUIsbURBQTZCO0FBQzdCLGlEQUEyQjtBQUMzQiwrQ0FBeUI7QUFDekIsd0RBQWtDO0FBQ2xDLGlEQUEyQjtBQUMzQiw4Q0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9BZGFwdGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0Rpc3BhdGNoXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL09ic2VydmVySGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vU2VxdWVuY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4iXX0=
@@ -1,5 +1,8 @@
1
1
  export * from "./Adapter";
2
2
  export * from "./constants";
3
3
  export * from "./decorators";
4
+ export * from "./Dispatch";
4
5
  export * from "./errors";
6
+ export * from "./ObserverHandler";
5
7
  export * from "./Sequence";
8
+ export * from "./types";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1bGtDcnVkT3BlcmF0aW9uS2V5cywgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgdHlwZSBFdmVudElkcyA9XG4gIHwgc3RyaW5nXG4gIHwgbnVtYmVyXG4gIHwgYmlnaW50XG4gIHwgc3RyaW5nW11cbiAgfCBudW1iZXJbXVxuICB8IGJpZ2ludFtdO1xuXG5leHBvcnQgdHlwZSBPYnNlcnZlckZpbHRlciA9IChcbiAgdGFibGU6IHN0cmluZyxcbiAgZXZlbnQ6IE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsXG4gIGlkOiBFdmVudElkc1xuKSA9PiBib29sZWFuO1xuIl19
@@ -0,0 +1,3 @@
1
+ import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators";
2
+ export type EventIds = string | number | bigint | string[] | number[] | bigint[];
3
+ export type ObserverFilter = (table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds) => boolean;
@@ -22,10 +22,6 @@ const errors_1 = require("./errors.cjs");
22
22
  * @param {string | Condition} comparison
23
23
  *
24
24
  * @class Condition
25
- * @implements Executor
26
- *
27
- * @category Query
28
- * @subcategory Conditions
29
25
  */
30
26
  class Condition extends decorator_validation_1.Model {
31
27
  constructor(attr1, operator, comparison) {
@@ -65,6 +61,7 @@ class Condition extends decorator_validation_1.Model {
65
61
  const errors = super.hasErrors(...exceptions);
66
62
  if (errors)
67
63
  return errors;
64
+ const invalidOpMessage = `Invalid operator ${this.operator}}`;
68
65
  if (typeof this.attr1 === "string") {
69
66
  if (this.comparison instanceof Condition)
70
67
  return {
@@ -75,7 +72,7 @@ class Condition extends decorator_validation_1.Model {
75
72
  if (Object.values(constants_1.Operator).indexOf(this.operator) === -1)
76
73
  return {
77
74
  operator: {
78
- condition: (0, decorator_validation_1.sf)("Invalid operator {0}", this.operator),
75
+ condition: invalidOpMessage,
79
76
  },
80
77
  };
81
78
  }
@@ -84,7 +81,7 @@ class Condition extends decorator_validation_1.Model {
84
81
  this.operator !== constants_1.Operator.NOT)
85
82
  return {
86
83
  comparison: {
87
- condition: (0, decorator_validation_1.sf)("Invalid operator {0}", this.operator),
84
+ condition: invalidOpMessage,
88
85
  },
89
86
  };
90
87
  if (Object.values(constants_1.GroupOperator).indexOf(this.operator) ===
@@ -92,7 +89,7 @@ class Condition extends decorator_validation_1.Model {
92
89
  this.operator !== constants_1.Operator.NOT)
93
90
  return {
94
91
  operator: {
95
- condition: (0, decorator_validation_1.sf)("Invalid operator {0}", this.operator),
92
+ condition: invalidOpMessage,
96
93
  },
97
94
  };
98
95
  // if (this.operator !== Operator.NOT && typeof this.attr1.attr1 !== "string")
@@ -131,6 +128,9 @@ class Condition extends decorator_validation_1.Model {
131
128
  static attribute(attr) {
132
129
  return new Condition.Builder().attribute(attr);
133
130
  }
131
+ static attr(attr) {
132
+ return this.attribute(attr);
133
+ }
134
134
  /**
135
135
  * @summary Condition Builder Class
136
136
  * @description provides a simple API to build {@link Condition}s
@@ -155,6 +155,9 @@ class Condition extends decorator_validation_1.Model {
155
155
  this.attr1 = attr;
156
156
  return this;
157
157
  }
158
+ attr(attr) {
159
+ return this.attribute(attr);
160
+ }
158
161
  /**
159
162
  * @summary Creates an Equality Comparison
160
163
  * @param {any} val
@@ -231,7 +234,7 @@ class Condition extends decorator_validation_1.Model {
231
234
  }
232
235
  }
233
236
  }; }
234
- static get builder() {
237
+ static builder() {
235
238
  return new Condition.Builder();
236
239
  }
237
240
  }
@@ -248,4 +251,4 @@ __decorate([
248
251
  (0, decorator_validation_1.required)(),
249
252
  __metadata("design:type", Object)
250
253
  ], Condition.prototype, "comparison", void 0);
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZGl0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L0NvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSx5RUFLd0M7QUFDeEMsK0NBQXNEO0FBQ3RELHlDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBYSxTQUFVLFNBQVEsNEJBQUs7SUFRbEMsWUFDRSxLQUF5QixFQUN6QixRQUFrQyxFQUNsQyxVQUFlO1FBRWYsS0FBSyxFQUFFLENBQUM7UUFYQSxVQUFLLEdBQXdCLFNBQVMsQ0FBQztRQUV2QyxhQUFRLEdBQThCLFNBQVMsQ0FBQztRQUVoRCxlQUFVLEdBQVMsU0FBUyxDQUFDO1FBUXJDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsU0FBb0I7UUFDdEIsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsRUFBRSxDQUFDLFNBQW9CO1FBQ3JCLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxHQUFRO1FBQ1YsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsb0JBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLEdBQUcsVUFBb0I7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLElBQUksTUFB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QUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBRUQ7Ozs7V0FJRztRQUNLLEtBQUs7WUFDWCxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLFNBQVMsQ0FDbEIsSUFBSSxDQUFDLEtBQTJCLEVBQ2hDLElBQUksQ0FBQyxRQUFvQixFQUN6QixJQUFJLENBQUMsVUFBaUIsQ0FDdkIsQ0FBQztZQUNKLENBQUM7WUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO2dCQUNoQixNQUFNLElBQUksbUJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztLQUNGLEFBdEdxQixDQXNHcEI7SUFFRixNQUFNLEtBQUssT0FBTztRQUNoQixPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pDLENBQUM7O0FBdlBILDhCQXdQQztBQXRQVztJQURULElBQUEsK0JBQVEsR0FBRTs7d0NBQ3NDO0FBRXZDO0lBRFQsSUFBQSwrQkFBUSxHQUFFOzsyQ0FDK0M7QUFFaEQ7SUFEVCxJQUFBLCtCQUFRLEdBQUU7OzZDQUM0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZU9wdGlvbiwgQ29uZGl0aW9uQnVpbGRlck9wdGlvbiB9IGZyb20gXCIuL29wdGlvbnNcIjtcbmltcG9ydCB7XG4gIE1vZGVsLFxuICBNb2RlbEVycm9yRGVmaW5pdGlvbixcbiAgcmVxdWlyZWQsXG4gIHNmLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBHcm91cE9wZXJhdG9yLCBPcGVyYXRvciB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IENvbmRpdGlvbiBDbGFzc1xuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBsb2dpY2FsIGNvbmRpdGlvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgQ29uZGl0aW9ufSBhdHRyMVxuICogQHBhcmFtIHtPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3J9IG9wZXJhdG9yXG4gKiBAcGFyYW0ge3N0cmluZyB8IENvbmRpdGlvbn0gY29tcGFyaXNvblxuICpcbiAqIEBjbGFzcyBDb25kaXRpb25cbiAqIEBpbXBsZW1lbnRzIEV4ZWN1dG9yXG4gKlxuICogQGNhdGVnb3J5IFF1ZXJ5XG4gKiBAc3ViY2F0ZWdvcnkgQ29uZGl0aW9uc1xuICovXG5cbmV4cG9ydCBjbGFzcyBDb25kaXRpb24gZXh0ZW5kcyBNb2RlbCB7XG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCBhdHRyMT86IHN0cmluZyB8IENvbmRpdGlvbiA9IHVuZGVmaW5lZDtcbiAgQHJlcXVpcmVkKClcbiAgcHJvdGVjdGVkIG9wZXJhdG9yPzogT3BlcmF0b3IgfCBHcm91cE9wZXJhdG9yID0gdW5kZWZpbmVkO1xuICBAcmVxdWlyZWQoKVxuICBwcm90ZWN0ZWQgY29tcGFyaXNvbj86IGFueSA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIGF0dHIxOiBzdHJpbmcgfCBDb25kaXRpb24sXG4gICAgb3BlcmF0b3I6IE9wZXJhdG9yIHwgR3JvdXBPcGVyYXRvcixcbiAgICBjb21wYXJpc29uOiBhbnlcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmF0dHIxID0gYXR0cjE7XG4gICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgIHRoaXMuY29tcGFyaXNvbiA9IGNvbXBhcmlzb247XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgSm9pbnMgMiB7QGxpbmsgQ29uZGl0aW9ufXMgb24gYW4ge0BsaW5rIE9wZXJhdG9yI0FORH0gb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb25cbiAgICovXG4gIGFuZChjb25kaXRpb246IENvbmRpdGlvbik6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIENvbmRpdGlvbi5hbmQodGhpcywgY29uZGl0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBKb2lucyAyIHtAbGluayBDb25kaXRpb259cyBvbiBhbiB7QGxpbmsgT3BlcmF0b3IjT1J9IG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uXG4gICAqL1xuICBvcihjb25kaXRpb246IENvbmRpdGlvbik6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIENvbmRpdGlvbi5vcih0aGlzLCBjb25kaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IGV4Y2x1ZGVzIGEgdmFsdXQgZnJvbSB0aGUgcmVzdWx0XG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIG5vdCh2YWw6IGFueSk6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24odGhpcywgT3BlcmF0b3IuTk9ULCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBoYXNFcnJvcnMoLi4uZXhjZXB0aW9uczogc3RyaW5nW10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaGFzRXJyb3JzKC4uLmV4Y2VwdGlvbnMpO1xuICAgIGlmIChlcnJvcnMpIHJldHVybiBlcnJvcnM7XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuYXR0cjEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmICh0aGlzLmNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb24pXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tcGFyaXNvbjoge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBcIkJvdGggc2lkZXMgb2YgdGhlIGNvbXBhcmlzb24gbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBNb2RlbEVycm9yRGVmaW5pdGlvbjtcbiAgICAgIGlmIChPYmplY3QudmFsdWVzKE9wZXJhdG9yKS5pbmRleE9mKHRoaXMub3BlcmF0b3IgYXMgT3BlcmF0b3IpID09PSAtMSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBzZihcIkludmFsaWQgb3BlcmF0b3IgezB9XCIsIHRoaXMub3BlcmF0b3IgYXMgc3RyaW5nKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIE1vZGVsRXJyb3JEZWZpbml0aW9uO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF0dHIxIGluc3RhbmNlb2YgQ29uZGl0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICEodGhpcy5jb21wYXJpc29uIGluc3RhbmNlb2YgQ29uZGl0aW9uKSAmJlxuICAgICAgICB0aGlzLm9wZXJhdG9yICE9PSBPcGVyYXRvci5OT1RcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb21wYXJpc29uOiB7XG4gICAgICAgICAgICBjb25kaXRpb246IHNmKFwiSW52YWxpZCBvcGVyYXRvciB7MH1cIiwgdGhpcy5vcGVyYXRvciBhcyBzdHJpbmcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC52YWx1ZXMoR3JvdXBPcGVyYXRvcikuaW5kZXhPZih0aGlzLm9wZXJhdG9yIGFzIEdyb3VwT3BlcmF0b3IpID09PVxuICAgICAgICAgIC0xICYmXG4gICAgICAgIHRoaXMub3BlcmF0b3IgIT09IE9wZXJhdG9yLk5PVFxuICAgICAgKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgICBjb25kaXRpb246IHNmKFwiSW52YWxpZCBvcGVyYXRvciB7MH1cIiwgdGhpcy5vcGVyYXRvciBhcyBzdHJpbmcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgICAvLyBpZiAodGhpcy5vcGVyYXRvciAhPT0gT3BlcmF0b3IuTk9UICYmIHR5cGVvZiB0aGlzLmF0dHIxLmF0dHIxICE9PSBcInN0cmluZ1wiKVxuICAgICAgLy8gICAgIHJldHVybiB7XG4gICAgICAvLyAgICAgICAgIGF0dHIxOiB7XG4gICAgICAvLyAgICAgICAgICAgICBjb25kaXRpb246IHN0cmluZ0Zvcm1hdChcIlBhcmVudCBjb25kaXRpb24gYXR0cmlidXRlIG11c3QgYmUgYSBzdHJpbmdcIilcbiAgICAgIC8vICAgICAgICAgfVxuICAgICAgLy8gICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb25cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgSm9pbnMgMiB7QGxpbmsgQ29uZGl0aW9ufXMgb24gYW4ge0BsaW5rIE9wZXJhdG9yI0FORH0gb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24xXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24yXG4gICAqL1xuICBzdGF0aWMgYW5kKGNvbmRpdGlvbjE6IENvbmRpdGlvbiwgY29uZGl0aW9uMjogQ29uZGl0aW9uKTogQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gQ29uZGl0aW9uLmdyb3VwKGNvbmRpdGlvbjEsIEdyb3VwT3BlcmF0b3IuQU5ELCBjb25kaXRpb24yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBKb2lucyAyIHtAbGluayBDb25kaXRpb259cyBvbiBhbiB7QGxpbmsgT3BlcmF0b3IjT1J9IG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uMVxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uMlxuICAgKi9cbiAgc3RhdGljIG9yKGNvbmRpdGlvbjE6IENvbmRpdGlvbiwgY29uZGl0aW9uMjogQ29uZGl0aW9uKTogQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gQ29uZGl0aW9uLmdyb3VwKGNvbmRpdGlvbjEsIEdyb3VwT3BlcmF0b3IuT1IsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEdyb3VwcyAyIHtAbGluayBDb25kaXRpb259cyBieSB0aGUgc3BlY2lmaWVkIHtAbGluayBHcm91cE9wZXJhdG9yfVxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uMVxuICAgKiBAcGFyYW0ge0dyb3VwT3BlcmF0b3J9IG9wZXJhdG9yXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24yXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBncm91cChcbiAgICBjb25kaXRpb24xOiBDb25kaXRpb24sXG4gICAgb3BlcmF0b3I6IEdyb3VwT3BlcmF0b3IsXG4gICAgY29uZGl0aW9uMjogQ29uZGl0aW9uXG4gICk6IENvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24oY29uZGl0aW9uMSwgb3BlcmF0b3IsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgc3RhdGljIGF0dHJpYnV0ZShhdHRyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbi5CdWlsZGVyKCkuYXR0cmlidXRlKGF0dHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENvbmRpdGlvbiBCdWlsZGVyIENsYXNzXG4gICAqIEBkZXNjcmlwdGlvbiBwcm92aWRlcyBhIHNpbXBsZSBBUEkgdG8gYnVpbGQge0BsaW5rIENvbmRpdGlvbn1zXG4gICAqXG4gICAqIEBjbGFzcyBDb25kaXRpb25CdWlsZGVyXG4gICAqIEBpbXBsZW1lbnRzIEJ1aWxkZXJcbiAgICogQGltcGxlbWVudHMgQXR0cmlidXRlT3B0aW9uXG4gICAqXG4gICAqIEBjYXRlZ29yeSBRdWVyeVxuICAgKiBAc3ViY2F0ZWdvcnkgQ29uZGl0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgQnVpbGRlciA9IGNsYXNzIENvbmRpdGlvbkJ1aWxkZXJcbiAgICBpbXBsZW1lbnRzIENvbmRpdGlvbkJ1aWxkZXJPcHRpb24sIEF0dHJpYnV0ZU9wdGlvblxuICB7XG4gICAgYXR0cjE/OiBzdHJpbmcgfCBDb25kaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgY29tcGFyaXNvbj86IGFueSA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgYXR0cmlidXRlKGF0dHI6IHN0cmluZyk6IEF0dHJpYnV0ZU9wdGlvbiB7XG4gICAgICB0aGlzLmF0dHIxID0gYXR0cjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYW4gRXF1YWxpdHkgQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICBlcSh2YWw6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuRVFVQUwsIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIERpZmZlcmVudCBDb21wYXJpc29uXG4gICAgICogQHBhcmFtIHthbnl9IHZhbFxuICAgICAqL1xuICAgIGRpZih2YWw6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuRElGRkVSRU5ULCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBHcmVhdGVyIFRoYW4gQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICBndCh2YWw6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuQklHR0VSLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBMb3dlciBUaGFuIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgbHQodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLlNNQUxMRVIsIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIEdyZWF0ZXIgb3IgRXF1YWwgdG8gQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICBndGUodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkJJR0dFUl9FUSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgTG93ZXIgb3IgRXF1YWwgdG8gQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICBsdGUodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLlNNQUxMRVJfRVEsIHZhbCk7XG4gICAgfVxuXG4gICAgaW4oYXJyOiBhbnlbXSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuSU4sIGFycik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIFJlZ2V4cG8gQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICByZWdleHAodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLlJFR0VYUCwgbmV3IFJlZ0V4cCh2YWwpLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQ3JlYXRlcyBhbiB7QGxpbmsgT3BlcmF0b3J9IGJhc2VkIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge09wZXJhdG9yfSBvcFxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldE9wKG9wOiBPcGVyYXRvciwgdmFsOiBhbnkpIHtcbiAgICAgIHRoaXMub3BlcmF0b3IgPSBvcDtcbiAgICAgIHRoaXMuY29tcGFyaXNvbiA9IHZhbDtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQnVpbGRzIHRoZSBEYXRhYmFzZSBPYmplY3RcbiAgICAgKiBAdGhyb3dzIHtRdWVyeUVycm9yfSBpZiBpdCBmYWlscyB0byBidWlsZCB0aGUge0BsaW5rIENvbmRpdGlvbn1cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgYnVpbGQoKTogQ29uZGl0aW9uIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgIHRoaXMuYXR0cjEgYXMgc3RyaW5nIHwgQ29uZGl0aW9uLFxuICAgICAgICAgIHRoaXMub3BlcmF0b3IgYXMgT3BlcmF0b3IsXG4gICAgICAgICAgdGhpcy5jb21wYXJpc29uIGFzIGFueVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgZ2V0IGJ1aWxkZXIoKTogQ29uZGl0aW9uQnVpbGRlck9wdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24uQnVpbGRlcigpO1xuICB9XG59XG4iXX0=
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZGl0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L0NvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSx5RUFJd0M7QUFDeEMsK0NBQXNEO0FBQ3RELHlDQUFzQztBQUV0Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLFNBQTJCLFNBQVEsNEJBQUs7SUFRbkQsWUFDRSxLQUE0QixFQUM1QixRQUFrQyxFQUNsQyxVQUFlO1FBRWYsS0FBSyxFQUFFLENBQUM7UUFYQSxVQUFLLEdBQTJCLFNBQVMsQ0FBQztRQUUxQyxhQUFRLEdBQThCLFNBQVMsQ0FBQztRQUVoRCxlQUFVLEdBQVMsU0FBUyxDQUFDO1FBUXJDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsU0FBdUI7UUFDekIsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsRUFBRSxDQUFDLFNBQXVCO1FBQ3hCLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxHQUFRO1FBQ1YsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsb0JBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ00sU0FBUyxDQUNoQixHQUFHLFVBQW9CO1FBRXZCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUUxQixNQUFNLGdCQUFnQixHQUFHLG9CQUFvQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUM7UUFFOUQsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsVUFBVSxZQUFZLFNBQVM7Z0JBQ3RDLE9BQU87b0JBQ0wsVUFBVSxFQUFFO3dCQUNWLFNBQVMsRUFBRSx1REFBdUQ7cUJBQ25FO2lCQUNzQixDQUFDO1lBQzVCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuRSxPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixTQUFTLEVBQUUsZ0JBQWdCO3FCQUM1QjtpQkFDc0IsQ0FBQztRQUM5QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLElBQ0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLFlBQVksU0FBUyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxLQUFLLG9CQUFRLENBQUMsR0FBRztnQkFFOUIsT0FBTztvQkFDTCxVQUFVLEVBQUU7d0JBQ1YsU0FBUyxFQUFFLGdCQUFnQjtxQkFDNUI7aUJBQ3NCLENBQUM7WUFDNUIsSUFDRSxNQUFNLENBQUMsTUFBTSxDQUFDLHlCQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQXlCLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQztnQkFDSixJQUFJLENBQUMsUUFBUSxLQUFLLG9CQUFRLENBQUMsR0FBRztnQkFFOUIsT0FBTztvQkFDTCxRQUFRLEVBQUU7d0JBQ1IsU0FBUyxFQUFFLGdCQUFnQjtxQkFDNUI7aUJBQ3NCLENBQUM7WUFDNUIsOEVBQThFO1lBQzlFLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIscUZBQXFGO1lBQ3JGLFlBQVk7WUFDWixnQ0FBZ0M7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FDUixVQUF3QixFQUN4QixVQUF3QjtRQUV4QixPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLHlCQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FDUCxVQUF3QixFQUN4QixVQUF3QjtRQUV4QixPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLHlCQUFhLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxLQUFLLENBQ2xCLFVBQXdCLEVBQ3hCLFFBQXVCLEVBQ3ZCLFVBQXdCO1FBRXhCLE9BQU8sSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBa0IsSUFBYTtRQUM3QyxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBa0IsSUFBYTtRQUN4QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7YUFDWSxZQUFPLEdBQUcsTUFBTSxnQkFBZ0I7UUFBdEI7WUFHdkIsVUFBSyxHQUE0QixTQUFTLENBQUM7WUFDM0MsYUFBUSxHQUE4QixTQUFTLENBQUM7WUFDaEQsZUFBVSxHQUFTLFNBQVMsQ0FBQztRQXFHL0IsQ0FBQztRQW5HQzs7V0FFRztRQUNILFNBQVMsQ0FBQyxJQUFhO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFhO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQ7OztXQUdHO1FBQ0gsRUFBRSxDQUFDLEdBQVE7WUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVEOzs7V0FHRztRQUNILEdBQUcsQ0FBQyxHQUFRO1lBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRDs7O1dBR0c7UUFDSCxFQUFFLENBQUMsR0FBUTtZQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQ7OztXQUdHO1FBQ0gsRUFBRSxDQUFDLEdBQVE7WUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVEOzs7V0FHRztRQUNILEdBQUcsQ0FBQyxHQUFRO1lBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRDs7O1dBR0c7UUFDSCxHQUFHLENBQUMsR0FBUTtZQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsRUFBRSxDQUFDLEdBQVU7WUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVEOzs7V0FHRztRQUNILE1BQU0sQ0FBQyxHQUFRO1lBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFRLENBQUMsTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRDs7OztXQUlHO1FBQ0ssS0FBSyxDQUFDLEVBQVksRUFBRSxHQUFRO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRDs7OztXQUlHO1FBQ0ssS0FBSztZQUNYLElBQUksQ0FBQztnQkFDSCxPQUFPLElBQUksU0FBUyxDQUNsQixJQUFJLENBQUMsS0FBOEIsRUFDbkMsSUFBSSxDQUFDLFFBQW9CLEVBQ3pCLElBQUksQ0FBQyxVQUFpQixDQUN2QixDQUFDO1lBQ0osQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxtQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO0tBQ0YsQUExR3FCLENBMEdwQjtJQUVGLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUssQ0FBQztJQUNwQyxDQUFDOztBQXpRSCw4QkEwUUM7QUF4UVc7SUFEVCxJQUFBLCtCQUFRLEdBQUU7O3dDQUN5QztBQUUxQztJQURULElBQUEsK0JBQVEsR0FBRTs7MkNBQytDO0FBRWhEO0lBRFQsSUFBQSwrQkFBUSxHQUFFOzs2Q0FDNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGVPcHRpb24sIENvbmRpdGlvbkJ1aWxkZXJPcHRpb24gfSBmcm9tIFwiLi9vcHRpb25zXCI7XG5pbXBvcnQge1xuICBNb2RlbCxcbiAgTW9kZWxFcnJvckRlZmluaXRpb24sXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBHcm91cE9wZXJhdG9yLCBPcGVyYXRvciB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IENvbmRpdGlvbiBDbGFzc1xuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBsb2dpY2FsIGNvbmRpdGlvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgQ29uZGl0aW9ufSBhdHRyMVxuICogQHBhcmFtIHtPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3J9IG9wZXJhdG9yXG4gKiBAcGFyYW0ge3N0cmluZyB8IENvbmRpdGlvbn0gY29tcGFyaXNvblxuICpcbiAqIEBjbGFzcyBDb25kaXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmRpdGlvbjxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgTW9kZWwge1xuICBAcmVxdWlyZWQoKVxuICBwcm90ZWN0ZWQgYXR0cjE/OiBzdHJpbmcgfCBDb25kaXRpb248TT4gPSB1bmRlZmluZWQ7XG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCBvcGVyYXRvcj86IE9wZXJhdG9yIHwgR3JvdXBPcGVyYXRvciA9IHVuZGVmaW5lZDtcbiAgQHJlcXVpcmVkKClcbiAgcHJvdGVjdGVkIGNvbXBhcmlzb24/OiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBhdHRyMTogc3RyaW5nIHwgQ29uZGl0aW9uPE0+LFxuICAgIG9wZXJhdG9yOiBPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3IsXG4gICAgY29tcGFyaXNvbjogYW55XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hdHRyMSA9IGF0dHIxO1xuICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICB0aGlzLmNvbXBhcmlzb24gPSBjb21wYXJpc29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEpvaW5zIDIge0BsaW5rIENvbmRpdGlvbn1zIG9uIGFuIHtAbGluayBPcGVyYXRvciNBTkR9IG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uXG4gICAqL1xuICBhbmQoY29uZGl0aW9uOiBDb25kaXRpb248TT4pOiBDb25kaXRpb248TT4ge1xuICAgIHJldHVybiBDb25kaXRpb24uYW5kKHRoaXMsIGNvbmRpdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgSm9pbnMgMiB7QGxpbmsgQ29uZGl0aW9ufXMgb24gYW4ge0BsaW5rIE9wZXJhdG9yI09SfSBvcGVyYXRpb25cbiAgICogQHBhcmFtIHtDb25kaXRpb259IGNvbmRpdGlvblxuICAgKi9cbiAgb3IoY29uZGl0aW9uOiBDb25kaXRpb248TT4pOiBDb25kaXRpb248TT4ge1xuICAgIHJldHVybiBDb25kaXRpb24ub3IodGhpcywgY29uZGl0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBleGNsdWRlcyBhIHZhbHV0IGZyb20gdGhlIHJlc3VsdFxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICBub3QodmFsOiBhbnkpOiBDb25kaXRpb248TT4ge1xuICAgIHJldHVybiBuZXcgQ29uZGl0aW9uKHRoaXMsIE9wZXJhdG9yLk5PVCwgdmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgb3ZlcnJpZGUgaGFzRXJyb3JzKFxuICAgIC4uLmV4Y2VwdGlvbnM6IHN0cmluZ1tdXG4gICk6IE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlcnJvcnMgPSBzdXBlci5oYXNFcnJvcnMoLi4uZXhjZXB0aW9ucyk7XG4gICAgaWYgKGVycm9ycykgcmV0dXJuIGVycm9ycztcblxuICAgIGNvbnN0IGludmFsaWRPcE1lc3NhZ2UgPSBgSW52YWxpZCBvcGVyYXRvciAke3RoaXMub3BlcmF0b3J9fWA7XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuYXR0cjEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmICh0aGlzLmNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb24pXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tcGFyaXNvbjoge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBcIkJvdGggc2lkZXMgb2YgdGhlIGNvbXBhcmlzb24gbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBNb2RlbEVycm9yRGVmaW5pdGlvbjtcbiAgICAgIGlmIChPYmplY3QudmFsdWVzKE9wZXJhdG9yKS5pbmRleE9mKHRoaXMub3BlcmF0b3IgYXMgT3BlcmF0b3IpID09PSAtMSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBpbnZhbGlkT3BNZXNzYWdlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXR0cjEgaW5zdGFuY2VvZiBDb25kaXRpb24pIHtcbiAgICAgIGlmIChcbiAgICAgICAgISh0aGlzLmNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb24pICYmXG4gICAgICAgIHRoaXMub3BlcmF0b3IgIT09IE9wZXJhdG9yLk5PVFxuICAgICAgKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbXBhcmlzb246IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogaW52YWxpZE9wTWVzc2FnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIE1vZGVsRXJyb3JEZWZpbml0aW9uO1xuICAgICAgaWYgKFxuICAgICAgICBPYmplY3QudmFsdWVzKEdyb3VwT3BlcmF0b3IpLmluZGV4T2YodGhpcy5vcGVyYXRvciBhcyBHcm91cE9wZXJhdG9yKSA9PT1cbiAgICAgICAgICAtMSAmJlxuICAgICAgICB0aGlzLm9wZXJhdG9yICE9PSBPcGVyYXRvci5OT1RcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgY29uZGl0aW9uOiBpbnZhbGlkT3BNZXNzYWdlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgICAvLyBpZiAodGhpcy5vcGVyYXRvciAhPT0gT3BlcmF0b3IuTk9UICYmIHR5cGVvZiB0aGlzLmF0dHIxLmF0dHIxICE9PSBcInN0cmluZ1wiKVxuICAgICAgLy8gICAgIHJldHVybiB7XG4gICAgICAvLyAgICAgICAgIGF0dHIxOiB7XG4gICAgICAvLyAgICAgICAgICAgICBjb25kaXRpb246IHN0cmluZ0Zvcm1hdChcIlBhcmVudCBjb25kaXRpb24gYXR0cmlidXRlIG11c3QgYmUgYSBzdHJpbmdcIilcbiAgICAgIC8vICAgICAgICAgfVxuICAgICAgLy8gICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb25cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgSm9pbnMgMiB7QGxpbmsgQ29uZGl0aW9ufXMgb24gYW4ge0BsaW5rIE9wZXJhdG9yI0FORH0gb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24xXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24yXG4gICAqL1xuICBzdGF0aWMgYW5kPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY29uZGl0aW9uMTogQ29uZGl0aW9uPE0+LFxuICAgIGNvbmRpdGlvbjI6IENvbmRpdGlvbjxNPlxuICApOiBDb25kaXRpb248TT4ge1xuICAgIHJldHVybiBDb25kaXRpb24uZ3JvdXAoY29uZGl0aW9uMSwgR3JvdXBPcGVyYXRvci5BTkQsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEpvaW5zIDIge0BsaW5rIENvbmRpdGlvbn1zIG9uIGFuIHtAbGluayBPcGVyYXRvciNPUn0gb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24xXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb24yXG4gICAqL1xuICBzdGF0aWMgb3I8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjb25kaXRpb24xOiBDb25kaXRpb248TT4sXG4gICAgY29uZGl0aW9uMjogQ29uZGl0aW9uPE0+XG4gICk6IENvbmRpdGlvbjxNPiB7XG4gICAgcmV0dXJuIENvbmRpdGlvbi5ncm91cChjb25kaXRpb24xLCBHcm91cE9wZXJhdG9yLk9SLCBjb25kaXRpb24yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBHcm91cHMgMiB7QGxpbmsgQ29uZGl0aW9ufXMgYnkgdGhlIHNwZWNpZmllZCB7QGxpbmsgR3JvdXBPcGVyYXRvcn1cbiAgICogQHBhcmFtIHtDb25kaXRpb259IGNvbmRpdGlvbjFcbiAgICogQHBhcmFtIHtHcm91cE9wZXJhdG9yfSBvcGVyYXRvclxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbn0gY29uZGl0aW9uMlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ3JvdXA8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjb25kaXRpb24xOiBDb25kaXRpb248TT4sXG4gICAgb3BlcmF0b3I6IEdyb3VwT3BlcmF0b3IsXG4gICAgY29uZGl0aW9uMjogQ29uZGl0aW9uPE0+XG4gICk6IENvbmRpdGlvbjxNPiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24oY29uZGl0aW9uMSwgb3BlcmF0b3IsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgc3RhdGljIGF0dHJpYnV0ZTxNIGV4dGVuZHMgTW9kZWw+KGF0dHI6IGtleW9mIE0pIHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbi5CdWlsZGVyPE0+KCkuYXR0cmlidXRlKGF0dHIpO1xuICB9XG5cbiAgc3RhdGljIGF0dHI8TSBleHRlbmRzIE1vZGVsPihhdHRyOiBrZXlvZiBNKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlKGF0dHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENvbmRpdGlvbiBCdWlsZGVyIENsYXNzXG4gICAqIEBkZXNjcmlwdGlvbiBwcm92aWRlcyBhIHNpbXBsZSBBUEkgdG8gYnVpbGQge0BsaW5rIENvbmRpdGlvbn1zXG4gICAqXG4gICAqIEBjbGFzcyBDb25kaXRpb25CdWlsZGVyXG4gICAqIEBpbXBsZW1lbnRzIEJ1aWxkZXJcbiAgICogQGltcGxlbWVudHMgQXR0cmlidXRlT3B0aW9uXG4gICAqXG4gICAqIEBjYXRlZ29yeSBRdWVyeVxuICAgKiBAc3ViY2F0ZWdvcnkgQ29uZGl0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgQnVpbGRlciA9IGNsYXNzIENvbmRpdGlvbkJ1aWxkZXI8TSBleHRlbmRzIE1vZGVsPlxuICAgIGltcGxlbWVudHMgQ29uZGl0aW9uQnVpbGRlck9wdGlvbjxNPiwgQXR0cmlidXRlT3B0aW9uPE0+XG4gIHtcbiAgICBhdHRyMT86IGtleW9mIE0gfCBDb25kaXRpb248TT4gPSB1bmRlZmluZWQ7XG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgY29tcGFyaXNvbj86IGFueSA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgYXR0cmlidXRlKGF0dHI6IGtleW9mIE0pOiBBdHRyaWJ1dGVPcHRpb248TT4ge1xuICAgICAgdGhpcy5hdHRyMSA9IGF0dHI7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBhdHRyKGF0dHI6IGtleW9mIE0pIHtcbiAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZShhdHRyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGFuIEVxdWFsaXR5IENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgZXEodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkVRVUFMLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBEaWZmZXJlbnQgQ29tcGFyaXNvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWxcbiAgICAgKi9cbiAgICBkaWYodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkRJRkZFUkVOVCwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgR3JlYXRlciBUaGFuIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgZ3QodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkJJR0dFUiwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgTG93ZXIgVGhhbiBDb21wYXJpc29uXG4gICAgICogQHBhcmFtIHthbnl9IHZhbFxuICAgICAqL1xuICAgIGx0KHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5TTUFMTEVSLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBHcmVhdGVyIG9yIEVxdWFsIHRvIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgZ3RlKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5CSUdHRVJfRVEsIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIExvd2VyIG9yIEVxdWFsIHRvIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgbHRlKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5TTUFMTEVSX0VRLCB2YWwpO1xuICAgIH1cblxuICAgIGluKGFycjogYW55W10pIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLklOLCBhcnIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBSZWdleHBvIENvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgcmVnZXhwKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5SRUdFWFAsIG5ldyBSZWdFeHAodmFsKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IENyZWF0ZXMgYW4ge0BsaW5rIE9wZXJhdG9yfSBiYXNlZCBDb21wYXJpc29uXG4gICAgICogQHBhcmFtIHtPcGVyYXRvcn0gb3BcbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRPcChvcDogT3BlcmF0b3IsIHZhbDogYW55KSB7XG4gICAgICB0aGlzLm9wZXJhdG9yID0gb3A7XG4gICAgICB0aGlzLmNvbXBhcmlzb24gPSB2YWw7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IEJ1aWxkcyB0aGUgRGF0YWJhc2UgT2JqZWN0XG4gICAgICogQHRocm93cyB7UXVlcnlFcnJvcn0gaWYgaXQgZmFpbHMgdG8gYnVpbGQgdGhlIHtAbGluayBDb25kaXRpb259XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGJ1aWxkKCk6IENvbmRpdGlvbjxNPiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICB0aGlzLmF0dHIxIGFzIHN0cmluZyB8IENvbmRpdGlvbjxNPixcbiAgICAgICAgICB0aGlzLm9wZXJhdG9yIGFzIE9wZXJhdG9yLFxuICAgICAgICAgIHRoaXMuY29tcGFyaXNvbiBhcyBhbnlcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGJ1aWxkZXI8TSBleHRlbmRzIE1vZGVsPigpOiBDb25kaXRpb25CdWlsZGVyT3B0aW9uPE0+IHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbi5CdWlsZGVyPE0+KCk7XG4gIH1cbn1cbiJdfQ==
@@ -10,13 +10,9 @@ import { GroupOperator, Operator } from "./constants";
10
10
  * @param {string | Condition} comparison
11
11
  *
12
12
  * @class Condition
13
- * @implements Executor
14
- *
15
- * @category Query
16
- * @subcategory Conditions
17
13
  */
18
- export declare class Condition extends Model {
19
- protected attr1?: string | Condition;
14
+ export declare class Condition<M extends Model> extends Model {
15
+ protected attr1?: string | Condition<M>;
20
16
  protected operator?: Operator | GroupOperator;
21
17
  protected comparison?: any;
22
18
  private constructor();
@@ -24,17 +20,17 @@ export declare class Condition extends Model {
24
20
  * @summary Joins 2 {@link Condition}s on an {@link Operator#AND} operation
25
21
  * @param {Condition} condition
26
22
  */
27
- and(condition: Condition): Condition;
23
+ and(condition: Condition<M>): Condition<M>;
28
24
  /**
29
25
  * @summary Joins 2 {@link Condition}s on an {@link Operator#OR} operation
30
26
  * @param {Condition} condition
31
27
  */
32
- or(condition: Condition): Condition;
28
+ or(condition: Condition<M>): Condition<M>;
33
29
  /**
34
30
  * @summary excludes a valut from the result
35
31
  * @param val
36
32
  */
37
- not(val: any): Condition;
33
+ not(val: any): Condition<M>;
38
34
  /**
39
35
  * @inheritDoc
40
36
  */
@@ -44,13 +40,13 @@ export declare class Condition extends Model {
44
40
  * @param {Condition} condition1
45
41
  * @param {Condition} condition2
46
42
  */
47
- static and(condition1: Condition, condition2: Condition): Condition;
43
+ static and<M extends Model>(condition1: Condition<M>, condition2: Condition<M>): Condition<M>;
48
44
  /**
49
45
  * @summary Joins 2 {@link Condition}s on an {@link Operator#OR} operation
50
46
  * @param {Condition} condition1
51
47
  * @param {Condition} condition2
52
48
  */
53
- static or(condition1: Condition, condition2: Condition): Condition;
49
+ static or<M extends Model>(condition1: Condition<M>, condition2: Condition<M>): Condition<M>;
54
50
  /**
55
51
  * @summary Groups 2 {@link Condition}s by the specified {@link GroupOperator}
56
52
  * @param {Condition} condition1
@@ -58,7 +54,8 @@ export declare class Condition extends Model {
58
54
  * @param {Condition} condition2
59
55
  */
60
56
  private static group;
61
- static attribute(attr: string): AttributeOption;
57
+ static attribute<M extends Model>(attr: keyof M): AttributeOption<M>;
58
+ static attr<M extends Model>(attr: keyof M): AttributeOption<M>;
62
59
  /**
63
60
  * @summary Condition Builder Class
64
61
  * @description provides a simple API to build {@link Condition}s
@@ -71,5 +68,5 @@ export declare class Condition extends Model {
71
68
  * @subcategory Conditions
72
69
  */
73
70
  private static Builder;
74
- static get builder(): ConditionBuilderOption;
71
+ static builder<M extends Model>(): ConditionBuilderOption<M>;
75
72
  }
@@ -14,16 +14,14 @@ class Paginator {
14
14
  }
15
15
  get statement() {
16
16
  if (!this._statement)
17
- this._statement = this.prepare(this._rawStatement);
17
+ this._statement = this.prepare(this.query);
18
18
  return this._statement;
19
19
  }
20
- get adapter() {
21
- return this.stat.getAdapter();
22
- }
23
- constructor(stat, size, _rawStatement) {
24
- this.stat = stat;
20
+ constructor(adapter, query, size, clazz) {
21
+ this.adapter = adapter;
22
+ this.query = query;
25
23
  this.size = size;
26
- this._rawStatement = _rawStatement;
24
+ this.clazz = clazz;
27
25
  }
28
26
  async next() {
29
27
  return this.page(this.current + 1);
@@ -33,11 +31,11 @@ class Paginator {
33
31
  }
34
32
  validatePage(page) {
35
33
  if (page < 1 || !Number.isInteger(page))
36
- throw new errors_1.PagingError("page number cannot be under 1 and must be an integer");
34
+ throw new errors_1.PagingError("Page number cannot be under 1 and must be an integer");
37
35
  if (typeof this._totalPages !== "undefined" && page > this._totalPages)
38
- throw new errors_1.PagingError(`Requested more pages than available. Total pages: ${this._totalPages}`);
36
+ throw new errors_1.PagingError(`Only ${this._totalPages} are available. Cannot go to page ${page}`);
39
37
  return page;
40
38
  }
41
39
  }
42
40
  exports.Paginator = Paginator;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L1BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBdUM7QUFHdkMsTUFBc0IsU0FBUztJQVE3QixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYyxPQUFPO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFDWSxJQUFrQixFQUNuQixJQUFZLEVBQ0YsYUFBZ0I7UUFGekIsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ0Ysa0JBQWEsR0FBYixhQUFhLENBQUc7SUFDbEMsQ0FBQztJQUlKLEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVTLFlBQVksQ0FBQyxJQUFZO1FBQ2pDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxvQkFBVyxDQUNuQixzREFBc0QsQ0FDdkQsQ0FBQztRQUNKLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVcsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDcEUsTUFBTSxJQUFJLG9CQUFXLENBQ25CLHFEQUFxRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ3hFLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FHRjtBQTFERCw4QkEwREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdpbmdFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgU3RhdGVtZW50IH0gZnJvbSBcIi4vU3RhdGVtZW50XCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQYWdpbmF0b3I8ViwgUT4ge1xuICBwcm90ZWN0ZWQgX2N1cnJlbnRQYWdlITogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RvdGFsUGFnZXMhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfcmVjb3JkQ291bnQhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBsaW1pdCE6IG51bWJlcjtcblxuICBwcml2YXRlIF9zdGF0ZW1lbnQ/OiBRO1xuXG4gIGdldCBjdXJyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZTtcbiAgfVxuXG4gIGdldCB0b3RhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcztcbiAgfVxuXG4gIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZWNvcmRDb3VudDtcbiAgfVxuXG4gIGdldCBzdGF0ZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLl9zdGF0ZW1lbnQpIHRoaXMuX3N0YXRlbWVudCA9IHRoaXMucHJlcGFyZSh0aGlzLl9yYXdTdGF0ZW1lbnQpO1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZW1lbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGFkYXB0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdC5nZXRBZGFwdGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0YXQ6IFN0YXRlbWVudDxRPixcbiAgICByZWFkb25seSBzaXplOiBudW1iZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yYXdTdGF0ZW1lbnQ6IFFcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcmVwYXJlKHJhd1N0YXRlbWVudDogUSk6IFE7XG5cbiAgYXN5bmMgbmV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlKHRoaXMuY3VycmVudCArIDEpO1xuICB9XG5cbiAgYXN5bmMgcHJldmlvdXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZSh0aGlzLmN1cnJlbnQgLSAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVBhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgaWYgKHBhZ2UgPCAxIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHBhZ2UpKVxuICAgICAgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFxuICAgICAgICBcInBhZ2UgbnVtYmVyIGNhbm5vdCBiZSB1bmRlciAxIGFuZCBtdXN0IGJlIGFuIGludGVnZXJcIlxuICAgICAgKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3RvdGFsUGFnZXMgIT09IFwidW5kZWZpbmVkXCIgJiYgcGFnZSA+IHRoaXMuX3RvdGFsUGFnZXMpXG4gICAgICB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXG4gICAgICAgIGBSZXF1ZXN0ZWQgbW9yZSBwYWdlcyB0aGFuIGF2YWlsYWJsZS4gVG90YWwgcGFnZXM6ICR7dGhpcy5fdG90YWxQYWdlc31gXG4gICAgICApO1xuICAgIHJldHVybiBwYWdlO1xuICB9XG5cbiAgYWJzdHJhY3QgcGFnZShwYWdlPzogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VltdPjtcbn1cbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L1BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBdUM7QUFJdkMsTUFBc0IsU0FBUztJQVE3QixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFjLFNBQVM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQ3FCLE9BQWtDLEVBQ2xDLEtBQVEsRUFDbEIsSUFBWSxFQUNGLEtBQXFCO1FBSHJCLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQUc7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNGLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBQ3ZDLENBQUM7SUFJSixLQUFLLENBQUMsSUFBSTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBWTtRQUNqQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNyQyxNQUFNLElBQUksb0JBQVcsQ0FDbkIsc0RBQXNELENBQ3ZELENBQUM7UUFDSixJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ3BFLE1BQU0sSUFBSSxvQkFBVyxDQUNuQixRQUFRLElBQUksQ0FBQyxXQUFXLHFDQUFxQyxJQUFJLEVBQUUsQ0FDcEUsQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUdGO0FBdkRELDhCQXVEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2luZ0Vycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQYWdpbmF0b3I8TSBleHRlbmRzIE1vZGVsLCBSID0gTVtdLCBRID0gYW55PiB7XG4gIHByb3RlY3RlZCBfY3VycmVudFBhZ2UhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfdG90YWxQYWdlcyE6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9yZWNvcmRDb3VudCE6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGxpbWl0ITogbnVtYmVyO1xuXG4gIHByaXZhdGUgX3N0YXRlbWVudD86IFE7XG5cbiAgZ2V0IGN1cnJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlO1xuICB9XG5cbiAgZ2V0IHRvdGFsKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzO1xuICB9XG5cbiAgZ2V0IGNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZENvdW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzdGF0ZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLl9zdGF0ZW1lbnQpIHRoaXMuX3N0YXRlbWVudCA9IHRoaXMucHJlcGFyZSh0aGlzLnF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVtZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhZGFwdGVyOiBBZGFwdGVyPGFueSwgUSwgYW55LCBhbnk+LFxuICAgIHByb3RlY3RlZCByZWFkb25seSBxdWVyeTogUSxcbiAgICByZWFkb25seSBzaXplOiBudW1iZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsYXp6OiBDb25zdHJ1Y3RvcjxNPlxuICApIHt9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByZXBhcmUocmF3U3RhdGVtZW50OiBRKTogUTtcblxuICBhc3luYyBuZXh0KCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2UodGhpcy5jdXJyZW50ICsgMSk7XG4gIH1cblxuICBhc3luYyBwcmV2aW91cygpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlKHRoaXMuY3VycmVudCAtIDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlUGFnZShwYWdlOiBudW1iZXIpIHtcbiAgICBpZiAocGFnZSA8IDEgfHwgIU51bWJlci5pc0ludGVnZXIocGFnZSkpXG4gICAgICB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXG4gICAgICAgIFwiUGFnZSBudW1iZXIgY2Fubm90IGJlIHVuZGVyIDEgYW5kIG11c3QgYmUgYW4gaW50ZWdlclwiXG4gICAgICApO1xuICAgIGlmICh0eXBlb2YgdGhpcy5fdG90YWxQYWdlcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwYWdlID4gdGhpcy5fdG90YWxQYWdlcylcbiAgICAgIHRocm93IG5ldyBQYWdpbmdFcnJvcihcbiAgICAgICAgYE9ubHkgJHt0aGlzLl90b3RhbFBhZ2VzfSBhcmUgYXZhaWxhYmxlLiBDYW5ub3QgZ28gdG8gcGFnZSAke3BhZ2V9YFxuICAgICAgKTtcbiAgICByZXR1cm4gcGFnZTtcbiAgfVxuXG4gIGFic3RyYWN0IHBhZ2UocGFnZT86IG51bWJlcik6IFByb21pc2U8UltdPjtcbn1cbiJdfQ==
@@ -1,8 +1,10 @@
1
- import { Statement } from "./Statement";
2
- export declare abstract class Paginator<V, Q> {
3
- protected stat: Statement<Q>;
1
+ import { Adapter } from "../persistence";
2
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
3
+ export declare abstract class Paginator<M extends Model, R = M[], Q = any> {
4
+ protected readonly adapter: Adapter<any, Q, any, any>;
5
+ protected readonly query: Q;
4
6
  readonly size: number;
5
- protected readonly _rawStatement: Q;
7
+ protected readonly clazz: Constructor<M>;
6
8
  protected _currentPage: number;
7
9
  protected _totalPages: number;
8
10
  protected _recordCount: number;
@@ -11,12 +13,11 @@ export declare abstract class Paginator<V, Q> {
11
13
  get current(): number;
12
14
  get total(): number;
13
15
  get count(): number;
14
- get statement(): Q;
15
- protected get adapter(): import("..").Adapter<any, Q, any, any>;
16
- protected constructor(stat: Statement<Q>, size: number, _rawStatement: Q);
16
+ protected get statement(): Q;
17
+ protected constructor(adapter: Adapter<any, Q, any, any>, query: Q, size: number, clazz: Constructor<M>);
17
18
  protected abstract prepare(rawStatement: Q): Q;
18
- next(): Promise<V[]>;
19
- previous(): Promise<V[]>;
19
+ next(): Promise<R[]>;
20
+ previous(): Promise<R[]>;
20
21
  protected validatePage(page: number): number;
21
- abstract page(page?: number, ...args: any[]): Promise<V[]>;
22
+ abstract page(page?: number): Promise<R[]>;
22
23
  }