Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

parse-url

Package Overview
Dependencies
Maintainers
1
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

parse-url - npm Package Compare versions

Comparing version 9.0.1 to 9.2.0

index.d.mts

87

dist/index.js
'use strict';
var parsePath = require('parse-path');
var require$$1 = require('parse-path');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var parsePath__default = /*#__PURE__*/_interopDefaultLegacy(parsePath);
var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
function getAugmentedNamespace(n) {
if (n.__esModule) return n;
var f = n.default;
if (typeof f == "function") {
var a = function a () {
if (this instanceof a) {
var args = [null];
args.push.apply(args, arguments);
var Ctor = Function.bind.apply(f, args);
return new Ctor();
}
return f.apply(this, arguments);
};
a.prototype = f.prototype;
} else a = {};
Object.defineProperty(a, '__esModule', {value: true});
Object.keys(n).forEach(function (k) {
var d = Object.getOwnPropertyDescriptor(n, k);
Object.defineProperty(a, k, d.get ? d : {
enumerable: true,
get: function () {
return n[k];
}
});
});
return a;
}
var src = {};
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

@@ -256,4 +286,25 @@ const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';

// Dependencies
var normalizeUrl$1 = /*#__PURE__*/Object.freeze({
__proto__: null,
'default': normalizeUrl
});
var require$$0 = /*@__PURE__*/getAugmentedNamespace(normalizeUrl$1);
Object.defineProperty(src, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; // Dependencies
var _normalizeUrl = require$$0;
var _normalizeUrl2 = _interopRequireDefault(_normalizeUrl);
var _parsePath = require$$1__default["default"];
var _parsePath2 = _interopRequireDefault(_parsePath);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**

@@ -290,16 +341,18 @@ * parseUrl

*/
const parseUrl = (url, normalize = false) => {
var parseUrl = function parseUrl(url) {
var normalize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
// Constants
/**
* ([a-z_][a-z0-9_-]{0,31}) Try to match the user
* ([a-zA-Z_][a-zA-Z0-9_-]{0,31}) Try to match the user
* ([\w\.\-@]+) Match the host/resource
* (([\~,\.\w,\-,\_,\/,\s]|%[0-9A-Fa-f]{2})+?(?:\.git|\/)?) Match the path, allowing spaces/white
*/
const GIT_RE = /^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:](([\~,\.\w,\-,\_,\/,\s]|%[0-9A-Fa-f]{2})+?(?:\.git|\/)?)$/;
const throwErr = msg => {
const err = new Error(msg);
var GIT_RE = /^(?:([a-zA-Z_][a-zA-Z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:](([\~,\.\w,\-,\_,\/,\s]|%[0-9A-Fa-f]{2})+?(?:\.git|\/)?)$/;
var throwErr = function throwErr(msg) {
var err = new Error(msg);
err.subject_url = url;
throw err
throw err;
};

@@ -316,3 +369,3 @@

if (normalize) {
if (typeof normalize !== "object") {
if ((typeof normalize === "undefined" ? "undefined" : _typeof(normalize)) !== "object") {
normalize = {

@@ -322,10 +375,10 @@ stripHash: false

}
url = normalizeUrl(url, normalize);
url = (0, _normalizeUrl2.default)(url, normalize);
}
const parsed = parsePath__default["default"](url);
var parsed = (0, _parsePath2.default)(url);
// Potential git-ssh urls
if (parsed.parse_failed) {
const matched = parsed.href.match(GIT_RE);
var matched = parsed.href.match(GIT_RE);

@@ -338,3 +391,3 @@ if (matched) {

parsed.user = matched[1];
parsed.pathname = `/${matched[3]}`;
parsed.pathname = "/" + matched[3];
parsed.parse_failed = false;

@@ -351,2 +404,4 @@ } else {

module.exports = parseUrl;
var _default = src.default = parseUrl;
module.exports = _default;

5

package.json
{
"name": "parse-url",
"version": "9.0.1",
"version": "9.2.0",
"description": "An advanced url parser supporting git urls too.",

@@ -45,3 +45,3 @@ "main": "./dist/index.js",

"normalize-url": "^7.0.3",
"pkgroll": "^1.4.0",
"pkgroll": "^1.11.1",
"tester": "^1.3.1",

@@ -66,2 +66,3 @@ "tsd": "^0.24.1"

"index.d.ts",
"index.d.mts",
"bloggify.js",

@@ -68,0 +69,0 @@ "bloggify.json",

@@ -52,4 +52,11 @@ <!-- Please do not edit this file. Edit the `blah` field in the `package.json` instead. If in doubt, open an issue. -->

## :cloud: Installation
```sh
# Using npm
npm install --save parse-url
# Using yarn
yarn add parse-url
```

@@ -63,2 +70,7 @@

## :clipboard: Example

@@ -70,3 +82,3 @@

// Dependencies
import parseUrl from "../lib/index.js";
import parseUrl from "parse-url";

@@ -145,2 +157,3 @@ console.log(parseUrl("http://ionicabizau.net/blog"))

## :question: Get Help

@@ -162,11 +175,56 @@

## :memo: Documentation
### `interopDefaultLegacy()`
#__PURE__
### `parseUrl(url, normalize)`
Parses the input url.
**Note**: This *throws* if invalid urls are provided.
#### Params
- **String** `url`: The input url.
- **Boolean|Object** `normalize`: Whether to normalize the url or not. Default is `false`. If `true`, the url will
be normalized. If an object, it will be the
options object sent to [`normalize-url`](https://github.com/sindresorhus/normalize-url).
For SSH urls, normalize won't work.
#### Return
- **Object** An object containing the following fields:
- `protocols` (Array): An array with the url protocols (usually it has one element).
- `protocol` (String): The first protocol, `"ssh"` (if the url is a ssh url) or `"file"`.
- `port` (null|Number): The domain port.
- `resource` (String): The url domain (including subdomains).
- `host` (String): The fully qualified domain name of a network host, or its IP address.
- `user` (String): The authentication user (usually for ssh urls).
- `pathname` (String): The url pathname.
- `hash` (String): The url hash.
- `search` (String): The url querystring value.
- `href` (String): The input url.
- `query` (Object): The url querystring, parsed as object.
- `parse_failed` (Boolean): Whether the parsing failed or not.
### GIT_RE
([a-zA-Z_][a-zA-Z0-9_-]{0,31}) Try to match the user
([\w\.\-@]+) Match the host/resource
(([\~,\.\w,\-,\_,\/,\s]|%[0-9A-Fa-f]{2})+?(?:\.git|\/)?) Match the path, allowing spaces/white
## :yum: How to contribute

@@ -209,3 +267,305 @@ Have an idea? Found a bug? See [how to contribute][contributing].

## :dizzy: Where is this library used?
If you are using this library in one of your projects, add it in this list. :sparkles:
- `@_nomtek/react-native-shimmer-animation`
- `@aabelmann/ui-layer`
- `@ali5049/react-native-buttons`
- `@amirdiafi/react-native-ios-haptics`
- `@angga30prabu/wa-modified`
- `@apardellass/react-native-audio-stream`
- `@aysea/react-native-ui-library`
- `@azalpacir/react-native-dhp-printer`
- `@brantalikp/rn-resize`
- `@buganto/client`
- `@con-test/react-native-concent-common`
- `@cs6/react-native-test-native-view-library`
- `@damruravihara/react-native-testing-package`
- `@dataparty/api`
- `@enkeledi/react-native-week-month-date-picker`
- `@extrieve_technologies/quickcapture_react_native`
- `@foundernetes/machines`
- `@foundernetes/metal-debian`
- `@geeky-apo/react-native-advanced-clipboard`
- `@hbglobal/react-native-actions-shortcuts`
- `@heycharge/heycharge-react-native-sdk`
- `@hieuquang2212/form`
- `@hstech/utils`
- `@idas1/ui-component-lib`
- `@jfilipe-sparta/react-native-module_2`
- `@jimengio/mocked-proxy`
- `@klevn/solid-router`
- `@lakutata-module/service`
- `@mockswitch/cli`
- `@ndla/source-map-resolver`
- `@npm_fluentco/adflow-react-native-sdk`
- `@oiti/rn-liveness2d`
- `@open-wa/wa-automate`
- `@phpboyscout/semantic-release-gitlab`
- `@phuocnb/semrelease-gitlab`
- `@positionex/position-sdk`
- `@praella/localisationist`
- `@qiwi/sourcecrumbs`
- `@react-native-ui-design/button`
- `@roq/ui-react`
- `@roshub/api`
- `@saad27/react-native-bottom-tab-tour`
- `@semantic-release/gitlab`
- `@sephriot/react-native-persistable-uri`
- `@sidghimire/react-native-mapbox-navigation`
- `@taingo97/react-native-awesome-module`
- `@taingo97/react-native-bluetooth-xprinter`
- `@taingo97/react-native-expo-key-rsa-kt`
- `@taingo97/react-native-generate-key-rsa`
- `@taingo97/react-native-key-rsa`
- `@taingo97/react-native-print-xprinter`
- `@taingo97/react-native-rsa-expo`
- `@taingo97/react-native-sunmi-printer`
- `@taingo97/react-native-telpo-printer`
- `@teles1-semantic-release/gitlab`
- `@thinxviewx/core-rn`
- `@tomw2w/my-nuxt-layer`
- `@valifysolutions/react-native-vidvliveness`
- `@wecraftapps/react-native-use-keyboard`
- `agent-get-agent`
- `angularvezba`
- `apaas-track`
- `api-reach-react-native-fix`
- `archlibrary`
- `arifbudixz`
- `astra-ufo-sdk`
- `awesome-module-kd`
- `ba-js-cookie-banner`
- `begg`
- `bilibili2local`
- `biometric-st`
- `birken-react-native-community-image-editor`
- `blitzzz`
- `build-plugin-ssr`
- `candlelabssdk`
- `checkbox-component`
- `cli-live-tutorial`
- `delta-screen`
- `demo-test-scrn`
- `deploy-versioning`
- `design-system-trial-milyasbpa`
- `dogandev-simple-toast`
- `egg-muc-custom-loader`
- `electron-info`
- `eval-spider`
- `expo-renavigate`
- `fawaterak-online-payment`
- `fawatrak-online-payment`
- `fixed_form_builder`
- `fluent.adflow.reactnativesdk`
- `fluent.adflow.reactnativesdk-alpha`
- `fmsl`
- `framework_test_library_sixdee`
- `framework_test_library_sixdee_new`
- `framework_test_library_sixdee_new_new`
- `fuge-runner`
- `gamification-integration-new`
- `gaurav-react-native-loop`
- `generator-bootstrap-boilerplate-template`
- `genz-native-elements`
- `gh-monoproject-cli`
- `git-up`
- `gitlab-backup-util-harduino`
- `griffin-ui-library`
- `heroku-wp-environment-sync`
- `hologit`
- `hong1-utils`
- `hubot-will-it-connect`
- `hui-plugin-wss`
- `ipsamvel`
- `jamuskalim`
- `jordy-frijters-test-lib`
- `kakapo`
- `khaled-salem-custom-components`
- `luojia-cli-dev`
- `markdownalint-cli2`
- `michael-stun`
- `microbe.js`
- `miguelcostero-ng2-toasty`
- `native-apple-login`
- `native-date-picker-module`
- `native-google-login`
- `native-kakao-login`
- `native-modal-damage-vehicle`
- `native-zip`
- `ndla-source-map-resolver`
- `new-awesome-4321`
- `njs-wa-auto`
- `normalize-id`
- `normalize-ssh`
- `npm_one_12_34_1_`
- `npm_one_1_2_3`
- `npm_one_2_2`
- `npm_qwerty`
- `parse-db-uri`
- `pasbeaucoupmoinsrave`
- `payutesting`
- `pnm-yph-react-native-custom-components`
- `project-wajs-dv`
- `pyreswap-sdk`
- `quickcapture_react_native`
- `raact-native-arunramya151`
- `reac-native-arun-ramya-test`
- `react-native-addition`
- `react-native-android-video-player-view`
- `react-native-animate-text`
- `react-native-app-bubble`
- `react-native-app-integrity-checksum`
- `react-native-arps-authorize-net`
- `react-native-arun-ramya-test`
- `react-native-arunjeyam1987`
- `react-native-arunmeena1987`
- `react-native-arunramya151`
- `react-native-auth-service-client`
- `react-native-aventonfacetec-aventon`
- `react-native-awesome-android-123`
- `react-native-awesome-android-123-zeotap`
- `react-native-awesome-module-latest`
- `react-native-awesome-module-two`
- `react-native-azure-communication-services`
- `react-native-badge-control`
- `react-native-basic-app`
- `react-native-basic-screen`
- `react-native-biometric-authenticate`
- `react-native-bleccs-components`
- `react-native-bluetooth-device-detect`
- `react-native-bridge-package`
- `react-native-bubble-chart`
- `react-native-build-vesion-getter`
- `react-native-check-component`
- `react-native-chenaar`
- `react-native-components-design`
- `react-native-conekta-card-tokenizer`
- `react-native-contact-list`
- `react-native-cplus`
- `react-native-create-video-thumbnail`
- `react-native-ctp-odp`
- `react-native-dhp-printer`
- `react-native-dimensions-layout`
- `react-native-dsphoto-module`
- `react-native-fedlight-dsm`
- `react-native-flyy`
- `react-native-get-countries`
- `react-native-ghn-ekyc`
- `react-native-innity-2`
- `react-native-innity-remaster`
- `react-native-input-library`
- `react-native-is7`
- `react-native-jsi-device-info`
- `react-native-kakao-maps`
- `react-native-klarify-ios`
- `react-native-klarify-ui`
- `react-native-klc`
- `react-native-lib-test-rn-1`
- `react-native-library-testing-422522`
- `react-native-line-login-android`
- `react-native-login-demo-test`
- `react-native-lowlatency`
- `react-native-loyalty-platforms`
- `react-native-manh-test`
- `react-native-manual-ios-sdk`
- `react-native-modal-progress-bar`
- `react-native-module-arge`
- `react-native-module-for-testing`
- `react-native-multiplier-altroncoso`
- `react-native-multiplier-component`
- `react-native-multiplier-demo`
- `react-native-multiplier2`
- `react-native-multiply`
- `react-native-multiply-component`
- `react-native-multiselector`
- `react-native-mun-kit`
- `react-native-my-first-try-arun-ramya`
- `react-native-native-audio-engine`
- `react-native-native-ios-test1`
- `react-native-nativewind`
- `react-native-nghia-sharering`
- `react-native-nice-learning`
- `react-native-omental-framework`
- `react-native-onramp`
- `react-native-payu-payment-testing`
- `react-native-plugpag-wrapper`
- `react-native-progress-arrow`
- `react-native-pulsator-native`
- `react-native-rabbitmq-all`
- `react-native-radio-bic-group-lib`
- `react-native-reanimated-sortable-list`
- `react-native-recent-framework-update`
- `react-native-responsive-helper`
- `react-native-responsive-size`
- `react-native-return-usb-data`
- `react-native-rn-app`
- `react-native-rn-icons-library`
- `react-native-rom-components`
- `react-native-rtn-ips-poslin-test`
- `react-native-sandycomponent`
- `react-native-savczuk-feature-library`
- `react-native-sayhello-module`
- `react-native-screen-idle-timer`
- `react-native-scroll-tab-to-index`
- `react-native-shared-gesture`
- `react-native-simple-timeline`
- `react-native-sixdee_test_lib`
- `react-native-sp-test-common`
- `react-native-teknoctrl-components`
- `react-native-test-comlibrary`
- `react-native-test-module-hhh`
- `react-native-test-view`
- `react-native-ticker-tape`
- `react-native-tone-framework`
- `react-native-transtracker-library`
- `react-native-ui-components-library`
- `react-native-uvc-camera-android`
- `react-native-version-app`
- `react-native-volume-phisical`
- `react-native-withframework-check`
- `react-native-wtf`
- `react-native-xiaomi-permissions`
- `react-native-xprinter-thermal-ble`
- `react-native-ytximkit`
- `reactnatively`
- `reat-native-multiplierkpr`
- `refinejs-repo`
- `rn-adyen-dropin`
- `rn-agora-ios-m`
- `rn-circular-chart`
- `rn-counter-demo`
- `rn-session-multiplier-demo`
- `rn-tm-notify`
- `rn_unique_device_id`
- `robots-agent`
- `rocomp`
- `smart_one_connect`
- `soajs.repositories`
- `sourcecrumbs`
- `stun`
- `sushi-sdk-ftm`
- `test-haptik-lib`
- `test-zeo-collect`
- `ts-scraper`
- `tumblr-text`
- `url-local`
- `vision-camera-base64-resized`
- `vision-camera-plugin-face-detector`
- `vision-camera-plugin-scan-faces`
- `vrt-cli`
- `vue-cli-plugin-ice-builder`
- `vue-cli-plugin-ut-builder`
- `wa-frikz`
- `wander-cli`
- `warp-api`
- `warp-server`
- `web-yii2`
- `wifi_configuration_package`
- `workpad`
- `xbuilder-forms`
- `xl-git-up`
- `yangtao-js`
- `zeo-collect`
- `zzzxxxyyy321123`

@@ -218,2 +578,6 @@

## :scroll: License

@@ -220,0 +584,0 @@

@@ -1,6 +0,19 @@

// Dependencies
"use strict";
import normalizeUrl from "normalize-url";
import parsePath from "parse-path";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; // Dependencies
var _normalizeUrl = require("normalize-url");
var _normalizeUrl2 = _interopRequireDefault(_normalizeUrl);
var _parsePath = require("parse-path");
var _parsePath2 = _interopRequireDefault(_parsePath);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**

@@ -37,51 +50,53 @@ * parseUrl

*/
const parseUrl = (url, normalize = false) => {
var parseUrl = function parseUrl(url) {
var normalize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
// Constants
/**
* ([a-z_][a-z0-9_-]{0,31}) Try to match the user
* ([a-zA-Z_][a-zA-Z0-9_-]{0,31}) Try to match the user
* ([\w\.\-@]+) Match the host/resource
* (([\~,\.\w,\-,\_,\/,\s]|%[0-9A-Fa-f]{2})+?(?:\.git|\/)?) Match the path, allowing spaces/white
*/
const GIT_RE = /^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:](([\~,\.\w,\-,\_,\/,\s]|%[0-9A-Fa-f]{2})+?(?:\.git|\/)?)$/;
const throwErr = msg => {
const err = new Error(msg)
err.subject_url = url
throw err
}
var GIT_RE = /^(?:([a-zA-Z_][a-zA-Z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:](([\~,\.\w,\-,\_,\/,\s]|%[0-9A-Fa-f]{2})+?(?:\.git|\/)?)$/;
var throwErr = function throwErr(msg) {
var err = new Error(msg);
err.subject_url = url;
throw err;
};
if (typeof url !== "string" || !url.trim()) {
throwErr("Invalid url.")
throwErr("Invalid url.");
}
if (url.length > parseUrl.MAX_INPUT_LENGTH) {
throwErr("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.")
throwErr("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.");
}
if (normalize) {
if (typeof normalize !== "object") {
if ((typeof normalize === "undefined" ? "undefined" : _typeof(normalize)) !== "object") {
normalize = {
stripHash: false
}
};
}
url = normalizeUrl(url, normalize)
url = (0, _normalizeUrl2.default)(url, normalize);
}
const parsed = parsePath(url)
var parsed = (0, _parsePath2.default)(url);
// Potential git-ssh urls
if (parsed.parse_failed) {
const matched = parsed.href.match(GIT_RE)
var matched = parsed.href.match(GIT_RE);
if (matched) {
parsed.protocols = ["ssh"]
parsed.protocol = "ssh"
parsed.resource = matched[2]
parsed.host = matched[2]
parsed.user = matched[1]
parsed.pathname = `/${matched[3]}`
parsed.parse_failed = false
parsed.protocols = ["ssh"];
parsed.protocol = "ssh";
parsed.resource = matched[2];
parsed.host = matched[2];
parsed.user = matched[1];
parsed.pathname = "/" + matched[3];
parsed.parse_failed = false;
} else {
throwErr("URL parsing failed.")
throwErr("URL parsing failed.");
}

@@ -91,6 +106,6 @@ }

return parsed;
}
};
parseUrl.MAX_INPUT_LENGTH = 2048
parseUrl.MAX_INPUT_LENGTH = 2048;
export default parseUrl;
exports.default = parseUrl;

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc