@loopback/repository 4.0.0-alpha.7 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +304 -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/{lib → 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/{lib6 → 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/{lib6 → 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/{lib → 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/{lib → 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/{lib6 → 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/{lib/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/{lib → 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/{lib → 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/{lib6 → 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/{lib → 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 +373 -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 -18017
  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 -17
  329. package/lib/decorators/model.js +0 -55
  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 -107
  336. package/lib/decorators/repository.js.map +0 -1
  337. package/lib/index.d.ts +0 -16
  338. package/lib/index.js +0 -20
  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 -53
  347. package/lib/legacy-juggler-bridge.js +0 -142
  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 -137
  356. package/lib/model.js +0 -182
  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.js +0 -35
  365. package/lib/types/any.js.map +0 -1
  366. package/lib/types/array.d.ts +0 -14
  367. package/lib/types/array.js +0 -53
  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.map +0 -1
  372. package/lib/types/date.js.map +0 -1
  373. package/lib/types/index.js +0 -33
  374. package/lib/types/index.js.map +0 -1
  375. package/lib/types/model.d.ts +0 -11
  376. package/lib/types/model.js +0 -25
  377. package/lib/types/model.js.map +0 -1
  378. package/lib/types/number.d.ts +0 -12
  379. package/lib/types/number.js.map +0 -1
  380. package/lib/types/object.js.map +0 -1
  381. package/lib/types/string.js.map +0 -1
  382. package/lib/types/type.d.ts +0 -38
  383. package/lib/types/type.js +0 -7
  384. package/lib/types/type.js.map +0 -1
  385. package/lib/types/union.js.map +0 -1
  386. package/lib6/common-types.d.ts +0 -44
  387. package/lib6/common-types.js +0 -7
  388. package/lib6/common-types.js.map +0 -1
  389. package/lib6/connector.d.ts +0 -12
  390. package/lib6/connector.js +0 -7
  391. package/lib6/connector.js.map +0 -1
  392. package/lib6/crud-connector.d.ts +0 -130
  393. package/lib6/crud-connector.js +0 -7
  394. package/lib6/crud-connector.js.map +0 -1
  395. package/lib6/datasource.d.ts +0 -11
  396. package/lib6/datasource.js.map +0 -1
  397. package/lib6/decorators/model.d.ts +0 -17
  398. package/lib6/decorators/model.js +0 -55
  399. package/lib6/decorators/model.js.map +0 -1
  400. package/lib6/decorators/relation.d.ts +0 -65
  401. package/lib6/decorators/relation.js +0 -126
  402. package/lib6/decorators/relation.js.map +0 -1
  403. package/lib6/decorators/repository.d.ts +0 -61
  404. package/lib6/decorators/repository.js +0 -117
  405. package/lib6/decorators/repository.js.map +0 -1
  406. package/lib6/index.d.ts +0 -16
  407. package/lib6/index.js +0 -20
  408. package/lib6/index.js.map +0 -1
  409. package/lib6/kv-connector.js +0 -7
  410. package/lib6/kv-connector.js.map +0 -1
  411. package/lib6/kv-repository.d.ts +0 -78
  412. package/lib6/kv-repository.js +0 -7
  413. package/lib6/kv-repository.js.map +0 -1
  414. package/lib6/legacy-juggler-bridge.d.ts +0 -53
  415. package/lib6/legacy-juggler-bridge.js +0 -158
  416. package/lib6/legacy-juggler-bridge.js.map +0 -1
  417. package/lib6/loopback-datasource-juggler.d.ts +0 -666
  418. package/lib6/loopback-datasource-juggler.js +0 -8
  419. package/lib6/loopback-datasource-juggler.js.map +0 -1
  420. package/lib6/mixin.d.ts +0 -43
  421. package/lib6/mixin.js +0 -34
  422. package/lib6/mixin.js.map +0 -1
  423. package/lib6/model.d.ts +0 -137
  424. package/lib6/model.js +0 -182
  425. package/lib6/model.js.map +0 -1
  426. package/lib6/query.d.ts +0 -112
  427. package/lib6/query.js +0 -25
  428. package/lib6/query.js.map +0 -1
  429. package/lib6/repository.d.ts +0 -172
  430. package/lib6/repository.js +0 -127
  431. package/lib6/repository.js.map +0 -1
  432. package/lib6/types/any.d.ts +0 -12
  433. package/lib6/types/any.js.map +0 -1
  434. package/lib6/types/array.js.map +0 -1
  435. package/lib6/types/boolean.d.ts +0 -12
  436. package/lib6/types/boolean.js.map +0 -1
  437. package/lib6/types/buffer.js +0 -57
  438. package/lib6/types/buffer.js.map +0 -1
  439. package/lib6/types/date.d.ts +0 -12
  440. package/lib6/types/date.js +0 -60
  441. package/lib6/types/date.js.map +0 -1
  442. package/lib6/types/index.d.ts +0 -30
  443. package/lib6/types/index.js +0 -33
  444. package/lib6/types/index.js.map +0 -1
  445. package/lib6/types/model.js.map +0 -1
  446. package/lib6/types/number.js +0 -40
  447. package/lib6/types/number.js.map +0 -1
  448. package/lib6/types/object.d.ts +0 -15
  449. package/lib6/types/object.js +0 -49
  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.js.map +0 -1
  455. package/lib6/types/union.d.ts +0 -14
  456. package/lib6/types/union.js +0 -51
  457. package/lib6/types/union.js.map +0 -1
@@ -0,0 +1,452 @@
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.DefaultTransactionalRepository = exports.DefaultCrudRepository = exports.ensurePromise = exports.bindModel = exports.juggler = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const assert_1 = (0, tslib_1.__importDefault)(require("assert"));
10
+ const loopback_datasource_juggler_1 = (0, tslib_1.__importDefault)(require("loopback-datasource-juggler"));
11
+ const errors_1 = require("../errors");
12
+ const model_1 = require("../model");
13
+ const relations_1 = require("../relations");
14
+ const type_resolver_1 = require("../type-resolver");
15
+ var juggler;
16
+ (function (juggler) {
17
+ /* eslint-disable @typescript-eslint/no-unused-vars */
18
+ juggler.DataSource = loopback_datasource_juggler_1.default.DataSource;
19
+ juggler.ModelBase = loopback_datasource_juggler_1.default.ModelBase;
20
+ juggler.PersistedModel = loopback_datasource_juggler_1.default.PersistedModel;
21
+ juggler.KeyValueModel = loopback_datasource_juggler_1.default.KeyValueModel;
22
+ // eslint-disable-next-line @typescript-eslint/no-shadow
23
+ juggler.IsolationLevel = loopback_datasource_juggler_1.default.IsolationLevel;
24
+ })(juggler = exports.juggler || (exports.juggler = {}));
25
+ function isModelClass(propertyType) {
26
+ return (!(0, type_resolver_1.isTypeResolver)(propertyType) &&
27
+ typeof propertyType === 'function' &&
28
+ typeof propertyType.definition === 'object' &&
29
+ propertyType.toString().startsWith('class '));
30
+ }
31
+ /**
32
+ * This is a bridge to the legacy DAO class. The function mixes DAO methods
33
+ * into a model class and attach it to a given data source
34
+ * @param modelClass - Model class
35
+ * @param ds - Data source
36
+ * @returns {} The new model class with DAO (CRUD) operations
37
+ */
38
+ function bindModel(modelClass, ds) {
39
+ const BoundModelClass = class extends modelClass {
40
+ };
41
+ BoundModelClass.attachTo(ds);
42
+ return BoundModelClass;
43
+ }
44
+ exports.bindModel = bindModel;
45
+ /**
46
+ * Ensure the value is a promise
47
+ * @param p - Promise or void
48
+ */
49
+ function ensurePromise(p) {
50
+ if (p && p instanceof Promise) {
51
+ return p;
52
+ }
53
+ else {
54
+ return Promise.reject(new Error('The value should be a Promise: ' + p));
55
+ }
56
+ }
57
+ exports.ensurePromise = ensurePromise;
58
+ /**
59
+ * Default implementation of CRUD repository using legacy juggler model
60
+ * and data source
61
+ */
62
+ class DefaultCrudRepository {
63
+ /**
64
+ * Constructor of DefaultCrudRepository
65
+ * @param entityClass - LoopBack 4 entity class
66
+ * @param dataSource - Legacy juggler data source
67
+ */
68
+ constructor(
69
+ // entityClass should have type "typeof T", but that's not supported by TSC
70
+ entityClass, dataSource) {
71
+ this.entityClass = entityClass;
72
+ this.dataSource = dataSource;
73
+ this.inclusionResolvers = new Map();
74
+ const definition = entityClass.definition;
75
+ (0, assert_1.default)(!!definition, `Entity ${entityClass.name} must have valid model definition.`);
76
+ (0, assert_1.default)(definition.idProperties().length > 0, `Entity ${entityClass.name} must have at least one id/pk property.`);
77
+ this.modelClass = this.ensurePersistedModel(entityClass);
78
+ }
79
+ // Create an internal legacy Model attached to the datasource
80
+ ensurePersistedModel(entityClass) {
81
+ const definition = entityClass.definition;
82
+ (0, assert_1.default)(!!definition, `Entity ${entityClass.name} must have valid model definition.`);
83
+ const dataSource = this.dataSource;
84
+ const model = dataSource.getModel(definition.name);
85
+ if (model) {
86
+ // The backing persisted model has been already defined.
87
+ return model;
88
+ }
89
+ return this.definePersistedModel(entityClass);
90
+ }
91
+ /**
92
+ * Creates a legacy persisted model class, attaches it to the datasource and
93
+ * returns it. This method can be overriden in sub-classes to acess methods
94
+ * and properties in the generated model class.
95
+ * @param entityClass - LB4 Entity constructor
96
+ */
97
+ definePersistedModel(entityClass) {
98
+ const dataSource = this.dataSource;
99
+ const definition = entityClass.definition;
100
+ // To handle circular reference back to the same model,
101
+ // we create a placeholder model that will be replaced by real one later
102
+ dataSource.getModel(definition.name, true /* forceCreate */);
103
+ // We need to convert property definitions from PropertyDefinition
104
+ // to plain data object because of a juggler limitation
105
+ const properties = {};
106
+ // We need to convert PropertyDefinition into the definition that
107
+ // the juggler understands
108
+ Object.entries(definition.properties).forEach(([key, value]) => {
109
+ // always clone value so that we do not modify the original model definition
110
+ // ensures that model definitions can be reused with multiple datasources
111
+ if (value.type === 'array' || value.type === Array) {
112
+ value = Object.assign({}, value, {
113
+ type: [value.itemType && this.resolvePropertyType(value.itemType)],
114
+ });
115
+ delete value.itemType;
116
+ }
117
+ else {
118
+ value = Object.assign({}, value, {
119
+ type: this.resolvePropertyType(value.type),
120
+ });
121
+ }
122
+ properties[key] = Object.assign({}, value);
123
+ });
124
+ const modelClass = dataSource.createModel(definition.name, properties, Object.assign(
125
+ // settings that users can override
126
+ { strict: true },
127
+ // user-defined settings
128
+ definition.settings,
129
+ // settings enforced by the framework
130
+ { strictDelete: false }));
131
+ modelClass.attachTo(dataSource);
132
+ return modelClass;
133
+ }
134
+ resolvePropertyType(type) {
135
+ const resolved = (0, type_resolver_1.resolveType)(type);
136
+ return isModelClass(resolved)
137
+ ? this.ensurePersistedModel(resolved)
138
+ : resolved;
139
+ }
140
+ /**
141
+ * @deprecated
142
+ * Function to create a constrained relation repository factory
143
+ *
144
+ * Use `this.createHasManyRepositoryFactoryFor()` instead
145
+ *
146
+ * @param relationName - Name of the relation defined on the source model
147
+ * @param targetRepo - Target repository instance
148
+ */
149
+ _createHasManyRepositoryFactoryFor(relationName, targetRepoGetter) {
150
+ return this.createHasManyRepositoryFactoryFor(relationName, targetRepoGetter);
151
+ }
152
+ /**
153
+ * Function to create a constrained relation repository factory
154
+ *
155
+ * @example
156
+ * ```ts
157
+ * class CustomerRepository extends DefaultCrudRepository<
158
+ * Customer,
159
+ * typeof Customer.prototype.id,
160
+ * CustomerRelations
161
+ * > {
162
+ * public readonly orders: HasManyRepositoryFactory<Order, typeof Customer.prototype.id>;
163
+ *
164
+ * constructor(
165
+ * protected db: juggler.DataSource,
166
+ * orderRepository: EntityCrudRepository<Order, typeof Order.prototype.id>,
167
+ * ) {
168
+ * super(Customer, db);
169
+ * this.orders = this._createHasManyRepositoryFactoryFor(
170
+ * 'orders',
171
+ * orderRepository,
172
+ * );
173
+ * }
174
+ * }
175
+ * ```
176
+ *
177
+ * @param relationName - Name of the relation defined on the source model
178
+ * @param targetRepo - Target repository instance
179
+ */
180
+ createHasManyRepositoryFactoryFor(relationName, targetRepoGetter) {
181
+ const meta = this.entityClass.definition.relations[relationName];
182
+ return (0, relations_1.createHasManyRepositoryFactory)(meta, targetRepoGetter);
183
+ }
184
+ /**
185
+ * Function to create a constrained hasManyThrough relation repository factory
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * class CustomerRepository extends DefaultCrudRepository<
190
+ * Customer,
191
+ * typeof Customer.prototype.id,
192
+ * CustomerRelations
193
+ * > {
194
+ * public readonly cartItems: HasManyRepositoryFactory<CartItem, typeof Customer.prototype.id>;
195
+ *
196
+ * constructor(
197
+ * protected db: juggler.DataSource,
198
+ * cartItemRepository: EntityCrudRepository<CartItem, typeof, CartItem.prototype.id>,
199
+ * throughRepository: EntityCrudRepository<Through, typeof Through.prototype.id>,
200
+ * ) {
201
+ * super(Customer, db);
202
+ * this.cartItems = this.createHasManyThroughRepositoryFactoryFor(
203
+ * 'cartItems',
204
+ * cartItemRepository,
205
+ * );
206
+ * }
207
+ * }
208
+ * ```
209
+ *
210
+ * @param relationName - Name of the relation defined on the source model
211
+ * @param targetRepo - Target repository instance
212
+ * @param throughRepo - Through repository instance
213
+ */
214
+ createHasManyThroughRepositoryFactoryFor(relationName, targetRepoGetter, throughRepoGetter) {
215
+ const meta = this.entityClass.definition.relations[relationName];
216
+ return (0, relations_1.createHasManyThroughRepositoryFactory)(meta, targetRepoGetter, throughRepoGetter);
217
+ }
218
+ /**
219
+ * @deprecated
220
+ * Function to create a belongs to accessor
221
+ *
222
+ * Use `this.createBelongsToAccessorFor()` instead
223
+ *
224
+ * @param relationName - Name of the relation defined on the source model
225
+ * @param targetRepo - Target repository instance
226
+ */
227
+ _createBelongsToAccessorFor(relationName, targetRepoGetter) {
228
+ return this.createBelongsToAccessorFor(relationName, targetRepoGetter);
229
+ }
230
+ /**
231
+ * Function to create a belongs to accessor
232
+ *
233
+ * @param relationName - Name of the relation defined on the source model
234
+ * @param targetRepo - Target repository instance
235
+ */
236
+ createBelongsToAccessorFor(relationName, targetRepoGetter) {
237
+ const meta = this.entityClass.definition.relations[relationName];
238
+ return (0, relations_1.createBelongsToAccessor)(meta, targetRepoGetter, this);
239
+ }
240
+ /**
241
+ * @deprecated
242
+ * Function to create a constrained hasOne relation repository factory
243
+ *
244
+ * @param relationName - Name of the relation defined on the source model
245
+ * @param targetRepo - Target repository instance
246
+ */
247
+ _createHasOneRepositoryFactoryFor(relationName, targetRepoGetter) {
248
+ return this.createHasOneRepositoryFactoryFor(relationName, targetRepoGetter);
249
+ }
250
+ /**
251
+ * Function to create a constrained hasOne relation repository factory
252
+ *
253
+ * @param relationName - Name of the relation defined on the source model
254
+ * @param targetRepo - Target repository instance
255
+ */
256
+ createHasOneRepositoryFactoryFor(relationName, targetRepoGetter) {
257
+ const meta = this.entityClass.definition.relations[relationName];
258
+ return (0, relations_1.createHasOneRepositoryFactory)(meta, targetRepoGetter);
259
+ }
260
+ async create(entity, options) {
261
+ // perform persist hook
262
+ const data = await this.entityToData(entity, options);
263
+ const model = await ensurePromise(this.modelClass.create(data, options));
264
+ return this.toEntity(model);
265
+ }
266
+ async createAll(entities, options) {
267
+ // perform persist hook
268
+ const data = await Promise.all(entities.map(e => this.entityToData(e, options)));
269
+ const models = await ensurePromise(this.modelClass.create(data, options));
270
+ return this.toEntities(models);
271
+ }
272
+ async save(entity, options) {
273
+ const id = this.entityClass.getIdOf(entity);
274
+ if (id == null) {
275
+ return this.create(entity, options);
276
+ }
277
+ else {
278
+ await this.replaceById(id, entity, options);
279
+ return new this.entityClass(entity.toObject());
280
+ }
281
+ }
282
+ async find(filter, options) {
283
+ const include = filter === null || filter === void 0 ? void 0 : filter.include;
284
+ const models = await ensurePromise(this.modelClass.find(this.normalizeFilter(filter), options));
285
+ const entities = this.toEntities(models);
286
+ return this.includeRelatedModels(entities, include, options);
287
+ }
288
+ async findOne(filter, options) {
289
+ const model = await ensurePromise(this.modelClass.findOne(this.normalizeFilter(filter), options));
290
+ if (!model)
291
+ return null;
292
+ const entity = this.toEntity(model);
293
+ const include = filter === null || filter === void 0 ? void 0 : filter.include;
294
+ const resolved = await this.includeRelatedModels([entity], include, options);
295
+ return resolved[0];
296
+ }
297
+ async findById(id, filter, options) {
298
+ const include = filter === null || filter === void 0 ? void 0 : filter.include;
299
+ const model = await ensurePromise(this.modelClass.findById(id, this.normalizeFilter(filter), options));
300
+ if (!model) {
301
+ throw new errors_1.EntityNotFoundError(this.entityClass, id);
302
+ }
303
+ const entity = this.toEntity(model);
304
+ const resolved = await this.includeRelatedModels([entity], include, options);
305
+ return resolved[0];
306
+ }
307
+ update(entity, options) {
308
+ return this.updateById(entity.getId(), entity, options);
309
+ }
310
+ async delete(entity, options) {
311
+ // perform persist hook
312
+ await this.entityToData(entity, options);
313
+ return this.deleteById(entity.getId(), options);
314
+ }
315
+ async updateAll(data, where, options) {
316
+ where = where !== null && where !== void 0 ? where : {};
317
+ const persistedData = await this.entityToData(data, options);
318
+ const result = await ensurePromise(this.modelClass.updateAll(where, persistedData, options));
319
+ return { count: result.count };
320
+ }
321
+ async updateById(id, data, options) {
322
+ if (id === undefined) {
323
+ throw new Error('Invalid Argument: id cannot be undefined');
324
+ }
325
+ const idProp = this.modelClass.definition.idName();
326
+ const where = {};
327
+ where[idProp] = id;
328
+ const result = await this.updateAll(data, where, options);
329
+ if (result.count === 0) {
330
+ throw new errors_1.EntityNotFoundError(this.entityClass, id);
331
+ }
332
+ }
333
+ async replaceById(id, data, options) {
334
+ try {
335
+ const payload = await this.entityToData(data, options);
336
+ await ensurePromise(this.modelClass.replaceById(id, payload, options));
337
+ }
338
+ catch (err) {
339
+ if (err.statusCode === 404) {
340
+ throw new errors_1.EntityNotFoundError(this.entityClass, id);
341
+ }
342
+ throw err;
343
+ }
344
+ }
345
+ async deleteAll(where, options) {
346
+ const result = await ensurePromise(this.modelClass.deleteAll(where, options));
347
+ return { count: result.count };
348
+ }
349
+ async deleteById(id, options) {
350
+ const result = await ensurePromise(this.modelClass.deleteById(id, options));
351
+ if (result.count === 0) {
352
+ throw new errors_1.EntityNotFoundError(this.entityClass, id);
353
+ }
354
+ }
355
+ async count(where, options) {
356
+ const result = await ensurePromise(this.modelClass.count(where, options));
357
+ return { count: result };
358
+ }
359
+ exists(id, options) {
360
+ return ensurePromise(this.modelClass.exists(id, options));
361
+ }
362
+ async execute(...args) {
363
+ return ensurePromise(this.dataSource.execute(...args));
364
+ }
365
+ toEntity(model) {
366
+ return new this.entityClass(model.toObject());
367
+ }
368
+ toEntities(models) {
369
+ return models.map(m => this.toEntity(m));
370
+ }
371
+ /**
372
+ * Register an inclusion resolver for the related model name.
373
+ *
374
+ * @param relationName - Name of the relation defined on the source model
375
+ * @param resolver - Resolver function for getting related model entities
376
+ */
377
+ registerInclusionResolver(relationName, resolver) {
378
+ this.inclusionResolvers.set(relationName, resolver);
379
+ }
380
+ /**
381
+ * Returns model instances that include related models of this repository
382
+ * that have a registered resolver.
383
+ *
384
+ * @param entities - An array of entity instances or data
385
+ * @param include -Inclusion filter
386
+ * @param options - Options for the operations
387
+ */
388
+ async includeRelatedModels(entities, include, options) {
389
+ return (0, relations_1.includeRelatedModels)(this, entities, include, options);
390
+ }
391
+ /**
392
+ * This function works as a persist hook.
393
+ * It converts an entity from the CRUD operations' caller
394
+ * to a persistable data that can will be stored in the
395
+ * back-end database.
396
+ *
397
+ * User can extend `DefaultCrudRepository` then override this
398
+ * function to execute custom persist hook.
399
+ * @param entity The entity passed from CRUD operations' caller.
400
+ * @param options
401
+ */
402
+ async entityToData(entity, options = {}) {
403
+ return this.ensurePersistable(entity, options);
404
+ }
405
+ /** Converts an entity object to a JSON object to check if it contains navigational property.
406
+ * Throws an error if `entity` contains navigational property.
407
+ *
408
+ * @param entity The entity passed from CRUD operations' caller.
409
+ * @param options
410
+ */
411
+ ensurePersistable(entity, options = {}) {
412
+ // FIXME(bajtos) Ideally, we should call toJSON() to convert R to data object
413
+ // Unfortunately that breaks replaceById for MongoDB connector, where we
414
+ // would call replaceId with id *argument* set to ObjectID value but
415
+ // id *property* set to string value.
416
+ /*
417
+ const data: AnyObject =
418
+ typeof entity.toJSON === 'function' ? entity.toJSON() : {...entity};
419
+ */
420
+ const data = new this.entityClass(entity);
421
+ (0, model_1.rejectNavigationalPropertiesInData)(this.entityClass, data);
422
+ return data;
423
+ }
424
+ /**
425
+ * Removes juggler's "include" filter as it does not apply to LoopBack 4
426
+ * relations.
427
+ *
428
+ * @param filter - Query filter
429
+ */
430
+ normalizeFilter(filter) {
431
+ if (!filter)
432
+ return undefined;
433
+ return { ...filter, include: undefined };
434
+ }
435
+ }
436
+ exports.DefaultCrudRepository = DefaultCrudRepository;
437
+ /**
438
+ * Default implementation of CRUD repository using legacy juggler model
439
+ * and data source with beginTransaction() method for connectors which
440
+ * support Transactions
441
+ */
442
+ class DefaultTransactionalRepository extends DefaultCrudRepository {
443
+ async beginTransaction(options) {
444
+ const dsOptions = options !== null && options !== void 0 ? options : {};
445
+ // juggler.Transaction still has the Promise/Callback variants of the
446
+ // Transaction methods
447
+ // so we need it cast it back
448
+ return (await this.dataSource.beginTransaction(dsOptions));
449
+ }
450
+ }
451
+ exports.DefaultTransactionalRepository = DefaultTransactionalRepository;
452
+ //# sourceMappingURL=legacy-juggler-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-juggler-bridge.js","sourceRoot":"","sources":["../../src/repositories/legacy-juggler-bridge.ts"],"names":[],"mappings":"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"}