This commit is contained in:
21
node_modules/resolve-pathname/LICENSE
generated
vendored
Normal file
21
node_modules/resolve-pathname/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) Michael Jackson 2016-2018
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
64
node_modules/resolve-pathname/README.md
generated
vendored
Normal file
64
node_modules/resolve-pathname/README.md
generated
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
# resolve-pathname [![Travis][build-badge]][build] [![npm package][npm-badge]][npm]
|
||||
|
||||
[build-badge]: https://img.shields.io/travis/mjackson/resolve-pathname/master.svg?style=flat-square
|
||||
[build]: https://travis-ci.org/mjackson/resolve-pathname
|
||||
[npm-badge]: https://img.shields.io/npm/v/resolve-pathname.svg?style=flat-square
|
||||
[npm]: https://www.npmjs.org/package/resolve-pathname
|
||||
|
||||
[resolve-pathname](https://www.npmjs.com/package/resolve-pathname) resolves URL pathnames identical to the way browsers resolve the pathname of an `<a href>` value. The goals are:
|
||||
|
||||
- 100% compatibility with browser pathname resolution
|
||||
- Pure JavaScript implementation (no DOM dependency)
|
||||
|
||||
## Installation
|
||||
|
||||
Using [npm](https://www.npmjs.com/):
|
||||
|
||||
$ npm install --save resolve-pathname
|
||||
|
||||
Then, use as you would anything else:
|
||||
|
||||
```js
|
||||
// using ES6 modules
|
||||
import resolvePathname from 'resolve-pathname';
|
||||
|
||||
// using CommonJS modules
|
||||
var resolvePathname = require('resolve-pathname');
|
||||
```
|
||||
|
||||
The UMD build is also available on [unpkg](https://unpkg.com):
|
||||
|
||||
```html
|
||||
<script src="https://unpkg.com/resolve-pathname"></script>
|
||||
```
|
||||
|
||||
You can find the library on `window.resolvePathname`.
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import resolvePathname from 'resolve-pathname';
|
||||
|
||||
// Simply pass the pathname you'd like to resolve. Second
|
||||
// argument is the path we're coming from, or the current
|
||||
// pathname. It defaults to "/".
|
||||
resolvePathname('about', '/company/jobs'); // /company/about
|
||||
resolvePathname('../jobs', '/company/team/ceo'); // /company/jobs
|
||||
resolvePathname('about'); // /about
|
||||
resolvePathname('/about'); // /about
|
||||
|
||||
// Index paths (with a trailing slash) are also supported and
|
||||
// work the same way as browsers.
|
||||
resolvePathname('about', '/company/info/'); // /company/info/about
|
||||
|
||||
// In browsers, it's easy to resolve a URL pathname relative to
|
||||
// the current page. Just use window.location! e.g. if
|
||||
// window.location.pathname == '/company/team/ceo' then
|
||||
resolvePathname('cto', window.location.pathname); // /company/team/cto
|
||||
resolvePathname('../jobs', window.location.pathname); // /company/jobs
|
||||
```
|
||||
|
||||
## Prior Work
|
||||
|
||||
- [url.resolve](https://nodejs.org/api/url.html#url_url_resolve_from_to) - node's `url.resolve` implementation for full URLs
|
||||
- [resolve-url](https://www.npmjs.com/package/resolve-url) - A DOM-dependent implementation of the same algorithm
|
||||
77
node_modules/resolve-pathname/cjs/resolve-pathname.js
generated
vendored
Normal file
77
node_modules/resolve-pathname/cjs/resolve-pathname.js
generated
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
'use strict';
|
||||
|
||||
function isAbsolute(pathname) {
|
||||
return pathname.charAt(0) === '/';
|
||||
}
|
||||
|
||||
// About 1.5x faster than the two-arg version of Array#splice()
|
||||
function spliceOne(list, index) {
|
||||
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {
|
||||
list[i] = list[k];
|
||||
}
|
||||
|
||||
list.pop();
|
||||
}
|
||||
|
||||
// This implementation is based heavily on node's url.parse
|
||||
function resolvePathname(to, from) {
|
||||
if (from === undefined) from = '';
|
||||
|
||||
var toParts = (to && to.split('/')) || [];
|
||||
var fromParts = (from && from.split('/')) || [];
|
||||
|
||||
var isToAbs = to && isAbsolute(to);
|
||||
var isFromAbs = from && isAbsolute(from);
|
||||
var mustEndAbs = isToAbs || isFromAbs;
|
||||
|
||||
if (to && isAbsolute(to)) {
|
||||
// to is absolute
|
||||
fromParts = toParts;
|
||||
} else if (toParts.length) {
|
||||
// to is relative, drop the filename
|
||||
fromParts.pop();
|
||||
fromParts = fromParts.concat(toParts);
|
||||
}
|
||||
|
||||
if (!fromParts.length) return '/';
|
||||
|
||||
var hasTrailingSlash;
|
||||
if (fromParts.length) {
|
||||
var last = fromParts[fromParts.length - 1];
|
||||
hasTrailingSlash = last === '.' || last === '..' || last === '';
|
||||
} else {
|
||||
hasTrailingSlash = false;
|
||||
}
|
||||
|
||||
var up = 0;
|
||||
for (var i = fromParts.length; i >= 0; i--) {
|
||||
var part = fromParts[i];
|
||||
|
||||
if (part === '.') {
|
||||
spliceOne(fromParts, i);
|
||||
} else if (part === '..') {
|
||||
spliceOne(fromParts, i);
|
||||
up++;
|
||||
} else if (up) {
|
||||
spliceOne(fromParts, i);
|
||||
up--;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');
|
||||
|
||||
if (
|
||||
mustEndAbs &&
|
||||
fromParts[0] !== '' &&
|
||||
(!fromParts[0] || !isAbsolute(fromParts[0]))
|
||||
)
|
||||
fromParts.unshift('');
|
||||
|
||||
var result = fromParts.join('/');
|
||||
|
||||
if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = resolvePathname;
|
||||
1
node_modules/resolve-pathname/cjs/resolve-pathname.min.js
generated
vendored
Normal file
1
node_modules/resolve-pathname/cjs/resolve-pathname.min.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";function isAbsolute(e){return"/"===e.charAt(0)}function spliceOne(e,t){for(var s=t,n=s+1,i=e.length;n<i;s+=1,n+=1)e[s]=e[n];e.pop()}function resolvePathname(e,t){void 0===t&&(t="");var s,n=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&isAbsolute(e),r=t&&isAbsolute(t),o=l||r;if(e&&isAbsolute(e)?i=n:n.length&&(i.pop(),i=i.concat(n)),!i.length)return"/";if(i.length){var u=i[i.length-1];s="."===u||".."===u||""===u}else s=!1;for(var a=0,c=i.length;0<=c;c--){var f=i[c];"."===f?spliceOne(i,c):".."===f?(spliceOne(i,c),a++):a&&(spliceOne(i,c),a--)}if(!o)for(;a--;a)i.unshift("..");!o||""===i[0]||i[0]&&isAbsolute(i[0])||i.unshift("");var h=i.join("/");return s&&"/"!==h.substr(-1)&&(h+="/"),h}module.exports=resolvePathname;
|
||||
75
node_modules/resolve-pathname/esm/resolve-pathname.js
generated
vendored
Normal file
75
node_modules/resolve-pathname/esm/resolve-pathname.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
function isAbsolute(pathname) {
|
||||
return pathname.charAt(0) === '/';
|
||||
}
|
||||
|
||||
// About 1.5x faster than the two-arg version of Array#splice()
|
||||
function spliceOne(list, index) {
|
||||
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {
|
||||
list[i] = list[k];
|
||||
}
|
||||
|
||||
list.pop();
|
||||
}
|
||||
|
||||
// This implementation is based heavily on node's url.parse
|
||||
function resolvePathname(to, from) {
|
||||
if (from === undefined) from = '';
|
||||
|
||||
var toParts = (to && to.split('/')) || [];
|
||||
var fromParts = (from && from.split('/')) || [];
|
||||
|
||||
var isToAbs = to && isAbsolute(to);
|
||||
var isFromAbs = from && isAbsolute(from);
|
||||
var mustEndAbs = isToAbs || isFromAbs;
|
||||
|
||||
if (to && isAbsolute(to)) {
|
||||
// to is absolute
|
||||
fromParts = toParts;
|
||||
} else if (toParts.length) {
|
||||
// to is relative, drop the filename
|
||||
fromParts.pop();
|
||||
fromParts = fromParts.concat(toParts);
|
||||
}
|
||||
|
||||
if (!fromParts.length) return '/';
|
||||
|
||||
var hasTrailingSlash;
|
||||
if (fromParts.length) {
|
||||
var last = fromParts[fromParts.length - 1];
|
||||
hasTrailingSlash = last === '.' || last === '..' || last === '';
|
||||
} else {
|
||||
hasTrailingSlash = false;
|
||||
}
|
||||
|
||||
var up = 0;
|
||||
for (var i = fromParts.length; i >= 0; i--) {
|
||||
var part = fromParts[i];
|
||||
|
||||
if (part === '.') {
|
||||
spliceOne(fromParts, i);
|
||||
} else if (part === '..') {
|
||||
spliceOne(fromParts, i);
|
||||
up++;
|
||||
} else if (up) {
|
||||
spliceOne(fromParts, i);
|
||||
up--;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');
|
||||
|
||||
if (
|
||||
mustEndAbs &&
|
||||
fromParts[0] !== '' &&
|
||||
(!fromParts[0] || !isAbsolute(fromParts[0]))
|
||||
)
|
||||
fromParts.unshift('');
|
||||
|
||||
var result = fromParts.join('/');
|
||||
|
||||
if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export default resolvePathname;
|
||||
7
node_modules/resolve-pathname/index.js
generated
vendored
Normal file
7
node_modules/resolve-pathname/index.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
module.exports = require('./cjs/resolve-pathname.min.js');
|
||||
} else {
|
||||
module.exports = require('./cjs/resolve-pathname.js');
|
||||
}
|
||||
37
node_modules/resolve-pathname/package.json
generated
vendored
Normal file
37
node_modules/resolve-pathname/package.json
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "resolve-pathname",
|
||||
"version": "3.0.0",
|
||||
"description": "Resolve URL pathnames using JavaScript",
|
||||
"repository": "mjackson/resolve-pathname",
|
||||
"license": "MIT",
|
||||
"author": "Michael Jackson",
|
||||
"files": [
|
||||
"cjs",
|
||||
"esm",
|
||||
"index.js",
|
||||
"umd"
|
||||
],
|
||||
"main": "index.js",
|
||||
"module": "esm/resolve-pathname.js",
|
||||
"unpkg": "umd/resolve-pathname.js",
|
||||
"scripts": {
|
||||
"build": "rollup -c",
|
||||
"clean": "git clean -fdX .",
|
||||
"lint": "eslint modules",
|
||||
"prepublishOnly": "npm run build",
|
||||
"test": "jest"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.1.6",
|
||||
"@babel/preset-env": "^7.1.6",
|
||||
"babel-core": "^7.0.0-bridge.0",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"babel-jest": "^23.6.0",
|
||||
"eslint": "^5.9.0",
|
||||
"jest": "^23.6.0",
|
||||
"rollup": "^0.67.3",
|
||||
"rollup-plugin-replace": "^2.1.0",
|
||||
"rollup-plugin-size-snapshot": "^0.7.0",
|
||||
"rollup-plugin-uglify": "^6.0.0"
|
||||
}
|
||||
}
|
||||
83
node_modules/resolve-pathname/umd/resolve-pathname.js
generated
vendored
Normal file
83
node_modules/resolve-pathname/umd/resolve-pathname.js
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global.resolvePathname = factory());
|
||||
}(this, (function () { 'use strict';
|
||||
|
||||
function isAbsolute(pathname) {
|
||||
return pathname.charAt(0) === '/';
|
||||
}
|
||||
|
||||
// About 1.5x faster than the two-arg version of Array#splice()
|
||||
function spliceOne(list, index) {
|
||||
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {
|
||||
list[i] = list[k];
|
||||
}
|
||||
|
||||
list.pop();
|
||||
}
|
||||
|
||||
// This implementation is based heavily on node's url.parse
|
||||
function resolvePathname(to, from) {
|
||||
if (from === undefined) from = '';
|
||||
|
||||
var toParts = (to && to.split('/')) || [];
|
||||
var fromParts = (from && from.split('/')) || [];
|
||||
|
||||
var isToAbs = to && isAbsolute(to);
|
||||
var isFromAbs = from && isAbsolute(from);
|
||||
var mustEndAbs = isToAbs || isFromAbs;
|
||||
|
||||
if (to && isAbsolute(to)) {
|
||||
// to is absolute
|
||||
fromParts = toParts;
|
||||
} else if (toParts.length) {
|
||||
// to is relative, drop the filename
|
||||
fromParts.pop();
|
||||
fromParts = fromParts.concat(toParts);
|
||||
}
|
||||
|
||||
if (!fromParts.length) return '/';
|
||||
|
||||
var hasTrailingSlash;
|
||||
if (fromParts.length) {
|
||||
var last = fromParts[fromParts.length - 1];
|
||||
hasTrailingSlash = last === '.' || last === '..' || last === '';
|
||||
} else {
|
||||
hasTrailingSlash = false;
|
||||
}
|
||||
|
||||
var up = 0;
|
||||
for (var i = fromParts.length; i >= 0; i--) {
|
||||
var part = fromParts[i];
|
||||
|
||||
if (part === '.') {
|
||||
spliceOne(fromParts, i);
|
||||
} else if (part === '..') {
|
||||
spliceOne(fromParts, i);
|
||||
up++;
|
||||
} else if (up) {
|
||||
spliceOne(fromParts, i);
|
||||
up--;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');
|
||||
|
||||
if (
|
||||
mustEndAbs &&
|
||||
fromParts[0] !== '' &&
|
||||
(!fromParts[0] || !isAbsolute(fromParts[0]))
|
||||
)
|
||||
fromParts.unshift('');
|
||||
|
||||
var result = fromParts.join('/');
|
||||
|
||||
if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
return resolvePathname;
|
||||
|
||||
})));
|
||||
1
node_modules/resolve-pathname/umd/resolve-pathname.min.js
generated
vendored
Normal file
1
node_modules/resolve-pathname/umd/resolve-pathname.min.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.resolvePathname=e()}(this,function(){"use strict";function p(t){return"/"===t.charAt(0)}function d(t,e){for(var n=e,o=n+1,r=t.length;o<r;n+=1,o+=1)t[n]=t[o];t.pop()}return function(t,e){void 0===e&&(e="");var n,o=t&&t.split("/")||[],r=e&&e.split("/")||[],f=t&&p(t),i=e&&p(e),u=f||i;if(t&&p(t)?r=o:o.length&&(r.pop(),r=r.concat(o)),!r.length)return"/";if(r.length){var s=r[r.length-1];n="."===s||".."===s||""===s}else n=!1;for(var l=0,a=r.length;0<=a;a--){var c=r[a];"."===c?d(r,a):".."===c?(d(r,a),l++):l&&(d(r,a),l--)}if(!u)for(;l--;l)r.unshift("..");!u||""===r[0]||r[0]&&p(r[0])||r.unshift("");var h=r.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h}});
|
||||
Reference in New Issue
Block a user