@dipscope/type-manager 7.2.0 → 8.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 (642) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +160 -167
  3. package/dist/es2015/constants/default-value-resolver.js +2 -0
  4. package/dist/es2015/constants/default-value-resolver.js.map +1 -0
  5. package/dist/es2015/constants/empty-array.js +2 -0
  6. package/dist/es2015/constants/empty-array.js.map +1 -0
  7. package/dist/es2015/constants/empty-map.js +2 -0
  8. package/dist/es2015/constants/empty-map.js.map +1 -0
  9. package/dist/es2015/constants/index.js +5 -0
  10. package/dist/es2015/constants/index.js.map +1 -0
  11. package/dist/es2015/constants/null-value-resolver.js +2 -0
  12. package/dist/es2015/constants/null-value-resolver.js.map +1 -0
  13. package/dist/es2015/custom-key.js.map +1 -1
  14. package/dist/es2015/factories/type-factory.js +22 -23
  15. package/dist/es2015/factories/type-factory.js.map +1 -1
  16. package/dist/es2015/functions/get-own-reflect-metadata.js +1 -2
  17. package/dist/es2015/functions/get-own-reflect-metadata.js.map +1 -1
  18. package/dist/es2015/functions/get-reflect-metadata.js +1 -2
  19. package/dist/es2015/functions/get-reflect-metadata.js.map +1 -1
  20. package/dist/es2015/functions/get-words.js +61 -2
  21. package/dist/es2015/functions/get-words.js.map +1 -1
  22. package/dist/es2015/functions/index.js +0 -12
  23. package/dist/es2015/functions/index.js.map +1 -1
  24. package/dist/es2015/functions/json-parse.js.map +1 -1
  25. package/dist/es2015/functions/json-stringify.js +6 -5
  26. package/dist/es2015/functions/json-stringify.js.map +1 -1
  27. package/dist/es2015/functions/name-of.js +1 -5
  28. package/dist/es2015/functions/name-of.js.map +1 -1
  29. package/dist/es2015/index.js +17 -12
  30. package/dist/es2015/index.js.map +1 -1
  31. package/dist/es2015/inject-decorator.js +2 -0
  32. package/dist/es2015/inject-decorator.js.map +1 -0
  33. package/dist/es2015/inject-metadata.js +34 -33
  34. package/dist/es2015/inject-metadata.js.map +1 -1
  35. package/dist/es2015/inject-sorters/asc-inject-sorter.js +1 -9
  36. package/dist/es2015/inject-sorters/asc-inject-sorter.js.map +1 -1
  37. package/dist/es2015/inject-sorters/desc-inject-sorter.js +1 -9
  38. package/dist/es2015/inject-sorters/desc-inject-sorter.js.map +1 -1
  39. package/dist/es2015/inject-state.js +2 -0
  40. package/dist/es2015/inject-state.js.map +1 -0
  41. package/dist/es2015/inject-states/index.js +3 -0
  42. package/dist/es2015/inject-states/index.js.map +1 -0
  43. package/dist/es2015/inject-states/resolved-inject-state.js +10 -0
  44. package/dist/es2015/inject-states/resolved-inject-state.js.map +1 -0
  45. package/dist/es2015/inject-states/unresolved-inject-state.js +31 -0
  46. package/dist/es2015/inject-states/unresolved-inject-state.js.map +1 -0
  47. package/dist/es2015/inject.js +6 -8
  48. package/dist/es2015/inject.js.map +1 -1
  49. package/dist/es2015/injectors/singleton-injector.js +6 -10
  50. package/dist/es2015/injectors/singleton-injector.js.map +1 -1
  51. package/dist/es2015/logger-level.js +9 -0
  52. package/dist/es2015/logger-level.js.map +1 -0
  53. package/dist/es2015/logger.js +79 -0
  54. package/dist/es2015/logger.js.map +1 -0
  55. package/dist/es2015/metadata.js +45 -57
  56. package/dist/es2015/metadata.js.map +1 -1
  57. package/dist/es2015/null-value-resolver.js +2 -0
  58. package/dist/es2015/null-value-resolver.js.map +1 -0
  59. package/dist/es2015/nullable.js +2 -0
  60. package/dist/es2015/nullable.js.map +1 -0
  61. package/dist/es2015/optional.js +2 -0
  62. package/dist/es2015/optional.js.map +1 -0
  63. package/dist/es2015/property-decorator.js +2 -0
  64. package/dist/es2015/property-decorator.js.map +1 -0
  65. package/dist/es2015/property-extension-metadata-ctor-set-key.js +1 -1
  66. package/dist/es2015/property-extension-metadata-ctor-set-key.js.map +1 -1
  67. package/dist/es2015/property-extension-metadata.js.map +1 -1
  68. package/dist/es2015/property-metadata.js +224 -145
  69. package/dist/es2015/property-metadata.js.map +1 -1
  70. package/dist/es2015/property-sorters/asc-property-sorter.js +1 -9
  71. package/dist/es2015/property-sorters/asc-property-sorter.js.map +1 -1
  72. package/dist/es2015/property-sorters/desc-property-sorter.js +1 -9
  73. package/dist/es2015/property-sorters/desc-property-sorter.js.map +1 -1
  74. package/dist/es2015/property-state.js +2 -0
  75. package/dist/es2015/property-state.js.map +1 -0
  76. package/dist/es2015/property-states/index.js +3 -0
  77. package/dist/es2015/property-states/index.js.map +1 -0
  78. package/dist/es2015/property-states/resolved-property-state.js +27 -0
  79. package/dist/es2015/property-states/resolved-property-state.js.map +1 -0
  80. package/dist/es2015/property-states/unresolved-property-state.js +167 -0
  81. package/dist/es2015/property-states/unresolved-property-state.js.map +1 -0
  82. package/dist/es2015/property.js +44 -22
  83. package/dist/es2015/property.js.map +1 -1
  84. package/dist/es2015/reference-handlers/circular-reference-handler.js +2 -3
  85. package/dist/es2015/reference-handlers/circular-reference-handler.js.map +1 -1
  86. package/dist/es2015/reference-handlers/json-path-reference-handler.js +7 -6
  87. package/dist/es2015/reference-handlers/json-path-reference-handler.js.map +1 -1
  88. package/dist/es2015/reference-handlers/plain-reference-handler.js +2 -3
  89. package/dist/es2015/reference-handlers/plain-reference-handler.js.map +1 -1
  90. package/dist/es2015/serializer-context.js +65 -171
  91. package/dist/es2015/serializer-context.js.map +1 -1
  92. package/dist/es2015/serializers/any-serializer.js +4 -5
  93. package/dist/es2015/serializers/any-serializer.js.map +1 -1
  94. package/dist/es2015/serializers/array-buffer-serializer.js +8 -13
  95. package/dist/es2015/serializers/array-buffer-serializer.js.map +1 -1
  96. package/dist/es2015/serializers/array-serializer.js +18 -25
  97. package/dist/es2015/serializers/array-serializer.js.map +1 -1
  98. package/dist/es2015/serializers/boolean-serializer.js +12 -19
  99. package/dist/es2015/serializers/boolean-serializer.js.map +1 -1
  100. package/dist/es2015/serializers/data-view-serializer.js +8 -14
  101. package/dist/es2015/serializers/data-view-serializer.js.map +1 -1
  102. package/dist/es2015/serializers/date-serializer.js +8 -13
  103. package/dist/es2015/serializers/date-serializer.js.map +1 -1
  104. package/dist/es2015/serializers/float-32-array-serializer.js +8 -14
  105. package/dist/es2015/serializers/float-32-array-serializer.js.map +1 -1
  106. package/dist/es2015/serializers/float-64-array-serializer.js +8 -14
  107. package/dist/es2015/serializers/float-64-array-serializer.js.map +1 -1
  108. package/dist/es2015/serializers/int-16-array-serializer.js +8 -14
  109. package/dist/es2015/serializers/int-16-array-serializer.js.map +1 -1
  110. package/dist/es2015/serializers/int-32-array-serializer.js +8 -14
  111. package/dist/es2015/serializers/int-32-array-serializer.js.map +1 -1
  112. package/dist/es2015/serializers/int-8-array-serializer.js +8 -14
  113. package/dist/es2015/serializers/int-8-array-serializer.js.map +1 -1
  114. package/dist/es2015/serializers/map-serializer.js +42 -54
  115. package/dist/es2015/serializers/map-serializer.js.map +1 -1
  116. package/dist/es2015/serializers/number-serializer.js +10 -17
  117. package/dist/es2015/serializers/number-serializer.js.map +1 -1
  118. package/dist/es2015/serializers/set-serializer.js +19 -26
  119. package/dist/es2015/serializers/set-serializer.js.map +1 -1
  120. package/dist/es2015/serializers/string-serializer.js +12 -19
  121. package/dist/es2015/serializers/string-serializer.js.map +1 -1
  122. package/dist/es2015/serializers/type-serializer.js +64 -71
  123. package/dist/es2015/serializers/type-serializer.js.map +1 -1
  124. package/dist/es2015/serializers/uint-16-array-serializer.js +8 -14
  125. package/dist/es2015/serializers/uint-16-array-serializer.js.map +1 -1
  126. package/dist/es2015/serializers/uint-32-array-serializer.js +8 -14
  127. package/dist/es2015/serializers/uint-32-array-serializer.js.map +1 -1
  128. package/dist/es2015/serializers/uint-8-array-serializer.js +8 -14
  129. package/dist/es2015/serializers/uint-8-array-serializer.js.map +1 -1
  130. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js +8 -14
  131. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js.map +1 -1
  132. package/dist/es2015/serializers/unknown-serializer.js +4 -5
  133. package/dist/es2015/serializers/unknown-serializer.js.map +1 -1
  134. package/dist/es2015/type-decorator.js +2 -0
  135. package/dist/es2015/type-decorator.js.map +1 -0
  136. package/dist/es2015/type-entry.js +2 -0
  137. package/dist/es2015/type-entry.js.map +1 -0
  138. package/dist/es2015/type-extension-metadata-ctor-set-key.js +1 -1
  139. package/dist/es2015/type-extension-metadata-ctor-set-key.js.map +1 -1
  140. package/dist/es2015/type-extension-metadata.js.map +1 -1
  141. package/dist/es2015/type-manager.js +57 -55
  142. package/dist/es2015/type-manager.js.map +1 -1
  143. package/dist/es2015/type-metadata-symbol.js +1 -1
  144. package/dist/es2015/type-metadata-symbol.js.map +1 -1
  145. package/dist/es2015/type-metadata.js +465 -222
  146. package/dist/es2015/type-metadata.js.map +1 -1
  147. package/dist/es2015/type-scope.js +58 -0
  148. package/dist/es2015/type-scope.js.map +1 -0
  149. package/dist/es2015/type-state.js +2 -0
  150. package/dist/es2015/type-state.js.map +1 -0
  151. package/dist/es2015/type-states/index.js +3 -0
  152. package/dist/es2015/type-states/index.js.map +1 -0
  153. package/dist/es2015/type-states/resolved-type-state.js +44 -0
  154. package/dist/es2015/type-states/resolved-type-state.js.map +1 -0
  155. package/dist/es2015/type-states/unresolved-type-state.js +303 -0
  156. package/dist/es2015/type-states/unresolved-type-state.js.map +1 -0
  157. package/dist/es2015/type.js +3 -1
  158. package/dist/es2015/type.js.map +1 -1
  159. package/dist/es5/constants/default-value-resolver.js +2 -0
  160. package/dist/es5/constants/default-value-resolver.js.map +1 -0
  161. package/dist/es5/constants/empty-array.js +2 -0
  162. package/dist/es5/constants/empty-array.js.map +1 -0
  163. package/dist/es5/constants/empty-map.js +2 -0
  164. package/dist/es5/constants/empty-map.js.map +1 -0
  165. package/dist/es5/constants/index.js +5 -0
  166. package/dist/es5/constants/index.js.map +1 -0
  167. package/dist/es5/constants/null-value-resolver.js +2 -0
  168. package/dist/es5/constants/null-value-resolver.js.map +1 -0
  169. package/dist/es5/custom-key.js.map +1 -1
  170. package/dist/es5/factories/type-factory.js +63 -39
  171. package/dist/es5/factories/type-factory.js.map +1 -1
  172. package/dist/es5/functions/get-own-reflect-metadata.js +1 -2
  173. package/dist/es5/functions/get-own-reflect-metadata.js.map +1 -1
  174. package/dist/es5/functions/get-reflect-metadata.js +1 -2
  175. package/dist/es5/functions/get-reflect-metadata.js.map +1 -1
  176. package/dist/es5/functions/get-words.js +61 -2
  177. package/dist/es5/functions/get-words.js.map +1 -1
  178. package/dist/es5/functions/index.js +0 -12
  179. package/dist/es5/functions/index.js.map +1 -1
  180. package/dist/es5/functions/json-parse.js.map +1 -1
  181. package/dist/es5/functions/json-stringify.js +6 -5
  182. package/dist/es5/functions/json-stringify.js.map +1 -1
  183. package/dist/es5/functions/name-of.js +1 -5
  184. package/dist/es5/functions/name-of.js.map +1 -1
  185. package/dist/es5/index.js +17 -12
  186. package/dist/es5/index.js.map +1 -1
  187. package/dist/es5/inject-decorator.js +2 -0
  188. package/dist/es5/inject-decorator.js.map +1 -0
  189. package/dist/es5/inject-metadata.js +49 -34
  190. package/dist/es5/inject-metadata.js.map +1 -1
  191. package/dist/es5/inject-sorters/asc-inject-sorter.js +1 -9
  192. package/dist/es5/inject-sorters/asc-inject-sorter.js.map +1 -1
  193. package/dist/es5/inject-sorters/desc-inject-sorter.js +1 -9
  194. package/dist/es5/inject-sorters/desc-inject-sorter.js.map +1 -1
  195. package/dist/es5/inject-state.js +2 -0
  196. package/dist/es5/inject-state.js.map +1 -0
  197. package/dist/es5/inject-states/index.js +3 -0
  198. package/dist/es5/inject-states/index.js.map +1 -0
  199. package/dist/es5/inject-states/resolved-inject-state.js +12 -0
  200. package/dist/es5/inject-states/resolved-inject-state.js.map +1 -0
  201. package/dist/es5/inject-states/unresolved-inject-state.js +45 -0
  202. package/dist/es5/inject-states/unresolved-inject-state.js.map +1 -0
  203. package/dist/es5/inject.js +6 -8
  204. package/dist/es5/inject.js.map +1 -1
  205. package/dist/es5/injectors/singleton-injector.js +31 -22
  206. package/dist/es5/injectors/singleton-injector.js.map +1 -1
  207. package/dist/es5/logger-level.js +9 -0
  208. package/dist/es5/logger-level.js.map +1 -0
  209. package/dist/es5/logger.js +122 -0
  210. package/dist/es5/logger.js.map +1 -0
  211. package/dist/es5/metadata.js +44 -79
  212. package/dist/es5/metadata.js.map +1 -1
  213. package/dist/es5/null-value-resolver.js +2 -0
  214. package/dist/es5/null-value-resolver.js.map +1 -0
  215. package/dist/es5/nullable.js +2 -0
  216. package/dist/es5/nullable.js.map +1 -0
  217. package/dist/es5/optional.js +2 -0
  218. package/dist/es5/optional.js.map +1 -0
  219. package/dist/es5/property-decorator.js +2 -0
  220. package/dist/es5/property-decorator.js.map +1 -0
  221. package/dist/es5/property-extension-metadata-ctor-set-key.js +1 -1
  222. package/dist/es5/property-extension-metadata-ctor-set-key.js.map +1 -1
  223. package/dist/es5/property-extension-metadata.js.map +1 -1
  224. package/dist/es5/property-metadata.js +288 -162
  225. package/dist/es5/property-metadata.js.map +1 -1
  226. package/dist/es5/property-sorters/asc-property-sorter.js +1 -9
  227. package/dist/es5/property-sorters/asc-property-sorter.js.map +1 -1
  228. package/dist/es5/property-sorters/desc-property-sorter.js +1 -9
  229. package/dist/es5/property-sorters/desc-property-sorter.js.map +1 -1
  230. package/dist/es5/property-state.js +2 -0
  231. package/dist/es5/property-state.js.map +1 -0
  232. package/dist/es5/property-states/index.js +3 -0
  233. package/dist/es5/property-states/index.js.map +1 -0
  234. package/dist/es5/property-states/resolved-property-state.js +29 -0
  235. package/dist/es5/property-states/resolved-property-state.js.map +1 -0
  236. package/dist/es5/property-states/unresolved-property-state.js +249 -0
  237. package/dist/es5/property-states/unresolved-property-state.js.map +1 -0
  238. package/dist/es5/property.js +44 -22
  239. package/dist/es5/property.js.map +1 -1
  240. package/dist/es5/reference-handlers/circular-reference-handler.js +2 -3
  241. package/dist/es5/reference-handlers/circular-reference-handler.js.map +1 -1
  242. package/dist/es5/reference-handlers/json-path-reference-handler.js +10 -31
  243. package/dist/es5/reference-handlers/json-path-reference-handler.js.map +1 -1
  244. package/dist/es5/reference-handlers/plain-reference-handler.js +2 -3
  245. package/dist/es5/reference-handlers/plain-reference-handler.js.map +1 -1
  246. package/dist/es5/serializer-context.js +71 -237
  247. package/dist/es5/serializer-context.js.map +1 -1
  248. package/dist/es5/serializers/any-serializer.js +4 -5
  249. package/dist/es5/serializers/any-serializer.js.map +1 -1
  250. package/dist/es5/serializers/array-buffer-serializer.js +8 -13
  251. package/dist/es5/serializers/array-buffer-serializer.js.map +1 -1
  252. package/dist/es5/serializers/array-serializer.js +18 -31
  253. package/dist/es5/serializers/array-serializer.js.map +1 -1
  254. package/dist/es5/serializers/boolean-serializer.js +12 -19
  255. package/dist/es5/serializers/boolean-serializer.js.map +1 -1
  256. package/dist/es5/serializers/data-view-serializer.js +8 -14
  257. package/dist/es5/serializers/data-view-serializer.js.map +1 -1
  258. package/dist/es5/serializers/date-serializer.js +8 -13
  259. package/dist/es5/serializers/date-serializer.js.map +1 -1
  260. package/dist/es5/serializers/float-32-array-serializer.js +8 -14
  261. package/dist/es5/serializers/float-32-array-serializer.js.map +1 -1
  262. package/dist/es5/serializers/float-64-array-serializer.js +8 -14
  263. package/dist/es5/serializers/float-64-array-serializer.js.map +1 -1
  264. package/dist/es5/serializers/int-16-array-serializer.js +8 -14
  265. package/dist/es5/serializers/int-16-array-serializer.js.map +1 -1
  266. package/dist/es5/serializers/int-32-array-serializer.js +8 -14
  267. package/dist/es5/serializers/int-32-array-serializer.js.map +1 -1
  268. package/dist/es5/serializers/int-8-array-serializer.js +8 -14
  269. package/dist/es5/serializers/int-8-array-serializer.js.map +1 -1
  270. package/dist/es5/serializers/map-serializer.js +69 -55
  271. package/dist/es5/serializers/map-serializer.js.map +1 -1
  272. package/dist/es5/serializers/number-serializer.js +10 -17
  273. package/dist/es5/serializers/number-serializer.js.map +1 -1
  274. package/dist/es5/serializers/set-serializer.js +30 -27
  275. package/dist/es5/serializers/set-serializer.js.map +1 -1
  276. package/dist/es5/serializers/string-serializer.js +12 -19
  277. package/dist/es5/serializers/string-serializer.js.map +1 -1
  278. package/dist/es5/serializers/type-serializer.js +65 -101
  279. package/dist/es5/serializers/type-serializer.js.map +1 -1
  280. package/dist/es5/serializers/uint-16-array-serializer.js +8 -14
  281. package/dist/es5/serializers/uint-16-array-serializer.js.map +1 -1
  282. package/dist/es5/serializers/uint-32-array-serializer.js +8 -14
  283. package/dist/es5/serializers/uint-32-array-serializer.js.map +1 -1
  284. package/dist/es5/serializers/uint-8-array-serializer.js +8 -14
  285. package/dist/es5/serializers/uint-8-array-serializer.js.map +1 -1
  286. package/dist/es5/serializers/uint-8-clamped-array-serializer.js +8 -14
  287. package/dist/es5/serializers/uint-8-clamped-array-serializer.js.map +1 -1
  288. package/dist/es5/serializers/unknown-serializer.js +4 -5
  289. package/dist/es5/serializers/unknown-serializer.js.map +1 -1
  290. package/dist/es5/type-decorator.js +2 -0
  291. package/dist/es5/type-decorator.js.map +1 -0
  292. package/dist/es5/type-entry.js +2 -0
  293. package/dist/es5/type-entry.js.map +1 -0
  294. package/dist/es5/type-extension-metadata-ctor-set-key.js +1 -1
  295. package/dist/es5/type-extension-metadata-ctor-set-key.js.map +1 -1
  296. package/dist/es5/type-extension-metadata.js.map +1 -1
  297. package/dist/es5/type-manager.js +112 -63
  298. package/dist/es5/type-manager.js.map +1 -1
  299. package/dist/es5/type-metadata-symbol.js +1 -1
  300. package/dist/es5/type-metadata-symbol.js.map +1 -1
  301. package/dist/es5/type-metadata.js +597 -265
  302. package/dist/es5/type-metadata.js.map +1 -1
  303. package/dist/es5/type-scope.js +108 -0
  304. package/dist/es5/type-scope.js.map +1 -0
  305. package/dist/es5/type-state.js +2 -0
  306. package/dist/es5/type-state.js.map +1 -0
  307. package/dist/es5/type-states/index.js +3 -0
  308. package/dist/es5/type-states/index.js.map +1 -0
  309. package/dist/es5/type-states/resolved-type-state.js +46 -0
  310. package/dist/es5/type-states/resolved-type-state.js.map +1 -0
  311. package/dist/es5/type-states/unresolved-type-state.js +453 -0
  312. package/dist/es5/type-states/unresolved-type-state.js.map +1 -0
  313. package/dist/es5/type.js +3 -1
  314. package/dist/es5/type.js.map +1 -1
  315. package/dist/types/constants/default-value-resolver.d.ts +8 -0
  316. package/dist/types/constants/default-value-resolver.d.ts.map +1 -0
  317. package/dist/types/constants/empty-array.d.ts +7 -0
  318. package/dist/types/constants/empty-array.d.ts.map +1 -0
  319. package/dist/types/constants/empty-map.d.ts +7 -0
  320. package/dist/types/constants/empty-map.d.ts.map +1 -0
  321. package/dist/types/constants/index.d.ts +5 -0
  322. package/dist/types/constants/index.d.ts.map +1 -0
  323. package/dist/types/constants/null-value-resolver.d.ts +8 -0
  324. package/dist/types/constants/null-value-resolver.d.ts.map +1 -0
  325. package/dist/types/custom-key.d.ts +4 -3
  326. package/dist/types/custom-key.d.ts.map +1 -1
  327. package/dist/types/custom-option.d.ts +2 -2
  328. package/dist/types/custom-value.d.ts +2 -1
  329. package/dist/types/custom-value.d.ts.map +1 -1
  330. package/dist/types/factories/type-factory.d.ts +8 -5
  331. package/dist/types/factories/type-factory.d.ts.map +1 -1
  332. package/dist/types/factory.d.ts +7 -4
  333. package/dist/types/factory.d.ts.map +1 -1
  334. package/dist/types/functions/get-own-reflect-metadata.d.ts.map +1 -1
  335. package/dist/types/functions/get-reflect-metadata.d.ts.map +1 -1
  336. package/dist/types/functions/get-words.d.ts +3 -3
  337. package/dist/types/functions/get-words.d.ts.map +1 -1
  338. package/dist/types/functions/index.d.ts +0 -12
  339. package/dist/types/functions/index.d.ts.map +1 -1
  340. package/dist/types/functions/json-parse.d.ts +1 -1
  341. package/dist/types/functions/json-parse.d.ts.map +1 -1
  342. package/dist/types/functions/json-stringify.d.ts.map +1 -1
  343. package/dist/types/functions/name-of.d.ts.map +1 -1
  344. package/dist/types/generic-argument.d.ts +2 -2
  345. package/dist/types/generic-argument.d.ts.map +1 -1
  346. package/dist/types/generic-metadata.d.ts +2 -2
  347. package/dist/types/generic-metadata.d.ts.map +1 -1
  348. package/dist/types/index.d.ts +17 -12
  349. package/dist/types/index.d.ts.map +1 -1
  350. package/dist/types/inject-decorator.d.ts +7 -0
  351. package/dist/types/inject-decorator.d.ts.map +1 -0
  352. package/dist/types/inject-metadata.d.ts +52 -45
  353. package/dist/types/inject-metadata.d.ts.map +1 -1
  354. package/dist/types/inject-options.d.ts +8 -8
  355. package/dist/types/inject-options.d.ts.map +1 -1
  356. package/dist/types/inject-sorter.d.ts +3 -3
  357. package/dist/types/inject-sorter.d.ts.map +1 -1
  358. package/dist/types/inject-sorters/asc-inject-sorter.d.ts +3 -3
  359. package/dist/types/inject-sorters/asc-inject-sorter.d.ts.map +1 -1
  360. package/dist/types/inject-sorters/desc-inject-sorter.d.ts +3 -3
  361. package/dist/types/inject-sorters/desc-inject-sorter.d.ts.map +1 -1
  362. package/dist/types/inject-state.d.ts +36 -0
  363. package/dist/types/inject-state.d.ts.map +1 -0
  364. package/dist/types/inject-states/index.d.ts +3 -0
  365. package/dist/types/inject-states/index.d.ts.map +1 -0
  366. package/dist/types/inject-states/resolved-inject-state.d.ts +46 -0
  367. package/dist/types/inject-states/resolved-inject-state.d.ts.map +1 -0
  368. package/dist/types/inject-states/unresolved-inject-state.d.ts +49 -0
  369. package/dist/types/inject-states/unresolved-inject-state.d.ts.map +1 -0
  370. package/dist/types/inject.d.ts +5 -4
  371. package/dist/types/inject.d.ts.map +1 -1
  372. package/dist/types/injector.d.ts +4 -3
  373. package/dist/types/injector.d.ts.map +1 -1
  374. package/dist/types/injectors/singleton-injector.d.ts +5 -5
  375. package/dist/types/injectors/singleton-injector.d.ts.map +1 -1
  376. package/dist/types/logger-level.d.ts +31 -0
  377. package/dist/types/logger-level.d.ts.map +1 -0
  378. package/dist/types/logger.d.ts +125 -0
  379. package/dist/types/logger.d.ts.map +1 -0
  380. package/dist/types/metadata.d.ts +29 -39
  381. package/dist/types/metadata.d.ts.map +1 -1
  382. package/dist/types/null-value-resolver.d.ts +9 -0
  383. package/dist/types/null-value-resolver.d.ts.map +1 -0
  384. package/dist/types/nullable.d.ts +7 -0
  385. package/dist/types/nullable.d.ts.map +1 -0
  386. package/dist/types/optional.d.ts +7 -0
  387. package/dist/types/optional.d.ts.map +1 -0
  388. package/dist/types/property-decorator.d.ts +7 -0
  389. package/dist/types/property-decorator.d.ts.map +1 -0
  390. package/dist/types/property-extension-metadata-ctor-set-key.d.ts +1 -1
  391. package/dist/types/property-extension-metadata-ctor-set-key.d.ts.map +1 -1
  392. package/dist/types/property-extension-metadata-ctor.d.ts +2 -2
  393. package/dist/types/property-extension-metadata-ctor.d.ts.map +1 -1
  394. package/dist/types/property-extension-metadata.d.ts +7 -7
  395. package/dist/types/property-extension-metadata.d.ts.map +1 -1
  396. package/dist/types/property-metadata.d.ts +134 -119
  397. package/dist/types/property-metadata.d.ts.map +1 -1
  398. package/dist/types/property-options.d.ts +11 -10
  399. package/dist/types/property-options.d.ts.map +1 -1
  400. package/dist/types/property-sorter.d.ts +3 -3
  401. package/dist/types/property-sorter.d.ts.map +1 -1
  402. package/dist/types/property-sorters/asc-property-sorter.d.ts +3 -3
  403. package/dist/types/property-sorters/asc-property-sorter.d.ts.map +1 -1
  404. package/dist/types/property-sorters/desc-property-sorter.d.ts +3 -3
  405. package/dist/types/property-sorters/desc-property-sorter.d.ts.map +1 -1
  406. package/dist/types/property-state.d.ts +149 -0
  407. package/dist/types/property-state.d.ts.map +1 -0
  408. package/dist/types/property-states/index.d.ts +3 -0
  409. package/dist/types/property-states/index.d.ts.map +1 -0
  410. package/dist/types/property-states/resolved-property-state.d.ts +176 -0
  411. package/dist/types/property-states/resolved-property-state.d.ts.map +1 -0
  412. package/dist/types/property-states/unresolved-property-state.d.ts +162 -0
  413. package/dist/types/property-states/unresolved-property-state.d.ts.map +1 -0
  414. package/dist/types/property.d.ts +5 -4
  415. package/dist/types/property.d.ts.map +1 -1
  416. package/dist/types/reference-handlers/circular-reference-handler.d.ts.map +1 -1
  417. package/dist/types/reference-handlers/json-path-reference-handler.d.ts.map +1 -1
  418. package/dist/types/reference-handlers/plain-reference-handler.d.ts.map +1 -1
  419. package/dist/types/reference-value-setter.d.ts +1 -1
  420. package/dist/types/reference-value-setter.d.ts.map +1 -1
  421. package/dist/types/serializer-context.d.ts +70 -164
  422. package/dist/types/serializer-context.d.ts.map +1 -1
  423. package/dist/types/serializer.d.ts +8 -8
  424. package/dist/types/serializer.d.ts.map +1 -1
  425. package/dist/types/serializers/any-serializer.d.ts.map +1 -1
  426. package/dist/types/serializers/array-buffer-serializer.d.ts.map +1 -1
  427. package/dist/types/serializers/array-serializer.d.ts.map +1 -1
  428. package/dist/types/serializers/boolean-serializer.d.ts +1 -1
  429. package/dist/types/serializers/boolean-serializer.d.ts.map +1 -1
  430. package/dist/types/serializers/data-view-serializer.d.ts.map +1 -1
  431. package/dist/types/serializers/date-serializer.d.ts.map +1 -1
  432. package/dist/types/serializers/float-32-array-serializer.d.ts.map +1 -1
  433. package/dist/types/serializers/float-64-array-serializer.d.ts.map +1 -1
  434. package/dist/types/serializers/int-16-array-serializer.d.ts.map +1 -1
  435. package/dist/types/serializers/int-32-array-serializer.d.ts.map +1 -1
  436. package/dist/types/serializers/int-8-array-serializer.d.ts.map +1 -1
  437. package/dist/types/serializers/map-serializer.d.ts.map +1 -1
  438. package/dist/types/serializers/number-serializer.d.ts +1 -1
  439. package/dist/types/serializers/number-serializer.d.ts.map +1 -1
  440. package/dist/types/serializers/set-serializer.d.ts.map +1 -1
  441. package/dist/types/serializers/string-serializer.d.ts +1 -1
  442. package/dist/types/serializers/string-serializer.d.ts.map +1 -1
  443. package/dist/types/serializers/type-serializer.d.ts.map +1 -1
  444. package/dist/types/serializers/uint-16-array-serializer.d.ts.map +1 -1
  445. package/dist/types/serializers/uint-32-array-serializer.d.ts.map +1 -1
  446. package/dist/types/serializers/uint-8-array-serializer.d.ts.map +1 -1
  447. package/dist/types/serializers/uint-8-clamped-array-serializer.d.ts.map +1 -1
  448. package/dist/types/serializers/unknown-serializer.d.ts.map +1 -1
  449. package/dist/types/type-abstraction.d.ts +2 -2
  450. package/dist/types/type-abstraction.d.ts.map +1 -1
  451. package/dist/types/type-argument.d.ts +3 -3
  452. package/dist/types/type-argument.d.ts.map +1 -1
  453. package/dist/types/type-configuration.d.ts +4 -4
  454. package/dist/types/type-configuration.d.ts.map +1 -1
  455. package/dist/types/type-ctor.d.ts +2 -2
  456. package/dist/types/type-ctor.d.ts.map +1 -1
  457. package/dist/types/type-decorator.d.ts +7 -0
  458. package/dist/types/type-decorator.d.ts.map +1 -0
  459. package/dist/types/type-entry.d.ts +29 -0
  460. package/dist/types/type-entry.d.ts.map +1 -0
  461. package/dist/types/type-extension-metadata-ctor-set-key.d.ts +1 -1
  462. package/dist/types/type-extension-metadata-ctor-set-key.d.ts.map +1 -1
  463. package/dist/types/type-extension-metadata-ctor.d.ts +2 -2
  464. package/dist/types/type-extension-metadata-ctor.d.ts.map +1 -1
  465. package/dist/types/type-extension-metadata.d.ts +6 -6
  466. package/dist/types/type-extension-metadata.d.ts.map +1 -1
  467. package/dist/types/type-fn.d.ts +2 -2
  468. package/dist/types/type-fn.d.ts.map +1 -1
  469. package/dist/types/type-like.d.ts +2 -2
  470. package/dist/types/type-like.d.ts.map +1 -1
  471. package/dist/types/type-manager-options.d.ts.map +1 -1
  472. package/dist/types/type-manager.d.ts +120 -120
  473. package/dist/types/type-manager.d.ts.map +1 -1
  474. package/dist/types/type-metadata-symbol.d.ts +1 -1
  475. package/dist/types/type-metadata-symbol.d.ts.map +1 -1
  476. package/dist/types/type-metadata.d.ts +253 -152
  477. package/dist/types/type-metadata.d.ts.map +1 -1
  478. package/dist/types/type-options-base.d.ts +13 -12
  479. package/dist/types/type-options-base.d.ts.map +1 -1
  480. package/dist/types/type-options.d.ts +10 -10
  481. package/dist/types/type-options.d.ts.map +1 -1
  482. package/dist/types/type-resolver.d.ts +2 -2
  483. package/dist/types/type-resolver.d.ts.map +1 -1
  484. package/dist/types/type-scope.d.ts +68 -0
  485. package/dist/types/type-scope.d.ts.map +1 -0
  486. package/dist/types/type-state.d.ts +262 -0
  487. package/dist/types/type-state.d.ts.map +1 -0
  488. package/dist/types/type-states/index.d.ts +3 -0
  489. package/dist/types/type-states/index.d.ts.map +1 -0
  490. package/dist/types/type-states/resolved-type-state.d.ts +306 -0
  491. package/dist/types/type-states/resolved-type-state.d.ts.map +1 -0
  492. package/dist/types/type-states/unresolved-type-state.d.ts +275 -0
  493. package/dist/types/type-states/unresolved-type-state.d.ts.map +1 -0
  494. package/dist/types/type.d.ts +4 -3
  495. package/dist/types/type.d.ts.map +1 -1
  496. package/dist/umd/index.js +1 -1
  497. package/dist/umd/index.js.map +1 -1
  498. package/package.json +1 -7
  499. package/dist/es2015/custom-context.js +0 -59
  500. package/dist/es2015/custom-context.js.map +0 -1
  501. package/dist/es2015/functions/is-arrow-function.js +0 -5
  502. package/dist/es2015/functions/is-arrow-function.js.map +0 -1
  503. package/dist/es2015/functions/is-ctor-function.js +0 -5
  504. package/dist/es2015/functions/is-ctor-function.js.map +0 -1
  505. package/dist/es2015/functions/is-data-view.js +0 -4
  506. package/dist/es2015/functions/is-data-view.js.map +0 -1
  507. package/dist/es2015/functions/is-float-32-array.js +0 -4
  508. package/dist/es2015/functions/is-float-32-array.js.map +0 -1
  509. package/dist/es2015/functions/is-float-64-array.js +0 -4
  510. package/dist/es2015/functions/is-float-64-array.js.map +0 -1
  511. package/dist/es2015/functions/is-int-16-array.js +0 -4
  512. package/dist/es2015/functions/is-int-16-array.js.map +0 -1
  513. package/dist/es2015/functions/is-int-32-array.js +0 -4
  514. package/dist/es2015/functions/is-int-32-array.js.map +0 -1
  515. package/dist/es2015/functions/is-int-8-array.js +0 -4
  516. package/dist/es2015/functions/is-int-8-array.js.map +0 -1
  517. package/dist/es2015/functions/is-uint-16-array.js +0 -4
  518. package/dist/es2015/functions/is-uint-16-array.js.map +0 -1
  519. package/dist/es2015/functions/is-uint-32-array.js +0 -4
  520. package/dist/es2015/functions/is-uint-32-array.js.map +0 -1
  521. package/dist/es2015/functions/is-uint-8-array.js +0 -4
  522. package/dist/es2015/functions/is-uint-8-array.js.map +0 -1
  523. package/dist/es2015/functions/is-uint-8-clamped-array.js +0 -4
  524. package/dist/es2015/functions/is-uint-8-clamped-array.js.map +0 -1
  525. package/dist/es2015/generic-metadata-resolver.js +0 -2
  526. package/dist/es2015/generic-metadata-resolver.js.map +0 -1
  527. package/dist/es2015/generic-structure.js +0 -2
  528. package/dist/es2015/generic-structure.js.map +0 -1
  529. package/dist/es2015/inject-internals.js +0 -2
  530. package/dist/es2015/inject-internals.js.map +0 -1
  531. package/dist/es2015/log-level.js +0 -8
  532. package/dist/es2015/log-level.js.map +0 -1
  533. package/dist/es2015/log.js +0 -50
  534. package/dist/es2015/log.js.map +0 -1
  535. package/dist/es2015/property-internals.js +0 -2
  536. package/dist/es2015/property-internals.js.map +0 -1
  537. package/dist/es2015/serializer-context-options.js +0 -2
  538. package/dist/es2015/serializer-context-options.js.map +0 -1
  539. package/dist/es2015/type-context-entry.js +0 -9
  540. package/dist/es2015/type-context-entry.js.map +0 -1
  541. package/dist/es2015/type-context.js +0 -31
  542. package/dist/es2015/type-context.js.map +0 -1
  543. package/dist/es2015/type-internals.js +0 -2
  544. package/dist/es2015/type-internals.js.map +0 -1
  545. package/dist/es2015/type-metadata-resolver.js +0 -2
  546. package/dist/es2015/type-metadata-resolver.js.map +0 -1
  547. package/dist/es5/custom-context.js +0 -95
  548. package/dist/es5/custom-context.js.map +0 -1
  549. package/dist/es5/functions/is-arrow-function.js +0 -5
  550. package/dist/es5/functions/is-arrow-function.js.map +0 -1
  551. package/dist/es5/functions/is-ctor-function.js +0 -5
  552. package/dist/es5/functions/is-ctor-function.js.map +0 -1
  553. package/dist/es5/functions/is-data-view.js +0 -4
  554. package/dist/es5/functions/is-data-view.js.map +0 -1
  555. package/dist/es5/functions/is-float-32-array.js +0 -4
  556. package/dist/es5/functions/is-float-32-array.js.map +0 -1
  557. package/dist/es5/functions/is-float-64-array.js +0 -4
  558. package/dist/es5/functions/is-float-64-array.js.map +0 -1
  559. package/dist/es5/functions/is-int-16-array.js +0 -4
  560. package/dist/es5/functions/is-int-16-array.js.map +0 -1
  561. package/dist/es5/functions/is-int-32-array.js +0 -4
  562. package/dist/es5/functions/is-int-32-array.js.map +0 -1
  563. package/dist/es5/functions/is-int-8-array.js +0 -4
  564. package/dist/es5/functions/is-int-8-array.js.map +0 -1
  565. package/dist/es5/functions/is-uint-16-array.js +0 -4
  566. package/dist/es5/functions/is-uint-16-array.js.map +0 -1
  567. package/dist/es5/functions/is-uint-32-array.js +0 -4
  568. package/dist/es5/functions/is-uint-32-array.js.map +0 -1
  569. package/dist/es5/functions/is-uint-8-array.js +0 -4
  570. package/dist/es5/functions/is-uint-8-array.js.map +0 -1
  571. package/dist/es5/functions/is-uint-8-clamped-array.js +0 -4
  572. package/dist/es5/functions/is-uint-8-clamped-array.js.map +0 -1
  573. package/dist/es5/generic-metadata-resolver.js +0 -2
  574. package/dist/es5/generic-metadata-resolver.js.map +0 -1
  575. package/dist/es5/generic-structure.js +0 -2
  576. package/dist/es5/generic-structure.js.map +0 -1
  577. package/dist/es5/inject-internals.js +0 -2
  578. package/dist/es5/inject-internals.js.map +0 -1
  579. package/dist/es5/log-level.js +0 -8
  580. package/dist/es5/log-level.js.map +0 -1
  581. package/dist/es5/log.js +0 -65
  582. package/dist/es5/log.js.map +0 -1
  583. package/dist/es5/property-internals.js +0 -2
  584. package/dist/es5/property-internals.js.map +0 -1
  585. package/dist/es5/serializer-context-options.js +0 -2
  586. package/dist/es5/serializer-context-options.js.map +0 -1
  587. package/dist/es5/type-context-entry.js +0 -11
  588. package/dist/es5/type-context-entry.js.map +0 -1
  589. package/dist/es5/type-context.js +0 -33
  590. package/dist/es5/type-context.js.map +0 -1
  591. package/dist/es5/type-internals.js +0 -2
  592. package/dist/es5/type-internals.js.map +0 -1
  593. package/dist/es5/type-metadata-resolver.js +0 -2
  594. package/dist/es5/type-metadata-resolver.js.map +0 -1
  595. package/dist/types/custom-context.d.ts +0 -89
  596. package/dist/types/custom-context.d.ts.map +0 -1
  597. package/dist/types/functions/is-arrow-function.d.ts +0 -9
  598. package/dist/types/functions/is-arrow-function.d.ts.map +0 -1
  599. package/dist/types/functions/is-ctor-function.d.ts +0 -9
  600. package/dist/types/functions/is-ctor-function.d.ts.map +0 -1
  601. package/dist/types/functions/is-data-view.d.ts +0 -9
  602. package/dist/types/functions/is-data-view.d.ts.map +0 -1
  603. package/dist/types/functions/is-float-32-array.d.ts +0 -9
  604. package/dist/types/functions/is-float-32-array.d.ts.map +0 -1
  605. package/dist/types/functions/is-float-64-array.d.ts +0 -9
  606. package/dist/types/functions/is-float-64-array.d.ts.map +0 -1
  607. package/dist/types/functions/is-int-16-array.d.ts +0 -9
  608. package/dist/types/functions/is-int-16-array.d.ts.map +0 -1
  609. package/dist/types/functions/is-int-32-array.d.ts +0 -9
  610. package/dist/types/functions/is-int-32-array.d.ts.map +0 -1
  611. package/dist/types/functions/is-int-8-array.d.ts +0 -9
  612. package/dist/types/functions/is-int-8-array.d.ts.map +0 -1
  613. package/dist/types/functions/is-uint-16-array.d.ts +0 -9
  614. package/dist/types/functions/is-uint-16-array.d.ts.map +0 -1
  615. package/dist/types/functions/is-uint-32-array.d.ts +0 -9
  616. package/dist/types/functions/is-uint-32-array.d.ts.map +0 -1
  617. package/dist/types/functions/is-uint-8-array.d.ts +0 -9
  618. package/dist/types/functions/is-uint-8-array.d.ts.map +0 -1
  619. package/dist/types/functions/is-uint-8-clamped-array.d.ts +0 -9
  620. package/dist/types/functions/is-uint-8-clamped-array.d.ts.map +0 -1
  621. package/dist/types/generic-metadata-resolver.d.ts +0 -8
  622. package/dist/types/generic-metadata-resolver.d.ts.map +0 -1
  623. package/dist/types/generic-structure.d.ts +0 -8
  624. package/dist/types/generic-structure.d.ts.map +0 -1
  625. package/dist/types/inject-internals.d.ts +0 -15
  626. package/dist/types/inject-internals.d.ts.map +0 -1
  627. package/dist/types/log-level.d.ts +0 -12
  628. package/dist/types/log-level.d.ts.map +0 -1
  629. package/dist/types/log.d.ts +0 -96
  630. package/dist/types/log.d.ts.map +0 -1
  631. package/dist/types/property-internals.d.ts +0 -36
  632. package/dist/types/property-internals.d.ts.map +0 -1
  633. package/dist/types/serializer-context-options.d.ts +0 -51
  634. package/dist/types/serializer-context-options.d.ts.map +0 -1
  635. package/dist/types/type-context-entry.d.ts +0 -37
  636. package/dist/types/type-context-entry.d.ts.map +0 -1
  637. package/dist/types/type-context.d.ts +0 -71
  638. package/dist/types/type-context.d.ts.map +0 -1
  639. package/dist/types/type-internals.d.ts +0 -15
  640. package/dist/types/type-internals.d.ts.map +0 -1
  641. package/dist/types/type-metadata-resolver.d.ts +0 -9
  642. package/dist/types/type-metadata-resolver.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { Alias } from './alias';
