@decaf-ts/core 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +4 -4
  2. package/dist/core.bundle.min.js +1 -1
  3. package/dist/esm/core.bundle.min.esm.js +1 -1
  4. package/lib/esm/identity/decorators.d.ts +4 -10
  5. package/lib/esm/identity/decorators.js +57 -1
  6. package/lib/esm/identity/index.js +3 -1
  7. package/lib/esm/identity/utils.d.ts +2 -0
  8. package/lib/esm/identity/utils.js +6 -0
  9. package/lib/esm/index.d.ts +3 -1
  10. package/lib/esm/index.js +30 -1
  11. package/lib/esm/interfaces/Builder.js +3 -0
  12. package/lib/esm/interfaces/Executor.d.ts +3 -1
  13. package/lib/esm/interfaces/Executor.js +3 -0
  14. package/lib/esm/interfaces/Observable.js +3 -0
  15. package/lib/esm/interfaces/Observer.js +3 -0
  16. package/lib/esm/interfaces/Queriable.d.ts +6 -0
  17. package/lib/esm/interfaces/Queriable.js +3 -0
  18. package/lib/esm/interfaces/RawExecutor.d.ts +4 -3
  19. package/lib/esm/interfaces/RawExecutor.js +3 -0
  20. package/lib/esm/interfaces/Sequence.d.ts +3 -2
  21. package/lib/esm/interfaces/Sequence.js +10 -0
  22. package/lib/esm/interfaces/SequenceOptions.d.ts +9 -1
  23. package/lib/esm/interfaces/SequenceOptions.js +20 -0
  24. package/lib/esm/interfaces/index.d.ts +1 -0
  25. package/lib/esm/interfaces/index.js +10 -1
  26. package/lib/esm/model/BaseModel.d.ts +2 -3
  27. package/lib/esm/model/BaseModel.js +28 -1
  28. package/lib/esm/model/decorators.d.ts +6 -5
  29. package/lib/esm/model/decorators.js +55 -1
  30. package/lib/esm/model/index.js +4 -1
  31. package/lib/esm/persistence/Adapter.d.ts +43 -14
  32. package/lib/esm/persistence/Adapter.js +153 -1
  33. package/lib/esm/persistence/constants.d.ts +11 -1
  34. package/lib/esm/persistence/constants.js +14 -1
  35. package/lib/esm/persistence/decorators.d.ts +1 -2
  36. package/lib/esm/persistence/decorators.js +10 -1
  37. package/lib/esm/persistence/errors.d.ts +4 -0
  38. package/lib/esm/persistence/errors.js +8 -0
  39. package/lib/esm/persistence/index.d.ts +1 -0
  40. package/lib/esm/persistence/index.js +7 -1
  41. package/lib/esm/persistence/utils.d.ts +2 -2
  42. package/lib/esm/persistence/utils.js +12 -1
  43. package/lib/esm/query/Clause.d.ts +43 -0
  44. package/lib/esm/query/Clause.js +76 -0
  45. package/lib/esm/query/ClauseFactory.d.ts +71 -0
  46. package/lib/esm/query/ClauseFactory.js +7 -0
  47. package/lib/esm/query/Condition.d.ts +75 -0
  48. package/lib/esm/query/Condition.js +248 -0
  49. package/lib/esm/query/Query.d.ts +43 -0
  50. package/lib/esm/query/Query.js +55 -0
  51. package/lib/esm/query/Statement.d.ts +49 -0
  52. package/lib/esm/query/Statement.js +163 -0
  53. package/lib/esm/query/clauses/FromClause.d.ts +45 -0
  54. package/lib/esm/query/clauses/FromClause.js +60 -0
  55. package/lib/esm/query/clauses/GroupByClause.d.ts +21 -0
  56. package/lib/esm/query/clauses/GroupByClause.js +20 -0
  57. package/lib/esm/query/clauses/InsertClause.d.ts +37 -0
  58. package/lib/esm/query/clauses/InsertClause.js +56 -0
  59. package/lib/esm/query/clauses/LimitClause.d.ts +29 -0
  60. package/lib/esm/query/clauses/LimitClause.js +28 -0
  61. package/lib/esm/query/clauses/OffsetClause.d.ts +21 -0
  62. package/lib/esm/query/clauses/OffsetClause.js +20 -0
  63. package/lib/esm/query/clauses/OrderByClause.d.ts +37 -0
  64. package/lib/esm/query/clauses/OrderByClause.js +40 -0
  65. package/lib/esm/query/clauses/SelectClause.d.ts +47 -0
  66. package/lib/esm/query/clauses/SelectClause.js +63 -0
  67. package/lib/esm/query/clauses/SelectorBasedClause.d.ts +25 -0
  68. package/lib/esm/query/clauses/SelectorBasedClause.js +45 -0
  69. package/lib/esm/query/clauses/ValuesClause.d.ts +21 -0
  70. package/lib/esm/query/clauses/ValuesClause.js +37 -0
  71. package/lib/esm/query/clauses/WhereClause.d.ts +46 -0
  72. package/lib/esm/query/clauses/WhereClause.js +72 -0
  73. package/lib/esm/query/clauses/index.d.ts +10 -0
  74. package/lib/esm/query/clauses/index.js +12 -0
  75. package/lib/esm/query/constants.d.ts +79 -0
  76. package/lib/esm/query/constants.js +88 -0
  77. package/lib/esm/query/errors.d.ts +4 -0
  78. package/lib/esm/query/errors.js +8 -0
  79. package/lib/esm/query/index.d.ts +11 -0
  80. package/lib/esm/query/index.js +13 -0
  81. package/lib/esm/query/options.d.ts +371 -0
  82. package/lib/esm/query/options.js +3 -0
  83. package/lib/esm/query/selectors.d.ts +38 -0
  84. package/lib/esm/query/selectors.js +3 -0
  85. package/lib/esm/query/types.d.ts +2 -0
  86. package/lib/esm/query/types.js +3 -0
  87. package/lib/esm/repository/Repository.d.ts +27 -11
  88. package/lib/esm/repository/Repository.js +246 -1
  89. package/lib/esm/repository/constants.js +31 -1
  90. package/lib/esm/repository/decorators.d.ts +2 -3
  91. package/lib/esm/repository/decorators.js +27 -1
  92. package/lib/esm/repository/errors.js +16 -1
  93. package/lib/esm/repository/index.d.ts +1 -0
  94. package/lib/esm/repository/index.js +9 -1
  95. package/lib/esm/repository/injectables.d.ts +5 -0
  96. package/lib/esm/repository/injectables.js +32 -0
  97. package/lib/esm/repository/types.js +3 -0
  98. package/lib/esm/repository/utils.d.ts +4 -3
  99. package/lib/esm/repository/utils.js +45 -1
  100. package/lib/esm/validators/ClauseSequenceValidator.d.ts +28 -0
  101. package/lib/esm/validators/ClauseSequenceValidator.js +95 -0
  102. package/lib/esm/validators/decorators.d.ts +10 -0
  103. package/lib/esm/validators/decorators.js +25 -0
  104. package/lib/esm/validators/index.d.ts +2 -0
  105. package/lib/esm/validators/index.js +4 -0
  106. package/lib/identity/decorators.cjs +61 -1
  107. package/lib/identity/decorators.d.ts +4 -10
  108. package/lib/identity/index.cjs +19 -1
  109. package/lib/identity/utils.cjs +9 -0
  110. package/lib/identity/utils.d.ts +2 -0
  111. package/lib/index.cjs +47 -1
  112. package/lib/index.d.ts +3 -1
  113. package/lib/interfaces/Builder.cjs +4 -1
  114. package/lib/interfaces/Executor.cjs +4 -1
  115. package/lib/interfaces/Executor.d.ts +3 -1
  116. package/lib/interfaces/Observable.cjs +4 -1
  117. package/lib/interfaces/Observer.cjs +4 -1
  118. package/lib/interfaces/Queriable.cjs +4 -0
  119. package/lib/interfaces/Queriable.d.ts +6 -0
  120. package/lib/interfaces/RawExecutor.cjs +4 -1
  121. package/lib/interfaces/RawExecutor.d.ts +4 -3
  122. package/lib/interfaces/Sequence.cjs +11 -1
  123. package/lib/interfaces/Sequence.d.ts +3 -2
  124. package/lib/interfaces/SequenceOptions.cjs +23 -1
  125. package/lib/interfaces/SequenceOptions.d.ts +9 -1
  126. package/lib/interfaces/index.cjs +26 -1
  127. package/lib/interfaces/index.d.ts +1 -0
  128. package/lib/model/BaseModel.cjs +32 -1
  129. package/lib/model/BaseModel.d.ts +2 -3
  130. package/lib/model/decorators.cjs +62 -1
  131. package/lib/model/decorators.d.ts +6 -5
  132. package/lib/model/index.cjs +20 -1
  133. package/lib/persistence/Adapter.cjs +157 -1
  134. package/lib/persistence/Adapter.d.ts +43 -14
  135. package/lib/persistence/constants.cjs +17 -1
  136. package/lib/persistence/constants.d.ts +11 -1
  137. package/lib/persistence/decorators.cjs +13 -1
  138. package/lib/persistence/decorators.d.ts +1 -2
  139. package/lib/persistence/errors.cjs +12 -0
  140. package/lib/persistence/errors.d.ts +4 -0
  141. package/lib/persistence/index.cjs +23 -1
  142. package/lib/persistence/index.d.ts +1 -0
  143. package/lib/persistence/utils.cjs +16 -1
  144. package/lib/persistence/utils.d.ts +2 -2
  145. package/lib/query/Clause.cjs +80 -0
  146. package/lib/query/Clause.d.ts +43 -0
  147. package/lib/query/ClauseFactory.cjs +11 -0
  148. package/lib/query/ClauseFactory.d.ts +71 -0
  149. package/lib/query/Condition.cjs +252 -0
  150. package/lib/query/Condition.d.ts +75 -0
  151. package/lib/query/Query.cjs +59 -0
  152. package/lib/query/Query.d.ts +43 -0
  153. package/lib/query/Statement.cjs +167 -0
  154. package/lib/query/Statement.d.ts +49 -0
  155. package/lib/query/clauses/FromClause.cjs +64 -0
  156. package/lib/query/clauses/FromClause.d.ts +45 -0
  157. package/lib/query/clauses/GroupByClause.cjs +24 -0
  158. package/lib/query/clauses/GroupByClause.d.ts +21 -0
  159. package/lib/query/clauses/InsertClause.cjs +60 -0
  160. package/lib/query/clauses/InsertClause.d.ts +37 -0
  161. package/lib/query/clauses/LimitClause.cjs +32 -0
  162. package/lib/query/clauses/LimitClause.d.ts +29 -0
  163. package/lib/query/clauses/OffsetClause.cjs +24 -0
  164. package/lib/query/clauses/OffsetClause.d.ts +21 -0
  165. package/lib/query/clauses/OrderByClause.cjs +44 -0
  166. package/lib/query/clauses/OrderByClause.d.ts +37 -0
  167. package/lib/query/clauses/SelectClause.cjs +67 -0
  168. package/lib/query/clauses/SelectClause.d.ts +47 -0
  169. package/lib/query/clauses/SelectorBasedClause.cjs +49 -0
  170. package/lib/query/clauses/SelectorBasedClause.d.ts +25 -0
  171. package/lib/query/clauses/ValuesClause.cjs +41 -0
  172. package/lib/query/clauses/ValuesClause.d.ts +21 -0
  173. package/lib/query/clauses/WhereClause.cjs +76 -0
  174. package/lib/query/clauses/WhereClause.d.ts +46 -0
  175. package/lib/query/clauses/index.cjs +28 -0
  176. package/lib/query/clauses/index.d.ts +10 -0
  177. package/lib/query/constants.cjs +91 -0
  178. package/lib/query/constants.d.ts +79 -0
  179. package/lib/query/errors.cjs +12 -0
  180. package/lib/query/errors.d.ts +4 -0
  181. package/lib/query/index.cjs +29 -0
  182. package/lib/query/index.d.ts +11 -0
  183. package/lib/query/options.cjs +4 -0
  184. package/lib/query/options.d.ts +371 -0
  185. package/lib/query/selectors.cjs +4 -0
  186. package/lib/query/selectors.d.ts +38 -0
  187. package/lib/query/types.cjs +4 -0
  188. package/lib/query/types.d.ts +2 -0
  189. package/lib/repository/Repository.cjs +250 -1
  190. package/lib/repository/Repository.d.ts +27 -11
  191. package/lib/repository/constants.cjs +34 -1
  192. package/lib/repository/decorators.cjs +30 -1
  193. package/lib/repository/decorators.d.ts +2 -3
  194. package/lib/repository/errors.cjs +20 -1
  195. package/lib/repository/index.cjs +25 -1
  196. package/lib/repository/index.d.ts +1 -0
  197. package/lib/repository/injectables.cjs +36 -0
  198. package/lib/repository/injectables.d.ts +5 -0
  199. package/lib/repository/types.cjs +4 -1
  200. package/lib/repository/utils.cjs +50 -1
  201. package/lib/repository/utils.d.ts +6 -0
  202. package/lib/validators/ClauseSequenceValidator.cjs +98 -0
  203. package/lib/validators/ClauseSequenceValidator.d.ts +28 -0
  204. package/lib/validators/decorators.cjs +28 -0
  205. package/lib/validators/decorators.d.ts +10 -0
  206. package/lib/validators/index.cjs +20 -0
  207. package/lib/validators/index.d.ts +2 -0
  208. package/package.json +14 -11
