{"_id":"@radically-straightforward/utilities","_rev":"37-6422ba079ca73744e81989bc42dbf451","name":"@radically-straightforward/utilities","dist-tags":{"latest":"2.0.27"},"versions":{"0.0.1":{"name":"@radically-straightforward/utilities","version":"0.0.1","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@0.0.1","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"e03c33bb9e075926bc50df42d90f479a35909797","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-0.0.1.tgz","fileCount":14,"integrity":"sha512-qxYhz89ETOcfel/rn7EGNATt74E9+xIVgjEuQFQwO2vAtTYfQbf+efaTT/bmW4eDE/qOdotWFZ/9+PNqvCs1Sg==","signatures":[{"sig":"MEYCIQCCyjDGQ3XLBKCuAWGlh3pZbYMFgVV+PhqtCbE0gpCltwIhANKSSnAnHDmSHN15kTAJfoqXpPoKbI8QtKdZg4pkWkpc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44504},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"2906ef6d9d1e2b0b9938919e89255acda449f734","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.2.4","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.5.0","dependencies":{"lodash":"^4.17.21","deep-freeze-es6":"^3.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@types/lodash":"^4.14.202","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_0.0.1_1704394951294_0.44147692407102657","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@radically-straightforward/utilities","version":"0.0.2","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@0.0.2","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"a7598b7db60865348fc32fbf0480425e1f62718b","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-0.0.2.tgz","fileCount":14,"integrity":"sha512-V8NBRqmez3MQ7OtoE2we4iEPlacItOHLw+SteaoRcNQioTXD5WpiwXJMzRiO+bpBYuMp+snvFx0Afz8StorduQ==","signatures":[{"sig":"MEQCIA8so6W89CY9sP7HzgVJhlmhxxIwn9t27Ijd3cn1zOfzAiAgqsB+9HLXySr8g0lk+I+ZAwxWoFTdZiiYbTWyI/36nw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41970},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"f853e7ef69095eb99c80417c15f362f6462149dc","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.2.4","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_0.0.2_1704464767404_0.24037212755913862","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@radically-straightforward/utilities","version":"0.0.3","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@0.0.3","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"957ee6093e020d5435e05653a3617859a71db9f5","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-0.0.3.tgz","fileCount":14,"integrity":"sha512-LA5M5oiprka40vzNe3TXPsVqdjIDJFBAreK9DMX75oLNF6skHFBJKhGqgOiTpA1gln90/ewUxc4FtLlNiRj96w==","signatures":[{"sig":"MEQCIEUJry7JWXKjN7M/YUIesTc1gczOCXsEwmEsmL5Qy5F6AiBHyFabrVB6XEnFDCPhU+YNVTTKpMNUN7k5g+4p1CDq7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":45032},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"c600f52dc5077cf9bba67ed75ea9e94989d413d2","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.2.4","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_0.0.3_1704477883705_0.7506561371643035","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@radically-straightforward/utilities","version":"1.0.0","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@1.0.0","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"1c06437fb3a8b50801aeacaaaf205320d82962c0","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-1.0.0.tgz","fileCount":14,"integrity":"sha512-zIUv3v/mr8ebFXivsR6yyCAUscc6fakyHP1ytOViQJwZN4Pmuskh/c5u9u6SWLvcSJirYb5mRmBUXGha5vC4kw==","signatures":[{"sig":"MEUCIDdMrbixSIqfHtHcZhY4dAz4mOupbZubK9hxwBFw1Nq4AiEAiBwBy9pjg5m0snFGxRC292hxfFcv0GKdDamNFNlqOgg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55560},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"a9e621290e402a83f97fa3ee3023b80afe715c73","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.2.4","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/node":"^2.0.1","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_1.0.0_1704549774594_0.35512478712704976","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@radically-straightforward/utilities","version":"1.0.1","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@1.0.1","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"f83a6a0ec6a5c58659b9518dc3f430192232b1f2","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-1.0.1.tgz","fileCount":14,"integrity":"sha512-N71sT4ztWlFeI0piTyFmG5D+bNX91TnGA10hGJzGWJU5HYBMXzKfThReEq4hhBbVStOCmdwGPnzdvh0OL765wQ==","signatures":[{"sig":"MEUCIQD9UEjsXyVd0Mzh5G9rqsyfR68olLvRMpBIT23bzYmfVAIgXNkBnoxDPgA6SeCKAFbNVmzSklxFfmEtYjZ3uaNco/o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56861},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"40e701e5641a614e77595dbf3ffaed0160e3a273","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.2.4","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/node":"^2.0.1","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_1.0.1_1704822863532_0.45218618112870845","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@radically-straightforward/utilities","version":"1.1.0","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@1.1.0","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"7d0b2ac674579766395812242ef9286f3086ed38","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-1.1.0.tgz","fileCount":14,"integrity":"sha512-FP3Byhe/JscD7MDcPhESbjqhZE79o9OHCXc9Prtyp6WdVmLyComFOHXermzUCDHhMU6kp4UBlb971M4JOhi8Lw==","signatures":[{"sig":"MEQCIEbQxnxiaXI8fJAIOpMwbmUw9C03TumYTHYJXdWxDPxHAiB7D8Ulociu1PrbtUyeRt5tJxw7LGyHtFpVnzz47i/dFg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60664},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"4da2ef0bbdfedd2121269e1887934508d25c2153","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.2.4","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.6.2","dependencies":{"@radically-straightforward/node":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_1.1.0_1708528326360_0.34781250637655137","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@radically-straightforward/utilities","version":"1.1.1","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@1.1.1","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"0a4727d2674e5e7bd283397cdcf9183a74ae164d","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-1.1.1.tgz","fileCount":14,"integrity":"sha512-CxMINsjwi88/cqf+hpX4AJTDutE6X7J7x4L8UR8sdzALpHG8kBLdNpiZs1umPewHG7UfazIBxtPyas/kpqLHPQ==","signatures":[{"sig":"MEYCIQCVGG+Jf2p/P3TWT1R/wV5LuZ2GcDd/g9FirjgqnSVZkQIhAIh8zH4eXfItWad8iaPcDBVBGjV7FkQT6182zSjhGOVN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60826},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"4b58fe71e53bd2b90bda6c0c3e15eaa50fd1b834","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.2.4","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.6.2","dependencies":{"@radically-straightforward/node":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_1.1.1_1708529517739_0.09941272693289482","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@radically-straightforward/utilities","version":"1.2.0","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@1.2.0","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"fd84b7b2bc2b908e5b967b83470c11ee48847a23","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-1.2.0.tgz","fileCount":14,"integrity":"sha512-iCWSvnoAxv3v9/bydaGM2935cH2SvrmUhc2yQqNZnzkD6LFybKWeAZRMFiCi9ik7zqIA9MXCHCF8zvKGxy53Rg==","signatures":[{"sig":"MEYCIQC3Tmg1snW5PPLDOUQ5W7/HbAGIkw9aaksIvvlehT9GCwIhALlAIFL+CpS8Rwh7llcjr1Pr2XW5OuVfLUIfSW/Wtom/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67932},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"7ee20517483f17ba5934730bbf3aecd07adbd20f","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.5.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.7.0","dependencies":{"@radically-straightforward/node":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_1.2.0_1709825526388_0.7953475144413265","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@radically-straightforward/utilities","version":"1.2.1","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@1.2.1","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"0bd9b456a38c2a6be8e6f59b2dabefe1366316f8","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-1.2.1.tgz","fileCount":14,"integrity":"sha512-NjmshNxiM67gQsNWEO7mEZ7DWS9m2YCJABue13ZY/Ay7cGc2l6oLncXYWzPrpjiAu5JBlsZqZFpyqcek0C/2wQ==","signatures":[{"sig":"MEUCIH1BrAP0RFFUdS6mE523AfWXxafuq8WGNMTvqZc6R4VHAiEAyqTUFGslfWmk8sTScHBxdMYFuqOdPdoGfillnH7bnh4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69293},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"3149fcdc30c3d6ba70126e3a701a7f4268c11cac","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.5.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.7.1","dependencies":{"@radically-straightforward/node":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_1.2.1_1710260948249_0.8407436221316533","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@radically-straightforward/utilities","version":"1.2.2","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@1.2.2","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"69440f2a14e615e1b370d96f0990e7b5a5747aa1","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-1.2.2.tgz","fileCount":14,"integrity":"sha512-gsM0Rk6Mr+t+eIE9GZz9CCmMe3PgZEjiZyqw8uzZlSAKw1sgL4P6QfmN1qWUiXmeKmpFfBUWjkt1tcQ+VU74Ag==","signatures":[{"sig":"MEQCIGFa41ij5k4IpwgImHZLO17iHDTt43rCbJui43X1djh3AiA2pHhFs4OqVpdpbcEgVxTtf80WNrH/4OCykj/bYTJnuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":78868},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"f4475d8b36fff5b3f02837b37245bb95bc749370","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.5.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.7.1","dependencies":{"@radically-straightforward/node":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_1.2.2_1711983893400_0.1852789049728789","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@radically-straightforward/utilities","version":"2.0.0","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.0","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"d32889ca5fe0e29a78b45b2383488ae81d359c72","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.0.tgz","fileCount":14,"integrity":"sha512-hIaz2v2nji6TQvsmDHxOoxdmTSLNXUpMj4AUn1p5USc+NdABCtN7di7tDCP0urFKVyy/kT6JBh5RdUuRUG7IDQ==","signatures":[{"sig":"MEQCIAMH6r4AYKe7+EHChK26RomX5/mIlEetNtk2R6meNxvIAiBefvQAIKJo9FZJcPQQ6tkpvl49FPu2wRY2Jt59bJO/nQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":72651},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"f8562deb97e83554278e67a2347db7c49315ea75","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.5.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"21.7.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.1.1","typescript":"^5.3.3","@types/node":"^20.10.6","@radically-straightforward/tsconfig":"^1.0.0","@radically-straightforward/documentation":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.0_1712655932032_0.6773657435226419","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@radically-straightforward/utilities","version":"2.0.1","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.1","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"44e67573a8e484d175c5cae3e0b1fdb3fa2397b1","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.1.tgz","fileCount":14,"integrity":"sha512-8Mk2VsfTSn12Tg4T/RvnWW7cEtyVHuPn5Q2VhDlxr8U0vG7Uw0KHmdL50FdtYw4dpHRzATfrmYvPTIZJoi01WA==","signatures":[{"sig":"MEQCIDHQFCwZLjHp5QJNpnhljPvgT326o9SQ90D7mXxidD70AiAUU9YehS1CHK2LIzYVOz8WqoFdmnw/QqqNbbVwXuhM4w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":74133},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"0c4d0ef076e74540343aa56bf5f9d93209662475","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.5.1","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"22.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.2.5","typescript":"^5.4.4","@types/node":"^20.12.6","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.1_1714151271596_0.8281194564707339","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@radically-straightforward/utilities","version":"2.0.2","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.2","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"1198bb1f80e3d8a08e756cef2ddedf46161c8c0f","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.2.tgz","fileCount":14,"integrity":"sha512-/48du6iKwUWc77uTan7/+QtCYps704nsPeI0IBdFEOKdFRRwEcFyfBZ9CfDP5X41c9lvmMY2o0530mF4X4K+Rg==","signatures":[{"sig":"MEQCIDyPSgXcT7yn74DUhMmRWiP5YB7p9kbdNjVm/Wyi8RVhAiAmX4a5cc3uHNCuPCldJ3FAZ5PBRA7W9Q5+7MujILJMBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":77573},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"8cf9d0fa253b50a3c20196a873bc5b9ee7944744","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.5.1","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"22.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.2.5","typescript":"^5.4.5","@types/node":"^20.12.7","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.2_1714575600275_0.44752360257511814","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"@radically-straightforward/utilities","version":"2.0.3","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.3","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"329166a6f737c7943ab5274acc75253f9e968dd0","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.3.tgz","fileCount":14,"integrity":"sha512-BlDz58ooEbhDoou3OLKwSk3jQb756+TzLtKdKGyjX9grF03AYw0W0HO2oCFpklY4PUd7hzMiQaZoETk0NvlxTg==","signatures":[{"sig":"MEYCIQDO0igx4qKAuQZsE5CEO1PZ59Iq1d0BWDjtn1m1WHigCAIhAMjdqo1hRbd+TuHsyK34+TKZbxQEwEYpwUD/FmG5m8KR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":78546},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"cd828ba0d5e87504a6927a6fbd9543cf14bc27f5","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.5.1","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"22.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.2.5","typescript":"^5.4.5","@types/node":"^20.12.7","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.3_1714575719078_0.6833979819742995","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"@radically-straightforward/utilities","version":"2.0.4","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.4","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"f8647b9d57b5df2c63e44214a7dc2543a4a760cc","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.4.tgz","fileCount":14,"integrity":"sha512-csXEb54yDwGEUG5os+EfvDFnsAtN6Y2TrU+kGhns1j8zAH/Uk+65dnhiG6JeO+kHZN8oZUao9pZ6YmOMEpWDjg==","signatures":[{"sig":"MEQCIBR8aXleSUEWG1j6CBa1EIt/Iwa6V4k+j0AtRfnEl0+GAiBGphxr3SqzKRwx91XoT2PO6HUNaTC878cfAnb6kfsF+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":78626},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"e7a9f8a4f46530725b01b7798ac8d29f8a8ffaa1","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.7.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"22.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.3.0","typescript":"^5.4.5","@types/node":"^20.14.0","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.4_1717513685151_0.09509112205991244","host":"s3://npm-registry-packages"}},"2.0.5":{"name":"@radically-straightforward/utilities","version":"2.0.5","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.5","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"13b440d0ddb331fb3f2142b9dacc7ed809399ece","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.5.tgz","fileCount":14,"integrity":"sha512-wTEka1xdhtgvhVhXN/XAqSe6ri4rwE4VKmT0BB2gCdJHLUBa8B3Sdotdj/eyOx2meU0DWTF/VOQqvYPMzEiEVQ==","signatures":[{"sig":"MEUCIDr7KKMp/ugFmhFMfGFQctgtUBqSHBcuL0RgCGIa/owQAiEAjeQJL3bW+rqAr4H9DRwnUo+0qIGTWcEPsR7LESCTGKs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":86656},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"beb003bed5075529a538084ebc06cd6e409f9967","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.7.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"22.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.3.0","typescript":"^5.4.5","@types/node":"^20.14.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.5_1717851612421_0.3042387347742024","host":"s3://npm-registry-packages"}},"2.0.6":{"name":"@radically-straightforward/utilities","version":"2.0.6","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.6","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"1be8e514e1bfbd81f0cb7266322bfb77f75fa702","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.6.tgz","fileCount":14,"integrity":"sha512-2OimHnVAqXyT0oJfEjbrv1SlgNky7A9DPZ7flYpxMd5d6UQYih0SCFwYOPCF6Oryq3M/OG2PQbl8YOOB9O4AcQ==","signatures":[{"sig":"MEYCIQCUrgdyK/hj3IJEaPpkyDANgNBs+4/bp5btIeHpiXfLRgIhANhLWWZsHNbUlzszYBCxpAIiDxt8BkARz7gLJRfP/o7U","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96096},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"63e6a1e23789e7d2b6011b731dd08df81e1bcc5d","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.8.1","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"22.4.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.3.0","typescript":"^5.4.5","@types/node":"^20.14.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.6_1720801084142_0.5785245742978793","host":"s3://npm-registry-packages"}},"2.0.7":{"name":"@radically-straightforward/utilities","version":"2.0.7","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.7","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"27602d173fc8a80c47561d3fa87568936e0002e6","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.7.tgz","fileCount":14,"integrity":"sha512-USW0hmyxo8qDfi5SYOYPLyY913bHOOKmChzAEilyRLaCqMJNJ7bF8oBBNuxWk4gms+4j9cYyV5wAAuXtbWqdEg==","signatures":[{"sig":"MEUCIGAiu7nXUzq9xamRP95rcCeb4oUMqDqJtl6DoKf20CMMAiEA7C4crJrPFoc6ZqvxL7XkJMXcI3oA3m4DenXOGaab82o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144277},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"05027d31b0b16b5e11fb3533e2e683a532135bb5","scripts":{"test":"npm run prepare && node --test && prettier --check \"./README.md\" --check \"./CHANGELOG.md\" --check \"./package.json\" --check \"./tsconfig.json\" --check \"./source/**/*.mts\"","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.8.3","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"22.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.0.1","prettier":"^3.3.0","typescript":"^5.4.5","@types/node":"^20.14.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.7_1729251951678_0.8913419772301767","host":"s3://npm-registry-packages"}},"2.0.8":{"name":"@radically-straightforward/utilities","version":"2.0.8","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.8","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"5acd29722c8e98fd9a6894a8133649de4a1a0122","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.8.tgz","fileCount":14,"integrity":"sha512-RDV8QRScLdi+TpXT8RCedP7n9CtRKkTrJS8mEbIiIkAH4NauLRYMR8ToGon1cLcLZHLYs7YHjxkA2r2gDfDHGw==","signatures":[{"sig":"MEQCIAKdZREFDoHjnYpxr4WBH4PigWHRBSE7YoHc51tmmACcAiBTloin8osNgjKWhXwRecFUAI8oqHV9d8PKfsR1PVLhhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145268},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"c60309165b4daea691016d2c0bc5c21dfb828d1c","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"10.9.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"23.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.0.1","prettier":"^3.4.2","typescript":"^5.7.3","@types/node":"^22.10.9","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.8_1741871297720_0.8864181199139836","host":"s3://npm-registry-packages-npm-production"}},"2.0.9":{"name":"@radically-straightforward/utilities","version":"2.0.9","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.9","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"bb8e49c711273b067b42a4339e3753380c9385dd","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.9.tgz","fileCount":14,"integrity":"sha512-JTLQb9tB52tNjBylRRvrlW/+Fq5lVXzUDzAtQODcmLGK4dqmTg53XyML1Yjar21MAkAH4p7UR2DW0dqOGM4C4g==","signatures":[{"sig":"MEYCIQDqe4NH+mRD270fyXGFirXEHHFBY/Cmj6Tku6+bkNZJHQIhALY+WCOovbMaIMUFAY32cX6WW9NuiISKHEdMqiX0ZKtM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150907},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"d2660e7c883f97f166be93628f4bde9cb231067c","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"24.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.0.1","prettier":"^3.5.3","typescript":"^5.8.2","@types/node":"^22.13.11","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.9_1759510709900_0.7470671174014398","host":"s3://npm-registry-packages-npm-production"}},"2.0.10":{"name":"@radically-straightforward/utilities","version":"2.0.10","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.10","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"d995cd1a991c193ba4513c8bb276375ac4d80546","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.10.tgz","fileCount":14,"integrity":"sha512-sB0T9cRSndPET7yw5FdPxszPa2CxbNohWqdEvCg2oSPUchyhs19d8p/3pAigvKdSclgMOaKETvmizVr8xwRp7A==","signatures":[{"sig":"MEYCIQD/pMHLViIwoaEgtW8pQqDGzJL7byxjDdfFcMLs7w3c0AIhAMOaAYVY3CTiXVVKiWs1aYuHH3GqqV10s2eEeJfy44wn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":152216},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"2cae7f74d4d99945acadd23d881100460910a873","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.10_1761335476665_0.21349340917856519","host":"s3://npm-registry-packages-npm-production"}},"2.0.11":{"name":"@radically-straightforward/utilities","version":"2.0.11","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.11","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"f4ecd4c473fc2cca58ea9ab59813d9f5dae0316e","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.11.tgz","fileCount":14,"integrity":"sha512-/uf1e7nAxvoGltCrB/QXmURyQBw7F/o8ort7nMBMlDLPy81SuekpsqoIh9H57jZ6H2RhpcB7SGrGvRTL7R6t/Q==","signatures":[{"sig":"MEUCIBNoKpayUAO6OZhG84zwB3aZUE9mzsd7kwTMNngBpLhDAiEA2y118Kx+OCSt1givNfzDDcrY1KyMH5ItHiYAW+yoEgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155931},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"fba038fbb0ef995da864be0ffa4beb91f6948732","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.11_1761491337582_0.4300693191873035","host":"s3://npm-registry-packages-npm-production"}},"2.0.12":{"name":"@radically-straightforward/utilities","version":"2.0.12","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.12","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"87ef1c008b85cc4b905e3477621d5e116a3ae4de","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.12.tgz","fileCount":14,"integrity":"sha512-XLl1GZ/UGspVUV0rijKEVIvSfLvS9kE+rZr+BKRpBqSFXBPoh76mS2wsZPR6WUaKIE/tuiS0ftEY53wda8fG9A==","signatures":[{"sig":"MEYCIQDKAhyjJSuhJl70f53Mbz93vn7ZMp5r73zD0SNgqLyV5QIhALKlB5nvyG4tzg0k1ctUMpIYMLs8+DoYK94bBDkmow69","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155855},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"620e463eb1fc362793dd58cea9ae5719efa58739","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.12_1761493569126_0.2459656798831813","host":"s3://npm-registry-packages-npm-production"}},"2.0.13":{"name":"@radically-straightforward/utilities","version":"2.0.13","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.13","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"7c72fcf13633d1569deb836ec30c5d23834de998","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.13.tgz","fileCount":14,"integrity":"sha512-v2zd8a5ejerLnctv74VK7dqsOrcoAO6hp6KuGKHobtgkIqKyspCLlcdAbmo/tnKGcYhTGuInUJIdZmKnewZ3KA==","signatures":[{"sig":"MEUCIQDPiFN4jF86G2/tBU3yaBMfonQrL0gFDbE7Ww8X0OzayQIgZaDqTLbdVUkSPgbsdGKzn1YnEGu+qGPIuUDC1zpBZoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156518},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"8164e3e97c131177d075121d09d654537f187d80","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.13_1761580565120_0.6379329571657049","host":"s3://npm-registry-packages-npm-production"}},"2.0.14":{"name":"@radically-straightforward/utilities","version":"2.0.14","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.14","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"1fe8f0a8d8765efc0a735dbf718d0215e3d72c32","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.14.tgz","fileCount":14,"integrity":"sha512-p88i2ZV4j71pt/3qiUPIhz3l2oRcpv0cV/sPLfBp4l2Wm+zVlQ0/Xf5YqER60tvfOA/K9G00HX+XoMnwd13mow==","signatures":[{"sig":"MEQCIFi3Cgmm9ZktWzs1VZ7F7vuJbWDMGY4mHs6hicIMK+mxAiAC8jQLm0AVCqo4Xt655CVdyAy+LUi95Dhdu/TlcgFfRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156671},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"4fb9d1a86d9c873aaa341e942bf534a5101a4329","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.14_1761584435872_0.24372593327178826","host":"s3://npm-registry-packages-npm-production"}},"2.0.16":{"name":"@radically-straightforward/utilities","version":"2.0.16","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.16","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/leafac/radically-straightforward","bugs":{"url":"https://github.com/leafac/radically-straightforward/issues"},"dist":{"shasum":"b34350da61025b0629b4c7a61dce25f342b8c7d9","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.16.tgz","fileCount":14,"integrity":"sha512-+E9nmjb2AU7Qnx2griOE9JBE9h7sPrNYQpINouy4YHx0JxgtJvhAumPLzunqHZjHbKsr7LiRyEUA2J8fLJfwOA==","signatures":[{"sig":"MEYCIQCDrzlQawj/WprFFwJb82JkZc9eR6zMFypq4G5yUAfi2AIhAIVTRlV7guQa2qF4oWfJh6lgtlkPR51khbpQSqf7yto9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157460},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"c7448f85ad1dda7685ffa0fdc82232886e13a682","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"leafac","email":"npm@leafac.com"},"prettier":{},"repository":{"url":"git+https://github.com/leafac/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.16_1761658248319_0.39798946976918637","host":"s3://npm-registry-packages-npm-production"}},"2.0.17":{"name":"@radically-straightforward/utilities","version":"2.0.17","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.17","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"3dae143b902e7a9f1d7326c9756eb09329553e72","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.17.tgz","fileCount":14,"integrity":"sha512-pe6iA18oqdsuxvs6QF9sQlA+sKgd8gAoXsj3b5xp2eQC06Uc4vxFPDmAKxaa9rwIQy6Vx5vGCW7KN8A2C+mM4A==","signatures":[{"sig":"MEYCIQDcV12YIORVytiezvWL7qicw8Ev4abSuHLfebguFUvrwQIhANl/g1qdRKJljZiuYRZ5GFtFX/y7ufRUDw4ccGlot9yM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162884},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"86a7f00948ed4cba1270b9152d5732f2c3c4d779","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.9.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.17_1761765721624_0.9378747462618553","host":"s3://npm-registry-packages-npm-production"}},"2.0.18":{"name":"@radically-straightforward/utilities","version":"2.0.18","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.18","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"8d8da775b33e357d48f503f7646c4f8e68a47e0a","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.18.tgz","fileCount":14,"integrity":"sha512-M4TbIR1pswyIMo/y+TZS6tMlJswE7yZQamkyKlHQWur44CU9S56FiPp0171ITSx+AD0zQ0gMbhKqrqnCpWWhBg==","signatures":[{"sig":"MEYCIQCCTcqY779g+VIvO7UAZsHKYAOa7WnBoVsPTX65sR+cYwIhAOO5DeNAdIXH9ymmieR78JIA8fxuzCdpYui8RoipdesJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":163155},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"1e77e9665b7faef1f60529d563fc3c380bfbfdb7","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.10.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.18_1763644386615_0.8190329098482196","host":"s3://npm-registry-packages-npm-production"}},"2.0.19":{"name":"@radically-straightforward/utilities","version":"2.0.19","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.19","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"8b4813f076de1daedbb4904a64d9faad946846b9","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.19.tgz","fileCount":14,"integrity":"sha512-J3vUU5PMblwov6SQW8ZHu04YV4fOMl3NejbJUkO9llc1c/4Qul3VK5V8zGIWv7fMMRsEVHLoz8JJrXgnGMiNrg==","signatures":[{"sig":"MEQCIB3ReIjPzeSa3CrV58qyYhem22cYlPenX0t0G3HCAfhFAiAJgv+bCmX0hRj3jrvBDY1m0Qmuv82sCN798gI6wYCm2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164390},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"1794fc87df8e68429df06baecdf20d6052ce9e28","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.10.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.19_1763649680352_0.5200798077416093","host":"s3://npm-registry-packages-npm-production"}},"2.0.20":{"name":"@radically-straightforward/utilities","version":"2.0.20","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.20","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"b8fda19d8c0cfa9724a87a7ed194e0ccf17c0088","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.20.tgz","fileCount":14,"integrity":"sha512-31zP9r4uWUCUXXb1ugEWyAqviCmAuLWtowO15f3Noq4MvsMCQo6hZkAOwzMYOIdd3vxExM4yyjd6JldcDRIIWA==","signatures":[{"sig":"MEUCIQD8ifsXBZuOvfcCbL+nKj19kWbzt/XLyEIUQr7WlCl/LQIgZDpsZsOQhVBQhOPb+TwFSM1HzR2s9um1XPNmfDMC/cM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164800},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"a9caec84063a3f9b6d111de39a939cb1ff32438a","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.2.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.10.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.20_1764866486452_0.25929835304907045","host":"s3://npm-registry-packages-npm-production"}},"2.0.21":{"name":"@radically-straightforward/utilities","version":"2.0.21","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.21","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"cf72609463ac34c784d947c847413f1aea2b787b","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.21.tgz","fileCount":14,"integrity":"sha512-bABgx5GEYQAWYzErygQGz18RfE0JjNx7cMxoA2yJm3xZQ/7I6TWe44MVP30pu5rh5YoI41ZDMSjsFJYvgVqtug==","signatures":[{"sig":"MEYCIQD0Do9ylJts0HI2Sfzz5ay8yAjJfhqoknG3ZvJPf3C+IwIhAKtIpwQuyCEYBCHt021HOHPlsXELSvc6FvYkb93/pQ1d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159640},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"f3bf9ecf5137d0bea82ca9cbaf82e57af47702af","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.6.2","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.0","prettier":"^3.6.2","typescript":"^5.9.3","@types/node":"^24.10.1","@radically-straightforward/typescript":"^1.0.0","@radically-straightforward/documentation":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.21_1768486561348_0.2841453048913689","host":"s3://npm-registry-packages-npm-production"}},"2.0.22":{"name":"@radically-straightforward/utilities","version":"2.0.22","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.22","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"21e5e7a7b8e9ed6ca1a9ac7a82c7507799e8125c","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.22.tgz","fileCount":14,"integrity":"sha512-/oqCppQitlvBscvYWdH0CNJK9qc6wJoN7vkM9s+ZOgBXFmVxbbHtpKAtVQzVMC9hLnPFjkN9UKd453zoroj7pg==","signatures":[{"sig":"MEUCIH87ZlvHyjkXuNWuC3u2rozHPuF6G2/Zx9eubiX/wWYLAiEAyVWvZmgE2bPYfAQXkxopK/uVYtafQVY7cUm4ZhvLaUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159639},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"fe77eb3660ff152eca708bce8c5352bf1b91717f","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.12.1","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.1","prettier":"^3.8.3","typescript":"^6.0.3","@types/node":"^25.6.0","@radically-straightforward/typescript":"^1.0.3","@radically-straightforward/documentation":"^1.0.7"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.22_1776715311209_0.13536285204385856","host":"s3://npm-registry-packages-npm-production"}},"2.0.23":{"name":"@radically-straightforward/utilities","version":"2.0.23","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.23","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"0ccd7f43b926908f52358e62bcd2de975939f36b","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.23.tgz","fileCount":14,"integrity":"sha512-KaQJMtF8LD6D8H9HINBewmcq351/1rc/sD9TT0Vuqq7Kbg5w3uREGLFwaj51HweyjWj8U73POrc1tavv8HRgAQ==","signatures":[{"sig":"MEQCIHDrH7qhR9xjOb5MlUOPo/aB8ZJLRr/bMizPfyJMz2RVAiA94icP8b/E02wjQrSOZmlRyAF3bcJ9Z/gZ1olyW+ZufQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159639},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"1bd0b9afb8a64a73b7130457e1d72ace51359ef6","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.12.1","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.1","prettier":"^3.8.3","typescript":"^6.0.3","@types/node":"^25.6.0","@radically-straightforward/typescript":"^1.0.4","@radically-straightforward/documentation":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.23_1776716217886_0.15244158059891522","host":"s3://npm-registry-packages-npm-production"}},"2.0.24":{"name":"@radically-straightforward/utilities","version":"2.0.24","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.24","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"23a4adaaec85498fc168661c228bf79986a8600a","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.24.tgz","fileCount":14,"integrity":"sha512-+Np44ubUpjhrfNtfbqAq8LQyf2DZech8CjA1myPfjPLRcc78TQ1K8c2EhYvIKTJ3Y67OgeZaqhJ7P/k9qauxaA==","signatures":[{"sig":"MEYCIQD4vgFTRTD3CEZeNa2E4W8WSN/+Mc8edbFf3sSm8C3mpwIhAIv0DTFQmTnDV4EbBqQjmxVTZYO/VwhZumbGKmuvSUGU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":163392},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"d0cede1a5329046cadaec439e345540e49bb9240","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.17.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"26.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.1","prettier":"^3.9.3","typescript":"^6.0.3","@types/node":"^26.0.1","@radically-straightforward/typescript":"^1.0.5","@radically-straightforward/documentation":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.24_1782762168973_0.9836613965379866","host":"s3://npm-registry-packages-npm-production"}},"2.0.25":{"name":"@radically-straightforward/utilities","version":"2.0.25","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.25","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"29d208872adda0db3455d43d37c6389baa54b13f","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.25.tgz","fileCount":14,"integrity":"sha512-1vhfT3Ezt7cRj8TdOeLb+JHAUFcICRtcvWbGk41W57rnDHzAQXAzMyY6KvhC6sLz4JHt0A+Oj0jGl1A56lzoFQ==","signatures":[{"sig":"MEYCIQDptey35j2x7mkXW6T1cqe+tpFwy8/MnRB3d1YWaBcHPAIhANXEJx02WJ3JP8HY55uO2QgnSi5wBCrmVFiV+YLJtPhG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167539},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"b549b586e77cdf9100e2038582d0ac4cf80932bc","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.19.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"26.8.1","allowScripts":{"@radically-straightforward/typescript@1.0.5":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.1","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","@radically-straightforward/typescript":"^1.0.5","@radically-straightforward/documentation":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.25_1788443604211_0.6397566218086022","host":"s3://npm-registry-packages-npm-production"}},"2.0.26":{"name":"@radically-straightforward/utilities","version":"2.0.26","keywords":["node","browser","utilities"],"author":{"url":"https://leafac.com","name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com"},"license":"MIT","_id":"@radically-straightforward/utilities@2.0.26","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"homepage":"https://github.com/radically-straightforward/radically-straightforward","bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"dist":{"shasum":"d237f766f12bc125e127b3b25f65934fe21f7fde","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.26.tgz","fileCount":14,"integrity":"sha512-KY9M6jfQr/raIwkF31mNIvqYmiguwsN8Qv54tr/Plqnh3j1m4yC7HxDVjCMT4JZ74b6kj0QO9Ud7Z2Ge9una/A==","signatures":[{"sig":"MEYCIQDDHg8ZCwr/+aWZsKVS4dUJXph4nDQpw6jD8d6P9++INAIhAJEWSuRV/r7mvX6WCWoXXDv+YoYTMDATyaAjrau6mj7k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167516},"types":"./build/index.d.mts","exports":"./build/index.mjs","funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"gitHead":"5c91fb0f630dd88ffb07273fb24a534e0ea4309a","scripts":{"test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/","prepare":"tsc && documentation"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"prettier":{},"repository":{"url":"git+https://github.com/radically-straightforward/radically-straightforward.git","type":"git"},"_npmVersion":"11.19.0","description":"🛠️ Utilities for Node.js and the browser","directories":{},"_nodeVersion":"26.8.1","allowScripts":{"@radically-straightforward/typescript@1.0.5":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"natural":"^8.1.1","prettier":"^3.9.5","typescript":"^7.0.2","@types/node":"^26.1.1","@radically-straightforward/typescript":"^1.0.5","@radically-straightforward/documentation":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/utilities_2.0.26_1788445417670_0.39652532644245153","host":"s3://npm-registry-packages-npm-production"}},"2.0.27":{"name":"@radically-straightforward/utilities","version":"2.0.27","description":"🛠️ Utilities for Node.js and the browser","keywords":["node","browser","utilities"],"homepage":"https://github.com/radically-straightforward/radically-straightforward","repository":{"type":"git","url":"git+https://github.com/radically-straightforward/radically-straightforward.git"},"bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"funding":["https://patreon.com/leafac","https://github.com/sponsors/leafac","https://paypal.me/LeandroFacchinettiEU","https://btc.com/34KJBgtaFYMtDqpSgMayw9qiKWg2GQXA9M"],"author":{"name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com","url":"https://leafac.com"},"license":"MIT","publishConfig":{"access":"public"},"exports":"./build/index.mjs","types":"./build/index.d.mts","scripts":{"prepare":"tsc && documentation","test":"npm run prepare && node --test \"./build/**/*.test.mjs\" && prettier --check ./README.md ./CHANGELOG.md ./package.json ./tsconfig.json ./source/"},"devDependencies":{"@radically-straightforward/documentation":"^1.0.9","@radically-straightforward/typescript":"^1.0.5","@types/node":"^26.1.1","natural":"^8.1.1","prettier":"^3.9.5","typescript":"^7.0.2"},"allowScripts":{"@radically-straightforward/typescript@1.0.5":true},"prettier":{},"gitHead":"bb1ea36eb50b457b87c3b2232c56a4305402c9d1","_id":"@radically-straightforward/utilities@2.0.27","_nodeVersion":"26.8.1","_npmVersion":"11.19.0","dist":{"integrity":"sha512-/8sGf5W2Qoj8O/+pceVWV0CY4KcCrjWc7B7aVCYe/t3gyM/ijvkM21ydRbfzxDMgnJyNhDkDDsQ6nl3Zt0UgCg==","shasum":"0eaad93fc5be33c357212a4c615f69e77019a927","tarball":"https://registry.npmjs.org/@radically-straightforward/utilities/-/utilities-2.0.27.tgz","fileCount":14,"unpackedSize":172904,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@radically-straightforward%2futilities@2.0.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCOwMYluNzz7WwvuUobw2jIglWsCV0eeHWOVdy/wyrr+gIhAPytNa4jPaZMjPy+zu9CMr02sdS+6evEX4Kalub9KT1V"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b6207675-a7af-424f-97fd-2c79cf30d2c1"}},"directories":{},"maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/utilities_2.0.27_1788452585640_0.4902044804411305"},"_hasShrinkwrap":false}},"time":{"created":"2024-01-04T19:02:31.166Z","modified":"2026-09-03T16:23:06.128Z","0.0.1":"2024-01-04T19:02:31.469Z","0.0.2":"2024-01-05T14:26:07.611Z","0.0.3":"2024-01-05T18:04:43.856Z","1.0.0":"2024-01-06T14:02:54.821Z","1.0.1":"2024-01-09T17:54:23.720Z","1.1.0":"2024-02-21T15:12:06.589Z","1.1.1":"2024-02-21T15:31:57.917Z","1.2.0":"2024-03-07T15:32:06.543Z","1.2.1":"2024-03-12T16:29:08.430Z","1.2.2":"2024-04-01T15:04:53.559Z","2.0.0":"2024-04-09T09:45:32.169Z","2.0.1":"2024-04-26T17:07:51.766Z","2.0.2":"2024-05-01T15:00:00.453Z","2.0.3":"2024-05-01T15:01:59.273Z","2.0.4":"2024-06-04T15:08:05.339Z","2.0.5":"2024-06-08T13:00:12.571Z","2.0.6":"2024-07-12T16:18:04.328Z","2.0.7":"2024-10-18T11:45:51.865Z","2.0.8":"2025-03-13T13:08:17.862Z","2.0.9":"2025-10-03T16:58:30.089Z","2.0.10":"2025-10-24T19:51:16.859Z","2.0.11":"2025-10-26T15:08:57.784Z","2.0.12":"2025-10-26T15:46:09.338Z","2.0.13":"2025-10-27T15:56:05.306Z","2.0.14":"2025-10-27T17:00:36.068Z","2.0.16":"2025-10-28T13:30:48.517Z","2.0.17":"2025-10-29T19:22:01.863Z","2.0.18":"2025-11-20T13:13:06.803Z","2.0.19":"2025-11-20T14:41:20.553Z","2.0.20":"2025-12-04T16:41:26.622Z","2.0.21":"2026-01-15T14:16:01.503Z","2.0.22":"2026-04-20T20:01:51.373Z","2.0.23":"2026-04-20T20:16:58.051Z","2.0.24":"2026-06-29T19:42:49.095Z","2.0.25":"2026-09-03T13:53:24.371Z","2.0.26":"2026-09-03T14:23:37.821Z","2.0.27":"2026-09-03T16:23:05.811Z"},"bugs":{"url":"https://github.com/radically-straightforward/radically-straightforward/issues"},"author":{"name":"Leandro Facchinetti","email":"radically-straightforward@leafac.com","url":"https://leafac.com"},"license":"MIT","homepage":"https://github.com/radically-straightforward/radically-straightforward","keywords":["node","browser","utilities"],"repository":{"type":"git","url":"git+https://github.com/radically-straightforward/radically-straightforward.git"},"description":"🛠️ Utilities for Node.js and the browser","maintainers":[{"name":"leafac","email":"npm@leafac.com"}],"readme":"# Radically Straightforward · Utilities\n\n**🛠️ Utilities for Node.js and the browser**\n\n## Installation\n\n```console\n$ npm install @radically-straightforward/utilities\n```\n\n## Usage\n\n```typescript\nimport * as utilities from \"@radically-straightforward/utilities\";\n```\n\n<!-- DOCUMENTATION START: ./source/index.mts -->\n\n### `sleep()`\n\n```typescript\nexport function sleep(duration: number): Promise<void>;\n```\n\nA promisified version of `setTimeout()`. Bare-bones: It doesn’t even offer a way to `clearTimeout()`. Useful in JavaScript that may run in the browser—if you’re only targeting Node.js then you’re better served by [`timersPromises.setTimeout()`](https://nodejs.org/api/timers.html#timerspromisessettimeoutdelay-value-options).\n\n### `PromiseWithResolvers()`\n\n```typescript\nexport function PromiseWithResolvers<Type>(): {\n  promise: Promise<Type>;\n  resolve: (value: Type | PromiseLike<Type>) => void;\n  reject: (reason?: any) => void;\n};\n```\n\nA polyfill for [`Promise.withResolvers()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers) to be used until browser support gets better.\n\n### `randomString()`\n\n```typescript\nexport function randomString(): string;\n```\n\nA fast random string generator. The generated strings vary in length, but are generally around 10 characters. The generated strings include the characters `[a-z0-9]`. The generated strings are **not** cryptographically secure—if you need that, then use [`crypto-random-string`](https://www.npmjs.com/package/crypto-random-string).\n\n### `log()`\n\n```typescript\nexport function log(...messageParts: string[]): void;\n```\n\nTab-separated logging.\n\n### `JSONLinesTransformStream`\n\n```typescript\nexport class JSONLinesTransformStream extends TransformStream;\n```\n\nA [TransformStream](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream) to convert a stream of a string with JSON lines into a stream of JSON objects.\n\n**Example**\n\n```typescript\nconst reader = new Blob([\n  `\\n\\n${JSON.stringify(\"hi\")}\\n${JSON.stringify({ hello: \"world\" })}\\n`,\n])\n  .stream()\n  .pipeThrough(new TextDecoderStream())\n  .pipeThrough(new utilities.JSONLinesTransformStream())\n  .getReader();\n(await reader.read()).value; // => \"hi\"\n(await reader.read()).value; // => { hello: \"world\" }\n(await reader.read()).value; // => undefined\n```\n\n### `capitalize()`\n\n```typescript\nexport function capitalize(string: string): string;\n```\n\nCapitalizes the first letter of a string. It’s different from [Lodash’s `capitalize()`](https://lodash.com/docs/4.17.15#capitalize) in that it doesn’t lowercase the rest of the string.\n\n### `dedent()`\n\n```typescript\nexport function dedent(\n  templateStrings: TemplateStringsArray,\n  ...substitutions: any[]\n);\n```\n\nRemoves indentation from a [tagged template](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) for more readable code.\n\nThis is different from [the dedent package](https://www.npmjs.com/package/dedent) in the order of execution: the dedent package resolves interpolations first and removes indentation second, while `dedent()` removes indentation first and resolves interpolations second.\n\nThis different comes in play when the interpolated string contains newlines and indentation: with the dedent package the interpolated string must be aware of the context in which it’s used or it may break the dedenting, but with `dedent()` the dedenting works regardless of the string being interpolated.\n\nConsider the following example:\n\n```javascript\nconst exampleOfInterpolatedString =\n  \"example of\\n an interpolated string including a newline and indentation\";\n\ndedentPackage`\n  Here is an\n\n  ${exampleOfInterpolatedString}\n\n  followed by some more text.\n`;\n// => \"Here is an\\n\\n example of\\nan interpolated string including a newline and indentation\\n\\n followed by some more text.\"\n\nutilities.dedent`\n  Here is an\n\n  ${exampleOfInterpolatedString}\n\n  followed by some more text.\n`;\n// => \"Here is an\\n\\nexample of\\n an interpolated string including a newline and indentation\\n\\nfollowed by some more text.\"\n```\n\n### `tokenize()`\n\n```typescript\nexport function tokenize(\n  text: string,\n  {\n    stopWords = new Set(),\n    stopWordsAction = \"delete\",\n    stem = (token) => token,\n  }: {\n    stopWords?: Set<string>;\n    stopWordsAction?: \"delete\" | \"mark\";\n    stem?: (token: string) => string;\n  } = {},\n): {\n  token: string;\n  tokenIsStopWord: boolean;\n  start: number;\n  end: number;\n}[];\n```\n\nProcess text into tokens that can be used for full-text search.\n\nThe part that breaks the text into tokens matches the behavior of [SQLite’s Unicode61 Tokenizer](https://www.sqlite.org/fts5.html#unicode61_tokenizer).\n\nThe `stopWords` are removed from the text. They are expected to be the result of `normalizeToken()`.\n\nThe `stem()` allows you to implement, for example, [SQLite’s Porter Tokenizer](https://www.sqlite.org/fts5.html#porter_tokenizer).\n\nReasons to use `tokenize()` instead of SQLite’s Tokenizers:\n\n1. `tokenize()` provides a source map, linking each to token back to the ranges in `text` where they came from. This is useful in `highlight()`. [SQLite’s own `highlight()` function](https://www.sqlite.org/fts5.html#the_highlight_function) doesn’t allow you to, for example, do full-text search on just the text from a message, while `highlight()`ing the message including markup.\n2. The `stopWords` may be removed.\n3. The `stem()` may support other languages, while SQLite’s Porter Tokenizer only supports English.\n\nWhen using `tokenize()`, it’s appropriate to rely on the default tokenizer in SQLite, Unicode61.\n\nWe recommend using [Natural](https://naturalnode.github.io/natural/) for [`stopWords`](https://github.com/NaturalNode/natural/tree/791df0bb8011c6caa8fc2a3a00f75deed4b3a855/lib/natural/util) and [`stem()`](https://github.com/NaturalNode/natural/tree/791df0bb8011c6caa8fc2a3a00f75deed4b3a855/lib/natural/stemmers).\n\n**Example**\n\n```typescript\nimport * as utilities from \"@radically-straightforward/utilities\";\nimport natural from \"natural\";\n\nconsole.log(\n  utilities.tokenize(\n    \"For my peanuts allergy peanut butter is sometimes used.\",\n    {\n      stopWords: new Set(\n        natural.stopwords.map((stopWord) => utilities.normalizeToken(stopWord)),\n      ),\n      stem: (token) => natural.PorterStemmer.stem(token),\n    },\n  ),\n);\n// =>\n// [\n//   { token: 'peanut', tokenIsStopWord: false, start: 7, end: 14 },\n//   { token: 'allergi', tokenIsStopWord: false, start: 15, end: 22 },\n//   { token: 'peanut', tokenIsStopWord: false, start: 23, end: 29 },\n//   { token: 'butter', tokenIsStopWord: false, start: 30, end: 36 },\n//   { token: 'sometim', tokenIsStopWord: false, start: 40, end: 49 },\n//   { token: 'us', tokenIsStopWord: false, start: 50, end: 54 }\n// ]\n```\n\n### `normalizeToken()`\n\n```typescript\nexport function normalizeToken(token: string): string;\n```\n\nNormalize a token for `tokenize()`. It removes accents, for example, turning `ú` into `u`. It lower cases, for example, turning `HeLlO` into `hello`.\n\n**References**\n\n- https://stackoverflow.com/a/37511463\n\n### `highlight()`\n\n```typescript\nexport function highlight(\n  text: string,\n  search: Set<string>,\n  {\n    prefix = false,\n    start = `<span class=\"highlight\">`,\n    end = `</span>`,\n    ...tokenizeOptions\n  }: {\n    prefix?: boolean;\n    start?: string;\n    end?: string;\n  } & Parameters<typeof tokenize>[1] = {},\n): string;\n```\n\nHighlight the `search` terms in `text`. Similar to [SQLite’s `highlight()` function](https://www.sqlite.org/fts5.html#the_highlight_function), but because it’s implemented at the application level, it can work with `text` including markup by parsing the markup into DOM and traversing the DOM using `highlight()` on each [Text Node](https://developer.mozilla.org/en-US/docs/Web/API/Text).\n\n`search` is the `token` part of the value returned by `tokenize()`.\n\n**Example**\n\n```typescript\nimport * as utilities from \"@radically-straightforward/utilities\";\nimport natural from \"natural\";\n\nconst stopWords = new Set(\n  natural.stopwords.map((stopWord) => utilities.normalizeToken(stopWord)),\n);\n\nconsole.log(\n  utilities.highlight(\n    \"For my peanuts allergy peanut butter is sometimes used.\",\n    new Set(\n      utilities\n        .tokenize(\"peanuts\", {\n          stopWords,\n          stem: (token) => natural.PorterStemmer.stem(token),\n        })\n        .map((tokenWithPosition) => tokenWithPosition.token),\n    ),\n    { stopWords, stem: (token) => natural.PorterStemmer.stem(token) },\n  ),\n);\n// => `For my <span class=\"highlight\">peanuts</span> allergy <span class=\"highlight\">peanut</span> butter is sometimes used.`\n```\n\n### `snippet()`\n\n```typescript\nexport function snippet(\n  text: string,\n  search: Set<string>,\n  {\n    surroundingTokens = 5,\n    ...highlightOptions\n  }: {\n    surroundingTokens?: number;\n  } & Parameters<typeof highlight>[2] = {},\n): string;\n```\n\nExtract a snippet from a long `text` that includes the `search` terms.\n\n**Example**\n\n```typescript\nimport * as utilities from \"@radically-straightforward/utilities\";\nimport natural from \"natural\";\n\nconst stopWords = new Set(\n  natural.stopwords.map((stopWord) => utilities.normalizeToken(stopWord)),\n);\n\nconsole.log(\n  utilities.snippet(\n    utilities.dedent`\n      Typically mixed in these languages the. Paste extracted from sugarcane or sugar beet was the genesis of contemporary. British brought western style pastry to the spouts mounted on sledges or wagons. Toss their pancakes as well liked by.\n\n      Locally e g i aquatica. Hardness whiteness and gloss and.\n\n      Extensively planted as ornamental trees by homeowners businesses and. Yh t ritarit poor knights once only a dessert.\n\n      A shortbread base and was then only known. Pies of meat particularly beef chicken or turkey gravy and mixed vegetables potatoes. A level the name for an extended time to incorporate. Of soup beer bread and onions before they left for work in restaurants?\n\n      For my peanuts allergy peanut butter is sometimes used.\n\n      Is transformed from an inferior ovary i e one. They declined in popularity with the correct humidity. Christmas foods to be referred to as xoc l tl. Which part or all of them contain cocoa butter while maintaining.\n\n      Potato was called morgenmete and the united states? Used oil in place of. These sandwiches were not as sweet fillings include.\n\n      Granola mixed with achiote because. Has undergone multiple changes since then until. Made before making white chocolate they say. Confectionery recipes for them proliferated ' the.\n\n      Outdoorsman horace kephart recommended it in central america. Chickpea flour and certain areas of the peter.\n\n      Wan are the results two classic ways of manually tempering chocolate. Cost cocoa beans is ng g which is a. Croatian serbian and slovene pala. Km mi further south revealed that sweet potatoes have been identified from grinding. Rabanadas are a range of apple sauce depending on its consistency. Retail value rose percent latin?\n\n      Ghee and tea aid the body it is the largest pies of the era. In turkey ak tma in areas of central europe formerly belonging to!\n    `,\n    new Set(\n      utilities\n        .tokenize(\"peanuts\", {\n          stopWords,\n          stem: (token) => natural.PorterStemmer.stem(token),\n        })\n        .map((tokenWithPosition) => tokenWithPosition.token),\n    ),\n    { stopWords, stem: (token) => natural.PorterStemmer.stem(token) },\n  ),\n);\n// => `… work in restaurants? For my <span class=\"highlight\">peanuts</span> allergy <span class=\"highlight\">peanut</span> butter is sometimes …`\n```\n\n### `reciprocalRankFusion()`\n\n```typescript\nexport function reciprocalRankFusion(...arrays: any[][]): any[];\n```\n\nMerge multiple ranked lists into a single ranked list using [Reciprocal Rank Fusion](https://dl.acm.org/doi/10.1145/1571941.1572114). The `arrays` are expected to be sorted in descending order of relevance, for example, the first element is the most relevant and the last element is the least relevant.\n\n### `isDate()`\n\n```typescript\nexport function isDate(string: string): boolean;\n```\n\nDetermine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.\n\n### `emailRegExp`\n\n```typescript\nexport const emailRegExp: RegExp;\n```\n\nA regular expression that matches valid email addresses. This regular expression is more restrictive than the RFC—it doesn’t match some email addresses that technically are valid, for example, `example@localhost`. But it strikes a good tradeoff for practical purposes, for example, signing up in a web application.\n\n### `ISODateRegExp`\n\n```typescript\nexport const ISODateRegExp: RegExp;\n```\n\nA regular expression that matches ISO dates, for example, `2024-04-01T14:19:48.162Z`.\n\n### `Intern`\n\n```typescript\nexport type Intern<Type> = Readonly<\n  Type & {\n    [internSymbol]: true;\n  }\n>;\n```\n\nUtility type for `intern()`.\n\n### `InternInnerValue`\n\n```typescript\nexport type InternInnerValue =\n  | string\n  | number\n  | bigint\n  | boolean\n  | symbol\n  | undefined\n  | null\n  | Intern<unknown>;\n```\n\nUtility type for `intern()`.\n\n### `intern()`\n\n```typescript\nexport function intern<\n  Type extends\n    | Array<InternInnerValue>\n    | {\n        [key: string]: InternInnerValue;\n      },\n>(value: Type): Intern<Type>;\n```\n\n[Interning](<https://en.wikipedia.org/wiki/Interning_(computer_science)>) a value makes it unique across the program, which is useful for checking equality with `===` (reference equality), using it as a key in a `Map`, adding it to a `Set`, and so forth:\n\n```typescript\nimport { intern as $ } from \"@radically-straightforward/utilities\";\n\n[1] === [1]; // => false\n$([1]) === $([1]); // => true\n\n{\n  const map = new Map<number[], number>();\n  map.set([1], 1);\n  map.set([1], 2);\n  map.size; // => 2\n  map.get([1]); // => undefined\n}\n\n{\n  const map = new Map<utilities.Intern<number[]>, number>();\n  map.set($([1]), 1);\n  map.set($([1]), 2);\n  map.size; // => 1\n  map.get($([1])); // => 2\n}\n\n{\n  const set = new Set<number[]>();\n  set.add([1]);\n  set.add([1]);\n  set.size; // => 2\n  set.has([1]); // => false\n}\n\n{\n  const set = new Set<utilities.Intern<number[]>>();\n  set.add($([1]));\n  set.add($([1]));\n  set.size; // => 1\n  set.has($([1])); // => true\n}\n```\n\n> **Note:** We recommend that you alias `intern as $` when importing it to make your code less noisy.\n\n> **Node:** Inner values must be either primitives or interned values themselves, for example, `$([1, $({})])` is valid, but `$([1, {}])` is not.\n\n> **Node:** Currently only arrays (tuples) and objects (records) may be interned. In the future we may support more types, for example, `Map`, `Set`, regular expressions, and so forth.\n\n> **Note:** You must not mutate an interned value. Interned values are [frozen](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) to prevent mutation.\n\n> **Note:** Interning a value is a costly operation which grows more expensive as you intern more values. Only intern values when really necessary.\n\n> **Note:** Interned objects do not preserve the order of the attributes: `$({ a: 1, b: 2 }) === $({ b: 2, a: 1 })`.\n\n> **Note:** The pool of interned values is available as `intern.pool`. The interned values are kept with `WeakRef`s to allow them to be garbage collected when they aren’t referenced anywhere else anymore. There’s a `FinalizationRegistry` at `intern.finalizationRegistry` that cleans up interned values that have been garbage collected.\n\n**Related Work**\n\n**[JavaScript Records & Tuples Proposal](https://github.com/tc39/proposal-record-tuple)**\n\nA proposal to include immutable objects (Records) and immutable arrays (Tuples) in JavaScript. This subsumes most of the need for `intern()`.\n\nIt includes a [polyfill](https://github.com/bloomberg/record-tuple-polyfill) which works very similarly to `intern()` but requires different functions for different data types.\n\n**[`collections-deep-equal`](https://www.npmjs.com/package/collections-deep-equal)**\n\nA previous solution to this problem which took a different approach: Instead of interning the values and allowing you to use JavaScript’s `Map`s and `Set`s, `collections-deep-equal` extends `Map`s and `Set`s with a different notion of equality.\n\n`collections-deep-equal` doesn’t address the issue of comparing values with `===` (reference equality).\n\n`collections-deep-equal` does more work on every manipulation of the data structure, for example, when looking up a key in a `Map`, so it may be slower.\n\n`collections-deep-equal` has different intern pools for each `Map` and `Set` instead of `intern()`’s single global intern pool, which may be advantageous because smaller pools may be faster to traverse.\n\n**[Immutable.js](https://www.npmjs.com/package/immutable), [`collections`](https://www.npmjs.com/package/collections), [`mori`](https://www.npmjs.com/package/mori), [TypeScript Collections](https://www.npmjs.com/package/typescript-collections), [`prelude-ts`](https://www.npmjs.com/package/prelude-ts), [`collectable`](https://www.npmjs.com/package/collectable), and so forth**\n\nSimilar to `collections-deep-equal`, these libraries implement their own data structures instead of relying on JavaScript’s `Map`s and `Set`s. Some of them go a step further and add their own notions of objects and arrays, which requires you to convert your values back and forth, may not show up nicely in the JavaScript inspector, may be less ergonomic to use with TypeScript, and so forth.\n\nThe advantage of these libraries over interning is that they may be faster.\n\n**[`immer`](https://www.npmjs.com/package/immer) and [`icepick`](https://www.npmjs.com/package/icepick)**\n\nIntroduce a new way to create values based on existing values.\n\n**[`seamless-immutable`](https://www.npmjs.com/package/seamless-immutable)**\n\nModifies existing values more profoundly than freezing.\n\n**[`es6-array-map`](https://www.npmjs.com/package/es6-array-map), [`valuecollection`](https://www.npmjs.com/package/valuecollection), [`@strong-roots-capital/map-objects`](https://www.npmjs.com/package/@strong-roots-capital/map-objects), and so forth**\n\nSimilar to `collections-deep-equal` but either incomplete, or lacking type definitions, and so forth.\n\n**Other**\n\n- <https://2ality.com/2015/01/es6-maps-sets.html#why-can’t-i-configure-how-maps-and-sets-compare-keys-and-values%3F>\n- <https://stackoverflow.com/questions/21838436/map-using-tuples-or-objects>\n- <https://esdiscuss.org/topic/maps-with-object-keys>\n- <https://medium.com/@modernserf/the-tyranny-of-triple-equals-de46cc0c5723>\n- <https://medium.com/@modernserf/the-tyranny-of-triple-equals-de46cc0c5723>\n- <https://twitter.com/swannodette/status/1067962983924539392>\n- <https://gist.github.com/modernserf/c000e62d40f678cf395e3f360b9b0e43>\n\n### `setInterval()`\n\n```typescript\nexport function setInterval(\n  {\n    duration,\n    firstRun = \"async\",\n    onStop = () => {},\n  }: {\n    duration: number;\n    firstRun?: \"sync\" | \"async\" | \"delayed\";\n    onStop?: () => void | Promise<void>;\n  },\n  function_: () => void | Promise<void>,\n): {\n  run: () => Promise<void>;\n  stop: () => Promise<void>;\n};\n```\n\n> **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `setInterval()` that are better suited for their specific environments.\n\nJavaScript’s `setInterval()` and `utilities.setInterval()` are different in the following ways:\n\n1. In JavaScript’s `setInterval()`, the interval starts counting when the `function_` **starts** running, so if the `function_` takes too long to run, then there may be multiple runs of `function_` happening at the same time:\n\n   ```\n   Interval:  |--------------|--------------|...\n   Execution: |-------------------|\n                             |-------------------|\n                                            |-------------------|\n   ```\n\n   In `utilities.setInterval()`, the interval starts counting when `function_` **ends** running, so there’s always at most one run of `function_` happening at any given time:\n\n   ```\n   Interval:               |--------------|            |--------------|\n   Execution: |------------|              |------------|              ...\n   ```\n\n2. You may use `interval.run()` to force the `function_` to run right away. If the `function_` is already running, calling `interval.run()` schedules it to run again:\n\n   ```\n   interval.run():                     ↓                                ↓ ↓ ↓\n   Interval:                    |------XXXXXXXX|    |--------------|                         ...\n   Execution:      |------------|      |------------|              |------------|------------|\n   ```\n\n3. You may use `interval.stop()` to stop the interval. If the `function_` is in the middle of running, it will finish, but it will not be scheduled to run again. This is similar to how an HTTP server may terminate gracefully by stopping accepting new requests but finishing responding to existing requests. After a job has been stopped, you may not `interval.run()` it again (calling `interval.run()` has no effect).\n\n   ```\n   interval.stop():                 ↓\n   Interval:               |--------XXXXXXX|\n   Execution: |------------|\n\n\n   interval.stop():                             ↓\n   Interval:               |--------------|\n   Execution: |------------|              |------------|\n   ```\n\n4. We introduce a random variance of 10% on top of the given `duration` to avoid the `function_`s from different processes of the same kind from starting at the same time and overloading the machine.\n\n### `timeout()`\n\n```typescript\nexport async function timeout<Type>(\n  duration: number,\n  function_: () => Promise<Type>,\n): Promise<Type>;\n```\n\nRun the given `function_` up to the timeout. If the timeout is reached, the returned promise rejects, but there is no way to guarantee that the `function_` execution will stop.\n\n### `throttle()`\n\n```typescript\nexport function throttle(\n  function_: () => void | Promise<void>,\n): (() => Promise<void>) & {\n  promise: Promise<void>;\n};\n```\n\nEnsures that the given `function_` is running at most once at any given moment.\n\nIf the function is called only once, it runs immediately (this is different from Lodash’s [`debounce()`](https://lodash.com/docs/4.17.15#debounce) and [`throttle()`](https://lodash.com/docs/4.17.15#throttle) that can include a waiting time—the timing of `utilities.throttle()` is based on how long the `function_` takes to finish):\n\n```\nCalls:     ↓\nExecution: |------|\n```\n\nIf the function is called multiple times, it’s scheduled to rerun **once** after completion (this is different from enqueuing the function calls, which would run the function three times instead of twice in the following example):\n\n```\nCalls:     ↓ ↓ ↓\nExecution: |------|----|\n```\n\nThis is useful, for example, for an autocomplete feature in which an event listener of the `input` event `fetch()`es from the server.\n\nThere’s a promise available under the `.promise` property of the returned value that resolves when there’s no `function_` running. It’s useful to synchronize actions that must wait on the `function_` to be over.\n\n<!-- DOCUMENTATION END: ./source/index.mts -->\n","readmeFilename":"README.md"}