2
- import { CustomContext } from './custom-context';
3
2
  import { CustomKey } from './custom-key';
4
3
  import { CustomOption } from './custom-option';
4
+ import { CustomValue } from './custom-value';
5
5
  import { DefaultValue } from './default-value';
6
6
  import { Discriminant } from './discriminant';
7
7
  import { Discriminator } from './discriminator';
@@ -11,30 +11,34 @@ import { InjectMetadata } from './inject-metadata';
11
11
  import { InjectOptions } from './inject-options';
12
12
  import { InjectSorter } from './inject-sorter';
13
13
  import { Injector } from './injector';
14
- import { Log } from './log';
14
+ import { Logger } from './logger';
15
15
  import { Metadata } from './metadata';
16
16
  import { NamingConvention } from './naming-convention';
17
+ import { Nullable } from './nullable';
18
+ import { Optional } from './optional';
17
19
  import { PropertyMetadata } from './property-metadata';
18
20
  import { PropertyName } from './property-name';
19
21
  import { PropertyOptions } from './property-options';
20
22
  import { PropertySorter } from './property-sorter';
21
23
  import { ReferenceHandler } from './reference-handler';
22
24
  import { Serializer } from './serializer';
25
+ import { TypeArgument } from './type-argument';
23
26
  import { TypeExtensionMetadata } from './type-extension-metadata';