@@ -1 +1,62 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.table=table,exports.column=column,exports.index=index,exports.uniqueOnCreateUpdate=uniqueOnCreateUpdate,exports.unique=unique;let db_decorators_1=require("@decaf-ts/db-decorators"),reflection_1=require("@decaf-ts/reflection"),constants_1=require("../persistence/constants.cjs"),decorators_1=require("../persistence/decorators.cjs");function table(e){return(0,reflection_1.metadata)((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.TABLE),e)}function column(e){return(0,reflection_1.metadata)((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.COLUMN),e)}function index(e,t){return(0,reflection_1.metadata)((0,db_decorators_1.getDBKey)(""+constants_1.PersistenceKeys.INDEX+(e&&e.length?"."+e.join("."):"")),{directions:t,compositions:e})}async function uniqueOnCreateUpdate(e,t,r){if(r[t]){try{await this.read(r[t])}catch(e){if(e instanceof db_decorators_1.NotFoundError)return}throw new db_decorators_1.ConflictError(`model already exists with ${t} equal to `+JSON.stringify(r[t],void 0,2))}}function unique(){return(0,reflection_1.apply)((0,reflection_1.metadata)((0,db_decorators_1.getDBKey)(constants_1.PersistenceKeys.UNIQUE),{}))}
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.table = table;
4
+ exports.column = column;
5
+ exports.index = index;
6
+ exports.uniqueOnCreateUpdate = uniqueOnCreateUpdate;
7
+ exports.unique = unique;
8
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
9
+ const reflection_1 = require("@decaf-ts/reflection");
10
+ const constants_1 = require("../persistence/constants.cjs");
11
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
12
+ const persistence_1 = require("../persistence/index.cjs");
13
+ function table(tableName) {
14
+ return (0, reflection_1.metadata)(persistence_1.Adapter.key(constants_1.PersistenceKeys.TABLE), tableName);
15
+ }
16
+ function column(columnName) {
17
+ return (0, decorator_validation_1.propMetadata)(persistence_1.Adapter.key(constants_1.PersistenceKeys.COLUMN), columnName);
18
+ }
19
+ /**
20
+ * @summary Index Decorator
21
+ * @description properties decorated will the index in the
22
+ * DB for performance in queries
23
+ *
24
+ * @param {OrderDirection[]} [directions]
25
+ * @param {string[]} [compositions]
26
+ *
27
+ * @function index
28
+ */
29
+ function index(compositions, directions) {
30
+ return (0, decorator_validation_1.propMetadata)(db_decorators_1.Repository.key(`${constants_1.PersistenceKeys.INDEX}${compositions && compositions.length ? `.${compositions.join(".")}` : ""}`), {
31
+ directions: directions,
32
+ compositions: compositions,
33
+ });
34
+ }
35
+ async function uniqueOnCreateUpdate(data, key, model) {
36
+ if (!model[key])
37
+ return;
38
+ try {
39
+ await this.read(model[key]);
40
+ }
41
+ catch (e) {
42
+ if (e instanceof db_decorators_1.NotFoundError)
43
+ return;
44
+ }
45
+ throw new db_decorators_1.ConflictError(`model already exists with ${key} equal to ${JSON.stringify(model[key], undefined, 2)}`);
46
+ }
47
+ /**
48
+ * @summary Unique Decorator
49
+ * @description Tags a property as unique.
50
+ * No other elements in that table can have the same property value
51
+ *
52
+ * @function unique
53
+ *
54
+ * @memberOf module:wallet-db.Decorators
55
+ */
56
+ function unique() {
57
+ return (0, reflection_1.apply)(
58
+ // onCreateUpdate(uniqueOnCreateUpdate),
59
+ (0, decorator_validation_1.propMetadata)(db_decorators_1.Repository.key(constants_1.PersistenceKeys.UNIQUE), {}));
60
+ }
61
+
62
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsc0JBRUM7QUFFRCx3QkFFQztBQVlELHNCQVVDO0FBRUQsb0RBY0M7QUFXRCx3QkFLQztBQXpFRCwyREFLaUM7QUFDakMscURBQXVEO0FBQ3ZELHdEQUEyRDtBQUczRCx5RUFBcUU7QUFDckUsZ0RBQXlDO0FBRXpDLFNBQWdCLEtBQUssQ0FBQyxTQUFpQjtJQUNyQyxPQUFPLElBQUEscUJBQVEsRUFBQyxxQkFBTyxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFnQixNQUFNLENBQUMsVUFBa0I7SUFDdkMsT0FBTyxJQUFBLG1DQUFZLEVBQUMscUJBQU8sQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLFlBQXVCLEVBQUUsVUFBNkI7SUFDMUUsT0FBTyxJQUFBLG1DQUFZLEVBQ2pCLDBCQUFVLENBQUMsR0FBRyxDQUNaLEdBQUcsMkJBQWUsQ0FBQyxLQUFLLEdBQUcsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDckcsRUFDRDtRQUNFLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLFlBQVksRUFBRSxZQUFZO0tBQ1YsQ0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsb0JBQW9CLENBSS9CLElBQU8sRUFBRSxHQUFXLEVBQUUsS0FBUTtJQUN2QyxJQUFJLENBQUUsS0FBYSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU87SUFDakMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFFLEtBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLDZCQUFhO1lBQUUsT0FBTztJQUN6QyxDQUFDO0lBQ0QsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLDZCQUE2QixHQUFHLGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ2pHLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixNQUFNO0lBQ3BCLE9BQU8sSUFBQSxrQkFBSztJQUNWLHdDQUF3QztJQUN4QyxJQUFBLG1DQUFZLEVBQUMsMEJBQVUsQ0FBQyxHQUFHLENBQUMsMkJBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDekQsQ0FBQztBQUNKLENBQUMiLCJmaWxlIjoibW9kZWwvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbmZsaWN0RXJyb3IsXG4gIElSZXBvc2l0b3J5LFxuICBOb3RGb3VuZEVycm9yLFxuICBSZXBvc2l0b3J5LFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IGFwcGx5LCBtZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSW5kZXhNZXRhZGF0YSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L3R5cGVzXCI7XG5pbXBvcnQgeyBPcmRlckRpcmVjdGlvbiB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTW9kZWwsIHByb3BNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBtZXRhZGF0YShBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuVEFCTEUpLCB0YWJsZU5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sdW1uKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhKEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5DT0xVTU4pLCBjb2x1bW5OYW1lKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBJbmRleCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBwcm9wZXJ0aWVzIGRlY29yYXRlZCB3aWxsIHRoZSBpbmRleCBpbiB0aGVcbiAqIERCIGZvciBwZXJmb3JtYW5jZSBpbiBxdWVyaWVzXG4gKlxuICogQHBhcmFtIHtPcmRlckRpcmVjdGlvbltdfSBbZGlyZWN0aW9uc11cbiAqIEBwYXJhbSB7c3RyaW5nW119IFtjb21wb3NpdGlvbnNdXG4gKlxuICogQGZ1bmN0aW9uIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleChjb21wb3NpdGlvbnM/OiBzdHJpbmdbXSwgZGlyZWN0aW9ucz86IE9yZGVyRGlyZWN0aW9uW10pIHtcbiAgcmV0dXJuIHByb3BNZXRhZGF0YShcbiAgICBSZXBvc2l0b3J5LmtleShcbiAgICAgIGAke1BlcnNpc3RlbmNlS2V5cy5JTkRFWH0ke2NvbXBvc2l0aW9ucyAmJiBjb21wb3NpdGlvbnMubGVuZ3RoID8gYC4ke2NvbXBvc2l0aW9ucy5qb2luKFwiLlwiKX1gIDogXCJcIn1gXG4gICAgKSxcbiAgICB7XG4gICAgICBkaXJlY3Rpb25zOiBkaXJlY3Rpb25zLFxuICAgICAgY29tcG9zaXRpb25zOiBjb21wb3NpdGlvbnMsXG4gICAgfSBhcyBJbmRleE1ldGFkYXRhXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bmlxdWVPbkNyZWF0ZVVwZGF0ZTxcbiAgVCBleHRlbmRzIE1vZGVsLFxuICBWIGV4dGVuZHMgSVJlcG9zaXRvcnk8VD4sXG4gIFkgPSBhbnksXG4+KHRoaXM6IFYsIGRhdGE6IFksIGtleTogc3RyaW5nLCBtb2RlbDogVCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIShtb2RlbCBhcyBhbnkpW2tleV0pIHJldHVybjtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnJlYWQoKG1vZGVsIGFzIGFueSlba2V5XSk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikgcmV0dXJuO1xuICB9XG4gIHRocm93IG5ldyBDb25mbGljdEVycm9yKFxuICAgIGBtb2RlbCBhbHJlYWR5IGV4aXN0cyB3aXRoICR7a2V5fSBlcXVhbCB0byAke0pTT04uc3RyaW5naWZ5KChtb2RlbCBhcyBhbnkpW2tleV0sIHVuZGVmaW5lZCwgMil9YFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFVuaXF1ZSBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBUYWdzIGEgcHJvcGVydHkgYXMgdW5pcXVlLlxuICogIE5vIG90aGVyIGVsZW1lbnRzIGluIHRoYXQgdGFibGUgY2FuIGhhdmUgdGhlIHNhbWUgcHJvcGVydHkgdmFsdWVcbiAqXG4gKiBAZnVuY3Rpb24gdW5pcXVlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp3YWxsZXQtZGIuRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlKCkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgLy8gb25DcmVhdGVVcGRhdGUodW5pcXVlT25DcmVhdGVVcGRhdGUpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuVU5JUVVFKSwge30pXG4gICk7XG59XG4iXX0=
@@ -1,7 +1,8 @@
1
- import { DBModel, IRepository } from "@decaf-ts/db-decorators";
1
+ import { IRepository } from "@decaf-ts/db-decorators";
2
2
  import { OrderDirection } from "../repository/constants";
