12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.isLocalHost = exports.compareVersionStrings = exports.parseVersionString = exports.parseRuntimeVersion = exports.removePathSegments = exports.trimSlashes = exports.isValidWildcardMatch = exports.extractParamsFromPath = void 0;
- const wildcardRegex = new RegExp("{[^/{}]*}");
- const wildcardKeyRegex = new RegExp("^{(.+)}$");
- function extractParamsFromPath(wildcardPath, snapshotPath) {
- if (!isValidWildcardMatch(wildcardPath, snapshotPath)) {
- return {};
- }
- const wildcardChunks = trimSlashes(wildcardPath).split("/");
- const snapshotChunks = trimSlashes(snapshotPath).split("/");
- return wildcardChunks
- .slice(-snapshotChunks.length)
- .reduce((params, chunk, index) => {
- const match = wildcardKeyRegex.exec(chunk);
- if (match) {
- const wildcardKey = match[1];
- const potentialWildcardValue = snapshotChunks[index];
- if (!wildcardKeyRegex.exec(potentialWildcardValue)) {
- params[wildcardKey] = potentialWildcardValue;
- }
- }
- return params;
- }, {});
- }
- exports.extractParamsFromPath = extractParamsFromPath;
- function isValidWildcardMatch(wildcardPath, snapshotPath) {
- const wildcardChunks = trimSlashes(wildcardPath).split("/");
- const snapshotChunks = trimSlashes(snapshotPath).split("/");
- if (snapshotChunks.length > wildcardChunks.length) {
- return false;
- }
- const mismatchedChunks = wildcardChunks.slice(-snapshotChunks.length).filter((chunk, index) => {
- return !(wildcardRegex.exec(chunk) || chunk === snapshotChunks[index]);
- });
- return mismatchedChunks.length === 0;
- }
- exports.isValidWildcardMatch = isValidWildcardMatch;
- function trimSlashes(str) {
- return str
- .split("/")
- .filter((c) => c)
- .join("/");
- }
- exports.trimSlashes = trimSlashes;
- function removePathSegments(path, count) {
- return trimSlashes(path).split("/").slice(count).join("/");
- }
- exports.removePathSegments = removePathSegments;
- function parseRuntimeVersion(runtime) {
- if (!runtime) {
- return undefined;
- }
- const runtimeRe = /(nodejs)?([0-9]+)/;
- const match = runtimeRe.exec(runtime);
- if (match) {
- return Number.parseInt(match[2]);
- }
- return undefined;
- }
- exports.parseRuntimeVersion = parseRuntimeVersion;
- function parseVersionString(version) {
- const parts = (version || "0").split(".");
- parts.push("0");
- parts.push("0");
- return {
- major: parseInt(parts[0], 10),
- minor: parseInt(parts[1], 10),
- patch: parseInt(parts[2], 10),
- };
- }
- exports.parseVersionString = parseVersionString;
- function compareVersionStrings(a, b) {
- const versionA = parseVersionString(a);
- const versionB = parseVersionString(b);
- if (versionA.major !== versionB.major) {
- return versionA.major - versionB.major;
- }
- if (versionA.minor !== versionB.minor) {
- return versionA.minor - versionB.minor;
- }
- if (versionA.patch !== versionB.patch) {
- return versionA.patch - versionB.patch;
- }
- return 0;
- }
- exports.compareVersionStrings = compareVersionStrings;
- function isLocalHost(href) {
- return !!href.match(/^(http(s)?:\/\/)?(localhost|127.0.0.1|\[::1])/);
- }
- exports.isLocalHost = isLocalHost;
|