trousse 2.16.0 → 2.16.2

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/arrays.d.ts CHANGED
@@ -1,3 +1 @@
1
- //#region src/arrays.d.ts
2
- export declare const omitEmpty: <T>(array: Array<T | null | undefined>) => Array<T> | undefined;
3
- //#endregion
1
+ export declare const omitEmpty: <T>(array: Array<T | null | undefined>) => Array<T> | undefined;
package/dist/arrays.js CHANGED
@@ -1,9 +1,8 @@
1
1
  import { isPresent } from "./is.js";
2
- //#region src/arrays.ts
2
+ // src/arrays.ts
3
3
  const omitEmpty = (array) => {
4
4
  const result = [];
5
5
  for (const item of array) if (isPresent(item) && item !== "") result.push(item);
6
6
  return result.length ? result : void 0;
7
7
  };
8
- //#endregion
9
8
  export { omitEmpty };
@@ -1,9 +1,7 @@
1
1
  import { Nullish } from "./types.js";
2
- //#region src/coercions.d.ts
3
2
  export declare const coerceString: (value: unknown) => string | undefined;
4
3
  export declare const coerceNumber: (value: unknown) => number | undefined;
5
4
  export declare const coerceBoolean: (value: unknown) => boolean | undefined;
6
5
  export declare const coerceDate: (value: unknown) => Date | undefined;
7
6
  export declare const coerceSingular: <T>(value: T | Array<T>) => T | undefined;
8
- export declare const coerceArray: <T>(value: Nullish<T | Array<T>>) => Array<T>;
9
- //#endregion
7
+ export declare const coerceArray: <T>(value: Nullish<T | Array<T>>) => Array<T>;
package/dist/coercions.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { isBoolean, isNonEmptyString, isNullish, isNumber, isString, isValidDate } from "./is.js";
2
- //#region src/coercions.ts
2
+ // src/coercions.ts
3
3
  const coerceString = (value) => {
4
4
  if (isString(value)) return value;
5
5
  if (isNumber(value)) return String(value);
@@ -36,5 +36,4 @@ const coerceArray = (value) => {
36
36
  if (isNullish(value)) return [];
37
37
  return Array.isArray(value) ? value : [value];
38
38
  };
39
- //#endregion
40
39
  export { coerceArray, coerceBoolean, coerceDate, coerceNumber, coerceSingular, coerceString };
package/dist/files.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- //#region src/files.d.ts
2
1
  export declare const audioExtensions: string[];
3
2
  export declare const videoExtensions: string[];
4
3
  export declare const imageExtensions: string[];
@@ -8,5 +7,4 @@ export declare const installerExtensions: string[];
8
7
  export declare const flashExtensions: string[];
9
8
  export declare const codeExtensions: string[];
10
9
  export declare const fontExtensions: string[];
11
- export declare const subtitleExtensions: string[];
12
- //#endregion
10
+ export declare const subtitleExtensions: string[];
package/dist/files.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/files.ts
1
+ // src/files.ts
2
2
  const audioExtensions = [
3
3
  "aac",
4
4
  "aif",
@@ -97,5 +97,4 @@ const fontExtensions = [
97
97
  "woff2"
98
98
  ];
99
99
  const subtitleExtensions = ["srt", "vtt"];
100
- //#endregion
101
100
  export { archiveExtensions, audioExtensions, codeExtensions, documentExtensions, flashExtensions, fontExtensions, imageExtensions, installerExtensions, subtitleExtensions, videoExtensions };
package/dist/is.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- //#region src/is.d.ts
2
1
  export declare const isString: (value: unknown) => value is string;
3
2
  export declare const isNumber: (value: unknown) => value is number;
4
3
  export declare const isBoolean: (value: unknown) => value is boolean;
@@ -8,5 +7,4 @@ export declare const isNullish: (value: unknown) => value is null | undefined;
8
7
  export declare const isObject: (value: unknown) => value is object;
9
8
  export declare const isPlainObject: (value: unknown) => value is Record<string, unknown>;
10
9
  export declare const isNonEmptyString: (value: unknown) => value is string;
11
- export declare const isValidDate: (value: unknown) => value is Date;
12
- //#endregion
10
+ export declare const isValidDate: (value: unknown) => value is Date;
package/dist/is.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/is.ts
1
+ // src/is.ts
2
2
  const isString = (value) => {
3
3
  return typeof value === "string";
4
4
  };
@@ -33,5 +33,4 @@ const isNonEmptyString = (value) => {
33
33
  const isValidDate = (value) => {
34
34
  return value instanceof Date && !Number.isNaN(value.getTime());
35
35
  };
36
- //#endregion
37
36
  export { isBoolean, isFunction, isNonEmptyString, isNullish, isNumber, isObject, isPlainObject, isPresent, isString, isValidDate };
package/dist/json.d.ts CHANGED
@@ -1,4 +1,2 @@
1
- //#region src/json.d.ts
2
1
  export declare const isJsonLike: (value: string) => boolean;
3
- export declare const isParseableJson: (value: string) => boolean;
4
- //#endregion
2
+ export declare const isParseableJson: (value: string) => boolean;
package/dist/json.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/json.ts
1
+ // src/json.ts
2
2
  const isWhitespaceCode = (code) => {
3
3
  return code >= 9 && code <= 13 || code === 32 || code === 160 || code === 5760 || code >= 8192 && code <= 8202 || code === 8232 || code === 8233 || code === 8239 || code === 8287 || code === 12288 || code === 65279;
4
4
  };
@@ -20,5 +20,4 @@ const isParseableJson = (value) => {
20
20
  return false;
21
21
  }
22
22
  };
23
- //#endregion
24
23
  export { isJsonLike, isParseableJson };
package/dist/locales.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- //#region src/locales.d.ts
2
1
  export declare const escapeHtml: (value: string) => string;
3
2
  export declare const t: (template: string, params: Record<string, string | number>) => string;
4
- export declare const tx: (template: string, params: Record<string, string | number>) => string;
5
- //#endregion
3
+ export declare const tx: (template: string, params: Record<string, string | number>) => string;
package/dist/locales.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/locales.ts
1
+ // src/locales.ts
2
2
  const placeholderRegex = /\{\{(\w+)\}\}/g;
3
3
  const escapableRegex = /[&<>"']/g;
4
4
  const escapeHtml = (value) => {
@@ -22,5 +22,4 @@ const tx = (template, params) => {
22
22
  return Object.hasOwn(params, key) ? escapeHtml(String(params[key])) : placeholder;
23
23
  });
24
24
  };
25
- //#endregion
26
25
  export { escapeHtml, t, tx };
@@ -1,10 +1,8 @@
1
1
  import { Pattern } from "./types.js";
2
- //#region src/matching.d.ts
3
2
  export declare const escapeRegex: (value: string) => string;
4
3
  export declare const isAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>, parser?: (value: string) => string) => boolean;
5
4
  export declare const getAnyOf: <T extends string>(value: string | undefined, patterns: ReadonlyArray<T>, parser?: (value: string) => string) => T | undefined;
6
5
  export declare const includesAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>, parser?: (value: string) => string) => boolean;
