@dashkite/url-router 0.3.0 → 0.5.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/browser/src/index.js +68 -0
- package/package.json +4 -3
@@ -0,0 +1,68 @@
|
|
1
|
+
var Assert, Route, Router;
|
2
|
+
import { match } from "@dashkite/url-codex";
|
3
|
+
Assert = {
|
4
|
+
available: function(router, route) {
|
5
|
+
if (router.exists(route)) {
|
6
|
+
throw new Error(`url-router: route with template [ ${route.template} ] already exists`);
|
7
|
+
}
|
8
|
+
}
|
9
|
+
};
|
10
|
+
Route = class Route {
|
11
|
+
static make(description) {
|
12
|
+
return new Route(description);
|
13
|
+
}
|
14
|
+
constructor({ template: template1, data: data1 }){
|
15
|
+
this.template = template1;
|
16
|
+
this.data = data1;
|
17
|
+
}
|
18
|
+
};
|
19
|
+
Router = class Router {
|
20
|
+
static create() {
|
21
|
+
return new Router();
|
22
|
+
}
|
23
|
+
static make() {
|
24
|
+
return new Router();
|
25
|
+
}
|
26
|
+
constructor(){
|
27
|
+
this.routes = [];
|
28
|
+
}
|
29
|
+
find(route) {
|
30
|
+
return this.routes.find(function({ template }) {
|
31
|
+
return template === route.template;
|
32
|
+
});
|
33
|
+
}
|
34
|
+
exists(route) {
|
35
|
+
return this.find(route) != null;
|
36
|
+
}
|
37
|
+
append(route) {
|
38
|
+
Assert.available(this, route);
|
39
|
+
return this.routes.push(Route.make(route));
|
40
|
+
}
|
41
|
+
prepend(route) {
|
42
|
+
Assert.available(this, route);
|
43
|
+
return this.routes.unshift(Route.make(route));
|
44
|
+
}
|
45
|
+
// convenience / backward compatibility
|
46
|
+
add(route) {
|
47
|
+
return this.append(route);
|
48
|
+
}
|
49
|
+
match(url) {
|
50
|
+
var bindings, data, i, len, ref, template;
|
51
|
+
ref = this.routes;
|
52
|
+
for(i = 0, len = ref.length; i < len; i++){
|
53
|
+
({ template, data } = ref[i]);
|
54
|
+
if ((bindings = match(template, url)) != null) {
|
55
|
+
return {
|
56
|
+
template,
|
57
|
+
data,
|
58
|
+
bindings
|
59
|
+
};
|
60
|
+
}
|
61
|
+
}
|
62
|
+
return void 0;
|
63
|
+
}
|
64
|
+
};
|
65
|
+
export { Router }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS91cmwtcm91dGVyL3NyYy9pbmRleC5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBOztBQUFBLE9BQUE7RUFBUyxLQUFUO0NBQUEsTUFBQTs7QUFFQSxNQUFBLEdBRUU7RUFBQSxTQUFBLEVBQVcsUUFBQSxDQUFFLE1BQUYsRUFBVSxLQUFWLENBQUE7SUFDVCxJQUFHLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxDQUFIO01BQ0UsTUFBTSxJQUFJLEtBQUosQ0FBVSxDQUFBLGtDQUFBLENBQUEsQ0FFVCxLQUFLLENBQUMsUUFGRyxDQUFBLGlCQUFBLENBQVYsRUFEUjs7RUFEUztBQUFYOztBQU9JLFFBQU4sTUFBQSxNQUFBO0VBRVMsT0FBTixJQUFNLENBQUUsV0FBRixDQUFBO1dBQW1CLElBQUksS0FBSixDQUFVLFdBQVY7RUFBbkI7O0VBRVAsV0FBYSxDQUFDO01BQUcsbUJBQUg7TUFBYztJQUFkLENBQUQsQ0FBQTtJQUFHLElBQUMsQ0FBQTtJQUFVLElBQUMsQ0FBQTtFQUFmOztBQUpmOztBQU1NLFNBQU4sTUFBQSxPQUFBO0VBRVcsT0FBUixNQUFRLENBQUEsQ0FBQTtXQUFHLElBQUksTUFBSixDQUFBO0VBQUg7O0VBQ0YsT0FBTixJQUFNLENBQUEsQ0FBQTtXQUFHLElBQUksTUFBSixDQUFBO0VBQUg7O0VBRVAsV0FBYSxDQUFBLENBQUE7SUFBRyxJQUFDLENBQUEsTUFBRCxHQUFVO0VBQWI7O0VBRWIsSUFBTSxDQUFFLEtBQUYsQ0FBQTtXQUNKLElBQUMsQ0FBQSxNQUFNLENBQUMsSUFBUixDQUFhLFFBQUEsQ0FBQyxDQUFFLFFBQUYsQ0FBRCxDQUFBO2FBQ1gsUUFBQSxLQUFZLEtBQUssQ0FBQztJQURQLENBQWI7RUFESTs7RUFJTixNQUFRLENBQUUsS0FBRixDQUFBO1dBQWE7RUFBYjs7RUFFUixNQUFRLENBQUUsS0FBRixDQUFBO0lBQ04sTUFBTSxDQUFDLFNBQVAsQ0FBaUIsSUFBakIsRUFBb0IsS0FBcEI7V0FDQSxJQUFDLENBQUEsTUFBTSxDQUFDLElBQVIsQ0FBYSxLQUFLLENBQUMsSUFBTixDQUFXLEtBQVgsQ0FBYjtFQUZNOztFQUlSLE9BQVMsQ0FBRSxLQUFGLENBQUE7SUFDUCxNQUFNLENBQUMsU0FBUCxDQUFpQixJQUFqQixFQUFvQixLQUFwQjtXQUNBLElBQUMsQ0FBQSxNQUFNLENBQUMsT0FBUixDQUFnQixLQUFLLENBQUMsSUFBTixDQUFXLEtBQVgsQ0FBaEI7RUFGTyxDQWZYOzs7O0VBb0JFLEdBQUssQ0FBRSxLQUFGLENBQUE7V0FBYSxJQUFDLENBQUEsTUFBRCxDQUFRLEtBQVI7RUFBYjs7RUFFTCxLQUFPLENBQUUsR0FBRixDQUFBO0FBQ1QsUUFBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBO0FBQUk7SUFBQSxLQUFBLHFDQUFBO09BQUksQ0FBRSxRQUFGLEVBQVksSUFBWjtNQUNGLElBQUcseUNBQUg7QUFDRSxlQUFPLENBQUUsUUFBRixFQUFZLElBQVosRUFBa0IsUUFBbEIsRUFEVDs7SUFERjtBQUdBLFdBQU87RUFKRjs7QUF4QlQ7O0FBOEJBLE9BQUE7RUFBUyxNQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0Y2ggfSBmcm9tIFwiQGRhc2hraXRlL3VybC1jb2RleFwiXG5cbkFzc2VydCA9XG5cbiAgYXZhaWxhYmxlOiAoIHJvdXRlciwgcm91dGUgKSAtPlxuICAgIGlmIHJvdXRlci5leGlzdHMgcm91dGVcbiAgICAgIHRocm93IG5ldyBFcnJvciBcInVybC1yb3V0ZXI6XG4gICAgICAgIHJvdXRlIHdpdGggdGVtcGxhdGVcbiAgICAgICAgWyAjeyByb3V0ZS50ZW1wbGF0ZSB9IF1cbiAgICAgICAgYWxyZWFkeSBleGlzdHNcIlxuXG5jbGFzcyBSb3V0ZVxuXG4gIEBtYWtlOiAoIGRlc2NyaXB0aW9uICkgLT4gbmV3IFJvdXRlIGRlc2NyaXB0aW9uXG5cbiAgY29uc3RydWN0b3I6ICh7IEB0ZW1wbGF0ZSwgQGRhdGEgfSkgLT5cblxuY2xhc3MgUm91dGVyXG5cbiAgQGNyZWF0ZTogLT4gbmV3IFJvdXRlclxuICBAbWFrZTogLT4gbmV3IFJvdXRlclxuXG4gIGNvbnN0cnVjdG9yOiAtPiBAcm91dGVzID0gW11cblxuICBmaW5kOiAoIHJvdXRlICkgLT5cbiAgICBAcm91dGVzLmZpbmQgKHsgdGVtcGxhdGUgfSkgLT4gXG4gICAgICB0ZW1wbGF0ZSA9PSByb3V0ZS50ZW1wbGF0ZVxuXG4gIGV4aXN0czogKCByb3V0ZSApIC0+ICggQGZpbmQgcm91dGUgKT9cblxuICBhcHBlbmQ6ICggcm91dGUgKSAtPiBcbiAgICBBc3NlcnQuYXZhaWxhYmxlIEAsIHJvdXRlXG4gICAgQHJvdXRlcy5wdXNoIFJvdXRlLm1ha2Ugcm91dGVcblxuICBwcmVwZW5kOiAoIHJvdXRlICkgLT4gXG4gICAgQXNzZXJ0LmF2YWlsYWJsZSBALCByb3V0ZVxuICAgIEByb3V0ZXMudW5zaGlmdCBSb3V0ZS5tYWtlIHJvdXRlXG4gIFxuICAjIGNvbnZlbmllbmNlIC8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICBhZGQ6ICggcm91dGUgKSAtPiBAYXBwZW5kIHJvdXRlXG5cbiAgbWF0Y2g6ICggdXJsICkgLT5cbiAgICBmb3IgeyB0ZW1wbGF0ZSwgZGF0YSB9IGluIEByb3V0ZXNcbiAgICAgIGlmICggYmluZGluZ3MgPSBtYXRjaCB0ZW1wbGF0ZSwgdXJsICk/XG4gICAgICAgIHJldHVybiB7IHRlbXBsYXRlLCBkYXRhLCBiaW5kaW5ncyB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuXG5leHBvcnQgeyBSb3V0ZXIgfVxuIl19
|
66
|
+
//# sourceURL=/@dashkite/url-router/src/index.coffee
|
67
|
+
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL3VybC1yb3V0ZXIvc3JjL2luZGV4LmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0Y2ggfSBmcm9tIFwiQGRhc2hraXRlL3VybC1jb2RleFwiXG5cbkFzc2VydCA9XG5cbiAgYXZhaWxhYmxlOiAoIHJvdXRlciwgcm91dGUgKSAtPlxuICAgIGlmIHJvdXRlci5leGlzdHMgcm91dGVcbiAgICAgIHRocm93IG5ldyBFcnJvciBcInVybC1yb3V0ZXI6XG4gICAgICAgIHJvdXRlIHdpdGggdGVtcGxhdGVcbiAgICAgICAgWyAjeyByb3V0ZS50ZW1wbGF0ZSB9IF1cbiAgICAgICAgYWxyZWFkeSBleGlzdHNcIlxuXG5jbGFzcyBSb3V0ZVxuXG4gIEBtYWtlOiAoIGRlc2NyaXB0aW9uICkgLT4gbmV3IFJvdXRlIGRlc2NyaXB0aW9uXG5cbiAgY29uc3RydWN0b3I6ICh7IEB0ZW1wbGF0ZSwgQGRhdGEgfSkgLT5cblxuY2xhc3MgUm91dGVyXG5cbiAgQGNyZWF0ZTogLT4gbmV3IFJvdXRlclxuICBAbWFrZTogLT4gbmV3IFJvdXRlclxuXG4gIGNvbnN0cnVjdG9yOiAtPiBAcm91dGVzID0gW11cblxuICBmaW5kOiAoIHJvdXRlICkgLT5cbiAgICBAcm91dGVzLmZpbmQgKHsgdGVtcGxhdGUgfSkgLT4gXG4gICAgICB0ZW1wbGF0ZSA9PSByb3V0ZS50ZW1wbGF0ZVxuXG4gIGV4aXN0czogKCByb3V0ZSApIC0+ICggQGZpbmQgcm91dGUgKT9cblxuICBhcHBlbmQ6ICggcm91dGUgKSAtPiBcbiAgICBBc3NlcnQuYXZhaWxhYmxlIEAsIHJvdXRlXG4gICAgQHJvdXRlcy5wdXNoIFJvdXRlLm1ha2Ugcm91dGVcblxuICBwcmVwZW5kOiAoIHJvdXRlICkgLT4gXG4gICAgQXNzZXJ0LmF2YWlsYWJsZSBALCByb3V0ZVxuICAgIEByb3V0ZXMudW5zaGlmdCBSb3V0ZS5tYWtlIHJvdXRlXG4gIFxuICAjIGNvbnZlbmllbmNlIC8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICBhZGQ6ICggcm91dGUgKSAtPiBAYXBwZW5kIHJvdXRlXG5cbiAgbWF0Y2g6ICggdXJsICkgLT5cbiAgICBmb3IgeyB0ZW1wbGF0ZSwgZGF0YSB9IGluIEByb3V0ZXNcbiAgICAgIGlmICggYmluZGluZ3MgPSBtYXRjaCB0ZW1wbGF0ZSwgdXJsICk/XG4gICAgICAgIHJldHVybiB7IHRlbXBsYXRlLCBkYXRhLCBiaW5kaW5ncyB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuXG5leHBvcnQgeyBSb3V0ZXIgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQTtBQUFBLE9BQUEsRUFBUyxLQUFULFFBQUEsc0JBQUE7QUFFQSxNQUFBLEdBRUU7SUFBQSxTQUFBLEVBQVcsUUFBQSxDQUFFLE1BQUYsRUFBVSxLQUFWLENBQUE7UUFDVCxJQUFHLE1BQU0sQ0FBQyxNQUFQLENBQWMsS0FBZCxDQUFILEVBQUE7WUFDRSxNQUFNLElBQUksS0FBSixDQUFVLENBQUEsa0NBQUEsQ0FBQSxDQUVULEtBQUssQ0FBQyxRQUZHLENBQUEsaUJBQUEsQ0FBVixFQURSOztJQURTO0FBQVg7QUFPSSxRQUFOLE1BQUEsTUFBQTtJQUVTLE9BQU4sSUFBTSxDQUFFLFdBQUYsQ0FBQSxDQUFBO2VBQW1CLElBQUksS0FBSixDQUFVLFdBQVY7SUFBbkI7SUFFUCxXQUFhLENBQUMsRUFBRyxVQUFBLFNBQUgsRUFBYyxNQUFBLEtBQUEsRUFBZixDQUFBO1FBQUcsSUFBQyxDQUFBLFFBQUEsR0FBQTtRQUFVLElBQUMsQ0FBQSxJQUFBLEdBQUE7SUFBZjtBQUpmO0FBTU0sU0FBTixNQUFBLE9BQUE7SUFFVyxPQUFSLE1BQVEsQ0FBQSxDQUFBLENBQUE7ZUFBRyxJQUFJLE1BQUosQ0FBQTtJQUFIO0lBQ0YsT0FBTixJQUFNLENBQUEsQ0FBQSxDQUFBO2VBQUcsSUFBSSxNQUFKLENBQUE7SUFBSDtJQUVQLFdBQWEsQ0FBQSxDQUFBO1FBQUcsSUFBQyxDQUFBLE1BQUQsR0FBVSxFQUFBO0lBQWI7SUFFYixJQUFNLENBQUUsS0FBRixDQUFBLENBQUE7ZUFDSixJQUFDLENBQUEsTUFBTSxDQUFDLElBQVIsQ0FBYSxRQUFBLENBQUMsRUFBRSxRQUFGLEVBQUQsQ0FBQTttQkFDWCxRQUFBLEtBQVksS0FBSyxDQUFDLFFBQUE7UUFEUCxDQUFiO0lBREk7SUFJTixNQUFRLENBQUUsS0FBRixDQUFBLENBQUE7ZUFBYSxJQUFBLENBQUEsSUFBQSxDQUFBLFVBQUE7SUFBYjtJQUVSLE1BQVEsQ0FBRSxLQUFGLENBQUEsQ0FBQTtRQUNOLE1BQU0sQ0FBQyxTQUFQLENBQWlCLElBQWpCLEVBQW9CLEtBQXBCO2VBQ0EsSUFBQyxDQUFBLE1BQU0sQ0FBQyxJQUFSLENBQWEsS0FBSyxDQUFDLElBQU4sQ0FBVyxLQUFYLENBQWI7SUFGTTtJQUlSLE9BQVMsQ0FBRSxLQUFGLENBQUEsQ0FBQTtRQUNQLE1BQU0sQ0FBQyxTQUFQLENBQWlCLElBQWpCLEVBQW9CLEtBQXBCO2VBQ0EsSUFBQyxDQUFBLE1BQU0sQ0FBQyxPQUFSLENBQWdCLEtBQUssQ0FBQyxJQUFOLENBQVcsS0FBWCxDQUFoQjtJQUZPLENBZlg7O0lBb0JFLEdBQUssQ0FBRSxLQUFGLENBQUEsQ0FBQTtlQUFhLElBQUMsQ0FBQSxNQUFELENBQVEsS0FBUjtJQUFiO0lBRUwsS0FBTyxDQUFFLEdBQUYsQ0FBQSxDQUFBO1FBQ1QsSUFBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsRUFBQSxHQUFBLEVBQUEsR0FBQSxFQUFBO1FBQUksTUFBQSxJQUFBLENBQUEsTUFBQTtRQUFBLElBQUEsSUFBQSxHQUFBLE1BQUEsSUFBQSxNQUFBLEVBQUEsSUFBQSxLQUFBLEdBQUEsQ0FBQTthQUFJLEVBQUUsUUFBRixFQUFZLElBQVosRUFBQSxHQUFBLEdBQUEsQ0FBQSxFQUFBO1lBQ0YsSUFBRyxDQUFBLFdBQUEsTUFBQSxVQUFBLElBQUEsS0FBQSxJQUFILEVBQUE7Z0JBQ0UsT0FBTztvQkFBRSxRQUFGO29CQUFZLElBQVo7b0JBQWtCO2dCQUFsQixFQURUOztRQURGO1FBR0EsT0FBTyxLQUFBO0lBSkY7QUF4QlQ7QUE4QkEsT0FBQSxFQUFTLE1BQVQifQ==
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dashkite/url-router",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.5.0",
|
4
4
|
"description": "Match and destructure URLs based on URL templates",
|
5
5
|
"keywords": [
|
6
6
|
"router",
|
@@ -22,7 +22,8 @@
|
|
22
22
|
},
|
23
23
|
"files": [
|
24
24
|
"build/import/src",
|
25
|
-
"build/node/src"
|
25
|
+
"build/node/src",
|
26
|
+
"build/browser/src"
|
26
27
|
],
|
27
28
|
"scripts": {
|
28
29
|
"test": "genie test",
|
@@ -40,7 +41,7 @@
|
|
40
41
|
"@dashkite/genie": "^0.8.4",
|
41
42
|
"@dashkite/genie-clean": "0.2.0",
|
42
43
|
"@dashkite/genie-coffee": "0.2.0",
|
43
|
-
"@dashkite/genie-release": "^0.2.
|
44
|
+
"@dashkite/genie-release": "^0.2.10",
|
44
45
|
"@dashkite/genie-yaml": "0.1.0"
|
45
46
|
}
|
46
47
|
}
|