@goatlab/fluent 0.7.21 → 0.7.24

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 +43 -0
  2. package/dist/BaseConnector.js +258 -0
  3. package/dist/Fluent.d.ts +7 -0
  4. package/dist/Fluent.js +22 -0
  5. package/dist/FluentConnectorInterface.d.ts +17 -0
  6. package/dist/FluentConnectorInterface.js +2 -0
  7. package/dist/FluentEntity.d.ts +7 -0
  8. package/dist/FluentEntity.js +28 -0
  9. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +38 -0
  10. package/dist/TypeOrmConnector/TypeOrmConnector.js +370 -0
  11. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +7 -0
  12. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +148 -0
  13. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +6 -0
  14. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +45 -0
  15. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +19 -0
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +4 -0
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +12 -0
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +6 -0
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +166 -0
  21. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +8 -0
  22. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +200 -0
  23. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +6 -0
  24. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +207 -0
  25. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +1 -0
  26. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +256 -0
  27. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +116 -0
  28. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +74 -0
  29. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +5 -0
  30. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +17 -0
  31. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +5 -0
  32. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +17 -0
  33. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +5 -0
  34. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +17 -0
  35. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -0
  36. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +193 -0
  37. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +53 -0
  38. package/dist/TypeOrmConnector/test/basic/goat.entity.js +53 -0
  39. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +5 -0
  40. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +16 -0
  41. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +5 -0
  42. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +16 -0
  43. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +5 -0
  44. package/dist/TypeOrmConnector/test/basic/goat.repository.js +16 -0
  45. package/dist/TypeOrmConnector/test/dbEntities.d.ts +6 -0
  46. package/dist/TypeOrmConnector/test/dbEntities.js +17 -0
  47. package/dist/TypeOrmConnector/test/docker/docker.d.ts +35 -0
  48. package/dist/TypeOrmConnector/test/docker/docker.js +148 -0
  49. package/dist/TypeOrmConnector/test/docker/mongo.d.ts +16 -0
  50. package/dist/TypeOrmConnector/test/docker/mongo.js +93 -0
  51. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +17 -0
  52. package/dist/TypeOrmConnector/test/docker/mysql.js +132 -0
  53. package/dist/TypeOrmConnector/test/flock.d.ts +4 -0
  54. package/dist/TypeOrmConnector/test/flock.js +25 -0
  55. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +10 -0
  56. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +28 -0
  57. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +2 -0
  58. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +12 -0
  59. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +9 -0
  60. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +25 -0
  61. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +6 -0
  62. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +17 -0
  63. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +10 -0
  64. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +32 -0
  65. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +10 -0
  66. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +26 -0
  67. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +2 -0
  68. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +16 -0
  69. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +9 -0
  70. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +25 -0
  71. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +6 -0
  72. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +17 -0
  73. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +10 -0
  74. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +33 -0
  75. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +7 -0
  76. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +32 -0
  77. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +511 -0
  78. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +8 -0
  79. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +10 -0
  80. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +26 -0
  81. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +15 -0
  82. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +9 -0
  83. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +1 -0
  84. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +548 -0
  85. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +152 -0
  86. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +14 -0
  87. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +12 -0
  88. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +8 -0
  89. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +6 -0
  90. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +29 -0
  91. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +9 -0
  92. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +25 -0
  93. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +5 -0
  94. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +23 -0
  95. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +15 -0
  96. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +9 -0
  97. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +6 -0
  98. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +17 -0
  99. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +14 -0
  100. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +56 -0
  101. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +10 -0
  102. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +30 -0
  103. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +546 -0
  104. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +67 -0
  105. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +2 -0
  106. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +12 -0
  107. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +1 -0
  108. package/dist/TypeOrmConnector/util/clearEmpties.js +25 -0
  109. package/dist/TypeOrmConnector/util/extractConditions.d.ts +6 -0
  110. package/dist/TypeOrmConnector/util/extractConditions.js +80 -0
  111. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  112. package/dist/TypeOrmConnector/util/extractInclude.js +25 -0
  113. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  114. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +42 -0
  115. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +4 -0
  116. package/dist/TypeOrmConnector/util/extractOrderBy.js +18 -0
  117. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  118. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +26 -0
  119. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +1 -0
  120. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +20 -0
  121. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  122. package/dist/TypeOrmConnector/util/isAnyObject.js +7 -0
  123. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  124. package/dist/TypeOrmConnector/util/nestQueryResults.js +31 -0
  125. package/dist/cache.d.ts +9 -0
  126. package/dist/cache.js +43 -0
  127. package/dist/core/Loopback/build-schema.d.ts +31 -0
  128. package/dist/core/Loopback/build-schema.js +333 -0
  129. package/dist/core/Loopback/common-types.d.ts +36 -0
  130. package/dist/core/Loopback/common-types.js +13 -0
  131. package/dist/core/Loopback/json-to-schema.d.ts +6 -0
  132. package/dist/core/Loopback/json-to-schema.js +96 -0
  133. package/dist/core/Loopback/mapValues.d.ts +2 -0
  134. package/dist/core/Loopback/mapValues.js +835 -0
  135. package/dist/core/Loopback/metadata.d.ts +9 -0
  136. package/dist/core/Loopback/metadata.js +28 -0
  137. package/dist/core/Loopback/model.d.ts +87 -0
  138. package/dist/core/Loopback/model.js +244 -0
  139. package/dist/core/Loopback/query.d.ts +97 -0
  140. package/dist/core/Loopback/query.js +292 -0
  141. package/dist/core/Loopback/relation.types.d.ts +45 -0
  142. package/dist/core/Loopback/relation.types.js +13 -0
  143. package/dist/core/Loopback/type-resolver.d.ts +7 -0
  144. package/dist/core/Loopback/type-resolver.js +34 -0
  145. package/dist/core/Loopback/type.d.ts +9 -0
  146. package/dist/core/Loopback/type.js +2 -0
  147. package/dist/core/Nestjs/applyDecorators.d.ts +1 -0
  148. package/dist/core/Nestjs/applyDecorators.js +17 -0
  149. package/dist/core/Nestjs/types/common.d.ts +16 -0
  150. package/dist/core/Nestjs/types/common.js +37 -0
  151. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  152. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +7 -0
  153. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  154. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +65 -0
  155. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  156. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +131 -0
  157. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +1 -0
  158. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +19 -0
  159. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  160. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  161. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +1 -0
  162. package/dist/core/Nestjs/types/decorators/directive.decorator.js +36 -0
  163. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +1 -0
  164. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +25 -0
  165. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +15 -0
  166. package/dist/core/Nestjs/types/decorators/field.decorator.js +56 -0
  167. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +7 -0
  168. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +23 -0
  169. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +9 -0
  170. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +27 -0
  171. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  172. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +42 -0
  173. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  174. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +9 -0
  175. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  176. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +9 -0
  177. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  178. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +9 -0
  179. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  180. package/dist/core/Nestjs/types/errors/undefined-type.error.js +10 -0
  181. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  182. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +10 -0
  183. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +5 -0
  184. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +2 -0
  185. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  186. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +2 -0
  187. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  188. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +2 -0
  189. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  190. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +2 -0
  191. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +235 -0
  192. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +2 -0
  193. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  194. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +2 -0
  195. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  196. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +2 -0
  197. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  198. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +2 -0
  199. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  200. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +2 -0
  201. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  202. package/dist/core/Nestjs/types/lazy-metadata.storage.js +67 -0
  203. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  204. package/dist/core/Nestjs/types/metadata/class.metadata.js +2 -0
  205. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  206. package/dist/core/Nestjs/types/metadata/directive.metadata.js +2 -0
  207. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  208. package/dist/core/Nestjs/types/metadata/enum.metadata.js +2 -0
  209. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  210. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +2 -0
  211. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  212. package/dist/core/Nestjs/types/metadata/index.js +11 -0
  213. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  214. package/dist/core/Nestjs/types/metadata/interface.metadata.js +2 -0
  215. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  216. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +2 -0
  217. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  218. package/dist/core/Nestjs/types/metadata/param.metadata.js +2 -0
  219. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  220. package/dist/core/Nestjs/types/metadata/property.metadata.js +2 -0
  221. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  222. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +2 -0
  223. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  224. package/dist/core/Nestjs/types/metadata/union.metadata.js +2 -0
  225. package/dist/core/Nestjs/types/object-type.decorator.d.ts +8 -0
  226. package/dist/core/Nestjs/types/object-type.decorator.js +25 -0
  227. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  228. package/dist/core/Nestjs/types/omit-type.js +34 -0
  229. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  230. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  231. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +4 -0
  232. package/dist/core/Nestjs/types/set-metadata.decorator.js +16 -0
  233. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +69 -0
  234. package/dist/core/Nestjs/types/type-metadata.storage.js +342 -0
  235. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  236. package/dist/core/Nestjs/types/utils/enum.utils.js +29 -0
  237. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +3 -0
  238. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
  239. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
  240. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
  241. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
  242. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +36 -0
  243. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  244. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  245. package/dist/core/types.d.ts +23 -0
  246. package/dist/core/types.js +29 -0
  247. package/dist/decorators.d.ts +47 -0
  248. package/dist/decorators.js +104 -0
  249. package/dist/generatorDatasource.d.ts +2 -0
  250. package/dist/generatorDatasource.js +12 -0
  251. package/dist/index.d.ts +29 -0
  252. package/dist/index.js +49 -0
  253. package/dist/loadRelations.d.ts +12 -0
  254. package/dist/loadRelations.js +133 -0
  255. package/dist/outputKeys.d.ts +2 -0
  256. package/dist/outputKeys.js +17 -0
  257. package/dist/tsconfig.tsbuildinfo +1 -0
  258. package/dist/types.d.ts +141 -0
  259. package/dist/types.js +22 -0
  260. package/package.json +2 -2
