trousse 2.15.0 → 2.16.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/matching.d.ts +3 -3
- package/dist/matching.js +9 -4
- package/dist/urls.d.ts +3 -3
- package/dist/urls.js +5 -2
- package/package.json +1 -1
package/dist/matching.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { Pattern } from "./types.js";
|
|
|
3
3
|
export declare const escapeRegex: (value: string) => string;
|
|
4
4
|
export declare const isAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>, parser?: (value: string) => string) => boolean;
|
|
5
5
|
export declare const getAnyOf: <T extends string>(value: string | undefined, patterns: ReadonlyArray<T>, parser?: (value: string) => string) => T | undefined;
|
|
6
|
-
export declare const includesAnyOf: (value: string | undefined, patterns: ReadonlyArray<Pattern>, parser?: (value: string) => string) => boolean;
|
|
7
|
-
export declare const startsWithAnyOf: (value: string, patterns: ReadonlyArray<Pattern>) => boolean;
|
|
8
|
-
export declare const endsWithAnyOf: (value: string, patterns: ReadonlyArray<Pattern>) => boolean;
|
|
6
|
+
export declare const includesAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>, parser?: (value: string) => string) => boolean;
|
|
7
|
+
export declare const startsWithAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>) => boolean;
|
|
8
|
+
export declare const endsWithAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>) => boolean;
|
|
9
9
|
export declare const anyWordMatchesAnyOf: (value: string, patterns: ReadonlyArray<Pattern>) => boolean;
|
|
10
10
|
//#endregion
|
package/dist/matching.js
CHANGED
|
@@ -10,6 +10,9 @@ const testRegex = (regex, value) => {
|
|
|
10
10
|
const testRegexAnyCase = (regex, lowerValue, value) => {
|
|
11
11
|
return testRegex(regex, lowerValue) || lowerValue !== value && testRegex(regex, value);
|
|
12
12
|
};
|
|
13
|
+
const toPatternList = (patterns) => {
|
|
14
|
+
return typeof patterns === "string" || patterns instanceof RegExp ? [patterns] : patterns;
|
|
15
|
+
};
|
|
13
16
|
const escapeRegex = (value) => {
|
|
14
17
|
return value.replace(regexEscapableCharsRegex, (char) => {
|
|
15
18
|
if (regexSyntaxCharsRegex.test(char)) return `\\${char}`;
|
|
@@ -20,7 +23,7 @@ const isAnyOf = (value, patterns, parser) => {
|
|
|
20
23
|
if (isNullish(value)) return false;
|
|
21
24
|
const parsedValue = parser ? parser(value) : value.toLowerCase().trim();
|
|
22
25
|
const originalValue = parser ? parsedValue : value.trim();
|
|
23
|
-
return (
|
|
26
|
+
return toPatternList(patterns).some((pattern) => {
|
|
24
27
|
if (pattern instanceof RegExp) return testRegexAnyCase(pattern, parsedValue, originalValue);
|
|
25
28
|
return parsedValue === (parser ? pattern : pattern.toLowerCase().trim());
|
|
26
29
|
});
|
|
@@ -36,21 +39,23 @@ const includesAnyOf = (value, patterns, parser) => {
|
|
|
36
39
|
if (isNullish(value)) return false;
|
|
37
40
|
const parsedValue = parser ? parser(value) : value.toLowerCase();
|
|
38
41
|
const originalValue = parser ? parsedValue : value;
|
|
39
|
-
return patterns.some((pattern) => {
|
|
42
|
+
return toPatternList(patterns).some((pattern) => {
|
|
40
43
|
if (pattern instanceof RegExp) return testRegexAnyCase(pattern, parsedValue, originalValue);
|
|
41
44
|
return pattern && parsedValue.includes(parser ? pattern : pattern.toLowerCase());
|
|
42
45
|
});
|
|
43
46
|
};
|
|
44
47
|
const startsWithAnyOf = (value, patterns) => {
|
|
48
|
+
if (isNullish(value)) return false;
|
|
45
49
|
const lowerValue = value.toLowerCase();
|
|
46
|
-
return patterns.some((pattern) => {
|
|
50
|
+
return toPatternList(patterns).some((pattern) => {
|
|
47
51
|
if (pattern instanceof RegExp) return testRegexAnyCase(pattern, lowerValue, value);
|
|
48
52
|
return pattern && lowerValue.startsWith(pattern.toLowerCase());
|
|
49
53
|
});
|
|
50
54
|
};
|
|
51
55
|
const endsWithAnyOf = (value, patterns) => {
|
|
56
|
+
if (isNullish(value)) return false;
|
|
52
57
|
const lowerValue = value.toLowerCase();
|
|
53
|
-
return patterns.some((pattern) => {
|
|
58
|
+
return toPatternList(patterns).some((pattern) => {
|
|
54
59
|
if (pattern instanceof RegExp) return testRegexAnyCase(pattern, lowerValue, value);
|
|
55
60
|
return pattern && lowerValue.endsWith(pattern.toLowerCase());
|
|
56
61
|
});
|
package/dist/urls.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { NormalizeOptions, RegistrableDomainOptions } from "./types.js";
|
|
1
|
+
import { NormalizeOptions, Nullish, RegistrableDomainOptions } from "./types.js";
|
|
2
2
|
//#region src/urls.d.ts
|
|
3
|
-
export declare const parseUrl: (value: string | URL
|
|
3
|
+
export declare const parseUrl: (value: Nullish<string | URL>, base?: string | URL) => URL | undefined;
|
|
4
4
|
export declare const getPathSegments: (value: string | URL) => Array<string>;
|
|
5
5
|
export declare const isHostOf: (url: string | URL, hosts: string | ReadonlyArray<string>) => boolean;
|
|
6
6
|
export declare const isSubdomainOf: (url: string | URL, domains: string | ReadonlyArray<string>) => boolean;
|
|
@@ -12,7 +12,7 @@ export declare const decodePercent: (value: string) => string;
|
|
|
12
12
|
export declare const encodePathSegment: (value: string) => string;
|
|
13
13
|
export declare const getQueryParams: (params: URLSearchParams | undefined, name: string) => Array<string>;
|
|
14
14
|
export declare const getQueryParam: (params: URLSearchParams | undefined, name: string) => string | undefined;
|
|
15
|
-
export declare const composeQuery: (params?: Record<string, string>) => string;
|
|
15
|
+
export declare const composeQuery: (params?: Record<string, string | number>) => string;
|
|
16
16
|
export declare const fixMalformedScheme: (url: string) => string;
|
|
17
17
|
export declare const fixMalformedQuery: (url: string) => string;
|
|
18
18
|
export declare const trimUrlValues: (url: string) => string;
|
package/dist/urls.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { isNullish } from "./is.js";
|
|
1
2
|
import { endsWithAnyOf, isAnyOf } from "./matching.js";
|
|
2
3
|
import { decodeHTMLStrict } from "entities";
|
|
3
4
|
//#region src/urls.ts
|
|
4
5
|
const httpSchemes = ["http:", "https:"];
|
|
5
6
|
const parseUrl = (value, base) => {
|
|
7
|
+
if (isNullish(value)) return;
|
|
6
8
|
if (value instanceof URL && base === void 0) return value;
|
|
7
9
|
if (URL.parse) return URL.parse(value, base) ?? void 0;
|
|
8
10
|
try {
|
|
@@ -108,7 +110,7 @@ const composeQuery = (params) => {
|
|
|
108
110
|
return part.replace(queryPartEscapeRegex, (character) => encodeURIComponent(character));
|
|
109
111
|
};
|
|
110
112
|
const pairs = Object.entries(params ?? {}).map(([name, value]) => {
|
|
111
|
-
return `${escapePart(name)}=${escapePart(value)}`;
|
|
113
|
+
return `${escapePart(name)}=${escapePart(String(value))}`;
|
|
112
114
|
});
|
|
113
115
|
return pairs.length > 0 ? `?${pairs.join("&")}` : "";
|
|
114
116
|
};
|
|
@@ -150,7 +152,8 @@ const schemeColonRegex = /^[^/]*:/;
|
|
|
150
152
|
const missingColonSchemeRegex = /^https?[\s=.\\]*\/\//i;
|
|
151
153
|
const validUrlRegex = /^https?:\/\/(?:www\.|[a-vx-z0-9])/i;
|
|
152
154
|
const schemeSeparator = String.raw`\.*[:\s=\\/][:\s=.\\/]*`;
|
|
153
|
-
const
|
|
155
|
+
const separatorChar = String.raw`(?:[:\s=.\\/]|%20|%c2%a0)`;
|
|
156
|
+
const leadingSchemeSeparator = String.raw`\.*(?::${separatorChar}*|[\s=\\/]${separatorChar}+)`;
|
|
154
157
|
const doubledSchemeRegex = /* @__PURE__ */ new RegExp(String.raw`^\/?[htps]{2,7}${leadingSchemeSeparator}([htps]{2,7})(?!:\d|[^/?#\\]*@)(${schemeSeparator})[.,:/]*(www[./]+)?`, "i");
|
|
155
158
|
const singleMalformedRegex = /* @__PURE__ */ new RegExp(String.raw`^\/?(h[htps():]{1,10}|t{1,2}ps?)(${leadingSchemeSeparator})[.,:/]*(www[./]+)?`, "i");
|
|
156
159
|
const isSchemeToken = (token, separator) => {
|
package/package.json
CHANGED