{"_id":"useful","_rev":"80-8df506e3e4acabb602f47e0a02b13d8f","name":"useful","dist-tags":{"latest":"0.10.15"},"versions":{"0.0.1":{"name":"useful","version":"0.0.1","keywords":["String","Strings","String utils","utils","uilities"],"author":{"url":"www.romansky.me","name":"Roman Landenband","email":"roman.land@gmail.com"},"_id":"useful@0.0.1","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"74627fe80f965e5bb8998b90d01bc1ff4eeec511","tarball":"https://registry.npmjs.org/useful/-/useful-0.0.1.tgz","integrity":"sha512-Y+EnX4pG5t1FE1XuxV8OKekUW/J7vGtGPvBXE84D106O2Tg0j8YNNlVx073fMuJ+FqWkVs0r/d6CoOYXK6IgAw==","signatures":[{"sig":"MEYCIQD6k01PjU/y4IcyG7OvzHHMgFSw34RnaHimUsmLkNy9PgIhAOmRXuhOhWpBsg/svz68EUR6hSHyUcNYzEWli1cZ/IQD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","engine":{"node":">=0.4.0"},"scripts":{},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"_npmVersion":"1.1.59","description":"A collection of useful utils for server and client side","directories":{},"dependencies":{},"devDependencies":{"jasmine-node":">= 1.0.26"}},"0.0.2":{"name":"useful","version":"0.0.2","keywords":["String","Strings","String utils","utils","uilities"],"author":{"url":"www.romansky.me","name":"Roman Landenband","email":"roman.land@gmail.com"},"_id":"useful@0.0.2","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"b7335d1f896dbba583221a7fdaa3f12c406c33b5","tarball":"https://registry.npmjs.org/useful/-/useful-0.0.2.tgz","integrity":"sha512-F1/DVdsG3DjnJupNqjUPebhAfpQp4mrXogXQY5gQieu6GaHZ0KoP3lP+GoMSbGyt4/1txLneeJSFIPn4Md1g8w==","signatures":[{"sig":"MEUCIFfpgx/+lSbNHvv8CK1/Dfd12DJJ9EQeeDSqs2mGic63AiEAtmMxbOqkgzpaDqjfRg/FLYYtuLlyMLvZJ2shaVu4jBE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","engine":{"node":">=0.4.0"},"scripts":{},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"_npmVersion":"1.1.59","description":"A collection of useful utils for server and client side","directories":{},"dependencies":{},"devDependencies":{"jasmine-node":">= 1.0.26"}},"0.0.3":{"name":"useful","version":"0.0.3","keywords":["String","Strings","String utils","utils","uilities"],"author":{"url":"www.romansky.me","name":"Roman Landenband","email":"roman.land@gmail.com"},"_id":"useful@0.0.3","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"96249c6cc8ee40c49c733cd0578c816f27665f5c","tarball":"https://registry.npmjs.org/useful/-/useful-0.0.3.tgz","integrity":"sha512-5cwNGWfv4V8wLkZCN55WAJEzarEy3sLkYU486aj3WFsr4X8B9HZocvprbF1L5Yev4A7mWrgOWVvxJ33Obhih8g==","signatures":[{"sig":"MEUCIB9fHMUAScwwCF5WwjCPaiuswEEpHGVbGduQwpKUfohWAiEAu5/XoVV1pnJfz7E4bYeE8zmt/ZJhJyxzxgzYQUw4Hag=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","engine":{"node":">=0.4.0"},"scripts":{},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"_npmVersion":"1.1.59","description":"A collection of useful utils for server and client side","directories":{},"dependencies":{},"devDependencies":{"jasmine-node":">= 1.0.26"}},"0.0.4":{"name":"useful","version":"0.0.4","keywords":["String","Strings","String utils","utils","uilities"],"author":{"url":"www.romansky.me","name":"Roman Landenband","email":"roman.land@gmail.com"},"_id":"useful@0.0.4","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"1368ca22a7deb07f9df289b55cbddcf581d27405","tarball":"https://registry.npmjs.org/useful/-/useful-0.0.4.tgz","integrity":"sha512-Q3G+JpPStDemeWWr7S515+VlLQY8UvPFTVb6E86PNZ4TWPTA0Acks0Cxku8tUMXgVA+eXdEyLudFlLXX6sucUQ==","signatures":[{"sig":"MEUCIE00axixCQWijj4uQ4BF1Va9VKpUzl6AeFghrMVP3JQmAiEAvqPBvGZk6wV0oEnhQzwwvzXqEy6TZgAJeQNe74D0jug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","engine":{"node":">=0.4.0"},"scripts":{},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"_npmVersion":"1.1.59","description":"A collection of useful utils for server and client side","directories":{},"dependencies":{},"devDependencies":{"jasmine-node":">= 1.0.26"}},"0.0.5":{"name":"useful","version":"0.0.5","keywords":["String","Strings","String utils","utils","uilities"],"author":{"url":"www.romansky.me","name":"Roman Landenband","email":"roman.land@gmail.com"},"_id":"useful@0.0.5","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"3af710e2cea830e4eab7b7098a6462b43d40792e","tarball":"https://registry.npmjs.org/useful/-/useful-0.0.5.tgz","integrity":"sha512-iaZnUM00pklnzMQNlnigoaDm/fd9MH8elwSEeJ6df9ounNMDk2T8C4lNdalGH9bfCg7qI6Pg7sqxwWNTCzo0+g==","signatures":[{"sig":"MEUCIQCQqX9F7qxECSDJQMfW2wQQu04dyB/r3ybzrUKZvRqatgIgCPMu3zxCzZa6Ck8EptMBZxF7cnIDYl+28TRvLce0cHs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","engine":{"node":">=0.4.0"},"scripts":{},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"_npmVersion":"1.1.59","description":"A collection of useful utils for server and client side","directories":{},"dependencies":{},"devDependencies":{"jasmine-node":">= 1.0.26"}},"0.0.6":{"name":"useful","version":"0.0.6","keywords":["String","Strings","String utils","utils","uilities"],"author":{"url":"www.romansky.me","name":"Roman Landenband","email":"roman.land@gmail.com"},"_id":"useful@0.0.6","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"a7389f0b2b7023efc7cd0397e6ea0b230ac643d7","tarball":"https://registry.npmjs.org/useful/-/useful-0.0.6.tgz","integrity":"sha512-B7TrHKeybM89xB5n0kOfQPH1JiTt+H+QHppLO1oD63VaQtysSakNacSDoOf7pBEj96AiByqdp9wvSsTJEg92Kg==","signatures":[{"sig":"MEUCIQCUe5ykfpTMmbas/n8JqgOnoL4EWprRSAHIB0DuD/6XQwIgPuEB/6Qk7eeZsFxbpJhrYsTbVm4oFzs5iTQ0sJGhnrg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","engine":{"node":">=0.4.0"},"scripts":{},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"_npmVersion":"1.1.62","description":"A collection of useful utils for server and client side","directories":{},"dependencies":{},"devDependencies":{"jasmine-node":">= 1.0.26"}},"0.5.0":{"name":"useful","version":"0.5.0","keywords":["String","Strings","String utils","utils","uilities"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.5.0","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"05e6b77d0acb2e70ebb279b1588eceffd786b223","tarball":"https://registry.npmjs.org/useful/-/useful-0.5.0.tgz","fileCount":26,"integrity":"sha512-oC4uhbFAUfiDcvSHmH0OonVu8UA1273Idqy6Jgh3vApoqKcD3QNtnPZkpVF+7OpnWgHyi+dmEDGVu1RDw9ZU+g==","signatures":[{"sig":"MEUCIQCP8NxX5vMsPJ8uxaI+IsgRMhgoqyrQnj3qzvYyB0ZZ+gIgaYJ6qzTXY/lgULYKDriACbqaxPQHl9jGwfMOSdhRlFo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11967},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"description":"A collection of useful utils for server and client side written in TypeScript with zero dependencies","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.1.6","@types/chai":"^4.3.5","@types/node":"^18.15.13","@types/mocha":"^10.0.1","@tsconfig/node18":"^18.2.0","@types/spark-md5":"^3.0.2","@sinonjs/fake-timers":"^10.3.0","@types/sinonjs__fake-timers":"^8.1.2"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.5.0_1690444651395_0.2865795042990955","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"useful","version":"0.5.1","keywords":["String","Strings","String utils","utils","uilities"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.5.1","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"d9d18600186996a4ad1f8f9718077fac38ea5e84","tarball":"https://registry.npmjs.org/useful/-/useful-0.5.1.tgz","fileCount":26,"integrity":"sha512-jYLKQwe/5WC5VfiMfY6/taA4r6KZpfK5re7S3OyAGsz5fqUP2G9jW+4zLULHxT1yyIIF2fTFqiy+x9+OZM3zMw==","signatures":[{"sig":"MEQCICDI0evQiklhl7RQgZ+ohJyghj7bqKP1g6NKZTwneG6AAiAGfnZwRSvcstX916JL6R962iKD4tOUYHcPrBhaQFR/cA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17878},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/romansky/Useful","type":"git"},"description":"A collection of useful utils for server and client side written in TypeScript with zero dependencies","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.1.6","@types/chai":"^4.3.5","@types/node":"^18.15.13","@types/mocha":"^10.0.1","@tsconfig/node18":"^18.2.0","@types/spark-md5":"^3.0.2","@sinonjs/fake-timers":"^10.3.0","@types/sinonjs__fake-timers":"^8.1.2"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.5.1_1690445223726_0.1493288378327522","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"useful","version":"0.6.0","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.6.0","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"ecb39656aa1c31a5911f8bca39736991477990ba","tarball":"https://registry.npmjs.org/useful/-/useful-0.6.0.tgz","fileCount":36,"integrity":"sha512-9CxaWXGA1ZYwjaX9BirafLWlDCnXrqMnmqI2iwoxAx/3rLffckUw25eOfPX0U2uLPwIRwncMeatHjRC9lTkDlg==","signatures":[{"sig":"MEUCIGLSxvX3VnaVkqQcwJN0QG+w/mIF2zk+xS9VcR/MZxtxAiEAqqlyEnfHGT4spK/uQGLnMF5q9iTt2PQweIJUkH7WIDE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47014},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.6.0_1697735614840_0.2473005792685412","host":"s3://npm-registry-packages"}},"0.6.1":{"name":"useful","version":"0.6.1","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.6.1","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"108ab2612d9c3d6b60d38c38fd68f3c3ea0b00d4","tarball":"https://registry.npmjs.org/useful/-/useful-0.6.1.tgz","fileCount":36,"integrity":"sha512-2I9xpLsvXOJHcQ63WopFAkPdcma8B4HHu1hUu4zLWgfbzZwrn7a1JYIl7X2X0xKNV7Tsl4hXLFrzxvxllEyDTQ==","signatures":[{"sig":"MEUCICD7KTDpUMfOPFK7OccuQarpHReN/l07Wh6MtO1SXFFGAiEAvP5EigpaGLIvYUd3S8MZ9nwFh9MtXrPsypEqmS/ewRY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56239},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.6.1_1698058298766_0.6008056032624971","host":"s3://npm-registry-packages"}},"0.6.2":{"name":"useful","version":"0.6.2","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.6.2","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"bbba49c9343f11a56efdab5a4f052fb9ee121f42","tarball":"https://registry.npmjs.org/useful/-/useful-0.6.2.tgz","fileCount":36,"integrity":"sha512-eUui5EAauvR5mkPOwhIsTbGNjnnmjX+rBIJiG7wH6fSa8JQK4Oeyy1t/U7HfoCoy/HyQberqRkUOmokDadSUjQ==","signatures":[{"sig":"MEUCIGlgbfNDigupRrK91ATiytqJ4rogtsX5vCHnDYxgOsMbAiEAnR4xOIzsM1m5jYTkG/5pA5zaYSh/FEhdsTTS1UHGkVY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58335},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.6.2_1698061732388_0.14688592499026276","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"useful","version":"0.7.0","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.0","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"5e3ef37b3f2ad2d18eacd86ac68685d150f474ab","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.0.tgz","fileCount":38,"integrity":"sha512-Rk/o8r4vHb5Edyv0KgbN3Z9H1SQL/0v+o8CgWk0pfup2CD+fX+nDlnhF34jba7YUIr9ohkEwCmcdpJdwGj59YA==","signatures":[{"sig":"MEUCIEVd/Hw/2rio5a5Emt7h4Hhmlbl4bLsbp0YrcCyD/fvOAiEA8k9y7FSzbaqEgG7qOl6RtHl4Q18BOdnsGRVufkqvz04=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69345},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.0_1698093890288_0.248424972781514","host":"s3://npm-registry-packages"}},"0.7.1":{"name":"useful","version":"0.7.1","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.1","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"167176deb59cf3106d48a89fd931f43076a70616","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.1.tgz","fileCount":36,"integrity":"sha512-0FQxCnd03FWojlnvnqaq3DnItX2QkEeWDBDNKGr53NcnJkTBEVfyG06YnaZ5FK5LT1MCt2ALhJKX+D1A0hPNdQ==","signatures":[{"sig":"MEUCIQCNncHCdBTS/276tmobzn41UbXHzlH9FsyT9yS0e5a30AIgTSbFiQuWz1yVcRTLM/qG/NqXatAz9+tXo0aBI8og4l8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60688},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.1_1698094231387_0.8944199041993819","host":"s3://npm-registry-packages"}},"0.7.2":{"name":"useful","version":"0.7.2","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.2","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"904cf4488035a128a719bfdfc8a2085c04f138cd","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.2.tgz","fileCount":40,"integrity":"sha512-UHNRHWWPFwrWiJJHwGA3aZkjo0tXg3YsTOgGVf++YKsaGxfClwRYmP0BhiOnkz06aT/Jc1zPrbbTJQjCoVdA0A==","signatures":[{"sig":"MEUCIFAK0y+3Kv5hniw/h0fAi63ySBYiTqz9B567j+6pgNCfAiEA6Ec575c/M9dgKfAeQr6rFvwtMBbdYuSBHsfiAu024AE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66204},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"tsc --outDir dist/"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.2_1698132988257_0.6839387143761262","host":"s3://npm-registry-packages"}},"0.7.3":{"name":"useful","version":"0.7.3","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.3","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"efcc3f3792cdcde1e8bd57111e017dd157166918","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.3.tgz","fileCount":40,"integrity":"sha512-Z5slkp2k5pPu9q3L9BuoYtvsxnjG/zErlecCH9gdovdDDcezwwIP+uTwmcPpCO39Ig9ZQAGbO37xPVT0RlY8RQ==","signatures":[{"sig":"MEQCIE9nR1ZFg0p+rmqrts7sBJHyn3CmdyKfmKg2hbMZ8znqAiAmvdbUfO5KlMjGwAUjMQVBVxUcjc/1vyxSVXWEQ9Iw1w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66285},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.3_1698133457236_0.4677355601195825","host":"s3://npm-registry-packages"}},"0.7.4":{"name":"useful","version":"0.7.4","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.4","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"168c9b2d88534c53e8862c6b2dca6dd5be040baa","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.4.tgz","fileCount":45,"integrity":"sha512-4K3gfzaZa7UxW0U5QiOo2TLCAixqFQ6MdLl1pJOAqkAvUKWJ+ZlRNRcj+4Ad4+7JsQAwc+erCmGjsqPiyHZgoQ==","signatures":[{"sig":"MEYCIQCd/ly5MOZ6P+HfIJIMMd/TPtHRzqiX5xeq8dmObOctzwIhAMVRNpSW/4D5krFcKqhCUn3I4j4yXSqO0+nDLDXatEIi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":68309},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.4_1698138598757_0.18247058918704706","host":"s3://npm-registry-packages"}},"0.7.5":{"name":"useful","version":"0.7.5","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.5","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"a15be950f7768d255640d19262347de0768dabb0","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.5.tgz","fileCount":45,"integrity":"sha512-8hqwHXUmK/GrDOSrti9kLe3dkWcnrw933I7P2fpJxGKskysAbK4El6LBrbvEyCQb96qoaHkBQCt+KiyC1W8b5w==","signatures":[{"sig":"MEUCIEUJLNPl+/AjsVe9Zt0tZV8VIT7nMai0lOCzPDmQe2bUAiEA8Ttm3BM0eWjELpyAnrwgyeo6Vqcx0kWGtR1cPstkAug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":68405},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.5_1698138919705_0.5121599754191459","host":"s3://npm-registry-packages"}},"0.7.6":{"name":"useful","version":"0.7.6","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.6","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"301b2f1f46d1b9e8fa2a5b3de58f00ad8305f03d","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.6.tgz","fileCount":45,"integrity":"sha512-ijw3D/nsO545E4mclPsNAK548+NYE7KUVkA121kTgdYlmFU1mtOgmuHbe92rwEUjmg7+egUekRLr0ZPwcqYxLg==","signatures":[{"sig":"MEUCIHjMFVim2hP2kZjKq7TZTC26Zi/naS1JbmWav6tB6Es9AiEAhEA5zFX0HTHCH8khiMD5NxDFRs8hP3PpnQ8+IU0luDA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":71657},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.6_1698141198388_0.14158701478289926","host":"s3://npm-registry-packages"}},"0.7.7":{"name":"useful","version":"0.7.7","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.7","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"3b9d2f3a839f37a0ea450874dec658d3b8014b57","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.7.tgz","fileCount":40,"integrity":"sha512-Y7XWEGtZwq73l0jMulnVqSzXDy7vbYJ53gP3HL/8j7VNnIT9eofnKQNf/aG2AtdyoXGLrmia+Vg30V5VQOMcEA==","signatures":[{"sig":"MEUCIBfMzyI+PqeYRhZGXQhQHNolTPr5Qxu8ijSqJBCEO8h5AiEA7acqJsTkh7GqkV5MyIHtlwqNTPx2d25nSdlGdO229OI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66416},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.7_1698142575779_0.2711825475510057","host":"s3://npm-registry-packages"}},"0.7.8":{"name":"useful","version":"0.7.8","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.8","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"8e11e3e1cf652f13722e5ddbeee676376dfb35bc","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.8.tgz","fileCount":40,"integrity":"sha512-ziXksDCpgkxWfGoL9OY9m9NAtomXSKbqVEX1DsUM0gR5d7sq3lkz0/uR9ikaCgWAkrbI0JXc/UXgpMXiCsmnsg==","signatures":[{"sig":"MEYCIQDgRueLN+nrYemMJ1ZYRy+1d3ipRicj2nDi5DMN/Gj2dAIhAMG0z6uU2282SrjKv8c7JI/F7xIAtOWpiE2kkf2gkBlJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70862},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.8_1698233578825_0.7985617181212226","host":"s3://npm-registry-packages"}},"0.7.9":{"name":"useful","version":"0.7.9","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.9","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"ae17b0b3c418453afcf2a372b403e98a749c23d2","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.9.tgz","fileCount":40,"integrity":"sha512-2EvsPa6U3bAKy9jeVzzQ5KNlqz6M47ut1dJsluMbEt02neHZkXBVCWcFDiA2FpmgsXloG/qOKG+t4NBx7f1iOg==","signatures":[{"sig":"MEUCIDJ5O/9SH08Aq3dxfTFurJIeReuXNJ5j5xuaFCDT1I1GAiEAx11zOF797lVdiLr7une/1a5KwWIhB9WgKs+XWj9m+H4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73470},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.9_1698750034546_0.39058133016964325","host":"s3://npm-registry-packages"}},"0.7.10":{"name":"useful","version":"0.7.10","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.10","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"9594743d8522fdfb2b38b83b1bbb8dbb2e0548d6","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.10.tgz","fileCount":46,"integrity":"sha512-X1tCGJ4/JBFf+4A7RqsclA0fmaU4RAzFtzbEP6HsvhmiJHHBQ3xudbznmxJanVBECZAiPUCEdZY9eI03Rb9TRA==","signatures":[{"sig":"MEUCIQDUFjAa5PkpziXIUD+wVowS9o0557D2OqeQ6XKvJCtkEAIgTWb2HDF6k6hFieGvvwKmdXcMFcM4uTX/HARfvS26yTA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97266},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.10_1700991612665_0.2581058189662544","host":"s3://npm-registry-packages"}},"0.7.11":{"name":"useful","version":"0.7.11","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.11","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"28e3f70c8953453fc71eabce334384bbd96d0b85","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.11.tgz","fileCount":46,"integrity":"sha512-ArZ5a1djRrlE0luciJ57xxhOnmxPDaegchep34bpXD7mTM2Str4D71uYzyIxzYFrxrxUFIOvTqhNqTrdzJy+Rw==","signatures":[{"sig":"MEYCIQCxQR6zfIbU4FMipB7GYMYnq7T37bPt5GAlRytWkeY5/QIhAJ8KLM+7gotc62MrP2rb+AGYrLcwfWJj03VFhFmeemux","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98767},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.11_1701615006851_0.7707013696951446","host":"s3://npm-registry-packages"}},"0.7.12":{"name":"useful","version":"0.7.12","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.12","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"e72afc8d31a9bd23406e45e196338a0b7a333359","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.12.tgz","fileCount":46,"integrity":"sha512-ar1xUn/OWQRuMGQtpTs0DwuHJjRlL/isTrY2mhfeAcdLFEK3iINxZYol9fNy6vzV5s2VNa5mDBcszTDONyddeQ==","signatures":[{"sig":"MEQCIDok1ZKT5691lj+FL6fEsc8qyowdAldLokSIiU4ngXadAiB5eRG5lX7cAzP+z2fslZSWKa5QLOb5Nd+cDk1+i5QhFg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99874},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.12_1702122505312_0.6317131544126462","host":"s3://npm-registry-packages"}},"0.7.13":{"name":"useful","version":"0.7.13","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.13","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"616322fa22e8755626373cc3734693afad4614ee","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.13.tgz","fileCount":46,"integrity":"sha512-20/Cazkgbu0a/cQz43zgNyROqfp0KP5P3CgbE5VLd0ea+T5c+5rw4XquQg1MIHvMilE9NdxASDj77OTNr7Xn2Q==","signatures":[{"sig":"MEQCIFQwu1iS7fkkRoEEcUZDKQk3K5yxgS9Nklbz3hqfr5nDAiBKjm4Nwe6sv8Hd4Y8G8X83FdU9VXFrd/MlJ3IFY+TIBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99924},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.13_1703599297655_0.2942297648168106","host":"s3://npm-registry-packages"}},"0.7.14":{"name":"useful","version":"0.7.14","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.14","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"f21cb4c4df5e23f517ebb419ea94388657fa3ce2","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.14.tgz","fileCount":46,"integrity":"sha512-VGutrRyhAPymqtHxD+aGrhYRb0QU20jIpeXifbLUkTAVYND+EW0mIs7dWJnIqVqCCItTLjjAxfLy2qYB2/MnHw==","signatures":[{"sig":"MEQCIBd7uWX8aMx+OADinj5egVxdGd1iOoKEMigF2bn1bMnPAiBaGGbTCX1znQ0H/yFrMArIgROEyw/YfLLCTSAngVT//A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99924},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.14_1703599304003_0.8132774566578818","host":"s3://npm-registry-packages"}},"0.7.15":{"name":"useful","version":"0.7.15","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.15","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"199ee843dfc2de5a0f0dfeca48bd1547278b807b","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.15.tgz","fileCount":46,"integrity":"sha512-PS7nzcKK+ZuaHc9jfEauJVKfb5CEo/kkxpR5sVY/8imZsS9CYjVzs6Px0n4qAAtN0ceYP9hVec7CCValuasoaA==","signatures":[{"sig":"MEUCIQCP38bUJsDiggHrX1v7hjW27xlFkMCwj3wEdRKjA/TFYgIgawmayM2aEt87T0tG22pzU1veGuMHR55P7/nLiZHKPmY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99942},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.15_1703678894860_0.33750977850686126","host":"s3://npm-registry-packages"}},"0.7.16":{"name":"useful","version":"0.7.16","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.16","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"dd16e4b8c44a81b137ce7d87e219361a09b87220","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.16.tgz","fileCount":46,"integrity":"sha512-zKkZfOKpawW6MWRxIqWzb/KS5i86I3qlVE2CXnR1ADUC08cE8l01w7Gmo+FX6CAKI9fJemdLodRCUkF6HxPyoQ==","signatures":[{"sig":"MEUCIQDZy8i9fhLn/DkL+7hWKu9ysSl6ud8QlZquK7YaMAT6rwIgHohEqvCWge0T5+LvSwrQkrcs8MAge0LD07QtV3SkgzY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103174},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.16_1703943132097_0.9045684929437652","host":"s3://npm-registry-packages"}},"0.7.17":{"name":"useful","version":"0.7.17","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.17","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"4c60540e638e46e9c5ba10a8f515bd79d484c429","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.17.tgz","fileCount":46,"integrity":"sha512-ydpY8pkA+TvSYu2HKEMcEGcVc5Rf4LDFUWEagHANRSPM78k8JHzRPjMBCl+ibsWaFEwNhi/sjAOe41czrjOWhA==","signatures":[{"sig":"MEUCIDdEl/q9IcqEJAXq0MY8FZ5Vk9F4DzVUnutlhZ5F0x47AiEAh32OlI5bECOdV2cez9V0BGjctI1TUzTULuTHPvnO4hs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103699},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.17_1706521781879_0.5665509608455046","host":"s3://npm-registry-packages"}},"0.7.18":{"name":"useful","version":"0.7.18","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.18","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"4a2f600c8c0c75fa29815f8f8a2f8ea1f68d17dd","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.18.tgz","fileCount":49,"integrity":"sha512-Jde5nMdda/kLzHyqhF8RMGoBnFjRAju8SwsSm2vQ9u93qUouaXBdTrGo7wsWUzguqhFfY5y5U4kzIAPDqGuvoA==","signatures":[{"sig":"MEUCIQD4fxFuvrlpl7z93WkXlZyMNY0OYGKVk2t0hZBxbDYIqAIgevF5VdO9E1mtTocl2adyAuoNk2VVizKDz1lQI6wYDho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119910},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.18_1708329993858_0.8930093001515593","host":"s3://npm-registry-packages"}},"0.7.19":{"name":"useful","version":"0.7.19","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.19","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"adb61df20f7177d92e980b74907c513ff062b064","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.19.tgz","fileCount":49,"integrity":"sha512-llq6H6Z9U7gsCSD4B1IH8ZA7krayUsSmOWQPyLMqe1ruzwtsjamEUivz3NRQNgz9oEMdNf/550SlR1ksmfcCMA==","signatures":[{"sig":"MEUCIF2YHUmyZXGLzYXyXfu1Xphp3lTN1OZYSLmBxT5fLKdbAiEA16sHLQB2edZX2+fgDXaR2uf+ATyu1QUyXMZfw+OI1EA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123988},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.19_1711028491898_0.07183059590992902","host":"s3://npm-registry-packages"}},"0.7.20":{"name":"useful","version":"0.7.20","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.20","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"d9ab7a4b5d9bb4bae2f644616410b5e25232c3f8","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.20.tgz","fileCount":49,"integrity":"sha512-KgfBkHnIvXoL1r67o9BTt9m20InflHpylg/DZ23IeGO4CETO3ldMm0OmU6JTBxa3iVUozy17Wv64T7Yw2PNVHQ==","signatures":[{"sig":"MEQCIHVYQusj30ir+5wumXL51igtoPPYO2EwyqeK6XisMiAsAiBRyuZI/pd2NGuwdJMbqIZF4+5zmZpiKeaRX8U8vEovig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":125666},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.20_1711029202696_0.06301873350188814","host":"s3://npm-registry-packages"}},"0.7.21":{"name":"useful","version":"0.7.21","keywords":["String","Strings","String utils","utils","uilities","TypeScript"],"author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.21","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"315739ce859c5d4b198f7c3c4cebd1415f5fb46a","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.21.tgz","fileCount":49,"integrity":"sha512-k38lwZ3KHvlH5M44m9mJzU5BXf0sLUl2tilKA/SLZi7gCGkROk0cT7iYmBVPg47F9UyHf/MEcWUvQWwZ6sZhaw==","signatures":[{"sig":"MEUCIDKyGHevz4qzbiTrgzXxKMVwRqR8tFkoxferdNJZFj/tAiEAzvSbP5tb1cglVFkgocSR605ENRfFfO+IJF1WjT9OQaQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129787},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test mocha --exit","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist/**"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"https://github.com/pth-ai/useful","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.10","mocha":"^10.2.0","rimraf":"^5.0.5","ts-node":"^10.9.1","typescript":"^5.2.2","@types/chai":"^4.3.9","@types/node":"^20.8.7","@types/mocha":"^10.0.3","@tsconfig/node18":"^18.2.2","@types/spark-md5":"^3.0.3","@sinonjs/fake-timers":"^11.2.1","@types/sinonjs__fake-timers":"^8.1.4"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.21_1713293370619_0.21327371256279615","host":"s3://npm-registry-packages"}},"0.7.22":{"name":"useful","version":"0.7.22","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.22","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"homepage":"https://github.com/pth-ai/useful#readme","bugs":{"url":"https://github.com/pth-ai/useful/issues"},"dist":{"shasum":"646270f58e124e64a3d2585aebb5216d9816d3ac","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.22.tgz","fileCount":23,"integrity":"sha512-FiZl2ufRdmTYM0lUaRbrBvZ2qtE7oU0IdJu7nzvbms7k6mxzLN/8WX1N6/CKB1MQibcCDqd2XEAfXSgO6gO7bA==","signatures":[{"sig":"MEQCICWApwrzDV0+LpOZFRCY0iLzZQoJLei0pClo1NixJF3aAiBrRTM2svoCE4KaipNE1TfD8/i9GLYLFcGw3bozlOQUXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90981},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test jest","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git+ssh://git@github.com/pth-ai/useful.git","type":"git"},"_npmVersion":"10.5.1","description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"_nodeVersion":"22.0.0","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.9","ts-jest":"^29.2.3","ts-node":"^10.9.2","typescript":"5.5.4","@types/jest":"^29.5.12","@types/node":"^20.14.13","@tsconfig/node18":"^18.2.4","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.22_1722406170871_0.005643374979833249","host":"s3://npm-registry-packages"}},"0.7.23":{"name":"useful","version":"0.7.23","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.23","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"c38dee1c3cbea1ec634893cca62589a357db91a2","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.23.tgz","fileCount":41,"integrity":"sha512-Zs8nJQH2ZjyuYxlbclPFnnv2FkrsPSRKM9Kdd3kVX2qc8Paq0q0ZL1AOICIeEemV13SuHw3E/GpPfyHf+7JrOg==","signatures":[{"sig":"MEUCIEb01S0hqd+K+flZmVeA93bsVT0/8/4ufBvTGlmfVzpNAiEA0i5FPLBuC8iKVjx3SYegceFSNgmMWrkpUQwmysNdLkU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129936},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test jest","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.9","ts-jest":"^29.2.3","ts-node":"^10.9.2","typescript":"5.5.4","@types/jest":"^29.5.12","@types/node":"^20.14.13","@tsconfig/node18":"^18.2.4","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.23_1722412662819_0.0880448981386881","host":"s3://npm-registry-packages"}},"0.7.24":{"name":"useful","version":"0.7.24","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.7.24","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"homepage":"https://github.com/pth-ai/useful#readme","bugs":{"url":"https://github.com/pth-ai/useful/issues"},"dist":{"shasum":"4f1f1ebda56c85c0f4578fee5153bec7ea7e29ea","tarball":"https://registry.npmjs.org/useful/-/useful-0.7.24.tgz","fileCount":23,"integrity":"sha512-lt4NBXmB/dJa7Jw9tWA+QXoxysQKsk4yZF8bnt/WUpz6hvnuv4x7zoka4RRkDgGoEZ9C01+gvYWnggjzw2c5EA==","signatures":[{"sig":"MEYCIQDSm6+5VVt+y717+/TjBEQl/n0Fy+1xmnJd/uPJDCf+egIhAMTGB+gca0j64mBC0yO+95D1uWoo+eHLYSO9OmElWGUr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91035},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"test":"NODE_ENV=test jest","build":"yarn clean:build && tsc --outDir dist/","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git+ssh://git@github.com/pth-ai/useful.git","type":"git"},"_npmVersion":"10.5.1","description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"_nodeVersion":"22.0.0","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.10","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.5.4","@types/jest":"^29.5.12","@types/node":"^20.14.13","@tsconfig/node18":"^18.2.4","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.7.24_1722683286128_0.8771666178808484","host":"s3://npm-registry-packages"}},"0.8.4":{"name":"useful","version":"0.8.4","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.8.4","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"fd44d1ff85a0db470080164f3fc2ff0b5fb627d1","tarball":"https://registry.npmjs.org/useful/-/useful-0.8.4.tgz","fileCount":79,"integrity":"sha512-VsCNrg+tPlxC1X1EzGB15HqVTN7bNx17PpvGTFZAWFhKdRozmIPjxY5IbjxV1ZrdtvGiZuO8jBPxysiTQBE6jw==","signatures":[{"sig":"MEUCIQDxHF8A6BR42Fa3lGPsp7VtqfSPV6cpua46ki1r91knfAIgBiD5H6QyxDAzoiC0+/1gnwPbrwShi6pXTR3bukeaBxI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249766},"main":"./dist/cjs/index.js","type":"module","types":"./dist/esm/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && npm run build:esm && npm run build:cjs","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.10","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.5.4","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.8.4_1722785082466_0.9082610205998463","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"useful","version":"0.9.0","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.0","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"73c6ee5e0745ba248defbf73f5e22ad8dda86048","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.0.tgz","fileCount":52,"integrity":"sha512-FHbM+OAXLwCoh/ClBuMNqx4zdWfMCSKqoG3McMU+VLqzNozaqnQ7ekZ1LjYe4Z7qFKwZWNuIWdEiYLuxDPTXiA==","signatures":[{"sig":"MEYCIQD/mjGI3ZoX7PxHPs0lQtMgcGEyOehTCimNh1PemfBcNQIhAPOfTzhfrsl0bCvLOizGhBenxFdgIaP/yFd1VFuGx/wG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166758},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && npm run build:esm","build:esm":"tsc -p tsconfig.json","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.10","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.5.4","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.0_1722939129767_0.7574917852103455","host":"s3://npm-registry-packages"}},"0.9.2":{"name":"useful","version":"0.9.2","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.2","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"f24739f88bb32e4b7a0612cafb72b0893caac06f","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.2.tgz","fileCount":73,"integrity":"sha512-vrcuaDae/ErrLcVorh8WD+Uf/l+LRb0wzQf/R5rU8UdrGzNctdukwIkaoRL1rfj3V/0TSo1MU2nnCI65IbmBEA==","signatures":[{"sig":"MEUCIQCl/1mhXUw1otRhLnBveSTkpzGSKtKBr0qFc8GCx0ehIAIgGAGiKgMiwapzGbnppH/SkAZtErPciTMbSeomMVPXnS0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":426219},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.5.4","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.2_1722941002353_0.31624053978444255","host":"s3://npm-registry-packages"}},"0.9.3":{"name":"useful","version":"0.9.3","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.3","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"c0876795220729959ccd20a237d7b68c1e8d62f4","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.3.tgz","fileCount":73,"integrity":"sha512-skS6Dq9DFEMRU3GzM4wc7j2a/xKw06S6dtyxIaeg9bINe0m7qZHg0puAePUXV+r2X/ZzEojaIzOUvpOVoJDEOg==","signatures":[{"sig":"MEYCIQCAlRmBK2h1KP8RvykRp7Ps7GeFX2ovoXDaN7LN4EPKTgIhAN9NLSSqnmpamms8UyDbcclT9kaEEQyVV56DU209RB6H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":430904},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.5.4","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.3_1727616304291_0.6351242487543745","host":"s3://npm-registry-packages"}},"0.9.4":{"name":"useful","version":"0.9.4","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.4","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"6874a87f49a4a7a2f2c37b036c0b2d3f38dd4be3","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.4.tgz","fileCount":73,"integrity":"sha512-kXvcovL4kcGSlektvKAsM85nScZGvmup3ENSmkUTpr+q/H6f3a7/FiJTBKW5M11yofdcDpTcZq2kNDRUN6s1EQ==","signatures":[{"sig":"MEUCIExSypWpRjXtGZuE52fnXM/M2lJ7Ci5UkjCIE9tk+TyeAiEA8bGlIC6s+r3c89jVZxV3R+XfYgfxIkp8RagQDYkFXIs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":434331},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.4_1732110883631_0.010729330085361033","host":"s3://npm-registry-packages"}},"0.9.5":{"name":"useful","version":"0.9.5","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.5","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"105ad837ef0f08ecc8ee2c46d37f9ab4db1559b5","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.5.tgz","fileCount":18,"integrity":"sha512-WbBniQrKmYv9winx7lrjkfH40JBHdQSgMRpabmfo3/DcOboeINAi7RVaZCQFRd7RbYzlkapXpjiEsP58aoin6Q==","signatures":[{"sig":"MEUCIHS4LGM1KeyvEOiGjWuCWLQ6X7YnPXJeeL6uozw4jVrgAiEAgbjNTca1JGxC8DlZe3c6DdauEcjxarUGomGHcDTemks=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120873},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.5_1732721780757_0.5181151168318925","host":"s3://npm-registry-packages"}},"0.9.6":{"name":"useful","version":"0.9.6","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.6","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"0586db178228b39d353b66585934a589dd1d37f8","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.6.tgz","fileCount":18,"integrity":"sha512-pm0iUf9uuam+O4NYqEAk4t6sk7Y1KgDwAEeqP9ODnPvMrqFWP0aLhppQknB7iqMoyXSJLMbGrVv3iIoVG3AlzQ==","signatures":[{"sig":"MEQCIHdLzcuD+ir5PYGqu4/lr8ZJGsfXcx37kylAd6Z+knshAiBmq0L9Lz3oEUQ6WjVQBPPdG2OCd8Quk4NDGR9BXXqevA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120909},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.6_1732722203431_0.19561498919186326","host":"s3://npm-registry-packages"}},"0.9.7":{"name":"useful","version":"0.9.7","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.7","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"68f0a1ec4345172cc5b29d0db23c88ea55cddd65","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.7.tgz","fileCount":25,"integrity":"sha512-kYzU/Gon7I3uCINMWFtLMGvS0ZgNHoZv6WKgWZY3oNQj0/y02H46pw5ooC7o7n4BvxbFBQ2et9dBgLTRG9ifsA==","signatures":[{"sig":"MEQCIG7UMUxQnv/Dwy/io9Hw+fv3sAXYOxoKDBQ20iNo9/PtAiB5Jj4KofdrbZI/XpT/r4Bh5F/BkJJrp+AELPahMfn0Gg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135718},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.7_1732722443481_0.8376268176396708","host":"s3://npm-registry-packages"}},"0.9.8":{"name":"useful","version":"0.9.8","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.8","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"1da43df51d90b7aadb07ace3772d37a4cba61b14","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.8.tgz","fileCount":25,"integrity":"sha512-4WY09xkHv8IsuXZATNCIVfBKKSsiK7O0gyxiRM7EcghwP2a5Ap70bdv00QkXOhPG5BoYthaqwfVu5oiSp8lgPQ==","signatures":[{"sig":"MEUCIQC2/UUVbL4DQwVRTPbZIfJrUyjTBzPS75X9SbJbgDj04gIgFx25d1nWPpUlOKdJiPZSj269v00Xcq+4UknvskmQECA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164376},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.8_1733213918397_0.9115711896896745","host":"s3://npm-registry-packages"}},"0.9.9":{"name":"useful","version":"0.9.9","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.9","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"42300ec76e649707779aa38c5d6b8c21e893c6ce","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.9.tgz","fileCount":25,"integrity":"sha512-lcQlCKHGeskb+tE41w2wk9ziIoUUcb1GX67PYm0SC9sUv2So0Yx8fxd5H0OCcHn2qudvk6jxeB0IYwcCocuDfg==","signatures":[{"sig":"MEQCICADIW+gSQDOlVC72p9dR2/1EWtrQ6KVzaWhJe03/9S6AiAEiKGLIqTO2I8yX0Kggk5qO62h2eXuJ2JCmwjqr48JbQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164358},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.9_1733214136107_0.6523262465507238","host":"s3://npm-registry-packages"}},"0.9.10":{"name":"useful","version":"0.9.10","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.10","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"b8aa8f8c2ef06b55c5b2daa4a9fe0647b1bc5181","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.10.tgz","fileCount":25,"integrity":"sha512-VK3qpHHbvq8GrvSBQIO6WIU868IztH/epCwCgB6U4gDzJE9DSmRrluPKm43oMrib1W718w83ixIsHrLBltU31A==","signatures":[{"sig":"MEUCIHG+rqdoTrGU6oFAcJ/iXJ5RsvdIj35jbA8fN25rsJiDAiEA8hzhTohEJ7da7ILhyBYEE4Tq5a6Kmtq7kIt3kk+RXp4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165092},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.10_1733233059002_0.40828375569661923","host":"s3://npm-registry-packages"}},"0.9.12":{"name":"useful","version":"0.9.12","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.12","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"ab11e223d75c52866fe157eba1f92ef4b470671d","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.12.tgz","fileCount":25,"integrity":"sha512-fkPTdwjqQsgo2TJIx2swZCmSdp9rwV+ogRCWzcLsn1YRLSxUj5G5t1zmxT0TzSvaiisl4Hj/JCtLH/tYRAGmBQ==","signatures":[{"sig":"MEUCIDy9DwNIHlRC5ZV+HHiEqZijFeV9Xdk7IEEWC9aL/rhIAiEA6Cb9nH7J7yop37FmukZN1BJ2+faVQev5kAipPlMojJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169294},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.12_1733311351368_0.40401702455693966","host":"s3://npm-registry-packages"}},"0.9.13":{"name":"useful","version":"0.9.13","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.13","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"b56a38d8523ca92d05094522255ff180a40fd25f","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.13.tgz","fileCount":25,"integrity":"sha512-N9EhE5ad0IfstPgEznkXI+tEeiITeGrnlYknGWBF9snmBn9NSORGNKhpBtSRyoBtiZJ2Ormv8m+HeYcSn+iU7w==","signatures":[{"sig":"MEYCIQD5rRxUc8QqlnbSg/+YrkYAXZzQWkrv6Euzf0rsuARxvwIhAIquxAZrpPt/mprgg3GBtXrzOXBIqTOCTsI3KqnqCi5r","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169882},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.13_1733311607173_0.460685368818762","host":"s3://npm-registry-packages"}},"0.9.14":{"name":"useful","version":"0.9.14","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.14","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"63b542de67ce785516bec0a8a83e3b35a2502a5d","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.14.tgz","fileCount":25,"integrity":"sha512-2YbVWQ1G9IbRGhXo4Y4kzGOUuNgSlTfmi8BYjJqIl2a4E7n3BMyv877k4AdwtrAs6xtc3uxP/mxdNYc2MBdF4g==","signatures":[{"sig":"MEQCICqkbbaJrfUkRCtpJqd3rDC/b8zRY/YPXVhpyyx31lq4AiAGpU7cA+AbQAPAkztYBulB7u77c3NUAo0+daLDxEGa1g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169876},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.14_1735206252215_0.5903679689290084","host":"s3://npm-registry-packages-npm-production"}},"0.9.15":{"name":"useful","version":"0.9.15","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.15","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"254f425bb705794c90168e33a7ff3d622120548f","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.15.tgz","fileCount":25,"integrity":"sha512-nsroFRpd/PFmf6q+SYjOAKU89i3Ak/rZl79R00S4bZVK7HZdn/e/hxksmkC8b2PXAQbP+qQmc2gDoewdPerByg==","signatures":[{"sig":"MEUCIQCAAvz5dCPQEq9OJXA8RcN1Y58OEWikaHYzZBG1ZynP0QIgIJoXJn2g0ef1O1jUjI1lTCY5OmlhCky3m5um8YWQGqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169880},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.15_1735222339656_0.7151629286170675","host":"s3://npm-registry-packages-npm-production"}},"0.9.17":{"name":"useful","version":"0.9.17","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.17","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"47b2cb67e1632479b3cb78337e9c974ec0a0cc7c","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.17.tgz","fileCount":25,"integrity":"sha512-yPuJ6afOKtKj5YZcL+I8lzTmD39evClkXIav+zyVCAkOC2CjjJqvtpxqaALtfyxptwR+LELuK7J3XWM/QiyHiQ==","signatures":[{"sig":"MEUCIAPUu3DPbv1NDJH897L7yjtPKr6ADea1kudoHaaoSuesAiEAqE/eYlYyFbxL2EWawcJJPPkuHQndpVv3I8zcejkNe6c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170388},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.17_1735223791343_0.8679902738333276","host":"s3://npm-registry-packages-npm-production"}},"0.9.18":{"name":"useful","version":"0.9.18","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.18","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"495c7a70408e7e04248b9141c31eceaa08c81bb3","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.18.tgz","fileCount":25,"integrity":"sha512-7BxHCLSUSTBDr9MOjkclwYiUAWtPO9PQFBbJLDZF7ofF9FdInSnrOEZH6NvgWEHxyud85DlzkxgXPbIddZPBXw==","signatures":[{"sig":"MEYCIQDoNFb4u7nppCBiyt9zlwy0nV+4TgI+K5J8HrdaGbmLowIhAM/GEEITmpGwrKGWkaEPUOm99rEFDeY1HSwBOYX11gnn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171669},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.18_1736933510886_0.7011012162586336","host":"s3://npm-registry-packages-npm-production"}},"0.9.19":{"name":"useful","version":"0.9.19","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.19","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"48400979bf76c75b833a0d41c3a286eef727519e","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.19.tgz","fileCount":21,"integrity":"sha512-Nb6rZ3adWnhzzOt9bmoE5oSF4QCI5NUVMjVjl6eY7gTSB1EACec0VUp0oGjv07bxNjz5H4nYhaOmYb2oFz//VA==","signatures":[{"sig":"MEYCIQCyxHK1rVfJU8oF8RBMpyiGgtidVi9viJkhB4oDZt+z9wIhAPcXf1AQM20r7kkMP9cMHo6hZzxK9aij8oh8JwetO7gF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139818},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.19_1738141339519_0.84159561596139","host":"s3://npm-registry-packages-npm-production"}},"0.9.20":{"name":"useful","version":"0.9.20","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.9.20","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"32783b810078ae56757d8829fa51811aee482586","tarball":"https://registry.npmjs.org/useful/-/useful-0.9.20.tgz","fileCount":21,"integrity":"sha512-N24U0Bv4Q0pQKjIEC5W+bgE7cy9ZCDWz8G+/toCuhpOVqhrwlpxQFph4vSi4lE9ZbswoHs9yQ9UlC0HWxS4itQ==","signatures":[{"sig":"MEYCIQDaR3nuzCtOmhDmoqtF/pVRERN6d2xEb7c+IQdzqeIgdQIhAMPOUIa7xRQcyV4ezsFrjadxJpnWyXyLyGIcb0Wxz8XJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140566},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.9.20_1738143564154_0.9983496600278752","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"useful","version":"0.10.0","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.0","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"a1ee8b6aa19a1bf05a72b760a3415381aaa7997e","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.0.tgz","fileCount":23,"integrity":"sha512-mxGlOlmmkZp68MSAmUb2ovGDhYw45mmRny1+yYstrt+B53pnhKhc2XPR8ePPUeAyoQcD9CZ0jge2iZm77c6Twg==","signatures":[{"sig":"MEYCIQDvZwRShqTPZRi30rWaw5UKEltmUxxl779K2vIzszZ0sQIhAJcB82IJ1bg9YSQ/uxgK+UKaBRO8M29vCGJnNQk1bN4z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194597},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^9.0.1","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.3","rimraf":"^5.0.10","rollup":"^4.20.0","ts-jest":"^29.2.4","ts-node":"^10.9.2","typescript":"5.6.3","@types/jest":"^29.5.12","@types/node":"^20.14.13","@types/uuid":"^9.0.1","@types/spark-md5":"^3.0.4","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.0_1749019070184_0.23644627753227598","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"useful","version":"0.10.2","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.2","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"78922251106b670bb5437bb1875675abf1dac016","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.2.tgz","fileCount":23,"integrity":"sha512-CRSCLXnxrSSHhp7CHQHKWlR820uLeokE1pAqIGBYAMOVbEbxvPO5asmijKOmqfnXxfagYOapxuURLgILZ0Nx6g==","signatures":[{"sig":"MEUCIQDX29qksZ/jRopA4UIKmha5CAlnhHxyybfjM7DHi8RLbAIgOKkWJd2B1wZ43Be0sxuddi2Gw/sWa+rBqSB3jyTzckw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192304},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.41.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typescript":"5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.29","@types/uuid":"^9.0.8","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.2_1749019315265_0.7347399058551536","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"useful","version":"0.10.3","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.3","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"e251dade5db04fee80dadb14b492930e9b1110ee","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.3.tgz","fileCount":23,"integrity":"sha512-53uBEk0z8gBdq2YtVVw9sZdPJShlNUIyRDVLwb3beKHOq1wsHASBBYCQFnRYA2OLdDwT9bzvpP+efC3pfS0jJw==","signatures":[{"sig":"MEQCIGqetpIc+MHUbcW2sCo3Jz/qRfGziy2gfT6j2HYlxCrnAiAcBTmuijC1DxlP36bWP55v9Atk4KH8YID7CgAbibqp+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192248},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.41.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typescript":"5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.29","@types/uuid":"^9.0.8","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.3_1749019871120_0.0074289557819444685","host":"s3://npm-registry-packages-npm-production"}},"0.10.4":{"name":"useful","version":"0.10.4","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.4","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"7a93cdfb2b1ce022189ce585e417422d5de1551e","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.4.tgz","fileCount":23,"integrity":"sha512-0jnBcLFBz/Xx/dCEMjKmPiTTvKU754OX/0yYL+9R1EBVgCbD1YsU7XPmxrwYF6ePNqLIkfjcBdeZebXZm6oIug==","signatures":[{"sig":"MEQCIDSintxrYcC9oa8tqFSxjPeLts94HgMpmqlmhjfPziN6AiBRRK6N6FXXZkkRs2HiY/upOa5G5TNAHyAAJ+C+ivxWxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227371},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.41.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typescript":"5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.29","@types/uuid":"^9.0.8","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.4_1749037660874_0.6521398593194865","host":"s3://npm-registry-packages-npm-production"}},"0.10.5":{"name":"useful","version":"0.10.5","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.5","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"6653458443f2843d0902bdb6b4c18032bfb7865b","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.5.tgz","fileCount":23,"integrity":"sha512-tGNh8u4/Dv7kVohHWvCGX6WpfNC0F1kvDyA6kN5vFfoN3QdRULmuGZ6ik1IuGDFUACW0402pG2ZlcGk7KP41+A==","signatures":[{"sig":"MEYCIQDevTtWsuFVXthPP3vDe/4u4bGI5KAefSE0+Yq29MI9VAIhANXG4T7mmmn3qu+QFsCm8BwwYaUh7KupM3MkSh/TB8hl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220583},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.41.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typescript":"5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.29","@types/uuid":"^9.0.8","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.5_1749039145856_0.7247997919484701","host":"s3://npm-registry-packages-npm-production"}},"0.10.6":{"name":"useful","version":"0.10.6","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.6","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"786072e6318754ccd3d312c2cb0f633040d64178","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.6.tgz","fileCount":23,"integrity":"sha512-gTW/Zj2d0WIivCayyZcqw0DkSb0EUjfG78w1IXqlrEae3M2xqbkF9pkaxMfgBfuN4NH6mb1bPuothNtBQtWj7A==","signatures":[{"sig":"MEYCIQC9Ua+LX8D+QuMX6bVk2bMh599nppIGrTBmdRodEV2aCgIhANhefBS6lSm3BoVmHJtECsLlYHdNadiU0A82I5MPoZRS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222715},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e","devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.41.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typescript":"5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.29","@types/uuid":"^9.0.8","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.2.2","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.6_1750067947407_0.15962091637031417","host":"s3://npm-registry-packages-npm-production"}},"0.10.7":{"name":"useful","version":"0.10.7","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.7","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"37c34ed3f75d15367b3921d4fcb27368191bbf96","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.7.tgz","fileCount":23,"integrity":"sha512-92KIyxoX7MoGjCHxsXg3DZdcZxY3ah9xl2HWKuc3ekJGHuRY/KB6rHFcDmo7EkEQts4C2hZjL4AmgmdZ160xMw==","signatures":[{"sig":"MEYCIQDFwcMHMUOog+hwSTaVGPsMsIN7Rj6gNYFFxGvNmOTAjQIhAOXYY3YkYWCHTqxp47sHhkuoPBazNLkK6fwHCypxwlu3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225036},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.45.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"5.8.3","@types/jest":"^30.0.0","@types/node":"^22.16.4","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.7_1752569114986_0.5485143307487568","host":"s3://npm-registry-packages-npm-production"}},"0.10.8":{"name":"useful","version":"0.10.8","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.8","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"c15936e643d6655f00a3a53f477d1aca90d28ccb","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.8.tgz","fileCount":23,"integrity":"sha512-O18VevB+sPz34sYEe3oZWyk+rgCsYbQU3TH6zNF8nLCiF9ElFq5mI1GEAytD2mUF/alvKeaOwgAEIoTFR8v8wQ==","signatures":[{"sig":"MEQCIAws78BuNq+PCSezMlA3fGhnFlC8JxEuLYEcE5MgMAtcAiAiWf5QB9m12a1n74TFBWjTq9cl9CLeM7vMPlGTyAQcig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224982},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.45.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","typescript":"5.8.3","@types/jest":"^30.0.0","@types/node":"^22.16.4","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.8_1752569471664_0.5309959972886613","host":"s3://npm-registry-packages-npm-production"}},"0.10.9":{"name":"useful","version":"0.10.9","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.9","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"560e3c16158e11841add5e6dbc02cf5cb493d33b","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.9.tgz","fileCount":23,"integrity":"sha512-iZ2HEu+e9P2JmeA73rE/VCIY6sFPf+OVQ5VWt5vqFRv3Y0+OZvAlvBbnkXCe73PPfbMGPkLU5ifbKqORqQ6hkg==","signatures":[{"sig":"MEYCIQC2O9ERcAcMy0Q2SUK42aBQUfyVzQEScjymzj7mhY/+nwIhAONkFEGpJO4+aG9v9YKKXfkkjoWvyrC17BKoYscEaiVv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224982},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.46.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","typescript":"5.9.2","@types/jest":"^30.0.0","@types/node":"^22.17.0","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.9_1754550320365_0.4895828064589356","host":"s3://npm-registry-packages-npm-production"}},"0.10.10":{"name":"useful","version":"0.10.10","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.10","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"837aea1e2af23d0b53130125bad5cf3d9f12ba88","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.10.tgz","fileCount":23,"integrity":"sha512-Er0KJazc+Pcjz43Ce/vpG6cPh1k1xXXfc2S1wYZusd556/YoeOZZ8bw8zsiGdYWcFrDNtx6dRQX3LOxOQEv5AA==","signatures":[{"sig":"MEUCIDpwb6iluyl8945gO1+vbSEARx8CQXNQBoH3gxmwwZlcAiEA74sOnrhNNYzlMvnAF5pYX8nxfWyyoDYnXMveVKYx6Ps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226334},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.46.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","typescript":"5.9.2","@types/jest":"^30.0.0","@types/node":"^22.17.0","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.10_1754550472504_0.0903263987553351","host":"s3://npm-registry-packages-npm-production"}},"0.10.11":{"name":"useful","version":"0.10.11","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.11","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"cfe28e3f6c19aa32b97a75b1407a8e3b8df227d4","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.11.tgz","fileCount":23,"integrity":"sha512-ZSgK8HCSYChFnqSFR+MKsX1ahdHkPzQlEOuDhQr4UFfSnl8n8YzrCRy8ek6niQfCQvUwo/kO5XlAEIW2W6045A==","signatures":[{"sig":"MEYCIQDL5H3sqxHYGca8QjBWaswyrqh6jYSiMa8OZ9axyxJ3gQIhAJeiekDJiwOwPLW3/xQN+BfnSuW/H3jHAIqUGj8W/gKL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226509},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.46.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","typescript":"5.9.2","@types/jest":"^30.0.0","@types/node":"^22.17.0","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.11_1754808064736_0.11804517606942988","host":"s3://npm-registry-packages-npm-production"}},"0.10.12":{"name":"useful","version":"0.10.12","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.12","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"39ad1e621070e514a3c9ac8e373fe06eae532499","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.12.tgz","fileCount":23,"integrity":"sha512-qJenENHrKOXXHVP+APXjvLDG9djrNGe6hWFH2mx1xrT9VydDkmiq1uIyIj2jpu259r1mzZsjyRe+BEoDk/mbhQ==","signatures":[{"sig":"MEQCIB1roZHetaDlSJ5VBiNjDpq2Om+cXBH7R5DEoK5F6FoSAiA3EigwXVbHKnr9WS8FF5L9s6YR+WRylc0Q7gZyqIl5VQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228693},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.46.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","typescript":"5.9.2","@types/jest":"^30.0.0","@types/node":"^22.17.0","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.12_1755161872633_0.6658368388589915","host":"s3://npm-registry-packages-npm-production"}},"0.10.13":{"name":"useful","version":"0.10.13","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.13","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"674094a2e36f8d491f33038e3c0f2c2cf5090759","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.13.tgz","fileCount":23,"integrity":"sha512-kdgUZXDHWvz/wLFwnk/GVW2Sj2H8bED8NxbEQZIYUrM4RLfc1r/Tr/T2XfvPwMh8TajpumYlZYg41E7vbRlxNg==","signatures":[{"sig":"MEQCIGpnAxmWo68AJz+IiGT9AphnUxgSzA+DjjDcxCBsJMPgAiA9DTdMWbSFLKd4wFVM24K3ymk2oWYQRcnuUM3agJN/kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229673},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.46.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","typescript":"5.9.2","@types/jest":"^30.0.0","@types/node":"^22.17.0","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.13_1755162186582_0.734465888179763","host":"s3://npm-registry-packages-npm-production"}},"0.10.14":{"name":"useful","version":"0.10.14","author":{"name":"Roman Landenband"},"license":"MIT","_id":"useful@0.10.14","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"dist":{"shasum":"f563e6530b6aa2f5796972881990aef9be37ed87","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.14.tgz","fileCount":23,"integrity":"sha512-EqILsINDCoP8xvCXjuzWn7t4IXkCMGTvIZrQfn7CoNyAy/n8TIqRTOTDQbfwwAQlZxXlysyYvvTuVOtF5xAgEA==","signatures":[{"sig":"MEUCIQDD+0ABbJtHw9494dXRffAQz2HXbog6ZFd+8SVWgTwHIgIgQaCNPt6NFAkx+KrFd889mhi44l/+TM3LF7EZL+T7+y8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230186},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","default":"./dist/index.cjs.js","require":"./dist/index.cjs.js"}},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c","clean:build":"rimraf dist"},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"repository":{"url":"git@github.com:pth-ai/useful.git","type":"git"},"description":"a collection of robust utilities that make your development smoother and more efficient","directories":{},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","dependencies":{"uuid":"^11.1.0","spark-md5":"^3.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.5","tslib":"^2.8.1","rimraf":"^6.0.1","rollup":"^4.46.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","typescript":"5.9.2","@types/jest":"^30.0.0","@types/node":"^22.17.0","@types/uuid":"^10.0.0","@types/spark-md5":"^3.0.5","@sinonjs/fake-timers":"^11.3.1","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^16.0.1","@types/sinonjs__fake-timers":"^8.1.5"},"_npmOperationalInternal":{"tmp":"tmp/useful_0.10.14_1755587349933_0.27665586832908473","host":"s3://npm-registry-packages-npm-production"}},"0.10.15":{"name":"useful","version":"0.10.15","description":"a collection of robust utilities that make your development smoother and more efficient","repository":{"type":"git","url":"git@github.com:pth-ai/useful.git"},"author":{"name":"Roman Landenband"},"license":"MIT","type":"module","main":"dist/index.cjs.js","module":"dist/index.esm.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js","default":"./dist/index.cjs.js"}},"scripts":{"clean:build":"rimraf dist","test":"NODE_OPTIONS=--experimental-vm-modules NODE_ENV=test jest","build":"yarn clean:build && rollup -c"},"dependencies":{"spark-md5":"^3.0.2","uuid":"^11.1.0"},"devDependencies":{"@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-node-resolve":"^16.0.1","@rollup/plugin-typescript":"^12.1.4","@sinonjs/fake-timers":"^11.3.1","@types/jest":"^30.0.0","@types/node":"^22.17.0","@types/sinonjs__fake-timers":"^8.1.5","@types/spark-md5":"^3.0.5","@types/uuid":"^10.0.0","jest":"^30.0.5","rimraf":"^6.0.1","rollup":"^4.46.2","ts-jest":"^29.4.1","ts-node":"^10.9.2","tslib":"^2.8.1","typescript":"5.9.2"},"licenseText":"MIT License\n\nCopyright (c) 2023 Pth.AI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"useful@0.10.15","dist":{"shasum":"a52ae9f2ae73887dc6e358244dda44700e49add5","integrity":"sha512-8HTZf8u7Kq2gJ9OjO90Dx29LiSbCeiTwIk2/uXu6mYeJooAOaKoF6m3043wzvPFhZwUQPtMbzCUrnkB6npoWCA==","tarball":"https://registry.npmjs.org/useful/-/useful-0.10.15.tgz","fileCount":23,"unpackedSize":230486,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDdPfEcBbBeU2z3/pfhkChDMc6kMC3pDD8NAj6tZF1CAQIgFNaTi2QDvGQm8FxD3MoYA4YVzYl3gdWmoX43XSNtdBM="}]},"_npmUser":{"name":"romansky","email":"roman.land@gmail.com"},"directories":{},"maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/useful_0.10.15_1755587533433_0.5472930109630554"},"_hasShrinkwrap":false}},"time":{"created":"2012-09-09T15:36:36.992Z","modified":"2025-08-19T07:12:13.813Z","0.0.1":"2012-09-09T15:36:39.042Z","0.0.2":"2012-09-09T15:42:17.879Z","0.0.3":"2012-09-10T17:40:39.586Z","0.0.4":"2012-09-11T15:50:37.962Z","0.0.5":"2012-09-19T17:22:58.518Z","0.0.6":"2012-10-09T08:13:00.988Z","0.5.0":"2023-07-27T07:57:31.580Z","0.5.1":"2023-07-27T08:07:03.876Z","0.6.0":"2023-10-19T17:13:35.092Z","0.6.1":"2023-10-23T10:51:39.008Z","0.6.2":"2023-10-23T11:48:52.607Z","0.7.0":"2023-10-23T20:44:50.514Z","0.7.1":"2023-10-23T20:50:31.592Z","0.7.2":"2023-10-24T07:36:28.473Z","0.7.3":"2023-10-24T07:44:17.639Z","0.7.4":"2023-10-24T09:09:58.916Z","0.7.5":"2023-10-24T09:15:20.029Z","0.7.6":"2023-10-24T09:53:18.541Z","0.7.7":"2023-10-24T10:16:16.077Z","0.7.8":"2023-10-25T11:32:59.112Z","0.7.9":"2023-10-31T11:00:34.806Z","0.7.10":"2023-11-26T09:40:12.841Z","0.7.11":"2023-12-03T14:50:07.094Z","0.7.12":"2023-12-09T11:48:25.504Z","0.7.13":"2023-12-26T14:01:37.840Z","0.7.14":"2023-12-26T14:01:44.246Z","0.7.15":"2023-12-27T12:08:15.025Z","0.7.16":"2023-12-30T13:32:12.314Z","0.7.17":"2024-01-29T09:49:42.025Z","0.7.18":"2024-02-19T08:06:34.079Z","0.7.19":"2024-03-21T13:41:32.076Z","0.7.20":"2024-03-21T13:53:22.841Z","0.7.21":"2024-04-16T18:49:30.804Z","0.7.22":"2024-07-31T06:09:31.099Z","0.7.23":"2024-07-31T07:57:42.980Z","0.7.24":"2024-08-03T11:08:06.324Z","0.8.4":"2024-08-04T15:24:42.681Z","0.9.0":"2024-08-06T10:12:09.954Z","0.9.2":"2024-08-06T10:43:22.523Z","0.9.3":"2024-09-29T13:25:04.504Z","0.9.4":"2024-11-20T13:54:43.799Z","0.9.5":"2024-11-27T15:36:21.023Z","0.9.6":"2024-11-27T15:43:23.646Z","0.9.7":"2024-11-27T15:47:23.640Z","0.9.8":"2024-12-03T08:18:38.579Z","0.9.9":"2024-12-03T08:22:16.339Z","0.9.10":"2024-12-03T13:37:39.202Z","0.9.12":"2024-12-04T11:22:31.569Z","0.9.13":"2024-12-04T11:26:47.354Z","0.9.14":"2024-12-26T09:44:12.423Z","0.9.15":"2024-12-26T14:12:19.833Z","0.9.17":"2024-12-26T14:36:31.628Z","0.9.18":"2025-01-15T09:31:51.088Z","0.9.19":"2025-01-29T09:02:19.695Z","0.9.20":"2025-01-29T09:39:24.335Z","0.10.0":"2025-06-04T06:37:50.349Z","0.10.2":"2025-06-04T06:41:55.474Z","0.10.3":"2025-06-04T06:51:11.281Z","0.10.4":"2025-06-04T11:47:41.080Z","0.10.5":"2025-06-04T12:12:26.062Z","0.10.6":"2025-06-16T09:59:07.622Z","0.10.7":"2025-07-15T08:45:15.161Z","0.10.8":"2025-07-15T08:51:11.853Z","0.10.9":"2025-08-07T07:05:20.561Z","0.10.10":"2025-08-07T07:07:52.688Z","0.10.11":"2025-08-10T06:41:04.906Z","0.10.12":"2025-08-14T08:57:52.808Z","0.10.13":"2025-08-14T09:03:06.749Z","0.10.14":"2025-08-19T07:09:10.149Z","0.10.15":"2025-08-19T07:12:13.632Z"},"author":{"name":"Roman Landenband"},"license":"MIT","repository":{"type":"git","url":"git@github.com:pth-ai/useful.git"},"description":"a collection of robust utilities that make your development smoother and more efficient","maintainers":[{"name":"romansky","email":"roman.land@gmail.com"}],"readme":"# 🛠️ `useful` - A Collection of Handy TypeScript Utilities\n\n![npm](https://img.shields.io/npm/v/useful)\n![license](https://img.shields.io/npm/l/useful)\n![downloads](https://img.shields.io/npm/dw/useful)\n\nEnhance your TypeScript experience with `useful` - a collection of robust utilities that make your development smoother and more efficient.\n\n## 🌟 Features\n\n- Strongly-typed utilities designed specific1ally for TypeScript.\n- Comprehensive documentation for each utility.\n- Built with best practices in mind.\n- Continuously updated and maintained.\n\n## 📦 Installation\n\nUsing npm:\n\n```bash\nnpm install useful\n```\n\nOr with yarn:\n\n```bash\nyarn add useful\n```\n\n## 🚀 Utilities\n\n- [Switcher](#-Switcher---pattern-matching-and-exhaustive-type-checking-made-easy)\n- [immutableUtils](#-immutableutils---tools-for-immutable-and-mutable-operations)\n\n## 🛠️ `Switcher` - Pattern matching and exhaustive type checking made easy\n\n### 📌 Features:\n\n- **Compile-time Safety**: Ensures that all possible types in a disjoint union are handled, providing strict type checks to eliminate runtime errors.\n\n- **Versatile Type Switching**:\n    - Easily handle cases based on the `type` property directly using strings.\n    - Use custom type guards for complex type-checking scenarios.\n    - Support for predicates to define custom conditions for case handling.\n\n- **Exhaustive Type Checks**: With the `.checkExhaustive()` method, the utility ensures that every possible type in a disjoint union is addressed, preventing potential unhandled cases.\n\n- **Optimized for Disjoint Union Types**: Designed specifically to handle pattern matching for disjoint union types, making it ideal for scenarios where you have distinct type branches.\n\n### 🧪 Usage:\n\n#### Basic Type Matching with Exhaustive Checks\n\nFor simple disjoint union types, the `Switcher` utility offers a straightforward way to handle different variants based on the `type` property. The `.checkExhaustive()` method ensures that every possible type in the union is addressed, offering compile-time safety against unhandled cases.\n\n```typescript\nimport {Switcher} from 'useful';\n\nconst builder = new Switcher<{ type: 'foo', fooValue: number } | { type: 'bar', barValue: number }>()\n    .when('foo', _ => 'handled foo ' + _.fooValue)\n    .when('bar', _ => 'handled bar ' + _.barValue)\n    .checkExhaustive(); // will fail to compile if not all options are handled \n\nconsole.log(builder.exec({type: 'foo', fooValue: 543}));  // Outputs: \"handled foo 543\"\nconsole.log(builder.exec({type: 'bar', barValue: 123}));  // Outputs: \"handled bar 123\"\n```\n\nIn this example, we define two distinct types within our union, `'foo'` and `'bar'`. The utility provides a clean and type-safe way to handle each variant, ensuring at compile-time that all types are covered.\n\n🚫 Note: `Switcher` is optimized for disjoint union types like `{ type: 'foo' } | { type: 'bar' }`. Single object types with union properties, e.g., `{ type: 'foo' | 'bar' }`, are not supported. \n\n## 🛠️ `immutableUtils` - Tools for Immutable and Mutable Operations\n\nThe `immutableUtils` module provides a set of utilities to work with immutable and mutable data structures in TypeScript. Handle, convert, and manipulate immutable and mutable data with ease.\n\n### 📌 Features:\n\n- Convert between immutable and mutable objects.\n- Perform operations on immutable data structures, returning new immutable structures.\n- Type-safe operations ensuring data integrity.\n\n### 🧪 Usage:\n\n#### Convert between Mutable and Immutable\n\n```typescript\nimport {Immutable, Mutable, asImmutable, asMutable} from 'useful/immutableUtils';\n\nconst data: Mutable<{name: string}> = {name: 'John'};\nconst immutableData: Immutable<typeof data> = asImmutable(data);\nconst mutableDataAgain: Mutable<typeof immutableData> = asMutable(immutableData);\n```\n\n#### Edit an Immutable Object\n\nUsing the `editImmutable` function, you can apply modifications to an immutable object and get a new immutable object:\n\n```typescript\nimport {editImmutable} from 'useful/immutableUtils';\n\nconst immutableObj: Immutable<{count: number}> = {count: 0};\nconst updatedImmutableObj = editImmutable(immutableObj, editableObj => {\n    editableObj.count += 1;\n});\n```\n\n#### Work with ReadonlyMap and ReadonlySet\n\nThe `immutableUtils` also provides handy methods to work with `ReadonlyMap` and `ReadonlySet`, allowing you to perform operations while maintaining immutability.\n\n```typescript\nimport {toReadOnly, mapSet, mapDelete, toReadOnlySet, setAdd, setDelete} from 'useful/immutableUtils';\n\nconst roMap: ReadonlyMap<string, number> = toReadOnly(new Map().set('one', 1));\nconst updatedRoMap = mapSet(roMap, 'two', 2);\n\nconst roSet: ReadonlySet<number> = toReadOnlySet(new Set([1, 2, 3]));\nconst updatedRoSet = setAdd(roSet, 4);\n```\n\nFor detailed information and more utilities, check the `/docs/immutableUtils.md` file.\n\n\n### Other Utilities\n\n- Coming soon!\n\n## 📖 Documentation\n\nDetailed documentation for each utility can be found in the `/docs` directory. Some key highlights:\n\n- **Switcher**: An exhaustive type checker and pattern matcher. Ideal for disjoint union types. [Read more](/docs/Switcher.md).\n- **immutableUtils**: The `immutableUtils` module provides a robust set of utilities to handle both immutable and mutable data structures in TypeScript, making it easier to perform operations while maintaining data integrity.\n  [Read more](/docs/immutableUtils.md).\n\n(Continue with other utilities as they get added.)\n\n## 🌐 Contributing\n\nContributions are always welcome! Please read our [contributing guide](CONTRIBUTING.md) to get started.\n\n1. Fork the repository.\n2. Create a new feature branch.\n3. Make your changes.\n4. Submit a pull request!\n\n## 📝 License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.\n","readmeFilename":"README.md"}