@loopback/repository 4.1.2 → 5.0.2

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 (250) hide show
  1. package/LICENSE +1 -1
  2. package/dist/connectors/connector.js +1 -1
  3. package/dist/connectors/connector.js.map +1 -1
  4. package/dist/connectors/crud.connector.js +1 -1
  5. package/dist/connectors/crud.connector.js.map +1 -1
  6. package/dist/connectors/index.js +1 -1
  7. package/dist/connectors/index.js.map +1 -1
  8. package/dist/connectors/kv.connector.js +1 -1
  9. package/dist/connectors/kv.connector.js.map +1 -1
  10. package/dist/datasource.js +1 -1
  11. package/dist/datasource.js.map +1 -1
  12. package/dist/decorators/index.js +1 -1
  13. package/dist/decorators/index.js.map +1 -1
  14. package/dist/decorators/metadata.js +1 -1
  15. package/dist/decorators/metadata.js.map +1 -1
  16. package/dist/decorators/model.decorator.js +1 -1
  17. package/dist/decorators/model.decorator.js.map +1 -1
  18. package/dist/decorators/repository.decorator.js +1 -1
  19. package/dist/decorators/repository.decorator.js.map +1 -1
  20. package/dist/define-model-class.js +1 -1
  21. package/dist/define-model-class.js.map +1 -1
  22. package/dist/define-repository-class.js +1 -1
  23. package/dist/define-repository-class.js.map +1 -1
  24. package/dist/errors/entity-not-found.error.js +1 -1
  25. package/dist/errors/entity-not-found.error.js.map +1 -1
  26. package/dist/errors/index.d.ts +1 -0
  27. package/dist/errors/index.js +2 -1
  28. package/dist/errors/index.js.map +1 -1
  29. package/dist/errors/invalid-polymorphism.error.d.ts +5 -0
  30. package/dist/errors/invalid-polymorphism.error.js +22 -0
  31. package/dist/errors/invalid-polymorphism.error.js.map +1 -0
  32. package/dist/errors/invalid-relation.error.d.ts +1 -1
  33. package/dist/errors/invalid-relation.error.js +1 -1
  34. package/dist/errors/invalid-relation.error.js.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/mixins/index.js +1 -1
  38. package/dist/mixins/index.js.map +1 -1
  39. package/dist/mixins/repository.mixin.d.ts +49 -50
  40. package/dist/mixins/repository.mixin.js +1 -1
  41. package/dist/mixins/repository.mixin.js.map +1 -1
  42. package/dist/model.d.ts +7 -1
  43. package/dist/model.js +15 -1
  44. package/dist/model.js.map +1 -1
  45. package/dist/relations/belongs-to/belongs-to.accessor.d.ts +6 -2
  46. package/dist/relations/belongs-to/belongs-to.accessor.js +19 -6
  47. package/dist/relations/belongs-to/belongs-to.accessor.js.map +1 -1
  48. package/dist/relations/belongs-to/belongs-to.decorator.js +1 -1
  49. package/dist/relations/belongs-to/belongs-to.decorator.js.map +1 -1
  50. package/dist/relations/belongs-to/belongs-to.helpers.d.ts +3 -0
  51. package/dist/relations/belongs-to/belongs-to.helpers.js +33 -9
  52. package/dist/relations/belongs-to/belongs-to.helpers.js.map +1 -1
  53. package/dist/relations/belongs-to/belongs-to.inclusion-resolver.d.ts +5 -2
  54. package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js +82 -9
  55. package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js.map +1 -1
  56. package/dist/relations/belongs-to/belongs-to.repository.d.ts +28 -5
  57. package/dist/relations/belongs-to/belongs-to.repository.js +50 -11
  58. package/dist/relations/belongs-to/belongs-to.repository.js.map +1 -1
  59. package/dist/relations/belongs-to/index.d.ts +2 -2
  60. package/dist/relations/belongs-to/index.js +3 -3
  61. package/dist/relations/belongs-to/index.js.map +1 -1
  62. package/dist/relations/has-many/has-many-through.helpers.d.ts +3 -0
  63. package/dist/relations/has-many/has-many-through.helpers.js +26 -2
  64. package/dist/relations/has-many/has-many-through.helpers.js.map +1 -1
  65. package/dist/relations/has-many/has-many-through.inclusion-resolver.d.ts +3 -1
  66. package/dist/relations/has-many/has-many-through.inclusion-resolver.js +93 -22
  67. package/dist/relations/has-many/has-many-through.inclusion-resolver.js.map +1 -1
  68. package/dist/relations/has-many/has-many-through.repository-factory.d.ts +3 -1
  69. package/dist/relations/has-many/has-many-through.repository-factory.js +8 -2
  70. package/dist/relations/has-many/has-many-through.repository-factory.js.map +1 -1
  71. package/dist/relations/has-many/has-many-through.repository.d.ts +66 -11
  72. package/dist/relations/has-many/has-many-through.repository.js +212 -36
  73. package/dist/relations/has-many/has-many-through.repository.js.map +1 -1
  74. package/dist/relations/has-many/has-many.decorator.js +1 -1
  75. package/dist/relations/has-many/has-many.decorator.js.map +1 -1
  76. package/dist/relations/has-many/has-many.helpers.js +1 -1
  77. package/dist/relations/has-many/has-many.helpers.js.map +1 -1
  78. package/dist/relations/has-many/has-many.inclusion-resolver.js +1 -1
  79. package/dist/relations/has-many/has-many.inclusion-resolver.js.map +1 -1
  80. package/dist/relations/has-many/has-many.repository-factory.js +1 -1
  81. package/dist/relations/has-many/has-many.repository-factory.js.map +1 -1
  82. package/dist/relations/has-many/has-many.repository.js +1 -1
  83. package/dist/relations/has-many/has-many.repository.js.map +1 -1
  84. package/dist/relations/has-many/index.d.ts +2 -2
  85. package/dist/relations/has-many/index.js +3 -3
  86. package/dist/relations/has-many/index.js.map +1 -1
  87. package/dist/relations/has-one/has-one.decorator.js +1 -1
  88. package/dist/relations/has-one/has-one.decorator.js.map +1 -1
  89. package/dist/relations/has-one/has-one.helpers.d.ts +3 -0
  90. package/dist/relations/has-one/has-one.helpers.js +35 -9
  91. package/dist/relations/has-one/has-one.helpers.js.map +1 -1
  92. package/dist/relations/has-one/has-one.inclusion-resolver.d.ts +6 -3
  93. package/dist/relations/has-one/has-one.inclusion-resolver.js +83 -8
  94. package/dist/relations/has-one/has-one.inclusion-resolver.js.map +1 -1
  95. package/dist/relations/has-one/has-one.repository-factory.d.ts +9 -3
  96. package/dist/relations/has-one/has-one.repository-factory.js +14 -4
  97. package/dist/relations/has-one/has-one.repository-factory.js.map +1 -1
  98. package/dist/relations/has-one/has-one.repository.d.ts +58 -11
  99. package/dist/relations/has-one/has-one.repository.js +119 -16
  100. package/dist/relations/has-one/has-one.repository.js.map +1 -1
  101. package/dist/relations/has-one/index.js +1 -1
  102. package/dist/relations/has-one/index.js.map +1 -1
  103. package/dist/relations/index.d.ts +2 -0
  104. package/dist/relations/index.js +3 -1
  105. package/dist/relations/index.js.map +1 -1
  106. package/dist/relations/references-many/index.d.ts +4 -0
  107. package/dist/relations/references-many/index.js +12 -0
  108. package/dist/relations/references-many/index.js.map +1 -0
  109. package/dist/relations/references-many/references-many.accessor.d.ts +17 -0
  110. package/dist/relations/references-many/references-many.accessor.js +40 -0
  111. package/dist/relations/references-many/references-many.accessor.js.map +1 -0
  112. package/dist/relations/references-many/references-many.decorator.d.ts +11 -0
  113. package/dist/relations/references-many/references-many.decorator.js +73 -0
  114. package/dist/relations/references-many/references-many.decorator.js.map +1 -0
  115. package/dist/relations/references-many/references-many.helpers.d.ts +17 -0
  116. package/dist/relations/references-many/references-many.helpers.js +63 -0
  117. package/dist/relations/references-many/references-many.helpers.js.map +1 -0
  118. package/dist/relations/references-many/references-many.inclusion-resolver.d.ts +14 -0
  119. package/dist/relations/references-many/references-many.inclusion-resolver.js +42 -0
  120. package/dist/relations/references-many/references-many.inclusion-resolver.js.map +1 -0
  121. package/dist/relations/references-many/references-many.repository.d.ts +28 -0
  122. package/dist/relations/references-many/references-many.repository.js +33 -0
  123. package/dist/relations/references-many/references-many.repository.js.map +1 -0
  124. package/dist/relations/relation.decorator.d.ts +0 -6
  125. package/dist/relations/relation.decorator.js +2 -14
  126. package/dist/relations/relation.decorator.js.map +1 -1
  127. package/dist/relations/relation.filter.solver.d.ts +2 -0
  128. package/dist/relations/relation.filter.solver.js +57 -0
  129. package/dist/relations/relation.filter.solver.js.map +1 -0
  130. package/dist/relations/relation.helpers.js +18 -3
  131. package/dist/relations/relation.helpers.js.map +1 -1
  132. package/dist/relations/relation.types.d.ts +52 -1
  133. package/dist/relations/relation.types.js +1 -1
  134. package/dist/relations/relation.types.js.map +1 -1
  135. package/dist/repositories/constraint-utils.js +1 -1
  136. package/dist/repositories/constraint-utils.js.map +1 -1
  137. package/dist/repositories/index.d.ts +2 -2
  138. package/dist/repositories/index.js +3 -3
  139. package/dist/repositories/index.js.map +1 -1
  140. package/dist/repositories/kv.repository.bridge.js +1 -1
  141. package/dist/repositories/kv.repository.bridge.js.map +1 -1
  142. package/dist/repositories/kv.repository.d.ts +2 -2
  143. package/dist/repositories/kv.repository.js +1 -1
  144. package/dist/repositories/kv.repository.js.map +1 -1
  145. package/dist/repositories/legacy-juggler-bridge.d.ts +36 -9
  146. package/dist/repositories/legacy-juggler-bridge.js +38 -16
  147. package/dist/repositories/legacy-juggler-bridge.js.map +1 -1
  148. package/dist/repositories/repository.js +1 -1
  149. package/dist/repositories/repository.js.map +1 -1
  150. package/dist/type-resolver.js +1 -1
  151. package/dist/type-resolver.js.map +1 -1
  152. package/dist/types/any.js +1 -1
  153. package/dist/types/any.js.map +1 -1
  154. package/dist/types/array.js +1 -1
  155. package/dist/types/array.js.map +1 -1
  156. package/dist/types/boolean.js +1 -1
  157. package/dist/types/boolean.js.map +1 -1
  158. package/dist/types/buffer.js +1 -1
  159. package/dist/types/buffer.js.map +1 -1
  160. package/dist/types/date.js +1 -1
  161. package/dist/types/date.js.map +1 -1
  162. package/dist/types/index.js +1 -1
  163. package/dist/types/index.js.map +1 -1
  164. package/dist/types/model.js +1 -1
  165. package/dist/types/model.js.map +1 -1
  166. package/dist/types/null.js +1 -1
  167. package/dist/types/null.js.map +1 -1
  168. package/dist/types/number.js +1 -1
  169. package/dist/types/number.js.map +1 -1
  170. package/dist/types/object.js +1 -1
  171. package/dist/types/object.js.map +1 -1
  172. package/dist/types/string.js +1 -1
  173. package/dist/types/string.js.map +1 -1
  174. package/dist/types/type.js +1 -1
  175. package/dist/types/type.js.map +1 -1
  176. package/dist/types/union.js +1 -1
  177. package/dist/types/union.js.map +1 -1
  178. package/package.json +15 -15
  179. package/src/connectors/connector.ts +1 -1
  180. package/src/connectors/crud.connector.ts +1 -1
  181. package/src/connectors/index.ts +1 -1
  182. package/src/connectors/kv.connector.ts +1 -1
  183. package/src/datasource.ts +1 -1
  184. package/src/decorators/index.ts +1 -1
  185. package/src/decorators/metadata.ts +1 -1
  186. package/src/decorators/model.decorator.ts +1 -1
  187. package/src/decorators/repository.decorator.ts +1 -1
  188. package/src/define-model-class.ts +1 -1
  189. package/src/define-repository-class.ts +1 -1
  190. package/src/errors/entity-not-found.error.ts +1 -1
  191. package/src/errors/index.ts +2 -1
  192. package/src/errors/invalid-polymorphism.error.ts +28 -0
  193. package/src/errors/invalid-relation.error.ts +2 -2
  194. package/src/index.ts +1 -1
  195. package/src/mixins/index.ts +1 -1
  196. package/src/mixins/repository.mixin.ts +1 -6
  197. package/src/model.ts +20 -1
  198. package/src/relations/belongs-to/belongs-to.accessor.ts +36 -7
  199. package/src/relations/belongs-to/belongs-to.decorator.ts +2 -2
  200. package/src/relations/belongs-to/belongs-to.helpers.ts +37 -10
  201. package/src/relations/belongs-to/belongs-to.inclusion-resolver.ts +109 -18
  202. package/src/relations/belongs-to/belongs-to.repository.ts +78 -18
  203. package/src/relations/belongs-to/index.ts +3 -3
  204. package/src/relations/has-many/has-many-through.helpers.ts +28 -2
  205. package/src/relations/has-many/has-many-through.inclusion-resolver.ts +118 -27
  206. package/src/relations/has-many/has-many-through.repository-factory.ts +22 -4
  207. package/src/relations/has-many/has-many-through.repository.ts +344 -77
  208. package/src/relations/has-many/has-many.decorator.ts +1 -1
  209. package/src/relations/has-many/has-many.helpers.ts +1 -1
  210. package/src/relations/has-many/has-many.inclusion-resolver.ts +1 -1
  211. package/src/relations/has-many/has-many.repository-factory.ts +1 -1
  212. package/src/relations/has-many/has-many.repository.ts +1 -1
  213. package/src/relations/has-many/index.ts +3 -3
  214. package/src/relations/has-one/has-one.decorator.ts +1 -1
  215. package/src/relations/has-one/has-one.helpers.ts +41 -14
  216. package/src/relations/has-one/has-one.inclusion-resolver.ts +110 -16
  217. package/src/relations/has-one/has-one.repository-factory.ts +35 -7
  218. package/src/relations/has-one/has-one.repository.ts +189 -36
  219. package/src/relations/has-one/index.ts +1 -1
  220. package/src/relations/index.ts +3 -1
  221. package/src/relations/references-many/index.ts +9 -0
  222. package/src/relations/references-many/references-many.accessor.ts +76 -0
  223. package/src/relations/references-many/references-many.decorator.ts +100 -0
  224. package/src/relations/references-many/references-many.helpers.ts +82 -0
  225. package/src/relations/references-many/references-many.inclusion-resolver.ts +80 -0
  226. package/src/relations/references-many/references-many.repository.ts +55 -0
  227. package/src/relations/relation.decorator.ts +1 -13
  228. package/src/relations/relation.filter.solver.ts +56 -0
  229. package/src/relations/relation.helpers.ts +18 -3
  230. package/src/relations/relation.types.ts +52 -1
  231. package/src/repositories/constraint-utils.ts +1 -1
  232. package/src/repositories/index.ts +3 -3
  233. package/src/repositories/kv.repository.bridge.ts +1 -1
  234. package/src/repositories/kv.repository.ts +3 -3
  235. package/src/repositories/legacy-juggler-bridge.ts +80 -16
  236. package/src/repositories/repository.ts +1 -1
  237. package/src/type-resolver.ts +1 -1
  238. package/src/types/any.ts +1 -1
  239. package/src/types/array.ts +1 -1
  240. package/src/types/boolean.ts +1 -1
  241. package/src/types/buffer.ts +1 -1
  242. package/src/types/date.ts +1 -1
  243. package/src/types/index.ts +1 -1
  244. package/src/types/model.ts +1 -1
  245. package/src/types/null.ts +1 -1
  246. package/src/types/number.ts +1 -1
  247. package/src/types/object.ts +1 -1
  248. package/src/types/string.ts +1 -1
  249. package/src/types/type.ts +1 -1
  250. package/src/types/union.ts +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references-many.accessor.js","sourceRoot":"","sources":["../../../src/relations/references-many/references-many.accessor.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,0DAAiC;AASjC,uEAAwE;AACxE,6FAA2F;AAC3F,6EAA6E;AAE7E,MAAM,KAAK,GAAG,IAAA,eAAY,EACxB,wDAAwD,CACzD,CAAC;AAcF;;GAEG;AACH,SAAgB,4BAA4B,CAM1C,sBAAgD,EAChD,gBAAiE,EACjE,gBAAwD;IAExD,MAAM,IAAI,GAAG,IAAA,uDAA6B,EAAC,sBAAsB,CAAC,CAAC;IACnE,KAAK,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,MAAM,GACV,KAAK,UAAU,kCAAkC,CAAC,QAAkB;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,WAAW,CAAC,UAA0B,CAAC,CAAC;QAChE,6CAA6C;QAC7C,oEAAoE;QACpE,oEAAoE;QACpE,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,SAA8B,CAAC;SACvC;QACD,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,UAAU,CAAC,EAAE,eAAe,EAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAI,4DAA+B,CACzD,gBAAgB,EAChB,UAAgC,CACjC,CAAC;QACF,OAAO,eAAe,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,GAAG,IAAA,0EAAqC,EAC9D,IAAI,EACJ,gBAAgB,CACjB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAtCD,oEAsCC"}
