{"_id":"@asosunoff/ts-tools","_rev":"20-1c8495baa3b4443d89738646660cab78","name":"@asosunoff/ts-tools","dist-tags":{"latest":"1.1.15"},"versions":{"1.0.0":{"name":"@asosunoff/ts-tools","version":"1.0.0","keywords":["react","hook","useForm","form"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.0.0","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"99a692030579139f41d72272ca117326894668e1","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.0.0.tgz","fileCount":25,"integrity":"sha512-B8VjGdgZaku2C1rALmuv25C47w8LxW8BNpCzwJfXldOpz2kF2VAR9XXVz/+Iz5SJqL2niqvDfcY1KPqGWAF5Qg==","signatures":[{"sig":"MEYCIQCw9ltrtM/Cx0VGh1cHtNBbwSGhucJHWa6EBEnT6EesjQIhAMP8IyUKoRAyBzZK/Bc52MMMBnENWooljGFBLc8EnQQL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKVZCCRA9TVsSAnZWagAAplAP/2nRGGRszONfc+QaVeXV\nFVT+1CCxwqEZ0Ln5Z2UuVZPqyDKL4oM2MB8y0Thgxpv3C338EhOXrBNSZHJM\nC9SVO2BEzo3Y7eBWu+ObGJzHt6LoehR6JsbDf1QaQJpKOO4H/cgDt+6EhnIZ\npEMFmrK7bJ5SH3gg+W7NLD7H14s9GRM1NuUoZWuC6FfZxtLGv2a5fuSQX0ty\nu87vihwltWqZoDFR8JSlNpA/8DV/19luAN3HSMqgh/eUUZAeibaKE5vsAzY9\nPXS+LF1kFaxQWAnb0npuhbZaR+5d890f0vQ4cZX3MUPIecOJhG1yEjU00o2P\nlgMArdNRmN4wBUws37n1bX6+uxG5MWRxQ52KyifzGOD6UMyCt53kb/Uo7tvG\nTVd5dTCbcDOJCrhV3EhZ/C9cNSv/3HcmA62ZCkatnASHUvneil1DzF72vPg3\npzsRWnycpePI4jcscC6N6wkAgeFjcYsHEWANw19sMZpymRcx6BI93kxm0cqi\n+G+/A22NN3DgAeTXXGRPxlbNHML6vNjzVXvErxmZZ6x1hlR98vf4QQsCxuVH\neB7yKWlU5p1BCtb4SPcdlrzXg7TMn74uhgtg9vSGafvMX9X4d5SQWlnyyTlI\nDSAtBDR24KQFwmJvoCXm9QQjH8nK729RAt/bamgTuvkELC/27lNqhkTt2es+\nsQ4g\r\n=IVRT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.ts","gitHead":"a5390359b8dbb5d07b84ab9ca81d8221ce95ad73","scripts":{"lint":"eslint src","to_npm":"npm publish && git add . && git commit -m \"run dist\" && git push","prepublish":"npm prune"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"6.14.9","description":"TS-TOOLS","directories":{},"_nodeVersion":"14.15.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.19.0","typescript":"^4.1.3","@typescript-eslint/parser":"^4.14.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.0.0_1613321794536_0.09515760917711158","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@asosunoff/ts-tools","version":"1.0.1","keywords":["react","hook","useForm","form"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.0.1","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"38feea9e658e23d831416c9bfa6a90b49ee639ae","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.0.1.tgz","fileCount":26,"integrity":"sha512-GDQk3RtyV/rDXrNQ1JG71lau5StH7CDy0o+QNDVGhON6gPaECqsEb3yapi8EEGW2Bs/5z3dWvzWkRoYrWrCpQw==","signatures":[{"sig":"MEUCIQCZrRvmMFWBLLM5pzsl4FvrwgQHHR175fzLrnvSsTMDqgIgL02GG3yQZr+qpYt61s+PCExvttgLx6pNx8gRUVnAiNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNLaXCRA9TVsSAnZWagAAWYYP/3O3o5+VuKiLxGh+B6XJ\nEjZ5RHuszmPFn9jXm8p8w2vYcTxTzX5Q1fQtuNx0go7hH6aiytitKKwdilDj\nDPT8toWTyLBaJ4b2mpppf1wIas4tEzWDc5Lb6p4EyswAGtolNEC97mlTvtHY\nSO4s5FyCv4CdJgYbGdOzlVYAjiZx2UeLLIK/JJREi7UHdu/GWOhigR4hXT43\n1IhGtjKH9bqpqHhBWiMQxxWxDnOm+WrKocBlCyccXZ+rJjstj/cbhzpKmXrM\n3qE+eqpGj7mPDp/deUZv1fFCeokLny5DJckVw4KFDxEaL0WyxWirv0/31GPy\nDT3x0nDn/99aGbTu9wcAEbiUecHB5euKkTgZ8YpLMmw76u5MIoyt1pa50BuV\nTNgtOBIm+yjnJ2FCll1YPQHS1chXNa8/87RITfs+1CBV20cFQauzKEWQuixr\nzJ6XUabfB1cTrNnZWOkLSx1C9FFtMNMks+ES/mhQN5vjMTBshf6QzSh38mNl\n3m2ZArwjbP5kMkeDmod0RQYiIKiRdv+8CtaDVNL0m75whaOywfF6eSRzi5YI\nYw512ckWN+8MHUCCiAIR+/hQALW9AOGzCyw+izZpIUM39ntncvKQ6YYBF8yt\nV0CggSK6CPBvRBWLY1amlbgwsRxsQzDI941/8uZQtSYasJA5mWCqBEM/kIOf\ndDbR\r\n=GiT9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.ts","gitHead":"d644128213b56c861b5dd95f87402f3f2282fbcd","scripts":{"lint":"eslint src","to_npm":"npm publish","prepublish":"npm prune"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"6.14.9","description":"TS-TOOLS","directories":{},"_nodeVersion":"14.15.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.19.0","typescript":"^4.1.3","@typescript-eslint/parser":"^4.14.2","@typescript-eslint/eslint-plugin":"^4.14.2"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.0.1_1614067351251_0.4352104844650375","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@asosunoff/ts-tools","version":"1.0.2","keywords":["react","hook","useForm","form"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.0.2","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"f592266a6d584f5f7c631ed053cb7087e498e751","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.0.2.tgz","fileCount":30,"integrity":"sha512-Hc+3IrfR3oLAVUivIrnqjLYBdfTZeRd5MC4LXbXQ1zyqjxdhE1EoxEwvjHkm0MdjQmHr6o8GzcVj6UpW+Xl58w==","signatures":[{"sig":"MEQCIHmjCiyMRxKJhlg0L+jzJ0iLCAHRaoFeSMfDAzwTFkPeAiBTWNQfV6h/9iLyBE/uaC1Cjw73tLIPch5QSFXdxMSIMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq08wCRA9TVsSAnZWagAA8XQP/AwyWm3RtFNGTjzLZF1h\n5t0CDMEc3yd4P8RAc5z/n35HJ1WNhn50jCHDGXgoJ6UH036Ay64SX/OuYOR5\ney3WbvVPwf65gYH/FjHD3LYt44ZqhBSHuh+pWr1ekaZo2dJUY/QZOaS2sbZ1\nICK/TnXYaItAl0w9hq4aSulhFZGyUH7fOHN4ij43YsbVUfHl+9JF1t3jxSy0\n7/zLrClvFgSlBsma5fg+WPAVlH9nTlHhYn9AuWWouQgZ2Okbh+QaEDCVquDA\nPDbsDlRyKKXQk3MsuG3fGJ9sAGDinY8bFusucHdzzePo+u2tEmD1/2URe31d\nGO6aWxsxD0e+pasiN0zRJc8tVuikY2tatI937ReNg3V74DXO1I1UuF5w5ivB\nSlqByhIJdKqHaLk5TtjZJhWDNyj8JYAMVNPVyKXTbO0OrDir2vri5oK6Lh0G\npb2/N+qUgIBqDdcHH0aLM7NyA+5F9EfVlB6o2nLomhyLisBJ4tiWHjsnl6UF\n9HpsfJs0wsm8WJLbY+t1ubRUMPr+atbSkC7pDd1m70ejJaH1MmobTfV1It4b\nF6LHAqova5XiNcNJAogvo+jY4DeGtUlqosRhbVEv9OgJxC83IkuJYAxXJQdF\nFcVWtQz8GW8RBvGTNZ/W6Tf/Hp5NVJBnJPxquY9n9fm99xyxiNdfEaxU92y3\nT9gX\r\n=PFvV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.ts","gitHead":"642e9eaf9b8a8d51be51fca4f29e23bdde0baf60","scripts":{"lint":"eslint src","to_npm":"npm publish","prepublish":"npm prune"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"6.14.13","description":"TS-TOOLS","directories":{},"_nodeVersion":"14.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.4.0","typescript":"^4.5.2","@typescript-eslint/parser":"^5.5.0","@typescript-eslint/eslint-plugin":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.0.2_1638616880487_0.7821841958280429","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@asosunoff/ts-tools","version":"1.1.0","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.0","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"de0adf6c609d6b05cd9fa11a7911b2ac775d5a9c","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.0.tgz","fileCount":139,"integrity":"sha512-XPNMlucWKdDxFUvqIHECLP44LsjgBlKfCfqGEeg4yLAtTYC1pXI9aZRKFOrYq8TjDh1s2XzLxVMCDYdLUlWQgA==","signatures":[{"sig":"MEUCIEB0phfC+y4K4NH1bKexauY6mEo8125xwANU2XgVHXxEAiEA/fmmRYNQMhGTq/lNpyfhpG8lJyB7KPwcbBICh2UFwds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29535},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0553c157a53180f83847751d2e9eebfb9a7681aa","scripts":{"lint":"eslint src","build":"tsc","typecheck":"tsc --noEmit","pack_local":"npm run build & npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.0_1780648591267_0.4849812129830533","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@asosunoff/ts-tools","version":"1.1.1","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.1","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"1cfbe4d91218ea4ebf8c7e5abfa64261b19dbba5","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.1.tgz","fileCount":139,"integrity":"sha512-dSDlWKBMaNRsxGH656cMS+9Zqetd/Kqp0jRFdM8qRDCA2Kihjxyt27Vek6Ty1RwU1TVlp1wD7QEBGA0Ejvp4bA==","signatures":[{"sig":"MEYCIQCIpINgecTw9KokLm6aofNlmMk46VeCS3uLtE+Az9Tz5wIhANfoHsF57RaDUtp26MLTw+evhmdjyBgVH93YO21nqrcx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32846},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b12e06fc5c61b4c9d36db05522e1d514bac62788","scripts":{"lint":"eslint src","build":"tsc","typecheck":"tsc --noEmit","pack_local":"npm run build & npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.1_1780649859068_0.1058983280074155","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@asosunoff/ts-tools","version":"1.1.2","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.2","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"9c5bc1bff6595cc07041ae02baeebcbca58a9cab","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.2.tgz","fileCount":143,"integrity":"sha512-KxN84BZhHbjgu1DcDiKaIORPHhzDZihS6zyXSHo3LYqqnslENUTf9VN5j44otFdABRFTgJcKceP9Xkz6mJhC6g==","signatures":[{"sig":"MEUCIBnOE9pjffxAA7l1TSbQ/nOmivjkBH2DBSNpWnIVT41gAiEAv4F/WDptAL7yZLfwhshtuvXBpw8vInkuy5vr/Ox2Y6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33412},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6f8e922d72f86ee9daa9b4f5e1438c0e1831d863","scripts":{"lint":"eslint src","build":"tsc","typecheck":"tsc --noEmit","pack_local":"npm run build & npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.2_1780650095316_0.6527029190356259","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@asosunoff/ts-tools","version":"1.1.3","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.3","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"993eba6bba49075b229596fcc74d7ba78c4f7155","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.3.tgz","fileCount":152,"integrity":"sha512-JRePZdjqwonfyNuVM9PQqvqMNJjoU8YiRx09fDQpx9vHiSrbkUvEdXpfLt3rRAjq2JGvNgMzsDq58UsxXhOw1g==","signatures":[{"sig":"MEQCIGTkfsA73EcXUFLFLSMD+hW4qxnh8D9TXz2ckcM8Z2kRAiA0FTEx1M6syRrcY40YH87TH0CC0tA8UfPBWsMzEBVHaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36160},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"446c4abee3c8fde2bff3e3e0bb8630bebcf4624c","scripts":{"lint":"eslint src","build":"tsc","pack_npm":"npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.3_1780650743642_0.08758980695603213","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@asosunoff/ts-tools","version":"1.1.4","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.4","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"4c4212f30179fde899fafeb3926e99b783551bdd","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.4.tgz","fileCount":168,"integrity":"sha512-ojkuFK3ntkHfaivm/WnmwV+vguRj9zOLO23RtXbsbOQ3OusvxRJfiLoisNqc4DYPvfpVqpZqXQkCVEvn1SVzjQ==","signatures":[{"sig":"MEUCIQCKwu6uBSXTX3IcE1Xx6mnd5itQC5RSlH6i1ZpWIIy/qwIgFbx5rpqkfYE2v4Mrt30KNgKXF2uqAEAi8LyC5ag7Jcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41093},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4e58af3411dab0b93dba04667c201258dd76e1ea","scripts":{"lint":"eslint src","build":"tsc","pack_npm":"npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.4_1780654481776_0.956531309702086","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@asosunoff/ts-tools","version":"1.1.5","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.5","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"5d02031ec0954732da624b22b4d4974bc2fa5728","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.5.tgz","fileCount":168,"integrity":"sha512-C4JleLMRGqrGV8kbGTWJDrWPmabrO/HolWiwfPhii0mGNv1xJIaDk3TA/jr6cBsagCVvPvQ0lk6dl8XEh0ucEA==","signatures":[{"sig":"MEUCIQDbRfyRaTreGi8diQu7+9/wyNq9AXyR0QJN8Qgc1nhwaAIgEU23bpbqUU/+M2d+r50kqpjMvOZwuYM5smhEipQsRjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41034},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"06e0dccb1aea103f32a6533ba0b621520fbc2d9b","scripts":{"lint":"eslint src","build":"tsc","pack_npm":"npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.5_1780657077232_0.9940953893616529","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@asosunoff/ts-tools","version":"1.1.6","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.6","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"54d00d2d13cb8297baf7a8e070723c95b42d4789","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.6.tgz","fileCount":200,"integrity":"sha512-OwZKvKxAbyK/dNx6GgcNaqeejOb/hmQpeko3pCgRL6NC6Ft5IyZ/UUVX6yDONZz8QgncgDsyXDzn9f2QO/jmEQ==","signatures":[{"sig":"MEQCIF89n5ceKMN4Y117lVsc7e2R2bEbCwlEyi2bkNvCZeVwAiBp3Ih3sOiHHG2AVumEpS8vgs2YR2aH+if1BpzyaPDHeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56331},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ea94e4545e1bf6c72d234166c24042067c8d61ee","scripts":{"lint":"eslint src","build":"tsc","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.6_1782058389308_0.9632166203591741","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@asosunoff/ts-tools","version":"1.1.7","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.7","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"374db06eb502ca687e269bb0de4a9060fd8183f2","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.7.tgz","fileCount":200,"integrity":"sha512-gGKZ7Kbp8Wuv/MhrBq+ooRxfvyEbnOJu5rkEs/s5bCZbxzoB9eUC+5qYzumDDNXZzjF92CKI9+8TWaJM9i4/Aw==","signatures":[{"sig":"MEUCIQC/0Rw0cfxBgMtAuLJ+qgmFLCJRNYf22b+ZOO25cEm20wIgC57Ahe7S1xLCrIB6h/ckIm4mYNnsUW/6YXDUfTNK5HY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70531},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"58429c1c5f17a621721d488d2ea386a920e44b77","scripts":{"lint":"eslint src","build":"tsc","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.7_1782059055322_0.8919531448892077","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@asosunoff/ts-tools","version":"1.1.8","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.8","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"e2eb7aa56390fb17816c4cbf4f4818994f3a96c0","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.8.tgz","fileCount":224,"integrity":"sha512-TYS2z1vvefJ6VBRBC7l56VT4O5ODb4jbqUzDfJvLjCwiPCdoo8iUr8sYgMpfUmGzLrReQgyjfxq03ALdt0Hjzw==","signatures":[{"sig":"MEUCIDzSpZgb0HH0l97dmZk2B/nnmta/QM6qy/mqIbWW5pCEAiEA7AM/hpRCz/WQujOkJx/Ot+udvlNiSeYYoSTrbk7wmjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91188},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7af271f1340690eae07a88acc47af34c132641cb","scripts":{"lint":"eslint src","build":"tsc","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","typescript":"^6.0.3","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.8_1782503057433_0.9935753391264148","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"@asosunoff/ts-tools","version":"1.1.9","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.9","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"a006fbf8a4e4cd4f26728b35cd1e927dccae5cd3","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.9.tgz","fileCount":232,"integrity":"sha512-6yCkNO2kbDEmxwVf3uOkcgpXFZ6JiO3IWFGx1M/Y4j9A4uTZ43RrOh+MxSKlDS7rVFQ022ekAWrzKzaSX6ZKWg==","signatures":[{"sig":"MEQCIDmbFkJ8zuY9ulyCs/+L4A7eVS1tmAx3DpTyUv5z/61SAiBlb4IzMUGGC5aqnbDSby0qklMqCLGyx1Hn6P+/KCnOjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93964},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4afd438f130f0a5dee9e65dd218531a14917f4e2","scripts":{"lint":"eslint src","build":"tsc","lint:fix":"eslint src --fix","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","prettier":"^3.6.2","typescript":"^6.0.3","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.9_1782929615562_0.4552626446014969","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"@asosunoff/ts-tools","version":"1.1.10","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.10","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"33829e5d7167348b752ccadb4519a9d886aeb431","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.10.tgz","fileCount":232,"integrity":"sha512-06qogAthqbzilfunH17uUhloIH6WuFYOKtHDe2oTox/03eVo6q357NQ3CRjwOwUm/x0nXBwYiRMrEcruuLT8tw==","signatures":[{"sig":"MEUCIB4w9gtUkSTM0tDyq267EshktwSbtLIF+ruZE6RvuDIIAiEAiS5xylD+nm4arzdKcK4VvAj6Cbfur2ojA6tbqieUIwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96939},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"aea939127bbed38c8e3f51c5c54c8987f2590a51","scripts":{"lint":"eslint src","build":"tsc","lint:fix":"eslint src --fix","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","prettier":"^3.6.2","typescript":"^6.0.3","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.10_1782986760867_0.5166311509527193","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"@asosunoff/ts-tools","version":"1.1.11","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.11","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"ecc214fa47c7ba2f6688fe7a547ed0f36dfe5648","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.11.tgz","fileCount":232,"integrity":"sha512-Vi4Hmo1Qslkf+BkMeEdrYVu4uJ3N1BJX7g1hqm8knHJUb8jZK8nnBuiWiZ/UI0mBVaWH5+1PFslSmbCq3M/sxA==","signatures":[{"sig":"MEQCIETbEzzj4GCE556EiHtK9OnW5Gc8OzuOpvh/tbI7Gmt/AiB/SCiWNupP4CzJU8tijmGVWesLuUOjSZitEyz+YHfv6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96718},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e83d337652c48d692c99dad9c3f771205287c659","scripts":{"lint":"eslint src","build":"tsc","lint:fix":"eslint src --fix","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","prettier":"^3.6.2","typescript":"^6.0.3","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.11_1782996348173_0.6504790651057322","host":"s3://npm-registry-packages-npm-production"}},"1.1.12":{"name":"@asosunoff/ts-tools","version":"1.1.12","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.12","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"ca14644e4ef713afa9069f5cd4fb5302dfb7bda1","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.12.tgz","fileCount":236,"integrity":"sha512-62+BZmUB6zCW3pGJFPHmPDl+hBd0rWtAa/Hgj1T+gzyHYxIEi08JcDW9G01LvWKphCgtOnSdE4hB7ZS+DLXa6g==","signatures":[{"sig":"MEUCIQC1FPRZ/rzjqxQ7PfGy24Vmd493GywOnbSpRH667c8jrgIgbe1ATXfb9i3hElxboYyTyjLAvCBRDyQ7TlhsLEYlgmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99654},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2a7b974618d9b3bd97f049920e4eacbc3fd857dd","scripts":{"lint":"eslint src","build":"tsc","lint:fix":"eslint src --fix","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","prettier":"^3.6.2","typescript":"^6.0.3","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.12_1783877459432_0.4735235840527512","host":"s3://npm-registry-packages-npm-production"}},"1.1.13":{"name":"@asosunoff/ts-tools","version":"1.1.13","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.13","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"a3c05ffc3d161e922e1d8c3c14f863fa1d5e4d02","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.13.tgz","fileCount":244,"integrity":"sha512-4srlsHIRJbsdLTxECmbFXC5vAJrHlWeNk1nM8p0HkyyIjyVUs6kRa5Xh/fBfUXf+HiCs3TSeyaNUXvK97WpQuQ==","signatures":[{"sig":"MEQCIDtCbLIc+VNaCNyJuV/9Sd9Ox9sbFjMVeYzES4xeDIq0AiAvQOdRJbddHKw6zniJRHRXZdvAJANA4GAU2c9mskyezQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104749},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0a3b12953c62faeaa44ddc2a5d2ef2a3a563f17a","scripts":{"lint":"eslint src","build":"tsc","lint:fix":"eslint src --fix","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","prettier":"^3.6.2","typescript":"^6.0.3","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.13_1784899531378_0.031070626361008102","host":"s3://npm-registry-packages-npm-production"}},"1.1.14":{"name":"@asosunoff/ts-tools","version":"1.1.14","keywords":["typescript","types","type-utils","utility-types"],"author":{"url":"https://github.com/aSosunoff","name":"Alexander Sosunov"},"license":"MIT","_id":"@asosunoff/ts-tools@1.1.14","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"homepage":"https://asosunoff.github.io/ts-tools/","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"dist":{"shasum":"4cf85ff169f6f178cdef9284cf2562d6a2d38ffa","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.14.tgz","fileCount":248,"integrity":"sha512-hIPyDN+LU6vdFXzfZSGxcs++HJvQPN6evJOddmp/4mBkY1CgKOIEjdU+DnK69htPqpMiB0HKi25h754T4Mt50w==","signatures":[{"sig":"MEUCIQDwU4M46r/6wDh2QD/M8RqIOohbLIyCO0Q5dZLZxQ5B9gIgBvvtTTTA/K+Mo37pwIvpBJ7XKBB4dGJgQUxRTf8ApWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108365},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"fac29fa79225f0922caf9abeef969a0fcf60471e","scripts":{"lint":"eslint src","build":"tsc","lint:fix":"eslint src --fix","pack_npm":"npm version patch && npm run prepublishOnly && npm publish","typecheck":"tsc --noEmit","pack_local":"npm run build && npm pack","prepublishOnly":"npm run build"},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"repository":{"url":"git://github.com/aSosunoff/ts-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"TS-TOOLS","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","prettier":"^3.6.2","typescript":"^6.0.3","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/ts-tools_1.1.14_1785746398997_0.9942576553847737","host":"s3://npm-registry-packages-npm-production"}},"1.1.15":{"name":"@asosunoff/ts-tools","version":"1.1.15","description":"TS-TOOLS","homepage":"https://asosunoff.github.io/ts-tools/","author":{"name":"Alexander Sosunov","url":"https://github.com/aSosunoff"},"main":"dist/index.js","types":"dist/index.d.ts","bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"license":"MIT","repository":{"type":"git","url":"git://github.com/aSosunoff/ts-tools.git"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^8.60.1","@typescript-eslint/parser":"^8.60.1","eslint":"^10.4.1","eslint-plugin-prettier":"^5.5.4","prettier":"^3.6.2","typescript":"^6.0.3"},"scripts":{"build":"tsc","typecheck":"tsc --noEmit","lint":"eslint src","lint:fix":"eslint src --fix","prepublishOnly":"npm run build","pack_local":"npm run build && npm pack","pack_npm":"npm version patch && npm run prepublishOnly && npm publish"},"keywords":["typescript","types","type-utils","utility-types"],"publishConfig":{"access":"public"},"_id":"@asosunoff/ts-tools@1.1.15","gitHead":"b76cec3699c0912587428e308ca9525a96530020","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-GIfxVC7GRql2qNji24km6zD1zDttyY4PozSN4ne0sl6eNq1BF89I5r6fwJvnhQ2EsMpTxVu6X9off7I5LBvrJQ==","shasum":"45d8a57230aac3fad2a1cec4add5a1c9e5c85349","tarball":"https://registry.npmjs.org/@asosunoff/ts-tools/-/ts-tools-1.1.15.tgz","fileCount":247,"unpackedSize":107462,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIExG/Hw1a0p24BKGXIWMR/ULeGeJj3qVi2c4NhN+rUNtAiBAE9JHIbhrGQY+i2BUlXvAkaVqKDqMJEwOLH+r+8xYvQ=="}]},"_npmUser":{"name":"asosunoff","email":"al.sosunoff@gmail.com"},"directories":{},"maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ts-tools_1.1.15_1785746820608_0.2177392258234072"},"_hasShrinkwrap":false}},"time":{"created":"2021-02-14T16:56:34.479Z","modified":"2026-08-03T08:47:00.932Z","1.0.0":"2021-02-14T16:56:34.643Z","1.0.1":"2021-02-23T08:02:31.372Z","1.0.2":"2021-12-04T11:21:20.645Z","1.1.0":"2026-06-05T08:36:31.408Z","1.1.1":"2026-06-05T08:57:39.221Z","1.1.2":"2026-06-05T09:01:35.466Z","1.1.3":"2026-06-05T09:12:23.791Z","1.1.4":"2026-06-05T10:14:41.932Z","1.1.5":"2026-06-05T10:57:57.475Z","1.1.6":"2026-06-21T16:13:09.446Z","1.1.7":"2026-06-21T16:24:15.441Z","1.1.8":"2026-06-26T19:44:17.581Z","1.1.9":"2026-07-01T18:13:35.688Z","1.1.10":"2026-07-02T10:06:01.014Z","1.1.11":"2026-07-02T12:45:48.326Z","1.1.12":"2026-07-12T17:30:59.574Z","1.1.13":"2026-07-24T13:25:31.555Z","1.1.14":"2026-08-03T08:39:59.128Z","1.1.15":"2026-08-03T08:47:00.770Z"},"bugs":{"url":"https://github.com/aSosunoff/ts-tools/issues"},"author":{"name":"Alexander Sosunov","url":"https://github.com/aSosunoff"},"license":"MIT","homepage":"https://asosunoff.github.io/ts-tools/","keywords":["typescript","types","type-utils","utility-types"],"repository":{"type":"git","url":"git://github.com/aSosunoff/ts-tools.git"},"description":"TS-TOOLS","maintainers":[{"name":"asosunoff","email":"al.sosunoff@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"./ts-tools-pro-1-generics.svg\" alt=\"TS-TOOLS logo\" width=\"240\">\n</p>\n\n# TypeScript - Tools\n\nTypeScript type-level utility collection.\n\n## Install\n\n```sh\nnpm i @asosunoff/ts-tools\n```\n\n## Usage\n\n```ts\nimport type {\n  any as anyTools,\n  array,\n  common,\n  object,\n  string,\n} from \"@asosunoff/ts-tools\";\n```\n\nYou can also import commonly used utilities directly from the package root.\n\n```ts\nimport type {\n  ArrayType,\n  ArrayLast,\n  ConstantMap,\n  DtoToModel,\n  DtoWithCamelCaseKeys,\n  DtoWithCamelCaseKeysRecursive,\n  FilterKeys,\n  FlattenedModelRecord,\n  GetOptionalKeys,\n  GetTypeByPropsPath,\n  HasOnlyKeys,\n  HasSnakeCaseKey,\n  isArray,\n  IsPrimitiveType,\n  IsRequiredKey,\n  IsSameType,\n  OverrideFields,\n  PropsPath,\n  RemoveFields,\n  SnakeToCamelCase,\n  StrictRecord,\n  TakeSnakeCaseKey,\n} from \"@asosunoff/ts-tools\";\n```\n\nExample:\n\n```ts\nimport type { object, string } from \"@asosunoff/ts-tools\";\n\ntype ApiUser = {\n  user_id: number;\n  first_name: string;\n  last_name?: string;\n};\n\ntype ClientUser = object.DtoWithCamelCaseKeys<ApiUser>;\n// {\n//   userId: number;\n//   firstName: string;\n//   lastName?: string;\n// }\n\ntype UserOptionalKeys = object.GetOptionalKeys<ApiUser>;\n// \"last_name\"\n\ntype UserPatch = object.OverrideFields<\n  ClientUser,\n  { firstName: \"Admin\" }\n>;\n// {\n//   userId: number;\n//   firstName: \"Admin\";\n//   lastName?: string;\n// }\n\ntype PublicUser = object.DtoToModel<\n  ApiUser,\n  { userId: string },\n  { deleteFields: \"lastName\" }\n>;\n// {\n//   userId: string;\n//   firstName: string;\n// }\n\ntype NestedApiUser = {\n  user_profile: {\n    first_name: string;\n    address_info: {\n      zip_code: string;\n    };\n  };\n};\n\ntype NestedClientUser = object.DtoWithCamelCaseKeysRecursive<NestedApiUser>;\n// {\n//   userProfile: {\n//     firstName: string;\n//     addressInfo: {\n//       zipCode: string;\n//     };\n//   };\n// }\n\ntype UserSearchRecord = object.FlattenedModelRecord<\n  NestedApiUser,\n  {\n    userProfileFirstName: string;\n    userProfileAddressInfoZipCode: string;\n  }\n>;\n// {\n//   userProfileFirstName: string;\n//   userProfileAddressInfoZipCode: string;\n// }\n\ntype FieldName = string.SnakeToCamelCase<\"created_at\">;\n// \"createdAt\"\n\ntype HasSnakeCaseField = string.HasSnakeCaseKey<\"created_at\">;\n// true\n\ntype ApiSnakeCaseKeys = object.TakeSnakeCaseKey<ApiUser>;\n// \"user_id\" | \"first_name\" | \"last_name\"\n\ntype Priority = \"high\" | \"middle\" | \"low\";\n\nconst RecommendationPriority: object.ConstantMap<Priority> = {\n  High: \"high\",\n  Middle: \"middle\",\n  Low: \"low\",\n};\n```\n\n## Array Utilities\n\n### `array.First<T>`\n\nReturns the first tuple item.\n\n```ts\ntype Result = array.First<[\"a\", \"b\", \"c\"]>;\n// \"a\"\n```\n\n### `array.Last<T>`\n\nReturns the last tuple item.\n\n```ts\ntype Result = array.Last<[\"a\", \"b\", \"c\"]>;\n// \"c\"\n```\n\n### `array.Pop<T>`\n\nRemoves the last tuple item.\n\n```ts\ntype Result = array.Pop<[\"a\", \"b\", \"c\"]>;\n// [\"a\", \"b\"]\n```\n\n### `array.Push<T, E>`\n\nAdds an item to the end of a tuple.\n\n```ts\ntype Result = array.Push<[\"a\", \"b\"], \"c\">;\n// [\"a\", \"b\", \"c\"]\n```\n\n### `array.Shift<T>`\n\nRemoves the first tuple item.\n\n```ts\ntype Result = array.Shift<[\"a\", \"b\", \"c\"]>;\n// [\"b\", \"c\"]\n```\n\n### `array.Unshift<T, E>`\n\nAdds an item to the start of a tuple.\n\n```ts\ntype Result = array.Unshift<[\"b\", \"c\"], \"a\">;\n// [\"a\", \"b\", \"c\"]\n```\n\n### `array.Join<T, D>`\n\nJoins tuple items into a string literal.\n\n```ts\ntype Result = array.Join<[\"user\", \"profile\", \"name\"], \".\">;\n// \"user.profile.name\"\n```\n\n### `array.Length<T>`\n\nReturns tuple length.\n\n```ts\ntype Result = array.Length<[\"a\", \"b\", \"c\"]>;\n// 3\n```\n\n### `array.ArrayType<T>`\n\nReturns the item type from an array type.\n\n```ts\ntype Result = array.ArrayType<Array<{ id: number; name: string }>>;\n// {\n//   id: number;\n//   name: string;\n// }\n```\n\n### `array.isArray<T>`\n\nChecks whether a type is an array.\n\n```ts\ntype A = array.isArray<string[]>;\n// true\n\ntype B = array.isArray<string>;\n// false\n```\n\n## String Utilities\n\n### `string.Split<S, D>`\n\nSplits a string literal by delimiter.\n\n```ts\ntype Result = string.Split<\"user.profile.name\", \".\">;\n// [\"user\", \"profile\", \"name\"]\n```\n\n### `string.Length<T>`\n\nReturns string literal length.\n\n```ts\ntype Result = string.Length<\"hello\">;\n// 5\n```\n\n### `string.Last<T>`\n\nReturns the last character of a string literal.\n\n```ts\ntype Result = string.Last<\"hello\">;\n// \"o\"\n```\n\n### `string.First<T, D>`\n\nReturns the first string part. The delimiter defaults to an empty string.\n\n```ts\ntype FirstChar = string.First<\"hello\">;\n// \"h\"\n\ntype FirstPart = string.First<\"user.profile.name\", \".\">;\n// \"user\"\n```\n\n### `string.Tail<T, D>`\n\nReturns the string after the first delimiter match.\n\n```ts\ntype Result = string.Tail<\"user.profile.name\", \".\">;\n// \"profile.name\"\n```\n\n### `string.Replace<T, A, B>`\n\nReplaces the first occurrence of a string literal.\n\n```ts\ntype Result = string.Replace<\"user-name\", \"-\", \"_\">;\n// \"user_name\"\n```\n\n### `string.ReplaceAll<T, A, B>`\n\nReplaces all occurrences of a string literal.\n\n```ts\ntype Result = string.ReplaceAll<\"user-profile-name\", \"-\", \"_\">;\n// \"user_profile_name\"\n```\n\n### `string.At<S, I>`\n\nReturns a character by index.\n\n```ts\ntype Result = string.At<\"hello\", 1>;\n// \"e\"\n```\n\n### `string.SnakeToCamelCase<T>`\n\nConverts a `snake_case` string literal to `camelCase`.\n\n```ts\ntype Result = string.SnakeToCamelCase<\"user_profile_name\">;\n// \"userProfileName\"\n```\n\n### `string.HasSnakeCaseKey<K>`\n\nChecks whether a property key is a string key containing `_`.\n\n```ts\ntype A = string.HasSnakeCaseKey<\"user_id\">;\n// true\n\ntype B = string.HasSnakeCaseKey<\"userId\">;\n// false\n```\n\n### `string.FilterKeys<T, R>`\n\nRemoves keys from a union.\n\n```ts\ntype Result = string.FilterKeys<\"id\" | \"name\" | \"email\", \"email\">;\n// \"id\" | \"name\"\n```\n\n## Object Utilities\n\nKey-check helpers use different directions:\n\n| Utility | Checks |\n| --- | --- |\n| `object.HasKeys<K, T>` | every key in `K` exists in `T` |\n| `object.HasOnlyKeys<K, T>` | every key in `T` is allowed by `K` |\n| `object.HasExactKeys<K, T>` | both previous checks are true |\n| `object.StrictRecord<K, T>` | requires `T` to be a strict `Record<K, unknown>` |\n\n### `object.Merge<A, B>`\n\nMerges two object types. Properties from `B` override properties from `A`.\n\n```ts\ntype Result = object.Merge<\n  { id: number; name: string; enabled: boolean },\n  { name: \"admin\"; role: \"owner\" }\n>;\n// {\n//   id: number;\n//   name: \"admin\";\n//   enabled: boolean;\n//   role: \"owner\";\n// }\n```\n\n### `object.isObject<T>`\n\nChecks whether a type is an object record. Arrays return `false`.\n\n```ts\ntype A = object.isObject<{ id: number }>;\n// true\n\ntype B = object.isObject<string[]>;\n// false\n```\n\n### `object.PropsPath<T>`\n\nBuilds a union of nested leaf property paths. Pass `true` as the second parameter to include intermediate object paths too.\n\n```ts\ntype Result = object.PropsPath<{\n  user: {\n    profile: {\n      name: string;\n    };\n  };\n  active: boolean;\n}>;\n// \"user.profile.name\" | \"active\"\n\ntype ArrayPaths = object.PropsPath<{\n  users: Array<{ id: number }>;\n  tags: string[];\n}>;\n// \"users.id\" | \"tags\"\n\ntype TuplePaths = object.PropsPath<{\n  tags: [{ name: string }, { id: number }];\n}>;\n// \"tags.name\" | \"tags.id\"\n\ntype AllPaths = object.PropsPath<\n  {\n    user: {\n      profile: {\n        name: string;\n      };\n    };\n    active: boolean;\n  },\n  true\n>;\n// \"user\" | \"user.profile\" | \"user.profile.name\" | \"active\"\n```\n\n### `object.FlattenedModelRecord<T, R, F>`\n\nValidates that `R` contains flattened keys generated from nested property paths in `T`.\n\nEach path is joined with `_` and then converted from `snake_case` to `camelCase`.\n\n```ts\ntype Result = object.FlattenedModelRecord<\n  {\n    user: {\n      first_name: string;\n      address_info: {\n        zip_code: string;\n      };\n    };\n    active: boolean;\n  },\n  {\n    userFirstName: string;\n    userAddressInfoZipCode: string;\n  },\n  \"active\"\n>;\n// {\n//   userFirstName: string;\n//   userAddressInfoZipCode: string;\n// }\n```\n\nWithout `F`, every flattened key is required in `R`.\n\n### `object.GetTypeByPropsPath<T, PATH>`\n\nReturns the value type by a dot-separated property path.\n\n```ts\ntype Result = object.GetTypeByPropsPath<\n  {\n    user: {\n      profile: {\n        name: string;\n      };\n    };\n  },\n  \"user.profile.name\"\n>;\n// string\n\ntype Profile = object.GetTypeByPropsPath<\n  {\n    user: {\n      profile: {\n        name: string;\n      };\n    };\n  },\n  \"user.profile\"\n>;\n// { name: string }\n\ntype UserId = object.GetTypeByPropsPath<\n  {\n    users: Array<{ id: number }>;\n  },\n  \"users.id\"\n>;\n// number\n```\n\n### `object.HasKeys<K, T>`\n\nChecks whether every key in `K` exists in `T`.\n\n```ts\ntype A = object.HasKeys<\n  \"id\",\n  {\n    id: number;\n    name: string;\n  }\n>;\n// true\n\ntype B = object.HasKeys<\n  \"id\" | \"email\",\n  {\n    id: number;\n    name: string;\n  }\n>;\n// false\n```\n\n### `object.HasOnlyKeys<K, T>`\n\nChecks whether `T` has no keys outside `K`.\n\n```ts\ntype KeysList = \"alert\" | \"confirm\";\n\ntype A = object.HasOnlyKeys<\n  KeysList,\n  {\n    alert: { title: string };\n    confirm: { message: string };\n  }\n>;\n// true\n\ntype B = object.HasOnlyKeys<\n  KeysList,\n  {\n    alert: { title: string };\n    confirm: { message: string };\n    custom: { id: string };\n  }\n>;\n// false\n```\n\n### `object.HasExactKeys<K, T>`\n\nChecks whether `T` has exactly the selected key union.\n\n```ts\ntype Result = object.HasExactKeys<\n  \"id\" | \"name\",\n  {\n    id: number;\n    name: string;\n  }\n>;\n// true\n```\n\n### `object.StrictRecord<K, T>`\n\nRequires `T` to be a record with every key from `K` and no keys outside `K`.\n\n```ts\ntype KeysList = \"alert\" | \"confirm\";\n\ntype A = object.StrictRecord<\n  KeysList,\n  {\n    alert: { title: string };\n    confirm: { message: string };\n  }\n>;\n// {\n//   alert: { title: string };\n//   confirm: { message: string };\n// }\n\ntype B = object.StrictRecord<\n  KeysList,\n  {\n    alert: { title: string };\n    confirm: { message: string };\n    custom: { id: string };\n  }\n>;\n// Error: \"custom\" is not allowed.\n```\n\n### `object.ConstantMap<T>`\n\nCreates a record type where keys are capitalized string union values and values are the original strings from that union.\n\n```ts\ntype Priority = \"high\" | \"middle\" | \"low\";\n\ntype Result = object.ConstantMap<Priority>;\n// {\n//   High: \"high\";\n//   Middle: \"middle\";\n//   Low: \"low\";\n// }\n```\n\nSnake-case values are converted to camel case before capitalization.\n\n```ts\ntype Status = \"in_progress\" | \"completed\";\n\nconst RecommendationStatus: object.ConstantMap<Status> = {\n  InProgress: \"in_progress\",\n  Completed: \"completed\",\n};\n```\n\n### `object.CollapseObject<T>`\n\nConverts a nested object type into a flat object with dot-separated keys.\n\n```ts\ntype Result = object.CollapseObject<{\n  user: {\n    profile: {\n      name: string;\n    };\n  };\n  active: boolean;\n}>;\n// {\n//   \"user.profile.name\": string;\n//   active: boolean;\n// }\n```\n\n### `object.PartialField<T, F>`\n\nMakes selected object fields optional and keeps all other fields unchanged.\n\n```ts\ntype Result = object.PartialField<\n  {\n    id: number;\n    name: string;\n    email: string;\n  },\n  \"email\"\n>;\n// {\n//   id: number;\n//   name: string;\n//   email?: string;\n// }\n```\n\n### `object.RequiredField<T, K>`\n\nMakes selected object fields required and keeps all other fields unchanged.\n\n```ts\ntype Result = object.RequiredField<\n  {\n    id: number;\n    name?: string;\n    email?: string;\n  },\n  \"name\" | \"email\"\n>;\n// {\n//   id: number;\n//   name: string;\n//   email: string;\n// }\n```\n\n### `object.IsOptionalKey<T, K>`\n\nChecks whether object key `K` is optional.\n\n```ts\ntype Result = object.IsOptionalKey<\n  {\n    id: number;\n    name?: string;\n  },\n  \"name\"\n>;\n// true\n```\n\n### `object.IsRequiredKey<T, K>`\n\nChecks whether object key `K` is required.\n\n```ts\ntype Result = object.IsRequiredKey<\n  {\n    id: number;\n    name?: string;\n  },\n  \"id\"\n>;\n// true\n```\n\n`object.IsRequeredKey<T, K>` is kept as a backward-compatible alias, but `object.IsRequiredKey<T, K>` should be preferred.\n\n### `object.GetOptionalKeys<T>`\n\nReturns a union of all optional keys in `T`.\n\n```ts\ntype Result = object.GetOptionalKeys<{\n  id: number;\n  name?: string;\n  email?: string;\n}>;\n// \"name\" | \"email\"\n```\n\n### `object.GetRequiredKeys<T>`\n\nReturns a union of all required keys in `T`.\n\n```ts\ntype Result = object.GetRequiredKeys<{\n  id: number;\n  name?: string;\n  active: boolean;\n}>;\n// \"id\" | \"active\"\n```\n\n### `object.OverrideFields<T, U>`\n\nOverrides existing fields in `T` using `U`.\n\nUnlike `Merge`, this utility only allows keys that already exist in `T`.\n\n```ts\ntype Result = object.OverrideFields<\n  {\n    id: number;\n    role: \"user\";\n    active: boolean;\n  },\n  {\n    role: \"admin\";\n    active: false;\n  }\n>;\n// {\n//   id: number;\n//   role: \"admin\";\n//   active: false;\n// }\n```\n\n### `object.RemoveFields<T, K>`\n\nRemoves selected fields from an object type.\n\n```ts\ntype Result = object.RemoveFields<\n  {\n    id: number;\n    name: string;\n    password: string;\n  },\n  \"password\"\n>;\n// {\n//   id: number;\n//   name: string;\n// }\n```\n\n### `object.DtoWithCamelCaseKeys<T>`\n\nConverts top-level object keys from `snake_case` to `camelCase`.\n\n```ts\ntype Result = object.DtoWithCamelCaseKeys<{\n  first_name: string;\n  last_name: string;\n  is_active: boolean;\n}>;\n// {\n//   firstName: string;\n//   lastName: string;\n//   isActive: boolean;\n// }\n```\n\n### `object.TakeSnakeCaseKey<T>`\n\nExtracts a union of object keys written in `snake_case`.\n\n```ts\ntype Result = object.TakeSnakeCaseKey<{\n  user_id: number;\n  firstName: string;\n  created_at: string;\n}>;\n// \"user_id\" | \"created_at\"\n```\n\n### `object.DtoToModel<T, R, Options>`\n\nConverts a DTO into a model by converting keys to `camelCase`, overriding selected field types, and removing selected model fields.\n\n`R` is intended for real type changes after DTO keys are converted to `camelCase`. If a primitive field is overridden with the same type, TypeScript reports a redundant override. `Options[\"deleteFields\"]` removes fields from the final model.\n\n```ts\ntype Result = object.DtoToModel<\n  {\n    user_id: number;\n    created_at: string;\n    password_hash: string;\n  },\n  {\n    createdAt: Date;\n  },\n  {\n    deleteFields: \"passwordHash\";\n  }\n>;\n// {\n//   userId: number;\n//   createdAt: Date;\n// }\n```\n\nOverride keys must be written in `camelCase`. If a legacy model still needs a `snake_case` override,\n`Options[\"skipSnakeCaseCheck\"]` disables that diagnostic for selected keys. Use `Options[\"deleteFields\"]` if the\nconverted `camelCase` field should be removed from the final model.\n\n```ts\ntype Result = object.DtoToModel<\n  {\n    user_id: number;\n  },\n  {\n    user_id: string;\n  },\n  {\n    deleteFields: \"userId\";\n    skipSnakeCaseCheck: \"user_id\";\n  }\n>;\n// {\n//   user_id: string;\n// }\n```\n\n`Options[\"checkObjectFields\"]` enables same-type diagnostics for object fields, and `Options[\"skipTypeCheckKeys\"]` disables same-type diagnostics for selected keys.\n\n```ts\ntype Result = object.DtoToModel<\n  {\n    status_id: number;\n  },\n  {\n    statusId: number;\n  },\n  {\n    skipTypeCheckKeys: \"statusId\";\n  }\n>;\n// {\n//   statusId: number;\n// }\n```\n\n### `object.DtoWithCamelCaseKeysRecursive<T>`\n\nRecursively converts nested object keys from `snake_case` to `camelCase`.\n\nArrays are preserved as-is and are not traversed recursively.\n\n```ts\ntype Result = object.DtoWithCamelCaseKeysRecursive<{\n  user_profile: {\n    first_name: string;\n    address_info: {\n      zip_code: string;\n    };\n  };\n  is_active: boolean;\n}>;\n// {\n//   userProfile: {\n//     firstName: string;\n//     addressInfo: {\n//       zipCode: string;\n//     };\n//   };\n//   isActive: boolean;\n// }\n```\n\n## Any Utilities\n\n### `anyTools.Anyfy<O>`\n\nKeeps object keys and converts all values to `any`.\n\n```ts\ntype Result = anyTools.Anyfy<{\n  id: number;\n  name: string;\n}>;\n// {\n//   id: any;\n//   name: any;\n// }\n```\n\n## Common Utilities\n\n### `common.Prettify<T>`\n\nFlattens an intersection or mapped type for cleaner editor hints.\n\n```ts\ntype Result = common.Prettify<\n  { id: number } & {\n    name: string;\n  }\n>;\n// {\n//   id: number;\n//   name: string;\n// }\n```\n\n### `common.EmitListeners<T>`\n\nBuilds listener props from an event map.\n\n```ts\ntype Result = common.EmitListeners<{\n  change: [value: string];\n  submit: [id: number, valid: boolean];\n}>;\n// {\n//   onChange?: (value: string) => void;\n//   onSubmit?: (id: number, valid: boolean) => void;\n// }\n```\n\n### `common.SplitCamelCase<T, Separator>`\n\nInserts a separator before uppercase characters.\n\n```ts\ntype Result = common.SplitCamelCase<\"userProfileName\">;\n// \"user-profile-name\"\n```\n\n### `common.IsFunction<T>`\n\nChecks whether a type is a function.\n\n```ts\ntype A = common.IsFunction<() => void>;\n// true\n\ntype B = common.IsFunction<string>;\n// false\n```\n\n### `common.MaybeRefProps<T>`\n\nWraps non-function properties into a value-or-ref-like shape. Function properties stay unchanged.\n\n```ts\ntype Result = common.MaybeRefProps<{\n  value: string;\n  count: number;\n  onChange: (value: string) => void;\n}>;\n// {\n//   value: string | { value: string };\n//   count: number | { value: number };\n//   onChange: (value: string) => void;\n// }\n```\n\n### `common.TypeCheck<T>`\n\nConverts a type into a generic function predicate for strict type comparison.\n\n```ts\ntype Result = common.TypeCheck<string>;\n// <G>() => G extends string ? 1 : 2\n```\n\n### `common.IsSameType<T, U>`\n\nChecks whether two types are exactly equivalent.\n\n```ts\ntype A = common.IsSameType<string, string>;\n// true\n\ntype B = common.IsSameType<string, string | number>;\n// false\n```\n\n### `common.PrimitiveType`\n\nUnion of primitive values used by type-level diagnostics.\n\n```ts\ntype Result = common.PrimitiveType;\n// string | number | boolean | bigint | symbol | null | undefined\n```\n\n### `common.IsPrimitiveType<T>`\n\nChecks whether a type is a primitive or a union of primitives.\n\n```ts\ntype A = common.IsPrimitiveType<string | number>;\n// true\n\ntype B = common.IsPrimitiveType<{ id: number }>;\n// false\n```\n","readmeFilename":"README.md"}