@loopback/repository 4.0.0-alpha.6 → 4.0.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 (457) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +94 -372
  3. package/dist/common-types.d.ts +96 -0
  4. package/dist/common-types.js +24 -0
  5. package/dist/common-types.js.map +1 -0
  6. package/dist/connectors/connector.d.ts +48 -0
  7. package/{lib → dist/connectors}/connector.js +1 -1
  8. package/dist/connectors/connector.js.map +1 -0
  9. package/{lib/crud-connector.d.ts → dist/connectors/crud.connector.d.ts} +51 -51
  10. package/{lib/common-types.js → dist/connectors/crud.connector.js} +2 -2
  11. package/dist/connectors/crud.connector.js.map +1 -0
  12. package/dist/connectors/index.d.ts +3 -0
  13. package/dist/connectors/index.js +11 -0
  14. package/dist/connectors/index.js.map +1 -0
  15. package/{lib6/kv-connector.d.ts → dist/connectors/kv.connector.d.ts} +28 -28
  16. package/{lib/datasource.js → dist/connectors/kv.connector.js} +2 -2
  17. package/dist/connectors/kv.connector.js.map +1 -0
  18. package/dist/datasource.d.ts +27 -0
  19. package/{lib6 → dist}/datasource.js +1 -1
  20. package/dist/datasource.js.map +1 -0
  21. package/dist/decorators/index.d.ts +3 -0
  22. package/dist/decorators/index.js +11 -0
  23. package/dist/decorators/index.js.map +1 -0
  24. package/dist/decorators/metadata.d.ts +12 -0
  25. package/dist/decorators/metadata.js +51 -0
  26. package/dist/decorators/metadata.js.map +1 -0
  27. package/dist/decorators/model.decorator.d.ts +40 -0
  28. package/dist/decorators/model.decorator.js +112 -0
  29. package/dist/decorators/model.decorator.js.map +1 -0
  30. package/dist/decorators/repository.decorator.d.ts +106 -0
  31. package/dist/decorators/repository.decorator.js +114 -0
  32. package/dist/decorators/repository.decorator.js.map +1 -0
  33. package/dist/define-model-class.d.ts +55 -0
  34. package/dist/define-model-class.js +57 -0
  35. package/dist/define-model-class.js.map +1 -0
  36. package/dist/define-repository-class.d.ts +119 -0
  37. package/dist/define-repository-class.js +98 -0
  38. package/dist/define-repository-class.js.map +1 -0
  39. package/dist/errors/entity-not-found.error.d.ts +8 -0
  40. package/dist/errors/entity-not-found.error.js +28 -0
  41. package/dist/errors/entity-not-found.error.js.map +1 -0
  42. package/dist/errors/index.d.ts +2 -0
  43. package/dist/errors/index.js +10 -0
  44. package/dist/errors/index.js.map +1 -0
  45. package/dist/errors/invalid-relation.error.d.ts +10 -0
  46. package/dist/errors/invalid-relation.error.js +28 -0
  47. package/dist/errors/invalid-relation.error.js.map +1 -0
  48. package/dist/index.d.ts +30 -0
  49. package/dist/index.js +39 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/keys.d.ts +34 -0
  52. package/dist/keys.js +44 -0
  53. package/dist/keys.js.map +1 -0
  54. package/dist/mixins/index.d.ts +1 -0
  55. package/dist/mixins/index.js +9 -0
  56. package/dist/mixins/index.js.map +1 -0
  57. package/dist/mixins/repository.mixin.d.ts +377 -0
  58. package/dist/mixins/repository.mixin.js +405 -0
  59. package/dist/mixins/repository.mixin.js.map +1 -0
  60. package/dist/model.d.ts +232 -0
  61. package/dist/model.js +367 -0
  62. package/dist/model.js.map +1 -0
  63. package/dist/relations/belongs-to/belongs-to.accessor.d.ts +17 -0
  64. package/dist/relations/belongs-to/belongs-to.accessor.js +40 -0
  65. package/dist/relations/belongs-to/belongs-to.accessor.js.map +1 -0
  66. package/dist/relations/belongs-to/belongs-to.decorator.d.ts +11 -0
  67. package/dist/relations/belongs-to/belongs-to.decorator.js +64 -0
  68. package/dist/relations/belongs-to/belongs-to.decorator.js.map +1 -0
  69. package/dist/relations/belongs-to/belongs-to.helpers.d.ts +17 -0
  70. package/dist/relations/belongs-to/belongs-to.helpers.js +63 -0
  71. package/dist/relations/belongs-to/belongs-to.helpers.js.map +1 -0
  72. package/dist/relations/belongs-to/belongs-to.inclusion-resolver.d.ts +14 -0
  73. package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js +36 -0
  74. package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js.map +1 -0
  75. package/dist/relations/belongs-to/belongs-to.repository.d.ts +28 -0
  76. package/dist/relations/belongs-to/belongs-to.repository.js +33 -0
  77. package/dist/relations/belongs-to/belongs-to.repository.js.map +1 -0
  78. package/dist/relations/belongs-to/index.d.ts +4 -0
  79. package/dist/relations/belongs-to/index.js +12 -0
  80. package/dist/relations/belongs-to/index.js.map +1 -0
  81. package/dist/relations/has-many/has-many-through.helpers.d.ts +182 -0
  82. package/dist/relations/has-many/has-many-through.helpers.js +282 -0
  83. package/dist/relations/has-many/has-many-through.helpers.js.map +1 -0
  84. package/dist/relations/has-many/has-many-through.inclusion-resolver.d.ts +16 -0
  85. package/dist/relations/has-many/has-many-through.inclusion-resolver.js +78 -0
  86. package/dist/relations/has-many/has-many-through.inclusion-resolver.js.map +1 -0
  87. package/dist/relations/has-many/has-many-through.repository-factory.d.ts +17 -0
  88. package/dist/relations/has-many/has-many-through.repository-factory.js +37 -0
  89. package/dist/relations/has-many/has-many-through.repository-factory.js.map +1 -0
  90. package/dist/relations/has-many/has-many-through.repository.d.ts +114 -0
  91. package/dist/relations/has-many/has-many-through.repository.js +103 -0
  92. package/dist/relations/has-many/has-many-through.repository.js.map +1 -0
  93. package/dist/relations/has-many/has-many.decorator.d.ts +11 -0
  94. package/dist/relations/has-many/has-many.decorator.js +36 -0
  95. package/dist/relations/has-many/has-many.decorator.js.map +1 -0
  96. package/dist/relations/has-many/has-many.helpers.d.ts +26 -0
  97. package/dist/relations/has-many/has-many.helpers.js +78 -0
  98. package/dist/relations/has-many/has-many.helpers.js.map +1 -0
  99. package/dist/relations/has-many/has-many.inclusion-resolver.d.ts +14 -0
  100. package/dist/relations/has-many/has-many.inclusion-resolver.js +45 -0
  101. package/dist/relations/has-many/has-many.inclusion-resolver.js.map +1 -0
  102. package/dist/relations/has-many/has-many.repository-factory.d.ts +28 -0
  103. package/dist/relations/has-many/has-many.repository-factory.js +39 -0
  104. package/dist/relations/has-many/has-many.repository-factory.js.map +1 -0
  105. package/dist/relations/has-many/has-many.repository.d.ts +54 -0
  106. package/dist/relations/has-many/has-many.repository.js +38 -0
  107. package/dist/relations/has-many/has-many.repository.js.map +1 -0
  108. package/dist/relations/has-many/index.d.ts +6 -0
  109. package/dist/relations/has-many/index.js +14 -0
  110. package/dist/relations/has-many/index.js.map +1 -0
  111. package/dist/relations/has-one/has-one.decorator.d.ts +3 -0
  112. package/dist/relations/has-one/has-one.decorator.js +37 -0
  113. package/dist/relations/has-one/has-one.decorator.js.map +1 -0
  114. package/dist/relations/has-one/has-one.helpers.d.ts +17 -0
  115. package/dist/relations/has-one/has-one.helpers.js +64 -0
  116. package/dist/relations/has-one/has-one.helpers.js.map +1 -0
  117. package/dist/relations/has-one/has-one.inclusion-resolver.d.ts +14 -0
  118. package/dist/relations/has-one/has-one.inclusion-resolver.js +35 -0
  119. package/dist/relations/has-one/has-one.inclusion-resolver.js.map +1 -0
  120. package/dist/relations/has-one/has-one.repository-factory.d.ts +28 -0
  121. package/dist/relations/has-one/has-one.repository-factory.js +39 -0
  122. package/dist/relations/has-one/has-one.repository-factory.js.map +1 -0
  123. package/dist/relations/has-one/has-one.repository.d.ts +53 -0
  124. package/dist/relations/has-one/has-one.repository.js +45 -0
  125. package/dist/relations/has-one/has-one.repository.js.map +1 -0
  126. package/dist/relations/has-one/index.d.ts +3 -0
  127. package/dist/relations/has-one/index.js +11 -0
  128. package/dist/relations/has-one/index.js.map +1 -0
  129. package/dist/relations/index.d.ts +6 -0
  130. package/dist/relations/index.js +14 -0
  131. package/dist/relations/index.js.map +1 -0
  132. package/dist/relations/relation.decorator.d.ts +39 -0
  133. package/dist/relations/relation.decorator.js +88 -0
  134. package/dist/relations/relation.decorator.js.map +1 -0
  135. package/dist/relations/relation.helpers.d.ts +105 -0
  136. package/dist/relations/relation.helpers.js +298 -0
  137. package/dist/relations/relation.helpers.js.map +1 -0
  138. package/dist/relations/relation.types.d.ts +142 -0
  139. package/dist/relations/relation.types.js +21 -0
  140. package/dist/relations/relation.types.js.map +1 -0
  141. package/dist/repositories/constraint-utils.d.ts +49 -0
  142. package/dist/repositories/constraint-utils.js +87 -0
  143. package/dist/repositories/constraint-utils.js.map +1 -0
  144. package/dist/repositories/index.d.ts +5 -0
  145. package/dist/repositories/index.js +13 -0
  146. package/dist/repositories/index.js.map +1 -0
  147. package/dist/repositories/kv.repository.bridge.d.ts +30 -0
  148. package/dist/repositories/kv.repository.bridge.js +76 -0
  149. package/dist/repositories/kv.repository.bridge.js.map +1 -0
  150. package/dist/repositories/kv.repository.d.ts +74 -0
  151. package/{lib/crud-connector.js → dist/repositories/kv.repository.js} +2 -2
  152. package/dist/repositories/kv.repository.js.map +1 -0
  153. package/dist/repositories/legacy-juggler-bridge.d.ts +305 -0
  154. package/dist/repositories/legacy-juggler-bridge.js +452 -0
  155. package/dist/repositories/legacy-juggler-bridge.js.map +1 -0
  156. package/dist/repositories/repository.d.ts +223 -0
  157. package/dist/repositories/repository.js +157 -0
  158. package/dist/repositories/repository.js.map +1 -0
  159. package/dist/transaction.d.ts +30 -0
  160. package/dist/transaction.js +18 -0
  161. package/dist/transaction.js.map +1 -0
  162. package/dist/type-resolver.d.ts +42 -0
  163. package/dist/type-resolver.js +61 -0
  164. package/dist/type-resolver.js.map +1 -0
  165. package/{lib6 → dist}/types/any.d.ts +1 -1
  166. package/{lib6 → dist}/types/any.js +3 -2
  167. package/dist/types/any.js.map +1 -0
  168. package/{lib6 → dist}/types/array.d.ts +4 -4
  169. package/{lib → dist}/types/array.js +6 -4
  170. package/dist/types/array.js.map +1 -0
  171. package/{lib → dist}/types/boolean.d.ts +1 -1
  172. package/{lib → dist}/types/boolean.js +3 -2
  173. package/dist/types/boolean.js.map +1 -0
  174. package/{lib6 → dist}/types/buffer.d.ts +2 -2
  175. package/{lib6 → dist}/types/buffer.js +8 -6
  176. package/dist/types/buffer.js.map +1 -0
  177. package/{lib → dist}/types/date.d.ts +1 -1
  178. package/{lib6 → dist}/types/date.js +6 -4
  179. package/dist/types/date.js.map +1 -0
  180. package/{lib → dist}/types/index.d.ts +11 -9
  181. package/dist/types/index.js +49 -0
  182. package/dist/types/index.js.map +1 -0
  183. package/{lib6 → dist}/types/model.d.ts +2 -1
  184. package/{lib → dist}/types/model.js +2 -2
  185. package/dist/types/model.js.map +1 -0
  186. package/dist/types/null.d.ts +12 -0
  187. package/{lib6/types/boolean.js → dist/types/null.js} +12 -11
  188. package/dist/types/null.js.map +1 -0
  189. package/{lib6 → dist}/types/number.d.ts +1 -1
  190. package/{lib6 → dist}/types/number.js +6 -4
  191. package/dist/types/number.js.map +1 -0
  192. package/{lib → dist}/types/object.d.ts +1 -1
  193. package/{lib6 → dist}/types/object.js +7 -6
  194. package/dist/types/object.js.map +1 -0
  195. package/{lib → dist}/types/string.d.ts +1 -1
  196. package/{lib → dist}/types/string.js +3 -2
  197. package/dist/types/string.js.map +1 -0
  198. package/{lib → dist}/types/type.d.ts +7 -7
  199. package/{lib6 → dist}/types/type.js +1 -1
  200. package/dist/types/type.js.map +1 -0
  201. package/{lib → dist}/types/union.d.ts +1 -1
  202. package/{lib6 → dist}/types/union.js +6 -4
  203. package/dist/types/union.js.map +1 -0
  204. package/package.json +49 -32
  205. package/src/common-types.ts +123 -0
  206. package/src/connectors/connector.ts +70 -0
  207. package/src/connectors/crud.connector.ts +208 -0
  208. package/src/connectors/index.ts +8 -0
  209. package/src/connectors/kv.connector.ts +113 -0
  210. package/src/datasource.ts +37 -0
  211. package/src/decorators/index.ts +8 -0
  212. package/src/decorators/metadata.ts +84 -0
  213. package/src/decorators/model.decorator.ts +166 -0
  214. package/src/decorators/repository.decorator.ts +223 -0
  215. package/src/define-model-class.ts +90 -0
  216. package/src/define-repository-class.ts +170 -0
  217. package/src/errors/entity-not-found.error.ts +40 -0
  218. package/src/errors/index.ts +7 -0
  219. package/src/errors/invalid-relation.error.ts +39 -0
  220. package/src/index.ts +36 -0
  221. package/src/keys.ts +40 -0
  222. package/{index.d.ts → src/mixins/index.ts} +2 -2
  223. package/src/mixins/repository.mixin.ts +499 -0
  224. package/src/model.ts +539 -0
  225. package/src/relations/belongs-to/belongs-to.accessor.ts +74 -0
  226. package/src/relations/belongs-to/belongs-to.decorator.ts +81 -0
  227. package/src/relations/belongs-to/belongs-to.helpers.ts +78 -0
  228. package/src/relations/belongs-to/belongs-to.inclusion-resolver.ts +71 -0
  229. package/src/relations/belongs-to/belongs-to.repository.ts +55 -0
  230. package/src/relations/belongs-to/index.ts +9 -0
  231. package/src/relations/has-many/has-many-through.helpers.ts +361 -0
  232. package/src/relations/has-many/has-many-through.inclusion-resolver.ts +135 -0
  233. package/src/relations/has-many/has-many-through.repository-factory.ts +121 -0
  234. package/src/relations/has-many/has-many-through.repository.ts +318 -0
  235. package/src/relations/has-many/has-many.decorator.ts +38 -0
  236. package/src/relations/has-many/has-many.helpers.ts +100 -0
  237. package/src/relations/has-many/has-many.inclusion-resolver.ts +88 -0
  238. package/src/relations/has-many/has-many.repository-factory.ts +76 -0
  239. package/src/relations/has-many/has-many.repository.ts +118 -0
  240. package/src/relations/has-many/index.ts +11 -0
  241. package/src/relations/has-one/has-one.decorator.ts +40 -0
  242. package/src/relations/has-one/has-one.helpers.ts +84 -0
  243. package/src/relations/has-one/has-one.inclusion-resolver.ts +65 -0
  244. package/src/relations/has-one/has-one.repository-factory.ts +72 -0
  245. package/src/relations/has-one/has-one.repository.ts +127 -0
  246. package/src/relations/has-one/index.ts +8 -0
  247. package/src/relations/index.ts +11 -0
  248. package/src/relations/relation.decorator.ts +90 -0
  249. package/src/relations/relation.helpers.ts +364 -0
  250. package/src/relations/relation.types.ts +180 -0
  251. package/src/repositories/constraint-utils.ts +98 -0
  252. package/src/repositories/index.ts +10 -0
  253. package/src/repositories/kv.repository.bridge.ts +97 -0
  254. package/src/repositories/kv.repository.ts +87 -0
  255. package/src/repositories/legacy-juggler-bridge.ts +788 -0
  256. package/src/repositories/repository.ts +441 -0
  257. package/src/transaction.ts +39 -0
  258. package/src/type-resolver.ts +98 -0
  259. package/src/types/any.ts +38 -0
  260. package/src/types/array.ts +53 -0
  261. package/src/types/boolean.ts +35 -0
  262. package/src/types/buffer.ts +53 -0
  263. package/src/types/date.ts +61 -0
  264. package/src/types/index.ts +52 -0
  265. package/src/types/model.ts +24 -0
  266. package/src/types/null.ts +35 -0
  267. package/src/types/number.ts +42 -0
  268. package/src/types/object.ts +53 -0
  269. package/src/types/string.ts +42 -0
  270. package/src/types/type.ts +51 -0
  271. package/src/types/union.ts +55 -0
  272. package/api-docs/apple-touch-icon-114x114-precomposed.png +0 -0
  273. package/api-docs/apple-touch-icon-144x144-precomposed.png +0 -0
  274. package/api-docs/apple-touch-icon-57x57-precomposed.png +0 -0
  275. package/api-docs/apple-touch-icon-72x72-precomposed.png +0 -0
  276. package/api-docs/apple-touch-icon-precomposed.png +0 -0
  277. package/api-docs/apple-touch-icon.png +0 -0
  278. package/api-docs/css/bootstrap.min.css +0 -9
  279. package/api-docs/css/code-themes/arta.css +0 -158
  280. package/api-docs/css/code-themes/ascetic.css +0 -50
  281. package/api-docs/css/code-themes/brown_paper.css +0 -104
  282. package/api-docs/css/code-themes/brown_papersq.png +0 -0
  283. package/api-docs/css/code-themes/dark.css +0 -103
  284. package/api-docs/css/code-themes/default.css +0 -135
  285. package/api-docs/css/code-themes/far.css +0 -111
  286. package/api-docs/css/code-themes/github.css +0 -127
  287. package/api-docs/css/code-themes/googlecode.css +0 -144
  288. package/api-docs/css/code-themes/idea.css +0 -121
  289. package/api-docs/css/code-themes/ir_black.css +0 -104
  290. package/api-docs/css/code-themes/magula.css +0 -121
  291. package/api-docs/css/code-themes/monokai.css +0 -114
  292. package/api-docs/css/code-themes/pojoaque.css +0 -104
  293. package/api-docs/css/code-themes/pojoaque.jpg +0 -0
  294. package/api-docs/css/code-themes/rainbow.css +0 -114
  295. package/api-docs/css/code-themes/school_book.css +0 -111
  296. package/api-docs/css/code-themes/school_book.png +0 -0
  297. package/api-docs/css/code-themes/sl-theme.css +0 -45
  298. package/api-docs/css/code-themes/solarized_dark.css +0 -88
  299. package/api-docs/css/code-themes/solarized_light.css +0 -88
  300. package/api-docs/css/code-themes/sunburst.css +0 -158
  301. package/api-docs/css/code-themes/tomorrow-night-blue.css +0 -52
  302. package/api-docs/css/code-themes/tomorrow-night-bright.css +0 -51
  303. package/api-docs/css/code-themes/tomorrow-night-eighties.css +0 -51
  304. package/api-docs/css/code-themes/tomorrow-night.css +0 -52
  305. package/api-docs/css/code-themes/tomorrow.css +0 -49
  306. package/api-docs/css/code-themes/vs.css +0 -86
  307. package/api-docs/css/code-themes/xcode.css +0 -154
  308. package/api-docs/css/code-themes/zenburn.css +0 -115
  309. package/api-docs/css/main.css +0 -139
  310. package/api-docs/favicon.ico +0 -0
  311. package/api-docs/fonts/0ihfXUL2emPh0ROJezvraLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
  312. package/api-docs/fonts/OsJ2DjdpjqFRVUSto6IffLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
  313. package/api-docs/fonts/_aijTyevf54tkVDLy-dlnLO3LdcAZYWl9Si6vvxL-qU.woff +0 -0
  314. package/api-docs/index.html +0 -17872
  315. package/api-docs/js/main.js +0 -19
  316. package/api-docs/js/vendor/bootstrap.min.js +0 -6
  317. package/api-docs/js/vendor/jquery-1.10.1.min.js +0 -6
  318. package/api-docs/js/vendor/jquery.scrollTo-1.4.3.1.js +0 -218
  319. package/api-docs/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js +0 -11
  320. package/index.js +0 -9
  321. package/lib/common-types.d.ts +0 -44
  322. package/lib/common-types.js.map +0 -1
  323. package/lib/connector.d.ts +0 -12
  324. package/lib/connector.js.map +0 -1
  325. package/lib/crud-connector.js.map +0 -1
  326. package/lib/datasource.d.ts +0 -11
  327. package/lib/datasource.js.map +0 -1
  328. package/lib/decorators/model.d.ts +0 -14
  329. package/lib/decorators/model.js +0 -35
  330. package/lib/decorators/model.js.map +0 -1
  331. package/lib/decorators/relation.d.ts +0 -65
  332. package/lib/decorators/relation.js +0 -126
  333. package/lib/decorators/relation.js.map +0 -1
  334. package/lib/decorators/repository.d.ts +0 -61
  335. package/lib/decorators/repository.js +0 -103
  336. package/lib/decorators/repository.js.map +0 -1
  337. package/lib/index.d.ts +0 -15
  338. package/lib/index.js +0 -19
  339. package/lib/index.js.map +0 -1
  340. package/lib/kv-connector.d.ts +0 -77
  341. package/lib/kv-connector.js +0 -7
  342. package/lib/kv-connector.js.map +0 -1
  343. package/lib/kv-repository.d.ts +0 -78
  344. package/lib/kv-repository.js +0 -7
  345. package/lib/kv-repository.js.map +0 -1
  346. package/lib/legacy-juggler-bridge.d.ts +0 -44
  347. package/lib/legacy-juggler-bridge.js +0 -119
  348. package/lib/legacy-juggler-bridge.js.map +0 -1
  349. package/lib/loopback-datasource-juggler.d.ts +0 -666
  350. package/lib/loopback-datasource-juggler.js +0 -8
  351. package/lib/loopback-datasource-juggler.js.map +0 -1
  352. package/lib/mixin.d.ts +0 -43
  353. package/lib/mixin.js +0 -34
  354. package/lib/mixin.js.map +0 -1
  355. package/lib/model.d.ts +0 -127
  356. package/lib/model.js +0 -187
  357. package/lib/model.js.map +0 -1
  358. package/lib/query.d.ts +0 -112
  359. package/lib/query.js +0 -25
  360. package/lib/query.js.map +0 -1
  361. package/lib/repository.d.ts +0 -172
  362. package/lib/repository.js +0 -127
  363. package/lib/repository.js.map +0 -1
  364. package/lib/types/any.d.ts +0 -12
  365. package/lib/types/any.js +0 -35
  366. package/lib/types/any.js.map +0 -1
  367. package/lib/types/array.d.ts +0 -14
  368. package/lib/types/array.js.map +0 -1
  369. package/lib/types/boolean.js.map +0 -1
  370. package/lib/types/buffer.d.ts +0 -14
  371. package/lib/types/buffer.js +0 -57
  372. package/lib/types/buffer.js.map +0 -1
  373. package/lib/types/date.js +0 -60
  374. package/lib/types/date.js.map +0 -1
  375. package/lib/types/index.js +0 -33
  376. package/lib/types/index.js.map +0 -1
  377. package/lib/types/model.d.ts +0 -11
  378. package/lib/types/model.js.map +0 -1
  379. package/lib/types/number.d.ts +0 -12
  380. package/lib/types/number.js +0 -40
  381. package/lib/types/number.js.map +0 -1
  382. package/lib/types/object.js +0 -49
  383. package/lib/types/object.js.map +0 -1
  384. package/lib/types/string.js.map +0 -1
  385. package/lib/types/type.js +0 -7
  386. package/lib/types/type.js.map +0 -1
  387. package/lib/types/union.js +0 -51
  388. package/lib/types/union.js.map +0 -1
  389. package/lib6/common-types.d.ts +0 -44
  390. package/lib6/common-types.js +0 -7
  391. package/lib6/common-types.js.map +0 -1
  392. package/lib6/connector.d.ts +0 -12
  393. package/lib6/connector.js +0 -7
  394. package/lib6/connector.js.map +0 -1
  395. package/lib6/crud-connector.d.ts +0 -130
  396. package/lib6/crud-connector.js +0 -7
  397. package/lib6/crud-connector.js.map +0 -1
  398. package/lib6/datasource.d.ts +0 -11
  399. package/lib6/datasource.js.map +0 -1
  400. package/lib6/decorators/model.d.ts +0 -14
  401. package/lib6/decorators/model.js +0 -35
  402. package/lib6/decorators/model.js.map +0 -1
  403. package/lib6/decorators/relation.d.ts +0 -65
  404. package/lib6/decorators/relation.js +0 -126
  405. package/lib6/decorators/relation.js.map +0 -1
  406. package/lib6/decorators/repository.d.ts +0 -61
  407. package/lib6/decorators/repository.js +0 -113
  408. package/lib6/decorators/repository.js.map +0 -1
  409. package/lib6/index.d.ts +0 -15
  410. package/lib6/index.js +0 -19
  411. package/lib6/index.js.map +0 -1
  412. package/lib6/kv-connector.js +0 -7
  413. package/lib6/kv-connector.js.map +0 -1
  414. package/lib6/kv-repository.d.ts +0 -78
  415. package/lib6/kv-repository.js +0 -7
  416. package/lib6/kv-repository.js.map +0 -1
  417. package/lib6/legacy-juggler-bridge.d.ts +0 -44
  418. package/lib6/legacy-juggler-bridge.js +0 -119
  419. package/lib6/legacy-juggler-bridge.js.map +0 -1
  420. package/lib6/loopback-datasource-juggler.d.ts +0 -666
  421. package/lib6/loopback-datasource-juggler.js +0 -8
  422. package/lib6/loopback-datasource-juggler.js.map +0 -1
  423. package/lib6/mixin.d.ts +0 -43
  424. package/lib6/mixin.js +0 -34
  425. package/lib6/mixin.js.map +0 -1
  426. package/lib6/model.d.ts +0 -127
  427. package/lib6/model.js +0 -187
  428. package/lib6/model.js.map +0 -1
  429. package/lib6/query.d.ts +0 -112
  430. package/lib6/query.js +0 -25
  431. package/lib6/query.js.map +0 -1
  432. package/lib6/repository.d.ts +0 -172
  433. package/lib6/repository.js +0 -127
  434. package/lib6/repository.js.map +0 -1
  435. package/lib6/types/any.js.map +0 -1
  436. package/lib6/types/array.js +0 -53
  437. package/lib6/types/array.js.map +0 -1
  438. package/lib6/types/boolean.d.ts +0 -12
  439. package/lib6/types/boolean.js.map +0 -1
  440. package/lib6/types/buffer.js.map +0 -1
  441. package/lib6/types/date.d.ts +0 -12
  442. package/lib6/types/date.js.map +0 -1
  443. package/lib6/types/index.d.ts +0 -30
  444. package/lib6/types/index.js +0 -33
  445. package/lib6/types/index.js.map +0 -1
  446. package/lib6/types/model.js +0 -25
  447. package/lib6/types/model.js.map +0 -1
  448. package/lib6/types/number.js.map +0 -1
  449. package/lib6/types/object.d.ts +0 -15
  450. package/lib6/types/object.js.map +0 -1
  451. package/lib6/types/string.d.ts +0 -12
  452. package/lib6/types/string.js +0 -40
  453. package/lib6/types/string.js.map +0 -1
  454. package/lib6/types/type.d.ts +0 -38
  455. package/lib6/types/type.js.map +0 -1
  456. package/lib6/types/union.d.ts +0 -14
  457. package/lib6/types/union.js.map +0 -1
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2020. All Rights Reserved.
3
+ // Node module: @loopback/repository
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.property = exports.buildModelDefinition = exports.model = exports.MODEL_WITH_PROPERTIES_KEY = exports.MODEL_PROPERTIES_KEY = exports.MODEL_KEY = void 0;
8
+ const core_1 = require("@loopback/core");
9
+ const model_1 = require("../model");
10
+ const relation_decorator_1 = require("../relations/relation.decorator");
11
+ exports.MODEL_KEY = core_1.MetadataAccessor.create('loopback:model');
12
+ exports.MODEL_PROPERTIES_KEY = core_1.MetadataAccessor.create('loopback:model-properties');
13
+ exports.MODEL_WITH_PROPERTIES_KEY = core_1.MetadataAccessor.create('loopback:model-and-properties');
14
+ /**
15
+ * Decorator for model definitions
16
+ * @param definition
17
+ * @returns A class decorator for `model`
18
+ */
19
+ function model(definition) {
20
+ return function (target) {
21
+ var _a;
22
+ definition = definition !== null && definition !== void 0 ? definition : {};
23
+ const def = Object.assign(definition, {
24
+ name: (_a = definition.name) !== null && _a !== void 0 ? _a : target.name,
25
+ });
26
+ const decorator = core_1.ClassDecoratorFactory.createDecorator(exports.MODEL_KEY, definition, { decoratorName: '@model' });
27
+ decorator(target);
28
+ // Build "ModelDefinition" and store it on model constructor
29
+ buildModelDefinition(target, def);
30
+ };
31
+ }
32
+ exports.model = model;
33
+ /**
34
+ * Build model definition from decorations
35
+ * @param target - Target model class
36
+ * @param def - Model definition spec
37
+ */
38
+ function buildModelDefinition(target, def) {
39
+ var _a, _b, _c, _d;
40
+ // Check if the definition for this class has been built (not from the super
41
+ // class)
42
+ const baseClass = Object.getPrototypeOf(target);
43
+ if (!def &&
44
+ target.definition &&
45
+ baseClass &&
46
+ target.definition !== baseClass.definition) {
47
+ return target.definition;
48
+ }
49
+ const modelDef = new model_1.ModelDefinition(def !== null && def !== void 0 ? def : { name: target.name });
50
+ const prototype = target.prototype;
51
+ const propertyMap = (_a = core_1.MetadataInspector.getAllPropertyMetadata(exports.MODEL_PROPERTIES_KEY, prototype)) !== null && _a !== void 0 ? _a : {};
52
+ for (const [propName, propDef] of Object.entries(propertyMap)) {
53
+ const designType = (_b = propDef.type) !== null && _b !== void 0 ? _b : core_1.MetadataInspector.getDesignTypeForProperty(prototype, propName);
54
+ if (!designType) {
55
+ const err = new Error(`The definition of model property ${modelDef.name}.${propName} is missing ` +
56
+ '`type` field and TypeScript did not provide any design-time type. ' +
57
+ 'Learn more at https://loopback.io/doc/en/lb4/Error-codes.html#cannot_infer_property_type');
58
+ err.code = 'CANNOT_INFER_PROPERTY_TYPE';
59
+ throw err;
60
+ }
61
+ if (propDef.hidden) {
62
+ modelDef.settings.hiddenProperties =
63
+ (_c = modelDef.settings.hiddenProperties) !== null && _c !== void 0 ? _c : [];
64
+ modelDef.settings.hiddenProperties.push(propName);
65
+ }
66
+ propDef.type = designType;
67
+ modelDef.addProperty(propName, propDef);
68
+ }
69
+ target.definition = modelDef;
70
+ const relationMeta = (_d = core_1.MetadataInspector.getAllPropertyMetadata(relation_decorator_1.RELATIONS_KEY, prototype)) !== null && _d !== void 0 ? _d : {};
71
+ const relations = {};
72
+ // Build an object keyed by relation names
73
+ Object.values(relationMeta).forEach(r => {
74
+ relations[r.name] = r;
75
+ });
76
+ target.definition.relations = relations;
77
+ return modelDef;
78
+ }
79
+ exports.buildModelDefinition = buildModelDefinition;
80
+ /**
81
+ * Decorator for model properties
82
+ * @param definition
83
+ * @returns A property decorator
84
+ */
85
+ function property(definition) {
86
+ return core_1.PropertyDecoratorFactory.createDecorator(exports.MODEL_PROPERTIES_KEY, Object.assign({}, definition), { decoratorName: '@property' });
87
+ }
88
+ exports.property = property;
89
+ (function (property) {
90
+ property.ERR_PROP_NOT_ARRAY = '@property.array can only decorate array properties!';
91
+ property.ERR_NO_ARGS = 'decorator received less than two parameters';
92
+ /**
93
+ *
94
+ * @param itemType - The type of array items.
95
+ * Examples: `number`, `Product`, `() => Order`.
96
+ * @param definition - Optional PropertyDefinition object for additional
97
+ * metadata
98
+ */
99
+ function array(itemType, definition) {
100
+ return function (target, propertyName) {
101
+ const propType = core_1.MetadataInspector.getDesignTypeForProperty(target, propertyName);
102
+ if (propType !== Array) {
103
+ throw new Error(property.ERR_PROP_NOT_ARRAY);
104
+ }
105
+ else {
106
+ property(Object.assign({ type: Array, itemType }, definition))(target, propertyName);
107
+ }
108
+ };
109
+ }
110
+ property.array = array;
111
+ })(property = exports.property || (exports.property = {}));
112
+ //# sourceMappingURL=model.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.decorator.js","sourceRoot":"","sources":["../../src/decorators/model.decorator.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,yCAMwB;AACxB,oCAMkB;AAClB,wEAA8D;AAEjD,QAAA,SAAS,GAAG,uBAAgB,CAAC,MAAM,CAG9C,gBAAgB,CAAC,CAAC;AACP,QAAA,oBAAoB,GAAG,uBAAgB,CAAC,MAAM,CAGzD,2BAA2B,CAAC,CAAC;AAClB,QAAA,yBAAyB,GAAG,uBAAgB,CAAC,MAAM,CAG9D,+BAA+B,CAAC,CAAC;AAInC;;;;GAIG;AACH,SAAgB,KAAK,CAAC,UAA2C;IAC/D,OAAO,UAAU,MAAiD;;QAChE,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC;QAC9B,MAAM,GAAG,GAA0B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3D,IAAI,EAAE,MAAA,UAAU,CAAC,IAAI,mCAAI,MAAM,CAAC,IAAI;SACrC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,4BAAqB,CAAC,eAAe,CACrD,iBAAS,EACT,UAAU,EACV,EAAC,aAAa,EAAE,QAAQ,EAAC,CAC1B,CAAC;QAEF,SAAS,CAAC,MAAM,CAAC,CAAC;QAElB,4DAA4D;QAC5D,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC;AAjBD,sBAiBC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,MAA6D,EAC7D,GAA2B;;IAE3B,4EAA4E;IAC5E,SAAS;IACT,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChD,IACE,CAAC,GAAG;QACJ,MAAM,CAAC,UAAU;QACjB,SAAS;QACT,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAC1C;QACA,OAAO,MAAM,CAAC,UAAU,CAAC;KAC1B;IACD,MAAM,QAAQ,GAAG,IAAI,uBAAe,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,WAAW,GACf,MAAA,wBAAiB,CAAC,sBAAsB,CAAC,4BAAoB,EAAE,SAAS,CAAC,mCACzE,EAAE,CAAC;IACL,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC7D,MAAM,UAAU,GACd,MAAA,OAAO,CAAC,IAAI,mCACZ,wBAAiB,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,GAAG,GAA4B,IAAI,KAAK,CAC5C,oCAAoC,QAAQ,CAAC,IAAI,IAAI,QAAQ,cAAc;gBACzE,oEAAoE;gBACpE,0FAA0F,CAC7F,CAAC;YACF,GAAG,CAAC,IAAI,GAAG,4BAA4B,CAAC;YACxC,MAAM,GAAG,CAAC;SACX;QAED,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;gBAChC,MAAA,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,mCAAI,EAAE,CAAC;YAC3C,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnD;QACD,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;QAC1B,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KACzC;IACD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC7B,MAAM,YAAY,GAChB,MAAA,wBAAiB,CAAC,sBAAsB,CAAC,kCAAa,EAAE,SAAS,CAAC,mCAAI,EAAE,CAAC;IAC3E,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,0CAA0C;IAC1C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACtC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AApDD,oDAoDC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,UAAwC;IAC/D,OAAO,+BAAwB,CAAC,eAAe,CAC7C,4BAAoB,EACpB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,EAC7B,EAAC,aAAa,EAAE,WAAW,EAAC,CAC7B,CAAC;AACJ,CAAC;AAND,4BAMC;AAED,WAAiB,QAAQ;IACV,2BAAkB,GAC7B,qDAAqD,CAAC;IAC3C,oBAAW,GAAG,6CAA6C,CAAC;IAEzE;;;;;;OAMG;IACH,SAAgB,KAAK,CACnB,QAAsB,EACtB,UAAwC;QAExC,OAAO,UAAU,MAAc,EAAE,YAAoB;YACnD,MAAM,QAAQ,GAAG,wBAAiB,CAAC,wBAAwB,CACzD,MAAM,EACN,YAAY,CACb,CAAC;YACF,IAAI,QAAQ,KAAK,KAAK,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,SAAA,kBAAkB,CAAC,CAAC;aACrC;iBAAM;gBACL,QAAQ,CACN,MAAM,CAAC,MAAM,CACX,EAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAgC,EACtD,UAAU,CACX,CACF,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;aACzB;QACH,CAAC,CAAC;IACJ,CAAC;IApBe,cAAK,QAoBpB,CAAA;AACH,CAAC,EAjCgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAiCxB"}
@@ -0,0 +1,106 @@
1
+ import { Class } from '../common-types';
2
+ import { DataSource } from '../datasource';
3
+ import { Entity, Model } from '../model';
4
+ import { Repository } from '../repositories';
5
+ import { juggler } from '../repositories/legacy-juggler-bridge';
6
+ /**
7
+ * Type definition for decorators returned by `@repository` decorator factory
8
+ */
9
+ export declare type RepositoryDecorator = (target: Object, key?: string, descriptorOrIndex?: TypedPropertyDescriptor<any> | number) => void;
10
+ /**
11
+ * Metadata for a repository
12
+ */
13
+ export declare class RepositoryMetadata {
14
+ /**
15
+ * Name of the predefined repository
16
+ */
17
+ name?: string;
18
+ /**
19
+ * Name of the model
20
+ */
21
+ modelName?: string;
22
+ /**
23
+ * Class of the model
24
+ */
25
+ modelClass?: typeof Entity;
26
+ /**
27
+ * Name of the data source
28
+ */
29
+ dataSourceName?: string;
30
+ /**
31
+ * Instance of the data source
32
+ */
33
+ dataSource?: juggler.DataSource | DataSource;
34
+ /**
35
+ * Constructor for RepositoryMetadata
36
+ *
37
+ * @param modelOrRepo - Name or class of the model. If the value is a string and
38
+ * `dataSource` is not present, it will treated as the name of a predefined
39
+ * repository
40
+ * @param dataSource - Name or instance of the data source
41
+ *
42
+ * For example:
43
+ *
44
+ * - new RepositoryMetadata(repoName);
45
+ * - new RepositoryMetadata(modelName, dataSourceName);
46
+ * - new RepositoryMetadata(modelClass, dataSourceInstance);
47
+ * - new RepositoryMetadata(modelName, dataSourceInstance);
48
+ * - new RepositoryMetadata(modelClass, dataSourceName);
49
+ */
50
+ constructor(modelOrRepo: string | typeof Entity, dataSource?: string | juggler.DataSource | DataSource);
51
+ }
52
+ /**
53
+ * Decorator for repository injections on properties or method arguments
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * class CustomerController {
58
+ * @repository(CustomerRepository) public custRepo: CustomerRepository;
59
+ *
60
+ * constructor(
61
+ * @repository(ProductRepository) public prodRepo: ProductRepository,
62
+ * ) {}
63
+ * // ...
64
+ * }
65
+ * ```
66
+ *
67
+ * @param repositoryName - Name of the repo
68
+ */
69
+ export declare function repository(repositoryName: string | Class<Repository<Model>>): RepositoryDecorator;
70
+ /**
71
+ * Decorator for DefaultCrudRepository generation and injection on properties
72
+ * or method arguments based on the given model and dataSource (or their names)
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * class CustomerController {
77
+ * @repository('Customer', 'mySqlDataSource')
78
+ * public custRepo: DefaultCrudRepository<
79
+ * Customer,
80
+ * typeof Customer.prototype.id
81
+ * >;
82
+ *
83
+ * constructor(
84
+ * @repository(Product, mySqlDataSource)
85
+ * public prodRepo: DefaultCrudRepository<
86
+ * Product,
87
+ * typeof Product.prototype.id
88
+ * >,
89
+ * ) {}
90
+ * // ...
91
+ * }
92
+ * ```
93
+ *
94
+ * @param model - Name/class of the model
95
+ * @param dataSource - Name/instance of the dataSource
96
+ */
97
+ export declare function repository(model: string | typeof Entity, dataSource: string | juggler.DataSource): RepositoryDecorator;
98
+ export declare namespace repository {
99
+ /**
100
+ * Decorator used to inject a Getter for a repository
101
+ * Mainly intended for usage with repository injections on relation repository
102
+ * factory
103
+ * @param nameOrClass - The repository class (ProductRepository) or a string name ('ProductRepository').
104
+ */
105
+ function getter(nameOrClass: string | Class<Repository<Model>>): (target: Object, member: string | undefined, methodDescriptorOrParameterIndex?: number | TypedPropertyDescriptor<any> | undefined) => void;
106
+ }
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2018,2020. All Rights Reserved.
3
+ // Node module: @loopback/repository
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.repository = exports.RepositoryMetadata = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const core_1 = require("@loopback/core");
10
+ const assert_1 = (0, tslib_1.__importDefault)(require("assert"));
11
+ const repositories_1 = require("../repositories");
12
+ const legacy_juggler_bridge_1 = require("../repositories/legacy-juggler-bridge");
13
+ /**
14
+ * Metadata for a repository
15
+ */
16
+ class RepositoryMetadata {
17
+ /**
18
+ * Constructor for RepositoryMetadata
19
+ *
20
+ * @param modelOrRepo - Name or class of the model. If the value is a string and
21
+ * `dataSource` is not present, it will treated as the name of a predefined
22
+ * repository
23
+ * @param dataSource - Name or instance of the data source
24
+ *
25
+ * For example:
26
+ *
27
+ * - new RepositoryMetadata(repoName);
28
+ * - new RepositoryMetadata(modelName, dataSourceName);
29
+ * - new RepositoryMetadata(modelClass, dataSourceInstance);
30
+ * - new RepositoryMetadata(modelName, dataSourceInstance);
31
+ * - new RepositoryMetadata(modelClass, dataSourceName);
32
+ */
33
+ constructor(modelOrRepo, dataSource) {
34
+ this.name =
35
+ typeof modelOrRepo === 'string' && dataSource === undefined
36
+ ? modelOrRepo
37
+ : undefined;
38
+ this.modelName =
39
+ typeof modelOrRepo === 'string' && dataSource != null
40
+ ? modelOrRepo
41
+ : undefined;
42
+ this.modelClass =
43
+ typeof modelOrRepo === 'function' ? modelOrRepo : undefined;
44
+ this.dataSourceName =
45
+ typeof dataSource === 'string' ? dataSource : undefined;
46
+ this.dataSource = typeof dataSource === 'object' ? dataSource : undefined;
47
+ }
48
+ }
49
+ exports.RepositoryMetadata = RepositoryMetadata;
50
+ function repository(modelOrRepo, dataSource) {
51
+ // if string, repository or not a model ctor,
52
+ // keep it a string / assign to ctor's name (string) for DI
53
+ const stringOrModel = typeof modelOrRepo !== 'string' && !modelOrRepo.prototype.getId
54
+ ? modelOrRepo.name
55
+ : modelOrRepo;
56
+ const meta = new RepositoryMetadata(stringOrModel, dataSource);
57
+ return function (target, key,
58
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
+ descriptorOrIndex) {
60
+ if (key || typeof descriptorOrIndex === 'number') {
61
+ if (meta.name) {
62
+ // Make it shortcut to `@inject('repositories.MyRepo')`
63
+ // Please note key is undefined for constructor. If strictNullChecks
64
+ // is true, the compiler will complain as reflect-metadata won't
65
+ // accept undefined or null for key. Use ! to fool the compiler.
66
+ (0, core_1.inject)('repositories.' + meta.name, meta)(target, key, descriptorOrIndex);
67
+ }
68
+ else {
69
+ // Use repository-factory to create a repository from model + dataSource
70
+ (0, core_1.inject)('', meta, resolve)(target, key, descriptorOrIndex);
71
+ }
72
+ return;
73
+ }
74
+ // Mixin repository into the class
75
+ throw new Error('Class level @repository is not implemented');
76
+ };
77
+ }
78
+ exports.repository = repository;
79
+ (function (repository) {
80
+ /**
81
+ * Decorator used to inject a Getter for a repository
82
+ * Mainly intended for usage with repository injections on relation repository
83
+ * factory
84
+ * @param nameOrClass - The repository class (ProductRepository) or a string name ('ProductRepository').
85
+ */
86
+ function getter(nameOrClass) {
87
+ const name = typeof nameOrClass === 'string' ? nameOrClass : nameOrClass.name;
88
+ return core_1.inject.getter(`repositories.${name}`);
89
+ }
90
+ repository.getter = getter;
91
+ })(repository = exports.repository || (exports.repository = {}));
92
+ /**
93
+ * Resolve the @repository injection
94
+ * @param ctx - Context
95
+ * @param injection - Injection metadata
96
+ */
97
+ async function resolve(ctx, injection) {
98
+ const meta = injection.metadata;
99
+ let modelClass = meta.modelClass;
100
+ if (meta.modelName) {
101
+ modelClass = (await ctx.get('models.' + meta.modelName));
102
+ }
103
+ if (!modelClass) {
104
+ throw new Error('Invalid repository config: ' +
105
+ ' neither modelClass nor modelName was specified.');
106
+ }
107
+ let dataSource = meta.dataSource;
108
+ if (meta.dataSourceName) {
109
+ dataSource = await ctx.get('datasources.' + meta.dataSourceName);
110
+ }
111
+ (0, assert_1.default)(dataSource instanceof legacy_juggler_bridge_1.juggler.DataSource, 'DataSource must be provided');
112
+ return new repositories_1.DefaultCrudRepository(modelClass, dataSource);
113
+ }
114
+ //# sourceMappingURL=repository.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.decorator.js","sourceRoot":"","sources":["../../src/decorators/repository.decorator.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAA0D;AAC1D,iEAA4B;AAI5B,kDAAkE;AAClE,iFAA8D;AAY9D;;GAEG;AACH,MAAa,kBAAkB;IAsB7B;;;;;;;;;;;;;;;OAeG;IACH,YACE,WAAmC,EACnC,UAAqD;QAErD,IAAI,CAAC,IAAI;YACP,OAAO,WAAW,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS;gBACzD,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,CAAC,SAAS;YACZ,OAAO,WAAW,KAAK,QAAQ,IAAI,UAAU,IAAI,IAAI;gBACnD,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,CAAC,UAAU;YACb,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,IAAI,CAAC,cAAc;YACjB,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;CACF;AAxDD,gDAwDC;AAuDD,SAAgB,UAAU,CACxB,WAA8D,EAC9D,UAAwC;IAExC,6CAA6C;IAC7C,2DAA2D;IAC3D,MAAM,aAAa,GACjB,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK;QAC7D,CAAC,CAAC,WAAW,CAAC,IAAI;QAClB,CAAC,CAAE,WAA6B,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC/D,OAAO,UACL,MAAc,EACd,GAAY;IACZ,8DAA8D;IAC9D,iBAAyD;QAEzD,IAAI,GAAG,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;YAChD,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,uDAAuD;gBACvD,oEAAoE;gBACpE,gEAAgE;gBAChE,gEAAgE;gBAChE,IAAA,aAAM,EAAC,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CACvC,MAAM,EACN,GAAI,EACJ,iBAAiB,CAClB,CAAC;aACH;iBAAM;gBACL,wEAAwE;gBACxE,IAAA,aAAM,EAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,GAAI,EAAE,iBAAiB,CAAC,CAAC;aAC5D;YACD,OAAO;SACR;QACD,kCAAkC;QAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC,CAAC;AACJ,CAAC;AArCD,gCAqCC;AAED,WAAiB,UAAU;IACzB;;;;;OAKG;IACH,SAAgB,MAAM,CAAC,WAA8C;QACnE,MAAM,IAAI,GACR,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;QACnE,OAAO,aAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAJe,iBAAM,SAIrB,CAAA;AACH,CAAC,EAZgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAY1B;AAED;;;;GAIG;AACH,KAAK,UAAU,OAAO,CAAC,GAAY,EAAE,SAAoB;IACvD,MAAM,IAAI,GAAG,SAAS,CAAC,QAA8B,CAAC;IACtD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAkB,CAAC;KAC3E;IACD,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,KAAK,CACb,6BAA6B;YAC3B,kDAAkD,CACrD,CAAC;KACH;IAED,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,IAAI,IAAI,CAAC,cAAc,EAAE;QACvB,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,CACxB,cAAc,GAAG,IAAI,CAAC,cAAc,CACrC,CAAC;KACH;IACD,IAAA,gBAAM,EACJ,UAAU,YAAY,+BAAO,CAAC,UAAU,EACxC,6BAA6B,CAC9B,CAAC;IACF,OAAO,IAAI,oCAAqB,CAC9B,UAAU,EACV,UAAiC,CAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { DataObject, PrototypeOf } from './common-types';
2
+ import { Model, ModelDefinition } from './model';
3
+ /**
4
+ * Create (define) a new model class with the given name and definition.
5
+ *
6
+ * @remarks
7
+ *
8
+ * ```ts
9
+ * const Product = defineModelClass(Entity, new ModelDefinition('Product'));
10
+ * ```
11
+ *
12
+ * To enable type safety, you should describe properties of your model:
13
+ *
14
+ * ```ts
15
+ * const Product = defineModelClass<
16
+ * typeof Entity,
17
+ * {id: number, name: string}
18
+ * >(Entity, new ModelDefinition('Product'));
19
+ * ```
20
+ *
21
+ * If your model allows arbitrary (free-form) properties, then add `AnyObject`
22
+ * to the type describing model properties.
23
+ *
24
+ * ```ts
25
+ * const Product = defineModelClass<
26
+ * typeof Entity,
27
+ * AnyObject & {id: number},
28
+ * >(Entity, new ModelDefinition('Product'));
29
+ * ```
30
+ *
31
+ * @param base The base model to extend, typically Model or Entity.
32
+ * You can also use your own base class, e.g. `User`.
33
+ * @param definition Definition of the model to create.
34
+ * @typeParam BaseCtor Constructor type of the base class,
35
+ * e.g `typeof Model` or `typeof Entity`
36
+ * @typeParam Props Interface describing model properties,
37
+ * e.g. `{title: string}` or `AnyObject & {id: number}`.
38
+ */
39
+ export declare function defineModelClass<BaseCtor extends typeof Model, Props extends object = {}>(base: BaseCtor, definition: ModelDefinition): DynamicModelCtor<BaseCtor, Props>;
40
+ /**
41
+ * A type describing a model class created via `defineModelClass`.
42
+ *
43
+ * Assuming template arguments `BaseCtor` and `Props`, this type describes
44
+ * a class constructor with the following properties:
45
+ * - a constructor function accepting `DataObject<Props>` as the only argument,
46
+ * this argument is optional
47
+ * - all static fields (properties, methods) from `BaseCtor` are inherited and
48
+ * available as static fields on the dynamic class
49
+ * - all prototype fields from `BaseCtor` prototype are inherited and available
50
+ * as prototype fields on the dynamic class
51
+ */
52
+ export declare type DynamicModelCtor<BaseCtor extends typeof Model, Props extends object> = {
53
+ /** Model constructor accepting partial model data. */
54
+ new (data?: DataObject<PrototypeOf<BaseCtor> & Props>): PrototypeOf<BaseCtor> & Props;
55
+ } & BaseCtor;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2019,2020. All Rights Reserved.
3
+ // Node module: @loopback/repository
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.defineModelClass = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const assert = (0, tslib_1.__importStar)(require("assert"));
10
+ const decorators_1 = require("./decorators");
11
+ /**
12
+ * Create (define) a new model class with the given name and definition.
13
+ *
14
+ * @remarks
15
+ *
16
+ * ```ts
17
+ * const Product = defineModelClass(Entity, new ModelDefinition('Product'));
18
+ * ```
19
+ *
20
+ * To enable type safety, you should describe properties of your model:
21
+ *
22
+ * ```ts
23
+ * const Product = defineModelClass<
24
+ * typeof Entity,
25
+ * {id: number, name: string}
26
+ * >(Entity, new ModelDefinition('Product'));
27
+ * ```
28
+ *
29
+ * If your model allows arbitrary (free-form) properties, then add `AnyObject`
30
+ * to the type describing model properties.
31
+ *
32
+ * ```ts
33
+ * const Product = defineModelClass<
34
+ * typeof Entity,
35
+ * AnyObject & {id: number},
36
+ * >(Entity, new ModelDefinition('Product'));
37
+ * ```
38
+ *
39
+ * @param base The base model to extend, typically Model or Entity.
40
+ * You can also use your own base class, e.g. `User`.
41
+ * @param definition Definition of the model to create.
42
+ * @typeParam BaseCtor Constructor type of the base class,
43
+ * e.g `typeof Model` or `typeof Entity`
44
+ * @typeParam Props Interface describing model properties,
45
+ * e.g. `{title: string}` or `AnyObject & {id: number}`.
46
+ */
47
+ function defineModelClass(base /* Model or Entity */, definition) {
48
+ const modelName = definition.name;
49
+ const defineNamedModelClass = new Function(base.name, `return class ${modelName} extends ${base.name} {}`);
50
+ const modelClass = defineNamedModelClass(base);
51
+ assert.equal(modelClass.name, modelName);
52
+ // Apply `@model(definition)` to the generated class
53
+ (0, decorators_1.model)(definition)(modelClass);
54
+ return modelClass;
55
+ }
56
+ exports.defineModelClass = defineModelClass;
57
+ //# sourceMappingURL=define-model-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-model-class.js","sourceRoot":"","sources":["../src/define-model-class.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,4DAAiC;AAEjC,6CAAmC;AAGnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,SAAgB,gBAAgB,CAI9B,IAAc,CAAC,qBAAqB,EACpC,UAA2B;IAE3B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;IAClC,MAAM,qBAAqB,GAAG,IAAI,QAAQ,CACxC,IAAI,CAAC,IAAI,EACT,gBAAgB,SAAS,YAAY,IAAI,CAAC,IAAI,KAAK,CACpD,CAAC;IACF,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAG5C,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEzC,oDAAoD;IACpD,IAAA,kBAAK,EAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9B,OAAO,UAAU,CAAC;AACpB,CAAC;AArBD,4CAqBC"}
@@ -0,0 +1,119 @@
1
+ import { PrototypeOf } from './common-types';
2
+ import { Entity, Model } from './model';
3
+ import { DefaultCrudRepository, DefaultKeyValueRepository, juggler, Repository } from './repositories';
4
+ /**
5
+ * Signature for a Repository class bound to a given model. The constructor
6
+ * accepts only the dataSource to use for persistence.
7
+ *
8
+ * `define*` functions return a class implementing this interface.
9
+ *
10
+ * @typeParam M - Model class
11
+ * @typeParam R - Repository class/interface
12
+ */
13
+ export interface ModelRepositoryClass<M extends Model, R extends Repository<M>> {
14
+ /**
15
+ * The constructor for the generated repository class
16
+ * @param dataSource - DataSource object
17
+ */
18
+ new (dataSource: juggler.DataSource): R;
19
+ prototype: R;
20
+ }
21
+ /**
22
+ * Signature for repository classes that can be used as the base class for
23
+ * `define*` functions. The constructor of a base repository class accepts
24
+ * the target model constructor and the datasource to use.
25
+ *
26
+ * `define*` functions require a class implementing this interface on input.
27
+ *
28
+ * @typeParam M - Model class constructor, e.g `typeof Model`.
29
+ * **❗️IMPORTANT: The type argument `M` is describing the model constructor type
30
+ * (e.g. `typeof Model`), not the model instance type (`Model`) as is the case
31
+ * in other repository-related types. The constructor type is required
32
+ * to support custom repository classes requiring a Model subclass in the
33
+ * constructor arguments, e.g. `Entity` or a user-provided model.**
34
+ *
35
+ * @typeParam R - Repository class/interface
36
+ */
37
+ export interface BaseRepositoryClass<M extends typeof Model, R extends Repository<PrototypeOf<M>>> {
38
+ /**
39
+ * The constructor for the generated repository class
40
+ * @param modelClass - Model class
41
+ * @param dataSource - DataSource object
42
+ */
43
+ new (modelClass: M, dataSource: juggler.DataSource): R;
44
+ prototype: R;
45
+ }
46
+ /**
47
+ * Create (define) a repository class for the given model.
48
+ *
49
+ * See also `defineCrudRepositoryClass` and `defineKeyValueRepositoryClass`
50
+ * for convenience wrappers providing repository class factory for the default
51
+ * CRUD and KeyValue implementations.
52
+ *
53
+ * **❗️IMPORTANT: The compiler (TypeScript 3.8) is not able to correctly infer
54
+ * generic arguments `M` and `R` from the class constructors provided in
55
+ * function arguments. You must always provide both M and R types explicitly.**
56
+ *
57
+ * @example
58
+ *
59
+ * ```ts
60
+ * const AddressRepository = defineRepositoryClass<
61
+ * typeof Address,
62
+ * DefaultEntityCrudRepository<
63
+ * Address,
64
+ * typeof Address.prototype.id,
65
+ * AddressRelations
66
+ * >,
67
+ * >(Address, DefaultCrudRepository);
68
+ * ```
69
+ *
70
+ * @param modelClass - A model class such as `Address`.
71
+ * @param baseRepositoryClass - Repository implementation to use as the base,
72
+ * e.g. `DefaultCrudRepository`.
73
+ *
74
+ * @typeParam M - Model class constructor (e.g. `typeof Address`)
75
+ * @typeParam R - Repository class (e.g. `DefaultCrudRepository<Address, number>`)
76
+ */
77
+ export declare function defineRepositoryClass<M extends typeof Model, R extends Repository<PrototypeOf<M>>>(modelClass: M, baseRepositoryClass: BaseRepositoryClass<M, R>): ModelRepositoryClass<PrototypeOf<M>, R>;
78
+ /**
79
+ * Create (define) an entity CRUD repository class for the given model.
80
+ * This function always uses `DefaultCrudRepository` as the base class,
81
+ * use `defineRepositoryClass` if you want to use your own base repository.
82
+ *
83
+ * @example
84
+ *
85
+ * ```ts
86
+ * const ProductRepository = defineCrudRepositoryClass<
87
+ * Product,
88
+ * typeof Product.prototype.id,
89
+ * ProductRelations
90
+ * >(Product);
91
+ * ```
92
+ *
93
+ * @param entityClass - An entity class such as `Product`.
94
+ *
95
+ * @typeParam E - An entity class
96
+ * @typeParam IdType - ID type for the entity
97
+ * @typeParam Relations - Relations for the entity
98
+ */
99
+ export declare function defineCrudRepositoryClass<E extends Entity, IdType, Relations extends object>(entityClass: typeof Entity & {
100
+ prototype: E;
101
+ }): ModelRepositoryClass<E, DefaultCrudRepository<E, IdType, Relations>>;
102
+ /**
103
+ * Create (define) a KeyValue repository class for the given entity.
104
+ * This function always uses `DefaultKeyValueRepository` as the base class,
105
+ * use `defineRepositoryClass` if you want to use your own base repository.
106
+ *
107
+ * @example
108
+ *
109
+ * ```ts
110
+ * const ProductKeyValueRepository = defineKeyValueRepositoryClass(Product);
111
+ * ```
112
+ *
113
+ * @param modelClass - An entity class such as `Product`.
114
+ *
115
+ * @typeParam M - Model class
116
+ */
117
+ export declare function defineKeyValueRepositoryClass<M extends Model>(modelClass: typeof Model & {
118
+ prototype: M;
119
+ }): ModelRepositoryClass<M, DefaultKeyValueRepository<M>>;