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.
79 lines
3.6 KiB
JavaScript
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
|