@dipscope/type-manager 5.0.0-beta.1 → 6.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 (751) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/CONTRIBUTING.md +58 -0
  3. package/README.md +100 -59
  4. package/dist/es2015/alias.js +2 -0
  5. package/dist/es2015/alias.js.map +1 -0
  6. package/dist/es2015/any.js +3 -0
  7. package/dist/es2015/any.js.map +1 -0
  8. package/dist/es2015/custom-data.js +2 -0
  9. package/dist/es2015/custom-data.js.map +1 -0
  10. package/dist/es2015/default-value-resolver.js +2 -0
  11. package/dist/es2015/default-value-resolver.js.map +1 -0
  12. package/dist/es2015/default-value.js +2 -0
  13. package/dist/es2015/default-value.js.map +1 -0
  14. package/dist/es2015/discriminant.js +2 -0
  15. package/dist/es2015/discriminant.js.map +1 -0
  16. package/dist/es2015/discriminator.js +2 -0
  17. package/dist/es2015/discriminator.js.map +1 -0
  18. package/dist/es2015/factories/index.js +2 -0
  19. package/dist/es2015/factories/index.js.map +1 -0
  20. package/dist/es2015/factories/type-factory.js +34 -0
  21. package/dist/es2015/factories/type-factory.js.map +1 -0
  22. package/dist/es2015/factory.js +2 -0
  23. package/dist/es2015/factory.js.map +1 -0
  24. package/dist/es2015/functions/get-own-reflect-metadata.js +8 -0
  25. package/dist/es2015/functions/get-own-reflect-metadata.js.map +1 -0
  26. package/dist/es2015/functions/get-reflect-metadata.js +8 -0
  27. package/dist/es2015/functions/get-reflect-metadata.js.map +1 -0
  28. package/dist/es2015/functions/get-words.js +5 -0
  29. package/dist/es2015/functions/get-words.js.map +1 -0
  30. package/{functions/index.d.ts → dist/es2015/functions/index.js} +4 -1
  31. package/dist/es2015/functions/index.js.map +1 -0
  32. package/dist/es2015/functions/is-arrow-function.js +5 -0
  33. package/dist/es2015/functions/is-arrow-function.js.map +1 -0
  34. package/dist/es2015/functions/is-ctor-function.js +5 -0
  35. package/dist/es2015/functions/is-ctor-function.js.map +1 -0
  36. package/dist/es2015/functions/is-data-view.js +4 -0
  37. package/dist/es2015/functions/is-data-view.js.map +1 -0
  38. package/dist/es2015/functions/is-float-32-array.js +4 -0
  39. package/dist/es2015/functions/is-float-32-array.js.map +1 -0
  40. package/dist/es2015/functions/is-float-64-array.js +4 -0
  41. package/dist/es2015/functions/is-float-64-array.js.map +1 -0
  42. package/dist/es2015/functions/is-int-16-array.js +4 -0
  43. package/dist/es2015/functions/is-int-16-array.js.map +1 -0
  44. package/dist/es2015/functions/is-int-32-array.js +4 -0
  45. package/dist/es2015/functions/is-int-32-array.js.map +1 -0
  46. package/dist/es2015/functions/is-int-8-array.js +4 -0
  47. package/dist/es2015/functions/is-int-8-array.js.map +1 -0
  48. package/dist/es2015/functions/is-uint-16-array.js +4 -0
  49. package/dist/es2015/functions/is-uint-16-array.js.map +1 -0
  50. package/dist/es2015/functions/is-uint-32-array.js +4 -0
  51. package/dist/es2015/functions/is-uint-32-array.js.map +1 -0
  52. package/dist/es2015/functions/is-uint-8-array.js +4 -0
  53. package/dist/es2015/functions/is-uint-8-array.js.map +1 -0
  54. package/dist/es2015/functions/is-uint-8-clamped-array.js +4 -0
  55. package/dist/es2015/functions/is-uint-8-clamped-array.js.map +1 -0
  56. package/dist/es2015/functions/json-parse.js +4 -0
  57. package/dist/es2015/functions/json-parse.js.map +1 -0
  58. package/dist/es2015/functions/json-stringify.js +67 -0
  59. package/dist/es2015/functions/json-stringify.js.map +1 -0
  60. package/dist/es2015/functions/name-of.js +8 -0
  61. package/dist/es2015/functions/name-of.js.map +1 -0
  62. package/dist/es2015/generic-argument.js +2 -0
  63. package/dist/es2015/generic-argument.js.map +1 -0
  64. package/dist/es2015/generic-metadata-resolver.js +2 -0
  65. package/dist/es2015/generic-metadata-resolver.js.map +1 -0
  66. package/dist/es2015/generic-metadata.js +2 -0
  67. package/dist/es2015/generic-metadata.js.map +1 -0
  68. package/dist/es2015/generic-structure.js +2 -0
  69. package/dist/es2015/generic-structure.js.map +1 -0
  70. package/{index.d.ts → dist/es2015/index.js} +13 -0
  71. package/dist/es2015/index.js.map +1 -0
  72. package/dist/es2015/inject-index.js +2 -0
  73. package/dist/es2015/inject-index.js.map +1 -0
  74. package/dist/es2015/inject-internals.js +2 -0
  75. package/dist/es2015/inject-internals.js.map +1 -0
  76. package/dist/es2015/inject-metadata.js +63 -0
  77. package/dist/es2015/inject-metadata.js.map +1 -0
  78. package/dist/es2015/inject-options.js +2 -0
  79. package/dist/es2015/inject-options.js.map +1 -0
  80. package/dist/es2015/inject-sorter.js +2 -0
  81. package/dist/es2015/inject-sorter.js.map +1 -0
  82. package/dist/es2015/inject-sorters/asc-inject-sorter.js +14 -0
  83. package/dist/es2015/inject-sorters/asc-inject-sorter.js.map +1 -0
  84. package/dist/es2015/inject-sorters/desc-inject-sorter.js +14 -0
  85. package/dist/es2015/inject-sorters/desc-inject-sorter.js.map +1 -0
  86. package/dist/es2015/inject-sorters/index.js +3 -0
  87. package/dist/es2015/inject-sorters/index.js.map +1 -0
  88. package/dist/es2015/inject.js +24 -0
  89. package/dist/es2015/inject.js.map +1 -0
  90. package/dist/es2015/injector.js +2 -0
  91. package/dist/es2015/injector.js.map +1 -0
  92. package/{injectors/index.d.ts → dist/es2015/injectors/index.js} +1 -0
  93. package/dist/es2015/injectors/index.js.map +1 -0
  94. package/dist/es2015/injectors/singleton-injector.js +31 -0
  95. package/dist/es2015/injectors/singleton-injector.js.map +1 -0
  96. package/dist/es2015/log-level.js +8 -0
  97. package/dist/es2015/log-level.js.map +1 -0
  98. package/dist/es2015/log.js +50 -0
  99. package/dist/es2015/log.js.map +1 -0
  100. package/dist/es2015/metadata.js +81 -0
  101. package/dist/es2015/metadata.js.map +1 -0
  102. package/dist/es2015/naming-convention.js +2 -0
  103. package/dist/es2015/naming-convention.js.map +1 -0
  104. package/dist/es2015/naming-conventions/camel-case-naming-convention.js +17 -0
  105. package/dist/es2015/naming-conventions/camel-case-naming-convention.js.map +1 -0
  106. package/dist/es2015/naming-conventions/flat-case-naming-convention.js +13 -0
  107. package/dist/es2015/naming-conventions/flat-case-naming-convention.js.map +1 -0
  108. package/dist/es2015/naming-conventions/flat-upper-case-naming-convention.js +13 -0
  109. package/dist/es2015/naming-conventions/flat-upper-case-naming-convention.js.map +1 -0
  110. package/{naming-conventions/index.d.ts → dist/es2015/naming-conventions/index.js} +1 -0
  111. package/dist/es2015/naming-conventions/index.js.map +1 -0
  112. package/dist/es2015/naming-conventions/kebab-case-naming-convention.js +17 -0
  113. package/dist/es2015/naming-conventions/kebab-case-naming-convention.js.map +1 -0
  114. package/dist/es2015/naming-conventions/kebab-upper-case-naming-convention.js +17 -0
  115. package/dist/es2015/naming-conventions/kebab-upper-case-naming-convention.js.map +1 -0
  116. package/dist/es2015/naming-conventions/pascal-case-naming-convention.js +18 -0
  117. package/dist/es2015/naming-conventions/pascal-case-naming-convention.js.map +1 -0
  118. package/dist/es2015/naming-conventions/snake-case-naming-convention.js +17 -0
  119. package/dist/es2015/naming-conventions/snake-case-naming-convention.js.map +1 -0
  120. package/dist/es2015/naming-conventions/snake-upper-case-naming-convention.js +17 -0
  121. package/dist/es2015/naming-conventions/snake-upper-case-naming-convention.js.map +1 -0
  122. package/dist/es2015/property-internals.js +2 -0
  123. package/dist/es2015/property-internals.js.map +1 -0
  124. package/dist/es2015/property-metadata.js +259 -0
  125. package/dist/es2015/property-metadata.js.map +1 -0
  126. package/dist/es2015/property-name.js +2 -0
  127. package/dist/es2015/property-name.js.map +1 -0
  128. package/dist/es2015/property-options.js +2 -0
  129. package/dist/es2015/property-options.js.map +1 -0
  130. package/dist/es2015/property-sorter.js +2 -0
  131. package/dist/es2015/property-sorter.js.map +1 -0
  132. package/dist/es2015/property-sorters/asc-property-sorter.js +14 -0
  133. package/dist/es2015/property-sorters/asc-property-sorter.js.map +1 -0
  134. package/dist/es2015/property-sorters/desc-property-sorter.js +14 -0
  135. package/dist/es2015/property-sorters/desc-property-sorter.js.map +1 -0
  136. package/dist/es2015/property-sorters/index.js +3 -0
  137. package/dist/es2015/property-sorters/index.js.map +1 -0
  138. package/dist/es2015/property.js +39 -0
  139. package/dist/es2015/property.js.map +1 -0
  140. package/dist/es2015/reference-callback.js +2 -0
  141. package/dist/es2015/reference-callback.js.map +1 -0
  142. package/dist/es2015/reference-handler.js +2 -0
  143. package/dist/es2015/reference-handler.js.map +1 -0
  144. package/dist/es2015/reference-handlers/circular-reference-handler.js +36 -0
  145. package/dist/es2015/reference-handlers/circular-reference-handler.js.map +1 -0
  146. package/dist/es2015/reference-handlers/index.js +4 -0
  147. package/dist/es2015/reference-handlers/index.js.map +1 -0
  148. package/dist/es2015/reference-handlers/json-path-reference-handler.js +69 -0
  149. package/dist/es2015/reference-handlers/json-path-reference-handler.js.map +1 -0
  150. package/dist/es2015/reference-handlers/plain-reference-handler.js +32 -0
  151. package/dist/es2015/reference-handlers/plain-reference-handler.js.map +1 -0
  152. package/dist/es2015/reference-key.js +2 -0
  153. package/dist/es2015/reference-key.js.map +1 -0
  154. package/dist/es2015/reference-value-getter.js +2 -0
  155. package/dist/es2015/reference-value-getter.js.map +1 -0
  156. package/dist/es2015/reference-value-setter.js +2 -0
  157. package/dist/es2015/reference-value-setter.js.map +1 -0
  158. package/dist/es2015/reference-value.js +2 -0
  159. package/dist/es2015/reference-value.js.map +1 -0
  160. package/dist/es2015/serializer-context-options.js +2 -0
  161. package/dist/es2015/serializer-context-options.js.map +1 -0
  162. package/dist/es2015/serializer-context.js +295 -0
  163. package/dist/es2015/serializer-context.js.map +1 -0
  164. package/dist/es2015/serializer.js +2 -0
  165. package/dist/es2015/serializer.js.map +1 -0
  166. package/dist/es2015/serializers/any-serializer.js +22 -0
  167. package/dist/es2015/serializers/any-serializer.js.map +1 -0
  168. package/dist/es2015/serializers/array-buffer-serializer.js +41 -0
  169. package/dist/es2015/serializers/array-buffer-serializer.js.map +1 -0
  170. package/dist/es2015/serializers/array-serializer.js +60 -0
  171. package/dist/es2015/serializers/array-serializer.js.map +1 -0
  172. package/dist/es2015/serializers/boolean-serializer.js +55 -0
  173. package/dist/es2015/serializers/boolean-serializer.js.map +1 -0
  174. package/dist/es2015/serializers/data-view-serializer.js +42 -0
  175. package/dist/es2015/serializers/data-view-serializer.js.map +1 -0
  176. package/dist/es2015/serializers/date-serializer.js +34 -0
  177. package/dist/es2015/serializers/date-serializer.js.map +1 -0
  178. package/dist/es2015/serializers/float-32-array-serializer.js +35 -0
  179. package/dist/es2015/serializers/float-32-array-serializer.js.map +1 -0
  180. package/dist/es2015/serializers/float-64-array-serializer.js +35 -0
  181. package/dist/es2015/serializers/float-64-array-serializer.js.map +1 -0
  182. package/{serializers/index.d.ts → dist/es2015/serializers/index.js} +3 -0
  183. package/dist/es2015/serializers/index.js.map +1 -0
  184. package/dist/es2015/serializers/int-16-array-serializer.js +35 -0
  185. package/dist/es2015/serializers/int-16-array-serializer.js.map +1 -0
  186. package/dist/es2015/serializers/int-32-array-serializer.js +35 -0
  187. package/dist/es2015/serializers/int-32-array-serializer.js.map +1 -0
  188. package/dist/es2015/serializers/int-8-array-serializer.js +35 -0
  189. package/dist/es2015/serializers/int-8-array-serializer.js.map +1 -0
  190. package/dist/es2015/serializers/map-serializer.js +96 -0
  191. package/dist/es2015/serializers/map-serializer.js.map +1 -0
  192. package/dist/es2015/serializers/number-serializer.js +49 -0
  193. package/dist/es2015/serializers/number-serializer.js.map +1 -0
  194. package/dist/es2015/serializers/set-serializer.js +62 -0
  195. package/dist/es2015/serializers/set-serializer.js.map +1 -0
  196. package/dist/es2015/serializers/string-serializer.js +55 -0
  197. package/dist/es2015/serializers/string-serializer.js.map +1 -0
  198. package/dist/es2015/serializers/type-serializer.js +121 -0
  199. package/dist/es2015/serializers/type-serializer.js.map +1 -0
  200. package/dist/es2015/serializers/uint-16-array-serializer.js +35 -0
  201. package/dist/es2015/serializers/uint-16-array-serializer.js.map +1 -0
  202. package/dist/es2015/serializers/uint-32-array-serializer.js +35 -0
  203. package/dist/es2015/serializers/uint-32-array-serializer.js.map +1 -0
  204. package/dist/es2015/serializers/uint-8-array-serializer.js +35 -0
  205. package/dist/es2015/serializers/uint-8-array-serializer.js.map +1 -0
  206. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js +35 -0
  207. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js.map +1 -0
  208. package/dist/es2015/serializers/unknown-serializer.js +22 -0
  209. package/dist/es2015/serializers/unknown-serializer.js.map +1 -0
  210. package/dist/es2015/type-abstraction.js +2 -0
  211. package/dist/es2015/type-abstraction.js.map +1 -0
  212. package/dist/es2015/type-argument.js +2 -0
  213. package/dist/es2015/type-argument.js.map +1 -0
  214. package/dist/es2015/type-configuration.js +2 -0
  215. package/dist/es2015/type-configuration.js.map +1 -0
  216. package/dist/es2015/type-context-entry.js +9 -0
  217. package/dist/es2015/type-context-entry.js.map +1 -0
  218. package/dist/es2015/type-context.js +25 -0
  219. package/dist/es2015/type-context.js.map +1 -0
  220. package/dist/es2015/type-ctor.js +2 -0
  221. package/dist/es2015/type-ctor.js.map +1 -0
  222. package/dist/es2015/type-fn.js +2 -0
  223. package/dist/es2015/type-fn.js.map +1 -0
  224. package/dist/es2015/type-like.js +2 -0
  225. package/dist/es2015/type-like.js.map +1 -0
  226. package/dist/es2015/type-manager-options.js +2 -0
  227. package/dist/es2015/type-manager-options.js.map +1 -0
  228. package/dist/es2015/type-manager.js +314 -0
  229. package/dist/es2015/type-manager.js.map +1 -0
  230. package/dist/es2015/type-metadata-extractor.js +2 -0
  231. package/dist/es2015/type-metadata-extractor.js.map +1 -0
  232. package/dist/es2015/type-metadata-resolver.js +2 -0
  233. package/dist/es2015/type-metadata-resolver.js.map +1 -0
  234. package/dist/es2015/type-metadata-symbol.js +2 -0
  235. package/dist/es2015/type-metadata-symbol.js.map +1 -0
  236. package/dist/es2015/type-metadata.js +399 -0
  237. package/dist/es2015/type-metadata.js.map +1 -0
  238. package/dist/es2015/type-name.js +2 -0
  239. package/dist/es2015/type-name.js.map +1 -0
  240. package/dist/es2015/type-options-base.js +2 -0
  241. package/dist/es2015/type-options-base.js.map +1 -0
  242. package/dist/es2015/type-options.js +2 -0
  243. package/dist/es2015/type-options.js.map +1 -0
  244. package/dist/es2015/type-resolver.js +2 -0
  245. package/dist/es2015/type-resolver.js.map +1 -0
  246. package/dist/es2015/type.js +8 -0
  247. package/dist/es2015/type.js.map +1 -0
  248. package/dist/es2015/unknown.js +3 -0
  249. package/dist/es2015/unknown.js.map +1 -0
  250. package/dist/es5/alias.js +2 -0
  251. package/dist/es5/alias.js.map +1 -0
  252. package/dist/es5/any.js +7 -0
  253. package/dist/es5/any.js.map +1 -0
  254. package/dist/es5/custom-data.js +2 -0
  255. package/dist/es5/custom-data.js.map +1 -0
  256. package/dist/es5/default-value-resolver.js +2 -0
  257. package/dist/es5/default-value-resolver.js.map +1 -0
  258. package/dist/es5/default-value.js +2 -0
  259. package/dist/es5/default-value.js.map +1 -0
  260. package/dist/es5/discriminant.js +2 -0
  261. package/dist/es5/discriminant.js.map +1 -0
  262. package/dist/es5/discriminator.js +2 -0
  263. package/dist/es5/discriminator.js.map +1 -0
  264. package/dist/es5/factories/index.js +2 -0
  265. package/dist/es5/factories/index.js.map +1 -0
  266. package/dist/es5/factories/type-factory.js +60 -0
  267. package/dist/es5/factories/type-factory.js.map +1 -0
  268. package/dist/es5/factory.js +2 -0
  269. package/dist/es5/factory.js.map +1 -0
  270. package/dist/es5/functions/get-own-reflect-metadata.js +8 -0
  271. package/dist/es5/functions/get-own-reflect-metadata.js.map +1 -0
  272. package/dist/es5/functions/get-reflect-metadata.js +8 -0
  273. package/dist/es5/functions/get-reflect-metadata.js.map +1 -0
  274. package/dist/es5/functions/get-words.js +5 -0
  275. package/dist/es5/functions/get-words.js.map +1 -0
  276. package/dist/es5/functions/index.js +19 -0
  277. package/dist/es5/functions/index.js.map +1 -0
  278. package/dist/es5/functions/is-arrow-function.js +5 -0
  279. package/dist/es5/functions/is-arrow-function.js.map +1 -0
  280. package/dist/es5/functions/is-ctor-function.js +5 -0
  281. package/dist/es5/functions/is-ctor-function.js.map +1 -0
  282. package/dist/es5/functions/is-data-view.js +4 -0
  283. package/dist/es5/functions/is-data-view.js.map +1 -0
  284. package/dist/es5/functions/is-float-32-array.js +4 -0
  285. package/dist/es5/functions/is-float-32-array.js.map +1 -0
  286. package/dist/es5/functions/is-float-64-array.js +4 -0
  287. package/dist/es5/functions/is-float-64-array.js.map +1 -0
  288. package/dist/es5/functions/is-int-16-array.js +4 -0
  289. package/dist/es5/functions/is-int-16-array.js.map +1 -0
  290. package/dist/es5/functions/is-int-32-array.js +4 -0
  291. package/dist/es5/functions/is-int-32-array.js.map +1 -0
  292. package/dist/es5/functions/is-int-8-array.js +4 -0
  293. package/dist/es5/functions/is-int-8-array.js.map +1 -0
  294. package/dist/es5/functions/is-uint-16-array.js +4 -0
  295. package/dist/es5/functions/is-uint-16-array.js.map +1 -0
  296. package/dist/es5/functions/is-uint-32-array.js +4 -0
  297. package/dist/es5/functions/is-uint-32-array.js.map +1 -0
  298. package/dist/es5/functions/is-uint-8-array.js +4 -0
  299. package/dist/es5/functions/is-uint-8-array.js.map +1 -0
  300. package/dist/es5/functions/is-uint-8-clamped-array.js +4 -0
  301. package/dist/es5/functions/is-uint-8-clamped-array.js.map +1 -0
  302. package/dist/es5/functions/json-parse.js +4 -0
  303. package/dist/es5/functions/json-parse.js.map +1 -0
  304. package/dist/es5/functions/json-stringify.js +67 -0
  305. package/dist/es5/functions/json-stringify.js.map +1 -0
  306. package/dist/es5/functions/name-of.js +8 -0
  307. package/dist/es5/functions/name-of.js.map +1 -0
  308. package/dist/es5/generic-argument.js +2 -0
  309. package/dist/es5/generic-argument.js.map +1 -0
  310. package/dist/es5/generic-metadata-resolver.js +2 -0
  311. package/dist/es5/generic-metadata-resolver.js.map +1 -0
  312. package/dist/es5/generic-metadata.js +2 -0
  313. package/dist/es5/generic-metadata.js.map +1 -0
  314. package/dist/es5/generic-structure.js +2 -0
  315. package/dist/es5/generic-structure.js.map +1 -0
  316. package/dist/es5/index.js +67 -0
  317. package/dist/es5/index.js.map +1 -0
  318. package/dist/es5/inject-index.js +2 -0
  319. package/dist/es5/inject-index.js.map +1 -0
  320. package/dist/es5/inject-internals.js +2 -0
  321. package/dist/es5/inject-internals.js.map +1 -0
  322. package/dist/es5/inject-metadata.js +84 -0
  323. package/dist/es5/inject-metadata.js.map +1 -0
  324. package/dist/es5/inject-options.js +2 -0
  325. package/dist/es5/inject-options.js.map +1 -0
  326. package/dist/es5/inject-sorter.js +2 -0
  327. package/dist/es5/inject-sorter.js.map +1 -0
  328. package/dist/es5/inject-sorters/asc-inject-sorter.js +18 -0
  329. package/dist/es5/inject-sorters/asc-inject-sorter.js.map +1 -0
  330. package/dist/es5/inject-sorters/desc-inject-sorter.js +18 -0
  331. package/dist/es5/inject-sorters/desc-inject-sorter.js.map +1 -0
  332. package/dist/es5/inject-sorters/index.js +3 -0
  333. package/dist/es5/inject-sorters/index.js.map +1 -0
  334. package/dist/es5/inject.js +24 -0
  335. package/dist/es5/inject.js.map +1 -0
  336. package/dist/es5/injector.js +2 -0
  337. package/dist/es5/injector.js.map +1 -0
  338. package/dist/es5/injectors/index.js +2 -0
  339. package/dist/es5/injectors/index.js.map +1 -0
  340. package/dist/es5/injectors/singleton-injector.js +45 -0
  341. package/dist/es5/injectors/singleton-injector.js.map +1 -0
  342. package/dist/es5/log-level.js +8 -0
  343. package/dist/es5/log-level.js.map +1 -0
  344. package/dist/es5/log.js +65 -0
  345. package/dist/es5/log.js.map +1 -0
  346. package/dist/es5/metadata.js +106 -0
  347. package/dist/es5/metadata.js.map +1 -0
  348. package/dist/es5/naming-convention.js +2 -0
  349. package/dist/es5/naming-convention.js.map +1 -0
  350. package/dist/es5/naming-conventions/camel-case-naming-convention.js +21 -0
  351. package/dist/es5/naming-conventions/camel-case-naming-convention.js.map +1 -0
  352. package/dist/es5/naming-conventions/flat-case-naming-convention.js +17 -0
  353. package/dist/es5/naming-conventions/flat-case-naming-convention.js.map +1 -0
  354. package/dist/es5/naming-conventions/flat-upper-case-naming-convention.js +17 -0
  355. package/dist/es5/naming-conventions/flat-upper-case-naming-convention.js.map +1 -0
  356. package/dist/es5/naming-conventions/index.js +9 -0
  357. package/dist/es5/naming-conventions/index.js.map +1 -0
  358. package/dist/es5/naming-conventions/kebab-case-naming-convention.js +21 -0
  359. package/dist/es5/naming-conventions/kebab-case-naming-convention.js.map +1 -0
  360. package/dist/es5/naming-conventions/kebab-upper-case-naming-convention.js +21 -0
  361. package/dist/es5/naming-conventions/kebab-upper-case-naming-convention.js.map +1 -0
  362. package/dist/es5/naming-conventions/pascal-case-naming-convention.js +22 -0
  363. package/dist/es5/naming-conventions/pascal-case-naming-convention.js.map +1 -0
  364. package/dist/es5/naming-conventions/snake-case-naming-convention.js +21 -0
  365. package/dist/es5/naming-conventions/snake-case-naming-convention.js.map +1 -0
  366. package/dist/es5/naming-conventions/snake-upper-case-naming-convention.js +21 -0
  367. package/dist/es5/naming-conventions/snake-upper-case-naming-convention.js.map +1 -0
  368. package/dist/es5/property-internals.js +2 -0
  369. package/dist/es5/property-internals.js.map +1 -0
  370. package/dist/es5/property-metadata.js +364 -0
  371. package/dist/es5/property-metadata.js.map +1 -0
  372. package/dist/es5/property-name.js +2 -0
  373. package/dist/es5/property-name.js.map +1 -0
  374. package/dist/es5/property-options.js +2 -0
  375. package/dist/es5/property-options.js.map +1 -0
  376. package/dist/es5/property-sorter.js +2 -0
  377. package/dist/es5/property-sorter.js.map +1 -0
  378. package/dist/es5/property-sorters/asc-property-sorter.js +18 -0
  379. package/dist/es5/property-sorters/asc-property-sorter.js.map +1 -0
  380. package/dist/es5/property-sorters/desc-property-sorter.js +18 -0
  381. package/dist/es5/property-sorters/desc-property-sorter.js.map +1 -0
  382. package/dist/es5/property-sorters/index.js +3 -0
  383. package/dist/es5/property-sorters/index.js.map +1 -0
  384. package/dist/es5/property.js +39 -0
  385. package/dist/es5/property.js.map +1 -0
  386. package/dist/es5/reference-callback.js +2 -0
  387. package/dist/es5/reference-callback.js.map +1 -0
  388. package/dist/es5/reference-handler.js +2 -0
  389. package/dist/es5/reference-handler.js.map +1 -0
  390. package/dist/es5/reference-handlers/circular-reference-handler.js +40 -0
  391. package/dist/es5/reference-handlers/circular-reference-handler.js.map +1 -0
  392. package/dist/es5/reference-handlers/index.js +4 -0
  393. package/dist/es5/reference-handlers/index.js.map +1 -0
  394. package/dist/es5/reference-handlers/json-path-reference-handler.js +93 -0
  395. package/dist/es5/reference-handlers/json-path-reference-handler.js.map +1 -0
  396. package/dist/es5/reference-handlers/plain-reference-handler.js +36 -0
  397. package/dist/es5/reference-handlers/plain-reference-handler.js.map +1 -0
  398. package/dist/es5/reference-key.js +2 -0
  399. package/dist/es5/reference-key.js.map +1 -0
  400. package/dist/es5/reference-value-getter.js +2 -0
  401. package/dist/es5/reference-value-getter.js.map +1 -0
  402. package/dist/es5/reference-value-setter.js +2 -0
  403. package/dist/es5/reference-value-setter.js.map +1 -0
  404. package/dist/es5/reference-value.js +2 -0
  405. package/dist/es5/reference-value.js.map +1 -0
  406. package/dist/es5/serializer-context-options.js +2 -0
  407. package/dist/es5/serializer-context-options.js.map +1 -0
  408. package/dist/es5/serializer-context.js +434 -0
  409. package/dist/es5/serializer-context.js.map +1 -0
  410. package/dist/es5/serializer.js +2 -0
  411. package/dist/es5/serializer.js.map +1 -0
  412. package/dist/es5/serializers/any-serializer.js +26 -0
  413. package/dist/es5/serializers/any-serializer.js.map +1 -0
  414. package/dist/es5/serializers/array-buffer-serializer.js +45 -0
  415. package/dist/es5/serializers/array-buffer-serializer.js.map +1 -0
  416. package/dist/es5/serializers/array-serializer.js +70 -0
  417. package/dist/es5/serializers/array-serializer.js.map +1 -0
  418. package/dist/es5/serializers/boolean-serializer.js +59 -0
  419. package/dist/es5/serializers/boolean-serializer.js.map +1 -0
  420. package/dist/es5/serializers/data-view-serializer.js +46 -0
  421. package/dist/es5/serializers/data-view-serializer.js.map +1 -0
  422. package/dist/es5/serializers/date-serializer.js +38 -0
  423. package/dist/es5/serializers/date-serializer.js.map +1 -0
  424. package/dist/es5/serializers/float-32-array-serializer.js +39 -0
  425. package/dist/es5/serializers/float-32-array-serializer.js.map +1 -0
  426. package/dist/es5/serializers/float-64-array-serializer.js +39 -0
  427. package/dist/es5/serializers/float-64-array-serializer.js.map +1 -0
  428. package/dist/es5/serializers/index.js +22 -0
  429. package/dist/es5/serializers/index.js.map +1 -0
  430. package/dist/es5/serializers/int-16-array-serializer.js +39 -0
  431. package/dist/es5/serializers/int-16-array-serializer.js.map +1 -0
  432. package/dist/es5/serializers/int-32-array-serializer.js +39 -0
  433. package/dist/es5/serializers/int-32-array-serializer.js.map +1 -0
  434. package/dist/es5/serializers/int-8-array-serializer.js +39 -0
  435. package/dist/es5/serializers/int-8-array-serializer.js.map +1 -0
  436. package/dist/es5/serializers/map-serializer.js +115 -0
  437. package/dist/es5/serializers/map-serializer.js.map +1 -0
  438. package/dist/es5/serializers/number-serializer.js +53 -0
  439. package/dist/es5/serializers/number-serializer.js.map +1 -0
  440. package/dist/es5/serializers/set-serializer.js +78 -0
  441. package/dist/es5/serializers/set-serializer.js.map +1 -0
  442. package/dist/es5/serializers/string-serializer.js +59 -0
  443. package/dist/es5/serializers/string-serializer.js.map +1 -0
  444. package/dist/es5/serializers/type-serializer.js +154 -0
  445. package/dist/es5/serializers/type-serializer.js.map +1 -0
  446. package/dist/es5/serializers/uint-16-array-serializer.js +39 -0
  447. package/dist/es5/serializers/uint-16-array-serializer.js.map +1 -0
  448. package/dist/es5/serializers/uint-32-array-serializer.js +39 -0
  449. package/dist/es5/serializers/uint-32-array-serializer.js.map +1 -0
  450. package/dist/es5/serializers/uint-8-array-serializer.js +39 -0
  451. package/dist/es5/serializers/uint-8-array-serializer.js.map +1 -0
  452. package/dist/es5/serializers/uint-8-clamped-array-serializer.js +39 -0
  453. package/dist/es5/serializers/uint-8-clamped-array-serializer.js.map +1 -0
  454. package/dist/es5/serializers/unknown-serializer.js +26 -0
  455. package/dist/es5/serializers/unknown-serializer.js.map +1 -0
  456. package/dist/es5/type-abstraction.js +2 -0
  457. package/dist/es5/type-abstraction.js.map +1 -0
  458. package/dist/es5/type-argument.js +2 -0
  459. package/dist/es5/type-argument.js.map +1 -0
  460. package/dist/es5/type-configuration.js +2 -0
  461. package/dist/es5/type-configuration.js.map +1 -0
  462. package/dist/es5/type-context-entry.js +11 -0
  463. package/dist/es5/type-context-entry.js.map +1 -0
  464. package/dist/es5/type-context.js +27 -0
  465. package/dist/es5/type-context.js.map +1 -0
  466. package/dist/es5/type-ctor.js +2 -0
  467. package/dist/es5/type-ctor.js.map +1 -0
  468. package/dist/es5/type-fn.js +2 -0
  469. package/dist/es5/type-fn.js.map +1 -0
  470. package/dist/es5/type-like.js +2 -0
  471. package/dist/es5/type-like.js.map +1 -0
  472. package/dist/es5/type-manager-options.js +2 -0
  473. package/dist/es5/type-manager-options.js.map +1 -0
  474. package/dist/es5/type-manager.js +407 -0
  475. package/dist/es5/type-manager.js.map +1 -0
  476. package/dist/es5/type-metadata-extractor.js +2 -0
  477. package/dist/es5/type-metadata-extractor.js.map +1 -0
  478. package/dist/es5/type-metadata-resolver.js +2 -0
  479. package/dist/es5/type-metadata-resolver.js.map +1 -0
  480. package/dist/es5/type-metadata-symbol.js +2 -0
  481. package/dist/es5/type-metadata-symbol.js.map +1 -0
  482. package/dist/es5/type-metadata.js +545 -0
  483. package/dist/es5/type-metadata.js.map +1 -0
  484. package/dist/es5/type-name.js +2 -0
  485. package/dist/es5/type-name.js.map +1 -0
  486. package/dist/es5/type-options-base.js +2 -0
  487. package/dist/es5/type-options-base.js.map +1 -0
  488. package/dist/es5/type-options.js +2 -0
  489. package/dist/es5/type-options.js.map +1 -0
  490. package/dist/es5/type-resolver.js +2 -0
  491. package/dist/es5/type-resolver.js.map +1 -0
  492. package/dist/es5/type.js +8 -0
  493. package/dist/es5/type.js.map +1 -0
  494. package/dist/es5/unknown.js +7 -0
  495. package/dist/es5/unknown.js.map +1 -0
  496. package/{alias.d.ts → dist/types/alias.d.ts} +1 -0
  497. package/dist/types/alias.d.ts.map +1 -0
  498. package/dist/types/any.d.ts +10 -0
  499. package/dist/types/any.d.ts.map +1 -0
  500. package/{custom-data.d.ts → dist/types/custom-data.d.ts} +1 -0
  501. package/dist/types/custom-data.d.ts.map +1 -0
  502. package/{default-value-resolver.d.ts → dist/types/default-value-resolver.d.ts} +1 -0
  503. package/dist/types/default-value-resolver.d.ts.map +1 -0
  504. package/{default-value.d.ts → dist/types/default-value.d.ts} +1 -0
  505. package/dist/types/default-value.d.ts.map +1 -0
  506. package/{discriminant.d.ts → dist/types/discriminant.d.ts} +1 -0
  507. package/dist/types/discriminant.d.ts.map +1 -0
  508. package/{discriminator.d.ts → dist/types/discriminator.d.ts} +1 -0
  509. package/dist/types/discriminator.d.ts.map +1 -0
  510. package/dist/types/factories/index.d.ts +2 -0
  511. package/dist/types/factories/index.d.ts.map +1 -0
  512. package/{factories → dist/types/factories}/type-factory.d.ts +1 -0
  513. package/dist/types/factories/type-factory.d.ts.map +1 -0
  514. package/{factory.d.ts → dist/types/factory.d.ts} +1 -0
  515. package/dist/types/factory.d.ts.map +1 -0
  516. package/{functions → dist/types/functions}/get-own-reflect-metadata.d.ts +1 -0
  517. package/dist/types/functions/get-own-reflect-metadata.d.ts.map +1 -0
  518. package/{functions → dist/types/functions}/get-reflect-metadata.d.ts +1 -0
  519. package/dist/types/functions/get-reflect-metadata.d.ts.map +1 -0
  520. package/{functions → dist/types/functions}/get-words.d.ts +1 -0
  521. package/dist/types/functions/get-words.d.ts.map +1 -0
  522. package/dist/types/functions/index.d.ts +19 -0
  523. package/dist/types/functions/index.d.ts.map +1 -0
  524. package/{functions → dist/types/functions}/is-arrow-function.d.ts +1 -0
  525. package/dist/types/functions/is-arrow-function.d.ts.map +1 -0
  526. package/{functions → dist/types/functions}/is-ctor-function.d.ts +1 -0
  527. package/dist/types/functions/is-ctor-function.d.ts.map +1 -0
  528. package/{functions → dist/types/functions}/is-data-view.d.ts +1 -0
  529. package/dist/types/functions/is-data-view.d.ts.map +1 -0
  530. package/{functions → dist/types/functions}/is-float-32-array.d.ts +1 -0
  531. package/dist/types/functions/is-float-32-array.d.ts.map +1 -0
  532. package/{functions → dist/types/functions}/is-float-64-array.d.ts +1 -0
  533. package/dist/types/functions/is-float-64-array.d.ts.map +1 -0
  534. package/{functions → dist/types/functions}/is-int-16-array.d.ts +1 -0
  535. package/dist/types/functions/is-int-16-array.d.ts.map +1 -0
  536. package/{functions → dist/types/functions}/is-int-32-array.d.ts +1 -0
  537. package/dist/types/functions/is-int-32-array.d.ts.map +1 -0
  538. package/{functions → dist/types/functions}/is-int-8-array.d.ts +1 -0
  539. package/dist/types/functions/is-int-8-array.d.ts.map +1 -0
  540. package/{functions → dist/types/functions}/is-uint-16-array.d.ts +1 -0
  541. package/dist/types/functions/is-uint-16-array.d.ts.map +1 -0
  542. package/{functions → dist/types/functions}/is-uint-32-array.d.ts +1 -0
  543. package/dist/types/functions/is-uint-32-array.d.ts.map +1 -0
  544. package/{functions → dist/types/functions}/is-uint-8-array.d.ts +1 -0
  545. package/dist/types/functions/is-uint-8-array.d.ts.map +1 -0
  546. package/{functions → dist/types/functions}/is-uint-8-clamped-array.d.ts +1 -0
  547. package/dist/types/functions/is-uint-8-clamped-array.d.ts.map +1 -0
  548. package/dist/types/functions/json-parse.d.ts +10 -0
  549. package/dist/types/functions/json-parse.d.ts.map +1 -0
  550. package/dist/types/functions/json-stringify.d.ts +11 -0
  551. package/dist/types/functions/json-stringify.d.ts.map +1 -0
  552. package/{functions → dist/types/functions}/name-of.d.ts +1 -0
  553. package/dist/types/functions/name-of.d.ts.map +1 -0
  554. package/{generic-argument.d.ts → dist/types/generic-argument.d.ts} +1 -0
  555. package/dist/types/generic-argument.d.ts.map +1 -0
  556. package/dist/types/generic-metadata-resolver.d.ts +8 -0
  557. package/dist/types/generic-metadata-resolver.d.ts.map +1 -0
  558. package/{generic-metadata.d.ts → dist/types/generic-metadata.d.ts} +1 -0
  559. package/dist/types/generic-metadata.d.ts.map +1 -0
  560. package/dist/types/generic-structure.d.ts +8 -0
  561. package/dist/types/generic-structure.d.ts.map +1 -0
  562. package/dist/types/index.d.ts +67 -0
  563. package/dist/types/index.d.ts.map +1 -0
  564. package/{inject-index.d.ts → dist/types/inject-index.d.ts} +1 -0
  565. package/dist/types/inject-index.d.ts.map +1 -0
  566. package/dist/types/inject-internals.d.ts +15 -0
  567. package/dist/types/inject-internals.d.ts.map +1 -0
  568. package/{inject-metadata.d.ts → dist/types/inject-metadata.d.ts} +55 -9
  569. package/dist/types/inject-metadata.d.ts.map +1 -0
  570. package/{inject-options.d.ts → dist/types/inject-options.d.ts} +1 -0
  571. package/dist/types/inject-options.d.ts.map +1 -0
  572. package/dist/types/inject-sorter.d.ts +20 -0
  573. package/dist/types/inject-sorter.d.ts.map +1 -0
  574. package/dist/types/inject-sorters/asc-inject-sorter.d.ts +21 -0
  575. package/dist/types/inject-sorters/asc-inject-sorter.d.ts.map +1 -0
  576. package/dist/types/inject-sorters/desc-inject-sorter.d.ts +21 -0
  577. package/dist/types/inject-sorters/desc-inject-sorter.d.ts.map +1 -0
  578. package/dist/types/inject-sorters/index.d.ts +3 -0
  579. package/dist/types/inject-sorters/index.d.ts.map +1 -0
  580. package/{inject.d.ts → dist/types/inject.d.ts} +1 -0
  581. package/dist/types/inject.d.ts.map +1 -0
  582. package/{injector.d.ts → dist/types/injector.d.ts} +1 -0
  583. package/dist/types/injector.d.ts.map +1 -0
  584. package/dist/types/injectors/index.d.ts +2 -0
  585. package/dist/types/injectors/index.d.ts.map +1 -0
  586. package/{injectors → dist/types/injectors}/singleton-injector.d.ts +1 -0
  587. package/dist/types/injectors/singleton-injector.d.ts.map +1 -0
  588. package/{log-level.d.ts → dist/types/log-level.d.ts} +1 -0
  589. package/dist/types/log-level.d.ts.map +1 -0
  590. package/{log.d.ts → dist/types/log.d.ts} +1 -0
  591. package/dist/types/log.d.ts.map +1 -0
  592. package/dist/types/metadata.d.ts +101 -0
  593. package/dist/types/metadata.d.ts.map +1 -0
  594. package/{naming-convention.d.ts → dist/types/naming-convention.d.ts} +1 -0
  595. package/dist/types/naming-convention.d.ts.map +1 -0
  596. package/{naming-conventions → dist/types/naming-conventions}/camel-case-naming-convention.d.ts +1 -0
  597. package/dist/types/naming-conventions/camel-case-naming-convention.d.ts.map +1 -0
  598. package/{naming-conventions → dist/types/naming-conventions}/flat-case-naming-convention.d.ts +1 -0
  599. package/dist/types/naming-conventions/flat-case-naming-convention.d.ts.map +1 -0
  600. package/{naming-conventions → dist/types/naming-conventions}/flat-upper-case-naming-convention.d.ts +1 -0
  601. package/dist/types/naming-conventions/flat-upper-case-naming-convention.d.ts.map +1 -0
  602. package/dist/types/naming-conventions/index.d.ts +9 -0
  603. package/dist/types/naming-conventions/index.d.ts.map +1 -0
  604. package/{naming-conventions → dist/types/naming-conventions}/kebab-case-naming-convention.d.ts +1 -0
  605. package/dist/types/naming-conventions/kebab-case-naming-convention.d.ts.map +1 -0
  606. package/{naming-conventions → dist/types/naming-conventions}/kebab-upper-case-naming-convention.d.ts +1 -0
  607. package/dist/types/naming-conventions/kebab-upper-case-naming-convention.d.ts.map +1 -0
  608. package/{naming-conventions → dist/types/naming-conventions}/pascal-case-naming-convention.d.ts +1 -0
  609. package/dist/types/naming-conventions/pascal-case-naming-convention.d.ts.map +1 -0
  610. package/{naming-conventions → dist/types/naming-conventions}/snake-case-naming-convention.d.ts +1 -0
  611. package/dist/types/naming-conventions/snake-case-naming-convention.d.ts.map +1 -0
  612. package/{naming-conventions → dist/types/naming-conventions}/snake-upper-case-naming-convention.d.ts +1 -0
  613. package/dist/types/naming-conventions/snake-upper-case-naming-convention.d.ts.map +1 -0
  614. package/dist/types/property-internals.d.ts +29 -0
  615. package/dist/types/property-internals.d.ts.map +1 -0
  616. package/dist/types/property-metadata.d.ts +353 -0
  617. package/dist/types/property-metadata.d.ts.map +1 -0
  618. package/{property-name.d.ts → dist/types/property-name.d.ts} +1 -0
  619. package/dist/types/property-name.d.ts.map +1 -0
  620. package/{property-options.d.ts → dist/types/property-options.d.ts} +1 -0
  621. package/dist/types/property-options.d.ts.map +1 -0
  622. package/dist/types/property-sorter.d.ts +20 -0
  623. package/dist/types/property-sorter.d.ts.map +1 -0
  624. package/dist/types/property-sorters/asc-property-sorter.d.ts +21 -0
  625. package/dist/types/property-sorters/asc-property-sorter.d.ts.map +1 -0
  626. package/dist/types/property-sorters/desc-property-sorter.d.ts +21 -0
  627. package/dist/types/property-sorters/desc-property-sorter.d.ts.map +1 -0
  628. package/dist/types/property-sorters/index.d.ts +3 -0
  629. package/dist/types/property-sorters/index.d.ts.map +1 -0
  630. package/{property.d.ts → dist/types/property.d.ts} +1 -0
  631. package/dist/types/property.d.ts.map +1 -0
  632. package/{reference-callback.d.ts → dist/types/reference-callback.d.ts} +1 -0
  633. package/dist/types/reference-callback.d.ts.map +1 -0
  634. package/{reference-handler.d.ts → dist/types/reference-handler.d.ts} +1 -0
  635. package/dist/types/reference-handler.d.ts.map +1 -0
  636. package/{reference-handlers/direct-reference-handler.d.ts → dist/types/reference-handlers/circular-reference-handler.d.ts} +4 -3
  637. package/dist/types/reference-handlers/circular-reference-handler.d.ts.map +1 -0
  638. package/dist/types/reference-handlers/index.d.ts +4 -0
  639. package/dist/types/reference-handlers/index.d.ts.map +1 -0
  640. package/{reference-handlers/path-reference-handler.d.ts → dist/types/reference-handlers/json-path-reference-handler.d.ts} +4 -3
  641. package/dist/types/reference-handlers/json-path-reference-handler.d.ts.map +1 -0
  642. package/{reference-handlers/lead-reference-handler.d.ts → dist/types/reference-handlers/plain-reference-handler.d.ts} +4 -3
  643. package/dist/types/reference-handlers/plain-reference-handler.d.ts.map +1 -0
  644. package/{reference-key.d.ts → dist/types/reference-key.d.ts} +2 -1
  645. package/dist/types/reference-key.d.ts.map +1 -0
  646. package/{reference-value-getter.d.ts → dist/types/reference-value-getter.d.ts} +1 -0
  647. package/dist/types/reference-value-getter.d.ts.map +1 -0
  648. package/{reference-value-setter.d.ts → dist/types/reference-value-setter.d.ts} +1 -0
  649. package/dist/types/reference-value-setter.d.ts.map +1 -0
  650. package/{reference-value.d.ts → dist/types/reference-value.d.ts} +1 -0
  651. package/dist/types/reference-value.d.ts.map +1 -0
  652. package/{serializer-context-options.d.ts → dist/types/serializer-context-options.d.ts} +12 -4
  653. package/dist/types/serializer-context-options.d.ts.map +1 -0
  654. package/{serializer-context.d.ts → dist/types/serializer-context.d.ts} +75 -11
  655. package/dist/types/serializer-context.d.ts.map +1 -0
  656. package/{serializer.d.ts → dist/types/serializer.d.ts} +1 -0
  657. package/dist/types/serializer.d.ts.map +1 -0
  658. package/dist/types/serializers/any-serializer.d.ts +29 -0
  659. package/dist/types/serializers/any-serializer.d.ts.map +1 -0
  660. package/{serializers → dist/types/serializers}/array-buffer-serializer.d.ts +1 -0
  661. package/dist/types/serializers/array-buffer-serializer.d.ts.map +1 -0
  662. package/{serializers → dist/types/serializers}/array-serializer.d.ts +1 -0
  663. package/dist/types/serializers/array-serializer.d.ts.map +1 -0
  664. package/{serializers → dist/types/serializers}/boolean-serializer.d.ts +1 -0
  665. package/dist/types/serializers/boolean-serializer.d.ts.map +1 -0
  666. package/{serializers → dist/types/serializers}/data-view-serializer.d.ts +1 -0
  667. package/dist/types/serializers/data-view-serializer.d.ts.map +1 -0
  668. package/{serializers → dist/types/serializers}/date-serializer.d.ts +1 -0
  669. package/dist/types/serializers/date-serializer.d.ts.map +1 -0
  670. package/{serializers → dist/types/serializers}/float-32-array-serializer.d.ts +1 -0
  671. package/dist/types/serializers/float-32-array-serializer.d.ts.map +1 -0
  672. package/{serializers → dist/types/serializers}/float-64-array-serializer.d.ts +1 -0
  673. package/dist/types/serializers/float-64-array-serializer.d.ts.map +1 -0
  674. package/dist/types/serializers/index.d.ts +22 -0
  675. package/dist/types/serializers/index.d.ts.map +1 -0
  676. package/{serializers → dist/types/serializers}/int-16-array-serializer.d.ts +1 -0
  677. package/dist/types/serializers/int-16-array-serializer.d.ts.map +1 -0
  678. package/{serializers → dist/types/serializers}/int-32-array-serializer.d.ts +1 -0
  679. package/dist/types/serializers/int-32-array-serializer.d.ts.map +1 -0
  680. package/{serializers → dist/types/serializers}/int-8-array-serializer.d.ts +1 -0
  681. package/dist/types/serializers/int-8-array-serializer.d.ts.map +1 -0
  682. package/{serializers → dist/types/serializers}/map-serializer.d.ts +1 -12
  683. package/dist/types/serializers/map-serializer.d.ts.map +1 -0
  684. package/{serializers → dist/types/serializers}/number-serializer.d.ts +1 -0
  685. package/dist/types/serializers/number-serializer.d.ts.map +1 -0
  686. package/{serializers → dist/types/serializers}/set-serializer.d.ts +1 -0
  687. package/dist/types/serializers/set-serializer.d.ts.map +1 -0
  688. package/{serializers → dist/types/serializers}/string-serializer.d.ts +1 -0
  689. package/dist/types/serializers/string-serializer.d.ts.map +1 -0
  690. package/{serializers → dist/types/serializers}/type-serializer.d.ts +1 -0
  691. package/dist/types/serializers/type-serializer.d.ts.map +1 -0
  692. package/{serializers → dist/types/serializers}/uint-16-array-serializer.d.ts +1 -0
  693. package/dist/types/serializers/uint-16-array-serializer.d.ts.map +1 -0
  694. package/{serializers → dist/types/serializers}/uint-32-array-serializer.d.ts +1 -0
  695. package/dist/types/serializers/uint-32-array-serializer.d.ts.map +1 -0
  696. package/{serializers → dist/types/serializers}/uint-8-array-serializer.d.ts +1 -0
  697. package/dist/types/serializers/uint-8-array-serializer.d.ts.map +1 -0
  698. package/{serializers → dist/types/serializers}/uint-8-clamped-array-serializer.d.ts +1 -0
  699. package/dist/types/serializers/uint-8-clamped-array-serializer.d.ts.map +1 -0
  700. package/dist/types/serializers/unknown-serializer.d.ts +29 -0
  701. package/dist/types/serializers/unknown-serializer.d.ts.map +1 -0
  702. package/dist/types/type-abstraction.d.ts +7 -0
  703. package/dist/types/type-abstraction.d.ts.map +1 -0
  704. package/{type-argument.d.ts → dist/types/type-argument.d.ts} +2 -1
  705. package/dist/types/type-argument.d.ts.map +1 -0
  706. package/dist/types/type-configuration.d.ts +17 -0
  707. package/dist/types/type-configuration.d.ts.map +1 -0
  708. package/{type-context-entry.d.ts → dist/types/type-context-entry.d.ts} +1 -0
  709. package/dist/types/type-context-entry.d.ts.map +1 -0
  710. package/{type-context.d.ts → dist/types/type-context.d.ts} +1 -0
  711. package/dist/types/type-context.d.ts.map +1 -0
  712. package/{type-ctor.d.ts → dist/types/type-ctor.d.ts} +1 -0
  713. package/dist/types/type-ctor.d.ts.map +1 -0
  714. package/{type-fn.d.ts → dist/types/type-fn.d.ts} +1 -0
  715. package/dist/types/type-fn.d.ts.map +1 -0
  716. package/{type-like.d.ts → dist/types/type-like.d.ts} +1 -0
  717. package/dist/types/type-like.d.ts.map +1 -0
  718. package/{type-manager-options.d.ts → dist/types/type-manager-options.d.ts} +12 -2
  719. package/dist/types/type-manager-options.d.ts.map +1 -0
  720. package/dist/types/type-manager.d.ts +398 -0
  721. package/dist/types/type-manager.d.ts.map +1 -0
  722. package/dist/types/type-metadata-extractor.d.ts +9 -0
  723. package/dist/types/type-metadata-extractor.d.ts.map +1 -0
  724. package/{type-metadata-resolver.d.ts → dist/types/type-metadata-resolver.d.ts} +1 -0
  725. package/dist/types/type-metadata-resolver.d.ts.map +1 -0
  726. package/{type-metadata-symbol.d.ts → dist/types/type-metadata-symbol.d.ts} +1 -0
  727. package/dist/types/type-metadata-symbol.d.ts.map +1 -0
  728. package/{type-metadata.d.ts → dist/types/type-metadata.d.ts} +203 -29
  729. package/dist/types/type-metadata.d.ts.map +1 -0
  730. package/{type-name.d.ts → dist/types/type-name.d.ts} +1 -0
  731. package/dist/types/type-name.d.ts.map +1 -0
  732. package/{type-options-base.d.ts → dist/types/type-options-base.d.ts} +17 -0
  733. package/dist/types/type-options-base.d.ts.map +1 -0
  734. package/{type-options.d.ts → dist/types/type-options.d.ts} +1 -7
  735. package/dist/types/type-options.d.ts.map +1 -0
  736. package/{type-resolver.d.ts → dist/types/type-resolver.d.ts} +1 -0
  737. package/dist/types/type-resolver.d.ts.map +1 -0
  738. package/{type.d.ts → dist/types/type.d.ts} +1 -0
  739. package/dist/types/type.d.ts.map +1 -0
  740. package/dist/types/unknown.d.ts +10 -0
  741. package/dist/types/unknown.d.ts.map +1 -0
  742. package/dist/umd/index.js +2 -0
  743. package/dist/umd/index.js.map +1 -0
  744. package/package.json +26 -14
  745. package/factories/index.d.ts +0 -1
  746. package/index.js +0 -1
  747. package/metadata.d.ts +0 -42
  748. package/property-metadata.d.ts +0 -196
  749. package/reference-handlers/index.d.ts +0 -3
  750. package/type-abstraction.d.ts +0 -8
  751. package/type-manager.d.ts +0 -331