@@ -0,0 +1,11 @@
1
+ import { Entity, EntityResolver, PropertyDefinition } from '../../model';
2
+ import { ReferencesManyDefinition } from '../relation.types';
3
+ /**
4
+ * Decorator for referencesMany
5
+ * @param targetResolver - A resolver function that returns the target model for
6
+ * a referencesMany relation
7
+ * @param definition - Optional metadata for setting up a referencesMany relation
8
+ * @param propertyDefinition - Optional metadata for setting up the property
9
+ * @returns A property decorator
10
+ */
11
+ export declare function referencesMany<T extends Entity>(targetResolver: EntityResolver<T>, definition?: Partial<ReferencesManyDefinition>, propertyDefinition?: Partial<PropertyDefinition>): (decoratedTarget: Entity, decoratedKey: string) => void;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. and LoopBack contributors 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.referencesMany = void 0;
8
+ const core_1 = require("@loopback/core");
9
+ const decorators_1 = require("../../decorators");
10
+ const relation_decorator_1 = require("../relation.decorator");
11
+ const relation_types_1 = require("../relation.types");
12
+ /**
13
+ * Decorator for referencesMany
14
+ * @param targetResolver - A resolver function that returns the target model for
15
+ * a referencesMany relation
16
+ * @param definition - Optional metadata for setting up a referencesMany relation
17
+ * @param propertyDefinition - Optional metadata for setting up the property
18
+ * @returns A property decorator
19
+ */
20
+ function referencesMany(targetResolver, definition, propertyDefinition) {
21
+ return function (decoratedTarget, decoratedKey) {
22
+ var _a, _b, _c;
23
+ const propType = (_a = core_1.MetadataInspector.getDesignTypeForProperty(decoratedTarget, decoratedKey)) !== null && _a !== void 0 ? _a : propertyDefinition === null || propertyDefinition === void 0 ? void 0 : propertyDefinition.type;
24
+ if (!propType) {
25
+ const fullPropName = core_1.DecoratorFactory.getTargetName(decoratedTarget, decoratedKey);
26
+ throw new Error(`Cannot infer type of model property ${fullPropName} because ` +
27
+ 'TypeScript compiler option `emitDecoratorMetadata` is not set. ' +
28
+ 'Please enable `emitDecoratorMetadata` or use the third argument of ' +
29
+ '`@referencesMany` decorator to specify the property type explicitly.');
30
+ }
31
+ const sourceKeyType = core_1.MetadataInspector.getDesignTypeForProperty(targetResolver().prototype, (_b = definition === null || definition === void 0 ? void 0 : definition.keyTo) !== null && _b !== void 0 ? _b : 'id');
32
+ if (!sourceKeyType) {
33
+ const fullPropName = core_1.DecoratorFactory.getTargetName(targetResolver().prototype, (_c = definition === null || definition === void 0 ? void 0 : definition.keyTo) !== null && _c !== void 0 ? _c : 'id');
34
+ throw new Error(`Cannot infer type of model property ${fullPropName} because ` +
35
+ 'TypeScript compiler option `emitDecoratorMetadata` is not set. ' +
36
+ 'Please enable `emitDecoratorMetadata` or use the second argument of ' +
37
+ '`@referencesMany` decorator to specify the property type explicitly.');
38
+ }
39
+ const propMeta = Object.assign({},
40
+ // properties provided by the caller
41
+ propertyDefinition,
42
+ // properties enforced by the decorator
43
+ {
44
+ type: propType,
45
+ itemType: sourceKeyType,
46
+ // TODO(bajtos) Make the foreign key required once our REST API layer
47
+ // allows controller methods to exclude required properties
48
+ // required: true,
49
+ });
50
+ (0, decorators_1.property)(propMeta)(decoratedTarget, decoratedKey);
51
+ // @referencesMany() is typically decorating the foreign key property,
52
+ // e.g. customerIds. We need to strip the trailing "Ids" suffix from the name.
53
+ const relationName = decoratedKey.replace(/Ids$/, 's');
54
+ const meta = Object.assign(
55
+ // default values, can be customized by the caller
56
+ {
57
+ keyFrom: decoratedKey,
58
+ name: relationName,
59
+ },
60
+ // properties provided by the caller
61
+ definition,
62
+ // properties enforced by the decorator
63
+ {
64
+ type: relation_types_1.RelationType.referencesMany,
65
+ targetsMany: true,
66
+ source: decoratedTarget.constructor,
67
+ target: targetResolver,
68
+ });
69
+ (0, relation_decorator_1.relation)(meta)(decoratedTarget, decoratedKey);
70
+ };
71
+ }
72
+ exports.referencesMany = referencesMany;
73
+ //# sourceMappingURL=references-many.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references-many.decorator.js","sourceRoot":"","sources":["../../../src/relations/references-many/references-many.decorator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,yCAAmE;AACnE,iDAA0C;AAE1C,8DAA+C;AAC/C,sDAAyE;AAEzE;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,cAAiC,EACjC,UAA8C,EAC9C,kBAAgD;IAEhD,OAAO,UAAU,eAAuB,EAAE,YAAoB;;QAC5D,MAAM,QAAQ,GACZ,MAAA,wBAAiB,CAAC,wBAAwB,CACxC,eAAe,EACf,YAAY,CACb,mCAAI,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,CAAC;QAEhC,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,YAAY,GAAG,uBAAgB,CAAC,aAAa,CACjD,eAAe,EACf,YAAY,CACb,CAAC;YACF,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,WAAW;gBAC5D,iEAAiE;gBACjE,qEAAqE;gBACrE,sEAAsE,CACzE,CAAC;SACH;QAED,MAAM,aAAa,GAAG,wBAAiB,CAAC,wBAAwB,CAC9D,cAAc,EAAE,CAAC,SAAS,EAC1B,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,mCAAI,IAAI,CAC1B,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,YAAY,GAAG,uBAAgB,CAAC,aAAa,CACjD,cAAc,EAAE,CAAC,SAAS,EAC1B,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,mCAAI,IAAI,CAC1B,CAAC;YACF,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,WAAW;gBAC5D,iEAAiE;gBACjE,sEAAsE;gBACtE,sEAAsE,CACzE,CAAC;SACH;QAED,MAAM,QAAQ,GAAuB,MAAM,CAAC,MAAM,CAChD,EAAE;QACF,oCAAoC;QACpC,kBAAkB;QAClB,uCAAuC;QACvC;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,aAAa;YACvB,qEAAqE;YACrE,2DAA2D;YAC3D,kBAAkB;SACnB,CACF,CAAC;QACF,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAElD,sEAAsE;QACtE,8EAA8E;QAC9E,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvD,MAAM,IAAI,GAA6B,MAAM,CAAC,MAAM;QAClD,kDAAkD;QAClD;YACE,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,YAAY;SACnB;QACD,oCAAoC;QACpC,UAAU;QACV,uCAAuC;QACvC;YACE,IAAI,EAAE,6BAAY,CAAC,cAAc;YACjC,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,eAAe,CAAC,WAAW;YACnC,MAAM,EAAE,cAAc;SACvB,CACF,CAAC;QACF,IAAA,6BAAQ,EAAC,IAAI,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAhFD,wCAgFC"}
@@ -0,0 +1,17 @@
1
+ import { ReferencesManyDefinition } from '../relation.types';
2
+ /**
3
+ * Relation definition with optional metadata (e.g. `keyTo`) filled in.
4
+ * @internal
5
+ */
6
+ export declare type ReferencesManyResolvedDefinition = ReferencesManyDefinition & {
7
+ keyFrom: string;
8
+ keyTo: string;
9
+ };
10
+ /**
11
+ * Resolves given referencesMany metadata if target is specified to be a resolver.
12
+ * Mainly used to infer what the `keyTo` property should be from the target's
13
+ * property id metadata
14
+ * @param relationMeta - referencesMany metadata to resolve
15
+ * @internal
16
+ */
17
+ export declare function resolveReferencesManyMetadata(relationMeta: ReferencesManyDefinition): ReferencesManyResolvedDefinition;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. and LoopBack contributors 2019. 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.resolveReferencesManyMetadata = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const debug_1 = tslib_1.__importDefault(require("debug"));
10
+ const lodash_1 = require("lodash");
11
+ const errors_1 = require("../../errors");
12
+ const type_resolver_1 = require("../../type-resolver");
13
+ const relation_types_1 = require("../relation.types");
14
+ const debug = (0, debug_1.default)('loopback:repository:relations:references-many:helpers');
15
+ /**
16
+ * Resolves given referencesMany metadata if target is specified to be a resolver.
17
+ * Mainly used to infer what the `keyTo` property should be from the target's
18
+ * property id metadata
19
+ * @param relationMeta - referencesMany metadata to resolve
20
+ * @internal
21
+ */
22
+ function resolveReferencesManyMetadata(relationMeta) {
23
+ if (relationMeta.type !== relation_types_1.RelationType.referencesMany) {
24
+ const reason = 'relation type must be ReferencesMany';
25
+ throw new errors_1.InvalidRelationError(reason, relationMeta);
26
+ }
27
+ if (!(0, type_resolver_1.isTypeResolver)(relationMeta.target)) {
28
+ const reason = 'target must be a type resolver';
29
+ throw new errors_1.InvalidRelationError(reason, relationMeta);
30
+ }
31
+ const sourceModel = relationMeta.source;
32
+ if (!sourceModel || !sourceModel.modelName) {
33
+ const reason = 'source model must be defined';
34
+ throw new errors_1.InvalidRelationError(reason, relationMeta);
35
+ }
36
+ const targetModel = relationMeta.target();
37
+ const targetName = targetModel.modelName;
38
+ debug('Resolved model %s from given metadata: %o', targetName, targetModel);
39
+ let keyFrom;
40
+ if (relationMeta.keyFrom &&
41
+ relationMeta.source.definition.properties[relationMeta.keyFrom]) {
42
+ keyFrom = relationMeta.keyFrom;
43
+ }
44
+ else {
45
+ keyFrom = (0, lodash_1.camelCase)(targetName + '_ids');
46
+ }
47
+ const targetProperties = targetModel.definition.properties;
48
+ debug('relation metadata from %o: %o', targetName, targetProperties);
49
+ if (relationMeta.keyTo && targetProperties[relationMeta.keyTo]) {
50
+ // The explicit cast is needed because of a limitation of type inference
51
+ return Object.assign(relationMeta, {
52
+ keyFrom,
53
+ });
54
+ }
55
+ const targetPrimaryKey = targetModel.definition.idProperties()[0];
56
+ if (!targetPrimaryKey) {
57
+ const reason = `${targetName} does not have any primary key (id property)`;
58
+ throw new errors_1.InvalidRelationError(reason, relationMeta);
59
+ }
60
+ return Object.assign(relationMeta, { keyFrom, keyTo: targetPrimaryKey });
61
+ }
62
+ exports.resolveReferencesManyMetadata = resolveReferencesManyMetadata;
63
+ //# sourceMappingURL=references-many.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references-many.helpers.js","sourceRoot":"","sources":["../../../src/relations/references-many/references-many.helpers.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,0DAAiC;AACjC,mCAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAyE;AAEzE,MAAM,KAAK,GAAG,IAAA,eAAY,EACxB,uDAAuD,CACxD,CAAC;AAWF;;;;;;GAMG;AACH,SAAgB,6BAA6B,CAC3C,YAAsC;IAEtC,IAAK,YAAY,CAAC,IAAqB,KAAK,6BAAY,CAAC,cAAc,EAAE;QACvE,MAAM,MAAM,GAAG,sCAAsC,CAAC;QACtD,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,IAAI,CAAC,IAAA,8BAAc,EAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC1C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;IACzC,KAAK,CAAC,2CAA2C,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE5E,IAAI,OAAO,CAAC;IACZ,IACE,YAAY,CAAC,OAAO;QACpB,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAC/D;QACA,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;KAChC;SAAM;QACL,OAAO,GAAG,IAAA,kBAAS,EAAC,UAAU,GAAG,MAAM,CAAC,CAAC;KAC1C;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;IAC3D,KAAK,CAAC,+BAA+B,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAErE,IAAI,YAAY,CAAC,KAAK,IAAI,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QAC9D,wEAAwE;QACxE,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;YACjC,OAAO;SACR,CAAqC,CAAC;KACxC;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,MAAM,GAAG,GAAG,UAAU,8CAA8C,CAAC;QAC3E,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAC,CAAC,CAAC;AACzE,CAAC;AAlDD,sEAkDC"}
@@ -0,0 +1,14 @@
1
+ import { Entity } from '../../model';
2
+ import { EntityCrudRepository } from '../../repositories';
3
+ import { Getter, InclusionResolver, ReferencesManyDefinition } from '../relation.types';
4
+ /**
5
+ * Creates InclusionResolver for ReferencesMany relation.
6
+ * Notice that this function only generates the inclusionResolver.
7
+ * It doesn't register it for the source repository.
8
+ *
9
+ * Notice: scope field for inclusion is not supported yet
10
+ *
11
+ * @param meta - resolved ReferencesManyMetadata
12
+ * @param getTargetRepo - target repository i.e where related instances are
13
+ */
14
+ export declare function createReferencesManyInclusionResolver<Target extends Entity, TargetIds, TargetRelations extends object>(meta: ReferencesManyDefinition, getTargetRepo: Getter<EntityCrudRepository<Target, TargetIds, TargetRelations>>): InclusionResolver<Entity, Target>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. and LoopBack contributors 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.createReferencesManyInclusionResolver = void 0;
8
+ const relation_helpers_1 = require("../relation.helpers");
9
+ const references_many_helpers_1 = require("./references-many.helpers");
10
+ /**
11
+ * Creates InclusionResolver for ReferencesMany relation.
12
+ * Notice that this function only generates the inclusionResolver.
13
+ * It doesn't register it for the source repository.
14
+ *
15
+ * Notice: scope field for inclusion is not supported yet
16
+ *
17
+ * @param meta - resolved ReferencesManyMetadata
18
+ * @param getTargetRepo - target repository i.e where related instances are
19
+ */
20
+ function createReferencesManyInclusionResolver(meta, getTargetRepo) {
21
+ const relationMeta = (0, references_many_helpers_1.resolveReferencesManyMetadata)(meta);
22
+ return async function fetchIncludedModels(entities, inclusion, options) {
23
+ if (!entities.length)
24
+ return [];
25
+ const sourceKey = relationMeta.keyFrom;
26
+ const sourceMap = entities.map(e => e[sourceKey]);
27
+ const sourceIds = sourceMap.flat();
28
+ const targetKey = relationMeta.keyTo;
29
+ const dedupedSourceIds = (0, relation_helpers_1.deduplicate)(sourceIds);
30
+ const scope = typeof inclusion === 'string' ? {} : inclusion.scope;
31
+ const targetRepo = await getTargetRepo();
32
+ const targetsFound = await (0, relation_helpers_1.findByForeignKeys)(targetRepo, targetKey, dedupedSourceIds.filter(e => e), scope, options);
33
+ return sourceMap.map(chainIds => {
34
+ if (!chainIds)
35
+ return [];
36
+ const targets = (0, relation_helpers_1.flattenTargetsOfOneToOneRelation)(chainIds, targetsFound, targetKey);
37
+ return targets.filter((v) => v != null);
38
+ });
39
+ };
40
+ }
41
+ exports.createReferencesManyInclusionResolver = createReferencesManyInclusionResolver;
42
+ //# sourceMappingURL=references-many.inclusion-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references-many.inclusion-resolver.js","sourceRoot":"","sources":["../../../src/relations/references-many/references-many.inclusion-resolver.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAMhE,0DAK6B;AAM7B,uEAAwE;AAExE;;;;;;;;;GASG;AACH,SAAgB,qCAAqC,CAKnD,IAA8B,EAC9B,aAEC;IAED,MAAM,YAAY,GAAG,IAAA,uDAA6B,EAAC,IAAI,CAAC,CAAC;IAEzD,OAAO,KAAK,UAAU,mBAAmB,CACvC,QAAkB,EAClB,SAA0B,EAC1B,OAAiB;QAEjB,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEhC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,YAAY,CAAC,KAA4B,CAAC;QAC5D,MAAM,gBAAgB,GAAG,IAAA,8BAAW,EAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,SAAS,CAAC,KAAwB,CAAC;QAE3E,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,IAAA,oCAAiB,EAC1C,UAAU,EACV,SAAS,EACT,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/B,KAAK,EACL,OAAO,CACR,CAAC;QAEF,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAA,mDAAgC,EAC9C,QAAQ,EACR,YAAY,EACZ,SAAS,CACV,CAAC;YACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAiC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AA/CD,sFA+CC"}
@@ -0,0 +1,28 @@
1
+ import { Getter } from '@loopback/core';
2
+ import { DataObject, Options } from '../../common-types';
3
+ import { Entity } from '../../model';
4
+ import { EntityCrudRepository } from '../../repositories';
5
+ /**
6
+ * CRUD operations for a target repository of a ReferencesMany relation
7
+ */
8
+ export interface ReferencesManyRepository<Target extends Entity> {
9
+ /**
10
+ * Gets the target model instance
11
+ * @param options
12
+ * @returns A promise resolved with the target object or rejected
13
+ * with an EntityNotFoundError when target model instance was not found.
14
+ */
15
+ get(options?: Options): Promise<Target>;
16
+ }
17
+ export declare class DefaultReferencesManyRepository<TargetEntity extends Entity, TargetIds, TargetRepository extends EntityCrudRepository<TargetEntity, TargetIds>> implements ReferencesManyRepository<TargetEntity> {
18
+ getTargetRepository: Getter<TargetRepository>;
19
+ constraint: DataObject<TargetEntity>;
20
+ /**
21
+ * Constructor of DefaultReferencesManyEntityCrudRepository
22
+ * @param getTargetRepository - the getter of the related target model repository instance
23
+ * @param constraint - the key value pair representing foreign key name to constrain
24
+ * the target repository instance
25
+ */
26
+ constructor(getTargetRepository: Getter<TargetRepository>, constraint: DataObject<TargetEntity>);
27
+ get(options?: Options): Promise<TargetEntity>;
28
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. and LoopBack contributors 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.DefaultReferencesManyRepository = void 0;
8
+ const errors_1 = require("../../errors");
9
+ const repositories_1 = require("../../repositories");
10
+ class DefaultReferencesManyRepository {
11
+ /**
12
+ * Constructor of DefaultReferencesManyEntityCrudRepository
13
+ * @param getTargetRepository - the getter of the related target model repository instance
14
+ * @param constraint - the key value pair representing foreign key name to constrain
15
+ * the target repository instance
16
+ */
17
+ constructor(getTargetRepository, constraint) {
18
+ this.getTargetRepository = getTargetRepository;
19
+ this.constraint = constraint;
20
+ }
21
+ async get(options) {
22
+ const targetRepo = await this.getTargetRepository();
23
+ const result = await targetRepo.find((0, repositories_1.constrainFilter)(undefined, this.constraint), options);
24
+ if (!result.length) {
25
+ // We don't have a direct access to the foreign key value here :(
26
+ const id = 'constraint ' + JSON.stringify(this.constraint);
27
+ throw new errors_1.EntityNotFoundError(targetRepo.entityClass, id);
28
+ }
29
+ return result[0];
30
+ }
31
+ }
32
+ exports.DefaultReferencesManyRepository = DefaultReferencesManyRepository;
33
+ //# sourceMappingURL=references-many.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references-many.repository.js","sourceRoot":"","sources":["../../../src/relations/references-many/references-many.repository.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAIhE,yCAAiD;AAEjD,qDAAyE;AAezE,MAAa,+BAA+B;IAM1C;;;;;OAKG;IACH,YACS,mBAA6C,EAC7C,UAAoC;QADpC,wBAAmB,GAAnB,mBAAmB,CAA0B;QAC7C,eAAU,GAAV,UAAU,CAA0B;IAC1C,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,OAAiB;QACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAClC,IAAA,8BAAe,EAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,EAC3C,OAAO,CACR,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,iEAAiE;YACjE,MAAM,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM,IAAI,4BAAmB,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SAC3D;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;CACF;AA9BD,0EA8BC"}
@@ -31,9 +31,3 @@ export declare function embedsMany(definition?: Object): PropertyDecorator;
31
31
  * @returns A property decorator
32
32
  */
33
33
  export declare function referencesOne(definition?: Object): PropertyDecorator;
34
- /**
35
- * Decorator for referencesMany
36
- * @param definition
37
- * @returns A property decorator
38
- */
39
- export declare function referencesMany(definition?: Object): PropertyDecorator;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
- // Copyright IBM Corp. 2018,2020. All Rights Reserved.
2
+ // Copyright IBM Corp. and LoopBack contributors 2018,2020. All Rights Reserved.
3
3
  // Node module: @loopback/repository
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.referencesMany = exports.referencesOne = exports.embedsMany = exports.embedsOne = exports.getModelRelations = exports.relation = exports.RELATIONS_KEY = void 0;
7
+ exports.referencesOne = exports.embedsMany = exports.embedsOne = exports.getModelRelations = exports.relation = exports.RELATIONS_KEY = void 0;
8
8
  const core_1 = require("@loopback/core");
9
9
  const decorators_1 = require("../decorators");
10
10
  const relation_types_1 = require("./relation.types");
@@ -73,16 +73,4 @@ function referencesOne(definition) {
73
73
  });
