@goatlab/fluent 0.7.31 → 0.7.32

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 (262) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/package.json +34 -34
  4. package/dist/BaseConnector.d.ts +0 -43
  5. package/dist/BaseConnector.js +0 -257
  6. package/dist/Fluent.d.ts +0 -7
  7. package/dist/Fluent.js +0 -22
  8. package/dist/FluentConnectorInterface.d.ts +0 -17
  9. package/dist/FluentConnectorInterface.js +0 -2
  10. package/dist/FluentEntity.d.ts +0 -7
  11. package/dist/FluentEntity.js +0 -28
  12. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +0 -39
  13. package/dist/TypeOrmConnector/TypeOrmConnector.js +0 -392
  14. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +0 -7
  15. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +0 -149
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +0 -6
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +0 -46
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +0 -4
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +0 -19
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +0 -4
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +0 -12
  22. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +0 -6
  23. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +0 -166
  24. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +0 -8
  25. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +0 -200
  26. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +0 -6
  27. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +0 -207
  28. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +0 -1
  29. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +0 -256
  30. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +0 -116
  31. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +0 -74
  32. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +0 -5
  33. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +0 -17
  34. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +0 -5
  35. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +0 -17
  36. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +0 -5
  37. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +0 -17
  38. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +0 -1
  39. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +0 -193
  40. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +0 -53
  41. package/dist/TypeOrmConnector/test/basic/goat.entity.js +0 -53
  42. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +0 -5
  43. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +0 -16
  44. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +0 -5
  45. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +0 -16
  46. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +0 -5
  47. package/dist/TypeOrmConnector/test/basic/goat.repository.js +0 -16
  48. package/dist/TypeOrmConnector/test/dbEntities.d.ts +0 -6
  49. package/dist/TypeOrmConnector/test/dbEntities.js +0 -17
  50. package/dist/TypeOrmConnector/test/docker/docker.d.ts +0 -35
  51. package/dist/TypeOrmConnector/test/docker/docker.js +0 -148
  52. package/dist/TypeOrmConnector/test/docker/mongo.d.ts +0 -16
  53. package/dist/TypeOrmConnector/test/docker/mongo.js +0 -93
  54. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +0 -17
  55. package/dist/TypeOrmConnector/test/docker/mysql.js +0 -132
  56. package/dist/TypeOrmConnector/test/flock.d.ts +0 -4
  57. package/dist/TypeOrmConnector/test/flock.js +0 -25
  58. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +0 -10
  59. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +0 -28
  60. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +0 -2
  61. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +0 -12
  62. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +0 -9
  63. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +0 -25
  64. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +0 -6
  65. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +0 -17
  66. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +0 -10
  67. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +0 -32
  68. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +0 -10
  69. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +0 -26
  70. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +0 -2
  71. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +0 -16
  72. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +0 -9
  73. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +0 -25
  74. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +0 -6
  75. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +0 -17
  76. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +0 -10
  77. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +0 -33
  78. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +0 -7
  79. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +0 -32
  80. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +0 -511
  81. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +0 -8
  82. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +0 -10
  83. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +0 -26
  84. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +0 -15
  85. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +0 -9
  86. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +0 -1
  87. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +0 -575
  88. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +0 -152
  89. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +0 -14
  90. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +0 -12
  91. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +0 -8
  92. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +0 -6
  93. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +0 -29
  94. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +0 -9
  95. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +0 -25
  96. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +0 -5
  97. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +0 -23
  98. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +0 -15
  99. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +0 -9
  100. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +0 -6
  101. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +0 -17
  102. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +0 -14
  103. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +0 -56
  104. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +0 -10
  105. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +0 -30
  106. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +0 -546
  107. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +0 -67
  108. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +0 -2
  109. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +0 -12
  110. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +0 -1
  111. package/dist/TypeOrmConnector/util/clearEmpties.js +0 -25
  112. package/dist/TypeOrmConnector/util/extractConditions.d.ts +0 -6
  113. package/dist/TypeOrmConnector/util/extractConditions.js +0 -80
  114. package/dist/TypeOrmConnector/util/extractInclude.d.ts +0 -2
  115. package/dist/TypeOrmConnector/util/extractInclude.js +0 -25
  116. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +0 -12
  117. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +0 -42
  118. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +0 -4
  119. package/dist/TypeOrmConnector/util/extractOrderBy.js +0 -18
  120. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +0 -19
  121. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +0 -26
  122. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +0 -1
  123. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +0 -20
  124. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +0 -1
  125. package/dist/TypeOrmConnector/util/isAnyObject.js +0 -7
  126. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +0 -2
  127. package/dist/TypeOrmConnector/util/nestQueryResults.js +0 -31
  128. package/dist/cache.d.ts +0 -9
  129. package/dist/cache.js +0 -43
  130. package/dist/core/Loopback/build-schema.d.ts +0 -31
  131. package/dist/core/Loopback/build-schema.js +0 -333
  132. package/dist/core/Loopback/common-types.d.ts +0 -36
  133. package/dist/core/Loopback/common-types.js +0 -13
  134. package/dist/core/Loopback/json-to-schema.d.ts +0 -6
  135. package/dist/core/Loopback/json-to-schema.js +0 -96
  136. package/dist/core/Loopback/mapValues.d.ts +0 -2
  137. package/dist/core/Loopback/mapValues.js +0 -835
  138. package/dist/core/Loopback/metadata.d.ts +0 -9
  139. package/dist/core/Loopback/metadata.js +0 -28
  140. package/dist/core/Loopback/model.d.ts +0 -87
  141. package/dist/core/Loopback/model.js +0 -244
  142. package/dist/core/Loopback/query.d.ts +0 -97
  143. package/dist/core/Loopback/query.js +0 -292
  144. package/dist/core/Loopback/relation.types.d.ts +0 -45
  145. package/dist/core/Loopback/relation.types.js +0 -13
  146. package/dist/core/Loopback/type-resolver.d.ts +0 -7
  147. package/dist/core/Loopback/type-resolver.js +0 -34
  148. package/dist/core/Loopback/type.d.ts +0 -9
  149. package/dist/core/Loopback/type.js +0 -2
  150. package/dist/core/Nestjs/applyDecorators.d.ts +0 -1
  151. package/dist/core/Nestjs/applyDecorators.js +0 -17
  152. package/dist/core/Nestjs/types/common.d.ts +0 -16
  153. package/dist/core/Nestjs/types/common.js +0 -37
  154. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +0 -1
  155. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +0 -7
  156. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +0 -27
  157. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +0 -65
  158. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +0 -5
  159. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +0 -131
  160. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +0 -1
  161. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +0 -19
  162. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +0 -2
  163. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +0 -55
  164. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +0 -1
  165. package/dist/core/Nestjs/types/decorators/directive.decorator.js +0 -36
  166. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +0 -1
  167. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +0 -25
  168. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +0 -15
  169. package/dist/core/Nestjs/types/decorators/field.decorator.js +0 -56
  170. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +0 -7
  171. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +0 -23
  172. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +0 -9
  173. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +0 -27
  174. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +0 -3
  175. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +0 -42
  176. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +0 -3
  177. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +0 -9
  178. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +0 -3
  179. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +0 -9
  180. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +0 -3
  181. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +0 -9
  182. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +0 -3
  183. package/dist/core/Nestjs/types/errors/undefined-type.error.js +0 -10
  184. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +0 -3
  185. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +0 -10
  186. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +0 -5
  187. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +0 -2
  188. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +0 -5
  189. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +0 -2
  190. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +0 -11
  191. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +0 -2
  192. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +0 -15
  193. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +0 -2
  194. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +0 -235
  195. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +0 -2
  196. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +0 -2
  197. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +0 -2
  198. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +0 -5
  199. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +0 -2
  200. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +0 -9
  201. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +0 -2
  202. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +0 -5
  203. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +0 -2
  204. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +0 -15
  205. package/dist/core/Nestjs/types/lazy-metadata.storage.js +0 -67
  206. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +0 -11
  207. package/dist/core/Nestjs/types/metadata/class.metadata.js +0 -2
  208. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +0 -8
  209. package/dist/core/Nestjs/types/metadata/directive.metadata.js +0 -2
  210. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +0 -11
  211. package/dist/core/Nestjs/types/metadata/enum.metadata.js +0 -2
  212. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +0 -8
  213. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +0 -2
  214. package/dist/core/Nestjs/types/metadata/index.d.ts +0 -8
  215. package/dist/core/Nestjs/types/metadata/index.js +0 -11
  216. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +0 -6
  217. package/dist/core/Nestjs/types/metadata/interface.metadata.js +0 -2
  218. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +0 -4
  219. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +0 -2
  220. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +0 -18
  221. package/dist/core/Nestjs/types/metadata/param.metadata.js +0 -2
  222. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +0 -20
  223. package/dist/core/Nestjs/types/metadata/property.metadata.js +0 -2
  224. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +0 -34
  225. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +0 -2
  226. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +0 -9
  227. package/dist/core/Nestjs/types/metadata/union.metadata.js +0 -2
  228. package/dist/core/Nestjs/types/object-type.decorator.d.ts +0 -8
  229. package/dist/core/Nestjs/types/object-type.decorator.js +0 -25
  230. package/dist/core/Nestjs/types/omit-type.d.ts +0 -2
  231. package/dist/core/Nestjs/types/omit-type.js +0 -34
  232. package/dist/core/Nestjs/types/reflection.utils.d.ts +0 -15
  233. package/dist/core/Nestjs/types/reflection.utils.js +0 -65
  234. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +0 -4
  235. package/dist/core/Nestjs/types/set-metadata.decorator.js +0 -16
  236. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +0 -69
  237. package/dist/core/Nestjs/types/type-metadata.storage.js +0 -342
  238. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +0 -3
  239. package/dist/core/Nestjs/types/utils/enum.utils.js +0 -29
  240. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +0 -3
  241. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +0 -72
  242. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +0 -2
  243. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +0 -38
  244. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +0 -6
  245. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +0 -36
  246. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +0 -2
  247. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +0 -16
  248. package/dist/core/types.d.ts +0 -23
  249. package/dist/core/types.js +0 -29
  250. package/dist/decorators.d.ts +0 -47
  251. package/dist/decorators.js +0 -104
  252. package/dist/generatorDatasource.d.ts +0 -2
  253. package/dist/generatorDatasource.js +0 -12
  254. package/dist/index.d.ts +0 -30
  255. package/dist/index.js +0 -49
  256. package/dist/loadRelations.d.ts +0 -12
  257. package/dist/loadRelations.js +0 -133
  258. package/dist/outputKeys.d.ts +0 -2
  259. package/dist/outputKeys.js +0 -17
  260. package/dist/tsconfig.tsbuildinfo +0 -1
  261. package/dist/types.d.ts +0 -141
  262. package/dist/types.js +0 -22
