@dipscope/type-manager 6.0.0 → 7.0.0

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 (446) hide show
  1. package/CHANGELOG.md +262 -247
  2. package/CONTRIBUTING.md +58 -58
  3. package/LICENSE.md +201 -201
  4. package/README.md +1901 -1887
  5. package/dist/es2015/alias.js +1 -1
  6. package/dist/es2015/any.js +2 -2
  7. package/dist/es2015/custom-context.js +58 -0
  8. package/dist/es2015/custom-context.js.map +1 -0
  9. package/dist/es2015/custom-key.js +8 -0
  10. package/dist/es2015/custom-key.js.map +1 -0
  11. package/dist/es2015/custom-option.js +2 -0
  12. package/dist/es2015/custom-option.js.map +1 -0
  13. package/dist/es2015/custom-value-resolver.js +2 -0
  14. package/dist/es2015/custom-value-resolver.js.map +1 -0
  15. package/dist/es2015/custom-value.js +2 -0
  16. package/dist/es2015/custom-value.js.map +1 -0
  17. package/dist/es2015/default-value-resolver.js +1 -1
  18. package/dist/es2015/default-value.js +1 -1
  19. package/dist/es2015/discriminant.js +1 -1
  20. package/dist/es2015/discriminator.js +1 -1
  21. package/dist/es2015/factories/index.js +1 -1
  22. package/dist/es2015/factories/type-factory.js +33 -33
  23. package/dist/es2015/factory.js +1 -1
  24. package/dist/es2015/functions/get-own-reflect-metadata.js +7 -7
  25. package/dist/es2015/functions/get-reflect-metadata.js +7 -7
  26. package/dist/es2015/functions/get-words.js +4 -4
  27. package/dist/es2015/functions/index.js +18 -18
  28. package/dist/es2015/functions/is-arrow-function.js +4 -4
  29. package/dist/es2015/functions/is-ctor-function.js +4 -4
  30. package/dist/es2015/functions/is-data-view.js +3 -3
  31. package/dist/es2015/functions/is-float-32-array.js +3 -3
  32. package/dist/es2015/functions/is-float-64-array.js +3 -3
  33. package/dist/es2015/functions/is-int-16-array.js +3 -3
  34. package/dist/es2015/functions/is-int-32-array.js +3 -3
  35. package/dist/es2015/functions/is-int-8-array.js +3 -3
  36. package/dist/es2015/functions/is-uint-16-array.js +3 -3
  37. package/dist/es2015/functions/is-uint-32-array.js +3 -3
  38. package/dist/es2015/functions/is-uint-8-array.js +3 -3
  39. package/dist/es2015/functions/is-uint-8-clamped-array.js +3 -3
  40. package/dist/es2015/functions/json-parse.js +3 -3
  41. package/dist/es2015/functions/json-stringify.js +66 -66
  42. package/dist/es2015/functions/name-of.js +7 -7
  43. package/dist/es2015/generic-argument.js +1 -1
  44. package/dist/es2015/generic-metadata-resolver.js +1 -1
  45. package/dist/es2015/generic-metadata.js +1 -1
  46. package/dist/es2015/generic-structure.js +1 -1
  47. package/dist/es2015/index.js +70 -66
  48. package/dist/es2015/index.js.map +1 -1
  49. package/dist/es2015/inject-index.js +1 -1
  50. package/dist/es2015/inject-internals.js +1 -1
  51. package/dist/es2015/inject-metadata.js +62 -62
  52. package/dist/es2015/inject-metadata.js.map +1 -1
  53. package/dist/es2015/inject-options.js +1 -1
  54. package/dist/es2015/inject-sorter.js +1 -1
  55. package/dist/es2015/inject-sorters/asc-inject-sorter.js +13 -13
  56. package/dist/es2015/inject-sorters/desc-inject-sorter.js +13 -13
  57. package/dist/es2015/inject-sorters/index.js +2 -2
  58. package/dist/es2015/inject.js +23 -23
  59. package/dist/es2015/injector.js +1 -1
  60. package/dist/es2015/injectors/index.js +1 -1
  61. package/dist/es2015/injectors/singleton-injector.js +30 -30
  62. package/dist/es2015/log-level.js +7 -7
  63. package/dist/es2015/log.js +49 -49
  64. package/dist/es2015/metadata.js +80 -80
  65. package/dist/es2015/metadata.js.map +1 -1
  66. package/dist/es2015/naming-convention.js +1 -1
  67. package/dist/es2015/naming-conventions/camel-case-naming-convention.js +16 -16
  68. package/dist/es2015/naming-conventions/flat-case-naming-convention.js +12 -12
  69. package/dist/es2015/naming-conventions/flat-upper-case-naming-convention.js +12 -12
  70. package/dist/es2015/naming-conventions/index.js +8 -8
  71. package/dist/es2015/naming-conventions/kebab-case-naming-convention.js +16 -16
  72. package/dist/es2015/naming-conventions/kebab-upper-case-naming-convention.js +16 -16
  73. package/dist/es2015/naming-conventions/pascal-case-naming-convention.js +17 -17
  74. package/dist/es2015/naming-conventions/snake-case-naming-convention.js +16 -16
  75. package/dist/es2015/naming-conventions/snake-upper-case-naming-convention.js +16 -16
  76. package/dist/es2015/property-internals.js +1 -1
  77. package/dist/es2015/property-metadata.js +268 -258
  78. package/dist/es2015/property-metadata.js.map +1 -1
  79. package/dist/es2015/property-name.js +1 -1
  80. package/dist/es2015/property-options.js +1 -1
  81. package/dist/es2015/property-sorter.js +1 -1
  82. package/dist/es2015/property-sorters/asc-property-sorter.js +13 -13
  83. package/dist/es2015/property-sorters/desc-property-sorter.js +13 -13
  84. package/dist/es2015/property-sorters/index.js +2 -2
  85. package/dist/es2015/property.js +38 -38
  86. package/dist/es2015/reference-callback.js +1 -1
  87. package/dist/es2015/reference-handler.js +1 -1
  88. package/dist/es2015/reference-handlers/circular-reference-handler.js +35 -35
  89. package/dist/es2015/reference-handlers/index.js +3 -3
  90. package/dist/es2015/reference-handlers/json-path-reference-handler.js +68 -68
  91. package/dist/es2015/reference-handlers/plain-reference-handler.js +31 -31
  92. package/dist/es2015/reference-key.js +1 -1
  93. package/dist/es2015/reference-value-getter.js +1 -1
  94. package/dist/es2015/reference-value-setter.js +1 -1
  95. package/dist/es2015/reference-value.js +1 -1
  96. package/dist/es2015/serializer-context-options.js +1 -1
  97. package/dist/es2015/serializer-context.js +281 -294
  98. package/dist/es2015/serializer-context.js.map +1 -1
  99. package/dist/es2015/serializer.js +1 -1
  100. package/dist/es2015/serializers/any-serializer.js +21 -21
  101. package/dist/es2015/serializers/array-buffer-serializer.js +40 -40
  102. package/dist/es2015/serializers/array-serializer.js +59 -59
  103. package/dist/es2015/serializers/boolean-serializer.js +54 -54
  104. package/dist/es2015/serializers/data-view-serializer.js +41 -41
  105. package/dist/es2015/serializers/date-serializer.js +33 -33
  106. package/dist/es2015/serializers/float-32-array-serializer.js +34 -34
  107. package/dist/es2015/serializers/float-64-array-serializer.js +34 -34
  108. package/dist/es2015/serializers/index.js +21 -21
  109. package/dist/es2015/serializers/int-16-array-serializer.js +34 -34
  110. package/dist/es2015/serializers/int-32-array-serializer.js +34 -34
  111. package/dist/es2015/serializers/int-8-array-serializer.js +34 -34
  112. package/dist/es2015/serializers/map-serializer.js +95 -95
  113. package/dist/es2015/serializers/number-serializer.js +48 -48
  114. package/dist/es2015/serializers/set-serializer.js +61 -61
  115. package/dist/es2015/serializers/string-serializer.js +54 -54
  116. package/dist/es2015/serializers/type-serializer.js +120 -120
  117. package/dist/es2015/serializers/uint-16-array-serializer.js +34 -34
  118. package/dist/es2015/serializers/uint-32-array-serializer.js +34 -34
  119. package/dist/es2015/serializers/uint-8-array-serializer.js +34 -34
  120. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js +34 -34
  121. package/dist/es2015/serializers/unknown-serializer.js +21 -21
  122. package/dist/es2015/type-abstraction.js +1 -1
  123. package/dist/es2015/type-argument.js +1 -1
  124. package/dist/es2015/type-configuration.js +1 -1
  125. package/dist/es2015/type-context-entry.js +8 -8
  126. package/dist/es2015/type-context.js +30 -24
  127. package/dist/es2015/type-context.js.map +1 -1
  128. package/dist/es2015/type-ctor.js +1 -1
  129. package/dist/es2015/type-fn.js +1 -1
  130. package/dist/es2015/type-internals.js +2 -0
  131. package/dist/es2015/type-internals.js.map +1 -0
  132. package/dist/es2015/type-like.js +1 -1
  133. package/dist/es2015/type-manager-options.js +1 -1
  134. package/dist/es2015/type-manager.js +319 -313
  135. package/dist/es2015/type-manager.js.map +1 -1
  136. package/dist/es2015/type-metadata-resolver.js +1 -1
  137. package/dist/es2015/type-metadata-symbol.js +1 -1
  138. package/dist/es2015/type-metadata.js +413 -398
  139. package/dist/es2015/type-metadata.js.map +1 -1
  140. package/dist/es2015/type-name.js +1 -1
  141. package/dist/es2015/type-options-base.js +1 -1
  142. package/dist/es2015/type-options.js +1 -1
  143. package/dist/es2015/type-resolver.js +1 -1
  144. package/dist/es2015/type.js +7 -7
  145. package/dist/es2015/unknown.js +2 -2
  146. package/dist/es5/alias.js +1 -1
  147. package/dist/es5/any.js +6 -6
  148. package/dist/es5/custom-context.js +94 -0
  149. package/dist/es5/custom-context.js.map +1 -0
  150. package/dist/es5/custom-key.js +10 -0
  151. package/dist/es5/custom-key.js.map +1 -0
  152. package/dist/es5/custom-option.js +2 -0
  153. package/dist/es5/custom-option.js.map +1 -0
  154. package/dist/es5/custom-value-resolver.js +2 -0
  155. package/dist/es5/custom-value-resolver.js.map +1 -0
  156. package/dist/es5/custom-value.js +2 -0
  157. package/dist/es5/custom-value.js.map +1 -0
  158. package/dist/es5/default-value-resolver.js +1 -1
  159. package/dist/es5/default-value.js +1 -1
  160. package/dist/es5/discriminant.js +1 -1
  161. package/dist/es5/discriminator.js +1 -1
  162. package/dist/es5/factories/index.js +1 -1
  163. package/dist/es5/factories/type-factory.js +59 -59
  164. package/dist/es5/factory.js +1 -1
  165. package/dist/es5/functions/get-own-reflect-metadata.js +7 -7
  166. package/dist/es5/functions/get-reflect-metadata.js +7 -7
  167. package/dist/es5/functions/get-words.js +4 -4
  168. package/dist/es5/functions/index.js +18 -18
  169. package/dist/es5/functions/is-arrow-function.js +4 -4
  170. package/dist/es5/functions/is-ctor-function.js +4 -4
  171. package/dist/es5/functions/is-data-view.js +3 -3
  172. package/dist/es5/functions/is-float-32-array.js +3 -3
  173. package/dist/es5/functions/is-float-64-array.js +3 -3
  174. package/dist/es5/functions/is-int-16-array.js +3 -3
  175. package/dist/es5/functions/is-int-32-array.js +3 -3
  176. package/dist/es5/functions/is-int-8-array.js +3 -3
  177. package/dist/es5/functions/is-uint-16-array.js +3 -3
  178. package/dist/es5/functions/is-uint-32-array.js +3 -3
  179. package/dist/es5/functions/is-uint-8-array.js +3 -3
  180. package/dist/es5/functions/is-uint-8-clamped-array.js +3 -3
  181. package/dist/es5/functions/json-parse.js +3 -3
  182. package/dist/es5/functions/json-stringify.js +66 -66
  183. package/dist/es5/functions/name-of.js +7 -7
  184. package/dist/es5/generic-argument.js +1 -1
  185. package/dist/es5/generic-metadata-resolver.js +1 -1
  186. package/dist/es5/generic-metadata.js +1 -1
  187. package/dist/es5/generic-structure.js +1 -1
  188. package/dist/es5/index.js +70 -66
  189. package/dist/es5/index.js.map +1 -1
  190. package/dist/es5/inject-index.js +1 -1
  191. package/dist/es5/inject-internals.js +1 -1
  192. package/dist/es5/inject-metadata.js +83 -83
  193. package/dist/es5/inject-metadata.js.map +1 -1
  194. package/dist/es5/inject-options.js +1 -1
  195. package/dist/es5/inject-sorter.js +1 -1
  196. package/dist/es5/inject-sorters/asc-inject-sorter.js +17 -17
  197. package/dist/es5/inject-sorters/desc-inject-sorter.js +17 -17
  198. package/dist/es5/inject-sorters/index.js +2 -2
  199. package/dist/es5/inject.js +23 -23
  200. package/dist/es5/injector.js +1 -1
  201. package/dist/es5/injectors/index.js +1 -1
  202. package/dist/es5/injectors/singleton-injector.js +44 -44
  203. package/dist/es5/log-level.js +7 -7
  204. package/dist/es5/log.js +64 -64
  205. package/dist/es5/metadata.js +105 -105
  206. package/dist/es5/metadata.js.map +1 -1
  207. package/dist/es5/naming-convention.js +1 -1
  208. package/dist/es5/naming-conventions/camel-case-naming-convention.js +20 -20
  209. package/dist/es5/naming-conventions/flat-case-naming-convention.js +16 -16
  210. package/dist/es5/naming-conventions/flat-upper-case-naming-convention.js +16 -16
  211. package/dist/es5/naming-conventions/index.js +8 -8
  212. package/dist/es5/naming-conventions/kebab-case-naming-convention.js +20 -20
  213. package/dist/es5/naming-conventions/kebab-upper-case-naming-convention.js +20 -20
  214. package/dist/es5/naming-conventions/pascal-case-naming-convention.js +21 -21
  215. package/dist/es5/naming-conventions/snake-case-naming-convention.js +20 -20
  216. package/dist/es5/naming-conventions/snake-upper-case-naming-convention.js +20 -20
  217. package/dist/es5/property-internals.js +1 -1
  218. package/dist/es5/property-metadata.js +377 -363
  219. package/dist/es5/property-metadata.js.map +1 -1
  220. package/dist/es5/property-name.js +1 -1
  221. package/dist/es5/property-options.js +1 -1
  222. package/dist/es5/property-sorter.js +1 -1
  223. package/dist/es5/property-sorters/asc-property-sorter.js +17 -17
  224. package/dist/es5/property-sorters/desc-property-sorter.js +17 -17
  225. package/dist/es5/property-sorters/index.js +2 -2
  226. package/dist/es5/property.js +38 -38
  227. package/dist/es5/reference-callback.js +1 -1
  228. package/dist/es5/reference-handler.js +1 -1
  229. package/dist/es5/reference-handlers/circular-reference-handler.js +39 -39
  230. package/dist/es5/reference-handlers/index.js +3 -3
  231. package/dist/es5/reference-handlers/json-path-reference-handler.js +92 -92
  232. package/dist/es5/reference-handlers/plain-reference-handler.js +35 -35
  233. package/dist/es5/reference-key.js +1 -1
  234. package/dist/es5/reference-value-getter.js +1 -1
  235. package/dist/es5/reference-value-setter.js +1 -1
  236. package/dist/es5/reference-value.js +1 -1
  237. package/dist/es5/serializer-context-options.js +1 -1
  238. package/dist/es5/serializer-context.js +416 -433
  239. package/dist/es5/serializer-context.js.map +1 -1
  240. package/dist/es5/serializer.js +1 -1
  241. package/dist/es5/serializers/any-serializer.js +25 -25
  242. package/dist/es5/serializers/array-buffer-serializer.js +44 -44
  243. package/dist/es5/serializers/array-serializer.js +69 -69
  244. package/dist/es5/serializers/boolean-serializer.js +58 -58
  245. package/dist/es5/serializers/data-view-serializer.js +45 -45
  246. package/dist/es5/serializers/date-serializer.js +37 -37
  247. package/dist/es5/serializers/float-32-array-serializer.js +38 -38
  248. package/dist/es5/serializers/float-64-array-serializer.js +38 -38
  249. package/dist/es5/serializers/index.js +21 -21
  250. package/dist/es5/serializers/int-16-array-serializer.js +38 -38
  251. package/dist/es5/serializers/int-32-array-serializer.js +38 -38
  252. package/dist/es5/serializers/int-8-array-serializer.js +38 -38
  253. package/dist/es5/serializers/map-serializer.js +114 -114
  254. package/dist/es5/serializers/number-serializer.js +52 -52
  255. package/dist/es5/serializers/set-serializer.js +77 -77
  256. package/dist/es5/serializers/string-serializer.js +58 -58
  257. package/dist/es5/serializers/type-serializer.js +153 -153
  258. package/dist/es5/serializers/uint-16-array-serializer.js +38 -38
  259. package/dist/es5/serializers/uint-32-array-serializer.js +38 -38
  260. package/dist/es5/serializers/uint-8-array-serializer.js +38 -38
  261. package/dist/es5/serializers/uint-8-clamped-array-serializer.js +38 -38
  262. package/dist/es5/serializers/unknown-serializer.js +25 -25
  263. package/dist/es5/type-abstraction.js +1 -1
  264. package/dist/es5/type-argument.js +1 -1
  265. package/dist/es5/type-configuration.js +1 -1
  266. package/dist/es5/type-context-entry.js +10 -10
  267. package/dist/es5/type-context.js +32 -26
  268. package/dist/es5/type-context.js.map +1 -1
  269. package/dist/es5/type-ctor.js +1 -1
  270. package/dist/es5/type-fn.js +1 -1
  271. package/dist/es5/type-internals.js +2 -0
  272. package/dist/es5/type-internals.js.map +1 -0
  273. package/dist/es5/type-like.js +1 -1
  274. package/dist/es5/type-manager-options.js +1 -1
  275. package/dist/es5/type-manager.js +412 -406
  276. package/dist/es5/type-manager.js.map +1 -1
  277. package/dist/es5/type-metadata-resolver.js +1 -1
  278. package/dist/es5/type-metadata-symbol.js +1 -1
  279. package/dist/es5/type-metadata.js +563 -544
  280. package/dist/es5/type-metadata.js.map +1 -1
  281. package/dist/es5/type-name.js +1 -1
  282. package/dist/es5/type-options-base.js +1 -1
  283. package/dist/es5/type-options.js +1 -1
  284. package/dist/es5/type-resolver.js +1 -1
  285. package/dist/es5/type.js +7 -7
  286. package/dist/es5/unknown.js +6 -6
  287. package/dist/types/alias.d.ts +6 -6
  288. package/dist/types/any.d.ts +9 -9
  289. package/dist/types/custom-context.d.ts +89 -0
  290. package/dist/types/custom-context.d.ts.map +1 -0
  291. package/dist/types/custom-key.d.ts +29 -0
  292. package/dist/types/custom-key.d.ts.map +1 -0
  293. package/dist/types/custom-option.d.ts +11 -0
  294. package/dist/types/custom-option.d.ts.map +1 -0
  295. package/dist/types/custom-value-resolver.d.ts +7 -0
  296. package/dist/types/custom-value-resolver.d.ts.map +1 -0
  297. package/dist/types/custom-value.d.ts +7 -0
  298. package/dist/types/custom-value.d.ts.map +1 -0
  299. package/dist/types/default-value-resolver.d.ts +7 -7
  300. package/dist/types/default-value.d.ts +7 -7
  301. package/dist/types/discriminant.d.ts +8 -8
  302. package/dist/types/discriminator.d.ts +6 -6
  303. package/dist/types/factories/index.d.ts +1 -1
  304. package/dist/types/factories/type-factory.d.ts +19 -19
  305. package/dist/types/factory.d.ts +18 -18
  306. package/dist/types/functions/get-own-reflect-metadata.d.ts +9 -9
  307. package/dist/types/functions/get-reflect-metadata.d.ts +10 -10
  308. package/dist/types/functions/get-words.d.ts +8 -8
  309. package/dist/types/functions/index.d.ts +18 -18
  310. package/dist/types/functions/is-arrow-function.d.ts +8 -8
  311. package/dist/types/functions/is-ctor-function.d.ts +8 -8
  312. package/dist/types/functions/is-data-view.d.ts +8 -8
  313. package/dist/types/functions/is-float-32-array.d.ts +8 -8
  314. package/dist/types/functions/is-float-64-array.d.ts +8 -8
  315. package/dist/types/functions/is-int-16-array.d.ts +8 -8
  316. package/dist/types/functions/is-int-32-array.d.ts +8 -8
  317. package/dist/types/functions/is-int-8-array.d.ts +8 -8
  318. package/dist/types/functions/is-uint-16-array.d.ts +8 -8
  319. package/dist/types/functions/is-uint-32-array.d.ts +8 -8
  320. package/dist/types/functions/is-uint-8-array.d.ts +8 -8
  321. package/dist/types/functions/is-uint-8-clamped-array.d.ts +8 -8
  322. package/dist/types/functions/json-parse.d.ts +9 -9
  323. package/dist/types/functions/json-stringify.d.ts +10 -10
  324. package/dist/types/functions/name-of.d.ts +8 -8
  325. package/dist/types/generic-argument.d.ts +7 -7
  326. package/dist/types/generic-metadata-resolver.d.ts +7 -7
  327. package/dist/types/generic-metadata.d.ts +7 -7
  328. package/dist/types/generic-structure.d.ts +7 -7
  329. package/dist/types/index.d.ts +70 -66
  330. package/dist/types/index.d.ts.map +1 -1
  331. package/dist/types/inject-index.d.ts +6 -6
  332. package/dist/types/inject-internals.d.ts +14 -14
  333. package/dist/types/inject-internals.d.ts.map +1 -1
  334. package/dist/types/inject-metadata.d.ts +117 -117
  335. package/dist/types/inject-metadata.d.ts.map +1 -1
  336. package/dist/types/inject-options.d.ts +22 -22
  337. package/dist/types/inject-sorter.d.ts +19 -19
  338. package/dist/types/inject-sorters/asc-inject-sorter.d.ts +20 -20
  339. package/dist/types/inject-sorters/desc-inject-sorter.d.ts +20 -20
  340. package/dist/types/inject-sorters/index.d.ts +2 -2
  341. package/dist/types/inject.d.ts +10 -10
  342. package/dist/types/injector.d.ts +16 -16
  343. package/dist/types/injectors/index.d.ts +1 -1
  344. package/dist/types/injectors/singleton-injector.d.ts +31 -31
  345. package/dist/types/log-level.d.ts +11 -11
  346. package/dist/types/log.d.ts +95 -95
  347. package/dist/types/metadata.d.ts +99 -100
  348. package/dist/types/metadata.d.ts.map +1 -1
  349. package/dist/types/naming-convention.d.ts +15 -15
  350. package/dist/types/naming-conventions/camel-case-naming-convention.d.ts +26 -26
  351. package/dist/types/naming-conventions/flat-case-naming-convention.d.ts +25 -25
  352. package/dist/types/naming-conventions/flat-upper-case-naming-convention.d.ts +25 -25
  353. package/dist/types/naming-conventions/index.d.ts +8 -8
  354. package/dist/types/naming-conventions/kebab-case-naming-convention.d.ts +26 -26
  355. package/dist/types/naming-conventions/kebab-upper-case-naming-convention.d.ts +26 -26
  356. package/dist/types/naming-conventions/pascal-case-naming-convention.d.ts +26 -26
  357. package/dist/types/naming-conventions/snake-case-naming-convention.d.ts +26 -26
  358. package/dist/types/naming-conventions/snake-upper-case-naming-convention.d.ts +26 -26
  359. package/dist/types/property-internals.d.ts +35 -28
  360. package/dist/types/property-internals.d.ts.map +1 -1
  361. package/dist/types/property-metadata.d.ts +359 -352
  362. package/dist/types/property-metadata.d.ts.map +1 -1
  363. package/dist/types/property-name.d.ts +6 -6
  364. package/dist/types/property-options.d.ts +116 -116
  365. package/dist/types/property-options.d.ts.map +1 -1
  366. package/dist/types/property-sorter.d.ts +19 -19
  367. package/dist/types/property-sorters/asc-property-sorter.d.ts +20 -20
  368. package/dist/types/property-sorters/desc-property-sorter.d.ts +20 -20
  369. package/dist/types/property-sorters/index.d.ts +2 -2
  370. package/dist/types/property.d.ts +13 -13
  371. package/dist/types/reference-callback.d.ts +7 -7
  372. package/dist/types/reference-handler.d.ts +31 -31
  373. package/dist/types/reference-handlers/circular-reference-handler.d.ts +32 -32
  374. package/dist/types/reference-handlers/index.d.ts +3 -3
  375. package/dist/types/reference-handlers/json-path-reference-handler.d.ts +55 -55
  376. package/dist/types/reference-handlers/plain-reference-handler.d.ts +33 -33
  377. package/dist/types/reference-key.d.ts +6 -6
  378. package/dist/types/reference-value-getter.d.ts +7 -7
  379. package/dist/types/reference-value-setter.d.ts +7 -7
  380. package/dist/types/reference-value.d.ts +6 -6
  381. package/dist/types/serializer-context-options.d.ts +50 -50
  382. package/dist/types/serializer-context.d.ts +418 -425
  383. package/dist/types/serializer-context.d.ts.map +1 -1
  384. package/dist/types/serializer.d.ts +27 -27
  385. package/dist/types/serializers/any-serializer.d.ts +28 -28
  386. package/dist/types/serializers/array-buffer-serializer.d.ts +28 -28
  387. package/dist/types/serializers/array-serializer.d.ts +28 -28
  388. package/dist/types/serializers/boolean-serializer.d.ts +37 -37
  389. package/dist/types/serializers/data-view-serializer.d.ts +28 -28
  390. package/dist/types/serializers/date-serializer.d.ts +28 -28
  391. package/dist/types/serializers/float-32-array-serializer.d.ts +28 -28
  392. package/dist/types/serializers/float-64-array-serializer.d.ts +28 -28
  393. package/dist/types/serializers/index.d.ts +21 -21
  394. package/dist/types/serializers/int-16-array-serializer.d.ts +28 -28
  395. package/dist/types/serializers/int-32-array-serializer.d.ts +28 -28
  396. package/dist/types/serializers/int-8-array-serializer.d.ts +28 -28
  397. package/dist/types/serializers/map-serializer.d.ts +28 -28
  398. package/dist/types/serializers/number-serializer.d.ts +37 -37
  399. package/dist/types/serializers/set-serializer.d.ts +28 -28
  400. package/dist/types/serializers/string-serializer.d.ts +37 -37
  401. package/dist/types/serializers/type-serializer.d.ts +28 -28
  402. package/dist/types/serializers/uint-16-array-serializer.d.ts +28 -28
  403. package/dist/types/serializers/uint-32-array-serializer.d.ts +28 -28
  404. package/dist/types/serializers/uint-8-array-serializer.d.ts +28 -28
  405. package/dist/types/serializers/uint-8-clamped-array-serializer.d.ts +28 -28
  406. package/dist/types/serializers/unknown-serializer.d.ts +28 -28
  407. package/dist/types/type-abstraction.d.ts +6 -6
  408. package/dist/types/type-argument.d.ts +9 -9
  409. package/dist/types/type-configuration.d.ts +16 -16
  410. package/dist/types/type-context-entry.d.ts +36 -36
  411. package/dist/types/type-context.d.ts +70 -58
  412. package/dist/types/type-context.d.ts.map +1 -1
  413. package/dist/types/type-ctor.d.ts +6 -6
  414. package/dist/types/type-fn.d.ts +8 -8
  415. package/dist/types/type-internals.d.ts +15 -0
  416. package/dist/types/type-internals.d.ts.map +1 -0
  417. package/dist/types/type-like.d.ts +7 -7
  418. package/dist/types/type-manager-options.d.ts +33 -33
  419. package/dist/types/type-manager.d.ts +413 -397
  420. package/dist/types/type-manager.d.ts.map +1 -1
  421. package/dist/types/type-metadata-resolver.d.ts +8 -8
  422. package/dist/types/type-metadata-symbol.d.ts +6 -6
  423. package/dist/types/type-metadata.d.ts +513 -495
  424. package/dist/types/type-metadata.d.ts.map +1 -1
  425. package/dist/types/type-name.d.ts +6 -6
  426. package/dist/types/type-options-base.d.ts +106 -106
  427. package/dist/types/type-options-base.d.ts.map +1 -1
  428. package/dist/types/type-options.d.ts +72 -72
  429. package/dist/types/type-resolver.d.ts +7 -7
  430. package/dist/types/type.d.ts +9 -9
  431. package/dist/types/unknown.d.ts +9 -9
  432. package/dist/umd/index.js +1 -1
  433. package/dist/umd/index.js.map +1 -1
  434. package/package.json +63 -63
  435. package/dist/es2015/custom-data.js +0 -2
  436. package/dist/es2015/custom-data.js.map +0 -1
  437. package/dist/es2015/type-metadata-extractor.js +0 -2
  438. package/dist/es2015/type-metadata-extractor.js.map +0 -1
  439. package/dist/es5/custom-data.js +0 -2
  440. package/dist/es5/custom-data.js.map +0 -1
  441. package/dist/es5/type-metadata-extractor.js +0 -2
  442. package/dist/es5/type-metadata-extractor.js.map +0 -1
  443. package/dist/types/custom-data.d.ts +0 -7
  444. package/dist/types/custom-data.d.ts.map +0 -1
  445. package/dist/types/type-metadata-extractor.d.ts +0 -9
  446. package/dist/types/type-metadata-extractor.d.ts.map +0 -1
