@dipscope/type-manager 6.0.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/CHANGELOG.md +262 -247
  2. package/CONTRIBUTING.md +58 -58
  3. package/LICENSE.md +201 -201
  4. package/README.md +1901 -1887
  5. package/dist/es2015/alias.js +1 -1
  6. package/dist/es2015/any.js +2 -2
  7. package/dist/es2015/custom-context.js +58 -0
  8. package/dist/es2015/custom-context.js.map +1 -0
  9. package/dist/es2015/custom-key.js +8 -0
  10. package/dist/es2015/custom-key.js.map +1 -0
  11. package/dist/es2015/custom-option.js +2 -0
  12. package/dist/es2015/custom-option.js.map +1 -0
  13. package/dist/es2015/custom-value-resolver.js +2 -0
  14. package/dist/es2015/custom-value-resolver.js.map +1 -0
  15. package/dist/es2015/custom-value.js +2 -0
  16. package/dist/es2015/custom-value.js.map +1 -0
  17. package/dist/es2015/default-value-resolver.js +1 -1
  18. package/dist/es2015/default-value.js +1 -1
  19. package/dist/es2015/discriminant.js +1 -1
  20. package/dist/es2015/discriminator.js +1 -1
  21. package/dist/es2015/factories/index.js +1 -1
  22. package/dist/es2015/factories/type-factory.js +33 -33
  23. package/dist/es2015/factory.js +1 -1
  24. package/dist/es2015/functions/get-own-reflect-metadata.js +7 -7
  25. package/dist/es2015/functions/get-reflect-metadata.js +7 -7
  26. package/dist/es2015/functions/get-words.js +4 -4
  27. package/dist/es2015/functions/index.js +18 -18
  28. package/dist/es2015/functions/is-arrow-function.js +4 -4
  29. package/dist/es2015/functions/is-ctor-function.js +4 -4
  30. package/dist/es2015/functions/is-data-view.js +3 -3
  31. package/dist/es2015/functions/is-float-32-array.js +3 -3
  32. package/dist/es2015/functions/is-float-64-array.js +3 -3
  33. package/dist/es2015/functions/is-int-16-array.js +3 -3
  34. package/dist/es2015/functions/is-int-32-array.js +3 -3
  35. package/dist/es2015/functions/is-int-8-array.js +3 -3
  36. package/dist/es2015/functions/is-uint-16-array.js +3 -3
  37. package/dist/es2015/functions/is-uint-32-array.js +3 -3
  38. package/dist/es2015/functions/is-uint-8-array.js +3 -3
  39. package/dist/es2015/functions/is-uint-8-clamped-array.js +3 -3
  40. package/dist/es2015/functions/json-parse.js +3 -3
  41. package/dist/es2015/functions/json-stringify.js +66 -66
  42. package/dist/es2015/functions/name-of.js +7 -7
  43. package/dist/es2015/generic-argument.js +1 -1
  44. package/dist/es2015/generic-metadata-resolver.js +1 -1
  45. package/dist/es2015/generic-metadata.js +1 -1
  46. package/dist/es2015/generic-structure.js +1 -1
  47. package/dist/es2015/index.js +70 -66
  48. package/dist/es2015/index.js.map +1 -1
  49. package/dist/es2015/inject-index.js +1 -1
  50. package/dist/es2015/inject-internals.js +1 -1
  51. package/dist/es2015/inject-metadata.js +62 -62
  52. package/dist/es2015/inject-metadata.js.map +1 -1
  53. package/dist/es2015/inject-options.js +1 -1
  54. package/dist/es2015/inject-sorter.js +1 -1
  55. package/dist/es2015/inject-sorters/asc-inject-sorter.js +13 -13
  56. package/dist/es2015/inject-sorters/desc-inject-sorter.js +13 -13
  57. package/dist/es2015/inject-sorters/index.js +2 -2
  58. package/dist/es2015/inject.js +23 -23
  59. package/dist/es2015/injector.js +1 -1
  60. package/dist/es2015/injectors/index.js +1 -1
  61. package/dist/es2015/injectors/singleton-injector.js +30 -30
  62. package/dist/es2015/log-level.js +7 -7
  63. package/dist/es2015/log.js +49 -49
  64. package/dist/es2015/metadata.js +80 -80
  65. package/dist/es2015/metadata.js.map +1 -1
  66. package/dist/es2015/naming-convention.js +1 -1
  67. package/dist/es2015/naming-conventions/camel-case-naming-convention.js +16 -16
  68. package/dist/es2015/naming-conventions/flat-case-naming-convention.js +12 -12
  69. package/dist/es2015/naming-conventions/flat-upper-case-naming-convention.js +12 -12
  70. package/dist/es2015/naming-conventions/index.js +8 -8
  71. package/dist/es2015/naming-conventions/kebab-case-naming-convention.js +16 -16
  72. package/dist/es2015/naming-conventions/kebab-upper-case-naming-convention.js +16 -16
  73. package/dist/es2015/naming-conventions/pascal-case-naming-convention.js +17 -17
  74. package/dist/es2015/naming-conventions/snake-case-naming-convention.js +16 -16
  75. package/dist/es2015/naming-conventions/snake-upper-case-naming-convention.js +16 -16
  76. package/dist/es2015/property-internals.js +1 -1
  77. package/dist/es2015/property-metadata.js +268 -258
  78. package/dist/es2015/property-metadata.js.map +1 -1
  79. package/dist/es2015/property-name.js +1 -1
  80. package/dist/es2015/property-options.js +1 -1
  81. package/dist/es2015/property-sorter.js +1 -1
  82. package/dist/es2015/property-sorters/asc-property-sorter.js +13 -13
  83. package/dist/es2015/property-sorters/desc-property-sorter.js +13 -13
  84. package/dist/es2015/property-sorters/index.js +2 -2
  85. package/dist/es2015/property.js +38 -38
  86. package/dist/es2015/reference-callback.js +1 -1
  87. package/dist/es2015/reference-handler.js +1 -1
  88. package/dist/es2015/reference-handlers/circular-reference-handler.js +35 -35
  89. package/dist/es2015/reference-handlers/index.js +3 -3
  90. package/dist/es2015/reference-handlers/json-path-reference-handler.js +68 -68
  91. package/dist/es2015/reference-handlers/plain-reference-handler.js +31 -31
  92. package/dist/es2015/reference-key.js +1 -1
  93. package/dist/es2015/reference-value-getter.js +1 -1
  94. package/dist/es2015/reference-value-setter.js +1 -1
  95. package/dist/es2015/reference-value.js +1 -1
  96. package/dist/es2015/serializer-context-options.js +1 -1
  97. package/dist/es2015/serializer-context.js +281 -294
  98. package/dist/es2015/serializer-context.js.map +1 -1
  99. package/dist/es2015/serializer.js +1 -1
  100. package/dist/es2015/serializers/any-serializer.js +21 -21
  101. package/dist/es2015/serializers/array-buffer-serializer.js +40 -40
  102. package/dist/es2015/serializers/array-serializer.js +59 -59
  103. package/dist/es2015/serializers/boolean-serializer.js +54 -54
  104. package/dist/es2015/serializers/data-view-serializer.js +41 -41
  105. package/dist/es2015/serializers/date-serializer.js +33 -33
  106. package/dist/es2015/serializers/float-32-array-serializer.js +34 -34
  107. package/dist/es2015/serializers/float-64-array-serializer.js +34 -34
  108. package/dist/es2015/serializers/index.js +21 -21
  109. package/dist/es2015/serializers/int-16-array-serializer.js +34 -34
  110. package/dist/es2015/serializers/int-32-array-serializer.js +34 -34
  111. package/dist/es2015/serializers/int-8-array-serializer.js +34 -34
  112. package/dist/es2015/serializers/map-serializer.js +95 -95
  113. package/dist/es2015/serializers/number-serializer.js +48 -48
  114. package/dist/es2015/serializers/set-serializer.js +61 -61
  115. package/dist/es2015/serializers/string-serializer.js +54 -54
  116. package/dist/es2015/serializers/type-serializer.js +120 -120
  117. package/dist/es2015/serializers/uint-16-array-serializer.js +34 -34
  118. package/dist/es2015/serializers/uint-32-array-serializer.js +34 -34
  119. package/dist/es2015/serializers/uint-8-array-serializer.js +34 -34
  120. package/dist/es2015/serializers/uint-8-clamped-array-serializer.js +34 -34
  121. package/dist/es2015/serializers/unknown-serializer.js +21 -21
  122. package/dist/es2015/type-abstraction.js +1 -1
  123. package/dist/es2015/type-argument.js +1 -1
  124. package/dist/es2015/type-configuration.js +1 -1
  125. package/dist/es2015/type-context-entry.js +8 -8
  126. package/dist/es2015/type-context.js +30 -24
  127. package/dist/es2015/type-context.js.map +1 -1
  128. package/dist/es2015/type-ctor.js +1 -1
  129. package/dist/es2015/type-fn.js +1 -1
  130. package/dist/es2015/type-internals.js +2 -0
  131. package/dist/es2015/type-internals.js.map +1 -0
  132. package/dist/es2015/type-like.js +1 -1
  133. package/dist/es2015/type-manager-options.js +1 -1
  134. package/dist/es2015/type-manager.js +319 -313
  135. package/dist/es2015/type-manager.js.map +1 -1
  136. package/dist/es2015/type-metadata-resolver.js +1 -1
  137. package/dist/es2015/type-metadata-symbol.js +1 -1
  138. package/dist/es2015/type-metadata.js +413 -398
  139. package/dist/es2015/type-metadata.js.map +1 -1
  140. package/dist/es2015/type-name.js +1 -1
  141. package/dist/es2015/type-options-base.js +1 -1
  142. package/dist/es2015/type-options.js +1 -1
  143. package/dist/es2015/type-resolver.js +1 -1
  144. package/dist/es2015/type.js +7 -7
  145. package/dist/es2015/unknown.js +2 -2
  146. package/dist/es5/alias.js +1 -1
  147. package/dist/es5/any.js +6 -6
  148. package/dist/es5/custom-context.js +94 -0
  149. package/dist/es5/custom-context.js.map +1 -0
  150. package/dist/es5/custom-key.js +10 -0
  151. package/dist/es5/custom-key.js.map +1 -0
  152. package/dist/es5/custom-option.js +2 -0
  153. package/dist/es5/custom-option.js.map +1 -0
  154. package/dist/es5/custom-value-resolver.js +2 -0
  155. package/dist/es5/custom-value-resolver.js.map +1 -0
  156. package/dist/es5/custom-value.js +2 -0
  157. package/dist/es5/custom-value.js.map +1 -0
  158. package/dist/es5/default-value-resolver.js +1 -1
  159. package/dist/es5/default-value.js +1 -1
  160. package/dist/es5/discriminant.js +1 -1
  161. package/dist/es5/discriminator.js +1 -1
  162. package/dist/es5/factories/index.js +1 -1
  163. package/dist/es5/factories/type-factory.js +59 -59
  164. package/dist/es5/factory.js +1 -1
  165. package/dist/es5/functions/get-own-reflect-metadata.js +7 -7
  166. package/dist/es5/functions/get-reflect-metadata.js +7 -7
  167. package/dist/es5/functions/get-words.js +4 -4
  168. package/dist/es5/functions/index.js +18 -18
  169. package/dist/es5/functions/is-arrow-function.js +4 -4
  170. package/dist/es5/functions/is-ctor-function.js +4 -4
  171. package/dist/es5/functions/is-data-view.js +3 -3
  172. package/dist/es5/functions/is-float-32-array.js +3 -3
  173. package/dist/es5/functions/is-float-64-array.js +3 -3
  174. package/dist/es5/functions/is-int-16-array.js +3 -3
  175. package/dist/es5/functions/is-int-32-array.js +3 -3
  176. package/dist/es5/functions/is-int-8-array.js +3 -3
  177. package/dist/es5/functions/is-uint-16-array.js +3 -3
  178. package/dist/es5/functions/is-uint-32-array.js +3 -3
  179. package/dist/es5/functions/is-uint-8-array.js +3 -3
  180. package/dist/es5/functions/is-uint-8-clamped-array.js +3 -3
  181. package/dist/es5/functions/json-parse.js +3 -3
  182. package/dist/es5/functions/json-stringify.js +66 -66
  183. package/dist/es5/functions/name-of.js +7 -7
  184. package/dist/es5/generic-argument.js +1 -1
  185. package/dist/es5/generic-metadata-resolver.js +1 -1
  186. package/dist/es5/generic-metadata.js +1 -1
  187. package/dist/es5/generic-structure.js +1 -1
  188. package/dist/es5/index.js +70 -66
  189. package/dist/es5/index.js.map +1 -1
  190. package/dist/es5/inject-index.js +1 -1
  191. package/dist/es5/inject-internals.js +1 -1
  192. package/dist/es5/inject-metadata.js +83 -83
  193. package/dist/es5/inject-metadata.js.map +1 -1
  194. package/dist/es5/inject-options.js +1 -1
  195. package/dist/es5/inject-sorter.js +1 -1
  196. package/dist/es5/inject-sorters/asc-inject-sorter.js +17 -17
  197. package/dist/es5/inject-sorters/desc-inject-sorter.js +17 -17
  198. package/dist/es5/inject-sorters/index.js +2 -2
  199. package/dist/es5/inject.js +23 -23
  200. package/dist/es5/injector.js +1 -1
  201. package/dist/es5/injectors/index.js +1 -1
  202. package/dist/es5/injectors/singleton-injector.js +44 -44
  203. package/dist/es5/log-level.js +7 -7
  204. package/dist/es5/log.js +64 -64
  205. package/dist/es5/metadata.js +105 -105
  206. package/dist/es5/metadata.js.map +1 -1
  207. package/dist/es5/naming-convention.js +1 -1
  208. package/dist/es5/naming-conventions/camel-case-naming-convention.js +20 -20
  209. package/dist/es5/naming-conventions/flat-case-naming-convention.js +16 -16
  210. package/dist/es5/naming-conventions/flat-upper-case-naming-convention.js +16 -16
  211. package/dist/es5/naming-conventions/index.js +8 -8
  212. package/dist/es5/naming-conventions/kebab-case-naming-convention.js +20 -20
  213. package/dist/es5/naming-conventions/kebab-upper-case-naming-convention.js +20 -20
  214. package/dist/es5/naming-conventions/pascal-case-naming-convention.js +21 -21
  215. package/dist/es5/naming-conventions/snake-case-naming-convention.js +20 -20
  216. package/dist/es5/naming-conventions/snake-upper-case-naming-convention.js +20 -20
  217. package/dist/es5/property-internals.js +1 -1
  218. package/dist/es5/property-metadata.js +377 -363
  219. package/dist/es5/property-metadata.js.map +1 -1
  220. package/dist/es5/property-name.js +1 -1
  221. package/dist/es5/property-options.js +1 -1
  222. package/dist/es5/property-sorter.js +1 -1
  223. package/dist/es5/property-sorters/asc-property-sorter.js +17 -17
  224. package/dist/es5/property-sorters/desc-property-sorter.js +17 -17
  225. package/dist/es5/property-sorters/index.js +2 -2
  226. package/dist/es5/property.js +38 -38
  227. package/dist/es5/reference-callback.js +1 -1
  228. package/dist/es5/reference-handler.js +1 -1
  229. package/dist/es5/reference-handlers/circular-reference-handler.js +39 -39
  230. package/dist/es5/reference-handlers/index.js +3 -3
  231. package/dist/es5/reference-handlers/json-path-reference-handler.js +92 -92
  232. package/dist/es5/reference-handlers/plain-reference-handler.js +35 -35
  233. package/dist/es5/reference-key.js +1 -1
  234. package/dist/es5/reference-value-getter.js +1 -1
  235. package/dist/es5/reference-value-setter.js +1 -1
  236. package/dist/es5/reference-value.js +1 -1
  237. package/dist/es5/serializer-context-options.js +1 -1
  238. package/dist/es5/serializer-context.js +416 -433
  239. package/dist/es5/serializer-context.js.map +1 -1
  240. package/dist/es5/serializer.js +1 -1
  241. package/dist/es5/serializers/any-serializer.js +25 -25
  242. package/dist/es5/serializers/array-buffer-serializer.js +44 -44
  243. package/dist/es5/serializers/array-serializer.js +69 -69
  244. package/dist/es5/serializers/boolean-serializer.js +58 -58
  245. package/dist/es5/serializers/data-view-serializer.js +45 -45
  246. package/dist/es5/serializers/date-serializer.js +37 -37
  247. package/dist/es5/serializers/float-32-array-serializer.js +38 -38
  248. package/dist/es5/serializers/float-64-array-serializer.js +38 -38
  249. package/dist/es5/serializers/index.js +21 -21
  250. package/dist/es5/serializers/int-16-array-serializer.js +38 -38
  251. package/dist/es5/serializers/int-32-array-serializer.js +38 -38
  252. package/dist/es5/serializers/int-8-array-serializer.js +38 -38
  253. package/dist/es5/serializers/map-serializer.js +114 -114
  254. package/dist/es5/serializers/number-serializer.js +52 -52
  255. package/dist/es5/serializers/set-serializer.js +77 -77
  256. package/dist/es5/serializers/string-serializer.js +58 -58
  257. package/dist/es5/serializers/type-serializer.js +153 -153
  258. package/dist/es5/serializers/uint-16-array-serializer.js +38 -38
  259. package/dist/es5/serializers/uint-32-array-serializer.js +38 -38
  260. package/dist/es5/serializers/uint-8-array-serializer.js +38 -38
  261. package/dist/es5/serializers/uint-8-clamped-array-serializer.js +38 -38
  262. package/dist/es5/serializers/unknown-serializer.js +25 -25
  263. package/dist/es5/type-abstraction.js +1 -1
  264. package/dist/es5/type-argument.js +1 -1
  265. package/dist/es5/type-configuration.js +1 -1
  266. package/dist/es5/type-context-entry.js +10 -10
  267. package/dist/es5/type-context.js +32 -26
  268. package/dist/es5/type-context.js.map +1 -1
  269. package/dist/es5/type-ctor.js +1 -1
  270. package/dist/es5/type-fn.js +1 -1
  271. package/dist/es5/type-internals.js +2 -0
  272. package/dist/es5/type-internals.js.map +1 -0
  273. package/dist/es5/type-like.js +1 -1
  274. package/dist/es5/type-manager-options.js +1 -1
  275. package/dist/es5/type-manager.js +412 -406
  276. package/dist/es5/type-manager.js.map +1 -1
  277. package/dist/es5/type-metadata-resolver.js +1 -1
  278. package/dist/es5/type-metadata-symbol.js +1 -1
  279. package/dist/es5/type-metadata.js +563 -544
  280. package/dist/es5/type-metadata.js.map +1 -1
  281. package/dist/es5/type-name.js +1 -1
  282. package/dist/es5/type-options-base.js +1 -1
  283. package/dist/es5/type-options.js +1 -1
  284. package/dist/es5/type-resolver.js +1 -1
  285. package/dist/es5/type.js +7 -7
  286. package/dist/es5/unknown.js +6 -6
  287. package/dist/types/alias.d.ts +6 -6
  288. package/dist/types/any.d.ts +9 -9
  289. package/dist/types/custom-context.d.ts +89 -0
  290. package/dist/types/custom-context.d.ts.map +1 -0
  291. package/dist/types/custom-key.d.ts +29 -0
  292. package/dist/types/custom-key.d.ts.map +1 -0
  293. package/dist/types/custom-option.d.ts +11 -0
  294. package/dist/types/custom-option.d.ts.map +1 -0
  295. package/dist/types/custom-value-resolver.d.ts +7 -0
  296. package/dist/types/custom-value-resolver.d.ts.map +1 -0
  297. package/dist/types/custom-value.d.ts +7 -0
  298. package/dist/types/custom-value.d.ts.map +1 -0
  299. package/dist/types/default-value-resolver.d.ts +7 -7
  300. package/dist/types/default-value.d.ts +7 -7
  301. package/dist/types/discriminant.d.ts +8 -8
  302. package/dist/types/discriminator.d.ts +6 -6
  303. package/dist/types/factories/index.d.ts +1 -1
  304. package/dist/types/factories/type-factory.d.ts +19 -19
  305. package/dist/types/factory.d.ts +18 -18
  306. package/dist/types/functions/get-own-reflect-metadata.d.ts +9 -9
  307. package/dist/types/functions/get-reflect-metadata.d.ts +10 -10
  308. package/dist/types/functions/get-words.d.ts +8 -8
  309. package/dist/types/functions/index.d.ts +18 -18
  310. package/dist/types/functions/is-arrow-function.d.ts +8 -8
  311. package/dist/types/functions/is-ctor-function.d.ts +8 -8
  312. package/dist/types/functions/is-data-view.d.ts +8 -8
  313. package/dist/types/functions/is-float-32-array.d.ts +8 -8
  314. package/dist/types/functions/is-float-64-array.d.ts +8 -8
  315. package/dist/types/functions/is-int-16-array.d.ts +8 -8
  316. package/dist/types/functions/is-int-32-array.d.ts +8 -8
  317. package/dist/types/functions/is-int-8-array.d.ts +8 -8
  318. package/dist/types/functions/is-uint-16-array.d.ts +8 -8
  319. package/dist/types/functions/is-uint-32-array.d.ts +8 -8
  320. package/dist/types/functions/is-uint-8-array.d.ts +8 -8
  321. package/dist/types/functions/is-uint-8-clamped-array.d.ts +8 -8
  322. package/dist/types/functions/json-parse.d.ts +9 -9
  323. package/dist/types/functions/json-stringify.d.ts +10 -10
  324. package/dist/types/functions/name-of.d.ts +8 -8
  325. package/dist/types/generic-argument.d.ts +7 -7
  326. package/dist/types/generic-metadata-resolver.d.ts +7 -7
  327. package/dist/types/generic-metadata.d.ts +7 -7
  328. package/dist/types/generic-structure.d.ts +7 -7
  329. package/dist/types/index.d.ts +70 -66
  330. package/dist/types/index.d.ts.map +1 -1
  331. package/dist/types/inject-index.d.ts +6 -6
  332. package/dist/types/inject-internals.d.ts +14 -14
  333. package/dist/types/inject-internals.d.ts.map +1 -1
  334. package/dist/types/inject-metadata.d.ts +117 -117
  335. package/dist/types/inject-metadata.d.ts.map +1 -1
  336. package/dist/types/inject-options.d.ts +22 -22
  337. package/dist/types/inject-sorter.d.ts +19 -19
  338. package/dist/types/inject-sorters/asc-inject-sorter.d.ts +20 -20
  339. package/dist/types/inject-sorters/desc-inject-sorter.d.ts +20 -20
  340. package/dist/types/inject-sorters/index.d.ts +2 -2
  341. package/dist/types/inject.d.ts +10 -10
  342. package/dist/types/injector.d.ts +16 -16
  343. package/dist/types/injectors/index.d.ts +1 -1
  344. package/dist/types/injectors/singleton-injector.d.ts +31 -31
  345. package/dist/types/log-level.d.ts +11 -11
  346. package/dist/types/log.d.ts +95 -95
  347. package/dist/types/metadata.d.ts +99 -100
  348. package/dist/types/metadata.d.ts.map +1 -1
  349. package/dist/types/naming-convention.d.ts +15 -15
  350. package/dist/types/naming-conventions/camel-case-naming-convention.d.ts +26 -26
  351. package/dist/types/naming-conventions/flat-case-naming-convention.d.ts +25 -25
  352. package/dist/types/naming-conventions/flat-upper-case-naming-convention.d.ts +25 -25
  353. package/dist/types/naming-conventions/index.d.ts +8 -8
  354. package/dist/types/naming-conventions/kebab-case-naming-convention.d.ts +26 -26
  355. package/dist/types/naming-conventions/kebab-upper-case-naming-convention.d.ts +26 -26
  356. package/dist/types/naming-conventions/pascal-case-naming-convention.d.ts +26 -26
  357. package/dist/types/naming-conventions/snake-case-naming-convention.d.ts +26 -26
  358. package/dist/types/naming-conventions/snake-upper-case-naming-convention.d.ts +26 -26
  359. package/dist/types/property-internals.d.ts +35 -28
  360. package/dist/types/property-internals.d.ts.map +1 -1
  361. package/dist/types/property-metadata.d.ts +359 -352
  362. package/dist/types/property-metadata.d.ts.map +1 -1
  363. package/dist/types/property-name.d.ts +6 -6
  364. package/dist/types/property-options.d.ts +116 -116
  365. package/dist/types/property-options.d.ts.map +1 -1
  366. package/dist/types/property-sorter.d.ts +19 -19
  367. package/dist/types/property-sorters/asc-property-sorter.d.ts +20 -20
  368. package/dist/types/property-sorters/desc-property-sorter.d.ts +20 -20
  369. package/dist/types/property-sorters/index.d.ts +2 -2
  370. package/dist/types/property.d.ts +13 -13
  371. package/dist/types/reference-callback.d.ts +7 -7
  372. package/dist/types/reference-handler.d.ts +31 -31
  373. package/dist/types/reference-handlers/circular-reference-handler.d.ts +32 -32
  374. package/dist/types/reference-handlers/index.d.ts +3 -3
  375. package/dist/types/reference-handlers/json-path-reference-handler.d.ts +55 -55
  376. package/dist/types/reference-handlers/plain-reference-handler.d.ts +33 -33
  377. package/dist/types/reference-key.d.ts +6 -6
  378. package/dist/types/reference-value-getter.d.ts +7 -7
  379. package/dist/types/reference-value-setter.d.ts +7 -7
  380. package/dist/types/reference-value.d.ts +6 -6
  381. package/dist/types/serializer-context-options.d.ts +50 -50
  382. package/dist/types/serializer-context.d.ts +418 -425
  383. package/dist/types/serializer-context.d.ts.map +1 -1
  384. package/dist/types/serializer.d.ts +27 -27
  385. package/dist/types/serializers/any-serializer.d.ts +28 -28
  386. package/dist/types/serializers/array-buffer-serializer.d.ts +28 -28
  387. package/dist/types/serializers/array-serializer.d.ts +28 -28
  388. package/dist/types/serializers/boolean-serializer.d.ts +37 -37
  389. package/dist/types/serializers/data-view-serializer.d.ts +28 -28
  390. package/dist/types/serializers/date-serializer.d.ts +28 -28
  391. package/dist/types/serializers/float-32-array-serializer.d.ts +28 -28
  392. package/dist/types/serializers/float-64-array-serializer.d.ts +28 -28
  393. package/dist/types/serializers/index.d.ts +21 -21
  394. package/dist/types/serializers/int-16-array-serializer.d.ts +28 -28
  395. package/dist/types/serializers/int-32-array-serializer.d.ts +28 -28
  396. package/dist/types/serializers/int-8-array-serializer.d.ts +28 -28
  397. package/dist/types/serializers/map-serializer.d.ts +28 -28
  398. package/dist/types/serializers/number-serializer.d.ts +37 -37
  399. package/dist/types/serializers/set-serializer.d.ts +28 -28
  400. package/dist/types/serializers/string-serializer.d.ts +37 -37
  401. package/dist/types/serializers/type-serializer.d.ts +28 -28
  402. package/dist/types/serializers/uint-16-array-serializer.d.ts +28 -28
  403. package/dist/types/serializers/uint-32-array-serializer.d.ts +28 -28
  404. package/dist/types/serializers/uint-8-array-serializer.d.ts +28 -28
  405. package/dist/types/serializers/uint-8-clamped-array-serializer.d.ts +28 -28
  406. package/dist/types/serializers/unknown-serializer.d.ts +28 -28
  407. package/dist/types/type-abstraction.d.ts +6 -6
  408. package/dist/types/type-argument.d.ts +9 -9
  409. package/dist/types/type-configuration.d.ts +16 -16
  410. package/dist/types/type-context-entry.d.ts +36 -36
  411. package/dist/types/type-context.d.ts +70 -58
  412. package/dist/types/type-context.d.ts.map +1 -1
  413. package/dist/types/type-ctor.d.ts +6 -6
  414. package/dist/types/type-fn.d.ts +8 -8
  415. package/dist/types/type-internals.d.ts +15 -0
  416. package/dist/types/type-internals.d.ts.map +1 -0
  417. package/dist/types/type-like.d.ts +7 -7
  418. package/dist/types/type-manager-options.d.ts +33 -33
  419. package/dist/types/type-manager.d.ts +413 -397
  420. package/dist/types/type-manager.d.ts.map +1 -1
  421. package/dist/types/type-metadata-resolver.d.ts +8 -8
  422. package/dist/types/type-metadata-symbol.d.ts +6 -6
  423. package/dist/types/type-metadata.d.ts +513 -495
  424. package/dist/types/type-metadata.d.ts.map +1 -1
  425. package/dist/types/type-name.d.ts +6 -6
  426. package/dist/types/type-options-base.d.ts +106 -106
  427. package/dist/types/type-options-base.d.ts.map +1 -1
  428. package/dist/types/type-options.d.ts +72 -72
  429. package/dist/types/type-resolver.d.ts +7 -7
  430. package/dist/types/type.d.ts +9 -9
  431. package/dist/types/unknown.d.ts +9 -9
  432. package/dist/umd/index.js +1 -1
  433. package/dist/umd/index.js.map +1 -1
  434. package/package.json +63 -63
  435. package/dist/es2015/custom-data.js +0 -2
  436. package/dist/es2015/custom-data.js.map +0 -1
  437. package/dist/es2015/type-metadata-extractor.js +0 -2
  438. package/dist/es2015/type-metadata-extractor.js.map +0 -1
  439. package/dist/es5/custom-data.js +0 -2
  440. package/dist/es5/custom-data.js.map +0 -1
  441. package/dist/es5/type-metadata-extractor.js +0 -2
  442. package/dist/es5/type-metadata-extractor.js.map +0 -1
  443. package/dist/types/custom-data.d.ts +0 -7
  444. package/dist/types/custom-data.d.ts.map +0 -1
  445. package/dist/types/type-metadata-extractor.d.ts +0 -9
  446. package/dist/types/type-metadata-extractor.d.ts.map +0 -1
