@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,20 @@
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.generateInjectableNameForRepository = generateInjectableNameForRepository;
4
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
5
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
6
+ const Adapter_1 = require("../persistence/Adapter.cjs");
7
+ const constants_1 = require("../persistence/constants.cjs");
8
+ const decorator_validation_2 = require("@decaf-ts/decorator-validation");
9
+ const Repository_1 = require("./Repository.cjs");
10
+ function generateInjectableNameForRepository(model, flavour) {
11
+ if (!flavour) {
12
+ const key = Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER);
13
+ flavour = Reflect.getMetadata(key, model instanceof decorator_validation_2.Model ? model.constructor : model);
14
+ if (!flavour)
15
+ throw new db_decorators_1.InternalError(`Could not retrieve flavour from model ${model instanceof decorator_validation_2.Model ? model.constructor.name : model.name}`);
16
+ }
17
+ return (0, decorator_validation_1.sf)(constants_1.PersistenceKeys.INJECTABLE, flavour, Repository_1.Repository.table(model));
18
+ }
19
+
20
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esa0ZBZ0JDO0FBdkJELDJEQUF3RDtBQUN4RCx5RUFBaUU7QUFDakUsb0RBQWlEO0FBQ2pELHdEQUEyRDtBQUMzRCx5RUFBdUQ7QUFDdkQsNkNBQTBDO0FBRTFDLFNBQWdCLG1DQUFtQyxDQUNqRCxLQUF5QixFQUN6QixPQUFnQjtJQUVoQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLEdBQUcsR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUMzQixHQUFHLEVBQ0gsS0FBSyxZQUFZLDRCQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDbkQsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPO1lBQ1YsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLHlDQUF5QyxLQUFLLFlBQVksNEJBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FDeEcsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPLElBQUEseUJBQUUsRUFBQywyQkFBZSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsdUJBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDIiwiZmlsZSI6InJlcG9zaXRvcnkvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3Rvciwgc2YgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL0FkYXB0ZXJcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuL1JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSW5qZWN0YWJsZU5hbWVGb3JSZXBvc2l0b3J5PFQgZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBDb25zdHJ1Y3RvcjxUPiB8IFQsXG4gIGZsYXZvdXI/OiBzdHJpbmdcbikge1xuICBpZiAoIWZsYXZvdXIpIHtcbiAgICBjb25zdCBrZXkgPSBBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUik7XG4gICAgZmxhdm91ciA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICBrZXksXG4gICAgICBtb2RlbCBpbnN0YW5jZW9mIE1vZGVsID8gbW9kZWwuY29uc3RydWN0b3IgOiBtb2RlbFxuICAgICk7XG4gICAgaWYgKCFmbGF2b3VyKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgcmV0cmlldmUgZmxhdm91ciBmcm9tIG1vZGVsICR7bW9kZWwgaW5zdGFuY2VvZiBNb2RlbCA/IG1vZGVsLmNvbnN0cnVjdG9yLm5hbWUgOiBtb2RlbC5uYW1lfWBcbiAgICAgICk7XG4gIH1cbiAgcmV0dXJuIHNmKFBlcnNpc3RlbmNlS2V5cy5JTkpFQ1RBQkxFLCBmbGF2b3VyLCBSZXBvc2l0b3J5LnRhYmxlKG1vZGVsKSk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { Constructor } from "@decaf-ts/decorator-validation";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ export declare function generateInjectableNameForRepository<T extends Model>(model: Constructor<T> | T, flavour?: string): string;
@@ -0,0 +1,99 @@
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 constants_1 = require("../query/constants.cjs");
17
+ const errors_1 = require("../query/errors.cjs");
18
+ const constants_2 = require("../persistence/constants.cjs");
19
+ /**
20
+ * @summary Validates a {@link Sequence}'s {@link Clause}s
21
+ *
22
+ * @param {string} [message]
23
+ *
24
+ * @class ClauseSequenceValidator
25
+ * @extends Validator
26
+ *
27
+ * @category Validation
28
+ * @subcategory Validators
29
+ */
30
+ let ClauseSequenceValidator = class ClauseSequenceValidator extends decorator_validation_1.Validator {
31
+ constructor(message = decorator_validation_1.DEFAULT_ERROR_MESSAGES[constants_2.PersistenceKeys.CLAUSE_SEQUENCE]) {
32
+ super(message);
33
+ }
34
+ validateSequence(clauses, message) {
35
+ return constants_1.MandatoryPriorities.every((p) => !!clauses.find((c) => c.getPriority() === p))
36
+ ? undefined
37
+ : this.getMessage((0, decorator_validation_1.sf)(message || this.message, "Missing required Clause Priorities"));
38
+ }
39
+ /**
40
+ * @summary Verifies the model for errors
41
+ * @param {string} value
42
+ * @param {string} [message]
43
+ *
44
+ * @return Errors
45
+ *
46
+ * @override
47
+ *
48
+ * @see Validator
49
+ */
50
+ hasErrors(value, message) {
51
+ try {
52
+ if (!value ||
53
+ !Array.isArray(value) ||
54
+ !value.length ||
55
+ !value.every((e) => e instanceof Clause_1.Clause))
56
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, "No or invalid Clauses found"));
57
+ const clauses = value;
58
+ const clauseErrors = clauses.reduce((accum, c) => {
59
+ const errs = c.hasErrors();
60
+ if (errs)
61
+ if (accum)
62
+ accum += (0, decorator_validation_1.sf)("\nClause {0}: {1}", c.constructor.name, errs.toString());
63
+ else
64
+ accum = (0, decorator_validation_1.sf)("Clause {0}: {1}", c.constructor.name, errs.toString());
65
+ return accum;
66
+ }, undefined);
67
+ if (clauseErrors)
68
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, clauseErrors.toString()));
69
+ const verifyPriority = () => {
70
+ const priorities = clauses.map((c) => c.getPriority());
71
+ const allUnique = new Set(priorities).size === priorities.length;
72
+ if (!allUnique)
73
+ return "Not all clauses have unique priorities";
74
+ const sorted = priorities.sort((a, b) => {
75
+ return b - a;
76
+ });
77
+ return (0, reflection_1.isEqual)(priorities, sorted)
78
+ ? true
79
+ : "Clauses are not properly sorted";
80
+ };
81
+ const priorityCheck = verifyPriority();
82
+ if (priorityCheck !== true)
83
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, "Invalid prioritization"));
84
+ const sequenceCheck = this.validateSequence(clauses, message);
85
+ if (sequenceCheck)
86
+ return this.getMessage((0, decorator_validation_1.sf)(message || this.message, "Invalid sequence"));
87
+ }
88
+ catch (e) {
89
+ throw new errors_1.QueryError((0, decorator_validation_1.sf)("Failed to verify clause sequence {0}: {1}", value, e));
90
+ }
91
+ }
92
+ };
93
+ exports.ClauseSequenceValidator = ClauseSequenceValidator;
94
+ exports.ClauseSequenceValidator = ClauseSequenceValidator = __decorate([
95
+ (0, decorator_validation_1.validator)(constants_2.PersistenceKeys.CLAUSE_SEQUENCE),
96
+ __metadata("design:paramtypes", [String])
97
+ ], ClauseSequenceValidator);
98
+
99
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0b3JzL0NsYXVzZVNlcXVlbmNlVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlFQUt3QztBQUN4QyxxREFBK0M7QUFDL0MsNENBQXlDO0FBQ3pDLGtEQUF5RDtBQUN6RCw0Q0FBNkM7QUFDN0Msd0RBQTJEO0FBRTNEOzs7Ozs7Ozs7O0dBVUc7QUFFSSxJQUFNLHVCQUF1QixHQUE3QixNQUFNLHVCQUF3QixTQUFRLGdDQUFTO0lBQ3BELFlBQ0UsVUFBa0IsNkNBQXNCLENBQUMsMkJBQWUsQ0FBQyxlQUFlLENBQUM7UUFFekUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsT0FBc0IsRUFDdEIsT0FBZ0I7UUFFaEIsT0FBTywrQkFBbUIsQ0FBQyxLQUFLLENBQzlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNwRDtZQUNDLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQ2IsSUFBQSx5QkFBRSxFQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLG9DQUFvQyxDQUFDLENBQ2xFLENBQUM7SUFDUixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFNBQVMsQ0FBQyxLQUFVLEVBQUUsT0FBZ0I7UUFDM0MsSUFBSSxDQUFDO1lBQ0gsSUFDRSxDQUFDLEtBQUs7Z0JBQ04sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxLQUFLLENBQUMsTUFBTTtnQkFDYixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxlQUFNLENBQUM7Z0JBRXhD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LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyxcbiAgc2YsXG4gIHZhbGlkYXRvcixcbiAgVmFsaWRhdG9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDbGF1c2UgfSBmcm9tIFwiLi4vcXVlcnkvQ2xhdXNlXCI7XG5pbXBvcnQgeyBNYW5kYXRvcnlQcmlvcml0aWVzIH0gZnJvbSBcIi4uL3F1ZXJ5L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuLi9xdWVyeS9lcnJvcnNcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSB7QGxpbmsgU2VxdWVuY2V9J3Mge0BsaW5rIENsYXVzZX1zXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXVxuICpcbiAqIEBjbGFzcyBDbGF1c2VTZXF1ZW5jZVZhbGlkYXRvclxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqIEBzdWJjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoUGVyc2lzdGVuY2VLZXlzLkNMQVVTRV9TRVFVRU5DRSlcbmV4cG9ydCBjbGFzcyBDbGF1c2VTZXF1ZW5jZVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVNbUGVyc2lzdGVuY2VLZXlzLkNMQVVTRV9TRVFVRU5DRV1cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlU2VxdWVuY2UoXG4gICAgY2xhdXNlczogQ2xhdXNlPGFueT5bXSxcbiAgICBtZXNzYWdlPzogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIE1hbmRhdG9yeVByaW9yaXRpZXMuZXZlcnkoXG4gICAgICAocCkgPT4gISFjbGF1c2VzLmZpbmQoKGMpID0+IGMuZ2V0UHJpb3JpdHkoKSA9PT0gcClcbiAgICApXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiB0aGlzLmdldE1lc3NhZ2UoXG4gICAgICAgICAgc2YobWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UsIFwiTWlzc2luZyByZXF1aXJlZCBDbGF1c2UgUHJpb3JpdGllc1wiKVxuICAgICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZlcmlmaWVzIHRoZSBtb2RlbCBmb3IgZXJyb3JzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdXG4gICAqXG4gICAqIEByZXR1cm4gRXJyb3JzXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvclxuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyh2YWx1ZTogYW55LCBtZXNzYWdlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICAhdmFsdWUgfHxcbiAgICAgICAgIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8XG4gICAgICAgICF2YWx1ZS5sZW5ndGggfHxcbiAgICAgICAgIXZhbHVlLmV2ZXJ5KChlKSA9PiBlIGluc3RhbmNlb2YgQ2xhdXNlKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICAgIHNmKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBcIk5vIG9yIGludmFsaWQgQ2xhdXNlcyBmb3VuZFwiKVxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBjbGF1c2VzOiBDbGF1c2U8YW55PltdID0gdmFsdWUgYXMgQ2xhdXNlPGFueT5bXTtcblxuICAgICAgY29uc3QgY2xhdXNlRXJyb3JzID0gY2xhdXNlcy5yZWR1Y2UoXG4gICAgICAgIChhY2N1bTogc3RyaW5nIHwgdW5kZWZpbmVkLCBjOiBDbGF1c2U8YW55PikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVycnMgPSBjLmhhc0Vycm9ycygpO1xuICAgICAgICAgIGlmIChlcnJzKVxuICAgICAgICAgICAgaWYgKGFjY3VtKVxuICAgICAgICAgICAgICBhY2N1bSArPSBzZihcbiAgICAgICAgICAgICAgICBcIlxcbkNsYXVzZSB7MH06IHsxfVwiLFxuICAgICAgICAgICAgICAgIGMuY29uc3RydWN0b3IubmFtZSxcbiAgICAgICAgICAgICAgICBlcnJzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWNjdW0gPSBzZihcbiAgICAgICAgICAgICAgICBcIkNsYXVzZSB7MH06IHsxfVwiLFxuICAgICAgICAgICAgICAgIGMuY29uc3RydWN0b3IubmFtZSxcbiAgICAgICAgICAgICAgICBlcnJzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVmaW5lZFxuICAgICAgKTtcblxuICAgICAgaWYgKGNsYXVzZUVycm9ycylcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVzc2FnZShcbiAgICAgICAgICBzZihtZXNzYWdlIHx8IHRoaXMubWVzc2FnZSwgY2xhdXNlRXJyb3JzLnRvU3RyaW5nKCkpXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IHZlcmlmeVByaW9yaXR5ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBwcmlvcml0aWVzID0gY2xhdXNlcy5tYXAoKGMpID0+IGMuZ2V0UHJpb3JpdHkoKSk7XG4gICAgICAgIGNvbnN0IGFsbFVuaXF1ZSA9IG5ldyBTZXQocHJpb3JpdGllcykuc2l6ZSA9PT0gcHJpb3JpdGllcy5sZW5ndGg7XG4gICAgICAgIGlmICghYWxsVW5pcXVlKSByZXR1cm4gXCJOb3QgYWxsIGNsYXVzZXMgIGhhdmUgdW5pcXVlIHByaW9yaXRpZXNcIjtcbiAgICAgICAgY29uc3Qgc29ydGVkID0gcHJpb3JpdGllcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGIgLSBhO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXNFcXVhbChwcmlvcml0aWVzLCBzb3J0ZWQpXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBcIkNsYXVzZXMgIGFyZSBub3QgcHJvcGVybHkgc29ydGVkXCI7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBwcmlvcml0eUNoZWNrID0gdmVyaWZ5UHJpb3JpdHkoKTtcbiAgICAgIGlmIChwcmlvcml0eUNoZWNrICE9PSB0cnVlKVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICAgIHNmKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBcIkludmFsaWQgcHJpb3JpdGl6YXRpb25cIilcbiAgICAgICAgKTtcblxuICAgICAgY29uc3Qgc2VxdWVuY2VDaGVjayA9IHRoaXMudmFsaWRhdGVTZXF1ZW5jZShjbGF1c2VzLCBtZXNzYWdlKTtcbiAgICAgIGlmIChzZXF1ZW5jZUNoZWNrKVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKHNmKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBcIkludmFsaWQgc2VxdWVuY2VcIikpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIHNmKFwiRmFpbGVkIHRvIHZlcmlmeSBjbGF1c2Ugc2VxdWVuY2UgezB9OiB7MX1cIiwgdmFsdWUsIGUpXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -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.1",
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
  },
