@decaf-ts/core 0.1.3 → 0.2.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 (210) 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 +52 -1
  30. package/lib/esm/model/index.js +4 -1
  31. package/lib/esm/persistence/Adapter.d.ts +45 -14
  32. package/lib/esm/persistence/Adapter.js +178 -1
  33. package/lib/esm/persistence/constants.d.ts +10 -1
  34. package/lib/esm/persistence/constants.js +13 -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 -1
  40. package/lib/esm/persistence/index.js +6 -1
  41. package/lib/esm/query/Clause.d.ts +43 -0
  42. package/lib/esm/query/Clause.js +76 -0
  43. package/lib/esm/query/ClauseFactory.d.ts +71 -0
  44. package/lib/esm/query/ClauseFactory.js +7 -0
  45. package/lib/esm/query/Condition.d.ts +75 -0
  46. package/lib/esm/query/Condition.js +248 -0
  47. package/lib/esm/query/Query.d.ts +43 -0
  48. package/lib/esm/query/Query.js +55 -0
  49. package/lib/esm/query/Statement.d.ts +49 -0
  50. package/lib/esm/query/Statement.js +158 -0
  51. package/lib/esm/query/clauses/FromClause.d.ts +45 -0
  52. package/lib/esm/query/clauses/FromClause.js +60 -0
  53. package/lib/esm/query/clauses/GroupByClause.d.ts +21 -0
  54. package/lib/esm/query/clauses/GroupByClause.js +20 -0
  55. package/lib/esm/query/clauses/InsertClause.d.ts +37 -0
  56. package/lib/esm/query/clauses/InsertClause.js +56 -0
  57. package/lib/esm/query/clauses/LimitClause.d.ts +29 -0
  58. package/lib/esm/query/clauses/LimitClause.js +28 -0
  59. package/lib/esm/query/clauses/OffsetClause.d.ts +21 -0
  60. package/lib/esm/query/clauses/OffsetClause.js +20 -0
  61. package/lib/esm/query/clauses/OrderByClause.d.ts +37 -0
  62. package/lib/esm/query/clauses/OrderByClause.js +40 -0
  63. package/lib/esm/query/clauses/SelectClause.d.ts +47 -0
  64. package/lib/esm/query/clauses/SelectClause.js +63 -0
  65. package/lib/esm/query/clauses/SelectorBasedClause.d.ts +25 -0
  66. package/lib/esm/query/clauses/SelectorBasedClause.js +45 -0
  67. package/lib/esm/query/clauses/ValuesClause.d.ts +21 -0
  68. package/lib/esm/query/clauses/ValuesClause.js +37 -0
  69. package/lib/esm/query/clauses/WhereClause.d.ts +46 -0
  70. package/lib/esm/query/clauses/WhereClause.js +72 -0
  71. package/lib/esm/query/clauses/index.d.ts +10 -0
  72. package/lib/esm/query/clauses/index.js +12 -0
  73. package/lib/esm/query/constants.d.ts +79 -0
  74. package/lib/esm/query/constants.js +88 -0
  75. package/lib/esm/query/errors.d.ts +4 -0
  76. package/lib/esm/query/errors.js +8 -0
  77. package/lib/esm/query/index.d.ts +11 -0
  78. package/lib/esm/query/index.js +13 -0
  79. package/lib/esm/query/options.d.ts +371 -0
  80. package/lib/esm/query/options.js +3 -0
  81. package/lib/esm/query/selectors.d.ts +38 -0
  82. package/lib/esm/query/selectors.js +3 -0
  83. package/lib/esm/query/types.d.ts +2 -0
  84. package/lib/esm/query/types.js +3 -0
  85. package/lib/esm/repository/Repository.d.ts +31 -11
  86. package/lib/esm/repository/Repository.js +275 -1
  87. package/lib/esm/repository/constants.js +31 -1
  88. package/lib/esm/repository/decorators.d.ts +2 -3
  89. package/lib/esm/repository/decorators.js +23 -1
  90. package/lib/esm/repository/errors.js +16 -1
  91. package/lib/esm/repository/index.d.ts +1 -0
  92. package/lib/esm/repository/index.js +9 -1
  93. package/lib/esm/repository/injectables.d.ts +5 -0
  94. package/lib/esm/repository/injectables.js +32 -0
  95. package/lib/esm/repository/types.d.ts +3 -0
  96. package/lib/esm/repository/types.js +3 -0
  97. package/lib/esm/repository/utils.d.ts +2 -4
  98. package/lib/esm/repository/utils.js +17 -1
  99. package/lib/esm/validators/ClauseSequenceValidator.d.ts +28 -0
  100. package/lib/esm/validators/ClauseSequenceValidator.js +96 -0
  101. package/lib/esm/validators/decorators.d.ts +10 -0
  102. package/lib/esm/validators/decorators.js +25 -0
  103. package/lib/esm/validators/index.d.ts +2 -0
  104. package/lib/esm/validators/index.js +4 -0
  105. package/lib/identity/decorators.cjs +61 -1
  106. package/lib/identity/decorators.d.ts +4 -10
  107. package/lib/identity/index.cjs +19 -1
  108. package/lib/identity/utils.cjs +9 -0
  109. package/lib/identity/utils.d.ts +2 -0
  110. package/lib/index.cjs +47 -1
  111. package/lib/index.d.ts +3 -1
  112. package/lib/interfaces/Builder.cjs +4 -1
  113. package/lib/interfaces/Executor.cjs +4 -1
  114. package/lib/interfaces/Executor.d.ts +3 -1
  115. package/lib/interfaces/Observable.cjs +4 -1
  116. package/lib/interfaces/Observer.cjs +4 -1
  117. package/lib/interfaces/Queriable.cjs +4 -0
  118. package/lib/interfaces/Queriable.d.ts +6 -0
  119. package/lib/interfaces/RawExecutor.cjs +4 -1
  120. package/lib/interfaces/RawExecutor.d.ts +4 -3
  121. package/lib/interfaces/Sequence.cjs +11 -1
  122. package/lib/interfaces/Sequence.d.ts +3 -2
  123. package/lib/interfaces/SequenceOptions.cjs +23 -1
  124. package/lib/interfaces/SequenceOptions.d.ts +9 -1
  125. package/lib/interfaces/index.cjs +26 -1
  126. package/lib/interfaces/index.d.ts +1 -0
  127. package/lib/model/BaseModel.cjs +32 -1
  128. package/lib/model/BaseModel.d.ts +2 -3
  129. package/lib/model/decorators.cjs +59 -1
  130. package/lib/model/decorators.d.ts +6 -5
  131. package/lib/model/index.cjs +20 -1
  132. package/lib/persistence/Adapter.cjs +182 -1
  133. package/lib/persistence/Adapter.d.ts +45 -14
  134. package/lib/persistence/constants.cjs +16 -1
  135. package/lib/persistence/constants.d.ts +10 -1
  136. package/lib/persistence/decorators.cjs +13 -1
  137. package/lib/persistence/decorators.d.ts +1 -2
  138. package/lib/persistence/errors.cjs +12 -0
  139. package/lib/persistence/errors.d.ts +4 -0
  140. package/lib/persistence/index.cjs +22 -1
  141. package/lib/persistence/index.d.ts +1 -1
  142. package/lib/query/Clause.cjs +80 -0
  143. package/lib/query/Clause.d.ts +43 -0
  144. package/lib/query/ClauseFactory.cjs +11 -0
  145. package/lib/query/ClauseFactory.d.ts +71 -0
  146. package/lib/query/Condition.cjs +252 -0
  147. package/lib/query/Condition.d.ts +75 -0
  148. package/lib/query/Query.cjs +59 -0
  149. package/lib/query/Query.d.ts +43 -0
  150. package/lib/query/Statement.cjs +162 -0
  151. package/lib/query/Statement.d.ts +49 -0
  152. package/lib/query/clauses/FromClause.cjs +64 -0
  153. package/lib/query/clauses/FromClause.d.ts +45 -0
  154. package/lib/query/clauses/GroupByClause.cjs +24 -0
  155. package/lib/query/clauses/GroupByClause.d.ts +21 -0
  156. package/lib/query/clauses/InsertClause.cjs +60 -0
  157. package/lib/query/clauses/InsertClause.d.ts +37 -0
  158. package/lib/query/clauses/LimitClause.cjs +32 -0
  159. package/lib/query/clauses/LimitClause.d.ts +29 -0
  160. package/lib/query/clauses/OffsetClause.cjs +24 -0
  161. package/lib/query/clauses/OffsetClause.d.ts +21 -0
  162. package/lib/query/clauses/OrderByClause.cjs +44 -0
  163. package/lib/query/clauses/OrderByClause.d.ts +37 -0
  164. package/lib/query/clauses/SelectClause.cjs +67 -0
  165. package/lib/query/clauses/SelectClause.d.ts +47 -0
  166. package/lib/query/clauses/SelectorBasedClause.cjs +49 -0
  167. package/lib/query/clauses/SelectorBasedClause.d.ts +25 -0
  168. package/lib/query/clauses/ValuesClause.cjs +41 -0
  169. package/lib/query/clauses/ValuesClause.d.ts +21 -0
  170. package/lib/query/clauses/WhereClause.cjs +76 -0
  171. package/lib/query/clauses/WhereClause.d.ts +46 -0
  172. package/lib/query/clauses/index.cjs +28 -0
  173. package/lib/query/clauses/index.d.ts +10 -0
  174. package/lib/query/constants.cjs +91 -0
  175. package/lib/query/constants.d.ts +79 -0
  176. package/lib/query/errors.cjs +12 -0
  177. package/lib/query/errors.d.ts +4 -0
  178. package/lib/query/index.cjs +29 -0
  179. package/lib/query/index.d.ts +11 -0
  180. package/lib/query/options.cjs +4 -0
  181. package/lib/query/options.d.ts +371 -0
  182. package/lib/query/selectors.cjs +4 -0
  183. package/lib/query/selectors.d.ts +38 -0
  184. package/lib/query/types.cjs +4 -0
  185. package/lib/query/types.d.ts +2 -0
  186. package/lib/repository/Repository.cjs +279 -1
  187. package/lib/repository/Repository.d.ts +31 -11
  188. package/lib/repository/constants.cjs +34 -1
  189. package/lib/repository/decorators.cjs +26 -1
  190. package/lib/repository/decorators.d.ts +2 -3
  191. package/lib/repository/errors.cjs +20 -1
  192. package/lib/repository/index.cjs +25 -1
  193. package/lib/repository/index.d.ts +1 -0
  194. package/lib/repository/injectables.cjs +36 -0
  195. package/lib/repository/injectables.d.ts +5 -0
  196. package/lib/repository/types.cjs +4 -1
  197. package/lib/repository/types.d.ts +3 -0
  198. package/lib/repository/utils.cjs +20 -1
  199. package/lib/repository/utils.d.ts +3 -0
  200. package/lib/validators/ClauseSequenceValidator.cjs +99 -0
  201. package/lib/validators/ClauseSequenceValidator.d.ts +28 -0
  202. package/lib/validators/decorators.cjs +28 -0
  203. package/lib/validators/decorators.d.ts +10 -0
  204. package/lib/validators/index.cjs +20 -0
  205. package/lib/validators/index.d.ts +2 -0
  206. package/package.json +14 -11
  207. package/lib/esm/persistence/utils.d.ts +0 -3
  208. package/lib/esm/persistence/utils.js +0 -1
  209. package/lib/persistence/utils.cjs +0 -1
  210. package/lib/persistence/utils.d.ts +0 -3