7
6
  export declare const startsWithAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>) => boolean;
8
7
  export declare const endsWithAnyOf: (value: string | undefined, patterns: Pattern | ReadonlyArray<Pattern>) => boolean;
9
- export declare const anyWordMatchesAnyOf: (value: string, patterns: ReadonlyArray<Pattern>) => boolean;
10
- //#endregion
8
+ export declare const anyWordMatchesAnyOf: (value: string, patterns: ReadonlyArray<Pattern>) => boolean;
package/dist/matching.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { isNullish } from "./is.js";
2
- //#region src/matching.ts
2
+ // src/matching.ts
3
3
  const whitespaceRegex = /\s+/;
4
4
  const regexSyntaxCharsRegex = /[.*+?^${}()|[\]\\/]/;
5
5
  const regexEscapableCharsRegex = /[.*+?^${}()|[\]\\/&!#%,:;<=>@`~-]/g;
@@ -79,5 +79,4 @@ const anyWordMatchesAnyOf = (value, patterns) => {
79
79
  }
80
80
  return false;
81
81
  };
82
- //#endregion
83
82
  export { anyWordMatchesAnyOf, endsWithAnyOf, escapeRegex, getAnyOf, includesAnyOf, isAnyOf, startsWithAnyOf };
package/dist/mimes.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  import { WeightedMimeType } from "./types.js";
2
- //#region src/mimes.d.ts
3
2
  export declare const feedMimeTypes: Array<WeightedMimeType>;
4
3
  export declare const genericFeedMimeTypes: Array<WeightedMimeType>;
5
4
  export declare const htmlMimeTypes: Array<WeightedMimeType>;
6
5
  export declare const genericHtmlMimeTypes: Array<WeightedMimeType>;