package/CHANGELOG.md CHANGED
@@ -5,7 +5,30 @@ 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
- ## [5.0.0] - 2022-**-**
8
+ ## [6.0.0] - 2023-03-22
9
+
10
+ ### Added
11
+
12
+ - Fluent api for declarative configuration.
13
+ - Property metadata sorters.
14
+ - Inject metadata sorters.
15
+ - Stable json stringify and parse functions.
16
+ - Any and unknown type serializers.
17
+ - Modules support.
18
+ - Performance improvements.
19
+
20
+ ### Changed
21
+
22
+ - If property type argument is not configured then no error will be thrown and property will be serialized as unknown.
23
+ - Weak reference maps changed to regular maps to allow more extension points.
24
+ - Reference handler names to be more self descriptive.
25
+
26
+ ### Migrating from previous version
27
+
28
+ - Replace old declarative configuration calls with newly introduced fluent api.
29
+ - You can still use raw declarative api through the options by adapting method calls.
30
+
31
+ ## [5.0.0] - 2022-07-31
9
32
 
10
33
  ### Added
11
34
 
@@ -0,0 +1,58 @@
1
+ # Contributing
2
+
3
+ ## Introduction
4
+
5
+ First off, thank you for considering contributing to `TypeManager.TS`. It's people like you that make `TypeManager.TS` such a great tool.
6
+
7
+ Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.
8
+
9
+ ## What kinds of contributions we are looking for
10
+
11
+ `TypeManager.TS` is an open source project and we love to receive contributions from our community — you! There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into `TypeManager.TS` itself.
12
+
13
+ ## Ground Rules
14
+
15
+ Please read our [CODE_OF_CONDUCT.md](https://github.com/dipscope/TypeManager.TS/blob/master/CODE_OF_CONDUCT.md) file to facilitate healthy and constructive community behavior.
16
+
17
+ * Ensure that code that goes into core meets our code style.
18
+ * Create issues for any major changes and enhancements that you wish to make. Discuss things transparently and get community feedback.
19
+ * Don't add any new classes to the codebase unless absolutely needed.
20
+ * Keep feature versions as small as possible, preferably one new feature per version.
21
+ * Be welcoming to newcomers and encourage diverse new contributors from all backgrounds.
22
+
23
+ ## Your First Contribution
24
+
25
+ Unsure where to begin contributing to `TypeManager.TS`? You can start by looking through the beginner and help-wanted issues. Beginner issues - issues which should only require a few lines of code, and a test or two. Help wanted issues - issues which should be a bit more involved than beginner issues.
26
+
27
+ ## How to report a bug
28
+
29
+ If you find a security vulnerability, do NOT open an issue. Email dipscope@gmail.com instead. In order to determine whether you are dealing with a security issue, ask yourself these two questions:
30
+
31
+ * Can I access something that's not mine, or something I shouldn't have access to?
32
+ * Can I disable something for other people?
33
+
34
+ If the answer to either of those two questions are «yes», then you're probably dealing with a security issue. Note that even if you answer «no» to both questions, you may still be dealing with a security issue, so if you're unsure, just email us at dipscope@gmail.com.
35
+
36
+ When filing an issue, make sure to answer these five questions:
37
+
38
+ 1. What version of `TypeManager.TS` are you using?
39
+ 2. What browser are you using?
40
+ 3. What did you do?
41
+ 4. What did you expect to see?
42
+ 5. What did you see instead?
43
+
44
+ ## How to suggest a feature
45
+
46
+ If you find yourself wishing for a feature that doesn't exist in `TypeManager.TS`, you are probably not alone. There are bound to be others out there with similar needs. Many of the features that `TypeManager.TS` has today have been added because our users saw the need. Open an issue on our issues list on GitHub which describes the feature you would like to see, why you need it, and how it should work.
47
+
48
+ ## Running the tests
49
+
50
+ If you are going to contribute make sure that all tests are passed by running `npm run test` command in the root project folder.
51
+
52
+ ## Deployment
53
+
54
+ This project representing a library and can be built by running `npm run build` command. All compiled production files will be available under `dist` folder.
55
+
56
+ ## Notes
57
+
58
+ We are continuously working on this file. If you have not found interesting information feel free to open an issue.
package/README.md CHANGED
@@ -155,7 +155,18 @@ for (const user of users)
155
155
  }
