@dashkite/url-router 0.4.0 → 0.6.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.
@@ -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.4.0",
3
+ "version": "0.6.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",
@@ -30,17 +31,17 @@
30
31
  "release": "genie release"
31
32
  },
32
33
  "dependencies": {
33
- "@dashkite/joy": "^0.3.16",
34
- "@dashkite/url-codex": "^0.1.1"
34
+ "@dashkite/joy": "^0.7.0",
35
+ "@dashkite/url-codex": "^0.5.0"
35
36
  },
36
37
  "devDependencies": {
37
- "@dashkite/amen": "^0.2.0",
38
- "@dashkite/amen-console": "^0.0.2",
39
- "@dashkite/assert": "^0.1.4",
40
- "@dashkite/genie": "^0.8.4",
41
- "@dashkite/genie-clean": "0.2.0",
42
- "@dashkite/genie-coffee": "0.2.0",
38
+ "@dashkite/amen": "^0.5.0",
39
+ "@dashkite/amen-console": "^0.4.0",
40
+ "@dashkite/assert": "^0.3.0",
41
+ "@dashkite/genie": "^0.16.0",
42
+ "@dashkite/genie-clean": "0.9.0",
43
+ "@dashkite/genie-coffee": "0.9.0",
43
44
  "@dashkite/genie-release": "^0.2.10",
44
- "@dashkite/genie-yaml": "0.1.0"
45
+ "@dashkite/genie-yaml": "0.7.0"
45
46
  }
46
47
  }