Nicholai 16cee69250 __Admin dashboard scaffolded with D1 database and R2 file uploads__
This commit implements the core admin dashboard functionality including NextAuth authentication, Cloudflare D1 database integration with complete schema, and Cloudflare R2 file upload system for portfolio images. Features include artist management, appointment scheduling, and data migration capabilities.
2025-09-17 16:08:34 -06:00

79 lines
3.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "resolveHref", {
enumerable: true,
get: function() {
return resolveHref;
}
});
const _querystring = require("../shared/lib/router/utils/querystring");
const _formaturl = require("../shared/lib/router/utils/format-url");
const _omit = require("../shared/lib/router/utils/omit");
const _utils = require("../shared/lib/utils");
const _normalizetrailingslash = require("./normalize-trailing-slash");
const _islocalurl = require("../shared/lib/router/utils/is-local-url");
const _utils1 = require("../shared/lib/router/utils");
const _interpolateas = require("../shared/lib/router/utils/interpolate-as");
function resolveHref(router, href, resolveAs) {
// we use a dummy base url for relative urls
let base;
let urlAsString = typeof href === "string" ? href : (0, _formaturl.formatWithValidation)(href);
// repeated slashes and backslashes in the URL are considered
// invalid and will never match a Next.js page/file
const urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\/\//);
const urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;
const urlParts = urlAsStringNoProto.split("?", 1);
if ((urlParts[0] || "").match(/(\/\/|\\)/)) {
console.error("Invalid href '" + urlAsString + "' passed to next/router in page: '" + router.pathname + "'. Repeated forward-slashes (//) or backslashes \\ are not valid in the href.");
const normalizedUrl = (0, _utils.normalizeRepeatedSlashes)(urlAsStringNoProto);
urlAsString = (urlProtoMatch ? urlProtoMatch[0] : "") + normalizedUrl;
}
// Return because it cannot be routed by the Next.js router
if (!(0, _islocalurl.isLocalURL)(urlAsString)) {
return resolveAs ? [
urlAsString
] : urlAsString;
}
try {
base = new URL(urlAsString.startsWith("#") ? router.asPath : router.pathname, "http://n");
} catch (_) {
// fallback to / for invalid asPath values e.g. //
base = new URL("/", "http://n");
}
try {
const finalUrl = new URL(urlAsString, base);
finalUrl.pathname = (0, _normalizetrailingslash.normalizePathTrailingSlash)(finalUrl.pathname);
let interpolatedAs = "";
if ((0, _utils1.isDynamicRoute)(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {
const query = (0, _querystring.searchParamsToUrlQuery)(finalUrl.searchParams);
const { result, params } = (0, _interpolateas.interpolateAs)(finalUrl.pathname, finalUrl.pathname, query);
if (result) {
interpolatedAs = (0, _formaturl.formatWithValidation)({
pathname: result,
hash: finalUrl.hash,
query: (0, _omit.omit)(query, params)
});
}
}
// if the origin didn't change, it means we received a relative href
const resolvedHref = finalUrl.origin === base.origin ? finalUrl.href.slice(finalUrl.origin.length) : finalUrl.href;
return resolveAs ? [
resolvedHref,
interpolatedAs || resolvedHref
] : resolvedHref;
} catch (_) {
return resolveAs ? [
urlAsString
] : urlAsString;
}
}
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', { value: true });
Object.assign(exports.default, exports);
module.exports = exports.default;
}
//# sourceMappingURL=resolve-href.js.map