@tsed/schema 7.0.0-beta.2 → 7.0.0-beta.20

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 (367) hide show
  1. package/coverage.json +6 -0
  2. package/jest.config.js +1 -6
  3. package/lib/cjs/components/lazyRefMapper.js +1 -2
  4. package/lib/cjs/components/lazyRefMapper.js.map +1 -1
  5. package/lib/cjs/components/objectMapper.js +1 -1
  6. package/lib/cjs/components/objectMapper.js.map +1 -1
  7. package/lib/cjs/components/schemaMapper.js +1 -1
  8. package/lib/cjs/components/schemaMapper.js.map +1 -1
  9. package/lib/cjs/constants/httpStatusMessages.js +14 -100
  10. package/lib/cjs/constants/httpStatusMessages.js.map +1 -1
  11. package/lib/cjs/decorators/collections/collectionOf.js +3 -4
  12. package/lib/cjs/decorators/collections/collectionOf.js.map +1 -1
  13. package/lib/cjs/decorators/common/anyOf.js +4 -0
  14. package/lib/cjs/decorators/common/anyOf.js.map +1 -1
  15. package/lib/cjs/decorators/common/description.js +1 -2
  16. package/lib/cjs/decorators/common/description.js.map +1 -1
  17. package/lib/cjs/decorators/common/enum.js +1 -20
  18. package/lib/cjs/decorators/common/enum.js.map +1 -1
  19. package/lib/cjs/decorators/common/ignore.js.map +1 -1
  20. package/lib/cjs/decorators/common/jsonEntityFn.js.map +1 -1
  21. package/lib/cjs/decorators/common/oneOf.js +4 -0
  22. package/lib/cjs/decorators/common/oneOf.js.map +1 -1
  23. package/lib/cjs/decorators/common/recordOf.js +63 -0
  24. package/lib/cjs/decorators/common/recordOf.js.map +1 -0
  25. package/lib/cjs/decorators/operations/acceptMime.js +28 -0
  26. package/lib/cjs/decorators/operations/acceptMime.js.map +1 -0
  27. package/lib/cjs/decorators/operations/in.js +6 -4
  28. package/lib/cjs/decorators/operations/in.js.map +1 -1
  29. package/lib/cjs/decorators/operations/redirect.js +1 -2
  30. package/lib/cjs/decorators/operations/redirect.js.map +1 -1
  31. package/lib/cjs/decorators/operations/returns.js +43 -21
  32. package/lib/cjs/decorators/operations/returns.js.map +1 -1
  33. package/lib/cjs/decorators/operations/route.js +1 -4
  34. package/lib/cjs/decorators/operations/route.js.map +1 -1
  35. package/lib/cjs/decorators/operations/view.js +31 -0
  36. package/lib/cjs/decorators/operations/view.js.map +1 -0
  37. package/lib/cjs/domain/DecoratorContext.js +6 -3
  38. package/lib/cjs/domain/DecoratorContext.js.map +1 -1
  39. package/lib/cjs/domain/JsonClassStore.js +5 -8
  40. package/lib/cjs/domain/JsonClassStore.js.map +1 -1
  41. package/lib/cjs/domain/JsonEntityStore.js +40 -1
  42. package/lib/cjs/domain/JsonEntityStore.js.map +1 -1
  43. package/lib/cjs/domain/JsonLazyRef.js +2 -1
  44. package/lib/cjs/domain/JsonLazyRef.js.map +1 -1
  45. package/lib/cjs/domain/JsonMap.js.map +1 -1
  46. package/lib/cjs/domain/JsonMethodStore.js +85 -39
  47. package/lib/cjs/domain/JsonMethodStore.js.map +1 -1
  48. package/lib/cjs/domain/JsonOperation.js +15 -34
  49. package/lib/cjs/domain/JsonOperation.js.map +1 -1
  50. package/lib/cjs/domain/JsonOperationPathsMap.js +2 -16
  51. package/lib/cjs/domain/JsonOperationPathsMap.js.map +1 -1
  52. package/lib/cjs/domain/JsonOperationRoute.js +11 -8
  53. package/lib/cjs/domain/JsonOperationRoute.js.map +1 -1
  54. package/lib/cjs/domain/JsonParameter.js +42 -48
  55. package/lib/cjs/domain/JsonParameter.js.map +1 -1
  56. package/lib/cjs/domain/JsonParameterStore.js +26 -10
  57. package/lib/cjs/domain/JsonParameterStore.js.map +1 -1
  58. package/lib/cjs/domain/JsonPropertyStore.js +7 -6
  59. package/lib/cjs/domain/JsonPropertyStore.js.map +1 -1
  60. package/lib/cjs/domain/JsonResponse.js +7 -18
  61. package/lib/cjs/domain/JsonResponse.js.map +1 -1
  62. package/lib/cjs/domain/JsonSchema.js +62 -71
  63. package/lib/cjs/domain/JsonSchema.js.map +1 -1
  64. package/lib/cjs/domain/SpecTypes.js +1 -0
  65. package/lib/cjs/domain/SpecTypes.js.map +1 -1
  66. package/lib/cjs/hooks/alterIgnore.js +2 -3
  67. package/lib/cjs/hooks/alterIgnore.js.map +1 -1
  68. package/lib/cjs/hooks/alterRequiredGroups.js +1 -2
  69. package/lib/cjs/hooks/alterRequiredGroups.js.map +1 -1
  70. package/lib/cjs/index.js +150 -20
  71. package/lib/cjs/index.js.map +1 -1
  72. package/lib/cjs/interfaces/JsonSchemaOptions.js.map +1 -1
  73. package/lib/cjs/package.json +3 -0
  74. package/lib/cjs/utils/concatPath.js +16 -1
  75. package/lib/cjs/utils/concatPath.js.map +1 -1
  76. package/lib/cjs/utils/from.js +9 -8
  77. package/lib/cjs/utils/from.js.map +1 -1
  78. package/lib/cjs/utils/generateSpec.js +46 -0
  79. package/lib/cjs/utils/generateSpec.js.map +1 -0
  80. package/lib/cjs/utils/generics.js.map +1 -1
  81. package/lib/cjs/utils/getJsonPathParameters.js +20 -6
  82. package/lib/cjs/utils/getJsonPathParameters.js.map +1 -1
  83. package/lib/cjs/utils/getJsonSchema.js +12 -3
  84. package/lib/cjs/utils/getJsonSchema.js.map +1 -1
  85. package/lib/cjs/utils/getJsonType.js +1 -1
  86. package/lib/cjs/utils/getJsonType.js.map +1 -1
  87. package/lib/cjs/utils/getOperationsRoutes.js +2 -1
  88. package/lib/cjs/utils/getOperationsRoutes.js.map +1 -1
  89. package/lib/cjs/utils/getRequiredProperties.js +3 -3
  90. package/lib/cjs/utils/getRequiredProperties.js.map +1 -1
  91. package/lib/cjs/utils/getSpec.js +58 -43
  92. package/lib/cjs/utils/getSpec.js.map +1 -1
  93. package/lib/cjs/utils/getSpecType.js +21 -0
  94. package/lib/cjs/utils/getSpecType.js.map +1 -0
  95. package/lib/cjs/utils/mapNullableType.js +1 -1
  96. package/lib/cjs/utils/mapNullableType.js.map +1 -1
  97. package/lib/cjs/utils/mapOpenSpec.js +41 -0
  98. package/lib/cjs/utils/mapOpenSpec.js.map +1 -0
  99. package/lib/cjs/utils/mapOpenSpec2.js +34 -0
  100. package/lib/cjs/utils/mapOpenSpec2.js.map +1 -0
  101. package/lib/cjs/utils/mapOpenSpec3.js +26 -0
  102. package/lib/cjs/utils/mapOpenSpec3.js.map +1 -0
  103. package/lib/cjs/utils/mapOpenSpecInfo.js +21 -0
  104. package/lib/cjs/utils/mapOpenSpecInfo.js.map +1 -0
  105. package/lib/cjs/utils/matchGroups.js +1 -1
  106. package/lib/cjs/utils/matchGroups.js.map +1 -1
  107. package/lib/cjs/utils/mergeOperation.js +2 -2
  108. package/lib/cjs/utils/mergeOperation.js.map +1 -1
  109. package/lib/cjs/utils/mergeSpec.js.map +1 -1
  110. package/lib/cjs/utils/operationIdFormatter.js +3 -3
  111. package/lib/cjs/utils/operationIdFormatter.js.map +1 -1
  112. package/lib/cjs/utils/ref.js +2 -2
  113. package/lib/cjs/utils/ref.js.map +1 -1
  114. package/lib/cjs/utils/serializeEnumValues.js +26 -0
  115. package/lib/cjs/utils/serializeEnumValues.js.map +1 -0
  116. package/lib/cjs/utils/transformToOS2.js +510 -0
  117. package/lib/cjs/utils/transformToOS2.js.map +1 -0
  118. package/lib/esm/components/anyMapper.js +4 -4
  119. package/lib/esm/components/classMapper.js +4 -4
  120. package/lib/esm/components/genericsMapper.js +4 -4
  121. package/lib/esm/components/inheritedClassMapper.js +2 -2
  122. package/lib/esm/components/itemMapper.js +1 -1
  123. package/lib/esm/components/lazyRefMapper.js +4 -5
  124. package/lib/esm/components/lazyRefMapper.js.map +1 -1
  125. package/lib/esm/components/mapMapper.js +2 -2
  126. package/lib/esm/components/objectMapper.js +4 -4
  127. package/lib/esm/components/objectMapper.js.map +1 -1
  128. package/lib/esm/components/ofMapper.js +1 -1
  129. package/lib/esm/components/propertiesMapper.js +1 -1
  130. package/lib/esm/components/schemaMapper.js +7 -7
  131. package/lib/esm/components/schemaMapper.js.map +1 -1
  132. package/lib/esm/constants/httpStatusMessages.js +13 -100
  133. package/lib/esm/constants/httpStatusMessages.js.map +1 -1
  134. package/lib/esm/decorators/class/children.js +1 -1
  135. package/lib/esm/decorators/collections/collectionContains.js +1 -1
  136. package/lib/esm/decorators/collections/collectionOf.js +4 -5
  137. package/lib/esm/decorators/collections/collectionOf.js.map +1 -1
  138. package/lib/esm/decorators/collections/maxItems.js +1 -1
  139. package/lib/esm/decorators/collections/maxProperties.js +1 -1
  140. package/lib/esm/decorators/collections/minItems.js +1 -1
  141. package/lib/esm/decorators/collections/minProperties.js +1 -1
  142. package/lib/esm/decorators/collections/uniqueItems.js +1 -1
  143. package/lib/esm/decorators/common/additionalProperties.js +1 -1
  144. package/lib/esm/decorators/common/allOf.js +1 -1
  145. package/lib/esm/decorators/common/allow.js +2 -2
  146. package/lib/esm/decorators/common/any.js +1 -1
  147. package/lib/esm/decorators/common/anyOf.js +5 -1
  148. package/lib/esm/decorators/common/anyOf.js.map +1 -1
  149. package/lib/esm/decorators/common/const.js +1 -1
  150. package/lib/esm/decorators/common/customKey.js +1 -1
  151. package/lib/esm/decorators/common/default.js +1 -1
  152. package/lib/esm/decorators/common/description.js +2 -3
  153. package/lib/esm/decorators/common/description.js.map +1 -1
  154. package/lib/esm/decorators/common/enum.js +2 -21
  155. package/lib/esm/decorators/common/enum.js.map +1 -1
  156. package/lib/esm/decorators/common/example.js +1 -1
  157. package/lib/esm/decorators/common/examples.js +1 -1
  158. package/lib/esm/decorators/common/exclusiveMaximum.js +1 -1
  159. package/lib/esm/decorators/common/exclusiveMinimum.js +1 -1
  160. package/lib/esm/decorators/common/format.js +2 -2
  161. package/lib/esm/decorators/common/forwardGroups.js +1 -1
  162. package/lib/esm/decorators/common/groups.js +2 -2
  163. package/lib/esm/decorators/common/ignore.js +1 -1
  164. package/lib/esm/decorators/common/ignore.js.map +1 -1
  165. package/lib/esm/decorators/common/integer.js +1 -1
  166. package/lib/esm/decorators/common/jsonEntityFn.js +1 -1
  167. package/lib/esm/decorators/common/jsonEntityFn.js.map +1 -1
  168. package/lib/esm/decorators/common/maxLength.js +1 -1
  169. package/lib/esm/decorators/common/maximum.js +1 -1
  170. package/lib/esm/decorators/common/minLength.js +1 -1
  171. package/lib/esm/decorators/common/minimum.js +1 -1
  172. package/lib/esm/decorators/common/multipleOf.js +1 -1
  173. package/lib/esm/decorators/common/name.js +1 -1
  174. package/lib/esm/decorators/common/nullable.js +2 -2
  175. package/lib/esm/decorators/common/oneOf.js +5 -1
  176. package/lib/esm/decorators/common/oneOf.js.map +1 -1
  177. package/lib/esm/decorators/common/optional.js +1 -1
  178. package/lib/esm/decorators/common/pattern.js +1 -1
  179. package/lib/esm/decorators/common/property.js +1 -1
  180. package/lib/esm/decorators/common/readOnly.js +1 -1
  181. package/lib/esm/decorators/common/recordOf.js +59 -0
  182. package/lib/esm/decorators/common/recordOf.js.map +1 -0
  183. package/lib/esm/decorators/common/required.js +2 -2
  184. package/lib/esm/decorators/common/requiredGroups.js +2 -2
  185. package/lib/esm/decorators/common/schema.js +1 -1
  186. package/lib/esm/decorators/common/title.js +1 -1
  187. package/lib/esm/decorators/common/writeOnly.js +1 -1
  188. package/lib/esm/decorators/config/jsonEntityComponent.js +1 -1
  189. package/lib/esm/decorators/generics/genericOf.js +2 -2
  190. package/lib/esm/decorators/generics/generics.js +1 -1
  191. package/lib/esm/decorators/operations/acceptMime.js +24 -0
  192. package/lib/esm/decorators/operations/acceptMime.js.map +1 -0
  193. package/lib/esm/decorators/operations/consumes.js +1 -1
  194. package/lib/esm/decorators/operations/contentType.js +1 -1
  195. package/lib/esm/decorators/operations/deprecated.js +1 -1
  196. package/lib/esm/decorators/operations/header.js +1 -1
  197. package/lib/esm/decorators/operations/in.js +3 -1
  198. package/lib/esm/decorators/operations/in.js.map +1 -1
  199. package/lib/esm/decorators/operations/inFile.js +5 -5
  200. package/lib/esm/decorators/operations/location.js +1 -1
  201. package/lib/esm/decorators/operations/operationId.js +1 -1
  202. package/lib/esm/decorators/operations/operationPath.js +1 -1
  203. package/lib/esm/decorators/operations/partial.js +1 -1
  204. package/lib/esm/decorators/operations/path.js +1 -1
  205. package/lib/esm/decorators/operations/produces.js +1 -1
  206. package/lib/esm/decorators/operations/redirect.js +3 -4
  207. package/lib/esm/decorators/operations/redirect.js.map +1 -1
  208. package/lib/esm/decorators/operations/returns.js +51 -29
  209. package/lib/esm/decorators/operations/returns.js.map +1 -1
  210. package/lib/esm/decorators/operations/route.js +4 -7
  211. package/lib/esm/decorators/operations/route.js.map +1 -1
  212. package/lib/esm/decorators/operations/security.js +1 -1
  213. package/lib/esm/decorators/operations/status.js +1 -1
  214. package/lib/esm/decorators/operations/summary.js +1 -1
  215. package/lib/esm/decorators/operations/tags.js +1 -1
  216. package/lib/esm/decorators/operations/view.js +27 -0
  217. package/lib/esm/decorators/operations/view.js.map +1 -0
  218. package/lib/esm/domain/DecoratorContext.js +6 -3
  219. package/lib/esm/domain/DecoratorContext.js.map +1 -1
  220. package/lib/esm/domain/JsonClassStore.js +7 -10
  221. package/lib/esm/domain/JsonClassStore.js.map +1 -1
  222. package/lib/esm/domain/JsonEntityStore.js +40 -1
  223. package/lib/esm/domain/JsonEntityStore.js.map +1 -1
  224. package/lib/esm/domain/JsonLazyRef.js +4 -3
  225. package/lib/esm/domain/JsonLazyRef.js.map +1 -1
  226. package/lib/esm/domain/JsonMap.js +1 -1
  227. package/lib/esm/domain/JsonMap.js.map +1 -1
  228. package/lib/esm/domain/JsonMethodStore.js +86 -40
  229. package/lib/esm/domain/JsonMethodStore.js.map +1 -1
  230. package/lib/esm/domain/JsonOperation.js +22 -41
  231. package/lib/esm/domain/JsonOperation.js.map +1 -1
  232. package/lib/esm/domain/JsonOperationPathsMap.js +3 -17
  233. package/lib/esm/domain/JsonOperationPathsMap.js.map +1 -1
  234. package/lib/esm/domain/JsonOperationRoute.js +12 -9
  235. package/lib/esm/domain/JsonOperationRoute.js.map +1 -1
  236. package/lib/esm/domain/JsonParameter.js +46 -52
  237. package/lib/esm/domain/JsonParameter.js.map +1 -1
  238. package/lib/esm/domain/JsonParameterStore.js +29 -13
  239. package/lib/esm/domain/JsonParameterStore.js.map +1 -1
  240. package/lib/esm/domain/JsonPropertyStore.js +8 -7
  241. package/lib/esm/domain/JsonPropertyStore.js.map +1 -1
  242. package/lib/esm/domain/JsonRequestBody.js +2 -2
  243. package/lib/esm/domain/JsonResponse.js +10 -21
  244. package/lib/esm/domain/JsonResponse.js.map +1 -1
  245. package/lib/esm/domain/JsonSchema.js +67 -76
  246. package/lib/esm/domain/JsonSchema.js.map +1 -1
  247. package/lib/esm/domain/SpecTypes.js +1 -0
  248. package/lib/esm/domain/SpecTypes.js.map +1 -1
  249. package/lib/esm/hooks/alterIgnore.js +2 -3
  250. package/lib/esm/hooks/alterIgnore.js.map +1 -1
  251. package/lib/esm/hooks/alterRequiredGroups.js +1 -2
  252. package/lib/esm/hooks/alterRequiredGroups.js.map +1 -1
  253. package/lib/esm/index.js +150 -20
  254. package/lib/esm/index.js.map +1 -1
  255. package/lib/esm/interfaces/JsonSchemaOptions.js.map +1 -1
  256. package/lib/esm/package.json +3 -0
  257. package/lib/esm/utils/concatPath.js +16 -1
  258. package/lib/esm/utils/concatPath.js.map +1 -1
  259. package/lib/esm/utils/from.js +5 -4
  260. package/lib/esm/utils/from.js.map +1 -1
  261. package/lib/esm/utils/generateSpec.js +41 -0
  262. package/lib/esm/utils/generateSpec.js.map +1 -0
  263. package/lib/esm/utils/generics.js.map +1 -1
  264. package/lib/esm/utils/getInheritedStores.js +1 -1
  265. package/lib/esm/utils/getJsonEntityStore.js +5 -5
  266. package/lib/esm/utils/getJsonPathParameters.js +20 -6
  267. package/lib/esm/utils/getJsonPathParameters.js.map +1 -1
  268. package/lib/esm/utils/getJsonSchema.js +15 -6
  269. package/lib/esm/utils/getJsonSchema.js.map +1 -1
  270. package/lib/esm/utils/getJsonType.js +2 -2
  271. package/lib/esm/utils/getJsonType.js.map +1 -1
  272. package/lib/esm/utils/getOperationsRoutes.js +5 -4
  273. package/lib/esm/utils/getOperationsRoutes.js.map +1 -1
  274. package/lib/esm/utils/getOperationsStores.js +4 -4
  275. package/lib/esm/utils/getPropertiesStores.js +3 -3
  276. package/lib/esm/utils/getRequiredProperties.js +4 -4
  277. package/lib/esm/utils/getRequiredProperties.js.map +1 -1
  278. package/lib/esm/utils/getSpec.js +65 -50
  279. package/lib/esm/utils/getSpec.js.map +1 -1
  280. package/lib/esm/utils/getSpecType.js +16 -0
  281. package/lib/esm/utils/getSpecType.js.map +1 -0
  282. package/lib/esm/utils/mapNullableType.js +2 -2
  283. package/lib/esm/utils/mapNullableType.js.map +1 -1
  284. package/lib/esm/utils/mapOpenSpec.js +37 -0
  285. package/lib/esm/utils/mapOpenSpec.js.map +1 -0
  286. package/lib/esm/utils/mapOpenSpec2.js +30 -0
  287. package/lib/esm/utils/mapOpenSpec2.js.map +1 -0
  288. package/lib/esm/utils/mapOpenSpec3.js +22 -0
  289. package/lib/esm/utils/mapOpenSpec3.js.map +1 -0
  290. package/lib/esm/utils/mapOpenSpecInfo.js +17 -0
  291. package/lib/esm/utils/mapOpenSpecInfo.js.map +1 -0
  292. package/lib/esm/utils/mapRouteOptions.js +1 -1
  293. package/lib/esm/utils/mergeOperation.js +5 -5
  294. package/lib/esm/utils/mergeOperation.js.map +1 -1
  295. package/lib/esm/utils/mergeSpec.js.map +1 -1
  296. package/lib/esm/utils/operationIdFormatter.js +1 -1
  297. package/lib/esm/utils/operationIdFormatter.js.map +1 -1
  298. package/lib/esm/utils/ref.js +2 -2
  299. package/lib/esm/utils/ref.js.map +1 -1
  300. package/lib/esm/utils/serializeEnumValues.js +21 -0
  301. package/lib/esm/utils/serializeEnumValues.js.map +1 -0
  302. package/lib/esm/utils/toJsonMapCollection.js +1 -1
  303. package/lib/esm/utils/transformToOS2.js +504 -0
  304. package/lib/esm/utils/transformToOS2.js.map +1 -0
  305. package/lib/types/constants/httpStatusMessages.d.ts +2 -263
  306. package/lib/types/decorators/common/anyOf.d.ts +4 -0
  307. package/lib/types/decorators/common/ignore.d.ts +1 -1
  308. package/lib/types/decorators/common/jsonEntityFn.d.ts +1 -1
  309. package/lib/types/decorators/common/oneOf.d.ts +4 -0
  310. package/lib/types/decorators/common/recordOf.d.ts +46 -0
  311. package/lib/types/decorators/operations/acceptMime.d.ts +19 -0
  312. package/lib/types/decorators/operations/in.d.ts +1 -1
  313. package/lib/types/decorators/operations/returns.d.ts +7 -2
  314. package/lib/types/decorators/operations/view.d.ts +23 -0
  315. package/lib/types/domain/JsonEntityStore.d.ts +1 -0
  316. package/lib/types/domain/JsonMap.d.ts +1 -1
  317. package/lib/types/domain/JsonMethodStore.d.ts +56 -4
  318. package/lib/types/domain/JsonOperation.d.ts +2 -2
  319. package/lib/types/domain/JsonOperationPathsMap.d.ts +0 -2
  320. package/lib/types/domain/JsonOperationRoute.d.ts +7 -6
  321. package/lib/types/domain/JsonParameter.d.ts +2 -1
  322. package/lib/types/domain/JsonParameterStore.d.ts +23 -1
  323. package/lib/types/domain/JsonPropertyStore.d.ts +7 -0
  324. package/lib/types/domain/JsonResponse.d.ts +3 -1
  325. package/lib/types/domain/JsonSchema.d.ts +2 -2
  326. package/lib/types/domain/SpecTypes.d.ts +1 -0
  327. package/lib/types/index.d.ts +143 -13
  328. package/lib/types/interfaces/JsonSchemaOptions.d.ts +2 -2
  329. package/lib/types/utils/concatPath.d.ts +1 -1
  330. package/lib/types/utils/generateSpec.d.ts +16 -0
  331. package/lib/types/utils/generics.d.ts +1 -1
  332. package/lib/types/utils/getJsonSchema.d.ts +12 -2
  333. package/lib/types/utils/getOperationsRoutes.d.ts +2 -2
  334. package/lib/types/utils/getSpec.d.ts +5 -4
  335. package/lib/types/utils/getSpecType.d.ts +12 -0
  336. package/lib/types/utils/mapNullableType.d.ts +1 -1
  337. package/lib/types/utils/mapOpenSpec.d.ts +10 -0
  338. package/lib/types/utils/mapOpenSpec2.d.ts +9 -0
  339. package/lib/types/utils/mapOpenSpec3.d.ts +8 -0
  340. package/lib/types/utils/mapOpenSpecInfo.d.ts +6 -0
  341. package/lib/types/utils/mergeSpec.d.ts +2 -2
  342. package/lib/types/utils/serializeEnumValues.d.ts +5 -0
  343. package/lib/types/utils/transformToOS2.d.ts +25 -0
  344. package/package.json +35 -18
  345. package/readme.md +4 -2
  346. package/tsconfig.compile.esm.json +4 -13
  347. package/benchmark/cold-start.js +0 -17
  348. package/lib/cjs/components/index.js +0 -15
  349. package/lib/cjs/components/index.js.map +0 -1
  350. package/lib/cjs/decorators/index.js +0 -77
  351. package/lib/cjs/decorators/index.js.map +0 -1
  352. package/lib/cjs/domain/index.js +0 -20
  353. package/lib/cjs/domain/index.js.map +0 -1
  354. package/lib/cjs/interfaces/index.js +0 -8
  355. package/lib/cjs/interfaces/index.js.map +0 -1
  356. package/lib/esm/components/index.js +0 -12
  357. package/lib/esm/components/index.js.map +0 -1
  358. package/lib/esm/decorators/index.js +0 -74
  359. package/lib/esm/decorators/index.js.map +0 -1
  360. package/lib/esm/domain/index.js +0 -17
  361. package/lib/esm/domain/index.js.map +0 -1
  362. package/lib/esm/interfaces/index.js +0 -5
  363. package/lib/esm/interfaces/index.js.map +0 -1
  364. package/lib/types/components/index.d.ts +0 -11
  365. package/lib/types/decorators/index.d.ts +0 -68
  366. package/lib/types/domain/index.d.ts +0 -16
  367. package/lib/types/interfaces/index.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"JsonEntityStore.js","sourceRoot":"","sources":["../../../src/domain/JsonEntityStore.ts"],"names":[],"mappings":";;;AAAA,qCAgBoB;AAOpB;;GAEG;AACU,QAAA,qBAAqB,GAAG,IAAI,GAAG,EAAyC,CAAC;AAiBtF,MAAsB,eAAe;IAyCnC,YAAY,OAA+B;QAdlC,YAAO,GAAG,IAAI,CAAC;QAetB,MAAM,EAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAC,GAAG,OAAO,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAY,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAM,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACZ,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,OAAO,IAAA,0BAAmB,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,OAAO,IAAA,kCAA2B,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACV,OAAO,IAAA,eAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;IACpC,CAAC;IAED,IAAI,cAAc,CAAC,cAA6B;QAC9C,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI,CAAC,KAAsB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACpE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAeD,MAAM,CAAC,IAAI,CAA8C,GAAG,IAAW;QACrE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;YACnB,OAAO,IAAI,CAAC,CAAC,CAAM,CAAC;SACrB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,MAAM,KAAK,GAAG,YAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YACjC,MAAM,aAAa,GAAG,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,6BAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAE7D,uBAAuB;YACvB,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;aAC7C;YAED,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC;gBACtC,KAAK;gBACL,aAAa;gBACb,MAAM,EAAE,IAAA,cAAO,EAAC,MAAM,CAAC;gBACvB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;gBACpB,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBACxD,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;aAC9D,CAAC,CAAC;YAEH,eAAe,CAAC,KAAK,EAAE,CAAC;YAExB,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;SAC/C;QAED,OAAO,KAAK,CAAC,GAAG,CAAI,iBAAiB,CAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAA8C,MAAW,EAAE,WAA4B;QACtG,OAAO,IAAI,CAAC,IAAI,CAAI,MAAM,EAAE,WAAW,EAAE,IAAA,mBAAY,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,GAAG,CAAU,GAAW,EAAE,YAAkB;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAW;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAIS,SAAS,CAAC,IAAS;QAC3B,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,wHAAwH;YACxH,IAAI,IAAI,CAAC,KAAK,IAAI,IAAA,oBAAa,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;aACrB;SACF;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAiB,EAAE,WAA4B,EAAE,UAAgB;QAC1E,OAAO,eAAe,CAAC,IAAI,CAAC,IAAA,kBAAW,EAAC,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;CACF;AA/OD,0CA+OC","sourcesContent":["import {\n classOf,\n decoratorTypeOf,\n DecoratorTypes,\n descriptorOf,\n isArrayOrArrayClass,\n isClass,\n isCollection,\n isDate,\n isObject,\n isPlainObject,\n isPrimitiveOrPrimitiveClass,\n nameOf,\n prototypeOf,\n Store,\n Type\n} from \"@tsed/core\";\nimport type {JsonSchema} from \"./JsonSchema\";\nimport type {JsonMethodStore} from \"./JsonMethodStore\";\nimport type {JsonClassStore} from \"./JsonClassStore\";\nimport type {JsonPropertyStore} from \"./JsonPropertyStore\";\nimport type {JsonParameterStore} from \"./JsonParameterStore\";\n\n/**\n * @ignore\n */\nexport const JsonEntitiesContainer = new Map<DecoratorTypes, Type<JsonEntityStore>>();\n\nexport interface JsonEntityStoreOptions {\n decoratorType: DecoratorTypes;\n target: Type<any>;\n propertyKey?: string | symbol;\n index?: number;\n descriptor?: any;\n type?: Type<any>;\n collectionType?: Type<any>;\n beforeMiddlewares?: Function[];\n middlewares?: Function[];\n afterMiddlewares?: Function[];\n\n [key: string]: any;\n}\n\nexport abstract class JsonEntityStore implements JsonEntityStoreOptions {\n /**\n * Original property key decorated by the decorator\n */\n readonly propertyKey: string | symbol;\n /**\n * Alias of the property\n */\n readonly propertyName: string;\n /**\n * Parameter index\n */\n readonly index: number;\n /**\n * Method's descriptor\n */\n readonly descriptor: number;\n /**\n * Decorator type used to declare the JsonSchemaStore.\n */\n readonly decoratorType: DecoratorTypes;\n /**\n * Type of the collection (Array, Map, Set, etc...)\n */\n public collectionType: Type<any>;\n public token: Type<any>;\n readonly store: Store;\n readonly isStore = true;\n readonly parent: JsonEntityStore;\n readonly target: Type<any>;\n /**\n *\n */\n protected _type: Type<any>;\n /**\n * Ref to JsonSchema\n */\n protected _schema: JsonSchema;\n\n [key: string]: any;\n\n constructor(options: JsonEntityStoreOptions) {\n const {target, propertyKey, descriptor, index, decoratorType} = options;\n this.target = target;\n this.propertyKey = propertyKey!;\n this.propertyName = String(propertyKey);\n this.descriptor = descriptor;\n this.index = index!;\n this.decoratorType = decoratorType;\n this.token = target;\n this.store = options.store;\n this.parent = this;\n }\n\n /**\n * Return the class name of the entity.\n * @returns {string}\n */\n get targetName(): string {\n return nameOf(this.token);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isCollection(): boolean {\n return !!this.collectionType;\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isArray() {\n return isArrayOrArrayClass(this.collectionType);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isPrimitive() {\n return isPrimitiveOrPrimitiveClass(this._type);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isDate() {\n return isDate(this.computedType);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isObject() {\n return isObject(this.computedType);\n }\n\n /**\n *\n */\n get isClass() {\n return isClass(this.computedType);\n }\n\n /**\n * Return the JsonSchema\n */\n get schema(): JsonSchema {\n return this._schema;\n }\n\n get nestedGenerics(): Type<any>[][] {\n return this.schema.nestedGenerics;\n }\n\n set nestedGenerics(nestedGenerics: Type<any>[][]) {\n this.schema.nestedGenerics = nestedGenerics;\n }\n\n /**\n *\n * @returns {Type<any>}\n */\n get type(): Type<any> | any {\n return this._type;\n }\n\n /**\n * Get original type without transformation\n * @param value\n */\n set type(value: Type<any> | any) {\n this._type = value;\n this.build();\n }\n\n /**\n * Return the itemSchema computed type. if the type is a function used for recursive model, the function will be called to\n * get the right type.\n */\n get computedType() {\n return this.itemSchema.getComputedType();\n }\n\n get itemSchema(): JsonSchema {\n return this.isCollection ? this.schema.itemSchema() : this.schema;\n }\n\n get parentSchema(): JsonSchema {\n return this.parent.schema;\n }\n\n /**\n *\n * @param target\n */\n static from<T extends JsonClassStore = JsonClassStore>(target: Type<any>): T;\n static from<T extends JsonPropertyStore = JsonPropertyStore>(target: Type<any> | any, propertyKey: string | symbol): T;\n static from<T extends JsonParameterStore = JsonParameterStore>(target: Type<any> | any, propertyKey: string | symbol, index: number): T;\n static from<T extends JsonMethodStore = JsonMethodStore>(\n target: Type<any> | any,\n propertyKey: string | symbol,\n descriptor: PropertyDescriptor\n ): T;\n static from<T extends JsonEntityStore = JsonEntityStore>(...args: any[]): T;\n static from<T extends JsonEntityStore = JsonEntityStore>(...args: any[]): T {\n if (args[0].isStore) {\n return args[0] as T;\n }\n\n const target = args[0];\n\n if (args.length > 1) {\n args[0] = prototypeOf(args[0]);\n }\n\n const store = Store.from(...args);\n\n if (!store.has(\"JsonEntityStore\")) {\n const decoratorType = decoratorTypeOf(args);\n const entityStore = JsonEntitiesContainer.get(decoratorType);\n\n // istanbul ignore next\n if (!entityStore) {\n throw Error(\"Unsupported json entity type\");\n }\n\n const jsonSchemaStore = new entityStore({\n store,\n decoratorType,\n target: classOf(target),\n propertyKey: args[1],\n index: typeof args[2] === \"number\" ? args[2] : undefined,\n descriptor: typeof args[2] === \"object\" ? args[2] : undefined\n });\n\n jsonSchemaStore.build();\n\n store.set(\"JsonEntityStore\", jsonSchemaStore);\n }\n\n return store.get<T>(\"JsonEntityStore\")!;\n }\n\n static fromMethod<T extends JsonMethodStore = JsonMethodStore>(target: any, propertyKey: string | symbol) {\n return this.from<T>(target, propertyKey, descriptorOf(target, propertyKey));\n }\n\n get<T = any>(key: string, defaultValue?: any) {\n return this.store.get<T>(key, defaultValue);\n }\n\n set(key: string, value?: any) {\n return this.store.set(key, value);\n }\n\n protected abstract build(): void;\n\n protected buildType(type: any) {\n if (isCollection(type)) {\n this.collectionType = type;\n } else {\n this._type = type;\n\n // issue #1534: Enum metadata stored as plain object instead of String (see: https://github.com/tsedio/tsed/issues/1534)\n if (this._type && isPlainObject(this._type)) {\n this._type = String;\n }\n }\n }\n\n static get(target: Type<any>, propertyKey: string | symbol, descriptor?: any) {\n return JsonEntityStore.from(prototypeOf(target), propertyKey, descriptor);\n }\n}\n"]}
