@goatlab/fluent 0.7.39 → 0.7.40

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 (260) hide show
  1. package/dist/BaseConnector.d.ts +112 -0
  2. package/dist/BaseConnector.js +343 -0
  3. package/dist/BaseConnector.js.map +1 -0
  4. package/dist/Fluent.d.ts +11 -0
  5. package/dist/Fluent.js +27 -0
  6. package/dist/Fluent.js.map +1 -0
  7. package/dist/FluentConnectorInterface.d.ts +17 -0
  8. package/dist/FluentConnectorInterface.js +3 -0
  9. package/dist/FluentConnectorInterface.js.map +1 -0
  10. package/dist/FluentEntity.d.ts +7 -0
  11. package/dist/FluentEntity.js +29 -0
  12. package/dist/FluentEntity.js.map +1 -0
  13. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +123 -0
  14. package/dist/TypeOrmConnector/TypeOrmConnector.js +760 -0
  15. package/dist/TypeOrmConnector/TypeOrmConnector.js.map +1 -0
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +12 -0
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +167 -0
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js.map +1 -0
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +11 -0
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +52 -0
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js.map +1 -0
  22. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
  23. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +20 -0
  24. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js.map +1 -0
  25. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +7 -0
  26. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +19 -0
  27. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js.map +1 -0
  28. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +11 -0
  29. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +173 -0
  30. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js.map +1 -0
  31. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +13 -0
  32. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +207 -0
  33. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js.map +1 -0
  34. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +11 -0
  35. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +214 -0
  36. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js.map +1 -0
  37. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +7 -0
  38. package/dist/TypeOrmConnector/util/clearEmpties.js +33 -0
  39. package/dist/TypeOrmConnector/util/clearEmpties.js.map +1 -0
  40. package/dist/TypeOrmConnector/util/extractConditions.d.ts +12 -0
  41. package/dist/TypeOrmConnector/util/extractConditions.js +89 -0
  42. package/dist/TypeOrmConnector/util/extractConditions.js.map +1 -0
  43. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  44. package/dist/TypeOrmConnector/util/extractInclude.js +26 -0
  45. package/dist/TypeOrmConnector/util/extractInclude.js.map +1 -0
  46. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  47. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +49 -0
  48. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js.map +1 -0
  49. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +2 -0
  50. package/dist/TypeOrmConnector/util/extractOrderBy.js +24 -0
  51. package/dist/TypeOrmConnector/util/extractOrderBy.js.map +1 -0
  52. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  53. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +27 -0
  54. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js.map +1 -0
  55. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +6 -0
  56. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +29 -0
  57. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js.map +1 -0
  58. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  59. package/dist/TypeOrmConnector/util/isAnyObject.js +8 -0
  60. package/dist/TypeOrmConnector/util/isAnyObject.js.map +1 -0
  61. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  62. package/dist/TypeOrmConnector/util/nestQueryResults.js +38 -0
  63. package/dist/TypeOrmConnector/util/nestQueryResults.js.map +1 -0
  64. package/dist/core/Loopback/build-schema.d.ts +148 -0
  65. package/dist/core/Loopback/build-schema.js +443 -0
  66. package/dist/core/Loopback/build-schema.js.map +1 -0
  67. package/dist/core/Loopback/common-types.d.ts +96 -0
  68. package/dist/core/Loopback/common-types.js +24 -0
  69. package/dist/core/Loopback/common-types.js.map +1 -0
  70. package/dist/core/Loopback/json-to-schema.d.ts +41 -0
  71. package/dist/core/Loopback/json-to-schema.js +113 -0
  72. package/dist/core/Loopback/json-to-schema.js.map +1 -0
  73. package/dist/core/Loopback/metadata.d.ts +16 -0
  74. package/dist/core/Loopback/metadata.js +49 -0
  75. package/dist/core/Loopback/metadata.js.map +1 -0
  76. package/dist/core/Loopback/model.d.ts +233 -0
  77. package/dist/core/Loopback/model.js +387 -0
  78. package/dist/core/Loopback/model.js.map +1 -0
  79. package/dist/core/Loopback/query.d.ts +394 -0
  80. package/dist/core/Loopback/query.js +482 -0
  81. package/dist/core/Loopback/query.js.map +1 -0
  82. package/dist/core/Loopback/relation.types.d.ts +141 -0
  83. package/dist/core/Loopback/relation.types.js +18 -0
  84. package/dist/core/Loopback/relation.types.js.map +1 -0
  85. package/dist/core/Loopback/type-resolver.d.ts +42 -0
  86. package/dist/core/Loopback/type-resolver.js +60 -0
  87. package/dist/core/Loopback/type-resolver.js.map +1 -0
  88. package/dist/core/Loopback/type.d.ts +38 -0
  89. package/dist/core/Loopback/type.js +7 -0
  90. package/dist/core/Loopback/type.js.map +1 -0
  91. package/dist/core/Nestjs/applyDecorators.d.ts +10 -0
  92. package/dist/core/Nestjs/applyDecorators.js +26 -0
  93. package/dist/core/Nestjs/applyDecorators.js.map +1 -0
  94. package/dist/core/Nestjs/types/common.d.ts +16 -0
  95. package/dist/core/Nestjs/types/common.js +38 -0
  96. package/dist/core/Nestjs/types/common.js.map +1 -0
  97. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  98. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +8 -0
  99. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js.map +1 -0
  100. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  101. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +66 -0
  102. package/dist/core/Nestjs/types/decorators/api-property.decorator.js.map +1 -0
  103. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  104. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +136 -0
  105. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js.map +1 -0
  106. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +4 -0
  107. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +24 -0
  108. package/dist/core/Nestjs/types/decorators/args-type.decorator.js.map +1 -0
  109. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  110. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  111. package/dist/core/Nestjs/types/decorators/create-property.decorator.js.map +1 -0
  112. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +4 -0
  113. package/dist/core/Nestjs/types/decorators/directive.decorator.js +39 -0
  114. package/dist/core/Nestjs/types/decorators/directive.decorator.js.map +1 -0
  115. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +4 -0
  116. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +28 -0
  117. package/dist/core/Nestjs/types/decorators/extensions.decorator.js.map +1 -0
  118. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +48 -0
  119. package/dist/core/Nestjs/types/decorators/field.decorator.js +63 -0
  120. package/dist/core/Nestjs/types/decorators/field.decorator.js.map +1 -0
  121. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +25 -0
  122. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +29 -0
  123. package/dist/core/Nestjs/types/decorators/input-type.decorator.js.map +1 -0
  124. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +33 -0
  125. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +35 -0
  126. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js.map +1 -0
  127. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  128. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +46 -0
  129. package/dist/core/Nestjs/types/decorators/partial-type.helper.js.map +1 -0
  130. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  131. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +10 -0
  132. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js.map +1 -0
  133. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  134. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +10 -0
  135. package/dist/core/Nestjs/types/errors/directive-parsing.error.js.map +1 -0
  136. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  137. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +10 -0
  138. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js.map +1 -0
  139. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  140. package/dist/core/Nestjs/types/errors/undefined-type.error.js +11 -0
  141. package/dist/core/Nestjs/types/errors/undefined-type.error.js.map +1 -0
  142. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  143. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +11 -0
  144. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js.map +1 -0
  145. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +11 -0
  146. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +3 -0
  147. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js.map +1 -0
  148. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  149. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +3 -0
  150. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js.map +1 -0
  151. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  152. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +3 -0
  153. package/dist/core/Nestjs/types/interfaces/complexity.interface.js.map +1 -0
  154. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  155. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +3 -0
  156. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js.map +1 -0
  157. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +239 -0
  158. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +7 -0
  159. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js.map +1 -0
  160. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  161. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +3 -0
  162. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js.map +1 -0
  163. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  164. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +3 -0
  165. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js.map +1 -0
  166. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  167. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +3 -0
  168. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js.map +1 -0
  169. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  170. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +3 -0
  171. package/dist/core/Nestjs/types/interfaces/type-options.interface.js.map +1 -0
  172. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  173. package/dist/core/Nestjs/types/lazy-metadata.storage.js +68 -0
  174. package/dist/core/Nestjs/types/lazy-metadata.storage.js.map +1 -0
  175. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  176. package/dist/core/Nestjs/types/metadata/class.metadata.js +3 -0
  177. package/dist/core/Nestjs/types/metadata/class.metadata.js.map +1 -0
  178. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  179. package/dist/core/Nestjs/types/metadata/directive.metadata.js +3 -0
  180. package/dist/core/Nestjs/types/metadata/directive.metadata.js.map +1 -0
  181. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  182. package/dist/core/Nestjs/types/metadata/enum.metadata.js +3 -0
  183. package/dist/core/Nestjs/types/metadata/enum.metadata.js.map +1 -0
  184. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  185. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +3 -0
  186. package/dist/core/Nestjs/types/metadata/extensions.metadata.js.map +1 -0
  187. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  188. package/dist/core/Nestjs/types/metadata/index.js +12 -0
  189. package/dist/core/Nestjs/types/metadata/index.js.map +1 -0
  190. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  191. package/dist/core/Nestjs/types/metadata/interface.metadata.js +3 -0
  192. package/dist/core/Nestjs/types/metadata/interface.metadata.js.map +1 -0
  193. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  194. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +3 -0
  195. package/dist/core/Nestjs/types/metadata/object-type.metadata.js.map +1 -0
  196. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  197. package/dist/core/Nestjs/types/metadata/param.metadata.js +3 -0
  198. package/dist/core/Nestjs/types/metadata/param.metadata.js.map +1 -0
  199. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  200. package/dist/core/Nestjs/types/metadata/property.metadata.js +3 -0
  201. package/dist/core/Nestjs/types/metadata/property.metadata.js.map +1 -0
  202. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  203. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +3 -0
  204. package/dist/core/Nestjs/types/metadata/resolver.metadata.js.map +1 -0
  205. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  206. package/dist/core/Nestjs/types/metadata/union.metadata.js +3 -0
  207. package/dist/core/Nestjs/types/metadata/union.metadata.js.map +1 -0
  208. package/dist/core/Nestjs/types/object-type.decorator.d.ts +32 -0
  209. package/dist/core/Nestjs/types/object-type.decorator.js +33 -0
  210. package/dist/core/Nestjs/types/object-type.decorator.js.map +1 -0
  211. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  212. package/dist/core/Nestjs/types/omit-type.js +34 -0
  213. package/dist/core/Nestjs/types/omit-type.js.map +1 -0
  214. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  215. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  216. package/dist/core/Nestjs/types/reflection.utils.js.map +1 -0
  217. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +20 -0
  218. package/dist/core/Nestjs/types/set-metadata.decorator.js +33 -0
  219. package/dist/core/Nestjs/types/set-metadata.decorator.js.map +1 -0
  220. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +73 -0
  221. package/dist/core/Nestjs/types/type-metadata.storage.js +351 -0
  222. package/dist/core/Nestjs/types/type-metadata.storage.js.map +1 -0
  223. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  224. package/dist/core/Nestjs/types/utils/enum.utils.js +31 -0
  225. package/dist/core/Nestjs/types/utils/enum.utils.js.map +1 -0
  226. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +13 -0
  227. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
  228. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js.map +1 -0
  229. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
  230. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
  231. package/dist/core/Nestjs/types/utils/mapped-types.utils.js.map +1 -0
  232. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
  233. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +37 -0
  234. package/dist/core/Nestjs/types/utils/model-properties-accessor.js.map +1 -0
  235. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  236. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  237. package/dist/core/Nestjs/types/utils/type-helpers.utils.js.map +1 -0
  238. package/dist/core/types.d.ts +23 -0
  239. package/dist/core/types.js +31 -0
  240. package/dist/core/types.js.map +1 -0
  241. package/dist/decorators.d.ts +92 -0
  242. package/dist/decorators.js +162 -0
  243. package/dist/decorators.js.map +1 -0
  244. package/dist/generatorDatasource.d.ts +2 -0
  245. package/dist/generatorDatasource.js +13 -0
  246. package/dist/generatorDatasource.js.map +1 -0
  247. package/dist/index.d.ts +30 -0
  248. package/dist/index.js +50 -0
  249. package/dist/index.js.map +1 -0
  250. package/dist/loadRelations.d.ts +12 -0
  251. package/dist/loadRelations.js +139 -0
  252. package/dist/loadRelations.js.map +1 -0
  253. package/dist/outputKeys.d.ts +2 -0
  254. package/dist/outputKeys.js +18 -0
  255. package/dist/outputKeys.js.map +1 -0
  256. package/dist/tsconfig.tsbuildinfo +1 -0
  257. package/dist/types.d.ts +104 -0
  258. package/dist/types.js +23 -0
  259. package/dist/types.js.map +1 -0
  260. package/package.json +47 -23
