{"_id":"@aegisjsproject/url","_rev":"5-fe5c04c728aa53bfa82b0b51e8d13a57","name":"@aegisjsproject/url","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@aegisjsproject/url","version":"1.0.0","keywords":["aegis","url","sanitizer","secure"],"author":{"name":"Chris Zuber","email":"admin@kernvalley.us"},"license":"MIT","_id":"@aegisjsproject/url@1.0.0","maintainers":[{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"}],"homepage":"https://github.com/AegisJSProject/url#readme","bugs":{"url":"https://github.com/AegisJSProject/url/issues"},"dist":{"shasum":"09a2b93aa975dca7ac52911a72ae4b192a9e1193","tarball":"https://registry.npmjs.org/@aegisjsproject/url/-/url-1.0.0.tgz","fileCount":9,"integrity":"sha512-7CTz90Zditx1634wW0KzJiEuvwK1zI2MaTSUzuK67bMDFCFxDEr4hTExACaSHaivsMkSLAdqTfeC7hEY6esLkA==","signatures":[{"sig":"MEUCIH4YHKfBW2p0HBVkhDNNtM2OhYg/c9jPs1J0+chFFj+jAiEAvNc6r8Mls7AwBg4GdpkHnFHZGdtuLh/zaBvK1POkJzU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aegisjsproject%2furl@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12746},"main":"./url.cjs","type":"module","unpkg":"./url.mjs","module":"./url.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./url.js","require":"./url.cjs"},"./*":{"import":"./*.js","require":"./*.cjs"},"./*.js":{"import":"./*.js","require":"./*.cjs"},"./*.cjs":{"import":"./*.js","require":"./*.cjs"},"./*.mjs":{"import":"./*.js","require":"./*.cjs"}},"funding":[{"url":"https://liberapay.com/shgysk8zer0","type":"librepay"},{"url":"https://github.com/sponsors/shgysk8zer0","type":"github"}],"gitHead":"0db64aea8280018eed27bfc8fd90227992892af0","private":false,"scripts":{"test":"npm run lint:js && npm run run:tests","build":"npm run build:js","clean":"rm -f *.{mjs,cjs,map}","fix:js":"eslint . --fix","lint:js":"eslint .","prepare":"npm test && npm run build","build:js":"npm run clean && rollup -c rollup.config.js","run:tests":"node --test","preversion":"npm test && npm run build","create:lock":"npm i --package-lock-only --ignore-scripts --no-audit --no-fund","version:bump":"npm run version:bump:patch","version:bump:major":"npm version --no-git-tag-version major && npm run create:lock","version:bump:minor":"npm version --no-git-tag-version minor && npm run create:lock","version:bump:patch":"npm version --no-git-tag-version patch && npm run create:lock"},"_npmUser":{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"},"repository":{"url":"git+https://github.com/AegisJSProject/url.git","type":"git"},"_npmVersion":"10.1.0","description":"Safe URL parsing/escaping via JS tagged templates","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.13.0","rollup":"^4.24.2","@rollup/plugin-terser":"^0.4.4","@shgysk8zer0/polyfills":"^0.4.5","@shgysk8zer0/eslint-config":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/url_1.0.0_1730129511237_0.13412315763939198","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@aegisjsproject/url","version":"1.0.1","keywords":["aegis","url","sanitizer","secure"],"author":{"name":"Chris Zuber","email":"admin@kernvalley.us"},"license":"MIT","_id":"@aegisjsproject/url@1.0.1","maintainers":[{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"}],"homepage":"https://github.com/AegisJSProject/url#readme","bugs":{"url":"https://github.com/AegisJSProject/url/issues"},"dist":{"shasum":"8b49a82262a0831d57b504863f12ea1bba3c77f2","tarball":"https://registry.npmjs.org/@aegisjsproject/url/-/url-1.0.1.tgz","fileCount":12,"integrity":"sha512-VRZqQ4/FhywfX1rajAxNNJyKzOWRFPMo4zMAeOcT5kdIc9F9Xn2rAbZQREzDzfkRf3I6fJ1U4TV3wCosvoNfWg==","signatures":[{"sig":"MEUCIFOJD4161hI/2PFXwt/3R26RXlN5gXl73MTYIh0bSFWbAiEA1DnF6EoOr86waRY1Q45LySYjs31Rfj12q/GL+mpxN7I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aegisjsproject%2furl@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31186},"main":"./url.cjs","type":"module","unpkg":"./url.min.js","module":"./url.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./url.js","require":"./url.cjs"},"./*":{"import":"./*.js","require":"./*.cjs"},"./*.js":{"import":"./*.js","require":"./*.cjs"},"./*.cjs":{"import":"./*.js","require":"./*.cjs"},"./*.mjs":{"import":"./*.js","require":"./*.cjs"}},"funding":[{"url":"https://liberapay.com/shgysk8zer0","type":"librepay"},{"url":"https://github.com/sponsors/shgysk8zer0","type":"github"}],"gitHead":"f93b2ae089024d0f46e9dc1807db7beb4a81b589","private":false,"scripts":{"test":"npm run lint:js && npm run run:tests","build":"npm run build:js","clean":"rm -f *.{mjs,cjs,map} && rm -f *.min.*","fix:js":"eslint . --fix","lint:js":"eslint .","prepare":"npm test && npm run build","build:js":"npm run clean && rollup -c rollup.config.js","run:tests":"node --test","preversion":"npm test && npm run build","create:lock":"npm i --package-lock-only --ignore-scripts --no-audit --no-fund","version:bump":"npm run version:bump:patch","version:bump:major":"npm version --no-git-tag-version major && npm run create:lock","version:bump:minor":"npm version --no-git-tag-version minor && npm run create:lock","version:bump:patch":"npm version --no-git-tag-version patch && npm run create:lock"},"_npmUser":{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"},"repository":{"url":"git+https://github.com/AegisJSProject/url.git","type":"git"},"_npmVersion":"10.1.0","description":"Safe URL parsing/escaping via JS tagged templates","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.13.0","rollup":"^4.24.2","@rollup/plugin-terser":"^0.4.4","@shgysk8zer0/polyfills":"^0.4.5","@shgysk8zer0/eslint-config":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/url_1.0.1_1732588138663_0.3375565691529385","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@aegisjsproject/url","version":"1.0.2","keywords":["aegis","url","sanitizer","secure"],"author":{"name":"Chris Zuber","email":"admin@kernvalley.us"},"license":"MIT","_id":"@aegisjsproject/url@1.0.2","maintainers":[{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"}],"homepage":"https://github.com/AegisJSProject/url#readme","bugs":{"url":"https://github.com/AegisJSProject/url/issues"},"dist":{"shasum":"65ead60366512f04cbecbe9a764ca523dcb65888","tarball":"https://registry.npmjs.org/@aegisjsproject/url/-/url-1.0.2.tgz","fileCount":13,"integrity":"sha512-FbMJoB3XaYijxvBglk1r5SipkwrNJreepm+bKE/VZAiZnVMpyy8UmeU8ZJD/k007LhcJ/fRrcs+41oZAZeBPWQ==","signatures":[{"sig":"MEUCIQCGmQ6MTZdCfG2bgkbkAcZw6towFrkXJrEhR+tzemHHwAIgVZc70V6VW+cTehoovHoD2EuOhFdMVMsHFnz8CqDoDu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aegisjsproject%2furl@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45370},"main":"./url.cjs","type":"module","unpkg":"./url.min.js","module":"./url.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./url.js","require":"./url.cjs"},"./*":{"import":"./*.js","require":"./*.cjs"},"./*.js":{"import":"./*.js","require":"./*.cjs"},"./*.cjs":{"import":"./*.js","require":"./*.cjs"},"./*.mjs":{"import":"./*.js","require":"./*.cjs"}},"funding":[{"url":"https://liberapay.com/shgysk8zer0","type":"librepay"},{"url":"https://github.com/sponsors/shgysk8zer0","type":"github"}],"gitHead":"a83daa2cfbe5650272fd59837c856e96364ddc56","private":false,"scripts":{"test":"npm run lint:js && npm run run:tests","build":"npm run build:js","clean":"rm -f *.{mjs,cjs,map} && rm -f *.min.*","fix:js":"eslint . --fix","lint:js":"eslint .","prepare":"npm test && npm run build","build:js":"npm run clean && rollup -c rollup.config.js","run:tests":"node --test","preversion":"npm test && npm run build","create:lock":"npm i --package-lock-only --ignore-scripts --no-audit --no-fund","version:bump":"npm run version:bump:patch","version:bump:major":"npm version --no-git-tag-version major && npm run create:lock","version:bump:minor":"npm version --no-git-tag-version minor && npm run create:lock","version:bump:patch":"npm version --no-git-tag-version patch && npm run create:lock"},"_npmUser":{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"},"repository":{"url":"git+https://github.com/AegisJSProject/url.git","type":"git"},"_npmVersion":"10.1.0","description":"Safe URL parsing/escaping via JS tagged templates","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.13.0","rollup":"^4.24.2","@rollup/plugin-terser":"^0.4.4","@shgysk8zer0/polyfills":"^0.4.5","@shgysk8zer0/eslint-config":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/url_1.0.2_1737865421982_0.8547866443227614","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aegisjsproject/url","version":"1.0.3","keywords":["aegis","url","sanitizer","secure"],"author":{"name":"Chris Zuber","email":"admin@kernvalley.us"},"license":"MIT","_id":"@aegisjsproject/url@1.0.3","maintainers":[{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"}],"homepage":"https://github.com/AegisJSProject/url#readme","bugs":{"url":"https://github.com/AegisJSProject/url/issues"},"dist":{"shasum":"89063f0c0858ce68f2b3de345129169f841a1938","tarball":"https://registry.npmjs.org/@aegisjsproject/url/-/url-1.0.3.tgz","fileCount":13,"integrity":"sha512-gbk9oRpNxOeYDM/BxfsEYoG0DpFu2++WW9agwlkoVivUGlJyLawmsUQAn9+rvw2fm+Pmr1EUXLbRaxi7drTOKg==","signatures":[{"sig":"MEYCIQCvhHsOKWxYN3wSf/iAmN9/mMtfKlkEhawh5ToasELAjgIhAPVc5lFI9FtEXMt1JlGD5ZkchPWt2ajpfwsOAZ5Ruryr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aegisjsproject%2furl@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":47871},"main":"./url.cjs","type":"module","unpkg":"./url.min.js","module":"./url.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./url.js","require":"./url.cjs"},"./*":{"import":"./*.js","require":"./*.cjs"},"./*.js":{"import":"./*.js","require":"./*.cjs"},"./*.cjs":{"import":"./*.js","require":"./*.cjs"},"./*.mjs":{"import":"./*.js","require":"./*.cjs"}},"funding":[{"url":"https://liberapay.com/shgysk8zer0","type":"librepay"},{"url":"https://github.com/sponsors/shgysk8zer0","type":"github"}],"gitHead":"22406146720a9e3bb60e51a34b1f0f4813066656","private":false,"scripts":{"test":"npm run lint:js && npm run run:tests","build":"npm run build:js","clean":"rm -f *.{mjs,cjs,map} && rm -f *.min.*","start":"http-server -c ./http.config.js","fix:js":"eslint . --fix","lint:js":"eslint .","prepare":"npm test && npm run build","build:js":"npm run clean && rollup -c rollup.config.js","run:tests":"node --test","preversion":"npm test && npm run build","create:lock":"npm i --package-lock-only --ignore-scripts --no-audit --no-fund","version:bump":"npm run version:bump:patch","version:bump:major":"npm version --no-git-tag-version major && npm run create:lock","version:bump:minor":"npm version --no-git-tag-version minor && npm run create:lock","version:bump:patch":"npm version --no-git-tag-version patch && npm run create:lock"},"_npmUser":{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"},"repository":{"url":"git+https://github.com/AegisJSProject/url.git","type":"git"},"_npmVersion":"10.1.0","description":"Safe URL parsing/escaping via JS tagged templates","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.13.0","rollup":"^4.24.2","@rollup/plugin-terser":"^0.4.4","@shgysk8zer0/polyfills":"^0.4.5","@shgysk8zer0/http-server":"^1.1.1","@shgysk8zer0/eslint-config":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/url_1.0.3_1741720450267_0.10402704068845314","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"_id":"@aegisjsproject/url@1.1.0","bugs":{"url":"https://github.com/AegisJSProject/url/issues"},"dist":{"shasum":"50e5ea87dc09c00e6ecb9a81124203348735e82d","tarball":"https://registry.npmjs.org/@aegisjsproject/url/-/url-1.1.0.tgz","integrity":"sha512-Pb4pkpdOViX9fD23gig9x1Zj9rrKwY8ygRivK6IjywYQsky553rbrItZeTju/3OO5UpUdbjOKn721fc3HMBJEQ==","fileCount":13,"unpackedSize":48130,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aegisjsproject%2furl@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDZhxQ9n2hSbq2J7VAr8s7i67Szq2hOz5y99YAPvxh5rgIhAIiHXVDCP3YdPta9HfaSsRgnMTSqkLTbwSHX9ZiXEomm"}]},"main":"./url.cjs","name":"@aegisjsproject/url","type":"module","unpkg":"./url.min.js","author":{"name":"Chris Zuber","email":"admin@kernvalley.us"},"module":"./url.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./url.js","require":"./url.cjs"},"./*":{"import":"./*.js","require":"./*.cjs"},"./*.js":{"import":"./*.js","require":"./*.cjs"},"./*.cjs":{"import":"./*.js","require":"./*.cjs"},"./*.mjs":{"import":"./*.js","require":"./*.cjs"}},"funding":[{"url":"https://liberapay.com/shgysk8zer0","type":"librepay"},{"url":"https://github.com/sponsors/shgysk8zer0","type":"github"}],"gitHead":"c4b57134755c97920b20119b44a552ddcbac5831","license":"MIT","private":false,"scripts":{"test":"npm run lint:js && npm run run:tests","build":"npm run build:js","clean":"rm -f *.{mjs,cjs,map} && rm -f *.min.*","start":"http-server -c ./http.config.js","fix:js":"eslint . --fix","lint:js":"eslint .","prepare":"npm test && npm run build","build:js":"npm run clean && rollup -c rollup.config.js","run:tests":"node --test","preversion":"npm test && npm run build","create:lock":"npm i --package-lock-only --ignore-scripts --no-audit --no-fund","version:bump":"npm run version:bump:patch","version:bump:major":"npm version --no-git-tag-version major && npm run create:lock","version:bump:minor":"npm version --no-git-tag-version minor && npm run create:lock","version:bump:patch":"npm version --no-git-tag-version patch && npm run create:lock"},"version":"1.1.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f1d8ab2b-921b-451c-a2f7-af8b99f45026"},"approver":{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"}},"homepage":"https://github.com/AegisJSProject/url#readme","keywords":["aegis","url","sanitizer","secure"],"repository":{"url":"git+https://github.com/AegisJSProject/url.git","type":"git"},"_npmVersion":"11.16.0","description":"Safe URL parsing/escaping via JS tagged templates","directories":{},"maintainers":[{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"}],"_nodeVersion":"26.3.0","allowScripts":{"fsevents@2.3.3":true},"devDependencies":{"eslint":"^10.5.0","rollup":"^4.62.0","@rollup/plugin-terser":"^1.0.0","@shgysk8zer0/polyfills":"^0.8.4","@shgysk8zer0/http-server":"^1.2.0","@shgysk8zer0/eslint-config":"^1.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/url_1.1.0_1781464035728_0.41838663132423304"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-28T15:31:51.120Z","modified":"2026-06-14T19:07:16.104Z","1.0.0":"2024-10-28T15:31:51.406Z","1.0.1":"2024-11-26T02:28:58.853Z","1.0.2":"2025-01-26T04:23:42.181Z","1.0.3":"2025-03-11T19:14:10.448Z","1.1.0":"2026-06-14T19:07:15.806Z"},"bugs":{"url":"https://github.com/AegisJSProject/url/issues"},"author":{"name":"Chris Zuber","email":"admin@kernvalley.us"},"license":"MIT","homepage":"https://github.com/AegisJSProject/url#readme","keywords":["aegis","url","sanitizer","secure"],"repository":{"url":"git+https://github.com/AegisJSProject/url.git","type":"git"},"description":"Safe URL parsing/escaping via JS tagged templates","maintainers":[{"name":"shgysk8zer0","email":"shgysk8zer0@gmail.com"}],"readme":"# `@aegisjsproject/url`\n\nSafe URL parsing/escaping via JS tagged templates\n\n[![CodeQL](https://github.com/AegisJSProject/url/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/AegisJSProject/url/actions/workflows/codeql-analysis.yml)\n![Node CI](https://github.com/AegisJSProject/url/workflows/Node%20CI/badge.svg)\n![Lint Code Base](https://github.com/AegisJSProject/url/workflows/Lint%20Code%20Base/badge.svg)\n\n[![GitHub license](https://img.shields.io/github/license/AegisJSProject/url.svg)](https://github.com/AegisJSProject/url/blob/master/LICENSE)\n[![GitHub last commit](https://img.shields.io/github/last-commit/AegisJSProject/url.svg)](https://github.com/AegisJSProject/url/commits/master)\n[![GitHub release](https://img.shields.io/github/release/AegisJSProject/url?logo=github)](https://github.com/AegisJSProject/url/releases)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/shgysk8zer0?logo=github)](https://github.com/sponsors/shgysk8zer0)\n\n[![npm](https://img.shields.io/npm/v/@aegisjsproject/url)](https://www.npmjs.com/package/@aegisjsproject/url)\n![node-current](https://img.shields.io/node/v/@aegisjsproject/url)\n![npm bundle size gzipped](https://img.shields.io/bundlephobia/minzip/@aegisjsproject/url)\n[![npm](https://img.shields.io/npm/dw/@aegisjsproject/url?logo=npm)](https://www.npmjs.com/package/@aegisjsproject/url)\n\n[![GitHub followers](https://img.shields.io/github/followers/shgysk8zer0.svg?style=social)](https://github.com/shgysk8zer0)\n![GitHub forks](https://img.shields.io/github/forks/AegisJSProject/url.svg?style=social)\n![GitHub stars](https://img.shields.io/github/stars/AegisJSProject/url.svg?style=social)\n[![Twitter Follow](https://img.shields.io/twitter/follow/shgysk8zer0.svg?style=social)](https://twitter.com/shgysk8zer0)\n\n[![Donate using Liberapay](https://img.shields.io/liberapay/receives/shgysk8zer0.svg?logo=liberapay)](https://liberapay.com/shgysk8zer0/donate \"Donate using Liberapay\")\n- - -\n\n- [Code of Conduct](./.github/CODE_OF_CONDUCT.md)\n- [Contributing](./.github/CONTRIBUTING.md)\n- [Security Policy](./.github/SECURITY.md)\n\n## Installation\n\n```bash\nnpm i @aegisjsproject/url\n```\n\n## Usage\n\n```js\nimport { url } from '@aegisjsproject/url';\n\n// Santize user input (encodes and escapes as necessary)\nconst url1 = url`https://example.com/${userInput}`;\nconst url2 = url`${location.origin}/path/${someVar}`;\n\n// Create a `blob:` URI from a file\nconst file = new File(['Hello, World!'], hi.txt, { type: 'text/plain' });\nconst download = `<a href=\"${url`file`}\" download=\"${file.name}\">Download File</a>`;\n```\n","readmeFilename":"README.md"}