@@ -1 +1,59 @@
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 Adapter_1 = require("../persistence/Adapter.cjs");
13
+ const Repository_1 = require("../repository/Repository.cjs");
14
+ const Condition_1 = require("../query/Condition.cjs");
15
+ function table(tableName) {
16
+ return (0, reflection_1.metadata)(Adapter_1.Adapter.key(constants_1.PersistenceKeys.TABLE), tableName);
17
+ }
18
+ function column(columnName) {
19
+ return (0, decorator_validation_1.propMetadata)(Adapter_1.Adapter.key(constants_1.PersistenceKeys.COLUMN), columnName);
20
+ }
21
+ /**
22
+ * @summary Index Decorator
23
+ * @description properties decorated will the index in the
24
+ * DB for performance in queries
25
+ *
26
+ * @param {OrderDirection[]} [directions]
27
+ * @param {string[]} [compositions]
28
+ *
29
+ * @function index
30
+ */
31
+ function index(compositions, directions) {
32
+ return (0, decorator_validation_1.propMetadata)(Repository_1.Repository.key(`${constants_1.PersistenceKeys.INDEX}${compositions && compositions.length ? `.${compositions.join(".")}` : ""}`), {
33
+ directions: directions,
34
+ compositions: compositions,
35
+ });
36
+ }
37
+ async function uniqueOnCreateUpdate(data, key, model) {
38
+ if (!model[key])
39
+ return;
40
+ const existing = await this.select()
41
+ .where(Condition_1.Condition.attribute(key).eq(model[key]))
42
+ .execute();
43
+ if (existing.length)
44
+ throw new db_decorators_1.ConflictError(`model already exists with property ${key} equal to ${JSON.stringify(model[key], undefined, 2)}`);
45
+ }
46
+ /**
47
+ * @summary Unique Decorator
48
+ * @description Tags a property as unique.
49
+ * No other elements in that table can have the same property value
50
+ *
51
+ * @function unique
52
+ *
53
+ * @memberOf module:wallet-db.Decorators
54
+ */
55
+ function unique() {
56
+ return (0, reflection_1.apply)((0, db_decorators_1.onCreateUpdate)(uniqueOnCreateUpdate), (0, decorator_validation_1.propMetadata)(Repository_1.Repository.key(constants_1.PersistenceKeys.UNIQUE), {}));
57
+ }
58
+
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsc0JBRUM7QUFFRCx3QkFFQztBQVlELHNCQVVDO0FBRUQsb0RBYUM7QUFXRCx3QkFLQztBQXJFRCwyREFBd0U7QUFDeEUscURBQXVEO0FBQ3ZELHdEQUEyRDtBQUczRCx5RUFBcUU7QUFDckUsb0RBQWlEO0FBQ2pELHlEQUFzRDtBQUN0RCxrREFBK0M7QUFFL0MsU0FBZ0IsS0FBSyxDQUFDLFNBQWlCO0lBQ3JDLE9BQU8sSUFBQSxxQkFBUSxFQUFDLGlCQUFPLENBQUMsR0FBRyxDQUFDLDJCQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELFNBQWdCLE1BQU0sQ0FBQyxVQUFrQjtJQUN2QyxPQUFPLElBQUEsbUNBQVksRUFBQyxpQkFBTyxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixLQUFLLENBQUMsWUFBdUIsRUFBRSxVQUE2QjtJQUMxRSxPQUFPLElBQUEsbUNBQVksRUFDakIsdUJBQVUsQ0FBQyxHQUFHLENBQ1osR0FBRywyQkFBZSxDQUFDLEtBQUssR0FBRyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNyRyxFQUNEO1FBQ0UsVUFBVSxFQUFFLFVBQVU7UUFDdEIsWUFBWSxFQUFFLFlBQVk7S0FDVixDQUNuQixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxvQkFBb0IsQ0FJL0IsSUFBTyxFQUFFLEdBQVcsRUFBRSxLQUFRO0lBQ3ZDLElBQUksQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTztJQUNqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7U0FDakMsS0FBSyxDQUFDLHFCQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN2RCxPQUFPLEVBQU8sQ0FBQztJQUNsQixJQUFJLFFBQVEsQ0FBQyxNQUFNO1FBQ2pCLE1BQU0sSUFBSSw2QkFBYSxDQUNyQixzQ0FBc0MsR0FBRyxhQUFhLElBQUksQ0FBQyxTQUFTLENBQUUsS0FBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUMxRyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsTUFBTTtJQUNwQixPQUFPLElBQUEsa0JBQUssRUFDVixJQUFBLDhCQUFjLEVBQUMsb0JBQW9CLENBQUMsRUFDcEMsSUFBQSxtQ0FBWSxFQUFDLHVCQUFVLENBQUMsR0FBRyxDQUFDLDJCQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ3pELENBQUM7QUFDSixDQUFDIiwiZmlsZSI6Im1vZGVsL2RlY29yYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mbGljdEVycm9yLCBvbkNyZWF0ZVVwZGF0ZSB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJbmRleE1ldGFkYXRhIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBNb2RlbCwgcHJvcE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4uL3F1ZXJ5L0NvbmRpdGlvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGUodGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG1ldGFkYXRhKEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5UQUJMRSksIHRhYmxlTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2x1bW4oY29sdW1uTmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGEoQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkNPTFVNTiksIGNvbHVtbk5hbWUpO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEluZGV4IERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIHByb3BlcnRpZXMgZGVjb3JhdGVkIHdpbGwgdGhlIGluZGV4IGluIHRoZVxuICogREIgZm9yIHBlcmZvcm1hbmNlIGluIHF1ZXJpZXNcbiAqXG4gKiBAcGFyYW0ge09yZGVyRGlyZWN0aW9uW119IFtkaXJlY3Rpb25zXVxuICogQHBhcmFtIHtzdHJpbmdbXX0gW2NvbXBvc2l0aW9uc11cbiAqXG4gKiBAZnVuY3Rpb24gaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4KGNvbXBvc2l0aW9ucz86IHN0cmluZ1tdLCBkaXJlY3Rpb25zPzogT3JkZXJEaXJlY3Rpb25bXSkge1xuICByZXR1cm4gcHJvcE1ldGFkYXRhKFxuICAgIFJlcG9zaXRvcnkua2V5KFxuICAgICAgYCR7UGVyc2lzdGVuY2VLZXlzLklOREVYfSR7Y29tcG9zaXRpb25zICYmIGNvbXBvc2l0aW9ucy5sZW5ndGggPyBgLiR7Y29tcG9zaXRpb25zLmpvaW4oXCIuXCIpfWAgOiBcIlwifWBcbiAgICApLFxuICAgIHtcbiAgICAgIGRpcmVjdGlvbnM6IGRpcmVjdGlvbnMsXG4gICAgICBjb21wb3NpdGlvbnM6IGNvbXBvc2l0aW9ucyxcbiAgICB9IGFzIEluZGV4TWV0YWRhdGFcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVuaXF1ZU9uQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBSZXBvc2l0b3J5PE0+LFxuICBZID0gYW55LFxuPih0aGlzOiBSLCBkYXRhOiBZLCBrZXk6IHN0cmluZywgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCEobW9kZWwgYXMgYW55KVtrZXldKSByZXR1cm47XG4gIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5zZWxlY3QoKVxuICAgIC53aGVyZShDb25kaXRpb24uYXR0cmlidXRlKGtleSkuZXEoKG1vZGVsIGFzIGFueSlba2V5XSkpXG4gICAgLmV4ZWN1dGU8TVtdPigpO1xuICBpZiAoZXhpc3RpbmcubGVuZ3RoKVxuICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKFxuICAgICAgYG1vZGVsIGFscmVhZHkgZXhpc3RzIHdpdGggcHJvcGVydHkgJHtrZXl9IGVxdWFsIHRvICR7SlNPTi5zdHJpbmdpZnkoKG1vZGVsIGFzIGFueSlba2V5XSwgdW5kZWZpbmVkLCAyKX1gXG4gICAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBVbmlxdWUgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVGFncyBhIHByb3BlcnR5IGFzIHVuaXF1ZS5cbiAqICBObyBvdGhlciBlbGVtZW50cyBpbiB0aGF0IHRhYmxlIGNhbiBoYXZlIHRoZSBzYW1lIHByb3BlcnR5IHZhbHVlXG4gKlxuICogQGZ1bmN0aW9uIHVuaXF1ZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6d2FsbGV0LWRiLkRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZSgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIG9uQ3JlYXRlVXBkYXRlKHVuaXF1ZU9uQ3JlYXRlVXBkYXRlKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLlVOSVFVRSksIHt9KVxuICApO1xufVxuIl19
@@ -1,7 +1,8 @@
1
- import { DBModel, IRepository } from "@decaf-ts/db-decorators";
2
1
  import { OrderDirection } from "../repository/constants";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import { Repository } from "../repository/Repository";
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<M extends Model, R extends Repository<M>, Y = any>(this: R, data: Y, key: string, model: M): 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,182 @@
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,configurable:!0,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 constants_1 = require("./constants.cjs");
8
+ const Query_1 = require("../query/Query.cjs");
9
+ const Repository_1 = require("../repository/Repository.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 = Repository_1.Repository.column(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[Repository_1.Repository.column(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 Repository_1.Repository.key(key);
153
+ }
154
+ static models(flavour) {
155
+ try {
156
+ const registry = decorator_validation_1.Model.getRegistry();
157
+ const cache = registry.cache;
158
+ const managedModels = Object.values(cache)
159
+ .map((m) => {
160
+ let f = Reflect.getMetadata(Adapter.key(constants_1.PersistenceKeys.ADAPTER), m);
161
+ if (f && f === flavour)
162
+ return m;
163
+ if (!f) {
164
+ const repo = Reflect.getMetadata(Repository_1.Repository.key(db_decorators_1.DBKeys.REPOSITORY), m);
165
+ if (!repo)
166
+ return;
167
+ const repository = Repository_1.Repository.forModel(m);
168
+ f = Reflect.getMetadata(Adapter.key(constants_1.PersistenceKeys.ADAPTER), repository);
169
+ return f;
170
+ }
171
+ })
172
+ .filter((m) => !!m);
173
+ return managedModels;
174
+ }
175
+ catch (e) {
176
+ throw new db_decorators_1.InternalError(e);
177
+ }
178
+ }
179
+ }
180
+ exports.Adapter = Adapter;
181
+
182
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9BZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUtpQztBQUVqQyxpREFBcUQ7QUFFckQseUVBS3dDO0FBSXhDLDJDQUE4QztBQUM5QywwQ0FBdUM7QUFJdkMseURBQXNEO0FBRXREOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBc0IsT0FBTzthQUVaLFdBQU0sR0FBc0MsRUFBdEMsQUFBd0MsQ0FBQztJQUs5RCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQ0UsTUFBUyxFQUNBLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBVFQsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQVczQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxhQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQVFTLFVBQVUsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDO0lBVUQsT0FBTyxDQUNMLEtBQVEsRUFDUixFQUFtQjtRQUtuQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FDekMsQ0FBQyxLQUEwQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxHQUFHLEtBQUssRUFBRTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM3QixNQUFNLFVBQVUsR0FBRyx1QkFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLDZC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QUMsR0FBRyxDQUFDLDJCQUFlLENBQUMsT0FBTyxDQUFDLEVBQ3BDLFVBQVUsQ0FDWCxDQUFDO29CQUNGLE9BQU8sQ0FBQyxDQUFDO2dCQUNYLENBQUM7WUFDSCxDQUFDLENBQUM7aUJBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLDZCQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7O0FBcFFILDBCQXFRQyIsImZpbGUiOiJwZXJzaXN0ZW5jZS9BZGFwdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUVycm9yLFxuICBEQktleXMsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgT2JzZXJ2ZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9PYnNlcnZlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZXJFcnJvciB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2Vycm9yc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZVwiO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIE1vZGVsLFxuICBNb2RlbENvbnN0cnVjdG9yLFxuICBNb2RlbFJlZ2lzdHJ5LFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnNcIjtcbmltcG9ydCB7IFJhd0V4ZWN1dG9yIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvUmF3RXhlY3V0b3JcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9PYnNlcnZhYmxlXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIi4uL3F1ZXJ5L1F1ZXJ5XCI7XG5pbXBvcnQgeyBTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vcXVlcnkvU3RhdGVtZW50XCI7XG5pbXBvcnQgeyBDbGF1c2VGYWN0b3J5IH0gZnJvbSBcIi4uL3F1ZXJ5L0NsYXVzZUZhY3RvcnlcIjtcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuLi9xdWVyeS9Db25kaXRpb25cIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQWJzdHJhY3QgRGVjYWYtdHMgUGVyc2lzdGVuY2UgQWRhcHRlciBDbGFzc1xuICogQGRlc2NyaXB0aW9uIE9mZmVycyB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIEFkYXB0ZXIgQ2xhc3Nlc1xuICogYW5kIG1hbmFnZXMgdGhlbSB2YXJpb3VzIHJlZ2lzdGVyZWQge0BsaW5rIEFkYXB0ZXJ9c1xuICpcbiAqIEB0eXBlZGVmIFkgdGhlIHVuZGVybHlpbmcgcGVyc2lzdGVuY2Ugb2JqZWN0IHR5cGVcbiAqIEB0eXBlZGVmIFEgVGhlIHF1ZXJ5IG9iamVjdCB0aGUgYWRhcHRlciB1c2VzXG4gKlxuICogQHBhcmFtIHtZfSBuYXRpdmUgdGhlIHVuZGVybHlpbmcgcGVyc2lzdGVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gZmxhdm91ciB0aGUgdW5kZXIgd2l0Y2ggdGhlIHBlcnNpc3RlbmNlIGFkYXB0ZXIgc2hvdWxkIGJlIHN0b3JlZFxuICpcbiAqIEBjbGFzcyBBZGFwdGVyXG4gKiBAaW1wbGVtZW50cyBSYXdFeGVjdXRvclxuICogQGltcGxlbWVudHMgT2JzZXJ2YWJsZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWRhcHRlcjxZLCBRPiBpbXBsZW1lbnRzIFJhd0V4ZWN1dG9yPFE+LCBPYnNlcnZhYmxlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnQ6IEFkYXB0ZXI8YW55LCBhbnk+O1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IFJlY29yZDxzdHJpbmcsIEFkYXB0ZXI8YW55LCBhbnk+PiA9IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29ic2VydmVyczogT2JzZXJ2ZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXRpdmU6IFk7XG5cbiAgZ2V0IG5hdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF0aXZlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIG5hdGl2ZTogWSxcbiAgICByZWFkb25seSBmbGF2b3VyOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5fbmF0aXZlID0gbmF0aXZlO1xuICAgIEFkYXB0ZXIuX2NhY2hlW2ZsYXZvdXJdID0gdGhpcztcbiAgfVxuXG4gIFF1ZXJ5PE0gZXh0ZW5kcyBNb2RlbD4oKTogUXVlcnk8USwgTT4ge1xuICAgIHJldHVybiBuZXcgUXVlcnkodGhpcyk7XG4gIH1cblxuICBhYnN0cmFjdCBwYXJzZUNvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbik6IFE7XG5cbiAgYWJzdHJhY3QgZ2V0IFN0YXRlbWVudCgpOiBTdGF0ZW1lbnQ8UT47XG5cbiAgYWJzdHJhY3QgZ2V0IENsYXVzZXMoKTogQ2xhdXNlRmFjdG9yeTxZLCBRPjtcblxuICBwcm90ZWN0ZWQgaXNSZXNlcnZlZChhdHRyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gIWF0dHI7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VFcnJvcihlcnI6IEVycm9yKTogQmFzZUVycm9yO1xuXG4gIGFic3RyYWN0IGluaXRpYWxpemUoLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGFic3RyYWN0IGluZGV4PE0gZXh0ZW5kcyBNb2RlbD4oLi4ubW9kZWxzOiBNW10pOiBQcm9taXNlPGFueT47XG5cbiAgYWJzdHJhY3QgU2VxdWVuY2Uob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKTogUHJvbWlzZTxTZXF1ZW5jZT47XG5cbiAgcHJlcGFyZTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG1vZGVsOiBNLFxuICAgIHBrOiBzdHJpbmcgfCBudW1iZXJcbiAgKToge1xuICAgIHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBpZDogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhtb2RlbCkucmVkdWNlKFxuICAgICAgKGFjY3VtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09IHBrKSByZXR1cm4gYWNjdW07XG4gICAgICAgIGNvbnN0IG1hcHBlZFByb3AgPSBSZXBvc2l0b3J5LmNvbHVtbihtb2RlbCwga2V5KTtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNlcnZlZChtYXBwZWRQcm9wKSlcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgUHJvcGVydHkgbmFtZSAke21hcHBlZFByb3B9IGlzIHJlc2VydmVkYCk7XG4gICAgICAgIGFjY3VtW21hcHBlZFByb3BdID0gdmFsO1xuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuICAgIGlmICgobW9kZWwgYXMgYW55KVtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdKVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwgUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IChtb2RlbCBhcyBhbnkpW1BlcnNpc3RlbmNlS2V5cy5NRVRBREFUQV0sXG4gICAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVjb3JkOiByZXN1bHQsXG4gICAgICBpZDogKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3BrXSxcbiAgICB9O1xuICB9XG5cbiAgcmV2ZXJ0PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgb2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGNsYXp6OiBzdHJpbmcgfCBDb25zdHJ1Y3RvcjxNPixcbiAgICBwazogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgKTogTSB7XG4gICAgY29uc3Qgb2I6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBvYltwa10gPSBpZDtcbiAgICBjb25zdCBtID0gKFxuICAgICAgdHlwZW9mIGNsYXp6ID09PSBcInN0cmluZ1wiID8gTW9kZWwuYnVpbGQob2IsIGNsYXp6KSA6IG5ldyBjbGF6eihvYilcbiAgICApIGFzIE07XG4gICAgY29uc3QgbWV0YWRhdGEgPSBvYmpbUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBXTtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3Qua2V5cyhtKS5yZWR1Y2UoKGFjY3VtOiBNLCBrZXkpID0+IHtcbiAgICAgIGlmIChrZXkgPT09IHBrKSByZXR1cm4gYWNjdW07XG4gICAgICAoYWNjdW0gYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XSA9IG9ialtSZXBvc2l0b3J5LmNvbHVtbihhY2N1bSwga2V5KV07XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSwgbSk7XG4gICAgaWYgKG1ldGFkYXRhKVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwgUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBtZXRhZGF0YSxcbiAgICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhYnN0cmFjdCBjcmVhdGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIGFzeW5jIGNyZWF0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogKHN0cmluZyB8IG51bWJlcilbXSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgaWYgKGlkLmxlbmd0aCAhPT0gbW9kZWwubGVuZ3RoKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJJZHMgYW5kIG1vZGVscyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCIpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGlkLm1hcCgoaSwgY291bnQpID0+IHRoaXMuY3JlYXRlKHRhYmxlTmFtZSwgaSwgbW9kZWxbY291bnRdLCAuLi5hcmdzKSlcbiAgICApO1xuICB9XG5cbiAgYWJzdHJhY3QgcmVhZChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgYXN5bmMgcmVhZEFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogKHN0cmluZyB8IG51bWJlciB8IGJpZ2ludClbXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChpZC5tYXAoKGkpID0+IHRoaXMucmVhZCh0YWJsZU5hbWUsIGksIC4uLmFyZ3MpKSk7XG4gIH1cblxuICBhYnN0cmFjdCB1cGRhdGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIGFzeW5jIHVwZGF0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nW10gfCBudW1iZXJbXSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgaWYgKGlkLmxlbmd0aCAhPT0gbW9kZWwubGVuZ3RoKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJJZHMgYW5kIG1vZGVscyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCIpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGlkLm1hcCgoaSwgY291bnQpID0+IHRoaXMudXBkYXRlKHRhYmxlTmFtZSwgaSwgbW9kZWxbY291bnRdLCAuLi5hcmdzKSlcbiAgICApO1xuICB9XG5cbiAgYWJzdHJhY3QgZGVsZXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICBhc3luYyBkZWxldGVBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoaWQubWFwKChpKSA9PiB0aGlzLmRlbGV0ZSh0YWJsZU5hbWUsIGksIC4uLmFyZ3MpKSk7XG4gIH1cblxuICBhYnN0cmFjdCByYXc8Uj4ocmF3SW5wdXQ6IFEsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSPjtcblxuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIGFuIHtAbGluayBPYnNlcnZlcn1cbiAgICogQHBhcmFtIHtPYnNlcnZlcn0gb2JzZXJ2ZXJcbiAgICpcbiAgICogQHNlZSB7T2JzZXJ2YWJsZSNvYnNlcnZlfVxuICAgKi9cbiAgb2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX29ic2VydmVycy5pbmRleE9mKG9ic2VydmVyKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk9ic2VydmVyIGFscmVhZHkgcmVnaXN0ZXJlZFwiKTtcbiAgICB0aGlzLl9vYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVW5yZWdpc3RlcnMgYW4ge0BsaW5rIE9ic2VydmVyfVxuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlclxuICAgKlxuICAgKiBAc2VlIHtPYnNlcnZhYmxlI3VuT2JzZXJ2ZX1cbiAgICovXG4gIHVuT2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX29ic2VydmVycy5pbmRleE9mKG9ic2VydmVyKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkZhaWxlZCB0byBmaW5kIE9ic2VydmVyXCIpO1xuICAgIHRoaXMuX29ic2VydmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IGNhbGxzIGFsbCByZWdpc3RlcmVkIHtAbGluayBPYnNlcnZlcn1zIHRvIHVwZGF0ZSB0aGVtc2VsdmVzXG4gICAqIEBwYXJhbSB7YW55W119IFthcmdzXSBvcHRpb25hbCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSB7QGxpbmsgT2JzZXJ2ZXIjcmVmcmVzaH0gbWV0aG9kXG4gICAqL1xuICBhc3luYyB1cGRhdGVPYnNlcnZlcnMoLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgUHJvbWlzZS5hbGwodGhpcy5fb2JzZXJ2ZXJzLm1hcCgobzogT2JzZXJ2ZXIpID0+IG8ucmVmcmVzaCguLi5hcmdzKSkpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZTogYW55KSA9PiByZWplY3QobmV3IE9ic2VydmVyRXJyb3IoZSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY3VycmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQ8WSwgUT4oZmxhdm91cjogYW55KTogQWRhcHRlcjxZLCBRPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGZsYXZvdXIgaW4gdGhpcy5fY2FjaGUpIHJldHVybiB0aGlzLl9jYWNoZVtmbGF2b3VyXTtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gQWRhcHRlciByZWdpc3RlcmVkIHVuZGVyICR7Zmxhdm91cn0uYCk7XG4gIH1cblxuICBzdGF0aWMgc2V0Q3VycmVudChmbGF2b3VyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhZGFwdGVyID0gdGhpcy5nZXQoZmxhdm91cik7XG4gICAgaWYgKCFhZGFwdGVyKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYE5vIHBlcnNpc3RlbmNlIGZsYXZvdXIgJHtmbGF2b3VyfSByZWdpc3RlcmVkYCk7XG4gICAgdGhpcy5fY3VycmVudCA9IGFkYXB0ZXI7XG4gIH1cblxuICBzdGF0aWMga2V5KGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFJlcG9zaXRvcnkua2V5KGtleSk7XG4gIH1cblxuICBzdGF0aWMgbW9kZWxzPE0gZXh0ZW5kcyBNb2RlbD4oZmxhdm91cjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gKE1vZGVsIGFzIGFueSkuZ2V0UmVnaXN0cnkoKSBhcyBNb2RlbFJlZ2lzdHJ5PGFueT47XG4gICAgICBjb25zdCBjYWNoZSA9IChcbiAgICAgICAgcmVnaXN0cnkgYXMgdW5rbm93biBhcyB7IGNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbENvbnN0cnVjdG9yPGFueT4+IH1cbiAgICAgICkuY2FjaGU7XG4gICAgICBjb25zdCBtYW5hZ2VkTW9kZWxzOiBNb2RlbENvbnN0cnVjdG9yPGFueT5bXSA9IE9iamVjdC52YWx1ZXMoY2FjaGUpXG4gICAgICAgIC5tYXAoKG06IE1vZGVsQ29uc3RydWN0b3I8TT4pID0+IHtcbiAgICAgICAgICBsZXQgZiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgICAgICBBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUiksXG4gICAgICAgICAgICBtIGFzIE1vZGVsQ29uc3RydWN0b3I8YW55PlxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGYgJiYgZiA9PT0gZmxhdm91cikgcmV0dXJuIG07XG4gICAgICAgICAgaWYgKCFmKSB7XG4gICAgICAgICAgICBjb25zdCByZXBvID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgICAgICAgICAgUmVwb3NpdG9yeS5rZXkoREJLZXlzLlJFUE9TSVRPUlkpLFxuICAgICAgICAgICAgICBtIGFzIE1vZGVsQ29uc3RydWN0b3I8YW55PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghcmVwbykgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IFJlcG9zaXRvcnkuZm9yTW9kZWwobSk7XG5cbiAgICAgICAgICAgIGYgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICAgICAgICBBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUiksXG4gICAgICAgICAgICAgIHJlcG9zaXRvcnlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKG0pID0+ICEhbSk7XG4gICAgICByZXR1cm4gbWFuYWdlZE1vZGVscztcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,31 +1,60 @@
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, ModelConstructor } 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/Condition";
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 initialize(...args: any[]): Promise<void>;
42
+ abstract index<M extends Model>(...models: M[]): Promise<any>;
43
+ abstract Sequence(options: SequenceOptions): Promise<Sequence>;
44
+ prepare<M extends Model>(model: M, pk: string | number): {
20
45
  record: Record<string, any>;
21
46
  id: string;
22
- }>;
23
- revert<V extends DBModel>(obj: Record<string, any>, clazz: string | Constructor<V>, pk: string, id: string | number): Promise<V>;
47
+ };
48
+ revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk: string, id: string | number | bigint): M;
24
49
  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>>;