1
+ {"version":3,"file":"JsonEntityStore.js","sourceRoot":"","sources":["../../../src/domain/JsonEntityStore.ts"],"names":[],"mappings":";;;AAAA,qCAgBoB;AAOpB;;GAEG;AACU,QAAA,qBAAqB,GAAG,IAAI,GAAG,EAAyC,CAAC;AAiBtF,MAAsB,eAAe;IACnC;;OAEG;IACM,WAAW,CAAkB;IACtC;;OAEG;IACM,YAAY,CAAS;IAC9B;;OAEG;IACM,KAAK,CAAS;IACvB;;OAEG;IACM,UAAU,CAAS;IAC5B;;OAEG;IACM,aAAa,CAAiB;IACvC;;OAEG;IACI,cAAc,CAAY;IAC1B,KAAK,CAAY;IACf,KAAK,CAAQ;IACb,OAAO,GAAG,IAAI,CAAC;IACf,MAAM,CAAkB;IACxB,MAAM,CAAY;IAC3B;;OAEG;IACO,KAAK,CAAY;IAC3B;;OAEG;IACO,OAAO,CAAa;IAI9B,YAAY,OAA+B;QACzC,MAAM,EAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAC,GAAG,OAAO,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAY,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAM,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACZ,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,OAAO,IAAA,0BAAmB,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,OAAO,IAAA,kCAA2B,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACV,OAAO,IAAA,eAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;IACpC,CAAC;IAED,IAAI,cAAc,CAAC,cAA6B;QAC9C,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI,CAAC,KAAsB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACpE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAeD,MAAM,CAAC,IAAI,CAA8C,GAAG,IAAW;QACrE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;YACnB,OAAO,IAAI,CAAC,CAAC,CAAM,CAAC;SACrB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,MAAM,KAAK,GAAG,YAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YACjC,MAAM,aAAa,GAAG,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,6BAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAE7D,uBAAuB;YACvB,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;aAC7C;YAED,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC;gBACtC,KAAK;gBACL,aAAa;gBACb,MAAM,EAAE,IAAA,cAAO,EAAC,MAAM,CAAC;gBACvB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;gBACpB,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBACxD,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;aAC9D,CAAC,CAAC;YAEH,eAAe,CAAC,KAAK,EAAE,CAAC;YAExB,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;SAC/C;QAED,OAAO,KAAK,CAAC,GAAG,CAAI,iBAAiB,CAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAA8C,MAAW,EAAE,WAA4B;QACtG,OAAO,IAAI,CAAC,IAAI,CAAI,MAAM,EAAE,WAAW,EAAE,IAAA,mBAAY,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,GAAG,CAAU,GAAW,EAAE,YAAkB;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAW;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAIS,SAAS,CAAC,IAAS;QAC3B,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,wHAAwH;YACxH,IAAI,IAAI,CAAC,KAAK,IAAI,IAAA,oBAAa,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;aACrB;SACF;IACH,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAiB,EAAE,WAA4B,EAAE,UAAgB;QAC1E,OAAO,eAAe,CAAC,IAAI,CAAC,IAAA,kBAAW,EAAC,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;CACF;AAnPD,0CAmPC","sourcesContent":["import {\n classOf,\n decoratorTypeOf,\n DecoratorTypes,\n descriptorOf,\n isArrayOrArrayClass,\n isClass,\n isCollection,\n isDate,\n isObject,\n isPlainObject,\n isPrimitiveOrPrimitiveClass,\n nameOf,\n prototypeOf,\n Store,\n Type\n} from \"@tsed/core\";\nimport type {JsonSchema} from \"./JsonSchema\";\nimport type {JsonMethodStore} from \"./JsonMethodStore\";\nimport type {JsonClassStore} from \"./JsonClassStore\";\nimport type {JsonPropertyStore} from \"./JsonPropertyStore\";\nimport type {JsonParameterStore} from \"./JsonParameterStore\";\n\n/**\n * @ignore\n */\nexport const JsonEntitiesContainer = new Map<DecoratorTypes, Type<JsonEntityStore>>();\n\nexport interface JsonEntityStoreOptions {\n decoratorType: DecoratorTypes;\n target: Type<any>;\n propertyKey?: string | symbol;\n index?: number;\n descriptor?: any;\n type?: Type<any>;\n collectionType?: Type<any>;\n beforeMiddlewares?: Function[];\n middlewares?: Function[];\n afterMiddlewares?: Function[];\n\n [key: string]: any;\n}\n\nexport abstract class JsonEntityStore implements JsonEntityStoreOptions {\n /**\n * Original property key decorated by the decorator\n */\n readonly propertyKey: string | symbol;\n /**\n * Alias of the property\n */\n readonly propertyName: string;\n /**\n * Parameter index\n */\n readonly index: number;\n /**\n * Method's descriptor\n */\n readonly descriptor: number;\n /**\n * Decorator type used to declare the JsonSchemaStore.\n */\n readonly decoratorType: DecoratorTypes;\n /**\n * Type of the collection (Array, Map, Set, etc...)\n */\n public collectionType: Type<any>;\n public token: Type<any>;\n readonly store: Store;\n readonly isStore = true;\n readonly parent: JsonEntityStore;\n readonly target: Type<any>;\n /**\n *\n */\n protected _type: Type<any>;\n /**\n * Ref to JsonSchema\n */\n protected _schema: JsonSchema;\n\n [key: string]: any;\n\n constructor(options: JsonEntityStoreOptions) {\n const {target, propertyKey, descriptor, index, decoratorType} = options;\n this.target = target;\n this.propertyKey = propertyKey!;\n this.propertyName = String(propertyKey);\n this.descriptor = descriptor;\n this.index = index!;\n this.decoratorType = decoratorType;\n this.token = target;\n this.store = options.store;\n this.parent = this;\n }\n\n /**\n * Return the class name of the entity.\n * @returns {string}\n */\n get targetName(): string {\n return nameOf(this.token);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isCollection(): boolean {\n return !!this.collectionType;\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isArray() {\n return isArrayOrArrayClass(this.collectionType);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isPrimitive() {\n return isPrimitiveOrPrimitiveClass(this._type);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isDate() {\n return isDate(this.computedType);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isObject() {\n return isObject(this.computedType);\n }\n\n /**\n *\n */\n get isClass() {\n return isClass(this.computedType);\n }\n\n /**\n * Return the JsonSchema\n */\n get schema(): JsonSchema {\n return this._schema;\n }\n\n get nestedGenerics(): Type<any>[][] {\n return this.schema.nestedGenerics;\n }\n\n set nestedGenerics(nestedGenerics: Type<any>[][]) {\n this.schema.nestedGenerics = nestedGenerics;\n }\n\n /**\n *\n * @returns {Type<any>}\n */\n get type(): Type<any> | any {\n return this._type;\n }\n\n /**\n * Get original type without transformation\n * @param value\n */\n set type(value: Type<any> | any) {\n this._type = value;\n this.build();\n }\n\n /**\n * Return the itemSchema computed type. if the type is a function used for recursive model, the function will be called to\n * get the right type.\n */\n get computedType() {\n return this.itemSchema.getComputedType();\n }\n\n get itemSchema(): JsonSchema {\n return this.isCollection ? this.schema.itemSchema() : this.schema;\n }\n\n get parentSchema(): JsonSchema {\n return this.parent.schema;\n }\n\n /**\n *\n * @param target\n */\n static from<T extends JsonClassStore = JsonClassStore>(target: Type<any>): T;\n static from<T extends JsonPropertyStore = JsonPropertyStore>(target: Type<any> | any, propertyKey: string | symbol): T;\n static from<T extends JsonParameterStore = JsonParameterStore>(target: Type<any> | any, propertyKey: string | symbol, index: number): T;\n static from<T extends JsonMethodStore = JsonMethodStore>(\n target: Type<any> | any,\n propertyKey: string | symbol,\n descriptor: PropertyDescriptor\n ): T;\n static from<T extends JsonEntityStore = JsonEntityStore>(...args: any[]): T;\n static from<T extends JsonEntityStore = JsonEntityStore>(...args: any[]): T {\n if (args[0].isStore) {\n return args[0] as T;\n }\n\n const target = args[0];\n\n if (args.length > 1) {\n args[0] = prototypeOf(args[0]);\n }\n\n const store = Store.from(...args);\n\n if (!store.has(\"JsonEntityStore\")) {\n const decoratorType = decoratorTypeOf(args);\n const entityStore = JsonEntitiesContainer.get(decoratorType);\n\n // istanbul ignore next\n if (!entityStore) {\n throw Error(\"Unsupported json entity type\");\n }\n\n const jsonSchemaStore = new entityStore({\n store,\n decoratorType,\n target: classOf(target),\n propertyKey: args[1],\n index: typeof args[2] === \"number\" ? args[2] : undefined,\n descriptor: typeof args[2] === \"object\" ? args[2] : undefined\n });\n\n jsonSchemaStore.build();\n\n store.set(\"JsonEntityStore\", jsonSchemaStore);\n }\n\n return store.get<T>(\"JsonEntityStore\")!;\n }\n\n static fromMethod<T extends JsonMethodStore = JsonMethodStore>(target: any, propertyKey: string | symbol) {\n return this.from<T>(target, propertyKey, descriptorOf(target, propertyKey));\n }\n\n get<T = any>(key: string, defaultValue?: any) {\n return this.store.get<T>(key, defaultValue);\n }\n\n set(key: string, value?: any) {\n return this.store.set(key, value);\n }\n\n protected abstract build(): void;\n\n protected buildType(type: any) {\n if (isCollection(type)) {\n this.collectionType = type;\n } else {\n this._type = type;\n\n // issue #1534: Enum metadata stored as plain object instead of String (see: https://github.com/tsedio/tsed/issues/1534)\n if (this._type && isPlainObject(this._type)) {\n this._type = String;\n }\n }\n }\n\n toString() {\n return [this.targetName, this.propertyName, this.index].filter((o) => o !== undefined).join(\":\");\n }\n\n static get(target: Type<any>, propertyKey: string | symbol, descriptor?: any) {\n return JsonEntityStore.from(prototypeOf(target), propertyKey, descriptor);\n }\n}\n"]}
@@ -5,9 +5,10 @@ const core_1 = require("@tsed/core");
5
5
  const JsonSchemaMapperContainer_1 = require("../registries/JsonSchemaMapperContainer");