3
+ import { Model } from "@decaf-ts/decorator-validation";
3
4
  export declare function table(tableName: string): import("@decaf-ts/reflection").CustomDecorator<V>;
4
- export declare function column(columnName: string): import("@decaf-ts/reflection").CustomDecorator<V>;
5
+ export declare function column(columnName: string): PropertyDecorator;
5
6
  /**
6
7
  * @summary Index Decorator
7
8
  * @description properties decorated will the index in the
@@ -12,8 +13,8 @@ export declare function column(columnName: string): import("@decaf-ts/reflection
12
13
  *
13
14
  * @function index
14
15
  */
15
- export declare function index(compositions?: string[], directions?: OrderDirection[]): import("@decaf-ts/reflection").CustomDecorator<V>;
16
- export declare function uniqueOnCreateUpdate<T extends DBModel, V extends IRepository<T>, Y = any>(this: V, data: Y, key: string, model: T): Promise<void>;
16
+ export declare function index(compositions?: string[], directions?: OrderDirection[]): PropertyDecorator;
17
+ export declare function uniqueOnCreateUpdate<T extends Model, V extends IRepository<T>, Y = any>(this: V, data: Y, key: string, model: T): Promise<void>;
17
18
  /**
18
19
  * @summary Unique Decorator
19
20
  * @description Tags a property as unique.
@@ -23,4 +24,4 @@ export declare function uniqueOnCreateUpdate<T extends DBModel, V extends IRepos
23
24
  *
24
25
  * @memberOf module:wallet-db.Decorators
25
26
  */
