@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,282 +1,282 @@
1
- import { isNil, isNumber, isUndefined } from 'lodash';
2
- import { isCtorFunction } from './functions/is-ctor-function';
3
- import { Metadata } from './metadata';
4
- export class SerializerContext extends Metadata {
5
- constructor($, referenceMap, referenceCallbackMap, serializerContextOptions, parentSerializerContext) {
6
- super(serializerContextOptions.typeMetadata.typeManager);
7
- this.$ = $;
8
- this.referenceMap = referenceMap,
9
- this.referenceCallbackMap = referenceCallbackMap;
10
- this.serializerContextOptions = serializerContextOptions;
11
- this.parentSerializerContext = parentSerializerContext;
12
- return;
13
- }
14
- get jsonPathKey() {
15
- return this.serializerContextOptions.jsonPathKey;
16
- }
17
- get referenceValueSetter() {
18
- return this.serializerContextOptions.referenceValueSetter;
19
- }
20
- get serializedNullValue() {
21
- if (this.preserveNull) {
22
- return null;
23
- }
24
- return this.serializedDefaultValue;
25
- }
26
- get serializedDefaultValue() {
27
- var _a, _b;
28
- if (this.useDefaultValue) {
29
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.serializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.serializedDefaultValue;
30
- }
31
- return undefined;
32
- }
33
- get deserializedNullValue() {
34
- if (this.preserveNull) {
35
- return null;
36
- }
37
- return this.deserializedDefaultValue;
38
- }
39
- get deserializedDefaultValue() {
40
- var _a, _b;
41
- if (this.useDefaultValue) {
42
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.deserializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.deserializedDefaultValue;
43
- }
44
- return undefined;
45
- }
46
- get jsonPath() {
47
- const jsonPathKey = this.jsonPathKey;
48
- const parentSerializerContext = this.parentSerializerContext;
49
- if (isNil(parentSerializerContext)) {
50
- return jsonPathKey;
51
- }
52
- if (isNumber(jsonPathKey)) {
53
- return `${parentSerializerContext.jsonPath}[${jsonPathKey}]`;
54
- }
55
- return `${parentSerializerContext.jsonPath}['${jsonPathKey}']`;
56
- }
57
- get discriminant() {
58
- return this.typeMetadata.discriminant;
59
- }
60
- get discriminantMap() {
61
- return this.typeMetadata.discriminantMap;
62
- }
63
- get discriminator() {
64
- return this.typeMetadata.discriminator;
65
- }
66
- get factory() {
67
- return this.typeMetadata.factory;
68
- }
69
- get genericStructures() {
70
- return this.serializerContextOptions.genericStructures;
71
- }
72
- get genericMetadataResolvers() {
73
- return this.serializerContextOptions.genericMetadataResolvers;
74
- }
75
- get genericMetadatas() {
76
- const genericStructures = this.genericStructures;
77
- const genericMetadataResolvers = this.genericMetadataResolvers;
78
- if (isNil(genericStructures) || isNil(genericMetadataResolvers)) {
79
- return undefined;
80
- }
81
- return this.defineGenericMetadatas(genericStructures, genericMetadataResolvers);
82
- }
83
- get injector() {
84
- return this.typeMetadata.injector;
85
- }
86
- get log() {
87
- return this.typeMetadata.log;
88
- }
89
- get name() {
90
- if (isNil(this.propertyMetadata)) {
91
- return this.typeMetadata.typeName;
92
- }
93
- return `${this.propertyMetadata.declaringTypeMetadata.typeName}.${this.propertyMetadata.propertyName}`;
94
- }
95
- get namingConvention() {
96
- var _a, _b;
97
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.namingConvention) !== null && _b !== void 0 ? _b : this.typeMetadata.namingConvention;
98
- }
99
- get polymorphic() {
100
- return this.typeMetadata.polymorphic;
101
- }
102
- get propertyMetadata() {
103
- return this.serializerContextOptions.propertyMetadata;
104
- }
105
- get preserveDiscriminator() {
106
- return this.typeMetadata.preserveDiscriminator;
107
- }
108
- get referenceHandler() {
109
- var _a, _b;
110
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.referenceHandler) !== null && _b !== void 0 ? _b : this.typeMetadata.referenceHandler;
111
- }
112
- get serializer() {
113
- var _a, _b;
114
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.serializer) !== null && _b !== void 0 ? _b : this.typeMetadata.serializer;
115
- }
116
- get typeMetadata() {
117
- return this.serializerContextOptions.typeMetadata;
118
- }
119
- get preserveNull() {
120
- var _a, _b;
121
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.preserveNull) !== null && _b !== void 0 ? _b : this.typeMetadata.preserveNull;
122
- }
123
- get useDefaultValue() {
124
- var _a, _b;
125
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.useDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.useDefaultValue;
126
- }
127
- get useImplicitConversion() {
128
- var _a, _b;
129
- return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.useImplicitConversion) !== null && _b !== void 0 ? _b : this.typeMetadata.useImplicitConversion;
130
- }
131
- serialize(x) {
132
- return this.serializer.serialize(x, this);
133
- }
134
- deserialize(x) {
135
- return this.serializer.deserialize(x, this);
136
- }
137
- defineReference(referenceKey, referenceValueGetter) {
138
- return this.referenceHandler.define(this, referenceKey, referenceValueGetter);
139
- }
140
- restoreReference(referenceKey, referenceValueGetter) {
141
- return this.referenceHandler.restore(this, referenceKey, referenceValueGetter);
142
- }
143
- registerReferenceCallback(referenceKey) {
144
- const referenceValueSetter = this.referenceValueSetter;
145
- if (isNil(referenceValueSetter)) {
146
- return;
147
- }
148
- this.pushReferenceCallback(referenceKey, () => {
149
- const referenceValue = this.referenceMap.get(referenceKey);
150
- referenceValueSetter(referenceValue);
151
- });
152
- return;
153
- }
154
- pushReferenceCallback(referenceKey, referenceCallback) {
155
- let referenceCallbacks = this.referenceCallbackMap.get(referenceKey);
156
- if (isNil(referenceCallbacks)) {
157
- referenceCallbacks = [];
158
- this.referenceCallbackMap.set(referenceKey, referenceCallbacks);
159
- }
160
- referenceCallbacks.push(referenceCallback);
161
- return;
162
- }
163
- resolveReferenceCallbacks(referenceKey) {
164
- const referenceCallbacks = this.referenceCallbackMap.get(referenceKey);
165
- if (isNil(referenceCallbacks)) {
166
- return;
167
- }
168
- for (const referenceCallback of referenceCallbacks) {
169
- referenceCallback();
170
- }
171
- return;
172
- }
173
- defineSerializerContextOptions(serializerContextOptions) {
174
- var _a, _b, _c, _d, _e, _f;
175
- return {
176
- jsonPathKey: (_a = serializerContextOptions.jsonPathKey) !== null && _a !== void 0 ? _a : this.serializerContextOptions.jsonPathKey,
177
- typeMetadata: (_b = serializerContextOptions.typeMetadata) !== null && _b !== void 0 ? _b : this.serializerContextOptions.typeMetadata,
178
- genericStructures: (_c = serializerContextOptions.genericStructures) !== null && _c !== void 0 ? _c : this.serializerContextOptions.genericStructures,
179
- genericMetadataResolvers: (_d = serializerContextOptions.genericMetadataResolvers) !== null && _d !== void 0 ? _d : this.serializerContextOptions.genericMetadataResolvers,
180
- propertyMetadata: (_e = serializerContextOptions.propertyMetadata) !== null && _e !== void 0 ? _e : this.serializerContextOptions.propertyMetadata,
181
- referenceValueSetter: (_f = serializerContextOptions.referenceValueSetter) !== null && _f !== void 0 ? _f : this.serializerContextOptions.referenceValueSetter
182
- };
183
- }
184
- defineChildSerializerContext(childSerializerContextOptions) {
185
- const parentSerializerContext = isNil(childSerializerContextOptions.jsonPathKey) ? this.parentSerializerContext : this;
186
- const serializerContextOptions = this.defineSerializerContextOptions(childSerializerContextOptions);
187
- return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, parentSerializerContext);
188
- }
189
- defineGenericSerializerContext(genericIndex) {
190
- const genericStructures = this.genericStructures;
191
- const genericMetadataResolvers = this.genericMetadataResolvers;
192
- if (isNil(genericStructures) || isNil(genericMetadataResolvers)) {
193
- throw new Error(`${this.jsonPath}: cannot define generic arguments. This is usually caused by invalid configuration.`);
194
- }
195
- const genericStructure = genericStructures[genericIndex];
196
- const genericMetadataResolver = genericMetadataResolvers[genericIndex];
197
- if (isNil(genericStructure) || isNil(genericMetadataResolver)) {
198
- throw new Error(`${this.jsonPath}: cannot define generic argument for index ${genericIndex}. This is usually caused by invalid configuration.`);
199
- }
200
- const genericTypeArgument = genericStructure[0];
201
- const genericGenericStructures = genericStructure[1];
202
- const genericTypeMetadataResolver = genericMetadataResolver[0];
203
- const genericGenericMetadataResolvers = genericMetadataResolver[1];
204
- const typeMetadata = genericTypeMetadataResolver(genericTypeArgument);
205
- const serializerContextOptions = this.defineSerializerContextOptions(this.serializerContextOptions);
206
- serializerContextOptions.typeMetadata = typeMetadata;
207
- serializerContextOptions.genericStructures = genericGenericStructures;
208
- serializerContextOptions.genericMetadataResolvers = genericGenericMetadataResolvers;
209
- serializerContextOptions.propertyMetadata = undefined;
210
- return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, this.parentSerializerContext);
211
- }
212
- definePolymorphicSerializerContext(x) {
213
- return isCtorFunction(x) ? this.definePolymorphicSerializerContextByTypeFn(x) : this.definePolymorphicSerializerContextByDiscriminant(x);
214
- }
215
- definePolymorphicSerializerContextByTypeFn(typeFn) {
216
- const discriminant = this.discriminantMap.get(typeFn);
217
- if (isNil(discriminant)) {
218
- throw new Error(`${this.jsonPath}: cannot define discriminant of polymorphic type. This is usually caused by invalid configuration.`);
219
- }
220
- const typeMetadata = this.typeManager.extractTypeMetadata(typeFn);
221
- const serializerContextOptions = this.defineSerializerContextOptions(this.serializerContextOptions);
222
- serializerContextOptions.typeMetadata = typeMetadata;
223
- return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, this.parentSerializerContext);
224
- }
225
- definePolymorphicSerializerContextByDiscriminant(record) {
226
- for (const [typeCtor, discriminant] of this.discriminantMap) {
227
- const typeMetadata = this.typeManager.extractTypeMetadata(typeCtor);
228
- if (record[typeMetadata.discriminator] === discriminant) {
229
- const serializerContextOptions = this.defineSerializerContextOptions(this.serializerContextOptions);
230
- serializerContextOptions.typeMetadata = typeMetadata;
231
- return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, this.parentSerializerContext);
232
- }
233
- }
234
- throw new Error(`${this.jsonPath}: cannot define discriminant of polymorphic type. This is usually caused by invalid configuration.`);
235
- }
236
- hasJsonPathKey(jsonPathKey) {
237
- this.serializerContextOptions.jsonPathKey = jsonPathKey;
238
- return this;
239
- }
240
- hasReferenceValueSetter(referenceValueSetter) {
241
- this.serializerContextOptions.referenceValueSetter = referenceValueSetter;
242
- return this;
243
- }
244
- hasGenericStructures(genericStructures) {
245
- this.serializerContextOptions.genericStructures = genericStructures;
246
- return this;
247
- }
248
- hasGenericMetadataResolvers(genericMetadataResolvers) {
249
- this.serializerContextOptions.genericMetadataResolvers = genericMetadataResolvers;
250
- return this;
251
- }
252
- hasPropertyMetadata(propertyMetadata) {
253
- this.serializerContextOptions.propertyMetadata = propertyMetadata;
254
- return this;
255
- }
256
- hasTypeMetadata(typeMetadata) {
257
- this.serializerContextOptions.typeMetadata = typeMetadata;
258
- return this;
259
- }
260
- configure(serializerContextOptions) {
261
- if (!isUndefined(serializerContextOptions.jsonPathKey)) {
262
- this.hasJsonPathKey(serializerContextOptions.jsonPathKey);
263
- }
264
- if (!isUndefined(serializerContextOptions.referenceValueSetter)) {
265
- this.hasReferenceValueSetter(serializerContextOptions.referenceValueSetter);
266
- }
267
- if (!isUndefined(serializerContextOptions.genericStructures)) {
268
- this.hasGenericStructures(serializerContextOptions.genericStructures);
269
- }
270
- if (!isUndefined(serializerContextOptions.genericMetadataResolvers)) {
271
- this.hasGenericMetadataResolvers(serializerContextOptions.genericMetadataResolvers);
272
- }
273
- if (!isUndefined(serializerContextOptions.propertyMetadata)) {
274
- this.hasPropertyMetadata(serializerContextOptions.propertyMetadata);
275
- }
276
- if (!isUndefined(serializerContextOptions.typeMetadata)) {
277
- this.hasTypeMetadata(serializerContextOptions.typeMetadata);
278
- }
279
- return this;
280
- }
281
- }
1
+ import { isNil, isNumber, isUndefined } from 'lodash';
2
+ import { isCtorFunction } from './functions/is-ctor-function';
3
+ import { Metadata } from './metadata';
4
+ export class SerializerContext extends Metadata {
5
+ constructor($, referenceMap, referenceCallbackMap, serializerContextOptions, parentSerializerContext) {
6
+ super(serializerContextOptions.typeMetadata.typeManager);
7
+ this.$ = $;
8
+ this.referenceMap = referenceMap,
9
+ this.referenceCallbackMap = referenceCallbackMap;
10
+ this.serializerContextOptions = serializerContextOptions;
11
+ this.parentSerializerContext = parentSerializerContext;
12
+ return;
13
+ }
14
+ get jsonPathKey() {
15
+ return this.serializerContextOptions.jsonPathKey;
16
+ }
17
+ get referenceValueSetter() {
18
+ return this.serializerContextOptions.referenceValueSetter;
19
+ }
20
+ get serializedNullValue() {
21
+ if (this.preserveNull) {
22
+ return null;
23
+ }
24
+ return this.serializedDefaultValue;
25
+ }
26
+ get serializedDefaultValue() {
27
+ var _a, _b;
28
+ if (this.useDefaultValue) {
29
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.serializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.serializedDefaultValue;
30
+ }
31
+ return undefined;
32
+ }
33
+ get deserializedNullValue() {
34
+ if (this.preserveNull) {
35
+ return null;
36
+ }
37
+ return this.deserializedDefaultValue;
38
+ }
39
+ get deserializedDefaultValue() {
40
+ var _a, _b;
41
+ if (this.useDefaultValue) {
42
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.deserializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.deserializedDefaultValue;
43
+ }
44
+ return undefined;
45
+ }
46
+ get jsonPath() {
47
+ const jsonPathKey = this.jsonPathKey;
48
+ const parentSerializerContext = this.parentSerializerContext;
49
+ if (isNil(parentSerializerContext)) {
50
+ return jsonPathKey;
51
+ }
52
+ if (isNumber(jsonPathKey)) {
53
+ return `${parentSerializerContext.jsonPath}[${jsonPathKey}]`;
54
+ }
55
+ return `${parentSerializerContext.jsonPath}['${jsonPathKey}']`;
56
+ }
57
+ get discriminant() {
58
+ return this.typeMetadata.discriminant;
59
+ }
60
+ get discriminantMap() {
61
+ return this.typeMetadata.discriminantMap;
62
+ }
63
+ get discriminator() {
64
+ return this.typeMetadata.discriminator;
65
+ }
66
+ get factory() {
67
+ return this.typeMetadata.factory;
68
+ }
69
+ get genericStructures() {
70
+ return this.serializerContextOptions.genericStructures;
71
+ }
72
+ get genericMetadataResolvers() {
73
+ return this.serializerContextOptions.genericMetadataResolvers;
74
+ }
75
+ get genericMetadatas() {
76
+ const genericStructures = this.genericStructures;
77
+ const genericMetadataResolvers = this.genericMetadataResolvers;
78
+ if (isNil(genericStructures) || isNil(genericMetadataResolvers)) {
79
+ return undefined;
80
+ }
81
+ return this.defineGenericMetadatas(genericStructures, genericMetadataResolvers);
82
+ }
83
+ get injector() {
84
+ return this.typeMetadata.injector;
85
+ }
86
+ get log() {
87
+ return this.typeMetadata.log;
88
+ }
89
+ get name() {
90
+ if (isNil(this.propertyMetadata)) {
91
+ return this.typeMetadata.typeName;
92
+ }
93
+ return `${this.propertyMetadata.declaringTypeMetadata.typeName}.${this.propertyMetadata.propertyName}`;
94
+ }
95
+ get namingConvention() {
96
+ var _a, _b;
97
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.namingConvention) !== null && _b !== void 0 ? _b : this.typeMetadata.namingConvention;
98
+ }
99
+ get polymorphic() {
100
+ return this.typeMetadata.polymorphic;
101
+ }
102
+ get propertyMetadata() {
103
+ return this.serializerContextOptions.propertyMetadata;
104
+ }
105
+ get preserveDiscriminator() {
106
+ return this.typeMetadata.preserveDiscriminator;
107
+ }
108
+ get referenceHandler() {
109
+ var _a, _b;
110
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.referenceHandler) !== null && _b !== void 0 ? _b : this.typeMetadata.referenceHandler;
111
+ }
112
+ get serializer() {
113
+ var _a, _b;
114
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.serializer) !== null && _b !== void 0 ? _b : this.typeMetadata.serializer;
115
+ }
116
+ get typeMetadata() {
117
+ return this.serializerContextOptions.typeMetadata;
118
+ }
119
+ get preserveNull() {
120
+ var _a, _b;
121
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.preserveNull) !== null && _b !== void 0 ? _b : this.typeMetadata.preserveNull;
122
+ }
123
+ get useDefaultValue() {
124
+ var _a, _b;
125
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.useDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.useDefaultValue;
126
+ }
127
+ get useImplicitConversion() {
128
+ var _a, _b;
129
+ return (_b = (_a = this.propertyMetadata) === null || _a === void 0 ? void 0 : _a.useImplicitConversion) !== null && _b !== void 0 ? _b : this.typeMetadata.useImplicitConversion;
130
+ }
131
+ serialize(x) {
132
+ return this.serializer.serialize(x, this);
133
+ }
134
+ deserialize(x) {
135
+ return this.serializer.deserialize(x, this);
136
+ }
137
+ defineReference(referenceKey, referenceValueGetter) {
138
+ return this.referenceHandler.define(this, referenceKey, referenceValueGetter);
139
+ }
140
+ restoreReference(referenceKey, referenceValueGetter) {
141
+ return this.referenceHandler.restore(this, referenceKey, referenceValueGetter);
142
+ }
143
+ registerReferenceCallback(referenceKey) {
144
+ const referenceValueSetter = this.referenceValueSetter;
145
+ if (isNil(referenceValueSetter)) {
146
+ return;
147
+ }
148
+ this.pushReferenceCallback(referenceKey, () => {
149
+ const referenceValue = this.referenceMap.get(referenceKey);
150
+ referenceValueSetter(referenceValue);
151
+ });
152
+ return;
153
+ }
154
+ pushReferenceCallback(referenceKey, referenceCallback) {
155
+ let referenceCallbacks = this.referenceCallbackMap.get(referenceKey);
156
+ if (isNil(referenceCallbacks)) {
157
+ referenceCallbacks = [];
158
+ this.referenceCallbackMap.set(referenceKey, referenceCallbacks);
159
+ }
160
+ referenceCallbacks.push(referenceCallback);
161
+ return;
162
+ }
163
+ resolveReferenceCallbacks(referenceKey) {
164
+ const referenceCallbacks = this.referenceCallbackMap.get(referenceKey);
165
+ if (isNil(referenceCallbacks)) {
166
+ return;
167
+ }
168
+ for (const referenceCallback of referenceCallbacks) {
169
+ referenceCallback();
170
+ }
171
+ return;
172
+ }
173
+ defineSerializerContextOptions(serializerContextOptions) {
174
+ var _a, _b, _c, _d, _e, _f;
175
+ return {
176
+ jsonPathKey: (_a = serializerContextOptions.jsonPathKey) !== null && _a !== void 0 ? _a : this.serializerContextOptions.jsonPathKey,
177
+ typeMetadata: (_b = serializerContextOptions.typeMetadata) !== null && _b !== void 0 ? _b : this.serializerContextOptions.typeMetadata,
178
+ genericStructures: (_c = serializerContextOptions.genericStructures) !== null && _c !== void 0 ? _c : this.serializerContextOptions.genericStructures,
179
+ genericMetadataResolvers: (_d = serializerContextOptions.genericMetadataResolvers) !== null && _d !== void 0 ? _d : this.serializerContextOptions.genericMetadataResolvers,
180
+ propertyMetadata: (_e = serializerContextOptions.propertyMetadata) !== null && _e !== void 0 ? _e : this.serializerContextOptions.propertyMetadata,
181
+ referenceValueSetter: (_f = serializerContextOptions.referenceValueSetter) !== null && _f !== void 0 ? _f : this.serializerContextOptions.referenceValueSetter
182
+ };
183
+ }
184
+ defineChildSerializerContext(childSerializerContextOptions) {
185
+ const parentSerializerContext = isNil(childSerializerContextOptions.jsonPathKey) ? this.parentSerializerContext : this;
186
+ const serializerContextOptions = this.defineSerializerContextOptions(childSerializerContextOptions);
187
+ return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, parentSerializerContext);
188
+ }
189
+ defineGenericSerializerContext(genericIndex) {
190
+ const genericStructures = this.genericStructures;
191
+ const genericMetadataResolvers = this.genericMetadataResolvers;
192
+ if (isNil(genericStructures) || isNil(genericMetadataResolvers)) {
193
+ throw new Error(`${this.jsonPath}: cannot define generic arguments. This is usually caused by invalid configuration.`);
194
+ }
195
+ const genericStructure = genericStructures[genericIndex];
196
+ const genericMetadataResolver = genericMetadataResolvers[genericIndex];
197
+ if (isNil(genericStructure) || isNil(genericMetadataResolver)) {
198
+ throw new Error(`${this.jsonPath}: cannot define generic argument for index ${genericIndex}. This is usually caused by invalid configuration.`);
199
+ }
200
+ const genericTypeArgument = genericStructure[0];
201
+ const genericGenericStructures = genericStructure[1];
202
+ const genericTypeMetadataResolver = genericMetadataResolver[0];
203
+ const genericGenericMetadataResolvers = genericMetadataResolver[1];
204
+ const typeMetadata = genericTypeMetadataResolver(genericTypeArgument);
205
+ const serializerContextOptions = this.defineSerializerContextOptions(this.serializerContextOptions);
206
+ serializerContextOptions.typeMetadata = typeMetadata;
207
+ serializerContextOptions.genericStructures = genericGenericStructures;
208
+ serializerContextOptions.genericMetadataResolvers = genericGenericMetadataResolvers;
209
+ serializerContextOptions.propertyMetadata = undefined;
210
+ return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, this.parentSerializerContext);
211
+ }
212
+ definePolymorphicSerializerContext(x) {
213
+ return isCtorFunction(x) ? this.definePolymorphicSerializerContextByTypeFn(x) : this.definePolymorphicSerializerContextByDiscriminant(x);
214
+ }
215
+ definePolymorphicSerializerContextByTypeFn(typeFn) {
216
+ const discriminant = this.discriminantMap.get(typeFn);
217
+ if (isNil(discriminant)) {
218
+ throw new Error(`${this.jsonPath}: cannot define discriminant of polymorphic type. This is usually caused by invalid configuration.`);
219
+ }
220
+ const typeMetadata = this.typeManager.extractTypeMetadata(typeFn);
221
+ const serializerContextOptions = this.defineSerializerContextOptions(this.serializerContextOptions);
222
+ serializerContextOptions.typeMetadata = typeMetadata;
223
+ return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, this.parentSerializerContext);
224
+ }
225
+ definePolymorphicSerializerContextByDiscriminant(record) {
226
+ for (const [typeCtor, discriminant] of this.discriminantMap) {
227
+ const typeMetadata = this.typeManager.extractTypeMetadata(typeCtor);
228
+ if (record[typeMetadata.discriminator] === discriminant) {
229
+ const serializerContextOptions = this.defineSerializerContextOptions(this.serializerContextOptions);
230
+ serializerContextOptions.typeMetadata = typeMetadata;
231
+ return new SerializerContext(this.$, this.referenceMap, this.referenceCallbackMap, serializerContextOptions, this.parentSerializerContext);
232
+ }
233
+ }
234
+ throw new Error(`${this.jsonPath}: cannot define discriminant of polymorphic type. This is usually caused by invalid configuration.`);
235
+ }
236
+ hasJsonPathKey(jsonPathKey) {
237
+ this.serializerContextOptions.jsonPathKey = jsonPathKey;
238
+ return this;
239
+ }
240
+ hasReferenceValueSetter(referenceValueSetter) {
241
+ this.serializerContextOptions.referenceValueSetter = referenceValueSetter;
242
+ return this;
243
+ }
244
+ hasGenericStructures(genericStructures) {
245
+ this.serializerContextOptions.genericStructures = genericStructures;
246
+ return this;
247
+ }
248
+ hasGenericMetadataResolvers(genericMetadataResolvers) {
249
+ this.serializerContextOptions.genericMetadataResolvers = genericMetadataResolvers;
250
+ return this;
251
+ }
252
+ hasPropertyMetadata(propertyMetadata) {
253
+ this.serializerContextOptions.propertyMetadata = propertyMetadata;
254
+ return this;
255
+ }
256
+ hasTypeMetadata(typeMetadata) {
257
+ this.serializerContextOptions.typeMetadata = typeMetadata;
258
+ return this;
259
+ }
260
+ configure(serializerContextOptions) {
261
+ if (!isUndefined(serializerContextOptions.jsonPathKey)) {
262
+ this.hasJsonPathKey(serializerContextOptions.jsonPathKey);
263
+ }
264
+ if (!isUndefined(serializerContextOptions.referenceValueSetter)) {
265
+ this.hasReferenceValueSetter(serializerContextOptions.referenceValueSetter);
266
+ }
267
+ if (!isUndefined(serializerContextOptions.genericStructures)) {
268
+ this.hasGenericStructures(serializerContextOptions.genericStructures);
269
+ }
270
+ if (!isUndefined(serializerContextOptions.genericMetadataResolvers)) {
271
+ this.hasGenericMetadataResolvers(serializerContextOptions.genericMetadataResolvers);
272
+ }
273
+ if (!isUndefined(serializerContextOptions.propertyMetadata)) {
274
+ this.hasPropertyMetadata(serializerContextOptions.propertyMetadata);
275
+ }
276
+ if (!isUndefined(serializerContextOptions.typeMetadata)) {
277
+ this.hasTypeMetadata(serializerContextOptions.typeMetadata);
278
+ }
279
+ return this;
280
+ }
281
+ }
282
282
  //# sourceMappingURL=serializer-context.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=serializer.js.map
