@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,399 +1,414 @@
1
- import { isFunction, isNil, isUndefined, merge } from 'lodash';
2
- import { getOwnReflectMetadata } from './functions/get-own-reflect-metadata';
3
- import { nameOf } from './functions/name-of';
4
- import { InjectMetadata } from './inject-metadata';
5
- import { Metadata } from './metadata';
6
- import { PropertyMetadata } from './property-metadata';
7
- export class TypeMetadata extends Metadata {
8
- constructor(typeMetadataExtractor, typeFnMap, typeFn, typeOptionsBase, typeOptions, parentTypeMetadata) {
9
- super(typeMetadataExtractor, typeFnMap);
10
- this.childrenTypeMetadataMap = new Map();
11
- this.discriminantMap = new Map();
12
- this.propertyMetadataMap = new Map();
13
- this.injectMetadataMap = new Map();
14
- this.typeName = nameOf(typeFn);
15
- this.typeFn = typeFn;
16
- this.typeOptionsBase = typeOptionsBase;
17
- this.typeOptions = this.constructTypeOptions(typeOptions);
18
- this.parentTypeMetadata = parentTypeMetadata;
19
- this.deriveParentTypeMetadataProperties();
20
- this.hasDiscriminant(this.discriminant);
21
- this.configure(typeOptions);
22
- return;
23
- }
24
- get alias() {
25
- return this.typeOptions.alias;
26
- }
27
- get customData() {
28
- const customData = {};
29
- const typeBaseCustomData = this.typeOptionsBase.customData;
30
- const typeCustomData = this.typeOptions.customData;
31
- if (!isNil(typeBaseCustomData)) {
32
- merge(customData, typeBaseCustomData);
33
- }
34
- if (!isNil(typeCustomData)) {
35
- merge(customData, typeCustomData);
36
- }
37
- return customData;
38
- }
39
- get serializedNullValue() {
40
- if (this.preserveNull) {
41
- return null;
42
- }
43
- return this.serializedDefaultValue;
44
- }
45
- get serializedDefaultValue() {
46
- var _a;
47
- if (this.useDefaultValue) {
48
- const serializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.serializedDefaultValue;
49
- return isFunction(serializedDefaultValue) ? serializedDefaultValue() : serializedDefaultValue;
50
- }
51
- return undefined;
52
- }
53
- get deserializedNullValue() {
54
- if (this.preserveNull) {
55
- return null;
56
- }
57
- return this.deserializedDefaultValue;
58
- }
59
- get deserializedDefaultValue() {
60
- var _a;
61
- if (this.useDefaultValue) {
62
- const deserializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.deserializedDefaultValue;
63
- return isFunction(deserializedDefaultValue) ? deserializedDefaultValue() : deserializedDefaultValue;
64
- }
65
- return undefined;
66
- }
67
- get discriminant() {
68
- var _a;
69
- return (_a = this.typeOptions.discriminant) !== null && _a !== void 0 ? _a : this.typeName;
70
- }
71
- get discriminator() {
72
- var _a;
73
- return (_a = this.typeOptions.discriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.discriminator;
74
- }
75
- get factory() {
76
- var _a;
77
- return (_a = this.typeOptions.factory) !== null && _a !== void 0 ? _a : this.typeOptionsBase.factory;
78
- }
79
- get injectable() {
80
- return this.typeOptions.injectable;
81
- }
82
- get injector() {
83
- var _a;
84
- return (_a = this.typeOptions.injector) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injector;
85
- }
86
- get log() {
87
- var _a;
88
- return (_a = this.typeOptions.log) !== null && _a !== void 0 ? _a : this.typeOptionsBase.log;
89
- }
90
- get namingConvention() {
91
- var _a;
92
- return (_a = this.typeOptions.namingConvention) !== null && _a !== void 0 ? _a : this.typeOptionsBase.namingConvention;
93
- }
94
- get polymorphic() {
95
- return this.discriminantMap.size > 1;
96
- }
97
- get preserveDiscriminator() {
98
- var _a;
99
- return (_a = this.typeOptions.preserveDiscriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveDiscriminator;
100
- }
101
- get referenceHandler() {
102
- var _a;
103
- return (_a = this.typeOptions.referenceHandler) !== null && _a !== void 0 ? _a : this.typeOptionsBase.referenceHandler;
104
- }
105
- get serializer() {
106
- var _a;
107
- return (_a = this.typeOptions.serializer) !== null && _a !== void 0 ? _a : this.typeOptionsBase.serializer;
108
- }
109
- get preserveNull() {
110
- var _a;
111
- return (_a = this.typeOptions.preserveNull) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveNull;
112
- }
113
- get useDefaultValue() {
114
- var _a;
115
- return (_a = this.typeOptions.useDefaultValue) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useDefaultValue;
116
- }
117
- get useImplicitConversion() {
118
- var _a;
119
- return (_a = this.typeOptions.useImplicitConversion) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useImplicitConversion;
120
- }
121
- get propertySorter() {
122
- var _a;
123
- return (_a = this.typeOptions.propertySorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.propertySorter;
124
- }
125
- get sortedPropertyMetadatas() {
126
- const propertySorter = this.propertySorter;
127
- const propertyMetadatas = this.propertyMetadataMap.values();
128
- if (isNil(propertySorter)) {
129
- return propertyMetadatas;
130
- }
131
- const sortedPropertyMetadatas = Array.from(propertyMetadatas).sort(propertySorter.sort);
132
- return sortedPropertyMetadatas[Symbol.iterator]();
133
- }
134
- get injectSorter() {
135
- var _a;
136
- return (_a = this.typeOptions.injectSorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injectSorter;
137
- }
138
- get sortedInjectMetadatas() {
139
- const injectSorter = this.injectSorter;
140
- const injectMetadatas = this.injectMetadataMap.values();
141
- if (isNil(injectSorter)) {
142
- return injectMetadatas;
143
- }
144
- const sortedInjectMetadatas = Array.from(injectMetadatas).sort(injectSorter.sort);
145
- return sortedInjectMetadatas[Symbol.iterator]();
146
- }
147
- get propertyOptionsMap() {
148
- let propertyOptionsMap = this.typeOptions.propertyOptionsMap;
149
- if (isNil(propertyOptionsMap)) {
150
- propertyOptionsMap = new Map();
151
- this.typeOptions.propertyOptionsMap = propertyOptionsMap;
152
- }
153
- return propertyOptionsMap;
154
- }
155
- get injectOptionsMap() {
156
- let injectOptionsMap = this.typeOptions.injectOptionsMap;
157
- if (isNil(injectOptionsMap)) {
158
- injectOptionsMap = new Map();
159
- this.typeOptions.injectOptionsMap = injectOptionsMap;
160
- }
161
- return injectOptionsMap;
162
- }
163
- constructTypeOptions(typeOptions) {
164
- return typeOptions;
165
- }
166
- deriveParentTypeMetadataProperties() {
167
- if (isNil(this.parentTypeMetadata)) {
168
- return this;
169
- }
170
- for (const [propertyName, propertyMetadata] of this.parentTypeMetadata.propertyMetadataMap) {
171
- this.propertyMetadataMap.set(propertyName, propertyMetadata);
172
- }
173
- this.parentTypeMetadata.childrenTypeMetadataMap.set(this.typeFn, this);
174
- return this;
175
- }
176
- reflectInjectMetadata() {
177
- var _a;
178
- if (this.typeFn.length === 0) {
179
- return this;
180
- }
181
- const injectTypeFns = ((_a = getOwnReflectMetadata('design:paramtypes', this.typeFn)) !== null && _a !== void 0 ? _a : new Array());
182
- for (let injectIndex = 0; injectIndex < injectTypeFns.length; injectIndex++) {
183
- if (!this.injectMetadataMap.has(injectIndex)) {
184
- this.configureInjectMetadata(injectIndex, { typeFn: injectTypeFns[injectIndex] });
185
- }
186
- }
187
- return this;
188
- }
189
- hasAlias(alias) {
190
- this.releaseAlias();
191
- this.typeOptions.alias = alias;
192
- if (!isNil(alias)) {
193
- this.typeFnMap.set(alias, this.typeFn);
194
- }
195
- return this;
196
- }
197
- releaseAlias() {
198
- const alias = this.alias;
199
- if (!isNil(alias) && this.typeFnMap.has(alias)) {
200
- this.typeFnMap.delete(alias);
201
- }
202
- return this;
203
- }
204
- hasCustomData(customData) {
205
- var _a;
206
- this.typeOptions.customData = merge((_a = this.typeOptions.customData) !== null && _a !== void 0 ? _a : {}, customData !== null && customData !== void 0 ? customData : {});
207
- return this;
208
- }
209
- hasDefaultValue(defaultValue) {
210
- this.typeOptions.defaultValue = defaultValue;
211
- return this;
212
- }
213
- hasSerializedDefaultValue(serializedDefaultValue) {
214
- this.typeOptions.serializedDefaultValue = serializedDefaultValue;
215
- return this;
216
- }
217
- hasDeserializedDefaultValue(deserializedDefaultValue) {
218
- this.typeOptions.deserializedDefaultValue = deserializedDefaultValue;
219
- return this;
220
- }
221
- hasDiscriminator(discriminator) {
222
- this.typeOptions.discriminator = discriminator;
223
- return this;
224
- }
225
- hasDiscriminant(discriminant) {
226
- this.typeOptions.discriminant = discriminant;
227
- if (!isNil(discriminant)) {
228
- this.provideDiscriminant(this.typeFn, discriminant);
229
- }
230
- return this;
231
- }
232
- provideDiscriminant(typeFn, discriminant) {
233
- this.discriminantMap.set(typeFn, discriminant);
234
- if (!isNil(this.parentTypeMetadata)) {
235
- this.parentTypeMetadata.provideDiscriminant(typeFn, discriminant);
236
- }
237
- return this;
238
- }
239
- hasFactory(factory) {
240
- this.typeOptions.factory = factory;
241
- return this;
242
- }
243
- isInjectable(injectable = true) {
244
- this.typeOptions.injectable = injectable;
245
- return this;
246
- }
247
- hasInjector(injector) {
248
- this.typeOptions.injector = injector;
249
- return this;
250
- }
251
- hasLog(log) {
252
- this.typeOptions.log = log;
253
- return this;
254
- }
255
- hasNamingConvention(namingConvention) {
256
- this.typeOptions.namingConvention = namingConvention;
257
- return this;
258
- }
259
- shouldPreserveDiscriminator(preserveDiscriminator = true) {
260
- this.typeOptions.preserveDiscriminator = preserveDiscriminator;
261
- return this;
262
- }
263
- hasReferenceHandler(referenceHandler) {
264
- this.typeOptions.referenceHandler = referenceHandler;
265
- return this;
266
- }
267
- hasSerializer(serializer) {
268
- this.typeOptions.serializer = serializer;
269
- return this;
270
- }
271
- shouldPreserveNull(preserveNull = true) {
272
- this.typeOptions.preserveNull = preserveNull;
273
- return this;
274
- }
275
- shouldUseDefaultValue(useDefaultValue = true) {
276
- this.typeOptions.useDefaultValue = useDefaultValue;
277
- return this;
278
- }
279
- shouldUseImplicitConversion(useImplicitConversion = true) {
280
- this.typeOptions.useImplicitConversion = useImplicitConversion;
281
- return this;
282
- }
283
- hasPropertySorter(propertySorter) {
284
- this.typeOptions.propertySorter = propertySorter;
285
- return this;
286
- }
287
- hasInjectSorter(injectSorter) {
288
- this.typeOptions.injectSorter = injectSorter;
289
- return this;
290
- }
291
- configurePropertyMetadata(propertyName, propertyOptions) {
292
- let propertyMetadata = this.propertyMetadataMap.get(propertyName);
293
- if (isNil(propertyMetadata)) {
294
- propertyMetadata = new PropertyMetadata(this, propertyName, propertyOptions !== null && propertyOptions !== void 0 ? propertyOptions : {});
295
- this.propertyMetadataMap.set(propertyName, propertyMetadata);
296
- this.propertyOptionsMap.set(propertyName, propertyMetadata.propertyOptions);
297
- return propertyMetadata;
298
- }
299
- if (!isNil(propertyOptions)) {
300
- propertyMetadata.configure(propertyOptions);
301
- }
302
- return propertyMetadata;
303
- }
304
- configureInjectMetadata(injectIndex, injectOptions) {
305
- let injectMetadata = this.injectMetadataMap.get(injectIndex);
306
- if (isNil(injectMetadata)) {
307
- injectMetadata = new InjectMetadata(this, injectIndex, injectOptions !== null && injectOptions !== void 0 ? injectOptions : {});
308
- this.injectMetadataMap.set(injectIndex, injectMetadata);
309
- this.injectOptionsMap.set(injectIndex, injectMetadata.injectOptions);
310
- return injectMetadata;
311
- }
312
- if (!isNil(injectOptions)) {
313
- injectMetadata.configure(injectOptions);
314
- }
315
- return injectMetadata;
316
- }
317
- hasPropertyMetadataMap(propertyOptionsMap) {
318
- for (const [propertyName, propertyOptions] of propertyOptionsMap) {
319
- this.configurePropertyMetadata(propertyName, propertyOptions);
320
- }
321
- return this;
322
- }
323
- hasInjectMetadataMap(injectOptionsMap) {
324
- for (const [injectIndex, injectOptions] of injectOptionsMap) {
325
- this.configureInjectMetadata(injectIndex, injectOptions);
326
- }
327
- return this;
328
- }
329
- configure(typeOptions) {
330
- if (!isUndefined(typeOptions.alias)) {
331
- this.hasAlias(typeOptions.alias);
332
- }
333
- if (!isUndefined(typeOptions.customData)) {
334
- this.hasCustomData(typeOptions.customData);
335
- }
336
- if (!isUndefined(typeOptions.defaultValue)) {
337
- this.hasDefaultValue(typeOptions.defaultValue);
338
- }
339
- if (!isUndefined(typeOptions.serializedDefaultValue)) {
340
- this.hasSerializedDefaultValue(typeOptions.serializedDefaultValue);
341
- }
342
- if (!isUndefined(typeOptions.deserializedDefaultValue)) {
343
- this.hasDeserializedDefaultValue(typeOptions.deserializedDefaultValue);
344
- }
345
- if (!isUndefined(typeOptions.discriminator)) {
346
- this.hasDiscriminator(typeOptions.discriminator);
347
- }
348
- if (!isUndefined(typeOptions.discriminant)) {
349
- this.hasDiscriminant(typeOptions.discriminant);
350
- }
351
- if (!isUndefined(typeOptions.factory)) {
352
- this.hasFactory(typeOptions.factory);
353
- }
354
- if (!isUndefined(typeOptions.injectable)) {
355
- this.isInjectable(typeOptions.injectable);
356
- }
357
- if (!isUndefined(typeOptions.injector)) {
358
- this.hasInjector(typeOptions.injector);
359
- }
360
- if (!isUndefined(typeOptions.log)) {
361
- this.hasLog(typeOptions.log);
362
- }
363
- if (!isUndefined(typeOptions.namingConvention)) {
364
- this.hasNamingConvention(typeOptions.namingConvention);
365
- }
366
- if (!isUndefined(typeOptions.preserveDiscriminator)) {
367
- this.shouldPreserveDiscriminator(typeOptions.preserveDiscriminator);
368
- }
369
- if (!isUndefined(typeOptions.referenceHandler)) {
370
- this.hasReferenceHandler(typeOptions.referenceHandler);
371
- }
372
- if (!isUndefined(typeOptions.serializer)) {
373
- this.hasSerializer(typeOptions.serializer);
374
- }
375
- if (!isUndefined(typeOptions.preserveNull)) {
376
- this.shouldPreserveNull(typeOptions.preserveNull);
377
- }
378
- if (!isUndefined(typeOptions.useDefaultValue)) {
379
- this.shouldUseDefaultValue(typeOptions.useDefaultValue);
380
- }
381
- if (!isUndefined(typeOptions.useImplicitConversion)) {
382
- this.shouldUseImplicitConversion(typeOptions.useImplicitConversion);
383
- }
384
- if (!isUndefined(typeOptions.propertyOptionsMap)) {
385
- this.hasPropertyMetadataMap(typeOptions.propertyOptionsMap);
386
- }
387
- if (!isUndefined(typeOptions.injectOptionsMap)) {
388
- this.hasInjectMetadataMap(typeOptions.injectOptionsMap);
389
- }
390
- if (!isUndefined(typeOptions.propertySorter)) {
391
- this.hasPropertySorter(typeOptions.propertySorter);
392
- }
393
- if (!isUndefined(typeOptions.injectSorter)) {
394
- this.hasInjectSorter(typeOptions.injectSorter);
395
- }
396
- return this;
397
- }
398
- }
1
+ import { isFunction, isNil, isUndefined } from 'lodash';
2
+ import { CustomContext } from './custom-context';
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
+ export class TypeMetadata extends Metadata {
9
+ constructor(typeManager, typeFn, typeOptions, parentTypeMetadata) {
10
+ super(typeManager);
11
+ this.childrenTypeMetadataMap = new Map();
12
+ this.discriminantMap = new Map();
13
+ this.propertyMetadataMap = new Map();
14
+ this.injectMetadataMap = new Map();
15
+ this.typeName = nameOf(typeFn);
16
+ this.typeFn = typeFn;
17
+ this.typeOptionsBase = typeManager.typeOptionsBase;
18
+ this.typeOptions = this.constructTypeOptions(typeOptions);
19
+ this.typeInternals = this.constructTypeInternals();
20
+ this.parentTypeMetadata = parentTypeMetadata;
21
+ this.deriveParentTypeMetadataProperties();
22
+ this.hasDiscriminant(this.discriminant);
23
+ this.configure(typeOptions);
24
+ return;
25
+ }
26
+ get alias() {
27
+ return this.typeOptions.alias;
28
+ }
29
+ get customOptions() {
30
+ return this.typeOptions.customOptions;
31
+ }
32
+ get customContext() {
33
+ let customContext = this.typeInternals.customContext;
34
+ if (isNil(customContext)) {
35
+ this.typeOptions.customOptions = new Array();
36
+ this.typeInternals.customContext = new CustomContext(this.typeOptions.customOptions);
37
+ customContext = this.typeInternals.customContext;
38
+ }
39
+ return customContext;
40
+ }
41
+ get serializedNullValue() {
42
+ if (this.preserveNull) {
43
+ return null;
44
+ }
45
+ return this.serializedDefaultValue;
46
+ }
47
+ get serializedDefaultValue() {
48
+ var _a;
49
+ if (this.useDefaultValue) {
50
+ const serializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.serializedDefaultValue;
51
+ const defaultValue = isFunction(serializedDefaultValue)
52
+ ? serializedDefaultValue()
53
+ : serializedDefaultValue;
54
+ return defaultValue;
55
+ }
56
+ return undefined;
57
+ }
58
+ get deserializedNullValue() {
59
+ if (this.preserveNull) {
60
+ return null;
61
+ }
62
+ return this.deserializedDefaultValue;
63
+ }
64
+ get deserializedDefaultValue() {
65
+ var _a;
66
+ if (this.useDefaultValue) {
67
+ const deserializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.deserializedDefaultValue;
68
+ const defaultValue = isFunction(deserializedDefaultValue)
69
+ ? deserializedDefaultValue()
70
+ : deserializedDefaultValue;
71
+ return defaultValue;
72
+ }
73
+ return undefined;
74
+ }
75
+ get discriminant() {
76
+ var _a;
77
+ return (_a = this.typeOptions.discriminant) !== null && _a !== void 0 ? _a : this.typeName;
78
+ }
79
+ get discriminator() {
80
+ var _a;
81
+ return (_a = this.typeOptions.discriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.discriminator;
82
+ }
83
+ get factory() {
84
+ var _a;
85
+ return (_a = this.typeOptions.factory) !== null && _a !== void 0 ? _a : this.typeOptionsBase.factory;
86
+ }
87
+ get injectable() {
88
+ return this.typeOptions.injectable;
89
+ }
90
+ get injector() {
91
+ var _a;
92
+ return (_a = this.typeOptions.injector) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injector;
93
+ }
94
+ get log() {
95
+ var _a;
96
+ return (_a = this.typeOptions.log) !== null && _a !== void 0 ? _a : this.typeOptionsBase.log;
97
+ }
98
+ get namingConvention() {
99
+ var _a;
100
+ return (_a = this.typeOptions.namingConvention) !== null && _a !== void 0 ? _a : this.typeOptionsBase.namingConvention;
101
+ }
102
+ get polymorphic() {
103
+ return this.discriminantMap.size > 1;
104
+ }
105
+ get preserveDiscriminator() {
106
+ var _a;
107
+ return (_a = this.typeOptions.preserveDiscriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveDiscriminator;
108
+ }
109
+ get referenceHandler() {
110
+ var _a;
111
+ return (_a = this.typeOptions.referenceHandler) !== null && _a !== void 0 ? _a : this.typeOptionsBase.referenceHandler;
112
+ }
113
+ get serializer() {
114
+ var _a;
115
+ return (_a = this.typeOptions.serializer) !== null && _a !== void 0 ? _a : this.typeOptionsBase.serializer;
116
+ }
117
+ get preserveNull() {
118
+ var _a;
119
+ return (_a = this.typeOptions.preserveNull) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveNull;
120
+ }
121
+ get useDefaultValue() {
122
+ var _a;
123
+ return (_a = this.typeOptions.useDefaultValue) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useDefaultValue;
124
+ }
125
+ get useImplicitConversion() {
126
+ var _a;
127
+ return (_a = this.typeOptions.useImplicitConversion) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useImplicitConversion;
128
+ }
129
+ get propertySorter() {
130
+ var _a;
131
+ return (_a = this.typeOptions.propertySorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.propertySorter;
132
+ }
133
+ get sortedPropertyMetadatas() {
134
+ const propertySorter = this.propertySorter;
135
+ const propertyMetadatas = this.propertyMetadataMap.values();
136
+ if (isNil(propertySorter)) {
137
+ return propertyMetadatas;
138
+ }
139
+ const sortedPropertyMetadatas = Array.from(propertyMetadatas).sort(propertySorter.sort);
140
+ return sortedPropertyMetadatas[Symbol.iterator]();
141
+ }
142
+ get injectSorter() {
143
+ var _a;
144
+ return (_a = this.typeOptions.injectSorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injectSorter;
145
+ }
146
+ get sortedInjectMetadatas() {
147
+ const injectSorter = this.injectSorter;
148
+ const injectMetadatas = this.injectMetadataMap.values();
149
+ if (isNil(injectSorter)) {
150
+ return injectMetadatas;
151
+ }
152
+ const sortedInjectMetadatas = Array.from(injectMetadatas).sort(injectSorter.sort);
153
+ return sortedInjectMetadatas[Symbol.iterator]();
154
+ }
155
+ get propertyOptionsMap() {
156
+ let propertyOptionsMap = this.typeOptions.propertyOptionsMap;
157
+ if (isNil(propertyOptionsMap)) {
158
+ propertyOptionsMap = new Map();
159
+ this.typeOptions.propertyOptionsMap = propertyOptionsMap;
160
+ }
161
+ return propertyOptionsMap;
162
+ }
163
+ get injectOptionsMap() {
164
+ let injectOptionsMap = this.typeOptions.injectOptionsMap;
165
+ if (isNil(injectOptionsMap)) {
166
+ injectOptionsMap = new Map();
167
+ this.typeOptions.injectOptionsMap = injectOptionsMap;
168
+ }
169
+ return injectOptionsMap;
170
+ }
171
+ constructTypeOptions(typeOptions) {
172
+ return typeOptions;
173
+ }
174
+ constructTypeInternals() {
175
+ const customOptions = this.typeOptions.customOptions;
176
+ const customContext = isNil(customOptions) ? undefined : new CustomContext(customOptions);
177
+ const typeInternals = { customContext: customContext };
178
+ return typeInternals;
179
+ }
180
+ deriveParentTypeMetadataProperties() {
181
+ if (isNil(this.parentTypeMetadata)) {
182
+ return this;
183
+ }
184
+ for (const [propertyName, propertyMetadata] of this.parentTypeMetadata.propertyMetadataMap) {
185
+ this.propertyMetadataMap.set(propertyName, propertyMetadata);
186
+ }
187
+ this.parentTypeMetadata.childrenTypeMetadataMap.set(this.typeFn, this);
188
+ return this;
189
+ }
190
+ reflectInjectMetadata() {
191
+ var _a;
192
+ if (this.typeFn.length === 0) {
193
+ return this;
194
+ }
195
+ const injectTypeFns = ((_a = getOwnReflectMetadata('design:paramtypes', this.typeFn)) !== null && _a !== void 0 ? _a : new Array());
196
+ for (let injectIndex = 0; injectIndex < injectTypeFns.length; injectIndex++) {
197
+ if (!this.injectMetadataMap.has(injectIndex)) {
198
+ this.configureInjectMetadata(injectIndex, { typeFn: injectTypeFns[injectIndex] });
199
+ }
200
+ }
201
+ return this;
202
+ }
203
+ hasAlias(alias) {
204
+ this.releaseAlias();
205
+ this.typeOptions.alias = alias;
206
+ if (!isNil(alias)) {
207
+ this.typeFnMap.set(alias, this.typeFn);
208
+ }
209
+ return this;
210
+ }
211
+ releaseAlias() {
212
+ const alias = this.alias;
213
+ if (!isNil(alias) && this.typeFnMap.has(alias)) {
214
+ this.typeFnMap.delete(alias);
215
+ }
216
+ return this;
217
+ }
218
+ hasCustomOptions(customOptions) {
219
+ if (!isNil(customOptions)) {
220
+ this.customContext.configure(customOptions);
221
+ }
222
+ return this;
223
+ }
224
+ hasDefaultValue(defaultValue) {
225
+ this.typeOptions.defaultValue = defaultValue;
226
+ return this;
227
+ }
228
+ hasSerializedDefaultValue(serializedDefaultValue) {
229
+ this.typeOptions.serializedDefaultValue = serializedDefaultValue;
230
+ return this;
231
+ }
232
+ hasDeserializedDefaultValue(deserializedDefaultValue) {
233
+ this.typeOptions.deserializedDefaultValue = deserializedDefaultValue;
234
+ return this;
235
+ }
236
+ hasDiscriminator(discriminator) {
237
+ this.typeOptions.discriminator = discriminator;
238
+ return this;
239
+ }
240
+ hasDiscriminant(discriminant) {
241
+ this.typeOptions.discriminant = discriminant;
242
+ if (!isNil(discriminant)) {
243
+ this.provideDiscriminant(this.typeFn, discriminant);
244
+ }
245
+ return this;
246
+ }
247
+ provideDiscriminant(typeFn, discriminant) {
248
+ this.discriminantMap.set(typeFn, discriminant);
249
+ if (!isNil(this.parentTypeMetadata)) {
250
+ this.parentTypeMetadata.provideDiscriminant(typeFn, discriminant);
251
+ }
252
+ return this;
253
+ }
254
+ hasFactory(factory) {
255
+ this.typeOptions.factory = factory;
256
+ return this;
257
+ }
258
+ isInjectable(injectable = true) {
259
+ this.typeOptions.injectable = injectable;
260
+ return this;
261
+ }
262
+ hasInjector(injector) {
263
+ this.typeOptions.injector = injector;
264
+ return this;
265
+ }
266
+ hasLog(log) {
267
+ this.typeOptions.log = log;
268
+ return this;
269
+ }
270
+ hasNamingConvention(namingConvention) {
271
+ this.typeOptions.namingConvention = namingConvention;
272
+ return this;
273
+ }
274
+ shouldPreserveDiscriminator(preserveDiscriminator = true) {
275
+ this.typeOptions.preserveDiscriminator = preserveDiscriminator;
276
+ return this;
277
+ }
278
+ hasReferenceHandler(referenceHandler) {
279
+ this.typeOptions.referenceHandler = referenceHandler;
280
+ return this;
281
+ }
282
+ hasSerializer(serializer) {
283
+ this.typeOptions.serializer = serializer;
284
+ return this;
285
+ }
286
+ shouldPreserveNull(preserveNull = true) {
287
+ this.typeOptions.preserveNull = preserveNull;
288
+ return this;
289
+ }
290
+ shouldUseDefaultValue(useDefaultValue = true) {
291
+ this.typeOptions.useDefaultValue = useDefaultValue;
292
+ return this;
293
+ }
294
+ shouldUseImplicitConversion(useImplicitConversion = true) {
295
+ this.typeOptions.useImplicitConversion = useImplicitConversion;
296
+ return this;
297
+ }
298
+ hasPropertySorter(propertySorter) {
299
+ this.typeOptions.propertySorter = propertySorter;
300
+ return this;
301
+ }
302
+ hasInjectSorter(injectSorter) {
303
+ this.typeOptions.injectSorter = injectSorter;
304
+ return this;
305
+ }
306
+ configurePropertyMetadata(propertyName, propertyOptions) {
307
+ let propertyMetadata = this.propertyMetadataMap.get(propertyName);
308
+ if (isNil(propertyMetadata)) {
309
+ propertyMetadata = new PropertyMetadata(this, propertyName, propertyOptions !== null && propertyOptions !== void 0 ? propertyOptions : {});
310
+ this.propertyMetadataMap.set(propertyName, propertyMetadata);
311
+ this.propertyOptionsMap.set(propertyName, propertyMetadata.propertyOptions);
312
+ return propertyMetadata;
313
+ }
314
+ if (!isNil(propertyOptions)) {
315
+ propertyMetadata.configure(propertyOptions);
316
+ }
317
+ return propertyMetadata;
318
+ }
319
+ configureInjectMetadata(injectIndex, injectOptions) {
320
+ let injectMetadata = this.injectMetadataMap.get(injectIndex);
321
+ if (isNil(injectMetadata)) {
322
+ injectMetadata = new InjectMetadata(this, injectIndex, injectOptions !== null && injectOptions !== void 0 ? injectOptions : {});
323
+ this.injectMetadataMap.set(injectIndex, injectMetadata);
324
+ this.injectOptionsMap.set(injectIndex, injectMetadata.injectOptions);
325
+ return injectMetadata;
326
+ }
327
+ if (!isNil(injectOptions)) {
328
+ injectMetadata.configure(injectOptions);
329
+ }
330
+ return injectMetadata;
331
+ }
332
+ hasPropertyMetadataMap(propertyOptionsMap) {
333
+ for (const [propertyName, propertyOptions] of propertyOptionsMap) {
334
+ this.configurePropertyMetadata(propertyName, propertyOptions);
335
+ }
336
+ return this;
337
+ }
338
+ hasInjectMetadataMap(injectOptionsMap) {
339
+ for (const [injectIndex, injectOptions] of injectOptionsMap) {
340
+ this.configureInjectMetadata(injectIndex, injectOptions);
341
+ }
342
+ return this;
343
+ }
344
+ configure(typeOptions) {
345
+ if (!isUndefined(typeOptions.alias)) {
346
+ this.hasAlias(typeOptions.alias);
347
+ }
348
+ if (!isUndefined(typeOptions.customOptions)) {
349
+ this.hasCustomOptions(typeOptions.customOptions);
350
+ }
351
+ if (!isUndefined(typeOptions.defaultValue)) {
352
+ this.hasDefaultValue(typeOptions.defaultValue);
353
+ }
354
+ if (!isUndefined(typeOptions.serializedDefaultValue)) {
355
+ this.hasSerializedDefaultValue(typeOptions.serializedDefaultValue);
356
+ }
357
+ if (!isUndefined(typeOptions.deserializedDefaultValue)) {
358
+ this.hasDeserializedDefaultValue(typeOptions.deserializedDefaultValue);
359
+ }
360
+ if (!isUndefined(typeOptions.discriminator)) {
361
+ this.hasDiscriminator(typeOptions.discriminator);
362
+ }
363
+ if (!isUndefined(typeOptions.discriminant)) {
364
+ this.hasDiscriminant(typeOptions.discriminant);
365
+ }
366
+ if (!isUndefined(typeOptions.factory)) {
367
+ this.hasFactory(typeOptions.factory);
368
+ }
369
+ if (!isUndefined(typeOptions.injectable)) {
370
+ this.isInjectable(typeOptions.injectable);
371
+ }
372
+ if (!isUndefined(typeOptions.injector)) {
373
+ this.hasInjector(typeOptions.injector);
374
+ }
375
+ if (!isUndefined(typeOptions.log)) {
376
+ this.hasLog(typeOptions.log);
377
+ }
378
+ if (!isUndefined(typeOptions.namingConvention)) {
379
+ this.hasNamingConvention(typeOptions.namingConvention);
380
+ }
381
+ if (!isUndefined(typeOptions.preserveDiscriminator)) {
382
+ this.shouldPreserveDiscriminator(typeOptions.preserveDiscriminator);
383
+ }
384
+ if (!isUndefined(typeOptions.referenceHandler)) {
385
+ this.hasReferenceHandler(typeOptions.referenceHandler);
386
+ }
387
+ if (!isUndefined(typeOptions.serializer)) {
388
+ this.hasSerializer(typeOptions.serializer);
389
+ }
390
+ if (!isUndefined(typeOptions.preserveNull)) {
391
+ this.shouldPreserveNull(typeOptions.preserveNull);
392
+ }
393
+ if (!isUndefined(typeOptions.useDefaultValue)) {
394
+ this.shouldUseDefaultValue(typeOptions.useDefaultValue);
395
+ }
396
+ if (!isUndefined(typeOptions.useImplicitConversion)) {
397
+ this.shouldUseImplicitConversion(typeOptions.useImplicitConversion);
398
+ }
399
+ if (!isUndefined(typeOptions.propertyOptionsMap)) {
400
+ this.hasPropertyMetadataMap(typeOptions.propertyOptionsMap);
401
+ }
402
+ if (!isUndefined(typeOptions.injectOptionsMap)) {
403
+ this.hasInjectMetadataMap(typeOptions.injectOptionsMap);
404
+ }
405
+ if (!isUndefined(typeOptions.propertySorter)) {
406
+ this.hasPropertySorter(typeOptions.propertySorter);
407
+ }
408
+ if (!isUndefined(typeOptions.injectSorter)) {
409
+ this.hasInjectSorter(typeOptions.injectSorter);
410
+ }
411
+ return this;
412
+ }
413
+ }
399
414
  //# sourceMappingURL=type-metadata.js.map