{"_id":"url-normalize","_rev":"19-ad4116ad76239e3d4e154ec75ee22689","name":"url-normalize","dist-tags":{"latest":"2.3.0"},"versions":{"1.1.0":{"name":"url-normalize","version":"1.1.0","keywords":["url","normalize","normalization","uri","url-normalization","url-normalize","querystrings","domain","extract","canonical"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@1.1.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"dist":{"shasum":"d4cefbfdf2dce35687b6a1d264264469bee08c4b","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-1.1.0.tgz","fileCount":12,"integrity":"sha512-LL9Ca2W5anE5m3h/q7lM6K9Vl0sYpAYUTa+uu9WQN9zExPRT8bdE2PKER/SXzw6Zh3IicjPmkkxSBQBaOhLIUQ==","signatures":[{"sig":"MEUCIEvoHcRfT4F6H4TUO9JKoNTA5cW3VyHbDwRpE6a8RkyTAiEAqFsspkUiw7RAV7hxlmcT/Q44m2Y1NUEHfEE7EptQNek=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25126},"type":"module","exports":{"types":"./dist/main.d.ts","import":"./dist/main.mjs","require":"./dist/main.cjs"},"gitHead":"1595dc80ecc0d5efab8abf9e816659ca8c55a7e9","scripts":{"test":"uvu -r tsm tests/","build":"rm -rf dist && microbundle -f cjs,modern","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check \"{src,tests}/**/*.{js,jsx,ts,tsx}\""},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"_npmVersion":"9.5.1","description":"<div align=\"center\">   <a href=\"https://npmjs.org/package/url-normalize\">     <img src=\"https://badgen.net/npm/v/url-normalize\" alt=\"version\" />   </a>   <a href=\"https://github.com/vladkens/url-normalize/actions\">     <img src=\"https://github.com/vladken","directories":{},"_nodeVersion":"18.16.0","publishConfig":{"main":"dist/main.cjs","source":"src/main.ts","exports":"dist/main.mjs"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","prettier":"^2.8.8","microbundle":"^0.15.1","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_1.1.0_1684017929684_0.33983175142198707","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"url-normalize","version":"1.1.1","keywords":["url","normalize","normalization","uri","url-normalization","url-normalize","querystrings","domain","extract","canonical"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@1.1.1","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"b8b24551119616075daf93152b61f7a33d86e234","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-1.1.1.tgz","fileCount":12,"integrity":"sha512-UZYmbZxg3SnLNqWZZGVOvVFMZEDJcujg0ZqKn/s2eRWyuRprS9EHq3U2KbnSHapo6TUNxMhLjGzRMX+7yJdFhg==","signatures":[{"sig":"MEUCIQD9CUOgnAJbmXDpUpyIiWYqea68byjllbdDClOZM/0PSgIgbs850qV7y3y9rElvRB0IipK4B59QdDrx6mQxxXMbRo8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25304},"type":"module","exports":{"types":"./dist/main.d.ts","import":"./dist/main.mjs","require":"./dist/main.cjs"},"gitHead":"be1a22f37ee9420a2e02f7baca9c83e9fbd64eb4","scripts":{"test":"uvu -r tsm tests/","build":"rm -rf dist && microbundle -f cjs,modern","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check \"{src,tests}/**/*.{js,jsx,ts,tsx}\""},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"9.5.1","description":"Normalize URLs to a standardized form by removing unnecessary characters, decoding encoded characters, removing default index pages, removing trailing slashes, and more.","directories":{},"_nodeVersion":"18.16.0","publishConfig":{"main":"dist/main.cjs","source":"src/main.ts","exports":"dist/main.mjs"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","prettier":"^2.8.8","microbundle":"^0.15.1","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_1.1.1_1684018978510_0.5933466153977307","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"url-normalize","version":"1.2.0","keywords":["url","normalize","normalization","uri","url-normalization","url-normalize","querystrings","domain","extract","canonical"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@1.2.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"f213ec3ac316a130608f19a407a5cff2b77b7ffb","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-1.2.0.tgz","fileCount":12,"integrity":"sha512-5H78uEjnZBWIvLKK+nu3VKN32yBay35jTfAvs+Yt6/GPVMkLYXqXxr3cTc3X9KxyeEZKH7VmZ9yNXnKItYTToQ==","signatures":[{"sig":"MEUCIQD1hzwM0KfgLQRtG1nWElSgG0BebE8IaSUaF4XGRYnAeAIgEsvg+JTf/SoTNM5XGweabHQmMKMv2DZplV5Y5QT7Rb0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27568},"type":"module","types":"./dist/main.d.ts","exports":{"types":"./dist/main.d.ts","import":"./dist/main.mjs","require":"./dist/main.cjs"},"gitHead":"299991d537841889f05dbed4729245cbfabb1aee","scripts":{"test":"uvu -r tsm tests/","build":"rm -rf dist && microbundle -f cjs,modern","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check \"{src,tests}/**/*.{js,jsx,ts,tsx}\""},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"9.5.1","description":"Normalize URLs to a standardized form by removing unnecessary characters, decoding encoded characters, removing default index pages, removing trailing slashes, and more.","directories":{},"_nodeVersion":"18.16.0","publishConfig":{"main":"dist/main.cjs","source":"src/main.ts","exports":"dist/main.mjs"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","prettier":"^2.8.8","microbundle":"^0.15.1","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_1.2.0_1684023035646_0.6478773488358298","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"url-normalize","version":"1.2.1","keywords":["url","normalize","normalization","uri","url-normalization","url-normalize","querystrings","domain","extract","canonical"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@1.2.1","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"3ddec3158fbb9e9622d475b760a64363260bb724","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-1.2.1.tgz","fileCount":7,"integrity":"sha512-5eUjZRHSf+cJP9ZDZwUFx55rEqvU+v9yJ0LNhEqdorZ0HwTVJ25rA03I/iU+lHNoREPuQxPEiZ7rjmCssgVCIQ==","signatures":[{"sig":"MEUCIDKhPdKANpHbWAyPyYR0fV/6l/mHcQonL4NXCMwkFML/AiEAqQYUfifv9LvXN9kQ2S2f5agUJ6GH5xDgNLdqF2Vlk4g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13699},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"cc1a6d92f0feb270d9ca8dae1a28bc744148064c","scripts":{"test":"uvu -r tsm tests/","build":"rm -rf dist && pkgroll --minify","format":"prettier --write '{src,tests}/**/*.{js,jsx,ts,tsx}'","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check '{src,tests}/**/*.{js,jsx,ts,tsx}'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"9.5.1","description":"Normalize URLs to a standardized form by removing unnecessary characters, decoding encoded characters, removing default index pages, removing trailing slashes, and more.","directories":{},"_nodeVersion":"18.16.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","pkgroll":"^1.10.0","prettier":"^2.8.8","typescript":"^5.0.4","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_1.2.1_1684025939418_0.11030169481917573","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"url-normalize","version":"1.3.0","keywords":["canonical","domain","extract","humanize","normalization","normalize","punycode","querystrings","unicode","uri","url-normalization","url-normalize","url"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@1.3.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"7c763dd44aa7c4143016d399cb66366a2ea329f5","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-1.3.0.tgz","fileCount":7,"integrity":"sha512-CqH1rBD+bAhl+Nad2OcgU8tgWewyqo1OvG2eb/WI4Oq6RFqD/0jYf946ukkMCc+5OlAzZpQwSnreTrNP/e8Pjg==","signatures":[{"sig":"MEQCIGXT4fusV5f8dUqt4d8K4ZiP7QYLRv5usGZ4CxNnNKRdAiAU9MS5mBQip71+aWCr8fgCs0yoDJ9LZ2xUaPn1F5ov+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15129},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"947827b4b741f6d33dc59d0d457613d7fbae5e8f","scripts":{"test":"uvu -r tsm tests/","bench":"node --loader tsm --no-warnings benchmark.ts","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write '{src,tests}/**/*.{js,jsx,ts,tsx}'","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check '{src,tests}/**/*.{js,jsx,ts,tsx}'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"9.5.1","description":"Normalize URLs to a standardized form by removing unnecessary characters, decoding encoded characters, removing default index pages, removing trailing slashes, and more.","directories":{},"_nodeVersion":"18.16.0","dependencies":{"punycode":"^2.3.0","@types/punycode":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","pkgroll":"^1.10.0","prettier":"^2.8.8","typescript":"^5.0.4","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_1.3.0_1684103335413_0.05526776654242993","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"url-normalize","version":"1.4.0","keywords":["canonical","domain","extract","humanization","humanize","normalization","normalize","punycode","querystrings","unicode","uri","url"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@1.4.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"7b6066f867f976e0f627869e99c3a2ed064eaaca","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-1.4.0.tgz","fileCount":7,"integrity":"sha512-hBiVl6SZY3HMz7yhBDrdyu7fFleHzvjhpt6f2wk5ll5diBWO51VkNxiWdLrkaW3NYWffy0d38VKo7nHKGfP1jw==","signatures":[{"sig":"MEUCIQD8Y1aVB3rGo+77ont9X4q8C0+iatIRvIxzebM6ywuvKAIgEoKC1q/rHX/mcNznsy18rXEloSsoB91KVTpTcgYMPOo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15754},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"c69b3183e4c571c2f9a5191c94b57e0e9fbebcee","scripts":{"test":"uvu -r tsm tests/","bench":"node --loader tsm --no-warnings benchmark.ts","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write '{src,tests}/**/*.{js,jsx,ts,tsx}'","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check '{src,tests}/**/*.{js,jsx,ts,tsx}'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"9.5.1","description":"Normalize URLs to a standardized form. HTTPS by default, flexible configuration, custom protocols, domain extraction, humazing URL, and punycode support. Both CJS & ESM modules available.","directories":{},"_nodeVersion":"18.16.0","dependencies":{"punycode":"^2.3.0","@types/punycode":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","pkgroll":"^1.10.0","prettier":"^2.8.8","typescript":"^5.0.4","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_1.4.0_1684106528715_0.0505840854772972","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"url-normalize","version":"2.0.0","keywords":["canonical","domain","extract","humanization","humanize","normalization","normalize","punycode","querystrings","unicode","uri","url"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@2.0.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"836e1e582130660dac716da5e71d521726f09ac8","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-2.0.0.tgz","fileCount":7,"integrity":"sha512-UzdgW9QmjcaLMwVPTsHl6Ehc7mtkoBff5cdNXaTO/0R3PilvbMPi8A+bpRJpAhj0T4VbhfgjmTYxVBhWji3V0w==","signatures":[{"sig":"MEUCIQC2XXUjA06pdL7kVkPe/H+AncmzkaUlX4/gTwLTugnnKAIgZZALsi4n9Hg35JGcl2ouWCtq138FG5XLQ3xhAPPAcq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15611},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"ce1c51b8bc70d504680577c830f603b709ad52f9","scripts":{"test":"tsc --noEmit && uvu -r tsm tests/","bench":"node --loader tsm --no-warnings benchmark.ts","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write '{src,tests}/**/*.{js,jsx,ts,tsx}'","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check '{src,tests}/**/*.{js,jsx,ts,tsx}'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"9.5.1","description":"Normalize URLs to a standardized form. HTTPS by default, flexible configuration, custom protocols, domain extraction, humazing URL, and punycode support. Both CJS & ESM modules available.","directories":{},"_nodeVersion":"18.16.0","dependencies":{"punycode":"^2.3.0","@types/punycode":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.13.0","tsm":"^2.3.0","uvu":"^0.5.6","pkgroll":"^1.10.0","prettier":"^2.8.8","typescript":"^5.0.4","prettier-plugin-organize-imports":"^3.2.2"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_2.0.0_1684320741516_0.435986532909417","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"url-normalize","version":"2.1.0","keywords":["canonical","domain","extract","humanization","humanize","normalization","normalize","punycode","querystrings","unicode","uri","url"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@2.1.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"d17e947b4598663bde336081c56d74f0102f24bc","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-2.1.0.tgz","fileCount":7,"integrity":"sha512-TIc2113H7yzrkYeNifzGAdwd9h1t7HreCVBAoeX6I7TcSPr6NyInHviVp8+b2GjsCiSaSdiW1Ny/lA7Q/pMYWA==","signatures":[{"sig":"MEUCIQDrukNGw+idjU4NLycSdFD/Lb7TNzpOuJLi44sBYMP6QgIgR957I+SNJkCT9l/Ee6bJxEmtNJZtIsiR7AIdEH2osP8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16010},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"d56758df96125061a584057ef764fbf6662956de","scripts":{"ci":"yarn format-check && yarn test && yarn build","test":"tsc --noEmit && uvu -r tsm tests/","bench":"node --loader tsm --no-warnings benchmark.ts","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write '{src,tests}/**/*.{js,jsx,ts,tsx}'","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'","format-check":"prettier --check '{src,tests}/**/*.{js,jsx,ts,tsx}'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"10.8.3","description":"Normalize URLs to a standardized form. HTTPS by default, flexible configuration, custom protocols, domain extraction, humazing URL, and punycode support. Both CJS & ESM modules available.","directories":{},"_nodeVersion":"22.9.0","dependencies":{"punycode":"2.3.1","@types/punycode":"2.1.4"},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.2","tsm":"2.3.0","uvu":"0.5.6","pkgroll":"2.5.0","prettier":"3.3.3","typescript":"5.6.3","prettier-plugin-organize-imports":"4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_2.1.0_1728777054076_0.6956272576762736","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"url-normalize","version":"2.1.1","keywords":["canonical","domain","extract","humanization","humanize","normalization","normalize","punycode","querystrings","unicode","uri","url"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@2.1.1","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"12153bfeb818c31387f261f4da47e34e256ffb29","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-2.1.1.tgz","fileCount":7,"integrity":"sha512-x4XIwu7ef2QjC0V54ebOcVhQ+gK1Rs05Vkq6brlddOzDExctP4iooHaA5oYoOiisDIZyHbmvhIBku/D8dhglvA==","signatures":[{"sig":"MEYCIQDBY+ewJXPedko26dGVgu2waicxbBBP1pUteswYEbO41wIhAKpcknP1I9thWhT3jrzSDEAGoFc4okL5Sj0AAUFm0wRp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/url-normalize@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15932},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"8227843d45f4fa905e313c3bd0925e1c6eeb64a4","scripts":{"ci":"yarn lint && yarn test-cov && yarn build","lint":"tsc --noEmit && prettier --check .","test":"uvu -r tsm tests/","bench":"node --loader tsm --no-warnings benchmark.ts","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"10.9.0","description":"Normalize URLs to a standardized form. HTTPS by default, flexible configuration, custom protocols, domain extraction, humazing URL, and punycode support. Both CJS & ESM modules available.","directories":{},"_nodeVersion":"22.10.0","dependencies":{"punycode":"2.3.1","@types/punycode":"2.1.4"},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.2","tsm":"2.3.0","uvu":"0.5.6","pkgroll":"2.5.0","prettier":"3.3.3","typescript":"5.6.3","prettier-plugin-organize-imports":"4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_2.1.1_1731173111298_0.24327939659246178","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"url-normalize","version":"2.2.0","keywords":["canonical","domain","extract","humanization","humanize","normalization","normalize","punycode","querystrings","unicode","uri","url"],"author":{"name":"Vlad Pronsky","email":"v.pronsky@gmail.com"},"license":"MIT","_id":"url-normalize@2.2.0","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"homepage":"https://github.com/vladkens/url-normalize#readme","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"dist":{"shasum":"9245ebf98d66a755d5e771d7917380e671ac3c6f","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-2.2.0.tgz","fileCount":7,"integrity":"sha512-XsR2ehA0KB6dzGf1YKgNAGJtCiRTIewkWkjUvP2bwIaky6nXBRIg9htu1LuvkkbI0SdJCfkU9YzSOjWVTczStg==","signatures":[{"sig":"MEUCIQCL5MSJK017MQivAfnGGuPwazrWEQlaEqt3Yfu2jcvglAIgU7W4qkjMSVzXAeBiug3/tTekFDb2rS5NvcK8iusWUc8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/url-normalize@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15949},"type":"module","types":"./dist/main.d.cts","exports":{"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"},"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"}},"gitHead":"cc556a2e577775bffb0aaa402cecc7b9f324b9df","scripts":{"ci":"yarn lint && yarn test-cov && yarn build","lint":"tsc --noEmit && prettier --check .","test":"uvu -r tsm tests/","bench":"node --loader tsm --no-warnings benchmark.ts","build":"rm -rf dist && pkgroll --minify && ls -lah dist","format":"prettier --write .","test-cov":"c8 --include=src yarn test","test-watch":"watchexec -e ts 'clear && yarn test'"},"_npmUser":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"url":"git+https://github.com/vladkens/url-normalize.git","type":"git"},"_npmVersion":"10.9.3","description":"Normalize URLs to a standardized form. HTTPS by default, flexible configuration, custom protocols, domain extraction, humazing URL, and punycode support. Both CJS & ESM modules available.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"punycode":"2.3.1","@types/punycode":"2.1.4"},"_hasShrinkwrap":false,"devDependencies":{"c8":"10.1.3","tsm":"2.3.0","uvu":"0.5.6","pkgroll":"2.15.3","prettier":"3.6.2","typescript":"5.9.2","prettier-plugin-organize-imports":"4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/url-normalize_2.2.0_1756662596567_0.910795848948136","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"type":"module","name":"url-normalize","version":"2.3.0","license":"MIT","scripts":{"build":"rm -rf dist && pkgroll --minify && ls -lah dist","test":"tsx --test --test-reporter=dot src/main.test.ts","test-cov":"tsx --experimental-test-coverage --test src/main.test.ts","bench":"node --import tsx --no-warnings benchmark.ts","format":"prettier --write --log-level warn .","lint":"tsc --noEmit && prettier --check .","ci":"npm run lint && npm run test-cov && npm run build"},"dependencies":{"punycode":"2.3.1"},"devDependencies":{"@types/punycode":"2.1.4","@types/node":"25.5.0","pkgroll":"2.27.0","prettier":"3.8.1","prettier-plugin-organize-imports":"4.3.0","tsx":"4.21.0","typescript":"5.9.3"},"author":{"name":"vladkens","email":"v.pronsky@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/vladkens/url-normalize.git"},"description":"Normalize, validate, and canonicalize URLs — returns HTTPS canonical form or null for invalid input. Domain extraction, URL humanization, Punycode/Unicode/IDN support, 12 config options. TypeScript, CJS + ESM.","keywords":["url","uri","normalize","normalization","canonical","validate","validation","validator","sanitize","clean","parse","parser","domain","extract","humanize","punycode","unicode","idn","idna","querystring","query","link","typescript"],"types":"./dist/main.d.cts","exports":{"require":{"types":"./dist/main.d.cts","default":"./dist/main.cjs"},"import":{"types":"./dist/main.d.mts","default":"./dist/main.mjs"}},"gitHead":"6abfe3122082711ff0404eae848b6c33d9cce131","_id":"url-normalize@2.3.0","bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"homepage":"https://github.com/vladkens/url-normalize#readme","_nodeVersion":"24.14.0","_npmVersion":"11.11.1","dist":{"integrity":"sha512-deTJk3v4AKqfodLf/L+P6pojgYdsxneH1+Y2uCmSNWRKvS4023MzcRemuPEcnUCA6RDUJFkMFdDxOtPo8tylHA==","shasum":"603881e2f0db13ba1cba842099529d71524b3806","tarball":"https://registry.npmjs.org/url-normalize/-/url-normalize-2.3.0.tgz","fileCount":7,"unpackedSize":16924,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/url-normalize@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFai6ZYdohFFytlQDyXHx0x/xfJDzg4VlxZtGz4gs2ZzAiEA2JrhFsn3uj+CEwuFPYKCSDwEC5SRq0ISQ06DvDKWtxA="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f7bb5d56-4c1d-40fa-a5bc-7d1c608fa83a"}},"directories":{},"maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/url-normalize_2.3.0_1773439530115_0.10657077758802558"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-13T22:45:29.683Z","modified":"2026-03-13T22:05:30.551Z","1.0.0":"2018-06-22T13:35:40.537Z","1.0.1":"2018-06-22T13:40:11.002Z","1.0.2":"2018-07-02T12:58:48.544Z","1.0.3":"2018-07-08T03:47:34.164Z","1.1.0":"2023-05-13T22:45:29.880Z","1.1.1":"2023-05-13T23:02:58.680Z","1.2.0":"2023-05-14T00:10:35.802Z","1.2.1":"2023-05-14T00:58:59.545Z","1.3.0":"2023-05-14T22:28:55.575Z","1.4.0":"2023-05-14T23:22:08.873Z","2.0.0":"2023-05-17T10:52:21.686Z","2.1.0":"2024-10-12T23:50:54.267Z","2.1.1":"2024-11-09T17:25:11.545Z","2.2.0":"2025-08-31T17:49:56.745Z","2.3.0":"2026-03-13T22:05:30.277Z"},"bugs":{"url":"https://github.com/vladkens/url-normalize/issues"},"author":{"name":"vladkens","email":"v.pronsky@gmail.com"},"license":"MIT","homepage":"https://github.com/vladkens/url-normalize#readme","keywords":["url","uri","normalize","normalization","canonical","validate","validation","validator","sanitize","clean","parse","parser","domain","extract","humanize","punycode","unicode","idn","idna","querystring","query","link","typescript"],"repository":{"type":"git","url":"git+https://github.com/vladkens/url-normalize.git"},"description":"Normalize, validate, and canonicalize URLs — returns HTTPS canonical form or null for invalid input. Domain extraction, URL humanization, Punycode/Unicode/IDN support, 12 config options. TypeScript, CJS + ESM.","maintainers":[{"name":"vladkens","email":"v.pronsky@gmail.com"}],"readme":"# url-normalize\n\n<div align=\"center\">\n\n[<img src=\"https://badges.ws/npm/v/url-normalize\" alt=\"version\" />](https://npmjs.org/package/url-normalize)\n[<img src=\"https://packagephobia.com/badge?p=url-normalize\" alt=\"size\" />](https://packagephobia.now.sh/result?p=url-normalize)\n[<img src=\"https://badges.ws/npm/dm/url-normalize\" alt=\"downloads\" />](https://npmjs.org/package/url-normalize)\n[<img src=\"https://badges.ws/github/license/vladkens/url-normalize\" alt=\"license\" />](https://github.com/vladkens/url-normalize/blob/main/LICENSE)\n\n</div>\n\nTurns any URL-like string into a clean, canonical `https://` URL — returns `null` if it can't.\n\n- **Safe.** Returns `null` for invalid input — no try/catch needed.\n- **Tiny.** 980 bytes (brotli). One dependency.\n- **Smart defaults.** HTTPS, no `www`, sorted query params, stripped default ports — automatic.\n- **Configurable.** 12 options to control every part of the URL.\n- **International.** Unicode ↔ Punycode conversion in both directions.\n- **Batteries included.** `extractDomain` and `humanizeUrl` utilities come with the package.\n\nWorks with bare domains (`example.com`), protocol-relative (`//example.com`), and messy real-world URLs. Compared to [normalize-url](https://github.com/sindresorhus/normalize-url): dual CJS + ESM exports, `null` return instead of throwing, and built-in domain/display utilities.\n\n## Install\n\n```sh\nnpm i url-normalize\n```\n\n## Usage\n\n```typescript\nimport { urlNormalize } from \"url-normalize\"\n\nurlNormalize(\"example.com\")\n// → \"https://example.com\"\n\nurlNormalize(\"//www.example.com:443/../foo/bar?b=2&a=1#tag\")\n// → \"https://example.com/foo/bar?a=1&b=2\"\n\nurlNormalize(\"👻💥.ws\")\n// → \"https://xn--9q8huc.ws\"\n\n// Invalid input returns null — no exceptions\nurlNormalize(\"example\") // → null\nurlNormalize(\"mailto:user@example.com\") // → null\n```\n\n## Options\n\nAll options have sensible defaults. Pass an options object as the second argument.\n\n### `defaultProtocol` (default: `\"https\"`)\n\nProtocol to prepend when the URL has none. Preserves an existing protocol.\n\n```typescript\nurlNormalize(\"example.com\", { defaultProtocol: \"http\" })\n// → \"http://example.com\"\n\n// Existing protocol is preserved\nurlNormalize(\"https://example.com\", { defaultProtocol: \"http\" })\n// → \"https://example.com\"\n```\n\n### `protocol` (default: `true`)\n\nInclude or strip the protocol prefix.\n\n```typescript\nurlNormalize(\"https://example.com/foo?bar=baz\", { protocol: false })\n// → \"example.com/foo?bar=baz\"\n```\n\n### `www` (default: `false`)\n\nKeep or remove the `www.` subdomain.\n\n```typescript\nurlNormalize(\"www.example.com\") // → \"https://example.com\"\nurlNormalize(\"www.example.com\", { www: true }) // → \"https://www.example.com\"\n```\n\n### `auth` (default: `false`)\n\nKeep or strip `user:pass@` credentials.\n\n```typescript\nurlNormalize(\"https://user:pass@example.com\") // → \"https://example.com\"\nurlNormalize(\"https://user:pass@example.com\", { auth: true }) // → \"https://user:pass@example.com\"\n```\n\n### `port` (default: `false`)\n\nKeep or strip port numbers. Default ports (80 for HTTP, 443 for HTTPS) are always removed.\n\n```typescript\nurlNormalize(\"https://example.com:8080\", { port: true }) // → \"https://example.com:8080\"\nurlNormalize(\"https://example.com:443\", { port: true }) // → \"https://example.com\"\n```\n\n### `index` (default: `true`)\n\nWhen `false`, strips `index.html` / `index.htm` from path endings.\n\n```typescript\nurlNormalize(\"example.com/foo/index.html\") // → \"https://example.com/foo/index.html\"\nurlNormalize(\"example.com/foo/index.html\", { index: false }) // → \"https://example.com/foo\"\n```\n\n### `search` (default: `true`)\n\nKeep or strip the query string.\n\n```typescript\nurlNormalize(\"example.com/?a=1&b=2\", { search: false }) // → \"https://example.com\"\n```\n\n### `sortSearch` (default: `true`)\n\nSort query parameters alphabetically.\n\n```typescript\nurlNormalize(\"example.com/?b=2&a=1\") // → \"https://example.com/?a=1&b=2\"\nurlNormalize(\"example.com/?b=2&a=1\", { sortSearch: false }) // → \"https://example.com/?b=2&a=1\"\n```\n\n### `filterSearch`\n\nKeep only matching query parameters.\n\n```typescript\nurlNormalize(\"example.com/?c=3&b=2&a=1\", { filterSearch: (k, v) => k === \"a\" || v === \"3\" })\n// → \"https://example.com/?a=1&c=3\"\n```\n\n### `fragment` (default: `true`)\n\nKeep or strip the URL hash fragment.\n\n```typescript\nurlNormalize(\"example.com/#foo\") // → \"https://example.com/#foo\"\nurlNormalize(\"example.com/#foo\", { fragment: false }) // → \"https://example.com\"\n```\n\n### `textFragment` (default: `false`)\n\nKeep or strip [text fragment](https://wicg.github.io/scroll-to-text-fragment/) anchors (`#:~:text=…`).\n\n```typescript\nurlNormalize(\"example.com/#:~:text=hello\") // → \"https://example.com\"\nurlNormalize(\"example.com/#:~:text=hello\", { textFragment: true }) // → \"https://example.com/#:~:text=hello\"\n```\n\n### `customProtocol` (default: `false`)\n\nAllow non-standard protocols like `tg://`, `ftps://`, etc.\n\n```typescript\nurlNormalize(\"tg://example.com\") // → null\nurlNormalize(\"tg://example.com\", { customProtocol: true }) // → \"tg://example.com\"\n```\n\n### `forceProtocol`\n\nReplace the protocol with a fixed value regardless of input.\n\n```typescript\nurlNormalize(\"https://example.com\", { forceProtocol: \"sftp\" }) // → \"sftp://example.com\"\n```\n\n### `unicode` (default: `false`)\n\nReturn Unicode domain names instead of Punycode.\n\n```typescript\nurlNormalize(\"👻💥.ws\", { unicode: true }) // → \"https://👻💥.ws\"\nurlNormalize(\"https://xn--9q8huc.ws\", { unicode: true }) // → \"https://👻💥.ws\"\n```\n\n## Advanced\n\n### `createUrlNormalize`\n\nCreates a reusable normalizer with preset options.\n\n```typescript\nimport { createUrlNormalize } from \"url-normalize\"\n\nconst normalize = createUrlNormalize({ defaultProtocol: \"http\", fragment: false })\n\nnormalize(\"example.com/foo#tag\") // → \"http://example.com/foo\"\n```\n\n### `urlNormalizeOrFail`\n\nThrows instead of returning `null` on invalid input.\n\n```typescript\nimport { urlNormalizeOrFail } from \"url-normalize\"\n\nurlNormalizeOrFail(\"invalid\") // throws\nurlNormalizeOrFail(\"example.com\") // → \"https://example.com\"\n```\n\n### `extractDomain` / `extractDomainOrFail`\n\nExtracts the bare domain from any URL.\n\n```typescript\nimport { extractDomain, extractDomainOrFail } from \"url-normalize\"\n\nextractDomain(\"https://example.com:8080/?a=1&b=2#tag\") // → \"example.com\"\nextractDomain(\"invalid\") // → null\nextractDomainOrFail(\"invalid\") // throws\n```\n\n### `humanizeUrl` / `humanizeUrlOrFail`\n\nStrips the protocol for display-friendly URLs.\n\n```typescript\nimport { humanizeUrl, humanizeUrlOrFail } from \"url-normalize\"\n\nhumanizeUrl(\"https://example.com/foo/bar\") // → \"example.com/foo/bar\"\nhumanizeUrl(\"invalid\") // → null\nhumanizeUrlOrFail(\"invalid\") // throws\n```\n\n## Similar\n\n- [sindresorhus/normalize-url](https://github.com/sindresorhus/normalize-url)\n","readmeFilename":"readme.md"}