@@ -1,333 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modelToJsonSchema = exports.getNavigationalPropertyForRelation = exports.metaToJsonProperty = exports.isArrayType = exports.stringTypeToWrapper = exports.getJsonSchemaRef = exports.getJsonSchema = exports.buildModelCacheKey = exports.JSON_SCHEMA_KEY = void 0;
4
- const metadata_1 = require("@loopback/metadata");
5
- const util_1 = require("util");
6
- const type_resolver_1 = require("./type-resolver");
7
- const metadata_2 = require("./metadata");
8
- exports.JSON_SCHEMA_KEY = metadata_1.MetadataAccessor.create('loopback:json-schema');
9
- const debug = console.log;
10
- function buildModelCacheKey(options = {}) {
11
- if (Object.keys(options).length === 0) {
12
- return 'modelOnly';
13
- }
14
- return `model${options.title ?? ''}${getTitleSuffix(options)}`;
15
- }
16
- exports.buildModelCacheKey = buildModelCacheKey;
17
- function getJsonSchema(ctor, options) {
18
- const cached = metadata_1.MetadataInspector.getClassMetadata(exports.JSON_SCHEMA_KEY, ctor, {
19
- ownMetadataOnly: true
20
- });
21
- const key = buildModelCacheKey(options);
22
- let schema = cached?.[key];
23
- if (!schema) {
24
- schema = modelToJsonSchema(ctor, options);
25
- if (cached) {
26
- cached[key] = schema;
27
- }
28
- else {
29
- metadata_1.MetadataInspector.defineMetadata(exports.JSON_SCHEMA_KEY.key, { [key]: schema }, ctor);
30
- }
31
- }
32
- return schema;
33
- }
34
- exports.getJsonSchema = getJsonSchema;
35
- function getJsonSchemaRef(modelCtor, options) {
36
- const schemaWithDefinitions = getJsonSchema(modelCtor, options);
37
- const key = schemaWithDefinitions.title;
38
- if (!key)
39
- return schemaWithDefinitions;
40
- const definitions = { ...schemaWithDefinitions.definitions };
41
- const schema = { ...schemaWithDefinitions };
42
- delete schema.definitions;
43
- definitions[key] = schema;
44
- return {
45
- $ref: `#/definitions/${key}`,
46
- definitions
47
- };
48
- }
49
- exports.getJsonSchemaRef = getJsonSchemaRef;
50
- function stringTypeToWrapper(type) {
51
- if (typeof type === 'function') {
52
- return type;
53
- }
54
- type = type.toLowerCase();
55
- let wrapper;
56
- switch (type) {
57
- case 'number': {
58
- wrapper = Number;
59
- break;
60
- }
61
- case 'string': {
62
- wrapper = String;
63
- break;
64
- }
65
- case 'boolean': {
66
- wrapper = Boolean;
67
- break;
68
- }
69
- case 'array': {
70
- wrapper = Array;
71
- break;
72
- }
73
- case 'object':
74
- case 'any': {
75
- wrapper = Object;
76
- break;
77
- }
78
- case 'date': {
79
- wrapper = Date;
80
- break;
81
- }
82
- case 'buffer': {
83
- wrapper = Buffer;
84
- break;
85
- }
86
- case 'null': {
87
- wrapper = type_resolver_1.Null;
88
- break;
89
- }
90
- default: {
91
- throw new Error(`Unsupported type: ${type}`);
92
- }
93
- }
94
- return wrapper;
95
- }
96
- exports.stringTypeToWrapper = stringTypeToWrapper;
97
- function isArrayType(type) {
98
- return type === Array || type === 'array';
99
- }
100
- exports.isArrayType = isArrayType;
101
- function metaToJsonProperty(meta) {
102
- const propDef = {};
103
- let result;
104
- let propertyType = meta.type;
105
- if (isArrayType(propertyType) && meta.itemType) {
106
- if (isArrayType(meta.itemType) && !meta.jsonSchema) {
107
- throw new Error('You must provide the "jsonSchema" field when define ' +
108
- 'a nested array property');
109
- }
110
- result = { type: 'array', items: propDef };
111
- propertyType = meta.itemType;
112
- }
113
- else {
114
- result = propDef;
115
- }
116
- const wrappedType = stringTypeToWrapper(propertyType);
117
- const resolvedType = (0, type_resolver_1.resolveType)(wrappedType);
118
- if (resolvedType === Date) {
119
- Object.assign(propDef, {
120
- type: 'string',
121
- format: 'date-time'
122
- });
123
- }
124
- else if (propertyType === 'any') {
125
- }
126
- else if ((0, type_resolver_1.isBuiltinType)(resolvedType)) {
127
- Object.assign(propDef, {
128
- type: resolvedType.name.toLowerCase()
129
- });
130
- }
131
- else {
132
- Object.assign(propDef, { $ref: `#/definitions/${resolvedType.name}` });
133
- }
134
- if (meta.description) {
135
- Object.assign(propDef, {
136
- description: meta.description
137
- });
138
- }
139
- if (meta.jsonSchema) {
140
- Object.assign(propDef, meta.jsonSchema);
141
- }
142
- return result;
143
- }
144
- exports.metaToJsonProperty = metaToJsonProperty;
145
- function getNavigationalPropertyForRelation(relMeta, targetRef) {
146
- if (relMeta.targetsMany === true) {
147
- return {
148
- type: 'array',
149
- items: targetRef
150
- };
151
- }
152
- if (relMeta.targetsMany === false) {
153
- return targetRef;
154
- }
155
- throw new Error(`targetsMany attribute missing for ${relMeta.name}`);
156
- }
157
- exports.getNavigationalPropertyForRelation = getNavigationalPropertyForRelation;
158
- function buildSchemaTitle(ctor, meta, options) {
159
- if (options.title)
160
- return options.title;
161
- const title = meta.title || ctor.name;
162
- return title + getTitleSuffix(options);
163
- }
164
- function getTitleSuffix(options = {}) {
165
- let suffix = '';
166
- if (options.optional?.length) {
167
- suffix += `Optional_${options.optional.join('-')}_`;
168
- }
169
- else if (options.partial) {
170
- suffix += 'Partial';
171
- }
172
- if (options.exclude?.length) {
173
- suffix += `Excluding_${options.exclude.join('-')}_`;
174
- }
175
- if (options.includeRelations) {
176
- suffix += 'WithRelations';
177
- }
178
- return suffix;
179
- }
180
- function stringifyOptions(modelSettings = {}) {
181
- return (0, util_1.inspect)(modelSettings, {
182
- depth: Infinity,
183
- maxArrayLength: Infinity,
184
- breakLength: Infinity
185
- });
186
- }
187
- function isEmptyJson(obj) {
188
- return !(obj && Object.keys(obj).length);
189
- }
190
- function getDescriptionSuffix(typeName, rawOptions = {}) {
191
- const options = { ...rawOptions };
192
- delete options.visited;
193
- if (options.optional && !options.optional.length) {
194
- delete options.optional;
195
- }
196
- const type = typeName;
197
- let tsType = type;
198
- if (options.includeRelations) {
199
- tsType = `${type}WithRelations`;
200
- }
201
- if (options.partial) {
202
- tsType = `Partial<${tsType}>`;
203
- }
204
- if (options.exclude) {
205
- const excludedProps = options.exclude.map(p => `'${p}'`);
206
- tsType = `Omit<${tsType}, ${excludedProps.join(' | ')}>`;
207
- }
208
- if (options.optional) {
209
- const optionalProps = options.optional.map(p => `'${p}'`);
210
- tsType = `@loopback/repository-json-schema#Optional<${tsType}, ${optionalProps.join(' | ')}>`;
211
- }
212
- return !isEmptyJson(options)
213
- ? `(tsType: ${tsType}, schemaOptions: ${stringifyOptions(options)})`
214
- : '';
215
- }
216
- function modelToJsonSchema(ctor, jsonSchemaOptions = {}) {
217
- const options = { ...jsonSchemaOptions };
218
- options.visited = options.visited ?? {};
219
- options.optional = options.optional ?? [];
220
- const partial = options.partial && !options.optional.length;
221
- if (options.partial && !partial) {
222
- debug('Overriding "partial" option with "optional" option');
223
- delete options.partial;
224
- }
225
- debug('Creating schema for model %s', ctor.name);
226
- debug('JSON schema options: %o', options);
227
- const modelDef = metadata_2.ModelMetadataHelper.getModelMetadata(ctor);
228
- if (modelDef == null || Object.keys(modelDef).length === 0) {
229
- return {};
230
- }
231
- const meta = modelDef;
232
- debug('Model settings', meta.settings);
233
- const title = buildSchemaTitle(ctor, meta, options);
234
- if (options.visited[title])
235
- return options.visited[title];
236
- const result = { title };
237
- options.visited[title] = result;
238
- result.type = 'object';
239
- const descriptionSuffix = getDescriptionSuffix(ctor.name, options);
240
- if (meta.description) {
241
- const formatSuffix = descriptionSuffix ? ` ${descriptionSuffix}` : '';
242
- result.description = meta.description + formatSuffix;
243
- }
244
- else if (descriptionSuffix) {
245
- result.description = descriptionSuffix;
246
- }
247
- for (const p in meta.properties) {
248
- if (options.exclude?.includes(p)) {
249
- debug('Property % is excluded by %s', p, options.exclude);
250
- continue;
251
- }
252
- if (meta.properties[p].type == null) {
253
- throw new Error(`Property ${ctor.name}.${p} does not have "type" in its definition`);
254
- }
255
- result.properties = result.properties ?? {};
256
- result.properties[p] = result.properties[p] || {};
257
- const metaProperty = { ...meta.properties[p] };
258
- result.properties[p] = metaToJsonProperty(metaProperty);
259
- const optional = options.optional.includes(p);
260
- if (metaProperty.required && !(partial || optional)) {
261
- result.required = result.required ?? [];
262
- result.required.push(p);
263
- }
264
- const resolvedType = (0, type_resolver_1.resolveType)(metaProperty.type);
265
- const referenceType = isArrayType(resolvedType)
266
- ?
267
- (0, type_resolver_1.resolveType)(metaProperty.itemType)
268
- : resolvedType;
269
- if (typeof referenceType !== 'function' || (0, type_resolver_1.isBuiltinType)(referenceType)) {
270
- continue;
271
- }
272
- const propOptions = { ...options };
273
- if (propOptions.partial !== 'deep') {
274
- delete propOptions.partial;
275
- }
276
- if (propOptions.includeRelations === true) {
277
- delete propOptions.includeRelations;
278
- }
279
- delete propOptions.title;
280
- const propSchema = getJsonSchema(referenceType, propOptions);
281
- if (typeof result.properties[p] !== 'boolean') {
282
- const prop = result.properties[p];
283
- const propTitle = propSchema.title ?? referenceType.name;
284
- const targetRef = { $ref: `#/definitions/${propTitle}` };
285
- if (prop.type === 'array' && prop.items) {
286
- prop.items = targetRef;
287
- }
288
- else {
289
- result.properties[p] = targetRef;
290
- }
291
- includeReferencedSchema(propTitle, propSchema);
292
- }
293
- }
294
- result.additionalProperties = meta.settings.strict === false;
295
- debug(' additionalProperties?', result.additionalProperties);
296
- if (options.includeRelations) {
297
- for (const r in meta.relations) {
298
- result.properties = result.properties ?? {};
299
- const relMeta = meta.relations[r];
300
- const targetType = (0, type_resolver_1.resolveType)(relMeta.target);
301
- const targetOptions = { ...options };
302
- delete targetOptions.title;
303
- const targetSchema = getJsonSchema(targetType, targetOptions);
304
- const targetRef = { $ref: `#/definitions/${targetSchema.title}` };
305
- const propDef = getNavigationalPropertyForRelation(relMeta, targetRef);
306
- result.properties[relMeta.name] =
307
- result.properties[relMeta.name] || propDef;
308
- includeReferencedSchema(targetSchema.title, targetSchema);
309
- }
310
- }
311
- function includeReferencedSchema(name, schema) {
312
- if (!schema || !Object.keys(schema).length)
313
- return;
314
- if (result !== schema?.definitions) {
315
- for (const key in schema.definitions) {
316
- if (key === title)
317
- continue;
318
- result.definitions = result.definitions ?? {};
319
- result.definitions[key] = schema.definitions[key];
320
- }
321
- delete schema.definitions;
322
- }
323
- if (result !== schema) {
324
- result.definitions = result.definitions ?? {};
325
- result.definitions[name] = schema;
326
- }
327
- }
328
- if (meta.jsonSchema) {
329
- Object.assign(result, meta.jsonSchema);
330
- }
331
- return result;
332
- }
333
- exports.modelToJsonSchema = modelToJsonSchema;
@@ -1,36 +0,0 @@
1
- export interface Class<T> {
2
- new (...args: any[]): T;
3
- [property: string]: any;
4
- }
5
- export interface ConstructorFunction<T> {
6
- (...args: any[]): T;
7
- }
8
- export declare type Constructor<T> = Class<T> | ConstructorFunction<T>;
9
- export interface AnyObject {
10
- [property: string]: any;
11
- }
12
- export declare type DeepPartial<T> = Partial<T> | {
13
- [P in keyof T]?: DeepPartial<T[P]>;
14
- };
15
- export declare type DataObject<T extends object> = T | DeepPartial<T>;
16
- export declare type Options = AnyObject;
17
- export declare type Callback<T> = (err: Error | string | null | undefined, result?: T) => void;
18
- export declare type Command = string | AnyObject;
19
- export declare type NamedParameters = AnyObject;
20
- export declare type PositionalParameters = any[];
21
- export interface Count {
22
- count: number;
23
- }
24
- export declare const CountSchema: {
25
- type: "object";
26
- title: string;
27
- 'x-typescript-type': string;
28
- properties: {
29
- count: {
30
- type: "number";
31
- };
32
- };
33
- };
34
- export declare type PrototypeOf<Ctor extends Function> = Ctor extends {
35
- prototype: infer Proto;
36
- } ? Proto : never;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CountSchema = void 0;
4
- exports.CountSchema = {
5
- type: 'object',
6
- title: 'loopback.Count',
7
- 'x-typescript-type': '@loopback/repository#Count',
8
- properties: {
9
- count: {
10
- type: 'number'
11
- }
12
- }
13
- };
@@ -1,6 +0,0 @@
1
- import { ReferenceObject, SchemaObject, SchemasObject } from 'openapi3-ts';
2
- export declare type SchemaRef = ReferenceObject & {
3
- definitions: SchemasObject;
4
- };
5
- export declare function jsonToSchemaObject(json: SchemaObject, visited?: Map<SchemaObject, SchemaObject | SchemaRef>): SchemaObject | SchemaRef;
6
- export declare function jsonOrBooleanToJSON(jsonOrBool: boolean | SchemaObject): SchemaObject;
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jsonOrBooleanToJSON = exports.jsonToSchemaObject = void 0;
4
- const tslib_1 = require("tslib");
5
- const mapValues_1 = tslib_1.__importDefault(require("./mapValues"));
6
- const openapi3_ts_1 = require("openapi3-ts");
7
- function jsonToSchemaObject(json, visited = new Map()) {
8
- const converted = 'x-loopback-converted';
9
- const schema = visited.get(json);
10
- if (schema != null && (0, openapi3_ts_1.isSchemaObject)(schema) && schema[converted] === false) {
11
- return { $ref: `#/components/schemas/${json.title}` };
12
- }
13
- if (schema != null)
14
- return schema;
15
- const result = {
16
- [converted]: false
17
- };
18
- visited.set(json, result);
19
- const propsToIgnore = ['additionalItems', 'defaultProperties', 'typeof'];
20
- for (const property in json) {
21
- if (propsToIgnore.includes(property)) {
22
- continue;
23
- }
24
- switch (property) {
25
- case 'type': {
26
- if (json.type === 'array' && !json.items) {
27
- throw new Error('"items" property must be present if "type" is an array');
28
- }
29
- result.type = Array.isArray(json.type) ? json.type[0] : json.type;
30
- break;
31
- }
32
- case 'allOf': {
33
- result.allOf = json.allOf?.map(item => jsonToSchemaObject(item, visited));
34
- break;
35
- }
36
- case 'anyOf': {
37
- result.anyOf = json.anyOf?.map(item => jsonToSchemaObject(item, visited));
38
- break;
39
- }
40
- case 'oneOf': {
41
- result.oneOf = json.oneOf?.map(item => jsonToSchemaObject(item, visited));
42
- break;
43
- }
44
- case 'definitions': {
45
- result.definitions = (0, mapValues_1.default)(json.definitions, def => jsonToSchemaObject(jsonOrBooleanToJSON(def), visited));
46
- break;
47
- }
48
- case 'properties': {
49
- result.properties = (0, mapValues_1.default)(json.properties, item => jsonToSchemaObject(jsonOrBooleanToJSON(item), visited));
50
- break;
51
- }
52
- case 'additionalProperties': {
53
- if (typeof json.additionalProperties === 'boolean') {
54
- result.additionalProperties = json.additionalProperties;
55
- }
56
- else {
57
- result.additionalProperties = jsonToSchemaObject(json.additionalProperties, visited);
58
- }
59
- break;
60
- }
61
- case 'items': {
62
- const items = Array.isArray(json.items) ? json.items[0] : json.items;
63
- result.items = jsonToSchemaObject(jsonOrBooleanToJSON(items), visited);
64
- break;
65
- }
66
- case '$ref': {
67
- result.$ref = json.$ref.replace('#/definitions', '#/components/schemas');
68
- break;
69
- }
70
- case 'examples': {
71
- if (Array.isArray(json.examples)) {
72
- result.example = json.examples[0];
73
- }
74
- break;
75
- }
76
- default: {
77
- result[property] = json[property];
78
- break;
79
- }
80
- }
81
- }
82
- delete result[converted];
83
- const matched = result.description?.match(/^\(tsType: (.+), schemaOptions:/);
84
- if (matched) {
85
- result['x-typescript-type'] = matched[1];
86
- }
87
- return result;
88
- }
89
- exports.jsonToSchemaObject = jsonToSchemaObject;
90
- function jsonOrBooleanToJSON(jsonOrBool) {
91
- if (typeof jsonOrBool === 'object') {
92
- return jsonOrBool;
93
- }
94
- return jsonOrBool ? {} : { not: {} };
95
- }
96
- exports.jsonOrBooleanToJSON = jsonOrBooleanToJSON;
@@ -1,2 +0,0 @@
1
- export = mapValues;
2
- declare function mapValues(object: any, iteratee?: Function | undefined): any;