24
27
  import { TypeExtensionMetadataCtor } from './type-extension-metadata-ctor';
25
28
  import { TypeExtensionOptions } from './type-extension-options';
26
29
  import { TypeFn } from './type-fn';
27
- import { TypeInternals } from './type-internals';
28
30
  import { TypeManager } from './type-manager';
29
31
  import { TypeName } from './type-name';
30
32
  import { TypeOptions } from './type-options';
31
- import { TypeOptionsBase } from './type-options-base';
33
+ import { TypeState } from './type-state';
34
+ import { ResolvedTypeState } from './type-states/resolved-type-state';
35
+ import { UnresolvedTypeState } from './type-states/unresolved-type-state';
32
36
  /**
33
37
  * Main class used to describe a certain type.
34
38
  *
35
- * @type {TypeMetadata<TType>}
39
+ * @type {TypeMetadata<TObject>}
36
40
  */
37
- export declare class TypeMetadata<TType> extends Metadata {
41
+ export declare class TypeMetadata<TObject> extends Metadata {
38
42
  /**
39
43
  * Type name.
40
44
  *
@@ -46,114 +50,128 @@ export declare class TypeMetadata<TType> extends Metadata {
46
50
  /**
47
51
  * Type function.
48
52
  *
49
- * @type {TypeFn<TType>}
53
+ * @type {TypeFn<TObject>}
50
54
  */
51
- readonly typeFn: TypeFn<TType>;
55
+ readonly typeFn: TypeFn<TObject>;
52
56
  /**
53
- * Type options used by default.
57
+ * Parent type metadata.
58
+ *
59
+ * @type {Optional<TypeMetadata<any>>}
60
+ */
61
+ readonly parentTypeMetadata: Optional<TypeMetadata<any>>;
62
+ /**
63
+ * Type options used as a fallback.
54
64
  *
55
- * @type {TypeOptionsBase<TType>}
65
+ * @type {TypeOptionsBase<TObject>}
56
66
  */
57
- readonly typeOptionsBase: TypeOptionsBase<TType>;
67
+ private readonly typeOptionsBase;
58
68
  /**
59
69
  * Type options.
60
70
  *
61
- * @type {TypeOptions<TType>}
71
+ * @type {TypeOptions<TObject>}
62
72
  */
63
- readonly typeOptions: TypeOptions<TType>;
73
+ private readonly typeOptions;
64
74
  /**
65
- * Type internals.
75
+ * Type metadata set.
66
76
  *
67
- * @type {TypeInternals}
77
+ * @type {ReadonlySet<TypeMetadata<any>>}
68
78
  */
69
- readonly typeInternals: TypeInternals;
79
+ private readonly typeMetadataSet;
70
80
  /**
71
- * Children type metadata map.
81
+ * Current type function map.
72
82
  *
73
- * @type {Map<TypeFn<TType>, TypeMetadata<any>>}
83
+ * @type {Map<Alias, TypeFn<any>>}
74
84
  */
75
- readonly childrenTypeMetadataMap: Map<TypeFn<any>, TypeMetadata<any>>;
85
+ private readonly currentTypeFnMap;
76
86
  /**
77
- * Discriminant map.
87
+ * Current child type metadata map.
78
88
  *
79
- * @type {Map<TypeFn<any>, Discriminant>}
89
+ * @type {Map<TypeFn<TObject>, TypeMetadata<any>>}
80
90
  */
81
- readonly discriminantMap: Map<TypeFn<any>, Discriminant>;
91
+ private readonly currentChildTypeMetadataMap;
82
92
  /**
83
- * Properties defined for a type.
93
+ * Current property metadata map.
84
94
  *
85
- * @type {Map<PropertyName, PropertyMetadata<TType, any>>}
95
+ * @type {Map<PropertyName, PropertyMetadata<TObject, any>>}
86
96
  */
87
- readonly propertyMetadataMap: Map<PropertyName, PropertyMetadata<TType, any>>;
97
+ private readonly currentPropertyMetadataMap;
88
98
  /**
89
- * Injections defined for a type.
99
+ * Current inject metadata map.
90
100
  *
91
- * @type {Map<InjectIndex, InjectMetadata<TType, any>>}
101
+ * @type {Map<InjectIndex, InjectMetadata<TObject, any>>}
92
102
  */
93
- readonly injectMetadataMap: Map<InjectIndex, InjectMetadata<TType, any>>;
103
+ private readonly currentInjectMetadataMap;
94
104
  /**
95
- * Parent type metadatas.
105
+ * Current type state.
96
106
  *
97
- * @type {Array<TypeMetadata<any>>}
107
+ * @type {TypeState<TObject>}
98
108
  */
99
- readonly parentTypeMetadatas: Array<TypeMetadata<any>>;
109
+ private currentTypeState;
100
110
  /**
101
111
  * Constructor.
102
112
  *
103
113
  * @param {TypeManager} typeManager Type manager.
114
+ * @param {Map<Alias, TypeFn<any>>} typeFnMap Type function map for types with aliases.
115
+ * @param {ReadonlySet<TypeMetadata<any>>} typeMetadataSet Type metadata set.
104
116
  * @param {TypeFn<any>} typeFn Type function.
105
- * @param {TypeOptions<TType>} typeOptions Type options.
106
- * @param {Array<TypeMetadata<any>>} parentTypeMetadatas Parent type metadatas.
117
+ * @param {TypeOptions<TObject>} typeOptions Type options.
118
+ * @param {Optional<TypeMetadata<any>>} parentTypeMetadata Parent type metadata.
107
119
  */
108
- constructor(typeManager: TypeManager, typeFn: TypeFn<TType>, typeOptions: TypeOptions<TType>, parentTypeMetadatas: Array<TypeMetadata<any>>);
120
+ constructor(typeManager: TypeManager, typeFnMap: Map<Alias, TypeFn<any>>, typeMetadataSet: ReadonlySet<TypeMetadata<any>>, typeFn: TypeFn<TObject>, typeOptions: TypeOptions<TObject>, parentTypeMetadata: Optional<TypeMetadata<any>>);
109
121
  /**
110
- * Parent type metadata.
122
+ * Gets type state.
111
123
  *
112
- * @type {TypeMetadata<any>}
124
+ * @returns {TypeState<TObject>} Type state.
113
125
  */
114
- get parentTypeMetadata(): TypeMetadata<any> | undefined;
126
+ get typeState(): TypeState<TObject>;
115
127
  /**
116
- * Gets alias.
128
+ * Gets inject metadata map.
117
129
  *
118
- * @returns {Alias|undefined} Alias or undefined.
130
+ * @returns {ReadonlyMap<InjectIndex, InjectMetadata<TObject, any>>}
119
131
  */
120
- get alias(): Alias | undefined;
132
+ get injectMetadataMap(): ReadonlyMap<InjectIndex, InjectMetadata<TObject, any>>;
121
133
  /**
122
- * Gets custom options.
134
+ * Gets property metadata map.
123
135
  *
124
- * @returns {Array<CustomOption>} Custom options.
136
+ * @returns {ReadonlyMap<PropertyName, PropertyMetadata<TObject, any>>}
125
137
  */
126
- get customOptions(): Array<CustomOption> | undefined;
138
+ get propertyMetadataMap(): ReadonlyMap<PropertyName, PropertyMetadata<TObject, any>>;
127
139
  /**
128
- * Gets custom context.
140
+ * Gets alias.
141
+ *
142
+ * @returns {Optional<Alias>} Alias or undefined.
143
+ */
144
+ get alias(): Optional<Alias>;
145
+ /**
146
+ * Gets custom value map.
129
147
  *
130
- * @returns {CustomContext} Custom context.
148
+ * @returns {ReadonlyMap<CustomKey<any>, CustomValue>} Custom value map.
131
149
  */
132
- get customContext(): CustomContext;
150
+ get customValueMap(): ReadonlyMap<CustomKey<any>, CustomValue>;
133
151
  /**
134
152
  * Gets serialized null value.
135
153
  *
136
- * @returns {any|undefined} Resolved serialized null value or undefined.
154
+ * @returns {Nullable<any>} Resolved serialized null value.
137
155
  */
138
- get serializedNullValue(): any | undefined;
156
+ get serializedNullValue(): Nullable<any>;
139
157
  /**
140
158
  * Gets serialized default value.
141
159
  *
142
- * @returns {any|undefined} Resolved serialized default value or undefined.
160
+ * @returns {Optional<any>} Resolved serialized default value.
143
161
  */
144
- get serializedDefaultValue(): any | undefined;
162
+ get serializedDefaultValue(): Optional<any>;
145
163
  /**
146
164
  * Gets deserialized null value.
147
165
  *
148
- * @returns {any|undefined} Resolved deserialized null value or undefined.
166
+ * @returns {Nullable<any>} Resolved deserialized null value.
149
167
  */
150
- get deserializedNullValue(): any | undefined;
168
+ get deserializedNullValue(): Nullable<any>;
151
169
  /**
152
170
  * Gets deserialized default value.
153
171
  *
154
- * @returns {any|undefined} Resolved deserialized default value or undefined.
172
+ * @returns {Optional<any>} Resolved deserialized default value.
155
173
  */
156
- get deserializedDefaultValue(): any | undefined;
174
+ get deserializedDefaultValue(): Optional<any>;
157
175
  /**
158
176
  * Gets discriminant.
159
177
  *
@@ -175,9 +193,9 @@ export declare class TypeMetadata<TType> extends Metadata {
175
193
  /**
176
194
  * Gets injectable value.
177
195
  *
178
- * @returns {boolean|undefined} Injectable indicator or undefined.
196
+ * @returns {boolean} Injectable indicator.
179
197
  */
180
- get injectable(): boolean | undefined;
198
+ get injectable(): boolean;
181
199
  /**
182
200
  * Gets injector.
183
201
  *
@@ -185,17 +203,17 @@ export declare class TypeMetadata<TType> extends Metadata {
185
203
  */
186
204
  get injector(): Injector;
187
205
  /**
188
- * Gets log.
206
+ * Gets logger.
189
207
  *
190
- * @returns {Log} Log instance.
208
+ * @returns {Logger} Logger instance.
191
209
  */
192
- get log(): Log;
210
+ get logger(): Logger;
193
211
  /**
194
212
  * Gets naming convention.
195
213
  *
196
- * @returns {NamingConvention|undefined} Naming convention or undefined.
214
+ * @returns {Optional<NamingConvention>} Naming convention or undefined.
197
215
  */
198
- get namingConvention(): NamingConvention | undefined;
216
+ get namingConvention(): Optional<NamingConvention>;
199
217
  /**
200
218
  * Gets indicator if current type metadata is polymorphic.
201
219
  *
@@ -217,9 +235,9 @@ export declare class TypeMetadata<TType> extends Metadata {
217
235
  /**
218
236
  * Gets serializer.
219
237
  *
220
- * @returns {Serializer<TType>} Serializer.
238
+ * @returns {Serializer<TObject>} Serializer.
221
239
  */
222
- get serializer(): Serializer<TType>;
240
+ get serializer(): Serializer<TObject>;
223
241
  /**
224
242
  * Gets indicator if null value should be preserved.
225
243
  *
@@ -241,66 +259,151 @@ export declare class TypeMetadata<TType> extends Metadata {
241
259
  /**
242
260
  * Gets property sorter.
243
261
  *
244
- * @returns {PropertySorter|undefined} Property sorter or undefined.
262
+ * @returns {Optional<PropertySorter>} Property sorter or undefined.
245
263
  */
246
- get propertySorter(): PropertySorter | undefined;
264
+ get propertySorter(): Optional<PropertySorter>;
247
265
  /**
248
266
  * Gets sorted property metadatas.
249
267
  *
250
- * @returns {IterableIterator<PropertyMetadata<TType, any>>} Iterable of property metadatas.
268
+ * @returns {ReadonlyArray<PropertyMetadata<TObject, any>>} Readonly array of property metadatas.
251
269
  */
252
- get sortedPropertyMetadatas(): IterableIterator<PropertyMetadata<TType, any>>;
270
+ get sortedPropertyMetadatas(): ReadonlyArray<PropertyMetadata<TObject, any>>;
253
271
  /**
254
272
  * Gets inject sorter.
255
273
  *
256
- * @returns {InjectSorter|undefined} Property sorter or undefined.
274
+ * @returns {Optional<InjectSorter>} Property sorter or undefined.
257
275
  */
258
- get injectSorter(): InjectSorter | undefined;
276
+ get injectSorter(): Optional<InjectSorter>;
259
277
  /**
260
278
  * Gets sorted inject metadatas.
261
279
  *
262
- * @returns {IterableIterator<InjectMetadata<TType, any>>} Iterable of inject metadatas.
280
+ * @returns {ReadonlyArray<InjectMetadata<TObject, any>>} Iterable of inject metadatas.
263
281
  */
264
- get sortedInjectMetadatas(): IterableIterator<InjectMetadata<TType, any>>;
282
+ get sortedInjectMetadatas(): ReadonlyArray<InjectMetadata<TObject, any>>;
265
283
  /**
266
- * Gets property options map.
284
+ * Gets parent type arguments.
267
285
  *
268
- * @returns {Map<PropertyName, PropertyOptions<any>>} Property options map.
286
+ * @returns {ReadonlyArray<TypeArgument<any>>} Parent arguments.
269
287
  */
270
- get propertyOptionsMap(): Map<PropertyName, PropertyOptions<any>>;
288
+ get parentTypeArguments(): ReadonlyArray<TypeArgument<any>>;
271
289
  /**
272
- * Gets inject options map.
290
+ * Gets property options map.
273
291
  *
274
- * @returns {Map<InjectIndex, InjectOptions<any>>} Inject options map.
292
+ * @returns {ReadonlyMap<PropertyName, PropertyOptions<any>>} Property options map.
275
293
  */
276
- get injectOptionsMap(): Map<InjectIndex, InjectOptions<any>>;
294
+ get propertyOptionsMap(): ReadonlyMap<PropertyName, PropertyOptions<any>>;
277
295
  /**
278
- * Gets parent type fns value.
296
+ * Gets inject options map.
279
297
  *
280
- * @returns {Array<TypeFn<any>>|undefined} Parent type fns or undefined.
298
+ * @returns {ReadonlyMap<InjectIndex, InjectOptions<any>>} Inject options map.
281
299
  */
282
- get parentTypeFns(): Array<TypeFn<any>> | undefined;
300
+ get injectOptionsMap(): ReadonlyMap<InjectIndex, InjectOptions<any>>;
283
301
  /**
284
302
  * Constructs initial type options by extending passed options
285
303
  * with default values if they are not overriden. All references are kept.
286
304
  *
287
- * @param {TypeOptions<TType>} typeOptions Type options.
305
+ * @param {TypeOptions<TObject>} typeOptions Type options.
288
306
  *
289
- * @returns {TypeOptions<TType>} Constructed type options.
307
+ * @returns {TypeOptions<TObject>} Constructed type options.
290
308
  */
291
309
  private constructTypeOptions;
292
310
  /**
293
- * Constructs type internals.
311
+ * Configures type extension metadata.
312
+ *
313
+ * @param {TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TObject>} typeExtensionMetadataCtor Type extension metadata constructor.
314
+ * @param {TTypeExtensionOptions} typeExtensionOptions Type extension options.
315
+ *
316
+ * @returns {TTypeExtensionMetadata} Type extension metadata
317
+ */
318
+ configureTypeExtensionMetadata<TTypeExtensionMetadata extends TypeExtensionMetadata<TObject, TTypeExtensionOptions>, TTypeExtensionOptions extends TypeExtensionOptions>(typeExtensionMetadataCtor: TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TObject>, typeExtensionOptions?: TTypeExtensionOptions): TTypeExtensionMetadata;
319
+ /**
320
+ * Extracts type extension metadata.
321
+ *
322
+ * @param {TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TObject>} typeExtensionMetadataCtor Type extension metadata constructor.
323
+ *
324
+ * @returns {Optional<TTypeExtensionMetadata>} Type extension metadata or undefined.
325
+ */
326
+ extractTypeExtensionMetadata<TTypeExtensionMetadata extends TypeExtensionMetadata<TObject, TTypeExtensionOptions>, TTypeExtensionOptions extends TypeExtensionOptions>(typeExtensionMetadataCtor: TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TObject>): Optional<TTypeExtensionMetadata>;
327
+ /**
328
+ * Extracts type extension metadata ctor set from custom value map.
329
+ *
330
+ * @returns {Set<TypeExtensionMetadataCtor<any, any, any>>} Type extension metadata ctor set.
331
+ */
332
+ private extractTypeExtensionMetadataCtorSet;
333
+ /**
334
+ * Resolves type state.
294
335
  *
295
- * @returns {TypeInternals} Constructed type internals.
336
+ * Calling this method has side effects by recomputing type state. If you need current
337
+ * type state then use provided getter for that.
338
+ *
339
+ * @returns {ResolvedTypeState<TObject>} Resolved type state.
340
+ */
341
+ resolveTypeState(): ResolvedTypeState<TObject>;
342
+ /**
343
+ * Unresolves type state.
344
+ *
345
+ * Calling this method has side effects by resetting type state.
346
+ *
347
+ * @returns {UnresolvedTypeState<TObject>} Unresolved type state.
296
348
  */
297
- private constructTypeInternals;
349
+ unresolveTypeState(): UnresolvedTypeState<TObject>;
298
350
  /**
299
- * Derives parent type metadata properties.
351
+ * Resolves custom value map the same way as it is done for the main options.
352
+ *
353
+ * @returns {ReadonlyMap<CustomKey<any>, CustomValue>} Resolved custom value map.
354
+ */
355
+ private resolveCustomValueMap;
356
+ /**
357
+ * Resolves own parent type metadatas.
358
+ *
359
+ * @param {ReadonlyArray<TypeArgument<any>>} parentTypeArguments Resolved parent type arguments.
360
+ *
361
+ * @returns {ReadonlyArray<TypeMetadata<any>>} Resolved own parent type metadatas.
362
+ */
363
+ private resolveOwnParentTypeMetadatas;
364
+ /**
365
+ * Resolves own child type metadatas.
366
+ *
367
+ * @returns {ReadonlyArray<TypeMetadata<any>>} Resolved own child type metadatas.
368
+ */
369
+ private resolveOwnChildTypeMetadatas;
370
+ /**
371
+ * Resolves parent type metadata set for provided type metadata reflecting inheritance order where the
372
+ * first element is the current type metadata and the last element is the most abstract parent. This
373
+ * collection is used to define all properties which are declared for the provided type metadata
374
+ * respecting nested declarations.
375
+ *
376
+ * @param {TypeMetadata<any>} typeMetadata Type metadata.
377
+ * @param {Set<TypeMetadata<any>>} parentTypeMetadataSet Parent type metadata set.
378
+ *
379
+ * @returns {ReadonlySet<TypeMetadata<any>>} Parent type metadata set.
380
+ */
381
+ private resolveParentTypeMetadataSet;
382
+ /**
383
+ * Resolved child type metadata set for provided type metadata reflecting inheritance order where the
384
+ * first element is the current type metadata and the last element is the most specific child. This
385
+ * collection is used to define polymorphic relationships between types.
386
+ *
387
+ * @param {TypeMetadata<any>} typeMetadata Type metadata.
388
+ * @param {Set<TypeMetadata<any>>} childTypeMetadataSet Child type metadata set.
389
+ *
390
+ * @returns {ReadonlySet<TypeMetadata<any>>} Child type metadata set.
391
+ */
392
+ private resolveChildTypeMetadataSet;
393
+ /**
394
+ * Resolves property metadata map.
395
+ *
396
+ * @param {ReadonlyArray<TypeMetadata<any>>} parentTypeMetadatas Resolved parent type metadatas.
397
+ *
398
+ * @returns {ReadonlyMap<PropertyName, PropertyMetadata<TObject, any>>} Resolved property metadata map.
399
+ */
400
+ private resolvePropertyMetadataMap;
401
+ /**
402
+ * Extends parent type metadata.
300
403
  *
301
404
  * @returns {this} Current instance of type metadata.
302
405
  */
303
- private deriveParentTypeMetadataProperties;
406
+ private extendParentTypeMetadata;
304
407
  /**
305
408
  * Reflects inject metadata.
306
409
  *
@@ -312,11 +415,11 @@ export declare class TypeMetadata<TType> extends Metadata {
312
415
  /**
313
416
  * Configures alias.
314
417
  *
315
- * @param {Alias|undefined} alias Alias.
418
+ * @param {Optional<Alias>} alias Alias.
316
419
  *
317
420
  * @returns {this} Current instance of type metadata.
318
421
  */
319
- hasAlias(alias: Alias | undefined): this;
422
+ hasAlias(alias: Optional<Alias>): this;
320
423
  /**
321
424
  * Releases alias.
322
425
  *
@@ -324,30 +427,38 @@ export declare class TypeMetadata<TType> extends Metadata {
324
427
  */
325
428
  private releaseAlias;
326
429
  /**
327
- * Configures custom option.
430
+ * Configures custom value map.
431
+ *
432
+ * @param {Optional<Map<CustomKey<any>, CustomValue>>} customValueMap Custom value map or undefined.
433
+ *
434
+ * @returns {this} Current instance of type metadata.
435
+ */
436
+ hasCustomValueMap(customValueMap: Optional<Map<CustomKey<any>, CustomValue>>): this;
437
+ /**
438
+ * Configures custom value.
328
439
  *
329
440
  * @param {CustomKey<TCustomValue>} customKey Custom key.
330
441
  * @param {TCustomValue} customValue Custom value.
331
442
  *
332
443
  * @returns {this} Current instance of type metadata.
333
444
  */
334
- hasCustomOption<TCustomValue>(customKey: CustomKey<TCustomValue>, customValue: TCustomValue): this;
445
+ hasCustomValue<TCustomValue>(customKey: CustomKey<TCustomValue>, customValue: TCustomValue): this;
335
446
  /**
336
- * Extracts custom option.
447
+ * Extracts value by custom key.
337
448
  *
338
449
  * @param {CustomKey<TCustomValue>} customKey Custom key.
339
450
  *
340
451
  * @returns {TCustomValue} Custom value.
341
452
  */
342
- extractCustomOption<TCustomValue>(customKey: CustomKey<TCustomValue>): TCustomValue;
453
+ extractCustomValue<TCustomValue>(customKey: CustomKey<TCustomValue>): TCustomValue;
343
454
  /**
344
455
  * Configures custom options.
345
456
  *
346
- * @param {Array<CustomOption>|undefined} customOptions Custom options.
457
+ * @param {ReadonlyArray<CustomOption>} customOptions Custom options.
347
458
  *
348
459
  * @returns {this} Current instance of type metadata.
349
460
  */
350
- hasCustomOptions(customOptions: Array<CustomOption> | undefined): this;
461
+ hasCustomOptions(customOptions: ReadonlyArray<CustomOption>): this;
351
462
  /**
352
463
  * Configures default value.
353
464
  *
@@ -375,36 +486,27 @@ export declare class TypeMetadata<TType> extends Metadata {
375
486
  /**
376
487
  * Configures discriminator.
377
488
  *
378
- * @param {Discriminator|undefined} discriminator Discriminator.
489
+ * @param {Optional<Discriminator>} discriminator Discriminator.
379
490
  *
380
491
  * @returns {this} Current instance of type metadata.
381
492
  */
382
- hasDiscriminator(discriminator: Discriminator | undefined): this;
493
+ hasDiscriminator(discriminator: Optional<Discriminator>): this;
383
494
  /**
384
495
  * Configures discriminant.
385
496
  *
386
- * @param {Discriminant|undefined} discriminant Discriminant.
497
+ * @param {Optional<Discriminant>} discriminant Discriminant.
387
498
  *
388
499
  * @returns {this} Current instance of type metadata.
389
500
  */
390
- hasDiscriminant(discriminant: Discriminant | undefined): this;
391
- /**
392
- * Provides discriminant.
393
- *
394
- * @param {TypeFn<any>} typeFn Type function.
395
- * @param {Discriminant} discriminant Discriminant.
396
- *
397
- * @returns {this} Current instance of type metadata.
398
- */
399
- private provideDiscriminant;
501
+ hasDiscriminant(discriminant: Optional<Discriminant>): this;
400
502
  /**
401
503
  * Configures factory.
402
504
  *
403
- * @param {Factory|undefined} factory Factory.
505
+ * @param {Optional<Factory>} factory Factory.
404
506
  *
405
507
  * @returns {this} Current instance of type metadata.
406
508
  */
407
- hasFactory(factory: Factory | undefined): this;
509
+ hasFactory(factory: Optional<Factory>): this;
408
510
  /**
409
511
  * Configures injectable.
410
512
  *
@@ -416,27 +518,27 @@ export declare class TypeMetadata<TType> extends Metadata {
416
518
  /**
417
519
  * Configures injector.
418
520
  *
419
- * @param {Injector|undefined} injector Injector.
521
+ * @param {Optional<Injector>} injector Injector.
420
522
  *
421
523
  * @returns {this} Current instance of type metadata.
422
524
  */
423
- hasInjector(injector: Injector | undefined): this;
525
+ hasInjector(injector: Optional<Injector>): this;
424
526
  /**
425
- * Configures log.
527
+ * Configures logger.
426
528
  *
427
- * @param {Log|undefined} log Log.
529
+ * @param {Optional<Logger>} logger Logger.
428
530
  *
429
531
  * @returns {this} Current instance of type metadata.
430
532
  */
431
- hasLog(log: Log | undefined): this;
533
+ hasLogger(logger: Optional<Logger>): this;
432
534
  /**
433
535
  * Configures naming convention.
434
536
  *
435
- * @param {NamingConvention|undefined} namingConvention Naming convention.
537
+ * @param {Optional<NamingConvention>} namingConvention Naming convention.
436
538
  *
437
539
  * @returns {this} Current instance of type metadata.
438
540
  */
439
- hasNamingConvention(namingConvention: NamingConvention | undefined): this;
541
+ hasNamingConvention(namingConvention: Optional<NamingConvention>): this;
440
542
  /**
441
543
  * Configures preserve discriminator.
442
544
  *
@@ -448,19 +550,19 @@ export declare class TypeMetadata<TType> extends Metadata {
448
550
  /**
449
551
  * Configures reference handler.
450
552
  *
451
- * @param {ReferenceHandler|undefined} referenceHandler Reference handler.
553
+ * @param {Optional<ReferenceHandler>} referenceHandler Reference handler.
452
554
  *
453
555
  * @returns {this} Current instance of type metadata.
454
556
  */
455
- hasReferenceHandler(referenceHandler: ReferenceHandler | undefined): this;
557
+ hasReferenceHandler(referenceHandler: Optional<ReferenceHandler>): this;
456
558
  /**
457
559
  * Configures serializer.
458
560
  *
459
- * @param {Serializer<TType>|undefined} serializer Serializer.
561
+ * @param {Optional<Serializer<TObject>>} serializer Serializer.
460
562
  *
461
563
  * @returns {this} Current instance of type metadata.
462
564
  */
463
- hasSerializer(serializer: Serializer<TType> | undefined): this;
565
+ hasSerializer(serializer: Optional<Serializer<TObject>>): this;
464
566
  /**
465
567
  * Configures preserve null.
466
568
  *
@@ -488,37 +590,45 @@ export declare class TypeMetadata<TType> extends Metadata {
488
590
  /**
489
591
  * Configures property sorter.
490
592
  *
491
- * @param {PropertySorter|undefined} propertySorter Property sorter.
593
+ * @param {Optional<PropertySorter>} propertySorter Property sorter.
492
594
  *
493
595
  * @returns {this} Current instance of type metadata.
494
596
  */
495
- hasPropertySorter(propertySorter: PropertySorter | undefined): this;
597
+ hasPropertySorter(propertySorter: Optional<PropertySorter>): this;
496
598
  /**
497
599
  * Configures inject sorter.
498
600
  *
499
- * @param {InjectSorter|undefined} injectSorter Inject sorter.
601
+ * @param {Optional<InjectSorter>} injectSorter Inject sorter.
500
602
  *
501
603
  * @returns {this} Current instance of type metadata.
502
604
  */
503
- hasInjectSorter(injectSorter: InjectSorter | undefined): this;
605
+ hasInjectSorter(injectSorter: Optional<InjectSorter>): this;
606
+ /**
607
+ * Configures parent type arguments.
608
+ *
609
+ * @param {Array<TypeArgument<any>>} parentTypeArguments Parent type arguments.
610
+ *
611
+ * @returns {this} Current instance of type metadata.
612
+ */
613
+ hasParentTypeArguments(parentTypeArguments: Array<TypeArgument<any>>): this;
504
614
  /**
505
615
  * Configures certain property metadata.
506
616
  *
507
617
  * @param {PropertyName} propertyName Property name.
508
618
  * @param {PropertyOptions<TPropertyType>} propertyOptions Property options.
509
619
  *
510
- * @returns {PropertyMetadata<TType, TPropertyType>} Configured property metadata.
620
+ * @returns {PropertyMetadata<TObject, TPropertyType>} Configured property metadata.
511
621
  */
512
- configurePropertyMetadata<TPropertyType>(propertyName: PropertyName, propertyOptions?: PropertyOptions<TPropertyType>): PropertyMetadata<TType, TPropertyType>;
622
+ configurePropertyMetadata<TPropertyType>(propertyName: PropertyName, propertyOptions?: PropertyOptions<TPropertyType>): PropertyMetadata<TObject, TPropertyType>;
513
623
  /**
514
624
  * Configures certain inject metadata.
515
625
  *
516
626
  * @param {InjectIndex} injectIndex Inject index.
517
627
  * @param {InjectOptions<TInjectType>} injectOptions Inject options.
518
628
  *
519
- * @returns {InjectMetadata<TType, TInjectType>} Configured inject metadata.
629
+ * @returns {InjectMetadata<TObject, TInjectType>} Configured inject metadata.
520
630
  */
521
- configureInjectMetadata<TInjectType>(injectIndex: InjectIndex, injectOptions?: InjectOptions<TInjectType>): InjectMetadata<TType, TInjectType>;
631
+ configureInjectMetadata<TInjectType>(injectIndex: InjectIndex, injectOptions?: InjectOptions<TInjectType>): InjectMetadata<TObject, TInjectType>;
522
632
  /**
523
633
  * Configures property metadata map.
524
634
  *
@@ -528,45 +638,36 @@ export declare class TypeMetadata<TType> extends Metadata {
528
638
  */
529
639
  hasPropertyMetadataMap<TPropertyType>(propertyOptionsMap: Map<PropertyName, PropertyOptions<TPropertyType>>): this;
530
640
  /**
531
- * Configures inject metadata map.
532
- *
533
- * @param {Map<InjectIndex, InjectOptions<TInjectType>>} injectOptionsMap Inject options map.
534
- *
535
- * @returns {this} Current instance of type metadata.
536
- */
537
- hasInjectMetadataMap<TInjectType>(injectOptionsMap: Map<InjectIndex, InjectOptions<TInjectType>>): this;
538
- /**
539
- * Configures type extension metadata.
641
+ * Clears property options map.
540
642
  *
541
- * @param {TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TType>} typeExtensionMetadataCtor Type extension metadata constructor.
542
- * @param {TTypeExtensionOptions} typeExtensionOptions Type extension options.
643
+ * @param {Map<PropertyName, PropertyOptions<TPropertyType>>} propertyOptionsMap Property options map.
543
644
  *
544
- * @returns {TTypeExtensionMetadata} Type extension metadata
645
+ * @returns {Map<PropertyName, PropertyOptions<any>>} Cleared property options map.
545
646
  */
546
- configureTypeExtensionMetadata<TTypeExtensionMetadata extends TypeExtensionMetadata<TType, TTypeExtensionOptions>, TTypeExtensionOptions extends TypeExtensionOptions>(typeExtensionMetadataCtor: TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TType>, typeExtensionOptions?: TTypeExtensionOptions): TTypeExtensionMetadata;
647
+ private clearPropertyOptionsMap;
547
648
  /**
548
- * Extracts type extension metadata.
649
+ * Configures inject metadata map.
549
650
  *
550
- * @param {TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TType>} typeExtensionMetadataCtor Type extension metadata constructor.
651
+ * @param {Map<InjectIndex, InjectOptions<TInjectType>>} injectOptionsMap Inject options map.
551
652
  *
552
- * @returns {TTypeExtensionMetadata|undefined} Type extension metadata or undefined.
653
+ * @returns {this} Current instance of type metadata.
553
654
  */
554
- extractTypeExtensionMetadata<TTypeExtensionMetadata extends TypeExtensionMetadata<TType, TTypeExtensionOptions>, TTypeExtensionOptions extends TypeExtensionOptions>(typeExtensionMetadataCtor: TypeExtensionMetadataCtor<TTypeExtensionMetadata, TTypeExtensionOptions, TType>): TTypeExtensionMetadata | undefined;
655
+ hasInjectMetadataMap<TInjectType>(injectOptionsMap: Map<InjectIndex, InjectOptions<TInjectType>>): this;
555
656
  /**
556
- * Configures parent type fns.
657
+ * Clears inject options map.
557
658
  *
558
- * @param {Array<TypeFn<any>>} parentTypeFns Parent type fns.
659
+ * @param {Map<InjectIndex, InjectOptions<TInjectType>>} injectOptionsMap Inject options map.
559
660
  *
560
- * @returns {this} Current instance of type metadata.
661
+ * @returns {Map<InjectIndex, InjectOptions<any>>} Cleared inject options map.
561
662
  */
562
- hasParentTypeFns(parentTypeFns: Array<TypeFn<any>>): this;
663
+ private clearInjectOptionsMap;
563
664
  /**
564
665
  * Configures type metadata based on provided options.
565
666
  *
566
- * @param {TypeOptions<TType>} typeOptions Type options.
667
+ * @param {TypeOptions<TObject>} typeOptions Type options.
567
668
  *
568
669
  * @returns {this} Current instance of type metadata.
569
670
  */
570
- configure(typeOptions: TypeOptions<TType>): this;
671
+ configure(typeOptions: TypeOptions<TObject>): this;
571
672
  }
572
673
  //# sourceMappingURL=type-metadata.d.ts.map