{"_id":"@dipscope/type-manager","_rev":"40-0afb9f7f6860300a9cb5b65201add219","name":"@dipscope/type-manager","dist-tags":{"beta":"7.0.0-beta.0","latest":"8.3.0"},"versions":{"1.0.0":{"name":"@dipscope/type-manager","version":"1.0.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@1.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"67d34eb70870e0ee981e4cda42bad794e41dc6c2","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-1.0.0.tgz","fileCount":35,"integrity":"sha512-CweRfCApUqWfn0TtylqMFSy/7zEr5V1R7vKV4bEg0oRZ5Us5pNAtOnLOSFT6+DpvsuRXNvcQ0dwf+4Eg1BKM9g==","signatures":[{"sig":"MEQCIE7q4NbzyMla6q2cbwgDJ10grCQejdMTId61CECPyoi+AiA48co/JbUG04zuvZfCSy9/zjJ4Dhho2gSndSuvEj7isw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2aoZCRA9TVsSAnZWagAATTUP/1fS6Tzl1Rx3xV//3ZAn\nRq9PXDN7woID0ISPd40hKpd1ojGQjvX0cS70jMLHvSYhCNtlZtu32kXYKRA4\nqgexWCj0bCEOUl99emO4TBNFR3+PqomtXyv+DMAEQxuEm3eG8GjR7jN8Ur2C\nuHVoaoa2lGZ01pTS5c3h9ksdpT53+7N7WfETLCxdxYI4FB4DUMP/s3Ql87aT\nY3bwGF4x/2ZZLISADD15n7XCncxZ3dV1X+A1cxe6xZnznq4cCcsLWQ9Esv8s\nsKmwzJAZCI6aGKWv3Gxx2ZdRHEgNdQ5KXvyZtWNyO1d+/IpdnRYkU8+O5ogB\nXgdnil+0UaWRbp4muJjxbVR6A/oNUPUo6BUhzf82gJST+hw8mG9sY5okIhpY\nfNfMTPiARTYhtxTc185DzyHleA8epOi2NNllJgFb8eGsEt1rsXKwH+20ilFH\nkIQljX9oqnIk4jcAkrfEG6170lhSejMZjPeSZSJbr+B0Wg8LcYPP2m91X300\n2sT/cXN0KpNL7C9HE9Zj99UZL0tOXQStvh8uN76oCrBCCJlcqG8v8x9rMfkK\nK8Q+aAU6BdjIJYDW6+JSoHpDOo4ecmLEqurHeHrV1W951XdgX5kBlOuNOV8k\n/Z+fjSi+Mo4Ilb1T+X8Xav2ud0FDn+7T3XdchclANXsoCBb76EQ7j0T2DLA5\nr4xh\r\n=dq9J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/bundle.js","types":"dist/index.d.ts","gitHead":"1ddab08f1cba35bbbd16beffae0f88c16508b94e","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npx webpack --config=webpack.config.js"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.11.3","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.15.0","jasmine":"^3.6.3","ts-node":"^9.0.0","webpack":"^5.6.0","ts-loader":"^8.0.11","jasmine-ts":"^0.3.0","typescript":"^4.1.2","webpack-cli":"^4.2.0","@types/jasmine":"^3.6.2","webpack-dev-server":"^3.11.0","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.9.1","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.9.1"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_1.0.0_1608100377037_0.0008478234172717425","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@dipscope/type-manager","version":"1.1.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@1.1.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"8fd17a2443a2e298e06ecf2846113f10fa6f67b5","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-1.1.0.tgz","fileCount":40,"integrity":"sha512-dNNwIXnzAy3vK0ivZV+rtxq1SbfHOesk0kR33g+Wjb9bCTufGgQYyIlICXrLeOHba6U/ukaGGXMGLAo+56UnOg==","signatures":[{"sig":"MEQCIDpmeUeBLyyEygrWtUVXGssg8E0ZeHCtfIfAScEcZiafAiAVNC4w7gGxwgx0WejunV4sBiy08I2uvmK01k/3LaDI0A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4jsGCRA9TVsSAnZWagAAmDcP/2AqD5kQr2pDz8NN1BvH\nqw4+EtDPFVTf8mrJ2d20FeTXL0/j/HCnrRvINJ43U87y/ypQ5h5BGD93Ms8u\nbbTGVlrFyL0AJvQGxtKhuaBBc/Thgop2WaQ7wRP9ZzbeH/dy9S+tsTKmf4z3\npwrUtbgIW/vzpPCiGW8CeKzQnWRXMbrXbMIE3TVD7j/rknKzWs60zXbOJN6j\nJRNu56t/Exr7itf5BvWp1GbBizDyw4DIAZv1h7XJ5AaWs9gXTn9UGBOs1h0y\nlC5VML3Z22rBXKEcQ2LNDPs0AS3BFfttM7WEIg445DilwgJlCi/d8uiHnZfW\npeeenXq5ek3ahzQSXff3qBBgmuHcUq2PfH2LRKIH7uiJp+w3Fhcnd5/tr/ly\ngW1lqR1f9jEabfOoZThvAuWcG3oWwEypcmj8CFFHocKFtOpaNm4l1SEJJrEt\niCCCPThg5kZKZsDV34wuogolpvrrdQwVxQjkh5oIeLtq5gX47h3ZkIQ6Yh20\nnXz8NfNN67C3QOikX/dM8cgjqACt/dIIBs8dypOTGof0P9wtrWil038LxL6p\nEx091slzfuoFj6YcVucQ8zoAqff7Ho4VZ4mguJxtQKi7+rdYbKC0DbqgFkDq\nGIcdcfNaNmN+sAxj5W1hMIlLHQcuswgUZHjO+mHe49ZxKeg/IjawGLts8xi5\nQX7A\r\n=lEo4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/bundle.js","types":"dist/index.d.ts","gitHead":"9a1bd57a789c73d0361ed213b09fab46ae208bf2","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npx webpack --config=webpack.config.js"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.11.3","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.15.0","jasmine":"^3.6.3","ts-node":"^9.0.0","webpack":"^5.6.0","ts-loader":"^8.0.11","jasmine-ts":"^0.3.0","typescript":"^4.1.2","webpack-cli":"^4.2.0","@types/jasmine":"^3.6.2","webpack-dev-server":"^3.11.0","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.9.1","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.9.1"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_1.1.0_1608661766167_0.9168098958430644","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@dipscope/type-manager","version":"1.2.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@1.2.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"c9d19938eab687fcc17ff0041bea01e3f6c08089","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-1.2.0.tgz","fileCount":41,"integrity":"sha512-XZqMFcOAqFDQLdfSYELfEUhkeuVTYz0cAFsvGmP99irFXZMPiHb5JuwmZdQ7MN0Nhmyzv6itLJQRFXadccZIcQ==","signatures":[{"sig":"MEUCIQDV8AHH2CzwhMqImqceO7x8g+Jg6+kZL9gQVX+8vqD7PgIgEoRvlEfSXh1HtsWaYGVV+vd/hDYmxXh5J6waYwrAw0o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":224423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf43w+CRA9TVsSAnZWagAAxB0QAJtQ/ev3S6OkKlPR1mmD\ntHwLu6YoQIY1l+qjxm2wGc2PNoseO973FDucbZxaZvTZ0V2SdcB6oDv4jDky\nFIM3S/ECBDNptvvih1KEslCJP5zLnnETbNmUA1i1nirUlmYxNqVkUL6AoF4Y\nUDjRhYd9c7NIqowtuK6+NzrdLNAfj8hBItCNqSbfWcZpjCcgGSM7ZG/Rta8q\nSN7Fd19hD/6ivCsBMbJSBrQ0dRAwy+aHjcocsA/wat32cWuu2ScRPsg5OsBF\nKBkqU8IpvbhwUx8/7CB3LSeMzhvrt+9v4FlUzWR6Ul4zLyvHGdarvdilPfyb\n9rAJpOhY3fD0W8Q77zyJxiG2xKA8bN/uywpsLMaRWVv9F0/yMiyk5IuR9EI0\nBxWJilEwo0FIV5jroemCLigEe2XPELa58SeTNUNdCAjAjtaS/LFam6ud0neP\nh0IJNdnbevSvaQPISNchURth3c2XcOmp8JZCNB9UOhZ8ayidYX5lheBnMnY9\nRML19boihKnMk8wCN24dj/Qsl5btYJvTvTjtrmnIBmPaB2whGSbsqjJhIg7N\n0uVlL+0P6Vy6jgaRWlUb2FqGEjfIG1wwg3XZE3W+mPLBh0OlJ4ipsmjPPlKl\nqNjjtBoDSpxVjig/S5/3g7rymCF5q/rC8ox1HHvKq8CeEmx+a+xotyct80Ar\nvuvA\r\n=eyXT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/bundle.js","types":"dist/index.d.ts","gitHead":"2e85b474793b284d7a853b3a2aee5531fe3c7b87","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npx webpack --config=webpack.config.js"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.11.3","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.15.0","jasmine":"^3.6.3","ts-node":"^9.0.0","webpack":"^5.6.0","ts-loader":"^8.0.11","jasmine-ts":"^0.3.0","typescript":"^4.1.2","webpack-cli":"^4.2.0","@types/jasmine":"^3.6.2","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.0","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.9.1","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.9.1"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_1.2.0_1608743998453_0.4708762789452261","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@dipscope/type-manager","version":"1.2.1","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@1.2.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"7cbbd4b613463f9e6ae9ae227b689df8ffb07024","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-1.2.1.tgz","fileCount":41,"integrity":"sha512-sJNeKgeYCg/ENzGzp50PTUEzyk4Z1vWJm8rlzjREomf+9muZoCDnmtCJXEP7wBDAhnun1BYpQ1efmCJHyAwsFw==","signatures":[{"sig":"MEUCICxTxlhqi7AswG+i6V5dsZCYjO2ZQaBbs3Ex513J3nwpAiEAlb284D/bwaU1QNfxVgJOj23tifMqTgG2a7VNHJiWtpI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5NAuCRA9TVsSAnZWagAA+NoP+wRRyrlFrdqVwry1wsF1\nRuyhetcaQqhbqKU8o6dS7cAzVSur3owCziuLIdqi12zbOLz6fUsXpoSgnFyi\nU9WZps0kjWaraoRuDLbPnIiWfMKKtRMmOU1jSrSuy5jGouhYmrzsxiBgbKfy\nz0T2X6fbELtFv+46HHSQ+p64XJYKWlS5S+bPgtBiGYFVJdjdombm/AXeF1hH\nGWCn35A6WLrv0n2m3gTkqPXDoouVk3Pues4iPBSPrhxEoHSggv+949VITDKg\nyKBmo5jsnA3oraivEKmtB7blE+KzZtZ47lCNuoyJclpupp4EonT9InTRUkQh\nDAM1VKnTC7+O/zjwxapX4jjBnnFI+yExGPhqoi40xU5+PoNXacdoJZOis3pY\nCFd9rLpiOrWyjJ33TzX7o7pWkvK23n0xh0iofHTFOvtfolv3mxTh008lRTEM\n4UiJF+XaVBYcvey+Ml9DmEsS5A2Lnpkw7v0VljXmUlTWrWo+rZpZq2kRUaNS\nj897yDO4VDPm++20Q1wlYi9KHWxrT2Tyoyc2Y0ACG8a9DOWArSZEPqT7GF9o\niIpKZvDkrTqytLGV/RfcywfD2TxrM0hJvwAAUGaSio/szETRIjkjbnwo2y3i\nHHh8rGoUnLWjB0kEw0OoIoUMOt7jxGi9XWSKRt9fjUWzbU7JdPv/IBsFOoJ2\nweiW\r\n=vHbB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/bundle.js","types":"dist/index.d.ts","gitHead":"a9d95fa79e6b19229e4d3da5b1f59d82efe027f9","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.11.3","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.15.0","jasmine":"^3.6.3","ts-node":"^9.0.0","webpack":"^5.6.0","ts-loader":"^8.0.11","jasmine-ts":"^0.3.0","typescript":"^4.1.2","webpack-cli":"^4.2.0","@types/jasmine":"^3.6.2","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.0","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.9.1","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.9.1"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_1.2.1_1608831022314_0.5070537193955058","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@dipscope/type-manager","version":"1.2.2","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@1.2.2","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"7d81685ef601307a50682ef3662249e93da705c6","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-1.2.2.tgz","fileCount":41,"integrity":"sha512-hof1iw6fRM0RAUvQb7QUQ5mVJmYgzz+bQcWJjz21Va4ZXUOYdwAnsTGXLNb0fqHIXxmFapLESLC/6jhVMg8qrA==","signatures":[{"sig":"MEUCIEJkItSb1eGtNOqXpL9MZa+SDYfRUtWtOw4JuKLKq/CEAiEA7MgGieHaHjsVaWAfk+s9BKReB5uVE+IfgYYVSI2mxBg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5ihrCRA9TVsSAnZWagAACW8QAKPee6T6hEc4BfEJDM93\nXK8RGN6t+Y0QCUCPPalER+pESSj2BL3/uiJ02glaLQVW9++0n8H4dDWutUM1\nMTw4ZYAe5f7L/BOq+C7QPyCgJw0d+FM9WsjnFgwZi90ceXlZXm9JUT71x9xa\n9tPphLG3HW5mYKu7ohKg9qwVSaDyINxQwigCxju2eW9fQnb8KOammcWMEWNz\nKqCHOwbzrbZ6ulZxdbZ9qhxXTIYvfEG4+d3SAb5DCP7mvdWEQWuE8iAgzg0C\n/RMAVGdatH43uVBk95G6lZcY/mLdiGewEXyvzXLLcFEyLsTohUW4i/IkZ4Mp\nvJmJP+mUNPlQqbK/zVxKGlhyynYOWjrYErqXps0yNkkC47IIIL7EXyxVjbr5\naWkWsRyeKBtnjlB0pHxNcCgP6YdeBx6StTJVoWVSH4fP7UtCjervfBBPnCw9\n67/zK6ZJWNumBXdRF7jlZYv2FwjpMxfj1OESV7+LGwcfD7PRdpTYv5W4uAKl\nuBQQJVOUApxC7B86J87h5lSqDWp4ydLhHQXcIuCse3d2amGw6lMq3lmI3v0B\nb20gqyWTR5hybrFWqR3IMji0/Jh1BEbsF9KuemT24tOA3GScKRQtFdr66GiX\nIh+e7Petd/Gk+9TuUOvIcpn5RXpH6IvffTFAL1jeDBpeImTXYvIGhdLBr3dB\n3W20\r\n=m5fw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/bundle.js","types":"dist/index.d.ts","gitHead":"14d0b8eaf3c61c4c7a37ac092e54f36478788fae","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.11.3","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.15.0","jasmine":"^3.6.3","ts-node":"^9.0.0","webpack":"^5.6.0","ts-loader":"^8.0.11","jasmine-ts":"^0.3.0","typescript":"^4.1.2","webpack-cli":"^4.2.0","@types/jasmine":"^3.6.2","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.0","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.9.1","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.9.1"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_1.2.2_1608919146260_0.6638677177880548","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@dipscope/type-manager","version":"1.3.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@1.3.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"86368fc4be4e6e602e2c4dd875034f50686bcff3","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-1.3.0.tgz","fileCount":41,"integrity":"sha512-kGiieUE6zoXOkyGdOCH8KZ7q86mWpGYVIRMYbX0G27I8aWXw+A2ii9uFrVbl+UJZMtA62NbTb+/nvoc1J4zGQw==","signatures":[{"sig":"MEUCIQDxKwaNvVw1xkBKX/4O7yTAvIgNEOx0FX3m0MQbLhDEdQIgOaLbZYJPPMMcY81pwqVwoGENB2NuepGEe3Tmiv2m2Sw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":204566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCHVBCRA9TVsSAnZWagAAkF0P/1xUUS9UyzDin1jDbCVz\nLitLQTkRsJNk2mIU85rZOCLC8TUngG4w208lvFlLVrMAt6c0bpuv/KA1Z1xb\nL2hGT4L6gs6qDeeL8s3RNtNh6ZXBuXRM7mX+KkAR6TB0FFt/26EcVCnwL335\nurqhICqV1EHi3n/2IChqQAe/XFW06UwYyK8QAvfG7GkvDXRchvNRVtal9WFL\nA+v7sGxPUGHK4MNXH5JkIMnng03Yd8ocvTiyw9hL55EStVYLplBExeggNs2N\ntsLHRaoWm6eOMAwB82iiXfOyn4P8Wh1ZGqZd+iwIjenTpESUbnqGY7dFlKyA\nj2WmrxxhQ+5Lwmj8LeUqgxmSfwHqCj2ELcUatCyBnTlsdSRNRgvmMbQX0zmo\n+V2WZQ2G0AsKr46tHn9R9pL/9vEhoBnTM3B1m88I5edZpGqONlhvePstO5ET\nN2jQdnTbQPdn2iHEFWJty8gTzKPndN02+szhPIsv7INT58n0bZo4zozsDxbs\n0ru3S6pnFGVEw1nwHbX4KLil0WT8rjvb398xvFTA4qXdQ2IfJTqkOXN9sPKK\nIOMuW8xppu4l7nSWoBeMHBahafwsHyMG9HIZixuiPZSK6S+C1h7lnMxucWn/\njhYGNLqPVtuER2dW4K3U6gVCEj526S67CH0YOoFWDiABwWTnfnIUFuOuQWUk\n6Cta\r\n=wwXU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/bundle.js","types":"dist/index.d.ts","gitHead":"5022fcc2743f0a4e115104729bf4062a162ba741","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.11.3","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.15.0","jasmine":"^3.6.3","ts-node":"^9.0.0","webpack":"^5.6.0","ts-loader":"^8.0.11","jasmine-ts":"^0.3.0","typescript":"^4.1.2","webpack-cli":"^4.2.0","@types/jasmine":"^3.6.2","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.0","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.9.1","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.9.1"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_1.3.0_1611167040775_0.9066634435466101","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@dipscope/type-manager","version":"2.0.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@2.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"5d904ec72aac88e10dac1e2e2be4c738af4b3481","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-2.0.0.tgz","fileCount":60,"integrity":"sha512-I5m5PW45Toc67JsA2s5bgsZz125+YZO7leGpSIaqTPxQuj3Zsa9GxXoolUTwh/RfO73au5RhTaqv9K7jIgE1FQ==","signatures":[{"sig":"MEQCIHsXDoWWtBKi4YjEh07OzK4FYFAFeXlJ4v8D+4yvetOdAiAVSmx45F4W5e904qYldoOtg7MEhEMf6SzoinbzcRI2Ug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":321195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJEa5CRA9TVsSAnZWagAA4WEP/iQ0sYjNTdFClUlujooF\n2sM9M1t3RVUl4Qxgf16lMsvdDff+ftes66rKTu6GXy+5D/KJ4cZQnHX+hkgC\n7clMJtpe0NA/9PtuS6roUOUsq1iDkWMWMrghzyIG3TsEandMIy6fyHAEY4iJ\nVCCElV77r/1uIN7RX7YQQ9XnDsVzDDE2Rah3tM0GawgaAcwvqIS5+gHHA309\nBGq8FaCLtDqG8pVolzWy9c9IADeN2KbDx5tMo69gykyH6zdqBZYy3q6R4QfZ\nVXdWTtho/4KxzIPxYTCGBk4ltHWK0c8YrcvXONM3RpxSb1WNlB3jQpUmSN5L\nMCixcM1dBEndQHVBbNPxDA3LyiXb9W1A0APu8nF/65RFdk5f17dqh0YSPwKN\nTGoAhilfuVLtfXRBB7P20CNYim7IaBU3j1chssIMnQhT+WzKLv41oxIGfI11\njEQw5aQSP9/XnDrBdA6YOxsZMICqh2sRrMKJ9Ebx5VqKmWzvg14ob56w29fd\nNqcXw3Ipx7hP7Lwkm8sez4wagLSiSWqHrzi8AkveyRGKbBWJqnTBVeqZgI6n\n+ZLFb53VUsabttdbIkunwg/BwjxvyOx4N9hb/LWt7UB3Meky6tnfzX7IwgZH\nmlngP6tEaa6pn//9BLV5ZKbA/WKIKuANcO55LgxSyQQq3/VsaMe/FKKpoMwH\njUAK\r\n=ZaUQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/bundle.js","types":"dist/index.d.ts","gitHead":"3701173f0b786f707eb2c22d458675fd55564ae4","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_2.0.0_1612990136449_0.9559190952136101","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@dipscope/type-manager","version":"2.0.1","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@2.0.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"0a96f2b7fcd6d82b627609dac92acde61165c634","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-2.0.1.tgz","fileCount":59,"integrity":"sha512-eXCo6bIGSu1UUpyvwRKwnwdkBO+Yjpya3HYIPMXTW8Jqpo3HYg57pAt3xfvUYyXFNdETCu7qfcLSfkfQoMTesg==","signatures":[{"sig":"MEUCIQDujb1E1xEGhro2FjGffY6jkLRCKYp4FWLRx0UqfyjjlQIgZbvGlxGBQaXGXsoLKZuNYCBmGtIQmUVSpkZtkS9ThzQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJUreCRA9TVsSAnZWagAAZrEP+wRH5euvmp5uOuVwr52F\nsJxfgDoGbEQwHdwKmlsnv1PSqMSP7mU5wzEzfiL02LrkrZ0cOL7RweKEnId0\nfmBDukX5W/+5fgkpkjt939kguji3NrWy8JKYaTZvRsNi3x0MVgFqL+uj+Efk\nW3k8E4bILRvZHc6uDj2Tdlf1QIZuseGqHExix0AtmgGB44XQCIUG6398FVmv\nhMECesz1FBiSDhxBx5h/ySxF6wd8M5CbMTCA15ACvR8V1xu1Y+x0uynnhlYz\nXbQ92Meqny15HMQZ0vF1Sqdl6W+YAHrpIcn2svZtKUs8OZvWV+Ez2130E3tB\nRSxZa/5H7eQI7g3+3WsNzs1gtK6ghtRp/HFpeZ1Y8At1acW0v69i8SjxMyIM\nw0edEJNUfZdLm4fRrWa7WzMBaFDuTGQd267Aq5wYdWfLh0DFGiuc+duvY43x\nmpMBsSITwPvgBK55sCP4GmFPITlEioMxMsNspKOWJmZ9D1UXhzwSl5ARRzq3\nHCaxU7nJNG3/wv6Wg/mcVbyJnJYXLc8wNb+wrNzyI7m4TYCrtTJd/4XEw7m5\nNwT5NLXgkcXxejs7QWGuI8sVQfIw0og7YfpzHd2giog7vbih4FXoRJt1V1q/\n2awur+cjVjVnEF8subGVZl8CmpjkLTDWr80vu8DzlCwj5d2pJoXRE1LBCZWh\nJobc\r\n=D5JM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"bundle.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_2.0.1_1613056734003_0.04446905525705058","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@dipscope/type-manager","version":"2.0.2","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@2.0.2","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"b09c7e13aa4c1447858666e7c8aa1b70dee1761e","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-2.0.2.tgz","fileCount":64,"integrity":"sha512-KR2aKhgKGS1ZfQVYbC9OVwte0DIHXUfB5BVwZlrzWJe17S3tfwB98x7NMr47QFcGngaD25eJr3U2W6Kukl8ykA==","signatures":[{"sig":"MEYCIQCydEH+cX+z3FTYZyoBO7UnDBP27ezlSrNS87fNWIT9rQIhAOVXBZxNOgahJZ9YlY0+n/XJaBDR+axHRpCrC8gELX2U","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":728024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJXbxCRA9TVsSAnZWagAAmvQP/0n8IIzIGhdEfT47SFKl\nni7Qr+7cbaPKw2jksCF/F9lFSbdjkRqUyVs7K4Luv2dfwmx8vi9O1O2c0Ekl\nuLRSMNbFrJN6Nt/7abvXkWFat0Mx2Ad6QOXqjqDxjHiUagpFri9SJb49xFTh\nOBLWwOk9bmEdEs1/rnL7B7gycP8fE0YGZ95QrrSu/6BZ4JHJfTrrGJp1OLOX\nAes3CYjH7+ThOn34U7oaMBXdouLi8FMayIPfAWxgS+19PzGLvkXdQx2EiYkO\nsSEMpzUQQm3eulau0WT6Dl3epEMlRrE5Fu1NARk7mXBZe0ArtF8EWoH6cfGJ\nNJ+ksr3v7FVIi+TEkFPbNDjQPyOtvuh6MAuTrqZK6rHLwm8GDXPQvfo0Q+DM\nGg0SLLqwE7jONNhvpdUNKyrMzw6NS3R3+DG0sAz9Pqxj+mXgRjxMA3I889Nh\nvel6RXVx42gGhWiokCGLadSanFxxXjPrY6aqFq33Y6I0RdyF2Ofm2DQHiSRG\n/2adDFHWIG28kZnU9quYOyIJUxoeXxa8ZyPz0hw2zTaYGdf++tcQbaHA91fN\nsQYObvdKhlZbr205y6xIUzKP/WQg+Mw3cEPyh9CRsfGrRlqq8Ow1qcbqDIrW\n9tiuOu2ZjQ8skjG+S5FWNsTlc13sJliEA/HDX2ljZ4oVXEdSp8tvGcFJoW9i\nDmyO\r\n=cnj9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_2.0.2_1613068016985_0.653180648033366","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"@dipscope/type-manager","version":"2.0.3","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@2.0.3","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"e6dd1703d13d9656c1686695d42ff20cb8dc5752","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-2.0.3.tgz","fileCount":60,"integrity":"sha512-QiIvbN/V7HLiPkSQhLCgRiW84uEIpcqZVgO8yXTUqhSH27061aOe8/VtlcBRDWR+9bQIQ8cr5fOYTgWV0A/2Ow==","signatures":[{"sig":"MEYCIQCfsmqkaJC+JP1Vaktt0WJXXtsVg9VGrqxNYrxIH6PgNAIhALIWRMokF7hIYKrp5rykZDHUoBloO04pQ6s3UjCMer8I","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":350202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJ7X9CRA9TVsSAnZWagAAluMP/1FTVLr7bwd7zBTk4Dft\nSzss4jrgFX4wzhoWcN9Uqa6GazXEPQJXRdrBeyK77dfonXRhIb2NGn2k3tup\nwB/i4YklrPXmm9sQU5kE+fMSkn4LAixz2LUkeT8tmYlKwv67ElGxCSTlpSjs\nKNVmIRoNvAT7HBCHNhF6i2zmR75XRCWQjVhRfGo4y+ygNq+qET/91054nqCV\nY2dgBFXRWXJpU3MOujQnN6poSPqlX08XpQMl7DBXxstr9m973g3I/NFz7yG3\nCzVb/hBdjmCXt5SyjlSwEjDJE8/+Ivv2e/RXjAQTZ6/ori/T0SxTLUDj3EEc\n3Ev+iKZVIEFEbEeU+HWRPxcgGq0Vz7cR2hx+yP5mQ57Mw9gzCFQDs8mpSGpK\nSau4IFVQPwoR9clGWWAn3XWLTgAwAsVXaDaWPc7LRdA8EJf3NIY7CfG+W1/r\naaEYf8yRWOk/AFto9tm0EqysjDbxdCdRk8quSWCh6PZyZkWOylbHKxjODgwo\nssxoIx8X3txtwOlzoFh1AUUIuOuIcRryf3yQTiLbYAx/sikn4l8aHcP38xDW\noCxEbo7x6iLbLt8plSUP3Dyq5wklQh2tY8tsrJSb6NvkOUNPA6zub9ax85L0\no3pogsELTRPXrbEr4KB3qdEjaF9i1mcf5NqJbzEc4AaYeLBBT+qQIjdA7G7q\n9U9r\r\n=HgaF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_2.0.3_1613215229102_0.6701120127339879","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"@dipscope/type-manager","version":"2.0.4","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@2.0.4","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"28396fc3ae879ffd369be03c4c077ead4f715f6a","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-2.0.4.tgz","fileCount":60,"integrity":"sha512-EdDtCGn8ho2/nvvF/wF//O56D71NaTtlHTIQvB9e/5A7sEiT6uY1eJuULpu8nviCfOyk72SNpAfr161k5C80aw==","signatures":[{"sig":"MEQCIHsf7ZZnZw5utADpkRN1LpcwM1jM/Z2Y35TwrUnZMPWbAiBrruUAf16grUkLl0Tv2x2Rl13mq1ik4BlFQ/uWFZgPUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":352901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKB8UCRA9TVsSAnZWagAALH0P/1xFMBFDyy85yvoDsrFh\n8q84vD89OgaPszAHWuUAe+Qiv9y2OQWk8g1wbEiMhAUAq3llofsc8z+oOams\nVGoYguuMUcWjFj94JKV7EyNbfhtFmaroHdn0Wscf04gwFTIkDYjNO1mFPI5f\ndeXoSkjBG6Hp1f2Ewj8AlfDZtuECX7dncWU1r0hwrnLsC3z5AdSgXNq7XDaw\n4cdOtHSLRfzIxf/khiihj08MnHOMDnl6p93yfvfzCHsv+n0S7sY010TSqopK\nnI6kL3vyRZ+XLDfQrDx18XWKxIOqRXOgfoXts7mfgmOsUXW6m0kUdAp+WXvI\n7cJeF1lGrfe1SnLr3Es6Sor/gTXkwcaKkGJ1WJBd5aROyU1DnLDl0gMiQZzu\nPDDSnJ2J85Yt1JkRCLsG4Gmt3xTM1uksXynXW5Z0SbtLbRl+VEoPxp8gFF5/\nEBIqJpNQdn5jOdfpWNC5I8LCi1OXkGjouETz1IznOBqZi0c+vQltSKa74vWi\nW6D8H0RsxM1M7MgSnYCqbkKQJfpaZcCY9/yW+spyVTLMpCWZV8GJ+xyRtPoH\n75NbJPlbzJcv9c6HGtSYp957WZf1QE9jXVYBxA9KH8aSPiX85Hs3ugpdBrl9\nWK0OYp7O6NL/K7PL1VTqmcqp+jo/GuW1PXd+eyJJkxR31iq8sHryxnu9V8Gn\nHOmd\r\n=fYuY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_2.0.4_1613242132069_0.3983023628991096","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@dipscope/type-manager","version":"3.0.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@3.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"90cbf91aebe592380f9e25fa2ded6739d348ff84","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-3.0.0.tgz","fileCount":106,"integrity":"sha512-VV/UBzVmONdJjP7eS+ru5qg+f4n54kEMu3YLcRbuSKkas5D8Sfnb4nRHymwMenfjIgCljvbyMjlZMKuXWPJOPw==","signatures":[{"sig":"MEUCIAgjg+z8wPka0jPwk65KbdIpKgC9mz/bb4ATGdsh9VZBAiEAr4UUyZ1LkATE+c835RhditoR0DZ1VtiZrO744p0re7c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":567292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQ11SCRA9TVsSAnZWagAAprQP/0G7Btsp5ggpo7SrX5WN\n+bqHGldkpzIWSTmfGo7SRtcb8x4N3oc7fNB2aGrfg0kCohCS90t3sGt7Vnr1\nV7hV72lbU5sdIyDMeIin1BV/bak7EDq4ftr7FLLdlXa7SXf2F9bt10vySs+N\nINzZqSoOKA9VkK7JjMyThxbTZKBXjR7vx5CjzYGz01zr7Pm5rNl+Ybw0qg0C\n635awI1vpJJYrWXETXatBEVRV6NMDcI4r9jwKMTQC3tfOLFTgbZOsJ0UiepT\n/DbQ+CKZRRQSf1scoxvBSX2n9IZlOaeMWWzBTknO9wu3YIx/8RaHtT8sNd4g\n9cORalK3iyR57w9UsoMwlwTiU3UDex0MGjPxfPXL7Dft/6nJYAC2YnwK5pqk\n0VrBHX/xy8LWEu/qF0/ltm/mv8x4wp00gbRXg9MOuZzPbGIajWQ6gLBNhM5q\nCrrtUekErBL6Kq7Xdaxa6jAGQ/AE2L0/I6drUmQT/GOpPQrOrf8F12j1PScR\nr74YaOYdElaMDYGsRylWm/3oc/4Kpe+ZXeWG3LjTCKi3w5CHXf+E8Q7HGoj7\n1d5sbYB2tW5OSzB9MxdusR4SXn40Us28NKakZMWLVo+GAaAEh6xC0qyDKW7t\nTgnXGCPiuDh9VWq8sax64se3CKFZWPNcCeGJFHZzMbBc/NXep3pM6xPXS3RC\n5xdS\r\n=fydz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_3.0.0_1615027538145_0.1777430791988206","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"@dipscope/type-manager","version":"4.0.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@4.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"c6103e1dd04dbe47042068108f15607abad2111a","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-4.0.0.tgz","fileCount":113,"integrity":"sha512-mTi7/r+NerIfeu7i5JE7mxlcb4igJYoFYLWZuYSpumvOD4f+g/h5bzPZqwAOVz8h4ghFGjihURSHaU7zBoHIbg==","signatures":[{"sig":"MEUCIQD+71amfK6M58hy0Hk2I/LBA6hCc77jIVGxblEQqSVAnQIge1ax6tZ6wczk9mbcxHa76CGgeNG6RNZMuvyOqfpVjaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":630138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgW4BvCRA9TVsSAnZWagAAgdgP/j4siMqaviQNcmdFECQQ\n+JRYdBwDGDSccbvgDPQk6tNpgUIos/eSxeIXKsDak33oHc6/9MIUDjTZl+da\nb34dGOMP8QQlHwceTU/OcP6HVvvqUtKFzz/TIefqZlUzG+M6uMJyEwvAUFvo\nJmDi9tM98jHTY2V8cZ6chnGm7erMkk1u1Up/N6faHZzNsBAXBnqWOmIiMb0h\nN/TFUhuf34y0Ac7gnVOVz0Fh/MsPEYdb1D3xJRD2XyIps10yWU4zks8WRxVo\nxT3pAnYizZG2g5pPdRzIsKARfdDiFlQ3oFP/eGQDOja1FvbA5W8+v80lKZ+r\nw30wOqweSGjkESo28z7Zl52JgHxnpj8su2NsGXyG6ZATLiNX0hGgA68evdrs\nCBw3Mc3T9oPbEgB1eU90EnQ7RwS9Qk0BluWdb0qdyDVBiK2Ph1hjogFHoHvi\n7U5fqoECsSqASdubkUnaRZay+KcUCiyBdlbTYoG99dbdFU5Md7hf1r+MWmp1\nEj9FEGFRI78WYCI5Y6beG3ptXrYTVUn50ORWgiXg3nHiEScnFuPB04EfWo7T\nkpt0P0WULj5+zJtG7p95h+Yl61S9yGV5uigiHM/gKop/PoCXLsCfjE1bj4LC\n4p8W6uvSLg6VUS4A5jOYplCw1YPE0hM7cQQ+kNM7PfIWX6Wo1/SiXpibb9+3\n3g13\r\n=RKSg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_4.0.0_1616609390434_0.9707413509831264","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@dipscope/type-manager","version":"4.0.1","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@4.0.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"e9c17981768d20c9895d766ee6d25c8be7de6c2c","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-4.0.1.tgz","fileCount":113,"integrity":"sha512-+rpZoOiyNWyHhgXNFbvCGiVy9gk4mWlF3RS4po/145h6j+yuqg4SJ1H2LjhEHfAFwwIAkdlIJKHIk/FAKxiyAg==","signatures":[{"sig":"MEUCIQDKwAMrjsVeMsjZmHPRLQMH4FbnQp9Wq/bIjOmF2w1vRQIgUUVuJikLEYCCsxu1m/vM24r9nsUglb3yJHT/Bxw0CJo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBtruCRA9TVsSAnZWagAAw4UP/2vTQrzKWy7QlBdRZFRr\neNutNCH7kB5GmJp6Sj4jKeTgeVVFJhCDhq12FavoyNYiGko8iqG1NlD/Xd72\n1hUraXls5SB+TawxlWNvtxBJ7cTdfLyWy8f1l54BjyvtWYteQkvyi4YV3ciC\nwK+FlN4nfRWDCQ1WNDwAdEpzGsAGxZnkIgzqCFAICyLzpQoiyhkqqiQ/RWIv\njx/AN/XzVbIt30YMOm1L2psl5tH9WQtolUq0Crpro0q3n3dDJ+v7NC50mEZU\nD/Oe8DX5dZicTzsIjwjTmW49mpUhVdu64v+rP9qR9T9EOy+EKsLcfUVJVtna\ndklOl5nTlLpZDrM8WTljnaVm0CDZmmAu8f/vRbe9/G0mNkb4DnI+G66by6//\n/1/Pi0vJJdSlUq2KXtnl+vO8tsUjc2CLMOfrojXhvgkaufnbrn4MQ1wvxiO7\nfIjgvmMSX+aADLJSIETp6GcSYectwOxQRTlMkoQqU0jR3wpLoqbYE6UUDkX2\nxTPyF4GY7JG0vIETm0Whg8yPAV/DuGNpymONjK7Bs2UlkHILDpSUXRclrXet\nHstVan6SDhtVKsQfDa8/AzaCWL+BouKx2e9j/nlgiBl5gCPiZ1915lH2ofPL\nqe5/UIz7Xex0LFJV0E3RJOYLBPEbYes8aiNvcvYL2PDna8d59D2tiJlOLcin\n04oC\r\n=XBQt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_4.0.1_1627839213982_0.7187030600114521","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@dipscope/type-manager","version":"4.0.2","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@4.0.2","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"0886201448e6b9e074df6f49656fdc31f9cf7fd2","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-4.0.2.tgz","fileCount":114,"integrity":"sha512-/iPe9NDIZRO3R23eY+Qr3ER5FcDbtAKaLEfdzluapIoAO4+ro8VZ9qSK6q7plN0vhBgWVSXykRjhsCsJ/P10/w==","signatures":[{"sig":"MEUCIDZgk8O833QDj+S0olVkQq4IX+ZyCFAvaDoepdJ54KIFAiEA3yavS64bHQskH2vK/1qbwyiWr+7CG0b6qchT0FMfuHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":637080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJibt34ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCrQ/9He1ff2l65sIbJSm+rJoz8DUPd6Dc23voqJyGvkVQriT1Fk8U\r\nSiOai28RyYjzkeJTrdrxiUlveMFbHMTDSMAe7rtU0WKzjN+2bOL01HMS5Z7R\r\nKH35pALMt2n6noHur2D9tZvwAOFIzNDmdWufP1hhPkXwHVevTn64khRomII3\r\nYXL0LLSOwHdstw6uxAd2b4zgIhQ3mxUEVvkf6jxGaStRum0jkNkYeMg7NwWo\r\nOzXGCutzsFcO4bDMfb/R86tedDtGKv7Hmm7zERzj2dnh3a4+1zAr+l61eMZc\r\naid8S8Zzd8IylcoJukIZW0YzkjLOsBbkWQwJ9odBZtWY8yI8NnVzAWOE64Ak\r\nieJ+M3qUSJ1Bv2bprgOgZT/QMgCVu22mZN19VTGYbPv+AXPY0w7Vlf2SdXqC\r\nPWGFPYmcA1C6x2T5TBz6xw9knYr/vOhNJORWKYg4T10WDnLbyKBHqIq2/Veu\r\np5hU9Dw6B5QjCwJmtmgdEzqJREQZm6YUFpVSqYKBXQuhxwlg6tfVCbSfK7GJ\r\nOLUN+Moc/h5V6JkYT8BjpuKZlJBn/BWUqEeGL8G3SUWmVmFWOfQBkIq0178S\r\nuHav6/tzewdyz/N9e2doVHxr4PA6FQ32p1tLzISpO+VDb4FKpUtLI90uHfHu\r\ncWuLo4e6tztXVoL0NAAeXkrUufUk738176g=\r\n=2Npi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_4.0.2_1651432952404_0.981164265932104","host":"s3://npm-registry-packages"}},"4.0.3":{"name":"@dipscope/type-manager","version":"4.0.3","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@4.0.3","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"1a304fee9bda45e4538f94b77d91d504307f251f","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-4.0.3.tgz","fileCount":114,"integrity":"sha512-YlX/2L6IjJqeo7MHc2M95EcCsxfTKaoGub/UQ+c6MtnyJC/MKoEXCnIeA/P081lGuVMEJqiC5kXoOBiNJVvyRg==","signatures":[{"sig":"MEUCIQDbzf6EmFGpbBazQ47gX4X6Jl9H+j3YgCWW/rEM8R1UKgIgfxnXQlMApqWLXBU8Kh3HWqEV/6dR2fbD6C6FFzX7K9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":638311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidkxOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoDuhAAhunK91terGBz0VKMTazP5Ha6m79wW/l3sNkQ/7s7yMFOneyi\r\nbIqyijkmhTzjpRqxa0eZs3k+KiwwGmYT5NudNW+Iv58g8ogi86ygn4RYyblC\r\niwyI295ukqivfLC3tq8fi+t6vqSpyh6JX5rUGHaOA0c8U2bDzBRmC4wN0R3D\r\nNiUaQtU2JufCTjQy8+1VTl9NWmjj7V2dTAa3t/Nf75x5fTR2Vu7kfFQP9mee\r\n/nCr/7o6ffZHLLLp0wDZ+Jno5wzTzbx6WVyuSL0TPB8O+bJDttV9ALb/vzlU\r\nJvJcZ08bwxG9NUiZfWU8ED2JFkIr7neE+Y8Bma0EspqyQs3elNPJnPuIvd+t\r\nLke8/sHOsL3QKVp2GYHDhT1h64d1XGdO3KXBKT+9Ph+Bl/iMftLi99fdIy1F\r\ngEKc0RKKF0CZVRwER2+eFmZXh9BVwLHYQfQqsSJ13Utp7mcKufl4iddU26Js\r\nNZBrsijMgdUlCsilcrozax927SZC5Lu77NQzX/ZutWhP26aVGGato/oro4O2\r\nIPiRBv0mbgFRNptE3Jrllt1OU0/vZa3XlR4B9zbNBmRShZkNDH8bQFvYQWhn\r\nLZqkq813Y8tPVcnAOlX14/bS6Aiquwb/+gqnFn5Ij7kaSkXXEMt4AVNFI8XL\r\nzyoz3MaK6fVlGU1T138eb7HGjzmBP+XmLtk=\r\n=QyCU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_4.0.3_1651919950700_0.19531380505774298","host":"s3://npm-registry-packages"}},"4.0.4":{"name":"@dipscope/type-manager","version":"4.0.4","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@4.0.4","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"4a8bf889acd378d7b975477347bdfd2c1de23ff9","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-4.0.4.tgz","fileCount":114,"integrity":"sha512-qa5wfjfGI1zcUwi/zMTMpDAG25PfuUtDTQ6O74IVjLYJ7asIU2SCvj/l9n38oJdQlhRtPD4X8OKGNQbzzcN8fA==","signatures":[{"sig":"MEQCIF/d2H0HnI0HrFBXvpW5nn4oMkPbLcwFUr5nMQGNgJ6NAiBy9AZ0OzSTSJADFW035qFSHQrvHjT2KF+t1z1bVBJcXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":638255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigO1lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqCIA//ZbLKH5g53Fcn9bAr1ueYTTKU7NZtGUAAi20+RXpWIOS/ZFKx\r\nPmFbn6+6zHSec4btB+fOVx5eqVUEk1f5iRI4xIOed72iOa9Se+1mQqAJNyrX\r\nsWooIqkexWsVoi9HMdWSodpw4CV72Bsn4MMdRrFVK2ylhKg+3brcMHpK7HmZ\r\nDvKVQEKoLUlK72JsIFUBc7uGeh+qgZYViTghLwO8m4QSH4hOKOM25Rx2Qz9E\r\ne8wjuJzRQVsfrat7I7DQKneIjCg+twXofkjWabVqjrNqjFQ21nJ/lzLTeTbA\r\nyqMJQ96+i81A6oPN1WRdUoWCuyVsZobGjQxSMITNjcdxjxHsb25TZKDCPF0C\r\ngtVz3gab8yraP3KoFx1+r3RzNm5NoHRfJONgnaP9ykWQhxC+FzESmGswSLj0\r\nzq7S/0yZt0y3+oO6fYxg4My6WKLiGtd7v6e69/JilaAIRvI7n7/zi1dLRwGc\r\nN80LV738+fbwRVI3mCFxtycT+oRuszarhGzNb6ljPKsVkAWxhom1R6HEpKzr\r\npYoCXkV4LCZZARClTF8oWILDcBFWugfJ3n+CLZ21p78iuC9rLszUINexemFN\r\nelBUp9woCzWs72VjesuSQrWKJIkJQcmgFIwzg5Tu21vIjXjDB/RINymw7y9C\r\nmpc6FB+RMAXB2Sb7+KjX0kMCT2dDU5cLhKQ=\r\n=KNIn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_4.0.4_1652616548885_0.2017820169979161","host":"s3://npm-registry-packages"}},"4.1.0":{"name":"@dipscope/type-manager","version":"4.1.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@4.1.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"8eb53e292e57efda9bcfaf9bb27bfb79315ccb70","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-4.1.0.tgz","fileCount":118,"integrity":"sha512-GUxJ2kWpjwGy6fBMAERTC/nOccfG9xgm7uPPNkOrGpdLiHLagr4+Q5PfBl0zF+nupeK3Qt+jirQJdgxEuAcF1A==","signatures":[{"sig":"MEYCIQCIV8DDz6Y/tr4+NEZBwDx1KFENxhqKD8GB9MbpywvE0gIhAJTZhOJ9fo8yL5+ZFjgA+cWKGBLp718x+bAN1wtcvZVv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":650897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihUQVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmocGg/+IG9cShnRbvARdD3SG2m6o/YAge1K47uy0g746UhnNHNhzU7D\r\nz1rsdivPWZ6uXVijQPMFjNCRp0gFIunfXFphqbtYQRpOfkKT/rLKrUB35yIl\r\nnK3wmj13rKaDcK5lylVqsK5ROrk5Mj7UtApYsmD0ahxac626s3cnIITChwfY\r\n3BgVYH4R4kbWp4FNOUq4cvW939dcvYoO2LE7oLnHOqumR9QeiwbPhTd1VDfx\r\nQBvD3TjkvWAOVY9BV6RG1TanPqAgX2wQpTnrsv8l6iHSoOmGoJAmJHhFfyAc\r\nIQ8mAZbY8fT5XNRSQI3CDItWITRruzu/5yZDzixqL7GDm2S54j7lKevDnt/s\r\nJESBnSdzLm3nwj+ku2RIJiU3qGiaYH8Is7EoVHaaSYrE4zpVhucGbo0R5DYs\r\nD38NkxeDIMcrfjH/7eveoj/RREtluGazaNINwENMJYPOcwgnGGMGI+vzrKyU\r\nkuE2CjquVy7+ejrksopG3Fbzz7alB5SygMfOtAmf114IGTmZPxi/Ph/eozMc\r\nRIR9Fga0D65gtZ9aHnuk5IwL2KZ9+6HQu2817k0JjlAkju6CFxiQhsfpqgHN\r\nC1VEf86ZWlIYTTfgCKHAYusC+Vob8L1Gx3q1/c3/4jwBnpeBOjFdTv7mjOaL\r\nLZCuVWshQ1pj9x74KPwTFVtuMQfdqMYg/9A=\r\n=eJCq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.txt dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.10","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"12.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_4.1.0_1652900885239_0.03213943394881613","host":"s3://npm-registry-packages"}},"4.1.1":{"name":"@dipscope/type-manager","version":"4.1.1","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@4.1.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"649bf94b5198290b85f32a62ab5f28d3167a3e0d","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-4.1.1.tgz","fileCount":125,"integrity":"sha512-/L9HTFVqS8JwsMMl/NrzUrt3ZY389xJGjE/mBYejTrap5JuXwT2y+O9haELSFUUgsBb9KpBJ40sx7znBw5jnkw==","signatures":[{"sig":"MEQCIFfpkNdsKsqTKEi5u4RFyOX05u6kmPCaJh0eyW/mWA6LAiBbAwGcubGMJ5ab2V6EduayO1uhl5rxqEo2Rv2uVLRnAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":577752,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilPuLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmryUxAAnCosDkSfpAkl4Uh5Chu1vVOzAs651U7EgjJGTT/WzRvhwkYI\r\n+nhzIIVlIGf+MZiZ6e/Nh5MzwozSxJX3s/wEkQECIHKK1q70OoI6rNoR8mUZ\r\n+iiNAwIBmem3zQXv/UzD+A4S8g9WEyOohsQNkhp9z5+jJf/vMXmzFqEVPjpy\r\nQj/Y3Id7NoMYPcd/xarexMWQvHAowjpLyfughF/IMA6DHQwjXlPmAaghjf6K\r\nqS2v7ZOCDo93RWPsGp2j/xvQAPEz9UxUUChhwFY9QpvtG85lCOFNpRDD8qbU\r\nKsFt9tz86cc5jlLOLYQt/vTp0Eu5axyjr0PJaixmjcYoo5fetrqONp48EgMb\r\ntbG45cGUtwr2uNYavHizWNpSYrWNqfW/Nx+FB1tWZuYc33EMViyNVSGeJ++g\r\nlWA3VxktQqIkRKm+hTvsAmiseM9Zj7V3rVGfVoARb+GLHkk/GQN7MknEcD6M\r\nxio7taXUHxF3kGzevPRHX6kY5n2BEzm9Hyxz/XGnhVmej9PDs52NvNIA/bUu\r\naIJ9lGfyvuE+6xCyEhrAyDIX21a4RN/937MICVRqQYJwp4wojyzVl4Fv+p+d\r\nRrhsEZxL+y5kr4swh8CGyRpIjYGAM+GOBywjhbcwylbcG0J0RLrwdGOFz66Y\r\nSNZryT56EF2yMApLsRvhazqf2xWJjaYMPf8=\r\n=/8r6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.md dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.17","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"14.19.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_4.1.1_1653930891662_0.540127378473441","host":"s3://npm-registry-packages"}},"5.0.0-beta.0":{"name":"@dipscope/type-manager","version":"5.0.0-beta.0","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@5.0.0-beta.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"18dbdae9701278c52e7acc7023b8645327501987","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-5.0.0-beta.0.tgz","fileCount":108,"integrity":"sha512-xWusXEbVmhLlPfieO/NmNiMI5rN/Dj55FK1xjBUFGTAMsLPQXVNCvVb8XvQGZeIJki+i1/Bdwf0izbSCXt+5Kg==","signatures":[{"sig":"MEYCIQCMU0EU9N8ptSMaFdpCtFKWF4kM74x51DU8Al5Avs4AiAIhAOKJ3+cawG/zGtBEhc0Oe16j/oL/oO0zfqHJm9amDu6S","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":296085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJim1h3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoEbg//f2iRbuCFxEgVOvG/Dg3i80HlUrrP3yCwQ1MnH16mjyWA4Ijh\r\nGonS0PC7NLvRVVWIfLglI8l8LHMrhnpo54NAWyv1/XEM9GrSKk+KGBecdaPo\r\n1aKlXbRZpMArrPcy9tY+QzcgDmbaSbgsNHfbtGFwXb1AuaIe7mC88OUC/B4z\r\nmMe15s2TXCRELad9Lu7Nag3/K68/pXMyV3GmiCA6rexeikuDBd3nPWLU7BBf\r\n5cvi8yzzEt/WRhiw4Km4/8J079z2Ki0/FJrtRPGIogLoLumrj3+LZMjBRNTe\r\nIGlOMQTQPzBSQfzWb2MpsmFtvxQWJaqZmiBGXXNWK9LtW0cgkz1W+hrU2YkW\r\nJQLJjlLnjtD5OyCOQcuXULEpYQOEKfmBjlUgpOdnxC3r5FcepF00Mov3GS6q\r\nxg8sOqNC4a97mrXjyApNVQRVj6qyVuKArmtW8ielY3TfK11zR6J4E4o+ml7Y\r\ngx5gQuDJ2wt0oQ5pbahbx7CbAvHw1vJWjeOhgkWa8QIE41oikn/qwe03ONWS\r\nepVHDgSMs4b1ZJq2v0Uac7gyhP96qcK4RIWRnuQAqZaa+mr3ezYkEztPfI57\r\nqcQLG5rsYV55+9JMb7Y5KPJltI356R1JCMIkPUOOQXIBwlFgBx+uu8qPr3mo\r\nK3LMfXTHkdWeNt8jDKB0/ja7XFAt6H1xIg8=\r\n=gssb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"e841aff14bcd6504fa2acba4cd441ef2cce4f7fa","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.md dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.11.0","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"16.15.1","dependencies":{"lodash":"^4.17.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_5.0.0-beta.0_1654347895306_0.48418540858888526","host":"s3://npm-registry-packages"}},"5.0.0-beta.1":{"name":"@dipscope/type-manager","version":"5.0.0-beta.1","keywords":["json","object","entity","class","converter","transformer","manager"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@5.0.0-beta.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"a20a749f6dd86502482bb03172816bb858cfeb9f","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-5.0.0-beta.1.tgz","fileCount":108,"integrity":"sha512-mTWjIh4pPvKyFn57P6P/ARUVikayn63gnfuhScSYjXxxukIQRFn/gOCcATDr2/ymuatvseubvmuZQsyxgS0R0A==","signatures":[{"sig":"MEQCID60MvS4m/1i2cD1Lk4ZCcLcB8XVftEDbnhFvzGFpqGjAiBrs5D+gFugnWimZyoGsuOR9V3/i4ffCUWdenropkGG/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2FPuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr6Hg//QWGIbsz+f1wLWyDUCJj7VoEPm9G0XRYY46GJM1b3NJp0D/Nq\r\nvXM2SV0lF2vwm6GyIxTwMP8P8W5OpAsiQ9L9ZoMuTHXBZ0jtWukCP1/xkHPL\r\nuAJidNKrX/HR+pajTTT50RQ0ESABY99hNyybdPyuoV3hjLTzreANSRvCOGC2\r\neZfkqLOeAMeuH4HGa3KffizkpIgnwyW5S24rm3jx3zhsSiwUz6qmP1/HUGt0\r\nXl4XGAx2wH68JFTcFZE8l6PZkHWh1XkHtOuuQxN2tnL6fNAP8IHEok4QRt8j\r\nvvU7LrQm3ZTToW0nQYLhGq1jbveIk+KHzr0TqE00wo7HzwxdlL5All5OMJIc\r\ntpE0GItnrPim/HceCPKsIxEodE7cenN5ubQy3+aZbM1CpnEhPChc0g6jyXOm\r\n+JMGrrp6jJKkQXyCYcM6Jg2FBqJeJval72nZYi1mgEgfJTqbE8kbQg4TfUAP\r\nc0SvNw/M2AFMecK1UeLfuLhKUucVPHP5y5DddGDPvQwJ2Q4oiCrXo8jV2Sjy\r\nM4kCacb/MANksgnLUBFtIlCDZrVAto9xkqbrZj+46Zkb8HMSU7ZVZfzsyQ+2\r\nfsc8F9UebvF98Zl4oS2IjGDPIlJ/z6SRhMYzajsLU6+j8y/v8RtccxELh+S1\r\nV0TbkNd4uYDLVEypQkpGWmjFTjBpjG0oUQU=\r\n=oMXV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"3a92022bd1dd93369204ad74b6663cac9ab400ba","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.md dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.11.0","description":"A package which will help you to transform your JSON strings or plain objects into JS object instances.","directories":{},"_nodeVersion":"16.15.1","dependencies":{"lodash":"^4.17.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.21.1","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.5.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^3.11.2","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_5.0.0-beta.1_1658344429847_0.8076825879815499","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@dipscope/type-manager","version":"5.0.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@5.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"1a4f05e25cafb9b2b64b689cfa845af1f8891239","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-5.0.0.tgz","fileCount":108,"integrity":"sha512-cUFTtfNQPUl7r/NEkYXOZWQqh3ujArdO5qEfMTM08tw0895yc40rutXd/j40r4lN4Fuh66C9FC4sQSIp0kAfag==","signatures":[{"sig":"MEUCIQCB0BEIRNcQs9BjbHBiI1IDS4699QXiTXhHu82LlS5EiQIgJbrjy5OSkRj7JM2ZC8HevX1POVrZBxkorJqUa4dcKcc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":317872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5sN1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfRRAAm3Py3KXPR1UpJ1xdSrWgWWlETq3mmE5gu8xzCsoeWRe7iRoy\r\nuVyvGJd3G6TfBi1zpCr6LWgJThsoi5ry3k4qFOQ0Bgut0Eg3rLd+WCh6cYbH\r\nvw7M9U1dKtWZo0JbztBFFC+NO1Vkr2j8faWPdXS/LeBVadMo9FK6YZSN6+dM\r\nTLQqU5C4Fu4b9eMChxwCOTLV9OK+rzLxlupYsY6A4SyIM3o7pkRC0OK45Nl9\r\nka4pE0/FmHRFD6/iYzNQfoWCej4G56zkLdGhi473qpi10PxpzNF6poOMjjI7\r\n1Bt+iyRWriyoJgPZxoL3Pnpd06Gdjz0dih1xODrXFMSAi/llPJL6EC/dTOVG\r\nfL3UHl5ARbjB8nCI9oTJ2dvynDIrnDMcEKkNeAznFJeSphZC91qu+7qVMpJo\r\nbdVVVM0cbWDurQgdTOHPJRzUx+OevhXiw7N3BWepvJp3exP4pjh04CzZkm7s\r\nbs/qBSkMaAnhikDZIZW5gFHAdfq/sJ2sNhnfcbMkXTYkqU4Srj+rRd2GE3LM\r\nboyErZS8J4vhRQ8S6VpJHhOsN5HTzoYvOChXBchrZtARcmLKKY765ZRSd3DP\r\nEQEjQ7C4hAGDFmd9i+FgcwC114lWHzptMCLKLLZQCz2eb/a0pyfdNOe3u4ia\r\nBYIqsRkgdmrPZAnxDjO01C3pRslKiCNQYZQ=\r\n=S/Cn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","scripts":{"copy":"shx cp CHANGELOG.md dist && shx cp LICENSE.md dist && shx cp package.json dist && shx cp README.md dist","lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run clean && npx webpack --config=webpack.config.js && npm run copy","clean":"shx rm -rf dist"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"6.14.17","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"14.20.0","dependencies":{"lodash":"^4.17.21"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_5.0.0_1659290485612_0.010259240391853996","host":"s3://npm-registry-packages"}},"6.0.0":{"name":"@dipscope/type-manager","version":"6.0.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@6.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"3ae8f70d64fd7883148179c43186ee150045b29f","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-6.0.0.tgz","fileCount":745,"integrity":"sha512-B110Fwg3R5K4MNGVJW9yq58N0uQbr0htQ6mxY3I4kbFk2VsBrUkxuOc0fvpZZ27Ude2tWWGNK/4HAEhRS5LZgg==","signatures":[{"sig":"MEUCIE11TPdfr83kKPwZY5CCcV5vPtIekJ1WjeDxhdEILQ3WAiEAzW7kSlfWqVQDXSvuvRh8ZqknkVNP9UOEEFFZo29WyHA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1321574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkG2wSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqrMxAAgCp42oE53iCU5alKjdnd/fP4YyihGrUIv3e6nUYo8Kf4Offb\r\n5v3FxC0P4skh9AJ3MMhy2McnuX5ClKHTaMyBDcPhLS8NO31f3KhD/WVYHzwT\r\neaEzBtBXoF0moKk9H4jl2I8NuVAdlDeQuZKqpnRGOauhpNYWWv518Sotc0sk\r\nqB61yWdQnxET9FecbihGnusYnfktZqMv/1+NMsVnC3O3OmV/y5yAq9YN9XBS\r\n/dARDQsvbZjnqSJMVHYKg0XoIy+M9v2Xs3KMqwh77LbScwfgLbrL2WnATno8\r\nZyhiijUUHtU4EMGDeyHrl8icZX0K1q1P7iv5Z5umFlWa6iEBv6pbNiFthugS\r\nmdJYcne7RcLmV6pcaJg6hhfkuyi0KEYT0x04MMakuDY6sLYt8NLflmNgMd3Z\r\nPIDtwzX82bcrEQhaWkPWzTJxJMlT0bHP3idM4WX8AM/IHhcHH2HIjezHgnGm\r\nyu1vUplA91cvhndkII03kJE1IfEMcVMlYXnxy19wRbcIw0iCU7HsRO5Z2RW2\r\nByT/DXeFO3Nf4qs5XNeOaNFBPkLJ8UVbryANe8ynDTvmawUFx3HQwEtofz0/\r\nMS+t7t9U6JJA6j6x+OYz7fC0R6UoiFJhnoiyKkb4mYN/2bgTMjNTyOxYzJCZ\r\nB+evZv8+LQ/Ox4msIebkSUR3r023VBIv9yc=\r\n=nvW8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"4b976e973c0ed6b91d732a9e4f4ff6fa2d1d3ee9","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.15.0","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.17.1","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_6.0.0_1679518738197_0.07700147573618943","host":"s3://npm-registry-packages"}},"7.0.0-beta.0":{"name":"@dipscope/type-manager","version":"7.0.0-beta.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@7.0.0-beta.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"b4385674757550449fae0225258a48c51cf7b0df","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-7.0.0-beta.0.tgz","fileCount":769,"integrity":"sha512-2J1fGnr6BwNxi2K1QXqzGGTW/PIyDBbNDq+Ztfdj2aK+306vtOes3W/4REQ14mCer6D+e4sVW/65Chrg+hXR9A==","signatures":[{"sig":"MEQCIDCUGOXPZukVnUDBgD9X7WGlHt4UrVfMlNtlcuGTcF8KAiABVHX8bMVI14fYoOkBGbmYP65IdwICJ+7SpBbOAAz7ww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1360924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIGBbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeCA/9H3POmT0sY/h3OE/lbv1drBYgGvezMmSi09AxmqkV8QRiLrbX\r\nPAaHG5HL4cuwkcGPZQgXAA/dke6m5l0456Vp2l6/NOfApwKIjUDU1nyAb2as\r\neSOw/bfhsYIsxQ5IdL5TY+TeZASFgLkAQDrNsw4URWiyiyXfozWP5ADIMrt5\r\nkCg0kWw5uumMp2Yy8CbLOFP0Ff99oD8g+3bp61ny04zYfoLCsNkL+lS8cnRN\r\nL3mlLpQV/qnZN9nPauw4qAJcC388Vz3VtHmd+4DaLGSFXUDrIKNmgnIHlZvk\r\nelIHGtwVLPdCEzCBoqmAP9MjJ3J+5c15G3GL+pO+/FPvdCTVbBFxY0emTK0D\r\naRVndU36iWjY7FdK01pSEC1fc0Mbd+Kd5mY42WWuewQfe8shn1ZLqVoCEA/I\r\ngwHQCSxV7V84GiGr8JOkSPVusuCjXvIc0+dyIGy+JfC2K5iqtyemXfkzWc/i\r\nSkR4zXB9Vn/EetgBvQjWGUAZyvoztci/Eh39X94T3942/Su3VQBfONN1jEk+\r\nsmp4kbeq7ZxgFjAqztHWSnJ1u3jO6ZM2MuzuEx91yzHsuwmANvHRQFfNQR5W\r\nvDzZ0yY5K2Pkj3yWslU4/FBmPpXiVILUr3xxphbW+95dKaz0ZRKDovFNx6TW\r\ntBaZwA+WqLswtqTmeNg/3CZqkrU5hpTwbv0=\r\n=801/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"555062b2abdb7dc081cb7d58c0bdc44844a700c7","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.15.0","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.17.1","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_7.0.0-beta.0_1679843418921_0.5806340185981718","host":"s3://npm-registry-packages"}},"7.0.0":{"name":"@dipscope/type-manager","version":"7.0.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@7.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"2acae46add0e2cf01688b64659ee20a385f3701c","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-7.0.0.tgz","fileCount":769,"integrity":"sha512-vgc29ULsnW6bHpZtfm9Jp3I8jUB6COB88UI6s+N9Zx5KkuBZIWSwGHKcapCe9Pw3qeYVtkplq2AudeTXLa365Q==","signatures":[{"sig":"MEYCIQCxx90Won1PRwGYxbWuJYgMA/7dJgog9mrVDPM6F5E8RAIhALCljicmDI97BCuiyOrVmBOCHcKRS1d8JIlc+LOYV1/s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1330081},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"1a5c6f2f3fe63d1de1041b7c0f691389ece0ff73","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.0","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_7.0.0_1687727397498_0.6132437615991868","host":"s3://npm-registry-packages"}},"7.0.1":{"name":"@dipscope/type-manager","version":"7.0.1","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@7.0.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"2b013261166098ef3d844b6ef3453722b6d5a234","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-7.0.1.tgz","fileCount":769,"integrity":"sha512-/c1wj7tdzP63HtQ8fyRbGaa24J6DhWjTRa6a52pd4fEupm9D9nNIYy+jHmGoRV8s355WdIe3j2pcZHYGr5jx3A==","signatures":[{"sig":"MEUCIQC6dTMZztpUvlVtbJNnGrsP+mkgCCGknKEyvH3aFAfQQQIgWb6oBGrjoW9NMuxUiC/A+qtNjgY2r/1dle1gfbedfLs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1329472},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"6f7beae79b966320bee52c029b6218d688d4c42c","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_7.0.1_1691695637607_0.17988889726721302","host":"s3://npm-registry-packages"}},"7.1.0":{"name":"@dipscope/type-manager","version":"7.1.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@7.1.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"4583f0940700839c54b153839f9c26e8fd2d87a5","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-7.1.0.tgz","fileCount":805,"integrity":"sha512-Dy2NDjBym7r79/TuRN2+LYBHAfkzu/tOvYKmYF6zSAkeZpkaSqZFXnver/IWLUOP+Xk4v78BRwpfmSLrMWpiNg==","signatures":[{"sig":"MEUCIF2Hs1nLfwCg5lgggtrfG+dtQgLbXTm6mtJCPOM4WJYmAiEA3wiJEdNieJIk/LKlJjr+348DJisaX2t83W/5zBIfPuk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1361297},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"f481f6baf704040a798ed89e31eb1dc2552ade77","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_7.1.0_1692387466649_0.04335029863096018","host":"s3://npm-registry-packages"}},"7.1.1":{"name":"@dipscope/type-manager","version":"7.1.1","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@7.1.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"a4cf4d7a44bb4b757153d41abb237ad9b70644bd","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-7.1.1.tgz","fileCount":817,"integrity":"sha512-+0+kKbku5PAwg8S53WpkHjisoprUTD/De+AkI1PYG4odiaEgFGQWZmGSECDeBiWb26Kb65SUblLirafqsBKkBQ==","signatures":[{"sig":"MEUCIQDrEzyHF66C3DzvlhLVOv+yMiJNjCQbaD+FQvbPghutTgIgUcd464m22rPmtPCoWB/s0cVO4fV7o5Vf891I+Adsmwc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1374795},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"fe4e55daa89ebf4083bff523c70b706fe73654d9","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.1","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_7.1.1_1692397898547_0.34103138997264115","host":"s3://npm-registry-packages"}},"7.2.0":{"name":"@dipscope/type-manager","version":"7.2.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@7.2.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"0c452b49e950f05fbe977882015fa50eedf9fb54","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-7.2.0.tgz","fileCount":817,"integrity":"sha512-CbrPFomTjTZhhcrrXIK2/HJct0d3jVFI5B+yMVhkRgKOTNAsSiO6+Wfchtj49UIqtZV/w40nskvszjtH/CD4zA==","signatures":[{"sig":"MEQCIBGDTX68qZ8CYDOSS0S/zbQplED23d1G6Kb3/czW0FWOAiAJ6TPauDO3Dmw0tzPbONV3MZBsH5AeeCAzbFzOE/A0kg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1387557},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"33ea2c40f97ad6327727d5a2488dc66aeee08b1f","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_7.2.0_1697658855444_0.8946165534361508","host":"s3://npm-registry-packages"}},"7.2.1":{"name":"@dipscope/type-manager","version":"7.2.1","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@7.2.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"e31dd2defd403f166f81c9451671523f041600df","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-7.2.1.tgz","fileCount":841,"integrity":"sha512-8MAgHEbDagegvfuh/EG9sP/tPyFreIovYQR0AlYOjfEPZPsbZSjG3L7F2sOR+/JWiSL7Nc6MufOfyQaQASxOLA==","signatures":[{"sig":"MEQCIAUeeKPV9f+cSbJTkRHvhaKUKkoriWZDM867RVu0C0eFAiANFNEQZthz64sEjbYp9MMbmYnrR41Ga5t5oVYyyYKmpw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1425214},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"881109fa1b20f7ed8fe13b5162aed95d32495b6e","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"tslib":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"peerDependencies":{"lodash":"^4.17.0"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_7.2.1_1708210133934_0.01263035910391741","host":"s3://npm-registry-packages"}},"8.0.0":{"name":"@dipscope/type-manager","version":"8.0.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.0.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"28bea7bfa2914a8993188d74e6191cd9411887ee","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.0.0.tgz","fileCount":835,"integrity":"sha512-Vro5NIRotrybTp80OzR5uWtyllQtY7yfxhSgiZC9GratOsaWpWh6iDihMLdOQsKoqyv6uBnLGcvf2mtWy4SSgw==","signatures":[{"sig":"MEUCIQDCyw5eErBzm0dUPh/Oi+JgkaCWBXcnfZesmK0neZJ31AIgQr/acK0nAeJvCAREyfppCfvzGxfxtB45anFNkHF3ZA4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1718790},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"60177d47c83cd9df4e1b32de46c424c4277a1cf1","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/lodash":"^4.14.182","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.0.0_1736604777018_0.06367791952454493","host":"s3://npm-registry-packages-npm-production"}},"8.0.1":{"name":"@dipscope/type-manager","version":"8.0.1","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.0.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"aef23582b7a61015b8aef028e2b7a85daebd43c9","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.0.1.tgz","fileCount":835,"integrity":"sha512-6O8NJRK2c2vhY6FzqarG67HjLTFe4lxv1QnrOJrDAaKUXailM55MQrvjjaW2oOX32VLOP8LYgz7MKkWVIegAXQ==","signatures":[{"sig":"MEUCIQCXucE/vUIreOCTNNt2+JXdOlEnJ1rEXfpZBWoWRdM5PQIgPZy1SmF18z8lCsJff78o3bJMoI3Njcoc77/hmVIR8mA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1718848},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"8ecc368ca08e6382967fc46aeb13ea6b83723c30","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.0.1_1742668929579_0.5567775469555076","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"@dipscope/type-manager","version":"8.1.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.1.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"d241f62e9a2c419507b3ace46e64c635a3193a55","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.1.0.tgz","fileCount":835,"integrity":"sha512-msbmco/2RS96o6Caj+DY6FkGPrbDTs007exjxVV3izcKEm7KeQrV0Nv/3272hbNuzcyLTdXfVyxPdeWl12NG9A==","signatures":[{"sig":"MEUCIQCo0yWN+Yw6zJPYGcp/vV0x+AJyFu4ywa0Q43ipITeCBQIgZsaQMx4ihEDsrjUsTVHYWSc7rD3Axy/bvgUaQXhzTCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1730139},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"7c0e0352f60a6836e6c901af25a38a1cae32d81b","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.1.0_1748812621640_0.943185279247315","host":"s3://npm-registry-packages-npm-production"}},"8.1.1":{"name":"@dipscope/type-manager","version":"8.1.1","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.1.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"6807105c60a542f0facba3c76df9e44c20ef82bd","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.1.1.tgz","fileCount":835,"integrity":"sha512-XRUmRLVUpu9dp1D6ApsnLTO/3qBpfLpbqjLNquDfXrgvy1T0wCf6l9beaRD2vpX8n7fzJL3W6r1gOrRCzUqupw==","signatures":[{"sig":"MEUCIBQDumPH59JUm1K/KmwCwJZKTVRLM8DRsxXpPEtPfNboAiEArH6cmBsEaF4fSo73Ydh2xRlATlEL/76UuOyOy9SOrJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1750364},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"33e7e67eb1510040ee32627ac874f346a6f5a2c5","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.1.1_1748892067646_0.48943044412833925","host":"s3://npm-registry-packages-npm-production"}},"8.1.2":{"name":"@dipscope/type-manager","version":"8.1.2","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.1.2","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"7f198244299542e5f0346b64c28b836379016d7e","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.1.2.tgz","fileCount":835,"integrity":"sha512-2P27eY8uDiqzegS1nYKGS0IJ7x71AV7OLEzv5T1R95auSHmpN0tHdJqQuKmZl1KdaOHbDfo02tciRp8TnCQSCQ==","signatures":[{"sig":"MEUCIQD9tbu2p6yn0pGehkEINqkKaN2WxNLBU/kwgXsGypKcIQIgMucFwPEJGoNlD2/lt0vjuF/UW7zpphHaAHt6J/Sr0XI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1750045},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"e0393dd2cfc4cb922549773136a6153c59907484","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.1.2_1748894660003_0.7407350199025708","host":"s3://npm-registry-packages-npm-production"}},"8.1.3":{"name":"@dipscope/type-manager","version":"8.1.3","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.1.3","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"11a4f66b98b3f5787eb4f7fbd6c39fe0efcf55cc","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.1.3.tgz","fileCount":835,"integrity":"sha512-eHGJ5xruP3VYmnPPvZLXhiZjlefXeY5yVy93vu3XoiiwRcVpu8ij877efWfUtvcA0IPhHNkhWgpNn2bqWXPDKA==","signatures":[{"sig":"MEQCIDjzeZtCEwzhXmYrjWJFB8T8Y92tZANpPZRrdMbOqncTAiB9+nZXiqhp5VKgdamdWSJ94VhPid0zUpDlKpxi8u3HHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1750548},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"e599561f2203476c119ea583ab772a041cc6ce9b","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.1.3_1748895351520_0.9542664179045677","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"@dipscope/type-manager","version":"8.2.0","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.2.0","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"5abc7862f194d08edb85f9df11fee6b43caff1c0","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.2.0.tgz","fileCount":853,"integrity":"sha512-ZkZFO3rcM2aJbQZQrVGcYdqSuKRazHYi1km10C12V5+Eyrijh2pkOa0IbQu4h8hnT99HpIIrew2b8EO9yy5HgQ==","signatures":[{"sig":"MEUCIHg+TrUhl34vibkTYNPAqTS5oZHJYLOLQ4tyXxMGygvMAiEA0b2fDF1JlHFHFY+H7XZX2ZTZSt8c7L37ea4dWKgC8dA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1780546},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"cdca945c020ce09acc24de071d234e070c206400","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.2.0_1748986683811_0.6861166721781371","host":"s3://npm-registry-packages-npm-production"}},"8.2.1":{"name":"@dipscope/type-manager","version":"8.2.1","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","_id":"@dipscope/type-manager@8.2.1","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"homepage":"https://github.com/dipscope/TypeManager.TS#readme","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"dist":{"shasum":"af28d744f8cdab392cfe1249bc742c656ff7e339","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.2.1.tgz","fileCount":853,"integrity":"sha512-0GA6RjtWA7WR3rS08PLEYUv/jF+HqU9u6W02w3gIf4kWNGot0CVj6ZpHmrQ5ZeVchQu6HdBXDkWq9JMyO/y1UA==","signatures":[{"sig":"MEUCIQDgoj1M0IMfzBDIIx0trsIt0KxNv16RdszW8W68Sj9GbQIgN00hqO3f+HXO/MAv3a+urWDTNyvRL63sUjIZn50Z9oU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1782424},"main":"./dist/umd/index.js","types":"./dist/types/index.d.ts","es2015":"./dist/es2015/index.js","module":"./dist/es5/index.js","gitHead":"79116d239fc710b81772b0f6db7760e4e947c619","scripts":{"lint":"eslint . --ext .ts","test":"jasmine-ts --config=jasmine.json","build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:umd":"npx webpack --config=webpack.config.js","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json"},"_npmUser":{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"},"repository":{"url":"git+https://github.com/dipscope/TypeManager.TS.git","type":"git"},"_npmVersion":"8.19.4","description":"Transform JSON strings or plain objects into JS class instances.","directories":{},"_nodeVersion":"16.20.2","_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","eslint":"^7.19.0","jasmine":"^3.6.4","ts-node":"^8.10.2","webpack":"^5.74.0","ts-loader":"^8.0.15","jasmine-ts":"^0.3.0","typescript":"^4.1.3","webpack-cli":"^4.10.0","@types/jasmine":"^3.6.3","reflect-metadata":"^0.1.13","webpack-dev-server":"^4.9.3","jasmine-spec-reporter":"^6.0.0","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/type-manager_8.2.1_1749415927118_0.12536751312004624","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"author":{"name":"DipScope authors and contributors"},"description":"Transform JSON strings or plain objects into JS class instances.","devDependencies":{"@types/jasmine":"^3.6.3","@typescript-eslint/eslint-plugin":"^4.14.2","@typescript-eslint/parser":"^4.14.2","circular-dependency-plugin":"^5.2.2","eslint":"^7.19.0","jasmine":"^3.6.4","jasmine-spec-reporter":"^6.0.0","jasmine-ts":"^0.3.0","reflect-metadata":"^0.1.13","shx":"^0.3.3","ts-loader":"^8.0.15","ts-node":"^8.10.2","typescript":"^4.1.3","webpack":"^5.74.0","webpack-cli":"^4.10.0","webpack-dev-server":"^5.2.1"},"keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"license":"Apache-2.0","main":"./dist/umd/index.js","module":"./dist/es5/index.js","es2015":"./dist/es2015/index.js","types":"./dist/types/index.d.ts","name":"@dipscope/type-manager","repository":{"type":"git","url":"git+https://github.com/dipscope/TypeManager.TS.git"},"scripts":{"build":"npm run build:clean && npm run build:types && npm run build:es5 && npm run build:es2015 && npm run build:umd","build:clean":"shx rm -rf dist","build:types":"tsc -p tsconfig/tsconfig.types.json","build:es5":"tsc -p tsconfig/tsconfig.es5.json","build:es2015":"tsc -p tsconfig/tsconfig.es2015.json","build:umd":"npx webpack --config=webpack.config.js","test":"jasmine-ts --config=jasmine.json","lint":"eslint . --ext .ts"},"version":"8.3.0","gitHead":"82c9dc8e71046eb6c02d75521e5aba754b936ed4","_id":"@dipscope/type-manager@8.3.0","bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"homepage":"https://github.com/dipscope/TypeManager.TS#readme","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-sWOxNdJpFFzb13K1umTEuI4KFzQQ863oD6HdcLe+cmN6psA/GfIkEG2BPr8rKRozDoZJKvbOprYpig0jrefxgw==","shasum":"2df949bb83a4fa1d2de6768974535f005d2f0365","tarball":"https://registry.npmjs.org/@dipscope/type-manager/-/type-manager-8.3.0.tgz","fileCount":889,"unpackedSize":1849549,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dipscope%2ftype-manager@8.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGhR8UUNtCVvjtpQFmYVVMQkGCELjjnLK7u9+ycN+p29AiA6VSkiulvsAd+UPqqTnXd/+LhcDMAt6ZyyU+F8A69NTg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:127f0940-669f-40a5-b8d0-66107c9cf932"}},"directories":{},"maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/type-manager_8.3.0_1767216141612_0.15254758975809612"},"_hasShrinkwrap":false}},"time":{"created":"2020-12-16T06:32:56.802Z","modified":"2025-12-31T21:22:22.214Z","1.0.0":"2020-12-16T06:32:57.220Z","1.1.0":"2020-12-22T18:29:26.363Z","1.2.0":"2020-12-23T17:19:58.614Z","1.2.1":"2020-12-24T17:30:22.514Z","1.2.2":"2020-12-25T17:59:06.412Z","1.3.0":"2021-01-20T18:24:00.964Z","2.0.0":"2021-02-10T20:48:56.617Z","2.0.1":"2021-02-11T15:18:54.111Z","2.0.2":"2021-02-11T18:26:57.156Z","2.0.3":"2021-02-13T11:20:29.255Z","2.0.4":"2021-02-13T18:48:52.207Z","3.0.0":"2021-03-06T10:45:38.286Z","4.0.0":"2021-03-24T18:09:50.601Z","4.0.1":"2021-08-01T17:33:34.186Z","4.0.2":"2022-05-01T19:22:32.669Z","4.0.3":"2022-05-07T10:39:10.898Z","4.0.4":"2022-05-15T12:09:09.148Z","4.1.0":"2022-05-18T19:08:05.767Z","4.1.1":"2022-05-30T17:14:51.798Z","5.0.0-beta.0":"2022-06-04T13:04:55.483Z","5.0.0-beta.1":"2022-07-20T19:13:50.056Z","5.0.0":"2022-07-31T18:01:25.820Z","6.0.0":"2023-03-22T20:58:58.420Z","7.0.0-beta.0":"2023-03-26T15:10:19.181Z","7.0.0":"2023-06-25T21:09:57.727Z","7.0.1":"2023-08-10T19:27:17.952Z","7.1.0":"2023-08-18T19:37:46.923Z","7.1.1":"2023-08-18T22:31:38.797Z","7.2.0":"2023-10-18T19:54:15.845Z","7.2.1":"2024-02-17T22:48:54.184Z","8.0.0":"2025-01-11T14:12:57.427Z","8.0.1":"2025-03-22T18:42:09.803Z","8.1.0":"2025-06-01T21:17:01.916Z","8.1.1":"2025-06-02T19:21:07.895Z","8.1.2":"2025-06-02T20:04:20.264Z","8.1.3":"2025-06-02T20:15:51.782Z","8.2.0":"2025-06-03T21:38:04.118Z","8.2.1":"2025-06-08T20:52:07.317Z","8.3.0":"2025-12-31T21:22:21.800Z"},"bugs":{"url":"https://github.com/dipscope/TypeManager.TS/issues"},"author":{"name":"DipScope authors and contributors"},"license":"Apache-2.0","homepage":"https://github.com/dipscope/TypeManager.TS#readme","keywords":["json","object","class","converter","transformer","type","manager","serializer","deserializer","reflection","metadata"],"repository":{"type":"git","url":"git+https://github.com/dipscope/TypeManager.TS.git"},"description":"Transform JSON strings or plain objects into JS class instances.","maintainers":[{"name":"dpimonov","email":"dpimonov.webdev@gmail.com"}],"readme":"# TypeManager.TS\n\n![GitHub](https://img.shields.io/github/license/dipscope/TypeManager.TS) ![NPM](https://img.shields.io/npm/v/@dipscope/type-manager) ![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)\n\n## What is TypeManager?\n\nTypeManager is a stable, highly-tested, highly-performant parsing package for `TypeScript` which handles everything you need to easily integrate classes into your workflow.\n\n## What does it do?\n\nMost frontend developers are writing custom helpers and functions (in the form of React Hooks and Vue Composables) to solve a problem that, in the backend world, was solved elegantly decades ago by the use of Classes.\n\nImagine handling a `User` object that contains a first name, last name, and nickname. You need to intelligently display the `best` name for that user in multiple places.\n\n```typescript\n// Hi! I'm some user data from the server!\nconst user = fetchUserData();\n```\n\nIn the world of TypeScript, it has become common to see something like this, _repeated in every single file_ that needs this functionality:\n\n```typescript\nimport { useFormattingFunctions } from '@/hooks/useFormattingFunctions';\n\n// Get name formatting function.\nconst { nameFormatter } = useFormattingFunctions();\n\n// A user in the form of JS object.\nconst preferredName = nameFormatter(user); // ...finally got what I needed!\n```\n\nBut in the backend world, this sort of problem was solved decades ago:\n\n```typescript\n// A user in the form of `new MyUserClass()`.\nconst preferredName = user.getPreferredName(); // Whew! That was quick! \n```\n\nThe problem is that, when you're used to working with plain-old JavaScript objects, you're used to having data (only!) and no business logic. But ask yourself: which one is simpler? Which one is easier to read?\n\n## TypeManager to the rescue\n\nTypeManager will help you to transform JSON strings or plain objects directly into class instances. No more need for unsafe `JSON.parse` and `JSON.stringify` functions. Forget about manual mapping and limitations. We support data transformations, circular references, naming conventions, generic and polymorphic types. Parsing was never so fun and easy. \n\nConfiguration can be done using [decorators](https://www.typescriptlang.org/docs/handbook/decorators.html) or declarative configuration for your or 3rd party classes.\n\n## What do I do?\n\nIt almost couldn't be easier. Instead of making a file like this:\n\n```typescript\n// The old way...\nexport interface User\n{\n    name: string;\n    email: string;\n}\n```\n\nJust add a few extra keywords:\n\n```typescript\n// The new way!\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String) public name: string;\n    @Property(String) public email: string;\n}\n```\n\nThen, in the place where you used to get your data:\n\n```typescript\n// The old way...\nconst users = await fetchUsers();\n```\n\n...You _parse_ them instead, using TypeManager's `deserialize()` method:\n\n```typescript\n// The new way!\nimport { TypeManager } from '@dipscope/type-manager';\n\nconst users = TypeManager.deserialize(User, await fetchUsers());\n```\n\nAnd if you need to send them back to the server, you can just go the other direction using `serialize()`:\n\n```typescript\n// The new way!\nimport { TypeManager } from '@dipscope/type-manager';\n\nconst rawUserData = TypeManager.serialize(User, user);\nconst response = http.put('/users/123', rawUserData)\n```\n\n## Wow! It's that easy?\n\nYou're darn right it's that easy! Now we can use all the power provided by `JavaScript` class instances without worriyng about the annoying stuff.\n\nFurthermore `TypeManager.TS` provides you:\n\n* Reflection abilities at runtime.\n* Support for generic types.\n* Support for inheritance and polymorphic types.\n* Handling of circular object references and different ways of serialization.\n* The ability to configure custom serialization of -party classes.\n* A great alternative to similar packages like [class-transformer](https://github.com/typestack/class-transformer), [TypedJSON](https://github.com/JohnWeisz/TypedJSON) and [jackson-js](https://github.com/pichillilorenzo/jackson-js).\n\nWant to know more? Let's dive into the details.\n\n## Installation\n\n`TypeManager.TS` is available from NPM, both for browser (e.g. using webpack) and NodeJS:\n\n```\nnpm i @dipscope/type-manager\n```\n\nTypeScript needs to run with the `experimentalDecorators` and `emitDecoratorMetadata` options enabled when using decorator annotations. So make sure you have them properly enabled in your `tsconfig.json` file.\n\n_If you want additional type-safety and reduced syntax you may wish to install [reflect-metadata](https://github.com/rbuckton/reflect-metadata). This step is your choice and fully optional. All you have to do is make sure it's available globally to work -- this can usually be done with `import 'reflect-metadata';` in your main index file._\n\nStarting from TypeScript 5 we will also support the modern decorator syntax. However, parameter decorations with this modern syntax are not supported - you will not be able to use the `Inject` decorator provided by the library as well as `reflect-metadata` package if you're using modern syntax. We will add support as soon as it's provided by TypeScript, however. In the meantime, if you need the `Inject` decorator and enabling legacy decorators support is not an option - you can simply use the declarative configuration style.\n\n## Give us a star :star:\n\nIf you like or are using this project, please give it a star. Thanks!\n\n# Detailed Documentation\n\n* [Understanding TypeManager](#understanding-typemanager)\n* [Defining decorators](#defining-decorators)\n    * [Type decorator](#type-decorator)\n    * [Property decorator](#property-decorator)\n    * [Inject decorator](#inject-decorator)\n* [Defining decorator options](#defining-decorator-options)\n    * [Alias option](#alias-option)\n    * [After deserialize callback option](#after-deserialize-callback-option)\n    * [Before serialize callback option](#before-serialize-callback-option)\n    * [Custom data option](#custom-data-option)\n    * [Default value option](#default-value-option)\n    * [Deserializable option](#deserializable-option)\n    * [Discriminant option](#discriminant-option)\n    * [Discriminator option](#discriminator-option)\n    * [Factory option](#factory-option)\n    * [Get interceptor option](#get-interceptor-option)\n    * [Injectable option](#injectable-option)\n    * [Injector option](#injector-option)\n    * [Naming convention option](#naming-convention-option)\n    * [Parent type arguments option](#parent-type-arguments-option)\n    * [Preserve discriminator option](#preserve-discriminator-option)\n    * [Preserve null option](#preserve-null-option)\n    * [Reference handler option](#reference-handler-option)\n    * [Serializable option](#serializable-option)\n    * [Serializer option](#serializer-option)\n    * [Set interceptor option](#set-interceptor-option)\n    * [Use default value option](#use-default-value-option)\n    * [Use implicit conversion option](#use-implicit-conversion-option)\n* [Defining configuration manually](#defining-configuration-manually)\n    * [Configuring global options](#configuring-global-options)\n    * [Configuring options per type](#configuring-options-per-type)\n    * [Configuring usage of polymorphic types](#configuring-usage-of-polymorphic-types)\n    * [Configuring naming convention](#configuring-naming-convention)\n    * [Configuring reference handler](#configuring-reference-handler)\n* [Advanced usage](#advanced-usage)\n    * [Defining custom data](#defining-custom-data)\n    * [Defining custom serializer](#defining-custom-serializer)\n    * [Defining custom injector](#defining-custom-injector)\n    * [Defining custom factory](#defining-custom-factory)\n    * [Defining custom naming convention](#defining-custom-naming-convention)\n* [Use cases](#use-cases)\n    * [Built in serializers](#built-in-serializers)\n    * [Circular object references](#circular-object-references)\n    * [Dependency injection and immutable types](#dependency-injection-and-immutable-types)\n    * [Different case usage in class and JSON](#different-case-usage-in-class-and-json)\n    * [Enum types](#enum-types)\n    * [Generic types](#generic-types)\n    * [Integration with Angular](#integration-with-angular)\n    * [Polymorphic types](#polymorphic-types)\n* [Versioning](#versioning)\n* [Contributing](#contributing)\n* [Authors](#authors)\n* [Notes](#notes)\n* [License](#license)\n\n## Understanding TypeManager\n\nLet's have a look at that simple example of configuration using decorators from above.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String) public name: string;\n    @Property(String) public email: string;\n}\n```\n\nHere we have a `User` class with `Type` and `Property` decorators assigned to it. `Type` decorator declares a type. `Property` decorator describes available properties for that type.\n\nYou can write the same configuration can using our \"declarative style\".\n\n```typescript\nimport { TypeManager, TypeMetadata, TypeConfiguration } from '@dipscope/type-manager';\n\nexport class User\n{\n    public name: string;\n    public email: string;\n}\n\nexport class UserConfiguration implements TypeConfiguration<User>\n{\n    public configure(typeMetadata: TypeMetadata<User>): void \n    {\n        typeMetadata.configurePropertyMetadata('name')\n            .hasTypeArgument(String);\n\n        typeMetadata.configurePropertyMetadata('email')\n            .hasTypeArgument(String);\n\n        return;    \n    }\n}\n\nTypeManager.applyTypeConfiguration(User, new UserConfiguration());\n```\n\nAs you can see now our `User` class has been defined without decorators. Instead, you call the `TypeManager` method and provide `TypeConfiguration` related to the `User` type.\n\nNo matter what style of configuration you have chosen, the next step is to call the serialize and deserialize methods of `TypeManager`, providing a type and the data you want to process.\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\n\nconst userObject = TypeManager.serialize(User, new User());\nconst user = TypeManager.deserialize(User, userObject);\n\nuser instanceof User; // True.\n```\n\nCalling `serialize()` creates a plain object, while deserialize creates an instance of the `User` class. During the deserialization process, you can provide any object. It's not necessary that the object was produced by `TypeManager`.\nIf the object is an `Array`, you will get array of types in return. Objects are parsed based on general type configuration defined by the developer. It is also possible to stringify and parse JSON.\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\n\nconst userJson = TypeManager.stringify(User, new User());\nconst user = TypeManager.parse(User, userJson);\n\nuser instanceof User; // True.\n```\n\nThe `stringify()` and `parse()` functions are wrappers over native JSON class functions. In addition, they add serialize and deserialize support under the hood.\n\nStatic functions are not the only way to work with a `TypeManager`. You can also work in an instance-based manner.\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\n\nconst userManager = new TypeManager();\nconst userObject = userManager.serialize(User, new User());\nconst user = userManager.deserialize(User, userObject);\n\nuser instanceof User; // True.\n```\n\nAt first glance, it may seem that there is no difference; however, creating an instance of `TypeManager` preserves a configuration state.\nYou 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\nto the singleton TypeManager instance which is automatically created under the hood.\n\n## Defining decorators\n\nThere are few decorators which control the main flow. These are the `Type`, `Property` and `Inject` decorators. Let's go through each of them.\n\n### Type decorator\n\nType decorator defines a type and should be declared right before a class.\n\n```typescript\nimport { Type } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    ...\n}\n```\n\nThis will register a new type with default type serializer assigned to it. You can define how each class should be treated by providing optional configure options as a first argument.\n\n```typescript\nimport { Type } from '@dipscope/type-manager';\n\n@Type({\n    alias: 'User',\n    serializer: new UserSerializer()\n})\nexport class User\n{\n    ...\n}\n```\n\nThis call defines a type alias which can be later used to resolve a type for a property at runtime. We will talk about details in the property decorator section. Also we defined custom serializer for a type which is an implementation of `Serializer` interface. This serializer will be used later to serialize and deserialize a type including all custom logic of your choice. You can read more about [creating a custom serializer](#defining-custom-serializer) in a separate section.\n\nThere are more options can be provided for a type, so check `TypeOptions` definition or section with [decorator options](#defining-decorator-options) below.\n\n### Property decorator\n\nProperty decorator defines per property configuration within a type and should be declared right before a property or accessor definition.\n\n```typescript\nimport 'reflect-metadata';\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property() public name: string;\n}\n```\n\nThis 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.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String) public name: string;\n}\n```\n\nDepending on your use case there are two possible ways to configure additional property options.\n\nIf you are using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) then provide options as a first argument.\n\n```typescript\nimport 'reflect-metadata';\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property({ alias: 'username' }) public name: string;\n}\n```\n\nIf types defined explicitly then provide options as a second argument.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String, { alias: 'username' }) public name: string;\n}\n```\n\nThis option configures an alias so `username` property will be used instead of `name` when deserializing from object. There are plenty of configure options, so check `PropertyOptions` definition or section with [decorator options](#defining-decorator-options) below. For example you can make some properties serializable only or define custom property serialization.\n\nNow let's have a look at more complex definitions with generic types. This are `Array<TObject>`, `Map<TKey, TValue>` and others. To declare one of this you have to use extra argument available for `Property` decorator. Generic arguments are always passed as array to exactly see them within a source code.\n\nIf you are using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) then provide generics as a first argument so configure options will become the second.\n\n```typescript\nimport 'reflect-metadata';\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property([String, Number], { alias: 'myMap' }) public map: Map<string, number>;\n}\n```\n\nIf types defined explicitly then provide generics as a second argument so configure options will become the third.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(Map, [String, Number], { alias: 'myMap' }) public map: Map<string, number>;\n}\n```\n\nThis is a full set of arguments available for the property. Basically when using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) you have just to omit the first argument.\n\nWe try to simplify declarations as much as possible so you are free to use only configure options if you want and don't ever think about `Property` decorator arguments.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property({\n        typeArgument: Map, \n        genericArguments: [String, Number], \n        alias: 'myMap'\n    }) \n    public map: Map<string, number>;\n}\n```\n\nWhich syntax to use is completely on your choice. `Property` decorator is smart enough to setup everything based on usage.\n\nNow let's talk a bit about relation types. They are not differ from built in types, so if you are using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) the definition can be the following.\n\n```typescript\nimport 'reflect-metadata';\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class UserStatus\n{\n    @Property() public title: string;\n}\n\n@Type()\nexport class User\n{\n    @Property() public userStatus: UserStatus;\n}\n```\n\nWith array of relations you have to use generics.\n\n```typescript\nimport 'reflect-metadata';\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class UserStatus\n{\n    @Property() public title: string;\n}\n\n@Type()\nexport class User\n{\n    @Property([UserStatus]) public userStatuses: Array<UserStatus>;\n}\n```\n\nIf types defined explicitly then definition will be the following.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class UserStatus\n{\n    @Property(String) public title: string;\n}\n\n@Type()\nexport class User\n{\n    @Property(UserStatus) public userStatus: UserStatus;\n}\n```\n\nThen for array of relations it will be the following.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class UserStatus\n{\n    @Property(String) public title: string;\n}\n\n@Type()\nexport class User\n{\n    @Property(Array, [UserStatus]) public userStatuses: Array<UserStatus>;\n}\n```\n\nIf any type defines an alias - it can be used as a type resolver.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    alias: 'UserStatus'\n})\nexport class UserStatus\n{\n    @Property(String) public title: string;\n}\n\n@Type()\nexport class User\n{\n    @Property('UserStatus') public userStatus: UserStatus;\n}\n```\n\nIf you have circular reference or your type declared later an extended syntax can be used to lazily define a type.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(() => UserStatus) public userStatus: UserStatus;\n}\n\n@Type()\nexport class UserStatus\n{\n    @Property(() => String) public title: string;\n}\n```\n\nOne great thing to know about arguments for property type and generics is that you can pass lazy function, type directly or type alias. Which definition to use is completely on your choice and dependent from certain use cases.\n\nWhile property type arguments exactly match to `TypeScript` types there is a one exception for this rule. This is `Enum`. You have to provide `String` type for a string based `Enum` and `Number` type for a number based `Enum`. This is because of how `Enum` is represented after compiling it to `JavaScript`. You can read more about this [here](https://www.typescriptlang.org/docs/handbook/enums.html).\n\nIf you are using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) this will be done automatically so no additional steps are required from your side.\n\n```typescript\nimport 'reflect-metadata';\nimport { Type, Property } from '@dipscope/type-manager';\n\nexport enum UserPriorityNumeric\n{\n    Low,\n    Medium,\n    High\n}\n\nexport enum UserPriorityTextual\n{\n    Low = 'Low',\n    Medium = 'Medium',\n    High = 'High'\n}\n\n@Type()\nexport class User\n{\n    @Property() public userPriorityNumeric: UserPriorityNumeric;\n    @Property() public userPriorityTextual: UserPriorityTextual;\n}\n```\n\nIf types defined explicitly then definition will be the following.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\nexport enum UserPriorityNumeric\n{\n    Low,\n    Medium,\n    High\n}\n\nexport enum UserPriorityTextual\n{\n    Low = 'Low',\n    Medium = 'Medium',\n    High = 'High'\n}\n\n@Type()\nexport class User\n{\n    @Property(Number) public userPriorityNumeric: UserPriorityNumeric;\n    @Property(String) public userPriorityTextual: UserPriorityTextual;\n}\n```\n\nOne should remember this when explicitly defining types for enums.\n\n### Inject decorator\n\nInject decorator controls your type dependency and declared right before a constructor parameter.\n\n```typescript\nimport { Type, Inject } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    public constructor(@Inject('name') name: string, @Inject(UserService) userService: UserService)\n    {\n        this.name = name;\n\n        // Any action with UserService...\n\n        return;\n    }\n}\n```\n\nIt accepts two possible inputs as its argument.\n\n* String key from JSON context;\n* Certain type registered as injectable;\n\nWhen a string key is provided then a certain value will be resolved from JSON context for you when creating an instance. If any property declares the same key you will recieve deserialized value. If not then original value will be provided instead. Injecting context values is a use case of immutable types.\n\nWhen a certain type is provided it will be resolved from the dependency injection container. If you are going to use internal type injector then you should register injectable types as the following. By default singleton injector is used to resolve such services.\n\n```typescript\nimport { Type } from '@dipscope/type-manager';\n\n@Type({\n    injectable: true\n})\nexport class UserService\n{\n    public property: string;\n}\n```\n\nIn most cases you will work in environment where dependency injection system is already setted up. In this case you have to implement custom `Injector` to be used instead of our default one. Besides you should follow the steps to register injectable services specified by the vendor. You can read more about [creating a custom injector](#defining-custom-injector) in a separate section.\n\nIf you are using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) the injection of services can be simplified.\n\n```typescript\nimport { Type, Inject } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    public constructor(@Inject('name') name: string, userService: UserService)\n    {\n        this.name = name;\n\n        // Any action with UserService...\n\n        return;\n    }\n}\n```\n\nNote that now you don't have to specify injection for types explicitly. However injection of values by key from JSON context still present. It's because argument names cannot be resolved using reflection.\n\n## Defining decorator options\n\n`Type` and `Property` decorators provide full configuration for your classes using configure options. In this section we will go through each of them.\n\n### Alias option\n\nThis option can be used both on type and property to define an alias.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({ \n    alias: 'User' \n})\nexport class User\n{\n    @Property(String, { alias: 'username' }) public name: string;\n}\n```\n\nAlias defined for a class can be used later for resolving property types. Note that it should be unique within application to work properly.\n\nAlias defined for a property declares that property name differs from one specified in JSON. In our case `username` will be used instead of `name` during JSON serialization and deserialization.\n\n### After deserialize callback option\n\nThis option can be used to specify the callback to invoke when deserialization is completed.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    afterDeserializeCallback: 'initializeAfterDeserialization'\n})\nexport class User\n{\n    @Property(String) public name: string;\n\n    public initializeAfterDeserialization(): void\n    {\n        // This method will be called after deserialization is complete.\n        console.log(`User object with name ${this.name} has been successfully deserialized...`);\n    }\n}\n```\n\nAfter the `User` instance is reconstructed, the `initializeAfterDeserialization` method will run automatically. This hook is ideal for re-establishing transient state (for example, reconnecting object references, initializing runtime-only fields, or validating integrity of the newly created object).\n\n### Before serialize callback option\n\nThis option can be used to specify the callback to invoke before serialization starts.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    beforeSerializeCallback: 'prepareForSerialization'\n})\nexport class User\n{\n    @Property(String) public name: string;\n\n    public prepareForSerialization(): void\n    {\n        // This method will be called before serialization begins.\n        console.log(`Preparing User object with name ${this.name} before serialization...`);\n    }\n}\n```\n\nThe `prepareForSerialization` method will be automatically invoked by the type manager just before serialization of the `User` instance. Use this hook to perform any last-minute adjustments such as setting default values, trimming strings, or calculating derived properties before the data is emitted.\n\n### Custom data option\n\nThis option can be used to provide any custom data for type or property.\n\n```typescript\nimport { Type, Property, CustomKey } from '@dipscope/type-manager';\n\nconst rankKey = new CustomKey<number>('rank');\nconst orderKey = new CustomKey<number>('order');\n\n@Type({\n    customValueMap: new Map([\n        [rankKey, 1],\n        [orderKey, 2]\n    ])\n})\nexport class User\n{\n    @Property(String, { customValueMap: new Map([[orderKey, 3]]) }) public name: string;\n}\n```\n\nThis custom data later can be accessed in serializers, factories, injectors or your code and used accordingly. Read more about [defining custom data](#defining-custom-data) in a separate section.\n\n### Default value option\n\nThis option is used to define a default value when one is undefined. It can be used on type or property.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    defaultValue: () => new User()\n})\nexport class User\n{\n    @Property(String, { defaultValue: 'BestName' }) public name: string;\n}\n```\n\nThis will affect both serialized and deserialized default value. This will fit perfectly for most types. You can also specify serialized and deserialized default value explicitly for complex types by using two other options.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    serializedDefaultValue: () => {},\n    deserializedDefaultValue: () => new User()\n})\nexport class User\n{\n    @Property(String, { serializedDefaultValue: 'SerializedName', deserializedDefaultValue: 'DeserializedName' }) public name: string;\n}\n```\n\nAs you can see it accepts an arrow function or a certain value. Both are valid for type and property. Using default values is turned off by default. You can enable them using `useDefaultValue` option per type and property or enable globally using `TypeManager` configure method.\n\n### Deserializable option\n\nThis option is used to enable or disable deserialization for a certain property.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String, { deserializable: true }) public name: string;\n}\n```\n\nBy default all properties are deserializable.\n\n### Discriminant option\n\nThis option is used to define a custom discriminant for a type which is later used during serialization and deserialization of polymorphic types.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    discriminant: 'Company.Api.Entities.User'\n})\nexport class User\n{\n    @Property(String) public name: string;\n}\n```\n\nYou can read more about handling of polymorphic types in this [section](#configuring-usage-of-polymorphic-types).\n\n### Discriminator option\n\nThis option can be used to define a custom property which stores discriminant of polymorphic type.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    discriminator: '__typename__'\n})\nexport class User\n{\n    @Property(String) public name: string;\n}\n```\n\nIn common use cases discriminator should be set globally using `TypeManager` configure method. Using this option on a type level makes sense only if discriminator differs from the global one. You can read more about handling of polymorphic types in this [section](#configuring-usage-of-polymorphic-types).\n\n### Factory option\n\nThis option can be used to register a handler which should be used for constructing a type instead of default one.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    factory: new UserFactory()\n})\nexport class User\n{\n    @Property(String) public name: string;\n}\n```\n\nThis may be useful in cases when you want to init some special application specific properties. Read more about [defining custom factory](#defining-custom-factory) in a separate section.\n\n### Get interceptor option\n\nThis option defines a callback that will be invoked whenever the decorated property is **read**. It can be used to transform or react to the returned value before it is exposed.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(Number, {\n        getInterceptor: value => value + 1\n    })\n    public get score(): number\n    {\n        // Original getter result.\n        return 10; \n    }\n}\n\nconst user = new User();\nconsole.log(user.score); // 11 (transformed by getInterceptor)\n```\n\nThe `getInterceptor` receives the **original value** and must return the **final value**. This is useful for applying computed transformations, formatting, or reacting to read access at runtime.\n\n### Injectable option\n\nThis option is used to register a type in dependency injection container.\n\n```typescript\nimport { Type } from '@dipscope/type-manager';\n\n@Type({\n    injectable: true\n})\nexport class UserService\n{\n    public property: string;\n}\n```\n\nInjectable type later can be provided as a dependency.\n\n```typescript\nimport { Type, Property, Inject } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String) public name: string;\n\n    public constructor(@Inject(UserService) userService: UserService)\n    {\n        // Any action with UserService...\n\n        return;\n    }\n}\n```\n\nIn most cases you will work in environment where dependency injection system is already setted up. In this case you have to implement custom `Injector` to be used instead of our default one. Besides you should follow the steps to register injectable services specified by the vendor. You can read more about [creating a custom injector](#defining-custom-injector) in a separate section.\n\n### Injector option\n\nThis option can be used to define a custom injector implementation which should be used in a type scope.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    injector: new UserInjector()\n})\nexport class User\n{\n    @Property(String) public name: string;\n}\n```\n\nIn most cases this is not required and the common use case is to specify injector globally instead. You can read more about [defining custom injector](#defining-custom-injector) in a separate section.\n\n### Naming convention option\n\nThis option can be used both on type and property to provide custom naming strategy.\n\n```typescript\nimport { Type, Property, CamelCaseNamingConvention, SnakeCaseNamingConvention } from '@dipscope/type-manager';\n\n@Type({\n    namingConvention: new CamelCaseNamingConvention()\n})\nexport class User\n{\n    @Property(String, { namingConvention: new SnakeCaseNamingConvention() }) public name: string;\n}\n```\n\nIn most cases this is not required and the common use case is to specify naming strategy globally instead. You can read more about [configuring naming convention](#configuring-naming-convention) in a separate section.\n\n### Parent type arguments option\n\nWhen type implements interfaces which represent other classes this information got lost during `TypeScript` compilation process and there is no way to extract it. This option can be used to provide such information for a `TypeManager` to be used during serialization and deserialization.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport abstract class Entity\n{\n    @Property(String) public id?: string;\n}\n\n@Type()\nexport abstract class UserStatus extends Entity\n{\n    @Property(String) public title?: string;\n}\n\n@Type({\n    parentTypeArguments: [UserStatus]\n})\nexport class ActiveUserStatus extends Entity implements UserStatus\n{\n    @Property(String) public title?: string;\n    @Property(Boolean) public active?: boolean;\n}\n```\n\nNote that usually only implemented classes should be specified as direct parents are already known to a `TypeManager`. However even if we specify both - it will work properly.\n\n### Preserve discriminator option\n\nThis option defines if discriminator should be preserved in objects during serialization and deserialization.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    preserveDiscriminator: true\n})\nexport class User\n{\n    @Property(String) public name: string;\n}\n```\n\nBy default discriminator is not preserved and only used during deserialization of polymorphic types. You can read more about handling of polymorphic types in this [section](#configuring-usage-of-polymorphic-types).\n\n### Preserve null option\n\nThis option defines if null values should be preserved during serialization and deserialization.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    preserveNull: true\n})\nexport class User\n{\n    @Property(String, { preserveNull: false }) public name: string;\n}\n```\n\nBy default null values are preserved. You can set it to `false` per type, property or globally using `TypeManager` configure method. This will result in treating null values as undefined so you will get all related behaviours like setting default values.\n\n### Reference handler option\n\nThis option can be used both on type and property to specify how references to the same objects should be handled during serialization and deserialization.\n\n```typescript\nimport { Type, Property, CircularReferenceHandler, PlainReferenceHandler } from '@dipscope/type-manager';\n\n@Type({\n    referenceHandler: new CircularReferenceHandler()\n})\nexport class User\n{\n    @Property(String, { referenceHandler: new PlainReferenceHandler() }) public name: string;\n}\n```\n\nIn most cases this is not required and the common use case is to specify reference handler globally instead. You can read more about [configuring reference handler](#configuring-reference-handler) in a separate section.\n\n### Serializable option\n\nThis option is used to enable or disable serialization for a certain property.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String, { serializable: true }) public name: string;\n}\n```\n\nBy default all properties are serializable.\n\n### Serializer option\n\nThis option is used to define custom serializer for a type or property.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    serializer: new UserSerializer()\n})\nexport class User\n{\n    @Property(String, { serializer: new UserNameSerializer() }) public name: string;\n}\n```\n\nCustom serializer should be an implementation of `Serializer` interface. You can read more about [creating a custom serializer](#defining-custom-serializer) in a separate section.\n\n### Set interceptor option\n\nThis option defines a callback that will be invoked whenever a value is **assigned** to the decorated property. It can be used to validate, transform, sanitize, or react to incoming values.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    private userScore = 0;\n\n    @Property(Number, {\n        setInterceptor: value => Math.max(0, value)\n    })\n    public set score(value: number)\n    {\n        // The intercepted value is forwarded here.\n        this.userScore = value;\n    }\n\n    public get score(): number\n    {\n        return this.userScore;\n    }\n}\n\nconst user = new User();\nuser.score = -5; // setInterceptor forces 0.\nconsole.log(user.score); // 0\n```\n\nThe `setInterceptor` receives the **incoming value** and must return the **processed value** to be applied. This hook is ideal for ensuring data integrity, enforcing constraints, mapping input values, or triggering additional behavior at the moment of assignment.\n\n### Use default value option\n\nThis option enables or disables using default value per type or property.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    useDefaultValue: true\n})\nexport class User\n{\n    @Property(String, { useDefaultValue: false }) public name: string;\n}\n```\n\nUsing default values is turned off by default. You can enable them globally using `TypeManager` configure method.\n\n### Use implicit conversion option\n\nBy default if declared type will not match provided during serialization or deserialization an error will be logged and result value will be undefined. This means that for example assigning `Number` to `String` will not work as `StringSerializer` expects `String`. However `Number` and other types can be converted to `String` for you when implicit conversion is enabled.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String, { useImplicitConversion: true }) public name: string;\n}\n```\n\nWith this any value which can be converted to `String` will be converted properly. Such behaviour works for other built in serializers and supported for custom ones. By default implicit conversion is turned off. You can enable it using `useImplicitConversion` option per type and property or enable globally using `TypeManager` configure method.\n\n## Defining configuration manually\n\nThere 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.\n\nWe 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.\n\n### Configuring global options\n\nThere are several options which can be configured globally. For example let's override using of default value option so we don't have to specify it explicitly per type or property.\n\n```typescript\nimport { TypeManagerOptions, TypeOptionsBase } from '@dipscope/type-manager';\n\nconst typeOptionsBase: TypeOptionsBase<any> = {\n    useDefaultValue: true\n};\n\nconst typeManagerOptions: TypeManagerOptions = {\n    typeOptionsBase: typeOptionsBase\n};\n\nTypeManager.configure(typeManagerOptions);\n```\n\nFor the full list of available global options check `TypeOptionsBase` definition or follow the documentation as we are going to touch them while we proceed.\n\n### Configuring options per type\n\nHere 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.\n\n```typescript\nimport { DateTime } from '@external-library';\nimport { TypeConfiguration, TypeMetadata, TypeManager } from '@dipscope/type-manager';\n\nexport class DateTimeConfiguration implements TypeConfiguration<DateTime>\n{\n    public configure(typeMetadata: TypeMetadata<DateTime>): void\n    {\n        typeMetadata.hasAlias('DateTime')\n            .hasSerializer(new DateTimeSerializer());\n\n        return;\n    }\n}\n\nexport class UserConfiguration implements TypeConfiguration<User>\n{\n    public configure(typeMetadata: TypeMetadata<User>): void\n    {\n        typeMetadata.hasAlias('User')\n            .hasSerializer(new DateTimeSerializer());\n\n        typeMetadata.configurePropertyMetadata('name')\n            .isSerializable()\n            .hasAlias('username')\n            .hasTypeArgument(String);\n\n        typeMetadata.configurePropertyMetadata('createdAt')\n            .hasTypeArgument(DateTime);\n\n        return;\n    }\n}\n\nTypeManager.applyTypeConfiguration(DateTime, new DateTimeConfiguration())\n    .applyTypeConfiguration(User, new UserConfiguration());\n```\n\nThere 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.\n\n1. Base type options are applied;\n2. Decorator type options are applied;\n3. Declarative type options are applied;\n4. Property type options are applied;\n\nWith declarative configuration you can declare types like the following and keep metadata in another place.\n\n```typescript\nexport class User\n{\n    public name: string;\n    public createdAt: DateTime;\n}\n```\n\nAlso if you are declaring only 3rd party classes the use case can be the following with [reflect-metadata](https://github.com/rbuckton/reflect-metadata).\n\n```typescript\nimport 'reflect-metadata';\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property() public name: string;\n    @Property() public createdAt: DateTime;\n}\n```\n\nAnd without [reflect-metadata](https://github.com/rbuckton/reflect-metadata).\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String) public name: string;\n    @Property(DateTime) public createdAt: DateTime;\n}\n```\n\n### Configuring usage of polymorphic types\n\nLet's assume we are working with a shapes. To describe different types of shape we have to create an abstract class with several descendants.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport abstract class Shape\n{\n    @Property(String) public title: string;\n}\n\n@Type()\nexport class Rectangle extends Shape\n{\n    @Property(Number) public width: number;\n    @Property(Number) public height: number;\n}\n\n@Type()\nexport class Square extends Shape\n{\n    @Property(Number) public width: number;\n}\n\n@Type()\nexport class Circle extends Shape\n{\n    @Property(Number) public radius: number;\n}\n```\n\nSome other class declares a `shapes` property in it.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class Plot\n{\n    @Property(Array, [Shape]) public shapes: Array<Shape>;\n}\n```\n\nFrom the perspective of declaration everything looks ok but from the point of serialization some things may become complicated. Shapes property can store `Rectangle`, `Square` or `Circle`. Each of this classes have different properties. Here is an example of JSON.\n\n```json\n{\n    \"shapes\": [\n        {\n            \"title\": \"Cool rectangle\",\n            \"width\": 10,\n            \"height\": 10\n        }, \n        {\n            \"title\": \"Perfect square\",\n            \"width\": 10\n        },\n        {\n            \"title\": \"Simple circle\",\n            \"radius\": 6\n        }\n    ]\n}\n```\n\nDuring deserialization of this JSON to a `Plot` class we only aware that all plain objects inside an `Array` are somehow related to a `Shape` type. So any options to handle this?\n\nLuckily we have a `TypeManager`. When you declaring you types using decorators or declarative style it builds inheritance graph between them which can be used during serialization and deserialization.\n\nIt uses 2 special configurable type options:\n\n* `Discriminator` which defines a property inside an object which should be used to define a type.\n* `Discriminant` which represents a certain `Discriminator` value.\n\nThis options have default values if you have not configured them explicitly.\n\n* Default value of discriminator is a `$type`. During deserialization `TypeManager` expects such property to be present inside a polymorphic object.\n* Default value of discriminant is a `ClassName` which determined based on the type function.\n\nFor proper deserialization of polymorphic types you have to provide such information inside your JSON.\n\n```json\n{\n    \"shapes\": [\n        {\n            \"$type\": \"Rectangle\",\n            \"title\": \"Cool rectangle\",\n            \"width\": 10,\n            \"height\": 10\n        }, \n        {\n            \"$type\": \"Square\",\n            \"title\": \"Perfect square\",\n            \"width\": 10\n        },\n        {\n            \"$type\": \"Circle\",\n            \"title\": \"Simple circle\",\n            \"radius\": 6\n        }\n    ]\n}\n```\n\nNow your JSON will be handled properly and you will get `Rectangle`, `Square` and `Circle` class instances in return.\n\nIn some cases your `Discriminator` or `Discriminant` values will not match to our default ones. For example library like [Json.NET](https://www.newtonsoft.com/json) can be used on the backend side to send a response from your API. It uses `$type` property as `Discriminator` and full name of class as `Discriminant`. In such scenario our JSON may look like this.\n\n```json\n{\n    \"shapes\": [\n        {\n            \"$type\": \"Company.Api.Entities.Rectangle\",\n            \"title\": \"Cool rectangle\",\n            \"width\": 10,\n            \"height\": 10\n        }, \n        {\n            \"$type\": \"Company.Api.Entities.Square\",\n            \"title\": \"Perfect square\",\n            \"width\": 10\n        },\n        {\n            \"$type\": \"Company.Api.Entities.Circle\",\n            \"title\": \"Simple circle\",\n            \"radius\": 6\n        }\n    ]\n}\n```\n\nTo change `Discriminator` globally you have to use `TypeManager` configure method.\n\n```typescript\nimport { TypeManagerOptions, TypeOptionsBase } from '@dipscope/type-manager';\n\nconst typeOptionsBase: TypeOptionsBase<any> = {\n    discriminator: '$customType'\n};\n\nconst typeManagerOptions: TypeManagerOptions = {\n    typeOptionsBase: typeOptionsBase\n};\n\nTypeManager.configure(typeManagerOptions);\n```\n\nTo change `Discriminant` you have to use per type configuration.\n\n```typescript\nimport { TypeManagerOptions, TypeFn, TypeOptions, PropertyName, PropertyOptions } from '@dipscope/type-manager';\n\nconst rectangleOptions: TypeOptions<Rectangle> = {\n    discriminant: 'Company.Api.Entities.Rectangle'\n};\n\nconst squareOptions: TypeOptions<Square> = {\n    discriminant: 'Company.Api.Entities.Square'\n};\n\nconst circleOptions: TypeOptions<Circle> = {\n    discriminant: 'Company.Api.Entities.Circle'\n};\n\nconst typeManagerOptions: TypeManagerOptions = {\n    typeOptionsMap: new Map<TypeFn<any>, TypeOptions<any>>(\n        [Rectangle, rectangleOptions],\n        [Square, squareOptions],\n        [Circle, circleOptions]\n    )\n};\n\nTypeManager.configure(typeManagerOptions);\n```\n\nAs an alternative you can change `Discriminant` as the following using decorators.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type({\n    discriminant: 'Company.Api.Entities.Shape'\n})\nexport abstract class Shape\n{\n    @Property(String) public title: string;\n}\n\n@Type({\n    discriminant: 'Company.Api.Entities.Rectangle'\n})\nexport class Rectangle extends Shape\n{\n    @Property(Number) public width: number;\n    @Property(Number) public height: number;\n}\n\n@Type({\n    discriminant: 'Company.Api.Entities.Square'\n})\nexport class Square extends Shape\n{\n    @Property(Number) public width: number;\n}\n\n@Type({\n    discriminant: 'Company.Api.Entities.Circle'\n})\nexport class Circle extends Shape\n{\n    @Property(Number) public radius: number;\n}\n```\n\nBy default `Discriminator` is not preserved inside objects and only used during deserialization. You can change this behavior by enabling preserving of discriminator globally or per type.\n\n```typescript\nimport { TypeManagerOptions, TypeOptionsBase } from '@dipscope/type-manager';\n\nconst typeOptionsBase: TypeOptionsBase<any> = {\n    preserveDiscriminator: true\n};\n\nconst typeManagerOptions: TypeManagerOptions = {\n    typeOptionsBase: typeOptionsBase\n};\n\nTypeManager.configure(typeManagerOptions);\n```\n\nWith this option enabled discriminator will be present in output data.\n\n### Configuring naming convention\n\nNaming convention specifies how each declared property of a type should be treated when reading it from JSON. By default names are read as is. Let's assume we have a `User` class in camel case naming convention for properties.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String) public name: string;\n    @Property(Number) public loginCount: number;\n    @Property(DateTime) public createdAt: DateTime;\n}\n```\n\nOur JSON should match the same naming convention to work properly.\n\n```json\n[\n    {\n        \"name\": \"Dmitry\",\n        \"loginCount\": 10,\n        \"createdAt\": \"2021-02-22T20:15:00.000Z\"\n    },\n    {\n        \"name\": \"Alex\",\n        \"loginCount\": 25,\n        \"createdAt\": \"2021-02-22T21:15:00.000Z\"\n    },\n    {\n        \"name\": \"Anna\",\n        \"loginCount\": 3,\n        \"createdAt\": \"2021-02-22T21:15:23.000Z\"\n    }\n]\n```\n\nBut what to do if we don't control the JSON naming convention so it comes to us in a snake case?\n\n```json\n[\n    {\n        \"name\": \"Dmitry\",\n        \"login_count\": 10,\n        \"created_at\": \"2021-02-22T20:15:00.000Z\"\n    },\n    {\n        \"name\": \"Alex\",\n        \"login_count\": 25,\n        \"created_at\": \"2021-02-22T21:15:00.000Z\"\n    },\n    {\n        \"name\": \"Anna\",\n        \"login_count\": 3,\n        \"created_at\": \"2021-02-22T21:15:23.000Z\"\n    }\n]\n```\n\nWe can still parse such a JSON by specifying an alias for each property but this will become a pain in a while.\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nexport class User\n{\n    @Property(String) public name: string;\n    @Property(Number, { alias: 'login_count' }) public loginCount: number;\n    @Property(DateTime, { alias: 'created_at' }) public createdAt: DateTime;\n}\n```\n\n`TypeManager` supports several naming conventions we can use to avoid dealing with aliases.\n\n* Camel case [camelCase];\n* Flat case [flatcase];\n* Flat upper case [FLATCASE];\n* Kebab case [kebab-kase];\n* Kebab upper case [KEBAB-CASE];\n* Pascal case [PascalCase];\n* Snake case [snake_case];\n* Snake upper case [SNAKE_CASE];\n\nTo set one we have to configure global options.\n\n```typescript\nimport { TypeManagerOptions, TypeOptionsBase, SnakeCaseNamingConvention } from '@dipscope/type-manager';\n\nconst typeOptionsBase: TypeOptionsBase<any> = {\n    namingConvention: new SnakeCaseNamingConvention()\n};\n\nconst typeManagerOptions: TypeManagerOptions = {\n    typeOptionsBase: typeOptionsBase\n};\n\nTypeManager.configure(typeManagerOptions);\n```\n\nNow all property names will be converted to snake case while reading them from JSON. If you have not found suitable naming convention you can easily implement your own. Read more about [creating a custom naming convention](#defining-custom-naming-convention) in a separate section.\n\n### Configuring reference handler\n\nReference 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.\n\n* Circular reference handler preserves object references without making any special changes;\n* Json path reference handler preserves object references using JSONPath notation;\n* Plain reference handler preserves object references excluding a circular one. When circular reference is detected it will be set to undefined;\n\nThere is nothing better to show the difference than code. For example we have two classes which reference each other:\n\n```typescript\nimport { Type, Property } from '@dipscope/type-manager';\n\n@Type()\nclass User\n{\n    @Property(() => Company) public company: Company;\n}\n\n@Type()\nclass Company\n{\n    @Property(() => User) public user: User;\n}\n```\n\nSomewhere in code you have such a logic:\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\n\nconst user = new User();\nconst company = new Company();\n\nuser.company = company;\ncompany.user = user;\n\nconst result = TypeManager.serialize(User, user);\n```\n\nHere are results returned by different reference handlers:\n\n```typescript\n// Circular reference handler...\n{ company: { user: result } };\n\n// Json path reference handler...\n{ company: { user: { $ref: '$' } } };\n\n// Plain reference handler...\n{ company: { user: undefined };\n```\n\nAs 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.\n\n```typescript\nimport { TypeManagerOptions, TypeOptionsBase, JsonPathReferenceHandler } from '@dipscope/type-manager';\n\nconst typeOptionsBase: TypeOptionsBase<any> = {\n    referenceHandler: new JsonPathReferenceHandler()\n};\n\nconst typeManagerOptions: TypeManagerOptions = {\n    typeOptionsBase: typeOptionsBase\n};\n\nTypeManager.configure(typeManagerOptions);\n```\n\nWith such configuration any reference will be handled using JSONPath so you are completely free from errors during conversion to a string.\n\n## Advanced usage\n\nOur goal is to cover as much use cases as possible without making you to write additional code but there always be an application specific case. With that in mind we allow you to customize and extend each part of our pipeline.\n\n### Defining custom data\n\nYou can attach you custom metadata to our decorators using `customValueMap` option available on `Type` and `Property`.\n\n```typescript\nimport { Type, Property, CustomKey } from '@dipscope/type-manager';\n\nconst rankKey = new CustomKey<number>('rank');\nconst priorityKey = new CustomKey<number>('priority');\n\n@Type({\n    customValueMap: new Map([\n        [rankKey, 1]        \n    ])\n})\nclass User\n{\n    @Property(String, { customValueMap: new Map([[priorityKey, 10]]) }) public name: string;\n}\n```\n\nThis allows you to get it later in serializers, factories, injectors or your code and perform specific actions. Besides pipeline you can get this data in any place you want using `TypeManager`.\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\n\nconst userMetadata = TypeManager.extractTypeMetadata(User);\nconst rank = userMetadata.extractCustomValue(rankKey);\n\n// Do something with type custom data...\n\nfor (const propertyMetadata of userMetadata.propertyMetadataMap.values())\n{\n    const priority = propertyMetadata.extractCustomValue(priorityKey);\n\n    // Do something with property custom data...\n}\n```\n\n### Defining custom serializer\n\nYou can create your own serializer or replace built in one. First you have to implement `Serializer` interface. It declares `serialize` and `deserialize` methods. Serialize method is called during conversion of `JavaScript` object instance into a plain object. Deserialize method is called during backward conversion. Here is an example of possible definition for custom `DateTime` class.\n\n```typescript\nimport { Serializer, TypeLike, SerializerContext } from '@dipscope/type-manager';\nimport { Fn } from '@app/module';\n\nexport class DateTimeSerializer implements Serializer<DateTime>\n{\n    public serialize(x: TypeLike<DateTime>, serializerContext: SerializerContext<DateTime>): TypeLike<string>\n    {\n        if (Fn.isUndefined(x))\n        {\n            return serializerContext.serializedDefaultValue;\n        }\n\n        if (Fn.isNull(x))\n        {\n            return x;\n        }\n\n        if (Fn.isDateTime(x))\n        {\n            return x.toIsoString();\n        }\n\n        if (serializerContext.log.errorEnabled) \n        {\n            serializerContext.log.error(`${serializerContext.path}: cannot serialize value as date time.`, x);\n        }\n\n        return undefined;\n    }\n\n    public deserialize(x: TypeLike<string>, serializerContext: SerializerContext<DateTime>): TypeLike<DateTime>\n    {\n        if (Fn.isUndefined(x))\n        {\n            return serializerContext.deserializedDefaultValue;\n        }\n\n        if (Fn.isNull(x))\n        {\n            return x;\n        }\n\n        if (Fn.isString(x))\n        {\n            return DateTime.fromIsoString(x);\n        }\n\n        if (serializerContext.log.errorEnabled) \n        {\n            serializerContext.log.error(`${serializerContext.path}: cannot deserialize value as date time.`, x);\n        }\n\n        return undefined;\n    }\n}\n```\n\nThis example follows internal conventions and gives you a picture of how real serializer may look like. `TypeManager` does not perform any checks and just passes values directly to serializer. Thats why input values can be undefined, null or others depending from what is stored inside certain property. `TypeLike` is an internal type to declare this behaviour.\n\nSerializer implementation is fully responsible for return result. You can get default values, custom data and other options specified in configuration from current serializer context and react accordingly. For example you can check if implicit conversion is enabled and convert any value to the target one.\n\nWhen you are finished with definitions there are two possible ways to register a serializer. You can use decorators.\n\n```typescript\nimport { Type, Serializer } from '@dipscope/type-manager';\n\n@Type({\n    serializer: new DateTimeSerializer()\n})\nexport class DateTime\n{\n    ...\n}\n```\n\nOr declarative configuration.\n\n```typescript\nimport { TypeManager, TypeConfiguration, TypeMetadata } from '@dipscope/type-manager';\n\nexport class DateTimeConfiguration implements TypeConfiguration<DateTime>\n{\n    public configure(typeMetadata: TypeMetadata<DateTime>): void\n    {\n        typeMetadata.hasAlias('DateTime')\n            .hasSerializer(new DateTimeSerializer());\n\n        return;\n    }\n}\n\nTypeManager.applyTypeConfiguration(DateTime, new DateTimeConfiguration());\n```\n\nWith 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.\n\n### Defining custom injector\n\nIn modern world we are always use some kind of framework to build our application. It is definitely already have a configured dependency injection container so let's configure `TypeManager` for using it instead of build in one. You have to implement `Injector` interface with only one method. Here how it may look like in `Angular`.\n\n```typescript\nimport { Injector, TypeMetadata } from '@dipscope/type-manager';\nimport { Injector as AngularInjector } from '@angular/core';\n\nexport class CustomInjector implements Injector\n{\n    private readonly angularInjector: AngularInjector;\n\n    public constructor(angularInjector: AngularInjector)\n    {\n        this.angularInjector = angularInjector;\n\n        return;\n    }\n\n    public get<TObject>(typeMetadata: TypeMetadata<TObject>): TObject | undefined\n    {\n        return this.angularInjector.get(typeMetadata.typeFn);\n    }\n}\n```\n\nIn general you have to get framework injector or create it manually. Then call method to get and instance by type when one is requested. Implementations can differ but we hope idea is clear. When you are finished with definitions you have to register custom injector for a `TypeManager`.\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\nimport { Injector as AngularInjector } from '@angular/core';\n\nconst angularInjector: AngularInjector = ...; // Get framework injector in core module for example.\n\nTypeManager.applyTypeOptionsBase({\n    injector: new CustomInjector(angularInjector)\n});\n```\n\nNow types will be resolved using framework injector.\n\n### Defining custom factory\n\nWhen you want to apply additional logic to how types are constructed you can specify custom factory globally or per type. Let's say you want to init some properties based on your custom data specified for a type. You can do this by extending default `TypeFactory`.\n\n```typescript\nimport { TypeContext, Injector, TypeFactory } from '@dipscope/type-manager';\n\nexport class CustomTypeFactory extends TypeFactory\n{\n    public build<TObject>(typeContext: TypeContext<TObject>, injector: Injector): TObject\n    {\n        // Build any type.\n        const type = super.build(typeContext, injector) as any;\n        \n        // Resolve custom data.\n        const typeMetadata = typeContext.typeMetadata;\n\n        // Get rank based on key.\n        const rank = typeMetadata.extractCustomValue(rankKey);\n\n        // Process custom data...\n\n        return type;\n    }\n}\n```\n\nWhen you are finished with definitions there are two possible ways to register a factory. You can use decorators.\n\n```typescript\nimport { Type, Factory } from '@dipscope/type-manager';\n\n@Type({\n    customValueMap: new Map([[rankKey, 1]]),\n    factory: new CustomTypeFactory()\n})\nexport class User\n{\n    ...\n}\n```\n\nOr declarative configuration.\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\n\n// Overriding only for user type.\nTypeManager.applyTypeOptions(User, {\n    customValueMap: new Map([[rankKey, 1]]),\n    factory: new CustomTypeFactory()\n});\n\n// Overriding for any type.\nTypeManager.applyTypeOptionsBase({\n    factory: new CustomTypeFactory()\n});\n```\n\n### Defining custom naming convention\n\nTo define custom naming convention you have to implement `NamingConvention` interface with only one `convert` method. Here is an example implementation of camel case naming convention.\n\n```typescript\nimport { NamingConvention, getWords } from '@dipscope/type-manager';\n\nexport class CamelCaseNamingConvention implements NamingConvention\n{\n    public convert(name: string): string\n    {\n        return getWords(name).reduce(this.reduce, '');\n    }\n\n    private reduce(result: string, word: string, index: number): string\n    {\n        if (word.length === 0)\n        {\n            return result;\n        }\n\n        const wordLowerCased = word.toLowerCase();\n\n        if (index === 0)\n        {\n            return wordLowerCased;\n        }\n\n        return `${result}${wordLowerCased[0].toUpperCase()}${wordLowerCased.slice(1)}`;\n    }\n}\n```\n\nPublic `convert` method receives a property name as it declared in a class. You have to call internal `getWords` function on it which will split property name into array of the words. In the `reduce` function you can combine this words to whatever string you want. When you are finished with definitions you have to register custom naming convention for a `TypeManager`.\n\n```typescript\nimport { TypeManager } from '@dipscope/type-manager';\n\nTypeManager.applyTypeOptionsBase({\n    namingConvention: new CamelCaseNamingConvention()\n});\n```\n\nNow property names will be resolved using your custom naming convention.\n\n## Use cases\n\nThis section describes certain use cases to separate them from the main documentation part. We will point to a concrete place you should read to setup what is necessary.\n\n### Built in serializers\n\nHere is a list of types with built in serializers.\n\n* Any;\n* Array;\n* ArrayBuffer;\n* Boolean;\n* DataView;\n* Date;\n* Float32Array;\n* Float64Array;\n* Int8Array;\n* Int16Array;\n* Int32Array;\n* Map;\n* Number;\n* Set;\n* String;\n* Uint8Array;\n* Uint8ClampedArray;\n* Uint16Array;\n* Uint32Array;\n* Unknown;\n\nFor 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.\n\n### Circular object references\n\nWe have a great support for circular references with different behaviour when they are detected. Read [configuring reference handler](#configuring-reference-handler) section for more info.\n\n### Dependency injection and immutable types\n\nFollow the steps described in [inject decorator](#inject-decorator) section. To integrate our injection system with you yours check [defining custom injector](#defining-custom-injector) section.\n\n### Different case usage in class and JSON\n\nIf your cases differs between class and JSON. For example `camelCase` vs `snake_case`. You can setup naming convention to use during serialization and deserialization. Follow the steps described in [configuring naming convention](#configuring-naming-convention) section.\n\n### Enum types\n\nEnum types are supported but require special handling. This is because of how enums are represented after compiling them to `JavaScript`. You can know more about how to define them in a [property decorator](#property-decorator) section. If you are interested about the `Enum` compilation details you can check the official [documentation](https://www.typescriptlang.org/docs/handbook/enu","readmeFilename":"README.md"}