use-navigation-api 0.2.0 → 0.4.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/dist/index.d.ts +6 -0
- package/dist/location/useLocation.d.ts +15 -0
- package/dist/location/useLocationWithParam.d.ts +13 -0
- package/dist/location/useQueryParam.d.ts +9 -0
- package/dist/location/useQueryParams.d.ts +15 -0
- package/dist/navigationProvider.d.ts +18 -0
- package/dist/use-navigation-api.es.js +651 -0
- package/dist/use-navigation-api.umd.js +1 -0
- package/dist/useNavigate.d.ts +1 -0
- package/dist/util/future.d.ts +11 -0
- package/package.json +9 -2
- package/src/index.ts +2 -1
- package/src/location/useQueryParams.ts +54 -0
- package/eslint.config.js +0 -22
- package/tsconfig.app.json +0 -30
- package/tsconfig.json +0 -7
- package/tsconfig.node.json +0 -26
- package/vite.config.ts +0 -28
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type Location = string;
|
|
2
|
+
export declare function resolveLocation(location: string, base: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Returns the current location for the navigation context.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useLocation(): Location;
|
|
7
|
+
/**
|
|
8
|
+
* Resolves a URL string relative to the current location and returns its parts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useLocation(url: string, base?: string): Location;
|
|
11
|
+
/**
|
|
12
|
+
* Returns a location based on the returned url if present, or the modified input argument.
|
|
13
|
+
* For instance, `useLocation(url => url.searchParams.set("parameter", "value"))` returns the current location with only a single parameter updated.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useLocation(url: (current: URL) => URL | void, base?: string): Location;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* returns The current location with the specified parameter set to the provided value or removed if the value === null.
|
|
3
|
+
* @param param name of the query parameter to set
|
|
4
|
+
* @param value value to set the parameter to, or `null` to remove any existing value of that parameter
|
|
5
|
+
* @param base If provided, uses this value instead of the current location.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useLocationWithParam(param: string, value: string | null, base?: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* returns The current location with the specified parameter set to the provided value or removed if the value === null.
|
|
10
|
+
* @param params map of parameters to update. null or empty entries will be removed.
|
|
11
|
+
* @param base If provided, uses this value instead of the current location.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useLocationWithParams(params: Record<string, string | string[] | null>, base?: string): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function parseSearchParams(location?: string): URLSearchParams;
|
|
2
|
+
/**
|
|
3
|
+
* Returns the first value for a query parameter, or null if it is missing.
|
|
4
|
+
*/
|
|
5
|
+
export declare function useQueryParam(param: string, all?: false): string | null;
|
|
6
|
+
/**
|
|
7
|
+
* Returns all values for a query parameter when it appears multiple times.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useQueryParam(param: string, all: true): string[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type ParamsMapper<T> = (params: URLSearchParams) => T;
|
|
2
|
+
export declare function mapQueryParams(params: URLSearchParams, keys?: string[], arrayKeys?: string[]): Record<string, string | string[] | null>;
|
|
3
|
+
/**
|
|
4
|
+
* Returns the first value of each query parameter found in the url.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useQueryParams(): Record<string, string>;
|
|
7
|
+
/**
|
|
8
|
+
* Returns the first value of each query parameter found in keys, and all values of each parameter found in arrayKeys.
|
|
9
|
+
* Note that typescript types of K and M should not overlap - manual typing or casting variables to `as const` may be required.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useQueryParams<K extends string, M extends string>(keys: K[], arrayKeys?: M[]): Record<K, string | null> & Record<M, string[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Maps SearchParams to a custom type using the provided mapper function.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useQueryParams<T>(mapper: ParamsMapper<T>): T;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Dispatch, FC, ReactNode, SetStateAction } from 'react';
|
|
2
|
+
export type NavigationContextState = {
|
|
3
|
+
url: string;
|
|
4
|
+
store: "url" | "hash" | "memory";
|
|
5
|
+
};
|
|
6
|
+
type NavigationContextValue = NavigationContextState & {
|
|
7
|
+
setState?: Dispatch<SetStateAction<NavigationContextState>>;
|
|
8
|
+
};
|
|
9
|
+
export declare const NavigationContext: import('react').Context<NavigationContextValue>;
|
|
10
|
+
declare function defaultShouldHandle(event: NavigateEvent): boolean;
|
|
11
|
+
type ShouldHandle = typeof defaultShouldHandle;
|
|
12
|
+
export declare const NavigationProvider: FC<{
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
store?: "url" | "hash" | "memory";
|
|
15
|
+
scoped?: boolean;
|
|
16
|
+
shouldHandle?: ShouldHandle;
|
|
17
|
+
}>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,651 @@
|
|
|
1
|
+
import { createContext, createElement, useContext, useEffect, useMemo, useState } from "react";
|
|
2
|
+
var __create = Object.create, __defProp = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropNames = Object.getOwnPropertyNames, __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty, __commonJSMin = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), __copyProps = (e, t, n, r) => {
|
|
3
|
+
if (t && typeof t == "object" || typeof t == "function") for (var i = __getOwnPropNames(t), a = 0, o = i.length, u; a < o; a++) u = i[a], !__hasOwnProp.call(e, u) && u !== n && __defProp(e, u, {
|
|
4
|
+
get: ((e) => t[e]).bind(null, u),
|
|
5
|
+
enumerable: !(r = __getOwnPropDesc(t, u)) || r.enumerable
|
|
6
|
+
});
|
|
7
|
+
return e;
|
|
8
|
+
}, __toESM = (e, t, n) => (n = e == null ? {} : __create(__getProtoOf(e)), __copyProps(t || !e || !e.__esModule ? __defProp(n, "default", {
|
|
9
|
+
value: e,
|
|
10
|
+
enumerable: !0
|
|
11
|
+
}) : n, e)), require_uri_all = /* @__PURE__ */ __commonJSMin(((e, t) => {
|
|
12
|
+
/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
|
|
13
|
+
(function(n, r) {
|
|
14
|
+
typeof e == "object" && t !== void 0 ? r(e) : typeof define == "function" && define.amd ? define(["exports"], r) : r(n.URI = n.URI || {});
|
|
15
|
+
})(e, (function(e) {
|
|
16
|
+
function t() {
|
|
17
|
+
var e = [...arguments];
|
|
18
|
+
if (e.length > 1) {
|
|
19
|
+
e[0] = e[0].slice(0, -1);
|
|
20
|
+
for (var t = e.length - 1, n = 1; n < t; ++n) e[n] = e[n].slice(1, -1);
|
|
21
|
+
return e[t] = e[t].slice(1), e.join("");
|
|
22
|
+
} else return e[0];
|
|
23
|
+
}
|
|
24
|
+
function n(e) {
|
|
25
|
+
return "(?:" + e + ")";
|
|
26
|
+
}
|
|
27
|
+
function r(e) {
|
|
28
|
+
return e === void 0 ? "undefined" : e === null ? "null" : Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
function i(e) {
|
|
31
|
+
return e.toUpperCase();
|
|
32
|
+
}
|
|
33
|
+
function a(e) {
|
|
34
|
+
return e == null ? [] : e instanceof Array ? e : typeof e.length != "number" || e.split || e.setInterval || e.call ? [e] : Array.prototype.slice.call(e);
|
|
35
|
+
}
|
|
36
|
+
function o(e, t) {
|
|
37
|
+
var n = e;
|
|
38
|
+
if (t) for (var r in t) n[r] = t[r];
|
|
39
|
+
return n;
|
|
40
|
+
}
|
|
41
|
+
function s(e) {
|
|
42
|
+
var r = "[A-Za-z]", i = "[0-9]", a = t(i, "[A-Fa-f]"), o = n(n("%[EFef]" + a + "%" + a + a + "%" + a + a) + "|" + n("%[89A-Fa-f]" + a + "%" + a + a) + "|" + n("%" + a + a)), s = "[\\:\\/\\?\\#\\[\\]\\@]", c = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", l = t(s, c), u = e ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", d = e ? "[\\uE000-\\uF8FF]" : "[]", f = t(r, i, "[\\-\\.\\_\\~]", u), p = n(r + t(r, i, "[\\+\\-\\.]") + "*"), m = n(n(o + "|" + t(f, c, "[\\:]")) + "*");
|
|
43
|
+
n(n("25[0-5]") + "|" + n("2[0-4]" + i) + "|" + n("1" + i + i) + "|" + n("[1-9]" + i) + "|" + i);
|
|
44
|
+
var h = n(n("25[0-5]") + "|" + n("2[0-4]" + i) + "|" + n("1" + i + i) + "|" + n("0?[1-9]" + i) + "|0?0?" + i), g = n(h + "\\." + h + "\\." + h + "\\." + h), _ = n(a + "{1,4}"), v = n(n(_ + "\\:" + _) + "|" + g), y = n([
|
|
45
|
+
n(n(_ + "\\:") + "{6}" + v),
|
|
46
|
+
n("\\:\\:" + n(_ + "\\:") + "{5}" + v),
|
|
47
|
+
n(n(_) + "?\\:\\:" + n(_ + "\\:") + "{4}" + v),
|
|
48
|
+
n(n(n(_ + "\\:") + "{0,1}" + _) + "?\\:\\:" + n(_ + "\\:") + "{3}" + v),
|
|
49
|
+
n(n(n(_ + "\\:") + "{0,2}" + _) + "?\\:\\:" + n(_ + "\\:") + "{2}" + v),
|
|
50
|
+
n(n(n(_ + "\\:") + "{0,3}" + _) + "?\\:\\:" + _ + "\\:" + v),
|
|
51
|
+
n(n(n(_ + "\\:") + "{0,4}" + _) + "?\\:\\:" + v),
|
|
52
|
+
n(n(n(_ + "\\:") + "{0,5}" + _) + "?\\:\\:" + _),
|
|
53
|
+
n(n(n(_ + "\\:") + "{0,6}" + _) + "?\\:\\:")
|
|
54
|
+
].join("|")), b = n(n(f + "|" + o) + "+");
|
|
55
|
+
n(y + "\\%25" + b);
|
|
56
|
+
var x = n(y + n("\\%25|\\%(?!" + a + "{2})") + b), S = n("[vV]" + a + "+\\." + t(f, c, "[\\:]") + "+"), C = n("\\[" + n(x + "|" + y + "|" + S) + "\\]"), w = n(n(o + "|" + t(f, c)) + "*"), T = n(C + "|" + g + "(?!" + w + ")|" + w), E = n(i + "*"), D = n(n(m + "@") + "?" + T + n("\\:" + E) + "?"), O = n(o + "|" + t(f, c, "[\\:\\@]")), k = n(O + "*"), A = n(O + "+"), ee = n(n(o + "|" + t(f, c, "[\\@]")) + "+"), j = n(n("\\/" + k) + "*"), M = n("\\/" + n(A + j) + "?"), N = n(ee + j), P = n(A + j), F = "(?!" + O + ")";
|
|
57
|
+
n(j + "|" + M + "|" + N + "|" + P + "|" + F);
|
|
58
|
+
var I = n(n(O + "|" + t("[\\/\\?]", d)) + "*"), L = n(n(O + "|[\\/\\?]") + "*"), R = n(n("\\/\\/" + D + j) + "|" + M + "|" + P + "|" + F), z = n(p + "\\:" + R + n("\\?" + I) + "?" + n("\\#" + L) + "?"), B = n(n(n("\\/\\/" + D + j) + "|" + M + "|" + N + "|" + F) + n("\\?" + I) + "?" + n("\\#" + L) + "?");
|
|
59
|
+
return n(z + "|" + B), n(p + "\\:" + R + n("\\?" + I) + "?"), "" + p + n(n("\\/\\/(" + n("(" + m + ")@") + "?(" + T + ")" + n("\\:(" + E + ")") + "?)") + "?(" + j + "|" + M + "|" + P + "|" + F + ")") + n("\\?(" + I + ")") + n("\\#(" + L + ")"), "" + n(n("\\/\\/(" + n("(" + m + ")@") + "?(" + T + ")" + n("\\:(" + E + ")") + "?)") + "?(" + j + "|" + M + "|" + N + "|" + F + ")") + n("\\?(" + I + ")") + n("\\#(" + L + ")"), "" + p + n(n("\\/\\/(" + n("(" + m + ")@") + "?(" + T + ")" + n("\\:(" + E + ")") + "?)") + "?(" + j + "|" + M + "|" + P + "|" + F + ")") + n("\\?(" + I + ")"), "" + n("\\#(" + L + ")"), "" + n("(" + m + ")@") + T + n("\\:(" + E + ")"), {
|
|
60
|
+
NOT_SCHEME: new RegExp(t("[^]", r, i, "[\\+\\-\\.]"), "g"),
|
|
61
|
+
NOT_USERINFO: new RegExp(t("[^\\%\\:]", f, c), "g"),
|
|
62
|
+
NOT_HOST: new RegExp(t("[^\\%\\[\\]\\:]", f, c), "g"),
|
|
63
|
+
NOT_PATH: new RegExp(t("[^\\%\\/\\:\\@]", f, c), "g"),
|
|
64
|
+
NOT_PATH_NOSCHEME: new RegExp(t("[^\\%\\/\\@]", f, c), "g"),
|
|
65
|
+
NOT_QUERY: new RegExp(t("[^\\%]", f, c, "[\\:\\@\\/\\?]", d), "g"),
|
|
66
|
+
NOT_FRAGMENT: new RegExp(t("[^\\%]", f, c, "[\\:\\@\\/\\?]"), "g"),
|
|
67
|
+
ESCAPE: new RegExp(t("[^]", f, c), "g"),
|
|
68
|
+
UNRESERVED: new RegExp(f, "g"),
|
|
69
|
+
OTHER_CHARS: new RegExp(t("[^\\%]", f, l), "g"),
|
|
70
|
+
PCT_ENCODED: new RegExp(o, "g"),
|
|
71
|
+
IPV4ADDRESS: /* @__PURE__ */ RegExp("^(" + g + ")$"),
|
|
72
|
+
IPV6ADDRESS: /* @__PURE__ */ RegExp("^\\[?(" + y + ")" + n(n("\\%25|\\%(?!" + a + "{2})") + "(" + b + ")") + "?\\]?$")
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
var c = s(!1), l = s(!0), u = function() {
|
|
76
|
+
function e(e, t) {
|
|
77
|
+
var n = [], r = !0, i = !1, a = void 0;
|
|
78
|
+
try {
|
|
79
|
+
for (var o = e[Symbol.iterator](), s; !(r = (s = o.next()).done) && (n.push(s.value), !(t && n.length === t)); r = !0);
|
|
80
|
+
} catch (e) {
|
|
81
|
+
i = !0, a = e;
|
|
82
|
+
} finally {
|
|
83
|
+
try {
|
|
84
|
+
!r && o.return && o.return();
|
|
85
|
+
} finally {
|
|
86
|
+
if (i) throw a;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return n;
|
|
90
|
+
}
|
|
91
|
+
return function(t, n) {
|
|
92
|
+
if (Array.isArray(t)) return t;
|
|
93
|
+
if (Symbol.iterator in Object(t)) return e(t, n);
|
|
94
|
+
throw TypeError("Invalid attempt to destructure non-iterable instance");
|
|
95
|
+
};
|
|
96
|
+
}(), d = function(e) {
|
|
97
|
+
if (Array.isArray(e)) {
|
|
98
|
+
for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t];
|
|
99
|
+
return n;
|
|
100
|
+
} else return Array.from(e);
|
|
101
|
+
}, f = 2147483647, p = 36, m = 1, h = 26, g = 38, _ = 700, v = 72, y = 128, b = "-", x = /^xn--/, S = /[^\0-\x7E]/, C = /[\x2E\u3002\uFF0E\uFF61]/g, w = {
|
|
102
|
+
overflow: "Overflow: input needs wider integers to process",
|
|
103
|
+
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
|
|
104
|
+
"invalid-input": "Invalid input"
|
|
105
|
+
}, T = p - m, E = Math.floor, D = String.fromCharCode;
|
|
106
|
+
function O(e) {
|
|
107
|
+
throw RangeError(w[e]);
|
|
108
|
+
}
|
|
109
|
+
function k(e, t) {
|
|
110
|
+
for (var n = [], r = e.length; r--;) n[r] = t(e[r]);
|
|
111
|
+
return n;
|
|
112
|
+
}
|
|
113
|
+
function A(e, t) {
|
|
114
|
+
var n = e.split("@"), r = "";
|
|
115
|
+
n.length > 1 && (r = n[0] + "@", e = n[1]), e = e.replace(C, ".");
|
|
116
|
+
var i = k(e.split("."), t).join(".");
|
|
117
|
+
return r + i;
|
|
118
|
+
}
|
|
119
|
+
function ee(e) {
|
|
120
|
+
for (var t = [], n = 0, r = e.length; n < r;) {
|
|
121
|
+
var i = e.charCodeAt(n++);
|
|
122
|
+
if (i >= 55296 && i <= 56319 && n < r) {
|
|
123
|
+
var a = e.charCodeAt(n++);
|
|
124
|
+
(a & 64512) == 56320 ? t.push(((i & 1023) << 10) + (a & 1023) + 65536) : (t.push(i), n--);
|
|
125
|
+
} else t.push(i);
|
|
126
|
+
}
|
|
127
|
+
return t;
|
|
128
|
+
}
|
|
129
|
+
var j = function(e) {
|
|
130
|
+
return String.fromCodePoint.apply(String, d(e));
|
|
131
|
+
}, M = function(e) {
|
|
132
|
+
return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : p;
|
|
133
|
+
}, N = function(e, t) {
|
|
134
|
+
return e + 22 + 75 * (e < 26) - ((t != 0) << 5);
|
|
135
|
+
}, P = function(e, t, n) {
|
|
136
|
+
var r = 0;
|
|
137
|
+
for (e = n ? E(e / _) : e >> 1, e += E(e / t); e > T * h >> 1; r += p) e = E(e / T);
|
|
138
|
+
return E(r + (T + 1) * e / (e + g));
|
|
139
|
+
}, F = function(e) {
|
|
140
|
+
var t = [], n = e.length, r = 0, i = y, a = v, o = e.lastIndexOf(b);
|
|
141
|
+
o < 0 && (o = 0);
|
|
142
|
+
for (var s = 0; s < o; ++s) e.charCodeAt(s) >= 128 && O("not-basic"), t.push(e.charCodeAt(s));
|
|
143
|
+
for (var c = o > 0 ? o + 1 : 0; c < n;) {
|
|
144
|
+
for (var l = r, u = 1, d = p;; d += p) {
|
|
145
|
+
c >= n && O("invalid-input");
|
|
146
|
+
var g = M(e.charCodeAt(c++));
|
|
147
|
+
(g >= p || g > E((f - r) / u)) && O("overflow"), r += g * u;
|
|
148
|
+
var _ = d <= a ? m : d >= a + h ? h : d - a;
|
|
149
|
+
if (g < _) break;
|
|
150
|
+
var x = p - _;
|
|
151
|
+
u > E(f / x) && O("overflow"), u *= x;
|
|
152
|
+
}
|
|
153
|
+
var S = t.length + 1;
|
|
154
|
+
a = P(r - l, S, l == 0), E(r / S) > f - i && O("overflow"), i += E(r / S), r %= S, t.splice(r++, 0, i);
|
|
155
|
+
}
|
|
156
|
+
return String.fromCodePoint.apply(String, t);
|
|
157
|
+
}, I = function(e) {
|
|
158
|
+
var t = [];
|
|
159
|
+
e = ee(e);
|
|
160
|
+
var n = e.length, r = y, i = 0, a = v, o = !0, s = !1, c = void 0;
|
|
161
|
+
try {
|
|
162
|
+
for (var l = e[Symbol.iterator](), u; !(o = (u = l.next()).done); o = !0) {
|
|
163
|
+
var d = u.value;
|
|
164
|
+
d < 128 && t.push(D(d));
|
|
165
|
+
}
|
|
166
|
+
} catch (e) {
|
|
167
|
+
s = !0, c = e;
|
|
168
|
+
} finally {
|
|
169
|
+
try {
|
|
170
|
+
!o && l.return && l.return();
|
|
171
|
+
} finally {
|
|
172
|
+
if (s) throw c;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
var g = t.length, _ = g;
|
|
176
|
+
for (g && t.push(b); _ < n;) {
|
|
177
|
+
var x = f, S = !0, C = !1, w = void 0;
|
|
178
|
+
try {
|
|
179
|
+
for (var T = e[Symbol.iterator](), k; !(S = (k = T.next()).done); S = !0) {
|
|
180
|
+
var A = k.value;
|
|
181
|
+
A >= r && A < x && (x = A);
|
|
182
|
+
}
|
|
183
|
+
} catch (e) {
|
|
184
|
+
C = !0, w = e;
|
|
185
|
+
} finally {
|
|
186
|
+
try {
|
|
187
|
+
!S && T.return && T.return();
|
|
188
|
+
} finally {
|
|
189
|
+
if (C) throw w;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
var j = _ + 1;
|
|
193
|
+
x - r > E((f - i) / j) && O("overflow"), i += (x - r) * j, r = x;
|
|
194
|
+
var M = !0, F = !1, I = void 0;
|
|
195
|
+
try {
|
|
196
|
+
for (var L = e[Symbol.iterator](), R; !(M = (R = L.next()).done); M = !0) {
|
|
197
|
+
var z = R.value;
|
|
198
|
+
if (z < r && ++i > f && O("overflow"), z == r) {
|
|
199
|
+
for (var B = i, V = p;; V += p) {
|
|
200
|
+
var H = V <= a ? m : V >= a + h ? h : V - a;
|
|
201
|
+
if (B < H) break;
|
|
202
|
+
var U = B - H, W = p - H;
|
|
203
|
+
t.push(D(N(H + U % W, 0))), B = E(U / W);
|
|
204
|
+
}
|
|
205
|
+
t.push(D(N(B, 0))), a = P(i, j, _ == g), i = 0, ++_;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
} catch (e) {
|
|
209
|
+
F = !0, I = e;
|
|
210
|
+
} finally {
|
|
211
|
+
try {
|
|
212
|
+
!M && L.return && L.return();
|
|
213
|
+
} finally {
|
|
214
|
+
if (F) throw I;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
++i, ++r;
|
|
218
|
+
}
|
|
219
|
+
return t.join("");
|
|
220
|
+
}, L = {
|
|
221
|
+
version: "2.1.0",
|
|
222
|
+
ucs2: {
|
|
223
|
+
decode: ee,
|
|
224
|
+
encode: j
|
|
225
|
+
},
|
|
226
|
+
decode: F,
|
|
227
|
+
encode: I,
|
|
228
|
+
toASCII: function(e) {
|
|
229
|
+
return A(e, function(e) {
|
|
230
|
+
return S.test(e) ? "xn--" + I(e) : e;
|
|
231
|
+
});
|
|
232
|
+
},
|
|
233
|
+
toUnicode: function(e) {
|
|
234
|
+
return A(e, function(e) {
|
|
235
|
+
return x.test(e) ? F(e.slice(4).toLowerCase()) : e;
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}, R = {};
|
|
239
|
+
function z(e) {
|
|
240
|
+
var t = e.charCodeAt(0), n = void 0;
|
|
241
|
+
return n = t < 16 ? "%0" + t.toString(16).toUpperCase() : t < 128 ? "%" + t.toString(16).toUpperCase() : t < 2048 ? "%" + (t >> 6 | 192).toString(16).toUpperCase() + "%" + (t & 63 | 128).toString(16).toUpperCase() : "%" + (t >> 12 | 224).toString(16).toUpperCase() + "%" + (t >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (t & 63 | 128).toString(16).toUpperCase(), n;
|
|
242
|
+
}
|
|
243
|
+
function B(e) {
|
|
244
|
+
for (var t = "", n = 0, r = e.length; n < r;) {
|
|
245
|
+
var i = parseInt(e.substr(n + 1, 2), 16);
|
|
246
|
+
if (i < 128) t += String.fromCharCode(i), n += 3;
|
|
247
|
+
else if (i >= 194 && i < 224) {
|
|
248
|
+
if (r - n >= 6) {
|
|
249
|
+
var a = parseInt(e.substr(n + 4, 2), 16);
|
|
250
|
+
t += String.fromCharCode((i & 31) << 6 | a & 63);
|
|
251
|
+
} else t += e.substr(n, 6);
|
|
252
|
+
n += 6;
|
|
253
|
+
} else if (i >= 224) {
|
|
254
|
+
if (r - n >= 9) {
|
|
255
|
+
var o = parseInt(e.substr(n + 4, 2), 16), s = parseInt(e.substr(n + 7, 2), 16);
|
|
256
|
+
t += String.fromCharCode((i & 15) << 12 | (o & 63) << 6 | s & 63);
|
|
257
|
+
} else t += e.substr(n, 9);
|
|
258
|
+
n += 9;
|
|
259
|
+
} else t += e.substr(n, 3), n += 3;
|
|
260
|
+
}
|
|
261
|
+
return t;
|
|
262
|
+
}
|
|
263
|
+
function V(e, t) {
|
|
264
|
+
function n(e) {
|
|
265
|
+
var n = B(e);
|
|
266
|
+
return n.match(t.UNRESERVED) ? n : e;
|
|
267
|
+
}
|
|
268
|
+
return e.scheme &&= String(e.scheme).replace(t.PCT_ENCODED, n).toLowerCase().replace(t.NOT_SCHEME, ""), e.userinfo !== void 0 && (e.userinfo = String(e.userinfo).replace(t.PCT_ENCODED, n).replace(t.NOT_USERINFO, z).replace(t.PCT_ENCODED, i)), e.host !== void 0 && (e.host = String(e.host).replace(t.PCT_ENCODED, n).toLowerCase().replace(t.NOT_HOST, z).replace(t.PCT_ENCODED, i)), e.path !== void 0 && (e.path = String(e.path).replace(t.PCT_ENCODED, n).replace(e.scheme ? t.NOT_PATH : t.NOT_PATH_NOSCHEME, z).replace(t.PCT_ENCODED, i)), e.query !== void 0 && (e.query = String(e.query).replace(t.PCT_ENCODED, n).replace(t.NOT_QUERY, z).replace(t.PCT_ENCODED, i)), e.fragment !== void 0 && (e.fragment = String(e.fragment).replace(t.PCT_ENCODED, n).replace(t.NOT_FRAGMENT, z).replace(t.PCT_ENCODED, i)), e;
|
|
269
|
+
}
|
|
270
|
+
function H(e) {
|
|
271
|
+
return e.replace(/^0*(.*)/, "$1") || "0";
|
|
272
|
+
}
|
|
273
|
+
function U(e, t) {
|
|
274
|
+
var n = u(e.match(t.IPV4ADDRESS) || [], 2)[1];
|
|
275
|
+
return n ? n.split(".").map(H).join(".") : e;
|
|
276
|
+
}
|
|
277
|
+
function W(e, t) {
|
|
278
|
+
var n = u(e.match(t.IPV6ADDRESS) || [], 3), r = n[1], i = n[2];
|
|
279
|
+
if (r) {
|
|
280
|
+
for (var a = u(r.toLowerCase().split("::").reverse(), 2), o = a[0], s = a[1], c = s ? s.split(":").map(H) : [], l = o.split(":").map(H), d = t.IPV4ADDRESS.test(l[l.length - 1]), f = d ? 7 : 8, p = l.length - f, m = Array(f), h = 0; h < f; ++h) m[h] = c[h] || l[p + h] || "";
|
|
281
|
+
d && (m[f - 1] = U(m[f - 1], t));
|
|
282
|
+
var g = m.reduce(function(e, t, n) {
|
|
283
|
+
if (!t || t === "0") {
|
|
284
|
+
var r = e[e.length - 1];
|
|
285
|
+
r && r.index + r.length === n ? r.length++ : e.push({
|
|
286
|
+
index: n,
|
|
287
|
+
length: 1
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
return e;
|
|
291
|
+
}, []).sort(function(e, t) {
|
|
292
|
+
return t.length - e.length;
|
|
293
|
+
})[0], _ = void 0;
|
|
294
|
+
if (g && g.length > 1) {
|
|
295
|
+
var v = m.slice(0, g.index), y = m.slice(g.index + g.length);
|
|
296
|
+
_ = v.join(":") + "::" + y.join(":");
|
|
297
|
+
} else _ = m.join(":");
|
|
298
|
+
return i && (_ += "%" + i), _;
|
|
299
|
+
} else return e;
|
|
300
|
+
}
|
|
301
|
+
var te = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i, ne = "".match(/(){0}/)[1] === void 0;
|
|
302
|
+
function G(e) {
|
|
303
|
+
var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = {}, r = t.iri === !1 ? c : l;
|
|
304
|
+
t.reference === "suffix" && (e = (t.scheme ? t.scheme + ":" : "") + "//" + e);
|
|
305
|
+
var i = e.match(te);
|
|
306
|
+
if (i) {
|
|
307
|
+
ne ? (n.scheme = i[1], n.userinfo = i[3], n.host = i[4], n.port = parseInt(i[5], 10), n.path = i[6] || "", n.query = i[7], n.fragment = i[8], isNaN(n.port) && (n.port = i[5])) : (n.scheme = i[1] || void 0, n.userinfo = e.indexOf("@") === -1 ? void 0 : i[3], n.host = e.indexOf("//") === -1 ? void 0 : i[4], n.port = parseInt(i[5], 10), n.path = i[6] || "", n.query = e.indexOf("?") === -1 ? void 0 : i[7], n.fragment = e.indexOf("#") === -1 ? void 0 : i[8], isNaN(n.port) && (n.port = e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? i[4] : void 0)), n.host &&= W(U(n.host, r), r), n.scheme === void 0 && n.userinfo === void 0 && n.host === void 0 && n.port === void 0 && !n.path && n.query === void 0 ? n.reference = "same-document" : n.scheme === void 0 ? n.reference = "relative" : n.fragment === void 0 ? n.reference = "absolute" : n.reference = "uri", t.reference && t.reference !== "suffix" && t.reference !== n.reference && (n.error = n.error || "URI is not a " + t.reference + " reference.");
|
|
308
|
+
var a = R[(t.scheme || n.scheme || "").toLowerCase()];
|
|
309
|
+
if (!t.unicodeSupport && (!a || !a.unicodeSupport)) {
|
|
310
|
+
if (n.host && (t.domainHost || a && a.domainHost)) try {
|
|
311
|
+
n.host = L.toASCII(n.host.replace(r.PCT_ENCODED, B).toLowerCase());
|
|
312
|
+
} catch (e) {
|
|
313
|
+
n.error = n.error || "Host's domain name can not be converted to ASCII via punycode: " + e;
|
|
314
|
+
}
|
|
315
|
+
V(n, c);
|
|
316
|
+
} else V(n, r);
|
|
317
|
+
a && a.parse && a.parse(n, t);
|
|
318
|
+
} else n.error = n.error || "URI can not be parsed.";
|
|
319
|
+
return n;
|
|
320
|
+
}
|
|
321
|
+
function re(e, t) {
|
|
322
|
+
var n = t.iri === !1 ? c : l, r = [];
|
|
323
|
+
return e.userinfo !== void 0 && (r.push(e.userinfo), r.push("@")), e.host !== void 0 && r.push(W(U(String(e.host), n), n).replace(n.IPV6ADDRESS, function(e, t, n) {
|
|
324
|
+
return "[" + t + (n ? "%25" + n : "") + "]";
|
|
325
|
+
})), (typeof e.port == "number" || typeof e.port == "string") && (r.push(":"), r.push(String(e.port))), r.length ? r.join("") : void 0;
|
|
326
|
+
}
|
|
327
|
+
var ie = /^\.\.?\//, ae = /^\/\.(\/|$)/, oe = /^\/\.\.(\/|$)/, se = /^\/?(?:.|\n)*?(?=\/|$)/;
|
|
328
|
+
function K(e) {
|
|
329
|
+
for (var t = []; e.length;) if (e.match(ie)) e = e.replace(ie, "");
|
|
330
|
+
else if (e.match(ae)) e = e.replace(ae, "/");
|
|
331
|
+
else if (e.match(oe)) e = e.replace(oe, "/"), t.pop();
|
|
332
|
+
else if (e === "." || e === "..") e = "";
|
|
333
|
+
else {
|
|
334
|
+
var n = e.match(se);
|
|
335
|
+
if (n) {
|
|
336
|
+
var r = n[0];
|
|
337
|
+
e = e.slice(r.length), t.push(r);
|
|
338
|
+
} else throw Error("Unexpected dot segment condition");
|
|
339
|
+
}
|
|
340
|
+
return t.join("");
|
|
341
|
+
}
|
|
342
|
+
function q(e) {
|
|
343
|
+
var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = t.iri ? l : c, r = [], i = R[(t.scheme || e.scheme || "").toLowerCase()];
|
|
344
|
+
if (i && i.serialize && i.serialize(e, t), e.host && !n.IPV6ADDRESS.test(e.host) && (t.domainHost || i && i.domainHost)) try {
|
|
345
|
+
e.host = t.iri ? L.toUnicode(e.host) : L.toASCII(e.host.replace(n.PCT_ENCODED, B).toLowerCase());
|
|
346
|
+
} catch (n) {
|
|
347
|
+
e.error = e.error || "Host's domain name can not be converted to " + (t.iri ? "Unicode" : "ASCII") + " via punycode: " + n;
|
|
348
|
+
}
|
|
349
|
+
V(e, n), t.reference !== "suffix" && e.scheme && (r.push(e.scheme), r.push(":"));
|
|
350
|
+
var a = re(e, t);
|
|
351
|
+
if (a !== void 0 && (t.reference !== "suffix" && r.push("//"), r.push(a), e.path && e.path.charAt(0) !== "/" && r.push("/")), e.path !== void 0) {
|
|
352
|
+
var o = e.path;
|
|
353
|
+
!t.absolutePath && (!i || !i.absolutePath) && (o = K(o)), a === void 0 && (o = o.replace(/^\/\//, "/%2F")), r.push(o);
|
|
354
|
+
}
|
|
355
|
+
return e.query !== void 0 && (r.push("?"), r.push(e.query)), e.fragment !== void 0 && (r.push("#"), r.push(e.fragment)), r.join("");
|
|
356
|
+
}
|
|
357
|
+
function ce(e, t) {
|
|
358
|
+
var n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, r = arguments[3], i = {};
|
|
359
|
+
return r || (e = G(q(e, n), n), t = G(q(t, n), n)), n ||= {}, !n.tolerant && t.scheme ? (i.scheme = t.scheme, i.userinfo = t.userinfo, i.host = t.host, i.port = t.port, i.path = K(t.path || ""), i.query = t.query) : (t.userinfo !== void 0 || t.host !== void 0 || t.port !== void 0 ? (i.userinfo = t.userinfo, i.host = t.host, i.port = t.port, i.path = K(t.path || ""), i.query = t.query) : (t.path ? (t.path.charAt(0) === "/" ? i.path = K(t.path) : ((e.userinfo !== void 0 || e.host !== void 0 || e.port !== void 0) && !e.path ? i.path = "/" + t.path : e.path ? i.path = e.path.slice(0, e.path.lastIndexOf("/") + 1) + t.path : i.path = t.path, i.path = K(i.path)), i.query = t.query) : (i.path = e.path, t.query === void 0 ? i.query = e.query : i.query = t.query), i.userinfo = e.userinfo, i.host = e.host, i.port = e.port), i.scheme = e.scheme), i.fragment = t.fragment, i;
|
|
360
|
+
}
|
|
361
|
+
function le(e, t, n) {
|
|
362
|
+
var r = o({ scheme: "null" }, n);
|
|
363
|
+
return q(ce(G(e, r), G(t, r), r, !0), r);
|
|
364
|
+
}
|
|
365
|
+
function ue(e, t) {
|
|
366
|
+
return typeof e == "string" ? e = q(G(e, t), t) : r(e) === "object" && (e = G(q(e, t), t)), e;
|
|
367
|
+
}
|
|
368
|
+
function de(e, t, n) {
|
|
369
|
+
return typeof e == "string" ? e = q(G(e, n), n) : r(e) === "object" && (e = q(e, n)), typeof t == "string" ? t = q(G(t, n), n) : r(t) === "object" && (t = q(t, n)), e === t;
|
|
370
|
+
}
|
|
371
|
+
function fe(e, t) {
|
|
372
|
+
return e && e.toString().replace(!t || !t.iri ? c.ESCAPE : l.ESCAPE, z);
|
|
373
|
+
}
|
|
374
|
+
function J(e, t) {
|
|
375
|
+
return e && e.toString().replace(!t || !t.iri ? c.PCT_ENCODED : l.PCT_ENCODED, B);
|
|
376
|
+
}
|
|
377
|
+
var Y = {
|
|
378
|
+
scheme: "http",
|
|
379
|
+
domainHost: !0,
|
|
380
|
+
parse: function(e, t) {
|
|
381
|
+
return e.host || (e.error = e.error || "HTTP URIs must have a host."), e;
|
|
382
|
+
},
|
|
383
|
+
serialize: function(e, t) {
|
|
384
|
+
var n = String(e.scheme).toLowerCase() === "https";
|
|
385
|
+
return (e.port === (n ? 443 : 80) || e.port === "") && (e.port = void 0), e.path ||= "/", e;
|
|
386
|
+
}
|
|
387
|
+
}, pe = {
|
|
388
|
+
scheme: "https",
|
|
389
|
+
domainHost: Y.domainHost,
|
|
390
|
+
parse: Y.parse,
|
|
391
|
+
serialize: Y.serialize
|
|
392
|
+
};
|
|
393
|
+
function me(e) {
|
|
394
|
+
return typeof e.secure == "boolean" ? e.secure : String(e.scheme).toLowerCase() === "wss";
|
|
395
|
+
}
|
|
396
|
+
var X = {
|
|
397
|
+
scheme: "ws",
|
|
398
|
+
domainHost: !0,
|
|
399
|
+
parse: function(e, t) {
|
|
400
|
+
var n = e;
|
|
401
|
+
return n.secure = me(n), n.resourceName = (n.path || "/") + (n.query ? "?" + n.query : ""), n.path = void 0, n.query = void 0, n;
|
|
402
|
+
},
|
|
403
|
+
serialize: function(e, t) {
|
|
404
|
+
if ((e.port === (me(e) ? 443 : 80) || e.port === "") && (e.port = void 0), typeof e.secure == "boolean" && (e.scheme = e.secure ? "wss" : "ws", e.secure = void 0), e.resourceName) {
|
|
405
|
+
var n = u(e.resourceName.split("?"), 2), r = n[0], i = n[1];
|
|
406
|
+
e.path = r && r !== "/" ? r : void 0, e.query = i, e.resourceName = void 0;
|
|
407
|
+
}
|
|
408
|
+
return e.fragment = void 0, e;
|
|
409
|
+
}
|
|
410
|
+
}, he = {
|
|
411
|
+
scheme: "wss",
|
|
412
|
+
domainHost: X.domainHost,
|
|
413
|
+
parse: X.parse,
|
|
414
|
+
serialize: X.serialize
|
|
415
|
+
}, ge = {}, _e = "[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]", Z = "[0-9A-Fa-f]", ve = n(n("%[EFef]" + Z + "%" + Z + Z + "%" + Z + Z) + "|" + n("%[89A-Fa-f]" + Z + "%" + Z + Z) + "|" + n("%" + Z + Z)), ye = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]", be = t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]", "[\\\"\\\\]"), xe = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]", Se = new RegExp(_e, "g"), Q = new RegExp(ve, "g"), Ce = new RegExp(t("[^]", ye, "[\\.]", "[\\\"]", be), "g"), we = new RegExp(t("[^]", _e, xe), "g"), Te = we;
|
|
416
|
+
function $(e) {
|
|
417
|
+
var t = B(e);
|
|
418
|
+
return t.match(Se) ? t : e;
|
|
419
|
+
}
|
|
420
|
+
var Ee = {
|
|
421
|
+
scheme: "mailto",
|
|
422
|
+
parse: function(e, t) {
|
|
423
|
+
var n = e, r = n.to = n.path ? n.path.split(",") : [];
|
|
424
|
+
if (n.path = void 0, n.query) {
|
|
425
|
+
for (var i = !1, a = {}, o = n.query.split("&"), s = 0, c = o.length; s < c; ++s) {
|
|
426
|
+
var l = o[s].split("=");
|
|
427
|
+
switch (l[0]) {
|
|
428
|
+
case "to":
|
|
429
|
+
for (var u = l[1].split(","), d = 0, f = u.length; d < f; ++d) r.push(u[d]);
|
|
430
|
+
break;
|
|
431
|
+
case "subject":
|
|
432
|
+
n.subject = J(l[1], t);
|
|
433
|
+
break;
|
|
434
|
+
case "body":
|
|
435
|
+
n.body = J(l[1], t);
|
|
436
|
+
break;
|
|
437
|
+
default:
|
|
438
|
+
i = !0, a[J(l[0], t)] = J(l[1], t);
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
i && (n.headers = a);
|
|
443
|
+
}
|
|
444
|
+
n.query = void 0;
|
|
445
|
+
for (var p = 0, m = r.length; p < m; ++p) {
|
|
446
|
+
var h = r[p].split("@");
|
|
447
|
+
if (h[0] = J(h[0]), t.unicodeSupport) h[1] = J(h[1], t).toLowerCase();
|
|
448
|
+
else try {
|
|
449
|
+
h[1] = L.toASCII(J(h[1], t).toLowerCase());
|
|
450
|
+
} catch (e) {
|
|
451
|
+
n.error = n.error || "Email address's domain name can not be converted to ASCII via punycode: " + e;
|
|
452
|
+
}
|
|
453
|
+
r[p] = h.join("@");
|
|
454
|
+
}
|
|
455
|
+
return n;
|
|
456
|
+
},
|
|
457
|
+
serialize: function(e, t) {
|
|
458
|
+
var n = e, r = a(e.to);
|
|
459
|
+
if (r) {
|
|
460
|
+
for (var o = 0, s = r.length; o < s; ++o) {
|
|
461
|
+
var c = String(r[o]), l = c.lastIndexOf("@"), u = c.slice(0, l).replace(Q, $).replace(Q, i).replace(Ce, z), d = c.slice(l + 1);
|
|
462
|
+
try {
|
|
463
|
+
d = t.iri ? L.toUnicode(d) : L.toASCII(J(d, t).toLowerCase());
|
|
464
|
+
} catch (e) {
|
|
465
|
+
n.error = n.error || "Email address's domain name can not be converted to " + (t.iri ? "Unicode" : "ASCII") + " via punycode: " + e;
|
|
466
|
+
}
|
|
467
|
+
r[o] = u + "@" + d;
|
|
468
|
+
}
|
|
469
|
+
n.path = r.join(",");
|
|
470
|
+
}
|
|
471
|
+
var f = e.headers = e.headers || {};
|
|
472
|
+
e.subject && (f.subject = e.subject), e.body && (f.body = e.body);
|
|
473
|
+
var p = [];
|
|
474
|
+
for (var m in f) f[m] !== ge[m] && p.push(m.replace(Q, $).replace(Q, i).replace(we, z) + "=" + f[m].replace(Q, $).replace(Q, i).replace(Te, z));
|
|
475
|
+
return p.length && (n.query = p.join("&")), n;
|
|
476
|
+
}
|
|
477
|
+
}, De = /^([^\:]+)\:(.*)/, Oe = {
|
|
478
|
+
scheme: "urn",
|
|
479
|
+
parse: function(e, t) {
|
|
480
|
+
var n = e.path && e.path.match(De), r = e;
|
|
481
|
+
if (n) {
|
|
482
|
+
var i = t.scheme || r.scheme || "urn", a = n[1].toLowerCase(), o = n[2], s = R[i + ":" + (t.nid || a)];
|
|
483
|
+
r.nid = a, r.nss = o, r.path = void 0, s && (r = s.parse(r, t));
|
|
484
|
+
} else r.error = r.error || "URN can not be parsed.";
|
|
485
|
+
return r;
|
|
486
|
+
},
|
|
487
|
+
serialize: function(e, t) {
|
|
488
|
+
var n = t.scheme || e.scheme || "urn", r = e.nid, i = R[n + ":" + (t.nid || r)];
|
|
489
|
+
i && (e = i.serialize(e, t));
|
|
490
|
+
var a = e, o = e.nss;
|
|
491
|
+
return a.path = (r || t.nid) + ":" + o, a;
|
|
492
|
+
}
|
|
493
|
+
}, ke = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/, Ae = {
|
|
494
|
+
scheme: "urn:uuid",
|
|
495
|
+
parse: function(e, t) {
|
|
496
|
+
var n = e;
|
|
497
|
+
return n.uuid = n.nss, n.nss = void 0, !t.tolerant && (!n.uuid || !n.uuid.match(ke)) && (n.error = n.error || "UUID is not valid."), n;
|
|
498
|
+
},
|
|
499
|
+
serialize: function(e, t) {
|
|
500
|
+
var n = e;
|
|
501
|
+
return n.nss = (e.uuid || "").toLowerCase(), n;
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
R[Y.scheme] = Y, R[pe.scheme] = pe, R[X.scheme] = X, R[he.scheme] = he, R[Ee.scheme] = Ee, R[Oe.scheme] = Oe, R[Ae.scheme] = Ae, e.SCHEMES = R, e.pctEncChar = z, e.pctDecChars = B, e.parse = G, e.removeDotSegments = K, e.serialize = q, e.resolveComponents = ce, e.resolve = le, e.normalize = ue, e.equal = de, e.escapeComponent = fe, e.unescapeComponent = J, Object.defineProperty(e, "__esModule", { value: !0 });
|
|
505
|
+
}));
|
|
506
|
+
})), import_uri_all$3 = /* @__PURE__ */ __toESM(require_uri_all(), 1);
|
|
507
|
+
const NavigationContext = createContext({
|
|
508
|
+
url: "/",
|
|
509
|
+
store: "url"
|
|
510
|
+
});
|
|
511
|
+
function defaultShouldHandle(e) {
|
|
512
|
+
return e.canIntercept && !e.downloadRequest;
|
|
513
|
+
}
|
|
514
|
+
const NavigationProvider = ({ children: e, store: n = "url", scoped: o, shouldHandle: s = defaultShouldHandle }) => {
|
|
515
|
+
let [c, l] = useState(null), [u, d] = useState(() => ({
|
|
516
|
+
store: n,
|
|
517
|
+
url: window.location.href
|
|
518
|
+
})), f = useMemo(() => (e) => {
|
|
519
|
+
let t = e.sourceElement;
|
|
520
|
+
return c && t && !c.contains(t) ? !0 : !s(e);
|
|
521
|
+
}, [s, c]);
|
|
522
|
+
useEffect(() => {
|
|
523
|
+
let e = (e) => {
|
|
524
|
+
if (f(e)) return;
|
|
525
|
+
let t = e.destination.url;
|
|
526
|
+
n === "memory" ? (e.preventDefault(), d((r) => {
|
|
527
|
+
if (e.sourceElement instanceof HTMLAnchorElement && e.navigationType === "push") {
|
|
528
|
+
let n = e.sourceElement.getAttribute("href");
|
|
529
|
+
n && !n.startsWith("/") && !/^[a-z]+:\/\//i.test(n) && (t = import_uri_all$3.default.resolve(r.url, n));
|
|
530
|
+
}
|
|
531
|
+
return {
|
|
532
|
+
...r,
|
|
533
|
+
url: t,
|
|
534
|
+
store: n
|
|
535
|
+
};
|
|
536
|
+
})) : e.intercept({ async handler() {
|
|
537
|
+
d({
|
|
538
|
+
url: t,
|
|
539
|
+
store: n
|
|
540
|
+
});
|
|
541
|
+
} });
|
|
542
|
+
};
|
|
543
|
+
return navigation?.addEventListener("navigate", e), () => navigation?.removeEventListener("navigate", e);
|
|
544
|
+
}, [
|
|
545
|
+
f,
|
|
546
|
+
o,
|
|
547
|
+
n
|
|
548
|
+
]);
|
|
549
|
+
let p = useMemo(() => ({
|
|
550
|
+
...u,
|
|
551
|
+
setState: d
|
|
552
|
+
}), [u]);
|
|
553
|
+
return createElement(NavigationContext.Provider, { value: p }, o ? createElement("div", { ref: l }, e) : e);
|
|
554
|
+
};
|
|
555
|
+
function future(e) {
|
|
556
|
+
let t = {}, n = new Promise((e, n) => {
|
|
557
|
+
t.resolve = e, t.reject = n;
|
|
558
|
+
});
|
|
559
|
+
return n.resolve = t.resolve, n.reject = t.reject, e && n.catch(() => {}), n;
|
|
560
|
+
}
|
|
561
|
+
var import_uri_all$2 = /* @__PURE__ */ __toESM(require_uri_all(), 1);
|
|
562
|
+
function useNavigate() {
|
|
563
|
+
let { setState: e } = useContext(NavigationContext);
|
|
564
|
+
return useMemo(() => {
|
|
565
|
+
if (!e || !navigation) return navigation;
|
|
566
|
+
let t = (t, n) => {
|
|
567
|
+
let r = {
|
|
568
|
+
committed: future(!0),
|
|
569
|
+
finished: future(!0)
|
|
570
|
+
}, i = ({ committed: e, finished: t }) => {
|
|
571
|
+
e.then(r.committed.resolve, r.committed.reject), t.then(r.finished.resolve, r.finished.reject);
|
|
572
|
+
};
|
|
573
|
+
return e((e) => (Promise.resolve().then(() => {
|
|
574
|
+
try {
|
|
575
|
+
i(navigation.navigate(import_uri_all$2.default.resolve(e.url, t), n));
|
|
576
|
+
} catch {
|
|
577
|
+
i(navigation.navigate(t, n));
|
|
578
|
+
}
|
|
579
|
+
}), e)), r;
|
|
580
|
+
};
|
|
581
|
+
return new Proxy(navigation, { get(e, n, r) {
|
|
582
|
+
if (n === "navigate") return t;
|
|
583
|
+
let i = Reflect.get(e, n, r);
|
|
584
|
+
return typeof i == "function" ? i.bind(e) : i;
|
|
585
|
+
} });
|
|
586
|
+
}, [e]);
|
|
587
|
+
}
|
|
588
|
+
var import_uri_all$1 = /* @__PURE__ */ __toESM(require_uri_all(), 1), DUMMY_BASE = "fakeprotodonotuse://";
|
|
589
|
+
function resolveLocation(e, t) {
|
|
590
|
+
let n = import_uri_all$1.default.parse(import_uri_all$1.default.resolve(t, e));
|
|
591
|
+
return n.scheme = void 0, n.host = void 0, n.port = void 0, import_uri_all$1.default.serialize(n);
|
|
592
|
+
}
|
|
593
|
+
function useLocation(e, t) {
|
|
594
|
+
let r = useContext(NavigationContext), a = t ?? r.url;
|
|
595
|
+
return useMemo(() => {
|
|
596
|
+
if (typeof e == "string") return resolveLocation(e, a);
|
|
597
|
+
if (typeof e == "function") {
|
|
598
|
+
let t = new URL(a, DUMMY_BASE);
|
|
599
|
+
return resolveLocation((e(t) || t).href, a);
|
|
600
|
+
}
|
|
601
|
+
return resolveLocation("", a);
|
|
602
|
+
}, [e, a]);
|
|
603
|
+
}
|
|
604
|
+
var import_uri_all = /* @__PURE__ */ __toESM(require_uri_all(), 1);
|
|
605
|
+
function parseSearchParams(e) {
|
|
606
|
+
return new URLSearchParams(import_uri_all.default.parse(e || "").query);
|
|
607
|
+
}
|
|
608
|
+
function useQueryParam(e, t = !1) {
|
|
609
|
+
let n = useLocation();
|
|
610
|
+
return useMemo(() => {
|
|
611
|
+
try {
|
|
612
|
+
let r = parseSearchParams(n);
|
|
613
|
+
return t ? r.getAll(e) || [] : r.get(e);
|
|
614
|
+
} catch {
|
|
615
|
+
return null;
|
|
616
|
+
}
|
|
617
|
+
}, [
|
|
618
|
+
n,
|
|
619
|
+
t,
|
|
620
|
+
e
|
|
621
|
+
]);
|
|
622
|
+
}
|
|
623
|
+
function mapQueryParams(e, t, n) {
|
|
624
|
+
let r = Object.fromEntries((t || []).map((e) => [e, null]).concat((n || []).map((e) => [e, []])));
|
|
625
|
+
return e.forEach((e, i) => {
|
|
626
|
+
if (!(t && !(t.includes(i) || n?.includes(i)))) if (!r[i]) r[i] = e;
|
|
627
|
+
else if (t?.includes(i)) return;
|
|
628
|
+
else Array.isArray(r[i]) ? r[i].push(e) : r[i] = [r[i], e];
|
|
629
|
+
}), r;
|
|
630
|
+
}
|
|
631
|
+
function useQueryParams(e, t) {
|
|
632
|
+
let n = useLocation();
|
|
633
|
+
return useMemo(() => {
|
|
634
|
+
let r = parseSearchParams(n);
|
|
635
|
+
return Array.isArray(e) ? mapQueryParams(r, e, t) : (e || mapQueryParams)(r);
|
|
636
|
+
}, [
|
|
637
|
+
n,
|
|
638
|
+
e,
|
|
639
|
+
t
|
|
640
|
+
]);
|
|
641
|
+
}
|
|
642
|
+
function useLocationWithParam(e, t, n) {
|
|
643
|
+
return useLocation((n) => t === null ? n.searchParams.delete(e) : n.searchParams.set(e, t), n);
|
|
644
|
+
}
|
|
645
|
+
function useLocationWithParams(e, t) {
|
|
646
|
+
return useLocation((t) => {
|
|
647
|
+
for (let [n, r] of Object.entries(e)) r === null ? t.searchParams.delete(n) : Array.isArray(r) ? (t.searchParams.delete(n), r.forEach((e) => t.searchParams.append(n, e))) : t.searchParams.set(n, r);
|
|
648
|
+
return t;
|
|
649
|
+
}, t);
|
|
650
|
+
}
|
|
651
|
+
export { NavigationContext, NavigationProvider, mapQueryParams, parseSearchParams, resolveLocation, useLocation, useLocationWithParam, useLocationWithParams, useNavigate, useQueryParam, useQueryParams };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`)):typeof define==`function`&&define.amd?define([`exports`,`react`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.useNavigationAPI={},e.React))})(this,function(e,t){var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),l=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e},u=(e,t,i)=>(i=e==null?{}:n(o(e)),l(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)),d=c(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?r(e):typeof define==`function`&&define.amd?define([`exports`],r):r(n.URI=n.URI||{})})(e,(function(e){function t(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(t.length>1){t[0]=t[0].slice(0,-1);for(var r=t.length-1,i=1;i<r;++i)t[i]=t[i].slice(1,-1);return t[r]=t[r].slice(1),t.join(``)}else return t[0]}function n(e){return`(?:`+e+`)`}function r(e){return e===void 0?`undefined`:e===null?`null`:Object.prototype.toString.call(e).split(` `).pop().split(`]`).shift().toLowerCase()}function i(e){return e.toUpperCase()}function a(e){return e==null?[]:e instanceof Array?e:typeof e.length!=`number`||e.split||e.setInterval||e.call?[e]:Array.prototype.slice.call(e)}function o(e,t){var n=e;if(t)for(var r in t)n[r]=t[r];return n}function s(e){var r=`[A-Za-z]`,i=`[0-9]`,a=t(i,`[A-Fa-f]`),o=n(n(`%[EFef]`+a+`%`+a+a+`%`+a+a)+`|`+n(`%[89A-Fa-f]`+a+`%`+a+a)+`|`+n(`%`+a+a)),s=`[\\:\\/\\?\\#\\[\\]\\@]`,c=`[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]`,l=t(s,c),u=e?`[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]`:`[]`,d=e?`[\\uE000-\\uF8FF]`:`[]`,f=t(r,i,`[\\-\\.\\_\\~]`,u),p=n(r+t(r,i,`[\\+\\-\\.]`)+`*`),m=n(n(o+`|`+t(f,c,`[\\:]`))+`*`);n(n(`25[0-5]`)+`|`+n(`2[0-4]`+i)+`|`+n(`1`+i+i)+`|`+n(`[1-9]`+i)+`|`+i);var h=n(n(`25[0-5]`)+`|`+n(`2[0-4]`+i)+`|`+n(`1`+i+i)+`|`+n(`0?[1-9]`+i)+`|0?0?`+i),g=n(h+`\\.`+h+`\\.`+h+`\\.`+h),_=n(a+`{1,4}`),v=n(n(_+`\\:`+_)+`|`+g),y=n([n(n(_+`\\:`)+`{6}`+v),n(`\\:\\:`+n(_+`\\:`)+`{5}`+v),n(n(_)+`?\\:\\:`+n(_+`\\:`)+`{4}`+v),n(n(n(_+`\\:`)+`{0,1}`+_)+`?\\:\\:`+n(_+`\\:`)+`{3}`+v),n(n(n(_+`\\:`)+`{0,2}`+_)+`?\\:\\:`+n(_+`\\:`)+`{2}`+v),n(n(n(_+`\\:`)+`{0,3}`+_)+`?\\:\\:`+_+`\\:`+v),n(n(n(_+`\\:`)+`{0,4}`+_)+`?\\:\\:`+v),n(n(n(_+`\\:`)+`{0,5}`+_)+`?\\:\\:`+_),n(n(n(_+`\\:`)+`{0,6}`+_)+`?\\:\\:`)].join(`|`)),b=n(n(f+`|`+o)+`+`);n(y+`\\%25`+b);var x=n(y+n(`\\%25|\\%(?!`+a+`{2})`)+b),S=n(`[vV]`+a+`+\\.`+t(f,c,`[\\:]`)+`+`),C=n(`\\[`+n(x+`|`+y+`|`+S)+`\\]`),w=n(n(o+`|`+t(f,c))+`*`),T=n(C+`|`+g+`(?!`+w+`)|`+w),E=n(i+`*`),D=n(n(m+`@`)+`?`+T+n(`\\:`+E)+`?`),O=n(o+`|`+t(f,c,`[\\:\\@]`)),k=n(O+`*`),A=n(O+`+`),j=n(n(o+`|`+t(f,c,`[\\@]`))+`+`),M=n(n(`\\/`+k)+`*`),N=n(`\\/`+n(A+M)+`?`),P=n(j+M),F=n(A+M),I=`(?!`+O+`)`;n(M+`|`+N+`|`+P+`|`+F+`|`+I);var L=n(n(O+`|`+t(`[\\/\\?]`,d))+`*`),R=n(n(O+`|[\\/\\?]`)+`*`),z=n(n(`\\/\\/`+D+M)+`|`+N+`|`+F+`|`+I),B=n(p+`\\:`+z+n(`\\?`+L)+`?`+n(`\\#`+R)+`?`),V=n(n(n(`\\/\\/`+D+M)+`|`+N+`|`+P+`|`+I)+n(`\\?`+L)+`?`+n(`\\#`+R)+`?`);return n(B+`|`+V),n(p+`\\:`+z+n(`\\?`+L)+`?`),``+p+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+F+`|`+I+`)`)+n(`\\?(`+L+`)`)+n(`\\#(`+R+`)`),``+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+P+`|`+I+`)`)+n(`\\?(`+L+`)`)+n(`\\#(`+R+`)`),``+p+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+F+`|`+I+`)`)+n(`\\?(`+L+`)`),``+n(`\\#(`+R+`)`),``+n(`(`+m+`)@`)+T+n(`\\:(`+E+`)`),{NOT_SCHEME:new RegExp(t(`[^]`,r,i,`[\\+\\-\\.]`),`g`),NOT_USERINFO:new RegExp(t(`[^\\%\\:]`,f,c),`g`),NOT_HOST:new RegExp(t(`[^\\%\\[\\]\\:]`,f,c),`g`),NOT_PATH:new RegExp(t(`[^\\%\\/\\:\\@]`,f,c),`g`),NOT_PATH_NOSCHEME:new RegExp(t(`[^\\%\\/\\@]`,f,c),`g`),NOT_QUERY:new RegExp(t(`[^\\%]`,f,c,`[\\:\\@\\/\\?]`,d),`g`),NOT_FRAGMENT:new RegExp(t(`[^\\%]`,f,c,`[\\:\\@\\/\\?]`),`g`),ESCAPE:new RegExp(t(`[^]`,f,c),`g`),UNRESERVED:new RegExp(f,`g`),OTHER_CHARS:new RegExp(t(`[^\\%]`,f,l),`g`),PCT_ENCODED:new RegExp(o,`g`),IPV4ADDRESS:RegExp(`^(`+g+`)$`),IPV6ADDRESS:RegExp(`^\\[?(`+y+`)`+n(n(`\\%25|\\%(?!`+a+`{2})`)+`(`+b+`)`)+`?\\]?$`)}}var c=s(!1),l=s(!0),u=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw TypeError(`Invalid attempt to destructure non-iterable instance`)}}(),d=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}else return Array.from(e)},f=2147483647,p=36,m=1,h=26,g=38,_=700,v=72,y=128,b=`-`,x=/^xn--/,S=/[^\0-\x7E]/,C=/[\x2E\u3002\uFF0E\uFF61]/g,w={overflow:`Overflow: input needs wider integers to process`,"not-basic":`Illegal input >= 0x80 (not a basic code point)`,"invalid-input":`Invalid input`},T=p-m,E=Math.floor,D=String.fromCharCode;function O(e){throw RangeError(w[e])}function k(e,t){for(var n=[],r=e.length;r--;)n[r]=t(e[r]);return n}function A(e,t){var n=e.split(`@`),r=``;n.length>1&&(r=n[0]+`@`,e=n[1]),e=e.replace(C,`.`);var i=k(e.split(`.`),t).join(`.`);return r+i}function j(e){for(var t=[],n=0,r=e.length;n<r;){var i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var a=e.charCodeAt(n++);(a&64512)==56320?t.push(((i&1023)<<10)+(a&1023)+65536):(t.push(i),n--)}else t.push(i)}return t}var M=function(e){return String.fromCodePoint.apply(String,d(e))},N=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:p},P=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},F=function(e,t,n){var r=0;for(e=n?E(e/_):e>>1,e+=E(e/t);e>T*h>>1;r+=p)e=E(e/T);return E(r+(T+1)*e/(e+g))},I=function(e){var t=[],n=e.length,r=0,i=y,a=v,o=e.lastIndexOf(b);o<0&&(o=0);for(var s=0;s<o;++s)e.charCodeAt(s)>=128&&O(`not-basic`),t.push(e.charCodeAt(s));for(var c=o>0?o+1:0;c<n;){for(var l=r,u=1,d=p;;d+=p){c>=n&&O(`invalid-input`);var g=N(e.charCodeAt(c++));(g>=p||g>E((f-r)/u))&&O(`overflow`),r+=g*u;var _=d<=a?m:d>=a+h?h:d-a;if(g<_)break;var x=p-_;u>E(f/x)&&O(`overflow`),u*=x}var S=t.length+1;a=F(r-l,S,l==0),E(r/S)>f-i&&O(`overflow`),i+=E(r/S),r%=S,t.splice(r++,0,i)}return String.fromCodePoint.apply(String,t)},L=function(e){var t=[];e=j(e);var n=e.length,r=y,i=0,a=v,o=!0,s=!1,c=void 0;try{for(var l=e[Symbol.iterator](),u;!(o=(u=l.next()).done);o=!0){var d=u.value;d<128&&t.push(D(d))}}catch(e){s=!0,c=e}finally{try{!o&&l.return&&l.return()}finally{if(s)throw c}}var g=t.length,_=g;for(g&&t.push(b);_<n;){var x=f,S=!0,C=!1,w=void 0;try{for(var T=e[Symbol.iterator](),k;!(S=(k=T.next()).done);S=!0){var A=k.value;A>=r&&A<x&&(x=A)}}catch(e){C=!0,w=e}finally{try{!S&&T.return&&T.return()}finally{if(C)throw w}}var M=_+1;x-r>E((f-i)/M)&&O(`overflow`),i+=(x-r)*M,r=x;var N=!0,I=!1,L=void 0;try{for(var R=e[Symbol.iterator](),z;!(N=(z=R.next()).done);N=!0){var B=z.value;if(B<r&&++i>f&&O(`overflow`),B==r){for(var V=i,H=p;;H+=p){var U=H<=a?m:H>=a+h?h:H-a;if(V<U)break;var W=V-U,G=p-U;t.push(D(P(U+W%G,0))),V=E(W/G)}t.push(D(P(V,0))),a=F(i,M,_==g),i=0,++_}}}catch(e){I=!0,L=e}finally{try{!N&&R.return&&R.return()}finally{if(I)throw L}}++i,++r}return t.join(``)},R={version:`2.1.0`,ucs2:{decode:j,encode:M},decode:I,encode:L,toASCII:function(e){return A(e,function(e){return S.test(e)?`xn--`+L(e):e})},toUnicode:function(e){return A(e,function(e){return x.test(e)?I(e.slice(4).toLowerCase()):e})}},z={};function B(e){var t=e.charCodeAt(0),n=void 0;return n=t<16?`%0`+t.toString(16).toUpperCase():t<128?`%`+t.toString(16).toUpperCase():t<2048?`%`+(t>>6|192).toString(16).toUpperCase()+`%`+(t&63|128).toString(16).toUpperCase():`%`+(t>>12|224).toString(16).toUpperCase()+`%`+(t>>6&63|128).toString(16).toUpperCase()+`%`+(t&63|128).toString(16).toUpperCase(),n}function V(e){for(var t=``,n=0,r=e.length;n<r;){var i=parseInt(e.substr(n+1,2),16);if(i<128)t+=String.fromCharCode(i),n+=3;else if(i>=194&&i<224){if(r-n>=6){var a=parseInt(e.substr(n+4,2),16);t+=String.fromCharCode((i&31)<<6|a&63)}else t+=e.substr(n,6);n+=6}else if(i>=224){if(r-n>=9){var o=parseInt(e.substr(n+4,2),16),s=parseInt(e.substr(n+7,2),16);t+=String.fromCharCode((i&15)<<12|(o&63)<<6|s&63)}else t+=e.substr(n,9);n+=9}else t+=e.substr(n,3),n+=3}return t}function H(e,t){function n(e){var n=V(e);return n.match(t.UNRESERVED)?n:e}return e.scheme&&=String(e.scheme).replace(t.PCT_ENCODED,n).toLowerCase().replace(t.NOT_SCHEME,``),e.userinfo!==void 0&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,n).replace(t.NOT_USERINFO,B).replace(t.PCT_ENCODED,i)),e.host!==void 0&&(e.host=String(e.host).replace(t.PCT_ENCODED,n).toLowerCase().replace(t.NOT_HOST,B).replace(t.PCT_ENCODED,i)),e.path!==void 0&&(e.path=String(e.path).replace(t.PCT_ENCODED,n).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,B).replace(t.PCT_ENCODED,i)),e.query!==void 0&&(e.query=String(e.query).replace(t.PCT_ENCODED,n).replace(t.NOT_QUERY,B).replace(t.PCT_ENCODED,i)),e.fragment!==void 0&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,n).replace(t.NOT_FRAGMENT,B).replace(t.PCT_ENCODED,i)),e}function U(e){return e.replace(/^0*(.*)/,`$1`)||`0`}function W(e,t){var n=u(e.match(t.IPV4ADDRESS)||[],2)[1];return n?n.split(`.`).map(U).join(`.`):e}function G(e,t){var n=u(e.match(t.IPV6ADDRESS)||[],3),r=n[1],i=n[2];if(r){for(var a=u(r.toLowerCase().split(`::`).reverse(),2),o=a[0],s=a[1],c=s?s.split(`:`).map(U):[],l=o.split(`:`).map(U),d=t.IPV4ADDRESS.test(l[l.length-1]),f=d?7:8,p=l.length-f,m=Array(f),h=0;h<f;++h)m[h]=c[h]||l[p+h]||``;d&&(m[f-1]=W(m[f-1],t));var g=m.reduce(function(e,t,n){if(!t||t===`0`){var r=e[e.length-1];r&&r.index+r.length===n?r.length++:e.push({index:n,length:1})}return e},[]).sort(function(e,t){return t.length-e.length})[0],_=void 0;if(g&&g.length>1){var v=m.slice(0,g.index),y=m.slice(g.index+g.length);_=v.join(`:`)+`::`+y.join(`:`)}else _=m.join(`:`);return i&&(_+=`%`+i),_}else return e}var ee=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,te=``.match(/(){0}/)[1]===void 0;function K(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={},r=t.iri===!1?c:l;t.reference===`suffix`&&(e=(t.scheme?t.scheme+`:`:``)+`//`+e);var i=e.match(ee);if(i){te?(n.scheme=i[1],n.userinfo=i[3],n.host=i[4],n.port=parseInt(i[5],10),n.path=i[6]||``,n.query=i[7],n.fragment=i[8],isNaN(n.port)&&(n.port=i[5])):(n.scheme=i[1]||void 0,n.userinfo=e.indexOf(`@`)===-1?void 0:i[3],n.host=e.indexOf(`//`)===-1?void 0:i[4],n.port=parseInt(i[5],10),n.path=i[6]||``,n.query=e.indexOf(`?`)===-1?void 0:i[7],n.fragment=e.indexOf(`#`)===-1?void 0:i[8],isNaN(n.port)&&(n.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?i[4]:void 0)),n.host&&=G(W(n.host,r),r),n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&!n.path&&n.query===void 0?n.reference=`same-document`:n.scheme===void 0?n.reference=`relative`:n.fragment===void 0?n.reference=`absolute`:n.reference=`uri`,t.reference&&t.reference!==`suffix`&&t.reference!==n.reference&&(n.error=n.error||`URI is not a `+t.reference+` reference.`);var a=z[(t.scheme||n.scheme||``).toLowerCase()];if(!t.unicodeSupport&&(!a||!a.unicodeSupport)){if(n.host&&(t.domainHost||a&&a.domainHost))try{n.host=R.toASCII(n.host.replace(r.PCT_ENCODED,V).toLowerCase())}catch(e){n.error=n.error||`Host's domain name can not be converted to ASCII via punycode: `+e}H(n,c)}else H(n,r);a&&a.parse&&a.parse(n,t)}else n.error=n.error||`URI can not be parsed.`;return n}function ne(e,t){var n=t.iri===!1?c:l,r=[];return e.userinfo!==void 0&&(r.push(e.userinfo),r.push(`@`)),e.host!==void 0&&r.push(G(W(String(e.host),n),n).replace(n.IPV6ADDRESS,function(e,t,n){return`[`+t+(n?`%25`+n:``)+`]`})),(typeof e.port==`number`||typeof e.port==`string`)&&(r.push(`:`),r.push(String(e.port))),r.length?r.join(``):void 0}var re=/^\.\.?\//,ie=/^\/\.(\/|$)/,ae=/^\/\.\.(\/|$)/,oe=/^\/?(?:.|\n)*?(?=\/|$)/;function q(e){for(var t=[];e.length;)if(e.match(re))e=e.replace(re,``);else if(e.match(ie))e=e.replace(ie,`/`);else if(e.match(ae))e=e.replace(ae,`/`),t.pop();else if(e===`.`||e===`..`)e=``;else{var n=e.match(oe);if(n){var r=n[0];e=e.slice(r.length),t.push(r)}else throw Error(`Unexpected dot segment condition`)}return t.join(``)}function J(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.iri?l:c,r=[],i=z[(t.scheme||e.scheme||``).toLowerCase()];if(i&&i.serialize&&i.serialize(e,t),e.host&&!n.IPV6ADDRESS.test(e.host)&&(t.domainHost||i&&i.domainHost))try{e.host=t.iri?R.toUnicode(e.host):R.toASCII(e.host.replace(n.PCT_ENCODED,V).toLowerCase())}catch(n){e.error=e.error||`Host's domain name can not be converted to `+(t.iri?`Unicode`:`ASCII`)+` via punycode: `+n}H(e,n),t.reference!==`suffix`&&e.scheme&&(r.push(e.scheme),r.push(`:`));var a=ne(e,t);if(a!==void 0&&(t.reference!==`suffix`&&r.push(`//`),r.push(a),e.path&&e.path.charAt(0)!==`/`&&r.push(`/`)),e.path!==void 0){var o=e.path;!t.absolutePath&&(!i||!i.absolutePath)&&(o=q(o)),a===void 0&&(o=o.replace(/^\/\//,`/%2F`)),r.push(o)}return e.query!==void 0&&(r.push(`?`),r.push(e.query)),e.fragment!==void 0&&(r.push(`#`),r.push(e.fragment)),r.join(``)}function se(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments[3],i={};return r||(e=K(J(e,n),n),t=K(J(t,n),n)),n||={},!n.tolerant&&t.scheme?(i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=q(t.path||``),i.query=t.query):(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0?(i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=q(t.path||``),i.query=t.query):(t.path?(t.path.charAt(0)===`/`?i.path=q(t.path):((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path?i.path=`/`+t.path:e.path?i.path=e.path.slice(0,e.path.lastIndexOf(`/`)+1)+t.path:i.path=t.path,i.path=q(i.path)),i.query=t.query):(i.path=e.path,t.query===void 0?i.query=e.query:i.query=t.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=t.fragment,i}function ce(e,t,n){var r=o({scheme:`null`},n);return J(se(K(e,r),K(t,r),r,!0),r)}function le(e,t){return typeof e==`string`?e=J(K(e,t),t):r(e)===`object`&&(e=K(J(e,t),t)),e}function ue(e,t,n){return typeof e==`string`?e=J(K(e,n),n):r(e)===`object`&&(e=J(e,n)),typeof t==`string`?t=J(K(t,n),n):r(t)===`object`&&(t=J(t,n)),e===t}function de(e,t){return e&&e.toString().replace(!t||!t.iri?c.ESCAPE:l.ESCAPE,B)}function Y(e,t){return e&&e.toString().replace(!t||!t.iri?c.PCT_ENCODED:l.PCT_ENCODED,V)}var X={scheme:`http`,domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||`HTTP URIs must have a host.`),e},serialize:function(e,t){var n=String(e.scheme).toLowerCase()===`https`;return(e.port===(n?443:80)||e.port===``)&&(e.port=void 0),e.path||=`/`,e}},fe={scheme:`https`,domainHost:X.domainHost,parse:X.parse,serialize:X.serialize};function pe(e){return typeof e.secure==`boolean`?e.secure:String(e.scheme).toLowerCase()===`wss`}var Z={scheme:`ws`,domainHost:!0,parse:function(e,t){var n=e;return n.secure=pe(n),n.resourceName=(n.path||`/`)+(n.query?`?`+n.query:``),n.path=void 0,n.query=void 0,n},serialize:function(e,t){if((e.port===(pe(e)?443:80)||e.port===``)&&(e.port=void 0),typeof e.secure==`boolean`&&(e.scheme=e.secure?`wss`:`ws`,e.secure=void 0),e.resourceName){var n=u(e.resourceName.split(`?`),2),r=n[0],i=n[1];e.path=r&&r!==`/`?r:void 0,e.query=i,e.resourceName=void 0}return e.fragment=void 0,e}},me={scheme:`wss`,domainHost:Z.domainHost,parse:Z.parse,serialize:Z.serialize},he={},ge=`[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]`,Q=`[0-9A-Fa-f]`,_e=n(n(`%[EFef]`+Q+`%`+Q+Q+`%`+Q+Q)+`|`+n(`%[89A-Fa-f]`+Q+`%`+Q+Q)+`|`+n(`%`+Q+Q)),ve="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",ye=t(`[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]`,`[\\"\\\\]`),be=`[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]`,xe=new RegExp(ge,`g`),$=new RegExp(_e,`g`),Se=new RegExp(t(`[^]`,ve,`[\\.]`,`[\\"]`,ye),`g`),Ce=new RegExp(t(`[^]`,ge,be),`g`),we=Ce;function Te(e){var t=V(e);return t.match(xe)?t:e}var Ee={scheme:`mailto`,parse:function(e,t){var n=e,r=n.to=n.path?n.path.split(`,`):[];if(n.path=void 0,n.query){for(var i=!1,a={},o=n.query.split(`&`),s=0,c=o.length;s<c;++s){var l=o[s].split(`=`);switch(l[0]){case`to`:for(var u=l[1].split(`,`),d=0,f=u.length;d<f;++d)r.push(u[d]);break;case`subject`:n.subject=Y(l[1],t);break;case`body`:n.body=Y(l[1],t);break;default:i=!0,a[Y(l[0],t)]=Y(l[1],t);break}}i&&(n.headers=a)}n.query=void 0;for(var p=0,m=r.length;p<m;++p){var h=r[p].split(`@`);if(h[0]=Y(h[0]),t.unicodeSupport)h[1]=Y(h[1],t).toLowerCase();else try{h[1]=R.toASCII(Y(h[1],t).toLowerCase())}catch(e){n.error=n.error||`Email address's domain name can not be converted to ASCII via punycode: `+e}r[p]=h.join(`@`)}return n},serialize:function(e,t){var n=e,r=a(e.to);if(r){for(var o=0,s=r.length;o<s;++o){var c=String(r[o]),l=c.lastIndexOf(`@`),u=c.slice(0,l).replace($,Te).replace($,i).replace(Se,B),d=c.slice(l+1);try{d=t.iri?R.toUnicode(d):R.toASCII(Y(d,t).toLowerCase())}catch(e){n.error=n.error||`Email address's domain name can not be converted to `+(t.iri?`Unicode`:`ASCII`)+` via punycode: `+e}r[o]=u+`@`+d}n.path=r.join(`,`)}var f=e.headers=e.headers||{};e.subject&&(f.subject=e.subject),e.body&&(f.body=e.body);var p=[];for(var m in f)f[m]!==he[m]&&p.push(m.replace($,Te).replace($,i).replace(Ce,B)+`=`+f[m].replace($,Te).replace($,i).replace(we,B));return p.length&&(n.query=p.join(`&`)),n}},De=/^([^\:]+)\:(.*)/,Oe={scheme:`urn`,parse:function(e,t){var n=e.path&&e.path.match(De),r=e;if(n){var i=t.scheme||r.scheme||`urn`,a=n[1].toLowerCase(),o=n[2],s=z[i+`:`+(t.nid||a)];r.nid=a,r.nss=o,r.path=void 0,s&&(r=s.parse(r,t))}else r.error=r.error||`URN can not be parsed.`;return r},serialize:function(e,t){var n=t.scheme||e.scheme||`urn`,r=e.nid,i=z[n+`:`+(t.nid||r)];i&&(e=i.serialize(e,t));var a=e,o=e.nss;return a.path=(r||t.nid)+`:`+o,a}},ke=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,Ae={scheme:`urn:uuid`,parse:function(e,t){var n=e;return n.uuid=n.nss,n.nss=void 0,!t.tolerant&&(!n.uuid||!n.uuid.match(ke))&&(n.error=n.error||`UUID is not valid.`),n},serialize:function(e,t){var n=e;return n.nss=(e.uuid||``).toLowerCase(),n}};z[X.scheme]=X,z[fe.scheme]=fe,z[Z.scheme]=Z,z[me.scheme]=me,z[Ee.scheme]=Ee,z[Oe.scheme]=Oe,z[Ae.scheme]=Ae,e.SCHEMES=z,e.pctEncChar=B,e.pctDecChars=V,e.parse=K,e.removeDotSegments=q,e.serialize=J,e.resolveComponents=se,e.resolve=ce,e.normalize=le,e.equal=ue,e.escapeComponent=de,e.unescapeComponent=Y,Object.defineProperty(e,`__esModule`,{value:!0})}))})),f=u(d(),1);let p=(0,t.createContext)({url:`/`,store:`url`});function m(e){return e.canIntercept&&!e.downloadRequest}let h=({children:e,store:n=`url`,scoped:r,shouldHandle:i=m})=>{let[a,o]=(0,t.useState)(null),[s,c]=(0,t.useState)(()=>({store:n,url:window.location.href})),l=(0,t.useMemo)(()=>e=>{let t=e.sourceElement;return a&&t&&!a.contains(t)?!0:!i(e)},[i,a]);(0,t.useEffect)(()=>{let e=e=>{if(l(e))return;let t=e.destination.url;n===`memory`?(e.preventDefault(),c(r=>{if(e.sourceElement instanceof HTMLAnchorElement&&e.navigationType===`push`){let n=e.sourceElement.getAttribute(`href`);n&&!n.startsWith(`/`)&&!/^[a-z]+:\/\//i.test(n)&&(t=f.default.resolve(r.url,n))}return{...r,url:t,store:n}})):e.intercept({async handler(){c({url:t,store:n})}})};return navigation?.addEventListener(`navigate`,e),()=>navigation?.removeEventListener(`navigate`,e)},[l,r,n]);let u=(0,t.useMemo)(()=>({...s,setState:c}),[s]);return(0,t.createElement)(p.Provider,{value:u},r?(0,t.createElement)(`div`,{ref:o},e):e)};function g(e){let t={},n=new Promise((e,n)=>{t.resolve=e,t.reject=n});return n.resolve=t.resolve,n.reject=t.reject,e&&n.catch(()=>{}),n}var _=u(d(),1);function v(){let{setState:e}=(0,t.useContext)(p);return(0,t.useMemo)(()=>{if(!e||!navigation)return navigation;let t=(t,n)=>{let r={committed:g(!0),finished:g(!0)},i=({committed:e,finished:t})=>{e.then(r.committed.resolve,r.committed.reject),t.then(r.finished.resolve,r.finished.reject)};return e(e=>(Promise.resolve().then(()=>{try{i(navigation.navigate(_.default.resolve(e.url,t),n))}catch{i(navigation.navigate(t,n))}}),e)),r};return new Proxy(navigation,{get(e,n,r){if(n===`navigate`)return t;let i=Reflect.get(e,n,r);return typeof i==`function`?i.bind(e):i}})},[e])}var y=u(d(),1),b=`fakeprotodonotuse://`;function x(e,t){let n=y.default.parse(y.default.resolve(t,e));return n.scheme=void 0,n.host=void 0,n.port=void 0,y.default.serialize(n)}function S(e,n){let r=(0,t.useContext)(p),i=n??r.url;return(0,t.useMemo)(()=>{if(typeof e==`string`)return x(e,i);if(typeof e==`function`){let t=new URL(i,b);return x((e(t)||t).href,i)}return x(``,i)},[e,i])}var C=u(d(),1);function w(e){return new URLSearchParams(C.default.parse(e||``).query)}function T(e,n=!1){let r=S();return(0,t.useMemo)(()=>{try{let t=w(r);return n?t.getAll(e)||[]:t.get(e)}catch{return null}},[r,n,e])}function E(e,t,n){let r=Object.fromEntries((t||[]).map(e=>[e,null]).concat((n||[]).map(e=>[e,[]])));return e.forEach((e,i)=>{if(!(t&&!(t.includes(i)||n?.includes(i))))if(!r[i])r[i]=e;else if(t?.includes(i))return;else Array.isArray(r[i])?r[i].push(e):r[i]=[r[i],e]}),r}function D(e,n){let r=S();return(0,t.useMemo)(()=>{let t=w(r);return Array.isArray(e)?E(t,e,n):(e||E)(t)},[r,e,n])}function O(e,t,n){return S(n=>t===null?n.searchParams.delete(e):n.searchParams.set(e,t),n)}function k(e,t){return S(t=>{for(let[n,r]of Object.entries(e))r===null?t.searchParams.delete(n):Array.isArray(r)?(t.searchParams.delete(n),r.forEach(e=>t.searchParams.append(n,e))):t.searchParams.set(n,r);return t},t)}e.NavigationContext=p,e.NavigationProvider=h,e.mapQueryParams=E,e.parseSearchParams=w,e.resolveLocation=x,e.useLocation=S,e.useLocationWithParam=O,e.useLocationWithParams=k,e.useNavigate=v,e.useQueryParam=T,e.useQueryParams=D});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useNavigate(): Navigation | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Resolution<T> = {
|
|
2
|
+
resolve: (value: T) => void;
|
|
3
|
+
reject: (reason?: unknown) => void;
|
|
4
|
+
};
|
|
5
|
+
type Future<T> = Promise<T> & Resolution<T>;
|
|
6
|
+
/**
|
|
7
|
+
* Returns a Promise that can be resolved or rejected from outside.
|
|
8
|
+
* @param suppressUncaught If true, adds a dummy catch handler to bypass browsers' uncaught error logging.
|
|
9
|
+
*/
|
|
10
|
+
export declare function future<T>(suppressUncaught?: boolean): Future<T>;
|
|
11
|
+
export {};
|
package/package.json
CHANGED
|
@@ -19,9 +19,16 @@
|
|
|
19
19
|
"types": "./dist/index.d.ts",
|
|
20
20
|
"import": "./dist/use-navigation-api.es.js",
|
|
21
21
|
"require": "./dist/use-navigation-api.umd.js"
|
|
22
|
-
}
|
|
22
|
+
},
|
|
23
|
+
"./src": "./src/index.ts",
|
|
24
|
+
"./src/*": "./src/*"
|
|
23
25
|
},
|
|
24
|
-
"
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"src",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"version": "0.4.0",
|
|
25
32
|
"type": "module",
|
|
26
33
|
"scripts": {
|
|
27
34
|
"build": "tsc -b && vite build",
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from "./navigationProvider";
|
|
2
2
|
export * from "./useNavigate";
|
|
3
|
-
export * from "./location/useLocation";
|
|
4
3
|
export * from "./location/useQueryParam";
|
|
4
|
+
export * from "./location/useQueryParams";
|
|
5
|
+
export * from "./location/useLocation";
|
|
5
6
|
export * from "./location/useLocationWithParam";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useLocation } from "src/location/useLocation.ts";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { parseSearchParams } from "src/location/useQueryParam.ts";
|
|
4
|
+
|
|
5
|
+
export type ParamsMapper<T> = (params: URLSearchParams) => T;
|
|
6
|
+
|
|
7
|
+
export function mapQueryParams(
|
|
8
|
+
params: URLSearchParams,
|
|
9
|
+
keys?: string[],
|
|
10
|
+
arrayKeys?: string[],
|
|
11
|
+
) {
|
|
12
|
+
const result: Record<string, string | string[] | null> = Object.fromEntries(
|
|
13
|
+
(keys || [])
|
|
14
|
+
.map((key) => [key, null as string | string[] | null])
|
|
15
|
+
.concat((arrayKeys || []).map((key) => [key, []])),
|
|
16
|
+
);
|
|
17
|
+
params.forEach((value, key) => {
|
|
18
|
+
if (keys && !(keys.includes(key) || arrayKeys?.includes(key))) return;
|
|
19
|
+
if (!result[key]) result[key] = value;
|
|
20
|
+
else if (keys?.includes(key)) return;
|
|
21
|
+
else if (Array.isArray(result[key])) result[key].push(value);
|
|
22
|
+
else result[key] = [result[key] as string, value];
|
|
23
|
+
});
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns the first value of each query parameter found in the url.
|
|
29
|
+
*/
|
|
30
|
+
export function useQueryParams(): Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the first value of each query parameter found in keys, and all values of each parameter found in arrayKeys.
|
|
33
|
+
* Note that typescript types of K and M should not overlap - manual typing or casting variables to `as const` may be required.
|
|
34
|
+
*/
|
|
35
|
+
export function useQueryParams<K extends string, M extends string>(
|
|
36
|
+
keys: K[],
|
|
37
|
+
arrayKeys?: M[],
|
|
38
|
+
): Record<K, string | null> & Record<M, string[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Maps SearchParams to a custom type using the provided mapper function.
|
|
41
|
+
*/
|
|
42
|
+
export function useQueryParams<T>(mapper: ParamsMapper<T>): T;
|
|
43
|
+
export function useQueryParams(
|
|
44
|
+
mapping?: string[] | ParamsMapper<unknown>,
|
|
45
|
+
arrayKeys?: string[],
|
|
46
|
+
) {
|
|
47
|
+
const location = useLocation();
|
|
48
|
+
return useMemo(() => {
|
|
49
|
+
const params = parseSearchParams(location);
|
|
50
|
+
return Array.isArray(mapping)
|
|
51
|
+
? mapQueryParams(params, mapping, arrayKeys)
|
|
52
|
+
: (mapping || mapQueryParams)(params);
|
|
53
|
+
}, [location, mapping, arrayKeys]);
|
|
54
|
+
}
|
package/eslint.config.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import js from "@eslint/js";
|
|
2
|
-
import globals from "globals";
|
|
3
|
-
import reactHooks from "eslint-plugin-react-hooks";
|
|
4
|
-
import reactRefresh from "eslint-plugin-react-refresh";
|
|
5
|
-
import tseslint from "typescript-eslint";
|
|
6
|
-
import { defineConfig, globalIgnores } from "eslint/config";
|
|
7
|
-
|
|
8
|
-
export default defineConfig([
|
|
9
|
-
globalIgnores(["dist"]),
|
|
10
|
-
{
|
|
11
|
-
files: ["**/*.{ts,tsx}"],
|
|
12
|
-
extends: [
|
|
13
|
-
js.configs.recommended,
|
|
14
|
-
tseslint.configs.recommended,
|
|
15
|
-
reactHooks.configs.flat.recommended,
|
|
16
|
-
],
|
|
17
|
-
languageOptions: {
|
|
18
|
-
ecmaVersion: 2020,
|
|
19
|
-
globals: globals.browser,
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
]);
|
package/tsconfig.app.json
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
4
|
-
"target": "ES2022",
|
|
5
|
-
"useDefineForClassFields": true,
|
|
6
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
7
|
-
"module": "ESNext",
|
|
8
|
-
"types": ["vite/client"],
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
|
|
11
|
-
/* Bundler mode */
|
|
12
|
-
"moduleResolution": "bundler",
|
|
13
|
-
"allowImportingTsExtensions": true,
|
|
14
|
-
"verbatimModuleSyntax": true,
|
|
15
|
-
"moduleDetection": "force",
|
|
16
|
-
"noEmit": true,
|
|
17
|
-
"jsx": "react-jsx",
|
|
18
|
-
|
|
19
|
-
/* Linting */
|
|
20
|
-
"strict": true,
|
|
21
|
-
"noUnusedLocals": true,
|
|
22
|
-
"noUnusedParameters": true,
|
|
23
|
-
"erasableSyntaxOnly": true,
|
|
24
|
-
"noFallthroughCasesInSwitch": true,
|
|
25
|
-
"noUncheckedSideEffectImports": true,
|
|
26
|
-
|
|
27
|
-
"baseUrl": "."
|
|
28
|
-
},
|
|
29
|
-
"include": ["src"]
|
|
30
|
-
}
|
package/tsconfig.json
DELETED
package/tsconfig.node.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
4
|
-
"target": "ES2023",
|
|
5
|
-
"lib": ["ES2023"],
|
|
6
|
-
"module": "ESNext",
|
|
7
|
-
"types": ["node"],
|
|
8
|
-
"skipLibCheck": true,
|
|
9
|
-
|
|
10
|
-
/* Bundler mode */
|
|
11
|
-
"moduleResolution": "bundler",
|
|
12
|
-
"allowImportingTsExtensions": true,
|
|
13
|
-
"verbatimModuleSyntax": true,
|
|
14
|
-
"moduleDetection": "force",
|
|
15
|
-
"noEmit": true,
|
|
16
|
-
|
|
17
|
-
/* Linting */
|
|
18
|
-
"strict": true,
|
|
19
|
-
"noUnusedLocals": true,
|
|
20
|
-
"noUnusedParameters": true,
|
|
21
|
-
"erasableSyntaxOnly": true,
|
|
22
|
-
"noFallthroughCasesInSwitch": true,
|
|
23
|
-
"noUncheckedSideEffectImports": true
|
|
24
|
-
},
|
|
25
|
-
"include": ["vite.config.ts"]
|
|
26
|
-
}
|
package/vite.config.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from "vite";
|
|
2
|
-
import { resolve } from "path";
|
|
3
|
-
import dts from "unplugin-dts/vite";
|
|
4
|
-
import react from "@vitejs/plugin-react";
|
|
5
|
-
import tsconfigPaths from "vite-tsconfig-paths";
|
|
6
|
-
|
|
7
|
-
export default defineConfig({
|
|
8
|
-
build: {
|
|
9
|
-
lib: {
|
|
10
|
-
entry: resolve(__dirname, "src/index.ts"),
|
|
11
|
-
name: "useNavigationAPI",
|
|
12
|
-
fileName: (format) => `use-navigation-api.${format}.js`,
|
|
13
|
-
},
|
|
14
|
-
rollupOptions: {
|
|
15
|
-
external: ["react", "react-dom", "react/jsx-runtime"],
|
|
16
|
-
output: {
|
|
17
|
-
globals: {
|
|
18
|
-
react: "React",
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
plugins: [
|
|
24
|
-
react(),
|
|
25
|
-
dts({ tsconfigPath: "./tsconfig.app.json" }),
|
|
26
|
-
tsconfigPaths(),
|
|
27
|
-
],
|
|
28
|
-
});
|