trousse 2.12.0 → 2.13.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/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/urls.d.ts +1 -0
- package/dist/urls.js +27 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -9,5 +9,5 @@ import { anyWordMatchesAnyOf, endsWithAnyOf, escapeRegex, getAnyOf, includesAnyO
|
|
|
9
9
|
import { createAcceptHeader, feedMimeTypes, genericFeedMimeTypes, genericHtmlMimeTypes, htmlMimeTypes } from "./mimes.js";
|
|
10
10
|
import { omit, pick, toMap, trimObject } from "./objects.js";
|
|
11
11
|
import { sleep } from "./timers.js";
|
|
12
|
-
import { addMissingProtocol, addMissingScheme, createUrlVariants, decodeSegment, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isSubdomainOf, normalizeUrl, parseUrl, resolveFeedProtocol, resolveFeedScheme, resolveUrl, stripWww, upgradeProtocol, upgradeScheme } from "./urls.js";
|
|
13
|
-
export { type AnyOf, type DeepOmit, type IsPlainObject, type MaybePromise, type NormalizeOptions, type Nullish, type PartialNullish, type Pattern, type RegistrableDomainOptions, type WeightedMimeType, addMissingProtocol, addMissingScheme, anyWordMatchesAnyOf, archiveExtensions, audioExtensions, codeExtensions, coerceArray, coerceBoolean, coerceDate, coerceNumber, coerceSingular, coerceString, createAcceptHeader, createUrlVariants, decodeSegment, documentExtensions, endsWithAnyOf, escapeHtml, escapeRegex, feedMimeTypes, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, flashExtensions, fontExtensions, genericFeedMimeTypes, genericHtmlMimeTypes, getAnyOf, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, htmlMimeTypes, imageExtensions, includesAnyOf, installerExtensions, isAnyOf, isBoolean, isFunction, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isJsonLike, isNonEmptyString, isNullish, isNumber, isObject, isParseableJson, isPlainObject, isPresent, isString, isSubdomainOf, isValidDate, normalizeUrl, omit, omitEmpty, parseUrl, pick, resolveFeedProtocol, resolveFeedScheme, resolveUrl, sleep, startsWithAnyOf, stripWww, subtitleExtensions, t, toMap, trimObject, tx, upgradeProtocol, upgradeScheme, videoExtensions };
|
|
12
|
+
import { addMissingProtocol, addMissingScheme, createUrlVariants, decodeSegment, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isSubdomainOf, normalizeUrl, parseUrl, resolveFeedProtocol, resolveFeedScheme, resolveUrl, stripWww, trimUrlValues, upgradeProtocol, upgradeScheme } from "./urls.js";
|
|
13
|
+
export { type AnyOf, type DeepOmit, type IsPlainObject, type MaybePromise, type NormalizeOptions, type Nullish, type PartialNullish, type Pattern, type RegistrableDomainOptions, type WeightedMimeType, addMissingProtocol, addMissingScheme, anyWordMatchesAnyOf, archiveExtensions, audioExtensions, codeExtensions, coerceArray, coerceBoolean, coerceDate, coerceNumber, coerceSingular, coerceString, createAcceptHeader, createUrlVariants, decodeSegment, documentExtensions, endsWithAnyOf, escapeHtml, escapeRegex, feedMimeTypes, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, flashExtensions, fontExtensions, genericFeedMimeTypes, genericHtmlMimeTypes, getAnyOf, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, htmlMimeTypes, imageExtensions, includesAnyOf, installerExtensions, isAnyOf, isBoolean, isFunction, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isJsonLike, isNonEmptyString, isNullish, isNumber, isObject, isParseableJson, isPlainObject, isPresent, isString, isSubdomainOf, isValidDate, normalizeUrl, omit, omitEmpty, parseUrl, pick, resolveFeedProtocol, resolveFeedScheme, resolveUrl, sleep, startsWithAnyOf, stripWww, subtitleExtensions, t, toMap, trimObject, trimUrlValues, tx, upgradeProtocol, upgradeScheme, videoExtensions };
|
package/dist/index.js
CHANGED
|
@@ -8,5 +8,5 @@ import { anyWordMatchesAnyOf, endsWithAnyOf, escapeRegex, getAnyOf, includesAnyO
|
|
|
8
8
|
import { createAcceptHeader, feedMimeTypes, genericFeedMimeTypes, genericHtmlMimeTypes, htmlMimeTypes } from "./mimes.js";
|
|
9
9
|
import { omit, pick, toMap, trimObject } from "./objects.js";
|
|
10
10
|
import { sleep } from "./timers.js";
|
|
11
|
-
import { addMissingProtocol, addMissingScheme, createUrlVariants, decodeSegment, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isSubdomainOf, normalizeUrl, parseUrl, resolveFeedProtocol, resolveFeedScheme, resolveUrl, stripWww, upgradeProtocol, upgradeScheme } from "./urls.js";
|
|
12
|
-
export { addMissingProtocol, addMissingScheme, anyWordMatchesAnyOf, archiveExtensions, audioExtensions, codeExtensions, coerceArray, coerceBoolean, coerceDate, coerceNumber, coerceSingular, coerceString, createAcceptHeader, createUrlVariants, decodeSegment, documentExtensions, endsWithAnyOf, escapeHtml, escapeRegex, feedMimeTypes, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, flashExtensions, fontExtensions, genericFeedMimeTypes, genericHtmlMimeTypes, getAnyOf, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, htmlMimeTypes, imageExtensions, includesAnyOf, installerExtensions, isAnyOf, isBoolean, isFunction, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isJsonLike, isNonEmptyString, isNullish, isNumber, isObject, isParseableJson, isPlainObject, isPresent, isString, isSubdomainOf, isValidDate, normalizeUrl, omit, omitEmpty, parseUrl, pick, resolveFeedProtocol, resolveFeedScheme, resolveUrl, sleep, startsWithAnyOf, stripWww, subtitleExtensions, t, toMap, trimObject, tx, upgradeProtocol, upgradeScheme, videoExtensions };
|
|
11
|
+
import { addMissingProtocol, addMissingScheme, createUrlVariants, decodeSegment, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isSubdomainOf, normalizeUrl, parseUrl, resolveFeedProtocol, resolveFeedScheme, resolveUrl, stripWww, trimUrlValues, upgradeProtocol, upgradeScheme } from "./urls.js";
|
|
12
|
+
export { addMissingProtocol, addMissingScheme, anyWordMatchesAnyOf, archiveExtensions, audioExtensions, codeExtensions, coerceArray, coerceBoolean, coerceDate, coerceNumber, coerceSingular, coerceString, createAcceptHeader, createUrlVariants, decodeSegment, documentExtensions, endsWithAnyOf, escapeHtml, escapeRegex, feedMimeTypes, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, flashExtensions, fontExtensions, genericFeedMimeTypes, genericHtmlMimeTypes, getAnyOf, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, htmlMimeTypes, imageExtensions, includesAnyOf, installerExtensions, isAnyOf, isBoolean, isFunction, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isJsonLike, isNonEmptyString, isNullish, isNumber, isObject, isParseableJson, isPlainObject, isPresent, isString, isSubdomainOf, isValidDate, normalizeUrl, omit, omitEmpty, parseUrl, pick, resolveFeedProtocol, resolveFeedScheme, resolveUrl, sleep, startsWithAnyOf, stripWww, subtitleExtensions, t, toMap, trimObject, trimUrlValues, tx, upgradeProtocol, upgradeScheme, videoExtensions };
|
package/dist/urls.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare const getQueryParams: (params: URLSearchParams | undefined, name:
|
|
|
12
12
|
export declare const getQueryParam: (params: URLSearchParams | undefined, name: string) => string | undefined;
|
|
13
13
|
export declare const fixMalformedScheme: (url: string) => string;
|
|
14
14
|
export declare const fixMalformedQuery: (url: string) => string;
|
|
15
|
+
export declare const trimUrlValues: (url: string) => string;
|
|
15
16
|
export declare const resolveFeedScheme: (url: string, scheme?: 'http' | 'https') => string;
|
|
16
17
|
export declare const addMissingScheme: (url: string, scheme?: 'http' | 'https') => string;
|
|
17
18
|
export declare const upgradeScheme: (url: string, scheme?: 'http' | 'https') => string;
|
package/dist/urls.js
CHANGED
|
@@ -169,6 +169,32 @@ const fixMalformedQuery = (url) => {
|
|
|
169
169
|
if (!hasNestedUrl) query = query.replace(lostSeparatorRegex, "&").replace(slashClosedValueRegex, "$1");
|
|
170
170
|
return `${head.slice(0, queryIndex)}?${query}${head.slice(ownEnd)}${fragment}`;
|
|
171
171
|
};
|
|
172
|
+
const segmentEdgeSpace = "(?:\\s|%(?:09|0A|0D|20))";
|
|
173
|
+
const valueEdgeSpace = "(?:\\s|\\+|%(?:09|0A|0D|20))";
|
|
174
|
+
const segmentEdgeSpaceRegex = new RegExp(`^${segmentEdgeSpace}+|(?<!${segmentEdgeSpace})${segmentEdgeSpace}+$`, "gi");
|
|
175
|
+
const valueEdgeSpaceRegex = new RegExp(`^${valueEdgeSpace}+|(?<!${valueEdgeSpace})${valueEdgeSpace}+$`, "gi");
|
|
176
|
+
const trimEdgeSpace = (value, regex) => {
|
|
177
|
+
return value.replace(regex, "") || value;
|
|
178
|
+
};
|
|
179
|
+
const trimPairValue = (pair) => {
|
|
180
|
+
const equalsIndex = pair.indexOf("=");
|
|
181
|
+
if (equalsIndex === -1) return pair;
|
|
182
|
+
const value = trimEdgeSpace(pair.slice(equalsIndex + 1), valueEdgeSpaceRegex);
|
|
183
|
+
return `${pair.slice(0, equalsIndex + 1)}${value}`;
|
|
184
|
+
};
|
|
185
|
+
const trimUrlValues = (url) => {
|
|
186
|
+
if (!httpOrSchemeRelativeRegex.test(url)) return url;
|
|
187
|
+
const hashIndex = url.indexOf("#");
|
|
188
|
+
const head = hashIndex === -1 ? url : url.slice(0, hashIndex);
|
|
189
|
+
const fragment = hashIndex === -1 ? "" : url.slice(hashIndex);
|
|
190
|
+
const markIndex = head.indexOf("?");
|
|
191
|
+
const beforeQuery = markIndex === -1 ? head : head.slice(0, markIndex);
|
|
192
|
+
const pathIndex = beforeQuery.indexOf("/", beforeQuery.indexOf("//") + 2);
|
|
193
|
+
const authority = pathIndex === -1 ? beforeQuery : beforeQuery.slice(0, pathIndex);
|
|
194
|
+
const path = (pathIndex === -1 ? [] : beforeQuery.slice(pathIndex).split("/")).map((segment) => trimEdgeSpace(segment, segmentEdgeSpaceRegex)).join("/");
|
|
195
|
+
const pairs = markIndex === -1 ? [] : head.slice(markIndex + 1).split("&");
|
|
196
|
+
return `${authority}${path}${markIndex === -1 ? "" : `?${pairs.map(trimPairValue).join("&")}`}${fragment}`;
|
|
197
|
+
};
|
|
172
198
|
const feedSchemes = [
|
|
173
199
|
"feed:",
|
|
174
200
|
"rss:",
|
|
@@ -405,4 +431,4 @@ const addMissingProtocol = addMissingScheme;
|
|
|
405
431
|
/** @deprecated Use `upgradeScheme` instead. */
|
|
406
432
|
const upgradeProtocol = upgradeScheme;
|
|
407
433
|
//#endregion
|
|
408
|
-
export { addMissingProtocol, addMissingScheme, createUrlVariants, decodeSegment, fixMalformedProtocol, fixMalformedQuery, fixMalformedScheme, getPathSegments, getQueryParam, getQueryParams, getRegistrableDomain, getSubdomain, isHostOf, isHostOrSubdomainOf, isHttpUrl, isIpAddress, isSubdomainOf, normalizeUrl, parseUrl, resolveFeedProtocol, resolveFeedScheme, resolveUrl, stripWww, upgradeProtocol, upgradeScheme };
|
|
434
|
+
export { addMissingProtocol, addMissingScheme, createUrlVariants, decodeSegment, 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