@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.
Files changed (47) hide show
  1. package/README.md +11 -0
  2. package/build/Deferred.cjs +13 -0
  3. package/build/Deferred.cjs.map +1 -0
  4. package/build/Deferred.d.ts +5 -0
  5. package/build/Deferred.mjs +9 -0
  6. package/build/Deferred.mjs.map +1 -0
  7. package/build/Emitter.cjs +13 -0
  8. package/build/Emitter.cjs.map +1 -0
  9. package/build/Emitter.d.ts +4 -0
  10. package/build/Emitter.mjs +9 -0
  11. package/build/Emitter.mjs.map +1 -0
  12. package/build/Fluent.cjs +47 -0
  13. package/build/Fluent.cjs.map +1 -0
  14. package/build/Fluent.d.ts +34 -0
  15. package/build/Fluent.mjs +43 -0
  16. package/build/Fluent.mjs.map +1 -0
  17. package/build/LRUCache.cjs +49 -0
  18. package/build/LRUCache.cjs.map +1 -0
  19. package/build/LRUCache.d.ts +19 -0
  20. package/build/LRUCache.mjs +44 -0
  21. package/build/LRUCache.mjs.map +1 -0
  22. package/build/Store.cjs +220 -0
  23. package/build/Store.cjs.map +1 -0
  24. package/build/Store.d.ts +105 -0
  25. package/build/Store.mjs +205 -0
  26. package/build/Store.mjs.map +1 -0
  27. package/build/Tools.cjs +189 -0
  28. package/build/Tools.cjs.map +1 -0
  29. package/build/Tools.d.ts +61 -0
  30. package/build/Tools.mjs +141 -0
  31. package/build/Tools.mjs.map +1 -0
  32. package/build/Worker.cjs +67 -0
  33. package/build/Worker.cjs.map +1 -0
  34. package/build/Worker.d.ts +17 -0
  35. package/build/Worker.mjs +63 -0
  36. package/build/Worker.mjs.map +1 -0
  37. package/build/index.cjs +30 -0
  38. package/build/index.cjs.map +1 -0
  39. package/build/index.d.ts +8 -0
  40. package/build/index.mjs +9 -0
  41. package/build/index.mjs.map +1 -0
  42. package/build/normalize-url/index.cjs +254 -0
  43. package/build/normalize-url/index.cjs.map +1 -0
  44. package/build/normalize-url/index.d.ts +285 -0
  45. package/build/normalize-url/index.mjs +251 -0
  46. package/build/normalize-url/index.mjs.map +1 -0
  47. package/package.json +40 -0
@@ -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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"}
@@ -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
+ }
@@ -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"}
@@ -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"}
@@ -0,0 +1,8 @@
1
+ export * from './Deferred';
2
+ export * from './Emitter';
3
+ export * from './Fluent';
4
+ export * from './LRUCache';
5
+ export * from './Store';
6
+ export * from './Tools';
7
+ export * from './Worker';
8
+ export { default as normalizeUrl } from './normalize-url';
@@ -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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"}