feat: Upgrade to Astro with full PDPA compliance

PDPA Features:
 Cookie consent banner
 Consent logging API
 Admin dashboard
 Privacy Policy
 Terms & Conditions

Technical:
 Astro 5.x + Tailwind v4
 Docker on port 80
 SQLite database
 15 pages built

Ready for Easypanel deployment.
This commit is contained in:
Kunthawat
2026-03-12 10:01:04 +07:00
parent 668f69048f
commit 77ac4d2d05
13719 changed files with 307487 additions and 25765 deletions

53
node_modules/astro/dist/core/viteUtils.js generated vendored Normal file
View File

@@ -0,0 +1,53 @@
import path from "node:path";
import { fileURLToPath } from "node:url";
import { prependForwardSlash, slash } from "../core/path.js";
import { resolveJsToTs, unwrapId, VALID_ID_PREFIX, viteID } from "./util.js";
const isWindows = typeof process !== "undefined" && process.platform === "win32";
function normalizePath(id) {
return path.posix.normalize(isWindows ? slash(id) : id);
}
function resolvePath(specifier, importer) {
if (specifier.startsWith(".")) {
const absoluteSpecifier = path.resolve(path.dirname(importer), specifier);
return resolveJsToTs(normalizePath(absoluteSpecifier));
} else {
return specifier;
}
}
function rootRelativePath(root, idOrUrl, shouldPrependForwardSlash = true) {
let id;
if (typeof idOrUrl !== "string") {
id = unwrapId(viteID(idOrUrl));
} else {
id = idOrUrl;
}
const normalizedRoot = normalizePath(fileURLToPath(root));
if (id.startsWith(normalizedRoot)) {
id = id.slice(normalizedRoot.length);
}
return shouldPrependForwardSlash ? prependForwardSlash(id) : id;
}
async function resolveIdToUrl(loader, id, root) {
let resultId = await loader.resolveId(id, void 0);
if (!resultId && id.endsWith(".jsx")) {
resultId = await loader.resolveId(id.slice(0, -4), void 0);
}
if (!resultId) {
return VALID_ID_PREFIX + id;
}
if (path.isAbsolute(resultId)) {
const normalizedRoot = root && normalizePath(fileURLToPath(root));
if (normalizedRoot && resultId.startsWith(normalizedRoot)) {
return resultId.slice(normalizedRoot.length - 1);
} else {
return "/@fs" + prependForwardSlash(resultId);
}
}
return VALID_ID_PREFIX + resultId;
}
export {
normalizePath,
resolveIdToUrl,
resolvePath,
rootRelativePath
};