{"_id":"@cjser/is-relative-url","_rev":"2-e67a883085d101a60692967451d3cf67","name":"@cjser/is-relative-url","dist-tags":{"latest":"4.1.1-cjser.2"},"versions":{"4.1.0-cjser.2":{"name":"@cjser/is-relative-url","version":"4.1.0-cjser.2","keywords":["url","relative","absolute","uri","is","check"],"author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"license":"MIT","_id":"@cjser/is-relative-url@4.1.0-cjser.2","maintainers":[{"name":"nanahira","email":"nanahira@momobako.com"}],"dist":{"shasum":"f60d202d26082692b4b5b1a622c09393cabd91cf","tarball":"https://registry.npmjs.org/@cjser/is-relative-url/-/is-relative-url-4.1.0-cjser.2.tgz","fileCount":6,"integrity":"sha512-/zUA5vdXISgnNAKD3/ALvOa9A7LgyXNyzvw8IWi7Ts2gs8P+8gcdZtE3P6wYdb0Ti66MY6XnNt5UHjGnNeJxDg==","signatures":[{"sig":"MEUCIQDeVuIVE/ZZTlxx0dfsAegQOZfMJZ5XasJGxO6VujNO+QIgMYZIoO5eHVEfLCziX/a/fuE97mxAm2QPQL5ad1LegqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8013},"main":"./dist-cjser/index.cjs","type":"module","cjser":{"original":{"name":"is-relative-url","files":["index.js","index.d.ts"],"exports":"./index.js","scripts":{"test":"ava && tsd","//test":"xo && ava && tsd"},"version":"4.1.0","repository":"sindresorhus/is-relative-url","dependencies":{"is-absolute-url":"^4.0.1"}},"cjserVersion":2,"sourceVersion":"4.1.0"},"types":"./index.d.ts","engines":{"node":">=14.16"},"exports":{"default":"./index.js","require":"./dist-cjser/index.cjs"},"funding":"https://github.com/sponsors/sindresorhus","gitHead":"a4bef54d7d22d3d9a6b84528457938d84cd65fe7","scripts":{"test":"ava && tsd","//test":"xo && ava && tsd"},"_npmUser":{"name":"nanahira","email":"nanahira@momobako.com"},"repository":{"url":"https://code.moenext.com/3rdeye/cjser.git","type":"git"},"_npmVersion":"10.7.0","description":"Check if a URL is relative","directories":{},"sideEffects":false,"_nodeVersion":"20.14.0","dependencies":{"@cjser/is-absolute-url__v4_0_1":"4.0.1-cjser.2"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.49.0","ava":"^4.3.0","tsd":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/is-relative-url_4.1.0-cjser.2_1778158806915_0.7557536067405723","host":"s3://npm-registry-packages-npm-production"}},"4.1.1-cjser.2":{"_id":"@cjser/is-relative-url@4.1.1-cjser.2","dist":{"shasum":"abeb944a68366c604d87b96a394e7acd3e21ca82","tarball":"https://registry.npmjs.org/@cjser/is-relative-url/-/is-relative-url-4.1.1-cjser.2.tgz","fileCount":6,"integrity":"sha512-E0thRs14mGXJPHR2a9lgQh1z1rSatha+sibNAG1Elth4Qv6Jt/nsKGo/ArDmNaZaXRoJTiASB+dU6QGJvXeXrg==","signatures":[{"sig":"MEUCIHavquLBHOL+g31xZ/IhmLDwZt+R/LnoLoyru47bHJqMAiEA8w9kW6ATQ5Rn8qkjQaaN29ZxjOy73yRe+RZE3LhAng8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCbAKGgeZ+jRFul5nl46g9aEpBBR/7hd1+fTbhFVKqQXwIhAKDqrqYPIAaNO3l1Fv9ziDdYnflJRgnjTS0yxm8QnK9d"}],"unpackedSize":8538},"main":"./dist-cjser/index.cjs","name":"@cjser/is-relative-url","type":"module","cjser":{"original":{"name":"is-relative-url","files":["index.js","index.d.ts"],"exports":"./index.js","scripts":{"test":"ava && tsd","//test":"xo && ava && tsd"},"version":"4.1.1","repository":"sindresorhus/is-relative-url","dependencies":{"is-absolute-url":"^4.0.1"}},"cjserVersion":2,"sourceVersion":"4.1.1"},"types":"./index.d.ts","author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"engines":{"node":">=14.16"},"exports":{"default":"./index.js","require":"./dist-cjser/index.cjs"},"funding":"https://github.com/sponsors/sindresorhus","gitHead":"a4bef54d7d22d3d9a6b84528457938d84cd65fe7","license":"MIT","scripts":{"test":"ava && tsd","//test":"xo && ava && tsd"},"version":"4.1.1-cjser.2","_npmUser":{"name":"nanahira","email":"nanahira@momobako.com"},"keywords":["url","relative","absolute","uri","is","check"],"repository":{"url":"https://code.moenext.com/3rdeye/cjser.git","type":"git"},"_npmVersion":"11.9.0","description":"Check if a URL is relative","directories":{},"maintainers":[{"name":"nanahira","email":"nanahira@momobako.com"}],"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@cjser/is-absolute-url__v4_0_1":"4.0.1-cjser.2"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.49.0","ava":"^4.3.0","tsd":"^0.20.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/is-relative-url_4.1.1-cjser.2_1789492679107_0.13103259651603416"}}},"time":{"created":"2026-05-07T13:00:06.819Z","modified":"2026-09-15T17:17:59.412Z","4.1.0-cjser.2":"2026-05-07T13:00:07.054Z","4.1.1-cjser.2":"2026-09-15T17:17:59.193Z"},"author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"license":"MIT","keywords":["url","relative","absolute","uri","is","check"],"repository":{"url":"https://code.moenext.com/3rdeye/cjser.git","type":"git"},"description":"Check if a URL is relative","maintainers":[{"name":"nanahira","email":"nanahira@momobako.com"}],"readme":"# is-relative-url\n\n> Check if a URL is relative\n\n## Install\n\n```sh\nnpm install is-relative-url\n```\n\n## Usage\n\n```js\nimport isRelativeUrl from 'is-relative-url';\n\nisRelativeUrl('foo/bar');\n//=> true\n\nisRelativeUrl('https://sindresorhus.com/foo/bar');\n//=> false\n\nisRelativeUrl('//sindresorhus.com');\n//=> true\n```\n\n## API\n\n### isRelativeUrl(url, options?)\n\n#### url\n\nType: `string`\n\nThe URL to check.\n\n#### options\n\nType: `object`\n\n##### allowProtocolRelative\n\nType: `boolean`\\\nDefault: `true`\n\nAllow [protocol-relative URLs](https://en.wikipedia.org/wiki/URL#Protocol-relative_URLs) (e.g., `//example.com`) to be considered relative.\n\nSetting this to `false` treats URLs starting with two slash or backslash separators (`//`, `\\\\`, `/\\`, `\\/`) as absolute.\n\nThis does not prevent open redirects. For redirect validation, parse against a fixed trusted HTTP(S) base, reject parse failures or mismatched origins/protocols, and use the parsed URL without further changes.\n\n> [!NOTE]\n> Protocol-relative URLs are [technically relative](https://datatracker.ietf.org/doc/html/rfc3986#section-4.2) according to [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986), as they require the current page's protocol to resolve into absolute URLs. However, they can still navigate to external domains, which may be a security concern in certain contexts (e.g., preventing open redirects).\n\n## Related\n\nSee [is-absolute-url](https://github.com/sindresorhus/is-absolute-url) for the inverse.\n\n## cjser\n\nThis package is a CommonJS-compatible build generated by cjser for projects that still need `require()` support. The source version matches the original npm package version, with a cjser prerelease suffix for this generated build.\nOriginal repository: https://github.com/sindresorhus/is-relative-url\n","readmeFilename":"readme.md"}