@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
@@ -1,49 +1,27 @@
1
1
  import { RamStatement } from "./RamStatement";
2
- import { RamClauseFactory } from "./RamClauseFactory";
3
- import * as crypto from "node:crypto";
4
2
  import { RamContext } from "./RamContext";
5
3
  import { Repository } from "../repository/Repository";
6
- import { UnsupportedError } from "../persistence/errors";
7
- import { Adapter, PersistenceKeys } from "../persistence";
8
- import { Paginator } from "../query/Paginator";
9
- import { GroupOperator, Operator, QueryError, } from "../query";
4
+ import { Adapter, PersistenceKeys, Sequence } from "../persistence";
10
5
  import { Lock } from "@decaf-ts/transactional-decorators";
11
6
  import { Decoration, Model, propMetadata, } from "@decaf-ts/decorator-validation";
12
- import { BaseError, ConflictError, DefaultRepositoryFlags, findPrimaryKey, InternalError, NotFoundError, onCreate, OperationKeys, } from "@decaf-ts/db-decorators";
7
+ import { BaseError, ConflictError, findPrimaryKey, InternalError, NotFoundError, onCreate, } from "@decaf-ts/db-decorators";
13
8
  import { RamSequence } from "./RamSequence";
14
- export async function createdByOnRamCreateUpdate(context, data, key, model) {
15
- const uuid = context.get("UUID");
16
- if (!uuid)
17
- throw new UnsupportedError("This adapter does not support user identification");
18
- model[key] = uuid;
19
- }
20
- const createdByKey = Repository.key(PersistenceKeys.CREATED_BY);
21
- const updatedByKey = Repository.key(PersistenceKeys.UPDATED_BY);
22
- Decoration.flavouredAs("ram")
23
- .for(createdByKey)
24
- .define(onCreate(createdByOnRamCreateUpdate), propMetadata(createdByKey, {}))
25
- .apply();
26
- Decoration.flavouredAs("ram")
27
- .for(updatedByKey)
28
- .define(onCreate(createdByOnRamCreateUpdate), propMetadata(updatedByKey, {}))
29
- .apply();
9
+ import { createdByOnRamCreateUpdate } from "./handlers";
10
+ import { RamFlavour } from "./constants";
30
11
  export class RamAdapter extends Adapter {
31
- constructor(flavour = "ram") {
32
- super({}, flavour);
12
+ constructor(alias) {
13
+ super(new Map(), RamFlavour, alias);
14
+ this.Context = RamContext;
33
15
  this.indexes = {};
34
16
  this.lock = new Lock();
35
- this.sequences = {};
36
17
  }
37
- async context(operation, overrides, model,
38
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
- ...args) {
40
- return new RamContext(Object.assign({}, DefaultRepositoryFlags, overrides, {
41
- affectedTables: [model.name],
42
- writeOperation: operation !== OperationKeys.READ,
43
- timestamp: new Date(),
44
- operation: operation,
18
+ repository() {
19
+ return super.repository();
20
+ }
21
+ flags(operation, model, flags) {
22
+ return Object.assign(super.flags(operation, model, flags), {
45
23
  UUID: crypto.randomUUID(),
46
- }));
24
+ });
47
25
  }
48
26
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
27
  async initialize(...args) {
@@ -64,39 +42,39 @@ export class RamAdapter extends Adapter {
64
42
  }
65
43
  async create(tableName, id, model) {
66
44
  await this.lock.acquire();
67
- if (!this.native[tableName])
68
- this.native[tableName] = {};
69
- if (id in this.native[tableName])
45
+ if (!this.native.has(tableName))
46
+ this.native.set(tableName, new Map());
47
+ if (this.native.get(tableName) && this.native.get(tableName)?.has(id))
70
48
  throw new ConflictError(`Record with id ${id} already exists in table ${tableName}`);
71
- this.native[tableName][id] = model;
49
+ this.native.get(tableName)?.set(id, model);
72
50
  this.lock.release();
73
51
  return model;
74
52
  }
75
53
  async read(tableName, id) {
76
- if (!(tableName in this.native))
54
+ if (!this.native.has(tableName))
77
55
  throw new NotFoundError(`Table ${tableName} not found`);
78
- if (!(id in this.native[tableName]))
56
+ if (!this.native.get(tableName)?.has(id))
79
57
  throw new NotFoundError(`Record with id ${id} not found in table ${tableName}`);
80
- return this.native[tableName][id];
58
+ return this.native.get(tableName)?.get(id);
81
59
  }
82
60
  async update(tableName, id, model) {
83
61
  await this.lock.acquire();
84
- if (!(tableName in this.native))
62
+ if (!this.native.has(tableName))
85
63
  throw new NotFoundError(`Table ${tableName} not found`);
86
- if (!(id in this.native[tableName]))
64
+ if (!this.native.get(tableName)?.has(id))
87
65
  throw new NotFoundError(`Record with id ${id} not found in table ${tableName}`);
88
- this.native[tableName][id] = model;
66
+ this.native.get(tableName)?.set(id, model);
89
67
  this.lock.release();
90
68
  return model;
91
69
  }
92
70
  async delete(tableName, id) {
93
71
  await this.lock.acquire();
94
- if (!(tableName in this.native))
72
+ if (!this.native.has(tableName))
95
73
  throw new NotFoundError(`Table ${tableName} not found`);
96
- if (!(id in this.native[tableName]))
74
+ if (!this.native.get(tableName)?.has(id))
97
75
  throw new NotFoundError(`Record with id ${id} not found in table ${tableName}`);
98
- const natived = this.native[tableName][id];
99
- delete this.native[tableName][id];
76
+ const natived = this.native.get(tableName)?.get(id);
77
+ this.native.get(tableName)?.delete(id);
100
78
  this.lock.release();
101
79
  return natived;
102
80
  }
@@ -104,36 +82,18 @@ export class RamAdapter extends Adapter {
104
82
  if (typeof from === "string")
105
83
  from = Model.get(from);
106
84
  const table = Repository.table(from);
107
- if (!(table in this.native))
108
- this.native[table] = {};
109
- return this.native[table];
85
+ if (!this.native.has(table))
86
+ this.native.set(table, new Map());
87
+ return this.native.get(table);
110
88
  }
111
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
112
- async raw(rawInput, process) {
89
+ async raw(rawInput) {
113
90
  const { where, sort, limit, skip, from } = rawInput;
114
91
  let { select } = rawInput;
115
92
  const collection = this.tableFor(from);
116
- const clazz = typeof from === "string" ? Model.get(from) : from;
117
- const { id, props } = findPrimaryKey(new clazz());
118
- function parseId(id) {
119
- let result = id;
120
- switch (props.type) {
121
- case "Number":
122
- result = parseInt(result);
123
- if (isNaN(result))
124
- throw new Error(`Invalid id ${id}`);
125
- break;
126
- case "BigInt":
127
- result = BigInt(parseInt(result));
128
- break;
129
- case "String":
130
- break;
131
- default:
132
- throw new InternalError(`Invalid id type ${props.type}. should be impossible`);
133
- }
134
- return result;
135
- }
136
- let result = Object.entries(collection).map(([pk, r]) => this.revert(r, clazz, id, parseId(pk)));
93
+ if (!collection)
94
+ throw new InternalError(`Table ${from} not found in RamAdapter`);
95
+ const { id, props } = findPrimaryKey(new from());
96
+ let result = Array.from(collection.entries()).map(([pk, r]) => this.revert(r, from, id, Sequence.parseValue(props.type, pk)));
137
97
  result = where ? result.filter(where) : result;
138
98
  if (sort)
139
99
  result = result.sort(sort);
@@ -151,80 +111,29 @@ export class RamAdapter extends Adapter {
151
111
  }
152
112
  return result;
153
113
  }
154
- async paginate(rawInput) {
155
- return new (class extends Paginator {
156
- constructor(size) {
157
- super(undefined, size, rawInput);
158
- }
159
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
160
- prepare(rawStatement) {
161
- throw new Error("Method not implemented.");
162
- }
163
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
164
- page(page) {
165
- throw new Error("Method not implemented.");
166
- }
167
- })(10);
168
- }
169
114
  parseError(err) {
170
115
  if (err instanceof BaseError)
171
116
  return err;
172
117
  return new InternalError(err);
173
118
  }
174
- get Clauses() {
175
- if (!this.factory)
176
- this.factory = new RamClauseFactory(this);
177
- return this.factory;
178
- }
179
- get Statement() {
119
+ Statement() {
180
120
  return new RamStatement(this);
181
121
  }
182
122
  async Sequence(options) {
183
123
  return new RamSequence(options, this);
184
124
  }
185
- parseCondition(condition) {
186
- return {
187
- where: (m) => {
188
- const { attr1, operator, comparison } = condition;
189
- if ([GroupOperator.AND, GroupOperator.OR, Operator.NOT].indexOf(operator) === -1) {
190
- switch (operator) {
191
- case Operator.BIGGER:
192
- return m[attr1] > comparison;
193
- case Operator.BIGGER_EQ:
194
- return m[attr1] >= comparison;
195
- case Operator.DIFFERENT:
196
- return m[attr1] !== comparison;
197
- case Operator.EQUAL:
198
- return m[attr1] === comparison;
199
- case Operator.REGEXP:
200
- if (typeof m[attr1] !== "string")
201
- throw new QueryError(`Invalid regexp comparison on a non string attribute: ${m[attr1]}`);
202
- return !!m[attr1].match(new RegExp(comparison, "g"));
203
- case Operator.SMALLER:
204
- return m[attr1] < comparison;
205
- case Operator.SMALLER_EQ:
206
- return m[attr1] <= comparison;
207
- default:
208
- throw new InternalError(`Invalid operator for standard comparisons: ${operator}`);
209
- }
210
- }
211
- else if (operator === Operator.NOT) {
212
- throw new InternalError("Not implemented");
213
- }
214
- else {
215
- const op1 = this.parseCondition(attr1);
216
- const op2 = this.parseCondition(comparison);
217
- switch (operator) {
218
- case GroupOperator.AND:
219
- return op1.where(m) && op2.where(m);
220
- case GroupOperator.OR:
221
- return op1.where(m) || op2.where(m);
222
- default:
223
- throw new InternalError(`Invalid operator for And/Or comparisons: ${operator}`);
224
- }
225
- }
226
- },
227
- };
125
+ static decoration() {
126
+ const createdByKey = Repository.key(PersistenceKeys.CREATED_BY);
127
+ const updatedByKey = Repository.key(PersistenceKeys.UPDATED_BY);
128
+ Decoration.flavouredAs(RamFlavour)
129
+ .for(createdByKey)
130
+ .define(onCreate(createdByOnRamCreateUpdate), propMetadata(createdByKey, {}))
131
+ .apply();
132
+ Decoration.flavouredAs(RamFlavour)
133
+ .for(updatedByKey)
134
+ .define(onCreate(createdByOnRamCreateUpdate), propMetadata(updatedByKey, {}))
135
+ .apply();
228
136
  }
229
137
  }
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yYW0vUmFtQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQVEsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUdMLGFBQWEsRUFDYixRQUFRLEVBQ1IsVUFBVSxHQUNYLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRCxPQUFPLEVBRUwsVUFBVSxFQUNWLEtBQUssRUFDTCxZQUFZLEdBQ2IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsU0FBUyxFQUNULGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsUUFBUSxFQUNSLGFBQWEsR0FDZCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLEtBQUssVUFBVSwwQkFBMEIsQ0FROUMsT0FBbUIsRUFDbkIsSUFBTyxFQUNQLEdBQVksRUFDWixLQUFRO0lBRVIsTUFBTSxJQUFJLEdBQVcsT0FBTyxDQUFDLEdB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QUM7U0FDZSxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFJhbUZsYWdzLCBSYW1RdWVyeSwgUmFtU3RvcmFnZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBSYW1TdGF0ZW1lbnQgfSBmcm9tIFwiLi9SYW1TdGF0ZW1lbnRcIjtcbmltcG9ydCB7IFJhbUNsYXVzZUZhY3RvcnkgfSBmcm9tIFwiLi9SYW1DbGF1c2VGYWN0b3J5XCI7XG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBSYW1Db250ZXh0IH0gZnJvbSBcIi4vUmFtQ29udGV4dFwiO1xuaW1wb3J0IHsgUmVwbywgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFJlbGF0aW9uc01ldGFkYXRhIH0gZnJvbSBcIi4uL21vZGVsL3R5cGVzXCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2Vycm9yc1wiO1xuaW1wb3J0IHsgQWRhcHRlciwgUGVyc2lzdGVuY2VLZXlzLCBTZXF1ZW5jZSB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgUGFnaW5hdG9yIH0gZnJvbSBcIi4uL3F1ZXJ5L1BhZ2luYXRvclwiO1xuaW1wb3J0IHtcbiAgQ2xhdXNlRmFjdG9yeSxcbiAgQ29uZGl0aW9uLFxuICBHcm91cE9wZXJhdG9yLFxuICBPcGVyYXRvcixcbiAgUXVlcnlFcnJvcixcbn0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgTG9jayB9IGZyb20gXCJAZGVjYWYtdHMvdHJhbnNhY3Rpb25hbC1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgRGVjb3JhdGlvbixcbiAgTW9kZWwsXG4gIHByb3BNZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgQmFzZUVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBEZWZhdWx0UmVwb3NpdG9yeUZsYWdzLFxuICBmaW5kUHJpbWFyeUtleSxcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgb25DcmVhdGUsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUmFtU2VxdWVuY2UgfSBmcm9tIFwiLi9SYW1TZXF1ZW5jZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlZEJ5T25SYW1DcmVhdGVVcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFJlcG88TSwgQywgRj4sXG4gIFYgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbiAgRiBleHRlbmRzIFJhbUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPixcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IENvbnRleHQ8Rj4sXG4gIGRhdGE6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB1dWlkOiBzdHJpbmcgPSBjb250ZXh0LmdldChcIlVVSURcIik7XG4gIGlmICghdXVpZClcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIFwiVGhpcyBhZGFwdGVyIGRvZXMgbm90IHN1cHBvcnQgdXNlciBpZGVudGlmaWNhdGlvblwiXG4gICAgKTtcbiAgbW9kZWxba2V5XSA9IHV1aWQgYXMgTVtrZXlvZiBNXTtcbn1cblxuY29uc3QgY3JlYXRlZEJ5S2V5ID0gUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpO1xuY29uc3QgdXBkYXRlZEJ5S2V5ID0gUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLlVQREFURURfQlkpO1xuRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhcInJhbVwiKVxuICAuZm9yKGNyZWF0ZWRCeUtleSlcbiAgLmRlZmluZShvbkNyZWF0ZShjcmVhdGVkQnlPblJhbUNyZWF0ZVVwZGF0ZSksIHByb3BNZXRhZGF0YShjcmVhdGVkQnlLZXksIHt9KSlcbiAgLmFwcGx5KCk7XG5EZWNvcmF0aW9uLmZsYXZvdXJlZEFzKFwicmFtXCIpXG4gIC5mb3IodXBkYXRlZEJ5S2V5KVxuICAuZGVmaW5lKG9uQ3JlYXRlKGNyZWF0ZWRCeU9uUmFtQ3JlYXRlVXBkYXRlKSwgcHJvcE1ldGFkYXRhKHVwZGF0ZWRCeUtleSwge30pKVxuICAuYXBwbHkoKTtcblxuZXhwb3J0IGNsYXNzIFJhbUFkYXB0ZXIgZXh0ZW5kcyBBZGFwdGVyPFxuICBSYW1TdG9yYWdlLFxuICBSYW1RdWVyeTxhbnk+LFxuICBSYW1GbGFncyxcbiAgQ29udGV4dDxSYW1GbGFncz5cbj4ge1xuICBwcm90ZWN0ZWQgZmFjdG9yeT86IFJhbUNsYXVzZUZhY3Rvcnk7XG5cbiAgY29uc3RydWN0b3IoZmxhdm91cjogc3RyaW5nID0gXCJyYW1cIikge1xuICAgIHN1cGVyKHt9LCBmbGF2b3VyKTtcbiAgfVxuXG4gIGFzeW5jIGNvbnRleHQ8TSBleHRlbmRzIE1vZGVsLCBDIGV4dGVuZHMgUmFtQ29udGV4dCwgRiBleHRlbmRzIFJhbUZsYWdzPihcbiAgICBvcGVyYXRpb246IGFueSxcbiAgICBvdmVycmlkZXM6IFBhcnRpYWw8UmFtRmxhZ3M+LFxuICAgIG1vZGVsOiBDb25zdHJ1Y3RvcjxNPixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxDPiB7XG4gICAgcmV0dXJuIG5ldyBSYW1Db250ZXh0KFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdFJlcG9zaXRvcnlGbGFncywgb3ZlcnJpZGVzLCB7XG4gICAgICAgIGFmZmVjdGVkVGFibGVzOiBbbW9kZWwubmFtZV0sXG4gICAgICAgIHdyaXRlT3BlcmF0aW9uOiBvcGVyYXRpb24gIT09IE9wZXJhdGlvbktleXMuUkVBRCxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICBvcGVyYXRpb246IG9wZXJhdGlvbixcbiAgICAgICAgVVVJRDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgIH0pIGFzIEZcbiAgICApIGFzIEM7XG4gIH1cbiAgcHJpdmF0ZSBpbmRleGVzOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIFJlY29yZDxzdHJpbmcsIGFueT4+XG4gID4gPSB7fTtcblxuICBwcml2YXRlIGxvY2sgPSBuZXcgTG9jaygpO1xuXG4gIHByaXZhdGUgc2VxdWVuY2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBhc3luYyBpbml0aWFsaXplKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBhc3luYyBpbmRleCguLi5tb2RlbHM6IFJlY29yZDxzdHJpbmcsIGFueT5bXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJlcGFyZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG1vZGVsOiBNLFxuICAgIHBrOiBrZXlvZiBNXG4gICk6IHsgcmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBpZDogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHByZXBhcmVkID0gc3VwZXIucHJlcGFyZShtb2RlbCwgcGspO1xuICAgIGRlbGV0ZSBwcmVwYXJlZC5yZWNvcmRbcGsgYXMgc3RyaW5nXTtcbiAgICByZXR1cm4gcHJlcGFyZWQ7XG4gIH1cblxuICByZXZlcnQ8TSBleHRlbmRzIE1vZGVsPihcbiAgICBvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY2xheno6IHN0cmluZyB8IENvbnN0cnVjdG9yPE0+LFxuICAgIHBrOiBrZXlvZiBNLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogTSB7XG4gICAgY29uc3QgcmVzID0gc3VwZXIucmV2ZXJ0KG9iaiwgY2xhenosIHBrLCBpZCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGF3YWl0IHRoaXMubG9jay5hY3F1aXJlKCk7XG4gICAgaWYgKCF0aGlzLm5hdGl2ZVt0YWJsZU5hbWVdKSB0aGlzLm5hdGl2ZVt0YWJsZU5hbWVdID0ge307XG4gICAgaWYgKGlkIGluIHRoaXMubmF0aXZlW3RhYmxlTmFtZV0pXG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RFcnJvcihcbiAgICAgICAgYFJlY29yZCB3aXRoIGlkICR7aWR9IGFscmVhZHkgZXhpc3RzIGluIHRhYmxlICR7dGFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgdGhpcy5uYXRpdmVbdGFibGVOYW1lXVtpZF0gPSBtb2RlbDtcbiAgICB0aGlzLmxvY2sucmVsZWFzZSgpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIGFzeW5jIHJlYWQoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBpZiAoISh0YWJsZU5hbWUgaW4gdGhpcy5uYXRpdmUpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFRhYmxlICR7dGFibGVOYW1lfSBub3QgZm91bmRgKTtcbiAgICBpZiAoIShpZCBpbiB0aGlzLm5hdGl2ZVt0YWJsZU5hbWVdKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHRoaXMubmF0aXZlW3RhYmxlTmFtZV1baWRdO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgYXdhaXQgdGhpcy5sb2NrLmFjcXVpcmUoKTtcbiAgICBpZiAoISh0YWJsZU5hbWUgaW4gdGhpcy5uYXRpdmUpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFRhYmxlICR7dGFibGVOYW1lfSBub3QgZm91bmRgKTtcbiAgICBpZiAoIShpZCBpbiB0aGlzLm5hdGl2ZVt0YWJsZU5hbWVdKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgdGhpcy5uYXRpdmVbdGFibGVOYW1lXVtpZF0gPSBtb2RlbDtcbiAgICB0aGlzLmxvY2sucmVsZWFzZSgpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGF3YWl0IHRoaXMubG9jay5hY3F1aXJlKCk7XG4gICAgaWYgKCEodGFibGVOYW1lIGluIHRoaXMubmF0aXZlKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBUYWJsZSAke3RhYmxlTmFtZX0gbm90IGZvdW5kYCk7XG4gICAgaWYgKCEoaWQgaW4gdGhpcy5uYXRpdmVbdGFibGVOYW1lXSkpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYFJlY29yZCB3aXRoIGlkICR7aWR9IG5vdCBmb3VuZCBpbiB0YWJsZSAke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIGNvbnN0IG5hdGl2ZWQgPSB0aGlzLm5hdGl2ZVt0YWJsZU5hbWVdW2lkXTtcbiAgICBkZWxldGUgdGhpcy5uYXRpdmVbdGFibGVOYW1lXVtpZF07XG4gICAgdGhpcy5sb2NrLnJlbGVhc2UoKTtcbiAgICByZXR1cm4gbmF0aXZlZDtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWJsZUZvcjxNIGV4dGVuZHMgTW9kZWw+KGZyb206IHN0cmluZyB8IENvbnN0cnVjdG9yPE0+KSB7XG4gICAgaWYgKHR5cGVvZiBmcm9tID09PSBcInN0cmluZ1wiKSBmcm9tID0gTW9kZWwuZ2V0KGZyb20pIGFzIENvbnN0cnVjdG9yPE0+O1xuICAgIGNvbnN0IHRhYmxlID0gUmVwb3NpdG9yeS50YWJsZShmcm9tKTtcbiAgICBpZiAoISh0YWJsZSBpbiB0aGlzLm5hdGl2ZSkpIHRoaXMubmF0aXZlW3RhYmxlXSA9IHt9O1xuICAgIHJldHVybiB0aGlzLm5hdGl2ZVt0YWJsZV07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGFzeW5jIHJhdzxaPihyYXdJbnB1dDogUmFtUXVlcnk8YW55PiwgcHJvY2VzczogYm9vbGVhbik6IFByb21pc2U8Wj4ge1xuICAgIGNvbnN0IHsgd2hlcmUsIHNvcnQsIGxpbWl0LCBza2lwLCBmcm9tIH0gPSByYXdJbnB1dDtcbiAgICBsZXQgeyBzZWxlY3QgfSA9IHJhd0lucHV0O1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLnRhYmxlRm9yKGZyb20pO1xuXG4gICAgY29uc3QgY2xhenogPSB0eXBlb2YgZnJvbSA9PT0gXCJzdHJpbmdcIiA/IE1vZGVsLmdldChmcm9tKSA6IGZyb207XG4gICAgY29uc3QgeyBpZCwgcHJvcHMgfSA9IGZpbmRQcmltYXJ5S2V5KG5ldyBjbGF6eigpKTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlSWQoaWQ6IGFueSkge1xuICAgICAgbGV0IHJlc3VsdCA9IGlkO1xuICAgICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICAgICAgICByZXN1bHQgPSBwYXJzZUludChyZXN1bHQpO1xuICAgICAgICAgIGlmIChpc05hTihyZXN1bHQpKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaWQgJHtpZH1gKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkJpZ0ludFwiOlxuICAgICAgICAgIHJlc3VsdCA9IEJpZ0ludChwYXJzZUludChyZXN1bHQpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlN0cmluZ1wiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgaWQgdHlwZSAke3Byb3BzLnR5cGV9LiBzaG91bGQgYmUgaW1wb3NzaWJsZWBcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IE9iamVjdC5lbnRyaWVzKGNvbGxlY3Rpb24pLm1hcCgoW3BrLCByXSkgPT5cbiAgICAgIHRoaXMucmV2ZXJ0KHIsIGNsYXp6LCBpZCBhcyBhbnksIHBhcnNlSWQocGspKVxuICAgICk7XG5cbiAgICByZXN1bHQgPSB3aGVyZSA/IHJlc3VsdC5maWx0ZXIod2hlcmUpIDogcmVzdWx0O1xuXG4gICAgaWYgKHNvcnQpIHJlc3VsdCA9IHJlc3VsdC5zb3J0KHNvcnQpO1xuXG4gICAgaWYgKHNraXApIHJlc3VsdCA9IHJlc3VsdC5zbGljZShza2lwKTtcbiAgICBpZiAobGltaXQpIHJlc3VsdCA9IHJlc3VsdC5zbGljZSgwLCBsaW1pdCk7XG5cbiAgICBpZiAoc2VsZWN0KSB7XG4gICAgICBzZWxlY3QgPSBBcnJheS5pc0FycmF5KHNlbGVjdCkgPyBzZWxlY3QgOiBbc2VsZWN0XTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5tYXAoKHIpID0+XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHIpLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgaWYgKChzZWxlY3QgYXMgc3RyaW5nW10pLmluY2x1ZGVzKGtleSkpIGFjY1trZXldID0gdmFsO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0IGFzIHVua25vd24gYXMgWjtcbiAgfVxuXG4gIGFzeW5jIHBhZ2luYXRlPFo+KHJhd0lucHV0OiBzdHJpbmcpOiBQcm9taXNlPFBhZ2luYXRvcjxaLCBzdHJpbmc+PiB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBQYWdpbmF0b3I8Wiwgc3RyaW5nPiB7XG4gICAgICBjb25zdHJ1Y3RvcihzaXplOiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodW5kZWZpbmVkIGFzIHVua25vd24gYXMgYW55LCBzaXplLCByYXdJbnB1dCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIHByb3RlY3RlZCBwcmVwYXJlKHJhd1N0YXRlbWVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgICB9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICBwYWdlKHBhZ2U6IG51bWJlcik6IFByb21pc2U8WltdPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgICAgfVxuICAgIH0pKDEwKTtcbiAgfVxuXG4gIHBhcnNlRXJyb3I8ViBleHRlbmRzIEJhc2VFcnJvcj4oZXJyOiBFcnJvcik6IFYge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBCYXNlRXJyb3IpIHJldHVybiBlcnIgYXMgVjtcbiAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IoZXJyKSBhcyBWO1xuICB9XG5cbiAgZ2V0IENsYXVzZXMoKTogQ2xhdXNlRmFjdG9yeTxSYW1TdG9yYWdlLCBSYW1RdWVyeTxhbnk+LCB0eXBlb2YgdGhpcz4ge1xuICAgIGlmICghdGhpcy5mYWN0b3J5KSB0aGlzLmZhY3RvcnkgPSBuZXcgUmFtQ2xhdXNlRmFjdG9yeSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5mYWN0b3J5IGFzIGFueTtcbiAgfVxuXG4gIGdldCBTdGF0ZW1lbnQoKTogUmFtU3RhdGVtZW50PGFueT4ge1xuICAgIHJldHVybiBuZXcgUmFtU3RhdGVtZW50KHRoaXMpO1xuICB9XG5cbiAgYXN5bmMgU2VxdWVuY2Uob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKTogUHJvbWlzZTxTZXF1ZW5jZT4ge1xuICAgIHJldHVybiBuZXcgUmFtU2VxdWVuY2Uob3B0aW9ucywgdGhpcyk7XG4gIH1cblxuICBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbik6IFJhbVF1ZXJ5PGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aGVyZTogKG06IE1vZGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYXR0cjEsIG9wZXJhdG9yLCBjb21wYXJpc29uIH0gPSBjb25kaXRpb24gYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgYXR0cjE6IHN0cmluZyB8IENvbmRpdGlvbjtcbiAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IgfCBHcm91cE9wZXJhdG9yO1xuICAgICAgICAgIGNvbXBhcmlzb246IGFueTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgW0dyb3VwT3BlcmF0b3IuQU5ELCBHcm91cE9wZXJhdG9yLk9SLCBPcGVyYXRvci5OT1RdLmluZGV4T2YoXG4gICAgICAgICAgICBvcGVyYXRvciBhcyBHcm91cE9wZXJhdG9yXG4gICAgICAgICAgKSA9PT0gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5CSUdHRVI6XG4gICAgICAgICAgICAgIHJldHVybiBtW2F0dHIxIGFzIGtleW9mIE1vZGVsXSA+IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkJJR0dFUl9FUTpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdID49IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLkRJRkZFUkVOVDpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdICE9PSBjb21wYXJpc29uO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5FUVVBTDpcbiAgICAgICAgICAgICAgcmV0dXJuIG1bYXR0cjEgYXMga2V5b2YgTW9kZWxdID09PSBjb21wYXJpc29uO1xuICAgICAgICAgICAgY2FzZSBPcGVyYXRvci5SRUdFWFA6XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gIT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgICAgICAgICAgICBgSW52YWxpZCByZWdleHAgY29tcGFyaXNvbiBvbiBhIG5vbiBzdHJpbmcgYXR0cmlidXRlOiAke21bYXR0cjEgYXMga2V5b2YgTW9kZWxdfWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gISEobVthdHRyMSBhcyBrZXlvZiBNb2RlbF0gYXMgdW5rbm93biBhcyBzdHJpbmcpLm1hdGNoKFxuICAgICAgICAgICAgICAgIG5ldyBSZWdFeHAoY29tcGFyaXNvbiwgXCJnXCIpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLlNNQUxMRVI6XG4gICAgICAgICAgICAgIHJldHVybiBtW2F0dHIxIGFzIGtleW9mIE1vZGVsXSA8IGNvbXBhcmlzb247XG4gICAgICAgICAgICBjYXNlIE9wZXJhdG9yLlNNQUxMRVJfRVE6XG4gICAgICAgICAgICAgIHJldHVybiBtW2F0dHIxIGFzIGtleW9mIE1vZGVsXSA8PSBjb21wYXJpc29uO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgICAgYEludmFsaWQgb3BlcmF0b3IgZm9yIHN0YW5kYXJkIGNvbXBhcmlzb25zOiAke29wZXJhdG9yfWBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0b3IgPT09IE9wZXJhdG9yLk5PVCkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG9wMTogUmFtUXVlcnk8YW55PiA9IHRoaXMucGFyc2VDb25kaXRpb24oYXR0cjEgYXMgQ29uZGl0aW9uKTtcbiAgICAgICAgICBjb25zdCBvcDI6IFJhbVF1ZXJ5PGFueT4gPSB0aGlzLnBhcnNlQ29uZGl0aW9uKFxuICAgICAgICAgICAgY29tcGFyaXNvbiBhcyBDb25kaXRpb25cbiAgICAgICAgICApO1xuICAgICAgICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgICAgICAgIGNhc2UgR3JvdXBPcGVyYXRvci5BTkQ6XG4gICAgICAgICAgICAgIHJldHVybiBvcDEud2hlcmUobSkgJiYgb3AyLndoZXJlKG0pO1xuICAgICAgICAgICAgY2FzZSBHcm91cE9wZXJhdG9yLk9SOlxuICAgICAgICAgICAgICByZXR1cm4gb3AxLndoZXJlKG0pIHx8IG9wMi53aGVyZShtKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgIGBJbnZhbGlkIG9wZXJhdG9yIGZvciBBbmQvT3IgY29tcGFyaXNvbnM6ICR7b3BlcmF0b3J9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9IGFzIFJhbVF1ZXJ5PGFueT47XG4gIH1cbn1cbiJdfQ==
138
+ RamAdapter.decoration();
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yYW0vUmFtQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFELE9BQU8sRUFFTCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFlBQVksR0FDYixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLFFBQVEsR0FFVCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekMsTUFBTSxPQUFPLFVBQVcsU0FBUSxPQUsvQjtJQUNDLFlBQVksS0FBYztRQUN4QixLQUFLLENBQUMsSUFBSSxHQUFHLEVBQTRCLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBaUJ2RCxZQUFPLEdBQUcsVUFBVSxDQUFDO1FBRXRCLFlBQU8sR0FHWCxFQUFFLENBQUM7UUFFQyxTQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQXZCMUIsQ0FBQztJQUVRLFVBQVU7UUFDakIsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFzQyxDQUFDO0lBQ2hFLENBQUM7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QUFPLE1BQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVELFVBQVUsQ0FBc0IsR0FBVTtRQUN4QyxJQUFJLEdBQUcsWUFBWSxTQUFTO1lBQUUsT0FBTyxHQUFRLENBQUM7UUFDOUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxZQUFZLENBQVMsSUFBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBd0I7UUFDckMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVO1FBQ2YsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEUsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7YUFDL0IsR0FBRyxDQUFDLFlBQVksQ0FBQzthQUNqQixNQUFNLENBQ0wsUUFBUSxDQUFDLDBCQUEwQixDQUFDLEVBQ3BDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQy9CO2FBQ0EsS0FBSyxFQUFFLENBQUM7UUFDWCxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQzthQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDO2FBQ2pCLE1BQU0sQ0FDTCxRQUFRLENBQUMsMEJBQTBCLENBQUMsRUFDcEMsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FDL0I7YUFDQSxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQUVELFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbUZsYWdzLCBSYXdSYW1RdWVyeSwgUmFtU3RvcmFnZSwgUmFtUmVwb3NpdG9yeSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBSYW1TdGF0ZW1lbnQgfSBmcm9tIFwiLi9SYW1TdGF0ZW1lbnRcIjtcbmltcG9ydCB7IFJhbUNvbnRleHQgfSBmcm9tIFwiLi9SYW1Db250ZXh0XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgQWRhcHRlciwgUGVyc2lzdGVuY2VLZXlzLCBTZXF1ZW5jZSB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgU2VxdWVuY2VPcHRpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IExvY2sgfSBmcm9tIFwiQGRlY2FmLXRzL3RyYW5zYWN0aW9uYWwtZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIERlY29yYXRpb24sXG4gIE1vZGVsLFxuICBwcm9wTWV0YWRhdGEsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgZmluZFByaW1hcnlLZXksXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIG9uQ3JlYXRlLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFJhbVNlcXVlbmNlIH0gZnJvbSBcIi4vUmFtU2VxdWVuY2VcIjtcbmltcG9ydCB7IGNyZWF0ZWRCeU9uUmFtQ3JlYXRlVXBkYXRlIH0gZnJvbSBcIi4vaGFuZGxlcnNcIjtcbmltcG9ydCB7IFJhbUZsYXZvdXIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNsYXNzIFJhbUFkYXB0ZXIgZXh0ZW5kcyBBZGFwdGVyPFxuICBSYW1TdG9yYWdlLFxuICBSYXdSYW1RdWVyeTxhbnk+LFxuICBSYW1GbGFncyxcbiAgUmFtQ29udGV4dFxuPiB7XG4gIGNvbnN0cnVjdG9yKGFsaWFzPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIGFueT4+KCksIFJhbUZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJlcG9zaXRvcnk8TSBleHRlbmRzIE1vZGVsPigpOiBDb25zdHJ1Y3RvcjxSYW1SZXBvc2l0b3J5PE0+PiB7XG4gICAgcmV0dXJuIHN1cGVyLnJlcG9zaXRvcnk8TT4oKSBhcyBDb25zdHJ1Y3RvcjxSYW1SZXBvc2l0b3J5PE0+PjtcbiAgfVxuXG4gIG92ZXJyaWRlIGZsYWdzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgb3BlcmF0aW9uOiBPcGVyYXRpb25LZXlzLFxuICAgIG1vZGVsOiBDb25zdHJ1Y3RvcjxNPixcbiAgICBmbGFnczogUGFydGlhbDxSYW1GbGFncz5cbiAgKTogUmFtRmxhZ3Mge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN1cGVyLmZsYWdzKG9wZXJhdGlvbiwgbW9kZWwsIGZsYWdzKSwge1xuICAgICAgVVVJRDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICB9KSBhcyBSYW1GbGFncztcbiAgfVxuXG4gIG92ZXJyaWRlIENvbnRleHQgPSBSYW1Db250ZXh0O1xuXG4gIHByaXZhdGUgaW5kZXhlczogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PlxuICA+ID0ge307XG5cbiAgcHJpdmF0ZSBsb2NrID0gbmV3IExvY2soKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGFzeW5jIGluaXRpYWxpemUoLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGFzeW5jIGluZGV4KC4uLm1vZGVsczogUmVjb3JkPHN0cmluZywgYW55PltdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBvdmVycmlkZSBwcmVwYXJlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgcGs6IGtleW9mIE1cbiAgKTogeyByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT47IGlkOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgcHJlcGFyZWQgPSBzdXBlci5wcmVwYXJlKG1vZGVsLCBwayk7XG4gICAgZGVsZXRlIHByZXBhcmVkLnJlY29yZFtwayBhcyBzdHJpbmddO1xuICAgIHJldHVybiBwcmVwYXJlZDtcbiAgfVxuXG4gIG92ZXJyaWRlIHJldmVydDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG9iajogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjbGF6ejogc3RyaW5nIHwgQ29uc3RydWN0b3I8TT4sXG4gICAgcGs6IGtleW9mIE0sXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBNIHtcbiAgICBjb25zdCByZXMgPSBzdXBlci5yZXZlcnQob2JqLCBjbGF6eiwgcGssIGlkKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgYXdhaXQgdGhpcy5sb2NrLmFjcXVpcmUoKTtcbiAgICBpZiAoIXRoaXMubmF0aXZlLmhhcyh0YWJsZU5hbWUpKSB0aGlzLm5hdGl2ZS5zZXQodGFibGVOYW1lLCBuZXcgTWFwKCkpO1xuICAgIGlmICh0aGlzLm5hdGl2ZS5nZXQodGFibGVOYW1lKSAmJiB0aGlzLm5hdGl2ZS5nZXQodGFibGVOYW1lKT8uaGFzKGlkKSlcbiAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKFxuICAgICAgICBgUmVjb3JkIHdpdGggaWQgJHtpZH0gYWxyZWFkeSBleGlzdHMgaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICB0aGlzLm5hdGl2ZS5nZXQodGFibGVOYW1lKT8uc2V0KGlkLCBtb2RlbCk7XG4gICAgdGhpcy5sb2NrLnJlbGVhc2UoKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBhc3luYyByZWFkKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgaWYgKCF0aGlzLm5hdGl2ZS5oYXModGFibGVOYW1lKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBUYWJsZSAke3RhYmxlTmFtZX0gbm90IGZvdW5kYCk7XG4gICAgaWYgKCF0aGlzLm5hdGl2ZS5nZXQodGFibGVOYW1lKT8uaGFzKGlkKSlcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUmVjb3JkIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kIGluIHRhYmxlICR7dGFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHRoaXMubmF0aXZlLmdldCh0YWJsZU5hbWUpPy5nZXQoaWQpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgYXdhaXQgdGhpcy5sb2NrLmFjcXVpcmUoKTtcbiAgICBpZiAoIXRoaXMubmF0aXZlLmhhcyh0YWJsZU5hbWUpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFRhYmxlICR7dGFibGVOYW1lfSBub3QgZm91bmRgKTtcbiAgICBpZiAoIXRoaXMubmF0aXZlLmdldCh0YWJsZU5hbWUpPy5oYXMoaWQpKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBSZWNvcmQgd2l0aCBpZCAke2lkfSBub3QgZm91bmQgaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICB0aGlzLm5hdGl2ZS5nZXQodGFibGVOYW1lKT8uc2V0KGlkLCBtb2RlbCk7XG4gICAgdGhpcy5sb2NrLnJlbGVhc2UoKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBhc3luYyBkZWxldGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBhd2FpdCB0aGlzLmxvY2suYWNxdWlyZSgpO1xuICAgIGlmICghdGhpcy5uYXRpdmUuaGFzKHRhYmxlTmFtZSkpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgVGFibGUgJHt0YWJsZU5hbWV9IG5vdCBmb3VuZGApO1xuICAgIGlmICghdGhpcy5uYXRpdmUuZ2V0KHRhYmxlTmFtZSk/LmhhcyhpZCkpXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYFJlY29yZCB3aXRoIGlkICR7aWR9IG5vdCBmb3VuZCBpbiB0YWJsZSAke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIGNvbnN0IG5hdGl2ZWQgPSB0aGlzLm5hdGl2ZS5nZXQodGFibGVOYW1lKT8uZ2V0KGlkKTtcbiAgICB0aGlzLm5hdGl2ZS5nZXQodGFibGVOYW1lKT8uZGVsZXRlKGlkKTtcbiAgICB0aGlzLmxvY2sucmVsZWFzZSgpO1xuICAgIHJldHVybiBuYXRpdmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRhYmxlRm9yPE0gZXh0ZW5kcyBNb2RlbD4oZnJvbTogc3RyaW5nIHwgQ29uc3RydWN0b3I8TT4pIHtcbiAgICBpZiAodHlwZW9mIGZyb20gPT09IFwic3RyaW5nXCIpIGZyb20gPSBNb2RlbC5nZXQoZnJvbSkgYXMgQ29uc3RydWN0b3I8TT47XG4gICAgY29uc3QgdGFibGUgPSBSZXBvc2l0b3J5LnRhYmxlKGZyb20pO1xuICAgIGlmICghdGhpcy5uYXRpdmUuaGFzKHRhYmxlKSkgdGhpcy5uYXRpdmUuc2V0KHRhYmxlLCBuZXcgTWFwKCkpO1xuICAgIHJldHVybiB0aGlzLm5hdGl2ZS5nZXQodGFibGUpO1xuICB9XG5cbiAgYXN5bmMgcmF3PFI+KHJhd0lucHV0OiBSYXdSYW1RdWVyeTxhbnk+KTogUHJvbWlzZTxSPiB7XG4gICAgY29uc3QgeyB3aGVyZSwgc29ydCwgbGltaXQsIHNraXAsIGZyb20gfSA9IHJhd0lucHV0O1xuICAgIGxldCB7IHNlbGVjdCB9ID0gcmF3SW5wdXQ7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMudGFibGVGb3IoZnJvbSk7XG4gICAgaWYgKCFjb2xsZWN0aW9uKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFRhYmxlICR7ZnJvbX0gbm90IGZvdW5kIGluIFJhbUFkYXB0ZXJgKTtcbiAgICBjb25zdCB7IGlkLCBwcm9wcyB9ID0gZmluZFByaW1hcnlLZXkobmV3IGZyb20oKSk7XG5cbiAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IEFycmF5LmZyb20oY29sbGVjdGlvbi5lbnRyaWVzKCkpLm1hcCgoW3BrLCByXSkgPT5cbiAgICAgIHRoaXMucmV2ZXJ0KFxuICAgICAgICByLFxuICAgICAgICBmcm9tLFxuICAgICAgICBpZCBhcyBhbnksXG4gICAgICAgIFNlcXVlbmNlLnBhcnNlVmFsdWUocHJvcHMudHlwZSBhcyBhbnksIHBrIGFzIHN0cmluZykgYXMgc3RyaW5nXG4gICAgICApXG4gICAgKTtcblxuICAgIHJlc3VsdCA9IHdoZXJlID8gcmVzdWx0LmZpbHRlcih3aGVyZSkgOiByZXN1bHQ7XG5cbiAgICBpZiAoc29ydCkgcmVzdWx0ID0gcmVzdWx0LnNvcnQoc29ydCk7XG5cbiAgICBpZiAoc2tpcCkgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKHNraXApO1xuICAgIGlmIChsaW1pdCkgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGxpbWl0KTtcblxuICAgIGlmIChzZWxlY3QpIHtcbiAgICAgIHNlbGVjdCA9IEFycmF5LmlzQXJyYXkoc2VsZWN0KSA/IHNlbGVjdCA6IFtzZWxlY3RdO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0Lm1hcCgocikgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMocikucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIGFueT4sIFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgICBpZiAoKHNlbGVjdCBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoa2V5KSkgYWNjW2tleV0gPSB2YWw7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQgYXMgdW5rbm93biBhcyBSO1xuICB9XG5cbiAgcGFyc2VFcnJvcjxWIGV4dGVuZHMgQmFzZUVycm9yPihlcnI6IEVycm9yKTogViB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEJhc2VFcnJvcikgcmV0dXJuIGVyciBhcyBWO1xuICAgIHJldHVybiBuZXcgSW50ZXJuYWxFcnJvcihlcnIpIGFzIFY7XG4gIH1cblxuICBTdGF0ZW1lbnQ8TSBleHRlbmRzIE1vZGVsPigpOiBSYW1TdGF0ZW1lbnQ8TSwgYW55PiB7XG4gICAgcmV0dXJuIG5ldyBSYW1TdGF0ZW1lbnQ8TSwgYW55Pih0aGlzIGFzIGFueSk7XG4gIH1cblxuICBhc3luYyBTZXF1ZW5jZShvcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMpOiBQcm9taXNlPFNlcXVlbmNlPiB7XG4gICAgcmV0dXJuIG5ldyBSYW1TZXF1ZW5jZShvcHRpb25zLCB0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyBkZWNvcmF0aW9uKCkge1xuICAgIGNvbnN0IGNyZWF0ZWRCeUtleSA9IFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5DUkVBVEVEX0JZKTtcbiAgICBjb25zdCB1cGRhdGVkQnlLZXkgPSBSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuVVBEQVRFRF9CWSk7XG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhSYW1GbGF2b3VyKVxuICAgICAgLmZvcihjcmVhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZShjcmVhdGVkQnlPblJhbUNyZWF0ZVVwZGF0ZSksXG4gICAgICAgIHByb3BNZXRhZGF0YShjcmVhdGVkQnlLZXksIHt9KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhSYW1GbGF2b3VyKVxuICAgICAgLmZvcih1cGRhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZShjcmVhdGVkQnlPblJhbUNyZWF0ZVVwZGF0ZSksXG4gICAgICAgIHByb3BNZXRhZGF0YSh1cGRhdGVkQnlLZXksIHt9KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG4gIH1cbn1cblxuUmFtQWRhcHRlci5kZWNvcmF0aW9uKCk7XG4iXX0=
@@ -1,7 +1,9 @@
1
- import { RamQuery } from "./types";
2
- import { Paginator, Statement } from "../query";
3
- export declare class RamPaginator<V> extends Paginator<V, RamQuery<any>> {
4
- constructor(statement: Statement<RamQuery<any>>, size: number, rawStatement: RamQuery<any>);
5
- protected prepare(rawStatement: RamQuery<any>): RamQuery<any>;
6
- page(page?: number, ...args: any[]): Promise<V[]>;
1
+ import { RawRamQuery } from "./types";
2
+ import { Paginator } from "../query";
3
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
4
+ import { Adapter } from "../persistence";
5
+ export declare class RamPaginator<M extends Model, R> extends Paginator<M, R, RawRamQuery<M>> {
6
+ constructor(adapter: Adapter<any, RawRamQuery<M>, any, any>, query: RawRamQuery<M>, size: number, clazz: Constructor<M>);
7
+ protected prepare(rawStatement: RawRamQuery<M>): RawRamQuery<M>;
8
+ page(page?: number): Promise<R[]>;
7
9
  }
@@ -1,20 +1,20 @@
1
1
  import { Paginator } from "../query";
2
2
  export class RamPaginator extends Paginator {
3
- constructor(statement, size, rawStatement) {
4
- super(statement, size, rawStatement);
3
+ constructor(adapter, query, size, clazz) {
4
+ super(adapter, query, size, clazz);
5
5
  }
6
6
  prepare(rawStatement) {
7
7
  const query = Object.assign({}, rawStatement);
8
8
  query.limit = this.size;
9
9
  return query;
10
10
  }
11
- async page(page = 1, ...args) {
11
+ async page(page = 1) {
12
12
  page = this.validatePage(page);
13
13
  const statement = this.prepare(this.statement);
14
14
  statement.skip = (page - 1) * this.size;
15
- const results = await this.adapter.raw(statement, false, ...args);
15
+ const results = await this.adapter.raw(statement);
16
16
  this._currentPage = page;
17
17
  return results;
18
18
  }
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JhbS9SYW1QYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLFVBQVUsQ0FBQztBQUVoRCxNQUFNLE9BQU8sWUFBZ0IsU0FBUSxTQUEyQjtJQUM5RCxZQUNFLFNBQW1DLEVBQ25DLElBQVksRUFDWixZQUEyQjtRQUUzQixLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsT0FBTyxDQUFDLFlBQTJCO1FBQzNDLE1BQU0sS0FBSyxHQUFrQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFlLENBQUMsRUFBRSxHQUFHLElBQVc7UUFDekMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFVLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbVF1ZXJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IFBhZ2luYXRvciwgU3RhdGVtZW50IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5cbmV4cG9ydCBjbGFzcyBSYW1QYWdpbmF0b3I8Vj4gZXh0ZW5kcyBQYWdpbmF0b3I8ViwgUmFtUXVlcnk8YW55Pj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxSYW1RdWVyeTxhbnk+PixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgcmF3U3RhdGVtZW50OiBSYW1RdWVyeTxhbnk+XG4gICkge1xuICAgIHN1cGVyKHN0YXRlbWVudCwgc2l6ZSwgcmF3U3RhdGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcmVwYXJlKHJhd1N0YXRlbWVudDogUmFtUXVlcnk8YW55Pik6IFJhbVF1ZXJ5PGFueT4ge1xuICAgIGNvbnN0IHF1ZXJ5OiBSYW1RdWVyeTxhbnk+ID0gT2JqZWN0LmFzc2lnbih7fSwgcmF3U3RhdGVtZW50KTtcbiAgICBxdWVyeS5saW1pdCA9IHRoaXMuc2l6ZTtcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBhc3luYyBwYWdlKHBhZ2U6IG51bWJlciA9IDEsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxWW10+IHtcbiAgICBwYWdlID0gdGhpcy52YWxpZGF0ZVBhZ2UocGFnZSk7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5wcmVwYXJlKHRoaXMuc3RhdGVtZW50KTtcbiAgICBzdGF0ZW1lbnQuc2tpcCA9IChwYWdlIC0gMSkgKiB0aGlzLnNpemU7XG4gICAgY29uc3QgcmVzdWx0czogYW55W10gPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmF3KHN0YXRlbWVudCwgZmFsc2UsIC4uLmFyZ3MpO1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gcGFnZTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufVxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JhbS9SYW1QYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUlyQyxNQUFNLE9BQU8sWUFBaUMsU0FBUSxTQUlyRDtJQUNDLFlBQ0UsT0FBK0MsRUFDL0MsS0FBcUIsRUFDckIsSUFBWSxFQUNaLEtBQXFCO1FBRXJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRVMsT0FBTyxDQUFDLFlBQTRCO1FBQzVDLE1BQU0sS0FBSyxHQUFxQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNoRSxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFlLENBQUM7UUFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFVLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmF3UmFtUXVlcnkgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgUGFnaW5hdG9yIH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlXCI7XG5cbmV4cG9ydCBjbGFzcyBSYW1QYWdpbmF0b3I8TSBleHRlbmRzIE1vZGVsLCBSPiBleHRlbmRzIFBhZ2luYXRvcjxcbiAgTSxcbiAgUixcbiAgUmF3UmFtUXVlcnk8TT5cbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBhZGFwdGVyOiBBZGFwdGVyPGFueSwgUmF3UmFtUXVlcnk8TT4sIGFueSwgYW55PixcbiAgICBxdWVyeTogUmF3UmFtUXVlcnk8TT4sXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPlxuICApIHtcbiAgICBzdXBlcihhZGFwdGVyLCBxdWVyeSwgc2l6ZSwgY2xhenopO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByZXBhcmUocmF3U3RhdGVtZW50OiBSYXdSYW1RdWVyeTxNPik6IFJhd1JhbVF1ZXJ5PE0+IHtcbiAgICBjb25zdCBxdWVyeTogUmF3UmFtUXVlcnk8YW55PiA9IE9iamVjdC5hc3NpZ24oe30sIHJhd1N0YXRlbWVudCk7XG4gICAgcXVlcnkubGltaXQgPSB0aGlzLnNpemU7XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgYXN5bmMgcGFnZShwYWdlOiBudW1iZXIgPSAxKTogUHJvbWlzZTxSW10+IHtcbiAgICBwYWdlID0gdGhpcy52YWxpZGF0ZVBhZ2UocGFnZSk7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5wcmVwYXJlKHRoaXMuc3RhdGVtZW50KTtcbiAgICBzdGF0ZW1lbnQuc2tpcCA9IChwYWdlIC0gMSkgKiB0aGlzLnNpemU7XG4gICAgY29uc3QgcmVzdWx0czogYW55W10gPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmF3KHN0YXRlbWVudCk7XG4gICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG59XG4iXX0=
@@ -3,48 +3,12 @@ import { Sequence } from "../persistence";
3
3
  import { SequenceOptions } from "../interfaces";
4
4
  import { RamAdapter } from "./RamAdapter";
5
5
  import { Repo } from "../repository";
6
- export declare function parseSequenceValue(type: "Number" | "BigInt" | undefined, value: string | number | bigint): string | number | bigint;
7
- /**
8
- * @summary Abstract implementation of a Sequence
9
- * @description provides the basic functionality for {@link Sequence}s
10
- *
11
- * @param {SequenceOptions} options
12
- *
13
- * @class CouchDBSequence
14
- * @implements Sequence
15
- *
16
- * @category Sequences
17
- */
18
6
  export declare class RamSequence extends Sequence {
19
7
  protected repo: Repo<Seq>;
20
8
  constructor(options: SequenceOptions, adapter: RamAdapter);
21
- /**
22
- * @summary Retrieves the current value for the sequence
23
- * @protected
24
- */
25
9
  current(): Promise<string | number | bigint>;
26
- /**
27
- * @summary Parses the {@link Sequence} value
28
- *
29
- * @protected
30
- * @param value
31
- */
32
10
  private parse;
33
- /**
34
- * @summary increments the sequence
35
- * @description Sequence specific implementation
36
- *
37
- * @param {string | number | bigint} current
38
- * @param count
39
- * @protected
40
- */
41
11
  private increment;
42
- /**
43
- * @summary Generates the next value in th sequence
44
- * @description calls {@link Sequence#parse} on the current value
45
- * followed by {@link Sequence#increment}
46
- *
47
- */
48
12
  next(): Promise<number | string | bigint>;
49
13
  range(count: number): Promise<(number | string | bigint)[]>;
50
14
  }
@@ -2,40 +2,11 @@ import { Sequence as Seq } from "./model/RamSequence";
2
2
  import { InternalError, NotFoundError } from "@decaf-ts/db-decorators";
3
3
  import { Sequence } from "../persistence";
4
4
  import { Repository } from "../repository";
5
- export function parseSequenceValue(type, value) {
6
- switch (type) {
7
- case "Number":
8
- return typeof value === "string"
9
- ? parseInt(value)
10
- : typeof value === "number"
11
- ? value
12
- : BigInt(value);
13
- case "BigInt":
14
- return BigInt(value);
15
- default:
16
- throw new InternalError("Should never happen");
17
- }
18
- }
19
- /**
20
- * @summary Abstract implementation of a Sequence
21
- * @description provides the basic functionality for {@link Sequence}s
22
- *
23
- * @param {SequenceOptions} options
24
- *
25
- * @class CouchDBSequence
26
- * @implements Sequence
27
- *
28
- * @category Sequences
29
- */
30
5
  export class RamSequence extends Sequence {
31
6
  constructor(options, adapter) {
32
7
  super(options);
33
8
  this.repo = Repository.forModel(Seq, adapter.flavour);
34
9
  }
35
- /**
36
- * @summary Retrieves the current value for the sequence
37
- * @protected
38
- */
39
10
  async current() {
40
11
  const { name, startWith } = this.options;
41
12
  try {
@@ -56,23 +27,9 @@ export class RamSequence extends Sequence {
56
27
  throw new InternalError(`Failed to retrieve current value for sequence ${name}: ${e}`);
57
28
  }
58
29
  }
59
- /**
60
- * @summary Parses the {@link Sequence} value
61
- *
62
- * @protected
63
- * @param value
64
- */
65
30
  parse(value) {
66
- return parseSequenceValue(this.options.type, value);
31
+ return Sequence.parseValue(this.options.type, value);
67
32
  }
68
- /**
69
- * @summary increments the sequence
70
- * @description Sequence specific implementation
71
- *
72
- * @param {string | number | bigint} current
73
- * @param count
74
- * @protected
75
- */
76
33
  async increment(current, count) {
77
34
  const { type, incrementBy, name } = this.options;
78
35
  let next;
@@ -104,12 +61,6 @@ export class RamSequence extends Sequence {
104
61
  }
105
62
  return seq.current;
106
63
  }
107
- /**
108
- * @summary Generates the next value in th sequence
109
- * @description calls {@link Sequence#parse} on the current value
110
- * followed by {@link Sequence#increment}
111
- *
112
- */
113
64
  async next() {
114
65
  const current = await this.current();
115
66
  return this.increment(current);
@@ -127,4 +78,4 @@ export class RamSequence extends Sequence {
127
78
  return range;
128
79
  }
129
80
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUMsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQXFDLEVBQ3JDLEtBQStCO0lBRS9CLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLFFBQVE7WUFDWCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQzlCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNqQixDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUTtvQkFDekIsQ0FBQyxDQUFDLEtBQUs7b0JBQ1AsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixLQUFLLFFBQVE7WUFDWCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QjtZQUNFLE1BQU0sSUFBSSxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFFBQVE7SUFHdkMsWUFBWSxPQUF3QixFQUFFLE9BQW1CO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFD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RSxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBbUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFhO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQVcsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFXLENBQUM7UUFDbkUsTUFBTSxJQUFJLEdBQTZCLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FDekQsT0FBTyxFQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFZLEdBQUcsV0FBVyxDQUM1QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQWlDLEVBQUUsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJO1lBQ2xDLE1BQU0sSUFBSSxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcXVlbmNlIGFzIFNlcSB9IGZyb20gXCIuL21vZGVsL1JhbVNlcXVlbmNlXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgU2VxdWVuY2VPcHRpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IFJhbUFkYXB0ZXIgfSBmcm9tIFwiLi9SYW1BZGFwdGVyXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2VxdWVuY2VWYWx1ZShcbiAgdHlwZTogXCJOdW1iZXJcIiB8IFwiQmlnSW50XCIgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbik6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBwYXJzZUludCh2YWx1ZSlcbiAgICAgICAgOiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgOiBCaWdJbnQodmFsdWUpO1xuICAgIGNhc2UgXCJCaWdJbnRcIjpcbiAgICAgIHJldHVybiBCaWdJbnQodmFsdWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNob3VsZCBuZXZlciBoYXBwZW5cIik7XG4gIH1cbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBBYnN0cmFjdCBpbXBsZW1lbnRhdGlvbiBvZiBhIFNlcXVlbmNlXG4gKiBAZGVzY3JpcHRpb24gcHJvdmlkZXMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgZm9yIHtAbGluayBTZXF1ZW5jZX1zXG4gKlxuICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnNcbiAqXG4gKiBAY2xhc3MgQ291Y2hEQlNlcXVlbmNlXG4gKiBAaW1wbGVtZW50cyBTZXF1ZW5jZVxuICpcbiAqIEBjYXRlZ29yeSBTZXF1ZW5jZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFJhbVNlcXVlbmNlIGV4dGVuZHMgU2VxdWVuY2Uge1xuICBwcm90ZWN0ZWQgcmVwbzogUmVwbzxTZXE+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucywgYWRhcHRlcjogUmFtQWRhcHRlcikge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMucmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoU2VxLCBhZGFwdGVyLmZsYXZvdXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgdGhlIHNlcXVlbmNlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgICBjb25zdCB7IG5hbWUsIHN0YXJ0V2l0aCB9ID0gdGhpcy5vcHRpb25zO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXF1ZW5jZTogU2VxID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQobmFtZSBhcyBzdHJpbmcpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc2VxdWVuY2UuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRXaXRoID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgXCJTdGFydGluZyB2YWx1ZSBpcyBub3QgZGVmaW5lZCBmb3IgYSBub24gZXhpc3Rpbmcgc2VxdWVuY2VcIlxuICAgICAgICAgICk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc3RhcnRXaXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIGluaXRpYWwgdmFsdWUgZm9yIHNlcXVlbmNlICR7c3RhcnRXaXRofTogJHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBjdXJyZW50IHZhbHVlIGZvciBzZXF1ZW5jZSAke25hbWV9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUGFyc2VzIHRoZSB7QGxpbmsgU2VxdWVuY2V9IHZhbHVlXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQge1xuICAgIHJldHVybiBwYXJzZVNlcXVlbmNlVmFsdWUodGhpcy5vcHRpb25zLnR5cGUsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBpbmNyZW1lbnRzIHRoZSBzZXF1ZW5jZVxuICAgKiBAZGVzY3JpcHRpb24gU2VxdWVuY2Ugc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnR9IGN1cnJlbnRcbiAgICogQHBhcmFtIGNvdW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaW5jcmVtZW50KFxuICAgIGN1cnJlbnQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICBjb3VudD86IG51bWJlclxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgdHlwZSwgaW5jcmVtZW50QnksIG5hbWUgfSA9IHRoaXMub3B0aW9ucztcbiAgICBsZXQgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICAgIGNvbnN0IHRvSW5jcmVtZW50QnkgPSBjb3VudCB8fCBpbmNyZW1lbnRCeTtcbiAgICBpZiAodG9JbmNyZW1lbnRCeSAlIGluY3JlbWVudEJ5ICE9PSAwKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBWYWx1ZSB0byBpbmNyZW1lbnQgZG9lcyBub3QgY29uc2lkZXIgdGhlIGluY3JlbWVudEJ5IHNldHRpbmc6ICR7aW5jcmVtZW50Qnl9YFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICAgICAgbmV4dCA9ICh0aGlzLnBhcnNlKGN1cnJlbnQpIGFzIG51bWJlcikgKyB0b0luY3JlbWVudEJ5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJCaWdJbnRcIjpcbiAgICAgICAgbmV4dCA9ICh0aGlzLnBhcnNlKGN1cnJlbnQpIGFzIGJpZ2ludCkgKyBCaWdJbnQodG9JbmNyZW1lbnRCeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTaG91bGQgbmV2ZXIgaGFwcGVuXCIpO1xuICAgIH1cbiAgICBsZXQgc2VxOiBTZXE7XG4gICAgY29uc3QgcmVwbyA9IHRoaXMucmVwby5vdmVycmlkZSh7XG4gICAgICBpZ25vcmVkVmFsaWRhdGlvblByb3BlcnRpZXM6IFtcInVwZGF0ZWRPblwiXSxcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgc2VxID0gYXdhaXQgcmVwby51cGRhdGUobmV3IFNlcSh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgc2VxID0gYXdhaXQgcmVwby5jcmVhdGUobmV3IFNlcSh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VxLmN1cnJlbnQgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEdlbmVyYXRlcyB0aGUgbmV4dCB2YWx1ZSBpbiB0aCBzZXF1ZW5jZVxuICAgKiBAZGVzY3JpcHRpb24gY2FsbHMge0BsaW5rIFNlcXVlbmNlI3BhcnNlfSBvbiB0aGUgY3VycmVudCB2YWx1ZVxuICAgKiBmb2xsb3dlZCBieSB7QGxpbmsgU2VxdWVuY2UjaW5jcmVtZW50fVxuICAgKlxuICAgKi9cbiAgYXN5bmMgbmV4dCgpOiBQcm9taXNlPG51bWJlciB8IHN0cmluZyB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLmN1cnJlbnQoKTtcbiAgICByZXR1cm4gdGhpcy5pbmNyZW1lbnQoY3VycmVudCk7XG4gIH1cblxuICBhc3luYyByYW5nZShjb3VudDogbnVtYmVyKTogUHJvbWlzZTwobnVtYmVyIHwgc3RyaW5nIHwgYmlnaW50KVtdPiB7XG4gICAgY29uc3QgY3VycmVudCA9IChhd2FpdCB0aGlzLmN1cnJlbnQoKSkgYXMgbnVtYmVyO1xuICAgIGNvbnN0IGluY3JlbWVudEJ5ID0gdGhpcy5wYXJzZSh0aGlzLm9wdGlvbnMuaW5jcmVtZW50QnkpIGFzIG51bWJlcjtcbiAgICBjb25zdCBuZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgPSBhd2FpdCB0aGlzLmluY3JlbWVudChcbiAgICAgIGN1cnJlbnQsXG4gICAgICAodGhpcy5wYXJzZShjb3VudCkgYXMgbnVtYmVyKSAqIGluY3JlbWVudEJ5XG4gICAgKTtcbiAgICBjb25zdCByYW5nZTogKG51bWJlciB8IHN0cmluZyB8IGJpZ2ludClbXSA9IFtdO1xuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xuICAgICAgcmFuZ2UucHVzaChjdXJyZW50ICsgaW5jcmVtZW50QnkgKiAodGhpcy5wYXJzZShpKSBhcyBudW1iZXIpKTtcbiAgICB9XG4gICAgaWYgKHJhbmdlW3JhbmdlLmxlbmd0aCAtIDFdICE9PSBuZXh0KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaXNjYWxjdWxhdGlvbiBvZiByYW5nZVwiKTtcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH1cbn1cbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFtU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFtL1JhbVNlcXVlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUMsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFFBQVE7SUFHdkMsWUFBWSxPQUF3QixFQUFFLE9BQW1CO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQWMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBMEIsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxZQUFZLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVc7b0JBQ2xDLE1BQU0sSUFBSSxhQUFhLENBQ3JCLDJEQUEyRCxDQUM1RCxDQUFDO2dCQUNKLElBQUksQ0FBQztvQkFDSCxPQUFPLElBQUksQ0FB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QUFZLEdBQUcsV0FBVyxDQUM1QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQWlDLEVBQUUsQ0FBQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJO1lBQ2xDLE1BQU0sSUFBSSxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcXVlbmNlIGFzIFNlcSB9IGZyb20gXCIuL21vZGVsL1JhbVNlcXVlbmNlXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgU2VxdWVuY2VPcHRpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IFJhbUFkYXB0ZXIgfSBmcm9tIFwiLi9SYW1BZGFwdGVyXCI7XG5pbXBvcnQgeyBSZXBvLCBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGNsYXNzIFJhbVNlcXVlbmNlIGV4dGVuZHMgU2VxdWVuY2Uge1xuICBwcm90ZWN0ZWQgcmVwbzogUmVwbzxTZXE+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucywgYWRhcHRlcjogUmFtQWRhcHRlcikge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMucmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoU2VxLCBhZGFwdGVyLmZsYXZvdXIpO1xuICB9XG5cbiAgYXN5bmMgY3VycmVudCgpOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhcnRXaXRoIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNlcXVlbmNlOiBTZXEgPSBhd2FpdCB0aGlzLnJlcG8ucmVhZChuYW1lIGFzIHN0cmluZyk7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZShzZXF1ZW5jZS5jdXJyZW50IGFzIHN0cmluZyB8IG51bWJlcik7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFdpdGggPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBcIlN0YXJ0aW5nIHZhbHVlIGlzIG5vdCBkZWZpbmVkIGZvciBhIG5vbiBleGlzdGluZyBzZXF1ZW5jZVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShzdGFydFdpdGgpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgaW5pdGlhbCB2YWx1ZSBmb3Igc2VxdWVuY2UgJHtzdGFydFdpdGh9OiAke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIHJldHJpZXZlIGN1cnJlbnQgdmFsdWUgZm9yIHNlcXVlbmNlICR7bmFtZX06ICR7ZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2UodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCk6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB7XG4gICAgcmV0dXJuIFNlcXVlbmNlLnBhcnNlVmFsdWUodGhpcy5vcHRpb25zLnR5cGUsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5jcmVtZW50KFxuICAgIGN1cnJlbnQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICBjb3VudD86IG51bWJlclxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgdHlwZSwgaW5jcmVtZW50QnksIG5hbWUgfSA9IHRoaXMub3B0aW9ucztcbiAgICBsZXQgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICAgIGNvbnN0IHRvSW5jcmVtZW50QnkgPSBjb3VudCB8fCBpbmNyZW1lbnRCeTtcbiAgICBpZiAodG9JbmNyZW1lbnRCeSAlIGluY3JlbWVudEJ5ICE9PSAwKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBWYWx1ZSB0byBpbmNyZW1lbnQgZG9lcyBub3QgY29uc2lkZXIgdGhlIGluY3JlbWVudEJ5IHNldHRpbmc6ICR7aW5jcmVtZW50Qnl9YFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJOdW1iZXJcIjpcbiAgICAgICAgbmV4dCA9ICh0aGlzLnBhcnNlKGN1cnJlbnQpIGFzIG51bWJlcikgKyB0b0luY3JlbWVudEJ5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJCaWdJbnRcIjpcbiAgICAgICAgbmV4dCA9ICh0aGlzLnBhcnNlKGN1cnJlbnQpIGFzIGJpZ2ludCkgKyBCaWdJbnQodG9JbmNyZW1lbnRCeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTaG91bGQgbmV2ZXIgaGFwcGVuXCIpO1xuICAgIH1cbiAgICBsZXQgc2VxOiBTZXE7XG4gICAgY29uc3QgcmVwbyA9IHRoaXMucmVwby5vdmVycmlkZSh7XG4gICAgICBpZ25vcmVkVmFsaWRhdGlvblByb3BlcnRpZXM6IFtcInVwZGF0ZWRPblwiXSxcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgc2VxID0gYXdhaXQgcmVwby51cGRhdGUobmV3IFNlcSh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgc2VxID0gYXdhaXQgcmVwby5jcmVhdGUobmV3IFNlcSh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VxLmN1cnJlbnQgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICB9XG5cbiAgYXN5bmMgbmV4dCgpOiBQcm9taXNlPG51bWJlciB8IHN0cmluZyB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCB0aGlzLmN1cnJlbnQoKTtcbiAgICByZXR1cm4gdGhpcy5pbmNyZW1lbnQoY3VycmVudCk7XG4gIH1cblxuICBhc3luYyByYW5nZShjb3VudDogbnVtYmVyKTogUHJvbWlzZTwobnVtYmVyIHwgc3RyaW5nIHwgYmlnaW50KVtdPiB7XG4gICAgY29uc3QgY3VycmVudCA9IChhd2FpdCB0aGlzLmN1cnJlbnQoKSkgYXMgbnVtYmVyO1xuICAgIGNvbnN0IGluY3JlbWVudEJ5ID0gdGhpcy5wYXJzZSh0aGlzLm9wdGlvbnMuaW5jcmVtZW50QnkpIGFzIG51bWJlcjtcbiAgICBjb25zdCBuZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgPSBhd2FpdCB0aGlzLmluY3JlbWVudChcbiAgICAgIGN1cnJlbnQsXG4gICAgICAodGhpcy5wYXJzZShjb3VudCkgYXMgbnVtYmVyKSAqIGluY3JlbWVudEJ5XG4gICAgKTtcbiAgICBjb25zdCByYW5nZTogKG51bWJlciB8IHN0cmluZyB8IGJpZ2ludClbXSA9IFtdO1xuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xuICAgICAgcmFuZ2UucHVzaChjdXJyZW50ICsgaW5jcmVtZW50QnkgKiAodGhpcy5wYXJzZShpKSBhcyBudW1iZXIpKTtcbiAgICB9XG4gICAgaWYgKHJhbmdlW3JhbmdlLmxlbmd0aCAtIDFdICE9PSBuZXh0KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaXNjYWxjdWxhdGlvbiBvZiByYW5nZVwiKTtcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,12 @@
1
- import { Paginator, Statement } from "../query";
2
- import { RamQuery } from "./types";
1
+ import { Condition, Paginator } from "../query";
2
+ import { RawRamQuery } from "./types";
3
3
  import { Model } from "@decaf-ts/decorator-validation";
4
- import { Adapter } from "../persistence";
5
- export declare class RamStatement<M extends Model> extends Statement<RamQuery<M>> {
6
- constructor(db: Adapter<any, RamQuery<M>, any, any>);
7
- paginate<V>(size: number): Promise<Paginator<V, RamQuery<M>>>;
4
+ import { Statement } from "../query/Statement";
5
+ import { RamAdapter } from "./RamAdapter";
6
+ export declare class RamStatement<M extends Model, R> extends Statement<RawRamQuery<M>, M, R> {
7
+ constructor(adapter: RamAdapter);
8
+ private getSort;
9
+ protected build(): RawRamQuery<M>;
10
+ paginate(size: number): Promise<Paginator<M, R, RawRamQuery<M>>>;
11
+ parseCondition<M extends Model>(condition: Condition<M>): RawRamQuery<M>;
8
12
  }