@dipscope/type-manager 7.2.1 → 8.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 (621) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +159 -168
  3. package/dist/es2015/constants/default-value-resolver.js +2 -0
  4. package/dist/es2015/constants/default-value-resolver.js.map +1 -0
  5. package/dist/es2015/constants/empty-array.js +2 -0
  6. package/dist/es2015/constants/empty-array.js.map +1 -0
  7. package/dist/es2015/constants/empty-map.js +2 -0
  8. package/dist/es2015/constants/empty-map.js.map +1 -0
  9. package/dist/es2015/constants/index.js +5 -0
  10. package/dist/es2015/constants/index.js.map +1 -0
  11. package/dist/es2015/constants/null-value-resolver.js +2 -0
  12. package/dist/es2015/constants/null-value-resolver.js.map +1 -0
  13. package/dist/es2015/custom-key.js.map +1 -1
  14. package/dist/es2015/factories/type-factory.js +22 -23
  15. package/dist/es2015/factories/type-factory.js.map +1 -1
  16. package/dist/es2015/functions/get-own-reflect-metadata.js +1 -2
  17. package/dist/es2015/functions/get-own-reflect-metadata.js.map +1 -1
  18. package/dist/es2015/functions/get-reflect-metadata.js +1 -2
  19. package/dist/es2015/functions/get-reflect-metadata.js.map +1 -1
  20. package/dist/es2015/functions/get-words.js +61 -2
  21. package/dist/es2015/functions/get-words.js.map +1 -1
  22. package/dist/es2015/functions/index.js +0 -12
  23. package/dist/es2015/functions/index.js.map +1 -1
  24. package/dist/es2015/functions/json-parse.js.map +1 -1
  25. package/dist/es2015/functions/json-stringify.js +6 -5
  26. package/dist/es2015/functions/json-stringify.js.map +1 -1
  27. package/dist/es2015/functions/name-of.js +1 -5
  28. package/dist/es2015/functions/name-of.js.map +1 -1
  29. package/dist/es2015/index.js +13 -12
  30. package/dist/es2015/index.js.map +1 -1
  31. package/dist/es2015/inject-metadata.js +34 -33
  32. package/dist/es2015/inject-metadata.js.map +1 -1
  33. package/dist/es2015/inject-sorters/asc-inject-sorter.js +1 -9
  34. package/dist/es2015/inject-sorters/asc-inject-sorter.js.map +1 -1
  35. package/dist/es2015/inject-sorters/desc-inject-sorter.js +1 -9
  36. package/dist/es2015/inject-sorters/desc-inject-sorter.js.map +1 -1
  37. package/dist/es2015/inject-state.js +2 -0
  38. package/dist/es2015/inject-state.js.map +1 -0
  39. package/dist/es2015/inject-states/index.js +3 -0
  40. package/dist/es2015/inject-states/index.js.map +1 -0
  41. package/dist/es2015/inject-states/resolved-inject-state.js +10 -0
  42. package/dist/es2015/inject-states/resolved-inject-state.js.map +1 -0
  43. package/dist/es2015/inject-states/unresolved-inject-state.js +31 -0
  44. package/dist/es2015/inject-states/unresolved-inject-state.js.map +1 -0
  45. package/dist/es2015/inject.js +6 -8
  46. package/dist/es2015/inject.js.map +1 -1
  47. package/dist/es2015/injectors/singleton-injector.js +6 -10
  48. package/dist/es2015/injectors/singleton-injector.js.map +1 -1
  49. package/dist/es2015/logger-level.js +9 -0
  50. package/dist/es2015/logger-level.js.map +1 -0
  51. package/dist/es2015/logger.js +79 -0
  52. package/dist/es2015/logger.js.map +1 -0
  53. package/dist/es2015/metadata.js +45 -57
  54. package/dist/es2015/metadata.js.map +1 -1
  55. package/dist/es2015/null-value-resolver.js +2 -0
  56. package/dist/es2015/null-value-resolver.js.map +1 -0
  57. package/dist/es2015/nullable.js +2 -0
  58. package/dist/es2015/nullable.js.map +1 -0
  59. package/dist/es2015/optional.js +2 -0
  60. package/dist/es2015/optional.js.map +1 -0
  61. package/dist/es2015/property-extension-metadata-ctor-set-key.js +1 -1
  62. package/dist/es2015/property-extension-metadata-ctor-set-key.js.map +1 -1
  63. package/dist/es2015/property-extension-metadata.js.map +1 -1
  64. package/dist/es2015/property-metadata.js +224 -145
  65. package/dist/es2015/property-metadata.js.map +1 -1
  66. package/dist/es2015/property-sorters/asc-property-sorter.js +1 -9
  67. package/dist/es2015/property-sorters/asc-property-sorter.js.map +1 -1
  68. package/dist/es2015/property-sorters/desc-property-sorter.js +1 -9
  69. package/dist/es2015/property-sorters/desc-property-sorter.js.map +1 -1
  70. package/dist/es2015/property-state.js +2 -0
  71. package/dist/es2015/property-state.js.map +1 -0
  72. package/dist/es2015/property-states/index.js +3 -0
  73. package/dist/es2015/property-states/index.js.map +1 -0
  74. package/dist/es2015/property-states/resolved-property-state.js +27 -0
  75. package/dist/es2015/property-states/resolved-property-state.js.map +1 -0
  76. package/dist/es2015/property-states/unresolved-property-state.js +167 -0
  77. package/dist/es2015/property-states/unresolved-property-state.js.map +1 -0
  78. package/dist/es2015/property.js +17 -19
  79. package/dist/es2015/property.js.map +1 -1
  80. package/dist/es2015/reference-handlers/circular-reference-handler.js +2 -3
  81. package/dist/es2015/reference-handlers/circular-reference-handler.js.map +1 -1
  82. package/dist/es2015/reference-handlers/json-path-reference-handler.js +7 -6
  83. package/dist/es2015/reference-handlers/json-path-reference-handler.js.map +1 -1
  84. package/dist/es2015/reference-handlers/plain-reference-handler.js +2 -3
  85. package/dist/es2015/reference-handlers/plain-reference-handler.js.map +1 -1
  86. package/dist/es2015/serializer-context.js +65 -171
  87. package/dist/es2015/serializer-context.js.map +1 -1
  88. package/dist/es2015/serializers/any-serializer.js +4 -5
  89. package/dist/es2015/serializers/any-serializer.js.map +1 -1
  90. package/dist/es2015/serializers/array-buffer-serializer.js +8 -13
  91. package/dist/es2015/serializers/array-buffer-serializer.js.map +1 -1
  92. package/dist/es2015/serializers/array-serializer.js +18 -25
  93. package/dist/es2015/serializers/array-serializer.js.map +1 -1
  94. package/dist/es2015/serializers/boolean-serializer.js +12 -19
  95. package/dist/es2015/serializers/boolean-serializer.js.map +1 -1
  96. package/dist/es2015/serializers/data-view-serializer.js +8 -14
  97. package/dist/es2015/serializers/data-view-serializer.js.map +1 -1
  98. package/dist/es2015/serializers/date-serializer.js +8 -13
  99. package/dist/es2015/serializers/date-serializer.js.map +1 -1
  100. package/dist/es2015/serializers/float-32-array-serializer.js +8 -14
  101. package/dist/es2015/serializers/float-32-array-serializer.js.map +1 -1
  102. package/dist/es2015/serializers/float-64-array-serializer.js +8 -14
  103. package/dist/es2015/serializers/float-64-array-serializer.js.map +1 -1
  104. package/dist/es2015/serializers/int-16-array-serializer.js +8 -14
  105. package/dist/es2015/serializers/int-16-array-serializer.js.map +1 -1
  106. package/dist/es2015/serializers/int-32-array-serializer.js +8 -14
  107. package/dist/es2015/serializers/int-32-array-serializer.js.map +1 -1
  108. package/dist/es2015/serializers/int-8-array-serializer.js +8 -14
  109. package/dist/es2015/serializers/int-8-array-serializer.js.map +1 -1
  110. package/dist/es2015/serializers/map-serializer.js +42 -54
  111. package/dist/es2015/serializers/map-serializer.js.map +1 -1
  112. package/dist/es2015/serializers/number-serializer.js +10 -17
  113. package/dist/es2015/serializers/number-serializer.js.map +1 -1
  114. package/dist/es2015/serializers/set-serializer.js +19 -26
  115. package/dist/es2015/serializers/set-serializer.js.map +1 -1
  116. package/dist/es2015/serializers/string-serializer.js +12 -19
  117. package/dist/es2015/serializers/string-serializer.js.map +1 -1
  118. package/dist/es2015/serializers/type-serializer.js +64 -71
  119. package/dist/es2015/serializers/type-serializer.js.map +1 -1
  120. package/dist/es2015/serializers/uint-16-array-serializer.js +8 -14
  121. package/dist/es2015/serializers/uint-16-array-serializer.js.map +1 -1
  122. package/dist/es2015/serializers/uint-32-array-serializer.js +8 -14
  123. package/dist/es2015/serializers/uint-32-array-serializer.js.map +1 -1
  124. package/dist/es2015/serializers/uint-8-array-serializer.js +8 -14
  125. package/dist/es2015/serializers/uint-8-array-serializer.js.map +1 -1
  126. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js +8 -14
  127. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js.map +1 -1
  128. package/dist/es2015/serializers/unknown-serializer.js +4 -5
  129. package/dist/es2015/serializers/unknown-serializer.js.map +1 -1
  130. package/dist/es2015/type-entry.js +2 -0
  131. package/dist/es2015/type-entry.js.map +1 -0
  132. package/dist/es2015/type-extension-metadata-ctor-set-key.js +1 -1
  133. package/dist/es2015/type-extension-metadata-ctor-set-key.js.map +1 -1
  134. package/dist/es2015/type-extension-metadata.js.map +1 -1
  135. package/dist/es2015/type-manager.js +55 -55
  136. package/dist/es2015/type-manager.js.map +1 -1
  137. package/dist/es2015/type-metadata-symbol.js +1 -1
  138. package/dist/es2015/type-metadata-symbol.js.map +1 -1
  139. package/dist/es2015/type-metadata.js +465 -226
  140. package/dist/es2015/type-metadata.js.map +1 -1
  141. package/dist/es2015/type-scope.js +6 -7
  142. package/dist/es2015/type-scope.js.map +1 -1
  143. package/dist/es2015/type-state.js +2 -0
  144. package/dist/es2015/type-state.js.map +1 -0
  145. package/dist/es2015/type-states/index.js +3 -0
  146. package/dist/es2015/type-states/index.js.map +1 -0
  147. package/dist/es2015/type-states/resolved-type-state.js +44 -0
  148. package/dist/es2015/type-states/resolved-type-state.js.map +1 -0
  149. package/dist/es2015/type-states/unresolved-type-state.js +303 -0
  150. package/dist/es2015/type-states/unresolved-type-state.js.map +1 -0
  151. package/dist/es2015/type.js.map +1 -1
  152. package/dist/es5/constants/default-value-resolver.js +2 -0
  153. package/dist/es5/constants/default-value-resolver.js.map +1 -0
  154. package/dist/es5/constants/empty-array.js +2 -0
  155. package/dist/es5/constants/empty-array.js.map +1 -0
  156. package/dist/es5/constants/empty-map.js +2 -0
  157. package/dist/es5/constants/empty-map.js.map +1 -0
  158. package/dist/es5/constants/index.js +5 -0
  159. package/dist/es5/constants/index.js.map +1 -0
  160. package/dist/es5/constants/null-value-resolver.js +2 -0
  161. package/dist/es5/constants/null-value-resolver.js.map +1 -0
  162. package/dist/es5/custom-key.js.map +1 -1
  163. package/dist/es5/factories/type-factory.js +63 -39
  164. package/dist/es5/factories/type-factory.js.map +1 -1
  165. package/dist/es5/functions/get-own-reflect-metadata.js +1 -2
  166. package/dist/es5/functions/get-own-reflect-metadata.js.map +1 -1
  167. package/dist/es5/functions/get-reflect-metadata.js +1 -2
  168. package/dist/es5/functions/get-reflect-metadata.js.map +1 -1
  169. package/dist/es5/functions/get-words.js +61 -2
  170. package/dist/es5/functions/get-words.js.map +1 -1
  171. package/dist/es5/functions/index.js +0 -12
  172. package/dist/es5/functions/index.js.map +1 -1
  173. package/dist/es5/functions/json-parse.js.map +1 -1
  174. package/dist/es5/functions/json-stringify.js +6 -5
  175. package/dist/es5/functions/json-stringify.js.map +1 -1
  176. package/dist/es5/functions/name-of.js +1 -5
  177. package/dist/es5/functions/name-of.js.map +1 -1
  178. package/dist/es5/index.js +13 -12
  179. package/dist/es5/index.js.map +1 -1
  180. package/dist/es5/inject-metadata.js +49 -34
  181. package/dist/es5/inject-metadata.js.map +1 -1
  182. package/dist/es5/inject-sorters/asc-inject-sorter.js +1 -9
  183. package/dist/es5/inject-sorters/asc-inject-sorter.js.map +1 -1
  184. package/dist/es5/inject-sorters/desc-inject-sorter.js +1 -9
  185. package/dist/es5/inject-sorters/desc-inject-sorter.js.map +1 -1
  186. package/dist/es5/inject-state.js +2 -0
  187. package/dist/es5/inject-state.js.map +1 -0
  188. package/dist/es5/inject-states/index.js +3 -0
  189. package/dist/es5/inject-states/index.js.map +1 -0
  190. package/dist/es5/inject-states/resolved-inject-state.js +12 -0
  191. package/dist/es5/inject-states/resolved-inject-state.js.map +1 -0
  192. package/dist/es5/inject-states/unresolved-inject-state.js +45 -0
  193. package/dist/es5/inject-states/unresolved-inject-state.js.map +1 -0
  194. package/dist/es5/inject.js +6 -8
  195. package/dist/es5/inject.js.map +1 -1
  196. package/dist/es5/injectors/singleton-injector.js +31 -22
  197. package/dist/es5/injectors/singleton-injector.js.map +1 -1
  198. package/dist/es5/logger-level.js +9 -0
  199. package/dist/es5/logger-level.js.map +1 -0
  200. package/dist/es5/logger.js +122 -0
  201. package/dist/es5/logger.js.map +1 -0
  202. package/dist/es5/metadata.js +44 -79
  203. package/dist/es5/metadata.js.map +1 -1
  204. package/dist/es5/null-value-resolver.js +2 -0
  205. package/dist/es5/null-value-resolver.js.map +1 -0
  206. package/dist/es5/nullable.js +2 -0
  207. package/dist/es5/nullable.js.map +1 -0
  208. package/dist/es5/optional.js +2 -0
  209. package/dist/es5/optional.js.map +1 -0
  210. package/dist/es5/property-extension-metadata-ctor-set-key.js +1 -1
  211. package/dist/es5/property-extension-metadata-ctor-set-key.js.map +1 -1
  212. package/dist/es5/property-extension-metadata.js.map +1 -1
  213. package/dist/es5/property-metadata.js +288 -162
  214. package/dist/es5/property-metadata.js.map +1 -1
  215. package/dist/es5/property-sorters/asc-property-sorter.js +1 -9
  216. package/dist/es5/property-sorters/asc-property-sorter.js.map +1 -1
  217. package/dist/es5/property-sorters/desc-property-sorter.js +1 -9
  218. package/dist/es5/property-sorters/desc-property-sorter.js.map +1 -1
  219. package/dist/es5/property-state.js +2 -0
  220. package/dist/es5/property-state.js.map +1 -0
  221. package/dist/es5/property-states/index.js +3 -0
  222. package/dist/es5/property-states/index.js.map +1 -0
  223. package/dist/es5/property-states/resolved-property-state.js +29 -0
  224. package/dist/es5/property-states/resolved-property-state.js.map +1 -0
  225. package/dist/es5/property-states/unresolved-property-state.js +249 -0
  226. package/dist/es5/property-states/unresolved-property-state.js.map +1 -0
  227. package/dist/es5/property.js +17 -19
  228. package/dist/es5/property.js.map +1 -1
  229. package/dist/es5/reference-handlers/circular-reference-handler.js +2 -3
  230. package/dist/es5/reference-handlers/circular-reference-handler.js.map +1 -1
  231. package/dist/es5/reference-handlers/json-path-reference-handler.js +10 -31
  232. package/dist/es5/reference-handlers/json-path-reference-handler.js.map +1 -1
  233. package/dist/es5/reference-handlers/plain-reference-handler.js +2 -3
  234. package/dist/es5/reference-handlers/plain-reference-handler.js.map +1 -1
  235. package/dist/es5/serializer-context.js +71 -237
  236. package/dist/es5/serializer-context.js.map +1 -1
  237. package/dist/es5/serializers/any-serializer.js +4 -5
  238. package/dist/es5/serializers/any-serializer.js.map +1 -1
  239. package/dist/es5/serializers/array-buffer-serializer.js +8 -13
  240. package/dist/es5/serializers/array-buffer-serializer.js.map +1 -1
  241. package/dist/es5/serializers/array-serializer.js +18 -31
  242. package/dist/es5/serializers/array-serializer.js.map +1 -1
  243. package/dist/es5/serializers/boolean-serializer.js +12 -19
  244. package/dist/es5/serializers/boolean-serializer.js.map +1 -1
  245. package/dist/es5/serializers/data-view-serializer.js +8 -14
  246. package/dist/es5/serializers/data-view-serializer.js.map +1 -1
  247. package/dist/es5/serializers/date-serializer.js +8 -13
  248. package/dist/es5/serializers/date-serializer.js.map +1 -1
  249. package/dist/es5/serializers/float-32-array-serializer.js +8 -14
  250. package/dist/es5/serializers/float-32-array-serializer.js.map +1 -1
  251. package/dist/es5/serializers/float-64-array-serializer.js +8 -14
  252. package/dist/es5/serializers/float-64-array-serializer.js.map +1 -1
  253. package/dist/es5/serializers/int-16-array-serializer.js +8 -14
  254. package/dist/es5/serializers/int-16-array-serializer.js.map +1 -1
  255. package/dist/es5/serializers/int-32-array-serializer.js +8 -14
  256. package/dist/es5/serializers/int-32-array-serializer.js.map +1 -1
  257. package/dist/es5/serializers/int-8-array-serializer.js +8 -14
  258. package/dist/es5/serializers/int-8-array-serializer.js.map +1 -1
  259. package/dist/es5/serializers/map-serializer.js +69 -55
  260. package/dist/es5/serializers/map-serializer.js.map +1 -1
  261. package/dist/es5/serializers/number-serializer.js +10 -17
  262. package/dist/es5/serializers/number-serializer.js.map +1 -1
  263. package/dist/es5/serializers/set-serializer.js +30 -27
  264. package/dist/es5/serializers/set-serializer.js.map +1 -1
  265. package/dist/es5/serializers/string-serializer.js +12 -19
  266. package/dist/es5/serializers/string-serializer.js.map +1 -1
  267. package/dist/es5/serializers/type-serializer.js +65 -101
  268. package/dist/es5/serializers/type-serializer.js.map +1 -1
  269. package/dist/es5/serializers/uint-16-array-serializer.js +8 -14
  270. package/dist/es5/serializers/uint-16-array-serializer.js.map +1 -1
  271. package/dist/es5/serializers/uint-32-array-serializer.js +8 -14
  272. package/dist/es5/serializers/uint-32-array-serializer.js.map +1 -1
  273. package/dist/es5/serializers/uint-8-array-serializer.js +8 -14
  274. package/dist/es5/serializers/uint-8-array-serializer.js.map +1 -1
  275. package/dist/es5/serializers/uint-8-clamped-array-serializer.js +8 -14
  276. package/dist/es5/serializers/uint-8-clamped-array-serializer.js.map +1 -1
  277. package/dist/es5/serializers/unknown-serializer.js +4 -5
  278. package/dist/es5/serializers/unknown-serializer.js.map +1 -1
  279. package/dist/es5/type-entry.js +2 -0
  280. package/dist/es5/type-entry.js.map +1 -0
  281. package/dist/es5/type-extension-metadata-ctor-set-key.js +1 -1
  282. package/dist/es5/type-extension-metadata-ctor-set-key.js.map +1 -1
  283. package/dist/es5/type-extension-metadata.js.map +1 -1
  284. package/dist/es5/type-manager.js +110 -63
  285. package/dist/es5/type-manager.js.map +1 -1
  286. package/dist/es5/type-metadata-symbol.js +1 -1
  287. package/dist/es5/type-metadata-symbol.js.map +1 -1
  288. package/dist/es5/type-metadata.js +597 -273
  289. package/dist/es5/type-metadata.js.map +1 -1
  290. package/dist/es5/type-scope.js +42 -37
  291. package/dist/es5/type-scope.js.map +1 -1
  292. package/dist/es5/type-state.js +2 -0
  293. package/dist/es5/type-state.js.map +1 -0
  294. package/dist/es5/type-states/index.js +3 -0
  295. package/dist/es5/type-states/index.js.map +1 -0
  296. package/dist/es5/type-states/resolved-type-state.js +46 -0
  297. package/dist/es5/type-states/resolved-type-state.js.map +1 -0
  298. package/dist/es5/type-states/unresolved-type-state.js +453 -0
  299. package/dist/es5/type-states/unresolved-type-state.js.map +1 -0
  300. package/dist/es5/type.js.map +1 -1
  301. package/dist/types/constants/default-value-resolver.d.ts +8 -0
  302. package/dist/types/constants/default-value-resolver.d.ts.map +1 -0
  303. package/dist/types/constants/empty-array.d.ts +7 -0
  304. package/dist/types/constants/empty-array.d.ts.map +1 -0
  305. package/dist/types/constants/empty-map.d.ts +7 -0
  306. package/dist/types/constants/empty-map.d.ts.map +1 -0
  307. package/dist/types/constants/index.d.ts +5 -0
  308. package/dist/types/constants/index.d.ts.map +1 -0
  309. package/dist/types/constants/null-value-resolver.d.ts +8 -0
  310. package/dist/types/constants/null-value-resolver.d.ts.map +1 -0
  311. package/dist/types/custom-key.d.ts +4 -3
  312. package/dist/types/custom-key.d.ts.map +1 -1
  313. package/dist/types/custom-option.d.ts +2 -2
  314. package/dist/types/custom-value.d.ts +2 -1
  315. package/dist/types/custom-value.d.ts.map +1 -1
  316. package/dist/types/factories/type-factory.d.ts +8 -5
  317. package/dist/types/factories/type-factory.d.ts.map +1 -1
  318. package/dist/types/factory.d.ts +7 -4
  319. package/dist/types/factory.d.ts.map +1 -1
  320. package/dist/types/functions/get-own-reflect-metadata.d.ts.map +1 -1
  321. package/dist/types/functions/get-reflect-metadata.d.ts.map +1 -1
  322. package/dist/types/functions/get-words.d.ts +3 -3
  323. package/dist/types/functions/get-words.d.ts.map +1 -1
  324. package/dist/types/functions/index.d.ts +0 -12
  325. package/dist/types/functions/index.d.ts.map +1 -1
  326. package/dist/types/functions/json-parse.d.ts +1 -1
  327. package/dist/types/functions/json-parse.d.ts.map +1 -1
  328. package/dist/types/functions/json-stringify.d.ts.map +1 -1
  329. package/dist/types/functions/name-of.d.ts.map +1 -1
  330. package/dist/types/generic-argument.d.ts +2 -2
  331. package/dist/types/generic-argument.d.ts.map +1 -1
  332. package/dist/types/generic-metadata.d.ts +2 -2
  333. package/dist/types/generic-metadata.d.ts.map +1 -1
  334. package/dist/types/index.d.ts +13 -12
  335. package/dist/types/index.d.ts.map +1 -1
  336. package/dist/types/inject-metadata.d.ts +52 -45
  337. package/dist/types/inject-metadata.d.ts.map +1 -1
  338. package/dist/types/inject-options.d.ts +8 -8
  339. package/dist/types/inject-options.d.ts.map +1 -1
  340. package/dist/types/inject-sorter.d.ts +3 -3
  341. package/dist/types/inject-sorter.d.ts.map +1 -1
  342. package/dist/types/inject-sorters/asc-inject-sorter.d.ts +3 -3
  343. package/dist/types/inject-sorters/asc-inject-sorter.d.ts.map +1 -1
  344. package/dist/types/inject-sorters/desc-inject-sorter.d.ts +3 -3
  345. package/dist/types/inject-sorters/desc-inject-sorter.d.ts.map +1 -1
  346. package/dist/types/inject-state.d.ts +36 -0
  347. package/dist/types/inject-state.d.ts.map +1 -0
  348. package/dist/types/inject-states/index.d.ts +3 -0
  349. package/dist/types/inject-states/index.d.ts.map +1 -0
  350. package/dist/types/inject-states/resolved-inject-state.d.ts +46 -0
  351. package/dist/types/inject-states/resolved-inject-state.d.ts.map +1 -0
  352. package/dist/types/inject-states/unresolved-inject-state.d.ts +49 -0
  353. package/dist/types/inject-states/unresolved-inject-state.d.ts.map +1 -0
  354. package/dist/types/inject.d.ts +3 -3
  355. package/dist/types/inject.d.ts.map +1 -1
  356. package/dist/types/injector.d.ts +4 -3
  357. package/dist/types/injector.d.ts.map +1 -1
  358. package/dist/types/injectors/singleton-injector.d.ts +5 -5
  359. package/dist/types/injectors/singleton-injector.d.ts.map +1 -1
  360. package/dist/types/logger-level.d.ts +31 -0
  361. package/dist/types/logger-level.d.ts.map +1 -0
  362. package/dist/types/logger.d.ts +125 -0
  363. package/dist/types/logger.d.ts.map +1 -0
  364. package/dist/types/metadata.d.ts +29 -39
  365. package/dist/types/metadata.d.ts.map +1 -1
  366. package/dist/types/null-value-resolver.d.ts +9 -0
  367. package/dist/types/null-value-resolver.d.ts.map +1 -0
  368. package/dist/types/nullable.d.ts +7 -0
  369. package/dist/types/nullable.d.ts.map +1 -0
  370. package/dist/types/optional.d.ts +7 -0
  371. package/dist/types/optional.d.ts.map +1 -0
  372. package/dist/types/property-extension-metadata-ctor-set-key.d.ts +1 -1
  373. package/dist/types/property-extension-metadata-ctor-set-key.d.ts.map +1 -1
  374. package/dist/types/property-extension-metadata-ctor.d.ts +2 -2
  375. package/dist/types/property-extension-metadata-ctor.d.ts.map +1 -1
  376. package/dist/types/property-extension-metadata.d.ts +7 -7
  377. package/dist/types/property-extension-metadata.d.ts.map +1 -1
  378. package/dist/types/property-metadata.d.ts +134 -119
  379. package/dist/types/property-metadata.d.ts.map +1 -1
  380. package/dist/types/property-options.d.ts +11 -10
  381. package/dist/types/property-options.d.ts.map +1 -1
  382. package/dist/types/property-sorter.d.ts +3 -3
  383. package/dist/types/property-sorter.d.ts.map +1 -1
  384. package/dist/types/property-sorters/asc-property-sorter.d.ts +3 -3
  385. package/dist/types/property-sorters/asc-property-sorter.d.ts.map +1 -1
  386. package/dist/types/property-sorters/desc-property-sorter.d.ts +3 -3
  387. package/dist/types/property-sorters/desc-property-sorter.d.ts.map +1 -1
  388. package/dist/types/property-state.d.ts +149 -0
  389. package/dist/types/property-state.d.ts.map +1 -0
  390. package/dist/types/property-states/index.d.ts +3 -0
  391. package/dist/types/property-states/index.d.ts.map +1 -0
  392. package/dist/types/property-states/resolved-property-state.d.ts +176 -0
  393. package/dist/types/property-states/resolved-property-state.d.ts.map +1 -0
  394. package/dist/types/property-states/unresolved-property-state.d.ts +162 -0
  395. package/dist/types/property-states/unresolved-property-state.d.ts.map +1 -0
  396. package/dist/types/property.d.ts +4 -4
  397. package/dist/types/property.d.ts.map +1 -1
  398. package/dist/types/reference-handlers/circular-reference-handler.d.ts.map +1 -1
  399. package/dist/types/reference-handlers/json-path-reference-handler.d.ts.map +1 -1
  400. package/dist/types/reference-handlers/plain-reference-handler.d.ts.map +1 -1
  401. package/dist/types/reference-value-setter.d.ts +1 -1
  402. package/dist/types/reference-value-setter.d.ts.map +1 -1
  403. package/dist/types/serializer-context.d.ts +70 -164
  404. package/dist/types/serializer-context.d.ts.map +1 -1
  405. package/dist/types/serializer.d.ts +8 -8
  406. package/dist/types/serializer.d.ts.map +1 -1
  407. package/dist/types/serializers/any-serializer.d.ts.map +1 -1
  408. package/dist/types/serializers/array-buffer-serializer.d.ts.map +1 -1
  409. package/dist/types/serializers/array-serializer.d.ts.map +1 -1
  410. package/dist/types/serializers/boolean-serializer.d.ts +1 -1
  411. package/dist/types/serializers/boolean-serializer.d.ts.map +1 -1
  412. package/dist/types/serializers/data-view-serializer.d.ts.map +1 -1
  413. package/dist/types/serializers/date-serializer.d.ts.map +1 -1
  414. package/dist/types/serializers/float-32-array-serializer.d.ts.map +1 -1
  415. package/dist/types/serializers/float-64-array-serializer.d.ts.map +1 -1
  416. package/dist/types/serializers/int-16-array-serializer.d.ts.map +1 -1
  417. package/dist/types/serializers/int-32-array-serializer.d.ts.map +1 -1
  418. package/dist/types/serializers/int-8-array-serializer.d.ts.map +1 -1
  419. package/dist/types/serializers/map-serializer.d.ts.map +1 -1
  420. package/dist/types/serializers/number-serializer.d.ts +1 -1
  421. package/dist/types/serializers/number-serializer.d.ts.map +1 -1
  422. package/dist/types/serializers/set-serializer.d.ts.map +1 -1
  423. package/dist/types/serializers/string-serializer.d.ts +1 -1
  424. package/dist/types/serializers/string-serializer.d.ts.map +1 -1
  425. package/dist/types/serializers/type-serializer.d.ts.map +1 -1
  426. package/dist/types/serializers/uint-16-array-serializer.d.ts.map +1 -1
  427. package/dist/types/serializers/uint-32-array-serializer.d.ts.map +1 -1
  428. package/dist/types/serializers/uint-8-array-serializer.d.ts.map +1 -1
  429. package/dist/types/serializers/uint-8-clamped-array-serializer.d.ts.map +1 -1
  430. package/dist/types/serializers/unknown-serializer.d.ts.map +1 -1
  431. package/dist/types/type-abstraction.d.ts +2 -2
  432. package/dist/types/type-abstraction.d.ts.map +1 -1
  433. package/dist/types/type-argument.d.ts +3 -3
  434. package/dist/types/type-argument.d.ts.map +1 -1
  435. package/dist/types/type-configuration.d.ts +4 -4
  436. package/dist/types/type-configuration.d.ts.map +1 -1
  437. package/dist/types/type-ctor.d.ts +2 -2
  438. package/dist/types/type-ctor.d.ts.map +1 -1
  439. package/dist/types/type-entry.d.ts +29 -0
  440. package/dist/types/type-entry.d.ts.map +1 -0
  441. package/dist/types/type-extension-metadata-ctor-set-key.d.ts +1 -1
  442. package/dist/types/type-extension-metadata-ctor-set-key.d.ts.map +1 -1
  443. package/dist/types/type-extension-metadata-ctor.d.ts +2 -2
  444. package/dist/types/type-extension-metadata-ctor.d.ts.map +1 -1
  445. package/dist/types/type-extension-metadata.d.ts +6 -6
  446. package/dist/types/type-extension-metadata.d.ts.map +1 -1
  447. package/dist/types/type-fn.d.ts +2 -2
  448. package/dist/types/type-fn.d.ts.map +1 -1
  449. package/dist/types/type-like.d.ts +2 -2
  450. package/dist/types/type-like.d.ts.map +1 -1
  451. package/dist/types/type-manager-options.d.ts.map +1 -1
  452. package/dist/types/type-manager.d.ts +116 -123
  453. package/dist/types/type-manager.d.ts.map +1 -1
  454. package/dist/types/type-metadata-symbol.d.ts +1 -1
  455. package/dist/types/type-metadata-symbol.d.ts.map +1 -1
  456. package/dist/types/type-metadata.d.ts +253 -152
  457. package/dist/types/type-metadata.d.ts.map +1 -1
  458. package/dist/types/type-options-base.d.ts +13 -12
  459. package/dist/types/type-options-base.d.ts.map +1 -1
  460. package/dist/types/type-options.d.ts +10 -10
  461. package/dist/types/type-options.d.ts.map +1 -1
  462. package/dist/types/type-resolver.d.ts +2 -2
  463. package/dist/types/type-resolver.d.ts.map +1 -1
  464. package/dist/types/type-scope.d.ts.map +1 -1
  465. package/dist/types/type-state.d.ts +262 -0
  466. package/dist/types/type-state.d.ts.map +1 -0
  467. package/dist/types/type-states/index.d.ts +3 -0
  468. package/dist/types/type-states/index.d.ts.map +1 -0
  469. package/dist/types/type-states/resolved-type-state.d.ts +306 -0
  470. package/dist/types/type-states/resolved-type-state.d.ts.map +1 -0
  471. package/dist/types/type-states/unresolved-type-state.d.ts +275 -0
  472. package/dist/types/type-states/unresolved-type-state.d.ts.map +1 -0
  473. package/dist/types/type.d.ts +2 -2
  474. package/dist/types/type.d.ts.map +1 -1
  475. package/dist/umd/index.js +1 -1
  476. package/dist/umd/index.js.map +1 -1
  477. package/package.json +1 -7
  478. package/dist/es2015/custom-context.js +0 -59
  479. package/dist/es2015/custom-context.js.map +0 -1
  480. package/dist/es2015/functions/is-arrow-function.js +0 -5
  481. package/dist/es2015/functions/is-arrow-function.js.map +0 -1
  482. package/dist/es2015/functions/is-ctor-function.js +0 -5
  483. package/dist/es2015/functions/is-ctor-function.js.map +0 -1
  484. package/dist/es2015/functions/is-data-view.js +0 -4
  485. package/dist/es2015/functions/is-data-view.js.map +0 -1
  486. package/dist/es2015/functions/is-float-32-array.js +0 -4
  487. package/dist/es2015/functions/is-float-32-array.js.map +0 -1
  488. package/dist/es2015/functions/is-float-64-array.js +0 -4
  489. package/dist/es2015/functions/is-float-64-array.js.map +0 -1
  490. package/dist/es2015/functions/is-int-16-array.js +0 -4
  491. package/dist/es2015/functions/is-int-16-array.js.map +0 -1
  492. package/dist/es2015/functions/is-int-32-array.js +0 -4
  493. package/dist/es2015/functions/is-int-32-array.js.map +0 -1
  494. package/dist/es2015/functions/is-int-8-array.js +0 -4
  495. package/dist/es2015/functions/is-int-8-array.js.map +0 -1
  496. package/dist/es2015/functions/is-uint-16-array.js +0 -4
  497. package/dist/es2015/functions/is-uint-16-array.js.map +0 -1
  498. package/dist/es2015/functions/is-uint-32-array.js +0 -4
  499. package/dist/es2015/functions/is-uint-32-array.js.map +0 -1
  500. package/dist/es2015/functions/is-uint-8-array.js +0 -4
  501. package/dist/es2015/functions/is-uint-8-array.js.map +0 -1
  502. package/dist/es2015/functions/is-uint-8-clamped-array.js +0 -4
  503. package/dist/es2015/functions/is-uint-8-clamped-array.js.map +0 -1
  504. package/dist/es2015/generic-metadata-resolver.js +0 -2
  505. package/dist/es2015/generic-metadata-resolver.js.map +0 -1
  506. package/dist/es2015/generic-structure.js +0 -2
  507. package/dist/es2015/generic-structure.js.map +0 -1
  508. package/dist/es2015/inject-internals.js +0 -2
  509. package/dist/es2015/inject-internals.js.map +0 -1
  510. package/dist/es2015/log-level.js +0 -8
  511. package/dist/es2015/log-level.js.map +0 -1
  512. package/dist/es2015/log.js +0 -50
  513. package/dist/es2015/log.js.map +0 -1
  514. package/dist/es2015/property-internals.js +0 -2
  515. package/dist/es2015/property-internals.js.map +0 -1
  516. package/dist/es2015/serializer-context-options.js +0 -2
  517. package/dist/es2015/serializer-context-options.js.map +0 -1
  518. package/dist/es2015/type-context-entry.js +0 -9
  519. package/dist/es2015/type-context-entry.js.map +0 -1
  520. package/dist/es2015/type-context.js +0 -31
  521. package/dist/es2015/type-context.js.map +0 -1
  522. package/dist/es2015/type-internals.js +0 -2
  523. package/dist/es2015/type-internals.js.map +0 -1
  524. package/dist/es2015/type-metadata-resolver.js +0 -2
  525. package/dist/es2015/type-metadata-resolver.js.map +0 -1
  526. package/dist/es5/custom-context.js +0 -95
  527. package/dist/es5/custom-context.js.map +0 -1
  528. package/dist/es5/functions/is-arrow-function.js +0 -5
  529. package/dist/es5/functions/is-arrow-function.js.map +0 -1
  530. package/dist/es5/functions/is-ctor-function.js +0 -5
  531. package/dist/es5/functions/is-ctor-function.js.map +0 -1
  532. package/dist/es5/functions/is-data-view.js +0 -4
  533. package/dist/es5/functions/is-data-view.js.map +0 -1
  534. package/dist/es5/functions/is-float-32-array.js +0 -4
  535. package/dist/es5/functions/is-float-32-array.js.map +0 -1
  536. package/dist/es5/functions/is-float-64-array.js +0 -4
  537. package/dist/es5/functions/is-float-64-array.js.map +0 -1
  538. package/dist/es5/functions/is-int-16-array.js +0 -4
  539. package/dist/es5/functions/is-int-16-array.js.map +0 -1
  540. package/dist/es5/functions/is-int-32-array.js +0 -4
  541. package/dist/es5/functions/is-int-32-array.js.map +0 -1
  542. package/dist/es5/functions/is-int-8-array.js +0 -4
  543. package/dist/es5/functions/is-int-8-array.js.map +0 -1
  544. package/dist/es5/functions/is-uint-16-array.js +0 -4
  545. package/dist/es5/functions/is-uint-16-array.js.map +0 -1
  546. package/dist/es5/functions/is-uint-32-array.js +0 -4
  547. package/dist/es5/functions/is-uint-32-array.js.map +0 -1
  548. package/dist/es5/functions/is-uint-8-array.js +0 -4
  549. package/dist/es5/functions/is-uint-8-array.js.map +0 -1
  550. package/dist/es5/functions/is-uint-8-clamped-array.js +0 -4
  551. package/dist/es5/functions/is-uint-8-clamped-array.js.map +0 -1
  552. package/dist/es5/generic-metadata-resolver.js +0 -2
  553. package/dist/es5/generic-metadata-resolver.js.map +0 -1
  554. package/dist/es5/generic-structure.js +0 -2
  555. package/dist/es5/generic-structure.js.map +0 -1
  556. package/dist/es5/inject-internals.js +0 -2
  557. package/dist/es5/inject-internals.js.map +0 -1
  558. package/dist/es5/log-level.js +0 -8
  559. package/dist/es5/log-level.js.map +0 -1
  560. package/dist/es5/log.js +0 -65
  561. package/dist/es5/log.js.map +0 -1
  562. package/dist/es5/property-internals.js +0 -2
  563. package/dist/es5/property-internals.js.map +0 -1
  564. package/dist/es5/serializer-context-options.js +0 -2
  565. package/dist/es5/serializer-context-options.js.map +0 -1
  566. package/dist/es5/type-context-entry.js +0 -11
  567. package/dist/es5/type-context-entry.js.map +0 -1
  568. package/dist/es5/type-context.js +0 -33
  569. package/dist/es5/type-context.js.map +0 -1
  570. package/dist/es5/type-internals.js +0 -2
  571. package/dist/es5/type-internals.js.map +0 -1
  572. package/dist/es5/type-metadata-resolver.js +0 -2
  573. package/dist/es5/type-metadata-resolver.js.map +0 -1
  574. package/dist/types/custom-context.d.ts +0 -89
  575. package/dist/types/custom-context.d.ts.map +0 -1
  576. package/dist/types/functions/is-arrow-function.d.ts +0 -9
  577. package/dist/types/functions/is-arrow-function.d.ts.map +0 -1
  578. package/dist/types/functions/is-ctor-function.d.ts +0 -9
  579. package/dist/types/functions/is-ctor-function.d.ts.map +0 -1
  580. package/dist/types/functions/is-data-view.d.ts +0 -9
  581. package/dist/types/functions/is-data-view.d.ts.map +0 -1
  582. package/dist/types/functions/is-float-32-array.d.ts +0 -9
  583. package/dist/types/functions/is-float-32-array.d.ts.map +0 -1
  584. package/dist/types/functions/is-float-64-array.d.ts +0 -9
  585. package/dist/types/functions/is-float-64-array.d.ts.map +0 -1
  586. package/dist/types/functions/is-int-16-array.d.ts +0 -9
  587. package/dist/types/functions/is-int-16-array.d.ts.map +0 -1
  588. package/dist/types/functions/is-int-32-array.d.ts +0 -9
  589. package/dist/types/functions/is-int-32-array.d.ts.map +0 -1
  590. package/dist/types/functions/is-int-8-array.d.ts +0 -9
  591. package/dist/types/functions/is-int-8-array.d.ts.map +0 -1
  592. package/dist/types/functions/is-uint-16-array.d.ts +0 -9
  593. package/dist/types/functions/is-uint-16-array.d.ts.map +0 -1
  594. package/dist/types/functions/is-uint-32-array.d.ts +0 -9
  595. package/dist/types/functions/is-uint-32-array.d.ts.map +0 -1
  596. package/dist/types/functions/is-uint-8-array.d.ts +0 -9
  597. package/dist/types/functions/is-uint-8-array.d.ts.map +0 -1
  598. package/dist/types/functions/is-uint-8-clamped-array.d.ts +0 -9
  599. package/dist/types/functions/is-uint-8-clamped-array.d.ts.map +0 -1
  600. package/dist/types/generic-metadata-resolver.d.ts +0 -8
  601. package/dist/types/generic-metadata-resolver.d.ts.map +0 -1
  602. package/dist/types/generic-structure.d.ts +0 -8
  603. package/dist/types/generic-structure.d.ts.map +0 -1
  604. package/dist/types/inject-internals.d.ts +0 -15
  605. package/dist/types/inject-internals.d.ts.map +0 -1
  606. package/dist/types/log-level.d.ts +0 -12
  607. package/dist/types/log-level.d.ts.map +0 -1
  608. package/dist/types/log.d.ts +0 -96
  609. package/dist/types/log.d.ts.map +0 -1
  610. package/dist/types/property-internals.d.ts +0 -36
  611. package/dist/types/property-internals.d.ts.map +0 -1
  612. package/dist/types/serializer-context-options.d.ts +0 -51
  613. package/dist/types/serializer-context-options.d.ts.map +0 -1
  614. package/dist/types/type-context-entry.d.ts +0 -37
  615. package/dist/types/type-context-entry.d.ts.map +0 -1
  616. package/dist/types/type-context.d.ts +0 -71
  617. package/dist/types/type-context.d.ts.map +0 -1
  618. package/dist/types/type-internals.d.ts +0 -15
  619. package/dist/types/type-internals.d.ts.map +0 -1
  620. package/dist/types/type-metadata-resolver.d.ts +0 -9
  621. package/dist/types/type-metadata-resolver.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [8.0.0] - 2025-01-11
