import { createInertiaApp } from "@inertiajs/vue3";
import createServer from "@inertiajs/vue3/server";
import { renderToString } from "@vue/server-renderer";
import { createSSRApp, h, DefineComponent } from "vue";
import PrimeVue from "primevue/config";
import ToastService from "primevue/toastservice";

const port = parseInt(import.meta.env.VITE_INERTIA_SSR_PORT || '13714', 10)

createServer((page) =>
    createInertiaApp({
        page,
        render: renderToString,
        resolve: (name: string) => {
            const pages = import.meta.glob<DefineComponent>(
                "./Pages/**/*.vue",
                { eager: true }
            );
            return pages[`./Pages/${name}.vue`];
        },
        setup({ App, props, plugin }) {
            return createSSRApp({
                render: () => h(App, props),
            })
                .use(plugin)
                .use(PrimeVue)
                .use(ToastService);
        },
    }), port
);
