@decaf-ts/core 0.1.3 → 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,50 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.bootRepository=bootRepository,exports.getTableName=getTableName;let db_decorators_1=require("@decaf-ts/db-decorators"),injectable_decorators_1=require("@decaf-ts/injectable-decorators"),Adapter_1=require("../persistence/Adapter.cjs"),decorators_1=require("../persistence/decorators.cjs"),constants_1=require("../persistence/constants.cjs");function bootRepository(e,t){var r=Reflect.getMetadata((0,db_decorators_1.getDBKey)(db_decorators_1.DBKeys.REPOSITORY),e);if(!r)throw new db_decorators_1.InternalError("No Repository defined for model "+e.constructor.name);e=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.ADAPTER),t);if(!e)throw new db_decorators_1.InternalError("Could not find persistence adapter definition for repository "+t.name);try{var o=Adapter_1.Adapter.get(e);injectable_decorators_1.Injectables.get(r,o)}catch(e){throw new db_decorators_1.InternalError(e)}return r}function getTableName(e){var t=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.TABLE),e instanceof db_decorators_1.DBModel?e.constructor:e);return t||(e instanceof db_decorators_1.DBModel?e.constructor:e).name}
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootRepository = bootRepository;
4
+ exports.getTableName = getTableName;
5
+ exports.generateInjectableNameForRepository = generateInjectableNameForRepository;
6
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
7
+ const injectable_decorators_1 = require("@decaf-ts/injectable-decorators");
8
+ const Repository_1 = require("./Repository.cjs");
9
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
10
+ const Adapter_1 = require("../persistence/Adapter.cjs");
11
+ const constants_1 = require("../persistence/constants.cjs");
12
+ const decorator_validation_2 = require("@decaf-ts/decorator-validation");
13
+ function bootRepository(model, original) {
14
+ const repo = Repository_1.Repository.forModel(model);
15
+ console.log(repo);
16
+ const injectableName = Reflect.getMetadata(Repository_1.Repository.key(db_decorators_1.DBKeys.REPOSITORY), model);
17
+ if (!injectableName)
18
+ throw new db_decorators_1.InternalError(`No Repository defined for model ${model.constructor.name}`);
19
+ const flavour = Reflect.getMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER), original);
20
+ if (!flavour)
21
+ throw new db_decorators_1.InternalError(`Could not find persistence adapter definition for repository ${original.name}`);
22
+ try {
23
+ const adapter = Adapter_1.Adapter.get(flavour);
24
+ return injectable_decorators_1.Injectables.get(injectableName, adapter);
25
+ }
26
+ catch (e) {
27
+ throw new db_decorators_1.InternalError(e);
28
+ }
29
+ }
30
+ function getTableName(model) {
31
+ const metadata = Reflect.getMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.TABLE), model instanceof decorator_validation_2.Model ? model.constructor : model);
32
+ if (metadata) {
33
+ return metadata;
34
+ }
35
+ if (model instanceof decorator_validation_2.Model) {
36
+ return model.constructor.name;
37
+ }
38
+ return model.name;
39
+ }
40
+ function generateInjectableNameForRepository(model, flavour) {
41
+ if (!flavour) {
42
+ const key = Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER);
43
+ flavour = Reflect.getMetadata(key, model instanceof decorator_validation_2.Model ? model.constructor : model);
44
+ if (!flavour)
45
+ throw new db_decorators_1.InternalError(`Could not retrieve flavour from model ${model instanceof decorator_validation_2.Model ? model.constructor.name : model.name}`);
46
+ }
47
+ return (0, decorator_validation_1.sf)(constants_1.PersistenceKeys.INJECTABLE, flavour, getTableName(model));
48
+ }
49
+
50
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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ZSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEUsQ0FBQyIsImZpbGUiOiJyZXBvc2l0b3J5L3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREJLZXlzLCBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlcyB9IGZyb20gXCJAZGVjYWYtdHMvaW5qZWN0YWJsZS1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4vUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIHNmIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RSZXBvc2l0b3J5PFQgZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBDb25zdHJ1Y3RvcjxUPixcbiAgb3JpZ2luYWw6IENvbnN0cnVjdG9yPFJlcG9zaXRvcnk8VD4+XG4pOiBSZXBvc2l0b3J5PFQ+IHtcbiAgY29uc3QgcmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwobW9kZWwpO1xuICBjb25zb2xlLmxvZyhyZXBvKTtcbiAgY29uc3QgaW5qZWN0YWJsZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgUmVwb3NpdG9yeS5rZXkoREJLZXlzLlJFUE9TSVRPUlkpLFxuICAgIG1vZGVsXG4gICk7XG4gIGlmICghaW5qZWN0YWJsZU5hbWUpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgTm8gUmVwb3NpdG9yeSBkZWZpbmVkIGZvciBtb2RlbCAke21vZGVsLmNvbnN0cnVjdG9yLm5hbWV9YFxuICAgICk7XG4gIGNvbnN0IGZsYXZvdXIgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgIEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5BREFQVEVSKSxcbiAgICBvcmlnaW5hbFxuICApO1xuICBpZiAoIWZsYXZvdXIpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgQ291bGQgbm90IGZpbmQgcGVyc2lzdGVuY2UgYWRhcHRlciBkZWZpbml0aW9uIGZvciByZXBvc2l0b3J5ICR7b3JpZ2luYWwubmFtZX1gXG4gICAgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZGFwdGVyID0gQWRhcHRlci5nZXQoZmxhdm91cik7XG4gICAgcmV0dXJuIEluamVjdGFibGVzLmdldChpbmplY3RhYmxlTmFtZSwgYWRhcHRlcikgYXMgUmVwb3NpdG9yeTxUPjtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlTmFtZTxUIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBUIHwgQ29uc3RydWN0b3I8VD4pIHtcbiAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgIEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5UQUJMRSksXG4gICAgbW9kZWwgaW5zdGFuY2VvZiBNb2RlbCA/IG1vZGVsLmNvbnN0cnVjdG9yIDogbW9kZWxcbiAgKTtcbiAgaWYgKG1ldGFkYXRhKSB7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG4gIGlmIChtb2RlbCBpbnN0YW5jZW9mIE1vZGVsKSB7XG4gICAgcmV0dXJuIG1vZGVsLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cbiAgcmV0dXJuIG1vZGVsLm5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUluamVjdGFibGVOYW1lRm9yUmVwb3NpdG9yeTxUIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogQ29uc3RydWN0b3I8VD4gfCBULFxuICBmbGF2b3VyPzogc3RyaW5nXG4pIHtcbiAgaWYgKCFmbGF2b3VyKSB7XG4gICAgY29uc3Qga2V5ID0gQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkFEQVBURVIpO1xuICAgIGZsYXZvdXIgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAga2V5LFxuICAgICAgbW9kZWwgaW5zdGFuY2VvZiBNb2RlbCA/IG1vZGVsLmNvbnN0cnVjdG9yIDogbW9kZWxcbiAgICApO1xuICAgIGlmICghZmxhdm91cilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IHJldHJpZXZlIGZsYXZvdXIgZnJvbSBtb2RlbCAke21vZGVsIGluc3RhbmNlb2YgTW9kZWwgPyBtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lIDogbW9kZWwubmFtZX1gXG4gICAgICApO1xuICB9XG4gIHJldHVybiBzZihQZXJzaXN0ZW5jZUtleXMuSU5KRUNUQUJMRSwgZmxhdm91ciwgZ2V0VGFibGVOYW1lKG1vZGVsKSk7XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import { Repository } from "./Repository";
2
+ import { Constructor } from "@decaf-ts/decorator-validation";
3
+ import { Model } from "@decaf-ts/decorator-validation";
4
+ export declare function bootRepository<T extends Model>(model: Constructor<T>, original: Constructor<Repository<T>>): Repository<T>;
5
+ export declare function getTableName<T extends Model>(model: T | Constructor<T>): any;
6
+ export declare function generateInjectableNameForRepository<T extends Model>(model: Constructor<T> | T, flavour?: string): string;
@@ -0,0 +1,98 @@
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.ClauseSequenceValidator = void 0;
13
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
14
+ const reflection_1 = require("@decaf-ts/reflection");
15
+ const Clause_1 = require("../query/Clause.cjs");
16
+ const query_1 = require("../query/index.cjs");
17
+ const persistence_1 = require("../persistence/index.cjs");
18
+ /**
19
+ * @summary Validates a {@link Sequence}'s {@link Clause}s
20
+ *
21
+ * @param {string} [message]
22
+ *
23
+ * @class ClauseSequenceValidator
24
+ * @extends Validator
25
+ *
26
+ * @category Validation
27
+ * @subcategory Validators
28
+ */
29
+ let ClauseSequenceValidator = class ClauseSequenceValidator extends decorator_validation_1.Validator {
30
+ constructor(message = decorator_validation_1.DEFAULT_ERROR_MESSAGES[persistence_1.PersistenceKeys.CLAUSE_SEQUENCE]) {
31
+ super(message);
32
+ }
33
+ validateSequence(clauses, message) {
34
+ return query_1.MandatoryPriorities.every((p) => !!clauses.find((c) => c.getPriority() === p))
35
+ ? undefined
36
+ : this.getMessage((0, decorator_validation_1.sf)(message || this.message, "Missing required Clause Priorities"));
37
+ }
38
+ /**
39
+ * @summary Verifies the model for errors
40
+ * @param {string} value
41
+ * @param {string} [message]
42
+ *
43
+ * @return Errors
44
+ *
45
+ * @override
46
+ *
47
+ * @see Validator
48
+ */
49
+ hasErrors(value, message) {
50
+ try {
51
+ if (!value ||
52
+ !Array.isArray(value) ||
53
+ !value.length ||
54
+ !value.every((e) => e instanceof Clause_1.Clause))
55
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, "No or invalid Clauses found"));
56
+ const clauses = value;
57
+ const clauseErrors = clauses.reduce((accum, c) => {
58
+ const errs = c.hasErrors();
59
+ if (errs)
60
+ if (accum)
61
+ accum += (0, decorator_validation_1.sf)("\nClause {0}: {1}", c.constructor.name, errs.toString());
62
+ else
63
+ accum = (0, decorator_validation_1.sf)("Clause {0}: {1}", c.constructor.name, errs.toString());
64
+ return accum;
65
+ }, undefined);
66
+ if (clauseErrors)
67
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, clauseErrors.toString()));
68
+ const verifyPriority = () => {
69
+ const priorities = clauses.map((c) => c.getPriority());
70
+ const allUnique = new Set(priorities).size === priorities.length;
71
+ if (!allUnique)
72
+ return "Not all clauses have unique priorities";
73
+ const sorted = priorities.sort((a, b) => {
74
+ return b - a;
75
+ });
76
+ return (0, reflection_1.isEqual)(priorities, sorted)
77
+ ? true
78
+ : "Clauses are not properly sorted";
79
+ };
80
+ const priorityCheck = verifyPriority();
81
+ if (priorityCheck !== true)
82
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, "Invalid prioritization"));
83
+ const sequenceCheck = this.validateSequence(clauses, message);
84
+ if (sequenceCheck)
85
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, "Invalid sequence"));
86
+ }
87
+ catch (e) {
88
+ throw new query_1.QueryError((0, decorator_validation_1.sf)("Failed to verify clause sequence {0}: {1}", value, e));
89
+ }
90
+ }
91
+ };
92
+ exports.ClauseSequenceValidator = ClauseSequenceValidator;
93
+ exports.ClauseSequenceValidator = ClauseSequenceValidator = __decorate([
94
+ (0, decorator_validation_1.validator)(persistence_1.PersistenceKeys.CLAUSE_SEQUENCE),
95
+ __metadata("design:paramtypes", [String])
96
+ ], ClauseSequenceValidator);
97
+
98
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0b3JzL0NsYXVzZVNlcXVlbmNlVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlFQUt3QztBQUN4QyxxREFBK0M7QUFDL0MsNENBQXlDO0FBQ3pDLG9DQUEyRDtBQUMzRCxnREFBaUQ7QUFFakQ7Ozs7Ozs7Ozs7R0FVRztBQUVJLElBQU0sdUJBQXVCLEdBQTdCLE1BQU0sdUJBQXdCLFNBQVEsZ0NBQVM7SUFDcEQsWUFDRSxVQUFrQiw2Q0FBc0IsQ0FBQyw2QkFBZSxDQUFDLGVBQWUsQ0FBQztRQUV6RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVPLGdCQUFnQixDQUN0QixPQUFzQixFQUN0QixPQUFnQjtRQUVoQixPQUFPLDJCQUFtQixDQUFDLEtBQUssQ0FDOUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3BEO1lBQ0MsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FDYixJQUFBLHlCQUFFLEVBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLENBQUMsQ0FDbEUsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksU0FBUyxDQUFDLEtBQVUsRUFBRSxPQUFnQjtRQUMzQyxJQUFJLENBQUM7WUFDSCxJQUNFLENBQUMsS0FBSztnQkFDTixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNyQixDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUNiLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQU0sQ0FBQztnQkFFeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUNwQixJQUFBLHlCQUFFLEVBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsNkJBQTZCLENBQUMsQ0FDM0QsQ0FBQztZQUVKLE1BQU0sT0FBTyxHQUFrQixLQUFzQixDQUFDO1lBRXRELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ2pDLENBQUMsS0FBeUIsRUFBRSxDQUFjLEVBQUUsRUFBRTtnQkFDNUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLElBQUk7b0JBQ04sSUFBSSxLQUFLO3dCQUNQLEtBQUssSUFBSSxJQUFBLHlCQUFFLEVBQ1QsbUJBQW1CLEVBQ25CLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUNsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQ2hCLENBQUM7O3dCQUVGLEtBQUssR0FBRyxJQUFBLHlCQUFFLEVBQ1IsaUJBQWlCLEVBQ2pCLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUNsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQ2hCLENBQUM7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLEVBQ0QsU0FBUyxDQUNWLENBQUM7WUFFRixJQUFJLFlBQVk7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUNwQixJQUFBLHlCQUFFLEVBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQ3JELENBQUM7WUFFSixNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7Z0JBQzFCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFDakUsSUFBSSxDQUFDLFNBQVM7b0JBQUUsT0FBTyx5Q0FBeUMsQ0FBQztnQkFDakUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sSUFBQSxvQkFBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQztZQUN6QyxDQUFDLENBQUM7WUFFRixNQUFNLGFBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUN2QyxJQUFJLGFBQWEsS0FBSyxJQUFJO2dCQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQ3BCLElBQUEseUJBQUUsRUFBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxDQUN0RCxDQUFDO1lBRUosTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5RCxJQUFJLGFBQWE7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUEseUJBQUUsRUFBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLGtCQUFVLENBQ2xCLElBQUEseUJBQUUsRUFBQywyQ0FBMkMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQzFELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUFuR1ksMERBQXVCO2tDQUF2Qix1QkFBdUI7SUFEbkMsSUFBQSxnQ0FBUyxFQUFDLDZCQUFlLENBQUMsZUFBZSxDQUFDOztHQUM5Qix1QkFBdUIsQ0FtR25DIiwiZmlsZSI6InZhbGlkYXRvcnMvQ2xhdXNlU2VxdWVuY2VWYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLFxuICBzZixcbiAgdmFsaWRhdG9yLFxuICBWYWxpZGF0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IENsYXVzZSB9IGZyb20gXCIuLi9xdWVyeS9DbGF1c2VcIjtcbmltcG9ydCB7IE1hbmRhdG9yeVByaW9yaXRpZXMsIFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhIHtAbGluayBTZXF1ZW5jZX0ncyB7QGxpbmsgQ2xhdXNlfXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdXG4gKlxuICogQGNsYXNzIENsYXVzZVNlcXVlbmNlVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBWYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICogQHN1YmNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuQHZhbGlkYXRvcihQZXJzaXN0ZW5jZUtleXMuQ0xBVVNFX1NFUVVFTkNFKVxuZXhwb3J0IGNsYXNzIENsYXVzZVNlcXVlbmNlVmFsaWRhdG9yIGV4dGVuZHMgVmFsaWRhdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFU1tQZXJzaXN0ZW5jZUtleXMuQ0xBVVNFX1NFUVVFTkNFXSxcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlU2VxdWVuY2UoXG4gICAgY2xhdXNlczogQ2xhdXNlPGFueT5bXSxcbiAgICBtZXNzYWdlPzogc3RyaW5nLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBNYW5kYXRvcnlQcmlvcml0aWVzLmV2ZXJ5KFxuICAgICAgKHApID0+ICEhY2xhdXNlcy5maW5kKChjKSA9PiBjLmdldFByaW9yaXR5KCkgPT09IHApLFxuICAgIClcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMuZ2V0TWVzc2FnZShcbiAgICAgICAgICBzZihtZXNzYWdlIHx8IHRoaXMubWVzc2FnZSwgXCJNaXNzaW5nIHJlcXVpcmVkIENsYXVzZSBQcmlvcml0aWVzXCIpLFxuICAgICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZlcmlmaWVzIHRoZSBtb2RlbCBmb3IgZXJyb3JzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdXG4gICAqXG4gICAqIEByZXR1cm4gRXJyb3JzXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvclxuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyh2YWx1ZTogYW55LCBtZXNzYWdlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICAhdmFsdWUgfHxcbiAgICAgICAgIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8XG4gICAgICAgICF2YWx1ZS5sZW5ndGggfHxcbiAgICAgICAgIXZhbHVlLmV2ZXJ5KChlKSA9PiBlIGluc3RhbmNlb2YgQ2xhdXNlKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICAgIHNmKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBcIk5vIG9yIGludmFsaWQgQ2xhdXNlcyBmb3VuZFwiKSxcbiAgICAgICAgKTtcblxuICAgICAgY29uc3QgY2xhdXNlczogQ2xhdXNlPGFueT5bXSA9IHZhbHVlIGFzIENsYXVzZTxhbnk+W107XG5cbiAgICAgIGNvbnN0IGNsYXVzZUVycm9ycyA9IGNsYXVzZXMucmVkdWNlKFxuICAgICAgICAoYWNjdW06IHN0cmluZyB8IHVuZGVmaW5lZCwgYzogQ2xhdXNlPGFueT4pID0+IHtcbiAgICAgICAgICBjb25zdCBlcnJzID0gYy5oYXNFcnJvcnMoKTtcbiAgICAgICAgICBpZiAoZXJycylcbiAgICAgICAgICAgIGlmIChhY2N1bSlcbiAgICAgICAgICAgICAgYWNjdW0gKz0gc2YoXG4gICAgICAgICAgICAgICAgXCJcXG5DbGF1c2UgezB9OiB7MX1cIixcbiAgICAgICAgICAgICAgICBjLmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgICAgICAgICAgICAgZXJycy50b1N0cmluZygpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhY2N1bSA9IHNmKFxuICAgICAgICAgICAgICAgIFwiQ2xhdXNlIHswfTogezF9XCIsXG4gICAgICAgICAgICAgICAgYy5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgICAgICAgICAgICAgIGVycnMudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChjbGF1c2VFcnJvcnMpXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UoXG4gICAgICAgICAgc2YobWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UsIGNsYXVzZUVycm9ycy50b1N0cmluZygpKSxcbiAgICAgICAgKTtcblxuICAgICAgY29uc3QgdmVyaWZ5UHJpb3JpdHkgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByaW9yaXRpZXMgPSBjbGF1c2VzLm1hcCgoYykgPT4gYy5nZXRQcmlvcml0eSgpKTtcbiAgICAgICAgY29uc3QgYWxsVW5pcXVlID0gbmV3IFNldChwcmlvcml0aWVzKS5zaXplID09PSBwcmlvcml0aWVzLmxlbmd0aDtcbiAgICAgICAgaWYgKCFhbGxVbmlxdWUpIHJldHVybiBcIk5vdCBhbGwgY2xhdXNlcyAgaGF2ZSB1bmlxdWUgcHJpb3JpdGllc1wiO1xuICAgICAgICBjb25zdCBzb3J0ZWQgPSBwcmlvcml0aWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gYiAtIGE7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpc0VxdWFsKHByaW9yaXRpZXMsIHNvcnRlZClcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6IFwiQ2xhdXNlcyAgYXJlIG5vdCBwcm9wZXJseSBzb3J0ZWRcIjtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHByaW9yaXR5Q2hlY2sgPSB2ZXJpZnlQcmlvcml0eSgpO1xuICAgICAgaWYgKHByaW9yaXR5Q2hlY2sgIT09IHRydWUpXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UoXG4gICAgICAgICAgc2YobWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UsIFwiSW52YWxpZCBwcmlvcml0aXphdGlvblwiKSxcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc2VxdWVuY2VDaGVjayA9IHRoaXMudmFsaWRhdGVTZXF1ZW5jZShjbGF1c2VzLCBtZXNzYWdlKTtcbiAgICAgIGlmIChzZXF1ZW5jZUNoZWNrKVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKHNmKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBcIkludmFsaWQgc2VxdWVuY2VcIikpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIHNmKFwiRmFpbGVkIHRvIHZlcmlmeSBjbGF1c2Ugc2VxdWVuY2UgezB9OiB7MX1cIiwgdmFsdWUsIGUpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Validator } from "@decaf-ts/decorator-validation";
2
+ /**
3
+ * @summary Validates a {@link Sequence}'s {@link Clause}s
4
+ *
5
+ * @param {string} [message]
6
+ *
7
+ * @class ClauseSequenceValidator
8
+ * @extends Validator
9
+ *
10
+ * @category Validation
11
+ * @subcategory Validators
12
+ */
13
+ export declare class ClauseSequenceValidator extends Validator {
14
+ constructor(message?: string);
15
+ private validateSequence;
16
+ /**
17
+ * @summary Verifies the model for errors
18
+ * @param {string} value
19
+ * @param {string} [message]
20
+ *
21
+ * @return Errors
22
+ *
23
+ * @override
24
+ *
25
+ * @see Validator
26
+ */
27
+ hasErrors(value: any, message?: string): string | undefined;
28
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clauseSequence = clauseSequence;
4
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
5
+ const persistence_1 = require("../persistence/index.cjs");
6
+ Object.defineProperty(decorator_validation_1.DEFAULT_ERROR_MESSAGES, persistence_1.PersistenceKeys.CLAUSE_SEQUENCE, {
7
+ value: "Invalid clause sequence: {0}",
8
+ });
9
+ Object.defineProperty(decorator_validation_1.ValidationKeys, "CLAUSE_SEQUENCE", {
10
+ value: persistence_1.PersistenceKeys.CLAUSE_SEQUENCE,
11
+ });
12
+ /**
13
+ *
14
+ * @param {string} [message]
15
+ *
16
+ * @function clauseSequence
17
+ *
18
+ * @category Decorators
19
+ * @subcategory Validation
20
+ */
21
+ function clauseSequence(message) {
22
+ return (0, decorator_validation_1.propMetadata)(decorator_validation_1.Validation.key(decorator_validation_1.ValidationKeys.REQUIRED), {
23
+ message: message ||
24
+ decorator_validation_1.DEFAULT_ERROR_MESSAGES[persistence_1.PersistenceKeys.CLAUSE_SEQUENCE],
25
+ });
26
+ }
27
+
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0b3JzL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEwQkEsd0NBV0M7QUFyQ0QseUVBTXdDO0FBQ3hDLGdEQUFpRDtBQUVqRCxNQUFNLENBQUMsY0FBYyxDQUFDLDZDQUFzQixFQUFFLDZCQUFlLENBQUMsZUFBZSxFQUFFO0lBQzdFLEtBQUssRUFBRSw4QkFBOEI7Q0FDdEMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQ0FBYyxFQUFFLGlCQUFpQixFQUFFO0lBQ3ZELEtBQUssRUFBRSw2QkFBZSxDQUFDLGVBQWU7Q0FDdkMsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZ0I7SUFDN0MsT0FBTyxJQUFBLG1DQUFZLEVBQ2pCLGlDQUFVLENBQUMsR0FBRyxDQUFDLHFDQUFjLENBQUMsUUFBUSxDQUFDLEVBQ3ZDO1FBQ0UsT0FBTyxFQUNMLE9BQU87WUFDTCw2Q0FBOEIsQ0FDOUIsNkJBQWUsQ0FBQyxlQUFzQixDQUM1QjtLQUNmLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJmaWxlIjoidmFsaWRhdG9ycy9kZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyxcbiAgcHJvcE1ldGFkYXRhLFxuICBWYWxpZGF0aW9uLFxuICBWYWxpZGF0aW9uS2V5cyxcbiAgVmFsaWRhdGlvbk1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERFRkFVTFRfRVJST1JfTUVTU0FHRVMsIFBlcnNpc3RlbmNlS2V5cy5DTEFVU0VfU0VRVUVOQ0UsIHtcbiAgdmFsdWU6IFwiSW52YWxpZCBjbGF1c2Ugc2VxdWVuY2U6IHswfVwiLFxufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWYWxpZGF0aW9uS2V5cywgXCJDTEFVU0VfU0VRVUVOQ0VcIiwge1xuICB2YWx1ZTogUGVyc2lzdGVuY2VLZXlzLkNMQVVTRV9TRVFVRU5DRSxcbn0pO1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdXG4gKlxuICogQGZ1bmN0aW9uIGNsYXVzZVNlcXVlbmNlXG4gKlxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqIEBzdWJjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGF1c2VTZXF1ZW5jZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gIHJldHVybiBwcm9wTWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5SRVFVSVJFRCksXG4gICAge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgbWVzc2FnZSB8fFxuICAgICAgICAoKERFRkFVTFRfRVJST1JfTUVTU0FHRVMgYXMgYW55KVtcbiAgICAgICAgICBQZXJzaXN0ZW5jZUtleXMuQ0xBVVNFX1NFUVVFTkNFIGFzIGFueVxuICAgICAgICBdIGFzIHN0cmluZyksXG4gICAgfVxuICApO1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ /**
2
+ *
3
+ * @param {string} [message]
4
+ *
5
+ * @function clauseSequence
6
+ *
7
+ * @category Decorators
8
+ * @subcategory Validation
9
+ */
10
+ export declare function clauseSequence(message?: string): PropertyDecorator;
@@ -0,0 +1,20 @@
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("./decorators.cjs"), exports);
18
+ __exportStar(require("./ClauseSequenceValidator.cjs"), exports);
19
+
20
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNEI7QUFDNUIsNERBQXlDIiwiZmlsZSI6InZhbGlkYXRvcnMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCJcbmV4cG9ydCAqIGZyb20gXCIuL0NsYXVzZVNlcXVlbmNlVmFsaWRhdG9yXCIiXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./decorators";
2
+ export * from "./ClauseSequenceValidator";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/core",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "template for ts projects",
5
5
  "type": "module",