@@ -1,545 +1,564 @@
1
- import { __extends, __read, __values } from "tslib";
2
- import { isFunction, isNil, isUndefined, merge } from 'lodash';
3
- import { getOwnReflectMetadata } from './functions/get-own-reflect-metadata';
4
- import { nameOf } from './functions/name-of';
5
- import { InjectMetadata } from './inject-metadata';
6
- import { Metadata } from './metadata';
7
- import { PropertyMetadata } from './property-metadata';
8
- var TypeMetadata = (function (_super) {
9
- __extends(TypeMetadata, _super);
10
- function TypeMetadata(typeMetadataExtractor, typeFnMap, typeFn, typeOptionsBase, typeOptions, parentTypeMetadata) {
11
- var _this = _super.call(this, typeMetadataExtractor, typeFnMap) || this;
12
- _this.childrenTypeMetadataMap = new Map();
13
- _this.discriminantMap = new Map();
14
- _this.propertyMetadataMap = new Map();
15
- _this.injectMetadataMap = new Map();
16
- _this.typeName = nameOf(typeFn);
17
- _this.typeFn = typeFn;
18
- _this.typeOptionsBase = typeOptionsBase;
19
- _this.typeOptions = _this.constructTypeOptions(typeOptions);
20
- _this.parentTypeMetadata = parentTypeMetadata;
21
- _this.deriveParentTypeMetadataProperties();
22
- _this.hasDiscriminant(_this.discriminant);
23
- _this.configure(typeOptions);
24
- return _this;
25
- }
26
- Object.defineProperty(TypeMetadata.prototype, "alias", {
27
- get: function () {
28
- return this.typeOptions.alias;
29
- },
30
- enumerable: false,
31
- configurable: true
32
- });
33
- Object.defineProperty(TypeMetadata.prototype, "customData", {
34
- get: function () {
35
- var customData = {};
36
- var typeBaseCustomData = this.typeOptionsBase.customData;
37
- var typeCustomData = this.typeOptions.customData;
38
- if (!isNil(typeBaseCustomData)) {
39
- merge(customData, typeBaseCustomData);
40
- }
41
- if (!isNil(typeCustomData)) {
42
- merge(customData, typeCustomData);
43
- }
44
- return customData;
45
- },
46
- enumerable: false,
47
- configurable: true
48
- });
49
- Object.defineProperty(TypeMetadata.prototype, "serializedNullValue", {
50
- get: function () {
51
- if (this.preserveNull) {
52
- return null;
53
- }
54
- return this.serializedDefaultValue;
55
- },
56
- enumerable: false,
57
- configurable: true
58
- });
59
- Object.defineProperty(TypeMetadata.prototype, "serializedDefaultValue", {
60
- get: function () {
61
- var _a;
62
- if (this.useDefaultValue) {
63
- var serializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.serializedDefaultValue;
64
- return isFunction(serializedDefaultValue) ? serializedDefaultValue() : serializedDefaultValue;
65
- }
66
- return undefined;
67
- },
68
- enumerable: false,
69
- configurable: true
70
- });
71
- Object.defineProperty(TypeMetadata.prototype, "deserializedNullValue", {
72
- get: function () {
73
- if (this.preserveNull) {
74
- return null;
75
- }
76
- return this.deserializedDefaultValue;
77
- },
78
- enumerable: false,
79
- configurable: true
80
- });
81
- Object.defineProperty(TypeMetadata.prototype, "deserializedDefaultValue", {
82
- get: function () {
83
- var _a;
84
- if (this.useDefaultValue) {
85
- var deserializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.deserializedDefaultValue;
86
- return isFunction(deserializedDefaultValue) ? deserializedDefaultValue() : deserializedDefaultValue;
87
- }
88
- return undefined;
89
- },
90
- enumerable: false,
91
- configurable: true
92
- });
93
- Object.defineProperty(TypeMetadata.prototype, "discriminant", {
94
- get: function () {
95
- var _a;
96
- return (_a = this.typeOptions.discriminant) !== null && _a !== void 0 ? _a : this.typeName;
97
- },
98
- enumerable: false,
99
- configurable: true
100
- });
101
- Object.defineProperty(TypeMetadata.prototype, "discriminator", {
102
- get: function () {
103
- var _a;
104
- return (_a = this.typeOptions.discriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.discriminator;
105
- },
106
- enumerable: false,
107
- configurable: true
108
- });
109
- Object.defineProperty(TypeMetadata.prototype, "factory", {
110
- get: function () {
111
- var _a;
112
- return (_a = this.typeOptions.factory) !== null && _a !== void 0 ? _a : this.typeOptionsBase.factory;
113
- },
114
- enumerable: false,
115
- configurable: true
116
- });
117
- Object.defineProperty(TypeMetadata.prototype, "injectable", {
118
- get: function () {
119
- return this.typeOptions.injectable;
120
- },
121
- enumerable: false,
122
- configurable: true
123
- });
124
- Object.defineProperty(TypeMetadata.prototype, "injector", {
125
- get: function () {
126
- var _a;
127
- return (_a = this.typeOptions.injector) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injector;
128
- },
129
- enumerable: false,
130
- configurable: true
131
- });
132
- Object.defineProperty(TypeMetadata.prototype, "log", {
133
- get: function () {
134
- var _a;
135
- return (_a = this.typeOptions.log) !== null && _a !== void 0 ? _a : this.typeOptionsBase.log;
136
- },
137
- enumerable: false,
138
- configurable: true
139
- });
140
- Object.defineProperty(TypeMetadata.prototype, "namingConvention", {
141
- get: function () {
142
- var _a;
143
- return (_a = this.typeOptions.namingConvention) !== null && _a !== void 0 ? _a : this.typeOptionsBase.namingConvention;
144
- },
145
- enumerable: false,
146
- configurable: true
147
- });
148
- Object.defineProperty(TypeMetadata.prototype, "polymorphic", {
149
- get: function () {
150
- return this.discriminantMap.size > 1;
151
- },
152
- enumerable: false,
153
- configurable: true
154
- });
155
- Object.defineProperty(TypeMetadata.prototype, "preserveDiscriminator", {
156
- get: function () {
157
- var _a;
158
- return (_a = this.typeOptions.preserveDiscriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveDiscriminator;
159
- },
160
- enumerable: false,
161
- configurable: true
162
- });
163
- Object.defineProperty(TypeMetadata.prototype, "referenceHandler", {
164
- get: function () {
165
- var _a;
166
- return (_a = this.typeOptions.referenceHandler) !== null && _a !== void 0 ? _a : this.typeOptionsBase.referenceHandler;
167
- },
168
- enumerable: false,
169
- configurable: true
170
- });
171
- Object.defineProperty(TypeMetadata.prototype, "serializer", {
172
- get: function () {
173
- var _a;
174
- return (_a = this.typeOptions.serializer) !== null && _a !== void 0 ? _a : this.typeOptionsBase.serializer;
175
- },
176
- enumerable: false,
177
- configurable: true
178
- });
179
- Object.defineProperty(TypeMetadata.prototype, "preserveNull", {
180
- get: function () {
181
- var _a;
182
- return (_a = this.typeOptions.preserveNull) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveNull;
183
- },
184
- enumerable: false,
185
- configurable: true
186
- });
187
- Object.defineProperty(TypeMetadata.prototype, "useDefaultValue", {
188
- get: function () {
189
- var _a;
190
- return (_a = this.typeOptions.useDefaultValue) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useDefaultValue;
191
- },
192
- enumerable: false,
193
- configurable: true
194
- });
195
- Object.defineProperty(TypeMetadata.prototype, "useImplicitConversion", {
196
- get: function () {
197
- var _a;
198
- return (_a = this.typeOptions.useImplicitConversion) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useImplicitConversion;
199
- },
200
- enumerable: false,
201
- configurable: true
202
- });
203
- Object.defineProperty(TypeMetadata.prototype, "propertySorter", {
204
- get: function () {
205
- var _a;
206
- return (_a = this.typeOptions.propertySorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.propertySorter;
207
- },
208
- enumerable: false,
209
- configurable: true
210
- });
211
- Object.defineProperty(TypeMetadata.prototype, "sortedPropertyMetadatas", {
212
- get: function () {
213
- var propertySorter = this.propertySorter;
214
- var propertyMetadatas = this.propertyMetadataMap.values();
215
- if (isNil(propertySorter)) {
216
- return propertyMetadatas;
217
- }
218
- var sortedPropertyMetadatas = Array.from(propertyMetadatas).sort(propertySorter.sort);
219
- return sortedPropertyMetadatas[Symbol.iterator]();
220
- },
221
- enumerable: false,
222
- configurable: true
223
- });
224
- Object.defineProperty(TypeMetadata.prototype, "injectSorter", {
225
- get: function () {
226
- var _a;
227
- return (_a = this.typeOptions.injectSorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injectSorter;
228
- },
229
- enumerable: false,
230
- configurable: true
231
- });
232
- Object.defineProperty(TypeMetadata.prototype, "sortedInjectMetadatas", {
233
- get: function () {
234
- var injectSorter = this.injectSorter;
235
- var injectMetadatas = this.injectMetadataMap.values();
236
- if (isNil(injectSorter)) {
237
- return injectMetadatas;
238
- }
239
- var sortedInjectMetadatas = Array.from(injectMetadatas).sort(injectSorter.sort);
240
- return sortedInjectMetadatas[Symbol.iterator]();
241
- },
242
- enumerable: false,
243
- configurable: true
244
- });
245
- Object.defineProperty(TypeMetadata.prototype, "propertyOptionsMap", {
246
- get: function () {
247
- var propertyOptionsMap = this.typeOptions.propertyOptionsMap;
248
- if (isNil(propertyOptionsMap)) {
249
- propertyOptionsMap = new Map();
250
- this.typeOptions.propertyOptionsMap = propertyOptionsMap;
251
- }
252
- return propertyOptionsMap;
253
- },
254
- enumerable: false,
255
- configurable: true
256
- });
257
- Object.defineProperty(TypeMetadata.prototype, "injectOptionsMap", {
258
- get: function () {
259
- var injectOptionsMap = this.typeOptions.injectOptionsMap;
260
- if (isNil(injectOptionsMap)) {
261
- injectOptionsMap = new Map();
262
- this.typeOptions.injectOptionsMap = injectOptionsMap;
263
- }
264
- return injectOptionsMap;
265
- },
266
- enumerable: false,
267
- configurable: true
268
- });
269
- TypeMetadata.prototype.constructTypeOptions = function (typeOptions) {
270
- return typeOptions;
271
- };
272
- TypeMetadata.prototype.deriveParentTypeMetadataProperties = function () {
273
- var e_1, _a;
274
- if (isNil(this.parentTypeMetadata)) {
275
- return this;
276
- }
277
- try {
278
- for (var _b = __values(this.parentTypeMetadata.propertyMetadataMap), _c = _b.next(); !_c.done; _c = _b.next()) {
279
- var _d = __read(_c.value, 2), propertyName = _d[0], propertyMetadata = _d[1];
280
- this.propertyMetadataMap.set(propertyName, propertyMetadata);
281
- }
282
- }
283
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
284
- finally {
285
- try {
286
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
287
- }
288
- finally { if (e_1) throw e_1.error; }
289
- }
290
- this.parentTypeMetadata.childrenTypeMetadataMap.set(this.typeFn, this);
291
- return this;
292
- };
293
- TypeMetadata.prototype.reflectInjectMetadata = function () {
294
- var _a;
295
- if (this.typeFn.length === 0) {
296
- return this;
297
- }
298
- var injectTypeFns = ((_a = getOwnReflectMetadata('design:paramtypes', this.typeFn)) !== null && _a !== void 0 ? _a : new Array());
299
- for (var injectIndex = 0; injectIndex < injectTypeFns.length; injectIndex++) {
300
- if (!this.injectMetadataMap.has(injectIndex)) {
301
- this.configureInjectMetadata(injectIndex, { typeFn: injectTypeFns[injectIndex] });
302
- }
303
- }
304
- return this;
305
- };
306
- TypeMetadata.prototype.hasAlias = function (alias) {
307
- this.releaseAlias();
308
- this.typeOptions.alias = alias;
309
- if (!isNil(alias)) {
310
- this.typeFnMap.set(alias, this.typeFn);
311
- }
312
- return this;
313
- };
314
- TypeMetadata.prototype.releaseAlias = function () {
315
- var alias = this.alias;
316
- if (!isNil(alias) && this.typeFnMap.has(alias)) {
317
- this.typeFnMap.delete(alias);
318
- }
319
- return this;
320
- };
321
- TypeMetadata.prototype.hasCustomData = function (customData) {
322
- var _a;
323
- this.typeOptions.customData = merge((_a = this.typeOptions.customData) !== null && _a !== void 0 ? _a : {}, customData !== null && customData !== void 0 ? customData : {});
324
- return this;
325
- };
326
- TypeMetadata.prototype.hasDefaultValue = function (defaultValue) {
327
- this.typeOptions.defaultValue = defaultValue;
328
- return this;
329
- };
330
- TypeMetadata.prototype.hasSerializedDefaultValue = function (serializedDefaultValue) {
331
- this.typeOptions.serializedDefaultValue = serializedDefaultValue;
332
- return this;
333
- };
334
- TypeMetadata.prototype.hasDeserializedDefaultValue = function (deserializedDefaultValue) {
335
- this.typeOptions.deserializedDefaultValue = deserializedDefaultValue;
336
- return this;
337
- };
338
- TypeMetadata.prototype.hasDiscriminator = function (discriminator) {
339
- this.typeOptions.discriminator = discriminator;
340
- return this;
341
- };
342
- TypeMetadata.prototype.hasDiscriminant = function (discriminant) {
343
- this.typeOptions.discriminant = discriminant;
344
- if (!isNil(discriminant)) {
345
- this.provideDiscriminant(this.typeFn, discriminant);
346
- }
347
- return this;
348
- };
349
- TypeMetadata.prototype.provideDiscriminant = function (typeFn, discriminant) {
350
- this.discriminantMap.set(typeFn, discriminant);
351
- if (!isNil(this.parentTypeMetadata)) {
352
- this.parentTypeMetadata.provideDiscriminant(typeFn, discriminant);
353
- }
354
- return this;
355
- };
356
- TypeMetadata.prototype.hasFactory = function (factory) {
357
- this.typeOptions.factory = factory;
358
- return this;
359
- };
360
- TypeMetadata.prototype.isInjectable = function (injectable) {
361
- if (injectable === void 0) { injectable = true; }
362
- this.typeOptions.injectable = injectable;
363
- return this;
364
- };
365
- TypeMetadata.prototype.hasInjector = function (injector) {
366
- this.typeOptions.injector = injector;
367
- return this;
368
- };
369
- TypeMetadata.prototype.hasLog = function (log) {
370
- this.typeOptions.log = log;
371
- return this;
372
- };
373
- TypeMetadata.prototype.hasNamingConvention = function (namingConvention) {
374
- this.typeOptions.namingConvention = namingConvention;
375
- return this;
376
- };
377
- TypeMetadata.prototype.shouldPreserveDiscriminator = function (preserveDiscriminator) {
378
- if (preserveDiscriminator === void 0) { preserveDiscriminator = true; }
379
- this.typeOptions.preserveDiscriminator = preserveDiscriminator;
380
- return this;
381
- };
382
- TypeMetadata.prototype.hasReferenceHandler = function (referenceHandler) {
383
- this.typeOptions.referenceHandler = referenceHandler;
384
- return this;
385
- };
386
- TypeMetadata.prototype.hasSerializer = function (serializer) {
387
- this.typeOptions.serializer = serializer;
388
- return this;
389
- };
390
- TypeMetadata.prototype.shouldPreserveNull = function (preserveNull) {
391
- if (preserveNull === void 0) { preserveNull = true; }
392
- this.typeOptions.preserveNull = preserveNull;
393
- return this;
394
- };
395
- TypeMetadata.prototype.shouldUseDefaultValue = function (useDefaultValue) {
396
- if (useDefaultValue === void 0) { useDefaultValue = true; }
397
- this.typeOptions.useDefaultValue = useDefaultValue;
398
- return this;
399
- };
400
- TypeMetadata.prototype.shouldUseImplicitConversion = function (useImplicitConversion) {
401
- if (useImplicitConversion === void 0) { useImplicitConversion = true; }
402
- this.typeOptions.useImplicitConversion = useImplicitConversion;
403
- return this;
404
- };
405
- TypeMetadata.prototype.hasPropertySorter = function (propertySorter) {
406
- this.typeOptions.propertySorter = propertySorter;
407
- return this;
408
- };
409
- TypeMetadata.prototype.hasInjectSorter = function (injectSorter) {
410
- this.typeOptions.injectSorter = injectSorter;
411
- return this;
412
- };
413
- TypeMetadata.prototype.configurePropertyMetadata = function (propertyName, propertyOptions) {
414
- var propertyMetadata = this.propertyMetadataMap.get(propertyName);
415
- if (isNil(propertyMetadata)) {
416
- propertyMetadata = new PropertyMetadata(this, propertyName, propertyOptions !== null && propertyOptions !== void 0 ? propertyOptions : {});
417
- this.propertyMetadataMap.set(propertyName, propertyMetadata);
418
- this.propertyOptionsMap.set(propertyName, propertyMetadata.propertyOptions);
419
- return propertyMetadata;
420
- }
421
- if (!isNil(propertyOptions)) {
422
- propertyMetadata.configure(propertyOptions);
423
- }
424
- return propertyMetadata;
425
- };
426
- TypeMetadata.prototype.configureInjectMetadata = function (injectIndex, injectOptions) {
427
- var injectMetadata = this.injectMetadataMap.get(injectIndex);
428
- if (isNil(injectMetadata)) {
429
- injectMetadata = new InjectMetadata(this, injectIndex, injectOptions !== null && injectOptions !== void 0 ? injectOptions : {});
430
- this.injectMetadataMap.set(injectIndex, injectMetadata);
431
- this.injectOptionsMap.set(injectIndex, injectMetadata.injectOptions);
432
- return injectMetadata;
433
- }
434
- if (!isNil(injectOptions)) {
435
- injectMetadata.configure(injectOptions);
436
- }
437
- return injectMetadata;
438
- };
439
- TypeMetadata.prototype.hasPropertyMetadataMap = function (propertyOptionsMap) {
440
- var e_2, _a;
441
- try {
442
- for (var propertyOptionsMap_1 = __values(propertyOptionsMap), propertyOptionsMap_1_1 = propertyOptionsMap_1.next(); !propertyOptionsMap_1_1.done; propertyOptionsMap_1_1 = propertyOptionsMap_1.next()) {
443
- var _b = __read(propertyOptionsMap_1_1.value, 2), propertyName = _b[0], propertyOptions = _b[1];
444
- this.configurePropertyMetadata(propertyName, propertyOptions);
445
- }
446
- }
447
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
448
- finally {
449
- try {
450
- if (propertyOptionsMap_1_1 && !propertyOptionsMap_1_1.done && (_a = propertyOptionsMap_1.return)) _a.call(propertyOptionsMap_1);
451
- }
452
- finally { if (e_2) throw e_2.error; }
453
- }
454
- return this;
455
- };
456
- TypeMetadata.prototype.hasInjectMetadataMap = function (injectOptionsMap) {
457
- var e_3, _a;
458
- try {
459
- for (var injectOptionsMap_1 = __values(injectOptionsMap), injectOptionsMap_1_1 = injectOptionsMap_1.next(); !injectOptionsMap_1_1.done; injectOptionsMap_1_1 = injectOptionsMap_1.next()) {
460
- var _b = __read(injectOptionsMap_1_1.value, 2), injectIndex = _b[0], injectOptions = _b[1];
461
- this.configureInjectMetadata(injectIndex, injectOptions);
462
- }
463
- }
464
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
465
- finally {
466
- try {
467
- if (injectOptionsMap_1_1 && !injectOptionsMap_1_1.done && (_a = injectOptionsMap_1.return)) _a.call(injectOptionsMap_1);
468
- }
469
- finally { if (e_3) throw e_3.error; }
470
- }
471
- return this;
472
- };
473
- TypeMetadata.prototype.configure = function (typeOptions) {
474
- if (!isUndefined(typeOptions.alias)) {
475
- this.hasAlias(typeOptions.alias);
476
- }
477
- if (!isUndefined(typeOptions.customData)) {
478
- this.hasCustomData(typeOptions.customData);
479
- }
480
- if (!isUndefined(typeOptions.defaultValue)) {
481
- this.hasDefaultValue(typeOptions.defaultValue);
482
- }
483
- if (!isUndefined(typeOptions.serializedDefaultValue)) {
484
- this.hasSerializedDefaultValue(typeOptions.serializedDefaultValue);
485
- }
486
- if (!isUndefined(typeOptions.deserializedDefaultValue)) {
487
- this.hasDeserializedDefaultValue(typeOptions.deserializedDefaultValue);
488
- }
489
- if (!isUndefined(typeOptions.discriminator)) {
490
- this.hasDiscriminator(typeOptions.discriminator);
491
- }
492
- if (!isUndefined(typeOptions.discriminant)) {
493
- this.hasDiscriminant(typeOptions.discriminant);
494
- }
495
- if (!isUndefined(typeOptions.factory)) {
496
- this.hasFactory(typeOptions.factory);
497
- }
498
- if (!isUndefined(typeOptions.injectable)) {
499
- this.isInjectable(typeOptions.injectable);
500
- }
501
- if (!isUndefined(typeOptions.injector)) {
502
- this.hasInjector(typeOptions.injector);
503
- }
504
- if (!isUndefined(typeOptions.log)) {
505
- this.hasLog(typeOptions.log);
506
- }
507
- if (!isUndefined(typeOptions.namingConvention)) {
508
- this.hasNamingConvention(typeOptions.namingConvention);
509
- }
510
- if (!isUndefined(typeOptions.preserveDiscriminator)) {
511
- this.shouldPreserveDiscriminator(typeOptions.preserveDiscriminator);
512
- }
513
- if (!isUndefined(typeOptions.referenceHandler)) {
514
- this.hasReferenceHandler(typeOptions.referenceHandler);
515
- }
516
- if (!isUndefined(typeOptions.serializer)) {
517
- this.hasSerializer(typeOptions.serializer);
518
- }
519
- if (!isUndefined(typeOptions.preserveNull)) {
520
- this.shouldPreserveNull(typeOptions.preserveNull);
521
- }
522
- if (!isUndefined(typeOptions.useDefaultValue)) {
523
- this.shouldUseDefaultValue(typeOptions.useDefaultValue);
524
- }
525
- if (!isUndefined(typeOptions.useImplicitConversion)) {
526
- this.shouldUseImplicitConversion(typeOptions.useImplicitConversion);
527
- }
528
- if (!isUndefined(typeOptions.propertyOptionsMap)) {
529
- this.hasPropertyMetadataMap(typeOptions.propertyOptionsMap);
530
- }
531
- if (!isUndefined(typeOptions.injectOptionsMap)) {
532
- this.hasInjectMetadataMap(typeOptions.injectOptionsMap);
533
- }
534
- if (!isUndefined(typeOptions.propertySorter)) {
535
- this.hasPropertySorter(typeOptions.propertySorter);
536
- }
537
- if (!isUndefined(typeOptions.injectSorter)) {
538
- this.hasInjectSorter(typeOptions.injectSorter);
539
- }
540
- return this;
541
- };
542
- return TypeMetadata;
543
- }(Metadata));
544
- export { TypeMetadata };
1
+ import { __extends, __read, __values } from "tslib";
2
+ import { isFunction, isNil, isUndefined } from 'lodash';
3
+ import { CustomContext } from './custom-context';
4
+ import { getOwnReflectMetadata } from './functions/get-own-reflect-metadata';
5
+ import { nameOf } from './functions/name-of';
6
+ import { InjectMetadata } from './inject-metadata';
7
+ import { Metadata } from './metadata';
8
+ import { PropertyMetadata } from './property-metadata';
9
+ var TypeMetadata = (function (_super) {
10
+ __extends(TypeMetadata, _super);
11
+ function TypeMetadata(typeManager, typeFn, typeOptions, parentTypeMetadata) {
12
+ var _this = _super.call(this, typeManager) || this;
13
+ _this.childrenTypeMetadataMap = new Map();
14
+ _this.discriminantMap = new Map();
15
+ _this.propertyMetadataMap = new Map();
16
+ _this.injectMetadataMap = new Map();
17
+ _this.typeName = nameOf(typeFn);
18
+ _this.typeFn = typeFn;
19
+ _this.typeOptionsBase = typeManager.typeOptionsBase;
20
+ _this.typeOptions = _this.constructTypeOptions(typeOptions);
21
+ _this.typeInternals = _this.constructTypeInternals();
22
+ _this.parentTypeMetadata = parentTypeMetadata;
23
+ _this.deriveParentTypeMetadataProperties();
24
+ _this.hasDiscriminant(_this.discriminant);
25
+ _this.configure(typeOptions);
26
+ return _this;
27
+ }
28
+ Object.defineProperty(TypeMetadata.prototype, "alias", {
29
+ get: function () {
30
+ return this.typeOptions.alias;
31
+ },
32
+ enumerable: false,
33
+ configurable: true
34
+ });
35
+ Object.defineProperty(TypeMetadata.prototype, "customOptions", {
36
+ get: function () {
37
+ return this.typeOptions.customOptions;
38
+ },
39
+ enumerable: false,
40
+ configurable: true
41
+ });
42
+ Object.defineProperty(TypeMetadata.prototype, "customContext", {
43
+ get: function () {
44
+ var customContext = this.typeInternals.customContext;
45
+ if (isNil(customContext)) {
46
+ this.typeOptions.customOptions = new Array();
47
+ this.typeInternals.customContext = new CustomContext(this.typeOptions.customOptions);
48
+ customContext = this.typeInternals.customContext;
49
+ }
50
+ return customContext;
51
+ },
52
+ enumerable: false,
53
+ configurable: true
54
+ });
55
+ Object.defineProperty(TypeMetadata.prototype, "serializedNullValue", {
56
+ get: function () {
57
+ if (this.preserveNull) {
58
+ return null;
59
+ }
60
+ return this.serializedDefaultValue;
61
+ },
62
+ enumerable: false,
63
+ configurable: true
64
+ });
65
+ Object.defineProperty(TypeMetadata.prototype, "serializedDefaultValue", {
66
+ get: function () {
67
+ var _a;
68
+ if (this.useDefaultValue) {
69
+ var serializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.serializedDefaultValue;
70
+ var defaultValue = isFunction(serializedDefaultValue)
71
+ ? serializedDefaultValue()
72
+ : serializedDefaultValue;
73
+ return defaultValue;
74
+ }
75
+ return undefined;
76
+ },
77
+ enumerable: false,
78
+ configurable: true
79
+ });
80
+ Object.defineProperty(TypeMetadata.prototype, "deserializedNullValue", {
81
+ get: function () {
82
+ if (this.preserveNull) {
83
+ return null;
84
+ }
85
+ return this.deserializedDefaultValue;
86
+ },
87
+ enumerable: false,
88
+ configurable: true
89
+ });
90
+ Object.defineProperty(TypeMetadata.prototype, "deserializedDefaultValue", {
91
+ get: function () {
92
+ var _a;
93
+ if (this.useDefaultValue) {
94
+ var deserializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.deserializedDefaultValue;
95
+ var defaultValue = isFunction(deserializedDefaultValue)
96
+ ? deserializedDefaultValue()
97
+ : deserializedDefaultValue;
98
+ return defaultValue;
99
+ }
100
+ return undefined;
101
+ },
102
+ enumerable: false,
103
+ configurable: true
104
+ });
105
+ Object.defineProperty(TypeMetadata.prototype, "discriminant", {
106
+ get: function () {
107
+ var _a;
108
+ return (_a = this.typeOptions.discriminant) !== null && _a !== void 0 ? _a : this.typeName;
109
+ },
110
+ enumerable: false,
111
+ configurable: true
112
+ });
113
+ Object.defineProperty(TypeMetadata.prototype, "discriminator", {
114
+ get: function () {
115
+ var _a;
116
+ return (_a = this.typeOptions.discriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.discriminator;
117
+ },
118
+ enumerable: false,
119
+ configurable: true
120
+ });
121
+ Object.defineProperty(TypeMetadata.prototype, "factory", {
122
+ get: function () {
123
+ var _a;
124
+ return (_a = this.typeOptions.factory) !== null && _a !== void 0 ? _a : this.typeOptionsBase.factory;
125
+ },
126
+ enumerable: false,
127
+ configurable: true
128
+ });
129
+ Object.defineProperty(TypeMetadata.prototype, "injectable", {
130
+ get: function () {
131
+ return this.typeOptions.injectable;
132
+ },
133
+ enumerable: false,
134
+ configurable: true
135
+ });
136
+ Object.defineProperty(TypeMetadata.prototype, "injector", {
137
+ get: function () {
138
+ var _a;
139
+ return (_a = this.typeOptions.injector) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injector;
140
+ },
141
+ enumerable: false,
142
+ configurable: true
143
+ });
144
+ Object.defineProperty(TypeMetadata.prototype, "log", {
145
+ get: function () {
146
+ var _a;
147
+ return (_a = this.typeOptions.log) !== null && _a !== void 0 ? _a : this.typeOptionsBase.log;
148
+ },
149
+ enumerable: false,
150
+ configurable: true
151
+ });
152
+ Object.defineProperty(TypeMetadata.prototype, "namingConvention", {
153
+ get: function () {
154
+ var _a;
155
+ return (_a = this.typeOptions.namingConvention) !== null && _a !== void 0 ? _a : this.typeOptionsBase.namingConvention;
156
+ },
157
+ enumerable: false,
158
+ configurable: true
159
+ });
160
+ Object.defineProperty(TypeMetadata.prototype, "polymorphic", {
161
+ get: function () {
162
+ return this.discriminantMap.size > 1;
163
+ },
164
+ enumerable: false,
165
+ configurable: true
166
+ });
167
+ Object.defineProperty(TypeMetadata.prototype, "preserveDiscriminator", {
168
+ get: function () {
169
+ var _a;
170
+ return (_a = this.typeOptions.preserveDiscriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveDiscriminator;
171
+ },
172
+ enumerable: false,
173
+ configurable: true
174
+ });
175
+ Object.defineProperty(TypeMetadata.prototype, "referenceHandler", {
176
+ get: function () {
177
+ var _a;
178
+ return (_a = this.typeOptions.referenceHandler) !== null && _a !== void 0 ? _a : this.typeOptionsBase.referenceHandler;
179
+ },
180
+ enumerable: false,
181
+ configurable: true
182
+ });
183
+ Object.defineProperty(TypeMetadata.prototype, "serializer", {
184
+ get: function () {
185
+ var _a;
186
+ return (_a = this.typeOptions.serializer) !== null && _a !== void 0 ? _a : this.typeOptionsBase.serializer;
187
+ },
188
+ enumerable: false,
189
+ configurable: true
190
+ });
191
+ Object.defineProperty(TypeMetadata.prototype, "preserveNull", {
192
+ get: function () {
193
+ var _a;
194
+ return (_a = this.typeOptions.preserveNull) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveNull;
195
+ },
196
+ enumerable: false,
197
+ configurable: true
198
+ });
199
+ Object.defineProperty(TypeMetadata.prototype, "useDefaultValue", {
200
+ get: function () {
201
+ var _a;
202
+ return (_a = this.typeOptions.useDefaultValue) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useDefaultValue;
203
+ },
204
+ enumerable: false,
205
+ configurable: true
206
+ });
207
+ Object.defineProperty(TypeMetadata.prototype, "useImplicitConversion", {
208
+ get: function () {
209
+ var _a;
210
+ return (_a = this.typeOptions.useImplicitConversion) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useImplicitConversion;
211
+ },
212
+ enumerable: false,
213
+ configurable: true
214
+ });
215
+ Object.defineProperty(TypeMetadata.prototype, "propertySorter", {
216
+ get: function () {
217
+ var _a;
218
+ return (_a = this.typeOptions.propertySorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.propertySorter;
219
+ },
220
+ enumerable: false,
221
+ configurable: true
222
+ });
223
+ Object.defineProperty(TypeMetadata.prototype, "sortedPropertyMetadatas", {
224
+ get: function () {
225
+ var propertySorter = this.propertySorter;
226
+ var propertyMetadatas = this.propertyMetadataMap.values();
227
+ if (isNil(propertySorter)) {
228
+ return propertyMetadatas;
229
+ }
230
+ var sortedPropertyMetadatas = Array.from(propertyMetadatas).sort(propertySorter.sort);
231
+ return sortedPropertyMetadatas[Symbol.iterator]();
232
+ },
233
+ enumerable: false,
234
+ configurable: true
235
+ });
236
+ Object.defineProperty(TypeMetadata.prototype, "injectSorter", {
237
+ get: function () {
238
+ var _a;
239
+ return (_a = this.typeOptions.injectSorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injectSorter;
240
+ },
241
+ enumerable: false,
242
+ configurable: true
243
+ });
244
+ Object.defineProperty(TypeMetadata.prototype, "sortedInjectMetadatas", {
245
+ get: function () {
246
+ var injectSorter = this.injectSorter;
247
+ var injectMetadatas = this.injectMetadataMap.values();
248
+ if (isNil(injectSorter)) {
249
+ return injectMetadatas;
250
+ }
251
+ var sortedInjectMetadatas = Array.from(injectMetadatas).sort(injectSorter.sort);
252
+ return sortedInjectMetadatas[Symbol.iterator]();
253
+ },
254
+ enumerable: false,
255
+ configurable: true
256
+ });
257
+ Object.defineProperty(TypeMetadata.prototype, "propertyOptionsMap", {
258
+ get: function () {
259
+ var propertyOptionsMap = this.typeOptions.propertyOptionsMap;
260
+ if (isNil(propertyOptionsMap)) {
261
+ propertyOptionsMap = new Map();
262
+ this.typeOptions.propertyOptionsMap = propertyOptionsMap;
263
+ }
264
+ return propertyOptionsMap;
265
+ },
266
+ enumerable: false,
267
+ configurable: true
268
+ });
269
+ Object.defineProperty(TypeMetadata.prototype, "injectOptionsMap", {
270
+ get: function () {
271
+ var injectOptionsMap = this.typeOptions.injectOptionsMap;
272
+ if (isNil(injectOptionsMap)) {
273
+ injectOptionsMap = new Map();
274
+ this.typeOptions.injectOptionsMap = injectOptionsMap;
275
+ }
276
+ return injectOptionsMap;
277
+ },
278
+ enumerable: false,
279
+ configurable: true
280
+ });
281
+ TypeMetadata.prototype.constructTypeOptions = function (typeOptions) {
282
+ return typeOptions;
283
+ };
284
+ TypeMetadata.prototype.constructTypeInternals = function () {
285
+ var customOptions = this.typeOptions.customOptions;
286
+ var customContext = isNil(customOptions) ? undefined : new CustomContext(customOptions);
287
+ var typeInternals = { customContext: customContext };
288
+ return typeInternals;
289
+ };
290
+ TypeMetadata.prototype.deriveParentTypeMetadataProperties = function () {
291
+ var e_1, _a;
292
+ if (isNil(this.parentTypeMetadata)) {
293
+ return this;
294
+ }
295
+ try {
296
+ for (var _b = __values(this.parentTypeMetadata.propertyMetadataMap), _c = _b.next(); !_c.done; _c = _b.next()) {
297
+ var _d = __read(_c.value, 2), propertyName = _d[0], propertyMetadata = _d[1];
298
+ this.propertyMetadataMap.set(propertyName, propertyMetadata);
299
+ }
300
+ }
301
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
302
+ finally {
303
+ try {
304
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
305
+ }
306
+ finally { if (e_1) throw e_1.error; }
307
+ }
308
+ this.parentTypeMetadata.childrenTypeMetadataMap.set(this.typeFn, this);
309
+ return this;
310
+ };
311
+ TypeMetadata.prototype.reflectInjectMetadata = function () {
312
+ var _a;
313
+ if (this.typeFn.length === 0) {
314
+ return this;
315
+ }
316
+ var injectTypeFns = ((_a = getOwnReflectMetadata('design:paramtypes', this.typeFn)) !== null && _a !== void 0 ? _a : new Array());
317
+ for (var injectIndex = 0; injectIndex < injectTypeFns.length; injectIndex++) {
318
+ if (!this.injectMetadataMap.has(injectIndex)) {
319
+ this.configureInjectMetadata(injectIndex, { typeFn: injectTypeFns[injectIndex] });
320
+ }
321
+ }
322
+ return this;
323
+ };
324
+ TypeMetadata.prototype.hasAlias = function (alias) {
325
+ this.releaseAlias();
326
+ this.typeOptions.alias = alias;
327
+ if (!isNil(alias)) {
328
+ this.typeFnMap.set(alias, this.typeFn);
329
+ }
330
+ return this;
331
+ };
332
+ TypeMetadata.prototype.releaseAlias = function () {
333
+ var alias = this.alias;
334
+ if (!isNil(alias) && this.typeFnMap.has(alias)) {
335
+ this.typeFnMap.delete(alias);
336
+ }
337
+ return this;
338
+ };
339
+ TypeMetadata.prototype.hasCustomOptions = function (customOptions) {
340
+ if (!isNil(customOptions)) {
341
+ this.customContext.configure(customOptions);
342
+ }
343
+ return this;
344
+ };
345
+ TypeMetadata.prototype.hasDefaultValue = function (defaultValue) {
346
+ this.typeOptions.defaultValue = defaultValue;
347
+ return this;
348
+ };
349
+ TypeMetadata.prototype.hasSerializedDefaultValue = function (serializedDefaultValue) {
350
+ this.typeOptions.serializedDefaultValue = serializedDefaultValue;
351
+ return this;
352
+ };
353
+ TypeMetadata.prototype.hasDeserializedDefaultValue = function (deserializedDefaultValue) {
354
+ this.typeOptions.deserializedDefaultValue = deserializedDefaultValue;
355
+ return this;
356
+ };
357
+ TypeMetadata.prototype.hasDiscriminator = function (discriminator) {
358
+ this.typeOptions.discriminator = discriminator;
359
+ return this;
360
+ };
361
+ TypeMetadata.prototype.hasDiscriminant = function (discriminant) {
362
+ this.typeOptions.discriminant = discriminant;
363
+ if (!isNil(discriminant)) {
364
+ this.provideDiscriminant(this.typeFn, discriminant);
365
+ }
366
+ return this;
367
+ };
368
+ TypeMetadata.prototype.provideDiscriminant = function (typeFn, discriminant) {
369
+ this.discriminantMap.set(typeFn, discriminant);
370
+ if (!isNil(this.parentTypeMetadata)) {
371
+ this.parentTypeMetadata.provideDiscriminant(typeFn, discriminant);
372
+ }
373
+ return this;
374
+ };
375
+ TypeMetadata.prototype.hasFactory = function (factory) {
376
+ this.typeOptions.factory = factory;
377
+ return this;
378
+ };
379
+ TypeMetadata.prototype.isInjectable = function (injectable) {
380
+ if (injectable === void 0) { injectable = true; }
381
+ this.typeOptions.injectable = injectable;
382
+ return this;
383
+ };
384
+ TypeMetadata.prototype.hasInjector = function (injector) {
385
+ this.typeOptions.injector = injector;
386
+ return this;
387
+ };
388
+ TypeMetadata.prototype.hasLog = function (log) {
389
+ this.typeOptions.log = log;
390
+ return this;
391
+ };
392
+ TypeMetadata.prototype.hasNamingConvention = function (namingConvention) {
393
+ this.typeOptions.namingConvention = namingConvention;
394
+ return this;
395
+ };
396
+ TypeMetadata.prototype.shouldPreserveDiscriminator = function (preserveDiscriminator) {
397
+ if (preserveDiscriminator === void 0) { preserveDiscriminator = true; }
398
+ this.typeOptions.preserveDiscriminator = preserveDiscriminator;
399
+ return this;
400
+ };
401
+ TypeMetadata.prototype.hasReferenceHandler = function (referenceHandler) {
402
+ this.typeOptions.referenceHandler = referenceHandler;
403
+ return this;
404
+ };
405
+ TypeMetadata.prototype.hasSerializer = function (serializer) {
406
+ this.typeOptions.serializer = serializer;
407
+ return this;
408
+ };
409
+ TypeMetadata.prototype.shouldPreserveNull = function (preserveNull) {
410
+ if (preserveNull === void 0) { preserveNull = true; }
411
+ this.typeOptions.preserveNull = preserveNull;
412
+ return this;
413
+ };
414
+ TypeMetadata.prototype.shouldUseDefaultValue = function (useDefaultValue) {
415
+ if (useDefaultValue === void 0) { useDefaultValue = true; }
416
+ this.typeOptions.useDefaultValue = useDefaultValue;
417
+ return this;
418
+ };
419
+ TypeMetadata.prototype.shouldUseImplicitConversion = function (useImplicitConversion) {
420
+ if (useImplicitConversion === void 0) { useImplicitConversion = true; }
421
+ this.typeOptions.useImplicitConversion = useImplicitConversion;
422
+ return this;
423
+ };
424
+ TypeMetadata.prototype.hasPropertySorter = function (propertySorter) {
425
+ this.typeOptions.propertySorter = propertySorter;
426
+ return this;
427
+ };
428
+ TypeMetadata.prototype.hasInjectSorter = function (injectSorter) {
429
+ this.typeOptions.injectSorter = injectSorter;
430
+ return this;
431
+ };
432
+ TypeMetadata.prototype.configurePropertyMetadata = function (propertyName, propertyOptions) {
433
+ var propertyMetadata = this.propertyMetadataMap.get(propertyName);
434
+ if (isNil(propertyMetadata)) {
435
+ propertyMetadata = new PropertyMetadata(this, propertyName, propertyOptions !== null && propertyOptions !== void 0 ? propertyOptions : {});
436
+ this.propertyMetadataMap.set(propertyName, propertyMetadata);
437
+ this.propertyOptionsMap.set(propertyName, propertyMetadata.propertyOptions);
438
+ return propertyMetadata;
439
+ }
440
+ if (!isNil(propertyOptions)) {
441
+ propertyMetadata.configure(propertyOptions);
442
+ }
443
+ return propertyMetadata;
444
+ };
445
+ TypeMetadata.prototype.configureInjectMetadata = function (injectIndex, injectOptions) {
446
+ var injectMetadata = this.injectMetadataMap.get(injectIndex);
447
+ if (isNil(injectMetadata)) {
448
+ injectMetadata = new InjectMetadata(this, injectIndex, injectOptions !== null && injectOptions !== void 0 ? injectOptions : {});
449
+ this.injectMetadataMap.set(injectIndex, injectMetadata);
450
+ this.injectOptionsMap.set(injectIndex, injectMetadata.injectOptions);
451
+ return injectMetadata;
452
+ }
453
+ if (!isNil(injectOptions)) {
454
+ injectMetadata.configure(injectOptions);
455
+ }
456
+ return injectMetadata;
457
+ };
458
+ TypeMetadata.prototype.hasPropertyMetadataMap = function (propertyOptionsMap) {
459
+ var e_2, _a;
460
+ try {
461
+ for (var propertyOptionsMap_1 = __values(propertyOptionsMap), propertyOptionsMap_1_1 = propertyOptionsMap_1.next(); !propertyOptionsMap_1_1.done; propertyOptionsMap_1_1 = propertyOptionsMap_1.next()) {
462
+ var _b = __read(propertyOptionsMap_1_1.value, 2), propertyName = _b[0], propertyOptions = _b[1];
463
+ this.configurePropertyMetadata(propertyName, propertyOptions);
464
+ }
465
+ }
466
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
467
+ finally {
468
+ try {
469
+ if (propertyOptionsMap_1_1 && !propertyOptionsMap_1_1.done && (_a = propertyOptionsMap_1.return)) _a.call(propertyOptionsMap_1);
470
+ }
471
+ finally { if (e_2) throw e_2.error; }
472
+ }
473
+ return this;
474
+ };
475
+ TypeMetadata.prototype.hasInjectMetadataMap = function (injectOptionsMap) {
476
+ var e_3, _a;
477
+ try {
478
+ for (var injectOptionsMap_1 = __values(injectOptionsMap), injectOptionsMap_1_1 = injectOptionsMap_1.next(); !injectOptionsMap_1_1.done; injectOptionsMap_1_1 = injectOptionsMap_1.next()) {
479
+ var _b = __read(injectOptionsMap_1_1.value, 2), injectIndex = _b[0], injectOptions = _b[1];
480
+ this.configureInjectMetadata(injectIndex, injectOptions);
481
+ }
482
+ }
483
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
484
+ finally {
485
+ try {
486
+ if (injectOptionsMap_1_1 && !injectOptionsMap_1_1.done && (_a = injectOptionsMap_1.return)) _a.call(injectOptionsMap_1);
487
+ }
488
+ finally { if (e_3) throw e_3.error; }
489
+ }
490
+ return this;
491
+ };
492
+ TypeMetadata.prototype.configure = function (typeOptions) {
493
+ if (!isUndefined(typeOptions.alias)) {
494
+ this.hasAlias(typeOptions.alias);
495
+ }
496
+ if (!isUndefined(typeOptions.customOptions)) {
497
+ this.hasCustomOptions(typeOptions.customOptions);
498
+ }
499
+ if (!isUndefined(typeOptions.defaultValue)) {
500
+ this.hasDefaultValue(typeOptions.defaultValue);
501
+ }
502
+ if (!isUndefined(typeOptions.serializedDefaultValue)) {
503
+ this.hasSerializedDefaultValue(typeOptions.serializedDefaultValue);
504
+ }
505
+ if (!isUndefined(typeOptions.deserializedDefaultValue)) {
506
+ this.hasDeserializedDefaultValue(typeOptions.deserializedDefaultValue);
507
+ }
508
+ if (!isUndefined(typeOptions.discriminator)) {
509
+ this.hasDiscriminator(typeOptions.discriminator);
510
+ }
511
+ if (!isUndefined(typeOptions.discriminant)) {
512
+ this.hasDiscriminant(typeOptions.discriminant);
513
+ }
514
+ if (!isUndefined(typeOptions.factory)) {
515
+ this.hasFactory(typeOptions.factory);
516
+ }
517
+ if (!isUndefined(typeOptions.injectable)) {
518
+ this.isInjectable(typeOptions.injectable);
519
+ }
520
+ if (!isUndefined(typeOptions.injector)) {
521
+ this.hasInjector(typeOptions.injector);
522
+ }
523
+ if (!isUndefined(typeOptions.log)) {
524
+ this.hasLog(typeOptions.log);
525
+ }
526
+ if (!isUndefined(typeOptions.namingConvention)) {
527
+ this.hasNamingConvention(typeOptions.namingConvention);
528
+ }
529
+ if (!isUndefined(typeOptions.preserveDiscriminator)) {
530
+ this.shouldPreserveDiscriminator(typeOptions.preserveDiscriminator);
531
+ }
532
+ if (!isUndefined(typeOptions.referenceHandler)) {
533
+ this.hasReferenceHandler(typeOptions.referenceHandler);
534
+ }
535
+ if (!isUndefined(typeOptions.serializer)) {
536
+ this.hasSerializer(typeOptions.serializer);
537
+ }
538
+ if (!isUndefined(typeOptions.preserveNull)) {
539
+ this.shouldPreserveNull(typeOptions.preserveNull);
540
+ }
541
+ if (!isUndefined(typeOptions.useDefaultValue)) {
542
+ this.shouldUseDefaultValue(typeOptions.useDefaultValue);
543
+ }
544
+ if (!isUndefined(typeOptions.useImplicitConversion)) {
545
+ this.shouldUseImplicitConversion(typeOptions.useImplicitConversion);
546
+ }
547
+ if (!isUndefined(typeOptions.propertyOptionsMap)) {
548
+ this.hasPropertyMetadataMap(typeOptions.propertyOptionsMap);
549
+ }
550
+ if (!isUndefined(typeOptions.injectOptionsMap)) {
551
+ this.hasInjectMetadataMap(typeOptions.injectOptionsMap);
552
+ }
553
+ if (!isUndefined(typeOptions.propertySorter)) {
554
+ this.hasPropertySorter(typeOptions.propertySorter);
555
+ }
556
+ if (!isUndefined(typeOptions.injectSorter)) {
557
+ this.hasInjectSorter(typeOptions.injectSorter);
558
+ }
559
+ return this;
560
+ };
561
+ return TypeMetadata;
562
+ }(Metadata));
563
+ export { TypeMetadata };
545
564
  //# sourceMappingURL=type-metadata.js.map