@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,320 +1,320 @@
1
- import { assign, isArray, isNil, isUndefined } from 'lodash';
2
- import { Any } from './any';
3
- import { CustomContext } from './custom-context';
4
- import { TypeFactory } from './factories/type-factory';
5
- import { jsonParse } from './functions/json-parse';
6
- import { jsonStringify } from './functions/json-stringify';
7
- import { SingletonInjector } from './injectors/singleton-injector';
8
- import { Log } from './log';
9
- import { LogLevel } from './log-level';
10
- import { CircularReferenceHandler } from './reference-handlers/circular-reference-handler';
11
- import { SerializerContext } from './serializer-context';
12
- import { AnySerializer } from './serializers/any-serializer';
13
- import { ArrayBufferSerializer } from './serializers/array-buffer-serializer';
14
- import { ArraySerializer } from './serializers/array-serializer';
15
- import { BooleanSerializer } from './serializers/boolean-serializer';
16
- import { DataViewSerializer } from './serializers/data-view-serializer';
17
- import { DateSerializer } from './serializers/date-serializer';
18
- import { Float32ArraySerializer } from './serializers/float-32-array-serializer';
19
- import { Float64ArraySerializer } from './serializers/float-64-array-serializer';
20
- import { Int16ArraySerializer } from './serializers/int-16-array-serializer';
21
- import { Int32ArraySerializer } from './serializers/int-32-array-serializer';
22
- import { Int8ArraySerializer } from './serializers/int-8-array-serializer';
23
- import { MapSerializer } from './serializers/map-serializer';
24
- import { NumberSerializer } from './serializers/number-serializer';
25
- import { SetSerializer } from './serializers/set-serializer';
26
- import { StringSerializer } from './serializers/string-serializer';
27
- import { TypeSerializer } from './serializers/type-serializer';
28
- import { Uint16ArraySerializer } from './serializers/uint-16-array-serializer';
29
- import { Uint32ArraySerializer } from './serializers/uint-32-array-serializer';
30
- import { Uint8ArraySerializer } from './serializers/uint-8-array-serializer';
31
- import { Uint8ClampedArraySerializer } from './serializers/uint-8-clamped-array-serializer';
32
- import { UnknownSerializer } from './serializers/unknown-serializer';
33
- import { TypeMetadata } from './type-metadata';
34
- import { typeMetadataSymbol } from './type-metadata-symbol';
35
- import { Unknown } from './unknown';
36
- export class TypeManager {
37
- constructor(typeManagerOptions = {}) {
38
- this.typeFnMap = new Map();
39
- this.symbol = Symbol(typeMetadataSymbol.description);
40
- this.typeManagerOptions = this.constructTypeManagerOptions(typeManagerOptions);
41
- this.customContext = this.constructCustomContext();
42
- this.configure(typeManagerOptions);
43
- return;
44
- }
45
- static get typeFnMap() {
46
- return this.staticTypeManager.typeFnMap;
47
- }
48
- static get symbol() {
49
- return this.staticTypeManager.symbol;
50
- }
51
- static get typeManagerOptions() {
52
- return this.staticTypeManager.typeManagerOptions;
53
- }
54
- static get typeOptionsBase() {
55
- return this.staticTypeManager.typeOptionsBase;
56
- }
57
- get typeOptionsBase() {
58
- let typeOptionsBase = this.typeManagerOptions.typeOptionsBase;
59
- if (isNil(typeOptionsBase)) {
60
- typeOptionsBase = {};
61
- this.typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
62
- }
63
- return typeOptionsBase;
64
- }
65
- static get typeOptionsMap() {
66
- return this.staticTypeManager.typeOptionsMap;
67
- }
68
- get typeOptionsMap() {
69
- let typeOptionsMap = this.typeManagerOptions.typeOptionsMap;
70
- if (isNil(typeOptionsMap)) {
71
- typeOptionsMap = new Map();
72
- this.typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
73
- }
74
- return typeOptionsMap;
75
- }
76
- static get typeConfigurationMap() {
77
- return this.staticTypeManager.typeConfigurationMap;
78
- }
79
- get typeConfigurationMap() {
80
- let typeConfigurationMap = this.typeManagerOptions.typeConfigurationMap;
81
- if (isNil(typeConfigurationMap)) {
82
- typeConfigurationMap = new Map();
83
- this.typeManagerOptions.typeConfigurationMap = typeConfigurationMap;
84
- }
85
- return typeConfigurationMap;
86
- }
87
- constructTypeManagerOptions(typeManagerOptions) {
88
- let typeOptionsBase = typeManagerOptions.typeOptionsBase;
89
- if (isNil(typeOptionsBase)) {
90
- typeOptionsBase = {};
91
- typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
92
- }
93
- let typeOptionsMap = typeManagerOptions.typeOptionsMap;
94
- if (isNil(typeOptionsMap)) {
95
- typeOptionsMap = new Map();
96
- typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
97
- }
98
- return typeManagerOptions;
99
- }
100
- constructTypeOptionsBase(typeOptionsBase) {
101
- const initialTypeOptionsBase = assign({}, TypeManager.defaultTypeOptionsBase, typeOptionsBase);
102
- assign(typeOptionsBase, initialTypeOptionsBase);
103
- return typeOptionsBase;
104
- }
105
- constructTypeOptionsMap(typeOptionsMap) {
106
- const initialTypeOptionsMap = new Map();
107
- for (const [typeFn, typeOptions] of TypeManager.defaultTypeOptionsMap) {
108
- let mapTypeOptions = initialTypeOptionsMap.get(typeFn);
109
- if (isNil(mapTypeOptions)) {
110
- mapTypeOptions = {};
111
- }
112
- initialTypeOptionsMap.set(typeFn, assign(mapTypeOptions, typeOptions));
113
- }
114
- for (const [typeFn, typeOptions] of typeOptionsMap) {
115
- let mapTypeOptions = initialTypeOptionsMap.get(typeFn);
116
- if (isNil(mapTypeOptions)) {
117
- mapTypeOptions = {};
118
- }
119
- initialTypeOptionsMap.set(typeFn, assign(typeOptions, assign(mapTypeOptions, typeOptions)));
120
- }
121
- typeOptionsMap.clear();
122
- for (const [typeFn, typeOptions] of initialTypeOptionsMap) {
123
- typeOptionsMap.set(typeFn, typeOptions);
124
- }
125
- return typeOptionsMap;
126
- }
127
- constructCustomContext() {
128
- var _a;
129
- const customOptions = (_a = this.typeOptionsBase.customOptions) !== null && _a !== void 0 ? _a : new Array();
130
- const customContext = new CustomContext(customOptions);
131
- this.typeOptionsBase.customOptions = customOptions;
132
- return customContext;
133
- }
134
- static configureTypeMetadata(typeFn, typeOptions) {
135
- return this.staticTypeManager.configureTypeMetadata(typeFn, typeOptions);
136
- }
137
- configureTypeMetadata(typeFn, typeOptions) {
138
- const symbol = this.symbol;
139
- const prototype = typeFn.prototype;
140
- const typeMetadataDefined = prototype.hasOwnProperty(symbol);
141
- const typeMetadata = typeMetadataDefined ? prototype[symbol] : this.declareTypeMetadata(typeFn, typeOptions);
142
- if (!typeMetadataDefined) {
143
- Object.defineProperty(prototype, symbol, {
144
- enumerable: false,
145
- configurable: false,
146
- writable: false,
147
- value: typeMetadata
148
- });
149
- }
150
- if (typeMetadataDefined && !isNil(typeOptions)) {
151
- typeMetadata.configure(typeOptions);
152
- }
153
- return typeMetadata;
154
- }
155
- declareTypeMetadata(typeFn, typeOptions) {
156
- var _a;
157
- let mapTypeOptions = this.typeOptionsMap.get(typeFn);
158
- if (isNil(mapTypeOptions)) {
159
- mapTypeOptions = typeOptions !== null && typeOptions !== void 0 ? typeOptions : {};
160
- this.typeOptionsMap.set(typeFn, mapTypeOptions);
161
- }
162
- const symbol = this.symbol;
163
- const parentPrototype = (_a = Object.getPrototypeOf(typeFn.prototype)) !== null && _a !== void 0 ? _a : {};
164
- const parentTypeMetadata = parentPrototype[symbol];
165
- const typeMetadata = new TypeMetadata(this, typeFn, mapTypeOptions, parentTypeMetadata);
166
- return typeMetadata;
167
- }
168
- static extractTypeMetadata(typeFn) {
169
- return this.staticTypeManager.extractTypeMetadata(typeFn);
170
- }
171
- extractTypeMetadata(typeFn) {
172
- const symbol = this.symbol;
173
- const prototype = typeFn.prototype;
174
- const typeMetadataDefined = prototype.hasOwnProperty(symbol);
175
- const typeMetadata = typeMetadataDefined ? prototype[symbol] : this.configureTypeMetadata(typeFn);
176
- return typeMetadata;
177
- }
178
- static applyTypeOptionsBase(typeOptionsBase) {
179
- return this.staticTypeManager.applyTypeOptionsBase(typeOptionsBase);
180
- }
181
- applyTypeOptionsBase(typeOptionsBase) {
182
- const customOptions = this.typeOptionsBase.customOptions;
183
- assign(this.typeOptionsBase, typeOptionsBase, { customOptions: customOptions });
184
- if (!isNil(typeOptionsBase.customOptions)) {
185
- this.customContext.configure(typeOptionsBase.customOptions);
186
- }
187
- return this;
188
- }
189
- static applyTypeOptionsMap(typeOptionsMap) {
190
- return this.staticTypeManager.applyTypeOptionsMap(typeOptionsMap);
191
- }
192
- applyTypeOptionsMap(typeOptionsMap) {
193
- for (const [typeFn, typeOptions] of typeOptionsMap) {
194
- this.applyTypeOptions(typeFn, typeOptions);
195
- }
196
- return this;
197
- }
198
- static applyTypeOptions(typeFn, typeOptions) {
199
- return this.staticTypeManager.applyTypeOptions(typeFn, typeOptions);
200
- }
201
- applyTypeOptions(typeFn, typeOptions) {
202
- const typeMetadata = this.extractTypeMetadata(typeFn);
203
- typeMetadata.configure(typeOptions);
204
- return this;
205
- }
206
- static applyTypeConfigurationMap(typeConfigurationMap) {
207
- return this.staticTypeManager.applyTypeConfigurationMap(typeConfigurationMap);
208
- }
209
- applyTypeConfigurationMap(typeConfigurationMap) {
210
- for (const [typeFn, typeConfiguration] of typeConfigurationMap) {
211
- this.applyTypeConfiguration(typeFn, typeConfiguration);
212
- }
213
- return this;
214
- }
215
- static applyTypeConfiguration(typeFn, typeConfiguration) {
216
- return this.staticTypeManager.applyTypeConfiguration(typeFn, typeConfiguration);
217
- }
218
- applyTypeConfiguration(typeFn, typeConfiguration) {
219
- const typeMetadata = this.extractTypeMetadata(typeFn);
220
- typeConfiguration.configure(typeMetadata);
221
- return this;
222
- }
223
- static configure(typeManagerOptions) {
224
- return this.staticTypeManager.configure(typeManagerOptions);
225
- }
226
- configure(typeManagerOptions) {
227
- if (!isUndefined(typeManagerOptions.typeOptionsBase)) {
228
- this.applyTypeOptionsBase(typeManagerOptions.typeOptionsBase);
229
- }
230
- if (!isUndefined(typeManagerOptions.typeOptionsMap)) {
231
- this.applyTypeOptionsMap(typeManagerOptions.typeOptionsMap);
232
- }
233
- if (!isUndefined(typeManagerOptions.typeConfigurationMap)) {
234
- this.applyTypeConfigurationMap(typeManagerOptions.typeConfigurationMap);
235
- }
236
- return this;
237
- }
238
- static defineSerializerContext(typeFn, x, genericArguments) {
239
- return this.staticTypeManager.defineSerializerContext(typeFn, x, genericArguments);
240
- }
241
- defineSerializerContext(typeFn, x, genericArguments) {
242
- const typeMetadata = this.extractTypeMetadata(typeFn);
243
- const genericStructures = isNil(genericArguments) ? undefined : typeMetadata.defineGenericStructures(genericArguments);
244
- const genericMetadataResolvers = isNil(genericStructures) ? undefined : typeMetadata.defineGenericMetadataResolvers(genericStructures);
245
- return new SerializerContext(x, new Map(), new Map(), {
246
- jsonPathKey: '$',
247
- typeMetadata: typeMetadata,
248
- genericStructures: genericStructures,
249
- genericMetadataResolvers: genericMetadataResolvers
250
- });
251
- }
252
- static serialize(typeFn, x) {
253
- return this.staticTypeManager.serialize(typeFn, x);
254
- }
255
- serialize(typeFn, x) {
256
- const arrayFn = Array;
257
- if (isArray(x) && typeFn !== arrayFn) {
258
- return this.defineSerializerContext(arrayFn, x, [typeFn]).serialize(x);
259
- }
260
- return this.defineSerializerContext(typeFn, x).serialize(x);
261
- }
262
- static deserialize(typeFn, x) {
263
- return this.staticTypeManager.deserialize(typeFn, x);
264
- }
265
- deserialize(typeFn, x) {
266
- const arrayFn = Array;
267
- if (isArray(x) && typeFn !== arrayFn) {
268
- return this.defineSerializerContext(arrayFn, x, [typeFn]).deserialize(x);
269
- }
270
- return this.defineSerializerContext(typeFn, x).deserialize(x);
271
- }
272
- static stringify(typeFn, x, replacer, space) {
273
- return this.staticTypeManager.stringify(typeFn, x, replacer, space);
274
- }
275
- stringify(typeFn, x, replacer, space) {
276
- return jsonStringify(this.serialize(typeFn, x), replacer, space);
277
- }
278
- static parse(typeFn, x, reviver) {
279
- return this.staticTypeManager.parse(typeFn, x, reviver);
280
- }
281
- parse(typeFn, x, reviver) {
282
- return this.deserialize(typeFn, jsonParse(x, reviver));
283
- }
284
- }
285
- TypeManager.defaultTypeOptionsBase = {
286
- discriminator: '$type',
287
- factory: new TypeFactory(),
288
- injector: new SingletonInjector(),
289
- log: new Log(LogLevel.Error),
290
- preserveDiscriminator: false,
291
- referenceHandler: new CircularReferenceHandler(),
292
- serializer: new TypeSerializer(),
293
- preserveNull: true,
294
- useDefaultValue: false,
295
- useImplicitConversion: false
296
- };
297
- TypeManager.defaultTypeOptionsMap = new Map([
298
- [Any, { serializer: new AnySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
299
- [ArrayBuffer, { serializer: new ArrayBufferSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
300
- [Array, { serializer: new ArraySerializer(), serializedDefaultValue: () => [], deserializedDefaultValue: () => [] }],
301
- [Boolean, { serializer: new BooleanSerializer(), serializedDefaultValue: false, deserializedDefaultValue: false }],
302
- [DataView, { serializer: new DataViewSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
303
- [Date, { serializer: new DateSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
304
- [Float32Array, { serializer: new Float32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
305
- [Float64Array, { serializer: new Float64ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
306
- [Int8Array, { serializer: new Int8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
307
- [Int16Array, { serializer: new Int16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
308
- [Int32Array, { serializer: new Int32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
309
- [Map, { serializer: new MapSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
310
- [Number, { serializer: new NumberSerializer(), serializedDefaultValue: 0, deserializedDefaultValue: 0 }],
311
- [Set, { serializer: new SetSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
312
- [String, { serializer: new StringSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
313
- [Uint8Array, { serializer: new Uint8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
314
- [Uint8ClampedArray, { serializer: new Uint8ClampedArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
315
- [Uint16Array, { serializer: new Uint16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
316
- [Uint32Array, { serializer: new Uint32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
317
- [Unknown, { serializer: new UnknownSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }]
318
- ]);
319
- TypeManager.staticTypeManager = new TypeManager();
1
+ import { assign, isArray, isNil, isUndefined } from 'lodash';
2
+ import { Any } from './any';
3
+ import { CustomContext } from './custom-context';
4
+ import { TypeFactory } from './factories/type-factory';
5
+ import { jsonParse } from './functions/json-parse';
6
+ import { jsonStringify } from './functions/json-stringify';
7
+ import { SingletonInjector } from './injectors/singleton-injector';
8
+ import { Log } from './log';
9
+ import { LogLevel } from './log-level';
10
+ import { CircularReferenceHandler } from './reference-handlers/circular-reference-handler';
11
+ import { SerializerContext } from './serializer-context';
12
+ import { AnySerializer } from './serializers/any-serializer';
13
+ import { ArrayBufferSerializer } from './serializers/array-buffer-serializer';
14
+ import { ArraySerializer } from './serializers/array-serializer';
15
+ import { BooleanSerializer } from './serializers/boolean-serializer';
16
+ import { DataViewSerializer } from './serializers/data-view-serializer';
17
+ import { DateSerializer } from './serializers/date-serializer';
18
+ import { Float32ArraySerializer } from './serializers/float-32-array-serializer';
19
+ import { Float64ArraySerializer } from './serializers/float-64-array-serializer';
20
+ import { Int16ArraySerializer } from './serializers/int-16-array-serializer';
21
+ import { Int32ArraySerializer } from './serializers/int-32-array-serializer';
22
+ import { Int8ArraySerializer } from './serializers/int-8-array-serializer';
23
+ import { MapSerializer } from './serializers/map-serializer';
24
+ import { NumberSerializer } from './serializers/number-serializer';
25
+ import { SetSerializer } from './serializers/set-serializer';
26
+ import { StringSerializer } from './serializers/string-serializer';
27
+ import { TypeSerializer } from './serializers/type-serializer';
28
+ import { Uint16ArraySerializer } from './serializers/uint-16-array-serializer';
29
+ import { Uint32ArraySerializer } from './serializers/uint-32-array-serializer';
30
+ import { Uint8ArraySerializer } from './serializers/uint-8-array-serializer';
31
+ import { Uint8ClampedArraySerializer } from './serializers/uint-8-clamped-array-serializer';
32
+ import { UnknownSerializer } from './serializers/unknown-serializer';
33
+ import { TypeMetadata } from './type-metadata';
34
+ import { typeMetadataSymbol } from './type-metadata-symbol';
35
+ import { Unknown } from './unknown';
36
+ export class TypeManager {
37
+ constructor(typeManagerOptions = {}) {
38
+ this.typeFnMap = new Map();
39
+ this.symbol = Symbol(typeMetadataSymbol.description);
40
+ this.typeManagerOptions = this.constructTypeManagerOptions(typeManagerOptions);
41
+ this.customContext = this.constructCustomContext();
42
+ this.configure(typeManagerOptions);
43
+ return;
44
+ }
45
+ static get typeFnMap() {
46
+ return this.staticTypeManager.typeFnMap;
47
+ }
48
+ static get symbol() {
49
+ return this.staticTypeManager.symbol;
50
+ }
51
+ static get typeManagerOptions() {
52
+ return this.staticTypeManager.typeManagerOptions;
53
+ }
54
+ static get typeOptionsBase() {
55
+ return this.staticTypeManager.typeOptionsBase;
56
+ }
57
+ get typeOptionsBase() {
58
+ let typeOptionsBase = this.typeManagerOptions.typeOptionsBase;
59
+ if (isNil(typeOptionsBase)) {
60
+ typeOptionsBase = {};
61
+ this.typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
62
+ }
63
+ return typeOptionsBase;
64
+ }
65
+ static get typeOptionsMap() {
66
+ return this.staticTypeManager.typeOptionsMap;
67
+ }
68
+ get typeOptionsMap() {
69
+ let typeOptionsMap = this.typeManagerOptions.typeOptionsMap;
70
+ if (isNil(typeOptionsMap)) {
71
+ typeOptionsMap = new Map();
72
+ this.typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
73
+ }
74
+ return typeOptionsMap;
75
+ }
76
+ static get typeConfigurationMap() {
77
+ return this.staticTypeManager.typeConfigurationMap;
78
+ }
79
+ get typeConfigurationMap() {
80
+ let typeConfigurationMap = this.typeManagerOptions.typeConfigurationMap;
81
+ if (isNil(typeConfigurationMap)) {
82
+ typeConfigurationMap = new Map();
83
+ this.typeManagerOptions.typeConfigurationMap = typeConfigurationMap;
84
+ }
85
+ return typeConfigurationMap;
86
+ }
87
+ constructTypeManagerOptions(typeManagerOptions) {
88
+ let typeOptionsBase = typeManagerOptions.typeOptionsBase;
89
+ if (isNil(typeOptionsBase)) {
90
+ typeOptionsBase = {};
91
+ typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
92
+ }
93
+ let typeOptionsMap = typeManagerOptions.typeOptionsMap;
94
+ if (isNil(typeOptionsMap)) {
95
+ typeOptionsMap = new Map();
96
+ typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
97
+ }
98
+ return typeManagerOptions;
99
+ }
100
+ constructTypeOptionsBase(typeOptionsBase) {
101
+ const initialTypeOptionsBase = assign({}, TypeManager.defaultTypeOptionsBase, typeOptionsBase);
102
+ assign(typeOptionsBase, initialTypeOptionsBase);
103
+ return typeOptionsBase;
104
+ }
105
+ constructTypeOptionsMap(typeOptionsMap) {
106
+ const initialTypeOptionsMap = new Map();
107
+ for (const [typeFn, typeOptions] of TypeManager.defaultTypeOptionsMap) {
108
+ let mapTypeOptions = initialTypeOptionsMap.get(typeFn);
109
+ if (isNil(mapTypeOptions)) {
110
+ mapTypeOptions = {};
111
+ }
112
+ initialTypeOptionsMap.set(typeFn, assign(mapTypeOptions, typeOptions));
113
+ }
114
+ for (const [typeFn, typeOptions] of typeOptionsMap) {
115
+ let mapTypeOptions = initialTypeOptionsMap.get(typeFn);
116
+ if (isNil(mapTypeOptions)) {
117
+ mapTypeOptions = {};
118
+ }
119
+ initialTypeOptionsMap.set(typeFn, assign(typeOptions, assign(mapTypeOptions, typeOptions)));
120
+ }
121
+ typeOptionsMap.clear();
122
+ for (const [typeFn, typeOptions] of initialTypeOptionsMap) {
123
+ typeOptionsMap.set(typeFn, typeOptions);
124
+ }
125
+ return typeOptionsMap;
126
+ }
127
+ constructCustomContext() {
128
+ var _a;
129
+ const customOptions = (_a = this.typeOptionsBase.customOptions) !== null && _a !== void 0 ? _a : new Array();
130
+ const customContext = new CustomContext(customOptions);
131
+ this.typeOptionsBase.customOptions = customOptions;
132
+ return customContext;
133
+ }
134
+ static configureTypeMetadata(typeFn, typeOptions) {
135
+ return this.staticTypeManager.configureTypeMetadata(typeFn, typeOptions);
136
+ }
137
+ configureTypeMetadata(typeFn, typeOptions) {
138
+ const symbol = this.symbol;
139
+ const prototype = typeFn.prototype;
140
+ const typeMetadataDefined = prototype.hasOwnProperty(symbol);
141
+ const typeMetadata = typeMetadataDefined ? prototype[symbol] : this.declareTypeMetadata(typeFn, typeOptions);
142
+ if (!typeMetadataDefined) {
143
+ Object.defineProperty(prototype, symbol, {
144
+ enumerable: false,
145
+ configurable: false,
146
+ writable: false,
147
+ value: typeMetadata
148
+ });
149
+ }
150
+ if (typeMetadataDefined && !isNil(typeOptions)) {
151
+ typeMetadata.configure(typeOptions);
152
+ }
153
+ return typeMetadata;
154
+ }
155
+ declareTypeMetadata(typeFn, typeOptions) {
156
+ var _a;
157
+ let mapTypeOptions = this.typeOptionsMap.get(typeFn);
158
+ if (isNil(mapTypeOptions)) {
159
+ mapTypeOptions = typeOptions !== null && typeOptions !== void 0 ? typeOptions : {};
160
+ this.typeOptionsMap.set(typeFn, mapTypeOptions);
161
+ }
162
+ const symbol = this.symbol;
163
+ const parentPrototype = (_a = Object.getPrototypeOf(typeFn.prototype)) !== null && _a !== void 0 ? _a : {};
164
+ const parentTypeMetadata = parentPrototype[symbol];
165
+ const typeMetadata = new TypeMetadata(this, typeFn, mapTypeOptions, parentTypeMetadata);
166
+ return typeMetadata;
167
+ }
168
+ static extractTypeMetadata(typeFn) {
169
+ return this.staticTypeManager.extractTypeMetadata(typeFn);
170
+ }
171
+ extractTypeMetadata(typeFn) {
172
+ const symbol = this.symbol;
173
+ const prototype = typeFn.prototype;
174
+ const typeMetadataDefined = prototype.hasOwnProperty(symbol);
175
+ const typeMetadata = typeMetadataDefined ? prototype[symbol] : this.configureTypeMetadata(typeFn);
176
+ return typeMetadata;
177
+ }
178
+ static applyTypeOptionsBase(typeOptionsBase) {
179
+ return this.staticTypeManager.applyTypeOptionsBase(typeOptionsBase);
180
+ }
181
+ applyTypeOptionsBase(typeOptionsBase) {
182
+ const customOptions = this.typeOptionsBase.customOptions;
183
+ assign(this.typeOptionsBase, typeOptionsBase, { customOptions: customOptions });
184
+ if (!isNil(typeOptionsBase.customOptions)) {
185
+ this.customContext.configure(typeOptionsBase.customOptions);
186
+ }
187
+ return this;
188
+ }
189
+ static applyTypeOptionsMap(typeOptionsMap) {
190
+ return this.staticTypeManager.applyTypeOptionsMap(typeOptionsMap);
191
+ }
192
+ applyTypeOptionsMap(typeOptionsMap) {
193
+ for (const [typeFn, typeOptions] of typeOptionsMap) {
194
+ this.applyTypeOptions(typeFn, typeOptions);
195
+ }
196
+ return this;
197
+ }
198
+ static applyTypeOptions(typeFn, typeOptions) {
199
+ return this.staticTypeManager.applyTypeOptions(typeFn, typeOptions);
200
+ }
201
+ applyTypeOptions(typeFn, typeOptions) {
202
+ const typeMetadata = this.extractTypeMetadata(typeFn);
203
+ typeMetadata.configure(typeOptions);
204
+ return this;
205
+ }
206
+ static applyTypeConfigurationMap(typeConfigurationMap) {
207
+ return this.staticTypeManager.applyTypeConfigurationMap(typeConfigurationMap);
208
+ }
209
+ applyTypeConfigurationMap(typeConfigurationMap) {
210
+ for (const [typeFn, typeConfiguration] of typeConfigurationMap) {
211
+ this.applyTypeConfiguration(typeFn, typeConfiguration);
212
+ }
213
+ return this;
214
+ }
215
+ static applyTypeConfiguration(typeFn, typeConfiguration) {
216
+ return this.staticTypeManager.applyTypeConfiguration(typeFn, typeConfiguration);
217
+ }
218
+ applyTypeConfiguration(typeFn, typeConfiguration) {
219
+ const typeMetadata = this.extractTypeMetadata(typeFn);
220
+ typeConfiguration.configure(typeMetadata);
221
+ return this;
222
+ }
223
+ static configure(typeManagerOptions) {
224
+ return this.staticTypeManager.configure(typeManagerOptions);
225
+ }
226
+ configure(typeManagerOptions) {
227
+ if (!isUndefined(typeManagerOptions.typeOptionsBase)) {
228
+ this.applyTypeOptionsBase(typeManagerOptions.typeOptionsBase);
229
+ }
230
+ if (!isUndefined(typeManagerOptions.typeOptionsMap)) {
231
+ this.applyTypeOptionsMap(typeManagerOptions.typeOptionsMap);
232
+ }
233
+ if (!isUndefined(typeManagerOptions.typeConfigurationMap)) {
234
+ this.applyTypeConfigurationMap(typeManagerOptions.typeConfigurationMap);
235
+ }
236
+ return this;
237
+ }
238
+ static defineSerializerContext(typeFn, x, genericArguments) {
239
+ return this.staticTypeManager.defineSerializerContext(typeFn, x, genericArguments);
240
+ }
241
+ defineSerializerContext(typeFn, x, genericArguments) {
242
+ const typeMetadata = this.extractTypeMetadata(typeFn);
243
+ const genericStructures = isNil(genericArguments) ? undefined : typeMetadata.defineGenericStructures(genericArguments);
244
+ const genericMetadataResolvers = isNil(genericStructures) ? undefined : typeMetadata.defineGenericMetadataResolvers(genericStructures);
245
+ return new SerializerContext(x, new Map(), new Map(), {
246
+ jsonPathKey: '$',
247
+ typeMetadata: typeMetadata,
248
+ genericStructures: genericStructures,
249
+ genericMetadataResolvers: genericMetadataResolvers
250
+ });
251
+ }
252
+ static serialize(typeFn, x) {
253
+ return this.staticTypeManager.serialize(typeFn, x);
254
+ }
255
+ serialize(typeFn, x) {
256
+ const arrayFn = Array;
257
+ if (isArray(x) && typeFn !== arrayFn) {
258
+ return this.defineSerializerContext(arrayFn, x, [typeFn]).serialize(x);
259
+ }
260
+ return this.defineSerializerContext(typeFn, x).serialize(x);
261
+ }
262
+ static deserialize(typeFn, x) {
263
+ return this.staticTypeManager.deserialize(typeFn, x);
264
+ }
265
+ deserialize(typeFn, x) {
266
+ const arrayFn = Array;
267
+ if (isArray(x) && typeFn !== arrayFn) {
268
+ return this.defineSerializerContext(arrayFn, x, [typeFn]).deserialize(x);
269
+ }
270
+ return this.defineSerializerContext(typeFn, x).deserialize(x);
271
+ }
272
+ static stringify(typeFn, x, replacer, space) {
273
+ return this.staticTypeManager.stringify(typeFn, x, replacer, space);
274
+ }
275
+ stringify(typeFn, x, replacer, space) {
276
+ return jsonStringify(this.serialize(typeFn, x), replacer, space);
277
+ }
278
+ static parse(typeFn, x, reviver) {
279
+ return this.staticTypeManager.parse(typeFn, x, reviver);
280
+ }
281
+ parse(typeFn, x, reviver) {
282
+ return this.deserialize(typeFn, jsonParse(x, reviver));
283
+ }
284
+ }
285
+ TypeManager.defaultTypeOptionsBase = {
286
+ discriminator: '$type',
287
+ factory: new TypeFactory(),
288
+ injector: new SingletonInjector(),
289
+ log: new Log(LogLevel.Error),
290
+ preserveDiscriminator: false,
291
+ referenceHandler: new CircularReferenceHandler(),
292
+ serializer: new TypeSerializer(),
293
+ preserveNull: true,
294
+ useDefaultValue: false,
295
+ useImplicitConversion: false
296
+ };
297
+ TypeManager.defaultTypeOptionsMap = new Map([
298
+ [Any, { serializer: new AnySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
299
+ [ArrayBuffer, { serializer: new ArrayBufferSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
300
+ [Array, { serializer: new ArraySerializer(), serializedDefaultValue: () => [], deserializedDefaultValue: () => [] }],
301
+ [Boolean, { serializer: new BooleanSerializer(), serializedDefaultValue: false, deserializedDefaultValue: false }],
302
+ [DataView, { serializer: new DataViewSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
303
+ [Date, { serializer: new DateSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
304
+ [Float32Array, { serializer: new Float32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
305
+ [Float64Array, { serializer: new Float64ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
306
+ [Int8Array, { serializer: new Int8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
307
+ [Int16Array, { serializer: new Int16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
308
+ [Int32Array, { serializer: new Int32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
309
+ [Map, { serializer: new MapSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
310
+ [Number, { serializer: new NumberSerializer(), serializedDefaultValue: 0, deserializedDefaultValue: 0 }],
311
+ [Set, { serializer: new SetSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
312
+ [String, { serializer: new StringSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
313
+ [Uint8Array, { serializer: new Uint8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
314
+ [Uint8ClampedArray, { serializer: new Uint8ClampedArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
315
+ [Uint16Array, { serializer: new Uint16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
316
+ [Uint32Array, { serializer: new Uint32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
317
+ [Unknown, { serializer: new UnknownSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }]
318
+ ]);
319
+ TypeManager.staticTypeManager = new TypeManager();
320
320
  //# sourceMappingURL=type-manager.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=type-metadata-resolver.js.map
@@ -1,2 +1,2 @@
1
- export const typeMetadataSymbol = Symbol.for('$DSTypeMetadata');
1
+ export const typeMetadataSymbol = Symbol.for('$DSTypeMetadata');
2
2
  //# sourceMappingURL=type-metadata-symbol.js.map