156
156
  ```
157
157
 
158
- Now we can use all power provided by `JavaScript` class instances. Want to know more? Let's dive into the details.
158
+ Now we can use all power provided by `JavaScript` class instances.
159
+
160
+ Furthermore `TypeManager.TS` provides you:
161
+
162
+ * Reflection abilities at runtime;
163
+ * Support for generic types;
164
+ * Handling of cyclic object references and different ways of serialization when they appear;
165
+ * Ability to configure serialization of 3rd party classes;
166
+ * Support for polymorphic types;
167
+ * 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);
168
+
169
+ Want to know more? Let's dive into the details.
159
170
 
160
171
  ## Installation
161
172
 
@@ -196,7 +207,7 @@ Here we have a `User` class with `Type` and `Property` decorators assigned to it
196
207
  The same configuration can be rewritten using declarative style.
197
208
 
198
209
  ```typescript
199
- import { TypeManager, PropertyName, PropertyOptions } from '@dipscope/type-manager';
210
+ import { TypeManager, TypeMetadata, TypeConfiguration } from '@dipscope/type-manager';
200
211
 
201
212
  export class User
202
213
  {
@@ -204,15 +215,24 @@ export class User
204
215
  public email: string;
205
216
  }
206
217
 
207
- TypeManager.configureTypeOptions(User, {
208
- propertyOptionsMap: new Map<PropertyName, PropertyOptions<any>>([
209
- ['name', { typeArgument: String }],
210
- ['email', { typeArgument: String }],
211
- ])
212
- });
218
+ export class UserConfiguration implements TypeConfiguration<User>
219
+ {
220
+ public configure(typeMetadata: TypeMetadata<User>): void
221
+ {
222
+ typeMetadata.configurePropertyMetadata('name')
223
+ .hasTypeArgument(String);
224
+
225
+ typeMetadata.configurePropertyMetadata('email')
226
+ .hasTypeArgument(String);
227
+
228
+ return;
229
+ }
230
+ }
231
+
232
+ TypeManager.applyTypeConfiguration(User, new UserConfiguration());
213
233
  ```
214
234
 
215
- As you can see now our `User` class defined without decorators. Instead you have to call `TypeManager` configure method and provide `TypeOptions` related to `User` type.
235
+ 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.
216
236
 
217
237
  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.
218
238
 
@@ -243,14 +263,14 @@ Static functions are not the only way to work with a `TypeManager`. You can also
243
263
  ```typescript