74
74
  }
75
75
  exports.referencesOne = referencesOne;
76
- /**
77
- * Decorator for referencesMany
78
- * @param definition
79
- * @returns A property decorator
80
- */
81
- function referencesMany(definition) {
82
- const rel = Object.assign({ type: relation_types_1.RelationType.referencesMany }, definition);
83
- return core_1.PropertyDecoratorFactory.createDecorator(exports.RELATIONS_KEY, rel, {
84
- decoratorName: '@referencesMany',
85
- });
86
- }
87
- exports.referencesMany = referencesMany;
88
76
  //# sourceMappingURL=relation.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../src/relations/relation.decorator.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,yCAAwD;AACxD,8CAAmD;AAEnD,qDAA8C;AAEjC,QAAA,aAAa,GAAG,oBAAoB,CAAC;AAElD;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,UAAmB;IAC1C,+CAA+C;IAC/C,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,UAAU,EAAE;QACzE,aAAa,EAAE,WAAW;KAC3B,CAAC,CAAC;AACL,CAAC;AALD,4BAKC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,SAAuB;IAEvB,iDAAiD;IACjD,MAAM,QAAQ,GAAG,IAAA,iCAAoB,EAAC,SAAS,CAAC,CAAC;IACjD,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,KAAI,EAAE,CAAC;AACnC,CAAC;AAND,8CAMC;AAED,EAAE;AACF,oEAAoE;AACpE,6DAA6D;AAC7D,EAAE;AAEF;;;;GAIG;AACH,SAAgB,SAAS,CAAC,UAAmB;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,SAAS,EAAC,EAAE,UAAU,CAAC,CAAC;IACtE,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,YAAY;KAC5B,CAAC,CAAC;AACL,CAAC;AALD,8BAKC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,UAAU,EAAC,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,aAAa;KAC7B,CAAC,CAAC;AACL,CAAC;AALD,gCAKC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,UAAmB;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,aAAa,EAAC,EAAE,UAAU,CAAC,CAAC;IAC1E,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,gBAAgB;KAChC,CAAC,CAAC;AACL,CAAC;AALD,sCAKC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,UAAmB;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,cAAc,EAAC,EAAE,UAAU,CAAC,CAAC;IAC3E,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,iBAAiB;KACjC,CAAC,CAAC;AACL,CAAC;AALD,wCAKC"}
