@dipscope/type-manager 7.0.0-beta.0 → 7.0.0

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