@@ -0,0 +1,235 @@
1
+ export interface OpenAPIObject {
2
+ openapi: string;
3
+ info: InfoObject;
4
+ servers?: ServerObject[];
5
+ paths: PathsObject;
6
+ components?: ComponentsObject;
7
+ security?: SecurityRequirementObject[];
8
+ tags?: TagObject[];
9
+ externalDocs?: ExternalDocumentationObject;
10
+ }
11
+ export interface InfoObject {
12
+ title: string;
13
+ description?: string;
14
+ termsOfService?: string;
15
+ contact?: ContactObject;
16
+ license?: LicenseObject;
17
+ version: string;
18
+ }
19
+ export interface ContactObject {
20
+ name?: string;
21
+ url?: string;
22
+ email?: string;
23
+ }
24
+ export interface LicenseObject {
25
+ name: string;
26
+ url?: string;
27
+ }
28
+ export interface ServerObject {
29
+ url: string;
30
+ description?: string;
31
+ variables?: Record<string, ServerVariableObject>;
32
+ }
33
+ export interface ServerVariableObject {
34
+ enum?: string[] | boolean[] | number[];
35
+ default: string | boolean | number;
36
+ description?: string;
37
+ }
38
+ export interface ComponentsObject {
39
+ schemas?: Record<string, SchemaObject | ReferenceObject>;
40
+ responses?: Record<string, ResponseObject | ReferenceObject>;
41
+ parameters?: Record<string, ParameterObject | ReferenceObject>;
42
+ examples?: Record<string, ExampleObject | ReferenceObject>;
43
+ requestBodies?: Record<string, RequestBodyObject | ReferenceObject>;
44
+ headers?: Record<string, HeaderObject | ReferenceObject>;
45
+ securitySchemes?: Record<string, SecuritySchemeObject | ReferenceObject>;
46
+ links?: Record<string, LinkObject | ReferenceObject>;
47
+ callbacks?: Record<string, CallbackObject | ReferenceObject>;
48
+ }
49
+ export declare type PathsObject = Record<string, PathItemObject>;
50
+ export interface PathItemObject {
51
+ $ref?: string;
52
+ summary?: string;
53
+ description?: string;
54
+ get?: OperationObject;
55
+ put?: OperationObject;
56
+ post?: OperationObject;
57
+ delete?: OperationObject;
58
+ options?: OperationObject;
59
+ head?: OperationObject;
60
+ patch?: OperationObject;
61
+ trace?: OperationObject;
62
+ servers?: ServerObject[];
63
+ parameters?: (ParameterObject | ReferenceObject)[];
64
+ }
65
+ export interface OperationObject {
66
+ tags?: string[];
67
+ summary?: string;
68
+ description?: string;
69
+ externalDocs?: ExternalDocumentationObject;
70
+ operationId?: string;
71
+ parameters?: (ParameterObject | ReferenceObject)[];
72
+ requestBody?: RequestBodyObject | ReferenceObject;
73
+ responses: ResponsesObject;
74
+ callbacks?: CallbacksObject;
75
+ deprecated?: boolean;
76
+ security?: SecurityRequirementObject[];
77
+ servers?: ServerObject[];
78
+ }
79
+ export interface ExternalDocumentationObject {
80
+ description?: string;
81
+ url: string;
82
+ }
83
+ export declare type ParameterLocation = 'query' | 'header' | 'path' | 'cookie';
84
+ export declare type ParameterStyle = 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';
85
+ export interface BaseParameterObject {
86
+ description?: string;
87
+ required?: boolean;
88
+ deprecated?: boolean;
89
+ allowEmptyValue?: boolean;
90
+ style?: ParameterStyle;
91
+ explode?: boolean;
92
+ allowReserved?: boolean;
93
+ schema?: SchemaObject | ReferenceObject;
94
+ examples?: Record<string, ExampleObject | ReferenceObject>;
95
+ example?: any;
96
+ content?: ContentObject;
97
+ }
98
+ export interface ParameterObject extends BaseParameterObject {
99
+ name: string;
100
+ in: ParameterLocation;
101
+ }
102
+ export interface RequestBodyObject {
103
+ description?: string;
104
+ content: ContentObject;
105
+ required?: boolean;
106
+ }
107
+ export declare type ContentObject = Record<string, MediaTypeObject>;
108
+ export interface MediaTypeObject {
109
+ schema?: SchemaObject | ReferenceObject;
110
+ examples?: ExamplesObject;
111
+ example?: any;
112
+ encoding?: EncodingObject;
113
+ }
114
+ export declare type EncodingObject = Record<string, EncodingPropertyObject>;
115
+ export interface EncodingPropertyObject {
116
+ contentType?: string;
117
+ headers?: Record<string, HeaderObject | ReferenceObject>;
118
+ style?: string;
119
+ explode?: boolean;
120
+ allowReserved?: boolean;
121
+ }
122
+ export interface ResponsesObject extends Record<string, ResponseObject | ReferenceObject | undefined> {
123
+ default?: ResponseObject | ReferenceObject;
124
+ }
125
+ export interface ResponseObject {
126
+ description: string;
127
+ headers?: HeadersObject;
128
+ content?: ContentObject;
129
+ links?: LinksObject;
130
+ }
131
+ export declare type CallbacksObject = Record<string, CallbackObject | ReferenceObject>;
132
+ export declare type CallbackObject = Record<string, PathItemObject>;
133
+ export declare type HeadersObject = Record<string, HeaderObject | ReferenceObject>;
134
+ export interface ExampleObject {
135
+ summary?: string;
136
+ description?: string;
137
+ value?: any;
138
+ externalValue?: string;
139
+ }
140
+ export declare type LinksObject = Record<string, LinkObject | ReferenceObject>;
141
+ export interface LinkObject {
142
+ operationRef?: string;
143
+ operationId?: string;
144
+ parameters?: LinkParametersObject;
145
+ requestBody?: any | string;
146
+ description?: string;
147
+ server?: ServerObject;
148
+ }
149
+ export declare type LinkParametersObject = Record<string, any>;
150
+ export declare type HeaderObject = BaseParameterObject;
151
+ export interface TagObject {
152
+ name: string;
153
+ description?: string;
154
+ externalDocs?: ExternalDocumentationObject;
155
+ }
156
+ export declare type ExamplesObject = Record<string, ExampleObject | ReferenceObject>;
157
+ export interface ReferenceObject {
158
+ $ref: string;
159
+ }
160
+ export interface SchemaObject {
161
+ nullable?: boolean;
162
+ discriminator?: DiscriminatorObject;
163
+ readOnly?: boolean;
164
+ writeOnly?: boolean;
165
+ xml?: XmlObject;
166
+ externalDocs?: ExternalDocumentationObject;
167
+ example?: any;
168
+ examples?: any[] | Record<string, any>;
169
+ deprecated?: boolean;
170
+ type?: string;
171
+ allOf?: (SchemaObject | ReferenceObject)[];
172
+ oneOf?: (SchemaObject | ReferenceObject)[];
173
+ anyOf?: (SchemaObject | ReferenceObject)[];
174
+ not?: SchemaObject | ReferenceObject;
175
+ items?: SchemaObject | ReferenceObject;
176
+ properties?: Record<string, SchemaObject | ReferenceObject>;
177
+ additionalProperties?: SchemaObject | ReferenceObject | boolean;
178
+ patternProperties?: SchemaObject | ReferenceObject | any;
179
+ description?: string;
180
+ format?: string;
181
+ default?: any;
182
+ title?: string;
183
+ multipleOf?: number;
184
+ maximum?: number;
185
+ exclusiveMaximum?: boolean;
186
+ minimum?: number;
187
+ exclusiveMinimum?: boolean;
188
+ maxLength?: number;
189
+ minLength?: number;
190
+ pattern?: string;
191
+ maxItems?: number;
192
+ minItems?: number;
193
+ uniqueItems?: boolean;
194
+ maxProperties?: number;
195
+ minProperties?: number;
196
+ required?: string[];
197
+ enum?: any[];
198
+ }
199
+ export declare type SchemasObject = Record<string, SchemaObject>;
200
+ export interface DiscriminatorObject {
201
+ propertyName: string;
202
+ mapping?: Record<string, string>;
203
+ }
204
+ export interface XmlObject {
205
+ name?: string;
206
+ namespace?: string;
207
+ prefix?: string;
208
+ attribute?: boolean;
209
+ wrapped?: boolean;
210
+ }
211
+ export declare type SecuritySchemeType = 'apiKey' | 'http' | 'oauth2' | 'openIdConnect';
212
+ export interface SecuritySchemeObject {
213
+ type: SecuritySchemeType;
214
+ description?: string;
215
+ name?: string;
216
+ in?: string;
217
+ scheme?: string;
218
+ bearerFormat?: string;
219
+ flows?: OAuthFlowsObject;
220
+ openIdConnectUrl?: string;
221
+ }
222
+ export interface OAuthFlowsObject {
223
+ implicit?: OAuthFlowObject;
224
+ password?: OAuthFlowObject;
225
+ clientCredentials?: OAuthFlowObject;
226
+ authorizationCode?: OAuthFlowObject;
227
+ }
228
+ export interface OAuthFlowObject {
229
+ authorizationUrl?: string;
230
+ tokenUrl?: string;
231
+ refreshUrl?: string;
232
+ scopes: ScopesObject;
233
+ }
234
+ export declare type ScopesObject = Record<string, any>;
235
+ export declare type SecurityRequirementObject = Record<string, string[]>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ import { GraphQLTypeResolver } from 'graphql';
2
+ export declare type ResolveTypeFn<TSource = any, TContext = any> = (...args: Parameters<GraphQLTypeResolver<TSource, TContext>>) => any;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { GraphQLScalarType } from 'graphql';
2
+ import { Type } from '../common';
3
+ export declare type GqlTypeReference = Type<any> | GraphQLScalarType | Function | object | symbol;
4
+ export declare type ReturnTypeFuncValue = GqlTypeReference | [GqlTypeReference];
5
+ export declare type ReturnTypeFunc = (returns?: void) => ReturnTypeFuncValue;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { SchemaObject } from './open-api-spec.interface';
2
+ import { Type } from '../common';
3
+ export interface SchemaObjectMetadata extends Omit<SchemaObject, 'type' | 'required'> {
4
+ type?: Type<unknown> | Function | [Function] | string | Record<string, any>;
5
+ isArray?: boolean;
6
+ required?: boolean;
7
+ name?: string;
8
+ enumName?: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { BaseTypeOptions } from './base-type-options.interface';
2
+ export interface TypeOptions extends BaseTypeOptions {
3
+ isArray?: boolean;
4
+ arrayDepth?: number;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ import { Type } from './common';
2
+ export declare class LazyMetadataStorageHost {
3
+ private readonly lazyMetadataByTarget;
4
+ store(func: Function): void;
5
+ store(target: Type<unknown>, func: Function): void;
6
+ store(target: Type<unknown>, func: Function, options?: {
7
+ isField: boolean;
8
+ }): void;
9
+ load(types?: Function[], options?: {
10
+ skipFieldLazyMetadata?: boolean;
11
+ }): void;
12
+ private concatPrototypes;
13
+ private updateStorage;
14
+ }
15
+ export declare const LazyMetadataStorage: LazyMetadataStorageHost;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LazyMetadataStorage = exports.LazyMetadataStorageHost = void 0;
4
+ const common_1 = require("./common");
5
+ const NO_TARGET_METADATA = Symbol('NO_TARGET_METADATA');
6
+ const FIELD_LAZY_METADATA = Symbol('FIELD_LAZY_METADATA');
7
+ class LazyMetadataStorageHost {
8
+ constructor() {
9
+ this.lazyMetadataByTarget = new Map();
10
+ }
11
+ store(targetOrFn, func, options) {
12
+ if (func && options?.isField) {
13
+ this.updateStorage(FIELD_LAZY_METADATA, func);
14
+ this.updateStorage(targetOrFn, func);
15
+ }
16
+ else if (func) {
17
+ this.updateStorage(targetOrFn, func);
18
+ }
19
+ else {
20
+ this.updateStorage(NO_TARGET_METADATA, targetOrFn);
21
+ }
22
+ }
23
+ load(types = [], options = {
24
+ skipFieldLazyMetadata: false
25
+ }) {
26
+ types = this.concatPrototypes(types);
27
+ let loadersToExecute = (0, common_1.flatten)(types
28
+ .map(target => this.lazyMetadataByTarget.get(target))
29
+ .filter(metadata => metadata));
30
+ loadersToExecute = loadersToExecute?.concat(...(this.lazyMetadataByTarget.get(NO_TARGET_METADATA) || []));
31
+ if (!options.skipFieldLazyMetadata) {
32
+ loadersToExecute = loadersToExecute?.concat(...(this.lazyMetadataByTarget.get(FIELD_LAZY_METADATA) || []));
33
+ }
34
+ loadersToExecute?.forEach(func => func());
35
+ }
36
+ concatPrototypes(types) {
37
+ const typesWithPrototypes = types
38
+ .filter(type => type && type.prototype)
39
+ .map(type => {
40
+ const parentTypes = [];
41
+ let parent = type;
42
+ while (!(0, common_1.isUndefined)(parent.prototype)) {
43
+ parent = Object.getPrototypeOf(parent);
44
+ if (parent === Function.prototype) {
45
+ break;
46
+ }
47
+ parentTypes.push(parent);
48
+ }
49
+ parentTypes.push(type);
50
+ return parentTypes;
51
+ });
52
+ return (0, common_1.flatten)(typesWithPrototypes);
53
+ }
54
+ updateStorage(key, func) {
55
+ const existingArray = this.lazyMetadataByTarget.get(key);
56
+ if (existingArray) {
57
+ existingArray.push(func);
58
+ }
59
+ else {
60
+ this.lazyMetadataByTarget.set(key, [func]);
61
+ }
62
+ }
63
+ }
64
+ exports.LazyMetadataStorageHost = LazyMetadataStorageHost;
65
+ const globalRef = global;
66
+ exports.LazyMetadataStorage = globalRef.GqlLazyMetadataStorageHost ||
67
+ (globalRef.GqlLazyMetadataStorageHost = new LazyMetadataStorageHost());
@@ -0,0 +1,11 @@
1
+ import { DirectiveMetadata } from './directive.metadata';
2
+ import { PropertyMetadata } from './property.metadata';
3
+ export interface ClassMetadata {
4
+ target: Function;
5
+ name: string;
6
+ description?: string;
7
+ isAbstract?: boolean;
8
+ directives?: DirectiveMetadata[];
9
+ extensions?: Record<string, unknown>;
10
+ properties?: PropertyMetadata[];
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export interface DirectiveMetadata {
2
+ sdl: string;
3
+ target: Function;
4
+ }
5
+ export declare type ClassDirectiveMetadata = DirectiveMetadata;
6
+ export interface PropertyDirectiveMetadata extends DirectiveMetadata {
7
+ fieldName: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,11 @@
1
+ export interface EnumMetadataValuesMapOptions {
2
+ deprecationReason?: string;
3
+ description?: string;
4
+ }
5
+ export declare type EnumMetadataValuesMap<T extends object> = Partial<Record<keyof T, EnumMetadataValuesMapOptions>>;
6
+ export interface EnumMetadata<T extends object = any> {
7
+ ref: T;
8
+ name: string;
9
+ description?: string;
10
+ valuesMap?: EnumMetadataValuesMap<T>;
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export interface ExtensionsMetadata {
2
+ target: Function;
3
+ value: Record<string, unknown>;
4
+ }
5
+ export declare type ClassExtensionsMetadata = ExtensionsMetadata;
6
+ export interface PropertyExtensionsMetadata extends ExtensionsMetadata {
7
+ fieldName: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export * from './class.metadata';
2
+ export * from './directive.metadata';
3
+ export * from './enum.metadata';
4
+ export * from './extensions.metadata';
5
+ export * from './param.metadata';
6
+ export * from './property.metadata';
7
+ export * from './resolver.metadata';
8
+ export * from './union.metadata';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./class.metadata"), exports);
5
+ tslib_1.__exportStar(require("./directive.metadata"), exports);
6
+ tslib_1.__exportStar(require("./enum.metadata"), exports);
7
+ tslib_1.__exportStar(require("./extensions.metadata"), exports);
8
+ tslib_1.__exportStar(require("./param.metadata"), exports);
9
+ tslib_1.__exportStar(require("./property.metadata"), exports);
10
+ tslib_1.__exportStar(require("./resolver.metadata"), exports);
11
+ tslib_1.__exportStar(require("./union.metadata"), exports);
@@ -0,0 +1,6 @@
1
+ import { ResolveTypeFn } from '../interfaces/resolve-type-fn.interface';
2
+ import { ClassMetadata } from './class.metadata';
3
+ export interface InterfaceMetadata extends ClassMetadata {
4
+ resolveType?: ResolveTypeFn;
5
+ interfaces?: Function | Function[] | (() => Function | Function[]);
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { ClassMetadata } from './class.metadata';
2
+ export interface ObjectTypeMetadata extends ClassMetadata {
3
+ interfaces?: Function | Function[] | (() => Function | Function[]);
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ import { GqlTypeReference } from '../interfaces/return-type-func.interface';
2
+ import { TypeOptions } from '../interfaces/type-options.interface';
3
+ export interface BaseArgMetadata {
4
+ target: Function;
5
+ methodName: string;
6
+ typeFn: (type?: any) => GqlTypeReference;
7
+ options: TypeOptions;
8
+ index: number;
9
+ }
10
+ export interface ArgParamMetadata extends BaseArgMetadata {
11
+ kind: 'arg';
12
+ name: string;
13
+ description?: string;
14
+ }
15
+ export interface ArgsParamMetadata extends BaseArgMetadata {
16
+ kind: 'args';
17
+ }
18
+ export declare type MethodArgsMetadata = ArgParamMetadata | ArgsParamMetadata;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,20 @@
1
+ import { GqlTypeReference } from '../interfaces/return-type-func.interface';
2
+ import { FieldMiddleware } from '../interfaces/field-middleware.interface';
3
+ import { TypeOptions } from '../interfaces/type-options.interface';
4
+ import { DirectiveMetadata } from './directive.metadata';
5
+ import { MethodArgsMetadata } from './param.metadata';
6
+ import { Complexity } from '../interfaces/complexity.interface';
7
+ export interface PropertyMetadata {
8
+ schemaName: string;
9
+ name: string;
10
+ typeFn: () => GqlTypeReference;
11
+ target: Function;
12
+ options: TypeOptions;
13
+ description?: string;
14
+ deprecationReason?: string;
15
+ methodArgs?: MethodArgsMetadata[];
16
+ directives?: DirectiveMetadata[];
17
+ extensions?: Record<string, unknown>;
18
+ complexity?: Complexity;
19
+ middleware?: FieldMiddleware[];
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,34 @@
1
+ import { GqlTypeReference } from '../interfaces/return-type-func.interface';
2
+ import { TypeOptions } from '../interfaces/type-options.interface';
3
+ import { Type } from '../common';
4
+ import { DirectiveMetadata } from './directive.metadata';
5
+ import { MethodArgsMetadata } from './param.metadata';
6
+ import { Complexity } from '../interfaces/complexity.interface';
7
+ export interface ResolverClassMetadata {
8
+ target: Function;
9
+ typeFn: (of?: void) => Type<unknown> | Function;
10
+ isAbstract?: boolean;
11
+ parent?: ResolverClassMetadata;
12
+ }
13
+ export interface BaseResolverMetadata {
14
+ target: Function;
15
+ methodName: string;
16
+ schemaName: string;
17
+ description?: string;
18
+ deprecationReason?: string;
19
+ methodArgs?: MethodArgsMetadata[];
20
+ classMetadata?: ResolverClassMetadata;
21
+ directives?: DirectiveMetadata[];
22
+ extensions?: Record<string, unknown>;
23
+ complexity?: Complexity;
24
+ }
25
+ export interface ResolverTypeMetadata extends BaseResolverMetadata {
26
+ typeFn: (type?: void) => GqlTypeReference;
27
+ returnTypeOptions: TypeOptions;
28
+ }
29
+ export interface FieldResolverMetadata extends BaseResolverMetadata {
30
+ kind: 'internal' | 'external';
31
+ typeOptions?: TypeOptions;
32
+ typeFn?: (type?: void) => GqlTypeReference;
33
+ objectTypeFn?: (of?: void) => Type<unknown> | Function;
34
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { Type } from '../common';
2
+ import { ResolveTypeFn } from '../interfaces/resolve-type-fn.interface';
3
+ export interface UnionMetadata<T extends Type<unknown>[] = Type<unknown>[]> {
4
+ name: string;
5
+ typesFn: () => T;
6
+ id?: symbol;
7
+ description?: string;
8
+ resolveType?: ResolveTypeFn;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export interface ObjectTypeOptions {
2
+ description?: string;
3
+ isAbstract?: boolean;
4
+ implements?: Function | Function[] | (() => Function | Function[]);
5
+ }
6
+ export declare function ObjectType(): ClassDecorator;
7
+ export declare function ObjectType(options: ObjectTypeOptions): ClassDecorator;
8
+ export declare function ObjectType(name: string, options?: ObjectTypeOptions): ClassDecorator;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectType = void 0;
4
+ const lazy_metadata_storage_1 = require("./lazy-metadata.storage");
5
+ const type_metadata_storage_1 = require("./type-metadata.storage");
6
+ const add_class_type_metadata_util_1 = require("./interfaces/add-class-type-metadata.util");
7
+ const common_1 = require("./common");
8
+ function ObjectType(nameOrOptions, objectTypeOptions) {
9
+ const [name, options = {}] = (0, common_1.isString)(nameOrOptions)
10
+ ? [nameOrOptions, objectTypeOptions]
11
+ : [undefined, nameOrOptions];
12
+ return target => {
13
+ const addObjectTypeMetadata = () => type_metadata_storage_1.TypeMetadataStorage.addObjectTypeMetadata({
14
+ name: name || target.name,
15
+ target,
16
+ description: options.description,
17
+ interfaces: options.implements,
18
+ isAbstract: options.isAbstract
19
+ });
20
+ addObjectTypeMetadata();
21
+ lazy_metadata_storage_1.LazyMetadataStorage.store(addObjectTypeMetadata);
22
+ (0, add_class_type_metadata_util_1.addClassTypeMetadata)(target, common_1.ClassType.OBJECT);
23
+ };
24
+ }
25
+ exports.ObjectType = ObjectType;
@@ -0,0 +1,2 @@
1
+ import { Type } from './common';
2
+ export declare function OmitType<T, K extends keyof T>(classRef: Type<T>, keys: readonly K[]): Type<Omit<T, typeof keys[number]>>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OmitType = void 0;
4
+ const api_property_decorator_1 = require("./decorators/api-property.decorator");
5
+ const mapped_types_utils_1 = require("./utils/mapped-types.utils");
6
+ const model_properties_accessor_1 = require("./utils/model-properties-accessor");
7
+ const apply_is_optional_decorator_1 = require("./decorators/apply-is-optional.decorator");
8
+ const omit = (obj, props) => {
9
+ obj = { ...obj };
10
+ props.forEach(prop => delete obj[prop]);
11
+ return obj;
12
+ };
13
+ const modelPropertiesAccessor = new model_properties_accessor_1.ModelPropertiesAccessor();
14
+ function OmitType(classRef, keys) {
15
+ const fields = modelPropertiesAccessor
16
+ .getModelProperties(classRef.prototype)
17
+ .filter(item => !keys.includes(item));
18
+ const isInheritedPredicate = (propertyKey) => !keys.includes(propertyKey);
19
+ class OmitTypeClass {
20
+ constructor() {
21
+ (0, apply_is_optional_decorator_1.inheritPropertyInitializers)(this, classRef, isInheritedPredicate);
22
+ }
23
+ }
24
+ (0, apply_is_optional_decorator_1.inheritValidationMetadata)(classRef, OmitTypeClass, isInheritedPredicate);
25
+ (0, apply_is_optional_decorator_1.inheritTransformationMetadata)(classRef, OmitTypeClass, isInheritedPredicate);
26
+ (0, mapped_types_utils_1.clonePluginMetadataFactory)(OmitTypeClass, classRef.prototype, (metadata) => omit(metadata, keys));
27
+ fields.forEach(propertyKey => {
28
+ const metadata = Reflect.getMetadata(api_property_decorator_1.DECORATORS.API_MODEL_PROPERTIES, classRef.prototype, propertyKey);
29
+ const decoratorFactory = (0, api_property_decorator_1.ApiProperty)(metadata);
30
+ decoratorFactory(OmitTypeClass.prototype, propertyKey);
31
+ });
32
+ return OmitTypeClass;
33
+ }
34
+ exports.OmitType = OmitType;