@decaf-ts/core 0.3.31 → 0.3.33

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 (312) hide show
  1. package/LICENSE.md +157 -21
  2. package/README.md +0 -0
  3. package/dist/core.bundle.min.js +1 -1
  4. package/dist/core.bundle.min.js.LICENSE.txt +0 -0
  5. package/dist/esm/core.bundle.min.esm.js +1 -1
  6. package/dist/esm/core.bundle.min.esm.js.LICENSE.txt +0 -0
  7. package/dist/lib/identity/decorators.d.ts +24 -0
  8. package/dist/lib/identity/index.d.ts +2 -0
  9. package/dist/lib/identity/utils.d.ts +3 -0
  10. package/dist/lib/index.d.ts +25 -0
  11. package/dist/lib/interfaces/Builder.d.ts +16 -0
  12. package/dist/lib/interfaces/Executor.d.ts +19 -0
  13. package/dist/lib/interfaces/Observable.d.ts +31 -0
  14. package/dist/lib/interfaces/Observer.d.ts +16 -0
  15. package/dist/lib/interfaces/Paginatable.d.ts +4 -0
  16. package/dist/lib/interfaces/Queriable.d.ts +6 -0
  17. package/dist/lib/interfaces/RawExecutor.d.ts +20 -0
  18. package/dist/lib/interfaces/SequenceOptions.d.ts +19 -0
  19. package/dist/lib/interfaces/index.d.ts +7 -0
  20. package/dist/lib/model/BaseModel.d.ts +6 -0
  21. package/dist/lib/model/IdentifiedBaseModel.d.ts +7 -0
  22. package/dist/lib/model/User.d.ts +8 -0
  23. package/dist/lib/model/construction.d.ts +15 -0
  24. package/dist/lib/model/decorators.d.ts +75 -0
  25. package/dist/lib/model/index.d.ts +4 -0
  26. package/dist/lib/model/types.d.ts +6 -0
  27. package/dist/lib/persistence/Adapter.d.ts +86 -0
  28. package/dist/lib/persistence/Sequence.d.ts +22 -0
  29. package/dist/lib/persistence/constants.d.ts +22 -0
  30. package/dist/lib/persistence/decorators.d.ts +1 -0
  31. package/dist/lib/persistence/errors.d.ts +7 -0
  32. package/dist/lib/persistence/index.d.ts +5 -0
  33. package/dist/lib/query/Clause.d.ts +50 -0
  34. package/dist/lib/query/ClauseFactory.d.ts +71 -0
  35. package/dist/lib/query/Condition.d.ts +75 -0
  36. package/dist/lib/query/Paginator.d.ts +22 -0
  37. package/dist/lib/query/Query.d.ts +43 -0
  38. package/dist/lib/query/Statement.d.ts +55 -0
  39. package/dist/lib/query/clauses/FromClause.d.ts +45 -0
  40. package/dist/lib/query/clauses/GroupByClause.d.ts +21 -0
  41. package/dist/lib/query/clauses/InsertClause.d.ts +37 -0
  42. package/dist/lib/query/clauses/LimitClause.d.ts +29 -0
  43. package/dist/lib/query/clauses/OffsetClause.d.ts +21 -0
  44. package/dist/lib/query/clauses/OrderByClause.d.ts +37 -0
  45. package/dist/lib/query/clauses/SelectClause.d.ts +47 -0
  46. package/dist/lib/query/clauses/SelectorBasedClause.d.ts +25 -0
  47. package/dist/lib/query/clauses/ValuesClause.d.ts +21 -0
  48. package/dist/lib/query/clauses/WhereClause.d.ts +46 -0
  49. package/dist/lib/query/clauses/index.d.ts +10 -0
  50. package/dist/lib/query/constants.d.ts +79 -0
  51. package/dist/lib/query/errors.d.ts +7 -0
  52. package/dist/lib/query/index.d.ts +12 -0
  53. package/dist/lib/query/options.d.ts +372 -0
  54. package/dist/lib/query/selectors.d.ts +38 -0
  55. package/dist/lib/query/types.d.ts +2 -0
  56. package/dist/lib/repository/Context.d.ts +10 -0
  57. package/dist/lib/repository/Repository.d.ts +70 -0
  58. package/dist/lib/repository/constants.d.ts +25 -0
  59. package/dist/lib/repository/decorators.d.ts +2 -0
  60. package/dist/lib/repository/errors.d.ts +12 -0
  61. package/dist/lib/repository/index.d.ts +8 -0
  62. package/dist/lib/repository/injectables.d.ts +5 -0
  63. package/dist/lib/repository/types.d.ts +15 -0
  64. package/dist/lib/repository/utils.d.ts +3 -0
  65. package/dist/lib/validators/ClauseSequenceValidator.d.ts +28 -0
  66. package/dist/lib/validators/decorators.d.ts +10 -0
  67. package/dist/lib/validators/index.d.ts +2 -0
  68. package/lib/esm/identity/decorators.d.ts +0 -0
  69. package/lib/esm/identity/decorators.js +1 -1
  70. package/lib/esm/identity/index.d.ts +0 -0
  71. package/lib/esm/identity/index.js +1 -1
  72. package/lib/esm/identity/utils.d.ts +0 -0
  73. package/lib/esm/identity/utils.js +1 -1
  74. package/lib/esm/index.d.ts +1 -1
  75. package/lib/esm/index.js +2 -2
  76. package/lib/esm/interfaces/Builder.d.ts +0 -0
  77. package/lib/esm/interfaces/Builder.js +1 -1
  78. package/lib/esm/interfaces/Executor.d.ts +0 -0
  79. package/lib/esm/interfaces/Executor.js +1 -1
  80. package/lib/esm/interfaces/Observable.d.ts +0 -0
  81. package/lib/esm/interfaces/Observable.js +1 -1
  82. package/lib/esm/interfaces/Observer.d.ts +0 -0
  83. package/lib/esm/interfaces/Observer.js +1 -1
  84. package/lib/esm/interfaces/Paginatable.d.ts +0 -0
  85. package/lib/esm/interfaces/Paginatable.js +1 -1
  86. package/lib/esm/interfaces/Queriable.d.ts +0 -0
  87. package/lib/esm/interfaces/Queriable.js +1 -1
  88. package/lib/esm/interfaces/RawExecutor.d.ts +0 -0
  89. package/lib/esm/interfaces/RawExecutor.js +1 -1
  90. package/lib/esm/interfaces/SequenceOptions.d.ts +0 -0
  91. package/lib/esm/interfaces/SequenceOptions.js +1 -1
  92. package/lib/esm/interfaces/index.d.ts +0 -0
  93. package/lib/esm/interfaces/index.js +1 -1
  94. package/lib/esm/model/BaseModel.d.ts +0 -0
  95. package/lib/esm/model/BaseModel.js +1 -1
  96. package/lib/esm/model/IdentifiedBaseModel.d.ts +0 -0
  97. package/lib/esm/model/IdentifiedBaseModel.js +1 -1
  98. package/lib/esm/model/User.d.ts +0 -0
  99. package/lib/esm/model/User.js +1 -1
  100. package/lib/esm/model/construction.d.ts +0 -0
  101. package/lib/esm/model/construction.js +1 -1
  102. package/lib/esm/model/decorators.d.ts +0 -0
  103. package/lib/esm/model/decorators.js +1 -1
  104. package/lib/esm/model/index.d.ts +0 -0
  105. package/lib/esm/model/index.js +1 -1
  106. package/lib/esm/model/types.d.ts +0 -0
  107. package/lib/esm/model/types.js +1 -1
  108. package/lib/esm/persistence/Adapter.d.ts +0 -0
  109. package/lib/esm/persistence/Adapter.js +1 -1
  110. package/lib/esm/persistence/Sequence.d.ts +0 -0
  111. package/lib/esm/persistence/Sequence.js +1 -1
  112. package/lib/esm/persistence/constants.d.ts +0 -0
  113. package/lib/esm/persistence/constants.js +1 -1
  114. package/lib/esm/persistence/decorators.d.ts +0 -0
  115. package/lib/esm/persistence/decorators.js +1 -1
  116. package/lib/esm/persistence/errors.d.ts +0 -0
  117. package/lib/esm/persistence/errors.js +1 -1
  118. package/lib/esm/persistence/index.d.ts +0 -0
  119. package/lib/esm/persistence/index.js +1 -1
  120. package/lib/esm/query/Clause.d.ts +0 -0
  121. package/lib/esm/query/Clause.js +1 -1
  122. package/lib/esm/query/ClauseFactory.d.ts +0 -0
  123. package/lib/esm/query/ClauseFactory.js +1 -1
  124. package/lib/esm/query/Condition.d.ts +0 -0
  125. package/lib/esm/query/Condition.js +1 -1
  126. package/lib/esm/query/Paginator.d.ts +0 -0
  127. package/lib/esm/query/Paginator.js +1 -1
  128. package/lib/esm/query/Query.d.ts +0 -0
  129. package/lib/esm/query/Query.js +1 -1
  130. package/lib/esm/query/Statement.d.ts +0 -0
  131. package/lib/esm/query/Statement.js +1 -1
  132. package/lib/esm/query/clauses/FromClause.d.ts +0 -0
  133. package/lib/esm/query/clauses/FromClause.js +1 -1
  134. package/lib/esm/query/clauses/GroupByClause.d.ts +0 -0
  135. package/lib/esm/query/clauses/GroupByClause.js +1 -1
  136. package/lib/esm/query/clauses/InsertClause.d.ts +0 -0
  137. package/lib/esm/query/clauses/InsertClause.js +1 -1
  138. package/lib/esm/query/clauses/LimitClause.d.ts +0 -0
  139. package/lib/esm/query/clauses/LimitClause.js +1 -1
  140. package/lib/esm/query/clauses/OffsetClause.d.ts +0 -0
  141. package/lib/esm/query/clauses/OffsetClause.js +1 -1
  142. package/lib/esm/query/clauses/OrderByClause.d.ts +0 -0
  143. package/lib/esm/query/clauses/OrderByClause.js +1 -1
  144. package/lib/esm/query/clauses/SelectClause.d.ts +0 -0
  145. package/lib/esm/query/clauses/SelectClause.js +1 -1
  146. package/lib/esm/query/clauses/SelectorBasedClause.d.ts +0 -0
  147. package/lib/esm/query/clauses/SelectorBasedClause.js +1 -1
  148. package/lib/esm/query/clauses/ValuesClause.d.ts +0 -0
  149. package/lib/esm/query/clauses/ValuesClause.js +1 -1
  150. package/lib/esm/query/clauses/WhereClause.d.ts +0 -0
  151. package/lib/esm/query/clauses/index.d.ts +0 -0
  152. package/lib/esm/query/constants.d.ts +0 -0
  153. package/lib/esm/query/constants.js +1 -1
  154. package/lib/esm/query/errors.d.ts +0 -0
  155. package/lib/esm/query/errors.js +1 -1
  156. package/lib/esm/query/index.d.ts +0 -0
  157. package/lib/esm/query/index.js +1 -1
  158. package/lib/esm/query/options.d.ts +0 -0
  159. package/lib/esm/query/options.js +1 -1
  160. package/lib/esm/query/selectors.d.ts +0 -0
  161. package/lib/esm/query/selectors.js +1 -1
  162. package/lib/esm/query/types.d.ts +0 -0
  163. package/lib/esm/query/types.js +1 -1
  164. package/lib/esm/repository/Context.d.ts +0 -0
  165. package/lib/esm/repository/Context.js +1 -1
  166. package/lib/esm/repository/Repository.d.ts +0 -0
  167. package/lib/esm/repository/Repository.js +1 -1
  168. package/lib/esm/repository/constants.d.ts +0 -0
  169. package/lib/esm/repository/constants.js +1 -1
  170. package/lib/esm/repository/decorators.d.ts +0 -0
  171. package/lib/esm/repository/decorators.js +1 -1
  172. package/lib/esm/repository/errors.d.ts +0 -0
  173. package/lib/esm/repository/errors.js +1 -1
  174. package/lib/esm/repository/index.d.ts +0 -0
  175. package/lib/esm/repository/index.js +1 -1
  176. package/lib/esm/repository/injectables.d.ts +0 -0
  177. package/lib/esm/repository/injectables.js +1 -1
  178. package/lib/esm/repository/types.d.ts +0 -0
  179. package/lib/esm/repository/types.js +1 -1
  180. package/lib/esm/repository/utils.d.ts +0 -0
  181. package/lib/esm/repository/utils.js +1 -1
  182. package/lib/esm/validators/ClauseSequenceValidator.d.ts +0 -0
  183. package/lib/esm/validators/ClauseSequenceValidator.js +1 -1
  184. package/lib/esm/validators/decorators.d.ts +0 -0
  185. package/lib/esm/validators/decorators.js +1 -1
  186. package/lib/esm/validators/index.d.ts +0 -0
  187. package/lib/esm/validators/index.js +1 -1
  188. package/lib/identity/decorators.cjs +0 -2
  189. package/lib/identity/decorators.d.ts +0 -0
  190. package/lib/identity/index.cjs +0 -2
  191. package/lib/identity/index.d.ts +0 -0
  192. package/lib/identity/utils.cjs +0 -2
  193. package/lib/identity/utils.d.ts +0 -0
  194. package/lib/index.cjs +1 -3
  195. package/lib/index.d.ts +1 -1
  196. package/lib/interfaces/Builder.cjs +0 -2
  197. package/lib/interfaces/Builder.d.ts +0 -0
  198. package/lib/interfaces/Executor.cjs +0 -2
  199. package/lib/interfaces/Executor.d.ts +0 -0
  200. package/lib/interfaces/Observable.cjs +0 -2
  201. package/lib/interfaces/Observable.d.ts +0 -0
  202. package/lib/interfaces/Observer.cjs +0 -2
  203. package/lib/interfaces/Observer.d.ts +0 -0
  204. package/lib/interfaces/Paginatable.cjs +0 -2
  205. package/lib/interfaces/Paginatable.d.ts +0 -0
  206. package/lib/interfaces/Queriable.cjs +0 -2
  207. package/lib/interfaces/Queriable.d.ts +0 -0
  208. package/lib/interfaces/RawExecutor.cjs +0 -2
  209. package/lib/interfaces/RawExecutor.d.ts +0 -0
  210. package/lib/interfaces/SequenceOptions.cjs +0 -2
  211. package/lib/interfaces/SequenceOptions.d.ts +0 -0
  212. package/lib/interfaces/index.cjs +0 -2
  213. package/lib/interfaces/index.d.ts +0 -0
  214. package/lib/model/BaseModel.cjs +0 -2
  215. package/lib/model/BaseModel.d.ts +0 -0
  216. package/lib/model/IdentifiedBaseModel.cjs +0 -2
  217. package/lib/model/IdentifiedBaseModel.d.ts +0 -0
  218. package/lib/model/User.cjs +0 -2
  219. package/lib/model/User.d.ts +0 -0
  220. package/lib/model/construction.cjs +0 -2
  221. package/lib/model/construction.d.ts +0 -0
  222. package/lib/model/decorators.cjs +0 -2
  223. package/lib/model/decorators.d.ts +0 -0
  224. package/lib/model/index.cjs +0 -2
  225. package/lib/model/index.d.ts +0 -0
  226. package/lib/model/types.cjs +0 -2
  227. package/lib/model/types.d.ts +0 -0
  228. package/lib/persistence/Adapter.cjs +0 -2
  229. package/lib/persistence/Adapter.d.ts +0 -0
  230. package/lib/persistence/Sequence.cjs +0 -2
  231. package/lib/persistence/Sequence.d.ts +0 -0
  232. package/lib/persistence/constants.cjs +0 -2
  233. package/lib/persistence/constants.d.ts +0 -0
  234. package/lib/persistence/decorators.cjs +0 -2
  235. package/lib/persistence/decorators.d.ts +0 -0
  236. package/lib/persistence/errors.cjs +0 -2
  237. package/lib/persistence/errors.d.ts +0 -0
  238. package/lib/persistence/index.cjs +0 -2
  239. package/lib/persistence/index.d.ts +0 -0
  240. package/lib/query/Clause.cjs +0 -2
  241. package/lib/query/Clause.d.ts +0 -0
  242. package/lib/query/ClauseFactory.cjs +0 -2
  243. package/lib/query/ClauseFactory.d.ts +0 -0
  244. package/lib/query/Condition.cjs +0 -2
  245. package/lib/query/Condition.d.ts +0 -0
  246. package/lib/query/Paginator.cjs +0 -2
  247. package/lib/query/Paginator.d.ts +0 -0
  248. package/lib/query/Query.cjs +0 -2
  249. package/lib/query/Query.d.ts +0 -0
  250. package/lib/query/Statement.cjs +0 -2
  251. package/lib/query/Statement.d.ts +0 -0
  252. package/lib/query/clauses/FromClause.cjs +0 -2
  253. package/lib/query/clauses/FromClause.d.ts +0 -0
  254. package/lib/query/clauses/GroupByClause.cjs +0 -2
  255. package/lib/query/clauses/GroupByClause.d.ts +0 -0
  256. package/lib/query/clauses/InsertClause.cjs +0 -2
  257. package/lib/query/clauses/InsertClause.d.ts +0 -0
  258. package/lib/query/clauses/LimitClause.cjs +0 -2
  259. package/lib/query/clauses/LimitClause.d.ts +0 -0
  260. package/lib/query/clauses/OffsetClause.cjs +0 -2
  261. package/lib/query/clauses/OffsetClause.d.ts +0 -0
  262. package/lib/query/clauses/OrderByClause.cjs +0 -2
  263. package/lib/query/clauses/OrderByClause.d.ts +0 -0
  264. package/lib/query/clauses/SelectClause.cjs +0 -2
  265. package/lib/query/clauses/SelectClause.d.ts +0 -0
  266. package/lib/query/clauses/SelectorBasedClause.cjs +0 -2
  267. package/lib/query/clauses/SelectorBasedClause.d.ts +0 -0
  268. package/lib/query/clauses/ValuesClause.cjs +0 -2
  269. package/lib/query/clauses/ValuesClause.d.ts +0 -0
  270. package/lib/query/clauses/WhereClause.cjs +0 -2
  271. package/lib/query/clauses/WhereClause.d.ts +0 -0
  272. package/lib/query/clauses/index.cjs +0 -2
  273. package/lib/query/clauses/index.d.ts +0 -0
  274. package/lib/query/constants.cjs +0 -2
  275. package/lib/query/constants.d.ts +0 -0
  276. package/lib/query/errors.cjs +0 -2
  277. package/lib/query/errors.d.ts +0 -0
  278. package/lib/query/index.cjs +0 -2
  279. package/lib/query/index.d.ts +0 -0
  280. package/lib/query/options.cjs +0 -2
  281. package/lib/query/options.d.ts +0 -0
  282. package/lib/query/selectors.cjs +0 -2
  283. package/lib/query/selectors.d.ts +0 -0
  284. package/lib/query/types.cjs +0 -2
  285. package/lib/query/types.d.ts +0 -0
  286. package/lib/repository/Context.cjs +0 -2
  287. package/lib/repository/Context.d.ts +0 -0
  288. package/lib/repository/Repository.cjs +0 -2
  289. package/lib/repository/Repository.d.ts +0 -0
  290. package/lib/repository/constants.cjs +0 -2
  291. package/lib/repository/constants.d.ts +0 -0
  292. package/lib/repository/decorators.cjs +0 -2
  293. package/lib/repository/decorators.d.ts +0 -0
  294. package/lib/repository/errors.cjs +0 -2
  295. package/lib/repository/errors.d.ts +0 -0
  296. package/lib/repository/index.cjs +0 -2
  297. package/lib/repository/index.d.ts +0 -0
  298. package/lib/repository/injectables.cjs +0 -2
  299. package/lib/repository/injectables.d.ts +0 -0
  300. package/lib/repository/types.cjs +0 -2
  301. package/lib/repository/types.d.ts +0 -0
  302. package/lib/repository/utils.cjs +0 -2
  303. package/lib/repository/utils.d.ts +0 -0
  304. package/lib/validators/ClauseSequenceValidator.cjs +0 -2
  305. package/lib/validators/ClauseSequenceValidator.d.ts +0 -0
  306. package/lib/validators/decorators.cjs +0 -2
  307. package/lib/validators/decorators.d.ts +0 -0
  308. package/lib/validators/index.cjs +0 -2
  309. package/lib/validators/index.d.ts +0 -0
  310. package/package.json +17 -17
  311. package/lib/esm/query/clauses/WhereClause.js +0 -72
  312. package/lib/esm/query/clauses/index.js +0 -12
