@dipscope/type-manager 7.0.0-beta.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 (387) hide show
  1. package/CHANGELOG.md +262 -262
  2. package/CONTRIBUTING.md +58 -58
  3. package/LICENSE.md +201 -201
  4. package/README.md +1901 -1901
  5. package/dist/es2015/alias.js +1 -1
  6. package/dist/es2015/any.js +2 -2
  7. package/dist/es2015/custom-context.js +57 -57
  8. package/dist/es2015/custom-key.js +7 -7
  9. package/dist/es2015/custom-option.js +1 -1
  10. package/dist/es2015/custom-value-resolver.js +1 -1
  11. package/dist/es2015/custom-value.js +1 -1
  12. package/dist/es2015/default-value-resolver.js +1 -1
  13. package/dist/es2015/default-value.js +1 -1
  14. package/dist/es2015/discriminant.js +1 -1
  15. package/dist/es2015/discriminator.js +1 -1
  16. package/dist/es2015/factories/index.js +1 -1
  17. package/dist/es2015/factories/type-factory.js +33 -33
  18. package/dist/es2015/factory.js +1 -1
  19. package/dist/es2015/functions/get-own-reflect-metadata.js +7 -7
  20. package/dist/es2015/functions/get-reflect-metadata.js +7 -7
  21. package/dist/es2015/functions/get-words.js +4 -4
  22. package/dist/es2015/functions/index.js +18 -18
  23. package/dist/es2015/functions/is-arrow-function.js +4 -4
  24. package/dist/es2015/functions/is-ctor-function.js +4 -4
  25. package/dist/es2015/functions/is-data-view.js +3 -3
  26. package/dist/es2015/functions/is-float-32-array.js +3 -3
  27. package/dist/es2015/functions/is-float-64-array.js +3 -3
  28. package/dist/es2015/functions/is-int-16-array.js +3 -3
  29. package/dist/es2015/functions/is-int-32-array.js +3 -3
  30. package/dist/es2015/functions/is-int-8-array.js +3 -3
  31. package/dist/es2015/functions/is-uint-16-array.js +3 -3
  32. package/dist/es2015/functions/is-uint-32-array.js +3 -3
  33. package/dist/es2015/functions/is-uint-8-array.js +3 -3
  34. package/dist/es2015/functions/is-uint-8-clamped-array.js +3 -3
  35. package/dist/es2015/functions/json-parse.js +3 -3
  36. package/dist/es2015/functions/json-stringify.js +66 -66
  37. package/dist/es2015/functions/name-of.js +7 -7
  38. package/dist/es2015/generic-argument.js +1 -1
  39. package/dist/es2015/generic-metadata-resolver.js +1 -1
  40. package/dist/es2015/generic-metadata.js +1 -1
  41. package/dist/es2015/generic-structure.js +1 -1
  42. package/dist/es2015/index.js +70 -70
  43. package/dist/es2015/inject-index.js +1 -1
  44. package/dist/es2015/inject-internals.js +1 -1
  45. package/dist/es2015/inject-metadata.js +62 -62
  46. package/dist/es2015/inject-options.js +1 -1
  47. package/dist/es2015/inject-sorter.js +1 -1
  48. package/dist/es2015/inject-sorters/asc-inject-sorter.js +13 -13
  49. package/dist/es2015/inject-sorters/desc-inject-sorter.js +13 -13
  50. package/dist/es2015/inject-sorters/index.js +2 -2
  51. package/dist/es2015/inject.js +23 -23
  52. package/dist/es2015/injector.js +1 -1
  53. package/dist/es2015/injectors/index.js +1 -1
  54. package/dist/es2015/injectors/singleton-injector.js +30 -30
  55. package/dist/es2015/log-level.js +7 -7
  56. package/dist/es2015/log.js +49 -49
  57. package/dist/es2015/metadata.js +80 -80
  58. package/dist/es2015/naming-convention.js +1 -1
  59. package/dist/es2015/naming-conventions/camel-case-naming-convention.js +16 -16
  60. package/dist/es2015/naming-conventions/flat-case-naming-convention.js +12 -12
  61. package/dist/es2015/naming-conventions/flat-upper-case-naming-convention.js +12 -12
  62. package/dist/es2015/naming-conventions/index.js +8 -8
  63. package/dist/es2015/naming-conventions/kebab-case-naming-convention.js +16 -16
  64. package/dist/es2015/naming-conventions/kebab-upper-case-naming-convention.js +16 -16
  65. package/dist/es2015/naming-conventions/pascal-case-naming-convention.js +17 -17
  66. package/dist/es2015/naming-conventions/snake-case-naming-convention.js +16 -16
  67. package/dist/es2015/naming-conventions/snake-upper-case-naming-convention.js +16 -16
  68. package/dist/es2015/property-internals.js +1 -1
  69. package/dist/es2015/property-metadata.js +268 -268
  70. package/dist/es2015/property-name.js +1 -1
  71. package/dist/es2015/property-options.js +1 -1
  72. package/dist/es2015/property-sorter.js +1 -1
  73. package/dist/es2015/property-sorters/asc-property-sorter.js +13 -13
  74. package/dist/es2015/property-sorters/desc-property-sorter.js +13 -13
  75. package/dist/es2015/property-sorters/index.js +2 -2
  76. package/dist/es2015/property.js +38 -38
  77. package/dist/es2015/reference-callback.js +1 -1
  78. package/dist/es2015/reference-handler.js +1 -1
  79. package/dist/es2015/reference-handlers/circular-reference-handler.js +35 -35
  80. package/dist/es2015/reference-handlers/index.js +3 -3
  81. package/dist/es2015/reference-handlers/json-path-reference-handler.js +68 -68
  82. package/dist/es2015/reference-handlers/plain-reference-handler.js +31 -31
  83. package/dist/es2015/reference-key.js +1 -1
  84. package/dist/es2015/reference-value-getter.js +1 -1
  85. package/dist/es2015/reference-value-setter.js +1 -1
  86. package/dist/es2015/reference-value.js +1 -1
  87. package/dist/es2015/serializer-context-options.js +1 -1
  88. package/dist/es2015/serializer-context.js +281 -281
  89. package/dist/es2015/serializer.js +1 -1
  90. package/dist/es2015/serializers/any-serializer.js +21 -21
  91. package/dist/es2015/serializers/array-buffer-serializer.js +40 -40
  92. package/dist/es2015/serializers/array-serializer.js +59 -59
  93. package/dist/es2015/serializers/boolean-serializer.js +54 -54
  94. package/dist/es2015/serializers/data-view-serializer.js +41 -41
  95. package/dist/es2015/serializers/date-serializer.js +33 -33
  96. package/dist/es2015/serializers/float-32-array-serializer.js +34 -34
  97. package/dist/es2015/serializers/float-64-array-serializer.js +34 -34
  98. package/dist/es2015/serializers/index.js +21 -21
  99. package/dist/es2015/serializers/int-16-array-serializer.js +34 -34
  100. package/dist/es2015/serializers/int-32-array-serializer.js +34 -34
  101. package/dist/es2015/serializers/int-8-array-serializer.js +34 -34
  102. package/dist/es2015/serializers/map-serializer.js +95 -95
  103. package/dist/es2015/serializers/number-serializer.js +48 -48
  104. package/dist/es2015/serializers/set-serializer.js +61 -61
  105. package/dist/es2015/serializers/string-serializer.js +54 -54
  106. package/dist/es2015/serializers/type-serializer.js +120 -120
  107. package/dist/es2015/serializers/uint-16-array-serializer.js +34 -34
  108. package/dist/es2015/serializers/uint-32-array-serializer.js +34 -34
  109. package/dist/es2015/serializers/uint-8-array-serializer.js +34 -34
  110. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js +34 -34
  111. package/dist/es2015/serializers/unknown-serializer.js +21 -21
  112. package/dist/es2015/type-abstraction.js +1 -1
  113. package/dist/es2015/type-argument.js +1 -1
  114. package/dist/es2015/type-configuration.js +1 -1
  115. package/dist/es2015/type-context-entry.js +8 -8
  116. package/dist/es2015/type-context.js +30 -30
  117. package/dist/es2015/type-ctor.js +1 -1
  118. package/dist/es2015/type-fn.js +1 -1
  119. package/dist/es2015/type-internals.js +1 -1
  120. package/dist/es2015/type-like.js +1 -1
  121. package/dist/es2015/type-manager-options.js +1 -1
  122. package/dist/es2015/type-manager.js +319 -319
  123. package/dist/es2015/type-metadata-resolver.js +1 -1
  124. package/dist/es2015/type-metadata-symbol.js +1 -1
  125. package/dist/es2015/type-metadata.js +413 -413
  126. package/dist/es2015/type-name.js +1 -1
  127. package/dist/es2015/type-options-base.js +1 -1
  128. package/dist/es2015/type-options.js +1 -1
  129. package/dist/es2015/type-resolver.js +1 -1
  130. package/dist/es2015/type.js +7 -7
  131. package/dist/es2015/unknown.js +2 -2
  132. package/dist/es5/alias.js +1 -1
  133. package/dist/es5/any.js +6 -6
  134. package/dist/es5/custom-context.js +93 -93
  135. package/dist/es5/custom-key.js +9 -9
  136. package/dist/es5/custom-option.js +1 -1
  137. package/dist/es5/custom-value-resolver.js +1 -1
  138. package/dist/es5/custom-value.js +1 -1
  139. package/dist/es5/default-value-resolver.js +1 -1
  140. package/dist/es5/default-value.js +1 -1
  141. package/dist/es5/discriminant.js +1 -1
  142. package/dist/es5/discriminator.js +1 -1
  143. package/dist/es5/factories/index.js +1 -1
  144. package/dist/es5/factories/type-factory.js +59 -59
  145. package/dist/es5/factory.js +1 -1
  146. package/dist/es5/functions/get-own-reflect-metadata.js +7 -7
  147. package/dist/es5/functions/get-reflect-metadata.js +7 -7
  148. package/dist/es5/functions/get-words.js +4 -4
  149. package/dist/es5/functions/index.js +18 -18
  150. package/dist/es5/functions/is-arrow-function.js +4 -4
  151. package/dist/es5/functions/is-ctor-function.js +4 -4
  152. package/dist/es5/functions/is-data-view.js +3 -3
  153. package/dist/es5/functions/is-float-32-array.js +3 -3
  154. package/dist/es5/functions/is-float-64-array.js +3 -3
  155. package/dist/es5/functions/is-int-16-array.js +3 -3
  156. package/dist/es5/functions/is-int-32-array.js +3 -3
  157. package/dist/es5/functions/is-int-8-array.js +3 -3
  158. package/dist/es5/functions/is-uint-16-array.js +3 -3
  159. package/dist/es5/functions/is-uint-32-array.js +3 -3
  160. package/dist/es5/functions/is-uint-8-array.js +3 -3
  161. package/dist/es5/functions/is-uint-8-clamped-array.js +3 -3
  162. package/dist/es5/functions/json-parse.js +3 -3
  163. package/dist/es5/functions/json-stringify.js +66 -66
  164. package/dist/es5/functions/name-of.js +7 -7
  165. package/dist/es5/generic-argument.js +1 -1
  166. package/dist/es5/generic-metadata-resolver.js +1 -1
  167. package/dist/es5/generic-metadata.js +1 -1
  168. package/dist/es5/generic-structure.js +1 -1
  169. package/dist/es5/index.js +70 -70
  170. package/dist/es5/inject-index.js +1 -1
  171. package/dist/es5/inject-internals.js +1 -1
  172. package/dist/es5/inject-metadata.js +83 -83
  173. package/dist/es5/inject-options.js +1 -1
  174. package/dist/es5/inject-sorter.js +1 -1
  175. package/dist/es5/inject-sorters/asc-inject-sorter.js +17 -17
  176. package/dist/es5/inject-sorters/desc-inject-sorter.js +17 -17
  177. package/dist/es5/inject-sorters/index.js +2 -2
  178. package/dist/es5/inject.js +23 -23
  179. package/dist/es5/injector.js +1 -1
  180. package/dist/es5/injectors/index.js +1 -1
  181. package/dist/es5/injectors/singleton-injector.js +44 -44
  182. package/dist/es5/log-level.js +7 -7
  183. package/dist/es5/log.js +64 -64
  184. package/dist/es5/metadata.js +105 -105
  185. package/dist/es5/naming-convention.js +1 -1
  186. package/dist/es5/naming-conventions/camel-case-naming-convention.js +20 -20
  187. package/dist/es5/naming-conventions/flat-case-naming-convention.js +16 -16
  188. package/dist/es5/naming-conventions/flat-upper-case-naming-convention.js +16 -16
  189. package/dist/es5/naming-conventions/index.js +8 -8
  190. package/dist/es5/naming-conventions/kebab-case-naming-convention.js +20 -20
  191. package/dist/es5/naming-conventions/kebab-upper-case-naming-convention.js +20 -20
  192. package/dist/es5/naming-conventions/pascal-case-naming-convention.js +21 -21
  193. package/dist/es5/naming-conventions/snake-case-naming-convention.js +20 -20
  194. package/dist/es5/naming-conventions/snake-upper-case-naming-convention.js +20 -20
  195. package/dist/es5/property-internals.js +1 -1
  196. package/dist/es5/property-metadata.js +377 -377
  197. package/dist/es5/property-name.js +1 -1
  198. package/dist/es5/property-options.js +1 -1
  199. package/dist/es5/property-sorter.js +1 -1
  200. package/dist/es5/property-sorters/asc-property-sorter.js +17 -17
  201. package/dist/es5/property-sorters/desc-property-sorter.js +17 -17
  202. package/dist/es5/property-sorters/index.js +2 -2
  203. package/dist/es5/property.js +38 -38
  204. package/dist/es5/reference-callback.js +1 -1
  205. package/dist/es5/reference-handler.js +1 -1
  206. package/dist/es5/reference-handlers/circular-reference-handler.js +39 -39
  207. package/dist/es5/reference-handlers/index.js +3 -3
  208. package/dist/es5/reference-handlers/json-path-reference-handler.js +92 -92
  209. package/dist/es5/reference-handlers/plain-reference-handler.js +35 -35
  210. package/dist/es5/reference-key.js +1 -1
  211. package/dist/es5/reference-value-getter.js +1 -1
  212. package/dist/es5/reference-value-setter.js +1 -1
  213. package/dist/es5/reference-value.js +1 -1
  214. package/dist/es5/serializer-context-options.js +1 -1
  215. package/dist/es5/serializer-context.js +416 -416
  216. package/dist/es5/serializer.js +1 -1
  217. package/dist/es5/serializers/any-serializer.js +25 -25
  218. package/dist/es5/serializers/array-buffer-serializer.js +44 -44
  219. package/dist/es5/serializers/array-serializer.js +69 -69
  220. package/dist/es5/serializers/boolean-serializer.js +58 -58
  221. package/dist/es5/serializers/data-view-serializer.js +45 -45
  222. package/dist/es5/serializers/date-serializer.js +37 -37
  223. package/dist/es5/serializers/float-32-array-serializer.js +38 -38
  224. package/dist/es5/serializers/float-64-array-serializer.js +38 -38
  225. package/dist/es5/serializers/index.js +21 -21
  226. package/dist/es5/serializers/int-16-array-serializer.js +38 -38
  227. package/dist/es5/serializers/int-32-array-serializer.js +38 -38
  228. package/dist/es5/serializers/int-8-array-serializer.js +38 -38
  229. package/dist/es5/serializers/map-serializer.js +114 -114
  230. package/dist/es5/serializers/number-serializer.js +52 -52
  231. package/dist/es5/serializers/set-serializer.js +77 -77
  232. package/dist/es5/serializers/string-serializer.js +58 -58
  233. package/dist/es5/serializers/type-serializer.js +153 -153
  234. package/dist/es5/serializers/uint-16-array-serializer.js +38 -38
  235. package/dist/es5/serializers/uint-32-array-serializer.js +38 -38
  236. package/dist/es5/serializers/uint-8-array-serializer.js +38 -38
  237. package/dist/es5/serializers/uint-8-clamped-array-serializer.js +38 -38
  238. package/dist/es5/serializers/unknown-serializer.js +25 -25
  239. package/dist/es5/type-abstraction.js +1 -1
  240. package/dist/es5/type-argument.js +1 -1
  241. package/dist/es5/type-configuration.js +1 -1
  242. package/dist/es5/type-context-entry.js +10 -10
  243. package/dist/es5/type-context.js +32 -32
  244. package/dist/es5/type-ctor.js +1 -1
  245. package/dist/es5/type-fn.js +1 -1
  246. package/dist/es5/type-internals.js +1 -1
  247. package/dist/es5/type-like.js +1 -1
  248. package/dist/es5/type-manager-options.js +1 -1
  249. package/dist/es5/type-manager.js +412 -412
  250. package/dist/es5/type-metadata-resolver.js +1 -1
  251. package/dist/es5/type-metadata-symbol.js +1 -1
  252. package/dist/es5/type-metadata.js +563 -563
  253. package/dist/es5/type-name.js +1 -1
  254. package/dist/es5/type-options-base.js +1 -1
  255. package/dist/es5/type-options.js +1 -1
  256. package/dist/es5/type-resolver.js +1 -1
  257. package/dist/es5/type.js +7 -7
  258. package/dist/es5/unknown.js +6 -6
  259. package/dist/types/alias.d.ts +6 -6
  260. package/dist/types/any.d.ts +9 -9
  261. package/dist/types/custom-context.d.ts +88 -88
  262. package/dist/types/custom-key.d.ts +28 -28
  263. package/dist/types/custom-option.d.ts +10 -10
  264. package/dist/types/custom-value-resolver.d.ts +6 -6
  265. package/dist/types/custom-value.d.ts +6 -6
  266. package/dist/types/default-value-resolver.d.ts +7 -7
  267. package/dist/types/default-value.d.ts +7 -7
  268. package/dist/types/discriminant.d.ts +8 -8
  269. package/dist/types/discriminator.d.ts +6 -6
  270. package/dist/types/factories/index.d.ts +1 -1
  271. package/dist/types/factories/type-factory.d.ts +19 -19
  272. package/dist/types/factory.d.ts +18 -18
  273. package/dist/types/functions/get-own-reflect-metadata.d.ts +9 -9
  274. package/dist/types/functions/get-reflect-metadata.d.ts +10 -10
  275. package/dist/types/functions/get-words.d.ts +8 -8
  276. package/dist/types/functions/index.d.ts +18 -18
  277. package/dist/types/functions/is-arrow-function.d.ts +8 -8
  278. package/dist/types/functions/is-ctor-function.d.ts +8 -8
  279. package/dist/types/functions/is-data-view.d.ts +8 -8
  280. package/dist/types/functions/is-float-32-array.d.ts +8 -8
  281. package/dist/types/functions/is-float-64-array.d.ts +8 -8
  282. package/dist/types/functions/is-int-16-array.d.ts +8 -8
  283. package/dist/types/functions/is-int-32-array.d.ts +8 -8
  284. package/dist/types/functions/is-int-8-array.d.ts +8 -8
  285. package/dist/types/functions/is-uint-16-array.d.ts +8 -8
  286. package/dist/types/functions/is-uint-32-array.d.ts +8 -8
  287. package/dist/types/functions/is-uint-8-array.d.ts +8 -8
  288. package/dist/types/functions/is-uint-8-clamped-array.d.ts +8 -8
  289. package/dist/types/functions/json-parse.d.ts +9 -9
  290. package/dist/types/functions/json-stringify.d.ts +10 -10
  291. package/dist/types/functions/name-of.d.ts +8 -8
  292. package/dist/types/generic-argument.d.ts +7 -7
  293. package/dist/types/generic-metadata-resolver.d.ts +7 -7
  294. package/dist/types/generic-metadata.d.ts +7 -7
  295. package/dist/types/generic-structure.d.ts +7 -7
  296. package/dist/types/index.d.ts +70 -70
  297. package/dist/types/inject-index.d.ts +6 -6
  298. package/dist/types/inject-internals.d.ts +14 -14
  299. package/dist/types/inject-metadata.d.ts +117 -117
  300. package/dist/types/inject-options.d.ts +22 -22
  301. package/dist/types/inject-sorter.d.ts +19 -19
  302. package/dist/types/inject-sorters/asc-inject-sorter.d.ts +20 -20
  303. package/dist/types/inject-sorters/desc-inject-sorter.d.ts +20 -20
  304. package/dist/types/inject-sorters/index.d.ts +2 -2
  305. package/dist/types/inject.d.ts +10 -10
  306. package/dist/types/injector.d.ts +16 -16
  307. package/dist/types/injectors/index.d.ts +1 -1
  308. package/dist/types/injectors/singleton-injector.d.ts +31 -31
  309. package/dist/types/log-level.d.ts +11 -11
  310. package/dist/types/log.d.ts +95 -95
  311. package/dist/types/metadata.d.ts +99 -99
  312. package/dist/types/naming-convention.d.ts +15 -15
  313. package/dist/types/naming-conventions/camel-case-naming-convention.d.ts +26 -26
  314. package/dist/types/naming-conventions/flat-case-naming-convention.d.ts +25 -25
  315. package/dist/types/naming-conventions/flat-upper-case-naming-convention.d.ts +25 -25
  316. package/dist/types/naming-conventions/index.d.ts +8 -8
  317. package/dist/types/naming-conventions/kebab-case-naming-convention.d.ts +26 -26
  318. package/dist/types/naming-conventions/kebab-upper-case-naming-convention.d.ts +26 -26
  319. package/dist/types/naming-conventions/pascal-case-naming-convention.d.ts +26 -26
  320. package/dist/types/naming-conventions/snake-case-naming-convention.d.ts +26 -26
  321. package/dist/types/naming-conventions/snake-upper-case-naming-convention.d.ts +26 -26
  322. package/dist/types/property-internals.d.ts +35 -35
  323. package/dist/types/property-metadata.d.ts +359 -359
  324. package/dist/types/property-name.d.ts +6 -6
  325. package/dist/types/property-options.d.ts +116 -116
  326. package/dist/types/property-sorter.d.ts +19 -19
  327. package/dist/types/property-sorters/asc-property-sorter.d.ts +20 -20
  328. package/dist/types/property-sorters/desc-property-sorter.d.ts +20 -20
  329. package/dist/types/property-sorters/index.d.ts +2 -2
  330. package/dist/types/property.d.ts +13 -13
  331. package/dist/types/reference-callback.d.ts +7 -7
  332. package/dist/types/reference-handler.d.ts +31 -31
  333. package/dist/types/reference-handlers/circular-reference-handler.d.ts +32 -32
  334. package/dist/types/reference-handlers/index.d.ts +3 -3
  335. package/dist/types/reference-handlers/json-path-reference-handler.d.ts +55 -55
  336. package/dist/types/reference-handlers/plain-reference-handler.d.ts +33 -33
  337. package/dist/types/reference-key.d.ts +6 -6
  338. package/dist/types/reference-value-getter.d.ts +7 -7
  339. package/dist/types/reference-value-setter.d.ts +7 -7
  340. package/dist/types/reference-value.d.ts +6 -6
  341. package/dist/types/serializer-context-options.d.ts +50 -50
  342. package/dist/types/serializer-context.d.ts +418 -418
  343. package/dist/types/serializer.d.ts +27 -27
  344. package/dist/types/serializers/any-serializer.d.ts +28 -28
  345. package/dist/types/serializers/array-buffer-serializer.d.ts +28 -28
  346. package/dist/types/serializers/array-serializer.d.ts +28 -28
  347. package/dist/types/serializers/boolean-serializer.d.ts +37 -37
  348. package/dist/types/serializers/data-view-serializer.d.ts +28 -28
  349. package/dist/types/serializers/date-serializer.d.ts +28 -28
  350. package/dist/types/serializers/float-32-array-serializer.d.ts +28 -28
  351. package/dist/types/serializers/float-64-array-serializer.d.ts +28 -28
  352. package/dist/types/serializers/index.d.ts +21 -21
  353. package/dist/types/serializers/int-16-array-serializer.d.ts +28 -28
  354. package/dist/types/serializers/int-32-array-serializer.d.ts +28 -28
  355. package/dist/types/serializers/int-8-array-serializer.d.ts +28 -28
  356. package/dist/types/serializers/map-serializer.d.ts +28 -28
  357. package/dist/types/serializers/number-serializer.d.ts +37 -37
  358. package/dist/types/serializers/set-serializer.d.ts +28 -28
  359. package/dist/types/serializers/string-serializer.d.ts +37 -37
  360. package/dist/types/serializers/type-serializer.d.ts +28 -28
  361. package/dist/types/serializers/uint-16-array-serializer.d.ts +28 -28
  362. package/dist/types/serializers/uint-32-array-serializer.d.ts +28 -28
  363. package/dist/types/serializers/uint-8-array-serializer.d.ts +28 -28
  364. package/dist/types/serializers/uint-8-clamped-array-serializer.d.ts +28 -28
  365. package/dist/types/serializers/unknown-serializer.d.ts +28 -28
  366. package/dist/types/type-abstraction.d.ts +6 -6
  367. package/dist/types/type-argument.d.ts +9 -9
  368. package/dist/types/type-configuration.d.ts +16 -16
  369. package/dist/types/type-context-entry.d.ts +36 -36
  370. package/dist/types/type-context.d.ts +70 -70
  371. package/dist/types/type-ctor.d.ts +6 -6
  372. package/dist/types/type-fn.d.ts +8 -8
  373. package/dist/types/type-internals.d.ts +14 -14
  374. package/dist/types/type-like.d.ts +7 -7
  375. package/dist/types/type-manager-options.d.ts +33 -33
  376. package/dist/types/type-manager.d.ts +413 -413
  377. package/dist/types/type-metadata-resolver.d.ts +8 -8
  378. package/dist/types/type-metadata-symbol.d.ts +6 -6
  379. package/dist/types/type-metadata.d.ts +513 -513
  380. package/dist/types/type-name.d.ts +6 -6
  381. package/dist/types/type-options-base.d.ts +106 -106
  382. package/dist/types/type-options.d.ts +72 -72
  383. package/dist/types/type-resolver.d.ts +7 -7
  384. package/dist/types/type.d.ts +9 -9
  385. package/dist/types/unknown.d.ts +9 -9
  386. package/dist/umd/index.js.map +1 -1
  387. package/package.json +63 -63
@@ -1,564 +1,564 @@
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 };
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 };
564
564
  //# sourceMappingURL=type-metadata.js.map