7
- export declare const createAcceptHeader: (types: ReadonlyArray<WeightedMimeType>) => string;
8
- //#endregion
6
+ export declare const createAcceptHeader: (types: ReadonlyArray<WeightedMimeType>) => string;
package/dist/mimes.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/mimes.ts
1
+ // src/mimes.ts
2
2
  const feedMimeTypes = [
3
3
  {
4
4
  mime: "application/atom+xml",
@@ -99,5 +99,4 @@ const createAcceptHeader = (types) => {
99
99
  return `${type.mime};q=${type.quality}`;
100
100
  }).join(", ");
101
101
  };
102
- //#endregion
103
102
  export { createAcceptHeader, feedMimeTypes, genericFeedMimeTypes, genericHtmlMimeTypes, htmlMimeTypes };
package/dist/objects.d.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  import { AnyOf } from "./types.js";
2
- //#region src/objects.d.ts
3
2
  export declare const pick: <T extends object, K extends keyof T>(object: T, keys: ReadonlyArray<K>) => Pick<T, K>;
4
3
  export declare const omit: <T extends object, K extends keyof T>(object: T, keys: ReadonlyArray<K>) => Omit<T, K>;
5
4
  export declare const trimObject: <T extends Record<string, unknown>>(object: T, keep?: (value: unknown) => boolean) => AnyOf<T> | undefined;
