Files
dealplustech/node_modules/astro/dist/vite-plugin-astro-server/controller.js
Kunthawat Greethong 6562a1748f fix: Fix product page syntax errors
1. Remove duplicate/broken code in product tables section
2. Fix PostCSS config for Tailwind 4
3. Add @tailwindcss/postcss dependency
4. Remove --production flag from Dockerfile (sharp required)

All fixes enable successful Docker build with favicon working.
2026-03-03 14:57:46 +07:00

75 lines
1.7 KiB
JavaScript

import {
clearRouteError,
createServerState,
setRouteError,
setServerError
} from "./server-state.js";
function createController(params) {
if ("loader" in params) {
return createLoaderController(params.loader);
} else {
return createBaseController(params);
}
}
function createBaseController({ reload }) {
const serverState = createServerState();
const onFileChange = () => {
if (serverState.state === "error") {
reload();
}
};
const onHMRError = (payload) => {
let msg = payload?.err?.message ?? "Unknown error";
let stack = payload?.err?.stack ?? "Unknown stack";
let error = new Error(msg);
Object.defineProperty(error, "stack", {
value: stack
});
setServerError(serverState, error);
};
return {
state: serverState,
onFileChange,
onHMRError
};
}
function createLoaderController(loader) {
const controller = createBaseController({
reload() {
loader.clientReload();
}
});
const baseOnFileChange = controller.onFileChange;
controller.onFileChange = (...args) => {
if (controller.state.state === "error") {
loader.eachModule((mod) => {
if (mod.ssrError) {
loader.invalidateModule(mod);
}
});
}
baseOnFileChange(...args);
};
loader.events.on("file-change", controller.onFileChange);
loader.events.on("hmr-error", controller.onHMRError);
return controller;
}
async function runWithErrorHandling({
controller: { state },
pathname,
run,
onError
}) {
try {
await run();
clearRouteError(state, pathname);
} catch (err) {
const error = onError(err);
setRouteError(state, pathname, error);
}
}
export {
createController,
runWithErrorHandling
};