path-parser
Advanced tools
Comparing version 2.0.2 to 2.1.0
@@ -0,1 +1,12 @@ | ||
<a name="2.1.0"></a> | ||
# [2.1.0](https://github.com/troch/path-parser/compare/v2.0.2...v2.1.0) (2017-11-08) | ||
### Features | ||
* improve other error messages ([bf5bea5](https://github.com/troch/path-parser/commit/bf5bea5)) | ||
* provide more details in "Missing parameters" error [router5/router5[#208](https://github.com/troch/path-parser/issues/208)] ([b562e5c](https://github.com/troch/path-parser/commit/b562e5c)) | ||
<a name="2.0.2"></a> | ||
@@ -2,0 +13,0 @@ ## [2.0.2](https://github.com/troch/path-parser/compare/v2.0.1...v2.0.2) (2016-11-01) |
@@ -1,120 +0,3 @@ | ||
define('Path', ['search-params'], function (searchParams) { 'use strict'; | ||
define(['search-params'], function (searchParams) { 'use strict'; | ||
var asyncGenerator = function () { | ||
function AwaitValue(value) { | ||
this.value = value; | ||
} | ||
function AsyncGenerator(gen) { | ||
var front, back; | ||
function send(key, arg) { | ||
return new Promise(function (resolve, reject) { | ||
var request = { | ||
key: key, | ||
arg: arg, | ||
resolve: resolve, | ||
reject: reject, | ||
next: null | ||
}; | ||
if (back) { | ||
back = back.next = request; | ||
} else { | ||
front = back = request; | ||
resume(key, arg); | ||
} | ||
}); | ||
} | ||
function resume(key, arg) { | ||
try { | ||
var result = gen[key](arg); | ||
var value = result.value; | ||
if (value instanceof AwaitValue) { | ||
Promise.resolve(value.value).then(function (arg) { | ||
resume("next", arg); | ||
}, function (arg) { | ||
resume("throw", arg); | ||
}); | ||
} else { | ||
settle(result.done ? "return" : "normal", result.value); | ||
} | ||
} catch (err) { | ||
settle("throw", err); | ||
} | ||
} | ||
function settle(type, value) { | ||
switch (type) { | ||
case "return": | ||
front.resolve({ | ||
value: value, | ||
done: true | ||
}); | ||
break; | ||
case "throw": | ||
front.reject(value); | ||
break; | ||
default: | ||
front.resolve({ | ||
value: value, | ||
done: false | ||
}); | ||
break; | ||
} | ||
front = front.next; | ||
if (front) { | ||
resume(front.key, front.arg); | ||
} else { | ||
back = null; | ||
} | ||
} | ||
this._invoke = send; | ||
if (typeof gen.return !== "function") { | ||
this.return = undefined; | ||
} | ||
} | ||
if (typeof Symbol === "function" && Symbol.asyncIterator) { | ||
AsyncGenerator.prototype[Symbol.asyncIterator] = function () { | ||
return this; | ||
}; | ||
} | ||
AsyncGenerator.prototype.next = function (arg) { | ||
return this._invoke("next", arg); | ||
}; | ||
AsyncGenerator.prototype.throw = function (arg) { | ||
return this._invoke("throw", arg); | ||
}; | ||
AsyncGenerator.prototype.return = function (arg) { | ||
return this._invoke("return", arg); | ||
}; | ||
return { | ||
wrap: function (fn) { | ||
return function () { | ||
return new AsyncGenerator(fn.apply(this, arguments)); | ||
}; | ||
}, | ||
await: function (value) { | ||
return new AwaitValue(value); | ||
} | ||
}; | ||
}(); | ||
var classCallCheck = function (instance, Constructor) { | ||
@@ -164,65 +47,2 @@ if (!(instance instanceof Constructor)) { | ||
var get = function get(object, property, receiver) { | ||
if (object === null) object = Function.prototype; | ||
var desc = Object.getOwnPropertyDescriptor(object, property); | ||
if (desc === undefined) { | ||
var parent = Object.getPrototypeOf(object); | ||
if (parent === null) { | ||
return undefined; | ||
} else { | ||
return get(parent, property, receiver); | ||
} | ||
} else if ("value" in desc) { | ||
return desc.value; | ||
} else { | ||
var getter = desc.get; | ||
if (getter === undefined) { | ||
return undefined; | ||
} | ||
return getter.call(receiver); | ||
} | ||
}; | ||
var set = function set(object, property, value, receiver) { | ||
var desc = Object.getOwnPropertyDescriptor(object, property); | ||
if (desc === undefined) { | ||
var parent = Object.getPrototypeOf(object); | ||
if (parent !== null) { | ||
set(parent, property, value, receiver); | ||
} | ||
} else if ("value" in desc && desc.writable) { | ||
desc.value = value; | ||
} else { | ||
var setter = desc.set; | ||
if (setter !== undefined) { | ||
setter.call(receiver, value); | ||
} | ||
} | ||
return value; | ||
}; | ||
var defaultOrConstrained = function defaultOrConstrained(match) { | ||
@@ -256,2 +76,3 @@ return '(' + (match ? match.replace(/(^<|>$)/g, '') : '[a-zA-Z0-9-_.~%\':]+') + ')'; | ||
pattern: /^(?:\?|&)(?:\:)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})(?:\[\])/ | ||
// regex: match => new RegExp('(?=(\?|.*&)' + match[0] + '(?=(\=|&|$)))') | ||
}, { | ||
@@ -262,2 +83,3 @@ // Query parameter: ?param1¶m2 | ||
pattern: /^(?:\?|&)(?:\:)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})/ | ||
// regex: match => new RegExp('(?=(\?|.*&)' + match[0] + '(?=(\=|&|$)))') | ||
}, { | ||
@@ -312,3 +134,3 @@ // Delimiter / | ||
if (!matched) { | ||
throw new Error('Could not parse path.'); | ||
throw new Error('Could not parse path \'' + str + '\''); | ||
} | ||
@@ -382,3 +204,3 @@ // Return tokens | ||
if (!path) throw new Error('Please supply a path'); | ||
if (!path) throw new Error('Missing path in Path constructor'); | ||
this.path = path; | ||
@@ -536,3 +358,8 @@ this.tokens = tokenise(path); | ||
return !exists(encodedParams[p]); | ||
})) throw new Error('Missing parameters'); | ||
})) { | ||
var missingParameters = this.urlParams.filter(function (p) { | ||
return !exists(encodedParams[p]); | ||
}); | ||
throw new Error('Cannot build path: \'' + this.path + '\' requires missing parameters { ' + missingParameters.join(', ') + ' }'); | ||
} | ||
@@ -548,3 +375,3 @@ // Check constraints | ||
if (!constraintsPassed) throw new Error('Some parameters are of invalid format'); | ||
if (!constraintsPassed) throw new Error('Some parameters of \'' + this.path + '\' are of invalid format'); | ||
} | ||
@@ -551,0 +378,0 @@ |
@@ -43,2 +43,3 @@ 'use strict'; | ||
pattern: /^(?:\?|&)(?:\:)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})(?:\[\])/ | ||
// regex: match => new RegExp('(?=(\?|.*&)' + match[0] + '(?=(\=|&|$)))') | ||
}, { | ||
@@ -49,2 +50,3 @@ // Query parameter: ?param1¶m2 | ||
pattern: /^(?:\?|&)(?:\:)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})/ | ||
// regex: match => new RegExp('(?=(\?|.*&)' + match[0] + '(?=(\=|&|$)))') | ||
}, { | ||
@@ -99,3 +101,3 @@ // Delimiter / | ||
if (!matched) { | ||
throw new Error('Could not parse path.'); | ||
throw new Error('Could not parse path \'' + str + '\''); | ||
} | ||
@@ -169,3 +171,3 @@ // Return tokens | ||
if (!path) throw new Error('Please supply a path'); | ||
if (!path) throw new Error('Missing path in Path constructor'); | ||
this.path = path; | ||
@@ -323,3 +325,8 @@ this.tokens = tokenise(path); | ||
return !exists(encodedParams[p]); | ||
})) throw new Error('Missing parameters'); | ||
})) { | ||
var missingParameters = this.urlParams.filter(function (p) { | ||
return !exists(encodedParams[p]); | ||
}); | ||
throw new Error('Cannot build path: \'' + this.path + '\' requires missing parameters { ' + missingParameters.join(', ') + ' }'); | ||
} | ||
@@ -335,3 +342,3 @@ // Check constraints | ||
if (!constraintsPassed) throw new Error('Some parameters are of invalid format'); | ||
if (!constraintsPassed) throw new Error('Some parameters of \'' + this.path + '\' are of invalid format'); | ||
} | ||
@@ -338,0 +345,0 @@ |
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('search-params')) : | ||
typeof define === 'function' && define.amd ? define('Path', ['search-params'], factory) : | ||
(global.Path = factory(global.searchParams)); | ||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('search-params')) : | ||
typeof define === 'function' && define.amd ? define(['search-params'], factory) : | ||
(global.Path = factory(global.searchParams)); | ||
}(this, (function (searchParams) { 'use strict'; | ||
var asyncGenerator = function () { | ||
function AwaitValue(value) { | ||
this.value = value; | ||
} | ||
function AsyncGenerator(gen) { | ||
var front, back; | ||
function send(key, arg) { | ||
return new Promise(function (resolve, reject) { | ||
var request = { | ||
key: key, | ||
arg: arg, | ||
resolve: resolve, | ||
reject: reject, | ||
next: null | ||
}; | ||
if (back) { | ||
back = back.next = request; | ||
} else { | ||
front = back = request; | ||
resume(key, arg); | ||
} | ||
}); | ||
} | ||
function resume(key, arg) { | ||
try { | ||
var result = gen[key](arg); | ||
var value = result.value; | ||
if (value instanceof AwaitValue) { | ||
Promise.resolve(value.value).then(function (arg) { | ||
resume("next", arg); | ||
}, function (arg) { | ||
resume("throw", arg); | ||
}); | ||
} else { | ||
settle(result.done ? "return" : "normal", result.value); | ||
} | ||
} catch (err) { | ||
settle("throw", err); | ||
} | ||
} | ||
function settle(type, value) { | ||
switch (type) { | ||
case "return": | ||
front.resolve({ | ||
value: value, | ||
done: true | ||
}); | ||
break; | ||
case "throw": | ||
front.reject(value); | ||
break; | ||
default: | ||
front.resolve({ | ||
value: value, | ||
done: false | ||
}); | ||
break; | ||
} | ||
front = front.next; | ||
if (front) { | ||
resume(front.key, front.arg); | ||
} else { | ||
back = null; | ||
} | ||
} | ||
this._invoke = send; | ||
if (typeof gen.return !== "function") { | ||
this.return = undefined; | ||
} | ||
} | ||
if (typeof Symbol === "function" && Symbol.asyncIterator) { | ||
AsyncGenerator.prototype[Symbol.asyncIterator] = function () { | ||
return this; | ||
}; | ||
} | ||
AsyncGenerator.prototype.next = function (arg) { | ||
return this._invoke("next", arg); | ||
}; | ||
AsyncGenerator.prototype.throw = function (arg) { | ||
return this._invoke("throw", arg); | ||
}; | ||
AsyncGenerator.prototype.return = function (arg) { | ||
return this._invoke("return", arg); | ||
}; | ||
return { | ||
wrap: function (fn) { | ||
return function () { | ||
return new AsyncGenerator(fn.apply(this, arguments)); | ||
}; | ||
}, | ||
await: function (value) { | ||
return new AwaitValue(value); | ||
} | ||
}; | ||
}(); | ||
var classCallCheck = function (instance, Constructor) { | ||
@@ -168,65 +51,2 @@ if (!(instance instanceof Constructor)) { | ||
var get = function get(object, property, receiver) { | ||
if (object === null) object = Function.prototype; | ||
var desc = Object.getOwnPropertyDescriptor(object, property); | ||
if (desc === undefined) { | ||
var parent = Object.getPrototypeOf(object); | ||
if (parent === null) { | ||
return undefined; | ||
} else { | ||
return get(parent, property, receiver); | ||
} | ||
} else if ("value" in desc) { | ||
return desc.value; | ||
} else { | ||
var getter = desc.get; | ||
if (getter === undefined) { | ||
return undefined; | ||
} | ||
return getter.call(receiver); | ||
} | ||
}; | ||
var set = function set(object, property, value, receiver) { | ||
var desc = Object.getOwnPropertyDescriptor(object, property); | ||
if (desc === undefined) { | ||
var parent = Object.getPrototypeOf(object); | ||
if (parent !== null) { | ||
set(parent, property, value, receiver); | ||
} | ||
} else if ("value" in desc && desc.writable) { | ||
desc.value = value; | ||
} else { | ||
var setter = desc.set; | ||
if (setter !== undefined) { | ||
setter.call(receiver, value); | ||
} | ||
} | ||
return value; | ||
}; | ||
var defaultOrConstrained = function defaultOrConstrained(match) { | ||
@@ -260,2 +80,3 @@ return '(' + (match ? match.replace(/(^<|>$)/g, '') : '[a-zA-Z0-9-_.~%\':]+') + ')'; | ||
pattern: /^(?:\?|&)(?:\:)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})(?:\[\])/ | ||
// regex: match => new RegExp('(?=(\?|.*&)' + match[0] + '(?=(\=|&|$)))') | ||
}, { | ||
@@ -266,2 +87,3 @@ // Query parameter: ?param1¶m2 | ||
pattern: /^(?:\?|&)(?:\:)?([a-zA-Z0-9-_]*[a-zA-Z0-9]{1})/ | ||
// regex: match => new RegExp('(?=(\?|.*&)' + match[0] + '(?=(\=|&|$)))') | ||
}, { | ||
@@ -316,3 +138,3 @@ // Delimiter / | ||
if (!matched) { | ||
throw new Error('Could not parse path.'); | ||
throw new Error('Could not parse path \'' + str + '\''); | ||
} | ||
@@ -386,3 +208,3 @@ // Return tokens | ||
if (!path) throw new Error('Please supply a path'); | ||
if (!path) throw new Error('Missing path in Path constructor'); | ||
this.path = path; | ||
@@ -540,3 +362,8 @@ this.tokens = tokenise(path); | ||
return !exists(encodedParams[p]); | ||
})) throw new Error('Missing parameters'); | ||
})) { | ||
var missingParameters = this.urlParams.filter(function (p) { | ||
return !exists(encodedParams[p]); | ||
}); | ||
throw new Error('Cannot build path: \'' + this.path + '\' requires missing parameters { ' + missingParameters.join(', ') + ' }'); | ||
} | ||
@@ -552,3 +379,3 @@ // Check constraints | ||
if (!constraintsPassed) throw new Error('Some parameters are of invalid format'); | ||
if (!constraintsPassed) throw new Error('Some parameters of \'' + this.path + '\' are of invalid format'); | ||
} | ||
@@ -555,0 +382,0 @@ |
@@ -82,3 +82,3 @@ import { getSearch, withoutBrackets, parse, toObject } from 'search-params'; | ||
if (!matched) { | ||
throw new Error('Could not parse path.'); | ||
throw new Error(`Could not parse path '${str}'`); | ||
} | ||
@@ -144,3 +144,3 @@ // Return tokens | ||
constructor(path) { | ||
if (!path) throw new Error('Please supply a path'); | ||
if (!path) throw new Error('Missing path in Path constructor'); | ||
this.path = path; | ||
@@ -265,3 +265,6 @@ this.tokens = tokenise(path); | ||
// Check all params are provided (not search parameters which are optional) | ||
if (this.urlParams.some(p => !exists(encodedParams[p]))) throw new Error('Missing parameters'); | ||
if (this.urlParams.some(p => !exists(encodedParams[p]))) { | ||
const missingParameters = this.urlParams.filter(p => !exists(encodedParams[p])); | ||
throw new Error('Cannot build path: \'' + this.path + '\' requires missing parameters { ' + missingParameters.join(', ') + ' }'); | ||
} | ||
@@ -274,3 +277,3 @@ // Check constraints | ||
if (!constraintsPassed) throw new Error('Some parameters are of invalid format'); | ||
if (!constraintsPassed) throw new Error(`Some parameters of '${this.path}' are of invalid format`); | ||
} | ||
@@ -277,0 +280,0 @@ |
{ | ||
"name": "path-parser", | ||
"version": "2.0.2", | ||
"version": "2.1.0", | ||
"description": "A small utility to parse, match and generate paths", | ||
@@ -16,3 +16,3 @@ "main": "dist/commonjs/path-parser.js", | ||
"build": "npm run clean && npm run build:amd && npm run build:umd && npm run build:cjs", | ||
"clog": "conventional-changelog -p angular -i CHANGELOG.md -w" | ||
"clog": "conventional-changelog -p angular -i CHANGELOG.md -s" | ||
}, | ||
@@ -39,21 +39,21 @@ "repository": { | ||
"devDependencies": { | ||
"babel-core": "~6.9.0", | ||
"babel-eslint": "~7.0.0", | ||
"babel-core": "~6.26.0", | ||
"babel-eslint": "~8.0.2", | ||
"babel-plugin-add-module-exports": "~0.2.1", | ||
"babel-plugin-transform-class-properties": "~6.9.1", | ||
"babel-plugin-transform-export-extensions": "~6.8.0", | ||
"babel-plugin-transform-object-rest-spread": "~6.8.0", | ||
"babel-preset-es2015": "~6.9.0", | ||
"babel-preset-es2015-rollup": "~1.2.0", | ||
"conventional-changelog": "~1.1.0", | ||
"coveralls": "~2.11.14", | ||
"eslint": "~3.7.1", | ||
"babel-plugin-transform-class-properties": "~6.24.1", | ||
"babel-plugin-transform-export-extensions": "~6.22.0", | ||
"babel-plugin-transform-object-rest-spread": "~6.26.0", | ||
"babel-preset-env": "~1.6.1", | ||
"babel-preset-es2015-rollup": "~3.0.0", | ||
"conventional-changelog": "~1.1.6", | ||
"coveralls": "~3.0.0", | ||
"eslint": "~4.10.0", | ||
"isparta": "~4.0.0", | ||
"mkdirp": "~0.5.1", | ||
"mocha": "~3.1.2", | ||
"rimraf": "~2.5.4", | ||
"rollup": "~0.36.3", | ||
"rollup-plugin-babel": "~2.6.1", | ||
"should": "~11.1.1", | ||
"yargs": "~6.0.0" | ||
"mocha": "~4.0.1", | ||
"rimraf": "~2.6.2", | ||
"rollup": "~0.51.0", | ||
"rollup-plugin-babel": "~3.0.2", | ||
"should": "~13.1.3", | ||
"yargs": "~10.0.3" | ||
}, | ||
@@ -60,0 +60,0 @@ "dependencies": { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
170927
9
1239