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

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