{"_id":"@alttiri/util-js","_rev":"24-8a7173b8f91ed8af12d04f96e5e01262","name":"@alttiri/util-js","dist-tags":{"latest":"1.19.5-20251118"},"versions":{"1.3.0":{"name":"@alttiri/util-js","version":"1.3.0","keywords":["sleep","setImmediate"],"license":"MIT","_id":"@alttiri/util-js@1.3.0","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"b353b13b6a96a0b337a8ce36f8e8d15c80a5d8ad","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.3.0.tgz","fileCount":5,"integrity":"sha512-aXIDI5wU0cKd4mdV2l4qQtPvtNYWvtR9fhSO4bbvFNroYk7ROS39n/ys7EujPNqUTLrM6WKFAMkN0a80ieJI+Q==","signatures":[{"sig":"MEYCIQDk83emjd7Urrbc8+8vD9FdqWsLNRXfJBvFuSUI6reODwIhAK5mc4UdotrX4+uDNyecL/Hv+v1WeeC6qHsm3xhprbSx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxZo3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpeaRAAga+RHe0zUUFVCGYJ1odQi4ZyzRfOBaCIZyAvvNF5SNgfZtB3\r\n/xljpUjt7j+wXUHAeOYmAVZUvFmGuPoPqPgnq5vmvq+pYrGcpJnWw7CGw7M4\r\n7OaWKRoay40HA6WGGcupJ2Br4QqEQgQvcHfblOjKEpRv2I76hCfndIGXs34h\r\njfkvnVFOMG7Co7rjahoWPVAHK5ojg14dZnEFN+3CLLTp+CAlm+Ni2atI6WlP\r\nI50tOa/nT+hfe2kbOwUWsADymAau6QRYq3/FrCJQejnN20xTvwRNQOuTuKyM\r\nGSCm3mFHmpfmBHb58PGWAjkA70qAebXb5VzmiEm+CBtNindx74QOzgHj85cU\r\nJXa4I8JyHmGVt7hNQR2r9O30Wx/tqlNUGH1qCkAs+iC0TLzaVWuOmdFPxn8Y\r\nDZnjcK7j1hNN1amSh/gXu+/nNr0NKNEPWBHeAGEyKwb+bLSUloPvv1YWIrJz\r\nDLROWZrCK9/Hp+SEqomo09H1y3tET5nlka+0FnYsgI/9x5MyWUnaDgvRRxcT\r\npMXwFqwYghrXiXaVpADEHKHzd14o9/48bLPh3XlFAOygOBi780WpUwysR78B\r\nieVqBqjoj9k4uVShlBExnQYIpI6NfyPjnnbiW/V/gzY/zIzrWaTNViO/M3fl\r\nrahtMvsExijJ9QcwMACFWaEZPTVQWMTRUNY=\r\n=wsQv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","gitHead":"63957a9ece1e1dd6d2816a4785b783bd51aa9671","scripts":{"#":"","##":"","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","unpublish-npm":"npm unpublish @alttiri/util-js@1.2.3 --registry=https://registry.npmjs.org"},"_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"8.19.2","description":"Sleep function with setImmediate","directories":{},"_nodeVersion":"18.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/util-js_1.3.0_1673894454812_0.5427097676581303","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"@alttiri/util-js","version":"1.7.0","keywords":["sleep","setImmediate","format","date","size"],"license":"MIT","_id":"@alttiri/util-js@1.7.0","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"71bad0fba6545f4610946311c25bdac316717ca7","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.7.0.tgz","fileCount":11,"integrity":"sha512-4JvPPA5TJWBEJynh+esk3elFojAlq2VucmUMTdLs2zINgKTQHEBvffZfGQzfCi7qgOiquJLILbzcVaz08qzqcw==","signatures":[{"sig":"MEYCIQCUwP9Au4ckQ6wS9pgVtg2f+b5qgzCsipD1AtqiW/D2nQIhAJVj4fA3Iqhm+NjaYFr65dKlE/YAi2H2b/SFsyFQKb1r","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkFfZtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoVeQ/+KO+ZI7ZHrsOYqIez6EX0iA9LtDpIr0zdjvoG8AtO58m5oeck\r\nXNs25tJtBlHZxc8gLL1NInxyp5MmwZI7+PD/p42lNmlp/bkmDUNBL0MRs1Mt\r\nU+M+1u9m/s82fz2D7q+EWkIvcULGfULLjatOolXcBPUH9GFofWWGGURiKsnd\r\npzYu0CwfYMdW2uvm7diNA2k/kKfJK2HJseorhaaI0uYCIpbVtEg8IzAWlYia\r\nw94VhggSxbNU2SQNF9EmolxVN4hQyrZY1wxKjG1+whz4rXuoTC4z8k5F3ali\r\n27qfJCzDJlTyeBgOskUSX2Hbm8yJPKAzQ5z9VKk/FlniNZZZdjaBSFq09t3J\r\nVReWBucWjIjAgkhHEMQi3r9slBuWMTGTYyglhY0l80PMFYmXt83MFE9gcoaq\r\npDwKYIdeCzhUJULL8Gs2K6xmOKoG65meAWUQmZRMneUgYXXtfYIjbB2fn6T4\r\n3w2Z0XG3AC0Q5UlpIRoAEDvVvJTprYpN/cvIjKwhUZU9Vi0In2hqxsmm+IW+\r\noSuAsONz4jL+6fIW9iwsvYe3Wla/aA7RJsZCbeGc7/y0CCDisErAfBYhBtjz\r\n7u5EentYPWLdF4VjTxfUMtocZEbJcxQB7wgomKVz++2uTAnNrzSpdMcK41Ab\r\nuXC83NGUEqDdKcbKO91CadRCl1A/tiC7WY8=\r\n=sBAn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index","type":"module","gitHead":"0dc65dca580fd1cb29521e200d781dc3c45bbf47","scripts":{"#":"","##":"","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","unpublish-npm":"npm unpublish @alttiri/util-js@1.2.3 --registry=https://registry.npmjs.org"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"8.19.2","description":"Sleep function with setImmediate","directories":{},"_nodeVersion":"18.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@alttiri/util-node-js":"1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.7.0_1679160941407_0.808626358317829","host":"s3://npm-registry-packages"}},"1.8.1":{"name":"@alttiri/util-js","version":"1.8.1","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.8.1","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"035d230c4b3be3c237997865671f1153b66a67bb","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.8.1.tgz","fileCount":15,"integrity":"sha512-JwLD1MTnaHaWU59Mcchii/BBQqeLFSje3iY8cWNXy0sv/xF6fyt/tXYLW5wOX2faJFLNX9Xf1RVcVF2Q678QmA==","signatures":[{"sig":"MEYCIQCISDGSbhtGZMWQr8FherdBz9sWwNp54n7ol+hnwT/CcQIhANYghfuVbHYpWMBfKQaKYYy9+edWno5pEd7nEsM2eIz/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12665},"main":"index","type":"module","gitHead":"c7a6384a290ebaae15e17b030bde1d059a7089b0","scripts":{"#":"","##":"","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","unpublish-npm":"npm unpublish @alttiri/util-js@1.2.3 --registry=https://registry.npmjs.org"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"9.5.1","description":"Some util functions for personal use","directories":{},"_nodeVersion":"18.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@alttiri/util-node-js":"1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.8.1_1685977254026_0.8263003514059262","host":"s3://npm-registry-packages"}},"1.8.4":{"name":"@alttiri/util-js","version":"1.8.4","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.8.4","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"3d7f8faaea6f5fbb65108c0612f5079cf4f32536","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.8.4.tgz","fileCount":15,"integrity":"sha512-Pv2az0Ho5K/nMtX0HN7D77J09sDmoYYT8LEZG5BuecP5nc7ItynHWJzt7VvC8ExuNGWChyrs6yFYGYzUnc1lGA==","signatures":[{"sig":"MEYCIQDAlo/oYFVrAF7+yeaZn8ycT1C76bwdkJBDsPQZYg4hfwIhAKy1+bXE4EUGxCYLV04xS1uM2ImdALK1JQzQhbCW4AiI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12669},"main":"index.js","type":"module","gitHead":"489fe26e022d4154371f88e4483a3491820b8ae5","scripts":{"#":"","##":"","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"9.5.1","description":"Some util functions for personal use","directories":{},"_nodeVersion":"18.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@alttiri/util-node-js":"1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.8.4_1686592936844_0.59223986791763","host":"s3://npm-registry-packages"}},"1.9.0":{"name":"@alttiri/util-js","version":"1.9.0","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.9.0","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"ce31707c2177296b8e6abf0730d859c6dc49f978","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.9.0.tgz","fileCount":20,"integrity":"sha512-miv7bQplr70DmYn28GFVvBNbmiik0XCo5y+2IF3ZFYeiAEdPwtoK7Apa4UAvl8D6OwBSK++BPZm80LG3g4TH4Q==","signatures":[{"sig":"MEUCIBw01AAWgiZAycwknkweJWcmSRw1cYrNHRFg9xDOepTJAiEApKbqpb71Z6ZFONRCWLinb1i3ESAvCy2MdhxB9EC8Pto=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15810},"main":"index.js","type":"module","gitHead":"7ab0a7e4dec7e987de7ccd94305c53906339a9a3","scripts":{"#":"","##":"","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"9.5.1","description":"Some util functions for personal use","directories":{},"_nodeVersion":"18.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@alttiri/util-node-js":"1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.9.0_1688207420325_0.5097591424231405","host":"s3://npm-registry-packages"}},"1.9.1":{"name":"@alttiri/util-js","version":"1.9.1","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.9.1","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"0db8c0d44a4561b3bbdb9d7075b691167d93676a","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.9.1.tgz","fileCount":22,"integrity":"sha512-HU8kqGPRguEZu2sriNYWfAGS9iw2pPD2Ov9iMYDdZDiWmxCTpxxGLoei7g3Ur45YCrfwqZFfbqPe0YeF3qmfTA==","signatures":[{"sig":"MEQCICIVjbKCLFyJivo2CEJw1DG2dWc6e44qFy04d3L5Vag8AiBR8xdLQCM6Nnva3WmLOGLnXhFp4Nhs9fg3vWPSrSx7FA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15991},"main":"index.js","type":"module","gitHead":"ba0f16e15087a3ed43cddac265a514da921d41dc","scripts":{"#":"","##":"","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"9.5.1","description":"Some util functions for personal use","directories":{},"_nodeVersion":"18.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@alttiri/util-node-js":"1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.9.1_1688296479673_0.020494311701928503","host":"s3://npm-registry-packages"}},"1.9.2-20240524":{"name":"@alttiri/util-js","version":"1.9.2-20240524","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.9.2-20240524","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"65076ef976bbf2b01f7101cc976183c73efe1c7e","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.9.2-20240524.tgz","fileCount":22,"integrity":"sha512-lLQK8lT6N+LjzV8sjl8RNRNbzAppE6T90I4D/H8dHHE2ZpMwGbk7+C5bhRkBTTN96GACZpqxns3Y928jm+bdiw==","signatures":[{"sig":"MEUCIQChbP3qWGDZbfNQOpnBlxXLH3tcVrUPmXAvMFVGPVIa7QIgXA1mFSVncryMMalbKGmACCyOoW6+tJ/Yc48Eim/qQ/s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17757},"main":"index.js","type":"module","gitHead":"d28244f92687b9cd68ff1f085f3ac19c6c840039","scripts":{"#":"","##":"","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.5.0","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.12.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@alttiri/util-node-js":"1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.9.2-20240524_1716581418821_0.29476077354178454","host":"s3://npm-registry-packages"}},"1.10.0-20240531":{"name":"@alttiri/util-js","version":"1.10.0-20240531","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.10.0-20240531","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"98722acdd30e0026d69defa9f05be5467dc8ab6b","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.10.0-20240531.tgz","fileCount":23,"integrity":"sha512-/X5pFwkimcHbyV7hyfW7YivsR+NFlpRlRMZ1qhL4fS8NKonnf/zQrl/Ty+wtbAd3vt6yNbtkN1AG5MxBcXPkFg==","signatures":[{"sig":"MEQCIHRbex8HU8jVh9bK7iJ5Q0AX1gDcvp73lRRFb2WJ7EwRAiABuVs433FG/Y74yJz6ZcnDFZZDYzOcMCZ5zOVAuxHRXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19466},"main":"index.js","type":"module","gitHead":"8582216dd34502edefc2e8f9342d840f661d064f","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","test-publish":"npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.5.2","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.4.5","@alttiri/util-node-js":"2.0.10-20240530"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.10.0-20240531_1717110961248_0.6891426002200454","host":"s3://npm-registry-packages"}},"1.10.1-20240531":{"name":"@alttiri/util-js","version":"1.10.1-20240531","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.10.1-20240531","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"158b96251e18fbcdf49da900d268479a7aa6e6c2","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.10.1-20240531.tgz","fileCount":23,"integrity":"sha512-FNXnRWwcsGQuJZrKsWhCw6zScNVpCrqv89WpOvgsucDjrfi/eTjUsAoMiAP19L3yPXTppXJlydJCINYi/3lBbQ==","signatures":[{"sig":"MEUCIAeDaZ09r/ch2NS2RhlD+R79nQ+JclcnXRbsEWp6WplYAiEAzbck65CKlkt/bREqlkR/5lT89XQo08m1jGp1Y8x7dXQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19481},"main":"index.js","type":"module","gitHead":"47a8216e52bef3ab93d62230f0f898d16a09933e","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","test-publish":"npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.5.2","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.4.5","@alttiri/util-node-js":"2.0.10-20240530"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.10.1-20240531_1717114914810_0.3567576443826572","host":"s3://npm-registry-packages"}},"1.10.2-20240603":{"name":"@alttiri/util-js","version":"1.10.2-20240603","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.10.2-20240603","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"b22785bea5efca50371e80dc9693f7f84d190bfb","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.10.2-20240603.tgz","fileCount":23,"integrity":"sha512-mUhL2nvcRJajDbjaZVn090PA27BgMq6Qqy9OW6IFOyhiSsPV/BWplG/rOfbiORnr84TTd0FQkJm8Y/7PC1Ot1Q==","signatures":[{"sig":"MEYCIQDTQo4weWPlR+T9hR5hnFMKb6RNGetgn9BPJY6LOYr+jwIhAJA4ALWd0JqsL7qo2c8YS3+1DlcdkCPQCy7boHSW+SGD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19639},"main":"index.js","type":"module","gitHead":"b97150f7877af101b0bef887ebee1cebaea188eb","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","test-publish":"npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.5.2","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.4.5","@alttiri/util-node-js":"2.0.10-20240530"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.10.2-20240603_1717376441689_0.29975095475882463","host":"s3://npm-registry-packages"}},"1.11.0-20240712":{"name":"@alttiri/util-js","version":"1.11.0-20240712","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.11.0-20240712","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"16b0a1329f610526ca2cb900ffd0b4d86ada133a","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.11.0-20240712.tgz","fileCount":25,"integrity":"sha512-+zPSeK01fQLtvUesuO1Mj5MnOKGUa939py6C+XT1ec8QeWw9bjJPh/F3mntolcIMdp40qyELTExnnnBjxmYRTg==","signatures":[{"sig":"MEUCIQC1oh8OLzh5xU7yG0xaB8iVHzS8qLyTx1tVSp2fYRtTtQIgFtcfbZbdKhrYtqhLrLwZkLP9gVasuc3EADajpft2xmw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22936},"main":"index.js","type":"module","gitHead":"cd5f264b3063825520946b0dd1be73d72e92b1e1","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","test-publish":"npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.5.2","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.5.2","@alttiri/util-node-js":"2.0.16-20240606"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.11.0-20240712_1720781081733_0.9740352111291573","host":"s3://npm-registry-packages"}},"1.13.0-20240713":{"name":"@alttiri/util-js","version":"1.13.0-20240713","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.13.0-20240713","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"410bb81728752ce39ade4c945aa0c198b0ca25d8","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.13.0-20240713.tgz","fileCount":25,"integrity":"sha512-O/QEdx0Aj214b4O3jqqLpijqLiPTVCtfSP3FbJMy8nVUGikN33FUss72r1rzub8DPbu/uXu+2E72n2y1S+9U6w==","signatures":[{"sig":"MEYCIQCwxNbWM9WFobaCflf/0KBb1a4dqeNAJ6ja3ZtbQ8TMPAIhAOH5LD/WUSOkgUw8v3NhnlmZgRP2LcyY1BYMcJCiAUl8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24426},"main":"index.js","type":"module","gitHead":"9f90d1d9e3a570f233ebb9a7f1bcda028819c2f8","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"npm publish --registry=https://npm.pkg.github.com","publish-npm":"npm publish --registry=https://registry.npmjs.org","test-publish":"npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.5.2","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.5.2","@alttiri/util-node-js":"2.0.16-20240606"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.13.0-20240713_1720906439219_0.5659558408513481","host":"s3://npm-registry-packages"}},"1.13.1-20240725":{"name":"@alttiri/util-js","version":"1.13.1-20240725","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.13.1-20240725","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"1a0286ddb211b31300ca90b0660c7098dca6e2dc","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.13.1-20240725.tgz","fileCount":25,"integrity":"sha512-DjNs8bhXDPlsfJtPFvcRTixOSnfNIiSuXKsgrWQ1ttSSPT+8hQ6m+b8k3nlFzql7UD0aOMobXr28edkS4ZjZRg==","signatures":[{"sig":"MEUCIBy8UJfrpfYtPg1QCphAWAOlPsGDX7vnBsVjyujehskSAiEAsvzWe62yYuxH53y/rjbejZ/xAhykPDpCUV6lxBaHPL4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24512},"main":"index.js","type":"module","gitHead":"6fd499e8be1c2f20b5338cf6031133bdc3133519","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"tsc --build && npm publish --registry=https://npm.pkg.github.com","publish-npm":"tsc --build && npm publish --registry=https://registry.npmjs.org","test-publish":"tsc --build && npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.7.0","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.15.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.5.4","@alttiri/util-node-js":"2.0.16-20240606"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.13.1-20240725_1721898295047_0.17792806385766746","host":"s3://npm-registry-packages"}},"1.14.0-20240821":{"name":"@alttiri/util-js","version":"1.14.0-20240821","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.14.0-20240821","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"047adb45674444885ff3a8328e48fc9f4819536a","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.14.0-20240821.tgz","fileCount":25,"integrity":"sha512-wWjtRnW77GBVazU/l6mRxvZOnZKPYOXGl5WZ3jI1bB7WhQFyDd9YAiEp7uA+KozGIVBSYKItKeWF2UvNV/w0Jg==","signatures":[{"sig":"MEUCIQDXzJMweZ9snLxt/vQXHj7cq8Q8xO2tvwpUmo3W9BdMQQIgX/d3mw9QKucLh5fF74vigGwDhSPokX5MRd/P2lCvwbM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29779},"main":"index.js","type":"module","gitHead":"b2dcbff27e7338cae159dc3c637923eb29b47732","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"tsc --build && npm publish --registry=https://npm.pkg.github.com","publish-npm":"tsc --build && npm publish --registry=https://registry.npmjs.org","test-publish":"tsc --build && npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.7.0","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.15.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.5.4","@alttiri/util-node-js":"2.1.1-20240725"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.14.0-20240821_1724249370663_0.9701410905566052","host":"s3://npm-registry-packages"}},"1.14.1-20240908":{"name":"@alttiri/util-js","version":"1.14.1-20240908","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.14.1-20240908","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"d4c3c01abca8a552e012bde80b52e73ffba59638","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.14.1-20240908.tgz","fileCount":25,"integrity":"sha512-U5PP5IC0BczaLKAeuRMgnub6Seklb8MfaRNbc8a8oPjtyzGmEjqiNI1soSfGAtOzX9omHMn46qzTBekF/yeoFA==","signatures":[{"sig":"MEYCIQDmXVnJhaVUG00MpF46sD5X9Co6eu+uVLNpc5/9c7SkYgIhAMj6JvFWUuJWEJsiskv76IN+9gNslAkbY/GY7E/ODMLI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31158},"main":"index.js","type":"module","gitHead":"d03de189fb7919ef1c52c11825e7e2222eb2d91e","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"tsc --build && npm publish --registry=https://npm.pkg.github.com","publish-npm":"tsc --build && npm publish --registry=https://registry.npmjs.org","test-publish":"tsc --build && npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.7.0","description":"Some util functions for personal use","directories":{},"_nodeVersion":"20.15.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.5.4","@alttiri/util-node-js":"2.2.0-20240821"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.14.1-20240908_1725814053142_0.6279052598299812","host":"s3://npm-registry-packages"}},"1.19.3-20250629":{"name":"@alttiri/util-js","version":"1.19.3-20250629","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.19.3-20250629","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"43b9be924768245520cbc39637f20d2e98943d75","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.19.3-20250629.tgz","fileCount":25,"integrity":"sha512-klIV3y+vAzJ9yaSjmsDTJ+02Pcwh02I2wrCBSnVUBiJj6ubwpDro7imgFGskN8+Lkm4iqWhhIrwUKGwGqr6JqQ==","signatures":[{"sig":"MEUCIQD8i06T+xRYnlAXMJ9YkXEmo0y9Y9lZufq+A3h2n9/52gIgVBSFR+cSukk6Dl1jxqM6R7bEWGPwjocxkr/EhOb4jRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47050},"main":"index.js","type":"module","gitHead":"0a2f7f1cda145e745673fec404e631a15a1a1d9e","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"tsc --build && npm publish --registry=https://npm.pkg.github.com","publish-npm":"tsc --build && npm publish --registry=https://registry.npmjs.org","test-publish":"tsc --build && npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","actor":{"name":"alttiri","type":"user","email":"AlttiRi@pm.me"},"email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.9.2","description":"Some util functions for personal use","directories":{},"_nodeVersion":"22.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.5.4","@alttiri/util-node-js":"2.2.0-20240821"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.19.3-20250629_1751197545665_0.8939499754387095","host":"s3://npm-registry-packages-npm-production"}},"1.19.4-20251108":{"name":"@alttiri/util-js","version":"1.19.4-20251108","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","_id":"@alttiri/util-js@1.19.4-20251108","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"homepage":"https://github.com/AlttiRi/util-js","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"dist":{"shasum":"0b20cbde117883a964de0441fec758b10e202deb","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.19.4-20251108.tgz","fileCount":25,"integrity":"sha512-aspzHduHL3X0+bc1JPj2QCyzS3dZm/rvOKeQhit546BeqnWxJYfblSc2DyN/XE7jJE1NkHmZsza733kXWyfALw==","signatures":[{"sig":"MEYCIQDmEiBrH7yN+a4zlaEMoLJDqIsyGbgYb0e5NZ0EOPczBwIhAPsKW98jBneHmQa/MerhpWpwMHvQUfTtC3nlamoM/iwu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47050},"main":"index.js","type":"module","gitHead":"87a78b1f97f499b258456f386b556c3da8d433d7","scripts":{"#":"","##":"","###":"","clean-ts":"tsc --build --clean","login-ghp":"npm login --registry=https://npm.pkg.github.com","login-npm":"npm login --registry=https://registry.npmjs.org","compile-ts":"tsc --build","publish-ghp":"tsc --build && npm publish --registry=https://npm.pkg.github.com","publish-npm":"tsc --build && npm publish --registry=https://registry.npmjs.org","test-publish":"tsc --build && npm pack","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","compile-ts-watch":"tsc --build --watch"},"typings":"index.d.ts","_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"repository":{"url":"git+https://github.com/alttiri/util-js.git","type":"git"},"_npmVersion":"10.9.3","description":"Some util functions for personal use","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.5.4","@alttiri/util-node-js":"2.2.0-20240821"},"_npmOperationalInternal":{"tmp":"tmp/util-js_1.19.4-20251108_1762626938827_0.7235042882893201","host":"s3://npm-registry-packages-npm-production"}},"1.19.5-20251118":{"name":"@alttiri/util-js","version":"1.19.5-20251118","description":"Some util functions for personal use","homepage":"https://github.com/AlttiRi/util-js","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"license":"MIT","type":"module","main":"index.js","typings":"index.d.ts","repository":{"type":"git","url":"git+https://github.com/alttiri/util-js.git"},"publishConfig":{"access":"public"},"scripts":{"compile-ts":"tsc --build","compile-ts-watch":"tsc --build --watch","clean-ts":"tsc --build --clean","#":"","test-publish":"tsc --build && npm pack","publish-npm":"tsc --build && npm publish --registry=https://registry.npmjs.org","publish-ghp":"tsc --build && npm publish --registry=https://npm.pkg.github.com","##":"","unpublish-npm":"npm unpublish @alttiri/util-js@1.8.3 --registry=https://registry.npmjs.org","###":"","login-npm":"npm login --registry=https://registry.npmjs.org","login-ghp":"npm login --registry=https://npm.pkg.github.com"},"devDependencies":{"@alttiri/util-node-js":"2.2.0-20240821","typescript":"5.5.4"},"_id":"@alttiri/util-js@1.19.5-20251118","gitHead":"6c9cd96d61c6fdd74c530e774e38ea3aee4c46c5","bugs":{"url":"https://github.com/alttiri/util-js/issues"},"_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-EL2HjQ4ItRtdtbWfNWhD5IzO3VlLN2GNRDPbe6J3OuR0JwQuKb8NyEXu5P7HU5aKCIsYh2GLSFrwfrN5ZwwkLg==","shasum":"4c512e4e0445a981509e61479aeb2340c5ad52c4","tarball":"https://registry.npmjs.org/@alttiri/util-js/-/util-js-1.19.5-20251118.tgz","fileCount":25,"unpackedSize":46887,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFoI0R887YSI4huRaYGuFoVKkOVWJScuymBELVJXHMRdAiEAy+7tP+RXcUoyyNZ1QbzNqldvtiLFLY8TT3ypHd68Msc="}]},"_npmUser":{"name":"alttiri","email":"AlttiRi@pm.me"},"directories":{},"maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/util-js_1.19.5-20251118_1763489496664_0.25764464625167904"},"_hasShrinkwrap":false}},"time":{"created":"2023-01-16T18:20:24.601Z","modified":"2025-11-18T18:11:37.088Z","1.2.1":"2023-01-16T18:20:24.830Z","1.3.0":"2023-01-16T18:40:54.975Z","1.6.3":"2023-03-18T16:55:10.338Z","1.7.0":"2023-03-18T17:35:41.574Z","1.8.1":"2023-06-05T15:00:54.154Z","1.8.3":"2023-06-12T17:31:46.388Z","1.8.4":"2023-06-12T18:02:17.068Z","1.9.0":"2023-07-01T10:30:20.573Z","1.9.1":"2023-07-02T11:14:39.830Z","1.9.2-20240524":"2024-05-24T20:10:19.047Z","1.10.0-20240531":"2024-05-30T23:16:01.398Z","1.10.1-20240531":"2024-05-31T00:21:55.005Z","1.10.2-20240603":"2024-06-03T01:00:41.834Z","1.11.0-20240712":"2024-07-12T10:44:41.890Z","1.13.0-20240713":"2024-07-13T21:33:59.384Z","1.13.1-20240725":"2024-07-25T09:04:55.191Z","1.14.0-20240821":"2024-08-21T14:09:30.797Z","1.14.1-20240908":"2024-09-08T16:47:33.350Z","1.19.3-20250629":"2025-06-29T11:45:45.850Z","1.19.4-20251108":"2025-11-08T18:35:39.045Z","1.19.5-20251118":"2025-11-18T18:11:36.873Z"},"bugs":{"url":"https://github.com/alttiri/util-js/issues"},"license":"MIT","homepage":"https://github.com/AlttiRi/util-js","keywords":["sleep","setImmediate","format","date","size","semaphore","isString"],"repository":{"type":"git","url":"git+https://github.com/alttiri/util-js.git"},"description":"Some util functions for personal use","maintainers":[{"name":"alttiri","email":"AlttiRi@pm.me"}],"readme":"# [util-js](https://github.com/AlttiRi/util-js)\r\n\r\nSome JavaScript util functions.\r\n\r\nMostly it's a draft version for personal use.\r\n\r\n## *.d.ts\r\n\r\n```ts\r\n/**\r\n * Formats bytes EXACTLY like Windows File Explorer does.\r\n * Check the file with tests.\r\n * @see bsc--format-size-win-like.t.ts\r\n * @alias bytesToSizeWinLike\r\n * @alias formatSizeWinLike\r\n * @param {number} bytes\r\n * @return {string}\r\n */\r\nexport declare function formatFileSizeWinLike(bytes: number): string;\r\n/**\r\n * Formats bytes mostly like Windows File Explorer does,\r\n * but in some rare cases the result is different.\r\n * The old implementation of `formatFileSizeWinLike`.\r\n * It produces the more accurate result, but not like Windows does.\r\n * See \"inaccurate\" tests.\r\n * @see bsc--format-size-win-like.t.ts\r\n * @param {number} bytes\r\n * @return {string}\r\n */\r\nexport declare function formatFileSize(bytes: number): string;\r\n/**\r\n * @example\r\n * 10.1005859375 -> \"10.1\"\r\n * 9.99902343750 -> \"9.99\"\r\n * 836.966796875 -> \"836\"\r\n * 0.08   -> \"0.08\"\r\n * 0.099  -> \"0.09\"\r\n * 0.0099 -> \"0\"\r\n * @param {number} number\r\n * @return {string}\r\n */\r\nexport declare function toTruncPrecision3(number: number): string;\r\n/**\r\n * Useful for file byte size formatting:\r\n * 34456909 -> 34 456 909\r\n * @alias tripleSizeGroups\r\n * @param {number} num\r\n * @return {string}\r\n * */\r\nexport declare function formatNumber(num: number): string;\r\n/** @deprecated Use `formatFileSizeWinLike` */\r\nexport declare const bytesToSizeWinLike: typeof formatFileSizeWinLike;\r\n/** @deprecated Use `formatFileSizeWinLike` */\r\nexport declare const formatSizeWinLike: typeof formatFileSizeWinLike;\r\n/** @deprecated Use `formatNumber` */\r\nexport declare const tripleSizeGroups: typeof formatNumber;\r\n/**\r\n * \"Sun, 10 Jan 2021 22:22:22 GMT\" -> \"2021.01.10\"\r\n * @param {Date | string | number?} [dateValue]\r\n * @param {boolean} [utc = true]\r\n * @return {string}\r\n */\r\nexport declare function dateToDayDateString(dateValue?: Date | string | number, utc?: boolean): string;\r\n/**\r\n * \"Sun, 10 Jan 2021 22:22:22 GMT\" -> \"2021.01.10 22:22:22Z\"\r\n * @param {Date | string | number} [dateValue]\r\n * @param {boolean?} [utc = true]\r\n * @return {string}\r\n */\r\nexport declare function dateToDayDateTimeString(dateValue?: Date | string | number, utc?: boolean): string;\r\n/**\r\n * \"Sun, 10 Jan 2021 22:22:22 GMT\" -> \"2021.01.10\"\r\n * @param {Date | string | number} [dateValue]\r\n * @return {string}\r\n */\r\nexport declare function localDate(dateValue?: number | string | Date): string;\r\n/**\r\n * \"Sun, 10 Jan 2021 22:22:22 GMT\" -> \"2021.01.10 22:22:22\"\r\n * @param {Date | string | number} [dateValue]\r\n * @return {string}\r\n */\r\nexport declare function localDateTime(dateValue?: number | string | Date): string;\r\n/**\r\n * Formats date. Supports: YY.YYYY.MM.DD HH:mm:SS.\r\n * Default format: \"YYYY.MM.DD\".\r\n * formatDate() -> \"2022.01.07\"\r\n * @param {Date | string | number} [dateValue]\r\n * @param {string}  [pattern = \"YYYY.MM.DD\"]\r\n * @param {boolean} [utc = true]\r\n * @return {string}\r\n */\r\nexport declare function formatDate(dateValue?: Date | string | number, pattern?: string, utc?: boolean): string;\r\n/**\r\n * A classic `debounce` wrap function.\r\n *\r\n * Wraps a function to create a debounced version that delays execution until after a specified time has elapsed since the last call.\r\n * Only the last call within the specified time window is executed.\r\n *\r\n * @param runnable - The function to debounce.\r\n * @param ms - The debounce delay in milliseconds (default: 250).\r\n * @param scope - Optional context to bind the function to (defaults to the caller's context).\r\n * @returns A debounced function that delays execution of the provided function.\r\n * @example\r\n * const logAny = (i: any) => console.log(i);\r\n * const logAnyDebounced = debounce(logAny, 50);\r\n *\r\n * // prints `99` after ~1+ second\r\n * for (let i = 0; i < 100; i++) {\r\n *     logAnyDebounced(i);\r\n *     await sleep(10);\r\n * }\r\n */\r\nexport declare function debounce<A extends any[]>(runnable: (...args: A) => unknown, ms?: number, scope?: any): (...args: A) => void;\r\n/**\r\n * Creates a debounced function that resolves to `false` after a specified delay,\r\n * or `true` if called again before the delay expires.\r\n *\r\n * The function ensures that only the last call within the specified time window resolves to `false`,\r\n * while earlier calls resolve to `true`.\r\n *\r\n * @param ms - The debounce delay in milliseconds (default: 250).\r\n * @returns An async function that returns a Promise resolving to a boolean indicating\r\n * whether the call was debounced (`true`) or not (`false`).\r\n * @example\r\n * const selfDebounced = getSelfDebounced(300);\r\n *\r\n * // prints \"99\" after ~1300 ms\r\n * for (let i = 0; i < 100; i++) {\r\n *     selfDebounced().then((debounced) => {\r\n *         if (debounced) {\r\n *             return;\r\n *         }\r\n *         console.log(i);\r\n *     });\r\n *     await sleep(10);\r\n * }\r\n */\r\nexport declare function getSelfDebounced(ms?: number): () => Promise<boolean>;\r\n/**\r\n * Creates a debounced function that resolves after a specified delay, or rejects if called again before the delay expires.\r\n * The function ensures that only the last call within the specified time window resolves, while earlier calls reject.\r\n *\r\n * @param ms - The debounce delay in milliseconds (default: 250).\r\n * @returns An async function that returns a Promise that either resolves (for the last call) or rejects (for earlier calls).\r\n * @example\r\n * const selfDebouncedReject = getSelfDebouncedReject(300);\r\n *\r\n * // prints \"99\" after ~1300 ms\r\n * for (let i = 0; i < 100; i++) {\r\n *     selfDebouncedReject().then(() => {\r\n *         console.log(i);\r\n *     }).catch(() => {});\r\n *     await sleep(10);\r\n * }\r\n */\r\nexport declare function getSelfDebouncedReject(ms?: number): () => Promise<void>;\r\n/**\r\n * A classic `throttle` wrap function.\r\n *\r\n * Wraps a function to create a throttled version that executes no more than once per specified time interval.\r\n * The first call is executed immediately, and if additional calls occur within the interval,\r\n * the last one is executed after the interval expires.\r\n *\r\n * @param runnable - The function to throttle.\r\n * @param ms - The throttle interval in milliseconds (default: 250).\r\n * @param scope - Optional context to bind the function to (defaults to the caller's context).\r\n * @returns A throttled function that limits execution frequency.\r\n * @example\r\n * const logAny = (i: any) => console.log(i);\r\n * const logAnyThrottled = throttle(logAny, 500);\r\n *\r\n * // prints \"0 31 63 96 99\" (intermediate values like \"31 63 96\" may vary)\r\n * for (let i = 0; i < 100; i++) {\r\n *     logAnyThrottled(i);\r\n *     await sleep(10);\r\n * }\r\n */\r\nexport declare function throttle<A extends any[]>(runnable: (...args: A) => any, ms?: number, scope?: any): (...args: A) => void;\r\n/**\r\n * Creates a throttled function with control methods to execute immediately (`runNow`) or `clear` pending callbacks.\r\n * The throttled function limits execution to once per specified time interval, with an option to run the first call immediately.\r\n *\r\n * @param ms - The throttle interval in milliseconds (default: 250).\r\n * @param runFirstImmediately - Whether to execute the first call immediately (default: true).\r\n * @returns An object containing:\r\n *   - `throttled`: The throttled function that accepts a callback to execute.\r\n *   - `runNow`: A method to execute the last queued callback immediately.\r\n *   - `clear`: A method to cancel any pending callback.\r\n * @example\r\n * const {throttled, runNow, clear} = getThrottle(300, true);\r\n *\r\n * // prints \"0 20 40 60 80 99\"\r\n * for (let i = 0; i < 100; i++) {\r\n *     throttled(() => {\r\n *         console.log(i);\r\n *     });\r\n *     await sleep(10);\r\n * }\r\n * runNow(); // run the last callback without delay\r\n */\r\nexport declare function getThrottle(ms?: number, runFirstImmediately?: boolean): {\r\n  throttled: (callback: Function, runNow?: boolean) => void;\r\n  runNow: (clearDelayed?: boolean) => any;\r\n  clear: () => void;\r\n};\r\n/**\r\n * Sleeps `ms` milliseconds.\r\n * If param is `undefined` it sleeps until the next macro-task.\r\n * Note: With `0` real ms will be `4`+ ms.\r\n * @param {number?} ms\r\n * */\r\nexport declare function sleep(ms?: number): Promise<void>;\r\n/**\r\n * Interruptible `sleep`.\r\n * If was interrupted resolves with the interrupt reason (`signal.reason`).\r\n * @param {number} ms\r\n * @param {AbortSignal} signal\r\n */\r\nexport declare function sleepEx(ms: number, signal: AbortSignal): Promise<void | any>;\r\nexport declare function isString(value: unknown): value is string;\r\nexport declare function isAnyString(value: unknown): value is (string | String);\r\n/**\r\n * Java's `hashCode` like. 32-bits hash.\r\n * Note: `Math.imul(..., 1)` does the same as  `| 0`, with the same speed.\r\n * @example\r\n * hashString(\"Lorem Ipsum\") === -488052133\r\n * hashString(\"Qwerty\") === -1862984904\r\n * hashString(\"A\") === 65\r\n * hashString(\"👾👽💀\") === -2019372252\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nexport declare function hashString(str: string): number;\r\n/**\r\n * Similar to `hashString`, but it always returns a positive number. 31-bits hash.\r\n * @param {string} str\r\n */\r\nexport declare function hashStringPos(str: string): number;\r\nexport type DownloadBlobOpt = {\r\n  /** The URL to be added as a hash in the downloaded blob URL. Useful to keep the original file URL. */\r\n  url?: string;\r\n  /** The delay before `revokeObjectURL`. 5000 by default. */\r\n  timeout?: number;\r\n};\r\nexport declare function downloadBlob(blob: Blob, name: string, url?: string): void;\r\nexport declare function downloadBlob(blob: Blob, name: string, opt: DownloadBlobOpt): void;\r\n```\r\n\r\n## *.d.ts (sync)\r\n\r\n```ts\r\n/**\r\n * Use it when in one place you need to `enqueue()` some `value`, until `close()`.\r\n * In other place you can iterate over this queue in for-await loop.\r\n *\r\n * `enqueue` does not add a value until there is a free space in the queue, you should `await` it.\r\n * (`size` parameter of `constructor`).\r\n *\r\n * Use `close()` after you finished to `enqueue()` data.\r\n */\r\nexport declare class AsyncBufferQueue<T> {\r\n    private values;\r\n    private done;\r\n    private promise;\r\n    private resolve;\r\n    private semaphore;\r\n    constructor(size?: number);\r\n    close(): void;\r\n    enqueue(value: T): Promise<void>;\r\n    [Symbol.asyncIterator](): AsyncGenerator<T>;\r\n}\r\nexport declare class CountLatch {\r\n    private count;\r\n    private promise;\r\n    private resolve;\r\n    /** @param {number} count = 0 */\r\n    constructor(count?: number);\r\n    countDown(): void;\r\n    countUp(): void;\r\n    /** Makes this object \"Thenable\" */\r\n    then(resolve: VoidFunc, reject: VoidFunc): Promise<void>;\r\n}\r\nexport type Node<T> = {\r\n    value: T;\r\n    next: Node<T> | null;\r\n};\r\n/** \"LinkedList\" with `Array` interface */\r\nexport declare class Queue<T> {\r\n    length: number;\r\n    private _last;\r\n    private _first;\r\n    constructor();\r\n    push(value: T): void;\r\n    shift(): T | undefined;\r\n}\r\n/** The most simple semaphore implementation. */\r\nexport declare class Semaphore {\r\n    private readonly max;\r\n    private count;\r\n    private readonly resolveQueue;\r\n    /** @param {number} [max = 1] - by default, it works as a mutex. */\r\n    constructor(max?: number);\r\n    /** @return {Promise<unknown>} */\r\n    acquire(): Promise<unknown>;\r\n    /** @return {void} */\r\n    release(): void;\r\n}\r\n/** `resolve`/`reject` of `Promise` with no result. */\r\nexport type VoidFunc = (value: void) => void;\r\n```\r\n\r\n## Installation\r\n\r\n### From NPM\r\n\r\n```bash\r\nnpm install @alttiri/util-js\r\n```\r\n\r\n### From GitHub repository\r\n\r\n```bash\r\nnpm install git+https://github.com/alttiri/util-js.git\r\n```\r\n\r\n<details>\r\n\r\n<summary>More ways</summary>\r\n\r\n### From GitHub repository (a specific version):\r\n\r\n- **Based on SemVer:**\r\n    ```bash\r\n    npm install git+https://github.com/alttiri/util-js.git#semver:1.3.0\r\n    ```\r\n  Or add\r\n    ```\r\n    \"@alttiri/util-js\": \"github:alttiri/util-js#semver:1.3.0\"\r\n    ```\r\n  as `dependencies` in `package.json` file.\r\n\r\n  See available [tags](https://github.com/AlttiRi/util-js/tags).\r\n\r\n- **Based on a commit hash:**\r\n    ```bash\r\n    npm install git+https://github.com/alttiri/util-js.git#eea3068f8c70c6a500a44b69aeb0cb65ac8b80a6\r\n    ```\r\n  Or add\r\n    ```\r\n    \"@alttiri/util-js\": \"github:alttiri/util-js#eea3068f8c70c6a500a44b69aeb0cb65ac8b80a6\"\r\n    ```\r\n  as `dependencies` in `package.json` file.\r\n\r\n  See available [commits hashes](https://github.com/AlttiRi/util-js/commits/master).\r\n\r\n\r\n### From GitHub Packages:\r\nTo install you need first to create `.npmrc` file with `@alttiri:registry=https://npm.pkg.github.com` content:\r\n```bash\r\necho @alttiri:registry=https://npm.pkg.github.com >> .npmrc\r\n```\r\n\r\nonly then run\r\n\r\n```bash\r\nnpm install @alttiri/util-node-js\r\n```\r\nNote, that GitHub Packages requires to have also `~/.npmrc` file (`.npmrc` in your home dir) with `//npm.pkg.github.com/:_authToken=TOKEN` content, where `TOKEN` is a token with the `read:packages` permission, take it here https://github.com/settings/tokens/new.\r\n\r\n\r\n</details>\r\n","readmeFilename":"README.md"}