@@ -1,3 +0,0 @@
1
- import { DBModel } from "@decaf-ts/db-decorators";
2
- export declare function genAdapterInjectableKey(flavour: string): string;
3
- export declare function getColumnName<T extends DBModel>(model: T, attribute: string): any;
@@ -1 +0,0 @@
1
- import{sf}from"@decaf-ts/decorator-validation";import{PersistenceKeys}from"./constants";import{getPersistenceKey}from"./decorators";function genAdapterInjectableKey(e){return sf(PersistenceKeys.INJECTABLE,e)}function getColumnName(e,t){e=Reflect.getMetadata(getPersistenceKey(PersistenceKeys.COLUMN),e,t);return e||t}export{genAdapterInjectableKey,getColumnName};
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.genAdapterInjectableKey=genAdapterInjectableKey,exports.getColumnName=getColumnName;let decorator_validation_1=require("@decaf-ts/decorator-validation"),constants_1=require("./constants.cjs"),decorators_1=require("./decorators.cjs");function genAdapterInjectableKey(e){return(0,decorator_validation_1.sf)(constants_1.PersistenceKeys.INJECTABLE,e)}function getColumnName(e,t){e=Reflect.getMetadata((0,decorators_1.getPersistenceKey)(constants_1.PersistenceKeys.COLUMN),e,t);return e||t}
@@ -1,3 +0,0 @@
1
- import { DBModel } from "@decaf-ts/db-decorators";
2
- export declare function genAdapterInjectableKey(flavour: string): string;
3
- export declare function getColumnName<T extends DBModel>(model: T, attribute: string): any;