@@ -0,0 +1,12 @@
1
+ export interface KeysMetadata {
2
+ keyName: string;
3
+ nestableKey: string;
4
+ relation?: string;
5
+ parentRelation?: string;
6
+ level?: number;
7
+ cardinality?: string;
8
+ }
9
+ export interface KeysMetadataResponse {
10
+ [key: string]: KeysMetadata;
11
+ }
12
+ export declare const extractMetadataFromKeys: (keys: string[]) => KeysMetadataResponse;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractMetadataFromKeys = void 0;
4
+ const extractMetadataFromKeys = (keys) => {
5
+ // Example of a key
6
+ // Level 0:
7
+ // users__id
8
+ // Level 2:
9
+ // users___XXOneToManyXX___cars___XXManyToOneXX___user__id
10
+ const keyToNestedKeyMap = {};
11
+ for (const key of keys) {
12
+ // All keys have an _ before the actual attribute name
13
+ const preAttributeIndex = key.lastIndexOf('_');
14
+ const fullTableAlias = key.slice(0, preAttributeIndex).replace('_', '');
15
+ const keyName = key.slice(preAttributeIndex + 1, key.length);
16
+ const flattened = fullTableAlias
17
+ .replace(/___XXManyToOneXX/g, '')
18
+ .replace(/___XXOneToManyXX/g, '')
19
+ .replace(/___/g, '.')
20
+ .replace('__', '.')
21
+ .replace('.XXOneToManyXX', '');
22
+ const possibleCurrentTableKey = key.lastIndexOf('___');
23
+ const relation = possibleCurrentTableKey <= 0
24
+ ? undefined
25
+ : key.slice(possibleCurrentTableKey + 3, preAttributeIndex);
26
+ const possibleParentTableKeyInit = key.lastIndexOf('___XX');
27
+ const possibleParentTableKeyEnd = key.lastIndexOf('XX__');
28
+ const cardinality = key.slice(possibleParentTableKeyInit, possibleParentTableKeyEnd) ||
29
+ undefined;
30
+ const parentRelationKey = key
31
+ .substring(0, possibleParentTableKeyInit)
32
+ .lastIndexOf('___');
33
+ const parentRelation = key
34
+ .substring(parentRelationKey, possibleParentTableKeyInit)
35
+ .replace(/___/g, '') || undefined;
36
+ var level = (key.match(/XX___/g) || []).length;
37
+ keyToNestedKeyMap[key] = {
38
+ keyName,
39
+ nestableKey: `${flattened}.${keyName}`,
40
+ relation,
41
+ parentRelation,
42
+ level,
43
+ cardinality: cardinality && cardinality.replace(/XX/g, '').replace(/___/g, '')
44
+ };
45
+ }
46
+ return keyToNestedKeyMap;
47
+ };
48
+ exports.extractMetadataFromKeys = extractMetadataFromKeys;
49
+ //# sourceMappingURL=extractMetadataFromKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractMetadataFromKeys.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/extractMetadataFromKeys.ts"],"names":[],"mappings":";;;AAcO,MAAM,uBAAuB,GAAG,CAAC,IAAc,EAAwB,EAAE;IAC9E,mBAAmB;IACnB,WAAW;IACX,eAAe;IACf,WAAW;IACX,6DAA6D;IAC7D,MAAM,iBAAiB,GAAG,EAAE,CAAA;IAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,sDAAsD;QACtD,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC9C,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAE5D,MAAM,SAAS,GAAG,cAAc;aAC7B,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;aAChC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;aAChC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;aAClB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;QAEhC,MAAM,uBAAuB,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAEtD,MAAM,QAAQ,GACZ,uBAAuB,IAAI,CAAC;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAE/D,MAAM,0BAA0B,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC3D,MAAM,yBAAyB,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEzD,MAAM,WAAW,GACf,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;YAChE,SAAS,CAAA;QAEX,MAAM,iBAAiB,GAAG,GAAG;aAC1B,SAAS,CAAC,CAAC,EAAE,0BAA0B,CAAC;aACxC,WAAW,CAAC,KAAK,CAAC,CAAA;QAErB,MAAM,cAAc,GAClB,GAAG;aACA,SAAS,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;aACxD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAA;QAErC,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;QAE9C,iBAAiB,CAAC,GAAG,CAAC,GAAG;YACvB,OAAO;YACP,WAAW,EAAE,GAAG,SAAS,IAAI,OAAO,EAAE;YACtC,QAAQ;YACR,cAAc;YACd,KAAK;YACL,WAAW,EACT,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACpE,CAAA;IACH,CAAC;IAED,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA;AA1DY,QAAA,uBAAuB,2BA0DnC"}
@@ -0,0 +1,2 @@
1
+ import { FluentQuery } from '../../types';
2
+ export declare const extractOrderBy: <T>(orderBy?: FluentQuery<T>["orderBy"]) => import("@goatlab/js-utils").AnyObject;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractOrderBy = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const extractOrderBy = (orderBy) => {
6
+ if (!orderBy) {
7
+ return {};
8
+ }
9
+ // Handle both array and object formats
10
+ const orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];
11
+ if (orderByArray.length === 0) {
12
+ return {};
13
+ }
14
+ const order = {};
15
+ for (const orderElement of orderByArray) {
16
+ const flattenOrder = js_utils_1.Objects.flatten(orderElement);
17
+ for (const k of Object.keys(flattenOrder)) {
18
+ order[k] = flattenOrder[k];
19
+ }
20
+ }
21
+ return js_utils_1.Objects.nest(order);
22
+ };
23
+ exports.extractOrderBy = extractOrderBy;
24
+ //# sourceMappingURL=extractOrderBy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractOrderBy.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/extractOrderBy.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAGpC,MAAM,cAAc,GAAG,CAAI,OAAmC,EAAE,EAAE;IACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAA;IACX,CAAC;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAEjE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAA;IAEhB,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,kBAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAElD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,CAAA;AAvBY,QAAA,cAAc,kBAuB1B"}
@@ -0,0 +1,19 @@
1
+ import { Repository } from 'typeorm';
2
+ export interface GeneratedModelRelations {
3
+ relations: {
4
+ [key: string]: {
5
+ isOneToMany: boolean;
6
+ isManyToOne: boolean;
7
+ isManyToMany: boolean;
8
+ inverseSidePropertyRelationPath?: string;
9
+ inverseSidePropertyPath?: string;
10
+ propertyName: string;
11
+ entityName: string;
12
+ tableName: string;
13
+ targetClass: string;
14
+ joinColumns: any[];
15
+ inverseJoinColumns: any[];
16
+ };
17
+ };
18
+ }
19
+ export declare const getRelationsFromModelGenerator: (typeOrmRepo: Repository<any>) => GeneratedModelRelations;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRelationsFromModelGenerator = void 0;
4
+ const getRelationsFromModelGenerator = (typeOrmRepo) => {
5
+ const relations = {};
6
+ for (const relation of typeOrmRepo.metadata.relations) {
7
+ const pPath = relation.inverseRelation?.joinColumns[0];
8
+ relations[relation.propertyName] = {
9
+ isOneToMany: relation.isOneToMany,
10
+ isManyToOne: relation.isManyToOne,
11
+ isManyToMany: relation.isManyToMany,
12
+ inverseSidePropertyRelationPath: relation.inverseSidePropertyPath,
13
+ inverseSidePropertyPath: pPath?.propertyPath,
14
+ propertyName: relation.propertyName,
15
+ entityName: relation.inverseEntityMetadata.name,
16
+ tableName: relation.inverseEntityMetadata.tableName,
17
+ targetClass: relation.inverseEntityMetadata.target,
18
+ joinColumns: relation.joinColumns,
19
+ inverseJoinColumns: relation.inverseJoinColumns
20
+ };
21
+ }
22
+ return {
23
+ relations
24
+ };
25
+ };
26
+ exports.getRelationsFromModelGenerator = getRelationsFromModelGenerator;
27
+ //# sourceMappingURL=getRelationsFromModelGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRelationsFromModelGenerator.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/getRelationsFromModelGenerator.ts"],"names":[],"mappings":";;;AAoBO,MAAM,8BAA8B,GAAG,CAC5C,WAA4B,EACH,EAAE;IAC3B,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;QACtD,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,+BAA+B,EAAE,QAAQ,CAAC,uBAAuB;YACjE,uBAAuB,EAAE,KAAK,EAAE,YAAY;YAC5C,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,UAAU,EAAE,QAAQ,CAAC,qBAAqB,CAAC,IAAI;YAC/C,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,SAAS;YACnD,WAAW,EAAE,QAAQ,CAAC,qBAAqB,CAAC,MAAM;YAClD,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;SAChD,CAAA;IACH,CAAC;IACD,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC,CAAA;AAvBY,QAAA,8BAA8B,kCAuB1C"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ *
3
+ * @param sql
4
+ * @returns
5
+ */
6
+ export declare const getSelectedKeysFromRawSql: (sql: string) => string[];
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSelectedKeysFromRawSql = void 0;
4
+ /**
5
+ *
6
+ * @param sql
7
+ * @returns
8
+ */
9
+ const getSelectedKeysFromRawSql = (sql) => {
10
+ const possibleKeys = sql.split('AS');
11
+ const keys = new Set([]);
12
+ for (const stringKey of possibleKeys) {
13
+ if (stringKey.includes('SELECT')) {
14
+ const key = stringKey.split('"')[1];
15
+ if (!key || key.includes('___') || !key.includes('_')) {
16
+ continue;
17
+ }
18
+ keys.add(key.replace('_id', 'id').replace('_', '.'));
19
+ continue;
20
+ }
21
+ const key = stringKey.split('"')[1];
22
+ if (key) {
23
+ keys.add(key.replace('_id', 'id').replace('_', '.'));
24
+ }
25
+ }
26
+ return Array.from(keys);
27
+ };
28
+ exports.getSelectedKeysFromRawSql = getSelectedKeysFromRawSql;
29
+ //# sourceMappingURL=getSelectedKeysFromRawSql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSelectedKeysFromRawSql.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/getSelectedKeysFromRawSql.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACI,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAY,EAAE;IACjE,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAgB,IAAI,GAAG,CAAC,EAAE,CAAC,CAAA;IAErC,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACnC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtD,SAAQ;YACV,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YAEpD,SAAQ;QACV,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAA;AAvBY,QAAA,yBAAyB,6BAuBrC"}
@@ -0,0 +1 @@
1
+ export declare const isAnyObject: (val: any) => boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAnyObject = void 0;
4
+ const isAnyObject = (val) => {
5
+ return typeof val === 'object' && !Array.isArray(val) && val !== null;
6
+ };
7
+ exports.isAnyObject = isAnyObject;
8
+ //# sourceMappingURL=isAnyObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAnyObject.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/isAnyObject.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAW,EAAE;IAC/C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,CAAA;AACvE,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB"}
@@ -0,0 +1,2 @@
1
+ import { AnyObject } from '../../types';
2
+ export declare const nestQueryResults: (results: AnyObject[], keyToNestedKeyMap: AnyObject) => AnyObject[];
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nestQueryResults = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const nestQueryResults = (results, keyToNestedKeyMap) => {
6
+ let nestableObject = {};
7
+ let currentLevel = 0;
8
+ // For each of the keys that we need to map
9
+ for (const key of Object.keys(keyToNestedKeyMap)) {
10
+ if (!key.endsWith('_id')) {
11
+ continue;
12
+ }
13
+ const currentLevelMetadata = keyToNestedKeyMap[key];
14
+ currentLevel = currentLevelMetadata.level;
15
+ // We only group by Ids of the current level
16
+ const grouped = js_utils_1.Arrays.groupBy(results, r => r[key]);
17
+ const resultCount = Object.keys(grouped)?.length || 0;
18
+ // ForEach Id of the grouped results
19
+ for (const [index, k] of Object.keys(grouped).entries()) {
20
+ const prefixindex = currentLevelMetadata.nestableKey.lastIndexOf('.');
21
+ const prefix = currentLevelMetadata.nestableKey.substring(0, prefixindex);
22
+ const currentIndex = `${prefix}.${index}.${currentLevelMetadata.keyName}`;
23
+ const results = grouped[k];
24
+ console.log(currentLevelMetadata);
25
+ // Get current level values
26
+ if (currentLevelMetadata.level === currentLevel) {
27
+ // Get value of the id
28
+ nestableObject[`${currentIndex}`] = k;
29
+ }
30
+ for (const result of results) {
31
+ }
32
+ }
33
+ // currentLevel = currentLevelMetadata.level
34
+ }
35
+ return results;
36
+ };
37
+ exports.nestQueryResults = nestQueryResults;
38
+ //# sourceMappingURL=nestQueryResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestQueryResults.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/nestQueryResults.ts"],"names":[],"mappings":";;;AAAA,gDAA0C;AAGnC,MAAM,gBAAgB,GAAG,CAC9B,OAAoB,EACpB,iBAA4B,EACf,EAAE;IACf,IAAI,cAAc,GAAG,EAAE,CAAA;IACvB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,2CAA2C;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,SAAQ;QACV,CAAC;QAED,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACnD,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAA;QAEzC,4CAA4C;QAC5C,MAAM,OAAO,GAAc,iBAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE/D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;QAErD,oCAAoC;QACpC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrE,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YACzE,MAAM,YAAY,GAAG,GAAG,MAAM,IAAI,KAAK,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAA;YACzE,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAE1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;YACjC,2BAA2B;YAC3B,IAAI,oBAAoB,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;gBAChD,sBAAsB;gBACtB,cAAc,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;YACvC,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,4CAA4C;IAC9C,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAzCY,QAAA,gBAAgB,oBAyC5B"}
@@ -0,0 +1,148 @@
1
+ import { MetadataAccessor } from '@loopback/metadata';
2
+ import { SchemaObject as JsonSchema } from 'openapi3-ts/oas30';
3
+ export interface SchemaObject extends JsonSchema {
4
+ definitions?: {
5
+ [key: string]: SchemaObject;
6
+ };
7
+ $ref?: string;
8
+ }
9
+ import { RelationMetadata } from './relation.types';
10
+ import { PropertyDefinition, PropertyType } from './model';
11
+ export declare const JSON_SCHEMA_KEY: MetadataAccessor<{
12
+ [key: string]: SchemaObject;
13
+ }, ClassDecorator>;
14
+ export interface JsonSchemaOptions<T extends object> {
15
+ /**
16
+ * The title to use in the generated schema.
17
+ *
18
+ * When using options like `exclude`, the auto-generated title can be
19
+ * difficult to read for humans. Use this option to change the title to
20
+ * a more meaningful value.
21
+ */
22
+ title?: string;
23
+ /**
24
+ * Set this flag if you want the schema to define navigational properties
25
+ * for model relations.
26
+ */
27
+ includeRelations?: boolean;
28
+ /**
29
+ * Set this flag to mark all model properties as optional. This is typically
30
+ * used to describe request body of PATCH endpoints. This option will be
31
+ * overridden by the "optional" option if it is set and non-empty.
32
+ *
33
+ * The flag also applies to nested model instances if its value is set to
34
+ * 'deep', such as:
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * @model()
39
+ * class Address {
40
+ * @property()
41
+ * street: string;
42
+ * @property()
43
+ * city: string;
44
+ * @property()
45
+ * state: string;
46
+ * @property()
47
+ * zipCode: string;
48
+ * }
49
+ *
50
+ * @model()
51
+ * class Customer {
52
+ * @property()
53
+ * address: Address;
54
+ * }
55
+ *
56
+ * // The following schema allows properties of `customer` optional, but not
57
+ * // `customer.address`
58
+ * const schemaRef1 = getModelSchemaRef(Customer, {partial: true});
59
+ *
60
+ * // The following schema allows properties of `customer` and
61
+ * // `customer.address` optional
62
+ * const schemaRef2 = getModelSchemaRef(Customer, {partial: 'deep'});
63
+ * ```
64
+ */
65
+ partial?: boolean | 'deep';
66
+ /**
67
+ * List of model properties to exclude from the schema.
68
+ */
69
+ exclude?: (keyof T)[];
70
+ /**
71
+ * List of model properties to mark as optional. Overrides the "partial"
72
+ * option if it is not empty.
73
+ */
74
+ optional?: (keyof T)[];
75
+ /**
76
+ * @internal
77
+ */
78
+ visited?: {
79
+ [key: string]: SchemaObject;
80
+ };
81
+ }
82
+ /**
83
+ * @internal
84
+ */
85
+ export declare function buildModelCacheKey<T extends object>(options?: JsonSchemaOptions<T>): string;
86
+ /**
87
+ * Gets the JSON Schema of a TypeScript model/class by seeing if one exists
88
+ * in a cache. If not, one is generated and then cached.
89
+ * @param ctor - Constructor of class to get JSON Schema from
90
+ */
91
+ export declare function getJsonSchema<T extends object>(ctor: Function & {
92
+ prototype: T;
93
+ }, options?: JsonSchemaOptions<T>): SchemaObject;
94
+ /**
95
+ * Describe the provided Model as a reference to a definition shared by multiple
96
+ * endpoints. The definition is included in the returned schema.
97
+ *
98
+ * @example
99
+ *
100
+ * ```ts
101
+ * const schema = {
102
+ * $ref: '/definitions/Product',
103
+ * definitions: {
104
+ * Product: {
105
+ * title: 'Product',
106
+ * properties: {
107
+ * // etc.
108
+ * }
109
+ * }
110
+ * }
111
+ * }
112
+ * ```
113
+ *
114
+ * @param modelCtor - The model constructor (e.g. `Product`)
115
+ * @param options - Additional options
116
+ */
117
+ export declare function getJsonSchemaRef<T extends object>(modelCtor: Function & {
118
+ prototype: T;
119
+ }, options?: JsonSchemaOptions<T>): SchemaObject;
120
+ /**
121
+ * Gets the wrapper function of primitives string, number, and boolean
122
+ * @param type - Name of type
123
+ */
124
+ export declare function stringTypeToWrapper(type: string | Function): Function;
125
+ /**
126
+ * Determines whether a given string or constructor is array type or not
127
+ * @param type - Type as string or wrapper
128
+ */
129
+ export declare function isArrayType(type: string | Function | PropertyType): boolean;
130
+ /**
131
+ * Converts property metadata into a JSON property definition
132
+ * @param meta
133
+ */
134
+ export declare function metaToJsonProperty(meta: PropertyDefinition): SchemaObject;
135
+ /**
136
+ * Checks and return navigational property definition for the relation
137
+ * @param relMeta Relation metadata object
138
+ * @param targetRef Schema definition for the target model
139
+ */
140
+ export declare function getNavigationalPropertyForRelation(relMeta: RelationMetadata, targetRef: SchemaObject): SchemaObject;
141
+ /**
142
+ * Converts a TypeScript class into a JSON Schema using TypeScript's
143
+ * reflection API
144
+ * @param ctor - Constructor of class to convert from
145
+ */
146
+ export declare function modelToJsonSchema<T extends object>(ctor: Function & {
147
+ prototype: T;
148
+ }, jsonSchemaOptions?: JsonSchemaOptions<T>): SchemaObject;