@dashkite/url-router 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/node/src/index.js +33 -5
- package/package.json +8 -6
package/build/node/src/index.js
CHANGED
@@ -9,9 +9,16 @@ Object.defineProperty(exports, "Router", {
|
|
9
9
|
}
|
10
10
|
});
|
11
11
|
const _urlcodex = require("@dashkite/url-codex");
|
12
|
-
var Route, Router;
|
12
|
+
var Assert, Route, Router;
|
13
|
+
Assert = {
|
14
|
+
available: function(router, route) {
|
15
|
+
if (router.exists(route)) {
|
16
|
+
throw new Error(`url-router: route with template [ ${route.template} ] already exists`);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
};
|
13
20
|
Route = class Route {
|
14
|
-
static
|
21
|
+
static make(description) {
|
15
22
|
return new Route(description);
|
16
23
|
}
|
17
24
|
constructor({ template: template1, data: data1 }){
|
@@ -23,11 +30,31 @@ Router = class Router {
|
|
23
30
|
static create() {
|
24
31
|
return new Router();
|
25
32
|
}
|
33
|
+
static make() {
|
34
|
+
return new Router();
|
35
|
+
}
|
26
36
|
constructor(){
|
27
37
|
this.routes = [];
|
28
38
|
}
|
39
|
+
find(route) {
|
40
|
+
return this.routes.find(function({ template }) {
|
41
|
+
return template === route.template;
|
42
|
+
});
|
43
|
+
}
|
44
|
+
exists(route) {
|
45
|
+
return this.find(route) != null;
|
46
|
+
}
|
47
|
+
append(route) {
|
48
|
+
Assert.available(this, route);
|
49
|
+
return this.routes.push(Route.make(route));
|
50
|
+
}
|
51
|
+
prepend(route) {
|
52
|
+
Assert.available(this, route);
|
53
|
+
return this.routes.unshift(Route.make(route));
|
54
|
+
}
|
55
|
+
// convenience / backward compatibility
|
29
56
|
add(route) {
|
30
|
-
return this.
|
57
|
+
return this.append(route);
|
31
58
|
}
|
32
59
|
match(url) {
|
33
60
|
var bindings, data, i, len, ref, template;
|
@@ -36,6 +63,7 @@ Router = class Router {
|
|
36
63
|
({ template, data } = ref[i]);
|
37
64
|
if ((bindings = (0, _urlcodex.match)(template, url)) != null) {
|
38
65
|
return {
|
66
|
+
template,
|
39
67
|
data,
|
40
68
|
bindings
|
41
69
|
};
|
@@ -44,7 +72,7 @@ Router = class Router {
|
|
44
72
|
return void 0;
|
45
73
|
}
|
46
74
|
};
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS91cmwtcm91dGVyL3NyYy9pbmRleC5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBOztBQUFBLE9BQUE7RUFBUyxLQUFUO0NBQUEsTUFBQTs7QUFFQSxNQUFBLEdBRUU7RUFBQSxTQUFBLEVBQVcsUUFBQSxDQUFFLE1BQUYsRUFBVSxLQUFWLENBQUE7SUFDVCxJQUFHLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxDQUFIO01BQ0UsTUFBTSxJQUFJLEtBQUosQ0FBVSxDQUFBLGtDQUFBLENBQUEsQ0FFVCxLQUFLLENBQUMsUUFGRyxDQUFBLGlCQUFBLENBQVYsRUFEUjs7RUFEUztBQUFYOztBQU9JLFFBQU4sTUFBQSxNQUFBO0VBRVMsT0FBTixJQUFNLENBQUUsV0FBRixDQUFBO1dBQW1CLElBQUksS0FBSixDQUFVLFdBQVY7RUFBbkI7O0VBRVAsV0FBYSxDQUFDO01BQUcsbUJBQUg7TUFBYztJQUFkLENBQUQsQ0FBQTtJQUFHLElBQUMsQ0FBQTtJQUFVLElBQUMsQ0FBQTtFQUFmOztBQUpmOztBQU1NLFNBQU4sTUFBQSxPQUFBO0VBRVcsT0FBUixNQUFRLENBQUEsQ0FBQTtXQUFHLElBQUksTUFBSixDQUFBO0VBQUg7O0VBQ0YsT0FBTixJQUFNLENBQUEsQ0FBQTtXQUFHLElBQUksTUFBSixDQUFBO0VBQUg7O0VBRVAsV0FBYSxDQUFBLENBQUE7SUFBRyxJQUFDLENBQUEsTUFBRCxHQUFVO0VBQWI7O0VBRWIsSUFBTSxDQUFFLEtBQUYsQ0FBQTtXQUNKLElBQUMsQ0FBQSxNQUFNLENBQUMsSUFBUixDQUFhLFFBQUEsQ0FBQyxDQUFFLFFBQUYsQ0FBRCxDQUFBO2FBQ1gsUUFBQSxLQUFZLEtBQUssQ0FBQztJQURQLENBQWI7RUFESTs7RUFJTixNQUFRLENBQUUsS0FBRixDQUFBO1dBQWE7RUFBYjs7RUFFUixNQUFRLENBQUUsS0FBRixDQUFBO0lBQ04sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBakIsRUFBb0IsS0FBcEI7V0FDQSxJQUFDLENBQUEsTUFBTSxDQUFDLElBQVIsQ0FBYSxLQUFLLENBQUMsSUFBTixDQUFXLEtBQVgsQ0FBYjtFQUZNOztFQUlSLE9BQVMsQ0FBRSxLQUFGLENBQUE7SUFDUCxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUFqQixFQUFvQixLQUFwQjtXQUNBLElBQUMsQ0FBQSxNQUFNLENBQUMsT0FBUixDQUFnQixLQUFLLENBQUMsSUFBTixDQUFXLEtBQVgsQ0FBaEI7RUFGTyxDQWZYOzs7O0VBb0JFLEdBQUssQ0FBRSxLQUFGLENBQUE7V0FBYSxJQUFDLENBQUEsTUFBRCxDQUFRLEtBQVI7RUFBYjs7RUFFTCxLQUFPLENBQUUsR0FBRixDQUFBO0FBQ1QsUUFBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBO0FBQUk7SUFBQSxLQUFBLHFDQUFBO09BQUksQ0FBRSxRQUFGLEVBQVksSUFBWjtNQUNGLElBQUcseUNBQUg7QUFDRSxlQUFPLENBQUUsUUFBRixFQUFZLElBQVosRUFBa0IsUUFBbEIsRUFEVDs7SUFERjtBQUdBLFdBQU87RUFKRjs7QUF4QlQ7O0FBOEJBLE9BQUE7RUFBUyxNQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0Y2ggfSBmcm9tIFwiQGRhc2hraXRlL3VybC1jb2RleFwiXG5cbkFzc2VydCA9XG5cbiAgYXZhaWxhYmxlOiAoIHJvdXRlciwgcm91dGUgKSAtPlxuICAgIGlmIHJvdXRlci5leGlzdHMgcm91dGVcbiAgICAgIHRocm93IG5ldyBFcnJvciBcInVybC1yb3V0ZXI6XG4gICAgICAgIHJvdXRlIHdpdGggdGVtcGxhdGVcbiAgICAgICAgWyAjeyByb3V0ZS50ZW1wbGF0ZSB9IF1cbiAgICAgICAgYWxyZWFkeSBleGlzdHNcIlxuXG5jbGFzcyBSb3V0ZVxuXG4gIEBtYWtlOiAoIGRlc2NyaXB0aW9uICkgLT4gbmV3IFJvdXRlIGRlc2NyaXB0aW9uXG5cbiAgY29uc3RydWN0b3I6ICh7IEB0ZW1wbGF0ZSwgQGRhdGEgfSkgLT5cblxuY2xhc3MgUm91dGVyXG5cbiAgQGNyZWF0ZTogLT4gbmV3IFJvdXRlclxuICBAbWFrZTogLT4gbmV3IFJvdXRlclxuXG4gIGNvbnN0cnVjdG9yOiAtPiBAcm91dGVzID0gW11cblxuICBmaW5kOiAoIHJvdXRlICkgLT5cbiAgICBAcm91dGVzLmZpbmQgKHsgdGVtcGxhdGUgfSkgLT4gXG4gICAgICB0ZW1wbGF0ZSA9PSByb3V0ZS50ZW1wbGF0ZVxuXG4gIGV4aXN0czogKCByb3V0ZSApIC0+ICggQGZpbmQgcm91dGUgKT9cblxuICBhcHBlbmQ6ICggcm91dGUgKSAtPiBcbiAgICBBc3NlcnQuYXZhaWxhYmxlIEAsIHJvdXRlXG4gICAgQHJvdXRlcy5wdXNoIFJvdXRlLm1ha2Ugcm91dGVcblxuICBwcmVwZW5kOiAoIHJvdXRlICkgLT4gXG4gICAgQXNzZXJ0LmF2YWlsYWJsZSBALCByb3V0ZVxuICAgIEByb3V0ZXMudW5zaGlmdCBSb3V0ZS5tYWtlIHJvdXRlXG4gIFxuICAjIGNvbnZlbmllbmNlIC8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICBhZGQ6ICggcm91dGUgKSAtPiBAYXBwZW5kIHJvdXRlXG5cbiAgbWF0Y2g6ICggdXJsICkgLT5cbiAgICBmb3IgeyB0ZW1wbGF0ZSwgZGF0YSB9IGluIEByb3V0ZXNcbiAgICAgIGlmICggYmluZGluZ3MgPSBtYXRjaCB0ZW1wbGF0ZSwgdXJsICk/XG4gICAgICAgIHJldHVybiB7IHRlbXBsYXRlLCBkYXRhLCBiaW5kaW5ncyB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuXG5leHBvcnQgeyBSb3V0ZXIgfVxuIl19
|
48
76
|
//# sourceURL=/@dashkite/url-router/src/index.coffee
|
49
77
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL3VybC1yb3V0ZXIvc3JjL2luZGV4LmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0Y2ggfSBmcm9tIFwiQGRhc2hraXRlL3VybC1jb2RleFwiXG5cbkFzc2VydCA9XG5cbiAgYXZhaWxhYmxlOiAoIHJvdXRlciwgcm91dGUgKSAtPlxuICAgIGlmIHJvdXRlci5leGlzdHMgcm91dGVcbiAgICAgIHRocm93IG5ldyBFcnJvciBcInVybC1yb3V0ZXI6XG4gICAgICAgIHJvdXRlIHdpdGggdGVtcGxhdGVcbiAgICAgICAgWyAjeyByb3V0ZS50ZW1wbGF0ZSB9IF1cbiAgICAgICAgYWxyZWFkeSBleGlzdHNcIlxuXG5jbGFzcyBSb3V0ZVxuXG4gIEBtYWtlOiAoIGRlc2NyaXB0aW9uICkgLT4gbmV3IFJvdXRlIGRlc2NyaXB0aW9uXG5cbiAgY29uc3RydWN0b3I6ICh7IEB0ZW1wbGF0ZSwgQGRhdGEgfSkgLT5cblxuY2xhc3MgUm91dGVyXG5cbiAgQGNyZWF0ZTogLT4gbmV3IFJvdXRlclxuICBAbWFrZTogLT4gbmV3IFJvdXRlclxuXG4gIGNvbnN0cnVjdG9yOiAtPiBAcm91dGVzID0gW11cblxuICBmaW5kOiAoIHJvdXRlICkgLT5cbiAgICBAcm91dGVzLmZpbmQgKHsgdGVtcGxhdGUgfSkgLT4gXG4gICAgICB0ZW1wbGF0ZSA9PSByb3V0ZS50ZW1wbGF0ZVxuXG4gIGV4aXN0czogKCByb3V0ZSApIC0+ICggQGZpbmQgcm91dGUgKT9cblxuICBhcHBlbmQ6ICggcm91dGUgKSAtPiBcbiAgICBBc3NlcnQuYXZhaWxhYmxlIEAsIHJvdXRlXG4gICAgQHJvdXRlcy5wdXNoIFJvdXRlLm1ha2Ugcm91dGVcblxuICBwcmVwZW5kOiAoIHJvdXRlICkgLT4gXG4gICAgQXNzZXJ0LmF2YWlsYWJsZSBALCByb3V0ZVxuICAgIEByb3V0ZXMudW5zaGlmdCBSb3V0ZS5tYWtlIHJvdXRlXG4gIFxuICAjIGNvbnZlbmllbmNlIC8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICBhZGQ6ICggcm91dGUgKSAtPiBAYXBwZW5kIHJvdXRlXG5cbiAgbWF0Y2g6ICggdXJsICkgLT5cbiAgICBmb3IgeyB0ZW1wbGF0ZSwgZGF0YSB9IGluIEByb3V0ZXNcbiAgICAgIGlmICggYmluZGluZ3MgPSBtYXRjaCB0ZW1wbGF0ZSwgdXJsICk/XG4gICAgICAgIHJldHVybiB7IHRlbXBsYXRlLCBkYXRhLCBiaW5kaW5ncyB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuXG5leHBvcnQgeyBSb3V0ZXIgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7K0JBK0NTLE1BQVQ7Ozs7OzswQkEvQ0E7QUFBQSxJQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUE7QUFFQSxNQUFBLEdBRUU7SUFBQSxTQUFBLEVBQVcsUUFBQSxDQUFFLE1BQUYsRUFBVSxLQUFWLENBQUE7UUFDVCxJQUFHLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxDQUFILEVBQUE7WUFDRSxNQUFNLElBQUksS0FBSixDQUFVLENBQUEsa0NBQUEsQ0FBQSxDQUVULEtBQUssQ0FBQyxRQUZHLENBQUEsaUJBQUEsQ0FBVixFQURSOztJQURTO0FBQVg7QUFPSSxRQUFOLE1BQUEsTUFBQTtJQUVTLE9BQU4sSUFBTSxDQUFFLFdBQUYsQ0FBQSxDQUFBO2VBQW1CLElBQUksS0FBSixDQUFVLFdBQVY7SUFBbkI7SUFFUCxXQUFhLENBQUMsRUFBRyxVQUFBLFNBQUgsRUFBYyxNQUFBLEtBQUEsRUFBZixDQUFBO1FBQUcsSUFBQyxDQUFBLFFBQUEsR0FBQTtRQUFVLElBQUMsQ0FBQSxJQUFBLEdBQUE7SUFBZjtBQUpmO0FBTU0sU0FBTixNQUFBLE9BQUE7SUFFVyxPQUFSLE1BQVEsQ0FBQSxDQUFBLENBQUE7ZUFBRyxJQUFJLE1BQUosQ0FBQTtJQUFIO0lBQ0YsT0FBTixJQUFNLENBQUEsQ0FBQSxDQUFBO2VBQUcsSUFBSSxNQUFKLENBQUE7SUFBSDtJQUVQLFdBQWEsQ0FBQSxDQUFBO1FBQUcsSUFBQyxDQUFBLE1BQUQsR0FBVSxFQUFBO0lBQWI7SUFFYixJQUFNLENBQUUsS0FBRixDQUFBLENBQUE7ZUFDSixJQUFDLENBQUEsTUFBTSxDQUFDLElBQVIsQ0FBYSxRQUFBLENBQUMsRUFBRSxRQUFGLEVBQUQsQ0FBQTttQkFDWCxRQUFBLEtBQVksS0FBSyxDQUFDLFFBQUE7UUFEUCxDQUFiO0lBREk7SUFJTixNQUFRLENBQUUsS0FBRixDQUFBLENBQUE7ZUFBYSxJQUFBLENBQUEsSUFBQSxDQUFBLFVBQUE7SUFBYjtJQUVSLE1BQVEsQ0FBRSxLQUFGLENBQUEsQ0FBQTtRQUNOLE1BQU0sQ0FBQyxTQUFQLENBQWlCLElBQWpCLEVBQW9CLEtBQXBCO2VBQ0EsSUFBQyxDQUFBLE1BQU0sQ0FBQyxJQUFSLENBQWEsS0FBSyxDQUFDLElBQU4sQ0FBVyxLQUFYLENBQWI7SUFGTTtJQUlSLE9BQVMsQ0FBRSxLQUFGLENBQUEsQ0FBQTtRQUNQLE1BQU0sQ0FBQyxTQUFQLENBQWlCLElBQWpCLEVBQW9CLEtBQXBCO2VBQ0EsSUFBQyxDQUFBLE1BQU0sQ0FBQyxPQUFSLENBQWdCLEtBQUssQ0FBQyxJQUFOLENBQVcsS0FBWCxDQUFoQjtJQUZPLENBZlg7O0lBb0JFLEdBQUssQ0FBRSxLQUFGLENBQUEsQ0FBQTtlQUFhLElBQUMsQ0FBQSxNQUFELENBQVEsS0FBUjtJQUFiO0lBRUwsS0FBTyxDQUFFLEdBQUYsQ0FBQSxDQUFBO1FBQ1QsSUFBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBO1FBQUksTUFBQSxJQUFBLENBQUEsTUFBQTtRQUFBLElBQUEsSUFBQSxHQUFBLE1BQUEsSUFBQSxNQUFBLEVBQUEsSUFBQSxLQUFBLEdBQUEsQ0FBQTthQUFJLEVBQUUsUUFBRixFQUFZLElBQVosRUFBQSxHQUFBLEdBQUEsQ0FBQSxFQUFBO1lBQ0YsSUFBRyxDQUFBLFdBQUEsSUFBQSxlQUFBLEVBQUEsVUFBQSxJQUFBLEtBQUEsSUFBSCxFQUFBO2dCQUNFLE9BQU87b0JBQUUsUUFBRjtvQkFBWSxJQUFaO29CQUFrQjtnQkFBbEIsRUFEVDs7UUFERjtRQUdBLE9BQU8sS0FBQTtJQUpGO0FBeEJUIn0=
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dashkite/url-router",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.2.0",
|
4
4
|
"description": "Match and destructure URLs based on URL templates",
|
5
5
|
"keywords": [
|
6
6
|
"router",
|
@@ -26,7 +26,8 @@
|
|
26
26
|
],
|
27
27
|
"scripts": {
|
28
28
|
"test": "genie test",
|
29
|
-
"build": "genie build"
|
29
|
+
"build": "genie build",
|
30
|
+
"release": "genie release"
|
30
31
|
},
|
31
32
|
"dependencies": {
|
32
33
|
"@dashkite/joy": "^0.3.16",
|
@@ -36,9 +37,10 @@
|
|
36
37
|
"@dashkite/amen": "^0.2.0",
|
37
38
|
"@dashkite/amen-console": "^0.0.2",
|
38
39
|
"@dashkite/assert": "^0.1.4",
|
39
|
-
"@dashkite/genie": "
|
40
|
-
"@dashkite/genie-
|
41
|
-
"@dashkite/genie-
|
42
|
-
"@dashkite/genie-
|
40
|
+
"@dashkite/genie": "^0.8.4",
|
41
|
+
"@dashkite/genie-clean": "0.2.0",
|
42
|
+
"@dashkite/genie-coffee": "0.2.0",
|
43
|
+
"@dashkite/genie-release": "^0.2.8",
|
44
|
+
"@dashkite/genie-yaml": "0.1.0"
|
43
45
|
}
|
44
46
|
}
|