9
+
10
+ ### Added
11
+
12
+ - Support for lazy parent type and interface inheritance.
13
+ - Performance on large object graphs is up to 3 times faster.
14
+
15
+ ### Changed
16
+
17
+ - The metadata is now read-only and configuration must be done using the provided API.
18
+ - Declaring and retrieving user custom options has been simplified.
19
+ - Property `customOptions` was replaced with `customValueMap`.
20
+ - Property `parentTypeFns` was replaced with `parentTypeArguments`.
21
+ - Custom context is now part of the metadata.
22
+
23
+ ### Migrating from previous version
24
+
25
+ - Rename `customOptions` to `customValueMap` and wrap your configuration array into map.
26
+ - Rename `parentTypeFns` to `parentTypeArguments` if you have this option declared on your type.
27
+
8
28
  ## [7.2.1] - 2024-02-18
9
29
 
10
30
  ### Fixed
package/README.md CHANGED
@@ -1,173 +1,114 @@
1
1
  # TypeManager.TS
2
2
 
3
- ![GitHub](https://img.shields.io/github/license/dipscope/TypeManager.TS) ![NPM](https://img.shields.io/npm/v/@dipscope/type-manager) ![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)
3
+ ![GitHub](https://img.shields.io/github/license/dipscope/TypeManager.TS) ![NPM]( https://img.shields.io/npm/v/@dipscope/type-manager) ![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)
4
4
 
5
- Type manager is a superb parsing package for `TypeScript` which will help you to transform JSON strings or plain objects directly into class instances. No more need for unsafe `JSON.parse` and `JSON.stringify` functions. Forget about manual mapping and limitations. We support data transformations, circular references, naming conventions, generic and polymorphic types. Parsing never was so fun and easy.
5
+ ## What is TypeManager?
6
6
 
7
- Configuration can be done using [decorators](https://www.typescriptlang.org/docs/handbook/decorators.html) or declarative configuration for your or 3rd party classes.
7
+ TypeManager is a stable, highly-tested, highly-performant parsing package for `TypeScript` which handles everything you need to easily integrate classes into your workflow.
8
8
 
9
- We recommend to use our [official website](https://dipscope.com/type-manager/what-issues-it-solves) to navigate through available features. You can also use the latest documentation described below.
9
+ ## What does it do?
10
10
 
11
- ## Give a star :star:
11
+ Most frontend developers are writing custom helpers and functions (in the form of React Hooks and Vue Composables) to solve a problem that, in the backend world, was solved elegantly decades ago by the use of Classes.
12
12
 
13
- If you like or are using this project please give it a star. Thanks!
13
+ Imagine handling a `User` object that contains a first name, last name, and nickname. You need to intelligently display the `best` name for that user in multiple places.
14
14
 
15
- ## Table of contents
15
+ ```typescript
16
+ // Hi! I'm some user data from the server!
17
+ const user = fetchUserData();
18
+ ```
16
19
 
17
- * [What issues it solves?](#what-issues-it-solves)
18
- * [Installation](#installation)
19
- * [How it works?](#how-it-works)
20
- * [Defining decorators](#defining-decorators)
21
- * [Type decorator](#type-decorator)
22
- * [Property decorator](#property-decorator)
23
- * [Inject decorator](#inject-decorator)
24
- * [Defining decorator options](#defining-decorator-options)
25
- * [Alias option](#alias-option)
26
- * [Custom data option](#custom-data-option)
27
- * [Default value option](#default-value-option)
28
- * [Deserializable option](#deserializable-option)
29
- * [Discriminant option](#discriminant-option)
30
- * [Discriminator option](#discriminator-option)
31
- * [Factory option](#factory-option)
32
- * [Injectable option](#injectable-option)
33
- * [Injector option](#injector-option)
34
- * [Naming convention option](#naming-convention-option)
35
- * [Preserve discriminator option](#preserve-discriminator-option)
36
- * [Preserve null option](#preserve-null-option)
37
- * [Reference handler option](#reference-handler-option)
38
- * [Serializable option](#serializable-option)
39
- * [Serializer option](#serializer-option)
40
- * [Use default value option](#use-default-value-option)
41
- * [Use implicit conversion option](#use-implicit-conversion-option)
42
- * [Parent type functions option](#parent-type-functions-option)
43
- * [Defining configuration manually](#defining-configuration-manually)
44
- * [Configuring global options](#configuring-global-options)
45
- * [Configuring options per type](#configuring-options-per-type)
46
- * [Configuring usage of polymorphic types](#configuring-usage-of-polymorphic-types)
47
- * [Configuring naming convention](#configuring-naming-convention)
48
- * [Configuring reference handler](#configuring-reference-handler)
49
- * [Advanced usage](#advanced-usage)
50
- * [Defining custom data](#defining-custom-data)
51
- * [Defining custom serializer](#defining-custom-serializer)
52
- * [Defining custom injector](#defining-custom-injector)
53
- * [Defining custom factory](#defining-custom-factory)
54
- * [Defining custom naming convention](#defining-custom-naming-convention)
55
- * [Use cases](#use-cases)
56
- * [Built in serializers](#built-in-serializers)
57
- * [Circular object references](#circular-object-references)
58
- * [Dependency injection and immutable types](#dependency-injection-and-immutable-types)
59
- * [Different case usage in class and JSON](#different-case-usage-in-class-and-json)
60
- * [Enum types](#enum-types)
61
- * [Generic types](#generic-types)
62
- * [Integration with Angular](#integration-with-angular)
63
- * [Polymorphic types](#polymorphic-types)
64
- * [Versioning](#versioning)
65
- * [Contributing](#contributing)
66
- * [Authors](#authors)
67
- * [Notes](#notes)
68
- * [License](#license)
20
+ In the world of TypeScript, it has become common to see something like this, _repeated in every single file_ that needs this functionality:
69
21
 
70
- ## What issues it solves?
22
+ ```typescript
23
+ import { useFormattingFunctions } from '@/hooks/useFormattingFunctions';
71
24
 
72
- In `JavaScript` there are two types of objects:
25
+ // Get name formatting function.
26
+ const { nameFormatter } = useFormattingFunctions();
73
27
 
74
- * Plain objects which are created using `{}` notation;
75
- * Constructor based objects which are created using `new Class()` notation.
28
+ // A user in the form of JS object.
29
+ const preferredName = nameFormatter(user); // ...finally got what I needed!
30
+ ```
76
31
 
77
- Sometimes we want to transform plain objects to the classes we have. Let's assume we are loading a users JSON data from our backend API or the other datasource:
32
+ But in the backend world, this sort of problem was solved decades ago:
78
33
 
79
- ```json
80
- [
81
- {
82
- "id": 1,
83
- "name": "Dmitry",
84
- "deletedAt": "2021-02-22T20:15:00.000Z"
85
- },
86
- {
87
- "id": 2,
88
- "name": "Alex",
89
- "deletedAt": null
90
- },
91
- {
92
- "id": 3,
93
- "name": "Anna",
94
- "deletedAt": null
95
- }
96
- ]
34
+ ```typescript
35
+ // A user in the form of `new MyUserClass()`.
36
+ const preferredName = user.getPreferredName(); // Whew! That was quick!
97
37
  ```
98
38
 
99
- We have a `User` class:
39
+ The problem is that, when you're used to working with plain-old JavaScript objects, you're used to having data (only!) and no business logic. But ask yourself: which one is simpler? Which one is easier to read?
100
40
 
101
- ```typescript
102
- export class User
103
- {
104
- public id: number;
105
- public name: string;
106
- public deletedAt: Date;
41
+ ## TypeManager to the rescue
107
42
 
108
- public constructor(id: number, name: string)
109
- {
110
- this.id = id;
111
- this.name = name;
43
+ TypeManager will help you to transform JSON strings or plain objects directly into class instances. No more need for unsafe `JSON.parse` and `JSON.stringify` functions. Forget about manual mapping and limitations. We support data transformations, circular references, naming conventions, generic and polymorphic types. Parsing was never so fun and easy.
112
44
 
113
- return;
114
- }
45
+ Configuration can be done using [decorators](https://www.typescriptlang.org/docs/handbook/decorators.html) or declarative configuration for your or 3rd party classes.
115
46
 
116
- public isDeleted(): boolean
117
- {
118
- return this.deletedAt !== null;
119
- }
47
+ ## What do I do?
48
+
49
+ It almost couldn't be easier. Instead of making a file like this:
50
+
51
+ ```typescript
52
+ // The old way...
53
+ export interface User
54
+ {
55
+ name: string;
56
+ email: string;
120
57
  }
121
58
  ```
122
59
 
123
- Somewhere in code we are checking if user is deleted before performing some action.
60
+ Just add a few extra keywords:
124
61
 
125
62
  ```typescript
126
- const users: User[] = JSON.parse(usersJson);
63
+ // The new way!
64
+ import { Type, Property } from '@dipscope/type-manager';
127
65
 
128
- for (const user of users)
66
+ @Type()
67
+ export class User
129
68
  {
130
- if (user.isDeleted())
131
- {
132
- // Do some action...
133
- }
69
+ @Property(String) public name: string;
70
+ @Property(String) public email: string;
134
71
  }
135
72
  ```
136
73
 
137
- Do you see the problem in this piece of code?
74
+ Then, in the place where you used to get your data:
138
75
 
139
- `JSON.parse` function returns plain objects and we actually lied to compiler when said that it is a `User` class array. In this code we can successfully use `user.id` or `user.name`. However we cannot use `user.isDeleted()` because user is not an instance of a `User` class.
76
+ ```typescript
77
+ // The old way...
78
+ const users = await fetchUsers();
79
+ ```
140
80
 
141
- So what to do? How to get `User` array from our JSON?
81
+ ...You _parse_ them instead, using TypeManager's `deserialize()` method:
142
82
 
143
- Solution is to create new instances of `User` class from plain objects returned by `JSON.parse` function. But things may go wrong once you have a more complex object hierarchy. Besides `deletedAt` property is represented as `String` in JSON but `User` class declares it as a `Date` so we also have to perform appropriate conversion when assigning this property.
83
+ ```typescript
84
+ // The new way!
85
+ import { TypeManager } from '@dipscope/type-manager';
86
+
87
+ const users = TypeManager.deserialize(User, await fetchUsers());
88
+ ```
144
89
 
145
- There exists much more simple way. Let's use our `TypeManager` for getting instances of `User` class from JSON:
90
+ And if you need to send them back to the server, you can just go the other direction using `serialize()`:
146
91
 
147
92
  ```typescript
93
+ // The new way!
148
94
  import { TypeManager } from '@dipscope/type-manager';
149
95
 
150
- const users: User[] = TypeManager.parse(User, usersJson);
151
-
152
- for (const user of users)
153
- {
154
- if (user.isDeleted())
155
- {
156
- // Do some action...
157
- }
158
- }
96
+ const rawUserData = TypeManager.serialize(User, user);
97
+ const response = http.put('/users/123', rawUserData)
159
98
  ```
160
99
 
161
- Now we can use all power provided by `JavaScript` class instances.
100
+ ## Wow! It's that easy?
101
+
102
+ You're darn right it's that easy! Now we can use all the power provided by `JavaScript` class instances without worriyng about the annoying stuff.
162
103
 
163
104
  Furthermore `TypeManager.TS` provides you:
164
105
 
165
- * Reflection abilities at runtime;
166
- * Support for generic types;
167
- * Handling of cyclic object references and different ways of serialization when they appear;
168
- * Ability to configure serialization of 3rd party classes;
169
- * Support for polymorphic types;
170
- * Great alternative for similar packages like [class-transformer](https://github.com/typestack/class-transformer), [TypedJSON](https://github.com/JohnWeisz/TypedJSON) and [jackson-js](https://github.com/pichillilorenzo/jackson-js);
106
+ * Reflection abilities at runtime.
107
+ * Support for generic types.
108
+ * Support for inheritance and polymorphic types.
109
+ * Handling of circular object references and different ways of serialization.
110
+ * The ability to configure custom serialization of -party classes.
111
+ * A great alternative to similar packages like [class-transformer](https://github.com/typestack/class-transformer), [TypedJSON](https://github.com/JohnWeisz/TypedJSON) and [jackson-js](https://github.com/pichillilorenzo/jackson-js).
171
112
 
172
113
  Want to know more? Let's dive into the details.
173
114
 
@@ -179,22 +120,72 @@ Want to know more? Let's dive into the details.
179
120
  npm i @dipscope/type-manager
180
121
  ```
181
122
 
182
- TypeScript needs to run with the `experimentalDecorators` and `emitDecoratorMetadata` options enabled when using decorator annotations. So make sure you have properly configured your `tsconfig.json` file.
123
+ TypeScript needs to run with the `experimentalDecorators` and `emitDecoratorMetadata` options enabled when using decorator annotations. So make sure you have them properly enabled in your `tsconfig.json` file.
183
124
 
184
- _If you want additional type-safety and reduced syntax you may wish to install [reflect-metadata](https://github.com/rbuckton/reflect-metadata). This step is on your choice and fully optional. When installed it must be available globally to work. This can usually be done with `import 'reflect-metadata';` in your main index file._
125
+ _If you want additional type-safety and reduced syntax you may wish to install [reflect-metadata](https://github.com/rbuckton/reflect-metadata). This step is your choice and fully optional. All you have to do is make sure it's available globally to work -- this can usually be done with `import 'reflect-metadata';` in your main index file._
185
126
 
186
- Starting from TypeScript 5 we also support modern decorator syntax. However because parameter decorations with the modern syntax at the time of this writing are not supported - you will not be able to use `Inject` decorator provided by the library as well as `reflect-metadata` package when decide to use modern syntax. We are going to add support as soon as it will be provided to us by the TypeScript. If you need `Inject` decorator and enabling legacy decorators support is not an option - you can use declarative configuration.
127
+ Starting from TypeScript 5 we will also support the modern decorator syntax. However, parameter decorations with this modern syntax are not supported - you will not be able to use the `Inject` decorator provided by the library as well as `reflect-metadata` package if you're using modern syntax. We will add support as soon as it's provided by TypeScript, however. In the meantime, if you need the `Inject` decorator and enabling legacy decorators support is not an option - you can simply use the declarative configuration style.
187
128
 
188
- ## How it works?
129
+ ## Give us a star :star:
189
130
 
190
- It defines configuration for each object which you are going to serialize or deserialize and uses this configuration to process data of your choice. There are two possible ways to define a configuration:
131
+ If you like or are using this project, please give it a star. Thanks!
191
132
 
192
- * Using decorator annotations;
193
- * Using declarative style;
133
+ # Detailed Documentation
194
134
 
195
- The first one is the easiest and can be used for any class you control. If you want to configure serialization of 3rd party classes, global options or you don't like decorators it is better to go with the second. There are no restrictions to use one or another. You can combine two ways of configuration depending on which one fits better.
135
+ * [Understanding TypeManager](#understanding-typemanager)
136
+ * [Defining decorators](#defining-decorators)
137
+ * [Type decorator](#type-decorator)
138
+ * [Property decorator](#property-decorator)
139
+ * [Inject decorator](#inject-decorator)
140
+ * [Defining decorator options](#defining-decorator-options)
141
+ * [Alias option](#alias-option)
142
+ * [Custom data option](#custom-data-option)
143
+ * [Default value option](#default-value-option)
144
+ * [Deserializable option](#deserializable-option)
145
+ * [Discriminant option](#discriminant-option)
146
+ * [Discriminator option](#discriminator-option)
147
+ * [Factory option](#factory-option)
148
+ * [Injectable option](#injectable-option)
149
+ * [Injector option](#injector-option)
150
+ * [Naming convention option](#naming-convention-option)
151
+ * [Preserve discriminator option](#preserve-discriminator-option)
152
+ * [Preserve null option](#preserve-null-option)
153
+ * [Reference handler option](#reference-handler-option)
154
+ * [Serializable option](#serializable-option)
155
+ * [Serializer option](#serializer-option)
156
+ * [Use default value option](#use-default-value-option)
157
+ * [Use implicit conversion option](#use-implicit-conversion-option)
158
+ * [Parent type arguments option](#parent-type-arguments-option)
159
+ * [Defining configuration manually](#defining-configuration-manually)
160
+ * [Configuring global options](#configuring-global-options)
161
+ * [Configuring options per type](#configuring-options-per-type)
162
+ * [Configuring usage of polymorphic types](#configuring-usage-of-polymorphic-types)
163
+ * [Configuring naming convention](#configuring-naming-convention)
164
+ * [Configuring reference handler](#configuring-reference-handler)
165
+ * [Advanced usage](#advanced-usage)
166
+ * [Defining custom data](#defining-custom-data)
167
+ * [Defining custom serializer](#defining-custom-serializer)
168
+ * [Defining custom injector](#defining-custom-injector)
169
+ * [Defining custom factory](#defining-custom-factory)
170
+ * [Defining custom naming convention](#defining-custom-naming-convention)
171
+ * [Use cases](#use-cases)
172
+ * [Built in serializers](#built-in-serializers)
173
+ * [Circular object references](#circular-object-references)
174
+ * [Dependency injection and immutable types](#dependency-injection-and-immutable-types)
175
+ * [Different case usage in class and JSON](#different-case-usage-in-class-and-json)
176
+ * [Enum types](#enum-types)
177
+ * [Generic types](#generic-types)
178
+ * [Integration with Angular](#integration-with-angular)
179
+ * [Polymorphic types](#polymorphic-types)
180
+ * [Versioning](#versioning)
181
+ * [Contributing](#contributing)
182
+ * [Authors](#authors)
183
+ * [Notes](#notes)
184
+ * [License](#license)
185
+
186
+ ## Understanding TypeManager
196
187
 
197
- Let's have a look at the most simple example of configuration using decorators.
188
+ Let's have a look at that simple example of configuration using decorators from above.
198
189
 
199
190
  ```typescript
200
191
  import { Type, Property } from '@dipscope/type-manager';
@@ -207,9 +198,9 @@ export class User
207
198
  }
208
199
  ```
209
200
 
210
- Here we have a `User` class with `Type` and `Property` decorators assigned to it. `Type` decorator declares a type. `Property` decorator describes available properties for that type.
201
+ Here we have a `User` class with `Type` and `Property` decorators assigned to it. `Type` decorator declares a type. `Property` decorator describes available properties for that type.
211
202
 
212
- The same configuration can be rewritten using declarative style.
203
+ You can write the same configuration can using our "declarative style".
213
204
 
214
205
  ```typescript
215
206
  import { TypeManager, TypeMetadata, TypeConfiguration } from '@dipscope/type-manager';
@@ -237,9 +228,9 @@ export class UserConfiguration implements TypeConfiguration<User>
237
228
  TypeManager.applyTypeConfiguration(User, new UserConfiguration());
238
229
  ```
239
230
 
240
- As you can see now our `User` class defined without decorators. Instead you have to call `TypeManager` method and provide `TypeConfiguration` related to `User` type.
231
+ As you can see now our `User` class has been defined without decorators. Instead, you call the `TypeManager` method and provide `TypeConfiguration` related to the `User` type.
241
232
 
242
- No matter what style of configuration you have chosen the next step is to call serialize methods of `TypeManager` with providing a type and data you want to process.
233
+ No matter what style of configuration you have chosen, the next step is to call the serialize and deserialize methods of `TypeManager`, providing a type and the data you want to process.
243
234
 
244
235
  ```typescript
245
236
  import { TypeManager } from '@dipscope/type-manager';
@@ -250,7 +241,8 @@ const user = TypeManager.deserialize(User, userObject);
250
241
  user instanceof User; // True.
251
242
  ```
252
243
 
253
- Calling serialize creates a plain object and deserialize creates an instance of `User` class. During deserialize you can provide any object. It's not nesassary that object was produced by `TypeManager`. If object is an `Array` you will get array of types in return. Objects are parsed based on general type configuration defined by developer. It is also possible to stringify and parse JSON.
244
+ Calling `serialize()` creates a plain object, while deserialize creates an instance of the `User` class. During the deserialization process, you can provide any object. It's not necessary that the object was produced by `TypeManager`.
245
+ If the object is an `Array`, you will get array of types in return. Objects are parsed based on general type configuration defined by the developer. It is also possible to stringify and parse JSON.
254
246
 
255
247
  ```typescript
256
248
  import { TypeManager } from '@dipscope/type-manager';
@@ -261,25 +253,27 @@ const user = TypeManager.parse(User, userJson);
261
253
  user instanceof User; // True.
262
254
  ```
263
255
 
264
- Stringify and parse functions are wrappers over native JSON class functions. In addition they add serialize and deserialize support under the hood.
256
+ The `stringify()` and `parse()` functions are wrappers over native JSON class functions. In addition, they add serialize and deserialize support under the hood.
265
257
 
266
- Static functions are not the only way to work with a `TypeManager`. You can also work on instance based manner.
258
+ Static functions are not the only way to work with a `TypeManager`. You can also work in an instance-based manner.
267
259
 
268
260
  ```typescript
269
261
  import { TypeManager } from '@dipscope/type-manager';
270
262
 
271
- const typeManager = new TypeManager();
263
+ const userManager = new TypeManager();
272
264
  const userObject = userManager.serialize(User, new User());
273
265
  const user = userManager.deserialize(User, userObject);
274
266
 
275
267
  user instanceof User; // True.
276
268
  ```
277
269
 
278
- At first glance, it may seems that there is no difference but creating an instance of `TypeManager` preserves a configuration state. You can work with different configurations at the same time and have different serialization groups. By default all decorator based configurations and static calls are applied to the singleton type manager instance which is automatically created under the hood.
270
+ At first glance, it may seem that there is no difference; however, creating an instance of `TypeManager` preserves a configuration state.
271
+ You can work with different configurations at the same time and have different serialization groups. By default, all decorator-based configurations and static calls are applied
272
+ to the singleton TypeManager instance which is automatically created under the hood.
279
273
 
280
274
  ## Defining decorators
281
275
 
282
- There are few decorators which controls the main flow. This are `Type`, `Property` and `Inject` decorators. Let's go through each of them.
276
+ There are few decorators which control the main flow. These are the `Type`, `Property` and `Inject` decorators. Let's go through each of them.
283
277
 
284
278
  ### Type decorator
285
279
 
@@ -370,7 +364,7 @@ export class User
370
364
 
371
365
  This option configures an alias so `username` property will be used instead of `name` when deserializing from object. There are plenty of configure options, so check `PropertyOptions` definition or section with [decorator options](#defining-decorator-options) below. For example you can make some properties serializable only or define custom property serialization.
372
366
 
373
- Now let's have a look at more complex definitions with generic types. This are `Array<TType>`, `Map<TKey, TValue>` and others. To declare one of this you have to use extra argument available for `Property` decorator. Generic arguments are always passed as array to exactly see them within a source code.
367
+ Now let's have a look at more complex definitions with generic types. This are `Array<TObject>`, `Map<TKey, TValue>` and others. To declare one of this you have to use extra argument available for `Property` decorator. Generic arguments are always passed as array to exactly see them within a source code.
374
368
 
375
369
  If you are using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) then provide generics as a first argument so configure options will become the second.
376
370
 
@@ -691,14 +685,14 @@ const rankKey = new CustomKey<number>('rank');
691
685
  const orderKey = new CustomKey<number>('order');
692
686
 
693
687
  @Type({
694
- customOptions: [
688
+ customValueMap: new Map([
695
689
  [rankKey, 1],
696
690
  [orderKey, 2]
697
- ]
691
+ ])
698
692
  })
699
693
  export class User
700
694
  {
701
- @Property(String, { customOptions: [[orderKey, 3]]}) public name: string;
695
+ @Property(String, { customValueMap: new Map([[orderKey, 3]]) }) public name: string;
702
696
  }
703
697
  ```
704
698
 
@@ -1002,7 +996,7 @@ export class User
1002
996
 
1003
997
  With this any value which can be converted to `String` will be converted properly. Such behaviour works for other built in serializers and supported for custom ones. By default implicit conversion is turned off. You can enable it using `useImplicitConversion` option per type and property or enable globally using `TypeManager` configure method.
1004
998
 
1005
- ### Parent type functions option
999
+ ### Parent type arguments option
1006
1000
 
1007
1001
  When type implements interfaces which represent other classes this information got lost during `TypeScript` compilation process and there is no way to extract it. This option can be used to provide such information for a `TypeManager` to be used during serialization and deserialization.
1008
1002
 
@@ -1022,7 +1016,7 @@ export abstract class UserStatus extends Entity
1022
1016
  }
1023
1017
 
1024
1018
  @Type({
1025
- parentTypeFns: [UserStatus]
1019
+ parentTypeArguments: [UserStatus]
1026
1020
  })
1027
1021
  export class ActiveUserStatus extends Entity implements UserStatus
1028
1022
  {
@@ -1559,7 +1553,7 @@ Our goal is to cover as much use cases as possible without making you to write a
1559
1553
 
1560
1554
  ### Defining custom data
1561
1555
 
1562
- You can attach you custom metadata to our decorators using `customOptions` option available on `Type` and `Property`.
1556
+ You can attach you custom metadata to our decorators using `customValueMap` option available on `Type` and `Property`.
1563
1557
 
1564
1558
  ```typescript
1565
1559
  import { Type, Property, CustomKey } from '@dipscope/type-manager';
@@ -1568,13 +1562,13 @@ const rankKey = new CustomKey<number>('rank');
1568
1562
  const priorityKey = new CustomKey<number>('priority');
1569
1563
 
1570
1564
  @Type({
1571
- customOptions: [
1565
+ customValueMap: new Map([
1572
1566
  [rankKey, 1]
1573
- ]
1567
+ ])
1574
1568
  })
1575
1569
  class User
1576
1570
  {
1577
- @Property(String, { customOptions: [[priorityKey, 10]] }) public name: string;
1571
+ @Property(String, { customValueMap: new Map([[priorityKey, 10]]) }) public name: string;
1578
1572
  }
1579
1573
  ```
1580
1574
 
@@ -1584,15 +1578,13 @@ This allows you to get it later in serializers, factories, injectors or your cod
1584
1578
  import { TypeManager } from '@dipscope/type-manager';
1585
1579
 
1586
1580
  const userMetadata = TypeManager.extractTypeMetadata(User);
1587
- const typeCustomContext = userMetadata.customContext;
1588
- const rank = customContext.get(rankKey);
1581
+ const rank = userMetadata.extractCustomValue(rankKey);
1589
1582
 
1590
1583
  // Do something with type custom data...
1591
1584
 
1592
1585
  for (const propertyMetadata of userMetadata.propertyMetadataMap.values())
1593
1586
  {
1594
- const propertyCustomContext = propertyMetadata.customContext;
1595
- const priority = propertyCustomContext.get(priorityKey);
1587
+ const priority = propertyMetadata.extractCustomValue(priorityKey);
1596
1588
 
1597
1589
  // Do something with property custom data...
1598
1590
  }
@@ -1660,7 +1652,7 @@ export class DateTimeSerializer implements Serializer<DateTime>
1660
1652
  }
1661
1653
  ```
1662
1654
 
1663
- This example follows internal conventions and gives you a picture of how real serializer may look like. `TypeManager` does not perform any checks and just passes values directly to serializer. Thats why input values can be undefined, null or others depending from what is stored inside certain property. `TypeLike` is an internal type to declare this behaviour.
1655
+ This example follows internal conventions and gives you a picture of how real serializer may look like. `TypeManager` does not perform any checks and just passes values directly to serializer. Thats why input values can be undefined, null or others depending from what is stored inside certain property. `TypeLike` is an internal type to declare this behaviour.
1664
1656
 
1665
1657
  Serializer implementation is fully responsible for return result. You can get default values, custom data and other options specified in configuration from current serializer context and react accordingly. For example you can check if implicit conversion is enabled and convert any value to the target one.
1666
1658
 
@@ -1718,7 +1710,7 @@ export class CustomInjector implements Injector
1718
1710
  return;
1719
1711
  }
1720
1712
 
1721
- public get<TType>(typeMetadata: TypeMetadata<TType>): TType | undefined
1713
+ public get<TObject>(typeMetadata: TypeMetadata<TObject>): TObject | undefined
1722
1714
  {
1723
1715
  return this.angularInjector.get(typeMetadata.typeFn);
1724
1716
  }
@@ -1749,17 +1741,16 @@ import { TypeContext, Injector, TypeFactory } from '@dipscope/type-manager';
1749
1741
 
1750
1742
  export class CustomTypeFactory extends TypeFactory
1751
1743
  {
1752
- public build<TType>(typeContext: TypeContext<TType>, injector: Injector): TType
1744
+ public build<TObject>(typeContext: TypeContext<TObject>, injector: Injector): TObject
1753
1745
  {
1754
1746
  // Build any type.
1755
1747
  const type = super.build(typeContext, injector) as any;
1756
1748
 
1757
1749
  // Resolve custom data.
1758
1750
  const typeMetadata = typeContext.typeMetadata;
1759
- const customContext = typeMetadata.customContext;
1760
1751
 
1761
1752
  // Get rank based on key.
1762
- const rank = customContext.get(rankKey);
1753
+ const rank = typeMetadata.extractCustomValue(rankKey);
1763
1754
 
1764
1755
  // Process custom data...
1765
1756
 
@@ -1774,7 +1765,7 @@ When you are finished with definitions there are two possible ways to register a
1774
1765
  import { Type, Factory } from '@dipscope/type-manager';
1775
1766
 
1776
1767
  @Type({
1777
- customOptions: [[rankKey, 1]]
1768
+ customValueMap: new Map([[rankKey, 1]]),
1778
1769
  factory: new CustomTypeFactory()
1779
1770
  })
1780
1771
  export class User
@@ -1790,7 +1781,7 @@ import { TypeManager } from '@dipscope/type-manager';
1790
1781
 
1791
1782
  // Overriding only for user type.
1792
1783
  TypeManager.applyTypeOptions(User, {
1793
- customOptions: [[rankKey, 1]],
1784
+ customValueMap: new Map([[rankKey, 1]]),
1794
1785
  factory: new CustomTypeFactory()
1795
1786
  });
1796
1787
 
@@ -1851,7 +1842,7 @@ This section describes certain use cases to separate them from the main document
1851
1842
 
1852
1843
  ### Built in serializers
1853
1844
 
1854
- Here is a list of types with built in serializers.
1845
+ Here is a list of types with built in serializers.
1855
1846
 
1856
1847
  * Any;
1857
1848
  * Array;
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_VALUE_RESOLVER = () => undefined;
2
+ //# sourceMappingURL=default-value-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-value-resolver.js","sourceRoot":"","sources":["../../../src/constants/default-value-resolver.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,sBAAsB,GAAyB,GAAG,EAAE,CAAC,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const EMPTY_ARRAY = new Array();
2
+ //# sourceMappingURL=empty-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-array.js","sourceRoot":"","sources":["../../../src/constants/empty-array.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,WAAW,GAAuB,IAAI,KAAK,EAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const EMPTY_MAP = new Map();
2
+ //# sourceMappingURL=empty-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-map.js","sourceRoot":"","sources":["../../../src/constants/empty-map.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,SAAS,GAA0B,IAAI,GAAG,EAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './default-value-resolver';
2
+ export * from './empty-array';
3
+ export * from './empty-map';
4
+ export * from './null-value-resolver';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const NULL_VALUE_RESOLVER = () => null;
2
+ //# sourceMappingURL=null-value-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-value-resolver.js","sourceRoot":"","sources":["../../../src/constants/null-value-resolver.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,mBAAmB,GAAsB,GAAG,EAAE,CAAC,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"custom-key.js","sourceRoot":"","sources":["../../src/custom-key.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,SAAS;IAsBlB,YAAmB,WAAmB,EAAE,mBAAuD;QAE3F,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE/C,OAAO;IACX,CAAC;CACJ"}
1
+ {"version":3,"file":"custom-key.js","sourceRoot":"","sources":["../../src/custom-key.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,SAAS;IAsBlB,YAAmB,WAAmB,EAAE,mBAAuD;QAE3F,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE/C,OAAO;IACX,CAAC;CACJ"}