26
- export declare function unique(): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
27
+ export declare function unique(): (target: object, propertyKey?: any, descriptor?: any) => void;
@@ -1 +1,20 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&("get"in i?t.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){e[o=void 0===o?r:o]=t[r]}),__exportStar=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./BaseModel.cjs"),exports),__exportStar(require("./decorators.cjs"),exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./BaseModel.cjs"), exports);
18
+ __exportStar(require("./decorators.cjs"), exports);
19
+
20
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQTRCO0FBQzVCLCtDQUE2QiIsImZpbGUiOiJtb2RlbC9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0Jhc2VNb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuIl19
@@ -1 +1,157 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.Adapter=void 0;let db_decorators_1=require("@decaf-ts/db-decorators"),errors_1=require("../repository/errors.cjs"),decorator_validation_1=require("@decaf-ts/decorator-validation"),utils_1=require("./utils.cjs"),constants_1=require("./constants.cjs");class Adapter{static{this._cache={}}get native(){return this._native}constructor(e,r){this.observers=[],this._native=e,Adapter._cache[r]=this}isReserved(e){return!e}async prepare(s,o){var e=Object.entries(s).reduce((e,[r,t])=>{if(r!==o){r=(0,utils_1.getColumnName)(s,r);if(this.isReserved(r))throw new db_decorators_1.InternalError(`Property name ${r} is reserved`);e[r]=t}return e},{});return s[constants_1.PersistenceKeys.METADATA]&&Object.defineProperty(e,constants_1.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,value:s[constants_1.PersistenceKeys.METADATA]}),{record:e,id:s[o]}}async revert(t,e,s,r){var o={},r=(o[s]=r,"string"==typeof e?decorator_validation_1.Model.build(o,e):new e(o)),e=t[constants_1.PersistenceKeys.METADATA],o=Object.keys(r).reduce((e,r)=>(r!==s&&(e[r]=t[(0,utils_1.getColumnName)(e,r)]),e),r);return e&&Object.defineProperty(o,constants_1.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:e}),o}observe(e){if(-1!==this.observers.indexOf(e))throw new db_decorators_1.InternalError("Observer already registered");this.observers.push(e)}unObserve(e){e=this.observers.indexOf(e);if(-1===e)throw new db_decorators_1.InternalError("Failed to find Observer");this.observers.splice(e,1)}async updateObservers(...t){return new Promise((e,r)=>{Promise.all(this.observers.map(e=>e.refresh(...t))).then(()=>{e()}).catch(e=>r(new errors_1.ObserverError(e)))})}static get current(){return this._current}static get(e){if(e in this._cache)return this._cache[e];throw new db_decorators_1.InternalError(`No Adapter registered under ${e}. Did you use the @adapter decorator?`)}static setCurrent(e){var r=this.get(e);if(!r)throw new db_decorators_1.NotFoundError(`No persistence flavour ${e} registered`);this._current=r}}exports.Adapter=Adapter;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Adapter = void 0;
4
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
5
+ const errors_1 = require("../repository/errors.cjs");
6
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
7
+ const utils_1 = require("./utils.cjs");
8
+ const constants_1 = require("./constants.cjs");
9
+ const Query_1 = require("../query/Query.cjs");
10
+ /**
11
+ * @summary Abstract Decaf-ts Persistence Adapter Class
12
+ * @description Offers the base implementation for all Adapter Classes
13
+ * and manages them various registered {@link Adapter}s
14
+ *
15
+ * @typedef Y the underlying persistence object type
16
+ * @typedef Q The query object the adapter uses
17
+ *
18
+ * @param {Y} native the underlying persistence object
19
+ * @param {string} flavour the under witch the persistence adapter should be stored
20
+ *
21
+ * @class Adapter
22
+ * @implements RawExecutor
23
+ * @implements Observable
24
+ */
25
+ class Adapter {
26
+ static { this._cache = {}; }
27
+ get native() {
28
+ return this._native;
29
+ }
30
+ constructor(native, flavour) {
31
+ this.flavour = flavour;
32
+ this._observers = [];
33
+ this._native = native;
34
+ Adapter._cache[flavour] = this;
35
+ }
36
+ Query() {
37
+ return new Query_1.Query(this);
38
+ }
39
+ isReserved(attr) {
40
+ return !attr;
41
+ }
42
+ prepare(model, pk) {
43
+ const result = Object.entries(model).reduce((accum, [key, val]) => {
44
+ if (key === pk)
45
+ return accum;
46
+ const mappedProp = (0, utils_1.getColumnName)(model, key);
47
+ if (this.isReserved(mappedProp))
48
+ throw new db_decorators_1.InternalError(`Property name ${mappedProp} is reserved`);
49
+ accum[mappedProp] = val;
50
+ return accum;
51
+ }, {});
52
+ if (model[constants_1.PersistenceKeys.METADATA])
53
+ Object.defineProperty(result, constants_1.PersistenceKeys.METADATA, {
54
+ enumerable: false,
55
+ writable: false,
56
+ configurable: true,
57
+ value: model[constants_1.PersistenceKeys.METADATA],
58
+ });
59
+ return {
60
+ record: result,
61
+ id: model[pk],
62
+ };
63
+ }
64
+ revert(obj, clazz, pk, id) {
65
+ const ob = {};
66
+ ob[pk] = id;
67
+ const m = (typeof clazz === "string" ? decorator_validation_1.Model.build(ob, clazz) : new clazz(ob));
68
+ const metadata = obj[constants_1.PersistenceKeys.METADATA];
69
+ const result = Object.keys(m).reduce((accum, key) => {
70
+ if (key === pk)
71
+ return accum;
72
+ accum[key] = obj[(0, utils_1.getColumnName)(accum, key)];
73
+ return accum;
74
+ }, m);
75
+ if (metadata)
76
+ Object.defineProperty(result, constants_1.PersistenceKeys.METADATA, {
77
+ enumerable: false,
78
+ configurable: false,
79
+ writable: false,
80
+ value: metadata,
81
+ });
82
+ return result;
83
+ }
84
+ async createAll(tableName, id, model, ...args) {
85
+ if (id.length !== model.length)
86
+ throw new db_decorators_1.InternalError("Ids and models must have the same length");
87
+ return Promise.all(id.map((i, count) => this.create(tableName, i, model[count], ...args)));
88
+ }
89
+ async readAll(tableName, id, ...args) {
90
+ return Promise.all(id.map((i) => this.read(tableName, i, ...args)));
91
+ }
92
+ async updateAll(tableName, id, model, ...args) {
93
+ if (id.length !== model.length)
94
+ throw new db_decorators_1.InternalError("Ids and models must have the same length");
95
+ return Promise.all(id.map((i, count) => this.update(tableName, i, model[count], ...args)));
96
+ }
97
+ async deleteAll(tableName, id, ...args) {
98
+ return Promise.all(id.map((i) => this.delete(tableName, i, ...args)));
99
+ }
100
+ /**
101
+ * @summary Registers an {@link Observer}
102
+ * @param {Observer} observer
103
+ *
104
+ * @see {Observable#observe}
105
+ */
106
+ observe(observer) {
107
+ const index = this._observers.indexOf(observer);
108
+ if (index !== -1)
109
+ throw new db_decorators_1.InternalError("Observer already registered");
110
+ this._observers.push(observer);
111
+ }
112
+ /**
113
+ * @summary Unregisters an {@link Observer}
114
+ * @param {Observer} observer
115
+ *
116
+ * @see {Observable#unObserve}
117
+ */
118
+ unObserve(observer) {
119
+ const index = this._observers.indexOf(observer);
120
+ if (index === -1)
121
+ throw new db_decorators_1.InternalError("Failed to find Observer");
122
+ this._observers.splice(index, 1);
123
+ }
124
+ /**
125
+ * @summary calls all registered {@link Observer}s to update themselves
126
+ * @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
127
+ */
128
+ async updateObservers(...args) {
129
+ return new Promise((resolve, reject) => {
130
+ Promise.all(this._observers.map((o) => o.refresh(...args)))
131
+ .then(() => {
132
+ resolve();
133
+ })
134
+ .catch((e) => reject(new errors_1.ObserverError(e)));
135
+ });
136
+ }
137
+ static get current() {
138
+ return this._current;
139
+ }
140
+ static get(flavour) {
141
+ if (flavour in this._cache)
142
+ return this._cache[flavour];
143
+ throw new db_decorators_1.InternalError(`No Adapter registered under ${flavour}.`);
144
+ }
145
+ static setCurrent(flavour) {
146
+ const adapter = this.get(flavour);
147
+ if (!adapter)
148
+ throw new db_decorators_1.NotFoundError(`No persistence flavour ${flavour} registered`);
149
+ this._current = adapter;
150
+ }
151
+ static key(key) {
152
+ return constants_1.PersistenceKeys.REFLECT + key;
153
+ }
154
+ }
155
+ exports.Adapter = Adapter;
156
+
157
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9BZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUlpQztBQUVqQyxpREFBcUQ7QUFFckQseUVBQW9FO0FBRXBFLG1DQUF3QztBQUd4QywyQ0FBOEM7QUFDOUMsMENBQXVDO0FBS3ZDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBc0IsT0FBTzthQUVaLFdBQU0sR0FBc0MsRUFBdEMsQUFBd0MsQ0FBQztJQUs5RCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQ0UsTUFBUyxFQUNBLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBVFQsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQVczQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxhQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQVFTLFVBQVUsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDO0lBUUQsT0FBTyxDQUNMLEtBQVEsRUFDUixFQUFtQjtRQUtuQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FDekMsQ0FBQyxLQUEwQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxHQUFHLEtBQUssRUFBRTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM3QixNQUFNLFVBQVUsR0FBRyxJQUFBLHFCQUFhLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSw2QkFBYSxD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QUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPO1lBQ1YsTUFBTSxJQUFJLDZCQUFhLENBQUMsMEJBQTBCLE9BQU8sYUFBYSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLDJCQUFlLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN2QyxDQUFDOztBQS9OSCwwQkFnT0MiLCJmaWxlIjoicGVyc2lzdGVuY2UvQWRhcHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL09ic2VydmVyXCI7XG5pbXBvcnQgeyBPYnNlcnZlckVycm9yIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvZXJyb3JzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnNcIjtcbmltcG9ydCB7IGdldENvbHVtbk5hbWUgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgUmF3RXhlY3V0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9SYXdFeGVjdXRvclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL09ic2VydmFibGVcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiLi4vcXVlcnkvUXVlcnlcIjtcbmltcG9ydCB7IFN0YXRlbWVudCB9IGZyb20gXCIuLi9xdWVyeS9TdGF0ZW1lbnRcIjtcbmltcG9ydCB7IENsYXVzZUZhY3RvcnkgfSBmcm9tIFwiLi4vcXVlcnkvQ2xhdXNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQWJzdHJhY3QgRGVjYWYtdHMgUGVyc2lzdGVuY2UgQWRhcHRlciBDbGFzc1xuICogQGRlc2NyaXB0aW9uIE9mZmVycyB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIEFkYXB0ZXIgQ2xhc3Nlc1xuICogYW5kIG1hbmFnZXMgdGhlbSB2YXJpb3VzIHJlZ2lzdGVyZWQge0BsaW5rIEFkYXB0ZXJ9c1xuICpcbiAqIEB0eXBlZGVmIFkgdGhlIHVuZGVybHlpbmcgcGVyc2lzdGVuY2Ugb2JqZWN0IHR5cGVcbiAqIEB0eXBlZGVmIFEgVGhlIHF1ZXJ5IG9iamVjdCB0aGUgYWRhcHRlciB1c2VzXG4gKlxuICogQHBhcmFtIHtZfSBuYXRpdmUgdGhlIHVuZGVybHlpbmcgcGVyc2lzdGVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gZmxhdm91ciB0aGUgdW5kZXIgd2l0Y2ggdGhlIHBlcnNpc3RlbmNlIGFkYXB0ZXIgc2hvdWxkIGJlIHN0b3JlZFxuICpcbiAqIEBjbGFzcyBBZGFwdGVyXG4gKiBAaW1wbGVtZW50cyBSYXdFeGVjdXRvclxuICogQGltcGxlbWVudHMgT2JzZXJ2YWJsZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWRhcHRlcjxZLCBRPiBpbXBsZW1lbnRzIFJhd0V4ZWN1dG9yPFE+LCBPYnNlcnZhYmxlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnQ6IEFkYXB0ZXI8YW55LCBhbnk+O1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IFJlY29yZDxzdHJpbmcsIEFkYXB0ZXI8YW55LCBhbnk+PiA9IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29ic2VydmVyczogT2JzZXJ2ZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXRpdmU6IFk7XG5cbiAgZ2V0IG5hdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF0aXZlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIG5hdGl2ZTogWSxcbiAgICByZWFkb25seSBmbGF2b3VyOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5fbmF0aXZlID0gbmF0aXZlO1xuICAgIEFkYXB0ZXIuX2NhY2hlW2ZsYXZvdXJdID0gdGhpcztcbiAgfVxuXG4gIFF1ZXJ5PE0gZXh0ZW5kcyBNb2RlbD4oKTogUXVlcnk8USwgTT4ge1xuICAgIHJldHVybiBuZXcgUXVlcnkodGhpcyk7XG4gIH1cblxuICBhYnN0cmFjdCBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbik6IFE7XG5cbiAgYWJzdHJhY3QgZ2V0IFN0YXRlbWVudCgpOiBTdGF0ZW1lbnQ8UT47XG5cbiAgYWJzdHJhY3QgZ2V0IENsYXVzZXMoKTogQ2xhdXNlRmFjdG9yeTxZLCBRPjtcblxuICBwcm90ZWN0ZWQgaXNSZXNlcnZlZChhdHRyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gIWF0dHI7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VFcnJvcihlcnI6IEVycm9yKTogQmFzZUVycm9yO1xuXG4gIGFic3RyYWN0IGNyZWF0ZUluZGV4PE0gZXh0ZW5kcyBNb2RlbD4oLi4ubW9kZWxzOiBNW10pOiBQcm9taXNlPGFueT47XG5cbiAgYWJzdHJhY3QgU2VxdWVuY2Uob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKTogUHJvbWlzZTxTZXF1ZW5jZT47XG5cbiAgcHJlcGFyZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG1vZGVsOiBNLFxuICAgIHBrOiBzdHJpbmcgfCBudW1iZXJcbiAgKToge1xuICAgIHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBpZDogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhtb2RlbCkucmVkdWNlKFxuICAgICAgKGFjY3VtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09IHBrKSByZXR1cm4gYWNjdW07XG4gICAgICAgIGNvbnN0IG1hcHBlZFByb3AgPSBnZXRDb2x1bW5OYW1lKG1vZGVsLCBrZXkpO1xuICAgICAgICBpZiAodGhpcy5pc1Jlc2VydmVkKG1hcHBlZFByb3ApKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBQcm9wZXJ0eSBuYW1lICR7bWFwcGVkUHJvcH0gaXMgcmVzZXJ2ZWRgKTtcbiAgICAgICAgYWNjdW1bbWFwcGVkUHJvcF0gPSB2YWw7XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG4gICAgaWYgKChtb2RlbCBhcyBhbnkpW1BlcnNpc3RlbmNlS2V5cy5NRVRBREFUQV0pXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCBQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEEsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogKG1vZGVsIGFzIGFueSlbUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBXSxcbiAgICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICByZWNvcmQ6IHJlc3VsdCxcbiAgICAgIGlkOiAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcGtdLFxuICAgIH07XG4gIH1cblxuICByZXZlcnQ8TSBleHRlbmRzIE1vZGVsPihcbiAgICBvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY2xheno6IHN0cmluZyB8IENvbnN0cnVjdG9yPE0+LFxuICAgIHBrOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICApOiBNIHtcbiAgICBjb25zdCBvYjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIG9iW3BrXSA9IGlkO1xuICAgIGNvbnN0IG0gPSAoXG4gICAgICB0eXBlb2YgY2xhenogPT09IFwic3RyaW5nXCIgPyBNb2RlbC5idWlsZChvYiwgY2xhenopIDogbmV3IGNsYXp6KG9iKVxuICAgICkgYXMgTTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IG9ialtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdO1xuICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5rZXlzKG0pLnJlZHVjZSgoYWNjdW06IE0sIGtleSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gcGspIHJldHVybiBhY2N1bTtcbiAgICAgIChhY2N1bSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldID0gb2JqW2dldENvbHVtbk5hbWUoYWNjdW0sIGtleSldO1xuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sIG0pO1xuICAgIGlmIChtZXRhZGF0YSlcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXN1bHQsIFBlcnNpc3RlbmNlS2V5cy5NRVRBREFUQSwge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogbWV0YWRhdGEsXG4gICAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYWJzdHJhY3QgY3JlYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICBhc3luYyBjcmVhdGVBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGlmIChpZC5sZW5ndGggIT09IG1vZGVsLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpZC5tYXAoKGksIGNvdW50KSA9PiB0aGlzLmNyZWF0ZSh0YWJsZU5hbWUsIGksIG1vZGVsW2NvdW50XSwgLi4uYXJncykpXG4gICAgKTtcbiAgfVxuXG4gIGFic3RyYWN0IHJlYWQoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIGFzeW5jIHJlYWRBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoaWQubWFwKChpKSA9PiB0aGlzLnJlYWQodGFibGVOYW1lLCBpLCAuLi5hcmdzKSkpO1xuICB9XG5cbiAgYWJzdHJhY3QgdXBkYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICBhc3luYyB1cGRhdGVBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZ1tdIHwgbnVtYmVyW10sXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGlmIChpZC5sZW5ndGggIT09IG1vZGVsLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpZC5tYXAoKGksIGNvdW50KSA9PiB0aGlzLnVwZGF0ZSh0YWJsZU5hbWUsIGksIG1vZGVsW2NvdW50XSwgLi4uYXJncykpXG4gICAgKTtcbiAgfVxuXG4gIGFic3RyYWN0IGRlbGV0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgYXN5bmMgZGVsZXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiAoc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KVtdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGlkLm1hcCgoaSkgPT4gdGhpcy5kZWxldGUodGFibGVOYW1lLCBpLCAuLi5hcmdzKSkpO1xuICB9XG5cbiAgYWJzdHJhY3QgcmF3PFI+KHJhd0lucHV0OiBRLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj47XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhbiB7QGxpbmsgT2JzZXJ2ZXJ9XG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyXG4gICAqXG4gICAqIEBzZWUge09ic2VydmFibGUjb2JzZXJ2ZX1cbiAgICovXG4gIG9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9vYnNlcnZlcnMuaW5kZXhPZihvYnNlcnZlcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJPYnNlcnZlciBhbHJlYWR5IHJlZ2lzdGVyZWRcIik7XG4gICAgdGhpcy5fb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFVucmVnaXN0ZXJzIGFuIHtAbGluayBPYnNlcnZlcn1cbiAgICogQHBhcmFtIHtPYnNlcnZlcn0gb2JzZXJ2ZXJcbiAgICpcbiAgICogQHNlZSB7T2JzZXJ2YWJsZSN1bk9ic2VydmV9XG4gICAqL1xuICB1bk9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9vYnNlcnZlcnMuaW5kZXhPZihvYnNlcnZlcik7XG4gICAgaWYgKGluZGV4ID09PSAtMSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJGYWlsZWQgdG8gZmluZCBPYnNlcnZlclwiKTtcbiAgICB0aGlzLl9vYnNlcnZlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBjYWxscyBhbGwgcmVnaXN0ZXJlZCB7QGxpbmsgT2JzZXJ2ZXJ9cyB0byB1cGRhdGUgdGhlbXNlbHZlc1xuICAgKiBAcGFyYW0ge2FueVtdfSBbYXJnc10gb3B0aW9uYWwgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUge0BsaW5rIE9ic2VydmVyI3JlZnJlc2h9IG1ldGhvZFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlT2JzZXJ2ZXJzKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIFByb21pc2UuYWxsKHRoaXMuX29ic2VydmVycy5tYXAoKG86IE9ic2VydmVyKSA9PiBvLnJlZnJlc2goLi4uYXJncykpKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGU6IGFueSkgPT4gcmVqZWN0KG5ldyBPYnNlcnZlckVycm9yKGUpKSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGN1cnJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0PFksIFE+KGZsYXZvdXI6IGFueSk6IEFkYXB0ZXI8WSwgUT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChmbGF2b3VyIGluIHRoaXMuX2NhY2hlKSByZXR1cm4gdGhpcy5fY2FjaGVbZmxhdm91cl07XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE5vIEFkYXB0ZXIgcmVnaXN0ZXJlZCB1bmRlciAke2ZsYXZvdXJ9LmApO1xuICB9XG5cbiAgc3RhdGljIHNldEN1cnJlbnQoZmxhdm91cjogc3RyaW5nKSB7XG4gICAgY29uc3QgYWRhcHRlciA9IHRoaXMuZ2V0KGZsYXZvdXIpO1xuICAgIGlmICghYWRhcHRlcilcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBObyBwZXJzaXN0ZW5jZSBmbGF2b3VyICR7Zmxhdm91cn0gcmVnaXN0ZXJlZGApO1xuICAgIHRoaXMuX2N1cnJlbnQgPSBhZGFwdGVyO1xuICB9XG5cbiAgc3RhdGljIGtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBQZXJzaXN0ZW5jZUtleXMuUkVGTEVDVCArIGtleTtcbiAgfVxufVxuIl19
@@ -1,31 +1,59 @@
1
- import { BaseError, DBModel } from "@decaf-ts/db-decorators";
1
+ import { BaseError } from "@decaf-ts/db-decorators";
2
2
  import { Observer } from "../interfaces/Observer";