6
6
  const getJsonEntityStore_1 = require("../utils/getJsonEntityStore");
7
7
  class JsonLazyRef {
8
+ getType;
9
+ isLazyRef = true;
8
10
  constructor(getType) {
9
11
  this.getType = getType;
10
- this.isLazyRef = true;
11
12
  }
12
13
  get target() {
13
14
  return this.getType();
@@ -1 +1 @@
1
- {"version":3,"file":"JsonLazyRef.js","sourceRoot":"","sources":["../../../src/domain/JsonLazyRef.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAExC,uFAAmE;AACnE,oEAA+D;AAE/D,MAAa,WAAW;IAGtB,YAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QAFpC,cAAS,GAAG,IAAI,CAAC;IAEsB,CAAC;IAEjD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAA,uCAAkB,EAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,OAA2B;QAChC,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAA,sCAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;CACF;AApBD,kCAoBC","sourcesContent":["import {nameOf, Type} from \"@tsed/core\";\nimport {JsonSchemaOptions} from \"../interfaces/JsonSchemaOptions\";\nimport {execMapper} from \"../registries/JsonSchemaMapperContainer\";\nimport {getJsonEntityStore} from \"../utils/getJsonEntityStore\";\n\nexport class JsonLazyRef {\n readonly isLazyRef = true;\n\n constructor(readonly getType: () => Type<any>) {}\n\n get target() {\n return this.getType();\n }\n\n get schema() {\n return getJsonEntityStore(this.getType()).schema;\n }\n\n get name() {\n return nameOf(this.getType());\n }\n\n toJSON(options?: JsonSchemaOptions) {\n return this.getType() && execMapper(\"schema\", this.schema, options);\n }\n}\n"]}
1
+ {"version":3,"file":"JsonLazyRef.js","sourceRoot":"","sources":["../../../src/domain/JsonLazyRef.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAExC,uFAAmE;AACnE,oEAA+D;AAE/D,MAAa,WAAW;IAGD;IAFZ,SAAS,GAAG,IAAI,CAAC;IAE1B,YAAqB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEjD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAA,uCAAkB,EAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,OAA2B;QAChC,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAA,sCAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;CACF;AApBD,kCAoBC","sourcesContent":["import {nameOf, Type} from \"@tsed/core\";\nimport {JsonSchemaOptions} from \"../interfaces/JsonSchemaOptions\";\nimport {execMapper} from \"../registries/JsonSchemaMapperContainer\";\nimport {getJsonEntityStore} from \"../utils/getJsonEntityStore\";\n\nexport class JsonLazyRef {\n readonly isLazyRef = true;\n\n constructor(readonly getType: () => Type<any>) {}\n\n get target() {\n return this.getType();\n }\n\n get schema() {\n return getJsonEntityStore(this.getType()).schema;\n }\n\n get name() {\n return nameOf(this.getType());\n }\n\n toJSON(options?: JsonSchemaOptions) {\n return this.getType() && execMapper(\"schema\", this.schema, options);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"JsonMap.js","sourceRoot":"","sources":["../../../src/domain/JsonMap.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC,uFAAmE;AAEnE,MAAa,OAAW,SAAQ,GAAgB;IAG9C,YAAY,MAAkB,EAAE;QAC9B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,MAAwB,EAAE;QAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3C,IAAI,IAAA,iBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,UAA6B,EAAE;QACpC,OAAO,IAAA,sCAAU,EAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAxBD,0BAwBC","sourcesContent":["import {isFunction} from \"@tsed/core\";\nimport {JsonSchemaOptions} from \"../interfaces\";\nimport {execMapper} from \"../registries/JsonSchemaMapperContainer\";\n\nexport class JsonMap<T> extends Map<string, any> {\n [key: string]: any;\n\n constructor(obj: Partial<T> = {}) {\n super();\n\n this.assign(obj);\n }\n\n assign(obj: Partial<T> & any = {}) {\n Object.entries(obj).forEach(([key, value]) => {\n if (isFunction(this[key])) {\n this[key](value);\n } else {\n this.set(key, value);\n }\n });\n\n return this;\n }\n\n toJSON(options: JsonSchemaOptions = {}) {\n return execMapper(\"map\", this, options);\n }\n}\n"]}
1
+ {"version":3,"file":"JsonMap.js","sourceRoot":"","sources":["../../../src/domain/JsonMap.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC,uFAAmE;AAEnE,MAAa,OAAW,SAAQ,GAAgB;IAG9C,YAAY,MAAkB,EAAE;QAC9B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,MAAwB,EAAE;QAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3C,IAAI,IAAA,iBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,UAA6B,EAAE;QACpC,OAAO,IAAA,sCAAU,EAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAxBD,0BAwBC","sourcesContent":["import {isFunction} from \"@tsed/core\";\nimport {JsonSchemaOptions} from \"../interfaces/JsonSchemaOptions\";\nimport {execMapper} from \"../registries/JsonSchemaMapperContainer\";\n\nexport class JsonMap<T> extends Map<string, any> {\n [key: string]: any;\n\n constructor(obj: Partial<T> = {}) {\n super();\n\n this.assign(obj);\n }\n\n assign(obj: Partial<T> & any = {}) {\n Object.entries(obj).forEach(([key, value]) => {\n if (isFunction(this[key])) {\n this[key](value);\n } else {\n this.set(key, value);\n }\n });\n\n return this;\n }\n\n toJSON(options: JsonSchemaOptions = {}) {\n return execMapper(\"map\", this, options);\n }\n}\n"]}
@@ -1,71 +1,79 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsonMethodStore = void 0;
3
+ exports.EndpointMetadata = exports.JsonMethodStore = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@tsed/core");
6
+ const jsonEntityComponent_1 = require("../decorators/config/jsonEntityComponent");
6
7
  const JsonEntityStore_1 = require("./JsonEntityStore");
7
8
  const JsonOperation_1 = require("./JsonOperation");
8
9
  const JsonSchema_1 = require("./JsonSchema");
9
- const jsonEntityComponent_1 = require("../decorators/config/jsonEntityComponent");
10
10
  let JsonMethodStore = class JsonMethodStore extends JsonEntityStore_1.JsonEntityStore {
11
+ parent = JsonEntityStore_1.JsonEntityStore.from(this.target);
12
+ middlewares = [];
13
+ beforeMiddlewares = [];
14
+ afterMiddlewares = [];
15
+ /**
16
+ * Ref to JsonOperation when the decorated object is a method.
17
+ */
18
+ operation = new JsonOperation_1.JsonOperation();
19
+ /**
20
+ * List of children JsonEntityStore (properties or methods or params)
21
+ */
22
+ children = new Map();
11
23
  constructor(options) {
12
24
  super({
13
25
  store: core_1.Store.fromMethod(options.target, options.propertyKey),
14
26
  descriptor: (0, core_1.descriptorOf)(options.target, options.propertyKey),
15
27
  ...options
16
28
  });
17
- this.parent = JsonEntityStore_1.JsonEntityStore.from(this.target);
18
- this.middlewares = [];
19
- this.beforeMiddlewares = [];
20
- this.afterMiddlewares = [];
21
- /**
22
- * Ref to JsonOperation when the decorated object is a method.
23
- */
24
- this.operation = new JsonOperation_1.JsonOperation();
25
- /**
26
- * List of children JsonEntityStore (properties or methods or params)
27
- */
28
- this.children = new Map();
29
29
  const { beforeMiddlewares = [], middlewares = [], afterMiddlewares = [] } = options;
30
30
  this.after(afterMiddlewares);
31
31
  this.before(beforeMiddlewares);
32
32
  this.use(middlewares);
33
33
  }
34
+ get params() {
35
+ return this.parameters;
36
+ }
37
+ get view() {
38
+ return this.store.get("view");
39
+ }
40
+ set view(view) {
41
+ this.store.set("view", view);
42
+ }
43
+ get acceptMimes() {
44
+ return this.store.get("acceptMimes", []);
45
+ }
46
+ set acceptMimes(mimes) {
47
+ this.store.set("acceptMimes", mimes);
48
+ }
34
49
  get parameters() {
35
50
  return [...this.children.values()];
36
51
  }
37
52
  get operationPaths() {
38
53
  return this.operation.operationPaths;
39
54
  }
40
- getResponseOptions(status, contentType = "application/json") {
55
+ /**
56
+ * Get an endpoint.
57
+ * @param target
58
+ * @param propertyKey
59
+ * @param descriptor
60
+ */
61
+ static get(target, propertyKey, descriptor) {
62
+ descriptor = descriptor || (0, core_1.descriptorOf)((0, core_1.prototypeOf)(target), propertyKey);
63
+ return JsonEntityStore_1.JsonEntityStore.from((0, core_1.prototypeOf)(target), propertyKey, descriptor);
64
+ }
65
+ getResponseOptions(status, { contentType = "application/json", includes } = {}) {
41
66
  const media = this.operation.getResponseOf(status).getMedia(contentType, false);
42
67
  if (media && media.has("schema")) {
43
68
  const schema = media.get("schema");
44
- return { type: schema.getComputedItemType(), groups: media.groups };
69
+ let groups = media.groups;
70
+ if (includes && media.allowedGroups?.size) {
71
+ groups = [...(groups || []), ...includes.filter((include) => media.allowedGroups.has(include))];
72
+ }
73
+ return { type: schema.getComputedItemType(), groups };
45
74
  }
46
75
  return { type: this.type };
47
76
  }
48
- build() {
49
- if (!this._type) {
50
- let type = core_1.Metadata.getReturnType(this.target, this.propertyKey);
51
- type = (0, core_1.isPromise)(type) ? undefined : type;
52
- this.buildType(type);
53
- }
54
- this._type = this._type || Object;
55
- this.parent.children.set(this.propertyName, this);
56
- if ((0, core_1.isCollection)(this._type)) {
57
- this.collectionType = this._type;
58
- // @ts-ignore
59
- delete this._type;
60
- }
61
- this._schema = JsonSchema_1.JsonSchema.from({
62
- type: this.collectionType || this.type
63
- });
64
- if (this.collectionType) {
65
- this._schema.itemSchema(this.type);
66
- }
67
- this.parent.schema.addProperty(this.propertyName, this.schema);
68
- }
69
77
  /**
70
78
  * Append middlewares to the beforeMiddlewares list.
71
79
  * @param args
@@ -92,10 +100,48 @@ let JsonMethodStore = class JsonMethodStore extends JsonEntityStore_1.JsonEntity
92
100
  this.middlewares = this.middlewares.concat(args).filter(core_1.isFunction);
93
101
  return this;
94
102
  }
103
+ /**
104
+ * Find the value at the controller level. Let this value be extended or overridden by the endpoint itself.
105
+ *
106
+ * @param key
107
+ * @returns {any}
108
+ */
109
+ get(key) {
110
+ const ctrlValue = core_1.Store.from(this.target).get(key);
111
+ return (0, core_1.deepMerge)(ctrlValue, this.store.get(key));
112
+ }
113
+ getParamTypes() {
114
+ return [...this.children.values()].reduce((obj, item) => ({
115
+ ...obj,
116
+ [item.paramType]: true
117
+ }), {});
118
+ }
119
+ build() {
120
+ if (!this._type) {
121
+ let type = core_1.Metadata.getReturnType(this.target, this.propertyKey);
122
+ type = (0, core_1.isPromise)(type) ? undefined : type;
123
+ this.buildType(type);
124
+ }
125
+ this._type = this._type || Object;
126
+ this.parent.children.set(this.propertyName, this);
127
+ if ((0, core_1.isCollection)(this._type)) {
128
+ this.collectionType = this._type;
129
+ // @ts-ignore
130
+ delete this._type;
131
+ }
132
+ this._schema = JsonSchema_1.JsonSchema.from({
133
+ type: this.collectionType || this.type
134
+ });
135
+ if (this.collectionType) {
136
+ this._schema.itemSchema(this.type);
137
+ }
138
+ this.parent.schema.addProperty(this.propertyName, this.schema);
139
+ }
95
140
  };
96
- JsonMethodStore = (0, tslib_1.__decorate)([
141
+ JsonMethodStore = tslib_1.__decorate([
97
142
  (0, jsonEntityComponent_1.JsonEntityComponent)(core_1.DecoratorTypes.METHOD),
98
- (0, tslib_1.__metadata)("design:paramtypes", [Object])
143
+ tslib_1.__metadata("design:paramtypes", [Object])
99
144
  ], JsonMethodStore);
100
145
  exports.JsonMethodStore = JsonMethodStore;
146
+ exports.EndpointMetadata = JsonMethodStore;
101
147
  //# sourceMappingURL=JsonMethodStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonMethodStore.js","sourceRoot":"","sources":["../../../src/domain/JsonMethodStore.ts"],"names":[],"mappings":"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","sourcesContent":["import {DecoratorTypes, descriptorOf, isCollection, isFunction, isPromise, Metadata, Store} from \"@tsed/core\";\nimport {JsonEntityStore, JsonEntityStoreOptions} from \"./JsonEntityStore\";\nimport {JsonOperation} from \"./JsonOperation\";\nimport {JsonSchema} from \"./JsonSchema\";\nimport type {JsonParameterStore} from \"./JsonParameterStore\";\nimport type {JsonClassStore} from \"./JsonClassStore\";\nimport {JsonEntityComponent} from \"../decorators/config/jsonEntityComponent\";\n\n@JsonEntityComponent(DecoratorTypes.METHOD)\nexport class JsonMethodStore extends JsonEntityStore {\n readonly parent: JsonClassStore = JsonEntityStore.from(this.target);\n public middlewares: any[] = [];\n public beforeMiddlewares: any[] = [];\n public afterMiddlewares: any[] = [];\n\n constructor(options: JsonEntityStoreOptions) {\n super({\n store: Store.fromMethod(options.target, options.propertyKey!),\n descriptor: descriptorOf(options.target, options.propertyKey!),\n ...options\n });\n\n const {beforeMiddlewares = [], middlewares = [], afterMiddlewares = []} = options;\n\n this.after(afterMiddlewares);\n this.before(beforeMiddlewares);\n this.use(middlewares);\n }\n /**\n * Ref to JsonOperation when the decorated object is a method.\n */\n readonly operation: JsonOperation = new JsonOperation();\n /**\n * List of children JsonEntityStore (properties or methods or params)\n */\n readonly children: Map<string | number, JsonParameterStore> = new Map();\n\n get parameters(): JsonParameterStore[] {\n return [...this.children.values()] as JsonParameterStore[];\n }\n\n get operationPaths() {\n return this.operation.operationPaths;\n }\n\n getResponseOptions(status: number, contentType: string = \"application/json\"): undefined | any {\n const media = this.operation.getResponseOf(status).getMedia(contentType, false);\n\n if (media && media.has(\"schema\")) {\n const schema = media.get(\"schema\") as JsonSchema;\n\n return {type: schema.getComputedItemType(), groups: media.groups};\n }\n\n return {type: this.type};\n }\n\n protected build() {\n if (!this._type) {\n let type: any = Metadata.getReturnType(this.target, this.propertyKey);\n type = isPromise(type) ? undefined : type;\n\n this.buildType(type);\n }\n\n this._type = this._type || Object;\n\n this.parent.children.set(this.propertyName, this);\n\n if (isCollection(this._type)) {\n this.collectionType = this._type;\n // @ts-ignore\n delete this._type;\n }\n\n this._schema = JsonSchema.from({\n type: this.collectionType || this.type\n });\n\n if (this.collectionType) {\n this._schema.itemSchema(this.type);\n }\n\n this.parent.schema.addProperty(this.propertyName, this.schema);\n }\n\n /**\n * Append middlewares to the beforeMiddlewares list.\n * @param args\n * @returns {EndpointMetadata}\n */\n public before(args: Function[]): this {\n this.beforeMiddlewares = this.beforeMiddlewares.concat(args).filter(isFunction);\n\n return this;\n }\n\n /**\n * Append middlewares to the afterMiddlewares list.\n * @param args\n * @returns {EndpointMetadata}\n */\n public after(args: Function[]): this {\n this.afterMiddlewares = this.afterMiddlewares.concat(args).filter(isFunction);\n\n return this;\n }\n\n /**\n * Store all arguments collected via Annotation.\n * @param args\n */\n public use(args: Function[]) {\n this.middlewares = this.middlewares.concat(args).filter(isFunction);\n\n return this;\n }\n}\n"]}
1
+ {"version":3,"file":"JsonMethodStore.js","sourceRoot":"","sources":["../../../src/domain/JsonMethodStore.ts"],"names":[],"mappings":"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","sourcesContent":["import {DecoratorTypes, deepMerge, descriptorOf, isCollection, isFunction, isPromise, Metadata, prototypeOf, Store, Type} from \"@tsed/core\";\nimport {JsonEntityComponent} from \"../decorators/config/jsonEntityComponent\";\nimport type {JsonClassStore} from \"./JsonClassStore\";\nimport {JsonEntityStore, JsonEntityStoreOptions} from \"./JsonEntityStore\";\nimport {JsonOperation} from \"./JsonOperation\";\nimport type {JsonParameterStore} from \"./JsonParameterStore\";\nimport {JsonSchema} from \"./JsonSchema\";\n\nexport interface JsonViewOptions {\n path: string;\n options: any;\n}\n\nexport interface JsonRedirectOptions {\n status: number | undefined;\n url: string;\n}\n\n@JsonEntityComponent(DecoratorTypes.METHOD)\nexport class JsonMethodStore extends JsonEntityStore {\n readonly parent: JsonClassStore = JsonEntityStore.from(this.target);\n public middlewares: any[] = [];\n public beforeMiddlewares: any[] = [];\n public afterMiddlewares: any[] = [];\n /**\n * Ref to JsonOperation when the decorated object is a method.\n */\n readonly operation: JsonOperation = new JsonOperation();\n /**\n * List of children JsonEntityStore (properties or methods or params)\n */\n readonly children: Map<string | number, JsonParameterStore> = new Map();\n\n constructor(options: JsonEntityStoreOptions) {\n super({\n store: Store.fromMethod(options.target, options.propertyKey!),\n descriptor: descriptorOf(options.target, options.propertyKey!),\n ...options\n });\n\n const {beforeMiddlewares = [], middlewares = [], afterMiddlewares = []} = options;\n\n this.after(afterMiddlewares);\n this.before(beforeMiddlewares);\n this.use(middlewares);\n }\n\n get params(): JsonParameterStore[] {\n return this.parameters;\n }\n\n get view(): JsonViewOptions {\n return this.store.get(\"view\") as JsonViewOptions;\n }\n\n set view(view: JsonViewOptions) {\n this.store.set(\"view\", view);\n }\n\n get acceptMimes(): string[] {\n return this.store.get<string[]>(\"acceptMimes\", []);\n }\n\n set acceptMimes(mimes: string[]) {\n this.store.set(\"acceptMimes\", mimes);\n }\n\n get parameters(): JsonParameterStore[] {\n return [...this.children.values()] as JsonParameterStore[];\n }\n\n get operationPaths() {\n return this.operation.operationPaths;\n }\n\n /**\n * Get an endpoint.\n * @param target\n * @param propertyKey\n * @param descriptor\n */\n static get(target: Type<any>, propertyKey: string | symbol, descriptor?: PropertyDescriptor): JsonMethodStore {\n descriptor = descriptor || descriptorOf(prototypeOf(target), propertyKey);\n\n return JsonEntityStore.from<JsonMethodStore>(prototypeOf(target), propertyKey, descriptor);\n }\n\n getResponseOptions(\n status: number,\n {contentType = \"application/json\", includes}: {contentType?: string; includes?: string[]} = {}\n ): undefined | any {\n const media = this.operation.getResponseOf(status).getMedia(contentType, false);\n\n if (media && media.has(\"schema\")) {\n const schema = media.get(\"schema\") as JsonSchema;\n let groups = media.groups;\n\n if (includes && media.allowedGroups?.size) {\n groups = [...(groups || []), ...includes.filter((include) => media.allowedGroups!.has(include))];\n }\n\n return {type: schema.getComputedItemType(), groups};\n }\n\n return {type: this.type};\n }\n\n /**\n * Append middlewares to the beforeMiddlewares list.\n * @param args\n * @returns {EndpointMetadata}\n */\n public before(args: Function[]): this {\n this.beforeMiddlewares = this.beforeMiddlewares.concat(args).filter(isFunction);\n\n return this;\n }\n\n /**\n * Append middlewares to the afterMiddlewares list.\n * @param args\n * @returns {EndpointMetadata}\n */\n public after(args: Function[]): this {\n this.afterMiddlewares = this.afterMiddlewares.concat(args).filter(isFunction);\n\n return this;\n }\n\n /**\n * Store all arguments collected via Annotation.\n * @param args\n */\n public use(args: Function[]) {\n this.middlewares = this.middlewares.concat(args).filter(isFunction);\n\n return this;\n }\n\n /**\n * Find the value at the controller level. Let this value be extended or overridden by the endpoint itself.\n *\n * @param key\n * @returns {any}\n */\n public get<T = any>(key: any): T {\n const ctrlValue = Store.from(this.target).get(key);\n\n return deepMerge<T>(ctrlValue, this.store.get(key));\n }\n\n public getParamTypes(): Record<string, boolean> {\n return [...this.children.values()].reduce(\n (obj, item) => ({\n ...obj,\n [item.paramType]: true\n }),\n {}\n );\n }\n\n protected build() {\n if (!this._type) {\n let type: any = Metadata.getReturnType(this.target, this.propertyKey);\n type = isPromise(type) ? undefined : type;\n\n this.buildType(type);\n }\n\n this._type = this._type || Object;\n\n this.parent.children.set(this.propertyName, this);\n\n if (isCollection(this._type)) {\n this.collectionType = this._type;\n // @ts-ignore\n delete this._type;\n }\n\n this._schema = JsonSchema.from({\n type: this.collectionType || this.type\n });\n\n if (this.collectionType) {\n this._schema.itemSchema(this.type);\n }\n\n this.parent.schema.addProperty(this.propertyName, this.schema);\n }\n}\n\n/**\n * EndpointMetadata contains metadata about a controller and his method.\n * Each annotation (@Get, @Body...) attached to a method are stored into endpoint.\n * EndpointMetadata convert this metadata to an array which contain arguments to call an Express method.\n *\n * Example :\n *```typescript\n * @Controller(\"/my-path\")\n * provide MyClass {\n *\n * @Get(\"/\")\n * @Authenticated()\n * public myMethod(){}\n * }\n *```\n *\n * @alias JsonMethodStore\n */\nexport type EndpointMetadata = JsonMethodStore;\nexport const EndpointMetadata = JsonMethodStore;\n"]}
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
- var _JsonOperation_status, _JsonOperation_redirection;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.JsonOperation = void 0;
5
- const tslib_1 = require("tslib");
6
4
  const core_1 = require("@tsed/core");
7
5
  const httpStatusMessages_1 = require("../constants/httpStatusMessages");
8
6
  const isSuccessStatus_1 = require("../utils/isSuccessStatus");
@@ -11,19 +9,18 @@ const JsonParameterTypes_1 = require("./JsonParameterTypes");
11
9
  const JsonRequestBody_1 = require("./JsonRequestBody");
12
10
  const JsonResponse_1 = require("./JsonResponse");
13
11
  const JsonSchema_1 = require("./JsonSchema");
14
- const SpecTypes_1 = require("./SpecTypes");
15
12
  class JsonOperation extends JsonMap_1.JsonMap {
13
+ operationPaths = new Map();
14
+ #status;
15
+ #redirection = false;
16
16
  constructor(obj = {}) {
17
17
  super({ parameters: [], responses: new JsonMap_1.JsonMap(), ...obj });
18
- this.operationPaths = new Map();
19
- _JsonOperation_status.set(this, void 0);
20
- _JsonOperation_redirection.set(this, false);
21
18
  }
22
19
  get response() {
23
20
  return this.getResponses().get(this.getStatus().toString());
24
21
  }
25
22
  get status() {
26
- return (0, tslib_1.__classPrivateFieldGet)(this, _JsonOperation_status, "f");
23
+ return this.#status;
27
24
  }
28
25
  tags(tags) {
29
26
  super.set("tags", tags);
@@ -46,27 +43,27 @@ class JsonOperation extends JsonMap_1.JsonMap {
46
43
  return this;
47
44
  }
48
45
  defaultStatus(status) {
49
- (0, tslib_1.__classPrivateFieldSet)(this, _JsonOperation_status, status, "f");
46
+ this.#status = status;
50
47
  return this;
51
48
  }
52
49
  getStatus() {
53
- return (0, tslib_1.__classPrivateFieldGet)(this, _JsonOperation_status, "f") || 200;
50
+ return this.#status || 200;
54
51
  }
55
52
  setRedirection(status = 302) {
56
- (0, tslib_1.__classPrivateFieldSet)(this, _JsonOperation_redirection, true, "f");
57
- (0, tslib_1.__classPrivateFieldSet)(this, _JsonOperation_status, status, "f");
53
+ this.#redirection = true;
54
+ this.#status = status;
58
55
  return this;
59
56
  }
60
57
  isRedirection(status) {
61
- if ((0, tslib_1.__classPrivateFieldGet)(this, _JsonOperation_redirection, "f")) {
58
+ if (this.#redirection) {
62
59
  if (status) {
63
60
  return (0, isSuccessStatus_1.isRedirectionStatus)(status);
64
61
  }
65
62
  }
66
- return (0, tslib_1.__classPrivateFieldGet)(this, _JsonOperation_redirection, "f");
63
+ return this.#redirection;
67
64
  }
68
65
  addResponse(statusCode, response) {
69
- if (((0, isSuccessStatus_1.isSuccessStatus)(statusCode) || (0, isSuccessStatus_1.isRedirectionStatus)(statusCode)) && !(0, tslib_1.__classPrivateFieldGet)(this, _JsonOperation_status, "f")) {
66
+ if (((0, isSuccessStatus_1.isSuccessStatus)(statusCode) || (0, isSuccessStatus_1.isRedirectionStatus)(statusCode)) && !this.#status) {
70
67
  const res = this.getResponseOf(200);
71
68
  this.getResponses().set(statusCode.toString(), res).delete("200");
72
69
  this.defaultStatus(Number(statusCode));
@@ -179,38 +176,22 @@ class JsonOperation extends JsonMap_1.JsonMap {
179
176
  }
180
177
  if (bodyParameters.length) {
181
178
  const parameter = buildSchemaFromBodyParameters(bodyParameters, options);
182
- if (options.specType === SpecTypes_1.SpecTypes.OPENAPI) {
183
- operation.requestBody = toRequestBody(this, parameter).toJSON(options);
184
- }
185
- else {
186
- operation.parameters.push(toJsonParameter(parameter));
187
- }
188
- }
189
- if (options.specType === SpecTypes_1.SpecTypes.OPENAPI) {
190
- delete operation.consumes;
191
- delete operation.produces;
179
+ operation.requestBody = toRequestBody(this, parameter).toJSON(options);
192
180
  }
181
+ delete operation.consumes;
182
+ delete operation.produces;
193
183
  return operation;
194
184
  }
195
185
  }
196
186
  exports.JsonOperation = JsonOperation;
197
- _JsonOperation_status = new WeakMap(), _JsonOperation_redirection = new WeakMap();
198
187
  function toRequestBody(operation, { schema, in: _, ...props }) {
199
- var _a;
200
188
  const requestBody = new JsonRequestBody_1.JsonRequestBody(props);
201
- const consumes = ((_a = operation.get("consumes")) === null || _a === void 0 ? void 0 : _a.length) ? operation.get("consumes") : ["application/json"];
189
+ const consumes = operation.get("consumes")?.length ? operation.get("consumes") : ["application/json"];
202
190
  consumes.forEach((consume) => {
203
191
  requestBody.addContent(consume, schema);
204
192
  });
205
193
  return requestBody;
206
194
  }
207
- function toJsonParameter(parameter) {
208
- return {
209
- in: JsonParameterTypes_1.JsonParameterTypes.BODY,
210
- name: JsonParameterTypes_1.JsonParameterTypes.BODY,
211
- ...parameter
212
- };
213
- }
214
195
  function buildSchemaFromBodyParameters(parameters, options) {
215
196
  let schema = new JsonSchema_1.JsonSchema();
216
197
  const props = {};
@@ -1 +1 @@
1
- {"version":3,"file":"JsonOperation.js","sourceRoot":"","sources":["../../../src/domain/JsonOperation.ts"],"names":[],"mappings":"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","sourcesContent":["import {deepMerge, uniq, uniqBy} from \"@tsed/core\";\nimport {OpenSpecSecurity, OpenSpecTag, OS3Operation} from \"@tsed/openspec\";\nimport {getStatusMessage} from \"../constants/httpStatusMessages\";\nimport {JsonHeader, JsonSchemaOptions} from \"../interfaces\";\nimport {isRedirectionStatus, isSuccessStatus} from \"../utils/isSuccessStatus\";\nimport {JsonMap} from \"./JsonMap\";\nimport {JsonParameter} from \"./JsonParameter\";\nimport {isParameterType, JsonParameterTypes} from \"./JsonParameterTypes\";\nimport {JsonRequestBody} from \"./JsonRequestBody\";\nimport {JsonResponse} from \"./JsonResponse\";\nimport {JsonSchema} from \"./JsonSchema\";\nimport {SpecTypes} from \"./SpecTypes\";\n\nexport interface JsonMethodPath {\n path: string | RegExp;\n method: string;\n isFinal?: boolean;\n\n [key: string]: any;\n}\n\nexport interface JsonOperationOptions extends OS3Operation<JsonSchema, JsonParameter, JsonMap<JsonResponse>> {\n consumes: string[];\n produces: string[];\n}\n\nexport class JsonOperation extends JsonMap<JsonOperationOptions> {\n readonly operationPaths: Map<string, JsonMethodPath> = new Map();\n #status: number;\n #redirection: boolean = false;\n\n constructor(obj: Partial<JsonOperationOptions> = {}) {\n super({parameters: [], responses: new JsonMap(), ...obj});\n }\n\n get response(): JsonResponse | undefined {\n return this.getResponses().get(this.getStatus().toString());\n }\n\n get status() {\n return this.#status;\n }\n\n tags(tags: OpenSpecTag[]): this {\n super.set(\"tags\", tags);\n\n return this;\n }\n\n addTags(tags: OpenSpecTag[]) {\n tags = uniqBy([...(this.get(\"tags\") || []), ...tags], \"name\");\n\n return this.tags(tags);\n }\n\n summary(summary: string): this {\n super.set(\"summary\", summary);\n\n return this;\n }\n\n operationId(operationId: string): this {\n this.set(\"operationId\", operationId);\n\n return this;\n }\n\n responses(responses: JsonMap<any>): this {\n this.set(\"responses\", responses);\n\n return this;\n }\n\n defaultStatus(status: number) {\n this.#status = status;\n\n return this;\n }\n\n getStatus() {\n return this.#status || 200;\n }\n\n setRedirection(status = 302) {\n this.#redirection = true;\n this.#status = status;\n return this;\n }\n\n isRedirection(status?: number) {\n if (this.#redirection) {\n if (status) {\n return isRedirectionStatus(status);\n }\n }\n\n return this.#redirection;\n }\n\n addResponse(statusCode: string | number, response: JsonResponse) {\n if ((isSuccessStatus(statusCode) || isRedirectionStatus(statusCode)) && !this.#status) {\n const res = this.getResponseOf(200);\n\n this.getResponses().set(statusCode.toString(), res).delete(\"200\");\n\n this.defaultStatus(Number(statusCode));\n }\n\n const currentCode = statusCode === \"default\" ? this.getStatus().toString() : statusCode.toString();\n const currentResponse = this.getResponses().get(currentCode);\n\n if (!currentResponse) {\n response.status = Number(currentCode);\n this.getResponses().set(currentCode, response);\n } else {\n response.forEach((value, key) => {\n if (![\"content\"].includes(key)) {\n currentResponse.set(key, deepMerge(currentResponse.get(key), value));\n }\n });\n currentResponse.status = Number(currentCode);\n }\n\n return this;\n }\n\n getResponses() {\n return this.get(\"responses\") as JsonMap<JsonResponse>;\n }\n\n getResponseOf(status: number | string): JsonResponse {\n return (status === \"default\" ? this.response : this.getResponses().get(String(status))) || new JsonResponse();\n }\n\n ensureResponseOf(status: number | string): JsonResponse {\n this.addResponse(status, this.getResponseOf(status));\n return this.getResponseOf(status);\n }\n\n getHeadersOf(status: number): Record<string, JsonHeader & {example: string}> {\n return this.getResponseOf(status).get(\"headers\") || {};\n }\n\n getContentTypeOf(status: number): any {\n return [...this.getResponseOf(status).get(\"content\").keys()].slice(-1)[0];\n }\n\n security(security: OpenSpecSecurity): this {\n this.set(\"security\", security);\n\n return this;\n }\n\n addSecurityScopes(name: string, scopes: string[]) {\n const security = this.get(\"security\") || {};\n security[name] = uniq([...(security[name] || []), ...scopes]);\n\n return this.security(security);\n }\n\n description(description: string): this {\n super.set(\"description\", description);\n\n return this;\n }\n\n deprecated(deprecated: boolean): this {\n super.set(\"deprecated\", deprecated);\n\n return this;\n }\n\n parameters(parameters: JsonParameter[]): this {\n super.set(\"parameters\", parameters);\n\n return this;\n }\n\n addParameter(index: number, parameter: JsonParameter) {\n if (index === -1) {\n index = this.get(\"parameters\").length;\n }\n this.get(\"parameters\")[index] = parameter;\n }\n\n consumes(consumes: string[]): this {\n super.set(\"consumes\", consumes);\n\n return this;\n }\n\n produces(produces: string[]): this {\n super.set(\"produces\", produces);\n\n return this;\n }\n\n addProduce(produce: string) {\n const produces = uniq([].concat(this.get(\"produces\"), produce as never)).filter(Boolean);\n\n this.set(\"produces\", produces);\n }\n\n addOperationPath(method: string, path: string | RegExp, options: any = {}) {\n this.operationPaths.set(String(method) + String(path), {\n ...options,\n method,\n path\n });\n\n return this;\n }\n\n toJSON(options: JsonSchemaOptions = {}): any {\n const operation = super.toJSON({...options, ignore: [\"parameters\"]});\n const bodyParameters: JsonParameter[] = [];\n const parameters: any[] = [];\n\n if (operation.security) {\n operation.security = [].concat(operation.security);\n }\n\n this.get(\"parameters\").forEach((parameter: JsonParameter) => {\n if (!isParameterType(this.get(\"in\"))) {\n if (parameter.get(\"in\")) {\n if ([JsonParameterTypes.BODY, JsonParameterTypes.FILES].includes(parameter.get(\"in\"))) {\n bodyParameters.push(parameter);\n } else {\n parameters.push(...[].concat(parameter.toJSON(options)));\n }\n }\n }\n });\n\n operation.parameters = parameters.filter(Boolean);\n\n if (this.get(\"responses\").size === 0) {\n operation.responses = {\n \"200\": {\n description: getStatusMessage(200)\n }\n };\n }\n\n if (bodyParameters.length) {\n const parameter = buildSchemaFromBodyParameters(bodyParameters, options);\n if (options.specType === SpecTypes.OPENAPI) {\n operation.requestBody = toRequestBody(this, parameter).toJSON(options);\n } else {\n operation.parameters.push(toJsonParameter(parameter));\n }\n }\n\n if (options.specType === SpecTypes.OPENAPI) {\n delete operation.consumes;\n delete operation.produces;\n }\n\n return operation;\n }\n}\n\nfunction toRequestBody(operation: JsonOperation, {schema, in: _, ...props}: any) {\n const requestBody = new JsonRequestBody(props);\n\n const consumes = operation.get(\"consumes\")?.length ? operation.get(\"consumes\") : [\"application/json\"];\n\n consumes.forEach((consume: string) => {\n requestBody.addContent(consume, schema);\n });\n\n return requestBody;\n}\n\nfunction toJsonParameter(parameter: any) {\n return {\n in: JsonParameterTypes.BODY,\n name: JsonParameterTypes.BODY,\n ...parameter\n };\n}\n\nfunction buildSchemaFromBodyParameters(parameters: JsonParameter[], options: JsonSchemaOptions) {\n let schema = new JsonSchema();\n const props: any = {};\n const refs: JsonSchema[] = [];\n let propsLength = 0;\n\n parameters.forEach((parameter) => {\n const name = parameter.getName();\n\n Array.from(parameter.entries())\n .filter(([key]) => ![\"in\", \"name\"].includes(key))\n .forEach(([key, value]) => {\n if (props[key] === undefined) {\n props[key] = value;\n }\n });\n\n const jsonParameter = parameter.toJSON(options);\n\n if (name) {\n schema.addProperty(\n name,\n jsonParameter.schema || {\n type: jsonParameter.type\n }\n );\n\n if (parameter.get(\"required\")) {\n schema.addRequired(name);\n }\n\n propsLength++;\n } else {\n refs.push(jsonParameter);\n }\n });\n\n if (!propsLength) {\n if (refs.length === 1) {\n return refs[0];\n }\n }\n\n schema.type(\"object\");\n\n return {schema: schema.toJSON(options), required: false, ...props};\n}\n"]}
1
+ {"version":3,"file":"JsonOperation.js","sourceRoot":"","sources":["../../../src/domain/JsonOperation.ts"],"names":[],"mappings":"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","sourcesContent":["import {deepMerge, uniq, uniqBy} from \"@tsed/core\";\nimport {OpenSpecSecurity, OpenSpecTag, OS3Operation} from \"@tsed/openspec\";\nimport {getStatusMessage} from \"../constants/httpStatusMessages\";\nimport {JsonHeader} from \"../interfaces/JsonOpenSpec\";\nimport {JsonSchemaOptions} from \"../interfaces/JsonSchemaOptions\";\nimport {isRedirectionStatus, isSuccessStatus} from \"../utils/isSuccessStatus\";\nimport {JsonMap} from \"./JsonMap\";\nimport {JsonParameter} from \"./JsonParameter\";\nimport {isParameterType, JsonParameterTypes} from \"./JsonParameterTypes\";\nimport {JsonRequestBody} from \"./JsonRequestBody\";\nimport {JsonResponse} from \"./JsonResponse\";\nimport {JsonSchema} from \"./JsonSchema\";\n\nexport interface JsonMethodPath {\n path: string | RegExp;\n method: string;\n\n [key: string]: any;\n}\n\nexport interface JsonOperationOptions extends OS3Operation<JsonSchema, JsonParameter, JsonMap<JsonResponse>> {\n consumes: string[];\n produces: string[];\n}\n\nexport class JsonOperation extends JsonMap<JsonOperationOptions> {\n readonly operationPaths: Map<string, JsonMethodPath> = new Map();\n #status: number;\n #redirection: boolean = false;\n\n constructor(obj: Partial<JsonOperationOptions> = {}) {\n super({parameters: [], responses: new JsonMap(), ...obj});\n }\n\n get response(): JsonResponse | undefined {\n return this.getResponses().get(this.getStatus().toString());\n }\n\n get status() {\n return this.#status;\n }\n\n tags(tags: OpenSpecTag[]): this {\n super.set(\"tags\", tags);\n\n return this;\n }\n\n addTags(tags: OpenSpecTag[]) {\n tags = uniqBy([...(this.get(\"tags\") || []), ...tags], \"name\");\n\n return this.tags(tags);\n }\n\n summary(summary: string): this {\n super.set(\"summary\", summary);\n\n return this;\n }\n\n operationId(operationId: string): this {\n this.set(\"operationId\", operationId);\n\n return this;\n }\n\n responses(responses: JsonMap<any>): this {\n this.set(\"responses\", responses);\n\n return this;\n }\n\n defaultStatus(status: number) {\n this.#status = status;\n\n return this;\n }\n\n getStatus() {\n return this.#status || 200;\n }\n\n setRedirection(status = 302) {\n this.#redirection = true;\n this.#status = status;\n return this;\n }\n\n isRedirection(status?: number) {\n if (this.#redirection) {\n if (status) {\n return isRedirectionStatus(status);\n }\n }\n\n return this.#redirection;\n }\n\n addResponse(statusCode: string | number, response: JsonResponse) {\n if ((isSuccessStatus(statusCode) || isRedirectionStatus(statusCode)) && !this.#status) {\n const res = this.getResponseOf(200);\n\n this.getResponses().set(statusCode.toString(), res).delete(\"200\");\n\n this.defaultStatus(Number(statusCode));\n }\n\n const currentCode = statusCode === \"default\" ? this.getStatus().toString() : statusCode.toString();\n const currentResponse = this.getResponses().get(currentCode);\n\n if (!currentResponse) {\n response.status = Number(currentCode);\n this.getResponses().set(currentCode, response);\n } else {\n response.forEach((value, key) => {\n if (![\"content\"].includes(key)) {\n currentResponse.set(key, deepMerge(currentResponse.get(key), value));\n }\n });\n currentResponse.status = Number(currentCode);\n }\n\n return this;\n }\n\n getResponses() {\n return this.get(\"responses\") as JsonMap<JsonResponse>;\n }\n\n getResponseOf(status: number | string): JsonResponse {\n return (status === \"default\" ? this.response : this.getResponses().get(String(status))) || new JsonResponse();\n }\n\n ensureResponseOf(status: number | string): JsonResponse {\n this.addResponse(status, this.getResponseOf(status));\n return this.getResponseOf(status);\n }\n\n getHeadersOf(status: number): Record<string, JsonHeader & {example: string}> {\n return this.getResponseOf(status).get(\"headers\") || {};\n }\n\n getContentTypeOf(status: number): any {\n return [...this.getResponseOf(status).get(\"content\").keys()].slice(-1)[0];\n }\n\n security(security: OpenSpecSecurity): this {\n this.set(\"security\", security);\n\n return this;\n }\n\n addSecurityScopes(name: string, scopes: string[]) {\n const security = this.get(\"security\") || {};\n security[name] = uniq([...(security[name] || []), ...scopes]);\n\n return this.security(security);\n }\n\n description(description: string): this {\n super.set(\"description\", description);\n\n return this;\n }\n\n deprecated(deprecated: boolean): this {\n super.set(\"deprecated\", deprecated);\n\n return this;\n }\n\n parameters(parameters: JsonParameter[]): this {\n super.set(\"parameters\", parameters);\n\n return this;\n }\n\n addParameter(index: number, parameter: JsonParameter) {\n if (index === -1) {\n index = this.get(\"parameters\").length;\n }\n this.get(\"parameters\")[index] = parameter;\n }\n\n consumes(consumes: string[]): this {\n super.set(\"consumes\", consumes);\n\n return this;\n }\n\n produces(produces: string[]): this {\n super.set(\"produces\", produces);\n\n return this;\n }\n\n addProduce(produce: string) {\n const produces = uniq([].concat(this.get(\"produces\"), produce as never)).filter(Boolean);\n\n this.set(\"produces\", produces);\n }\n\n addOperationPath(method: string, path: string | RegExp, options: any = {}) {\n this.operationPaths.set(String(method) + String(path), {\n ...options,\n method,\n path\n });\n\n return this;\n }\n\n toJSON(options: JsonSchemaOptions = {}): any {\n const operation = super.toJSON({...options, ignore: [\"parameters\"]});\n const bodyParameters: JsonParameter[] = [];\n const parameters: any[] = [];\n\n if (operation.security) {\n operation.security = [].concat(operation.security);\n }\n\n this.get(\"parameters\").forEach((parameter: JsonParameter) => {\n if (!isParameterType(this.get(\"in\"))) {\n if (parameter.get(\"in\")) {\n if ([JsonParameterTypes.BODY, JsonParameterTypes.FILES].includes(parameter.get(\"in\"))) {\n bodyParameters.push(parameter);\n } else {\n parameters.push(...[].concat(parameter.toJSON(options)));\n }\n }\n }\n });\n\n operation.parameters = parameters.filter(Boolean);\n\n if (this.get(\"responses\").size === 0) {\n operation.responses = {\n \"200\": {\n description: getStatusMessage(200)\n }\n };\n }\n\n if (bodyParameters.length) {\n const parameter = buildSchemaFromBodyParameters(bodyParameters, options);\n operation.requestBody = toRequestBody(this, parameter).toJSON(options);\n }\n\n delete operation.consumes;\n delete operation.produces;\n\n return operation;\n }\n}\n\nfunction toRequestBody(operation: JsonOperation, {schema, in: _, ...props}: any) {\n const requestBody = new JsonRequestBody(props);\n\n const consumes = operation.get(\"consumes\")?.length ? operation.get(\"consumes\") : [\"application/json\"];\n\n consumes.forEach((consume: string) => {\n requestBody.addContent(consume, schema);\n });\n\n return requestBody;\n}\n\nfunction buildSchemaFromBodyParameters(parameters: JsonParameter[], options: JsonSchemaOptions) {\n let schema = new JsonSchema();\n const props: any = {};\n const refs: JsonSchema[] = [];\n let propsLength = 0;\n\n parameters.forEach((parameter) => {\n const name = parameter.getName();\n\n Array.from(parameter.entries())\n .filter(([key]) => ![\"in\", \"name\"].includes(key))\n .forEach(([key, value]) => {\n if (props[key] === undefined) {\n props[key] = value;\n }\n });\n\n const jsonParameter = parameter.toJSON(options);\n\n if (name) {\n schema.addProperty(\n name,\n jsonParameter.schema || {\n type: jsonParameter.type\n }\n );\n\n if (parameter.get(\"required\")) {\n schema.addRequired(name);\n }\n\n propsLength++;\n } else {\n refs.push(jsonParameter);\n }\n });\n\n if (!propsLength) {\n if (refs.length === 1) {\n return refs[0];\n }\n }\n\n schema.type(\"object\");\n\n return {schema: schema.toJSON(options), required: false, ...props};\n}\n"]}
@@ -3,27 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.JsonOperationPathsMap = void 0;
4
4
  const httpMethods_1 = require("../constants/httpMethods");
5
5
  class JsonOperationPathsMap extends Map {
6
- constructor() {
7
- super(...arguments);
8
- this.getKey = (method, path) => `${method}-${path}`;
9
- }
10
6
  setOperationPath(operationPath) {
11
7
  if (operationPath.method !== httpMethods_1.OperationMethods.CUSTOM) {
12
8
  const key = this.getKey(operationPath.method, operationPath.path);
13
- this.updateFinalRouteState(key);
14
- this.updateFinalRouteState(this.getKey(httpMethods_1.OperationMethods.ALL, operationPath.path));
15
- this.setFinalRoute(key, operationPath);
16
- }
17
- }
18
- updateFinalRouteState(key) {
19
- if (this.has(key)) {
20
- this.get(key).isFinal = false;
9
+ this.set(key, operationPath);
21
10
  }
22
11
  }
23
- setFinalRoute(key, operationPath) {
24
- this.set(key, operationPath);
25
- operationPath.isFinal = true;
26
- }
12
+ getKey = (method, path) => `${method}-${path}`;
27
13
  }
28
14
  exports.JsonOperationPathsMap = JsonOperationPathsMap;
29
15
  //# sourceMappingURL=JsonOperationPathsMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonOperationPathsMap.js","sourceRoot":"","sources":["../../../src/domain/JsonOperationPathsMap.ts"],"names":[],"mappings":";;;AAAA,0DAA0D;AAG1D,MAAa,qBAAsB,SAAQ,GAA2B;IAAtE;;QAUY,WAAM,GAAG,CAAC,MAAc,EAAE,IAAS,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;IAYxE,CAAC;IArBC,gBAAgB,CAAC,aAA6B;QAC5C,IAAI,aAAa,CAAC,MAAM,KAAK,8BAAgB,CAAC,MAAM,EAAE;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,8BAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;SACxC;IACH,CAAC;IAIS,qBAAqB,CAAC,GAAW;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,OAAO,GAAG,KAAK,CAAC;SAChC;IACH,CAAC;IAES,aAAa,CAAC,GAAW,EAAE,aAA6B;QAChE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7B,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/B,CAAC;CACF;AAtBD,sDAsBC","sourcesContent":["import {OperationMethods} from \"../constants/httpMethods\";\nimport {JsonMethodPath} from \"./JsonOperation\";\n\nexport class JsonOperationPathsMap extends Map<string, JsonMethodPath> {\n setOperationPath(operationPath: JsonMethodPath) {\n if (operationPath.method !== OperationMethods.CUSTOM) {\n const key = this.getKey(operationPath.method, operationPath.path);\n this.updateFinalRouteState(key);\n this.updateFinalRouteState(this.getKey(OperationMethods.ALL, operationPath.path));\n this.setFinalRoute(key, operationPath);\n }\n }\n\n protected getKey = (method: string, path: any) => `${method}-${path}`;\n\n protected updateFinalRouteState(key: string) {\n if (this.has(key)) {\n this.get(key)!.isFinal = false;\n }\n }\n\n protected setFinalRoute(key: string, operationPath: JsonMethodPath) {\n this.set(key, operationPath);\n operationPath.isFinal = true;\n }\n}\n"]}
1
+ {"version":3,"file":"JsonOperationPathsMap.js","sourceRoot":"","sources":["../../../src/domain/JsonOperationPathsMap.ts"],"names":[],"mappings":";;;AAAA,0DAA0D;AAG1D,MAAa,qBAAsB,SAAQ,GAA2B;IACpE,gBAAgB,CAAC,aAA6B;QAC5C,IAAI,aAAa,CAAC,MAAM,KAAK,8BAAgB,CAAC,MAAM,EAAE;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;SAC9B;IACH,CAAC;IAES,MAAM,GAAG,CAAC,MAAc,EAAE,IAAS,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;CACvE;AATD,sDASC","sourcesContent":["import {OperationMethods} from \"../constants/httpMethods\";\nimport {JsonMethodPath} from \"./JsonOperation\";\n\nexport class JsonOperationPathsMap extends Map<string, JsonMethodPath> {\n setOperationPath(operationPath: JsonMethodPath) {\n if (operationPath.method !== OperationMethods.CUSTOM) {\n const key = this.getKey(operationPath.method, operationPath.path);\n this.set(key, operationPath);\n }\n }\n\n protected getKey = (method: string, path: any) => `${method}-${path}`;\n}\n"]}
@@ -3,26 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.JsonOperationRoute = void 0;
4
4
  const concatPath_1 = require("../utils/concatPath");
5
5
  class JsonOperationRoute {
6
+ token;
7
+ endpoint;
8
+ operationPath;
9
+ basePath;
10
+ paramsTypes;
6
11
  constructor(options) {
7
12
  Object.assign(this, options);
13
+ this.paramsTypes = this.endpoint.getParamTypes();
8
14
  }
9
15
  get url() {
10
16
  return this.fullPath;
11
17
  }
12
18
  get path() {
13
- var _a;
14
- return (_a = this.operationPath) === null || _a === void 0 ? void 0 : _a.path;
19
+ return this.operationPath?.path;
15
20
  }
16
21
  get fullPath() {
17
22
  return (0, concatPath_1.concatPath)(this.basePath, this.path);
18
23
  }
19
24
  get method() {
20
- var _a;
21
- return ((_a = this.operationPath) === null || _a === void 0 ? void 0 : _a.method) || "USE";
22
- }
23
- get isFinal() {
24
- var _a;
25
- return !!((_a = this.operationPath) === null || _a === void 0 ? void 0 : _a.isFinal);
25
+ return this.operationPath?.method || "USE";
26
26
  }
27
27
  get name() {
28
28
  return `${this.endpoint.targetName}.${this.methodClassName}()`;
@@ -51,6 +51,9 @@ class JsonOperationRoute {
51
51
  get operationId() {
52
52
  return this.operation.get("operationId") || this.endpoint.propertyKey;
53
53
  }
54
+ has(key) {
55
+ return this.paramsTypes[key];
56
+ }
54
57
  }
55
58
  exports.JsonOperationRoute = JsonOperationRoute;
56
59
  //# sourceMappingURL=JsonOperationRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsonOperationRoute.js","sourceRoot":"","sources":["../../../src/domain/JsonOperationRoute.ts"],"names":[],"mappings":";;;AAGA,oDAA+C;AAE/C,MAAa,kBAAkB;IAM7B,YAAY,OAAoC;QAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,IAAI;;QACN,OAAO,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAA,uBAAU,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAW,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM;;QACR,OAAO,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,MAAM,KAAI,KAAK,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO;;QACT,OAAO,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,OAAO,CAAA,CAAC;IACvC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAA0B,CAAC;IAClD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACxE,CAAC;CACF;AAjED,gDAiEC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {JsonMethodPath, JsonOperation} from \"./JsonOperation\";\nimport {JsonEntityStore} from \"./JsonEntityStore\";\nimport {concatPath} from \"../utils/concatPath\";\n\nexport class JsonOperationRoute<Entity extends JsonEntityStore = JsonEntityStore> {\n readonly token: Type<any>;\n readonly endpoint: Entity;\n readonly operationPath?: JsonMethodPath;\n readonly basePath?: string;\n\n constructor(options: Partial<JsonOperationRoute>) {\n Object.assign(this, options);\n }\n\n get url() {\n return this.fullPath;\n }\n\n get path() {\n return this.operationPath?.path;\n }\n\n get fullPath() {\n return concatPath(this.basePath, this.path as any);\n }\n\n get method() {\n return this.operationPath?.method || \"USE\";\n }\n\n get isFinal() {\n return !!this.operationPath?.isFinal;\n }\n\n get name() {\n return `${this.endpoint.targetName}.${this.methodClassName}()`;\n }\n\n get className() {\n return this.endpoint.targetName;\n }\n\n get methodClassName() {\n return this.propertyKey;\n }\n\n get parameters() {\n return this.endpoint.parameters;\n }\n\n get propertyKey() {\n return String(this.endpoint.propertyKey);\n }\n\n get propertyName() {\n return this.endpoint.propertyName;\n }\n\n get store() {\n return this.endpoint.store;\n }\n\n get operation(): JsonOperation {\n return this.endpoint.operation as JsonOperation;\n }\n\n get operationId() {\n return this.operation.get(\"operationId\") || this.endpoint.propertyKey;\n }\n}\n"]}
1
+ {"version":3,"file":"JsonOperationRoute.js","sourceRoot":"","sources":["../../../src/domain/JsonOperationRoute.ts"],"names":[],"mappings":";;;AAGA,oDAA+C;AAE/C,MAAa,kBAAkB;IACpB,KAAK,CAAY;IACjB,QAAQ,CAAS;IACjB,aAAa,CAAkB;IAC/B,QAAQ,CAAU;IAClB,WAAW,CAA0B;IAE9C,YAAY,OAAoC;QAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAA,uBAAU,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAW,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAA0B,CAAC;IAClD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACxE,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF;AApED,gDAoEC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {JsonMethodStore} from \"./JsonMethodStore\";\nimport {JsonMethodPath, JsonOperation} from \"./JsonOperation\";\nimport {concatPath} from \"../utils/concatPath\";\n\nexport class JsonOperationRoute<Entity extends JsonMethodStore = JsonMethodStore> {\n readonly token: Type<any>;\n readonly endpoint: Entity;\n readonly operationPath?: JsonMethodPath;\n readonly basePath?: string;\n readonly paramsTypes: Record<string, boolean>;\n\n constructor(options: Partial<JsonOperationRoute>) {\n Object.assign(this, options);\n\n this.paramsTypes = this.endpoint.getParamTypes();\n }\n\n get url() {\n return this.fullPath;\n }\n\n get path() {\n return this.operationPath?.path;\n }\n\n get fullPath() {\n return concatPath(this.basePath, this.path as any);\n }\n\n get method() {\n return this.operationPath?.method || \"USE\";\n }\n\n get name() {\n return `${this.endpoint.targetName}.${this.methodClassName}()`;\n }\n\n get className() {\n return this.endpoint.targetName;\n }\n\n get methodClassName() {\n return this.propertyKey;\n }\n\n get parameters() {\n return this.endpoint.parameters;\n }\n\n get propertyKey() {\n return String(this.endpoint.propertyKey);\n }\n\n get propertyName() {\n return this.endpoint.propertyName;\n }\n\n get store() {\n return this.endpoint.store;\n }\n\n get operation(): JsonOperation {\n return this.endpoint.operation as JsonOperation;\n }\n\n get operationId() {\n return this.operation.get(\"operationId\") || this.endpoint.propertyKey;\n }\n\n has(key: string) {\n return this.paramsTypes[key];\n }\n}\n"]}