Skip to content

@gluonjs/core / packages/ssr/src / SsrRequestOptions

Interface: SsrRequestOptions<Data> ​

Type Parameters ​

Data ​

Data = undefined

Properties ​

assets? ​

readonly optional assets?: AssetManifest


createApp ​

readonly createApp: (context) => GluonApp

Parameters ​

context ​

SsrRequestContext<Data>

Returns ​

GluonApp


headers? ​

readonly optional headers?: Readonly<Record<string, string | undefined>>


load? ​

readonly optional load?: (context) => Data | Promise<Data>

Parameters ​

context ​

Omit<SsrRequestContext<Data>, "data">

Returns ​

Data | Promise<Data>


nonce? ​

readonly optional nonce?: string


resolveTenant? ​

readonly optional resolveTenant?: TenantResolver<TenantJsonValue>


routes? ​

readonly optional routes?: readonly RouteRecordRaw[] | ((store) => readonly RouteRecordRaw[])


signal? ​

readonly optional signal?: AbortSignal


state? ​

readonly optional state?: Readonly<Record<string, unknown>>


styles? ​

readonly optional styles?: StyleManifestSource


tenant? ​

readonly optional tenant?: TenantContext<TenantJsonValue>


url ​

readonly url: string

Example ​

Describe the URL, route table, request loader, and application factory needed for one isolated SSR request:

ts
import { createApp, html } from '@gluonjs/core';
import { renderRequest, type SsrRequestContext, type SsrRequestOptions, type SsrRequestResult } from '@gluonjs/ssr';

type ReportData = { title: string };
const options = {
  url: '/reports/41',
  routes: [{ path: '/reports/:id', name: 'report' }],
  load: ({ router }: Omit<SsrRequestContext<ReportData>, 'data'>) => ({ title: `Report ${router.currentRoute.value.params.id}` }),
  createApp: ({ data }) => createApp(() => html`<main>${data.title}</main>`),
} satisfies SsrRequestOptions<ReportData>;

const response: SsrRequestResult = await renderRequest(options);
console.log(response.html, response.stateScript);

Version-matched documentation. Examples are checked against the public package contracts.