File without changes
@@ -0,0 +1,24 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { SequenceOptions } from "../interfaces/SequenceOptions";
3
+ import { Repo } from "../repository/Repository";
4
+ import { Context } from "@decaf-ts/db-decorators/lib/repository/Context";
5
+ /**
6
+ * @summary Primary Key Decorator
7
+ * @description Marks the property as the {@link Model}s primary key.
8
+ * Also marks the property as {@link unique} as {@required} and ensures the index is created properly according to the provided {@link Sequence}
9
+ *
10
+ *
11
+ *
12
+ * @function pk
13
+ *
14
+ * @memberOf module:wallet-db.Decorators
15
+ *
16
+ * @see unique
17
+ * @see required
18
+ * @see on
19
+ * @param data
20
+ * @param key
21
+ * @param model
22
+ */
23
+ export declare function pkOnCreate<M extends Model, V extends Repo<M>>(this: V, context: Context<M>, data: SequenceOptions, key: string, model: M): Promise<void>;
24
+ export declare function pk(opts?: Omit<SequenceOptions, "cycle" | "startWith" | "incrementBy">): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
@@ -0,0 +1,2 @@
1
+ export * from "./decorators";
2
+ export * from "./utils";
@@ -0,0 +1,3 @@
1
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
2
+ export declare function getTableName<M extends Model>(model: M | Constructor<M>): any;
3
+ export declare function sequenceNameForModel<M extends Model>(model: M | Constructor<M>, ...args: string[]): string;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @summary Module summary
3
+ * @description Module description
4
+ * @module ts-workspace
5
+ */
6
+ /**
7
+ * @summary Namespace summary
8
+ * @description Namespace description
9
+ * @namespace Namespace
10
+ * @memberOf module:ts-workspace
11
+ */
12
+ export * from "./identity";
13
+ export * from "./interfaces";
14
+ export * from "./model";
15
+ export * from "./persistence";
16
+ export * from "./query";
17
+ export * from "./repository";
18
+ export * from "./validators";
19
+ /**
20
+ * @summary stores the current package version
21
+ * @description this is how you should document a constant
22
+ * @const VERSION
23
+ * @memberOf module:ts-workspace
24
+ */
25
+ export declare const VERSION = "##VERSION##";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @summary Standard Builder APi for the Builder design pattern
3
+ * @description Expose the build method
4
+ *
5
+ * @interface Builder
6
+ *
7
+ * @category Construction
8
+ */
9
+ export interface Builder<T> {
10
+ /**
11
+ * @summary Build the Object
12
+ *
13
+ * @method
14
+ */
15
+ build(...args: any[]): T;
16
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @summary processes query objects
3
+ *
4
+ * @typedef V the output
5
+ *
6
+ * @interface Executor
7
+ *
8
+ * @category Query
9
+ */
10
+ export interface Executor {
11
+ /**
12
+ * @summary Processes itself
13
+ *
14
+ * @param {any[]} args
15
+ *
16
+ * @method
17
+ */
18
+ execute<V>(...args: any): Promise<V>;
19
+ }
@@ -0,0 +1,31 @@
1
+ import { Observer } from "./Observer";
2
+ /**
3
+ * @summary Observable Api
4
+ * @description manage and update {@link Observer}s
5
+ *
6
+ * @interface Observable
7
+ *
8
+ * @category Observables
9
+ */
10
+ export interface Observable {
11
+ /**
12
+ * @summary Register new {@link Observer}s
13
+ * @param {Observer} observer
14
+ *
15
+ * @method
16
+ */
17
+ observe(observer: Observer): void;
18
+ /**
19
+ * @summary Unregister new {@link Observer}s
20
+ * @param {Observer} observer
21
+ *
22
+ * @method
23
+ */
24
+ unObserve(observer: Observer): void;
25
+ /**
26
+ * @summary have registered {@link Observer}s update themselves
27
+ * @param {any[]} args
28
+ * @method
29
+ */
30
+ updateObservers(...args: any[]): Promise<void>;
31
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @summary Observer Api
3
+ * @description will be called by the {@link Observable}
4
+ *
5
+ * @interface Observer
6
+ *
7
+ * @category Observables
8
+ */
9
+ export interface Observer {
10
+ /**
11
+ * @summary Refreshes the Observer
12
+ * @param {any[]} args
13
+ * @method
14
+ */
15
+ refresh(...args: any[]): Promise<void>;
16
+ }
@@ -0,0 +1,4 @@
1
+ import { Paginator } from "../query/Paginator";
2
+ export interface Paginatable {
3
+ paginate<V>(...args: any[]): Promise<Paginator<V, any>>;
4
+ }
@@ -0,0 +1,6 @@
1
+ import { Condition, SelectSelector, WhereOption } from "../query";
2
+ import { OrderDirection } from "../repository";
3
+ export interface Queriable {
4
+ select(selector?: SelectSelector): WhereOption;
5
+ query<V>(condition: Condition, orderBy: string, order: OrderDirection, limit?: number, skip?: number): Promise<V>;
6
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @summary Executes a raw instruction in the Database
3
+ * @typeDef Q The input type
4
+ * @typeDef R The result type
5
+ *
6
+ * @interface RawExecutor
7
+ * @category Query
8
+ */
9
+ export interface RawExecutor<Q> {
10
+ /**
11
+ * @summary Executes a raw instruction in the Database
12
+ *
13
+ * @typeDef V the expected outcome of the instruction
14
+ * @param rawInput
15
+ * @param args
16
+ *
17
+ * @method
18
+ */
19
+ raw<R>(rawInput: Q, ...args: any[]): Promise<R>;
20
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @typedef SequenceOptions
3
+ *
4
+ * @prop {string | number} [startingValue] defines the starting value when sequence doest not exist
5
+ *
6
+ * @category Sequences
7
+ */
8
+ export interface SequenceOptions {
9
+ name?: string;
10
+ type: "Number" | "BigInt" | undefined;
11
+ startWith: number;
12
+ incrementBy: number;
13
+ minValue?: number;
14
+ maxValue?: number;
15
+ cycle: boolean;
16
+ }
17
+ export declare const DefaultSequenceOptions: SequenceOptions;
18
+ export declare const NumericSequence: SequenceOptions;
19
+ export declare const BigIntSequence: SequenceOptions;
@@ -0,0 +1,7 @@
1
+ export * from "./Builder";
2
+ export * from "./Executor";
3
+ export * from "./Observable";
4
+ export * from "./Observer";
5
+ export * from "./Queriable";
6
+ export * from "./RawExecutor";
7
+ export * from "./SequenceOptions";
@@ -0,0 +1,6 @@
1
+ import { ModelArg, Model } from "@decaf-ts/decorator-validation";
2
+ export declare abstract class BaseModel extends Model {
3
+ createdOn: Date;
4
+ updatedOn: Date;
5
+ protected constructor(arg?: ModelArg<BaseModel>);
6
+ }
@@ -0,0 +1,7 @@
1
+ import { ModelArg } from "@decaf-ts/decorator-validation";
2
+ import { BaseModel } from "./BaseModel";
3
+ export declare abstract class IdentifiedBaseModel extends BaseModel {
4
+ createdBy: string;
5
+ updatedBy: string;
6
+ protected constructor(arg?: ModelArg<IdentifiedBaseModel>);
7
+ }
@@ -0,0 +1,8 @@
1
+ import { Model, ModelArg } from "@decaf-ts/decorator-validation";
2
+ import { Roles } from "../persistence/constants";
3
+ export declare class User extends Model {
4
+ id: string;
5
+ roles?: (string | Roles)[];
6
+ affiliations?: string[];
7
+ constructor(arg?: ModelArg<User>);
8
+ }
@@ -0,0 +1,15 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { Repo } from "../repository/Repository";
3
+ import { RelationsMetadata } from "./types";
4
+ import { Context } from "@decaf-ts/db-decorators/lib/repository/Context";
5
+ export declare function createOrUpdate<M extends Model>(model: M, context: Context<M>, repository?: Repo<M>): Promise<M>;
6
+ export declare function oneToOneOnCreate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
7
+ export declare function oneToOneOnUpdate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
8
+ export declare function oneToOneOnDelete<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
9
+ export declare function oneToManyOnCreate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
10
+ export declare function oneToManyOnUpdate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
11
+ export declare function oneToManyOnDelete<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
12
+ export declare function getPopulateKey(tableName: string, fieldName: string, id: string | number): string;
13
+ export declare function cacheModelForPopulate<M extends Model>(context: Context<M>, parentModel: M, propertyKey: string, pkValue: string | number, cacheValue: any): Promise<void>;
14
+ export declare function populate<M extends Model, R extends Repo<M>, Y extends RelationsMetadata>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
15
+ export declare function repositoryFromTypeMetadata<M extends Model>(model: any, propertyKey: string): Repo<M>;
@@ -0,0 +1,75 @@
1
+ import { CascadeMetadata } from "../repository/types";
2
+ import { OrderDirection } from "../repository/constants";
3
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
4
+ import { Repo } from "../repository/Repository";
5
+ import { Context } from "../repository/Context";
6
+ export declare function table(tableName: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
7
+ export declare function column(columnName: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
8
+ /**
9
+ * @summary Index Decorator
10
+ * @description properties decorated will the index in the
11
+ * DB for performance in queries
12
+ *
13
+ * @param {OrderDirection[]} [directions]
14
+ * @param {string[]} [compositions]
15
+ *
16
+ * @function index
17
+ */
18
+ export declare function index(directions?: OrderDirection[], compositions?: string[]): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
19
+ export declare function uniqueOnCreateUpdate<M extends Model, R extends Repo<M>, Y = any>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
20
+ /**
21
+ * @summary Unique Decorator
22
+ * @description Tags a property as unique.
23
+ * No other elements in that table can have the same property value
24
+ *
25
+ * @function unique
26
+ *
27
+ * @memberOf module:wallet-db.Decorators
28
+ */
29
+ export declare function unique(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
30
+ export declare function createdByOnCreateUpdate<M extends Model, R extends Repo<M>, Y = any>(this: R, context: Context<M>, data: Y, key: string, model: M): Promise<void>;
31
+ export declare function createdBy(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
32
+ export declare function updatedBy(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
33
+ /**
34
+ * @summary One To One relation Decorators
35
+ *
36
+ * @param {Constructor<any>} clazz the {@link Sequence} to use. Defaults to {@link NoneSequence}
37
+ * @param {CascadeMetadata} [cascadeOptions]
38
+ * @param {boolean} populate If true, replaces the specified key in the document with the corresponding record from the database
39
+ *
40
+ * @function onToOne
41
+ *
42
+ * @memberOf module:wallet-db.Decorators
43
+ *
44
+ * @see oneToMany
45
+ * @see manyToOne
46
+ */
47
+ export declare function oneToOne<M extends Model>(clazz: Constructor<M>, cascadeOptions?: CascadeMetadata, populate?: boolean): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
48
+ /**
49
+ * @summary One To Many relation Decorators
50
+ *
51
+ * @param {Constructor<any>} clazz the {@link Sequence} to use. Defaults to {@link NoneSequence}
52
+ * @param {CascadeMetadata} [cascadeOptions]
53
+ *
54
+ * @function oneToMany
55
+ *
56
+ * @memberOf module:wallet-db.Decorators
57
+ *
58
+ * @see oneToOne
59
+ * @see manyToOne
60
+ */
61
+ export declare function oneToMany<M extends Model>(clazz: Constructor<M>, cascadeOptions?: CascadeMetadata, populate?: boolean): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
62
+ /**
63
+ * @summary Many To One relation Decorators
64
+ *
65
+ * @param {Constructor<any>} clazz the {@link Sequence} to use. Defaults to {@link NoneSequence}
66
+ * @param {CascadeMetadata} [cascadeOptions]
67
+ *
68
+ * @function manyToOne
69
+ *
70
+ * @memberOf module:wallet-db.Decorators
71
+ *
72
+ * @see oneToMany
73
+ * @see oneToOne
74
+ */
75
+ export declare function manyToOne(clazz: Constructor<any>, cascadeOptions?: CascadeMetadata, populate?: boolean): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
@@ -0,0 +1,4 @@
1
+ export * from "./BaseModel";
2
+ export * from "./decorators";
3
+ export * from "./types";
4
+ export * from "./User";
@@ -0,0 +1,6 @@
1
+ import { CascadeMetadata } from "../repository";
2
+ export type RelationsMetadata = {
3
+ class: string;
4
+ cascade: CascadeMetadata;
5
+ populate: boolean;
6
+ };
@@ -0,0 +1,86 @@
1
+ import { BaseError, Context, OperationKeys } from "@decaf-ts/db-decorators";
2
+ import { Observer } from "../interfaces/Observer";
3
+ import { Constructor, Model, ModelConstructor } from "@decaf-ts/decorator-validation";
4
+ import { SequenceOptions } from "../interfaces/SequenceOptions";
5
+ import { RawExecutor } from "../interfaces/RawExecutor";
6
+ import { Observable } from "../interfaces/Observable";
7
+ import { Query } from "../query/Query";
8
+ import { Statement } from "../query/Statement";
9
+ import { ClauseFactory } from "../query/ClauseFactory";
10
+ import { Condition } from "../query/Condition";
11
+ import { Repository } from "../repository/Repository";
12
+ import { Sequence } from "./Sequence";
13
+ import { User } from "../model/User";
14
+ /**
15
+ * @summary Abstract Decaf-ts Persistence Adapter Class
16
+ * @description Offers the base implementation for all Adapter Classes
17
+ * and manages them various registered {@link Adapter}s
18
+ *
19
+ * @typedef Y the underlying persistence object type
20
+ * @typedef Q The query object the adapter uses
21
+ *
22
+ * @param {Y} native the underlying persistence object
23
+ * @param {string} flavour the under witch the persistence adapter should be stored
24
+ *
25
+ * @class Adapter
26
+ * @implements RawExecutor
27
+ * @implements Observable
28
+ */
29
+ export declare abstract class Adapter<Y, Q> implements RawExecutor<Q>, Observable {
30
+ readonly flavour: string;
31
+ private static _current;
32
+ private static _cache;
33
+ protected readonly _observers: Observer[];
34
+ private readonly _native;
35
+ get native(): Y;
36
+ repository<M extends Model>(): Constructor<Repository<M, Q, Adapter<Y, Q>>>;
37
+ protected constructor(native: Y, flavour: string);
38
+ Query<M extends Model>(): Query<Q, M>;
39
+ abstract parseCondition(condition: Condition): Q;
40
+ abstract get Statement(): Statement<Q>;
41
+ abstract get Clauses(): ClauseFactory<Y, Q>;
42
+ protected isReserved(attr: string): boolean;
43
+ protected abstract parseError(err: Error): BaseError;
44
+ abstract initialize(...args: any[]): Promise<void>;
45
+ abstract Sequence(options: SequenceOptions): Promise<Sequence>;
46
+ protected abstract user(): Promise<User | undefined>;
47
+ context<M extends Model, C extends Context<M>>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, model: Constructor<M>): Promise<C>;
48
+ prepare<M extends Model>(model: M, pk: string | number): {
49
+ record: Record<string, any>;
50
+ id: string;
51
+ };
52
+ revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk: string, id: string | number | bigint): M;
53
+ abstract create(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
54
+ createAll(tableName: string, id: (string | number)[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
55
+ abstract read(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
56
+ readAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
57
+ abstract update(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
58
+ updateAll(tableName: string, id: string[] | number[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
59
+ abstract delete(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
60
+ deleteAll(tableName: string, id: (string | number | bigint)[], ...args: any[]): Promise<Record<string, any>[]>;
61
+ abstract raw<R>(rawInput: Q, process: boolean, ...args: any[]): Promise<R>;
62
+ /**
63
+ * @summary Registers an {@link Observer}
64
+ * @param {Observer} observer
65
+ *
66
+ * @see {Observable#observe}
67
+ */
68
+ observe(observer: Observer): void;
69
+ /**
70
+ * @summary Unregisters an {@link Observer}
71
+ * @param {Observer} observer
72
+ *
73
+ * @see {Observable#unObserve}
74
+ */
75
+ unObserve(observer: Observer): void;
76
+ /**
77
+ * @summary calls all registered {@link Observer}s to update themselves
78
+ * @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
79
+ */
80
+ updateObservers(...args: any[]): Promise<void>;
81
+ static get current(): Adapter<any, any>;
82
+ static get<Y, Q>(flavour: any): Adapter<Y, Q> | undefined;
83
+ static setCurrent(flavour: string): void;
84
+ static key(key: string): string;
85
+ static models<M extends Model>(flavour: string): ModelConstructor<any>[];
86
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @summary Sequence
3
+ *
4
+ * @interface Sequence
5
+ *
6
+ * @category Sequences
7
+ */
8
+ import { Constructor, Model } from "@decaf-ts/decorator-validation";
9
+ import { SequenceOptions } from "../interfaces/SequenceOptions";
10
+ export declare abstract class Sequence {
11
+ protected readonly options: SequenceOptions;
12
+ protected constructor(options: SequenceOptions);
13
+ /**
14
+ * @summary generates the next value in the sequence
15
+ *
16
+ * @method
17
+ */
18
+ abstract next(): Promise<string | number | bigint>;
19
+ abstract current(): Promise<string | number | bigint>;
20
+ abstract range(count: number): Promise<(number | string | bigint)[]>;
21
+ static pk<M extends Model>(model: M | Constructor<M>): string;
22
+ }
@@ -0,0 +1,22 @@
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
+ RELATIONS = "__relations",
10
+ CLAUSE_SEQUENCE = "clause-sequence",
11
+ CREATED_BY = "ownership.created-by",
12
+ UPDATED_BY = "ownership.updated-by",
13
+ ONE_TO_ONE = "relations.one-to-one",
14
+ ONE_TO_MANY = "relations.one-to-many",
15
+ MANY_TO_ONE = "relations.many-to-one",
16
+ POPULATE = "populate"
17
+ }
18
+ export declare enum Roles {
19
+ ADMIN = "admin",
20
+ WRITER = "writer",
21
+ READER = "reader"
22
+ }
@@ -0,0 +1 @@
1
+ export declare function uses(flavour: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
@@ -0,0 +1,7 @@
1
+ import { BaseError } from "@decaf-ts/db-decorators";
2
+ export declare class ConnectionError extends BaseError {
3
+ constructor(msg: string | Error);
4
+ }
5
+ export declare class UnsupportedError extends BaseError {
6
+ constructor(msg: string | Error);
7
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./Adapter";
2
+ export * from "./constants";
3
+ export * from "./decorators";
4
+ export * from "./errors";
5
+ export * from "./Sequence";
@@ -0,0 +1,50 @@
1
+ import { Executor } from "../interfaces";
2
+ import { Model, ModelArg } from "@decaf-ts/decorator-validation";
3
+ import { QueryBuilder } from "./options";
4
+ import { Priority } from "./constants";
5
+ import { Statement } from "./Statement";
6
+ import { Paginatable } from "../interfaces/Paginatable";
7
+ import { Paginator } from "./Paginator";
8
+ /**
9
+ */
10
+ /**
11
+ * @summary Clause Class
12
+ * @description Represents a Clause in a {@link Statement}
13
+ *
14
+ * @typedef Q Represents que query object the persistence adapter uses
15
+ *
16
+ * @param {ModelArg<Clause<Q>>} [clause]
17
+ *
18
+ * @class Clause
19
+ * @extends Model
20
+ * @implements Executor
21
+ * @implements QueryBuilder
22
+ * @abstract
23
+ *
24
+ * @category Query
25
+ * @subcategory Clauses
26
+ */
27
+ export declare abstract class Clause<Q> extends Model implements Executor, Paginatable, QueryBuilder<Q> {
28
+ readonly priority: Priority;
29
+ readonly statement: Statement<Q>;
30
+ protected constructor(clause?: ModelArg<Clause<Q>>);
31
+ protected get adapter(): import("..").Adapter<any, Q>;
32
+ protected get Clauses(): import("./ClauseFactory").ClauseFactory<any, Q>;
33
+ /**
34
+ * @summary return the priority of the clause
35
+ * @see Priority
36
+ */
37
+ getPriority(): number;
38
+ abstract build(previous: Q): Q;
39
+ /**
40
+ * @inheritDoc
41
+ * @abstract
42
+ */
43
+ execute<R>(): Promise<R>;
44
+ /**
45
+ * @inheritDoc
46
+ * @abstract
47
+ */
48
+ paginate<R>(size: number): Promise<Paginator<R, Q>>;
49
+ toString(): string;
50
+ }
@@ -0,0 +1,71 @@
1
+ import { FromClause } from "./clauses";
2
+ import { GroupByClause } from "./clauses/GroupByClause";
3
+ import { InsertClause } from "./clauses/InsertClause";
4
+ import { LimitClause } from "./clauses/LimitClause";
5
+ import { OffsetClause } from "./clauses/OffsetClause";
6
+ import { OrderByClause } from "./clauses/OrderByClause";
7
+ import { SelectClause } from "./clauses/SelectClause";
8
+ import { ValuesClause } from "./clauses/ValuesClause";
9
+ import { WhereClause } from "./clauses/WhereClause";
10
+ import { Adapter } from "../persistence";
11
+ import { Condition } from "./Condition";
12
+ import { FromSelector, GroupBySelector, LimitSelector, OffsetSelector, OrderBySelector, SelectSelector } from "./selectors";
13
+ import { Statement } from "./Statement";
14
+ import { Model } from "@decaf-ts/decorator-validation";
15
+ export declare abstract class ClauseFactory<Y, Q> {
16
+ protected adapter: Adapter<Y, Q>;
17
+ /**
18
+ * @summary Factory method for {@link FromClause}
19
+ * @param {Statement} statement
20
+ * @param {FromSelector} selector
21
+ */
22
+ abstract from<M extends Model>(statement: Statement<Q>, selector: FromSelector<M>): FromClause<Q, M>;
23
+ /**
24
+ * @summary Factory method for {@link GroupByClause}
25
+ * @param {Statement} statement
26
+ * @param {GroupBySelector} selector
27
+ */
28
+ abstract groupBy(statement: Statement<Q>, selector: GroupBySelector): GroupByClause<Q>;
29
+ /**
30
+ * @summary Factory method for {@link InsertClause}
31
+ * @param {Statement} statement
32
+ */
33
+ abstract insert<M extends Model>(): InsertClause<Q, M>;
34
+ /**
35
+ * @summary Factory method for {@link LimitClause}
36
+ * @param {Statement} statement
37
+ * @param {LimitSelector} selector
38
+ */
39
+ abstract limit(statement: Statement<Q>, selector: LimitSelector): LimitClause<Q>;
40
+ /**
41
+ * @summary Factory method for {@link OffsetClause}
42
+ * @param {Statement} statement
43
+ * @param {OffsetSelector} selector
44
+ */
45
+ abstract offset(statement: Statement<Q>, selector: OffsetSelector): OffsetClause<Q>;
46
+ /**
47
+ * @summary Factory method for {@link OrderByClause}
48
+ * @param {Statement} statement
49
+ * @param {OrderBySelector} selector
50
+ */
51
+ abstract orderBy(statement: Statement<Q>, selector: OrderBySelector[]): OrderByClause<Q>;
52
+ /**
53
+ * @summary Factory method for {@link SelectClause}
54
+ * @param {Statement} statement
55
+ * @param {SelectSelector} [selector]
56
+ */
57
+ abstract select<M extends Model>(selector?: SelectSelector): SelectClause<Q, M>;
58
+ /**
59
+ * @summary Factory method for {@link ValuesClause}
60
+ * @param {Statement} statement
61
+ * @param {M[]} values
62
+ */
63
+ abstract values<M extends Model>(statement: Statement<Q>, values: M[]): ValuesClause<Q, M>;
64
+ /**
65
+ * @summary Factory method for {@link WhereClause}
66
+ * @param {Statement} statement
67
+ * @param {Condition} condition
68
+ */
69
+ abstract where(statement: Statement<Q>, condition: Condition): WhereClause<Q>;
70
+ protected constructor(adapter: Adapter<Y, Q>);
71
+ }