fixed version control heatmap and activity
This commit is contained in:
207
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js
generated
vendored
Normal file
207
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js
generated
vendored
Normal file
@@ -0,0 +1,207 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
0 && (module.exports = {
|
||||
resolveAlternates: null,
|
||||
resolveAppLinks: null,
|
||||
resolveAppleWebApp: null,
|
||||
resolveItunes: null,
|
||||
resolveRobots: null,
|
||||
resolveThemeColor: null,
|
||||
resolveVerification: null
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
resolveAlternates: function() {
|
||||
return resolveAlternates;
|
||||
},
|
||||
resolveAppLinks: function() {
|
||||
return resolveAppLinks;
|
||||
},
|
||||
resolveAppleWebApp: function() {
|
||||
return resolveAppleWebApp;
|
||||
},
|
||||
resolveItunes: function() {
|
||||
return resolveItunes;
|
||||
},
|
||||
resolveRobots: function() {
|
||||
return resolveRobots;
|
||||
},
|
||||
resolveThemeColor: function() {
|
||||
return resolveThemeColor;
|
||||
},
|
||||
resolveVerification: function() {
|
||||
return resolveVerification;
|
||||
}
|
||||
});
|
||||
const _utils = require("../generate/utils");
|
||||
const _resolveurl = require("./resolve-url");
|
||||
function resolveAlternateUrl(url, metadataBase, metadataContext) {
|
||||
// If alter native url is an URL instance,
|
||||
// we treat it as a URL base and resolve with current pathname
|
||||
if (url instanceof URL) {
|
||||
url = new URL(metadataContext.pathname, url);
|
||||
}
|
||||
return (0, _resolveurl.resolveAbsoluteUrlWithPathname)(url, metadataBase, metadataContext);
|
||||
}
|
||||
const resolveThemeColor = (themeColor)=>{
|
||||
var _resolveAsArrayOrUndefined;
|
||||
if (!themeColor) return null;
|
||||
const themeColorDescriptors = [];
|
||||
(_resolveAsArrayOrUndefined = (0, _utils.resolveAsArrayOrUndefined)(themeColor)) == null ? void 0 : _resolveAsArrayOrUndefined.forEach((descriptor)=>{
|
||||
if (typeof descriptor === "string") themeColorDescriptors.push({
|
||||
color: descriptor
|
||||
});
|
||||
else if (typeof descriptor === "object") themeColorDescriptors.push({
|
||||
color: descriptor.color,
|
||||
media: descriptor.media
|
||||
});
|
||||
});
|
||||
return themeColorDescriptors;
|
||||
};
|
||||
function resolveUrlValuesOfObject(obj, metadataBase, metadataContext) {
|
||||
if (!obj) return null;
|
||||
const result = {};
|
||||
for (const [key, value] of Object.entries(obj)){
|
||||
if (typeof value === "string" || value instanceof URL) {
|
||||
result[key] = [
|
||||
{
|
||||
url: resolveAlternateUrl(value, metadataBase, metadataContext)
|
||||
}
|
||||
];
|
||||
} else {
|
||||
result[key] = [];
|
||||
value == null ? void 0 : value.forEach((item, index)=>{
|
||||
const url = resolveAlternateUrl(item.url, metadataBase, metadataContext);
|
||||
result[key][index] = {
|
||||
url,
|
||||
title: item.title
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function resolveCanonicalUrl(urlOrDescriptor, metadataBase, metadataContext) {
|
||||
if (!urlOrDescriptor) return null;
|
||||
const url = typeof urlOrDescriptor === "string" || urlOrDescriptor instanceof URL ? urlOrDescriptor : urlOrDescriptor.url;
|
||||
// Return string url because structureClone can't handle URL instance
|
||||
return {
|
||||
url: resolveAlternateUrl(url, metadataBase, metadataContext)
|
||||
};
|
||||
}
|
||||
const resolveAlternates = (alternates, metadataBase, context)=>{
|
||||
if (!alternates) return null;
|
||||
const canonical = resolveCanonicalUrl(alternates.canonical, metadataBase, context);
|
||||
const languages = resolveUrlValuesOfObject(alternates.languages, metadataBase, context);
|
||||
const media = resolveUrlValuesOfObject(alternates.media, metadataBase, context);
|
||||
const types = resolveUrlValuesOfObject(alternates.types, metadataBase, context);
|
||||
const result = {
|
||||
canonical,
|
||||
languages,
|
||||
media,
|
||||
types
|
||||
};
|
||||
return result;
|
||||
};
|
||||
const robotsKeys = [
|
||||
"noarchive",
|
||||
"nosnippet",
|
||||
"noimageindex",
|
||||
"nocache",
|
||||
"notranslate",
|
||||
"indexifembedded",
|
||||
"nositelinkssearchbox",
|
||||
"unavailable_after",
|
||||
"max-video-preview",
|
||||
"max-image-preview",
|
||||
"max-snippet"
|
||||
];
|
||||
const resolveRobotsValue = (robots)=>{
|
||||
if (!robots) return null;
|
||||
if (typeof robots === "string") return robots;
|
||||
const values = [];
|
||||
if (robots.index) values.push("index");
|
||||
else if (typeof robots.index === "boolean") values.push("noindex");
|
||||
if (robots.follow) values.push("follow");
|
||||
else if (typeof robots.follow === "boolean") values.push("nofollow");
|
||||
for (const key of robotsKeys){
|
||||
const value = robots[key];
|
||||
if (typeof value !== "undefined" && value !== false) {
|
||||
values.push(typeof value === "boolean" ? key : `${key}:${value}`);
|
||||
}
|
||||
}
|
||||
return values.join(", ");
|
||||
};
|
||||
const resolveRobots = (robots)=>{
|
||||
if (!robots) return null;
|
||||
return {
|
||||
basic: resolveRobotsValue(robots),
|
||||
googleBot: typeof robots !== "string" ? resolveRobotsValue(robots.googleBot) : null
|
||||
};
|
||||
};
|
||||
const VerificationKeys = [
|
||||
"google",
|
||||
"yahoo",
|
||||
"yandex",
|
||||
"me",
|
||||
"other"
|
||||
];
|
||||
const resolveVerification = (verification)=>{
|
||||
if (!verification) return null;
|
||||
const res = {};
|
||||
for (const key of VerificationKeys){
|
||||
const value = verification[key];
|
||||
if (value) {
|
||||
if (key === "other") {
|
||||
res.other = {};
|
||||
for(const otherKey in verification.other){
|
||||
const otherValue = (0, _utils.resolveAsArrayOrUndefined)(verification.other[otherKey]);
|
||||
if (otherValue) res.other[otherKey] = otherValue;
|
||||
}
|
||||
} else res[key] = (0, _utils.resolveAsArrayOrUndefined)(value);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
};
|
||||
const resolveAppleWebApp = (appWebApp)=>{
|
||||
var _resolveAsArrayOrUndefined;
|
||||
if (!appWebApp) return null;
|
||||
if (appWebApp === true) {
|
||||
return {
|
||||
capable: true
|
||||
};
|
||||
}
|
||||
const startupImages = appWebApp.startupImage ? (_resolveAsArrayOrUndefined = (0, _utils.resolveAsArrayOrUndefined)(appWebApp.startupImage)) == null ? void 0 : _resolveAsArrayOrUndefined.map((item)=>typeof item === "string" ? {
|
||||
url: item
|
||||
} : item) : null;
|
||||
return {
|
||||
capable: "capable" in appWebApp ? !!appWebApp.capable : true,
|
||||
title: appWebApp.title || null,
|
||||
startupImage: startupImages,
|
||||
statusBarStyle: appWebApp.statusBarStyle || "default"
|
||||
};
|
||||
};
|
||||
const resolveAppLinks = (appLinks)=>{
|
||||
if (!appLinks) return null;
|
||||
for(const key in appLinks){
|
||||
// @ts-ignore // TODO: type infer
|
||||
appLinks[key] = (0, _utils.resolveAsArrayOrUndefined)(appLinks[key]);
|
||||
}
|
||||
return appLinks;
|
||||
};
|
||||
const resolveItunes = (itunes, metadataBase, context)=>{
|
||||
if (!itunes) return null;
|
||||
return {
|
||||
appId: itunes.appId,
|
||||
appArgument: itunes.appArgument ? resolveAlternateUrl(itunes.appArgument, metadataBase, context) : undefined
|
||||
};
|
||||
};
|
||||
|
||||
//# sourceMappingURL=resolve-basics.js.map
|
||||
56
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js
generated
vendored
Normal file
56
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
0 && (module.exports = {
|
||||
resolveIcon: null,
|
||||
resolveIcons: null
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
resolveIcon: function() {
|
||||
return resolveIcon;
|
||||
},
|
||||
resolveIcons: function() {
|
||||
return resolveIcons;
|
||||
}
|
||||
});
|
||||
const _utils = require("../generate/utils");
|
||||
const _resolveurl = require("./resolve-url");
|
||||
const _constants = require("../constants");
|
||||
function resolveIcon(icon) {
|
||||
if ((0, _resolveurl.isStringOrURL)(icon)) return {
|
||||
url: icon
|
||||
};
|
||||
else if (Array.isArray(icon)) return icon;
|
||||
return icon;
|
||||
}
|
||||
const resolveIcons = (icons)=>{
|
||||
if (!icons) {
|
||||
return null;
|
||||
}
|
||||
const resolved = {
|
||||
icon: [],
|
||||
apple: []
|
||||
};
|
||||
if (Array.isArray(icons)) {
|
||||
resolved.icon = icons.map(resolveIcon).filter(Boolean);
|
||||
} else if ((0, _resolveurl.isStringOrURL)(icons)) {
|
||||
resolved.icon = [
|
||||
resolveIcon(icons)
|
||||
];
|
||||
} else {
|
||||
for (const key of _constants.IconKeys){
|
||||
const values = (0, _utils.resolveAsArrayOrUndefined)(icons[key]);
|
||||
if (values) resolved[key] = values.map(resolveIcon);
|
||||
}
|
||||
}
|
||||
return resolved;
|
||||
};
|
||||
|
||||
//# sourceMappingURL=resolve-icons.js.map
|
||||
174
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js
generated
vendored
Normal file
174
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js
generated
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
0 && (module.exports = {
|
||||
resolveImages: null,
|
||||
resolveOpenGraph: null,
|
||||
resolveTwitter: null
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
resolveImages: function() {
|
||||
return resolveImages;
|
||||
},
|
||||
resolveOpenGraph: function() {
|
||||
return resolveOpenGraph;
|
||||
},
|
||||
resolveTwitter: function() {
|
||||
return resolveTwitter;
|
||||
}
|
||||
});
|
||||
const _utils = require("../generate/utils");
|
||||
const _resolveurl = require("./resolve-url");
|
||||
const _resolvetitle = require("./resolve-title");
|
||||
const _url = require("../../url");
|
||||
const _log = require("../../../build/output/log");
|
||||
const OgTypeFields = {
|
||||
article: [
|
||||
"authors",
|
||||
"tags"
|
||||
],
|
||||
song: [
|
||||
"albums",
|
||||
"musicians"
|
||||
],
|
||||
playlist: [
|
||||
"albums",
|
||||
"musicians"
|
||||
],
|
||||
radio: [
|
||||
"creators"
|
||||
],
|
||||
video: [
|
||||
"actors",
|
||||
"directors",
|
||||
"writers",
|
||||
"tags"
|
||||
],
|
||||
basic: [
|
||||
"emails",
|
||||
"phoneNumbers",
|
||||
"faxNumbers",
|
||||
"alternateLocale",
|
||||
"audio",
|
||||
"videos"
|
||||
]
|
||||
};
|
||||
function resolveAndValidateImage(item, metadataBase, isMetadataBaseMissing) {
|
||||
if (!item) return undefined;
|
||||
const isItemUrl = (0, _resolveurl.isStringOrURL)(item);
|
||||
const inputUrl = isItemUrl ? item : item.url;
|
||||
if (!inputUrl) return undefined;
|
||||
validateResolvedImageUrl(inputUrl, metadataBase, isMetadataBaseMissing);
|
||||
return isItemUrl ? {
|
||||
url: (0, _resolveurl.resolveUrl)(inputUrl, metadataBase)
|
||||
} : {
|
||||
...item,
|
||||
// Update image descriptor url
|
||||
url: (0, _resolveurl.resolveUrl)(inputUrl, metadataBase)
|
||||
};
|
||||
}
|
||||
function resolveImages(images, metadataBase) {
|
||||
const resolvedImages = (0, _utils.resolveAsArrayOrUndefined)(images);
|
||||
if (!resolvedImages) return resolvedImages;
|
||||
const { isMetadataBaseMissing, fallbackMetadataBase } = (0, _resolveurl.getSocialImageFallbackMetadataBase)(metadataBase);
|
||||
const nonNullableImages = [];
|
||||
for (const item of resolvedImages){
|
||||
const resolvedItem = resolveAndValidateImage(item, fallbackMetadataBase, isMetadataBaseMissing);
|
||||
if (!resolvedItem) continue;
|
||||
nonNullableImages.push(resolvedItem);
|
||||
}
|
||||
return nonNullableImages;
|
||||
}
|
||||
const ogTypeToFields = {
|
||||
article: OgTypeFields.article,
|
||||
book: OgTypeFields.article,
|
||||
"music.song": OgTypeFields.song,
|
||||
"music.album": OgTypeFields.song,
|
||||
"music.playlist": OgTypeFields.playlist,
|
||||
"music.radio_station": OgTypeFields.radio,
|
||||
"video.movie": OgTypeFields.video,
|
||||
"video.episode": OgTypeFields.video
|
||||
};
|
||||
function getFieldsByOgType(ogType) {
|
||||
if (!ogType || !(ogType in ogTypeToFields)) return OgTypeFields.basic;
|
||||
return ogTypeToFields[ogType].concat(OgTypeFields.basic);
|
||||
}
|
||||
function validateResolvedImageUrl(inputUrl, fallbackMetadataBase, isMetadataBaseMissing) {
|
||||
// Only warn on the image url that needs to be resolved with metadataBase
|
||||
if (typeof inputUrl === "string" && !(0, _url.isFullStringUrl)(inputUrl) && isMetadataBaseMissing) {
|
||||
(0, _log.warnOnce)(`metadataBase property in metadata export is not set for resolving social open graph or twitter images, using "${fallbackMetadataBase.origin}". See https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase`);
|
||||
}
|
||||
}
|
||||
const resolveOpenGraph = (openGraph, metadataBase, metadataContext, titleTemplate)=>{
|
||||
if (!openGraph) return null;
|
||||
function resolveProps(target, og) {
|
||||
const ogType = og && "type" in og ? og.type : undefined;
|
||||
const keys = getFieldsByOgType(ogType);
|
||||
for (const k of keys){
|
||||
const key = k;
|
||||
if (key in og && key !== "url") {
|
||||
const value = og[key];
|
||||
if (value) {
|
||||
const arrayValue = (0, _utils.resolveAsArrayOrUndefined)(value);
|
||||
target[key] = arrayValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
target.images = resolveImages(og.images, metadataBase);
|
||||
}
|
||||
const resolved = {
|
||||
...openGraph,
|
||||
title: (0, _resolvetitle.resolveTitle)(openGraph.title, titleTemplate)
|
||||
};
|
||||
resolveProps(resolved, openGraph);
|
||||
resolved.url = openGraph.url ? (0, _resolveurl.resolveAbsoluteUrlWithPathname)(openGraph.url, metadataBase, metadataContext) : null;
|
||||
return resolved;
|
||||
};
|
||||
const TwitterBasicInfoKeys = [
|
||||
"site",
|
||||
"siteId",
|
||||
"creator",
|
||||
"creatorId",
|
||||
"description"
|
||||
];
|
||||
const resolveTwitter = (twitter, metadataBase, titleTemplate)=>{
|
||||
var _resolved_images;
|
||||
if (!twitter) return null;
|
||||
let card = "card" in twitter ? twitter.card : undefined;
|
||||
const resolved = {
|
||||
...twitter,
|
||||
title: (0, _resolvetitle.resolveTitle)(twitter.title, titleTemplate)
|
||||
};
|
||||
for (const infoKey of TwitterBasicInfoKeys){
|
||||
resolved[infoKey] = twitter[infoKey] || null;
|
||||
}
|
||||
resolved.images = resolveImages(twitter.images, metadataBase);
|
||||
card = card || (((_resolved_images = resolved.images) == null ? void 0 : _resolved_images.length) ? "summary_large_image" : "summary");
|
||||
resolved.card = card;
|
||||
if ("card" in resolved) {
|
||||
switch(resolved.card){
|
||||
case "player":
|
||||
{
|
||||
resolved.players = (0, _utils.resolveAsArrayOrUndefined)(resolved.players) || [];
|
||||
break;
|
||||
}
|
||||
case "app":
|
||||
{
|
||||
resolved.app = resolved.app || {};
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return resolved;
|
||||
};
|
||||
|
||||
//# sourceMappingURL=resolve-opengraph.js.map
|
||||
40
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-title.js
generated
vendored
Normal file
40
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-title.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(exports, "resolveTitle", {
|
||||
enumerable: true,
|
||||
get: function() {
|
||||
return resolveTitle;
|
||||
}
|
||||
});
|
||||
function resolveTitleTemplate(template, title) {
|
||||
return template ? template.replace(/%s/g, title) : title;
|
||||
}
|
||||
function resolveTitle(title, stashedTemplate) {
|
||||
let resolved;
|
||||
const template = typeof title !== "string" && title && "template" in title ? title.template : null;
|
||||
if (typeof title === "string") {
|
||||
resolved = resolveTitleTemplate(stashedTemplate, title);
|
||||
} else if (title) {
|
||||
if ("default" in title) {
|
||||
resolved = resolveTitleTemplate(stashedTemplate, title.default);
|
||||
}
|
||||
if ("absolute" in title && title.absolute) {
|
||||
resolved = title.absolute;
|
||||
}
|
||||
}
|
||||
if (title && typeof title !== "string") {
|
||||
return {
|
||||
template,
|
||||
absolute: resolved || ""
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
absolute: resolved || title || "",
|
||||
template
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=resolve-title.js.map
|
||||
136
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-url.js
generated
vendored
Normal file
136
.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-url.js
generated
vendored
Normal file
@@ -0,0 +1,136 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
0 && (module.exports = {
|
||||
getSocialImageFallbackMetadataBase: null,
|
||||
isStringOrURL: null,
|
||||
resolveAbsoluteUrlWithPathname: null,
|
||||
resolveRelativeUrl: null,
|
||||
resolveUrl: null
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
getSocialImageFallbackMetadataBase: function() {
|
||||
return getSocialImageFallbackMetadataBase;
|
||||
},
|
||||
isStringOrURL: function() {
|
||||
return isStringOrURL;
|
||||
},
|
||||
resolveAbsoluteUrlWithPathname: function() {
|
||||
return resolveAbsoluteUrlWithPathname;
|
||||
},
|
||||
resolveRelativeUrl: function() {
|
||||
return resolveRelativeUrl;
|
||||
},
|
||||
resolveUrl: function() {
|
||||
return resolveUrl;
|
||||
}
|
||||
});
|
||||
const _path = /*#__PURE__*/ _interop_require_default(require("../../../shared/lib/isomorphic/path"));
|
||||
function _interop_require_default(obj) {
|
||||
return obj && obj.__esModule ? obj : {
|
||||
default: obj
|
||||
};
|
||||
}
|
||||
function isStringOrURL(icon) {
|
||||
return typeof icon === "string" || icon instanceof URL;
|
||||
}
|
||||
function createLocalMetadataBase() {
|
||||
return new URL(`http://localhost:${process.env.PORT || 3000}`);
|
||||
}
|
||||
function getPreviewDeploymentUrl() {
|
||||
const origin = process.env.VERCEL_BRANCH_URL || process.env.VERCEL_URL;
|
||||
return origin ? new URL(`https://${origin}`) : undefined;
|
||||
}
|
||||
function getProductionDeploymentUrl() {
|
||||
const origin = process.env.VERCEL_PROJECT_PRODUCTION_URL;
|
||||
return origin ? new URL(`https://${origin}`) : undefined;
|
||||
}
|
||||
function getSocialImageFallbackMetadataBase(metadataBase) {
|
||||
const isMetadataBaseMissing = !metadataBase;
|
||||
const defaultMetadataBase = createLocalMetadataBase();
|
||||
const previewDeploymentUrl = getPreviewDeploymentUrl();
|
||||
const productionDeploymentUrl = getProductionDeploymentUrl();
|
||||
let fallbackMetadataBase;
|
||||
if (process.env.NODE_ENV === "development") {
|
||||
fallbackMetadataBase = defaultMetadataBase;
|
||||
} else {
|
||||
fallbackMetadataBase = process.env.NODE_ENV === "production" && previewDeploymentUrl && process.env.VERCEL_ENV === "preview" ? previewDeploymentUrl : metadataBase || productionDeploymentUrl || defaultMetadataBase;
|
||||
}
|
||||
return {
|
||||
fallbackMetadataBase,
|
||||
isMetadataBaseMissing
|
||||
};
|
||||
}
|
||||
function resolveUrl(url, metadataBase) {
|
||||
if (url instanceof URL) return url;
|
||||
if (!url) return null;
|
||||
try {
|
||||
// If we can construct a URL instance from url, ignore metadataBase
|
||||
const parsedUrl = new URL(url);
|
||||
return parsedUrl;
|
||||
} catch {}
|
||||
if (!metadataBase) {
|
||||
metadataBase = createLocalMetadataBase();
|
||||
}
|
||||
// Handle relative or absolute paths
|
||||
const basePath = metadataBase.pathname || "";
|
||||
const joinedPath = _path.default.posix.join(basePath, url);
|
||||
return new URL(joinedPath, metadataBase);
|
||||
}
|
||||
// Resolve with `pathname` if `url` is a relative path.
|
||||
function resolveRelativeUrl(url, pathname) {
|
||||
if (typeof url === "string" && url.startsWith("./")) {
|
||||
return _path.default.posix.resolve(pathname, url);
|
||||
}
|
||||
return url;
|
||||
}
|
||||
// The regex is matching logic from packages/next/src/lib/load-custom-routes.ts
|
||||
const FILE_REGEX = /^(?:\/((?!\.well-known(?:\/.*)?)(?:[^/]+\/)*[^/]+\.\w+))(\/?|$)/i;
|
||||
function isFilePattern(pathname) {
|
||||
return FILE_REGEX.test(pathname);
|
||||
}
|
||||
// Resolve `pathname` if `url` is a relative path the compose with `metadataBase`.
|
||||
function resolveAbsoluteUrlWithPathname(url, metadataBase, { trailingSlash, pathname }) {
|
||||
// Resolve url with pathname that always starts with `/`
|
||||
url = resolveRelativeUrl(url, pathname);
|
||||
// Convert string url or URL instance to absolute url string,
|
||||
// if there's case needs to be resolved with metadataBase
|
||||
let resolvedUrl = "";
|
||||
const result = metadataBase ? resolveUrl(url, metadataBase) : url;
|
||||
if (typeof result === "string") {
|
||||
resolvedUrl = result;
|
||||
} else {
|
||||
resolvedUrl = result.pathname === "/" ? result.origin : result.href;
|
||||
}
|
||||
// Add trailing slash if it's enabled for urls matches the condition
|
||||
// - Not external, same origin with metadataBase
|
||||
// - Doesn't have query
|
||||
if (trailingSlash && !resolvedUrl.endsWith("/")) {
|
||||
let isRelative = resolvedUrl.startsWith("/");
|
||||
let hasQuery = resolvedUrl.includes("?");
|
||||
let isExternal = false;
|
||||
let isFileUrl = false;
|
||||
if (!isRelative) {
|
||||
try {
|
||||
const parsedUrl = new URL(resolvedUrl);
|
||||
isExternal = metadataBase != null && parsedUrl.origin !== metadataBase.origin;
|
||||
isFileUrl = isFilePattern(parsedUrl.pathname);
|
||||
} catch {
|
||||
// If it's not a valid URL, treat it as external
|
||||
isExternal = true;
|
||||
}
|
||||
if (// Do not apply trailing slash for file like urls, aligning with the behavior with `trailingSlash`
|
||||
!isFileUrl && !isExternal && !hasQuery) return `${resolvedUrl}/`;
|
||||
}
|
||||
}
|
||||
return resolvedUrl;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=resolve-url.js.map
|
||||
Reference in New Issue
Block a user