@@ -1,22 +1,22 @@
1
- import { isNull, isUndefined } from 'lodash';
2
- export class AnySerializer {
3
- serialize(x, serializerContext) {
4
- if (isUndefined(x)) {
5
- return serializerContext.serializedDefaultValue;
6
- }
7
- if (isNull(x)) {
8
- return serializerContext.serializedNullValue;
9
- }
10
- return x;
11
- }
12
- deserialize(x, serializerContext) {
13
- if (isUndefined(x)) {
14
- return serializerContext.deserializedDefaultValue;
15
- }
16
- if (isNull(x)) {
17
- return serializerContext.deserializedNullValue;
18
- }
19
- return x;
20
- }
21
- }
1
+ import { isNull, isUndefined } from 'lodash';
2
+ export class AnySerializer {
3
+ serialize(x, serializerContext) {
4
+ if (isUndefined(x)) {
5
+ return serializerContext.serializedDefaultValue;
6
+ }
7
+ if (isNull(x)) {
8
+ return serializerContext.serializedNullValue;
9
+ }
10
+ return x;
11
+ }
12
+ deserialize(x, serializerContext) {
13
+ if (isUndefined(x)) {
14
+ return serializerContext.deserializedDefaultValue;
15
+ }
16
+ if (isNull(x)) {
17
+ return serializerContext.deserializedNullValue;
18
+ }
19
+ return x;
20
+ }
21
+ }
22
22
  //# sourceMappingURL=any-serializer.js.map