@welshman/lib 0.0.1
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/README.md +11 -0
- package/build/Deferred.cjs +13 -0
- package/build/Deferred.cjs.map +1 -0
- package/build/Deferred.d.ts +5 -0
- package/build/Deferred.mjs +9 -0
- package/build/Deferred.mjs.map +1 -0
- package/build/Emitter.cjs +13 -0
- package/build/Emitter.cjs.map +1 -0
- package/build/Emitter.d.ts +4 -0
- package/build/Emitter.mjs +9 -0
- package/build/Emitter.mjs.map +1 -0
- package/build/Fluent.cjs +47 -0
- package/build/Fluent.cjs.map +1 -0
- package/build/Fluent.d.ts +34 -0
- package/build/Fluent.mjs +43 -0
- package/build/Fluent.mjs.map +1 -0
- package/build/LRUCache.cjs +49 -0
- package/build/LRUCache.cjs.map +1 -0
- package/build/LRUCache.d.ts +19 -0
- package/build/LRUCache.mjs +44 -0
- package/build/LRUCache.mjs.map +1 -0
- package/build/Store.cjs +220 -0
- package/build/Store.cjs.map +1 -0
- package/build/Store.d.ts +105 -0
- package/build/Store.mjs +205 -0
- package/build/Store.mjs.map +1 -0
- package/build/Tools.cjs +189 -0
- package/build/Tools.cjs.map +1 -0
- package/build/Tools.d.ts +61 -0
- package/build/Tools.mjs +141 -0
- package/build/Tools.mjs.map +1 -0
- package/build/Worker.cjs +67 -0
- package/build/Worker.cjs.map +1 -0
- package/build/Worker.d.ts +17 -0
- package/build/Worker.mjs +63 -0
- package/build/Worker.mjs.map +1 -0
- package/build/index.cjs +30 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.ts +8 -0
- package/build/index.mjs +9 -0
- package/build/index.mjs.map +1 -0
- package/build/normalize-url/index.cjs +254 -0
- package/build/normalize-url/index.cjs.map +1 -0
- package/build/normalize-url/index.d.ts +285 -0
- package/build/normalize-url/index.mjs +251 -0
- package/build/normalize-url/index.mjs.map +1 -0
- package/package.json +40 -0
package/build/Tools.mjs
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { throttle } from 'throttle-debounce';
|
|
2
|
+
import { bech32, utf8 } from "@scure/base";
|
|
3
|
+
export const isNil = (x) => [null, undefined].includes(x);
|
|
4
|
+
// Regular old utils
|
|
5
|
+
export const now = () => Math.round(Date.now() / 1000);
|
|
6
|
+
export const first = (xs, ...args) => xs[0];
|
|
7
|
+
export const last = (xs, ...args) => xs[xs.length - 1];
|
|
8
|
+
export const identity = (x) => x;
|
|
9
|
+
export const inc = (x) => (x || 0) + 1;
|
|
10
|
+
export const dec = (x) => (x || 0) - 1;
|
|
11
|
+
export const max = (xs) => xs.reduce((a, b) => Math.max(a, b), 0);
|
|
12
|
+
export const min = (xs) => xs.reduce((a, b) => Math.min(a, b), 0);
|
|
13
|
+
export const sum = (xs) => xs.reduce((a, b) => a + b, 0);
|
|
14
|
+
export const avg = (xs) => sum(xs) / xs.length;
|
|
15
|
+
export const drop = (n, xs) => xs.slice(n);
|
|
16
|
+
export const take = (n, xs) => xs.slice(0, n);
|
|
17
|
+
export const omit = (ks, x) => {
|
|
18
|
+
const r = { ...x };
|
|
19
|
+
for (const k of ks) {
|
|
20
|
+
delete r[k];
|
|
21
|
+
}
|
|
22
|
+
return r;
|
|
23
|
+
};
|
|
24
|
+
export const pick = (ks, x) => {
|
|
25
|
+
const r = { ...x };
|
|
26
|
+
for (const k of Object.keys(x)) {
|
|
27
|
+
if (!ks.includes(k)) {
|
|
28
|
+
delete r[k];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return r;
|
|
32
|
+
};
|
|
33
|
+
export function* range(a, b, step = 1) {
|
|
34
|
+
for (let i = a; i < b; i += step) {
|
|
35
|
+
yield i;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export const between = (low, high, n) => n > low && n < high;
|
|
39
|
+
export const randomId = () => Math.random().toString().slice(2);
|
|
40
|
+
export const stripProtocol = (url) => url.replace(/.*:\/\//, "");
|
|
41
|
+
// Curried utils
|
|
42
|
+
export const nth = (i) => (xs, ...args) => xs[i];
|
|
43
|
+
export const nthEq = (i, v) => (xs, ...args) => xs[i] === v;
|
|
44
|
+
export const eq = (v) => (x) => x === v;
|
|
45
|
+
export const ne = (v) => (x) => x !== v;
|
|
46
|
+
export const prop = (k) => (x) => x[k];
|
|
47
|
+
export const hash = (s) => Math.abs(s.split("").reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0)).toString();
|
|
48
|
+
// Collections
|
|
49
|
+
export const splitAt = (n, xs) => [xs.slice(0, n), xs.slice(n)];
|
|
50
|
+
export const choice = (xs) => xs[Math.floor(xs.length * Math.random())];
|
|
51
|
+
export const shuffle = (xs) => Array.from(xs).sort(() => Math.random() > 0.5 ? 1 : -1);
|
|
52
|
+
export const isIterable = (x) => Symbol.iterator in Object(x);
|
|
53
|
+
export const toIterable = (x) => isIterable(x) ? x : [x];
|
|
54
|
+
export const ensurePlural = (x) => (x instanceof Array ? x : [x]);
|
|
55
|
+
export const flatten = (xs) => xs.flatMap(identity);
|
|
56
|
+
export const uniq = (xs) => Array.from(new Set(xs));
|
|
57
|
+
export const uniqBy = (f, xs) => {
|
|
58
|
+
const s = new Set();
|
|
59
|
+
const r = [];
|
|
60
|
+
for (const x of xs) {
|
|
61
|
+
const k = f(x);
|
|
62
|
+
if (s.has(k)) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
s.add(k);
|
|
66
|
+
r.push(x);
|
|
67
|
+
}
|
|
68
|
+
return r;
|
|
69
|
+
};
|
|
70
|
+
export const sortBy = (f, xs) => xs.sort((a, b) => f(a) - f(b));
|
|
71
|
+
export const groupBy = (f, xs) => {
|
|
72
|
+
const r = {};
|
|
73
|
+
for (const x of xs) {
|
|
74
|
+
const k = f(x);
|
|
75
|
+
if (!r[k]) {
|
|
76
|
+
r[k] = [];
|
|
77
|
+
}
|
|
78
|
+
r[k].push(x);
|
|
79
|
+
}
|
|
80
|
+
return r;
|
|
81
|
+
};
|
|
82
|
+
export const sample = (n, xs) => {
|
|
83
|
+
const result = [];
|
|
84
|
+
const limit = Math.min(n, xs.length);
|
|
85
|
+
for (let i = 0; i < limit; i++) {
|
|
86
|
+
result.push(xs.splice(Math.floor(xs.length * Math.random()), 1)[0]);
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
};
|
|
90
|
+
export const initArray = (n, f) => {
|
|
91
|
+
const result = [];
|
|
92
|
+
for (let i = 0; i < n; i++) {
|
|
93
|
+
result.push(f());
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
};
|
|
97
|
+
export const chunk = (chunkLength, xs) => {
|
|
98
|
+
const result = [];
|
|
99
|
+
const current = [];
|
|
100
|
+
for (const item of xs) {
|
|
101
|
+
if (current.length < chunkLength) {
|
|
102
|
+
current.push(item);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
result.push(current.splice(0));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (current.length > 0) {
|
|
109
|
+
result.push(current);
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
};
|
|
113
|
+
export const chunks = (n, xs) => {
|
|
114
|
+
const result = initArray(n, () => []);
|
|
115
|
+
for (let i = 0; i < xs.length; i++) {
|
|
116
|
+
result[i % n].push(xs[i]);
|
|
117
|
+
}
|
|
118
|
+
return result;
|
|
119
|
+
};
|
|
120
|
+
export const batch = (t, f) => {
|
|
121
|
+
const xs = [];
|
|
122
|
+
const cb = throttle(t, () => xs.length > 0 && f(xs.splice(0)));
|
|
123
|
+
return (x) => {
|
|
124
|
+
xs.push(x);
|
|
125
|
+
cb();
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
export const addToMapKey = (m, k, v) => {
|
|
129
|
+
const a = m.get(k) || new Set();
|
|
130
|
+
a.add(v);
|
|
131
|
+
m.set(k, a);
|
|
132
|
+
};
|
|
133
|
+
export const pushToMapKey = (m, k, v) => {
|
|
134
|
+
const a = m.get(k) || [];
|
|
135
|
+
a.push(v);
|
|
136
|
+
m.set(k, a);
|
|
137
|
+
};
|
|
138
|
+
// Random obscure stuff
|
|
139
|
+
export const hexToBech32 = (prefix, url) => bech32.encode(prefix, bech32.toWords(utf8.decode(url)), false);
|
|
140
|
+
export const bech32ToHex = (b32) => utf8.encode(bech32.fromWords(bech32.decode(b32, false).words));
|
|
141
|
+
//# sourceMappingURL=Tools.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tools.mjs","sourceRoot":"","sources":["../Tools.ts"],"names":[],"mappings":"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"}
|
package/build/Worker.cjs
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var _Worker_doWork, _Worker_enqueueWork;
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Worker = void 0;
|
|
10
|
+
const ANY = Symbol("worker/ANY");
|
|
11
|
+
class Worker {
|
|
12
|
+
constructor(opts = {}) {
|
|
13
|
+
this.opts = opts;
|
|
14
|
+
this.buffer = [];
|
|
15
|
+
this.handlers = new Map();
|
|
16
|
+
_Worker_doWork.set(this, async () => {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
for (let i = 0; i < 50; i++) {
|
|
19
|
+
if (this.buffer.length === 0) {
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
// Pop the buffer one at a time so handle can modify the queue
|
|
23
|
+
const [message] = this.buffer.splice(0, 1);
|
|
24
|
+
if ((_b = (_a = this.opts).shouldDefer) === null || _b === void 0 ? void 0 : _b.call(_a, message)) {
|
|
25
|
+
this.buffer.push(message);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
for (const handler of this.handlers.get(ANY) || []) {
|
|
29
|
+
await handler(message);
|
|
30
|
+
}
|
|
31
|
+
if (this.opts.getKey) {
|
|
32
|
+
const k = this.opts.getKey(message);
|
|
33
|
+
for (const handler of this.handlers.get(k) || []) {
|
|
34
|
+
await handler(message);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.timeout = undefined;
|
|
40
|
+
__classPrivateFieldGet(this, _Worker_enqueueWork, "f").call(this);
|
|
41
|
+
});
|
|
42
|
+
_Worker_enqueueWork.set(this, () => {
|
|
43
|
+
if (!this.timeout && this.buffer.length > 0) {
|
|
44
|
+
this.timeout = setTimeout(__classPrivateFieldGet(this, _Worker_doWork, "f"), 50);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
this.push = (message) => {
|
|
48
|
+
this.buffer.push(message);
|
|
49
|
+
__classPrivateFieldGet(this, _Worker_enqueueWork, "f").call(this);
|
|
50
|
+
};
|
|
51
|
+
this.addHandler = (k, handler) => {
|
|
52
|
+
this.handlers.set(k, (this.handlers.get(k) || []).concat(handler));
|
|
53
|
+
};
|
|
54
|
+
this.addGlobalHandler = (handler) => {
|
|
55
|
+
this.addHandler(ANY, handler);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
clear() {
|
|
59
|
+
this.buffer = [];
|
|
60
|
+
}
|
|
61
|
+
stop() {
|
|
62
|
+
clearTimeout(this.timeout);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.Worker = Worker;
|
|
66
|
+
_Worker_doWork = new WeakMap(), _Worker_enqueueWork = new WeakMap();
|
|
67
|
+
//# sourceMappingURL=Worker.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Worker.cjs","sourceRoot":"","sources":["../Worker.ts"],"names":[],"mappings":";;;;;;;;;AAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAOhC,MAAa,MAAM;IAKjB,YAAqB,OAAsB,EAAE;QAAxB,SAAI,GAAJ,IAAI,CAAoB;QAJ7C,WAAM,GAAQ,EAAE,CAAA;QAChB,aAAQ,GAAoC,IAAI,GAAG,EAAE,CAAA;QAKrD,yBAAU,KAAK,IAAI,EAAE;;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5B,MAAK;iBACN;gBAED,8DAA8D;gBAC9D,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAE1C,IAAI,MAAA,MAAA,IAAI,CAAC,IAAI,EAAC,WAAW,mDAAG,OAAO,CAAC,EAAE;oBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBAC1B;qBAAM;oBACL,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;wBAClD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;qBACvB;oBAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;wBACpB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;wBAEnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;4BAChD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;yBACvB;qBACF;iBACF;aACF;YAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;YACxB,uBAAA,IAAI,2BAAa,MAAjB,IAAI,CAAe,CAAA;QACrB,CAAC,EAAA;QAED,8BAAe,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,uBAAA,IAAI,sBAAQ,EAAE,EAAE,CAAC,CAAA;aAC5C;QACH,CAAC,EAAA;QAED,SAAI,GAAG,CAAC,OAAU,EAAE,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACzB,uBAAA,IAAI,2BAAa,MAAjB,IAAI,CAAe,CAAA;QACrB,CAAC,CAAA;QAED,eAAU,GAAG,CAAC,CAAM,EAAE,OAA6B,EAAE,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACpE,CAAC,CAAA;QAED,qBAAgB,GAAG,CAAC,OAA6B,EAAE,EAAE;YACnD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC/B,CAAC,CAAA;IAjD+C,CAAC;IAmDjD,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,IAAI;QACF,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;CACF;AA/DD,wBA+DC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type WorkerOpts<T> = {
|
|
2
|
+
getKey?: (x: T) => any;
|
|
3
|
+
shouldDefer?: (x: T) => boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare class Worker<T> {
|
|
6
|
+
#private;
|
|
7
|
+
readonly opts: WorkerOpts<T>;
|
|
8
|
+
buffer: T[];
|
|
9
|
+
handlers: Map<any, Array<(x: T) => void>>;
|
|
10
|
+
timeout: number | undefined;
|
|
11
|
+
constructor(opts?: WorkerOpts<T>);
|
|
12
|
+
push: (message: T) => void;
|
|
13
|
+
addHandler: (k: any, handler: (message: T) => void) => void;
|
|
14
|
+
addGlobalHandler: (handler: (message: T) => void) => void;
|
|
15
|
+
clear(): void;
|
|
16
|
+
stop(): void;
|
|
17
|
+
}
|
package/build/Worker.mjs
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _Worker_doWork, _Worker_enqueueWork;
|
|
7
|
+
const ANY = Symbol("worker/ANY");
|
|
8
|
+
export class Worker {
|
|
9
|
+
constructor(opts = {}) {
|
|
10
|
+
this.opts = opts;
|
|
11
|
+
this.buffer = [];
|
|
12
|
+
this.handlers = new Map();
|
|
13
|
+
_Worker_doWork.set(this, async () => {
|
|
14
|
+
var _a, _b;
|
|
15
|
+
for (let i = 0; i < 50; i++) {
|
|
16
|
+
if (this.buffer.length === 0) {
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
// Pop the buffer one at a time so handle can modify the queue
|
|
20
|
+
const [message] = this.buffer.splice(0, 1);
|
|
21
|
+
if ((_b = (_a = this.opts).shouldDefer) === null || _b === void 0 ? void 0 : _b.call(_a, message)) {
|
|
22
|
+
this.buffer.push(message);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
for (const handler of this.handlers.get(ANY) || []) {
|
|
26
|
+
await handler(message);
|
|
27
|
+
}
|
|
28
|
+
if (this.opts.getKey) {
|
|
29
|
+
const k = this.opts.getKey(message);
|
|
30
|
+
for (const handler of this.handlers.get(k) || []) {
|
|
31
|
+
await handler(message);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
this.timeout = undefined;
|
|
37
|
+
__classPrivateFieldGet(this, _Worker_enqueueWork, "f").call(this);
|
|
38
|
+
});
|
|
39
|
+
_Worker_enqueueWork.set(this, () => {
|
|
40
|
+
if (!this.timeout && this.buffer.length > 0) {
|
|
41
|
+
this.timeout = setTimeout(__classPrivateFieldGet(this, _Worker_doWork, "f"), 50);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
this.push = (message) => {
|
|
45
|
+
this.buffer.push(message);
|
|
46
|
+
__classPrivateFieldGet(this, _Worker_enqueueWork, "f").call(this);
|
|
47
|
+
};
|
|
48
|
+
this.addHandler = (k, handler) => {
|
|
49
|
+
this.handlers.set(k, (this.handlers.get(k) || []).concat(handler));
|
|
50
|
+
};
|
|
51
|
+
this.addGlobalHandler = (handler) => {
|
|
52
|
+
this.addHandler(ANY, handler);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
clear() {
|
|
56
|
+
this.buffer = [];
|
|
57
|
+
}
|
|
58
|
+
stop() {
|
|
59
|
+
clearTimeout(this.timeout);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
_Worker_doWork = new WeakMap(), _Worker_enqueueWork = new WeakMap();
|
|
63
|
+
//# sourceMappingURL=Worker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Worker.mjs","sourceRoot":"","sources":["../Worker.ts"],"names":[],"mappings":";;;;;;AAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAOhC,MAAM,OAAO,MAAM;IAKjB,YAAqB,OAAsB,EAAE;QAAxB,SAAI,GAAJ,IAAI,CAAoB;QAJ7C,WAAM,GAAQ,EAAE,CAAA;QAChB,aAAQ,GAAoC,IAAI,GAAG,EAAE,CAAA;QAKrD,yBAAU,KAAK,IAAI,EAAE;;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5B,MAAK;iBACN;gBAED,8DAA8D;gBAC9D,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAE1C,IAAI,MAAA,MAAA,IAAI,CAAC,IAAI,EAAC,WAAW,mDAAG,OAAO,CAAC,EAAE;oBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBAC1B;qBAAM;oBACL,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;wBAClD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;qBACvB;oBAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;wBACpB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;wBAEnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;4BAChD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;yBACvB;qBACF;iBACF;aACF;YAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;YACxB,uBAAA,IAAI,2BAAa,MAAjB,IAAI,CAAe,CAAA;QACrB,CAAC,EAAA;QAED,8BAAe,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,uBAAA,IAAI,sBAAQ,EAAE,EAAE,CAAC,CAAA;aAC5C;QACH,CAAC,EAAA;QAED,SAAI,GAAG,CAAC,OAAU,EAAE,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACzB,uBAAA,IAAI,2BAAa,MAAjB,IAAI,CAAe,CAAA;QACrB,CAAC,CAAA;QAED,eAAU,GAAG,CAAC,CAAM,EAAE,OAA6B,EAAE,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACpE,CAAC,CAAA;QAED,qBAAgB,GAAG,CAAC,OAA6B,EAAE,EAAE;YACnD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC/B,CAAC,CAAA;IAjD+C,CAAC;IAmDjD,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,IAAI;QACF,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;CACF"}
|
package/build/index.cjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.normalizeUrl = void 0;
|
|
21
|
+
__exportStar(require("./Deferred.cjs"), exports);
|
|
22
|
+
__exportStar(require("./Emitter.cjs"), exports);
|
|
23
|
+
__exportStar(require("./Fluent.cjs"), exports);
|
|
24
|
+
__exportStar(require("./LRUCache.cjs"), exports);
|
|
25
|
+
__exportStar(require("./Store.cjs"), exports);
|
|
26
|
+
__exportStar(require("./Tools.cjs"), exports);
|
|
27
|
+
__exportStar(require("./Worker.cjs"), exports);
|
|
28
|
+
var normalize_url_1 = require("./normalize-url/index.cjs");
|
|
29
|
+
Object.defineProperty(exports, "normalizeUrl", { enumerable: true, get: function () { return __importDefault(normalize_url_1).default; } });
|
|
30
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iDAA0B;AAC1B,gDAAyB;AACzB,+CAAwB;AACxB,iDAA0B;AAC1B,8CAAuB;AACvB,8CAAuB;AACvB,+CAAwB;AACxB,2DAAuD;AAA/C,8HAAA,OAAO,OAAgB"}
|
package/build/index.d.ts
ADDED
package/build/index.mjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./Deferred.mjs";
|
|
2
|
+
export * from "./Emitter.mjs";
|
|
3
|
+
export * from "./Fluent.mjs";
|
|
4
|
+
export * from "./LRUCache.mjs";
|
|
5
|
+
export * from "./Store.mjs";
|
|
6
|
+
export * from "./Tools.mjs";
|
|
7
|
+
export * from "./Worker.mjs";
|
|
8
|
+
export { default as normalizeUrl } from "./normalize-url/index.mjs";
|
|
9
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;OAOO,EAAC,OAAO,IAAI,YAAY,EAAC"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
|
|
4
|
+
const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';
|
|
5
|
+
const DATA_URL_DEFAULT_CHARSET = 'us-ascii';
|
|
6
|
+
const testParameter = (name, filters) => filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);
|
|
7
|
+
const supportedProtocols = new Set([
|
|
8
|
+
'https:',
|
|
9
|
+
'http:',
|
|
10
|
+
'file:',
|
|
11
|
+
]);
|
|
12
|
+
const hasCustomProtocol = (urlString) => {
|
|
13
|
+
try {
|
|
14
|
+
const { protocol } = new URL(urlString);
|
|
15
|
+
return protocol.endsWith(':') && !supportedProtocols.has(protocol);
|
|
16
|
+
}
|
|
17
|
+
catch (_a) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const normalizeDataURL = (urlString, { stripHash }) => {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
const match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);
|
|
24
|
+
if (!match) {
|
|
25
|
+
throw new Error(`Invalid URL: ${urlString}`);
|
|
26
|
+
}
|
|
27
|
+
let { type, data, hash } = match.groups;
|
|
28
|
+
const mediaType = type.split(';');
|
|
29
|
+
hash = stripHash ? '' : hash;
|
|
30
|
+
let isBase64 = false;
|
|
31
|
+
if (mediaType[mediaType.length - 1] === 'base64') {
|
|
32
|
+
mediaType.pop();
|
|
33
|
+
isBase64 = true;
|
|
34
|
+
}
|
|
35
|
+
// Lowercase MIME type
|
|
36
|
+
const mimeType = (_b = (_a = mediaType.shift()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : '';
|
|
37
|
+
const attributes = mediaType
|
|
38
|
+
.map((attribute) => {
|
|
39
|
+
let [key, value = ''] = attribute.split('=').map((s) => s.trim());
|
|
40
|
+
// Lowercase `charset`
|
|
41
|
+
if (key === 'charset') {
|
|
42
|
+
value = value.toLowerCase();
|
|
43
|
+
if (value === DATA_URL_DEFAULT_CHARSET) {
|
|
44
|
+
return '';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return `${key}${value ? `=${value}` : ''}`;
|
|
48
|
+
})
|
|
49
|
+
.filter(Boolean);
|
|
50
|
+
const normalizedMediaType = [
|
|
51
|
+
...attributes,
|
|
52
|
+
];
|
|
53
|
+
if (isBase64) {
|
|
54
|
+
normalizedMediaType.push('base64');
|
|
55
|
+
}
|
|
56
|
+
if (normalizedMediaType.length > 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) {
|
|
57
|
+
normalizedMediaType.unshift(mimeType);
|
|
58
|
+
}
|
|
59
|
+
return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
[Normalize](https://en.wikipedia.org/wiki/URL_normalization) a URL.
|
|
63
|
+
|
|
64
|
+
URLs with custom protocols are not normalized and just passed through by default. Supported protocols are: `https`, `http`, `file`, and `data`.
|
|
65
|
+
|
|
66
|
+
@param url - URL to normalize, including [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs).
|
|
67
|
+
|
|
68
|
+
@example
|
|
69
|
+
```
|
|
70
|
+
import normalizeUrl from 'normalize-url';
|
|
71
|
+
|
|
72
|
+
normalizeUrl('sindresorhus.com');
|
|
73
|
+
//=> 'http://sindresorhus.com'
|
|
74
|
+
|
|
75
|
+
normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo');
|
|
76
|
+
//=> 'http://sindresorhus.com/baz?a=foo&b=bar'
|
|
77
|
+
```
|
|
78
|
+
*/
|
|
79
|
+
function normalizeUrl(urlString, opts) {
|
|
80
|
+
const options = {
|
|
81
|
+
defaultProtocol: 'http',
|
|
82
|
+
normalizeProtocol: true,
|
|
83
|
+
forceHttp: false,
|
|
84
|
+
forceHttps: false,
|
|
85
|
+
stripAuthentication: true,
|
|
86
|
+
stripHash: false,
|
|
87
|
+
stripTextFragment: true,
|
|
88
|
+
stripWWW: true,
|
|
89
|
+
removeQueryParameters: [/^utm_\w+/i],
|
|
90
|
+
removeTrailingSlash: true,
|
|
91
|
+
removeSingleSlash: true,
|
|
92
|
+
removeDirectoryIndex: false,
|
|
93
|
+
removeExplicitPort: false,
|
|
94
|
+
sortQueryParameters: true,
|
|
95
|
+
...opts,
|
|
96
|
+
};
|
|
97
|
+
// Legacy: Append `:` to the protocol if missing.
|
|
98
|
+
if (typeof options.defaultProtocol === 'string' && !options.defaultProtocol.endsWith(':')) {
|
|
99
|
+
options.defaultProtocol = `${options.defaultProtocol}:`;
|
|
100
|
+
}
|
|
101
|
+
urlString = urlString.trim();
|
|
102
|
+
// Data URL
|
|
103
|
+
if (/^data:/i.test(urlString)) {
|
|
104
|
+
return normalizeDataURL(urlString, options);
|
|
105
|
+
}
|
|
106
|
+
if (hasCustomProtocol(urlString)) {
|
|
107
|
+
return urlString;
|
|
108
|
+
}
|
|
109
|
+
const hasRelativeProtocol = urlString.startsWith('//');
|
|
110
|
+
const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString);
|
|
111
|
+
// Prepend protocol
|
|
112
|
+
if (!isRelativeUrl) {
|
|
113
|
+
urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol);
|
|
114
|
+
}
|
|
115
|
+
const urlObject = new URL(urlString);
|
|
116
|
+
if (options.forceHttp && options.forceHttps) {
|
|
117
|
+
throw new Error('The `forceHttp` and `forceHttps` options cannot be used together');
|
|
118
|
+
}
|
|
119
|
+
if (options.forceHttp && urlObject.protocol === 'https:') {
|
|
120
|
+
urlObject.protocol = 'http:';
|
|
121
|
+
}
|
|
122
|
+
if (options.forceHttps && urlObject.protocol === 'http:') {
|
|
123
|
+
urlObject.protocol = 'https:';
|
|
124
|
+
}
|
|
125
|
+
// Remove auth
|
|
126
|
+
if (options.stripAuthentication) {
|
|
127
|
+
urlObject.username = '';
|
|
128
|
+
urlObject.password = '';
|
|
129
|
+
}
|
|
130
|
+
// Remove hash
|
|
131
|
+
if (options.stripHash) {
|
|
132
|
+
urlObject.hash = '';
|
|
133
|
+
}
|
|
134
|
+
else if (options.stripTextFragment) {
|
|
135
|
+
urlObject.hash = urlObject.hash.replace(/#?:~:text.*?$/i, '');
|
|
136
|
+
}
|
|
137
|
+
// Remove duplicate slashes if not preceded by a protocol
|
|
138
|
+
// NOTE: This could be implemented using a single negative lookbehind
|
|
139
|
+
// regex, but we avoid that to maintain compatibility with older js engines
|
|
140
|
+
// which do not have support for that feature.
|
|
141
|
+
if (urlObject.pathname) {
|
|
142
|
+
// TODO: Replace everything below with `urlObject.pathname = urlObject.pathname.replace(/(?<!\b[a-z][a-z\d+\-.]{1,50}:)\/{2,}/g, '/');` when Safari supports negative lookbehind.
|
|
143
|
+
// Split the string by occurrences of this protocol regex, and perform
|
|
144
|
+
// duplicate-slash replacement on the strings between those occurrences
|
|
145
|
+
// (if any).
|
|
146
|
+
const protocolRegex = /\b[a-z][a-z\d+\-.]{1,50}:\/\//g;
|
|
147
|
+
let lastIndex = 0;
|
|
148
|
+
let result = '';
|
|
149
|
+
for (;;) {
|
|
150
|
+
const match = protocolRegex.exec(urlObject.pathname);
|
|
151
|
+
if (!match) {
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
const protocol = match[0];
|
|
155
|
+
const protocolAtIndex = match.index;
|
|
156
|
+
const intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex);
|
|
157
|
+
result += intermediate.replace(/\/{2,}/g, '/');
|
|
158
|
+
result += protocol;
|
|
159
|
+
lastIndex = protocolAtIndex + protocol.length;
|
|
160
|
+
}
|
|
161
|
+
const remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length);
|
|
162
|
+
result += remnant.replace(/\/{2,}/g, '/');
|
|
163
|
+
urlObject.pathname = result;
|
|
164
|
+
}
|
|
165
|
+
// Decode URI octets
|
|
166
|
+
if (urlObject.pathname) {
|
|
167
|
+
try {
|
|
168
|
+
urlObject.pathname = decodeURI(urlObject.pathname);
|
|
169
|
+
}
|
|
170
|
+
catch (_a) { }
|
|
171
|
+
}
|
|
172
|
+
// Remove directory index
|
|
173
|
+
if (options.removeDirectoryIndex === true) {
|
|
174
|
+
options.removeDirectoryIndex = [/^index\.[a-z]+$/];
|
|
175
|
+
}
|
|
176
|
+
if (Array.isArray(options.removeDirectoryIndex) && options.removeDirectoryIndex.length > 0) {
|
|
177
|
+
let pathComponents = urlObject.pathname.split('/');
|
|
178
|
+
const lastComponent = pathComponents[pathComponents.length - 1];
|
|
179
|
+
if (testParameter(lastComponent, options.removeDirectoryIndex)) {
|
|
180
|
+
pathComponents = pathComponents.slice(0, -1);
|
|
181
|
+
urlObject.pathname = pathComponents.slice(1).join('/') + '/';
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (urlObject.hostname) {
|
|
185
|
+
// Remove trailing dot
|
|
186
|
+
urlObject.hostname = urlObject.hostname.replace(/\.$/, '');
|
|
187
|
+
// Remove `www.`
|
|
188
|
+
if (options.stripWWW && /^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(urlObject.hostname)) {
|
|
189
|
+
// Each label should be max 63 at length (min: 1).
|
|
190
|
+
// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
|
|
191
|
+
// Each TLD should be up to 63 characters long (min: 2).
|
|
192
|
+
// It is technically possible to have a single character TLD, but none currently exist.
|
|
193
|
+
urlObject.hostname = urlObject.hostname.replace(/^www\./, '');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Remove query unwanted parameters
|
|
197
|
+
if (Array.isArray(options.removeQueryParameters)) {
|
|
198
|
+
// eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy.
|
|
199
|
+
for (const key of [...urlObject.searchParams.keys()]) {
|
|
200
|
+
if (testParameter(key, options.removeQueryParameters)) {
|
|
201
|
+
urlObject.searchParams.delete(key);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (!Array.isArray(options.keepQueryParameters) && options.removeQueryParameters === true) {
|
|
206
|
+
urlObject.search = '';
|
|
207
|
+
}
|
|
208
|
+
// Keep wanted query parameters
|
|
209
|
+
if (Array.isArray(options.keepQueryParameters) && options.keepQueryParameters.length > 0) {
|
|
210
|
+
// eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy.
|
|
211
|
+
for (const key of [...urlObject.searchParams.keys()]) {
|
|
212
|
+
if (!testParameter(key, options.keepQueryParameters)) {
|
|
213
|
+
urlObject.searchParams.delete(key);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Sort query parameters
|
|
218
|
+
if (options.sortQueryParameters) {
|
|
219
|
+
urlObject.searchParams.sort();
|
|
220
|
+
// Calling `.sort()` encodes the search parameters, so we need to decode them again.
|
|
221
|
+
try {
|
|
222
|
+
urlObject.search = decodeURIComponent(urlObject.search);
|
|
223
|
+
}
|
|
224
|
+
catch (_b) { }
|
|
225
|
+
}
|
|
226
|
+
if (options.removeTrailingSlash) {
|
|
227
|
+
urlObject.pathname = urlObject.pathname.replace(/\/$/, '');
|
|
228
|
+
}
|
|
229
|
+
// Remove an explicit port number, excluding a default port number, if applicable
|
|
230
|
+
if (options.removeExplicitPort && urlObject.port) {
|
|
231
|
+
urlObject.port = '';
|
|
232
|
+
}
|
|
233
|
+
const oldUrlString = urlString;
|
|
234
|
+
// Take advantage of many of the Node `url` normalizations
|
|
235
|
+
urlString = urlObject.toString();
|
|
236
|
+
if (!options.removeSingleSlash && urlObject.pathname === '/' && !oldUrlString.endsWith('/') && urlObject.hash === '') {
|
|
237
|
+
urlString = urlString.replace(/\/$/, '');
|
|
238
|
+
}
|
|
239
|
+
// Remove ending `/` unless removeSingleSlash is false
|
|
240
|
+
if ((options.removeTrailingSlash || urlObject.pathname === '/') && urlObject.hash === '' && options.removeSingleSlash) {
|
|
241
|
+
urlString = urlString.replace(/\/$/, '');
|
|
242
|
+
}
|
|
243
|
+
// Restore relative protocol, if applicable
|
|
244
|
+
if (hasRelativeProtocol && !options.normalizeProtocol) {
|
|
245
|
+
urlString = urlString.replace(/^http:\/\//, '//');
|
|
246
|
+
}
|
|
247
|
+
// Remove http/https
|
|
248
|
+
if (options.stripProtocol) {
|
|
249
|
+
urlString = urlString.replace(/^(?:https?:)?\/\//, '');
|
|
250
|
+
}
|
|
251
|
+
return urlString;
|
|
252
|
+
}
|
|
253
|
+
exports.default = normalizeUrl;
|
|
254
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../normalize-url/index.ts"],"names":[],"mappings":"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"}
|