trousse 2.15.1 → 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.
@@ -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 (typeof patterns === "string" || patterns instanceof RegExp ? [patterns] : patterns).some((pattern) => {
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, base?: string | URL) => URL | undefined;
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
  };
package/package.json CHANGED
@@ -46,5 +46,5 @@
46
46
  "dependencies": {
47
47
  "entities": "^8.1.0"
48
48
  },
49
- "version": "2.15.1"
49
+ "version": "2.16.0"
50
50
  }