6
6
  "exports": {
@@ -21,10 +21,10 @@
21
21
  "lint": "eslint .",
22
22
  "lint-fix": "eslint --fix ./src/*",
23
23
  "test:circular": "dpdm -T --no-warning --no-tree ./src/index.ts",
24
- "prepare-release": "npm run lint-fix && npm run build:prod && npm run test && npm run docs",
24
+ "prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
25
25
  "release": "./bin/tag-release.sh",
26
26
  "clean-publish": "npx clean-publish",
27
- "coverage": "npm run test:all && jest-coverage-badges --input \"./workdocs/coverage/coverage-summary.json\" --output \"./workdocs/badges\"",
27
+ "coverage": "npm run test:all && cd workdocs && jest-coverage-badges",
28
28
  "docs": "npx rimraf ./docs && mkdir docs && npm run do-install -- better-docs taffydb && gulp docs; npm remove better-docs taffydb"
29
29
  },
30
30
  "repository": {
@@ -65,36 +65,39 @@
65
65
  "homepage": "https://github.com/decaf-ts/ts-workspace#readme",
66
66
  "devDependencies": {
67
67
  "@decaf-ts/transactional-decorators": "latest",
68
+ "@eslint/js": "^9.13.0",
68
69
  "@types/jest": "^29.5.13",
69
- "@typescript-eslint/eslint-plugin": "^7.1.1",
70
+ "@typescript-eslint/eslint-plugin": "^8.10.0",
70
71
  "clean-publish": "^5.0.0",
71
72
  "dpdm": "^3.14.0",
72
- "eslint": "^8.57.0",
73
+ "eslint": "^9.13.0",
73
74
  "eslint-config-prettier": "^9.1.0",
74
- "eslint-plugin-prettier": "^5.1.3",
75
+ "eslint-plugin-prettier": "^5.2.1",
76
+ "globals": "^15.11.0",
75
77
  "gulp": "^5.0.0",
76
78
  "gulp-if": "^3.0.0",
77
79
  "gulp-rename": "^2.0.0",
78
80
  "gulp-replace": "^1.1.4",
79
81
  "gulp-run-command": "^0.0.10",
80
- "gulp-sourcemaps": "^3.0.0",
82
+ "gulp-sourcemaps": "^2.6.5",
81
83
  "gulp-typescript": "^6.0.0-alpha.1",
82
84
  "gulp-uglify": "^3.0.2",
83
85
  "jest": "^29.7.0",
84
- "jest-coverage-badges": "^1.1.2",
86
+ "jest-coverage-badges": "^1.0.0",
85
87
  "jest-junit": "^16.0.0",
86
- "jsdoc": "^4.0.3",
88
+ "jsdoc": "^4.0.4",
87
89
  "jsdoc-mermaid": "^1.0.0",
88
90
  "markdown-include": "^0.4.3",
89
91
  "merge-stream": "^2.0.0",
90
92
  "nodemon": "^3.1.7",
91
- "npm-check-updates": "^17.1.3",
93
+ "npm-check-updates": "^17.1.4",
92
94
  "prettier": "^3.3.3",
93
95
  "rimraf": "^6.0.1",
94
96
  "ts-jest": "^29.2.5",
95
97
  "ts-loader": "^9.5.1",
96
98
  "ts-node": "^10.9.2",
97
- "typescript": "^5.6.2",
99
+ "typescript": "^5.6.3",
100
+ "typescript-eslint": "^8.10.0",
98
101
  "vinyl-named": "^1.1.0",
99
102
  "webpack-stream": "^7.0.0"
100
103
  },