@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,15 +0,0 @@
1
- import { GqlTypeReference, ReturnTypeFunc } from './interfaces/return-type-func.interface';
2
- import { TypeOptions } from './interfaces/type-options.interface';
3
- export interface ReflectTypeOptions {
4
- metadataKey: 'design:type' | 'design:returntype' | 'design:paramtypes';
5
- prototype?: Object;
6
- propertyKey: string;
7
- explicitTypeFn?: ReturnTypeFunc;
8
- typeOptions?: TypeOptions;
9
- index?: number;
10
- }
11
- export interface TypeMetadata {
12
- typeFn: (type?: any) => GqlTypeReference;
13
- options: TypeOptions;
14
- }
15
- export declare function reflectTypeFromMetadata(reflectOptions: ReflectTypeOptions): TypeMetadata;
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reflectTypeFromMetadata = void 0;
4
- const undefined_type_error_1 = require("./errors/undefined-type.error");
5
- const get = (obj, path, defaultValue = undefined) => {
6
- const travel = regexp => String.prototype.split
7
- .call(path, regexp)
8
- .filter(Boolean)
9
- .reduce((res, key) => (res !== null && res !== undefined ? res[key] : res), obj);
10
- const result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/);
11
- return result === undefined || result === obj ? defaultValue : result;
12
- };
13
- const NOT_ALLOWED_TYPES = [Promise, Array, Object, Function];
14
- function reflectTypeFromMetadata(reflectOptions) {
15
- const { metadataKey, prototype, propertyKey, explicitTypeFn, typeOptions = {}, index } = reflectOptions;
16
- const options = { ...typeOptions };
17
- const reflectedType = Reflect.getMetadata(metadataKey, prototype, propertyKey);
18
- const implicitType = extractTypeIfArray(metadataKey, reflectedType, index);
19
- const isNotAllowed = implicitType && NOT_ALLOWED_TYPES.includes(implicitType);
20
- if ((!explicitTypeFn && (!implicitType || isNotAllowed)) ||
21
- (!implicitType && !explicitTypeFn)) {
22
- throw new undefined_type_error_1.UndefinedTypeError(get(prototype, 'constructor.name'), propertyKey, index);
23
- }
24
- if (explicitTypeFn) {
25
- return {
26
- typeFn: createWrappedExplicitTypeFn(explicitTypeFn, options),
27
- options
28
- };
29
- }
30
- return {
31
- typeFn: () => implicitType,
32
- options: implicitType === Array
33
- ? {
34
- ...options,
35
- isArray: true,
36
- arrayDepth: 1
37
- }
38
- : options
39
- };
40
- }
41
- exports.reflectTypeFromMetadata = reflectTypeFromMetadata;
42
- function extractTypeIfArray(metadataKey, reflectedType, index) {
43
- if (metadataKey === 'design:paramtypes') {
44
- return reflectedType[index];
45
- }
46
- return reflectedType;
47
- }
48
- function getTypeReferenceAndArrayDepth([typeOrArray], depth = 1) {
49
- if (!Array.isArray(typeOrArray)) {
50
- return { depth, typeRef: typeOrArray };
51
- }
52
- return getTypeReferenceAndArrayDepth(typeOrArray, depth + 1);
53
- }
54
- function createWrappedExplicitTypeFn(explicitTypeFn, options) {
55
- return () => {
56
- const explicitTypeRef = explicitTypeFn();
57
- if (Array.isArray(explicitTypeRef)) {
58
- const { depth, typeRef } = getTypeReferenceAndArrayDepth(explicitTypeRef);
59
- options.isArray = true;
60
- options.arrayDepth = depth;
61
- return typeRef;
62
- }
63
- return explicitTypeRef;
64
- };
65
- }
@@ -1,4 +0,0 @@
1
- export declare type CustomDecorator<TKey = string> = MethodDecorator & ClassDecorator & {
2
- KEY: TKey;
3
- };
4
- export declare const SetMetadata: <K = string, V = any>(metadataKey: K, metadataValue: V) => CustomDecorator<K>;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SetMetadata = void 0;
4
- const SetMetadata = (metadataKey, metadataValue) => {
5
- const decoratorFactory = (target, key, descriptor) => {
6
- if (descriptor) {
7
- Reflect.defineMetadata(metadataKey, metadataValue, descriptor.value);
8
- return descriptor;
9
- }
10
- Reflect.defineMetadata(metadataKey, metadataValue, target);
11
- return target;
12
- };
13
- decoratorFactory.KEY = metadataKey;
14
- return decoratorFactory;
15
- };
16
- exports.SetMetadata = SetMetadata;
@@ -1,69 +0,0 @@
1
- import { ClassExtensionsMetadata, ClassMetadata, EnumMetadata, FieldResolverMetadata, MethodArgsMetadata, PropertyExtensionsMetadata, PropertyMetadata, ResolverClassMetadata, ResolverTypeMetadata, UnionMetadata } from './metadata';
2
- import { ClassDirectiveMetadata, PropertyDirectiveMetadata } from './metadata/directive.metadata';
3
- import { InterfaceMetadata } from './metadata/interface.metadata';
4
- import { ObjectTypeMetadata } from './metadata/object-type.metadata';
5
- import { Type } from './common';
6
- export declare const METADATA_FACTORY_NAME = "_GRAPHQL_METADATA_FACTORY";
7
- export declare class TypeMetadataStorageHost {
8
- private queries;
9
- private mutations;
10
- private subscriptions;
11
- private fieldResolvers;
12
- private readonly resolvers;
13
- private readonly fields;
14
- private readonly params;
15
- private readonly interfaces;
16
- private readonly enums;
17
- private readonly unions;
18
- private readonly classDirectives;
19
- private readonly fieldDirectives;
20
- private readonly classExtensions;
21
- private readonly fieldExtensions;
22
- private readonly objectTypes;
23
- private readonly inputTypes;
24
- private readonly argumentTypes;
25
- addMutationMetadata(metadata: ResolverTypeMetadata): void;
26
- getMutationsMetadata(): ResolverTypeMetadata[];
27
- addQueryMetadata(metadata: ResolverTypeMetadata): void;
28
- getQueriesMetadata(): ResolverTypeMetadata[];
29
- addSubscriptionMetadata(metadata: ResolverTypeMetadata): void;
30
- getSubscriptionsMetadata(): ResolverTypeMetadata[];
31
- addResolverPropertyMetadata(metadata: FieldResolverMetadata): void;
32
- addArgsMetadata(metadata: ClassMetadata): void;
33
- getArgumentsMetadata(): ClassMetadata[];
34
- getArgumentsMetadataByTarget(target: Type<unknown>): ClassMetadata | undefined;
35
- addInterfaceMetadata(metadata: InterfaceMetadata): void;
36
- getInterfacesMetadata(): InterfaceMetadata[];
37
- getInterfaceMetadataByTarget(target: Type<unknown>): InterfaceMetadata | undefined;
38
- addInputTypeMetadata(metadata: ClassMetadata): void;
39
- getInputTypesMetadata(): ClassMetadata[];
40
- getInputTypeMetadataByTarget(target: Type<unknown>): ObjectTypeMetadata | undefined;
41
- addObjectTypeMetadata(metadata: ObjectTypeMetadata): void;
42
- getObjectTypesMetadata(): ObjectTypeMetadata[];
43
- getObjectTypeMetadataByTarget(target: Type<unknown>): ObjectTypeMetadata | undefined;
44
- addEnumMetadata(metadata: EnumMetadata): void;
45
- getEnumsMetadata(): EnumMetadata[];
46
- addUnionMetadata(metadata: UnionMetadata): void;
47
- getUnionsMetadata(): UnionMetadata[];
48
- addDirectiveMetadata(metadata: ClassDirectiveMetadata): void;
49
- addDirectivePropertyMetadata(metadata: PropertyDirectiveMetadata): void;
50
- addExtensionsMetadata(metadata: ClassExtensionsMetadata): void;
51
- addExtensionsPropertyMetadata(metadata: PropertyExtensionsMetadata): void;
52
- addResolverMetadata(metadata: ResolverClassMetadata): void;
53
- addClassFieldMetadata(metadata: PropertyMetadata): void;
54
- addMethodParamMetadata(metadata: MethodArgsMetadata): void;
55
- compile(orphanedTypes?: Function[]): void;
56
- loadClassPluginMetadata(metadata: ClassMetadata[]): void;
57
- applyPluginMetadata(prototype: Function): void;
58
- compileClassMetadata(metadata: ClassMetadata[]): void;
59
- clear(): void;
60
- private getClassFieldsByPredicate;
61
- private compileResolversMetadata;
62
- private compileFieldResolverMetadata;
63
- private compileExternalFieldResolverMetadata;
64
- private compileExtendedResolversMetadata;
65
- private isFieldDirectiveOrExtension;
66
- private mergeParentResolverHandlers;
67
- private mergeParentFieldHandlers;
68
- }
69
- export declare const TypeMetadataStorage: TypeMetadataStorageHost;
@@ -1,342 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TypeMetadataStorage = exports.TypeMetadataStorageHost = exports.METADATA_FACTORY_NAME = void 0;
4
- const field_decorator_1 = require("./decorators/field.decorator");
5
- const cannot_determine_host_type_error_1 = require("./errors/cannot-determine-host-type.error");
6
- const undefined_type_error_1 = require("./errors/undefined-type.error");
7
- const common_1 = require("./common");
8
- exports.METADATA_FACTORY_NAME = '_GRAPHQL_METADATA_FACTORY';
9
- class TypeMetadataStorageHost {
10
- constructor() {
11
- this.queries = new Array();
12
- this.mutations = new Array();
13
- this.subscriptions = new Array();
14
- this.fieldResolvers = new Array();
15
- this.resolvers = new Array();
16
- this.fields = new Array();
17
- this.params = new Array();
18
- this.interfaces = new Array();
19
- this.enums = new Array();
20
- this.unions = new Array();
21
- this.classDirectives = new Array();
22
- this.fieldDirectives = new Array();
23
- this.classExtensions = new Array();
24
- this.fieldExtensions = new Array();
25
- this.objectTypes = new Array();
26
- this.inputTypes = new Array();
27
- this.argumentTypes = new Array();
28
- }
29
- addMutationMetadata(metadata) {
30
- this.mutations.push(metadata);
31
- }
32
- getMutationsMetadata() {
33
- return this.mutations;
34
- }
35
- addQueryMetadata(metadata) {
36
- this.queries.push(metadata);
37
- }
38
- getQueriesMetadata() {
39
- return this.queries;
40
- }
41
- addSubscriptionMetadata(metadata) {
42
- this.subscriptions.push(metadata);
43
- }
44
- getSubscriptionsMetadata() {
45
- return this.subscriptions;
46
- }
47
- addResolverPropertyMetadata(metadata) {
48
- this.fieldResolvers.push(metadata);
49
- }
50
- addArgsMetadata(metadata) {
51
- this.argumentTypes.push(metadata);
52
- }
53
- getArgumentsMetadata() {
54
- return this.argumentTypes;
55
- }
56
- getArgumentsMetadataByTarget(target) {
57
- return this.argumentTypes.find(item => item.target === target);
58
- }
59
- addInterfaceMetadata(metadata) {
60
- this.interfaces.push(metadata);
61
- }
62
- getInterfacesMetadata() {
63
- return this.interfaces;
64
- }
65
- getInterfaceMetadataByTarget(target) {
66
- return this.interfaces.find(item => item.target === target);
67
- }
68
- addInputTypeMetadata(metadata) {
69
- this.inputTypes.push(metadata);
70
- }
71
- getInputTypesMetadata() {
72
- return this.inputTypes;
73
- }
74
- getInputTypeMetadataByTarget(target) {
75
- return this.inputTypes.find(item => item.target === target);
76
- }
77
- addObjectTypeMetadata(metadata) {
78
- this.objectTypes.push(metadata);
79
- }
80
- getObjectTypesMetadata() {
81
- return this.objectTypes;
82
- }
83
- getObjectTypeMetadataByTarget(target) {
84
- return this.objectTypes.find(item => item.target === target);
85
- }
86
- addEnumMetadata(metadata) {
87
- this.enums.push(metadata);
88
- }
89
- getEnumsMetadata() {
90
- return this.enums;
91
- }
92
- addUnionMetadata(metadata) {
93
- this.unions.push(metadata);
94
- }
95
- getUnionsMetadata() {
96
- return this.unions;
97
- }
98
- addDirectiveMetadata(metadata) {
99
- const exist = this.fieldDirectives.some(directiveMetadata => directiveMetadata.sdl === metadata.sdl &&
100
- directiveMetadata.target === metadata.target);
101
- if (!exist) {
102
- this.classDirectives.push(metadata);
103
- }
104
- }
105
- addDirectivePropertyMetadata(metadata) {
106
- const exist = this.fieldDirectives.some(directiveMetadata => directiveMetadata.fieldName === metadata.fieldName &&
107
- directiveMetadata.sdl === metadata.sdl &&
108
- directiveMetadata.target === metadata.target);
109
- if (!exist) {
110
- this.fieldDirectives.push(metadata);
111
- }
112
- }
113
- addExtensionsMetadata(metadata) {
114
- this.classExtensions.push(metadata);
115
- }
116
- addExtensionsPropertyMetadata(metadata) {
117
- this.fieldExtensions.push(metadata);
118
- }
119
- addResolverMetadata(metadata) {
120
- this.resolvers.push(metadata);
121
- }
122
- addClassFieldMetadata(metadata) {
123
- const existingMetadata = this.fields.find(item => item.target === metadata.target && item.name === metadata.name);
124
- if (existingMetadata) {
125
- const { options } = existingMetadata;
126
- if ((0, common_1.isUndefined)(options.nullable) && (0, common_1.isUndefined)(options.defaultValue)) {
127
- options.nullable = metadata.options.nullable;
128
- }
129
- }
130
- else {
131
- this.fields.push(metadata);
132
- }
133
- }
134
- addMethodParamMetadata(metadata) {
135
- this.params.push(metadata);
136
- }
137
- compile(orphanedTypes = []) {
138
- this.classDirectives.reverse();
139
- this.classExtensions.reverse();
140
- this.fieldDirectives.reverse();
141
- this.fieldExtensions.reverse();
142
- const classMetadata = [
143
- ...this.objectTypes,
144
- ...this.inputTypes,
145
- ...this.argumentTypes,
146
- ...this.interfaces
147
- ];
148
- this.loadClassPluginMetadata(classMetadata);
149
- this.compileClassMetadata(classMetadata);
150
- this.compileFieldResolverMetadata(this.fieldResolvers);
151
- const resolversMetadata = [
152
- ...this.queries,
153
- ...this.mutations,
154
- ...this.subscriptions
155
- ];
156
- this.compileResolversMetadata(resolversMetadata);
157
- this.compileExtendedResolversMetadata();
158
- orphanedTypes
159
- .filter(type => type && type.prototype)
160
- .forEach(type => this.applyPluginMetadata(type.prototype));
161
- }
162
- loadClassPluginMetadata(metadata) {
163
- metadata
164
- .filter(item => item?.target)
165
- .forEach(item => this.applyPluginMetadata(item.target.prototype));
166
- }
167
- applyPluginMetadata(prototype) {
168
- do {
169
- if (!prototype.constructor) {
170
- return;
171
- }
172
- if (!prototype.constructor[exports.METADATA_FACTORY_NAME]) {
173
- continue;
174
- }
175
- const metadata = prototype.constructor[exports.METADATA_FACTORY_NAME]();
176
- const properties = Object.keys(metadata);
177
- properties.forEach(key => {
178
- if (metadata[key].type) {
179
- const { type, ...options } = metadata[key];
180
- (0, field_decorator_1.addFieldMetadata)(type, options, prototype, key, undefined, true);
181
- }
182
- else {
183
- (0, field_decorator_1.addFieldMetadata)(metadata[key], undefined, prototype, key, undefined, true);
184
- }
185
- });
186
- } while ((prototype = Reflect.getPrototypeOf(prototype)) &&
187
- prototype !== Object.prototype &&
188
- prototype);
189
- }
190
- compileClassMetadata(metadata) {
191
- metadata.forEach(item => {
192
- const belongsToClass = common_1.isTargetEqual.bind(undefined, item);
193
- if (!item.properties) {
194
- item.properties = this.getClassFieldsByPredicate(belongsToClass);
195
- }
196
- if (!item.directives) {
197
- item.directives = this.classDirectives.filter(belongsToClass);
198
- }
199
- if (!item.extensions) {
200
- item.extensions = this.classExtensions
201
- .filter(belongsToClass)
202
- .reduce((curr, acc) => ({ ...curr, ...acc.value }), {});
203
- }
204
- });
205
- }
206
- clear() {
207
- Object.assign(this, new TypeMetadataStorageHost());
208
- }
209
- getClassFieldsByPredicate(belongsToClass) {
210
- const fields = this.fields.filter(belongsToClass);
211
- fields.forEach(field => {
212
- const isHostEqual = common_1.isTargetEqual.bind(undefined, field);
213
- field.methodArgs = this.params.filter(param => isHostEqual(param) && field.name === param.methodName);
214
- field.directives = this.fieldDirectives.filter(this.isFieldDirectiveOrExtension.bind(this, field));
215
- field.extensions = this.fieldExtensions
216
- .filter(this.isFieldDirectiveOrExtension.bind(this, field))
217
- .reduce((curr, acc) => ({ ...curr, ...acc.value }), {});
218
- });
219
- return fields;
220
- }
221
- compileResolversMetadata(metadata) {
222
- metadata.forEach(item => {
223
- const isTypeEqual = common_1.isTargetEqual.bind(undefined, item);
224
- const resolverMetadata = this.resolvers.find(isTypeEqual);
225
- item.classMetadata = resolverMetadata;
226
- item.methodArgs = this.params.filter(param => isTypeEqual(param) && item.methodName === param.methodName);
227
- item.directives = this.fieldDirectives.filter(this.isFieldDirectiveOrExtension.bind(this, item));
228
- item.extensions = this.fieldExtensions
229
- .filter(this.isFieldDirectiveOrExtension.bind(this, item))
230
- .reduce((curr, acc) => ({ ...curr, ...acc.value }), {});
231
- });
232
- }
233
- compileFieldResolverMetadata(metadata) {
234
- this.compileResolversMetadata(metadata);
235
- metadata.forEach(item => {
236
- const belongsToClass = common_1.isTargetEqual.bind(undefined, item);
237
- item.directives = this.fieldDirectives.filter(this.isFieldDirectiveOrExtension.bind(this, item));
238
- item.extensions = this.fieldExtensions
239
- .filter(this.isFieldDirectiveOrExtension.bind(this, item))
240
- .reduce((curr, acc) => ({ ...curr, ...acc.value }), {});
241
- item.objectTypeFn =
242
- item.kind === 'external'
243
- ? this.resolvers?.find(belongsToClass)?.typeFn
244
- : () => item.target;
245
- if (item.kind === 'external') {
246
- this.compileExternalFieldResolverMetadata(item);
247
- }
248
- });
249
- }
250
- compileExternalFieldResolverMetadata(item) {
251
- const objectTypeRef = this.resolvers
252
- .find(el => (0, common_1.isTargetEqual)(el, item))
253
- ?.typeFn();
254
- const objectOrInterfaceTypeMetadata = this.objectTypes.find(objTypeDef => objTypeDef.target === objectTypeRef) ||
255
- this.interfaces.find(interfaceTypeDef => interfaceTypeDef.target === objectTypeRef);
256
- if (!objectOrInterfaceTypeMetadata) {
257
- throw new cannot_determine_host_type_error_1.CannotDetermineHostTypeError(item.schemaName, objectTypeRef?.name);
258
- }
259
- const objectOrInterfaceTypeField = objectOrInterfaceTypeMetadata.properties?.find(fieldDef => fieldDef.name === item.methodName);
260
- if (!objectOrInterfaceTypeField) {
261
- if (!item.typeFn || !item.typeOptions) {
262
- throw new undefined_type_error_1.UndefinedTypeError(item.target.name, item.methodName);
263
- }
264
- const fieldMetadata = {
265
- name: item.methodName,
266
- schemaName: item.schemaName,
267
- deprecationReason: item.deprecationReason,
268
- description: item.description,
269
- typeFn: item.typeFn,
270
- target: objectTypeRef,
271
- options: item.typeOptions,
272
- methodArgs: item.methodArgs,
273
- directives: item.directives,
274
- extensions: item.extensions,
275
- complexity: item.complexity
276
- };
277
- this.addClassFieldMetadata(fieldMetadata);
278
- objectOrInterfaceTypeMetadata.properties?.push(fieldMetadata);
279
- }
280
- else {
281
- const isEmpty = (arr) => arr.length === 0;
282
- if (isEmpty(objectOrInterfaceTypeField.methodArgs)) {
283
- objectOrInterfaceTypeField.methodArgs = item.methodArgs;
284
- }
285
- if (isEmpty(objectOrInterfaceTypeField.directives)) {
286
- objectOrInterfaceTypeField.directives = item.directives;
287
- }
288
- if (!objectOrInterfaceTypeField.extensions) {
289
- objectOrInterfaceTypeField.extensions = item.extensions;
290
- }
291
- objectOrInterfaceTypeField.complexity =
292
- item.complexity === undefined
293
- ? objectOrInterfaceTypeField.complexity
294
- : item.complexity;
295
- }
296
- }
297
- compileExtendedResolversMetadata() {
298
- this.resolvers.forEach(item => {
299
- let parentClass = Object.getPrototypeOf(item.target);
300
- while (parentClass.prototype) {
301
- const parentMetadata = this.resolvers.find(item => item.target === parentClass);
302
- if (parentMetadata) {
303
- this.queries = this.mergeParentResolverHandlers(this.queries, parentClass, item);
304
- this.mutations = this.mergeParentResolverHandlers(this.mutations, parentClass, item);
305
- this.subscriptions = this.mergeParentResolverHandlers(this.subscriptions, parentClass, item);
306
- this.fieldResolvers = this.mergeParentFieldHandlers(this.fieldResolvers, parentClass, item);
307
- }
308
- parentClass = Object.getPrototypeOf(parentClass);
309
- }
310
- });
311
- }
312
- isFieldDirectiveOrExtension(host, metadata) {
313
- return (metadata.target === host.target &&
314
- metadata.fieldName === (host.methodName || host.name));
315
- }
316
- mergeParentResolverHandlers(metadata, parentClass, classMetadata) {
317
- const mergedMetadata = metadata.map(metadata => metadata.target !== parentClass
318
- ? metadata
319
- : {
320
- ...metadata,
321
- target: classMetadata.target,
322
- classMetadata
323
- });
324
- return mergedMetadata;
325
- }
326
- mergeParentFieldHandlers(metadata, parentClass, classMetadata) {
327
- const parentMetadata = this.mergeParentResolverHandlers(metadata, parentClass, classMetadata);
328
- const mergedMetadata = parentMetadata.map(metadata => metadata.target === parentClass
329
- ? metadata
330
- : {
331
- ...metadata,
332
- objectTypeFn: (0, common_1.isThrowing)(metadata.objectTypeFn)
333
- ? classMetadata.typeFn
334
- : metadata.objectTypeFn
335
- });
336
- return mergedMetadata;
337
- }
338
- }
339
- exports.TypeMetadataStorageHost = TypeMetadataStorageHost;
340
- const globalRef = global;
341
- exports.TypeMetadataStorage = globalRef.GqlTypeMetadataStorage ||
342
- (globalRef.GqlTypeMetadataStorage = new TypeMetadataStorageHost());
@@ -1,3 +0,0 @@
1
- export declare type SwaggerEnumType = string[] | number[] | (string | number)[] | Record<number, string>;
2
- export declare function getEnumValues(enumType: SwaggerEnumType): string[] | number[];
3
- export declare function getEnumType(values: (string | number)[]): 'string' | 'number';
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEnumType = exports.getEnumValues = void 0;
4
- const common_1 = require("../common");
5
- function getEnumValues(enumType) {
6
- if (Array.isArray(enumType)) {
7
- return enumType;
8
- }
9
- if (typeof enumType !== 'object') {
10
- return [];
11
- }
12
- const values = [];
13
- const uniqueValues = {};
14
- for (const key in enumType) {
15
- const value = enumType[key];
16
- if (!uniqueValues.hasOwnProperty(value) &&
17
- !uniqueValues.hasOwnProperty(key)) {
18
- values.push(value);
19
- uniqueValues[value] = value;
20
- }
21
- }
22
- return values;
23
- }
24
- exports.getEnumValues = getEnumValues;
25
- function getEnumType(values) {
26
- const hasString = values.filter(common_1.isString).length > 0;
27
- return hasString ? 'string' : 'number';
28
- }
29
- exports.getEnumType = getEnumType;
@@ -1,3 +0,0 @@
1
- import 'reflect-metadata';
2
- import { Type } from '../common';
3
- export declare function getFieldsAndDecoratorForType<T>(objType: Type<T>): any;
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFieldsAndDecoratorForType = void 0;
4
- require("reflect-metadata");
5
- const common_1 = require("../common");
6
- const args_type_decorator_1 = require("../decorators/args-type.decorator");
7
- const input_type_decorator_1 = require("../decorators/input-type.decorator");
8
- const interface_type_decorator_1 = require("../decorators/interface-type.decorator");
9
- const unable_to_find_fields_error_1 = require("../errors/unable-to-find-fields.error");
10
- const add_class_type_metadata_util_1 = require("../interfaces/add-class-type-metadata.util");
11
- const object_type_decorator_1 = require("../object-type.decorator");
12
- const lazy_metadata_storage_1 = require("../lazy-metadata.storage");
13
- const type_metadata_storage_1 = require("../type-metadata.storage");
14
- function getFieldsAndDecoratorForType(objType) {
15
- const classType = Reflect.getMetadata(add_class_type_metadata_util_1.CLASS_TYPE_METADATA, objType);
16
- if (!classType) {
17
- throw new unable_to_find_fields_error_1.UnableToFindFieldsError(objType.name);
18
- }
19
- lazy_metadata_storage_1.LazyMetadataStorage.load([objType], {
20
- skipFieldLazyMetadata: true
21
- });
22
- const [classMetadata, decoratorFactory] = getClassMetadataAndFactoryByTargetAndType(classType, objType);
23
- type_metadata_storage_1.TypeMetadataStorage.loadClassPluginMetadata([classMetadata]);
24
- type_metadata_storage_1.TypeMetadataStorage.compileClassMetadata([classMetadata]);
25
- let fields = classMetadata?.properties;
26
- if (!fields) {
27
- throw new unable_to_find_fields_error_1.UnableToFindFieldsError(objType.name);
28
- }
29
- fields = inheritClassFields(objType, fields);
30
- return {
31
- fields,
32
- decoratorFactory
33
- };
34
- }
35
- exports.getFieldsAndDecoratorForType = getFieldsAndDecoratorForType;
36
- function getClassMetadataAndFactoryByTargetAndType(classType, objType) {
37
- switch (classType) {
38
- case common_1.ClassType.ARGS:
39
- return [
40
- type_metadata_storage_1.TypeMetadataStorage.getArgumentsMetadataByTarget(objType),
41
- args_type_decorator_1.ArgsType
42
- ];
43
- case common_1.ClassType.OBJECT:
44
- return [
45
- type_metadata_storage_1.TypeMetadataStorage.getObjectTypeMetadataByTarget(objType),
46
- object_type_decorator_1.ObjectType
47
- ];
48
- case common_1.ClassType.INPUT:
49
- return [
50
- type_metadata_storage_1.TypeMetadataStorage.getInputTypeMetadataByTarget(objType),
51
- input_type_decorator_1.InputType
52
- ];
53
- case common_1.ClassType.INTERFACE:
54
- return [
55
- type_metadata_storage_1.TypeMetadataStorage.getInterfaceMetadataByTarget(objType),
56
- interface_type_decorator_1.InterfaceType
57
- ];
58
- }
59
- }
60
- function inheritClassFields(objType, fields) {
61
- try {
62
- const parentClass = Object.getPrototypeOf(objType);
63
- if (parentClass === Function) {
64
- return fields;
65
- }
66
- const { fields: parentFields } = getFieldsAndDecoratorForType(parentClass);
67
- return inheritClassFields(parentClass, [...parentFields, ...fields]);
68
- }
69
- catch (err) {
70
- return fields;
71
- }
72
- }
@@ -1,2 +0,0 @@
1
- import { Type } from '../common';
2
- export declare function clonePluginMetadataFactory(target: Type<unknown>, parent: Type<unknown>, transformFn?: (metadata: Record<string, any>) => Record<string, any>): void;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clonePluginMetadataFactory = void 0;
4
- const type_metadata_storage_1 = require("../type-metadata.storage");
5
- const identity = a => a;
6
- function clonePluginMetadataFactory(target, parent, transformFn = identity) {
7
- let targetMetadata = {};
8
- do {
9
- if (!parent.constructor) {
10
- return;
11
- }
12
- if (!parent.constructor[type_metadata_storage_1.METADATA_FACTORY_NAME]) {
13
- continue;
14
- }
15
- const parentMetadata = parent.constructor[type_metadata_storage_1.METADATA_FACTORY_NAME]();
16
- targetMetadata = {
17
- ...parentMetadata,
18
- ...targetMetadata
19
- };
20
- } while ((parent = Reflect.getPrototypeOf(parent)) &&
21
- parent !== Object.prototype &&
22
- parent);
23
- targetMetadata = transformFn(targetMetadata);
24
- if (target[type_metadata_storage_1.METADATA_FACTORY_NAME]) {
25
- const originalFactory = target[type_metadata_storage_1.METADATA_FACTORY_NAME];
26
- target[type_metadata_storage_1.METADATA_FACTORY_NAME] = () => {
27
- const originalMetadata = originalFactory();
28
- return {
29
- ...originalMetadata,
30
- ...targetMetadata
31
- };
32
- };
33
- }
34
- else {
35
- target[type_metadata_storage_1.METADATA_FACTORY_NAME] = () => targetMetadata;
36
- }
37
- }
38
- exports.clonePluginMetadataFactory = clonePluginMetadataFactory;
@@ -1,6 +0,0 @@
1
- import { Type } from '../common';
2
- import 'reflect-metadata';
3
- export declare class ModelPropertiesAccessor {
4
- getModelProperties(prototype: Type<unknown>): string[];
5
- applyMetadataFactory(prototype: Type<unknown>): void;
6
- }