1
+ {"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../src/relations/relation.decorator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,yCAAwD;AACxD,8CAAmD;AAEnD,qDAA8C;AAEjC,QAAA,aAAa,GAAG,oBAAoB,CAAC;AAElD;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,UAAmB;IAC1C,+CAA+C;IAC/C,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,UAAU,EAAE;QACzE,aAAa,EAAE,WAAW;KAC3B,CAAC,CAAC;AACL,CAAC;AALD,4BAKC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,SAAuB;IAEvB,iDAAiD;IACjD,MAAM,QAAQ,GAAG,IAAA,iCAAoB,EAAC,SAAS,CAAC,CAAC;IACjD,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,KAAI,EAAE,CAAC;AACnC,CAAC;AAND,8CAMC;AAED,EAAE;AACF,oEAAoE;AACpE,6DAA6D;AAC7D,EAAE;AAEF;;;;GAIG;AACH,SAAgB,SAAS,CAAC,UAAmB;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,SAAS,EAAC,EAAE,UAAU,CAAC,CAAC;IACtE,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,YAAY;KAC5B,CAAC,CAAC;AACL,CAAC;AALD,8BAKC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,UAAU,EAAC,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,aAAa;KAC7B,CAAC,CAAC;AACL,CAAC;AALD,gCAKC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,UAAmB;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,aAAa,EAAC,EAAE,UAAU,CAAC,CAAC;IAC1E,OAAO,+BAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,gBAAgB;KAChC,CAAC,CAAC;AACL,CAAC;AALD,sCAKC"}
@@ -0,0 +1,2 @@
1
+ import { Fields } from '@loopback/filter';
2
+ export declare function includeFieldIfNot<MT>(fields: Fields<MT> | undefined, fieldToInclude: Extract<keyof MT, string>): false | Fields<MT>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.includeFieldIfNot = void 0;
4
+ const lodash_1 = require("lodash");
5
+ function includeFieldIfNot(fields, fieldToInclude) {
6
+ if (!fields) {
7
+ return false;
8
+ }
9
+ else if (Array.isArray(fields)) {
10
+ const fieldsCloned = fields.reduce((prev, current) => ({ ...prev, [current]: true }), {});
11
+ if (Object.keys(fieldsCloned).length > 0) {
12
+ if (fieldsCloned[fieldToInclude] === true) {
13
+ return false;
14
+ }
15
+ fieldsCloned[fieldToInclude] = true;
16
+ return fieldsCloned;
17
+ }
18
+ return false;
19
+ }
20
+ const fieldsCloned = (0, lodash_1.cloneDeep)(fields);
21
+ if (Object.keys(fieldsCloned).length > 0) {
22
+ let containsTrue = false;
23
+ for (const k in fieldsCloned) {
24
+ if (fieldsCloned[k] === true) {
25
+ containsTrue = true;
26
+ }
27
+ }
28
+ for (const k in fieldsCloned) {
29
+ if (k === fieldToInclude) {
30
+ if (fieldsCloned[k] === true) {
31
+ return false;
32
+ }
33
+ else {
34
+ if (containsTrue) {
35
+ fieldsCloned[k] = true;
36
+ }
37
+ else {
38
+ delete fieldsCloned[k];
39
+ }
40
+ return fieldsCloned;
41
+ }
42
+ }
43
+ }
44
+ if (containsTrue) {
45
+ fieldsCloned[fieldToInclude] = true;
46
+ return fieldsCloned;
47
+ }
48
+ else {
49
+ return false;
50
+ }
51
+ }
52
+ else {
53
+ return false;
54
+ }
55
+ }
56
+ exports.includeFieldIfNot = includeFieldIfNot;
57
+ //# sourceMappingURL=relation.filter.solver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.filter.solver.js","sourceRoot":"","sources":["../../src/relations/relation.filter.solver.ts"],"names":[],"mappings":";;;AACA,mCAAiC;AAEjC,SAAgB,iBAAiB,CAC/B,MAA8B,EAC9B,cAAyC;IAEzC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAChC,MAAM,YAAY,GAAgC,MAAM,CAAC,MAAM,CAC7D,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAC,CAAC,EAC/C,EAAE,CACH,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,IAAI,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE;gBACzC,OAAO,KAAK,CAAC;aACd;YACD,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;YACpC,OAAO,YAAY,CAAC;SACrB;QACD,OAAO,KAAK,CAAC;KACd;IAED,MAAM,YAAY,GAAG,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACxC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;YAC5B,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC5B,YAAY,GAAG,IAAI,CAAC;aACrB;SACF;QACD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;YAC5B,IAAI,CAAC,KAAK,cAAc,EAAE;gBACxB,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC5B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,YAAY,EAAE;wBAChB,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;qBACxB;yBAAM;wBACL,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;qBACxB;oBACD,OAAO,YAAY,CAAC;iBACrB;aACF;SACF;QACD,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;YACpC,OAAO,YAAY,CAAC;SACrB;aAAM;YACL,OAAO,KAAK,CAAC;SACd;KACF;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AApDD,8CAoDC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright IBM Corp. 2019,2020. All Rights Reserved.
2
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
3
3
  // Node module: @loopback/repository
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
@@ -44,7 +44,7 @@ async function findByForeignKeys(targetRepository, fkName, fkValues, scope, opti
44
44
  if (!(scope === null || scope === void 0 ? void 0 : scope.limit)) {
45
45
  useScopeFilterGlobally = true;
46
46
  }
47
- // This code is to keep backward compatability.
47
+ // This code is to keep backward compatibility.
48
48
  // See https://github.com/loopbackio/loopback-next/issues/6832 for more info.
49
49
  if (scope === null || scope === void 0 ? void 0 : scope.totalLimit) {
50
50
  scope.limit = scope.totalLimit;
@@ -92,7 +92,22 @@ exports.findByForeignKeys = findByForeignKeys;
92
92
  */
93
93
  async function includeRelatedModels(targetRepository, entities, include, options) {
94
94
  entities = (0, lodash_1.cloneDeep)(entities);
95
- include = (0, lodash_1.cloneDeep)(include);
95
+ if (options === null || options === void 0 ? void 0 : options.polymorphicType) {
96
+ include = include === null || include === void 0 ? void 0 : include.filter(inclusionFilter => {
97
+ if (typeof inclusionFilter === 'string') {
98
+ return true;
99
+ }
100
+ else {
101
+ if (inclusionFilter.targetType === undefined ||
102
+ inclusionFilter.targetType === (options === null || options === void 0 ? void 0 : options.polymorphicType)) {
103
+ return true;
104
+ }
105
+ }
106
+ });
107
+ }
108
+ else {
109
+ include = (0, lodash_1.cloneDeep)(include);
110
+ }
96
111
  const result = entities;
97
112
  if (!include)
98
113
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"relation.helpers.js","sourceRoot":"","sources":["../../src/relations/relation.helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.helpers.js","sourceRoot":"","sources":["../../src/relations/relation.helpers.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,10 @@ export interface HasManyDefinition extends RelationDefinitionBase {
60
60
  */
61
61
  keyTo?: string;
62
62
  keyFrom?: string;
63
+ /**
64
+ * With current architecture design, polymorphic type cannot be supported without through
65
+ * Consider using Source-hasMany->Through->hasOne->Target(polymorphic) for one-to-many relations
66
+ */
63
67
  /**
64
68
  * Description of the through model of the hasManyThrough relation.
65
69
  *
@@ -91,6 +95,20 @@ export interface HasManyDefinition extends RelationDefinitionBase {
91
95
  * The foreign key of the target model defined in the through model, e.g. CategoryProductLink#productId
92
96
  */
93
97
  keyTo?: string;
98
+ /**
99
+ * The polymorphism of the target model. The discriminator is a key of *through* model.
100
+ * If the target model is not polymorphic, then the value should be left undefined or false;
101
+ * If the key on through model indicating the concrete class of the through instance is default
102
+ * i.e. camelCase(classNameOf(targetModelInstance)) + "Id"
103
+ * then the discriminator field can be undefined
104
+ *
105
+ * With current architecture design, polymorphic type cannot be supported without through
106
+ * Consider using Source hasMany Through hasOne Target(polymorphic)
107
+ * or Source hasMany Through belongsTo Target(polymorphic) for one-to-many relations
108
+ */
109
+ polymorphic?: boolean | {
110
+ discriminator: string;
111
+ };
94
112
  };
95
113
  }
96
114
  export interface BelongsToDefinition extends RelationDefinitionBase {
@@ -98,6 +116,16 @@ export interface BelongsToDefinition extends RelationDefinitionBase {
98
116
  targetsMany: false;
99
117
  keyFrom?: string;
100
118
  keyTo?: string;
119
+ /**
120
+ * The polymorphism of the target model. The discriminator is a key of source model.
121
+ * If the target model is not polymorphic, then the value should be left undefined or false;
122
+ * If the key on source model indicating the concrete class of the target instance is default
123
+ * i.e. camelCase(classNameOf(throughModelInstance)) + "Id"
124
+ * Then the discriminator field can be undefined
125
+ */
126
+ polymorphic?: boolean | {
127
+ discriminator: string;
128
+ };
101
129
  }
102
130
  export interface HasOneDefinition extends RelationDefinitionBase {
103
131
  type: RelationType.hasOne;
@@ -114,11 +142,34 @@ export interface HasOneDefinition extends RelationDefinitionBase {
114
142
  */
115
143
  keyTo?: string;
116
144
  keyFrom?: string;
145
+ /**
146
+ * The polymorphism of the target model. The discriminator is a key of source model.
147
+ * If the target model is not polymorphic, then the value should be left undefined or false;
148
+ * If the key on source model indicating the concrete class of the target instance is default
149
+ * i.e. camelCase(classNameOf(throughModelInstance)) + "Id"
150
+ * Then the discriminator field can be undefined
151
+ */
152
+ polymorphic?: boolean | {
153
+ discriminator: string;
154
+ };
155
+ }
156
+ export interface ReferencesManyDefinition extends RelationDefinitionBase {
157
+ type: RelationType.referencesMany;
158
+ targetsMany: true;
159
+ /**
160
+ * keyTo: The foreign key used by the target model for this relation.
161
+ * keyFrom: The source key used by the source model for this relation.
162
+ *
163
+ * TODO(bajtos) Add relation description.
164
+ *
165
+ */
166
+ keyTo?: string;
167
+ keyFrom?: string;
117
168
  }
118
169
  /**
119
170
  * A union type describing all possible Relation metadata objects.
120
171
  */
121
- export declare type RelationMetadata = HasManyDefinition | BelongsToDefinition | HasOneDefinition | RelationDefinitionBase;
172
+ export declare type RelationMetadata = HasManyDefinition | BelongsToDefinition | HasOneDefinition | ReferencesManyDefinition | RelationDefinitionBase;
122
173
  export { Getter } from '@loopback/core';
123
174
  /**
124
175
  * @returns An array of resolved values, the items must be ordered in the same
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright IBM Corp. 2018,2020. All Rights Reserved.
2
+ // Copyright IBM Corp. and LoopBack contributors 2018,2020. All Rights Reserved.
3
3
  // Node module: @loopback/repository
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
@@ -1 +1 @@
1
- {"version":3,"file":"relation.types.js","sourceRoot":"","sources":["../../src/relations/relation.types.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAOhE,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,+CAA+B,CAAA;IAC/B,iDAAiC,CAAA;AACnC,CAAC,EARW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAQvB;AA0ID,6EAA6E;AAC7E,uCAAsC;AAA9B,8FAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"relation.types.js","sourceRoot":"","sources":["../../src/relations/relation.types.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAOhE,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,+CAA+B,CAAA;IAC/B,iDAAiC,CAAA;AACnC,CAAC,EARW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAQvB;AA6LD,6EAA6E;AAC7E,uCAAsC;AAA9B,8FAAA,MAAM,OAAA"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright IBM Corp. 2018,2020. All Rights Reserved.
2
+ // Copyright IBM Corp. and LoopBack contributors 2018,2020. All Rights Reserved.
3
3
  // Node module: @loopback/repository
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-utils.js","sourceRoot":"","sources":["../../src/repositories/constraint-utils.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,6CAA4E;AAC5E,mCAAiC;AAIjC;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC7B,cAAqC,EACrC,UAAqB;IAErB,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,cAAc,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,sBAAa,CAAI,MAAM,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C,CAAC;AAPD,0CAOC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,aAAmC,EACnC,UAAoB;IAEpB,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,qBAAY,CAAI,KAAK,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C,CAAC;AAPD,wCAOC;AACD;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,aAAmC,EACnC,UAAsB;IAEtB,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,qBAAY,CAAI,KAAK,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;AACxC,CAAC;AAPD,4CAOC;AACD;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,YAA2B,EAC3B,UAAyB;IAEzB,MAAM,eAAe,GAAG,IAAA,kBAAS,EAAC,YAAY,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;QAC1B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE;YAC5D,mEAAmE;YACnE,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;gBAAE,SAAS;YAChD,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;SACvD;QACA,eAA6B,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACnD;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAdD,kDAcC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,YAA6B,EAC7B,UAAyB;IAEzB,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;AACvE,CAAC;AALD,oDAKC"}
1
+ {"version":3,"file":"constraint-utils.js","sourceRoot":"","sources":["../../src/repositories/constraint-utils.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,6CAA4E;AAC5E,mCAAiC;AAIjC;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC7B,cAAqC,EACrC,UAAqB;IAErB,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,cAAc,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,sBAAa,CAAI,MAAM,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C,CAAC;AAPD,0CAOC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,aAAmC,EACnC,UAAoB;IAEpB,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,qBAAY,CAAI,KAAK,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C,CAAC;AAPD,wCAOC;AACD;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,aAAmC,EACnC,UAAsB;IAEtB,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,qBAAY,CAAI,KAAK,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;AACxC,CAAC;AAPD,4CAOC;AACD;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,YAA2B,EAC3B,UAAyB;IAEzB,MAAM,eAAe,GAAG,IAAA,kBAAS,EAAC,YAAY,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;QAC1B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE;YAC5D,mEAAmE;YACnE,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;gBAAE,SAAS;YAChD,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;SACvD;QACA,eAA6B,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;KACnD;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAdD,kDAcC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,YAA6B,EAC7B,UAAyB;IAEzB,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;AACvE,CAAC;AALD,oDAKC"}