@@ -1,364 +1,378 @@
1
- import { __extends } from "tslib";
2
- import { isFunction, isNil, isUndefined, merge } from 'lodash';
3
- import { getReflectMetadata } from './functions/get-reflect-metadata';
4
- import { Metadata } from './metadata';
5
- var PropertyMetadata = (function (_super) {
6
- __extends(PropertyMetadata, _super);
7
- function PropertyMetadata(declaringTypeMetadata, propertyName, propertyOptions) {
8
- var _this = _super.call(this, declaringTypeMetadata.typeMetadataExtractor, declaringTypeMetadata.typeFnMap) || this;
9
- _this.declaringTypeMetadata = declaringTypeMetadata;
10
- _this.propertyName = propertyName;
11
- _this.reflectTypeFn = getReflectMetadata('design:type', declaringTypeMetadata.typeFn.prototype, propertyName);
12
- _this.propertyOptions = _this.constructPropertyOptions(propertyOptions);
13
- _this.propertyInternals = _this.constructPropertyInternals();
14
- _this.configure(propertyOptions);
15
- return _this;
16
- }
17
- Object.defineProperty(PropertyMetadata.prototype, "alias", {
18
- get: function () {
19
- return this.propertyOptions.alias;
20
- },
21
- enumerable: false,
22
- configurable: true
23
- });
24
- Object.defineProperty(PropertyMetadata.prototype, "customData", {
25
- get: function () {
26
- var customData = {};
27
- var typeCustomData = this.typeMetadata.customData;
28
- var propertyCustomData = this.propertyOptions.customData;
29
- if (!isNil(typeCustomData)) {
30
- merge(customData, typeCustomData);
31
- }
32
- if (!isNil(propertyCustomData)) {
33
- merge(customData, propertyCustomData);
34
- }
35
- return customData;
36
- },
37
- enumerable: false,
38
- configurable: true
39
- });
40
- Object.defineProperty(PropertyMetadata.prototype, "serializedNullValue", {
41
- get: function () {
42
- if (this.preserveNull) {
43
- return null;
44
- }
45
- return this.serializedDefaultValue;
46
- },
47
- enumerable: false,
48
- configurable: true
49
- });
50
- Object.defineProperty(PropertyMetadata.prototype, "serializedDefaultValue", {
51
- get: function () {
52
- var _a, _b;
53
- if (this.useDefaultValue) {
54
- var serializedDefaultValue = (_b = (_a = this.propertyOptions.defaultValue) !== null && _a !== void 0 ? _a : this.propertyOptions.serializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.serializedDefaultValue;
55
- return isFunction(serializedDefaultValue) ? serializedDefaultValue() : serializedDefaultValue;
56
- }
57
- return undefined;
58
- },
59
- enumerable: false,
60
- configurable: true
61
- });
62
- Object.defineProperty(PropertyMetadata.prototype, "deserializedNullValue", {
63
- get: function () {
64
- if (this.preserveNull) {
65
- return null;
66
- }
67
- return this.deserializedDefaultValue;
68
- },
69
- enumerable: false,
70
- configurable: true
71
- });
72
- Object.defineProperty(PropertyMetadata.prototype, "deserializedDefaultValue", {
73
- get: function () {
74
- var _a, _b;
75
- if (this.useDefaultValue) {
76
- var deserializedDefaultValue = (_b = (_a = this.propertyOptions.defaultValue) !== null && _a !== void 0 ? _a : this.propertyOptions.deserializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.deserializedDefaultValue;
77
- return isFunction(deserializedDefaultValue) ? deserializedDefaultValue() : deserializedDefaultValue;
78
- }
79
- return undefined;
80
- },
81
- enumerable: false,
82
- configurable: true
83
- });
84
- Object.defineProperty(PropertyMetadata.prototype, "serializedPropertyName", {
85
- get: function () {
86
- var _a;
87
- var alias = this.alias;
88
- if (isNil(alias)) {
89
- var namingConvention = (_a = this.namingConvention) !== null && _a !== void 0 ? _a : this.declaringTypeMetadata.namingConvention;
90
- var propertyName = namingConvention ? namingConvention.convert(this.propertyName) : this.propertyName;
91
- return propertyName;
92
- }
93
- return alias;
94
- },
95
- enumerable: false,
96
- configurable: true
97
- });
98
- Object.defineProperty(PropertyMetadata.prototype, "deserializedPropertyName", {
99
- get: function () {
100
- return this.propertyName;
101
- },
102
- enumerable: false,
103
- configurable: true
104
- });
105
- Object.defineProperty(PropertyMetadata.prototype, "deserializable", {
106
- get: function () {
107
- return this.propertyOptions.deserializable;
108
- },
109
- enumerable: false,
110
- configurable: true
111
- });
112
- Object.defineProperty(PropertyMetadata.prototype, "genericArguments", {
113
- get: function () {
114
- return this.propertyOptions.genericArguments;
115
- },
116
- enumerable: false,
117
- configurable: true
118
- });
119
- Object.defineProperty(PropertyMetadata.prototype, "genericStructures", {
120
- get: function () {
121
- return this.propertyInternals.genericStructures;
122
- },
123
- enumerable: false,
124
- configurable: true
125
- });
126
- Object.defineProperty(PropertyMetadata.prototype, "genericMetadataResolvers", {
127
- get: function () {
128
- return this.propertyInternals.genericMetadataResolvers;
129
- },
130
- enumerable: false,
131
- configurable: true
132
- });
133
- Object.defineProperty(PropertyMetadata.prototype, "genericMetadatas", {
134
- get: function () {
135
- var genericStructures = this.genericStructures;
136
- var genericMetadataResolvers = this.genericMetadataResolvers;
137
- if (isNil(genericStructures) || isNil(genericMetadataResolvers)) {
138
- return undefined;
139
- }
140
- return this.defineGenericMetadatas(genericStructures, genericMetadataResolvers);
141
- },
142
- enumerable: false,
143
- configurable: true
144
- });
145
- Object.defineProperty(PropertyMetadata.prototype, "namingConvention", {
146
- get: function () {
147
- var _a;
148
- return (_a = this.propertyOptions.namingConvention) !== null && _a !== void 0 ? _a : this.typeMetadata.namingConvention;
149
- },
150
- enumerable: false,
151
- configurable: true
152
- });
153
- Object.defineProperty(PropertyMetadata.prototype, "referenceHandler", {
154
- get: function () {
155
- var _a;
156
- return (_a = this.propertyOptions.referenceHandler) !== null && _a !== void 0 ? _a : this.typeMetadata.referenceHandler;
157
- },
158
- enumerable: false,
159
- configurable: true
160
- });
161
- Object.defineProperty(PropertyMetadata.prototype, "serializable", {
162
- get: function () {
163
- return this.propertyOptions.serializable;
164
- },
165
- enumerable: false,
166
- configurable: true
167
- });
168
- Object.defineProperty(PropertyMetadata.prototype, "serializationConfigured", {
169
- get: function () {
170
- return !isNil(this.serializable) || !isNil(this.deserializable);
171
- },
172
- enumerable: false,
173
- configurable: true
174
- });
175
- Object.defineProperty(PropertyMetadata.prototype, "serializer", {
176
- get: function () {
177
- var _a;
178
- return (_a = this.propertyOptions.serializer) !== null && _a !== void 0 ? _a : this.typeMetadata.serializer;
179
- },
180
- enumerable: false,
181
- configurable: true
182
- });
183
- Object.defineProperty(PropertyMetadata.prototype, "typeArgument", {
184
- get: function () {
185
- return this.propertyOptions.typeArgument;
186
- },
187
- enumerable: false,
188
- configurable: true
189
- });
190
- Object.defineProperty(PropertyMetadata.prototype, "typeMetadataResolver", {
191
- get: function () {
192
- return this.propertyInternals.typeMetadataResolver;
193
- },
194
- enumerable: false,
195
- configurable: true
196
- });
197
- Object.defineProperty(PropertyMetadata.prototype, "typeMetadata", {
198
- get: function () {
199
- return this.typeMetadataResolver(this.typeArgument);
200
- },
201
- enumerable: false,
202
- configurable: true
203
- });
204
- Object.defineProperty(PropertyMetadata.prototype, "preserveNull", {
205
- get: function () {
206
- var _a;
207
- return (_a = this.propertyOptions.preserveNull) !== null && _a !== void 0 ? _a : this.typeMetadata.preserveNull;
208
- },
209
- enumerable: false,
210
- configurable: true
211
- });
212
- Object.defineProperty(PropertyMetadata.prototype, "useDefaultValue", {
213
- get: function () {
214
- var _a;
215
- return (_a = this.propertyOptions.useDefaultValue) !== null && _a !== void 0 ? _a : this.typeMetadata.useDefaultValue;
216
- },
217
- enumerable: false,
218
- configurable: true
219
- });
220
- Object.defineProperty(PropertyMetadata.prototype, "useImplicitConversion", {
221
- get: function () {
222
- var _a;
223
- return (_a = this.propertyOptions.useImplicitConversion) !== null && _a !== void 0 ? _a : this.typeMetadata.useImplicitConversion;
224
- },
225
- enumerable: false,
226
- configurable: true
227
- });
228
- PropertyMetadata.prototype.constructPropertyOptions = function (propertyOptions) {
229
- var _a;
230
- propertyOptions.typeArgument = (_a = propertyOptions.typeArgument) !== null && _a !== void 0 ? _a : this.reflectTypeFn;
231
- return propertyOptions;
232
- };
233
- PropertyMetadata.prototype.constructPropertyInternals = function () {
234
- var typeMetadataResolver = this.defineTypeMetadataResolver(this.propertyOptions.typeArgument);
235
- var propertyInternals = { typeMetadataResolver: typeMetadataResolver };
236
- return propertyInternals;
237
- };
238
- PropertyMetadata.prototype.hasAlias = function (alias) {
239
- this.propertyOptions.alias = alias;
240
- return this;
241
- };
242
- PropertyMetadata.prototype.hasCustomData = function (customData) {
243
- var _a;
244
- this.propertyOptions.customData = merge((_a = this.propertyOptions.customData) !== null && _a !== void 0 ? _a : {}, customData !== null && customData !== void 0 ? customData : {});
245
- return this;
246
- };
247
- PropertyMetadata.prototype.hasDefaultValue = function (defaultValue) {
248
- this.propertyOptions.defaultValue = defaultValue;
249
- return this;
250
- };
251
- PropertyMetadata.prototype.hasSerializedDefaultValue = function (serializedDefaultValue) {
252
- this.propertyOptions.serializedDefaultValue = serializedDefaultValue;
253
- return this;
254
- };
255
- PropertyMetadata.prototype.hasDeserializedDefaultValue = function (deserializedDefaultValue) {
256
- this.propertyOptions.deserializedDefaultValue = deserializedDefaultValue;
257
- return this;
258
- };
259
- PropertyMetadata.prototype.isDeserializable = function (deserializable) {
260
- if (deserializable === void 0) { deserializable = true; }
261
- this.propertyOptions.deserializable = deserializable;
262
- return this;
263
- };
264
- PropertyMetadata.prototype.isSerializable = function (serializable) {
265
- if (serializable === void 0) { serializable = true; }
266
- this.propertyOptions.serializable = serializable;
267
- return this;
268
- };
269
- PropertyMetadata.prototype.hasGenericArguments = function (genericArguments) {
270
- this.propertyOptions.genericArguments = genericArguments;
271
- if (isNil(genericArguments)) {
272
- this.propertyInternals.genericStructures = undefined;
273
- this.propertyInternals.genericMetadataResolvers = undefined;
274
- return this;
275
- }
276
- var genericStructures = this.defineGenericStructures(genericArguments);
277
- this.propertyInternals.genericStructures = genericStructures;
278
- this.propertyInternals.genericMetadataResolvers = this.defineGenericMetadataResolvers(genericStructures);
279
- return this;
280
- };
281
- PropertyMetadata.prototype.hasNamingConvention = function (namingConvention) {
282
- this.propertyOptions.namingConvention = namingConvention;
283
- return this;
284
- };
285
- PropertyMetadata.prototype.hasReferenceHandler = function (referenceHandler) {
286
- this.propertyOptions.referenceHandler = referenceHandler;
287
- return this;
288
- };
289
- PropertyMetadata.prototype.hasSerializer = function (serializer) {
290
- this.propertyOptions.serializer = serializer;
291
- return this;
292
- };
293
- PropertyMetadata.prototype.hasTypeArgument = function (typeArgument) {
294
- this.propertyOptions.typeArgument = typeArgument !== null && typeArgument !== void 0 ? typeArgument : this.reflectTypeFn;
295
- this.propertyInternals.typeMetadataResolver = this.defineTypeMetadataResolver(this.propertyOptions.typeArgument);
296
- return this;
297
- };
298
- PropertyMetadata.prototype.shouldPreserveNull = function (preserveNull) {
299
- if (preserveNull === void 0) { preserveNull = true; }
300
- this.propertyOptions.preserveNull = preserveNull;
301
- return this;
302
- };
303
- PropertyMetadata.prototype.shouldUseDefaultValue = function (useDefaultValue) {
304
- if (useDefaultValue === void 0) { useDefaultValue = true; }
305
- this.propertyOptions.useDefaultValue = useDefaultValue;
306
- return this;
307
- };
308
- PropertyMetadata.prototype.shouldUseImplicitConversion = function (useImplicitConversion) {
309
- if (useImplicitConversion === void 0) { useImplicitConversion = true; }
310
- this.propertyOptions.useImplicitConversion = useImplicitConversion;
311
- return this;
312
- };
313
- PropertyMetadata.prototype.configure = function (propertyOptions) {
314
- if (!isUndefined(propertyOptions.alias)) {
315
- this.hasAlias(propertyOptions.alias);
316
- }
317
- if (!isUndefined(propertyOptions.customData)) {
318
- this.hasCustomData(propertyOptions.customData);
319
- }
320
- if (!isUndefined(propertyOptions.defaultValue)) {
321
- this.hasDefaultValue(propertyOptions.defaultValue);
322
- }
323
- if (!isUndefined(propertyOptions.serializedDefaultValue)) {
324
- this.hasSerializedDefaultValue(propertyOptions.serializedDefaultValue);
325
- }
326
- if (!isUndefined(propertyOptions.deserializedDefaultValue)) {
327
- this.hasDeserializedDefaultValue(propertyOptions.deserializedDefaultValue);
328
- }
329
- if (!isUndefined(propertyOptions.deserializable)) {
330
- this.isDeserializable(propertyOptions.deserializable);
331
- }
332
- if (!isUndefined(propertyOptions.genericArguments)) {
333
- this.hasGenericArguments(propertyOptions.genericArguments);
334
- }
335
- if (!isUndefined(propertyOptions.namingConvention)) {
336
- this.hasNamingConvention(propertyOptions.namingConvention);
337
- }
338
- if (!isUndefined(propertyOptions.referenceHandler)) {
339
- this.hasReferenceHandler(propertyOptions.referenceHandler);
340
- }
341
- if (!isUndefined(propertyOptions.serializable)) {
342
- this.isSerializable(propertyOptions.serializable);
343
- }
344
- if (!isUndefined(propertyOptions.serializer)) {
345
- this.hasSerializer(propertyOptions.serializer);
346
- }
347
- if (!isUndefined(propertyOptions.typeArgument)) {
348
- this.hasTypeArgument(propertyOptions.typeArgument);
349
- }
350
- if (!isUndefined(propertyOptions.preserveNull)) {
351
- this.shouldPreserveNull(propertyOptions.preserveNull);
352
- }
353
- if (!isUndefined(propertyOptions.useDefaultValue)) {
354
- this.shouldUseDefaultValue(propertyOptions.useDefaultValue);
355
- }
356
- if (!isUndefined(propertyOptions.useImplicitConversion)) {
357
- this.shouldUseImplicitConversion(propertyOptions.useImplicitConversion);
358
- }
359
- return this;
360
- };
361
- return PropertyMetadata;
362
- }(Metadata));
363
- export { PropertyMetadata };
1
+ import { __extends } from "tslib";
2
+ import { isFunction, isNil, isUndefined } from 'lodash';
3
+ import { CustomContext } from './custom-context';
4
+ import { getReflectMetadata } from './functions/get-reflect-metadata';
5
+ import { Metadata } from './metadata';
6
+ var PropertyMetadata = (function (_super) {
7
+ __extends(PropertyMetadata, _super);
8
+ function PropertyMetadata(declaringTypeMetadata, propertyName, propertyOptions) {
9
+ var _this = _super.call(this, declaringTypeMetadata.typeManager) || this;
10
+ _this.declaringTypeMetadata = declaringTypeMetadata;
11
+ _this.propertyName = propertyName;
12
+ _this.reflectTypeFn = getReflectMetadata('design:type', declaringTypeMetadata.typeFn.prototype, propertyName);
13
+ _this.propertyOptions = _this.constructPropertyOptions(propertyOptions);
14
+ _this.propertyInternals = _this.constructPropertyInternals();
15
+ _this.configure(propertyOptions);
16
+ return _this;
17
+ }
18
+ Object.defineProperty(PropertyMetadata.prototype, "alias", {
19
+ get: function () {
20
+ return this.propertyOptions.alias;
21
+ },
22
+ enumerable: false,
23
+ configurable: true
24
+ });
25
+ Object.defineProperty(PropertyMetadata.prototype, "customOptions", {
26
+ get: function () {
27
+ return this.propertyOptions.customOptions;
28
+ },
29
+ enumerable: false,
30
+ configurable: true
31
+ });
32
+ Object.defineProperty(PropertyMetadata.prototype, "customContext", {
33
+ get: function () {
34
+ var customContext = this.propertyInternals.customContext;
35
+ if (isNil(customContext)) {
36
+ this.propertyOptions.customOptions = new Array();
37
+ this.propertyInternals.customContext = new CustomContext(this.propertyOptions.customOptions);
38
+ customContext = this.propertyInternals.customContext;
39
+ }
40
+ return customContext;
41
+ },
42
+ enumerable: false,
43
+ configurable: true
44
+ });
45
+ Object.defineProperty(PropertyMetadata.prototype, "serializedNullValue", {
46
+ get: function () {
47
+ if (this.preserveNull) {
48
+ return null;
49
+ }
50
+ return this.serializedDefaultValue;
51
+ },
52
+ enumerable: false,
53
+ configurable: true
54
+ });
55
+ Object.defineProperty(PropertyMetadata.prototype, "serializedDefaultValue", {
56
+ get: function () {
57
+ var _a, _b;
58
+ if (this.useDefaultValue) {
59
+ var serializedDefaultValue = (_b = (_a = this.propertyOptions.defaultValue) !== null && _a !== void 0 ? _a : this.propertyOptions.serializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.serializedDefaultValue;
60
+ var defaultValue = isFunction(serializedDefaultValue)
61
+ ? serializedDefaultValue()
62
+ : serializedDefaultValue;
63
+ return defaultValue;
64
+ }
65
+ return undefined;
66
+ },
67
+ enumerable: false,
68
+ configurable: true
69
+ });
70
+ Object.defineProperty(PropertyMetadata.prototype, "deserializedNullValue", {
71
+ get: function () {
72
+ if (this.preserveNull) {
73
+ return null;
74
+ }
75
+ return this.deserializedDefaultValue;
76
+ },
77
+ enumerable: false,
78
+ configurable: true
79
+ });
80
+ Object.defineProperty(PropertyMetadata.prototype, "deserializedDefaultValue", {
81
+ get: function () {
82
+ var _a, _b;
83
+ if (this.useDefaultValue) {
84
+ var deserializedDefaultValue = (_b = (_a = this.propertyOptions.defaultValue) !== null && _a !== void 0 ? _a : this.propertyOptions.deserializedDefaultValue) !== null && _b !== void 0 ? _b : this.typeMetadata.deserializedDefaultValue;
85
+ var defaultValue = isFunction(deserializedDefaultValue)
86
+ ? deserializedDefaultValue()
87
+ : deserializedDefaultValue;
88
+ return defaultValue;
89
+ }
90
+ return undefined;
91
+ },
92
+ enumerable: false,
93
+ configurable: true
94
+ });
95
+ Object.defineProperty(PropertyMetadata.prototype, "serializedPropertyName", {
96
+ get: function () {
97
+ var _a;
98
+ var alias = this.alias;
99
+ if (isNil(alias)) {
100
+ var namingConvention = (_a = this.namingConvention) !== null && _a !== void 0 ? _a : this.declaringTypeMetadata.namingConvention;
101
+ var propertyName = namingConvention ? namingConvention.convert(this.propertyName) : this.propertyName;
102
+ return propertyName;
103
+ }
104
+ return alias;
105
+ },
106
+ enumerable: false,
107
+ configurable: true
108
+ });
109
+ Object.defineProperty(PropertyMetadata.prototype, "deserializedPropertyName", {
110
+ get: function () {
111
+ return this.propertyName;
112
+ },
113
+ enumerable: false,
114
+ configurable: true
115
+ });
116
+ Object.defineProperty(PropertyMetadata.prototype, "deserializable", {
117
+ get: function () {
118
+ return this.propertyOptions.deserializable;
119
+ },
120
+ enumerable: false,
121
+ configurable: true
122
+ });
123
+ Object.defineProperty(PropertyMetadata.prototype, "genericArguments", {
124
+ get: function () {
125
+ return this.propertyOptions.genericArguments;
126
+ },
127
+ enumerable: false,
128
+ configurable: true
129
+ });
130
+ Object.defineProperty(PropertyMetadata.prototype, "genericStructures", {
131
+ get: function () {
132
+ return this.propertyInternals.genericStructures;
133
+ },
134
+ enumerable: false,
135
+ configurable: true
136
+ });
137
+ Object.defineProperty(PropertyMetadata.prototype, "genericMetadataResolvers", {
138
+ get: function () {
139
+ return this.propertyInternals.genericMetadataResolvers;
140
+ },
141
+ enumerable: false,
142
+ configurable: true
143
+ });
144
+ Object.defineProperty(PropertyMetadata.prototype, "genericMetadatas", {
145
+ get: function () {
146
+ var genericStructures = this.genericStructures;
147
+ var genericMetadataResolvers = this.genericMetadataResolvers;
148
+ if (isNil(genericStructures) || isNil(genericMetadataResolvers)) {
149
+ return undefined;
150
+ }
151
+ return this.defineGenericMetadatas(genericStructures, genericMetadataResolvers);
152
+ },
153
+ enumerable: false,
154
+ configurable: true
155
+ });
156
+ Object.defineProperty(PropertyMetadata.prototype, "namingConvention", {
157
+ get: function () {
158
+ var _a;
159
+ return (_a = this.propertyOptions.namingConvention) !== null && _a !== void 0 ? _a : this.typeMetadata.namingConvention;
160
+ },
161
+ enumerable: false,
162
+ configurable: true
163
+ });
164
+ Object.defineProperty(PropertyMetadata.prototype, "referenceHandler", {
165
+ get: function () {
166
+ var _a;
167
+ return (_a = this.propertyOptions.referenceHandler) !== null && _a !== void 0 ? _a : this.typeMetadata.referenceHandler;
168
+ },
169
+ enumerable: false,
170
+ configurable: true
171
+ });
172
+ Object.defineProperty(PropertyMetadata.prototype, "serializable", {
173
+ get: function () {
174
+ return this.propertyOptions.serializable;
175
+ },
176
+ enumerable: false,
177
+ configurable: true
178
+ });
179
+ Object.defineProperty(PropertyMetadata.prototype, "serializationConfigured", {
180
+ get: function () {
181
+ return !isNil(this.serializable) || !isNil(this.deserializable);
182
+ },
183
+ enumerable: false,
184
+ configurable: true
185
+ });
186
+ Object.defineProperty(PropertyMetadata.prototype, "serializer", {
187
+ get: function () {
188
+ var _a;
189
+ return (_a = this.propertyOptions.serializer) !== null && _a !== void 0 ? _a : this.typeMetadata.serializer;
190
+ },
191
+ enumerable: false,
192
+ configurable: true
193
+ });
194
+ Object.defineProperty(PropertyMetadata.prototype, "typeArgument", {
195
+ get: function () {
196
+ return this.propertyOptions.typeArgument;
197
+ },
198
+ enumerable: false,
199
+ configurable: true
200
+ });
201
+ Object.defineProperty(PropertyMetadata.prototype, "typeMetadataResolver", {
202
+ get: function () {
203
+ return this.propertyInternals.typeMetadataResolver;
204
+ },
205
+ enumerable: false,
206
+ configurable: true
207
+ });
208
+ Object.defineProperty(PropertyMetadata.prototype, "typeMetadata", {
209
+ get: function () {
210
+ return this.typeMetadataResolver(this.typeArgument);
211
+ },
212
+ enumerable: false,
213
+ configurable: true
214
+ });
215
+ Object.defineProperty(PropertyMetadata.prototype, "preserveNull", {
216
+ get: function () {
217
+ var _a;
218
+ return (_a = this.propertyOptions.preserveNull) !== null && _a !== void 0 ? _a : this.typeMetadata.preserveNull;
219
+ },
220
+ enumerable: false,
221
+ configurable: true
222
+ });
223
+ Object.defineProperty(PropertyMetadata.prototype, "useDefaultValue", {
224
+ get: function () {
225
+ var _a;
226
+ return (_a = this.propertyOptions.useDefaultValue) !== null && _a !== void 0 ? _a : this.typeMetadata.useDefaultValue;
227
+ },
228
+ enumerable: false,
229
+ configurable: true
230
+ });
231
+ Object.defineProperty(PropertyMetadata.prototype, "useImplicitConversion", {
232
+ get: function () {
233
+ var _a;
234
+ return (_a = this.propertyOptions.useImplicitConversion) !== null && _a !== void 0 ? _a : this.typeMetadata.useImplicitConversion;
235
+ },
236
+ enumerable: false,
237
+ configurable: true
238
+ });
239
+ PropertyMetadata.prototype.constructPropertyOptions = function (propertyOptions) {
240
+ var _a;
241
+ propertyOptions.typeArgument = (_a = propertyOptions.typeArgument) !== null && _a !== void 0 ? _a : this.reflectTypeFn;
242
+ return propertyOptions;
243
+ };
244
+ PropertyMetadata.prototype.constructPropertyInternals = function () {
245
+ var typeMetadataResolver = this.defineTypeMetadataResolver(this.propertyOptions.typeArgument);
246
+ var customOptions = this.propertyOptions.customOptions;
247
+ var customContext = isNil(customOptions) ? undefined : new CustomContext(customOptions);
248
+ var propertyInternals = { typeMetadataResolver: typeMetadataResolver, customContext: customContext };
249
+ return propertyInternals;
250
+ };
251
+ PropertyMetadata.prototype.hasAlias = function (alias) {
252
+ this.propertyOptions.alias = alias;
253
+ return this;
254
+ };
255
+ PropertyMetadata.prototype.hasCustomOptions = function (customOptions) {
256
+ if (!isNil(customOptions)) {
257
+ this.customContext.configure(customOptions);
258
+ }
259
+ return this;
260
+ };
261
+ PropertyMetadata.prototype.hasDefaultValue = function (defaultValue) {
262
+ this.propertyOptions.defaultValue = defaultValue;
263
+ return this;
264
+ };
265
+ PropertyMetadata.prototype.hasSerializedDefaultValue = function (serializedDefaultValue) {
266
+ this.propertyOptions.serializedDefaultValue = serializedDefaultValue;
267
+ return this;
268
+ };
269
+ PropertyMetadata.prototype.hasDeserializedDefaultValue = function (deserializedDefaultValue) {
270
+ this.propertyOptions.deserializedDefaultValue = deserializedDefaultValue;
271
+ return this;
272
+ };
273
+ PropertyMetadata.prototype.isDeserializable = function (deserializable) {
274
+ if (deserializable === void 0) { deserializable = true; }
275
+ this.propertyOptions.deserializable = deserializable;
276
+ return this;
277
+ };
278
+ PropertyMetadata.prototype.isSerializable = function (serializable) {
279
+ if (serializable === void 0) { serializable = true; }
280
+ this.propertyOptions.serializable = serializable;
281
+ return this;
282
+ };
283
+ PropertyMetadata.prototype.hasGenericArguments = function (genericArguments) {
284
+ this.propertyOptions.genericArguments = genericArguments;
285
+ if (isNil(genericArguments)) {
286
+ this.propertyInternals.genericStructures = undefined;
287
+ this.propertyInternals.genericMetadataResolvers = undefined;
288
+ return this;
289
+ }
290
+ var genericStructures = this.defineGenericStructures(genericArguments);
291
+ this.propertyInternals.genericStructures = genericStructures;
292
+ this.propertyInternals.genericMetadataResolvers = this.defineGenericMetadataResolvers(genericStructures);
293
+ return this;
294
+ };
295
+ PropertyMetadata.prototype.hasNamingConvention = function (namingConvention) {
296
+ this.propertyOptions.namingConvention = namingConvention;
297
+ return this;
298
+ };
299
+ PropertyMetadata.prototype.hasReferenceHandler = function (referenceHandler) {
300
+ this.propertyOptions.referenceHandler = referenceHandler;
301
+ return this;
302
+ };
303
+ PropertyMetadata.prototype.hasSerializer = function (serializer) {
304
+ this.propertyOptions.serializer = serializer;
305
+ return this;
306
+ };
307
+ PropertyMetadata.prototype.hasTypeArgument = function (typeArgument) {
308
+ this.propertyOptions.typeArgument = typeArgument !== null && typeArgument !== void 0 ? typeArgument : this.reflectTypeFn;
309
+ this.propertyInternals.typeMetadataResolver = this.defineTypeMetadataResolver(this.propertyOptions.typeArgument);
310
+ return this;
311
+ };
312
+ PropertyMetadata.prototype.shouldPreserveNull = function (preserveNull) {
313
+ if (preserveNull === void 0) { preserveNull = true; }
314
+ this.propertyOptions.preserveNull = preserveNull;
315
+ return this;
316
+ };
317
+ PropertyMetadata.prototype.shouldUseDefaultValue = function (useDefaultValue) {
318
+ if (useDefaultValue === void 0) { useDefaultValue = true; }
319
+ this.propertyOptions.useDefaultValue = useDefaultValue;
320
+ return this;
321
+ };
322
+ PropertyMetadata.prototype.shouldUseImplicitConversion = function (useImplicitConversion) {
323
+ if (useImplicitConversion === void 0) { useImplicitConversion = true; }
324
+ this.propertyOptions.useImplicitConversion = useImplicitConversion;
325
+ return this;
326
+ };
327
+ PropertyMetadata.prototype.configure = function (propertyOptions) {
328
+ if (!isUndefined(propertyOptions.alias)) {
329
+ this.hasAlias(propertyOptions.alias);
330
+ }
331
+ if (!isUndefined(propertyOptions.customOptions)) {
332
+ this.hasCustomOptions(propertyOptions.customOptions);
333
+ }
334
+ if (!isUndefined(propertyOptions.defaultValue)) {
335
+ this.hasDefaultValue(propertyOptions.defaultValue);
336
+ }
337
+ if (!isUndefined(propertyOptions.serializedDefaultValue)) {
338
+ this.hasSerializedDefaultValue(propertyOptions.serializedDefaultValue);
339
+ }
340
+ if (!isUndefined(propertyOptions.deserializedDefaultValue)) {
341
+ this.hasDeserializedDefaultValue(propertyOptions.deserializedDefaultValue);
342
+ }
343
+ if (!isUndefined(propertyOptions.deserializable)) {
344
+ this.isDeserializable(propertyOptions.deserializable);
345
+ }
346
+ if (!isUndefined(propertyOptions.genericArguments)) {
347
+ this.hasGenericArguments(propertyOptions.genericArguments);
348
+ }
349
+ if (!isUndefined(propertyOptions.namingConvention)) {
350
+ this.hasNamingConvention(propertyOptions.namingConvention);
351
+ }
352
+ if (!isUndefined(propertyOptions.referenceHandler)) {
353
+ this.hasReferenceHandler(propertyOptions.referenceHandler);
354
+ }
355
+ if (!isUndefined(propertyOptions.serializable)) {
356
+ this.isSerializable(propertyOptions.serializable);
357
+ }
358
+ if (!isUndefined(propertyOptions.serializer)) {
359
+ this.hasSerializer(propertyOptions.serializer);
360
+ }
361
+ if (!isUndefined(propertyOptions.typeArgument)) {
362
+ this.hasTypeArgument(propertyOptions.typeArgument);
363
+ }
364
+ if (!isUndefined(propertyOptions.preserveNull)) {
365
+ this.shouldPreserveNull(propertyOptions.preserveNull);
366
+ }
367
+ if (!isUndefined(propertyOptions.useDefaultValue)) {
368
+ this.shouldUseDefaultValue(propertyOptions.useDefaultValue);
369
+ }
370
+ if (!isUndefined(propertyOptions.useImplicitConversion)) {
371
+ this.shouldUseImplicitConversion(propertyOptions.useImplicitConversion);
372
+ }
373
+ return this;
374
+ };
375
+ return PropertyMetadata;
376
+ }(Metadata));
377
+ export { PropertyMetadata };
364
378
  //# sourceMappingURL=property-metadata.js.map