6
- export declare const toMap: <V>(record: Record<string, V>) => Map<string, V>;
7
- //#endregion
5
+ export declare const toMap: <V>(record: Record<string, V>) => Map<string, V>;
package/dist/objects.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { isPresent } from "./is.js";
2
- //#region src/objects.ts
2
+ // src/objects.ts
3
3
  const setKey = (object, key, value) => {
4
4
  if (key === "__proto__") {
5
5
  Object.defineProperty(object, key, {
@@ -42,5 +42,4 @@ const trimObject = (object, keep = isPresent) => {
42
42
  const toMap = (record) => {
43
43
  return new Map(Object.entries(record));
44
44
  };
45
- //#endregion
46
45
  export { omit, pick, toMap, trimObject };
package/dist/timers.d.ts CHANGED
@@ -1,3 +1 @@
1
- //#region src/timers.d.ts
2
- export declare const sleep: (milliseconds: number) => Promise<void>;
3
- //#endregion
1
+ export declare const sleep: (milliseconds: number) => Promise<void>;
package/dist/timers.js CHANGED
@@ -1,9 +1,8 @@
1
- //#region src/timers.ts
1
+ // src/timers.ts
2
2
  const maxDelay = 2 ** 31 - 1;
3
3
  const sleep = (milliseconds) => {
4
4
  return new Promise((resolve) => {
5
5
  setTimeout(resolve, Math.min(milliseconds, maxDelay));
6
6
  });
7
7
  };
8
- //#endregion
9
8
  export { sleep };
package/dist/types.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- //#region src/types.d.ts
2
1
  export type AnyOf<T> = Partial<{ [Key in keyof T]-?: NonNullable<T[Key]>; }> & { [Key in keyof T]-?: Pick<{ [InnerKey in keyof T]-?: NonNullable<T[InnerKey]>; }, Key>; }[keyof T];
3
2
  export type IsPlainObject<T> = T extends Array<unknown> ? false : T extends ((...args: Array<unknown>) => unknown) ? false : T extends Date ? false : T extends object ? T extends null ? false : true : false;
4
3
  export type DeepOmit<T, Keys extends string> = T extends Array<infer Item> ? Array<DeepOmit<Item, Keys>> : IsPlainObject<T> extends true ? Pick<{ [Key in keyof T]: DeepOmit<T[Key], Keys>; }, Exclude<keyof T, Keys>> : T;
@@ -31,5 +30,4 @@ export type NormalizeOptions = {
31
30
  export type WeightedMimeType = {
32
31
  mime: string;
33
32
  quality: number;
34
- };
35
- //#endregion
33
+ };
package/dist/urls.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { NormalizeOptions, Nullish, RegistrableDomainOptions } from "./types.js";
2
- //#region src/urls.d.ts
3
2
  export declare const parseUrl: (value: Nullish<string | URL>, base?: string | URL) => URL | undefined;
4
3
  export declare const getPathSegments: (value: string | URL) => Array<string>;
5
4
  export declare const isHostOf: (url: string | URL, hosts: string | ReadonlyArray<string>) => boolean;
@@ -33,5 +32,4 @@ export declare const resolveFeedProtocol: typeof resolveFeedScheme;
33
32
  /** @deprecated Use `addMissingScheme` instead. */
34
33
  export declare const addMissingProtocol: typeof addMissingScheme;
35
34
  /** @deprecated Use `upgradeScheme` instead. */
36
- export declare const upgradeProtocol: typeof upgradeScheme;
37
- //#endregion
35
+ export declare const upgradeProtocol: typeof upgradeScheme;
package/dist/urls.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { isNullish } from "./is.js";
2
2
  import { endsWithAnyOf, isAnyOf } from "./matching.js";
3
3
  import { decodeHTMLStrict } from "entities";
4
- //#region src/urls.ts
4
+ // src/urls.ts
5
5
  const httpSchemes = ["http:", "https:"];
6
6
  const parseUrl = (value, base) => {
7
7
  if (isNullish(value)) return;
@@ -180,8 +180,15 @@ const fixMalformedScheme = (url) => {
180
180
  };
181
181
  const nestedUrlRegex = /[a-z][a-z\d+.-]*(?::|%3A)(?:\/\/|%2F%2F)|(?<=[=?&])(?:\/\/|%2F%2F)/i;
182
182
  const httpOrSchemeRelativeRegex = /^(?:https?:)?\/\//i;
183
+ const slugTailRegex = /[/.-]/;
183
184
  const lostSeparatorRegex = /(?<!\s)\s+(?=[A-Za-z_][\w.-]*=)/g;
184
185
  const slashClosedValueRegex = /(=[^&/=]+)\/+(?=&|$)/g;
186
+ const isGlueTail = (head, glueIndex, pathEnd, ownEnd) => {
187
+ const tail = head.slice(glueIndex + 1, pathEnd).split("&")[0] ?? "";
188
+ if (tail === "" || tail.includes("=")) return true;
189
+ if (slugTailRegex.test(tail)) return false;
190
+ return head.slice(glueIndex + 1, ownEnd).includes("=");
191
+ };
185
192
  const fixMalformedQuery = (url) => {
186
193
  if (!httpOrSchemeRelativeRegex.test(url)) return url;
187
194
  const hashIndex = url.indexOf("#");
@@ -197,7 +204,7 @@ const fixMalformedQuery = (url) => {
197
204
  const pathIndex = head.indexOf("/", authorityEnd);
198
205
  const pathEnd = hasMark ? markIndex : ownEnd;
199
206
  const glueIndex = pathIndex !== -1 && pathIndex < pathEnd ? head.indexOf("&", pathIndex) : -1;
200
- const isGlued = glueIndex !== -1 && glueIndex < pathEnd;
207
+ const isGlued = glueIndex !== -1 && glueIndex < pathEnd && isGlueTail(head, glueIndex, pathEnd, ownEnd);
201
208
  if (!isGlued && !hasMark) return url;
202
209
  const queryIndex = isGlued ? glueIndex : markIndex;
203
210
  const queryStart = queryIndex + (isGlued && head[glueIndex + 1] === "?" ? 2 : 1);
@@ -284,9 +291,7 @@ const addMissingScheme = (url, scheme = "https") => {
284
291
  if (relativeLeadChars.includes(url.charAt(0))) return url;
285
292
  const slashIndex = url.indexOf("/");
286
293
  const dotIndex = url.indexOf(".");
287
- if (dotIndex === -1 || slashIndex !== -1 && dotIndex > slashIndex) {
288
- if (!localhostRegex.test(url)) return url;
289
- }
294
+ if (!(dotIndex !== -1 && (slashIndex === -1 || dotIndex < slashIndex)) && !localhostRegex.test(url)) return url;
290
295
  const firstChar = url.charAt(0);
291
296
  if (leadingWhitespaceChars.includes(firstChar)) return url;
292
297
  return `${scheme}://${url}`;
@@ -511,5 +516,4 @@ const resolveFeedProtocol = resolveFeedScheme;
511
516
  const addMissingProtocol = addMissingScheme;
512
517
  /** @deprecated Use `upgradeScheme` instead. */
513
518
  const upgradeProtocol = upgradeScheme;
514
- //#endregion
515
519
  export { addMissingProtocol, addMissingScheme, composeQuery, createUrlSpellings, createUrlVariants, decodePercent, decodeSegment, encodePathSegment, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isSubdomainOf, normalizeUrl, parseUrl, resolveFeedProtocol, resolveFeedScheme, resolveUrl, stripWww, trimUrlValues, upgradeProtocol, upgradeScheme };
package/package.json CHANGED
@@ -40,11 +40,11 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/bun": "^1.4.2",
43
- "kvalita": "^1.24.3",
44
- "tsdown": "^0.23.0"
43
+ "kvalita": "^1.26.4",
44
+ "tsdown": "0.23.1"
45
45
  },
46
46
  "dependencies": {
47
47
  "entities": "^8.1.0"
48
48
  },
49
- "version": "2.16.0"
49
+ "version": "2.16.2"
50
50
  }