@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,413 +1,413 @@
1
- import { __read, __values } from "tslib";
2
- import { assign, isArray, isNil, isUndefined } from 'lodash';
3
- import { Any } from './any';
4
- import { CustomContext } from './custom-context';
5
- import { TypeFactory } from './factories/type-factory';
6
- import { jsonParse } from './functions/json-parse';
7
- import { jsonStringify } from './functions/json-stringify';
8
- import { SingletonInjector } from './injectors/singleton-injector';
9
- import { Log } from './log';
10
- import { LogLevel } from './log-level';
11
- import { CircularReferenceHandler } from './reference-handlers/circular-reference-handler';
12
- import { SerializerContext } from './serializer-context';
13
- import { AnySerializer } from './serializers/any-serializer';
14
- import { ArrayBufferSerializer } from './serializers/array-buffer-serializer';
15
- import { ArraySerializer } from './serializers/array-serializer';
16
- import { BooleanSerializer } from './serializers/boolean-serializer';
17
- import { DataViewSerializer } from './serializers/data-view-serializer';
18
- import { DateSerializer } from './serializers/date-serializer';
19
- import { Float32ArraySerializer } from './serializers/float-32-array-serializer';
20
- import { Float64ArraySerializer } from './serializers/float-64-array-serializer';
21
- import { Int16ArraySerializer } from './serializers/int-16-array-serializer';
22
- import { Int32ArraySerializer } from './serializers/int-32-array-serializer';
23
- import { Int8ArraySerializer } from './serializers/int-8-array-serializer';
24
- import { MapSerializer } from './serializers/map-serializer';
25
- import { NumberSerializer } from './serializers/number-serializer';
26
- import { SetSerializer } from './serializers/set-serializer';
27
- import { StringSerializer } from './serializers/string-serializer';
28
- import { TypeSerializer } from './serializers/type-serializer';
29
- import { Uint16ArraySerializer } from './serializers/uint-16-array-serializer';
30
- import { Uint32ArraySerializer } from './serializers/uint-32-array-serializer';
31
- import { Uint8ArraySerializer } from './serializers/uint-8-array-serializer';
32
- import { Uint8ClampedArraySerializer } from './serializers/uint-8-clamped-array-serializer';
33
- import { UnknownSerializer } from './serializers/unknown-serializer';
34
- import { TypeMetadata } from './type-metadata';
35
- import { typeMetadataSymbol } from './type-metadata-symbol';
36
- import { Unknown } from './unknown';
37
- var TypeManager = (function () {
38
- function TypeManager(typeManagerOptions) {
39
- if (typeManagerOptions === void 0) { typeManagerOptions = {}; }
40
- this.typeFnMap = new Map();
41
- this.symbol = Symbol(typeMetadataSymbol.description);
42
- this.typeManagerOptions = this.constructTypeManagerOptions(typeManagerOptions);
43
- this.customContext = this.constructCustomContext();
44
- this.configure(typeManagerOptions);
45
- return;
46
- }
47
- Object.defineProperty(TypeManager, "typeFnMap", {
48
- get: function () {
49
- return this.staticTypeManager.typeFnMap;
50
- },
51
- enumerable: false,
52
- configurable: true
53
- });
54
- Object.defineProperty(TypeManager, "symbol", {
55
- get: function () {
56
- return this.staticTypeManager.symbol;
57
- },
58
- enumerable: false,
59
- configurable: true
60
- });
61
- Object.defineProperty(TypeManager, "typeManagerOptions", {
62
- get: function () {
63
- return this.staticTypeManager.typeManagerOptions;
64
- },
65
- enumerable: false,
66
- configurable: true
67
- });
68
- Object.defineProperty(TypeManager, "typeOptionsBase", {
69
- get: function () {
70
- return this.staticTypeManager.typeOptionsBase;
71
- },
72
- enumerable: false,
73
- configurable: true
74
- });
75
- Object.defineProperty(TypeManager.prototype, "typeOptionsBase", {
76
- get: function () {
77
- var typeOptionsBase = this.typeManagerOptions.typeOptionsBase;
78
- if (isNil(typeOptionsBase)) {
79
- typeOptionsBase = {};
80
- this.typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
81
- }
82
- return typeOptionsBase;
83
- },
84
- enumerable: false,
85
- configurable: true
86
- });
87
- Object.defineProperty(TypeManager, "typeOptionsMap", {
88
- get: function () {
89
- return this.staticTypeManager.typeOptionsMap;
90
- },
91
- enumerable: false,
92
- configurable: true
93
- });
94
- Object.defineProperty(TypeManager.prototype, "typeOptionsMap", {
95
- get: function () {
96
- var typeOptionsMap = this.typeManagerOptions.typeOptionsMap;
97
- if (isNil(typeOptionsMap)) {
98
- typeOptionsMap = new Map();
99
- this.typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
100
- }
101
- return typeOptionsMap;
102
- },
103
- enumerable: false,
104
- configurable: true
105
- });
106
- Object.defineProperty(TypeManager, "typeConfigurationMap", {
107
- get: function () {
108
- return this.staticTypeManager.typeConfigurationMap;
109
- },
110
- enumerable: false,
111
- configurable: true
112
- });
113
- Object.defineProperty(TypeManager.prototype, "typeConfigurationMap", {
114
- get: function () {
115
- var typeConfigurationMap = this.typeManagerOptions.typeConfigurationMap;
116
- if (isNil(typeConfigurationMap)) {
117
- typeConfigurationMap = new Map();
118
- this.typeManagerOptions.typeConfigurationMap = typeConfigurationMap;
119
- }
120
- return typeConfigurationMap;
121
- },
122
- enumerable: false,
123
- configurable: true
124
- });
125
- TypeManager.prototype.constructTypeManagerOptions = function (typeManagerOptions) {
126
- var typeOptionsBase = typeManagerOptions.typeOptionsBase;
127
- if (isNil(typeOptionsBase)) {
128
- typeOptionsBase = {};
129
- typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
130
- }
131
- var typeOptionsMap = typeManagerOptions.typeOptionsMap;
132
- if (isNil(typeOptionsMap)) {
133
- typeOptionsMap = new Map();
134
- typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
135
- }
136
- return typeManagerOptions;
137
- };
138
- TypeManager.prototype.constructTypeOptionsBase = function (typeOptionsBase) {
139
- var initialTypeOptionsBase = assign({}, TypeManager.defaultTypeOptionsBase, typeOptionsBase);
140
- assign(typeOptionsBase, initialTypeOptionsBase);
141
- return typeOptionsBase;
142
- };
143
- TypeManager.prototype.constructTypeOptionsMap = function (typeOptionsMap) {
144
- var e_1, _a, e_2, _b, e_3, _c;
145
- var initialTypeOptionsMap = new Map();
146
- try {
147
- for (var _d = __values(TypeManager.defaultTypeOptionsMap), _e = _d.next(); !_e.done; _e = _d.next()) {
148
- var _f = __read(_e.value, 2), typeFn = _f[0], typeOptions = _f[1];
149
- var mapTypeOptions = initialTypeOptionsMap.get(typeFn);
150
- if (isNil(mapTypeOptions)) {
151
- mapTypeOptions = {};
152
- }
153
- initialTypeOptionsMap.set(typeFn, assign(mapTypeOptions, typeOptions));
154
- }
155
- }
156
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
157
- finally {
158
- try {
159
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
160
- }
161
- finally { if (e_1) throw e_1.error; }
162
- }
163
- try {
164
- for (var typeOptionsMap_1 = __values(typeOptionsMap), typeOptionsMap_1_1 = typeOptionsMap_1.next(); !typeOptionsMap_1_1.done; typeOptionsMap_1_1 = typeOptionsMap_1.next()) {
165
- var _g = __read(typeOptionsMap_1_1.value, 2), typeFn = _g[0], typeOptions = _g[1];
166
- var mapTypeOptions = initialTypeOptionsMap.get(typeFn);
167
- if (isNil(mapTypeOptions)) {
168
- mapTypeOptions = {};
169
- }
170
- initialTypeOptionsMap.set(typeFn, assign(typeOptions, assign(mapTypeOptions, typeOptions)));
171
- }
172
- }
173
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
174
- finally {
175
- try {
176
- if (typeOptionsMap_1_1 && !typeOptionsMap_1_1.done && (_b = typeOptionsMap_1.return)) _b.call(typeOptionsMap_1);
177
- }
178
- finally { if (e_2) throw e_2.error; }
179
- }
180
- typeOptionsMap.clear();
181
- try {
182
- for (var initialTypeOptionsMap_1 = __values(initialTypeOptionsMap), initialTypeOptionsMap_1_1 = initialTypeOptionsMap_1.next(); !initialTypeOptionsMap_1_1.done; initialTypeOptionsMap_1_1 = initialTypeOptionsMap_1.next()) {
183
- var _h = __read(initialTypeOptionsMap_1_1.value, 2), typeFn = _h[0], typeOptions = _h[1];
184
- typeOptionsMap.set(typeFn, typeOptions);
185
- }
186
- }
187
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
188
- finally {
189
- try {
190
- if (initialTypeOptionsMap_1_1 && !initialTypeOptionsMap_1_1.done && (_c = initialTypeOptionsMap_1.return)) _c.call(initialTypeOptionsMap_1);
191
- }
192
- finally { if (e_3) throw e_3.error; }
193
- }
194
- return typeOptionsMap;
195
- };
196
- TypeManager.prototype.constructCustomContext = function () {
197
- var _a;
198
- var customOptions = (_a = this.typeOptionsBase.customOptions) !== null && _a !== void 0 ? _a : new Array();
199
- var customContext = new CustomContext(customOptions);
200
- this.typeOptionsBase.customOptions = customOptions;
201
- return customContext;
202
- };
203
- TypeManager.configureTypeMetadata = function (typeFn, typeOptions) {
204
- return this.staticTypeManager.configureTypeMetadata(typeFn, typeOptions);
205
- };
206
- TypeManager.prototype.configureTypeMetadata = function (typeFn, typeOptions) {
207
- var symbol = this.symbol;
208
- var prototype = typeFn.prototype;
209
- var typeMetadataDefined = prototype.hasOwnProperty(symbol);
210
- var typeMetadata = typeMetadataDefined ? prototype[symbol] : this.declareTypeMetadata(typeFn, typeOptions);
211
- if (!typeMetadataDefined) {
212
- Object.defineProperty(prototype, symbol, {
213
- enumerable: false,
214
- configurable: false,
215
- writable: false,
216
- value: typeMetadata
217
- });
218
- }
219
- if (typeMetadataDefined && !isNil(typeOptions)) {
220
- typeMetadata.configure(typeOptions);
221
- }
222
- return typeMetadata;
223
- };
224
- TypeManager.prototype.declareTypeMetadata = function (typeFn, typeOptions) {
225
- var _a;
226
- var mapTypeOptions = this.typeOptionsMap.get(typeFn);
227
- if (isNil(mapTypeOptions)) {
228
- mapTypeOptions = typeOptions !== null && typeOptions !== void 0 ? typeOptions : {};
229
- this.typeOptionsMap.set(typeFn, mapTypeOptions);
230
- }
231
- var symbol = this.symbol;
232
- var parentPrototype = (_a = Object.getPrototypeOf(typeFn.prototype)) !== null && _a !== void 0 ? _a : {};
233
- var parentTypeMetadata = parentPrototype[symbol];
234
- var typeMetadata = new TypeMetadata(this, typeFn, mapTypeOptions, parentTypeMetadata);
235
- return typeMetadata;
236
- };
237
- TypeManager.extractTypeMetadata = function (typeFn) {
238
- return this.staticTypeManager.extractTypeMetadata(typeFn);
239
- };
240
- TypeManager.prototype.extractTypeMetadata = function (typeFn) {
241
- var symbol = this.symbol;
242
- var prototype = typeFn.prototype;
243
- var typeMetadataDefined = prototype.hasOwnProperty(symbol);
244
- var typeMetadata = typeMetadataDefined ? prototype[symbol] : this.configureTypeMetadata(typeFn);
245
- return typeMetadata;
246
- };
247
- TypeManager.applyTypeOptionsBase = function (typeOptionsBase) {
248
- return this.staticTypeManager.applyTypeOptionsBase(typeOptionsBase);
249
- };
250
- TypeManager.prototype.applyTypeOptionsBase = function (typeOptionsBase) {
251
- var customOptions = this.typeOptionsBase.customOptions;
252
- assign(this.typeOptionsBase, typeOptionsBase, { customOptions: customOptions });
253
- if (!isNil(typeOptionsBase.customOptions)) {
254
- this.customContext.configure(typeOptionsBase.customOptions);
255
- }
256
- return this;
257
- };
258
- TypeManager.applyTypeOptionsMap = function (typeOptionsMap) {
259
- return this.staticTypeManager.applyTypeOptionsMap(typeOptionsMap);
260
- };
261
- TypeManager.prototype.applyTypeOptionsMap = function (typeOptionsMap) {
262
- var e_4, _a;
263
- try {
264
- for (var typeOptionsMap_2 = __values(typeOptionsMap), typeOptionsMap_2_1 = typeOptionsMap_2.next(); !typeOptionsMap_2_1.done; typeOptionsMap_2_1 = typeOptionsMap_2.next()) {
265
- var _b = __read(typeOptionsMap_2_1.value, 2), typeFn = _b[0], typeOptions = _b[1];
266
- this.applyTypeOptions(typeFn, typeOptions);
267
- }
268
- }
269
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
270
- finally {
271
- try {
272
- if (typeOptionsMap_2_1 && !typeOptionsMap_2_1.done && (_a = typeOptionsMap_2.return)) _a.call(typeOptionsMap_2);
273
- }
274
- finally { if (e_4) throw e_4.error; }
275
- }
276
- return this;
277
- };
278
- TypeManager.applyTypeOptions = function (typeFn, typeOptions) {
279
- return this.staticTypeManager.applyTypeOptions(typeFn, typeOptions);
280
- };
281
- TypeManager.prototype.applyTypeOptions = function (typeFn, typeOptions) {
282
- var typeMetadata = this.extractTypeMetadata(typeFn);
283
- typeMetadata.configure(typeOptions);
284
- return this;
285
- };
286
- TypeManager.applyTypeConfigurationMap = function (typeConfigurationMap) {
287
- return this.staticTypeManager.applyTypeConfigurationMap(typeConfigurationMap);
288
- };
289
- TypeManager.prototype.applyTypeConfigurationMap = function (typeConfigurationMap) {
290
- var e_5, _a;
291
- try {
292
- for (var typeConfigurationMap_1 = __values(typeConfigurationMap), typeConfigurationMap_1_1 = typeConfigurationMap_1.next(); !typeConfigurationMap_1_1.done; typeConfigurationMap_1_1 = typeConfigurationMap_1.next()) {
293
- var _b = __read(typeConfigurationMap_1_1.value, 2), typeFn = _b[0], typeConfiguration = _b[1];
294
- this.applyTypeConfiguration(typeFn, typeConfiguration);
295
- }
296
- }
297
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
298
- finally {
299
- try {
300
- if (typeConfigurationMap_1_1 && !typeConfigurationMap_1_1.done && (_a = typeConfigurationMap_1.return)) _a.call(typeConfigurationMap_1);
301
- }
302
- finally { if (e_5) throw e_5.error; }
303
- }
304
- return this;
305
- };
306
- TypeManager.applyTypeConfiguration = function (typeFn, typeConfiguration) {
307
- return this.staticTypeManager.applyTypeConfiguration(typeFn, typeConfiguration);
308
- };
309
- TypeManager.prototype.applyTypeConfiguration = function (typeFn, typeConfiguration) {
310
- var typeMetadata = this.extractTypeMetadata(typeFn);
311
- typeConfiguration.configure(typeMetadata);
312
- return this;
313
- };
314
- TypeManager.configure = function (typeManagerOptions) {
315
- return this.staticTypeManager.configure(typeManagerOptions);
316
- };
317
- TypeManager.prototype.configure = function (typeManagerOptions) {
318
- if (!isUndefined(typeManagerOptions.typeOptionsBase)) {
319
- this.applyTypeOptionsBase(typeManagerOptions.typeOptionsBase);
320
- }
321
- if (!isUndefined(typeManagerOptions.typeOptionsMap)) {
322
- this.applyTypeOptionsMap(typeManagerOptions.typeOptionsMap);
323
- }
324
- if (!isUndefined(typeManagerOptions.typeConfigurationMap)) {
325
- this.applyTypeConfigurationMap(typeManagerOptions.typeConfigurationMap);
326
- }
327
- return this;
328
- };
329
- TypeManager.defineSerializerContext = function (typeFn, x, genericArguments) {
330
- return this.staticTypeManager.defineSerializerContext(typeFn, x, genericArguments);
331
- };
332
- TypeManager.prototype.defineSerializerContext = function (typeFn, x, genericArguments) {
333
- var typeMetadata = this.extractTypeMetadata(typeFn);
334
- var genericStructures = isNil(genericArguments) ? undefined : typeMetadata.defineGenericStructures(genericArguments);
335
- var genericMetadataResolvers = isNil(genericStructures) ? undefined : typeMetadata.defineGenericMetadataResolvers(genericStructures);
336
- return new SerializerContext(x, new Map(), new Map(), {
337
- jsonPathKey: '$',
338
- typeMetadata: typeMetadata,
339
- genericStructures: genericStructures,
340
- genericMetadataResolvers: genericMetadataResolvers
341
- });
342
- };
343
- TypeManager.serialize = function (typeFn, x) {
344
- return this.staticTypeManager.serialize(typeFn, x);
345
- };
346
- TypeManager.prototype.serialize = function (typeFn, x) {
347
- var arrayFn = Array;
348
- if (isArray(x) && typeFn !== arrayFn) {
349
- return this.defineSerializerContext(arrayFn, x, [typeFn]).serialize(x);
350
- }
351
- return this.defineSerializerContext(typeFn, x).serialize(x);
352
- };
353
- TypeManager.deserialize = function (typeFn, x) {
354
- return this.staticTypeManager.deserialize(typeFn, x);
355
- };
356
- TypeManager.prototype.deserialize = function (typeFn, x) {
357
- var arrayFn = Array;
358
- if (isArray(x) && typeFn !== arrayFn) {
359
- return this.defineSerializerContext(arrayFn, x, [typeFn]).deserialize(x);
360
- }
361
- return this.defineSerializerContext(typeFn, x).deserialize(x);
362
- };
363
- TypeManager.stringify = function (typeFn, x, replacer, space) {
364
- return this.staticTypeManager.stringify(typeFn, x, replacer, space);
365
- };
366
- TypeManager.prototype.stringify = function (typeFn, x, replacer, space) {
367
- return jsonStringify(this.serialize(typeFn, x), replacer, space);
368
- };
369
- TypeManager.parse = function (typeFn, x, reviver) {
370
- return this.staticTypeManager.parse(typeFn, x, reviver);
371
- };
372
- TypeManager.prototype.parse = function (typeFn, x, reviver) {
373
- return this.deserialize(typeFn, jsonParse(x, reviver));
374
- };
375
- TypeManager.defaultTypeOptionsBase = {
376
- discriminator: '$type',
377
- factory: new TypeFactory(),
378
- injector: new SingletonInjector(),
379
- log: new Log(LogLevel.Error),
380
- preserveDiscriminator: false,
381
- referenceHandler: new CircularReferenceHandler(),
382
- serializer: new TypeSerializer(),
383
- preserveNull: true,
384
- useDefaultValue: false,
385
- useImplicitConversion: false
386
- };
387
- TypeManager.defaultTypeOptionsMap = new Map([
388
- [Any, { serializer: new AnySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
389
- [ArrayBuffer, { serializer: new ArrayBufferSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
390
- [Array, { serializer: new ArraySerializer(), serializedDefaultValue: function () { return []; }, deserializedDefaultValue: function () { return []; } }],
391
- [Boolean, { serializer: new BooleanSerializer(), serializedDefaultValue: false, deserializedDefaultValue: false }],
392
- [DataView, { serializer: new DataViewSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
393
- [Date, { serializer: new DateSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
394
- [Float32Array, { serializer: new Float32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
395
- [Float64Array, { serializer: new Float64ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
396
- [Int8Array, { serializer: new Int8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
397
- [Int16Array, { serializer: new Int16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
398
- [Int32Array, { serializer: new Int32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
399
- [Map, { serializer: new MapSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
400
- [Number, { serializer: new NumberSerializer(), serializedDefaultValue: 0, deserializedDefaultValue: 0 }],
401
- [Set, { serializer: new SetSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
402
- [String, { serializer: new StringSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
403
- [Uint8Array, { serializer: new Uint8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
404
- [Uint8ClampedArray, { serializer: new Uint8ClampedArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
405
- [Uint16Array, { serializer: new Uint16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
406
- [Uint32Array, { serializer: new Uint32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
407
- [Unknown, { serializer: new UnknownSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }]
408
- ]);
409
- TypeManager.staticTypeManager = new TypeManager();
410
- return TypeManager;
411
- }());
412
- export { TypeManager };
1
+ import { __read, __values } from "tslib";
2
+ import { assign, isArray, isNil, isUndefined } from 'lodash';
3
+ import { Any } from './any';
4
+ import { CustomContext } from './custom-context';
5
+ import { TypeFactory } from './factories/type-factory';
6
+ import { jsonParse } from './functions/json-parse';
7
+ import { jsonStringify } from './functions/json-stringify';
8
+ import { SingletonInjector } from './injectors/singleton-injector';
9
+ import { Log } from './log';
10
+ import { LogLevel } from './log-level';
11
+ import { CircularReferenceHandler } from './reference-handlers/circular-reference-handler';
12
+ import { SerializerContext } from './serializer-context';
13
+ import { AnySerializer } from './serializers/any-serializer';
14
+ import { ArrayBufferSerializer } from './serializers/array-buffer-serializer';
15
+ import { ArraySerializer } from './serializers/array-serializer';
16
+ import { BooleanSerializer } from './serializers/boolean-serializer';
17
+ import { DataViewSerializer } from './serializers/data-view-serializer';
18
+ import { DateSerializer } from './serializers/date-serializer';
19
+ import { Float32ArraySerializer } from './serializers/float-32-array-serializer';
20
+ import { Float64ArraySerializer } from './serializers/float-64-array-serializer';
21
+ import { Int16ArraySerializer } from './serializers/int-16-array-serializer';
22
+ import { Int32ArraySerializer } from './serializers/int-32-array-serializer';
23
+ import { Int8ArraySerializer } from './serializers/int-8-array-serializer';
24
+ import { MapSerializer } from './serializers/map-serializer';
25
+ import { NumberSerializer } from './serializers/number-serializer';
26
+ import { SetSerializer } from './serializers/set-serializer';
27
+ import { StringSerializer } from './serializers/string-serializer';
28
+ import { TypeSerializer } from './serializers/type-serializer';
29
+ import { Uint16ArraySerializer } from './serializers/uint-16-array-serializer';
30
+ import { Uint32ArraySerializer } from './serializers/uint-32-array-serializer';
31
+ import { Uint8ArraySerializer } from './serializers/uint-8-array-serializer';
32
+ import { Uint8ClampedArraySerializer } from './serializers/uint-8-clamped-array-serializer';
33
+ import { UnknownSerializer } from './serializers/unknown-serializer';
34
+ import { TypeMetadata } from './type-metadata';
35
+ import { typeMetadataSymbol } from './type-metadata-symbol';
36
+ import { Unknown } from './unknown';
37
+ var TypeManager = (function () {
38
+ function TypeManager(typeManagerOptions) {
39
+ if (typeManagerOptions === void 0) { typeManagerOptions = {}; }
40
+ this.typeFnMap = new Map();
41
+ this.symbol = Symbol(typeMetadataSymbol.description);
42
+ this.typeManagerOptions = this.constructTypeManagerOptions(typeManagerOptions);
43
+ this.customContext = this.constructCustomContext();
44
+ this.configure(typeManagerOptions);
45
+ return;
46
+ }
47
+ Object.defineProperty(TypeManager, "typeFnMap", {
48
+ get: function () {
49
+ return this.staticTypeManager.typeFnMap;
50
+ },
51
+ enumerable: false,
52
+ configurable: true
53
+ });
54
+ Object.defineProperty(TypeManager, "symbol", {
55
+ get: function () {
56
+ return this.staticTypeManager.symbol;
57
+ },
58
+ enumerable: false,
59
+ configurable: true
60
+ });
61
+ Object.defineProperty(TypeManager, "typeManagerOptions", {
62
+ get: function () {
63
+ return this.staticTypeManager.typeManagerOptions;
64
+ },
65
+ enumerable: false,
66
+ configurable: true
67
+ });
68
+ Object.defineProperty(TypeManager, "typeOptionsBase", {
69
+ get: function () {
70
+ return this.staticTypeManager.typeOptionsBase;
71
+ },
72
+ enumerable: false,
73
+ configurable: true
74
+ });
75
+ Object.defineProperty(TypeManager.prototype, "typeOptionsBase", {
76
+ get: function () {
77
+ var typeOptionsBase = this.typeManagerOptions.typeOptionsBase;
78
+ if (isNil(typeOptionsBase)) {
79
+ typeOptionsBase = {};
80
+ this.typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
81
+ }
82
+ return typeOptionsBase;
83
+ },
84
+ enumerable: false,
85
+ configurable: true
86
+ });
87
+ Object.defineProperty(TypeManager, "typeOptionsMap", {
88
+ get: function () {
89
+ return this.staticTypeManager.typeOptionsMap;
90
+ },
91
+ enumerable: false,
92
+ configurable: true
93
+ });
94
+ Object.defineProperty(TypeManager.prototype, "typeOptionsMap", {
95
+ get: function () {
96
+ var typeOptionsMap = this.typeManagerOptions.typeOptionsMap;
97
+ if (isNil(typeOptionsMap)) {
98
+ typeOptionsMap = new Map();
99
+ this.typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
100
+ }
101
+ return typeOptionsMap;
102
+ },
103
+ enumerable: false,
104
+ configurable: true
105
+ });
106
+ Object.defineProperty(TypeManager, "typeConfigurationMap", {
107
+ get: function () {
108
+ return this.staticTypeManager.typeConfigurationMap;
109
+ },
110
+ enumerable: false,
111
+ configurable: true
112
+ });
113
+ Object.defineProperty(TypeManager.prototype, "typeConfigurationMap", {
114
+ get: function () {
115
+ var typeConfigurationMap = this.typeManagerOptions.typeConfigurationMap;
116
+ if (isNil(typeConfigurationMap)) {
117
+ typeConfigurationMap = new Map();
118
+ this.typeManagerOptions.typeConfigurationMap = typeConfigurationMap;
119
+ }
120
+ return typeConfigurationMap;
121
+ },
122
+ enumerable: false,
123
+ configurable: true
124
+ });
125
+ TypeManager.prototype.constructTypeManagerOptions = function (typeManagerOptions) {
126
+ var typeOptionsBase = typeManagerOptions.typeOptionsBase;
127
+ if (isNil(typeOptionsBase)) {
128
+ typeOptionsBase = {};
129
+ typeManagerOptions.typeOptionsBase = this.constructTypeOptionsBase(typeOptionsBase);
130
+ }
131
+ var typeOptionsMap = typeManagerOptions.typeOptionsMap;
132
+ if (isNil(typeOptionsMap)) {
133
+ typeOptionsMap = new Map();
134
+ typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
135
+ }
136
+ return typeManagerOptions;
137
+ };
138
+ TypeManager.prototype.constructTypeOptionsBase = function (typeOptionsBase) {
139
+ var initialTypeOptionsBase = assign({}, TypeManager.defaultTypeOptionsBase, typeOptionsBase);
140
+ assign(typeOptionsBase, initialTypeOptionsBase);
141
+ return typeOptionsBase;
142
+ };
143
+ TypeManager.prototype.constructTypeOptionsMap = function (typeOptionsMap) {
144
+ var e_1, _a, e_2, _b, e_3, _c;
145
+ var initialTypeOptionsMap = new Map();
146
+ try {
147
+ for (var _d = __values(TypeManager.defaultTypeOptionsMap), _e = _d.next(); !_e.done; _e = _d.next()) {
148
+ var _f = __read(_e.value, 2), typeFn = _f[0], typeOptions = _f[1];
149
+ var mapTypeOptions = initialTypeOptionsMap.get(typeFn);
150
+ if (isNil(mapTypeOptions)) {
151
+ mapTypeOptions = {};
152
+ }
153
+ initialTypeOptionsMap.set(typeFn, assign(mapTypeOptions, typeOptions));
154
+ }
155
+ }
156
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
157
+ finally {
158
+ try {
159
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
160
+ }
161
+ finally { if (e_1) throw e_1.error; }
162
+ }
163
+ try {
164
+ for (var typeOptionsMap_1 = __values(typeOptionsMap), typeOptionsMap_1_1 = typeOptionsMap_1.next(); !typeOptionsMap_1_1.done; typeOptionsMap_1_1 = typeOptionsMap_1.next()) {
165
+ var _g = __read(typeOptionsMap_1_1.value, 2), typeFn = _g[0], typeOptions = _g[1];
166
+ var mapTypeOptions = initialTypeOptionsMap.get(typeFn);
167
+ if (isNil(mapTypeOptions)) {
168
+ mapTypeOptions = {};
169
+ }
170
+ initialTypeOptionsMap.set(typeFn, assign(typeOptions, assign(mapTypeOptions, typeOptions)));
171
+ }
172
+ }
173
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
174
+ finally {
175
+ try {
176
+ if (typeOptionsMap_1_1 && !typeOptionsMap_1_1.done && (_b = typeOptionsMap_1.return)) _b.call(typeOptionsMap_1);
177
+ }
178
+ finally { if (e_2) throw e_2.error; }
179
+ }
180
+ typeOptionsMap.clear();
181
+ try {
182
+ for (var initialTypeOptionsMap_1 = __values(initialTypeOptionsMap), initialTypeOptionsMap_1_1 = initialTypeOptionsMap_1.next(); !initialTypeOptionsMap_1_1.done; initialTypeOptionsMap_1_1 = initialTypeOptionsMap_1.next()) {
183
+ var _h = __read(initialTypeOptionsMap_1_1.value, 2), typeFn = _h[0], typeOptions = _h[1];
184
+ typeOptionsMap.set(typeFn, typeOptions);
185
+ }
186
+ }
187
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
188
+ finally {
189
+ try {
190
+ if (initialTypeOptionsMap_1_1 && !initialTypeOptionsMap_1_1.done && (_c = initialTypeOptionsMap_1.return)) _c.call(initialTypeOptionsMap_1);
191
+ }
192
+ finally { if (e_3) throw e_3.error; }
193
+ }
194
+ return typeOptionsMap;
195
+ };
196
+ TypeManager.prototype.constructCustomContext = function () {
197
+ var _a;
198
+ var customOptions = (_a = this.typeOptionsBase.customOptions) !== null && _a !== void 0 ? _a : new Array();
199
+ var customContext = new CustomContext(customOptions);
200
+ this.typeOptionsBase.customOptions = customOptions;
201
+ return customContext;
202
+ };
203
+ TypeManager.configureTypeMetadata = function (typeFn, typeOptions) {
204
+ return this.staticTypeManager.configureTypeMetadata(typeFn, typeOptions);
205
+ };
206
+ TypeManager.prototype.configureTypeMetadata = function (typeFn, typeOptions) {
207
+ var symbol = this.symbol;
208
+ var prototype = typeFn.prototype;
209
+ var typeMetadataDefined = prototype.hasOwnProperty(symbol);
210
+ var typeMetadata = typeMetadataDefined ? prototype[symbol] : this.declareTypeMetadata(typeFn, typeOptions);
211
+ if (!typeMetadataDefined) {
212
+ Object.defineProperty(prototype, symbol, {
213
+ enumerable: false,
214
+ configurable: false,
215
+ writable: false,
216
+ value: typeMetadata
217
+ });
218
+ }
219
+ if (typeMetadataDefined && !isNil(typeOptions)) {
220
+ typeMetadata.configure(typeOptions);
221
+ }
222
+ return typeMetadata;
223
+ };
224
+ TypeManager.prototype.declareTypeMetadata = function (typeFn, typeOptions) {
225
+ var _a;
226
+ var mapTypeOptions = this.typeOptionsMap.get(typeFn);
227
+ if (isNil(mapTypeOptions)) {
228
+ mapTypeOptions = typeOptions !== null && typeOptions !== void 0 ? typeOptions : {};
229
+ this.typeOptionsMap.set(typeFn, mapTypeOptions);
230
+ }
231
+ var symbol = this.symbol;
232
+ var parentPrototype = (_a = Object.getPrototypeOf(typeFn.prototype)) !== null && _a !== void 0 ? _a : {};
233
+ var parentTypeMetadata = parentPrototype[symbol];
234
+ var typeMetadata = new TypeMetadata(this, typeFn, mapTypeOptions, parentTypeMetadata);
235
+ return typeMetadata;
236
+ };
237
+ TypeManager.extractTypeMetadata = function (typeFn) {
238
+ return this.staticTypeManager.extractTypeMetadata(typeFn);
239
+ };
240
+ TypeManager.prototype.extractTypeMetadata = function (typeFn) {
241
+ var symbol = this.symbol;
242
+ var prototype = typeFn.prototype;
243
+ var typeMetadataDefined = prototype.hasOwnProperty(symbol);
244
+ var typeMetadata = typeMetadataDefined ? prototype[symbol] : this.configureTypeMetadata(typeFn);
245
+ return typeMetadata;
246
+ };
247
+ TypeManager.applyTypeOptionsBase = function (typeOptionsBase) {
248
+ return this.staticTypeManager.applyTypeOptionsBase(typeOptionsBase);
249
+ };
250
+ TypeManager.prototype.applyTypeOptionsBase = function (typeOptionsBase) {
251
+ var customOptions = this.typeOptionsBase.customOptions;
252
+ assign(this.typeOptionsBase, typeOptionsBase, { customOptions: customOptions });
253
+ if (!isNil(typeOptionsBase.customOptions)) {
254
+ this.customContext.configure(typeOptionsBase.customOptions);
255
+ }
256
+ return this;
257
+ };
258
+ TypeManager.applyTypeOptionsMap = function (typeOptionsMap) {
259
+ return this.staticTypeManager.applyTypeOptionsMap(typeOptionsMap);
260
+ };
261
+ TypeManager.prototype.applyTypeOptionsMap = function (typeOptionsMap) {
262
+ var e_4, _a;
263
+ try {
264
+ for (var typeOptionsMap_2 = __values(typeOptionsMap), typeOptionsMap_2_1 = typeOptionsMap_2.next(); !typeOptionsMap_2_1.done; typeOptionsMap_2_1 = typeOptionsMap_2.next()) {
265
+ var _b = __read(typeOptionsMap_2_1.value, 2), typeFn = _b[0], typeOptions = _b[1];
266
+ this.applyTypeOptions(typeFn, typeOptions);
267
+ }
268
+ }
269
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
270
+ finally {
271
+ try {
272
+ if (typeOptionsMap_2_1 && !typeOptionsMap_2_1.done && (_a = typeOptionsMap_2.return)) _a.call(typeOptionsMap_2);
273
+ }
274
+ finally { if (e_4) throw e_4.error; }
275
+ }
276
+ return this;
277
+ };
278
+ TypeManager.applyTypeOptions = function (typeFn, typeOptions) {
279
+ return this.staticTypeManager.applyTypeOptions(typeFn, typeOptions);
280
+ };
281
+ TypeManager.prototype.applyTypeOptions = function (typeFn, typeOptions) {
282
+ var typeMetadata = this.extractTypeMetadata(typeFn);
283
+ typeMetadata.configure(typeOptions);
284
+ return this;
285
+ };
286
+ TypeManager.applyTypeConfigurationMap = function (typeConfigurationMap) {
287
+ return this.staticTypeManager.applyTypeConfigurationMap(typeConfigurationMap);
288
+ };
289
+ TypeManager.prototype.applyTypeConfigurationMap = function (typeConfigurationMap) {
290
+ var e_5, _a;
291
+ try {
292
+ for (var typeConfigurationMap_1 = __values(typeConfigurationMap), typeConfigurationMap_1_1 = typeConfigurationMap_1.next(); !typeConfigurationMap_1_1.done; typeConfigurationMap_1_1 = typeConfigurationMap_1.next()) {
293
+ var _b = __read(typeConfigurationMap_1_1.value, 2), typeFn = _b[0], typeConfiguration = _b[1];
294
+ this.applyTypeConfiguration(typeFn, typeConfiguration);
295
+ }
296
+ }
297
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
298
+ finally {
299
+ try {
300
+ if (typeConfigurationMap_1_1 && !typeConfigurationMap_1_1.done && (_a = typeConfigurationMap_1.return)) _a.call(typeConfigurationMap_1);
301
+ }
302
+ finally { if (e_5) throw e_5.error; }
303
+ }
304
+ return this;
305
+ };
306
+ TypeManager.applyTypeConfiguration = function (typeFn, typeConfiguration) {
307
+ return this.staticTypeManager.applyTypeConfiguration(typeFn, typeConfiguration);
308
+ };
309
+ TypeManager.prototype.applyTypeConfiguration = function (typeFn, typeConfiguration) {
310
+ var typeMetadata = this.extractTypeMetadata(typeFn);
311
+ typeConfiguration.configure(typeMetadata);
312
+ return this;
313
+ };
314
+ TypeManager.configure = function (typeManagerOptions) {
315
+ return this.staticTypeManager.configure(typeManagerOptions);
316
+ };
317
+ TypeManager.prototype.configure = function (typeManagerOptions) {
318
+ if (!isUndefined(typeManagerOptions.typeOptionsBase)) {
319
+ this.applyTypeOptionsBase(typeManagerOptions.typeOptionsBase);
320
+ }
321
+ if (!isUndefined(typeManagerOptions.typeOptionsMap)) {
322
+ this.applyTypeOptionsMap(typeManagerOptions.typeOptionsMap);
323
+ }
324
+ if (!isUndefined(typeManagerOptions.typeConfigurationMap)) {
325
+ this.applyTypeConfigurationMap(typeManagerOptions.typeConfigurationMap);
326
+ }
327
+ return this;
328
+ };
329
+ TypeManager.defineSerializerContext = function (typeFn, x, genericArguments) {
330
+ return this.staticTypeManager.defineSerializerContext(typeFn, x, genericArguments);
331
+ };
332
+ TypeManager.prototype.defineSerializerContext = function (typeFn, x, genericArguments) {
333
+ var typeMetadata = this.extractTypeMetadata(typeFn);
334
+ var genericStructures = isNil(genericArguments) ? undefined : typeMetadata.defineGenericStructures(genericArguments);
335
+ var genericMetadataResolvers = isNil(genericStructures) ? undefined : typeMetadata.defineGenericMetadataResolvers(genericStructures);
336
+ return new SerializerContext(x, new Map(), new Map(), {
337
+ jsonPathKey: '$',
338
+ typeMetadata: typeMetadata,
339
+ genericStructures: genericStructures,
340
+ genericMetadataResolvers: genericMetadataResolvers
341
+ });
342
+ };
343
+ TypeManager.serialize = function (typeFn, x) {
344
+ return this.staticTypeManager.serialize(typeFn, x);
345
+ };
346
+ TypeManager.prototype.serialize = function (typeFn, x) {
347
+ var arrayFn = Array;
348
+ if (isArray(x) && typeFn !== arrayFn) {
349
+ return this.defineSerializerContext(arrayFn, x, [typeFn]).serialize(x);
350
+ }
351
+ return this.defineSerializerContext(typeFn, x).serialize(x);
352
+ };
353
+ TypeManager.deserialize = function (typeFn, x) {
354
+ return this.staticTypeManager.deserialize(typeFn, x);
355
+ };
356
+ TypeManager.prototype.deserialize = function (typeFn, x) {
357
+ var arrayFn = Array;
358
+ if (isArray(x) && typeFn !== arrayFn) {
359
+ return this.defineSerializerContext(arrayFn, x, [typeFn]).deserialize(x);
360
+ }
361
+ return this.defineSerializerContext(typeFn, x).deserialize(x);
362
+ };
363
+ TypeManager.stringify = function (typeFn, x, replacer, space) {
364
+ return this.staticTypeManager.stringify(typeFn, x, replacer, space);
365
+ };
366
+ TypeManager.prototype.stringify = function (typeFn, x, replacer, space) {
367
+ return jsonStringify(this.serialize(typeFn, x), replacer, space);
368
+ };
369
+ TypeManager.parse = function (typeFn, x, reviver) {
370
+ return this.staticTypeManager.parse(typeFn, x, reviver);
371
+ };
372
+ TypeManager.prototype.parse = function (typeFn, x, reviver) {
373
+ return this.deserialize(typeFn, jsonParse(x, reviver));
374
+ };
375
+ TypeManager.defaultTypeOptionsBase = {
376
+ discriminator: '$type',
377
+ factory: new TypeFactory(),
378
+ injector: new SingletonInjector(),
379
+ log: new Log(LogLevel.Error),
380
+ preserveDiscriminator: false,
381
+ referenceHandler: new CircularReferenceHandler(),
382
+ serializer: new TypeSerializer(),
383
+ preserveNull: true,
384
+ useDefaultValue: false,
385
+ useImplicitConversion: false
386
+ };
387
+ TypeManager.defaultTypeOptionsMap = new Map([
388
+ [Any, { serializer: new AnySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
389
+ [ArrayBuffer, { serializer: new ArrayBufferSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
390
+ [Array, { serializer: new ArraySerializer(), serializedDefaultValue: function () { return []; }, deserializedDefaultValue: function () { return []; } }],
391
+ [Boolean, { serializer: new BooleanSerializer(), serializedDefaultValue: false, deserializedDefaultValue: false }],
392
+ [DataView, { serializer: new DataViewSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
393
+ [Date, { serializer: new DateSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
394
+ [Float32Array, { serializer: new Float32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
395
+ [Float64Array, { serializer: new Float64ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
396
+ [Int8Array, { serializer: new Int8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
397
+ [Int16Array, { serializer: new Int16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
398
+ [Int32Array, { serializer: new Int32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
399
+ [Map, { serializer: new MapSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
400
+ [Number, { serializer: new NumberSerializer(), serializedDefaultValue: 0, deserializedDefaultValue: 0 }],
401
+ [Set, { serializer: new SetSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
402
+ [String, { serializer: new StringSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
403
+ [Uint8Array, { serializer: new Uint8ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
404
+ [Uint8ClampedArray, { serializer: new Uint8ClampedArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
405
+ [Uint16Array, { serializer: new Uint16ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
406
+ [Uint32Array, { serializer: new Uint32ArraySerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }],
407
+ [Unknown, { serializer: new UnknownSerializer(), serializedDefaultValue: undefined, deserializedDefaultValue: undefined }]
408
+ ]);
409
+ TypeManager.staticTypeManager = new TypeManager();
410
+ return TypeManager;
411
+ }());
412
+ export { TypeManager };
413
413
  //# sourceMappingURL=type-manager.js.map