3
3
  import { Sequence } from "../interfaces/Sequence";
4
- import { Constructor } from "@decaf-ts/decorator-validation";
4
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
5
5
  import { SequenceOptions } from "../interfaces/SequenceOptions";
6
6
  import { RawExecutor } from "../interfaces/RawExecutor";
7
7
  import { Observable } from "../interfaces/Observable";
8
- export declare abstract class Adapter<Y, T = string> implements RawExecutor<T>, Observable {
8
+ import { Query } from "../query/Query";
9
+ import { Statement } from "../query/Statement";
10
+ import { ClauseFactory } from "../query/ClauseFactory";
11
+ import { Condition } from "../query";
12
+ /**
13
+ * @summary Abstract Decaf-ts Persistence Adapter Class
14
+ * @description Offers the base implementation for all Adapter Classes
15
+ * and manages them various registered {@link Adapter}s
16
+ *
17
+ * @typedef Y the underlying persistence object type
18
+ * @typedef Q The query object the adapter uses
19
+ *
20
+ * @param {Y} native the underlying persistence object
21
+ * @param {string} flavour the under witch the persistence adapter should be stored
22
+ *
23
+ * @class Adapter
24
+ * @implements RawExecutor
25
+ * @implements Observable
26
+ */
27
+ export declare abstract class Adapter<Y, Q> implements RawExecutor<Q>, Observable {
28
+ readonly flavour: string;
9
29
  private static _current;
10
30
  private static _cache;
11
- private observers;
31
+ private readonly _observers;
12
32
  private readonly _native;
13
33
  get native(): Y;
14
- constructor(native: Y, flavour: string);
34
+ protected constructor(native: Y, flavour: string);
35
+ Query<M extends Model>(): Query<Q, M>;
36
+ abstract parseCondition(condition: Condition): Q;
37
+ abstract get Statement(): Statement<Q>;
38
+ abstract get Clauses(): ClauseFactory<Y, Q>;
15
39
  protected isReserved(attr: string): boolean;
16
40
  protected abstract parseError(err: Error): BaseError;
17
- abstract createIndex(...args: any[]): Promise<any>;
18
- abstract getSequence<V extends DBModel>(model: V, sequence: Constructor<Sequence>, options?: SequenceOptions): Promise<Sequence>;
19
- prepare<V extends DBModel>(model: V, pk: string | number): Promise<{
41
+ abstract createIndex<M extends Model>(...models: M[]): Promise<any>;
42
+ abstract Sequence(options: SequenceOptions): Promise<Sequence>;
43
+ prepare<M extends Model>(model: M, pk: string | number): {
20
44
  record: Record<string, any>;
21
45
  id: string;
22
- }>;
23
- revert<V extends DBModel>(obj: Record<string, any>, clazz: string | Constructor<V>, pk: string, id: string | number): Promise<V>;
46
+ };
47
+ revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk: string, id: string | number | bigint): M;
24
48
  abstract create(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
25
- abstract read(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
49
+ createAll(tableName: string, id: (string | number)[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
50
+ abstract read(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
51
+ readAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
26
52
  abstract update(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
27
- abstract delete(tableName: string, id: string | number, ...args: any[]): Promise<Record<string, any>>;
28
- abstract raw<V>(rawInput: T, ...args: any[]): Promise<V>;
53
+ updateAll(tableName: string, id: string[] | number[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
54
+ abstract delete(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
55
+ deleteAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
56
+ abstract raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
29
57
  /**
30
58
  * @summary Registers an {@link Observer}
31
59
  * @param {Observer} observer
@@ -46,6 +74,7 @@ export declare abstract class Adapter<Y, T = string> implements RawExecutor<T>,
46
74
  */
47
75
  updateObservers(...args: any[]): Promise<void>;
48
76
  static get current(): Adapter<any, any>;
49
- static get(flavour: any): Adapter<any> | undefined;
77
+ static get<Y, Q>(flavour: any): Adapter<Y, Q> | undefined;
50
78
  static setCurrent(flavour: string): void;
79
+ static key(key: string): string;
51
80
  }
@@ -1 +1,17 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.PersistenceKeys=void 0,exports.PersistenceKeys={REFLECT:"model.persistence.",INDEX:"index",UNIQUE:"unique",ADAPTER:"adapter",INJECTABLE:"decaf-adapter-{0}",TABLE:"table",COLUMN:"column",METADATA:"__metadata"};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersistenceKeys = void 0;
4
+ var PersistenceKeys;
5
+ (function (PersistenceKeys) {
6
+ PersistenceKeys["REFLECT"] = "model.persistence.";
7
+ PersistenceKeys["INDEX"] = "index";
8
+ PersistenceKeys["UNIQUE"] = "unique";
9
+ PersistenceKeys["ADAPTER"] = "adapter";
10
+ PersistenceKeys["INJECTABLE"] = "decaf_{0}_adapter_for_{1}";
11
+ PersistenceKeys["TABLE"] = "table";
12
+ PersistenceKeys["COLUMN"] = "column";
13
+ PersistenceKeys["METADATA"] = "__metadata";
14
+ PersistenceKeys["CLAUSE_SEQUENCE"] = "clause-sequence";
15
+ })(PersistenceKeys || (exports.PersistenceKeys = PersistenceKeys = {}));
16
+
17
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxlQVVYO0FBVkQsV0FBWSxlQUFlO0lBQ3pCLGlEQUE4QixDQUFBO0lBQzlCLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQixzQ0FBbUIsQ0FBQTtJQUNuQiwyREFBd0MsQ0FBQTtJQUN4QyxrQ0FBZSxDQUFBO0lBQ2Ysb0NBQWlCLENBQUE7SUFDakIsMENBQXVCLENBQUE7SUFDdkIsc0RBQW1DLENBQUE7QUFDckMsQ0FBQyxFQVZXLGVBQWUsK0JBQWYsZUFBZSxRQVUxQiIsImZpbGUiOiJwZXJzaXN0ZW5jZS9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBQZXJzaXN0ZW5jZUtleXMge1xuICBSRUZMRUNUID0gXCJtb2RlbC5wZXJzaXN0ZW5jZS5cIixcbiAgSU5ERVggPSBcImluZGV4XCIsXG4gIFVOSVFVRSA9IFwidW5pcXVlXCIsXG4gIEFEQVBURVIgPSBcImFkYXB0ZXJcIixcbiAgSU5KRUNUQUJMRSA9IFwiZGVjYWZfezB9X2FkYXB0ZXJfZm9yX3sxfVwiLFxuICBUQUJMRSA9IFwidGFibGVcIixcbiAgQ09MVU1OID0gXCJjb2x1bW5cIixcbiAgTUVUQURBVEEgPSBcIl9fbWV0YWRhdGFcIixcbiAgQ0xBVVNFX1NFUVVFTkNFID0gXCJjbGF1c2Utc2VxdWVuY2VcIixcbn1cbiJdfQ==
@@ -1 +1,11 @@
1
- export declare const PersistenceKeys: Record<string, string>;
1
+ export declare enum PersistenceKeys {
2
+ REFLECT = "model.persistence.",
3
+ INDEX = "index",
4
+ UNIQUE = "unique",
5
+ ADAPTER = "adapter",
6
+ INJECTABLE = "decaf_{0}_adapter_for_{1}",
7
+ TABLE = "table",
8
+ COLUMN = "column",
9
+ METADATA = "__metadata",
10
+ CLAUSE_SEQUENCE = "clause-sequence"
11
+ }
@@ -1 +1,13 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPersistenceKey=getPersistenceKey,exports.uses=uses;let reflection_1=require("@decaf-ts/reflection"),constants_1=require("./constants.cjs");function getPersistenceKey(e){return constants_1.PersistenceKeys.REFLECT+e}function uses(e){return(0,reflection_1.metadata)(getPersistenceKey(constants_1.PersistenceKeys.ADAPTER),e)}
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uses = uses;
4
+ const reflection_1 = require("@decaf-ts/reflection");
5
+ const constants_1 = require("./constants.cjs");
6
+ const Adapter_1 = require("./Adapter.cjs");
7
+ function uses(flavour) {
8
+ return (original) => {
9
+ return (0, reflection_1.metadata)(Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER), flavour)(original);
10
+ };
11
+ }
12
+
13
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsb0JBT0M7QUFYRCxxREFBZ0Q7QUFDaEQsMkNBQThDO0FBQzlDLHVDQUFvQztBQUVwQyxTQUFnQixJQUFJLENBQUMsT0FBZTtJQUNsQyxPQUFPLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1FBQzFCLE9BQU8sSUFBQSxxQkFBUSxFQUNiLGlCQUFPLENBQUMsR0FBRyxDQUFDLDJCQUFlLENBQUMsT0FBTyxDQUFDLEVBQ3BDLE9BQU8sQ0FDUixDQUFDLFFBQWUsQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJmaWxlIjoicGVyc2lzdGVuY2UvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi9BZGFwdGVyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VzKGZsYXZvdXI6IHN0cmluZyk6IENsYXNzRGVjb3JhdG9yIHtcbiAgcmV0dXJuIChvcmlnaW5hbDogb2JqZWN0KSA9PiB7XG4gICAgcmV0dXJuIG1ldGFkYXRhKFxuICAgICAgQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkFEQVBURVIpLFxuICAgICAgZmxhdm91clxuICAgICkob3JpZ2luYWwgYXMgYW55KTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,2 +1 @@
1
- export declare function getPersistenceKey(key: string): string;
2
- export declare function uses(flavour: string): import("@decaf-ts/reflection").CustomDecorator<V>;
1
+ export declare function uses(flavour: string): ClassDecorator;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionError = void 0;
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
+
12
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQW9EO0FBRXBELE1BQWEsZUFBZ0IsU0FBUSx5QkFBUztJQUM1QyxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUpELDBDQUlDIiwiZmlsZSI6InBlcnNpc3RlbmNlL2Vycm9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvbkVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKENvbm5lY3Rpb25FcnJvci5uYW1lLCBtc2cpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { BaseError } from "@decaf-ts/db-decorators";
2
+ export declare class ConnectionError extends BaseError {
3
+ constructor(msg: string | Error);
4
+ }
@@ -1 +1,23 @@
1
- var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./Adapter.cjs"),exports),__exportStar(require("./constants.cjs"),exports),__exportStar(require("./decorators.cjs"),exports),__exportStar(require("./utils.cjs"),exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Adapter.cjs"), exports);
18
+ __exportStar(require("./constants.cjs"), exports);
19
+ __exportStar(require("./decorators.cjs"), exports);
20
+ __exportStar(require("./errors.cjs"), exports);
21
+ __exportStar(require("./utils.cjs"), exports);
22
+
23
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCO0FBQzFCLDhDQUE0QjtBQUM1QiwrQ0FBNkI7QUFDN0IsMkNBQXlCO0FBQ3pCLDBDQUF3QiIsImZpbGUiOiJwZXJzaXN0ZW5jZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0FkYXB0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuIl19
@@ -1,4 +1,5 @@
1
1
  export * from "./Adapter";
2
2
  export * from "./constants";
3
3
  export * from "./decorators";
4
+ export * from "./errors";
4
5
  export * from "./utils";
@@ -1 +1,16 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.genAdapterInjectableKey=genAdapterInjectableKey,exports.getColumnName=getColumnName;let decorator_validation_1=require("@decaf-ts/decorator-validation"),constants_1=require("./constants.cjs"),decorators_1=require("./decorators.cjs");function genAdapterInjectableKey(e){return(0,decorator_validation_1.sf)(constants_1.PersistenceKeys.INJECTABLE,e)}function getColumnName(e,t){e=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.COLUMN),e,t);return e||t}
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genAdapterInjectableKey = genAdapterInjectableKey;
4
+ exports.getColumnName = getColumnName;
5
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
6
+ const constants_1 = require("./constants.cjs");
7
+ const Adapter_1 = require("./Adapter.cjs");
8
+ function genAdapterInjectableKey(flavour) {
9
+ return (0, decorator_validation_1.sf)(constants_1.PersistenceKeys.INJECTABLE, flavour);
10
+ }
11
+ function getColumnName(model, attribute) {
12
+ const metadata = Reflect.getMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.COLUMN), model, attribute);
13
+ return metadata ? metadata : attribute;
14
+ }
15
+
16
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLDBEQUVDO0FBRUQsc0NBT0M7QUFmRCx5RUFBMkQ7QUFDM0QsMkNBQThDO0FBQzlDLHVDQUFvQztBQUVwQyxTQUFnQix1QkFBdUIsQ0FBQyxPQUFlO0lBQ3JELE9BQU8sSUFBQSx5QkFBRSxFQUFDLDJCQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxTQUFnQixhQUFhLENBQWtCLEtBQVEsRUFBRSxTQUFpQjtJQUN4RSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUNsQyxpQkFBTyxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLE1BQU0sQ0FBQyxFQUNuQyxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQyIsImZpbGUiOiJwZXJzaXN0ZW5jZS91dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNmLCBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuL0FkYXB0ZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbkFkYXB0ZXJJbmplY3RhYmxlS2V5KGZsYXZvdXI6IHN0cmluZykge1xuICByZXR1cm4gc2YoUGVyc2lzdGVuY2VLZXlzLklOSkVDVEFCTEUsIGZsYXZvdXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uTmFtZTxUIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBULCBhdHRyaWJ1dGU6IHN0cmluZykge1xuICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkNPTFVNTiksXG4gICAgbW9kZWwsXG4gICAgYXR0cmlidXRlXG4gICk7XG4gIHJldHVybiBtZXRhZGF0YSA/IG1ldGFkYXRhIDogYXR0cmlidXRlO1xufVxuIl19
@@ -1,3 +1,3 @@
1
- import { DBModel } from "@decaf-ts/db-decorators";
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
2
  export declare function genAdapterInjectableKey(flavour: string): string;
3
- export declare function getColumnName<T extends DBModel>(model: T, attribute: string): any;
3
+ export declare function getColumnName<T extends Model>(model: T, attribute: string): any;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Clause = void 0;
13
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
14
+ const errors_1 = require("./errors.cjs");
15
+ const constants_1 = require("./constants.cjs");
16
+ const Statement_1 = require("./Statement.cjs");
17
+ /**
18
+ */
19
+ /**
20
+ * @summary Clause Class
21
+ * @description Represents a Clause in a {@link Statement}
22
+ *
23
+ * @typedef Q Represents que query object the persistence adapter uses
24
+ *
25
+ * @param {ModelArg<Clause<Q>>} [clause]
26
+ *
27
+ * @class Clause
28
+ * @extends Model
29
+ * @implements Executor
30
+ * @implements QueryBuilder
31
+ * @abstract
32
+ *
33
+ * @category Query
34
+ * @subcategory Clauses
35
+ */
36
+ class Clause extends decorator_validation_1.Model {
37
+ constructor(clause) {
38
+ super();
39
+ this.priority = clause?.priority;
40
+ this.statement = clause?.statement;
41
+ if (!this.statement || !this.priority)
42
+ throw new errors_1.QueryError("Missing statement or priority. Should be impossible");
43
+ this.statement.addClause(this);
44
+ }
45
+ get adapter() {
46
+ return this.statement.getAdapter();
47
+ }
48
+ get Clauses() {
49
+ return this.statement.getAdapter().Clauses;
50
+ }
51
+ /**
52
+ * @summary return the priority of the clause
53
+ * @see Priority
54
+ */
55
+ getPriority() {
56
+ return this.priority;
57
+ }
58
+ /**
59
+ * @inheritDoc
60
+ * @abstract
61
+ */
62
+ async execute() {
63
+ return this.statement.execute();
64
+ }
65
+ toString() {
66
+ return this.constructor.name;
67
+ }
68
+ }
69
+ exports.Clause = Clause;
70
+ __decorate([
71
+ (0, decorator_validation_1.required)(),
72
+ __metadata("design:type", Number)
73
+ ], Clause.prototype, "priority", void 0);
74
+ __decorate([
75
+ (0, decorator_validation_1.required)(),
76
+ (0, decorator_validation_1.type)("object"),
77
+ __metadata("design:type", Statement_1.Statement)
78
+ ], Clause.prototype, "statement", void 0);
79
+
80
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9xdWVyeS9DbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EseUVBS3dDO0FBRXhDLHFDQUFzQztBQUN0QywyQ0FBdUM7QUFDdkMsMkNBQXdDO0FBRXhDO0dBQ0c7QUFFSDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQXNCLE1BQ3BCLFNBQVEsNEJBQUs7SUFVYixZQUFzQixNQUE0QjtRQUNoRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxFQUFFLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNuQyxNQUFNLElBQUksbUJBQVUsQ0FDbEIscURBQXFELENBQ3RELENBQUM7UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBYyxPQUFPO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBYyxPQUFPO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztDQWtCRjtBQXBFRCx3QkFvRUM7QUEvRFU7SUFEUixJQUFBLCtCQUFRLEdBQUU7O3dDQUNrQjtBQUlwQjtJQUZSLElBQUEsK0JBQVEsR0FBRTtJQUNWLElBQUEsMkJBQUksRUFBQyxRQUFRLENBQUM7OEJBQ00scUJBQVM7eUNBQUkiLCJmaWxlIjoicXVlcnkvQ2xhdXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXhlY3V0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHtcbiAgTW9kZWwsXG4gIE1vZGVsQXJnLFxuICByZXF1aXJlZCxcbiAgdHlwZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4vb3B0aW9uc1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgUHJpb3JpdHkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFN0YXRlbWVudCB9IGZyb20gXCIuL1N0YXRlbWVudFwiO1xuXG4vKipcbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IENsYXVzZSBDbGFzc1xuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBDbGF1c2UgaW4gYSB7QGxpbmsgU3RhdGVtZW50fVxuICpcbiAqIEB0eXBlZGVmIFEgUmVwcmVzZW50cyBxdWUgcXVlcnkgb2JqZWN0IHRoZSBwZXJzaXN0ZW5jZSBhZGFwdGVyIHVzZXNcbiAqXG4gKiBAcGFyYW0ge01vZGVsQXJnPENsYXVzZTxRPj59IFtjbGF1c2VdXG4gKlxuICogQGNsYXNzIENsYXVzZVxuICogQGV4dGVuZHMgTW9kZWxcbiAqIEBpbXBsZW1lbnRzIEV4ZWN1dG9yXG4gKiBAaW1wbGVtZW50cyBRdWVyeUJ1aWxkZXJcbiAqIEBhYnN0cmFjdFxuICpcbiAqIEBjYXRlZ29yeSBRdWVyeVxuICogQHN1YmNhdGVnb3J5IENsYXVzZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsYXVzZTxRPlxuICBleHRlbmRzIE1vZGVsXG4gIGltcGxlbWVudHMgRXhlY3V0b3IsIFF1ZXJ5QnVpbGRlcjxRPlxue1xuICBAcmVxdWlyZWQoKVxuICByZWFkb25seSBwcmlvcml0eSE6IFByaW9yaXR5O1xuXG4gIEByZXF1aXJlZCgpXG4gIEB0eXBlKFwib2JqZWN0XCIpXG4gIHJlYWRvbmx5IHN0YXRlbWVudCE6IFN0YXRlbWVudDxRPjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoY2xhdXNlPzogTW9kZWxBcmc8Q2xhdXNlPFE+Pikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5wcmlvcml0eSA9IGNsYXVzZT8ucHJpb3JpdHk7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBjbGF1c2U/LnN0YXRlbWVudDtcbiAgICBpZiAoIXRoaXMuc3RhdGVtZW50IHx8ICF0aGlzLnByaW9yaXR5KVxuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIFwiTWlzc2luZyBzdGF0ZW1lbnQgb3IgcHJpb3JpdHkuIFNob3VsZCBiZSBpbXBvc3NpYmxlXCIsXG4gICAgICApO1xuICAgIHRoaXMuc3RhdGVtZW50LmFkZENsYXVzZSh0aGlzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgYWRhcHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuZ2V0QWRhcHRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBDbGF1c2VzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRBZGFwdGVyKCkuQ2xhdXNlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZXR1cm4gdGhlIHByaW9yaXR5IG9mIHRoZSBjbGF1c2VcbiAgICogQHNlZSBQcmlvcml0eVxuICAgKi9cbiAgZ2V0UHJpb3JpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wcmlvcml0eSBhcyBudW1iZXI7XG4gIH1cblxuICBhYnN0cmFjdCBidWlsZChwcmV2aW91czogUSk6IFE7XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqIEBhYnN0cmFjdFxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZTxSPigpOiBQcm9taXNlPFI+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuZXhlY3V0ZSgpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCBmb3Ige0BsaW5rIEZyb21DbGF1c2V9XG4gIC8vICAqIEBwYXJhbSB7e3ByaW9yaXR5OiBudW1iZXIsIHN0YXRlbWVudDogU3RhdGVtZW50LCBnZXRQcmlvcml0eTogRnVuY3Rpb24sIGJ1aWxkOiBGdW5jdGlvbiwgcHJvY2VzczogRnVuY3Rpb259fSBjbGF1c2VcbiAgLy8gICovXG4gIC8vIHN0YXRpYyBpc0NsYXVzZShjbGF1c2U6IFBhcnRpYWw8Q2xhdXNlPGFueT4+KSB7XG4gIC8vICAgcmV0dXJuIGNsYXVzZSBpbnN0YW5jZW9mIENsYXVzZTtcbiAgLy8gICByZXR1cm4gKFxuICAvLyAgICAgY2xhdXNlLmNvbnN0cnVjdG9yICYmXG4gIC8vICAgICBjbGF1c2UuY29uc3RydWN0b3IubmFtZSAmJlxuICAvLyAgICAgY2xhdXNlLnByaW9yaXR5ICYmXG4gIC8vICAgICBjbGF1c2Uuc3RhdGVtZW50ICYmXG4gIC8vICAgICBjbGF1c2UuZ2V0UHJpb3JpdHkgJiZcbiAgLy8gICAgIGNsYXVzZS5idWlsZCAmJlxuICAvLyAgICAgY2xhdXNlLmV4ZWN1dGVcbiAgLy8gICApO1xuICAvLyB9XG59XG4iXX0=