244
264
  import { TypeManager } from '@dipscope/type-manager';
245
265
 
246
- const userManager = new TypeManager(User);
247
- const userObject = userManager.serialize(new User());
248
- const user = userManager.deserialize(userObject);
266
+ const typeManager = new TypeManager();
267
+ const userObject = userManager.serialize(User, new User());
268
+ const user = userManager.deserialize(User, userObject);
249
269
 
250
270
  user instanceof User; // True.
251
271
  ```
252
272
 
253
- 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 by providing type manager options as a second optional constructor argument. If it is not required then it is better to use static methods. They are not invoking state control which results in better performance.
273
+ 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.
254
274
 
255
275
  ## Defining decorators
256
276
 
@@ -304,7 +324,7 @@ export class User
304
324
  }
305
325
  ```
306
326
 
307
- This will register a `name` property for a `User`. Each property has a type associated with it. In our case this is a `String`. By default if no configure options are provided decorator will try to resolve a property type using [reflect-metadata](https://github.com/rbuckton/reflect-metadata). If you are not using reflect metadata then such configuration will result a property type to be `unknown` and you will get an error during serialization. For such a case you have to explicitly define a property type.
327
+ This will register a `name` property for a `User`. Each property has a type associated with it. In our case this is a `String`. By default if no configure options are provided decorator will try to resolve a property type using [reflect-metadata](https://github.com/rbuckton/reflect-metadata). If you are not using reflect metadata then such configuration will result a property type to be `unknown` and it will result in direct serialization. For such a case you have to explicitly define a property type.
308
328
 
309
329
  ```typescript
310
330
  import { Type, Property } from '@dipscope/type-manager';
@@ -427,7 +447,7 @@ export class UserStatus
427
447
  @Type()
428
448
  export class User
429
449
  {
430
- @Property([UserStatus]) public userStatuses: UserStatus[];
450
+ @Property([UserStatus]) public userStatuses: Array<UserStatus>;
431
451
  }
432
452
  ```
433
453
 
@@ -463,7 +483,7 @@ export class UserStatus
463
483
  @Type()
464
484
  export class User
465
485
  {
466
- @Property(Array, [UserStatus]) public userStatuses: UserStatus[];
486
+ @Property(Array, [UserStatus]) public userStatuses: Array<UserStatus>;
467
487
  }
468
488
  ```
469
489
 
@@ -695,7 +715,7 @@ This will affect both serialized and deserialized default value. This will fit p
695
715
  import { Type, Property } from '@dipscope/type-manager';
696
716
 
697
717
  @Type({
698
- serializedDefaultValue: () => new User(),
718
+ serializedDefaultValue: () => {},
699
719
  deserializedDefaultValue: () => new User()
700
720
  })
701
721
  export class User
@@ -973,7 +993,7 @@ With this any value which can be converted to `String` will be converted properl
973
993
 
974
994
  ## Defining configuration manually
975
995
 
976
- There are circumstances when decorators cannot be used or you don't want to. For example you are using a 3rd party package and cannot decorate classes from it. Another use case when you want to configure some options globally. In such scenarios you can define the complete configuration through special static configure methods.
996
+ There are circumstances when decorators cannot be used or you don't want to. For example you are using a 3rd party package and cannot decorate classes from it. Another use case when you want to configure some options globally. In such scenarios you can define the complete configuration through special configure methods.
977
997
 
978
998
  We have separate methods to configure each type manager option, so the provided examples can be simplified to avoid creating additional object. It is useful when you need to configure only one option. In our examples we are always use the main one to give you a general overview.
979
999
 
@@ -999,33 +1019,44 @@ For the full list of available global options check `TypeOptionsBase` definition
999
1019
 
1000
1020
  ### Configuring options per type
1001
1021
 
1002
- Here is an example of declarative configuration which can be used for 3rd party or your own classes in addition to decorators.
1022
+ Here is an example of declarative configuration which can be used for 3rd party or your own classes. Basically you have exact same options as with decorators but configuration is done using method calls.
1003
1023
 
1004
1024
  ```typescript
1005
1025
  import { DateTime } from '@external-library';
1006
- import { TypeManagerOptions, TypeFn, TypeOptions, PropertyName, PropertyOptions } from '@dipscope/type-manager';
1026
+ import { TypeConfiguration, TypeMetadata, TypeManager } from '@dipscope/type-manager';
1007
1027
 
1008
- const dateTimeOptions: TypeOptions<DateTime> = {
1009
- alias: 'DateTime',
1010
- serializer: new DateTimeSerializer()
1011
- };
1028
+ export class DateTimeConfiguration implements TypeConfiguration<DateTime>
1029
+ {
1030
+ public configure(typeMetadata: TypeMetadata<DateTime>): void
1031
+ {
1032
+ typeMetadata.hasAlias('DateTime')
1033
+ .hasSerializer(new DateTimeSerializer());
1012
1034
 
1013
- const userOptions: TypeOptions<User> = {
1014
- alias: 'User',
1015
- propertyOptionsMap: new Map<PropertyName, PropertyOptions<any>>(
1016
- ['name', { typeArgument: String, serializable: true, alias: 'username' }],
1017
- ['createdAt', { typeArgument: DateTime }]
1018
- )
1019
- };
1035
+ return;
1036
+ }
1037
+ }
1020
1038
 
1021
- const typeManagerOptions: TypeManagerOptions = {
1022
- typeOptionsMap: new Map<TypeFn<any>, TypeOptions<any>>(
1023
- [DateTime, dateTimeOptions],
1024
- [User, userOptions]
1025
- )
1026
- };
1039
+ export class UserConfiguration implements TypeConfiguration<User>
1040
+ {
1041
+ public configure(typeMetadata: TypeMetadata<User>): void
1042
+ {
1043
+ typeMetadata.hasAlias('User')
1044
+ .hasSerializer(new DateTimeSerializer());
1027
1045
 
1028
- TypeManager.configure(typeManagerOptions);
1046
+ typeMetadata.configurePropertyMetadata('name')
1047
+ .isSerializable()
1048
+ .hasAlias('username')
1049
+ .hasTypeArgument(String);
1050
+
1051
+ typeMetadata.configurePropertyMetadata('createdAt')
1052
+ .hasTypeArgument(DateTime);
1053
+
1054
+ return;
1055
+ }
1056
+ }
1057
+
1058
+ TypeManager.applyTypeConfiguration(DateTime, new DateTimeConfiguration())
1059
+ .applyTypeConfiguration(User, new UserConfiguration());
1029
1060
  ```
1030
1061
 
1031
1062
  There is a well defined order to how type options are applied when using configure methods on one type. One should remember this when combining and overriding options in different places.
@@ -1035,7 +1066,7 @@ There is a well defined order to how type options are applied when using configu
1035
1066
  3. Declarative type options are applied;
1036
1067
  4. Property type options are applied;
1037
1068
 
1038
- Declarative configuration supports the same options as decorators. With such a configuration you can declare types like the following.
1069
+ With declarative configuration you can declare types like the following and keep metadata in another place.
1039
1070
 
1040
1071
  ```typescript
1041
1072
  export class User
@@ -1113,7 +1144,7 @@ import { Type, Property } from '@dipscope/type-manager';
1113
1144
  @Type()
1114
1145
  export class Plot
1115
1146
  {
1116
- @Property(Array, [Shape]) public shapes: Shape[];
1147
+ @Property(Array, [Shape]) public shapes: Array<Shape>;
1117
1148
  }
1118
1149
  ```
1119
1150
 
@@ -1411,11 +1442,11 @@ Now all property names will be converted to snake case while reading them from J
1411
1442
 
1412
1443
  ### Configuring reference handler
1413
1444
 
1414
- Reference handler defines how references to the same objects including a circular one should be treated. We have several reference handlers: direct, lead and path. Each of them can be used globally or per type.
1445
+ Reference handler defines how references to the same objects including a circular one should be treated. We have several reference handlers: circular, json path and plain. Each of them can be used globally or per type.
1415
1446
 
1416
- * Direct reference handler preserves object references without making any special changes;
1417
- * Path reference handler preserves object references using JSONPath notation;
1418
- * Lead reference handler preserves object references excluding a circular one. When circular reference is detected it will be set to undefined;
1447
+ * Circular reference handler preserves object references without making any special changes;
1448
+ * Json path reference handler preserves object references using JSONPath notation;
1449
+ * Plain reference handler preserves object references excluding a circular one. When circular reference is detected it will be set to undefined;
1419
1450
 
1420
1451
  There is nothing better to show the difference than code. For example we have two classes which reference each other:
1421
1452
 
@@ -1452,23 +1483,23 @@ const result = TypeManager.serialize(User, user);
1452
1483
  Here are results returned by different reference handlers:
1453
1484
 
1454
1485
  ```typescript
1455
- // Direct reference handler...
1486
+ // Circular reference handler...
1456
1487
  { company: { user: result } };
1457
1488
 
1458
- // Path reference handler...
1489
+ // Json path reference handler...
1459
1490
  { company: { user: { $ref: '$' } } };
1460
1491
 
1461
- // Lead reference handler...
1492
+ // Plain reference handler...
1462
1493
  { company: { user: undefined };
1463
1494
  ```
1464
1495
 
1465
- As you can see `DirectReferenceHandler` does not make changes to your data and completely fine until you have to convert circular reference structure to a string. `JSON.stringify` method which we are using under the hood does not support such conversions so you will encounter an error. In this case you can select another reference handler. For example `PathReferenceHandler` which produces JSON string using JSONPath format for circular references supported by many libraries. Or you can simply ignore circular reference when it should be converted to a string and use `LeadReferenceHandler`. To change default reference handler you have to use `TypeManager` configure methods.
1496
+ As you can see `CircularReferenceHandler` does not make changes to your data and completely fine until you have to convert circular reference structure to a string. `JSON.stringify` method which we are using under the hood does not support such conversions so you will encounter an error. In this case you can select another reference handler. For example `JsonPathReferenceHandler` which produces JSON string using JSONPath format for circular references supported by many libraries. Or you can simply ignore circular reference when it should be converted to a string and use `PlainReferenceHandler`. To change default reference handler you have to use `TypeManager` configure methods.
1466
1497
 
1467
1498
  ```typescript
1468
- import { TypeManagerOptions, TypeOptionsBase, PathReferenceHandler } from '@dipscope/type-manager';
1499
+ import { TypeManagerOptions, TypeOptionsBase, JsonPathReferenceHandler } from '@dipscope/type-manager';
1469
1500
 
1470
1501
  const typeOptionsBase: TypeOptionsBase<any> = {
1471
- referenceHandler: new PathReferenceHandler()
1502
+ referenceHandler: new JsonPathReferenceHandler()
1472
1503
  };
1473
1504
 
1474
1505
  const typeManagerOptions: TypeManagerOptions = {
@@ -1601,12 +1632,20 @@ export class DateTime
1601
1632
  Or declarative configuration.
1602
1633
 
1603
1634
  ```typescript
1604
- import { TypeManager } from '@dipscope/type-manager';
1635
+ import { TypeManager, TypeConfiguration, TypeMetadata } from '@dipscope/type-manager';
1605
1636
 
1606
- TypeManager.configureTypeOptions(DateTime, {
1607
- alias: 'DateTime',
1608
- serializer: new DateTimeSerializer()
1609
- });
1637
+ export class DateTimeConfiguration implements TypeConfiguration<DateTime>
1638
+ {
1639
+ public configure(typeMetadata: TypeMetadata<DateTime>): void
1640
+ {
1641
+ typeMetadata.hasAlias('DateTime')
1642
+ .hasSerializer(new DateTimeSerializer());
1643
+
1644
+ return;
1645
+ }
1646
+ }
1647
+
1648
+ TypeManager.applyTypeConfiguration(DateTime, new DateTimeConfiguration());
1610
1649
  ```
1611
1650
 
1612
1651
  With declarative configuration it is possible to override built in serializers if it's behaviour not suitable for your use cases. Also you can register serializers for types we not yet cover.
@@ -1645,7 +1684,7 @@ import { Injector as AngularInjector } from '@angular/core';
1645
1684
 
1646
1685
  const angularInjector: AngularInjector = ...; // Get framework injector in core module for example.
1647
1686
 
1648
- TypeManager.configureTypeOptionsBase({
1687
+ TypeManager.applyTypeOptionsBase({
1649
1688
  injector: new CustomInjector(angularInjector)
1650
1689
  });
1651
1690
  ```
@@ -1702,13 +1741,13 @@ Or declarative configuration.
1702
1741
  import { TypeManager } from '@dipscope/type-manager';
1703
1742
 
1704
1743
  // Overriding only for user type.
1705
- TypeManager.configureTypeOptions(User, {
1744
+ TypeManager.applyTypeOptions(User, {
1706
1745
  customData: { rank: 1 },
1707
1746
  factory: new CustomTypeFactory()
1708
1747
  });
1709
1748
 
1710
1749
  // Overriding for any type.
1711
- TypeManager.configureTypeOptionsBase({
1750
+ TypeManager.applyTypeOptionsBase({
1712
1751
  factory: new CustomTypeFactory()
1713
1752
  });
1714
1753
  ```
@@ -1751,7 +1790,7 @@ Public `convert` method receives a property name as it declared in a class. You
1751
1790
  ```typescript
1752
1791
  import { TypeManager } from '@dipscope/type-manager';
1753
1792
 
1754
- TypeManager.configureTypeOptionsBase({
1793
+ TypeManager.applyTypeOptionsBase({
1755
1794
  namingConvention: new CamelCaseNamingConvention()
1756
1795
  });
1757
1796
  ```
@@ -1766,6 +1805,7 @@ This section describes certain use cases to separate them from the main document
1766
1805
 
1767
1806
  Here is a list of types with built in serializers.
1768
1807
 
1808
+ * Any;
1769
1809
  * Array;
1770
1810
  * ArrayBuffer;
1771
1811
  * Boolean;
@@ -1784,6 +1824,7 @@ Here is a list of types with built in serializers.
1784
1824
  * Uint8ClampedArray;
1785
1825
  * Uint16Array;
1786
1826
  * Uint32Array;
1827
+ * Unknown;
1787
1828
 
1788
1829
  For these you don't have to do anything to make them work. You are free to [create a custom serializer](#defining-custom-serializer) or override built in one if it does not cover your use case.
1789
1830
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=alias.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias.js","sourceRoot":"","sources":["../../src/alias.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export class Any {
2
+ }
3
+ //# sourceMappingURL=any.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"any.js","sourceRoot":"","sources":["../../src/any.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,GAAG;CAGf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=custom-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-data.js","sourceRoot":"","sources":["../../src/custom-data.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=default-value-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-value-resolver.js","sourceRoot":"","sources":["../../src/default-value-resolver.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=default-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-value.js","sourceRoot":"","sources":["../../src/default-value.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=discriminant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discriminant.js","sourceRoot":"","sources":["../../src/discriminant.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=discriminator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discriminator.js","sourceRoot":"","sources":["../../src/discriminator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './type-factory';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { isNil, isUndefined } from 'lodash';
2
+ import { isCtorFunction } from '../functions/is-ctor-function';
3
+ export class TypeFactory {
4
+ build(typeContext, injector) {
5
+ var _a;
6
+ const typeMetadata = typeContext.typeMetadata;
7
+ const typeCtor = isCtorFunction(typeMetadata.typeFn) ? typeMetadata.typeFn : undefined;
8
+ if (isNil(typeCtor)) {
9
+ throw new Error(`${typeMetadata.typeName}: cannot build instance of abstract type.`);
10
+ }
11
+ const injectedKeys = new Array();
12
+ const args = new Array(typeCtor.length).fill(undefined);
13
+ for (const injectMetadata of typeMetadata.sortedInjectMetadatas) {
14
+ const argKey = injectMetadata.key;
15
+ if (!isNil(argKey)) {
16
+ args[injectMetadata.injectIndex] = (_a = typeContext.get(argKey)) === null || _a === void 0 ? void 0 : _a.value;
17
+ injectedKeys.push(argKey);
18
+ continue;
19
+ }
20
+ args[injectMetadata.injectIndex] = injector.get(injectMetadata.typeMetadata);
21
+ }
22
+ const type = new typeCtor(...args);
23
+ for (const typeContextEntry of typeContext.values()) {
24
+ const propertyMetadata = typeContextEntry.propertyMetadata;
25
+ if (!isNil(propertyMetadata)
26
+ && !isUndefined(typeContextEntry.value)
27
+ && !injectedKeys.includes(propertyMetadata.propertyName)) {
28
+ type[propertyMetadata.propertyName] = typeContextEntry.value;
29
+ }
30
+ }
31
+ return type;
32
+ }
33
+ }
34
+ //# sourceMappingURL=type-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-factory.js","sourceRoot":"","sources":["../../../src/factories/type-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAS/D,MAAM,OAAO,WAAW;IAUb,KAAK,CAAQ,WAA+B,EAAE,QAAkB;;QAEnE,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvF,IAAI,KAAK,CAAC,QAAQ,CAAC,EACnB;YACI,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,QAAQ,2CAA2C,CAAC,CAAC;SACxF;QAED,MAAM,YAAY,GAAG,IAAI,KAAK,EAAO,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7D,KAAK,MAAM,cAAc,IAAI,YAAY,CAAC,qBAAqB,EAC/D;YACI,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC;YAElC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAClB;gBACI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,MAAA,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,0CAAE,KAAK,CAAC;gBAElE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE1B,SAAS;aACZ;YAED,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;SAChF;QAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAQ,CAAC;QAE1C,KAAK,MAAM,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,EACnD;YACI,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;YAE3D,IACI,CAAC,KAAK,CAAC,gBAAgB,CAAC;mBACrB,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC;mBACpC,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAE5D;gBACI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;aAChE;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/factory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { isFunction, isObject } from 'lodash';
2
+ export function getOwnReflectMetadata(metadataKey, target) {
3
+ if (isObject(Reflect) && isFunction(Reflect.getOwnMetadata)) {
4
+ return Reflect.getOwnMetadata(metadataKey, target);
5
+ }
6
+ return undefined;
7
+ }
8
+ //# sourceMappingURL=get-own-reflect-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-own-reflect-metadata.js","sourceRoot":"","sources":["../../../src/functions/get-own-reflect-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AA4B9C,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,MAAW;IAElE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,EAC3D;QACI,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;KACtD;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { isFunction, isObject } from 'lodash';
2
+ export function getReflectMetadata(metadataKey, target, propertyKey) {
3
+ if (isObject(Reflect) && isFunction(Reflect.getMetadata)) {
4
+ return Reflect.getMetadata(metadataKey, target, propertyKey);
5
+ }
6
+ return undefined;
7
+ }
8
+ //# sourceMappingURL=get-reflect-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-reflect-metadata.js","sourceRoot":"","sources":["../../../src/functions/get-reflect-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AA8B9C,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,MAAW,EAAE,WAA4B;IAE7F,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EACxD;QACI,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;KAChE;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { words } from 'lodash';
2
+ export function getWords(x) {
3
+ return words(x);
4
+ }
5
+ //# sourceMappingURL=get-words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-words.js","sourceRoot":"","sources":["../../../src/functions/get-words.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAS/B,MAAM,UAAU,QAAQ,CAAC,CAAS;IAE9B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -1,5 +1,5 @@
1
- export * from './get-reflect-metadata';
2
1
  export * from './get-own-reflect-metadata';
2
+ export * from './get-reflect-metadata';
3
3
  export * from './get-words';
4
4
  export * from './is-arrow-function';
5
5
  export * from './is-ctor-function';
@@ -13,4 +13,7 @@ export * from './is-uint-8-array';
13
13
  export * from './is-uint-8-clamped-array';
14
14
  export * from './is-uint-16-array';
15
15
  export * from './is-uint-32-array';
16
+ export * from './json-parse';
17
+ export * from './json-stringify';
16
18
  export * from './name-of';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { isFunction } from 'lodash';
2
+ export function isArrowFunction(x) {
3
+ return isFunction(x) && x.prototype && x.prototype.constructor === x && x.name === '';
4
+ }
5
+ //# sourceMappingURL=is-arrow-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-arrow-function.js","sourceRoot":"","sources":["../../../src/functions/is-arrow-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AASpC,MAAM,UAAU,eAAe,CAAC,CAAM;IAElC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;AAC1F,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { isFunction } from 'lodash';
2
+ export function isCtorFunction(x) {
3
+ return isFunction(x) && x.prototype && x.prototype.constructor === x && x.name !== '';
4
+ }
5
+ //# sourceMappingURL=is-ctor-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-ctor-function.js","sourceRoot":"","sources":["../../../src/functions/is-ctor-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AASpC,MAAM,UAAU,cAAc,CAAC,CAAM;IAEjC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;AAC1F,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function isDataView(x) {
2
+ return x instanceof DataView;
3
+ }
4
+ //# sourceMappingURL=is-data-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-data-view.js","sourceRoot":"","sources":["../../../src/functions/is-data-view.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,UAAU,CAAC,CAAM;IAE7B,OAAO,CAAC,YAAY,QAAQ,CAAC;AACjC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function isFloat32Array(x) {
2
+ return x instanceof Float32Array;
3
+ }
4
+ //# sourceMappingURL=is-float-32-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-float-32-array.js","sourceRoot":"","sources":["../../../src/functions/is-float-32-array.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,CAAM;IAEjC,OAAO,CAAC,YAAY,YAAY,CAAC;AACrC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function isFloat64Array(x) {
2
+ return x instanceof Float64Array;
3
+ }
4
+ //# sourceMappingURL=is-float-64-array.js.map