50
+ createAll(tableName: string, id: (string | number)[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
51
+ abstract read(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
52
+ readAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
26
53
  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>;
54
+ updateAll(tableName: string, id: string[] | number[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
55
+ abstract delete(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
56
+ deleteAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
57
+ abstract raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
29
58
  /**
30
59
  * @summary Registers an {@link Observer}
31
60
  * @param {Observer} observer
@@ -46,6 +75,8 @@ export declare abstract class Adapter<Y, T = string> implements RawExecutor<T>,
46
75
  */
47
76
  updateObservers(...args: any[]): Promise<void>;
48
77
  static get current(): Adapter<any, any>;
49
- static get(flavour: any): Adapter<any> | undefined;
78
+ static get<Y, Q>(flavour: any): Adapter<Y, Q> | undefined;
50
79
  static setCurrent(flavour: string): void;
80
+ static key(key: string): string;
81
+ static models<M extends Model>(flavour: string): ModelConstructor<any>[];
51
82
  }
@@ -1 +1,16 @@
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["INDEX"] = "index";
7
+ PersistenceKeys["UNIQUE"] = "unique";
8
+ PersistenceKeys["ADAPTER"] = "adapter";
9
+ PersistenceKeys["INJECTABLE"] = "decaf_{0}_adapter_for_{1}";
10
+ PersistenceKeys["TABLE"] = "table";
11
+ PersistenceKeys["COLUMN"] = "column";
12
+ PersistenceKeys["METADATA"] = "__metadata";
13
+ PersistenceKeys["CLAUSE_SEQUENCE"] = "clause-sequence";
14
+ })(PersistenceKeys || (exports.PersistenceKeys = PersistenceKeys = {}));
15
+
16
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxlQVNYO0FBVEQsV0FBWSxlQUFlO0lBQ3pCLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQixzQ0FBbUIsQ0FBQTtJQUNuQiwyREFBd0MsQ0FBQTtJQUN4QyxrQ0FBZSxDQUFBO0lBQ2Ysb0NBQWlCLENBQUE7SUFDakIsMENBQXVCLENBQUE7SUFDdkIsc0RBQW1DLENBQUE7QUFDckMsQ0FBQyxFQVRXLGVBQWUsK0JBQWYsZUFBZSxRQVMxQiIsImZpbGUiOiJwZXJzaXN0ZW5jZS9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBQZXJzaXN0ZW5jZUtleXMge1xuICBJTkRFWCA9IFwiaW5kZXhcIixcbiAgVU5JUVVFID0gXCJ1bmlxdWVcIixcbiAgQURBUFRFUiA9IFwiYWRhcHRlclwiLFxuICBJTkpFQ1RBQkxFID0gXCJkZWNhZl97MH1fYWRhcHRlcl9mb3JfezF9XCIsXG4gIFRBQkxFID0gXCJ0YWJsZVwiLFxuICBDT0xVTU4gPSBcImNvbHVtblwiLFxuICBNRVRBREFUQSA9IFwiX19tZXRhZGF0YVwiLFxuICBDTEFVU0VfU0VRVUVOQ0UgPSBcImNsYXVzZS1zZXF1ZW5jZVwiLFxufVxuIl19
@@ -1 +1,10 @@
1
- export declare const PersistenceKeys: Record<string, string>;
1
+ export declare enum PersistenceKeys {
2
+ INDEX = "index",
3
+ UNIQUE = "unique",
4
+ ADAPTER = "adapter",
5
+ INJECTABLE = "decaf_{0}_adapter_for_{1}",
6
+ TABLE = "table",
7
+ COLUMN = "column",
8
+ METADATA = "__metadata",
9
+ CLAUSE_SEQUENCE = "clause-sequence"
10
+ }
@@ -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,22 @@
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
+
22
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9wZXJzaXN0ZW5jZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCO0FBQzFCLDhDQUE0QjtBQUM1QiwrQ0FBNkI7QUFDN0IsMkNBQXlCIiwiZmlsZSI6InBlcnNpc3RlbmNlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQWRhcHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnNcIjtcbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  export * from "./Adapter";
2
2
  export * from "./constants";
3
3
  export * from "./decorators";
4
- export * from "./utils";
4
+ export * from "./errors";
@@ -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=