space-router 0.9.1 → 0.9.3

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/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.9.3
2
+
3
+ - Upgrade all depedencies.
4
+
5
+ ## 0.9.2
6
+
7
+ - Upgrade all depedencies.
8
+
1
9
  ## 0.9.1
2
10
 
3
11
  - Revert to commonjs (remove `type: "module"`) to keep support for cjs in node and esm in browsers.
@@ -9,84 +9,84 @@ Object.defineProperty(exports, "createHistory", {
9
9
  }
10
10
  });
11
11
  function createHistory(options) {
12
- var listen = function listen(onChange) {
12
+ var sync = options.sync;
13
+ var mode = options.mode;
14
+ var raf;
15
+ var onPop;
16
+ var memory = [];
17
+ var off;
18
+ var destroyed = false;
19
+ if (typeof window === 'undefined') {
20
+ mode = 'memory';
21
+ raf = sync ? function(cb) {
22
+ return cb();
23
+ } : global.setImmediate;
24
+ } else {
25
+ raf = sync ? function(cb) {
26
+ return cb();
27
+ } : requestAnimationFrame;
28
+ if (mode === 'history' && !history.pushState) {
29
+ mode = 'hash';
30
+ }
31
+ }
32
+ function listen(onChange) {
13
33
  onPop = function() {
14
34
  return onChange(getUrl());
15
35
  };
16
- if (mode !== "memory") {
17
- off = on(window, mode === "history" ? "popstate" : "hashchange", onPop);
36
+ if (mode !== 'memory') {
37
+ off = on(window, mode === 'history' ? 'popstate' : 'hashchange', onPop);
18
38
  raf(onPop);
19
39
  }
20
40
  return function() {
21
41
  destroyed = true;
22
42
  off && off();
23
43
  };
44
+ }
45
+ return {
46
+ listen: listen,
47
+ getUrl: getUrl,
48
+ push: function(url) {
49
+ go(url);
50
+ },
51
+ replace: function(url) {
52
+ go(url, true);
53
+ }
24
54
  };
25
- var go = function go(url, replace) {
55
+ function go(url, replace) {
26
56
  if (destroyed) return;
27
- url = url.replace(/^\/?#?\/?/, "/").replace(/\/$/, "") || "/";
28
- if (mode === "history") {
29
- history[replace ? "replaceState" : "pushState"]({}, "", url);
57
+ url = url.replace(/^\/?#?\/?/, '/').replace(/\/$/, '') || '/';
58
+ if (mode === 'history') {
59
+ history[replace ? 'replaceState' : 'pushState']({}, '', url);
30
60
  raf(onPop);
31
- } else if (mode === "hash") {
32
- location[replace ? "replace" : "assign"]("#" + url);
33
- } else if (mode === "memory") {
61
+ } else if (mode === 'hash') {
62
+ location[replace ? 'replace' : 'assign']('#' + url);
63
+ } else if (mode === 'memory') {
34
64
  replace ? memory[memory.length - 1] = url : memory.push(url);
35
65
  raf(onPop);
36
66
  }
37
- };
38
- var getUrl = function getUrl() {
39
- if (mode === "memory") {
67
+ }
68
+ function getUrl() {
69
+ if (mode === 'memory') {
40
70
  return memory[memory.length - 1];
41
71
  }
42
72
  var hash = getHash();
43
- if (mode === "hash") {
44
- return hash === "" ? "/" : hash;
73
+ if (mode === 'hash') {
74
+ return hash === '' ? '/' : hash;
45
75
  }
46
- if (mode === "history") {
76
+ if (mode === 'history') {
47
77
  var url = location.pathname + location.search;
48
- if (hash !== "") {
49
- url += "#" + hash;
78
+ if (hash !== '') {
79
+ url += '#' + hash;
50
80
  }
51
81
  return url;
52
82
  }
53
- };
54
- var getHash = // Gets the true hash value. Cannot use location.hash directly due to bug
83
+ }
84
+ // Gets the true hash value. Cannot use location.hash directly due to bug
55
85
  // in Firefox where location.hash will always be decoded.
56
86
  function getHash() {
57
87
  var match = location.href.match(/#(.*)$/);
58
- return match ? match[1].replace("#", "") : "";
59
- };
60
- var sync = options.sync;
61
- var mode = options.mode;
62
- var raf;
63
- var onPop;
64
- var memory = [];
65
- var off;
66
- var destroyed = false;
67
- if (typeof window === "undefined") {
68
- mode = "memory";
69
- raf = sync ? function(cb) {
70
- return cb();
71
- } : global.setImmediate;
72
- } else {
73
- raf = sync ? function(cb) {
74
- return cb();
75
- } : requestAnimationFrame;
76
- if (mode === "history" && !history.pushState) {
77
- mode = "hash";
78
- }
88
+ return match ? match[1].replace('#', '') : '';
79
89
  }
80
- return {
81
- listen: listen,
82
- getUrl: getUrl,
83
- push: function(url) {
84
- go(url);
85
- },
86
- replace: function(url) {
87
- go(url, true);
88
- }
89
- };
90
90
  }
91
91
  function on(el, type, fn) {
92
92
  el.addEventListener(type, fn, false);
package/dist/cjs/index.js CHANGED
@@ -9,15 +9,15 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ createHistory: function() {
13
+ return _history.createHistory;
14
+ },
12
15
  createRouter: function() {
13
16
  return _router.createRouter;
14
17
  },
15
18
  merge: function() {
16
19
  return _router.merge;
17
20
  },
18
- createHistory: function() {
19
- return _history.createHistory;
20
- },
21
21
  qs: function() {
22
22
  return _qs.qs;
23
23
  }
package/dist/cjs/match.js CHANGED
@@ -37,34 +37,34 @@ function matchOne(pattern, url, qs) {
37
37
  var c = url.match(re);
38
38
  var params = {};
39
39
  var query = {};
40
- var search = "";
41
- var hash = "";
40
+ var search = '';
41
+ var hash = '';
42
42
  var ret;
43
43
  if (c && c[1]) {
44
- search = "?" + c[1];
44
+ search = '?' + c[1];
45
45
  query = qs.parse(c[1]);
46
46
  }
47
47
  if (c && c[2]) {
48
- hash = c[2] || "";
48
+ hash = c[2] || '';
49
49
  }
50
- if (pattern !== "*") {
51
- url = segmentize(url.replace(re, ""));
52
- pattern = segmentize(pattern || "");
50
+ if (pattern !== '*') {
51
+ url = segmentize(url.replace(re, ''));
52
+ pattern = segmentize(pattern || '');
53
53
  var max = Math.max(url.length, pattern.length);
54
54
  for(var i = 0; i < max; i++){
55
- if (pattern[i] && pattern[i].charAt(0) === ":") {
56
- var param = pattern[i].replace(/(^:|[+*?]+$)/g, "");
57
- var flags = (pattern[i].match(/[+*?]+$/) || {})[0] || "";
58
- var plus = flags.indexOf("+") > -1;
59
- var star = flags.indexOf("*") > -1;
60
- var val = url[i] || "";
61
- if (!val && !star && (flags.indexOf("?") < 0 || plus)) {
55
+ if (pattern[i] && pattern[i].charAt(0) === ':') {
56
+ var param = pattern[i].replace(/(^:|[+*?]+$)/g, '');
57
+ var flags = (pattern[i].match(/[+*?]+$/) || {})[0] || '';
58
+ var plus = flags.indexOf('+') > -1;
59
+ var star = flags.indexOf('*') > -1;
60
+ var val = url[i] || '';
61
+ if (!val && !star && (flags.indexOf('?') < 0 || plus)) {
62
62
  ret = false;
63
63
  break;
64
64
  }
65
65
  params[param] = decodeURIComponent(val);
66
66
  if (plus || star) {
67
- params[param] = url.slice(i).map(decodeURIComponent).join("/");
67
+ params[param] = url.slice(i).map(decodeURIComponent).join('/');
68
68
  break;
69
69
  }
70
70
  } else if (pattern[i] !== url[i]) {
@@ -79,7 +79,7 @@ function matchOne(pattern, url, qs) {
79
79
  return {
80
80
  pattern: originalPattern,
81
81
  url: originalUrl,
82
- pathname: originalUrl.replace(re, ""),
82
+ pathname: originalUrl.replace(re, ''),
83
83
  params: params,
84
84
  query: query,
85
85
  search: search,
@@ -87,8 +87,8 @@ function matchOne(pattern, url, qs) {
87
87
  };
88
88
  }
89
89
  function segmentize(url) {
90
- return strip(url).split("/");
90
+ return strip(url).split('/');
91
91
  }
92
92
  function strip(url) {
93
- return url.replace(/(^\/+|\/+$)/g, "");
93
+ return url.replace(/(^\/+|\/+$)/g, '');
94
94
  }
package/dist/cjs/qs.js CHANGED
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "qs", {
10
10
  });
11
11
  var qs = {
12
12
  parse: function(queryString) {
13
- return queryString.split("&").reduce(function(acc, pair) {
14
- var parts = pair.split("=");
13
+ return queryString.split('&').reduce(function(acc, pair) {
14
+ var parts = pair.split('=');
15
15
  acc[parts[0]] = decodeURIComponent(parts[1]);
16
16
  return acc;
17
17
  }, {});
@@ -19,9 +19,9 @@ var qs = {
19
19
  stringify: function(query) {
20
20
  return Object.keys(query).reduce(function(acc, key) {
21
21
  if (query[key] !== undefined) {
22
- acc.push(key + "=" + encodeURIComponent(query[key]));
22
+ acc.push(key + '=' + encodeURIComponent(query[key]));
23
23
  }
24
24
  return acc;
25
- }, []).join("&");
25
+ }, []).join('&');
26
26
  }
27
27
  };
@@ -105,13 +105,13 @@ function createRouter() {
105
105
  var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
106
106
  var history = null;
107
107
  var routes = [];
108
- var mode = options.mode || "history";
108
+ var mode = options.mode || 'history';
109
109
  var qs = options.qs || _qs.qs;
110
110
  var sync = options.sync || false;
111
111
  var router = {
112
112
  listen: function(routeMap, cb) {
113
113
  if (history) {
114
- throw new Error("Already listening");
114
+ throw new Error('Already listening');
115
115
  }
116
116
  routes = flatten(routeMap);
117
117
  history = (0, _history.createHistory)({
@@ -128,7 +128,7 @@ function createRouter() {
128
128
  };
129
129
  },
130
130
  navigate: function(to, curr) {
131
- if (typeof to === "string") {
131
+ if (typeof to === 'string') {
132
132
  to = {
133
133
  url: to
134
134
  };
@@ -142,7 +142,7 @@ function createRouter() {
142
142
  },
143
143
  href: function(to, curr) {
144
144
  // already a url
145
- if (typeof to === "string") {
145
+ if (typeof to === 'string') {
146
146
  return to;
147
147
  }
148
148
  // align with navigate API
@@ -153,20 +153,20 @@ function createRouter() {
153
153
  curr = curr || router.match(router.getUrl());
154
154
  to = merge(curr, to);
155
155
  }
156
- var url = to.pathname || "/";
156
+ var url = to.pathname || '/';
157
157
  if (to.params) {
158
158
  Object.keys(to.params).forEach(function(param) {
159
- url = url.replace(":" + param, to.params[param]);
159
+ url = url.replace(':' + param, to.params[param]);
160
160
  });
161
161
  }
162
162
  if (to.query && Object.keys(to.query).length) {
163
163
  var query = qs.stringify(to.query);
164
164
  if (query) {
165
- url = url + "?" + query;
165
+ url = url + '?' + query;
166
166
  }
167
167
  }
168
168
  if (to.hash) {
169
- var prefix = to.hash.startsWith("#") ? "" : "#";
169
+ var prefix = to.hash.startsWith('#') ? '' : '#';
170
170
  url = url + prefix + to.hash;
171
171
  }
172
172
  return url;
@@ -190,7 +190,7 @@ function flatten(routeMap) {
190
190
  var parentData = [];
191
191
  function addLevel(level) {
192
192
  level.forEach(function(route) {
193
- var _route_path = route.path, path = _route_path === void 0 ? "" : _route_path, children = route.routes, routeData = _object_without_properties(route, [
193
+ var _route_path = route.path, path = _route_path === void 0 ? '' : _route_path, children = route.routes, routeData = _object_without_properties(route, [
194
194
  "path",
195
195
  "routes"
196
196
  ]);
@@ -243,7 +243,7 @@ function transition(router, url, onNavigated) {
243
243
  }
244
244
  }
245
245
  function redirectUrl(router, redirect, matchingRoute) {
246
- if (typeof redirect === "function") {
246
+ if (typeof redirect === 'function') {
247
247
  redirect = redirect(matchingRoute);
248
248
  }
249
249
  return router.href(redirect);
@@ -260,7 +260,7 @@ function merge() {
260
260
  var pathname = to.pathname || curr.pattern || curr.pathname;
261
261
  var params = Object.assign({}, curr.params, to.params);
262
262
  var query = to.query === null ? null : Object.assign({}, curr.query, to.query);
263
- var hash = to.hash === null ? null : to.hash || curr.hash || "";
263
+ var hash = to.hash === null ? null : to.hash || curr.hash || '';
264
264
  return {
265
265
  pathname: pathname,
266
266
  params: params,
@@ -1,82 +1,82 @@
1
1
  export function createHistory(options) {
2
- var listen = function listen(onChange) {
2
+ var sync = options.sync;
3
+ var mode = options.mode;
4
+ var raf;
5
+ var onPop;
6
+ var memory = [];
7
+ var off;
8
+ var destroyed = false;
9
+ if (typeof window === 'undefined') {
10
+ mode = 'memory';
11
+ raf = sync ? function(cb) {
12
+ return cb();
13
+ } : global.setImmediate;
14
+ } else {
15
+ raf = sync ? function(cb) {
16
+ return cb();
17
+ } : requestAnimationFrame;
18
+ if (mode === 'history' && !history.pushState) {
19
+ mode = 'hash';
20
+ }
21
+ }
22
+ function listen(onChange) {
3
23
  onPop = function() {
4
24
  return onChange(getUrl());
5
25
  };
6
- if (mode !== "memory") {
7
- off = on(window, mode === "history" ? "popstate" : "hashchange", onPop);
26
+ if (mode !== 'memory') {
27
+ off = on(window, mode === 'history' ? 'popstate' : 'hashchange', onPop);
8
28
  raf(onPop);
9
29
  }
10
30
  return function() {
11
31
  destroyed = true;
12
32
  off && off();
13
33
  };
34
+ }
35
+ return {
36
+ listen: listen,
37
+ getUrl: getUrl,
38
+ push: function push(url) {
39
+ go(url);
40
+ },
41
+ replace: function replace(url) {
42
+ go(url, true);
43
+ }
14
44
  };
15
- var go = function go(url, replace) {
45
+ function go(url, replace) {
16
46
  if (destroyed) return;
17
- url = url.replace(/^\/?#?\/?/, "/").replace(/\/$/, "") || "/";
18
- if (mode === "history") {
19
- history[replace ? "replaceState" : "pushState"]({}, "", url);
47
+ url = url.replace(/^\/?#?\/?/, '/').replace(/\/$/, '') || '/';
48
+ if (mode === 'history') {
49
+ history[replace ? 'replaceState' : 'pushState']({}, '', url);
20
50
  raf(onPop);
21
- } else if (mode === "hash") {
22
- location[replace ? "replace" : "assign"]("#" + url);
23
- } else if (mode === "memory") {
51
+ } else if (mode === 'hash') {
52
+ location[replace ? 'replace' : 'assign']('#' + url);
53
+ } else if (mode === 'memory') {
24
54
  replace ? memory[memory.length - 1] = url : memory.push(url);
25
55
  raf(onPop);
26
56
  }
27
- };
28
- var getUrl = function getUrl() {
29
- if (mode === "memory") {
57
+ }
58
+ function getUrl() {
59
+ if (mode === 'memory') {
30
60
  return memory[memory.length - 1];
31
61
  }
32
62
  var hash = getHash();
33
- if (mode === "hash") {
34
- return hash === "" ? "/" : hash;
63
+ if (mode === 'hash') {
64
+ return hash === '' ? '/' : hash;
35
65
  }
36
- if (mode === "history") {
66
+ if (mode === 'history') {
37
67
  var url = location.pathname + location.search;
38
- if (hash !== "") {
39
- url += "#" + hash;
68
+ if (hash !== '') {
69
+ url += '#' + hash;
40
70
  }
41
71
  return url;
42
72
  }
43
- };
44
- var getHash = // Gets the true hash value. Cannot use location.hash directly due to bug
73
+ }
74
+ // Gets the true hash value. Cannot use location.hash directly due to bug
45
75
  // in Firefox where location.hash will always be decoded.
46
76
  function getHash() {
47
77
  var match = location.href.match(/#(.*)$/);
48
- return match ? match[1].replace("#", "") : "";
49
- };
50
- var sync = options.sync;
51
- var mode = options.mode;
52
- var raf;
53
- var onPop;
54
- var memory = [];
55
- var off;
56
- var destroyed = false;
57
- if (typeof window === "undefined") {
58
- mode = "memory";
59
- raf = sync ? function(cb) {
60
- return cb();
61
- } : global.setImmediate;
62
- } else {
63
- raf = sync ? function(cb) {
64
- return cb();
65
- } : requestAnimationFrame;
66
- if (mode === "history" && !history.pushState) {
67
- mode = "hash";
68
- }
78
+ return match ? match[1].replace('#', '') : '';
69
79
  }
70
- return {
71
- listen: listen,
72
- getUrl: getUrl,
73
- push: function push(url) {
74
- go(url);
75
- },
76
- replace: function replace(url) {
77
- go(url, true);
78
- }
79
- };
80
80
  }
81
81
  function on(el, type, fn) {
82
82
  el.addEventListener(type, fn, false);
package/dist/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { createRouter, merge } from "./router";
2
- export { createHistory } from "./history";
3
- export { qs } from "./qs";
1
+ export { createRouter, merge } from './router';
2
+ export { createHistory } from './history';
3
+ export { qs } from './qs';
package/dist/esm/match.js CHANGED
@@ -19,34 +19,34 @@ export function matchOne(pattern, url, qs) {
19
19
  var c = url.match(re);
20
20
  var params = {};
21
21
  var query = {};
22
- var search = "";
23
- var hash = "";
22
+ var search = '';
23
+ var hash = '';
24
24
  var ret;
25
25
  if (c && c[1]) {
26
- search = "?" + c[1];
26
+ search = '?' + c[1];
27
27
  query = qs.parse(c[1]);
28
28
  }
29
29
  if (c && c[2]) {
30
- hash = c[2] || "";
30
+ hash = c[2] || '';
31
31
  }
32
- if (pattern !== "*") {
33
- url = segmentize(url.replace(re, ""));
34
- pattern = segmentize(pattern || "");
32
+ if (pattern !== '*') {
33
+ url = segmentize(url.replace(re, ''));
34
+ pattern = segmentize(pattern || '');
35
35
  var max = Math.max(url.length, pattern.length);
36
36
  for(var i = 0; i < max; i++){
37
- if (pattern[i] && pattern[i].charAt(0) === ":") {
38
- var param = pattern[i].replace(/(^:|[+*?]+$)/g, "");
39
- var flags = (pattern[i].match(/[+*?]+$/) || {})[0] || "";
40
- var plus = flags.indexOf("+") > -1;
41
- var star = flags.indexOf("*") > -1;
42
- var val = url[i] || "";
43
- if (!val && !star && (flags.indexOf("?") < 0 || plus)) {
37
+ if (pattern[i] && pattern[i].charAt(0) === ':') {
38
+ var param = pattern[i].replace(/(^:|[+*?]+$)/g, '');
39
+ var flags = (pattern[i].match(/[+*?]+$/) || {})[0] || '';
40
+ var plus = flags.indexOf('+') > -1;
41
+ var star = flags.indexOf('*') > -1;
42
+ var val = url[i] || '';
43
+ if (!val && !star && (flags.indexOf('?') < 0 || plus)) {
44
44
  ret = false;
45
45
  break;
46
46
  }
47
47
  params[param] = decodeURIComponent(val);
48
48
  if (plus || star) {
49
- params[param] = url.slice(i).map(decodeURIComponent).join("/");
49
+ params[param] = url.slice(i).map(decodeURIComponent).join('/');
50
50
  break;
51
51
  }
52
52
  } else if (pattern[i] !== url[i]) {
@@ -61,7 +61,7 @@ export function matchOne(pattern, url, qs) {
61
61
  return {
62
62
  pattern: originalPattern,
63
63
  url: originalUrl,
64
- pathname: originalUrl.replace(re, ""),
64
+ pathname: originalUrl.replace(re, ''),
65
65
  params: params,
66
66
  query: query,
67
67
  search: search,
@@ -69,8 +69,8 @@ export function matchOne(pattern, url, qs) {
69
69
  };
70
70
  }
71
71
  function segmentize(url) {
72
- return strip(url).split("/");
72
+ return strip(url).split('/');
73
73
  }
74
74
  function strip(url) {
75
- return url.replace(/(^\/+|\/+$)/g, "");
75
+ return url.replace(/(^\/+|\/+$)/g, '');
76
76
  }
package/dist/esm/qs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export var qs = {
2
2
  parse: function parse(queryString) {
3
- return queryString.split("&").reduce(function(acc, pair) {
4
- var parts = pair.split("=");
3
+ return queryString.split('&').reduce(function(acc, pair) {
4
+ var parts = pair.split('=');
5
5
  acc[parts[0]] = decodeURIComponent(parts[1]);
6
6
  return acc;
7
7
  }, {});
@@ -9,9 +9,9 @@ export var qs = {
9
9
  stringify: function stringify(query) {
10
10
  return Object.keys(query).reduce(function(acc, key) {
11
11
  if (query[key] !== undefined) {
12
- acc.push(key + "=" + encodeURIComponent(query[key]));
12
+ acc.push(key + '=' + encodeURIComponent(query[key]));
13
13
  }
14
14
  return acc;
15
- }, []).join("&");
15
+ }, []).join('&');
16
16
  }
17
17
  };
@@ -77,20 +77,20 @@ function _object_without_properties_loose(source, excluded) {
77
77
  }
78
78
  return target;
79
79
  }
80
- import { match as findMatch } from "./match";
81
- import { createHistory } from "./history";
82
- import { qs as defaultQs } from "./qs";
80
+ import { match as findMatch } from './match';
81
+ import { createHistory } from './history';
82
+ import { qs as defaultQs } from './qs';
83
83
  export function createRouter() {
84
84
  var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
85
85
  var history = null;
86
86
  var routes = [];
87
- var mode = options.mode || "history";
87
+ var mode = options.mode || 'history';
88
88
  var qs = options.qs || defaultQs;
89
89
  var sync = options.sync || false;
90
90
  var router = {
91
91
  listen: function listen(routeMap, cb) {
92
92
  if (history) {
93
- throw new Error("Already listening");
93
+ throw new Error('Already listening');
94
94
  }
95
95
  routes = flatten(routeMap);
96
96
  history = createHistory({
@@ -107,7 +107,7 @@ export function createRouter() {
107
107
  };
108
108
  },
109
109
  navigate: function navigate(to, curr) {
110
- if (typeof to === "string") {
110
+ if (typeof to === 'string') {
111
111
  to = {
112
112
  url: to
113
113
  };
@@ -121,7 +121,7 @@ export function createRouter() {
121
121
  },
122
122
  href: function href(to, curr) {
123
123
  // already a url
124
- if (typeof to === "string") {
124
+ if (typeof to === 'string') {
125
125
  return to;
126
126
  }
127
127
  // align with navigate API
@@ -132,20 +132,20 @@ export function createRouter() {
132
132
  curr = curr || router.match(router.getUrl());
133
133
  to = merge(curr, to);
134
134
  }
135
- var url = to.pathname || "/";
135
+ var url = to.pathname || '/';
136
136
  if (to.params) {
137
137
  Object.keys(to.params).forEach(function(param) {
138
- url = url.replace(":" + param, to.params[param]);
138
+ url = url.replace(':' + param, to.params[param]);
139
139
  });
140
140
  }
141
141
  if (to.query && Object.keys(to.query).length) {
142
142
  var query = qs.stringify(to.query);
143
143
  if (query) {
144
- url = url + "?" + query;
144
+ url = url + '?' + query;
145
145
  }
146
146
  }
147
147
  if (to.hash) {
148
- var prefix = to.hash.startsWith("#") ? "" : "#";
148
+ var prefix = to.hash.startsWith('#') ? '' : '#';
149
149
  url = url + prefix + to.hash;
150
150
  }
151
151
  return url;
@@ -169,7 +169,7 @@ export function flatten(routeMap) {
169
169
  var parentData = [];
170
170
  function addLevel(level) {
171
171
  level.forEach(function(route) {
172
- var _route_path = route.path, path = _route_path === void 0 ? "" : _route_path, children = route.routes, routeData = _object_without_properties(route, [
172
+ var _route_path = route.path, path = _route_path === void 0 ? '' : _route_path, children = route.routes, routeData = _object_without_properties(route, [
173
173
  "path",
174
174
  "routes"
175
175
  ]);
@@ -222,7 +222,7 @@ function transition(router, url, onNavigated) {
222
222
  }
223
223
  }
224
224
  function redirectUrl(router, redirect, matchingRoute) {
225
- if (typeof redirect === "function") {
225
+ if (typeof redirect === 'function') {
226
226
  redirect = redirect(matchingRoute);
227
227
  }
228
228
  return router.href(redirect);
@@ -239,7 +239,7 @@ export function merge() {
239
239
  var pathname = to.pathname || curr.pattern || curr.pathname;
240
240
  var params = Object.assign({}, curr.params, to.params);
241
241
  var query = to.query === null ? null : Object.assign({}, curr.query, to.query);
242
- var hash = to.hash === null ? null : to.hash || curr.hash || "";
242
+ var hash = to.hash === null ? null : to.hash || curr.hash || '';
243
243
  return {
244
244
  pathname: pathname,
245
245
  params: params,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "space-router",
3
3
  "description": "All the routing essentials.",
4
- "version": "0.9.1",
4
+ "version": "0.9.3",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
7
7
  "license": "ICS",
@@ -19,6 +19,9 @@
19
19
  "location",
20
20
  "url"
21
21
  ],
22
+ "engines": {
23
+ "node": ">=14"
24
+ },
22
25
  "author": "Karolis Narkevicius",
23
26
  "scripts": {
24
27
  "test": "npm run build && healthier && prettier --check '**/*.{js,css,yml}' && c8 ava",
@@ -31,15 +34,15 @@
31
34
  "release:docs": "hugo -s docs && gh-pages -d docs/public"
32
35
  },
33
36
  "devDependencies": {
34
- "@swc-node/register": "^1.6.4",
35
- "@swc/cli": "^0.1.62",
36
- "@swc/core": "^1.3.49",
37
- "ava": "^5.2.0",
38
- "c8": "^7.13.0",
39
- "execa": "^7.1.1",
40
- "gh-pages": "^5.0.0",
41
- "healthier": "^6.3.0",
42
- "prettier": "^2.8.7"
37
+ "@swc-node/register": "^1.9.1",
38
+ "@swc/cli": "^0.3.12",
39
+ "@swc/core": "^1.4.17",
40
+ "ava": "^6.1.2",
41
+ "c8": "^9.1.0",
42
+ "execa": "^8.0.1",
43
+ "gh-pages": "^6.1.1",
44
+ "healthier": "^7.0.0",
45
+ "prettier": "^3.2.5"
43
46
  },
44
47
  "healthier": {
45
48
  "global": [
package/tasks/build.js CHANGED
@@ -11,6 +11,6 @@ const path = require('path')
11
11
  const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json')))
12
12
 
13
13
  const swc = './node_modules/.bin/swc'
14
- await sh(`${swc} --no-swcrc src -d ${pkg.main} --config-file=./.swc-cjs`)
15
- await sh(`${swc} --no-swcrc src -d ${pkg.module} --config-file=./.swc-esm`)
14
+ await sh(`${swc} --no-swcrc src -d ${pkg.main} --strip-leading-paths --config-file=./.swc-cjs`)
15
+ await sh(`${swc} --no-swcrc src -d ${pkg.module} --strip-leading-paths --config-file=./.swc-esm`)
16
16
  })()
@@ -10,7 +10,7 @@ test('converts array of routes to array of internal route descriptors', (t) => {
10
10
  [
11
11
  { pattern: '/foo', data: [{ a: 'foo' }] },
12
12
  { pattern: '/bar', data: [{ a: 'bar' }] },
13
- ]
13
+ ],
14
14
  )
15
15
  })
16
16
 
@@ -49,7 +49,7 @@ test('handles nested routes', (t) => {
49
49
  { pattern: '/foo/bar', data: [{ component: 'root' }, { component: 'foo' }, { component: 'bar' }] },
50
50
  { pattern: '/second', data: [{ component: 'second-root' }] },
51
51
  { pattern: '/baz/*', data: [{ component: 'second-root' }, { component: 'baz' }] },
52
- ]
52
+ ],
53
53
  )
54
54
  })
55
55
 
@@ -38,7 +38,7 @@ test('createRouter, listen, navigate and dispose', (t) => {
38
38
  'user=3?a=11&c=bla#test',
39
39
  'user=curr?curr=test',
40
40
  ],
41
- calls
41
+ calls,
42
42
  )
43
43
 
44
44
  dispose()
@@ -51,28 +51,28 @@ test('.href(to)', (t) => {
51
51
 
52
52
  t.deepEqual(
53
53
  router.href({ pathname: '/user/:id/friends', params: { id: 7 }, query: { a: 1, b: 2 } }),
54
- '/user/7/friends?a=1&b=2'
54
+ '/user/7/friends?a=1&b=2',
55
55
  )
56
56
  t.deepEqual(
57
57
  router.href({ pathname: '/user/:id/friends', params: { id: 7 }, query: { a: 1, b: 2 }, hash: '#bla' }),
58
- '/user/7/friends?a=1&b=2#bla'
58
+ '/user/7/friends?a=1&b=2#bla',
59
59
  )
60
60
  t.deepEqual(router.href({ pathname: '/user/:id/friends', params: { id: 8 }, hash: '#foo' }), '/user/8/friends#foo')
61
61
  t.deepEqual(
62
62
  router.href({ pathname: '/user/:id/friends', params: { id: 8 }, query: {}, hash: '#foo' }),
63
- '/user/8/friends#foo'
63
+ '/user/8/friends#foo',
64
64
  )
65
65
  t.deepEqual(
66
66
  router.href({ pathname: '/user/:id/friends', params: { id: 8 }, query: { q: null }, hash: '#foo' }),
67
- '/user/8/friends?q=null#foo'
67
+ '/user/8/friends?q=null#foo',
68
68
  )
69
69
  t.deepEqual(
70
70
  router.href({ pathname: '/user/:id/friends', params: { id: 8 }, query: { q: undefined }, hash: '#foo' }),
71
- '/user/8/friends#foo'
71
+ '/user/8/friends#foo',
72
72
  )
73
73
  t.deepEqual(
74
74
  router.href({ pathname: '/user/:id/friends', params: { id: 8 }, query: { q: undefined }, hash: '#foo' }),
75
- '/user/8/friends#foo'
75
+ '/user/8/friends#foo',
76
76
  )
77
77
  t.deepEqual(router.href({ params: { id: 8 }, query: { q: 1 }, hash: '#foo' }), '/?q=1#foo')
78
78
 
@@ -151,7 +151,7 @@ function createTestRouter(cb, { withoutCatchAll = false } = {}) {
151
151
  { path: '/user/:id/settings', datum: 'settings-data' },
152
152
  !withoutCatchAll && { path: '*', render: () => 'catchall' },
153
153
  ].filter(Boolean),
154
- cb
154
+ cb,
155
155
  )
156
156
  return { router, dispose }
157
157
  }