{"_id":"@alessiofrittoli/web-utils","_rev":"46-c13d6350080ed9bdd78730db4f978bc7","name":"@alessiofrittoli/web-utils","dist-tags":{"alpha":"2.0.0-alpha.5","latest":"2.3.0"},"versions":{"0.1.0":{"name":"@alessiofrittoli/web-utils","version":"0.1.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6f44f62e7842abe5b824409ada32816b267e2203","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.1.0.tgz","fileCount":11,"integrity":"sha512-QqlF0mOLWSfRs9mfu01jzEdQWYOqSYdwUlygThOMRfC7e1VIMQw93jQDf6El+fKT7GkUcN9Rt+T3HLYQtGplYg==","signatures":[{"sig":"MEQCICPj6UOfoj/TputkWMdqix/iT2TNIF8Ii8QV1jsDth4oAiA0gY3xrQO3PfhQoVEATgzpXSUY+4X+gHmDRbA0j/RIEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10525},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"}},"gitHead":"bb32ec9714b16fb0c68f4dbc56dfc87768ba3dd1","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.1.0_1736196247531_0.4832058987572505","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alessiofrittoli/web-utils","version":"0.2.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6d46f5687120bd125a09b174207354bdfa461e30","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.2.0.tgz","fileCount":11,"integrity":"sha512-8rTDSBu3x8ek+9T9GHX3yU3tpuJGdu07H94lWneXweiK/cA4CI2hz8k+PhmPo43XpjKOVDGrL7U0BuSORMdOSw==","signatures":[{"sig":"MEUCIQDDA009i4U1gggIsFUM4DUkLvrCZUTTbzxGZoQ8pfIX0QIgMrixK+zcqLJMeo90pujaKX+YYP5KEnPLWHKYkEQnRAA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10500},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"}},"gitHead":"7e1f105c16c6a82405aef375c188fc3641071042","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.2.0_1736366281303_0.7897205023484888","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alessiofrittoli/web-utils","version":"0.3.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.3.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"26997fa02b14061be03b2fe1f615eb4a8b2c44e3","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.3.0.tgz","fileCount":11,"integrity":"sha512-Dk+K1PdXgbzs/SLVShFcGy1UmP1ZvD02UNRcYlEG/sZOeyOAlBeF0JC3RPXFN2pi+Y5QvbUu0z5gHc9IJNdcxg==","signatures":[{"sig":"MEQCICpKVSf8l+qsWPf9xZRzM+1UyfLSQ2CifAc4iqfYNaumAiA7t0t32CXgk/JetIq1ZKJ4l4jlN6+sO1ocxBme/aA5Fw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11506},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"}},"gitHead":"380fa5612cb25c1b377982aee4a4927bb0c6b259","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.2","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.3.0_1736511144653_0.7775751208930317","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alessiofrittoli/web-utils","version":"0.4.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.4.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"3988eaf68e2a18ae50b8836967e97520ebfccec6","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.4.0.tgz","fileCount":15,"integrity":"sha512-XEhM/ZdOqjq7VQAwOJ9h7gaaIc40TBaeLP9T4BSGQkRbFX7EMlfG3+C63JKXjkkU1Gdw5SgiYLG97Ch3Sq11FA==","signatures":[{"sig":"MEQCIAjoYwRieF/QrLXLI/47Lbj1idci1UeZ0rQU8OwO08GkAiBXDiQYJ1dfeUbIe/jiPHNqVr4AmP0XnezLe+/yNx9eVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12958},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"}},"gitHead":"c391c5338aee9c4dc24d6e6e82e42db6c88efcc8","scripts":{"lint":"eslint","test":"jest","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.18.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.10.7","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.20.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.4.0_1737313370354_0.4297338119885934","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alessiofrittoli/web-utils","version":"0.5.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.5.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"47e7672d3284b2ca8a7094ea1eaf6afd4e6efdc0","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.5.0.tgz","fileCount":23,"integrity":"sha512-g48kJMtjJdAp194LPfj3Ww43fo6g6Nr6MoV3w6e6jQu42SjEwcGWGGVOmbmqnLpDCIDIITgkk5iU3apPuml2Ig==","signatures":[{"sig":"MEUCIQDr3xNuemQ5eG66v6cFFVLm4kKDi+8u8TiFT1lpvH8uxgIgGIdM5FJHNst0W3LUDvdkAvtNJ1VJ2N5/X57NB+H3Mm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20182},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"}},"gitHead":"9200c71eba9e551de4cca10077bd540e4fd2211d","scripts":{"lint":"eslint","test":"jest","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.18.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.10.7","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.20.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.5.0_1737968978517_0.2719227222066387","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alessiofrittoli/web-utils","version":"0.6.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.6.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"38b07782cd6c4e5317cf2fa27f043af6086780e9","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.6.0.tgz","fileCount":33,"integrity":"sha512-MQmSpFJCQo9TVc9lkSZW5NE8QXaCEwFGSpl9DSoUS+sfRZP+eRlqRaOgIBBXBk2sKY0nnYIIN4ZgUcP076c12A==","signatures":[{"sig":"MEYCIQCnZNVYTqJBuaVOjvROLV+qQ8t9exNo4u3+esr1uyV4UgIhANNke0ycARCLNkqqYTBXkf6Hp38C6zO+6Z4gyZvlr2pw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49647},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"}},"gitHead":"0957751906d846de31de9facded75aaf06e3e25b","scripts":{"lint":"eslint","test":"jest","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.18.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.10.7","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.20.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.6.0_1737969132652_0.5063528496275016","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alessiofrittoli/web-utils","version":"0.7.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.7.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"5300e6977337b3227edddd0006f06e37106c949a","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.7.0.tgz","fileCount":33,"integrity":"sha512-WmdTP1yQIK6IeY/Ys+6++LPYKH1mV+X6sWt0G801MQqMdzBWfmhzw0lSVUmN+kKzlM5MJJzXE+yqsh5HP6PGhQ==","signatures":[{"sig":"MEYCIQDtRwrv7X3RhSVdfho/ZaRlj9o2YRxXmKx12rsrSOyrwwIhAO4odL0go0CIIO1oPOpFf5kI/qGDbvIfYy4hFtjBKzUz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52025},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"}},"gitHead":"e51392bd8380fdc152a0bdb053546a9a7ee56288","scripts":{"lint":"eslint","test":"jest","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.18.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.10.7","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.20.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.7.0_1738661360781_0.5591088614122537","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@alessiofrittoli/web-utils","version":"0.8.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.8.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"0fed9d5ab34b18723d21a640e0ad55534e0d92a5","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.8.0.tgz","fileCount":69,"integrity":"sha512-iwdcEHVeMNFmvoMfHlDErCK5Ic7HEBoHOD7t/ADScmsqO4u5lo3khdXqtYkAXtmbmWJCuSELP2jsXYb0+LYAXQ==","signatures":[{"sig":"MEUCIQDLBBLlRsR3vulaJBGai5kKiMlgouX6ySJ7j865JW4WoQIgMM5bqak+Cxs2x5maWpX5gCJ9JIRcg4npl0glBR5/8Mg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433653},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"}},"gitHead":"b13ebb3ee8fef12be842a94b04ccaef49e04c13a","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:storage":"pnpm test:watch storage/index.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/date-utils":"^2.2.0","@alessiofrittoli/math-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.21.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.9","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.8.0_1741279856960_0.8223517615076203","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@alessiofrittoli/web-utils","version":"0.8.1","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@0.8.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"ced4fe0edb2339d07dfd3a7c0d7bab87b7b79d02","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-0.8.1.tgz","fileCount":69,"integrity":"sha512-QdNXRTe6Pr8yqsmrLO7zfBIULrc8as9vD1m4l8dgwVmCSlu+R0MIQb0GiRfn7OX/5ZDZDLn1Mt7ByILba7goqw==","signatures":[{"sig":"MEYCIQCtQG3wAW2rp/cxOk4zCMWoddBT6Q95jSLbrIaJLgIDYwIhAIpFmWhocPPEZ8BUImLE8UxnAUhVMNvzT1V1RBY2TuCK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":434577},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./storage":{"types":"./dist/storage/Storage.d.ts","import":"./dist/storage/Storage.mjs","require":"./dist/storage/Storage.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"gitHead":"c77dc583cdde972725bda195257b1517ed792850","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:storage":"pnpm test:watch storage/index.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/date-utils":"^2.2.0","@alessiofrittoli/math-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.21.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.21.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.9","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_0.8.1_1741340526831_0.8055811086255391","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@alessiofrittoli/web-utils","version":"1.0.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.0.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"3a0a2c036e8b82cf8dcaef01b6fee37df2050ed8","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.0.0.tgz","fileCount":69,"integrity":"sha512-khsclV8SpdNOfr2i3RIqaVG3wBRoVfW1FKk5jphwFg7ZZChnxdpQWKljWLqUZIZtdM1zgcrEsuRyuxJQTdHxvw==","signatures":[{"sig":"MEYCIQDTlsqraAwTQtHMsk/7XqMAVLhCdo98k1M/gjdA8vH75wIhAKvQ0UFlj7Yu8s6PGc7Os8GtQPj/SrE+2NEb0xWVrBCd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491242},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"gitHead":"dd21430582e4f82cb220e5eee66a58763251a4d4","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/date-utils":"^2.2.0","@alessiofrittoli/math-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.0.0_1741705968866_0.9008319190994041","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alessiofrittoli/web-utils","version":"1.1.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"e73b5a184e5f60f8ebb8a26cd1cc587a67d6be73","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.1.0.tgz","fileCount":69,"integrity":"sha512-0FmO29FTPtxTJq0b9igVWOKWBdlK+aRZTudwRRHFB09sqPJzECzqD1sqeze3boPGOyfjjTPVTbF9m0yCzUYQTA==","signatures":[{"sig":"MEUCIHqi7mK3jXcsP7HfOw7SZrUn/NaLplTJS15ObwDbre3MAiEAk5kJBuDNtwXNeW9kRlW4xgjftO6o6IjvWbMiMaPOfTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":494637},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"gitHead":"cc38ee6e2e92f612d24c233e04af5bee3a3d16ab","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/date-utils":"^2.2.0","@alessiofrittoli/math-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.1.0_1741709371574_0.9064582217159811","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alessiofrittoli/web-utils","version":"1.1.1","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.1.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"a2b5e583715ae3b4893dbd555cf8e165026f6531","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.1.1.tgz","fileCount":69,"integrity":"sha512-HS8Fij2BzFXuw8qfNLh+PzAwfSkIfvvkTQlyFuuoTZRRccrGjpnYb+drQGmfos3oHo6az9pyIbaQyeDH5ZTQKQ==","signatures":[{"sig":"MEYCIQCkV/z6pLWf6I9cjTTUwF6SmAdXn5Bd3nQyIq8jnLtY0wIhAJUD8KZayvkxRvssidSbguMRYodyhurqRgTpQsONQndM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":497271},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"gitHead":"019e2578cc86f21196070b3017b1dad2f78d57c8","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/date-utils":"^2.2.0","@alessiofrittoli/math-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.1.1_1741771423570_0.2599694966071182","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@alessiofrittoli/web-utils","version":"1.1.2","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.1.2","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"f402300f9c30f1437e46708d89ade0bc73406b9b","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.1.2.tgz","fileCount":69,"integrity":"sha512-G82EFkKjBYW+xwkws/z1AvMSQDUadQ8hhjdy3ZbhS0OMfSPCFYvD26j7TNYxqVxyisTJzOETSe/+L5WTVbUD8Q==","signatures":[{"sig":"MEYCIQDtK4QCPXOucLwceY1lqj7Sd83U9cEPTAj1KcdQKBVBCgIhAMFSlrBVDvYARpcEfZHr1O7ZqJ0uAD3s89i3qJTVB+V7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":497271},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"gitHead":"3c5371c0ae7e6e52768a6abde35a1937686920cf","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/date-utils":"^2.2.0","@alessiofrittoli/math-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.1.2_1741775609463_0.0007270673958450491","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@alessiofrittoli/web-utils","version":"1.2.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"98fd36663065425446d55267fb74d72f42b4b44e","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.2.0.tgz","fileCount":69,"integrity":"sha512-vPCt/hFXf//3Rk7rtBEF++DpaJN3Hn76/XbeEF6EFIDU0k2+UeSkDTuGdmnLTAfFQQKMdF4dhS56HhsUku5YbA==","signatures":[{"sig":"MEUCIAhW5z2PuGTrrWK6powuOu8eAnyqstfd/t3D0fy9ZoKzAiEA3i4fnkksMWFc1XAwOwnLevTqCWg51O88ApaOSYvWVDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":497483},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"gitHead":"1d89e3aa4374931b5784a20762dcfd4a5b3ca9da","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/date-utils":"^2.2.0","@alessiofrittoli/math-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.2.0_1741782846676_0.21259103376824862","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@alessiofrittoli/web-utils","version":"1.3.0","keywords":["web-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.3.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"942ae3430b0ea70fcfca07f4d13ec4a3ed2786a4","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.3.0.tgz","fileCount":81,"integrity":"sha512-iFdTO55kdAX6xEEgeMFH+vrLE+i+agD3vJSieg4E/axzyyVz0QlQLqBIY7yA0CThqVdz3pMwx6szznPT1BzyQQ==","signatures":[{"sig":"MEQCICPgZyVgXz76ErIj1b+bUrvgIc79Z+cz2LfQArw/sAf8AiA0y+jHQrRYnwFkQaE8n6sqagKQuFobtsxij79nsDU+/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":560426},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"be87b1b230ab8d3a089df5669a4f02535a18f1f0","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:cookie:jsdom":"pnpm test:watch storage/cookie-jsdom.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.2.0","@alessiofrittoli/date-utils":"^2.3.0","@alessiofrittoli/math-utils":"^1.10.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.27.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.3.0_1742473866941_0.34212439267438444","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@alessiofrittoli/web-utils","version":"1.4.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.4.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"1cca9d7bf5da6f279dac499157f7b13c3a1ac7f5","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.4.0.tgz","fileCount":81,"integrity":"sha512-LsJm/v/C61aYUdvjfR0hCK4Wj51U7pJ6UwFtW7Gaew+AYTIski4P40cm73PJuads0qnJDmB8Iv+dWk2YZMBBSw==","signatures":[{"sig":"MEUCIBc4oNNnKbMty+QBZ+A+5fHgJ2qucermdx42jrGQ9nuhAiEAgs16RSER0sipUJ6yGwsxrihT/w9nlMFBRviX4VFHXuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":559902},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"88fb3adc6600221732d5a4b58498e509c549fca4","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^2.3.1","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.11","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.27.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.4.0_1742569499407_0.9559600238231991","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@alessiofrittoli/web-utils","version":"1.5.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.5.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"5e453558bac8ad441b2874456cce8a3b6d92dfc3","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.5.0.tgz","fileCount":87,"integrity":"sha512-YJSQQJ0ZCaTm/7DGRGYYq7kh7C5nlyT7ReOw8Z2Wj0ipY2WmrFWomZy/M5DfEvHlJoSS92RT+LcFvAX68TplsA==","signatures":[{"sig":"MEUCIGIsKaePP3rW1hVSzfzp3vIVILMgq4gzQIIq0YdH5kmMAiEAjhZHksLnCbJDZmM5zU09wfTN/QMF5k5uBT23oA1wdBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563588},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"c4d8c68e2022032cf95ab955ca91b7db85af5b62","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.0.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.23.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.14","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.28.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.5.0_1743071932659_0.8485892208972143","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@alessiofrittoli/web-utils","version":"1.5.1","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.5.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"0692713cbae3bd5bb5baca61370448dd29f731e7","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.5.1.tgz","fileCount":87,"integrity":"sha512-o4UNgcTpg6725gDKkndFX9Ysy9CoJhpMk320de7lIODFNmFzOFaVdBOPyWp70KW3F7nsrwfpDXaLx4x2v5/6Ew==","signatures":[{"sig":"MEUCIQDMuAIaxXIziUFA21Njx95ns1VEVNlhLUoVZ+nLMBMljAIgUohPUcwIqogcAWnVO3o1/ww1o/+ksCM/2Pfl+SfFyK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564872},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"2d37ac987a6c1c1a6ad7a110169e5c466a41940f","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.0.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.23.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.14","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.28.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.5.1_1743586727341_0.29757832829469244","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@alessiofrittoli/web-utils","version":"1.6.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.6.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"178efe71d1bf35a75339c5aa035b75d8848f1e7a","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.6.0.tgz","fileCount":87,"integrity":"sha512-qpm/xOA7HT5Nf3j/iQpynUPKv+HUsH3SFEEcH+k0Ibziic0y97SLeIzjmLhbFkFwKKuRCNwlGuMflUBYjY6oKg==","signatures":[{"sig":"MEUCIQDYO2EwES7Pyzpds0sGgsJAYS9Vdv32qh/A6Go1t4bMdgIgOOwIkr1TPSmfUwjZ9+ADID2bMHEZvfqM7O29Zo7ZFxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568502},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"2a38cb19ec2c6b9758cefde2e3589026d44232fd","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.0.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.23.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.14","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.28.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.6.0_1744020711979_0.12137707520686591","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@alessiofrittoli/web-utils","version":"1.7.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.7.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"1a70f25a6455edeb5b2266bd62ef7efa5583e635","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.7.0.tgz","fileCount":93,"integrity":"sha512-WcNW6/4BH+pVr+1Ol1g59Vj/ND2tuS9aU3RPqBRRuTBhL3gp5KieqFCPMsLMuIf2pyYbmJGcrLE8XiApgQsQ1w==","signatures":[{"sig":"MEUCIQCkRx9VFsTCV++RrVpnfilRvJG7sZrckJxrPiqkdx3R6wIgFfKKg6ZwTs3AycIt1B6JM0gqntNDwLLM7u60r0Ui2zk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579781},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"2508cdcbee8e0799a5c0736b1881e5438e88533b","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.0.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.0.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.23.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.14","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.28.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.7.0_1744821721957_0.5156831070059922","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@alessiofrittoli/web-utils","version":"1.8.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.8.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"42af06bf61ab655efba1fe8ef912567fe0f0fbf8","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.8.0.tgz","fileCount":93,"integrity":"sha512-2HRuN0qriNN4Egaq41d3FWjQtmjUJgmrq8W/hC2Yjqm3a2q0UWrpE3MVKrTCx4WHQ4bCI3W2pmF3dvKKq74CdA==","signatures":[{"sig":"MEYCIQDrtnHTOP0bOnpilQNZFQZDQcJrbQJsJot7hhFJnwVegAIhAPEurfWt/IjbH8nBvKpTM8uTJVPkOezt8LhRNfvpXJam","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579375},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"855cf23700e2f06fddb77ba3cff6e14b426a7c0a","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.0.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.0.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.23.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.14","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.28.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.8.0_1744909222338_0.20738896954604868","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@alessiofrittoli/web-utils","version":"1.8.1","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.8.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"b66ef40e119d3d2c9aea7c1ea8362853ba94bb60","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.8.1.tgz","fileCount":93,"integrity":"sha512-pqGj2cDmYpbehwfjablFJXTTnkWS4+HKVcbO3b+1+nuMNiP95XUepQWIHrSlbCwTl61eexgwleRDQ3+BmK1tPQ==","signatures":[{"sig":"MEQCIASWIXmDrtLFITHh79Amkuw2q3ygythEvxUE9LG6gwHGAiAiuzvQPWczzEkYaA+K42FlGlKVy2sN56w9V4hFsDuwSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579377},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"06886a2c5c8e06fdbcc98c43fd1f82b5fff16099","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.0.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.0.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.23.0","globals":"^16.0.0","ts-jest":"^29.3.0","ts-node":"^10.9.2","@eslint/js":"^9.23.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.14","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.28.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.8.1_1744909460481_0.006553847626913356","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@alessiofrittoli/web-utils","version":"1.9.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.9.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"cb01a772f300fa65ae1d79a144f936ca59e0f0ea","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.9.0.tgz","fileCount":105,"integrity":"sha512-sVgRhg8ozffK21VUIuk5ctZ1GPlDY098nak2fF//NRqlY/QRTAdVs1y8HP3bOyUAIJHUdui8MU4RbuU4cGAeKQ==","signatures":[{"sig":"MEUCIQDTrdzyTXvKp8fKgJqdEfO0j78QkxoyG6BrCT4N2mR/iAIgdKQ+fkdnRzgsYLNhNL7d0msFzG8+hetgB+0EKd9Ka8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":592394},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"ccaba96c79768005c463b7dee55cc07127f06f10","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.0.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.1.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.5.0","eslint":"^9.25.1","globals":"^16.0.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@eslint/js":"^9.25.1","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.14.1","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.31.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.9.0_1745407500127_0.16560051729940706","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@alessiofrittoli/web-utils","version":"1.9.1","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.9.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"c6e56510d0693c39f692ac5bf82a64fa3103da13","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.9.1.tgz","fileCount":105,"integrity":"sha512-bp6xeiBwAhHhCbf0AdDISqW7Gx7RrRDvuzKBGLEv7AqGWJUJJ/YZBfFwuQLcFx18Bihb98V8RmtmIETOvm1qJw==","signatures":[{"sig":"MEUCIAx+VVbuIxRQeGhj1X+sUnqqRvOhPAAPguqbZnkwXl0KAiEA6CJuh0jSweHDUX9FLlLPWsgE6/w1BHEUfStZdH3MDzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":592726},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"4d7b62b137c5ec265e315da4ed39d5b27eccbae8","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.0.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.3.0","@alessiofrittoli/date-utils":"^3.1.0","@alessiofrittoli/math-utils":"^1.11.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.5.0","eslint":"^9.25.1","globals":"^16.0.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@eslint/js":"^9.25.1","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.14.1","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.31.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.9.1_1745420210504_0.30885112149062177","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@alessiofrittoli/web-utils","version":"1.10.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.10.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"f9daec79acfd38528c69f679d636b232406592ce","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.10.0.tgz","fileCount":71,"integrity":"sha512-qHVlcMjdzw9cnp681gqoGerNT3zZG9C4BPYfS9QUErIC8TcN7IiDUwGC2p+MuuggAB2TGKJq6FmbH/sH4ccWxw==","signatures":[{"sig":"MEUCIQCvAiC/4VB7KYigyg0svkblNe7FUGIHVaJ41caTx6xXZAIgcToPNAhMWh27lHh7bzhf7RjXObKb/nnW7/dOb56z0Mg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158940},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"232d3c8e436661779edaa62679da9f078ba8dd9a","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.0.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","dependencies":{"@alessiofrittoli/url-utils":"^3.4.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.13.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.5.0","eslint":"^9.25.1","globals":"^16.0.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@eslint/js":"^9.25.1","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.3","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.31.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.10.0_1746209080519_0.3723761590865826","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@alessiofrittoli/web-utils","version":"1.11.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.11.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"08de701173c8c09b6ba681e3518246dbd3855d35","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.11.0.tgz","fileCount":75,"integrity":"sha512-L/NSN2BVwaOUlvhFhku/VMMaLW+JQtTHzzKwZNQoNUCKJHo8eUChNEbL9eUiqsdVvA++iC0n5u7jzQ16NfTq9g==","signatures":[{"sig":"MEUCIQCPeI8bmf5k4I5XBLapXkdAMDpAr0jB5zBuT+n6fskrNgIgV9m5HcAUQiWu2Nk5qiXSnGNaspLo54mj4D5uoMK5lIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163063},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./arrays":{"types":"./dist/arrays.d.ts","import":"./dist/arrays.mjs","require":"./dist/arrays.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"7b5fce2f857c820c2268e4089a571180b3a70a68","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.4.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.13.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","dotenv":"^16.5.0","eslint":"^9.27.0","globals":"^16.1.0","ts-jest":"^29.3.4","ts-node":"^10.9.2","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.19","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.32.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.11.0_1747681562588_0.9926967777764202","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@alessiofrittoli/web-utils","version":"1.12.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.12.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"5e217d054412aa4095248baa9e13c9f4ad32412c","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.12.0.tgz","fileCount":79,"integrity":"sha512-g5Yb69o6LTA12NjlTajx5p0ThrAbKIKLmo2O3tYfFK/u7aLV+M4A8qUBLejWhGhfp4mM2xRlS+3AnzjoakpZVQ==","signatures":[{"sig":"MEUCIAecVvaVYKCU+8OId4IdGLedHI3YTNaW6NYZgNL9LLlRAiEA8P8ueBucLd9bkoFIPFTIt8POVqfXSOWwOIJJlU2i1lI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176139},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["@alessiofrittoli/type-utils","esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./regex":{"types":"./dist/regex.d.ts","import":"./dist/regex.mjs","require":"./dist/regex.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./arrays":{"types":"./dist/arrays.d.ts","import":"./dist/arrays.mjs","require":"./dist/arrays.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"698307e990b2d6d3ed91037c81bb06066feb4621","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.4.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.13.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.5.0","dotenv":"^16.5.0","eslint":"^9.27.0","globals":"^16.1.0","ts-jest":"^29.3.4","ts-node":"^10.9.2","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.21","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.32.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.12.0_1748094531886_0.00010129230378574938","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@alessiofrittoli/web-utils","version":"1.13.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.13.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6e26451c82e73978efbe5ea891e1c062d40548e5","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.13.0.tgz","fileCount":83,"integrity":"sha512-hYyfPZMHDkNrjpYH8AnMAB9RqYPxFExxslISW9WRbjl/rgfDF2XAJi5dSzOY1oFwxuWMROvrXWkVch4gv9faag==","signatures":[{"sig":"MEUCIGbvvk+opHx0gzVCp5KAEU8H5tAQMGFfuCRvCbSA0wBbAiEAwNSjrAZ8i4DLlVaqrMBTjDQSgXTxSyvBuxJzkIUn588=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179495},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./regex":{"types":"./dist/regex.d.ts","import":"./dist/regex.mjs","require":"./dist/regex.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./arrays":{"types":"./dist/arrays.d.ts","import":"./dist/arrays.mjs","require":"./dist/arrays.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./objects":{"types":"./dist/objects.d.ts","import":"./dist/objects.mjs","require":"./dist/objects.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"63d04e84172d627320478618cd9ff37bed16a158","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.5.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.14.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.2.0","eslint":"^9.30.1","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","@eslint/js":"^9.30.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.13","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.36.0","jest-environment-jsdom":"^30.0.4","@alessiofrittoli/node-scripts":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.13.0_1752243487392_0.6796597249549328","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"@alessiofrittoli/web-utils","version":"1.14.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.14.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"c9006c916d5a62ad738ab5bd718a6f7539bf88f4","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.14.0.tgz","fileCount":83,"integrity":"sha512-3HWdK3Z66zeSO38oqY3R9mpGdXD2ScdrW+uiZjuQ1UAiYaTib6jLNY5q+fIK0OdNyiIbezByttmz7Ysfp5cTDA==","signatures":[{"sig":"MEUCIHt3NrXfLX2MJ+uGcmSagTFlT+4lOHHC8s8YYPnKCyCEAiEAgQKa/hvRvt4coMNW09not2YFBOh7FcayFYJPxjxOB6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182370},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./regex":{"types":"./dist/regex.d.ts","import":"./dist/regex.mjs","require":"./dist/regex.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./arrays":{"types":"./dist/arrays.d.ts","import":"./dist/arrays.mjs","require":"./dist/arrays.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./objects":{"types":"./dist/objects.d.ts","import":"./dist/objects.mjs","require":"./dist/objects.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"5454ebcfb973d81e8606345ca2e7dc8e6edd7c5e","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.5.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.14.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.2.0","eslint":"^9.30.1","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","@eslint/js":"^9.30.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.13","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.36.0","jest-environment-jsdom":"^30.0.4","@alessiofrittoli/node-scripts":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.14.0_1752498143075_0.19054178036475733","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"@alessiofrittoli/web-utils","version":"1.15.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.15.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"f8a76cc5d648cb793a4e9cdaa475d7911c03e08e","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.15.0.tgz","fileCount":83,"integrity":"sha512-toihO+BzzE/8id43XgnuZr/+heB2e5Bqc9XKSD0DkEc64m6ZLh4WAAZ3bhIbdfw693XWxPl8d338OrPH187oJg==","signatures":[{"sig":"MEUCIQDyyYVwZtGEw/DeMyBe8rTIORW91A8Y4NsFsdiC1Cbi4gIgadL2Jz8l1hWFWFWpVZEPCh0QwJR+r2f453296waxZwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186667},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./regex":{"types":"./dist/regex.d.ts","import":"./dist/regex.mjs","require":"./dist/regex.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./arrays":{"types":"./dist/arrays.d.ts","import":"./dist/arrays.mjs","require":"./dist/arrays.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./objects":{"types":"./dist/objects.d.ts","import":"./dist/objects.mjs","require":"./dist/objects.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"c446ad25f02913d96cbd6fb926f9ac979e020add","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.5.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.14.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.2.0","eslint":"^9.31.0","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","@eslint/js":"^9.31.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.14","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.37.0","jest-environment-jsdom":"^30.0.4","@alessiofrittoli/node-scripts":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.15.0_1752602010417_0.7858436128172062","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"@alessiofrittoli/web-utils","version":"1.16.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.16.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"596e69fc181b5657d14e6944aed1d2ee90198a03","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.16.0.tgz","fileCount":83,"integrity":"sha512-2+KvZdgRiKHqAEHo3S1q5IpUbfAExtd0IfbNZmbS3kSCbUs6LRPShnEzQEFnW1PBEbpSd29ip92VF801tceM0A==","signatures":[{"sig":"MEYCIQD51qozCmNwZFz/HKJfCmM/HVMkDzqsESWTVyUgzIYaIgIhAM+nuVy9wFl5JzQ8hq2MimJHFq+iCt3/2u9q97Q7st1k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186989},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./regex":{"types":"./dist/regex.d.ts","import":"./dist/regex.mjs","require":"./dist/regex.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./arrays":{"types":"./dist/arrays.d.ts","import":"./dist/arrays.mjs","require":"./dist/arrays.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./objects":{"types":"./dist/objects.d.ts","import":"./dist/objects.mjs","require":"./dist/objects.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"72f9fde4bf91c822b14d2da494abd37c7cf38833","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.5.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.14.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.2.0","eslint":"^9.31.0","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","@eslint/js":"^9.31.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.14","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.37.0","jest-environment-jsdom":"^30.0.4","@alessiofrittoli/node-scripts":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.16.0_1752851257368_0.34639531670667445","host":"s3://npm-registry-packages-npm-production"}},"1.16.1":{"name":"@alessiofrittoli/web-utils","version":"1.16.1","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.16.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"13a152cea97e3c9b8d873cc192b65f4fc3325b09","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.16.1.tgz","fileCount":83,"integrity":"sha512-X0OLGbigS3U7UCqqVWFK7tEG3BI2Hv5qjJ+K8Q2Nhd9p4p3ks//z6v9nXWdyjG6NZfX47UlpITmEN1qmO43geA==","signatures":[{"sig":"MEUCIQDZE9zy0VmuTb7Yw9jC9PGMb5W3T0K6bNSS/1Qy+YMywAIgbZQn6McGVdHUsPyuzTXYLqOgyyYWmxYlMiZp0sDLfuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187087},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./dom":{"types":"./dist/dom.d.ts","import":"./dist/dom.mjs","require":"./dist/dom.js"},"./map":{"types":"./dist/map.d.ts","import":"./dist/map.mjs","require":"./dist/map.js"},"./blob":{"types":"./dist/blob.d.ts","import":"./dist/blob.mjs","require":"./dist/blob.js"},"./regex":{"types":"./dist/regex.d.ts","import":"./dist/regex.mjs","require":"./dist/regex.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.mjs","require":"./dist/types.js"},"./arrays":{"types":"./dist/arrays.d.ts","import":"./dist/arrays.mjs","require":"./dist/arrays.js"},"./device":{"types":"./dist/device/index.d.ts","import":"./dist/device/index.mjs","require":"./dist/device/index.js"},"./objects":{"types":"./dist/objects.d.ts","import":"./dist/objects.mjs","require":"./dist/objects.js"},"./strings":{"types":"./dist/strings.d.ts","import":"./dist/strings.mjs","require":"./dist/strings.js"},"./promises":{"types":"./dist/promises.d.ts","import":"./dist/promises.mjs","require":"./dist/promises.js"},"./generators":{"types":"./dist/generators.d.ts","import":"./dist/generators.mjs","require":"./dist/generators.js"},"./validation":{"types":"./dist/validation.d.ts","import":"./dist/validation.mjs","require":"./dist/validation.js"},"./browser-api":{"types":"./dist/browser-api/index.d.ts","import":"./dist/browser-api/index.mjs","require":"./dist/browser-api/index.js"},"./storage/Cookie":{"types":"./dist/storage/Cookie.d.ts","import":"./dist/storage/Cookie.mjs","require":"./dist/storage/Cookie.js"},"./storage/LocalStorage":{"types":"./dist/storage/LocalStorage.d.ts","import":"./dist/storage/LocalStorage.mjs","require":"./dist/storage/LocalStorage.js"},"./storage/SessionStorage":{"types":"./dist/storage/SessionStorage.d.ts","import":"./dist/storage/SessionStorage.mjs","require":"./dist/storage/SessionStorage.js"}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"a0a33de8052fffdbfe392fc7ed7e5eba064d8ae3","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.5.0","@alessiofrittoli/date-utils":"^3.2.0","@alessiofrittoli/math-utils":"^1.14.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.2.0","eslint":"^9.31.0","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","@eslint/js":"^9.31.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.14","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.37.0","jest-environment-jsdom":"^30.0.4","@alessiofrittoli/node-scripts":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.16.1_1752925616315_0.775743349803431","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"@alessiofrittoli/web-utils","version":"1.17.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.17.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6d93f13077e1da085f1af97073eb919ebf2dfd2b","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.17.0.tgz","fileCount":83,"integrity":"sha512-YvCz0bRlpgmjbwheuW8PYzP+9Alqe7hWmWjB5txmXNZ5584joCqiMrLTEleN/E+HI85gUXb4hX/SyqE4imodJA==","signatures":[{"sig":"MEYCIQCZOGUR5VUtdbhUP90Yfi/hmbSgRGWowFS1zehmDh96ugIhAKiXj2GDMKmiCXzzhbNcLx7DJ7mlvAnb6kR29y+H77fg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188565},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./dom":{"import":{"types":"./dist/dom.d.mts","default":"./dist/dom.mjs"},"require":{"types":"./dist/dom.d.ts","default":"./dist/dom.js"}},"./map":{"import":{"types":"./dist/map.d.mts","default":"./dist/map.mjs"},"require":{"types":"./dist/map.d.ts","default":"./dist/map.js"}},"./blob":{"import":{"types":"./dist/blob.d.mts","default":"./dist/blob.mjs"},"require":{"types":"./dist/blob.d.ts","default":"./dist/blob.js"}},"./regex":{"import":{"types":"./dist/regex.d.mts","default":"./dist/regex.mjs"},"require":{"types":"./dist/regex.d.ts","default":"./dist/regex.js"}},"./types":{"import":{"types":"./dist/types.d.mts","default":"./dist/types.mjs"},"require":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"./arrays":{"import":{"types":"./dist/arrays.d.mts","default":"./dist/arrays.mjs"},"require":{"types":"./dist/arrays.d.ts","default":"./dist/arrays.js"}},"./device":{"import":{"types":"./dist/device/index.d.mts","default":"./dist/device/index.mjs"},"require":{"types":"./dist/device/index.d.ts","default":"./dist/device/index.js"}},"./objects":{"import":{"types":"./dist/objects.d.mts","default":"./dist/objects.mjs"},"require":{"types":"./dist/objects.d.ts","default":"./dist/objects.js"}},"./strings":{"import":{"types":"./dist/strings.d.mts","default":"./dist/strings.mjs"},"require":{"types":"./dist/strings.d.ts","default":"./dist/strings.js"}},"./promises":{"import":{"types":"./dist/promises.d.mts","default":"./dist/promises.mjs"},"require":{"types":"./dist/promises.d.ts","default":"./dist/promises.js"}},"./generators":{"import":{"types":"./dist/generators.d.mts","default":"./dist/generators.mjs"},"require":{"types":"./dist/generators.d.ts","default":"./dist/generators.js"}},"./validation":{"import":{"types":"./dist/validation.d.mts","default":"./dist/validation.mjs"},"require":{"types":"./dist/validation.d.ts","default":"./dist/validation.js"}},"./browser-api":{"import":{"types":"./dist/browser-api/index.d.mts","default":"./dist/browser-api/index.mjs"},"require":{"types":"./dist/browser-api/index.d.ts","default":"./dist/browser-api/index.js"}},"./storage/Cookie":{"import":{"types":"./dist/storage/Cookie.d.mts","default":"./dist/storage/Cookie.mjs"},"require":{"types":"./dist/storage/Cookie.d.ts","default":"./dist/storage/Cookie.js"}},"./storage/LocalStorage":{"import":{"types":"./dist/storage/LocalStorage.d.mts","default":"./dist/storage/LocalStorage.mjs"},"require":{"types":"./dist/storage/LocalStorage.d.ts","default":"./dist/storage/LocalStorage.js"}},"./storage/SessionStorage":{"import":{"types":"./dist/storage/SessionStorage.d.mts","default":"./dist/storage/SessionStorage.mjs"},"require":{"types":"./dist/storage/SessionStorage.d.ts","default":"./dist/storage/SessionStorage.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"7df864eac553096c81c2b1dd8184e94dcf5c208a","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.4.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.5.0","@alessiofrittoli/date-utils":"^4.0.0","@alessiofrittoli/math-utils":"^1.14.0","@alessiofrittoli/type-utils":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.2.0","eslint":"^9.31.0","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","cross-env":"^7.0.3","@eslint/js":"^9.31.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.15","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.37.0","jest-environment-jsdom":"^30.0.4","@alessiofrittoli/node-scripts":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.17.0_1753094867246_0.7876880692433628","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"@alessiofrittoli/web-utils","version":"1.18.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.18.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"aa6b8c3eb8ca27f2553a06dd4286df2e877724ef","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.18.0.tgz","fileCount":83,"integrity":"sha512-cpjIXAM7aMllbm2Gu2HsV4t17xQgyJRUfqEiDuwLQX1hGWspU6WBCruhuVxmT5uoGNl5yha7VTqv+iEh0iwbPQ==","signatures":[{"sig":"MEQCICwneXEZqV4wxvkyfU6O+JQTLZbM5lv2ACyMYI05BqtPAiAriY4mjKoDDo7pNmGuH90tPaWATIP6CoddizJKeq6NWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188574},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./dom":{"import":{"types":"./dist/dom.d.mts","default":"./dist/dom.mjs"},"require":{"types":"./dist/dom.d.ts","default":"./dist/dom.js"}},"./map":{"import":{"types":"./dist/map.d.mts","default":"./dist/map.mjs"},"require":{"types":"./dist/map.d.ts","default":"./dist/map.js"}},"./blob":{"import":{"types":"./dist/blob.d.mts","default":"./dist/blob.mjs"},"require":{"types":"./dist/blob.d.ts","default":"./dist/blob.js"}},"./regex":{"import":{"types":"./dist/regex.d.mts","default":"./dist/regex.mjs"},"require":{"types":"./dist/regex.d.ts","default":"./dist/regex.js"}},"./types":{"import":{"types":"./dist/types.d.mts","default":"./dist/types.mjs"},"require":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"./arrays":{"import":{"types":"./dist/arrays.d.mts","default":"./dist/arrays.mjs"},"require":{"types":"./dist/arrays.d.ts","default":"./dist/arrays.js"}},"./device":{"import":{"types":"./dist/device/index.d.mts","default":"./dist/device/index.mjs"},"require":{"types":"./dist/device/index.d.ts","default":"./dist/device/index.js"}},"./objects":{"import":{"types":"./dist/objects.d.mts","default":"./dist/objects.mjs"},"require":{"types":"./dist/objects.d.ts","default":"./dist/objects.js"}},"./strings":{"import":{"types":"./dist/strings.d.mts","default":"./dist/strings.mjs"},"require":{"types":"./dist/strings.d.ts","default":"./dist/strings.js"}},"./promises":{"import":{"types":"./dist/promises.d.mts","default":"./dist/promises.mjs"},"require":{"types":"./dist/promises.d.ts","default":"./dist/promises.js"}},"./generators":{"import":{"types":"./dist/generators.d.mts","default":"./dist/generators.mjs"},"require":{"types":"./dist/generators.d.ts","default":"./dist/generators.js"}},"./validation":{"import":{"types":"./dist/validation.d.mts","default":"./dist/validation.mjs"},"require":{"types":"./dist/validation.d.ts","default":"./dist/validation.js"}},"./browser-api":{"import":{"types":"./dist/browser-api/index.d.mts","default":"./dist/browser-api/index.mjs"},"require":{"types":"./dist/browser-api/index.d.ts","default":"./dist/browser-api/index.js"}},"./storage/Cookie":{"import":{"types":"./dist/storage/Cookie.d.mts","default":"./dist/storage/Cookie.mjs"},"require":{"types":"./dist/storage/Cookie.d.ts","default":"./dist/storage/Cookie.js"}},"./storage/LocalStorage":{"import":{"types":"./dist/storage/LocalStorage.d.mts","default":"./dist/storage/LocalStorage.mjs"},"require":{"types":"./dist/storage/LocalStorage.d.ts","default":"./dist/storage/LocalStorage.js"}},"./storage/SessionStorage":{"import":{"types":"./dist/storage/SessionStorage.d.mts","default":"./dist/storage/SessionStorage.mjs"},"require":{"types":"./dist/storage/SessionStorage.d.ts","default":"./dist/storage/SessionStorage.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"1bb9a9db97ae511a474a5f1fb4f1049bfaad82a6","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.5.2","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.7.1","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^1.16.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.2.3","eslint":"^9.39.1","globals":"^16.5.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.10.1","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.48.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.18.0_1764789325908_0.5217054810680937","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"@alessiofrittoli/web-utils","version":"1.19.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.19.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"26fb7e194642dcd0330556900a12acc519eefd39","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.19.0.tgz","fileCount":87,"integrity":"sha512-P7ckpkGJGty9uyA16GBTdpn910sjI5wZrJtpde6bCRdQkgvxlpi0ThwzQGza/IVXf5SDnWdiCTpt5sfIi7OLjQ==","signatures":[{"sig":"MEQCICNHYuhIjddDQzukVFdKuWDbvPO82eOe98e36jrmbfquAiABlggS6DV1vwLttIh/vmxE6tsuwiG4wOhl5fZMeagQ/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230696},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./dom":{"import":{"types":"./dist/dom.d.mts","default":"./dist/dom.mjs"},"require":{"types":"./dist/dom.d.ts","default":"./dist/dom.js"}},"./map":{"import":{"types":"./dist/map.d.mts","default":"./dist/map.mjs"},"require":{"types":"./dist/map.d.ts","default":"./dist/map.js"}},"./blob":{"import":{"types":"./dist/blob.d.mts","default":"./dist/blob.mjs"},"require":{"types":"./dist/blob.d.ts","default":"./dist/blob.js"}},"./regex":{"import":{"types":"./dist/regex.d.mts","default":"./dist/regex.mjs"},"require":{"types":"./dist/regex.d.ts","default":"./dist/regex.js"}},"./types":{"import":{"types":"./dist/types.d.mts","default":"./dist/types.mjs"},"require":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"./arrays":{"import":{"types":"./dist/arrays.d.mts","default":"./dist/arrays.mjs"},"require":{"types":"./dist/arrays.d.ts","default":"./dist/arrays.js"}},"./device":{"import":{"types":"./dist/device/index.d.mts","default":"./dist/device/index.mjs"},"require":{"types":"./dist/device/index.d.ts","default":"./dist/device/index.js"}},"./objects":{"import":{"types":"./dist/objects.d.mts","default":"./dist/objects.mjs"},"require":{"types":"./dist/objects.d.ts","default":"./dist/objects.js"}},"./strings":{"import":{"types":"./dist/strings.d.mts","default":"./dist/strings.mjs"},"require":{"types":"./dist/strings.d.ts","default":"./dist/strings.js"}},"./promises":{"import":{"types":"./dist/promises.d.mts","default":"./dist/promises.mjs"},"require":{"types":"./dist/promises.d.ts","default":"./dist/promises.js"}},"./generators":{"import":{"types":"./dist/generators.d.mts","default":"./dist/generators.mjs"},"require":{"types":"./dist/generators.d.ts","default":"./dist/generators.js"}},"./validation":{"import":{"types":"./dist/validation.d.mts","default":"./dist/validation.mjs"},"require":{"types":"./dist/validation.d.ts","default":"./dist/validation.js"}},"./browser-api":{"import":{"types":"./dist/browser-api/index.d.mts","default":"./dist/browser-api/index.mjs"},"require":{"types":"./dist/browser-api/index.d.ts","default":"./dist/browser-api/index.js"}},"./storage/Cookie":{"import":{"types":"./dist/storage/Cookie.d.mts","default":"./dist/storage/Cookie.mjs"},"require":{"types":"./dist/storage/Cookie.d.ts","default":"./dist/storage/Cookie.js"}},"./storage/LocalStorage":{"import":{"types":"./dist/storage/LocalStorage.d.mts","default":"./dist/storage/LocalStorage.mjs"},"require":{"types":"./dist/storage/LocalStorage.d.ts","default":"./dist/storage/LocalStorage.js"}},"./storage/SessionStorage":{"import":{"types":"./dist/storage/SessionStorage.d.mts","default":"./dist/storage/SessionStorage.mjs"},"require":{"types":"./dist/storage/SessionStorage.d.ts","default":"./dist/storage/SessionStorage.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"9caf49cd80a37face369abe7eb5ea187a8a4f9ad","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.7.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.7.1","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^1.17.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.2.3","eslint":"^9.39.2","globals":"^16.5.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.0.3","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.50.0","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.19.0_1766164341816_0.7470967843928464","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"@alessiofrittoli/web-utils","version":"1.20.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@1.20.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"1a659bf2f85de4ed3a0e15da8b7c3576137a6229","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-1.20.0.tgz","fileCount":87,"integrity":"sha512-433XOudif9a9TfU7EZr+GvedeUoVFk1CnuMKUL00Gdw/hJZLiyEjzO90oVHn+KVwR5x+Ig4/9JWBVS69VCfvHA==","signatures":[{"sig":"MEQCICMpyFayUeeQDhIlrFOXyPzh6ZWlCUYrZlxs7HccCBpGAiApC3Vwj2A0KUUirl4niaETkuem6gPXm2yInJZYfDrGnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239721},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./dom":{"import":{"types":"./dist/dom.d.mts","default":"./dist/dom.mjs"},"require":{"types":"./dist/dom.d.ts","default":"./dist/dom.js"}},"./map":{"import":{"types":"./dist/map.d.mts","default":"./dist/map.mjs"},"require":{"types":"./dist/map.d.ts","default":"./dist/map.js"}},"./blob":{"import":{"types":"./dist/blob.d.mts","default":"./dist/blob.mjs"},"require":{"types":"./dist/blob.d.ts","default":"./dist/blob.js"}},"./regex":{"import":{"types":"./dist/regex.d.mts","default":"./dist/regex.mjs"},"require":{"types":"./dist/regex.d.ts","default":"./dist/regex.js"}},"./types":{"import":{"types":"./dist/types.d.mts","default":"./dist/types.mjs"},"require":{"types":"./dist/types.d.ts","default":"./dist/types.js"}},"./arrays":{"import":{"types":"./dist/arrays.d.mts","default":"./dist/arrays.mjs"},"require":{"types":"./dist/arrays.d.ts","default":"./dist/arrays.js"}},"./device":{"import":{"types":"./dist/device/index.d.mts","default":"./dist/device/index.mjs"},"require":{"types":"./dist/device/index.d.ts","default":"./dist/device/index.js"}},"./objects":{"import":{"types":"./dist/objects.d.mts","default":"./dist/objects.mjs"},"require":{"types":"./dist/objects.d.ts","default":"./dist/objects.js"}},"./strings":{"import":{"types":"./dist/strings.d.mts","default":"./dist/strings.mjs"},"require":{"types":"./dist/strings.d.ts","default":"./dist/strings.js"}},"./promises":{"import":{"types":"./dist/promises.d.mts","default":"./dist/promises.mjs"},"require":{"types":"./dist/promises.d.ts","default":"./dist/promises.js"}},"./generators":{"import":{"types":"./dist/generators.d.mts","default":"./dist/generators.mjs"},"require":{"types":"./dist/generators.d.ts","default":"./dist/generators.js"}},"./validation":{"import":{"types":"./dist/validation.d.mts","default":"./dist/validation.mjs"},"require":{"types":"./dist/validation.d.ts","default":"./dist/validation.js"}},"./browser-api":{"import":{"types":"./dist/browser-api/index.d.mts","default":"./dist/browser-api/index.mjs"},"require":{"types":"./dist/browser-api/index.d.ts","default":"./dist/browser-api/index.js"}},"./storage/Cookie":{"import":{"types":"./dist/storage/Cookie.d.mts","default":"./dist/storage/Cookie.mjs"},"require":{"types":"./dist/storage/Cookie.d.ts","default":"./dist/storage/Cookie.js"}},"./storage/LocalStorage":{"import":{"types":"./dist/storage/LocalStorage.d.mts","default":"./dist/storage/LocalStorage.mjs"},"require":{"types":"./dist/storage/LocalStorage.d.ts","default":"./dist/storage/LocalStorage.js"}},"./storage/SessionStorage":{"import":{"types":"./dist/storage/SessionStorage.d.mts","default":"./dist/storage/SessionStorage.mjs"},"require":{"types":"./dist/storage/SessionStorage.d.ts","default":"./dist/storage/SessionStorage.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"69763ba0bb6e71005ca408b2e0458382b053f8b9","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"11.7.0","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"@alessiofrittoli/url-utils":"^3.7.1","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^1.17.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.2.3","eslint":"^9.39.2","globals":"^16.5.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.0.3","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.50.0","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_1.20.0_1767204410885_0.45292697741472243","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.1":{"name":"@alessiofrittoli/web-utils","version":"2.0.0-alpha.1","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.0.0-alpha.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6eaa28cbf5d62c76825b1bb70d077ed11d483ded","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.0.0-alpha.1.tgz","fileCount":27,"integrity":"sha512-LVjcBCL2G72PN77TWrnh7CQwIRfQAwJvdMkWYYauHbMoK1MXlLgyVqbjzv0DNcRWHHzK5UdLwcuOX7IkhEO1+Q==","signatures":[{"sig":"MEQCIETxN+F5Evhbj8UQWDbL372MuZ2VGRK5UoRWnr4WJ+c4AiBAvZcTKPCNtBg16XycgEdnStSh7qB2Z4KUQctaGOOOBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196086},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"1506ad8a1dd59292dcc8e9ab7a995ac7ebd61f61","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/url-utils":"^3.7.1","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^1.18.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.0","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.3","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.0","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.0.0-alpha.1_1771359664365_0.4874972583920869","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.2":{"name":"@alessiofrittoli/web-utils","version":"2.0.0-alpha.2","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.0.0-alpha.2","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"e424e253718543ec99253810935b6b35b7581fd7","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.0.0-alpha.2.tgz","fileCount":27,"integrity":"sha512-0+g/XokLjjTnTbcmbV/I1Z6J9AfTN6VtoAmnwI/Q0fqozORMdyJ8Frjq5FvdgtgJCPV2bcvSwtodQjhdHzEl2A==","signatures":[{"sig":"MEYCIQCyepkRaAy+BqmVBIf22zTSEHCcvCfICWRlBj0lk2htBgIhAPF0AsZz5BZMBQUr6B3szuitfL/l1zDoaxCwZkDf1tAq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198844},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"e0ee603907d70d2af5e83c76556830a362649737","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/url-utils":"^3.7.1","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^1.18.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.0","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.2.3","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.0","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.0.0-alpha.2_1771613492101_0.9433660993099084","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.3":{"name":"@alessiofrittoli/web-utils","version":"2.0.0-alpha.3","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.0.0-alpha.3","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"4874a1a28e66633422ea83440ce33741274df8a3","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.0.0-alpha.3.tgz","fileCount":7,"integrity":"sha512-t5OFjcYZa2cF65HiklaJe6IwabPlfrPy/ePKM9L95Shor1paqkJ9AsG7Hl6CFjF0o1ClrUiU+o9/tjvm8RLYLQ==","signatures":[{"sig":"MEUCIQCEArTTl5SugOTUcDPOkir/TtgLM3H1ilfAsiPMWkWkawIgIqq72WYhDfOqWXPd5+u1MMTbnwxyd388uGF7vj+jclM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194986},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"e0a542043cdc99e5d4976fb8f6e3eb10e9832c1f","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/url-utils":"^3.7.1","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.3.0","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.0.0-alpha.3_1772037761250_0.02245214219969971","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.4":{"name":"@alessiofrittoli/web-utils","version":"2.0.0-alpha.4","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.0.0-alpha.4","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"01bcdc90fded238d5c7c7de891694fc1318e4d4f","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.0.0-alpha.4.tgz","fileCount":7,"integrity":"sha512-kY0KYJODWdKJHq5EF0sfH2MYsAPjqJIAqdWv7vGxXjtsJgANzXxBvmfA0TrM7Fybp9vp5/uqOk4WwiP6KgeMSQ==","signatures":[{"sig":"MEUCIGoCQi4I89Vc4+HfW1STMILG/5NWPn6U9J0U9b8uiuHMAiEA1FmTBmzH0uBvna/d2bTPQJFUCvq4wPXC5ROKwzhG6f8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216822},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"5c847d9101fe8d6894fcd55e1542394b7910629e","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/exception":"^3.5.0","@alessiofrittoli/url-utils":"^4.0.0","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.3.1","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.0.0-alpha.4_1772113131467_0.9882676604756675","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.5":{"name":"@alessiofrittoli/web-utils","version":"2.0.0-alpha.5","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.0.0-alpha.5","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"680dd15b29c15d084b65b5814dacac7940c39a4e","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.0.0-alpha.5.tgz","fileCount":7,"integrity":"sha512-8NqfZjgq2mbTVhCEl5SFNrCmmhAsf4L1A1lS6pckvJ4lazBn4p48KLsNeDShzn7ajnql94QKropJo9jnh/8G8g==","signatures":[{"sig":"MEUCIQDn/2MbH9AW0elXZuQeY/BycIIdziKXz5X+71s43Cf5GAIgFRzDpK0+MeVyL+fVeLrb4YCGczspUmvZgsyws5gnrsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221151},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"44d219180e8aa13f925792a10092e6fd8ecdc057","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/exception":"^3.5.0","@alessiofrittoli/url-utils":"^4.0.0","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.3.1","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.0.0-alpha.5_1772121225397_0.33114028320252675","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@alessiofrittoli/web-utils","version":"2.0.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.0.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6963c4d6c4e889121d97d40e9820ede4b5b44ecc","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.0.0.tgz","fileCount":7,"integrity":"sha512-mOjXE5LoDdKEiGz9tj+xLNh1FALELgTBo1LpJ6C1bR6DT/4RdcJPqjc27KCt/Pw9Ay69maG0Umxtfn4ReQpEFQ==","signatures":[{"sig":"MEUCICmaKEwJLD3Onei4F4zF0mREjfuwkzd4kerWEmkVZfIUAiEAt5fWYs6C0rpTfx+XLABetKEqP6dUxAqpJSRN22SdH9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221355},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"4f47641e977ab0f4a6d50a33ab55cd84907a0810","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/exception":"^3.5.0","@alessiofrittoli/url-utils":"^4.0.0","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.3.1","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.0.0_1772121404809_0.2418280782757245","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@alessiofrittoli/web-utils","version":"2.0.1","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.0.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"d1923fbd4ad0e2c4ca123cfd0ae9eb399b4656f9","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.0.1.tgz","fileCount":7,"integrity":"sha512-g82Xfb2g9rcLHiPAK2VSfWQsjrCXsv4sswS5mo4y0B9RdMg6qAKwc+lNQ0WXoFFio+N8UrBehlb1heAMwYcmlQ==","signatures":[{"sig":"MEYCIQD4T8ThgWekk/W9xVNjSgk84x/KU1IwAyxoytYfCy8ocwIhAL3dLYTgF0l53B1taEJC6vbPEZWmB4vrKhEMwAOLfLDJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221355},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"5e9c026fb81b0bc27efaf971d7d51ff91ace646e","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/exception":"^3.5.0","@alessiofrittoli/url-utils":"^4.0.0","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.3.1","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.0.1_1772121683762_0.6879879738575463","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@alessiofrittoli/web-utils","version":"2.1.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"d5e7530dde6786c1d00aa3258014cae8fbea8dc8","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.1.0.tgz","fileCount":7,"integrity":"sha512-UJSR193vTBvl4TPj/5QYt/jBcH0a2Ked9rtlwI/sGNJvSE1on4EFyk/vCxCszPoY82YrsAT8EdfMBh+iuVLYuA==","signatures":[{"sig":"MEUCIQDnxXB8AQ8S7aDVK54JbGU5BL7djXLt8oeRnkZQOjwkYAIgHLj/geckueDcG0vC2Z6F6Nnxjc0A6uwkr/ATzXTc/iY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236421},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"d5a79afe219b1c5302482a4cef1eb4181b4a5580","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/exception":"^3.5.0","@alessiofrittoli/url-utils":"^4.0.0","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.2","globals":"^17.3.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.3.1","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.1.0_1772370924315_0.514830319089215","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@alessiofrittoli/web-utils","version":"2.2.0","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/web-utils@2.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"7537592f3048045464afedc2edb193ede1c5d12c","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.2.0.tgz","fileCount":7,"integrity":"sha512-0+/EIfEPJw5yz8n1e9RyPsThCF+eDYu0+tFg0Nbdk4h3nz8YytNyJnzjdZlCOldgEIaaeyhIfJvtSjQOKAD4+w==","signatures":[{"sig":"MEQCIFQshDKGMWUBkzFFzp1Pa9H8sxf9KeLLv5WXgy/gwvaeAiBZ2L8K1rjHl5n8+hP2u3PHFXAEEKIUp1qHJY4UfCA0jA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243775},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"2c258083fdfd33a5033d5b2bf6087de7e5202d45","scripts":{"dev":"cross-env NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/release.js --verbose --npm","test:ci":"jest --ci --verbose","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","build:prod":"cross-env NODE_ENV=production tsup","test:local":"pnpm test:watch storage/local.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:types":"pnpm test:watch types.test.ts","test:watch":"jest --watchAll --verbose","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:device":"pnpm test:watch device/*","test:session":"pnpm test:watch storage/session.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:coverage":"pnpm test:watch --coverage","test:promises":"pnpm test:watch promises.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/web-utils.git","type":"git"},"_npmVersion":"10.9.4","description":"Common TypeScript web utilities","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/exception":"^3.5.0","@alessiofrittoli/url-utils":"^4.0.0","@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.3.1","eslint":"^10.0.2","globals":"^17.4.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","cross-env":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^25.3.3","http-server":"^14.1.1","concurrently":"^9.2.1","@jest/globals":"^30.2.0","typescript-eslint":"^8.56.1","jest-environment-jsdom":"^30.2.0","@alessiofrittoli/node-scripts":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/web-utils_2.2.0_1772642837118_0.623059631595297","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@alessiofrittoli/web-utils","version":"2.3.0","description":"Common TypeScript web utilities","author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","funding":[{"type":"github","url":"https://github.com/sponsors/alessiofrittoli"}],"keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"homepage":"https://github.com/alessiofrittoli/web-utils#readme","bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/web-utils.git"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./*":{"import":{"types":"./dist/*/index.d.mts","default":"./dist/*/index.mjs"},"require":{"types":"./dist/*/index.d.ts","default":"./dist/*/index.js"}}},"sideEffects":false,"scripts":{"//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","dev":"cross-env NODE_ENV=development tsup --watch","build:prod":"cross-env NODE_ENV=production tsup","build":"pnpm lint && pnpm test:ci && pnpm build:prod","lint":"eslint","release":"node scripts/release.js --verbose --npm","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","test":"jest --verbose","test:watch":"jest --watchAll --verbose","test:ci":"jest --ci --verbose","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","test:map":"pnpm test:watch map.test.ts","test:blob":"pnpm test:watch blob.test.ts","test:dom":"pnpm test:watch __tests__/dom.test.ts","test:generators":"pnpm test:watch generators.test.ts","test:regex":"pnpm test:watch regex.test.ts","test:strings":"pnpm test:watch strings.test.ts","test:types":"pnpm test:watch types.test.ts","test:validation":"pnpm test:watch validation.test.ts","test:cookie":"pnpm test:watch storage/cookie.test.ts storage/cookie.jsdom.test.ts","test:local":"pnpm test:watch storage/local.test.ts","test:session":"pnpm test:watch storage/session.test.ts","test:browser-api":"pnpm test:watch browser-api/*","test:device":"pnpm test:watch device/*","test:promises":"pnpm test:watch promises.test.ts"},"devDependencies":{"@alessiofrittoli/node-scripts":"^3.3.0","@eslint/js":"^10.0.1","@jest/globals":"^30.2.0","@types/jest":"^30.0.0","@types/node":"^25.4.0","concurrently":"^9.2.1","cross-env":"^10.1.0","dotenv":"^17.3.1","eslint":"^10.0.3","globals":"^17.4.0","http-server":"^14.1.1","jest":"^30.2.0","jest-environment-jsdom":"^30.2.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","tsup":"^8.5.1","typescript":"^5.9.3","typescript-eslint":"^8.57.0"},"dependencies":{"@alessiofrittoli/date-utils":"^4.1.0","@alessiofrittoli/exception":"^3.5.0","@alessiofrittoli/fetcher":"^1.1.0","@alessiofrittoli/math-utils":"^2.0.0","@alessiofrittoli/type-utils":"^1.9.0","@alessiofrittoli/url-utils":"^4.0.0"},"_id":"@alessiofrittoli/web-utils@2.3.0","gitHead":"adb6d58d46774f6082d8ac45838b1b8ed7fb8ea2","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-j5QOHYMn6XRWDPlcet0BEEs2859qTGKXW3GEALJDHa1SfR2YHeCA9iZoR4GbwTikXzctWdHq5zAXRqUqrNsilg==","shasum":"f94d485055e3ecb7b65685233f777568460f614a","tarball":"https://registry.npmjs.org/@alessiofrittoli/web-utils/-/web-utils-2.3.0.tgz","fileCount":7,"unpackedSize":247389,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIATZJolFL9dolkS+1ou00Z5QdEwHvbZwmUvftkz1f582AiEApVU0vN0fknVD7KAxC+vAXPXye1gKbZLYKqDoLKQLM5k="}]},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"directories":{},"maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-utils_2.3.0_1773099520397_0.8845189083842275"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-06T20:44:07.422Z","modified":"2026-03-09T23:38:40.692Z","0.1.0":"2025-01-06T20:44:07.811Z","0.2.0":"2025-01-08T19:58:01.737Z","0.3.0":"2025-01-10T12:12:24.816Z","0.4.0":"2025-01-19T19:02:50.569Z","0.5.0":"2025-01-27T09:09:38.678Z","0.6.0":"2025-01-27T09:12:12.836Z","0.7.0":"2025-02-04T09:29:21.040Z","0.8.0":"2025-03-06T16:50:57.157Z","0.8.1":"2025-03-07T09:42:07.056Z","1.0.0":"2025-03-11T15:12:49.103Z","1.1.0":"2025-03-11T16:09:31.824Z","1.1.1":"2025-03-12T09:23:43.795Z","1.1.2":"2025-03-12T10:33:29.666Z","1.2.0":"2025-03-12T12:34:06.854Z","1.3.0":"2025-03-20T12:31:07.142Z","1.4.0":"2025-03-21T15:04:59.598Z","1.5.0":"2025-03-27T10:38:52.987Z","1.5.1":"2025-04-02T09:38:47.568Z","1.6.0":"2025-04-07T10:11:52.251Z","1.7.0":"2025-04-16T16:42:02.215Z","1.8.0":"2025-04-17T17:00:22.554Z","1.8.1":"2025-04-17T17:04:20.813Z","1.9.0":"2025-04-23T11:25:00.322Z","1.9.1":"2025-04-23T14:56:51.073Z","1.10.0":"2025-05-02T18:04:40.739Z","1.11.0":"2025-05-19T19:06:02.799Z","1.12.0":"2025-05-24T13:48:52.103Z","1.13.0":"2025-07-11T14:18:07.564Z","1.14.0":"2025-07-14T13:02:23.266Z","1.15.0":"2025-07-15T17:53:30.606Z","1.16.0":"2025-07-18T15:07:37.548Z","1.16.1":"2025-07-19T11:46:56.511Z","1.17.0":"2025-07-21T10:47:47.447Z","1.18.0":"2025-12-03T19:15:26.132Z","1.19.0":"2025-12-19T17:12:22.008Z","1.20.0":"2025-12-31T18:06:51.063Z","2.0.0-alpha.1":"2026-02-17T20:21:04.507Z","2.0.0-alpha.2":"2026-02-20T18:51:32.258Z","2.0.0-alpha.3":"2026-02-25T16:42:41.408Z","2.0.0-alpha.4":"2026-02-26T13:38:51.614Z","2.0.0-alpha.5":"2026-02-26T15:53:45.540Z","2.0.0":"2026-02-26T15:56:44.964Z","2.0.1":"2026-02-26T16:01:23.929Z","2.1.0":"2026-03-01T13:15:24.457Z","2.2.0":"2026-03-04T16:47:17.257Z","2.3.0":"2026-03-09T23:38:40.547Z"},"bugs":{"url":"https://github.com/alessiofrittoli/web-utils/issues","email":"info@alessiofrittoli.it"},"author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","homepage":"https://github.com/alessiofrittoli/web-utils#readme","keywords":["web-utilities","typed-map","map","string-utilities","web-storage-api","browser-api-utilities"],"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/web-utils.git"},"description":"Common TypeScript web utilities","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"readme":"<h1 align=\"center\">Web Utils 🛠️</h1>\n<p align=\"center\">\n  Common TypeScript web utilities\n</p>\n<p align=\"center\">\n  <a href=\"https://npmjs.org/package/@alessiofrittoli/web-utils\">\n    <img src=\"https://img.shields.io/npm/v/@alessiofrittoli/web-utils\" alt=\"Latest version\"/>\n  </a>\n  <a href=\"https://coveralls.io/github/alessiofrittoli/web-utils\">\n    <img src=\"https://coveralls.io/repos/github/alessiofrittoli/web-utils/badge.svg\" alt=\"Test coverage\"/>\n  </a>\n  <a href=\"https://socket.dev/npm/package/@alessiofrittoli/web-utils/overview\">\n    <img src=\"https://socket.dev/api/badge/npm/package/@alessiofrittoli/web-utils\" alt=\"Socket Security score\"/>\n  </a>\n  <a href=\"https://npmjs.org/package/@alessiofrittoli/web-utils\">\n    <img src=\"https://img.shields.io/npm/dm/@alessiofrittoli/web-utils.svg\" alt=\"npm downloads\"/>\n  </a>\n  <a href=\"https://bundlephobia.com/package/@alessiofrittoli/web-utils\">\n    <img src=\"https://badgen.net/bundlephobia/dependency-count/@alessiofrittoli/web-utils\" alt=\"Dependencies\"/>\n  </a>\n  <a href=\"https://libraries.io/npm/%40alessiofrittoli%2Fweb-utils\">\n    <img src=\"https://img.shields.io/librariesio/release/npm/@alessiofrittoli/web-utils\" alt=\"Dependencies status\"/>\n  </a>\n</p>\n<p align=\"center\">\n  <a href=\"https://bundlephobia.com/package/@alessiofrittoli/web-utils\">\n    <img src=\"https://badgen.net/bundlephobia/min/@alessiofrittoli/web-utils\" alt=\"minified\"/>\n  </a>\n  <a href=\"https://bundlephobia.com/package/@alessiofrittoli/web-utils\">\n    <img src=\"https://badgen.net/bundlephobia/minzip/@alessiofrittoli/web-utils\" alt=\"minizipped\"/>\n  </a>\n  <a href=\"https://bundlephobia.com/package/@alessiofrittoli/web-utils\">\n    <img src=\"https://badgen.net/bundlephobia/tree-shaking/@alessiofrittoli/web-utils\" alt=\"Tree shakable\"/>\n  </a>\n</p>\n<p align=\"center\">\n  <a href=\"https://github.com/sponsors/alessiofrittoli\">\n    <img src=\"https://img.shields.io/static/v1?label=Fund%20this%20package&message=%E2%9D%A4&logo=GitHub&color=%23DB61A2\" alt=\"Fund this package\"/>\n  </a>\n</p>\n\n[sponsor-badge]: https://img.shields.io/static/v1?label=Fund%20this%20package&message=%E2%9D%A4&logo=GitHub&color=%23DB61A2\n[sponsor-url]: https://github.com/sponsors/alessiofrittoli\n\n### Table of Contents\n\n- [Getting started](#getting-started)\n- [What's Changed](#whats-changed)\n- [API Reference](#api-reference)\n  - [Blob utilities](#blob-utilities)\n  - [Array utilities](#array-utilities)\n  - [Dom utilities](#dom-utilities)\n    - [Scroll utilities](#scroll-utilities)\n    - [Stylesheet utilities](#stylesheet-utilities)\n  - [Generators utilities](#generators-utilities)\n  - [Map utilities](#map-utilities)\n  - [Promises utilities](#promises-utilities)\n  - [Strings utilities](#strings-utilities)\n  - [Types utilities](#types-utilities)\n  - [Validation utilities](#validation-utilities)\n  - [Objects utilities](#objects-utilities)\n  - [Browser API utilities](#browser-api-utilities)\n    - [Document Picture-in-Picture](#document-picture-in-picture)\n    - [Network Information](#network-information)\n  - [Device utilities](#device-utilities)\n  - [Storage utilities](#storage-utilities)\n    - [`Cookie` Class](#cookie-class)\n    - [`LocalStorage` Class](#localstorage-class)\n    - [`SessionStorage` Class](#sessionstorage-class)\n  - [Utils](#utils)\n- [Development](#development)\n  - [Install depenendencies](#install-depenendencies)\n  - [Build the source code](#build-the-source-code)\n  - [ESLint](#eslint)\n  - [Jest](#jest)\n- [Contributing](#contributing)\n- [Security](#security)\n- [Credits](#made-with-)\n\n---\n\n### Getting started\n\nRun the following command to start using `web-utils` in your projects:\n\n```bash\nnpm i @alessiofrittoli/web-utils\n```\n\nor using `pnpm`\n\n```bash\npnpm i @alessiofrittoli/web-utils\n```\n\n---\n\n### What's Changed\n\n#### Updates in the latest release 🎉\n\n- Add `normalizeIndex` utility function. See [API Reference](#normalizeindex) for more info.\n- Add `getPreviousIndex` utility function. See [API Reference](#getpreviousindex) for more info.\n- Add `getNextIndex` utility function. See [API Reference](#getnextindex) for more info.\n- Add `insertAfter` utility function. See [API Reference](#insertafter) for more info.\n\nOld updates:\n\n- Add `deferTask`. See [API Reference](#defertask) for more info.\n- Add `deferCallback`. See [API Reference](#defercallback) for more info.\n- Add `parameterized` function. See [API Reference](#parameterized) for more info.\n- Add Document Picture-in-Picture utilities. See [Document Picture-in-Picture](#document-picture-in-picture) for more info.\n\n---\n\n### API Reference\n\n#### Array utilities\n\n##### `arrayUnique`\n\nRemoves duplicate values from an array.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type  | Description      |\n| --------- | ----- | ---------------- |\n| `array`   | `T[]` | The input array. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `T[]`\n\nThe filtered array.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Removes duplicates from array\n\n```ts\nimport { arrayUnique } from \"@alessiofrittoli/web-utils\";\n\nconst pointer = {};\nconsole.log(arrayUnique([pointer, \"b\", pointer, \"c\", \"b\"]));\n// Outputs: [ {}, 'b', 'c' ]\n```\n\n</details>\n\n---\n\n##### `arrayObjectUnique`\n\nRemoves duplicate entries from an array referencing an object key.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter  | Type      | Description                      |\n| ---------- | --------- | -------------------------------- |\n| `array`    | `T[]`     | An array of objects.             |\n| `property` | `keyof T` | The Object property to refer to. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `T[]`\n\nThe filtered array.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Removes duplicates from array with the same propery value\n\n```ts\nimport { arrayObjectUnique } from \"@alessiofrittoli/web-utils\";\n\nconst arr = [\n  { id: 1, name: \"a\" },\n  { id: 2, name: \"b\" },\n  { id: 1, name: \"c\" }, // duplicate `id`\n  { id: 3, name: \"d\" },\n  { id: 4, name: \"a\" }, // duplicate `name`\n];\n\nconsole.log(arrayObjectUnique(arr, \"id\"));\n// Outputs: [\n//     { id: 1, name: 'a' },\n//     { id: 2, name: 'b' },\n//     { id: 3, name: 'd' },\n//     { id: 4, name: 'a' },\n// ]\n\nconsole.log(arrayObjectUnique(arr, \"name\"));\n// Outputs: [\n//     { id: 1, name: 'a' },\n//     { id: 2, name: 'b' },\n//     { id: 1, name: 'c' },\n//     { id: 3, name: 'd' },\n// ]\n```\n\n</details>\n\n---\n\n##### `listToArray`\n\nConvert a stringified Array to Array object.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description          |\n| --------- | -------- | -------------------- |\n| `string`  | `string` | An array of objects. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `string[]`\n\nThe converted stringified Array to Array object.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Basic usage\n\n```ts\nimport { listToArray } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(listToArray(\"1,2, 3, 4\").map(Number));\n// Outputs: [ 1, 2, 3, 4 ]\n```\n\n</details>\n\n---\n\n##### `chunkInto`\n\nSplit Array into chunks.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type Parameters</summary>\n\n| Parameter | Default     | Description             |\n| --------- | ----------- | ----------------------- |\n| `T`       | `unknown[]` | The input `array` type. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter       | Type               | Description                                                                                                      |\n| --------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------- |\n| `array`         | `T[]`              | The original Array.                                                                                              |\n| `options`       | `ChunkIntoOptions` | An object defining split criteria.                                                                               |\n| `options.size`  | `number`           | Will split the given Array in a way to ensure each chunk length is, whenever possible, equal to the given value. |\n| `options.count` | `number`           | Will split the given Array in a way to ensure n chunks as the given value.                                       |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `T[]`\n\nAn Array of chunks.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Basic usage\n\n```ts\nimport { chunkInto } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(chunkInto([1, 2, 3, 4, 5], { count: 2 }));\n// Output: [ [ 1, 2, 3 ], [ 4, 5 ] ]\n\nconsole.log(chunkInto([1, 2, 3, 4, 5], { size: 2 }));\n// Output: [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ]\n```\n\n</details>\n\n---\n\n##### `shuffle`\n\nShuffle the elements of an array in place using the [Fisher-Yates algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle).\n\nPlease note that this function modify the original given `array`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type parameters</summary>\n\n| Parameter | Description                                               |\n| --------- | --------------------------------------------------------- |\n| `T`       | The automatically inferred type of elements in the array. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type       | Description           |\n| --------- | ---------- | --------------------- |\n| `array`   | `Array<T>` | The array to shuffle. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `Array<T>`\n\nThe modified shuffled array.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Example</summary>\n\n```ts\nimport { shuffle } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(shuffle([1, 2, 3, 4, 5]));\n```\n\n</details>\n\n---\n\n##### `shuffleCopy`\n\nCopy and shuffle the elements of an array in place using the [Fisher-Yates algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle).\n\nSame API of [`shuffle`](#shuffle) is applied, but this function **does not modify** the original given `array`.\n\n---\n\n##### `normalizeIndex`\n\nNormalize negative indexes to a positive value.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description       |\n| --------- | -------- | ----------------- |\n| `index`   | `number` | The index.        |\n| `length`  | `number` | The array length. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `number`\n\nThe normalized index.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { normalizeIndex } from \"@alessiofrittoli/web-utils\";\n\nconst array = [0, 1, 2, 3];\n\nconsole.log(normalizeIndex(2, array.length)); // Outputs: 2\nconsole.log(normalizeIndex(-1, array.length)); // Outputs: 3\nconsole.log(normalizeIndex(-3, array.length)); // Outputs: 1\n```\n\n</details>\n\n---\n\n##### `getPreviousIndex`\n\nGet the previous index.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Default | Description       |\n| --------- | -------- | ------- | ----------------- |\n| `length`  | `number` | -       | The array length. |\n| `index`   | `number` | `0`     | The index.        |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `number`\n\nThe previous index.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { getPreviousIndex } from \"@alessiofrittoli/web-utils\";\n\nconst array = [0, 1, 2, 3];\n\nconsole.log(getPreviousIndex(array.length, 2)); // Outputs: 1\nconsole.log(getPreviousIndex(array.length, -1)); // Outputs: 2\nconsole.log(getPreviousIndex(array.length, -3)); // Outputs: 0\n```\n\n</details>\n\n---\n\n##### `getNextIndex`\n\nGet the next index.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Default | Description       |\n| --------- | -------- | ------- | ----------------- |\n| `length`  | `number` | -       | The array length. |\n| `index`   | `number` | `0`     | The index.        |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `number`\n\nThe next index.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { getNextIndex } from \"@alessiofrittoli/web-utils\";\n\nconst array = [0, 1, 2, 3];\n\nconsole.log(getNextIndex(array.length, 2)); // Outputs: 3\nconsole.log(getNextIndex(array.length, -1)); // Outputs: 0\nconsole.log(getNextIndex(array.length, -3)); // Outputs: 2\n```\n\n</details>\n\n---\n\n##### `insertAfter`\n\nInserts one or more items into an array at the specified index position.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type Parameters</summary>\n\n- `T` The type of elements in the array.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Default | Description                                   |\n| --------- | -------- | ------- | --------------------------------------------- |\n| `array`   | `T[]`    | -       | The original array to insert items into.      |\n| `item`    | `T\\|T[]` | 0       | A single item or an array of items to insert. |\n| `index`   | `number` | `-1`    | The index after which to insert the item(s).  |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `T[]`\n\nA new array with the item(s) inserted at the specified position.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { insertAfter } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(insertAfter([1, 2, 3, 4], 5)); // Outputs: [ 1, 2, 3, 4, 5 ]\nconsole.log(insertAfter([\"a\", \"c\"], \"b\", 0)); // Outputs: [ 'a', 'b', 'c' ]\nconsole.log(insertAfter([\"a\", \"b\", \"c\", \"e\"], \"d\", -2)); // Outputs: [ 'a', 'b', 'c', 'd', 'e' ]\n```\n\n</details>\n\n---\n\n##### `findIndexBy`\n\nFinds the index of the first object whose selected field strictly equals the provided value.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type Parameters</summary>\n\n- `T` The object type stored in the array.\n- `U` The key of `T` used for the comparison.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter       | Type                        | Description                                       |\n| --------------- | --------------------------- | ------------------------------------------------- |\n| `options`       | `FindInxeByOptions<T, U>`   | The search options.                               |\n| `options.items` | `T[]`                       | The collection to search.                         |\n| `options.field` | `U`                         | The object field to compare against `value`.      |\n| `options.value` | `T[U]`                      | The value that must match the selected field.     |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `number`\n\nThe index of the matching item, or `-1` when no match is found.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { findIndexBy } from \"@alessiofrittoli/web-utils\";\n\nconst users = [\n  { id: 1, name: \"Ada\" },\n  { id: 2, name: \"Grace\" },\n  { id: 3, name: \"Linus\" },\n];\n\nconsole.log(findIndexBy({ items: users, field: \"id\", value: 2 })); // Outputs: 1\nconsole.log(findIndexBy({ items: users, field: \"name\", value: \"Linus\" })); // Outputs: 2\nconsole.log(findIndexBy({ items: users, field: \"id\", value: 9 })); // Outputs: -1\n```\n\n</details>\n\n---\n\n#### Blob utilities\n\n##### `downloadBlob`\n\nCreate and download a blob object.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter  | Type           | Description                         |\n| ---------- | -------------- | ----------------------------------- |\n| `filename` | `string`       | The download file name.             |\n| `data`     | `BodyInit`     | The download file data.             |\n| `init`     | `ResponseInit` | (Optional) The ResponseInit object. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Download file from HTTP Response\n\n```ts\nimport { downloadBlob } from '@alessiofrittoli/web-utils'\n\nfetch( ... )\n  .then( response => response.formData() )\n  .then( async data => {\n    await Promise.all(\n      Array.from( data.entries() )\n        .map( async ( [, file ] ) => {\n          if ( ! ( file instanceof File ) ) return\n          await downloadBlob( file.name, file )\n        } )\n    )\n  } )\n  .catch( error => {\n    console.error( error )\n  } )\n```\n\n</details>\n\n---\n\n#### Dom utilities\n\n##### Scroll utilities\n\n###### `blockScroll`\n\nPrevent Element Overflow.\n\nIt calculates the scrollbar width and the resulting value is applied to the target element right padding-right to prevent width grows.\n\nIt also applies the `--scrollbar-size` CSS variable that can be used to apply a padding-right to the position fixed elements inside the target.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type          | Default                    | Description                    |\n| --------- | ------------- | -------------------------- | ------------------------------ |\n| `target`  | `HTMLElement` | `Document.documentElement` | (Optional) The target Element. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Block Document HTML scroll when a popup is opened\n\n```ts\nimport { blockScroll } from \"@alessiofrittoli/web-utils\";\n\nconst openPopUpHandler = () => {\n  blockScroll();\n  // ... handle popup\n};\n```\n\n```css\n.modal-wrapper {\n  position: fixed;\n  inset: 0;\n  padding-right: var(--scrollbar-size, 0);\n}\n```\n\n---\n\n###### Block scroll of a specific HTMLElement\n\n```ts\nimport { blockScroll } from \"@alessiofrittoli/web-utils\";\n\nconst element = document.querySelector(\".css-selector\");\n\nif (element) {\n  blockScroll(element);\n}\n```\n\n</details>\n\n---\n\n###### `restoreScroll`\n\nRestore Element Overflow.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type          | Default                    | Description                    |\n| --------- | ------------- | -------------------------- | ------------------------------ |\n| `target`  | `HTMLElement` | `Document.documentElement` | (Optional) The target Element. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Restore Document HTML scroll when a popup is closed\n\n```ts\nimport { restoreScroll } from \"@alessiofrittoli/web-utils\";\n\nconst closePopUpHandler = () => {\n  // ... handle close\n  restoreScroll();\n};\n```\n\n---\n\n###### Restore scroll of a specific HTMLElement\n\n```ts\nimport { restoreScroll } from \"@alessiofrittoli/web-utils\";\n\nconst element = document.querySelector(\".css-selector\");\n\nif (element) {\n  restoreScroll(element);\n}\n```\n\n</details>\n\n---\n\n##### Stylesheet utilities\n\n###### Types\n\n###### UrlStylesheet\n\nRepresents a URL stylesheet as a simple URL input, URL object or as an object with URL and fetch configuration options.\n\n```ts\ntype UrlStylesheet =\n  | UrlInput\n  | {\n      /**\n       * The URL string or a URL object of the stylesheet to load.\n       *\n       */\n      url: UrlInput;\n      /**\n       * Indicates whether to fetch the given URL.\n       *\n       * @default false\n       */\n      fetch?: boolean;\n    };\n```\n\n---\n\n###### Style\n\nRepresents a style input.\n\n```ts\ntype Style = UrlStylesheet | HTMLStyleElement | CSSStyleSheet | StyleSheetList;\n```\n\n---\n\n###### Styles\n\nRepresents a single style object or an array of style objects.\n\n```ts\ntype Styles = Style | Style[];\n```\n\n---\n\n###### `cloneStyleSheetList`\n\nClones a StyleSheetList or array of CSSStyleSheets into an array of `HTMLStyleElement` objects.\n\nThis function extracts CSS rules from each stylesheet and creates corresponding `<style>`\nelements containing the serialized CSS text. If an error occurs while processing a stylesheet,\nthe error is logged and that stylesheet is skipped.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type                              | Description                                                               |\n| --------- | --------------------------------- | ------------------------------------------------------------------------- |\n| `styles`  | `StyleSheetList\\|CSSStyleSheet[]` | The source `StyleSheetList` or array of `CSSStyleSheet` objects to clone. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `HTMLStyleElement[]`\n\n- An array of `HTMLStyleElement` objects, each containing the CSS rules from the source stylesheets.\n- Failed stylesheets are filtered out and not included in the result.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { cloneStyleSheetList } from \"@alessiofrittoli/web-utils\";\n\nconst styles = cloneStyleSheetList(document.styleSheets);\n// do something with cloned stylesheets\n// styles.forEach( style => shadowRoot.appendChild( style ) )\n```\n\n</details>\n\n---\n\n###### `cloneStyleSheets`\n\nClones style sheets from various sources into new `HTMLStyleElement` nodes.\n\n- When a URL stylesheet has `fetch: true`, the stylesheet content is fetched and embedded as inline CSS.\n- When `fetch: false` (default), a link element is created instead.\n- URL parsing is handled through the `Url` utility with support for both string and `UrlInput` object formats.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description                                                   |\n| --------- | -------- | ------------------------------------------------------------- |\n| `styles`  | `Styles` | A style source or array of style sources.                     |\n|           |          | - See [`Styles`](#styles) type for a list of possible values. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `Promise<CloneStyleSheetsReturn>`\n\n- A promise that resolves to an array of cloned `HTMLStyleElement` and `HTMLLinkElement` nodes.\n- For inline styles and StyleSheetLists, returns `HTMLStyleElement` nodes.\n- For URL-based stylesheets, returns `HTMLLinkElement` nodes (or `HTMLStyleElement` if fetch is `true`).\n- Failed operations are silently ignored.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n###### Cloning `StyleSheetList`\n\n```ts\nimport { cloneStyleSheets } from \"@alessiofrittoli/web-utils\";\n\nconst styles = await cloneStyleSheets(document.styleSheets);\n// do something with cloned dcoument stylesheets\n// styles.forEach( style => shadowRoot.appendChild( style ) )\n```\n\n---\n\n###### Cloning stylesheets from URL\n\n```ts\nimport { cloneStyleSheets } from \"@alessiofrittoli/web-utils\";\n\nconst styles = await cloneStyleSheets(\"/path-to-stylesheet-file.css\");\n\nconst styles = await cloneStyleSheets({\n  url: \"/path-to-stylesheet-file-2.css\",\n  fetch: true,\n});\n\nconst styles = await cloneStyleSheets([\n  \"/path-to-stylesheet-file-3.css\",\n  { url: \"/path-to-stylesheet-file-4.css\", fetch: true },\n]);\n```\n\n</details>\n\n---\n\n#### Generators utilities\n\n##### `isGeneratorFunction`\n\nCheck if a function is a `GeneratorFunction` or `AsyncGeneratorFunction`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter   | Type      | Description            |\n| ----------- | --------- | ---------------------- |\n| `reference` | `unknown` | The function to check. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `reference` is `GeneratorFunction | AsyncGeneratorFunction`\n\n- `true` if the given `reference` is a `GeneratorFunction` or `AsyncGeneratorFunction`.\n- `false` otherwise.\n\n</details>\n\n---\n\n##### `isDefaultGeneratorFunction`\n\nCheck if a function is a `GeneratorFunction`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter   | Type      | Description            |\n| ----------- | --------- | ---------------------- |\n| `reference` | `unknown` | The function to check. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `reference` is `GeneratorFunction`\n\n- `true` if the given `reference` is a `GeneratorFunction`.\n- `false` otherwise.\n\n</details>\n\n---\n\n##### `isAsyncGeneratorFunction`\n\nCheck if a function is an `AsyncGeneratorFunction`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter   | Type      | Description            |\n| ----------- | --------- | ---------------------- |\n| `reference` | `unknown` | The function to check. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `reference` is `AsyncGeneratorFunction`\n\n- `true` if the given `reference` is an `AsyncGeneratorFunction`.\n- `false` otherwise.\n\n</details>\n\n---\n\n##### `isGeneratorObject<T>`\n\nCheck if reference is a `Generator` or `AsyncGenerator`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter   | Type      | Description             |\n| ----------- | --------- | ----------------------- |\n| `reference` | `unknown` | The reference to check. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `reference` is `Generator<T> | AsyncGenerator<T>`\n\n- `true` if the given `reference` is a `Generator` or `AsyncGenerator`.\n- `false` otherwise.\n\n</details>\n\n---\n\n##### `isDefaultGeneratorObject<T>`\n\nCheck if reference is a `Generator`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter   | Type      | Description             |\n| ----------- | --------- | ----------------------- |\n| `reference` | `unknown` | The reference to check. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `reference` is `Generator<T>`\n\n- `true` if the given `reference` is a `Generator`.\n- `false` otherwise.\n\n</details>\n\n---\n\n##### `isAsyncGeneratorObject<T>`\n\nCheck if reference is an `AsyncGenerator`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter   | Type      | Description             |\n| ----------- | --------- | ----------------------- |\n| `reference` | `unknown` | The reference to check. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `reference` is `AsyncGenerator<T>`\n\n- `true` if the given `reference` is an `AsyncGenerator`.\n- `false` otherwise.\n\n</details>\n\n---\n\n#### Map utilities\n\n##### Interface `TypedMap<T, P, K>`\n\nA type-safe extension of the Map class that enforces key-value relationships based on a provided type.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type parameters</summary>\n\n| Parameter | Type                      | Default   | Description                                                                         |\n| --------- | ------------------------- | --------- | ----------------------------------------------------------------------------------- |\n| `T`       | `Record<string, unknown>` | `unknown` | The object type defining the key-value relationships.                               |\n| `P`       | `boolean`                 | `true`    | Defines whether the `Map.get()` method should return a possibily `undefined` value. |\n| `K`       | `keyof T`                 | `keyof T` | Internal - The subset of keys in T that are allowed in the Map.                     |\n\n</details>\n\n---\n\n##### `getTypedMap<T, P, K>`\n\nCreates a new instance of a type-safe `Map` with the given type.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type parameters</summary>\n\n- See [Interface `TypedMap<T, P, K>` - Type parameters](#interface-typedmapt-p-k)\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter  | Type                                       | Description                                |\n| ---------- | ------------------------------------------ | ------------------------------------------ |\n| `iterable` | `Iterable<readonly [ K, T[ K ] ]> \\| null` | Initial `Map` constructor iterable object. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `TypedMap<T, P, K>`\n\nA new instance of a type-safe `Map`.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Basic usage\n\n```ts\nimport { getTypedMap } from \"@alessiofrittoli/web-utils\";\n\ninterface User {\n  name: string;\n  age: number;\n  isActive: boolean;\n}\n\nconst user = getTypedMap<User>([\n  [\"name\", \"Foo\"],\n  [\"age\", 27],\n  [\"isActive\", true],\n]);\n\nconsole.log(user.get(\"name\")); // type: `string | undefined`\nconsole.log(user.get(\"age\")); // type: `number | undefined`\nconsole.log(user.get(\"isActive\")); // type: `boolean | undefined`\n```\n\n---\n\n###### Respect the given type\n\n```ts\nimport { getTypedMap } from \"@alessiofrittoli/web-utils\";\n\ninterface User {\n  name: string;\n  age: number;\n  isActive: boolean;\n  banned?: boolean;\n}\n\nconst user = getTypedMap<User, false>([\n  [\"name\", \"Foo\"],\n  [\"age\", 27],\n  [\"isActive\", true],\n]);\n\nconsole.log(user.get(\"name\")); // type: `string`\nconsole.log(user.get(\"age\")); // type: `number`\nconsole.log(user.get(\"isActive\")); // type: `boolean`\nconsole.log(user.get(\"banned\")); // type: `boolean | undefined`\n```\n\n</details>\n\n---\n\n#### Promises utilities\n\n##### `sleep`\n\nAwait a void Promise that resolves after the given time.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description                                                    |\n| --------- | -------- | -------------------------------------------------------------- |\n| `time`    | `number` | The sleep time in milliseconds after the Promise get resolved. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `Promise<void>`\n\nA new Promise which get resolved after the specified time.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { sleep } from \"@alessiofrittoli/web-utils\";\n\nconst fn = async () => {\n  // ...\n  await sleep(2000);\n  // ...\n};\n```\n\n</details>\n\n---\n\n##### `deferTask`\n\nDefer task so main-thread is not blocked in order to quickly paint and respond to user interaction.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type Parameters</summary>\n\n| Parameter | Description                                                                                       |\n| --------- | ------------------------------------------------------------------------------------------------- |\n| `T`       | The task function definition. `unknown` types will be inherited by your function type definition. |\n| `U`       | The task function arguments. `unknown` types will be inherited by your function type.             |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type | Description                                      |\n| --------- | ---- | ------------------------------------------------ |\n| `task`    | `T`  | The task callable function.                      |\n| `...args` | `U`  | Arguments required by the given `task` function. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `Promise<Awaited<ReturnType<T>>>`\n\nA new Promise which returns the `task` result once fulfilled.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Basic usage\n\n```ts\nimport { deferTask } from '@alessiofrittoli/web-utils'\n\nconst myLongTask = () => {\n  ...\n}\n\nbutton.addEventListener( 'click', () => {\n  deferTask( myLongTask )\n} )\n```\n\n---\n\n###### With custom arguments\n\n```ts\nimport { deferTask } from '@alessiofrittoli/web-utils'\n\nconst myLongTask = ( target: HTMLButtonElement ) => {\n  ...\n}\n\nbutton.addEventListener( 'click', event => {\n  const target = event.target as HTMLButtonElement\n  deferTask( myLongTask, target )\n} )\n```\n\n</details>\n\n---\n\n##### `deferCallback`\n\nDefer task handler so main-thread is not blocked in order to quickly paint and respond to user interaction.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type Parameters</summary>\n\n| Parameter | Description                                                                                       |\n| --------- | ------------------------------------------------------------------------------------------------- |\n| `T`       | The task function definition. `unknown` types will be inherited by your function type definition. |\n| `U`       | The task function arguments. `unknown` types will be inherited by your function type.             |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type | Description                 |\n| --------- | ---- | --------------------------- |\n| `task`    | `T`  | The task callable function. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `( ...args: U ) => Promise<Awaited<ReturnType<T>>>`\n\nA new handler which returns a new Promise that returns the `task` result once fulfilled.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { deferCallback } from '@alessiofrittoli/web-utils'\n\nconst myLongTask = ( event: Event ) => {\n  ...\n}\n\nbutton.addEventListener( 'click', deferCallback( myLongTask ) )\n```\n\n</details>\n\n---\n\n#### Strings utilities\n\n##### `ucFirst`\n\nMake first letter uppercase.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description                  |\n| --------- | -------- | ---------------------------- |\n| `input`   | `string` | The input string to convert. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `string`\n\nThe processed string.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { ucFirst } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(ucFirst(\"String value\")); // Outputs: 'String value'\nconsole.log(ucFirst(\"string value\")); // Outputs: 'String value'\n```\n\n</details>\n\n---\n\n##### `lcFirst`\n\nMake first letter lowercase.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description                  |\n| --------- | -------- | ---------------------------- |\n| `input`   | `string` | The input string to convert. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `string`\n\nThe processed string.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { lcFirst } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(lcFirst(\"String value\")); // Outputs: 'string value'\nconsole.log(lcFirst(\"string value\")); // Outputs: 'string value'\n```\n\n</details>\n\n---\n\n##### `toCamelCase`\n\nConvert string to camelCase.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description                  |\n| --------- | -------- | ---------------------------- |\n| `input`   | `string` | The input string to convert. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `string`\n\nThe converted string to camelCase.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { toCamelCase } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(toCamelCase(\"font-family\")); // Outputs: 'fontFamily'\nconsole.log(toCamelCase(\"background-color\")); // Outputs: 'backgroundColor'\nconsole.log(toCamelCase(\"-webkit-align-content\")); // Outputs: 'WebkitAlignContent'\nconsole.log(toCamelCase(\"some value\")); // Outputs: 'someValue'\nconsole.log(toCamelCase(\"some_value\")); // Outputs: 'someValue'\nconsole.log(toCamelCase(\"some value_with mixed_Cases\")); // Outputs: 'someValueWithMixedCases'\nconsole.log(toCamelCase(\"-string@with#special$characters\")); // Outputs: 'StringWithSpecialCharacters'\n```\n\n</details>\n\n---\n\n##### `toKebabCase`\n\nConvert string to kebab-case string.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description                  |\n| --------- | -------- | ---------------------------- |\n| `input`   | `string` | The input string to convert. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `string`\n\nThe converted string to kebab-case.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { toKebabCase } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(toKebabCase(\"fontFamily\")); // Outputs: 'font-family'\nconsole.log(toKebabCase(\"backgroundColor\")); // Outputs: 'background-color'\nconsole.log(toKebabCase(\"string with spaces\")); // Outputs: 'string-with-spaces'\nconsole.log(toKebabCase(\"string_with_underscores\")); // Outputs: 'string-with-underscores'\nconsole.log(toKebabCase(\"WebkitAlignContent\")); // Outputs: '-webkit-align-content'\nconsole.log(toKebabCase(\"some value_with mixed_Cases\")); // Outputs: 'some-value-with-mixed-cases'\nconsole.log(toKebabCase(\"-string@with#special$characters\")); // Outputs: '-string-with-special-characters\n```\n\n</details>\n\n---\n\n##### `stringifyValue`\n\nStringify value.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type  | Description             |\n| --------- | ----- | ----------------------- |\n| `input`   | `any` | The value to stringify. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `string`\n\nThe stringified `input`.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { stringifyValue } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(stringifyValue(new Date(\"Sat, 20 Apr 2025 16:20:00 GMT\")));\n// Outputs: '2025-04-20T16:20:00.000Z'\n\nconsole.log(stringifyValue(null));\n// Outputs: 'null'\n\nconsole.log(stringifyValue({ prop: \"value\", prop2: true }));\n// Outputs: '{\"prop\":\"value\",\"prop2\":true}'\n\nconsole.log(stringifyValue([1, 2, true, null, () => {}]));\n// Outputs: '[1,2,true,null,null]'\n\nconsole.log(\n  stringifyValue(\n    new Map([\n      [\"key\", \"value\"],\n      [\"key2\", \"value\"],\n    ]),\n  ),\n);\n// Outputs: '[[\"key\",\"value\"],[\"key2\",\"value\"]]'\n\nconsole.log(\n  stringifyValue(\n    new Headers({\n      key: \"value\",\n      key2: \"value\",\n    }),\n  ),\n);\n// Outputs: '[[\"key\",\"value\"],[\"key2\",\"value\"]]'\n\nconsole.log(stringifyValue(true)); // Outputs: 'true'\nconsole.log(stringifyValue(false)); // Outputs: 'false'\nconsole.log(stringifyValue(0)); // Outputs: '0'\nconsole.log(stringifyValue(420)); // Outputs: '420'\n\nconsole.log(stringifyValue(undefined)); // Outputs: ''\nconsole.log(stringifyValue(() => {})); // Outputs: ''\nconsole.log(stringifyValue(new Promise<void>((resolve) => resolve()))); // Outputs: ''\n```\n\n</details>\n\n---\n\n##### `parseValue`\n\nParse stringified value.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type parameters</summary>\n\n| Parameter | Description                       |\n| --------- | --------------------------------- |\n| `T`       | The expected returned value type. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description         |\n| --------- | -------- | ------------------- |\n| `input`   | `string` | The value to parse. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `T | undefined`\n\n- The parsed `input`.\n- `undefined` if no `input` or empty `string` is given.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { parseValue } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(parseValue<Date>(stringifyValue(new Date())));\n// Outputs: current Date object.\n\nconsole.log(parseValue<number>(\"12345\")); // Outputs: 12345\nconsole.log(parseValue()); // Outputs: undefined\nconsole.log(parseValue(\" \")); // Outputs: undefined\n\nconsole.log(parseValue<true>(stringifyValue(true)));\n// Outputs: true\n\nconsole.log(parseValue(stringifyValue({ key: \"value\" })));\n// Outputs: { key: 'value' }\n\nconsole.log(parseValue(stringifyValue([1, 2, 3, 4, 5])));\n// Outputs: [ 1, 2, 3, 4, 5 ]\n\nconsole.log(parseValue(\"String value\")); // Outputs: 'String value'\n```\n\n</details>\n\n---\n\n##### `parameterized`\n\nCreates a parameterized string with placeholder values.\n\n###### Types\n\n###### `ParameterizedValue`\n\nRepresents a value that can be used as a parameter in string operations.\n\n```ts\ntype ParameterizedValue = string | boolean | number | bigint;\n```\n\n###### `Parameterized`\n\nRepresents a parameterized string with its corresponding values.\n\n```ts\ntype Parameterized = [string, ParameterizedValue[]];\n```\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { parameterized } from \"@alessiofrittoli/web-utils\";\n\nconst data = {\n  value: \"parameterized\",\n};\n\nconsole.log(parameterized`My string with ${data.value} values.`); // [ 'My string with ? values.', [ 'parameterized' ] ]\n```\n\n</details>\n\n---\n\n#### Types utilities\n\n⚠️ Docs coming soon\n\n---\n\n#### Validation utilities\n\n⚠️ Docs coming soon\n\n#### Objects utilities\n\n⚠️ Docs coming soon\n\n---\n\n#### Browser API utilities\n\n##### `getMediaMatches`\n\nSafely executes `window.matchMedia()` in server and browser environments.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description                      |\n| --------- | -------- | -------------------------------- |\n| `query`   | `string` | The Media Query string to check. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `boolean`\n\n- `false` if `window` is not defined or if the `document` currently doesn't matches the given `query`.\n- `true` otherwise.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Check if current device is landscape oriented\n\n```ts\nimport { getMediaMatches } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(!getMediaMatches(\"(orientation:portrait)\"));\n```\n\n</details>\n\n---\n\n##### `openBrowserPopUp`\n\nOpens a webpage in a browser PopUp.\n\nThe `openBrowserPopUp` uses [`Window.open()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) under the hood, but provides default options to make your work easier.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter          | Type                      | Default | Description                                                                                                                                                                  |\n| ------------------ | ------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `options`          | `OpenBrowserPopUpOptions` | -       | An object defining custom PopUp options.                                                                                                                                     |\n| `options.url`      | `UrlInput`                | -       | The URL or path of the resource to be loaded. See [UrlInput](https://github.com/alessiofrittoli/url-utils?tab=readme-ov-file#urlinput) for more info about accepted formats. |\n| `options.width`    | `number`                  | `600`   | The PopUp width.                                                                                                                                                             |\n| `options.height`   | `number`                  | `800`   | The PopUp height.                                                                                                                                                            |\n| `options.context`  | `string`                  | -       | A string, without whitespace, specifying the name of the browsing context the resource is being loaded into.                                                                 |\n| `options.features` | `OptionsFeatures`         | -       | Additional custom PopUp features.                                                                                                                                            |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `WindowProxy | null`\n\n- a `WindowProxy` object is returned if the browser successfully opens the new browsing context.\n- `null` is returned if the browser fails to open the new browsing context, for example because it was blocked by a browser popup blocker.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Re-focus a previously opened popup\n\n```ts\nimport { openBrowserPopUp } from \"@alessiofrittoli/web-utils\";\n\nlet windowProxy: WindowProxy | null = null;\n\nconst clickHandler = () => {\n  if (windowProxy && !windowProxy.closed) {\n    return windowProxy.focus();\n  }\n\n  windowProxy = openBrowserPopUp({\n    url: {\n      pathname: \"/\",\n      query: { key: \"value\" },\n    },\n  });\n};\n```\n\n---\n\n###### Re-use a popup\n\n```ts\nimport { openBrowserPopUp } from \"@alessiofrittoli/web-utils\";\n\nconst clickHandler = () => {\n  openBrowserPopUp({\n    context: \"some-context-name\",\n    url: {\n      pathname: \"/\",\n      query: { key: \"value\" },\n    },\n  });\n};\n\nconst clickHandler2 = () => {\n  openBrowserPopUp({\n    context: \"some-context-name\",\n    url: \"/other-path\",\n  });\n};\n```\n\n</details>\n\n---\n\n##### Document Picture-in-Picture\n\n###### Types\n\n###### `OpenDocumentPictureInPictureOptions`\n\nDefines configuration options for opening a Document Picture-in-Picture window.\n\n<details>\n\n<summary style=\"cursor:pointer\">Properties</summary>\n\n| Property                       | Type              | Default        | Description                                                                                |\n| ------------------------------ | ----------------- | -------------- | ------------------------------------------------------------------------------------------ |\n| `sizes`                        | `InputDimensions` | `[ 250, 250 ]` | A tuple defining non-negative numbers representing the width and the height to set         |\n|                                |                   |                | for the Picture-in-Picture window's viewport, in pixels.                                   |\n|                                |                   |                | - See [`InputDimensions`](#inputdimensions) type for a list of possible values.            |\n| `disallowReturnToOpener`       | `boolean`         | `false`        | Hints to the browser that it should not display a UI control that enables the              |\n|                                |                   |                | user to return to the originating tab and close the Picture-in-Picture window.             |\n| `preferInitialWindowPlacement` | `boolean`         | `false`        | Defines whether the Picture-in-Picture window will always appear back at the               |\n|                                |                   |                | position and size it initially opened at, when it is closed and then reopened.             |\n|                                |                   |                | By contrast, if `preferInitialWindowPlacement` is `false` the                              |\n|                                |                   |                | Picture-in-Picture window's size and position will be remembered when closed               |\n|                                |                   |                | and reopened — it will reopen at its previous position and size,                           |\n|                                |                   |                | for example as set by the user.                                                            |\n| `styles`                       | `Styles`          | -              | Custom styles to load inside the Picture-in-Picture window.                                |\n|                                |                   |                | - See [`Styles`](#styles) type for a list of possible values.                              |\n|                                |                   |                | ⚠️ To keep consistent styling with your web-app, document styles are automatically cloned. |\n| `onQuit`                       | `() => void`      | -              | A callback to execute when Picture-in-Picture window is closed.                            |\n\n</details>\n\n---\n\n###### `OpenDocumentPictureInPicture`\n\nDefines the returned result of opening a Document Picture-in-Picture window.\n\n<details>\n\n<summary style=\"cursor:pointer\">Properties</summary>\n\n| Property | Type     | Description                                                         |\n| -------- | -------- | ------------------------------------------------------------------- |\n| `window` | `Window` | The browsing context inside the Document Picture-in-Picture window. |\n\n</details>\n\n---\n\n###### `isDocumentPictureInPictureSupported`\n\nChecks if the Document Picture-in-Picture API is supported by the current browser.\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `boolean`\n\n- `true` if Document Picture-in-Picture is supported.\n- `false` otherwise.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { isDocumentPictureInPictureSupported } from \"@alessiofrittoli/web-utils\";\n\nif ( isDocumentPictureInPictureSupported() ) {\n  ...\n}\n```\n\n</details>\n\n---\n\n###### `requiresDocumentPictureInPictureAPI`\n\nValidates that the Document Picture-in-Picture API is supported by the current browser.\n\n- Throws a new `Exception` with code `ErrorCode.DOCUMENT_PIP_NOT_SUPPORTED` if the Document Picture-in-Picture API is not supported.\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { Exception } from \"@alessiofrittoli/exception\";\nimport { requiresDocumentPictureInPictureAPI, ErrorCode } from \"@alessiofrittoli/web-utils\";\n\nconst myFunction = () => {\n  requiresDocumentPictureInPictureAPI()\n  ...\n}\n\ntry {\n  myFunction()\n} catch ( _err ) {\n  const err = _err as Error\n\n  const error = (\n    Exception.isException<string, ErrorCode>(err)\n      ? err\n      : (\n        new Exception(\n          err.message,\n          {\n            code  : ErrorCode.UNKNOWN,\n            name  : err.name,\n            cause : err,\n          }\n        )\n      )\n  )\n\n  switch ( error.code ) {\n    case ErrorCode.DOCUMENT_PIP_NOT_SUPPORTED:\n      console.warn( 'Document Picture-in-Picture is not supported.' )\n      break\n    default:\n      console.error( 'Unknown error', error )\n  }\n}\n\n```\n\n</details>\n\n###### `openDocumentPictureInPicture`\n\nOpens a Document Picture-in-Picture window.\n\n- Throws a new `Exception` with code `ErrorCode.DOCUMENT_PIP_NOT_SUPPORTED` if the Document Picture-in-Picture API is not supported.\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type                                  | Description                                                                 |\n| --------- | ------------------------------------- | --------------------------------------------------------------------------- |\n| `options` | `OpenDocumentPictureInPictureOptions` | Configuration options for opening a new Document Picture-in-Picture window. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `Promise<OpenDocumentPictureInPicture>`\n\n- A new Promise that resolves to the Document Picture-in-Picture result containing the `window` of the new browsing context.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n###### Simple usage\n\n```ts\nimport { Exception } from \"@alessiofrittoli/exception\";\nimport {\n  openDocumentPictureInPicture,\n  ErrorCode,\n} from \"@alessiofrittoli/web-utils\";\n\nconst openPictureInPicture = async () => {\n  try {\n    const content = document.createElement(\"div\");\n\n    const { window } = await openDocumentPictureInPicture();\n\n    window.document.body.appendChild(content);\n  } catch (_err) {\n    const err = _err as Error;\n\n    const error = Exception.isException<string, ErrorCode>(err)\n      ? err\n      : new Exception(err.message, {\n          code: ErrorCode.UNKNOWN,\n          name: err.name,\n          cause: err,\n        });\n\n    switch (error.code) {\n      case ErrorCode.DOCUMENT_PIP_NOT_SUPPORTED:\n        console.warn(\"Document Picture-in-Picture is not supported.\");\n        break;\n      default:\n        console.error(\"Unknown error\", error);\n    }\n  }\n};\n```\n\n---\n\n###### Load render blocking styles\n\n```ts\nimport { Exception } from \"@alessiofrittoli/exception\";\nimport {\n  openDocumentPictureInPicture,\n  ErrorCode,\n} from \"@alessiofrittoli/web-utils\";\n\nconst openPictureInPicture = async () => {\n  try {\n    const content = document.createElement(\"div\");\n\n    const { window } = await openDocumentPictureInPicture({\n      styles: {\n        url: \"/important-stylesheet-fetched-before-opening.css\",\n        fetch: true,\n      },\n    });\n\n    window.document.body.appendChild(content);\n  } catch (error) {\n    // ...\n  }\n};\n```\n\n</details>\n\n---\n\n#### Device utilities\n\n##### `isPortrait`\n\nCheck if device is in portrait orientation.\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `boolean`\n\n- `true` if the device is in portrait orientation when this function is executed.\n- `false` otherwise.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n###### Check if current device is landscape oriented\n\n```ts\nimport { isPortrait } from \"@alessiofrittoli/web-utils\";\n\nconsole.log(!isPortrait());\n```\n\n</details>\n\n---\n\n##### Network Information\n\n###### Types\n\n###### `Connection` interface\n\nDefiens network status and `NetworkInformation`.\n\n<details>\n\n<summary style=\"cursor:pointer\">Properties</summary>\n\n| Property  | Type                 | Description                                                                                                                                                 |\n| --------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `network` | `NetworkInformation` | The `NetworkInformation` interface of the [Network Information API](https://developer.mozilla.org/en-US/docs/Web/API/Network_Information_API)               |\n|           |                      | provides information about the connection a device is using to communicate                                                                                  |\n|           |                      | with the network and provides a means for scripts to be notified if the connection type changes.                                                            |\n|           |                      | ⚠️ Limited availability - [See full compatibility](https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation#browser_compatibility)               |\n| `onLine`  | `boolean`            | Indicates whether the device is connected to the network.                                                                                                   |\n|           |                      | - See [Listening for changes in network status](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine#listening_for_changes_in_network_status). |\n\n</details>\n\n---\n\n###### `getConnection`\n\nGet current Network status and information.\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `Connection`\n\nAn object defining network status and `NetworkInformation`. See [`Connection`](#connection-interface) interface for more info.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Examples</summary>\n\n```ts\nimport { getConnection } from \"@alessiofrittoli/web-utils\";\n\nconst { network } = getConnection();\n\nconsole.log(network?.effectiveType);\n```\n\n</details>\n\n---\n\n#### Storage utilities\n\n##### `Cookie` Class\n\n<details>\n\n<summary style=\"cursor:pointer\">Importing enum and types</summary>\n\n```ts\nimport { Priority, SameSite } from \"@alessiofrittoli/web-utils\";\n\nimport type {\n  RawCookie,\n  ParsedCookie,\n  ParsedCookieMap,\n} from \"@alessiofrittoli/web-utils\";\n```\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Enumerators</summary>\n\n###### `Priority` Enum\n\nThe Cookie Priority.\n\n| Constant | Value  | Description                |\n| -------- | ------ | -------------------------- |\n| `Low`    | Low    | Low priority.              |\n| `Medium` | Medium | Medium priority (default). |\n| `High`   | High   | High priority.             |\n\n---\n\n###### `SameSite` Enum\n\nControls whether or not a cookie is sent with cross-site requests, providing some protection against cross-site request forgery attacks ([CSRF](https://developer.mozilla.org/en-US/docs/Glossary/CSRF)).\n\n| Constant | Value  | Description                                                                                                                                                                  |\n| -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `Strict` | Strict | The browser sends the cookie only for same-site requests.                                                                                                                    |\n| `Lax`    | Lax    | The cookie is not sent on cross-site requests, such as on requests to load images or frames, but is sent when a user is navigating to the origin site from an external site. |\n| `None`   | None   | The browser sends the cookie with both cross-site and same-site requests.                                                                                                    |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Types</summary>\n\n###### `RawCookie<K, V>`\n\nInterface representing Cookie properties before it get parsed.\n\n<details>\n\n<summary style=\"cursor:pointer\">Properties</summary>\n\n| Property      | Type                       | Description                                                                                                                                                                                               |\n| ------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `name`        | `K`                        | The Cookie name.                                                                                                                                                                                          |\n| `value`       | `V`                        | The Cookie value.                                                                                                                                                                                         |\n| `domain`      | `string`                   | Defines the host to which the cookie will be sent.                                                                                                                                                        |\n| `expires`     | `string \\| number \\| Date` | Indicates the maximum lifetime of the cookie.                                                                                                                                                             |\n| `httpOnly`    | `boolean`                  | Forbids JavaScript from accessing the cookie, for example, through the [`Document.cookie`](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie) property.                                    |\n| `maxAge`      | `number`                   | Indicates the number of seconds until the cookie expires. If set, `expires` is ignored.                                                                                                                   |\n| `partitioned` | `boolean`                  | Indicates that the cookie should be stored using partitioned storage.                                                                                                                                     |\n| `path`        | `string`                   | Indicates the path that must exist in the requested URL for the browser to send the `Cookie` header.                                                                                                      |\n| `sameSite`    | `SameSite`                 | Controls whether or not a cookie is sent with cross-site requests, providing some protection against cross-site request forgery attacks ([CSRF](https://developer.mozilla.org/en-US/docs/Glossary/CSRF)). |\n| `secure`      | `boolean`                  | Indicates that the cookie is sent to the server only when a request is made with the https: scheme.                                                                                                       |\n| `priority`    | `Priority`                 | Defines the Cookie priority.                                                                                                                                                                              |\n\n</details>\n\n---\n\n###### `ParsedCookie<K, V>`\n\nInterface representing Cookie properties after it get parsed.\n\n<details>\n\n<summary style=\"cursor:pointer\">Properties</summary>\n\n- Extends and overrides - [`RawCookie<K, V>`](#rawcookiek-v)\n\n| Property  | Type   | Description                                   |\n| --------- | ------ | --------------------------------------------- |\n| `expires` | `Date` | Indicates the maximum lifetime of the cookie. |\n\n</details>\n\n---\n\n###### `ParsedCookieMap<K, V>`\n\nMap representation of a parsed Cookie.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Static methods</summary>\n\n###### `Cookie.parse<K, V>()`\n\nParse the given cookie parameters to a Cookie Map.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type parameters</summary>\n\n| Parameter | Description                   |\n| --------- | ----------------------------- |\n| `K`       | The typed cookie name.        |\n| `V`       | The type of the cookie value. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type                                       | Description                                |\n| --------- | ------------------------------------------ | ------------------------------------------ |\n| `options` | `RawCookie<K, V> \\| ParsedCookieMap<K, V>` | The cookie options or a parsed Cookie Map. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `ParsedCookieMap<K, V>`\n\nThe parsed Cookie Map.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { Cookie } from \"@alessiofrittoli/web-utils\";\n\nconst cookie = Cookie.parse({\n  name: \"cookiename\",\n  value: { test: \"value\" },\n  path: \"/specific-path\",\n  priority: Priority.High,\n  expires: Date.now() + 20 * 60 * 1000,\n  domain: \"example.com\",\n  secure: true,\n  httpOnly: true,\n  sameSite: SameSite.Lax,\n  maxAge: Date.now() + 30 * 60 * 1000,\n  partitioned: true,\n});\n```\n\n</details>\n\n---\n\n###### `Cookie.toString<K, V>()`\n\nStringify a Cookie ready to be stored.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type parameters</summary>\n\n| Parameter | Description                   |\n| --------- | ----------------------------- |\n| `K`       | The typed cookie name.        |\n| `V`       | The type of the cookie value. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type                                       | Description                                |\n| --------- | ------------------------------------------ | ------------------------------------------ |\n| `options` | `RawCookie<K, V> \\| ParsedCookieMap<K, V>` | The cookie options or a parsed Cookie Map. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `string`\n\nThe stringified Cookie ready to be stored.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { Cookie } from \"@alessiofrittoli/web-utils\";\n\ndocument.cookie = Cookie.toString({\n  name: \"cookiename\",\n  value: { test: \"value\" },\n  path: \"/specific-path\",\n  priority: Priority.High,\n  expires: Date.now() + 20 * 60 * 1000,\n  domain: \"example.com\",\n  secure: true,\n  httpOnly: false,\n  sameSite: SameSite.Lax,\n  maxAge: Date.now() + 30 * 60 * 1000,\n  partitioned: true,\n});\n```\n\n</details>\n\n---\n\n###### `Cookie.fromString<K, V>()`\n\nParse a cookie string to a Cookie Map.\n\n<details>\n\n<summary style=\"cursor:pointer\">Type parameters</summary>\n\n| Parameter | Description                     |\n| --------- | ------------------------------- |\n| `K`       | The typed cookie name.          |\n| `V`       | The expected cookie value type. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Parameters</summary>\n\n| Parameter | Type     | Description        |\n| --------- | -------- | ------------------ |\n| `cookie`  | `string` | The cookie string. |\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Returns</summary>\n\nType: `ParsedCookieMap<K, V> | null`\n\nThe parsed Cookie Map or `null` if parsing fails.\n\n</details>\n\n---\n\n<details>\n\n<summary style=\"cursor:pointer\">Usage</summary>\n\n```ts\nimport { Cookie } from \"@alessiofrittoli/web-utils\";\n\nconst cookies = document.cookie\n  .split(\"; \")\n  .map(Cookie.fro","readmeFilename":"README.md"}