# All files / js ssr.ts

0% Statements 0/8
0% Branches 0/4
0% Functions 0/6
0% Lines 0/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40

     import 'vue-sonner/style.css';
    import { createInertiaApp } from '@inertiajs/vue3';
    import createServer from '@inertiajs/vue3/server';
    import FlashToasts from '@/components/FlashToasts.vue';
    import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
    import { Toaster } from 'vue-sonner';
    import { createSSRApp, DefineComponent, Fragment, h } from 'vue';
    import { renderToString } from 'vue/server-renderer';

    const appName = import.meta.env.VITE_APP_NAME || 'JobCardOnline';

    createServer(
        (page) =>
            createInertiaApp({
                page,
                render: renderToString,
                title: (title) => (title ? `${title} - ${appName}` : appName),
                resolve: (name) =>
                    resolvePageComponent(
                        `./pages/${name}.vue`,
                        import.meta.glob<DefineComponent>('./pages/**/*.vue'),
                    ),
                setup: ({ App, props, plugin }) =>
                    createSSRApp({
                        render: () =>
                            h(Fragment, [
                                h(App, props),
                                h(Toaster, {
                                    closeButton: true,
                                    position: 'top-right',
                                    richColors: true,
                                    theme: 'system',
                                }),
                                h(FlashToasts),
                            ]),
                    }).use(plugin),
            }),
        { cluster: true },
    );