fixed version control heatmap and activity

This commit is contained in:
will
2026-04-02 20:38:56 +01:00
parent 1da5da43e1
commit 250a7030bf
1777 changed files with 170575 additions and 83 deletions

View 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

View 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

View 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

View 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

View 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