Skip to content

ui-router-server / ui-router-server / Verdict

Type Alias: Verdict ​

ts
type Verdict = 
  | {
  kind: "shell";
  mount: string;
  status?: number;
}
  | {
  kind: "redirect";
  location: string;
  mount: string;
  status: number;
}
  | {
  delegate: string;
  kind: "delegate";
  mount: string;
  params: RawParams;
  state: string;
  subpath: string;
}
  | {
  kind: "response";
  mount: string;
  params: RawParams;
  state: string;
  subpath: string;
}
  | {
  kind: "notFound";
  mount?: string;
};

Defined in: index.ts:170

What the caller should serve for a pathname — the one output of ServerRouter.resolve. Discriminate on kind. (Consumer note: under oxlint's switch-exhaustiveness-check + consistent-return combination, an if-chain reads cleaner than a switch over this union.)

Union Members ​

Type Literal ​

ts
{
  kind: "shell";
  mount: string;
  status?: number;
}

Serve the app shell. Status precedence: when status is absent, serve the shell however you normally would — including 304 conditional responses. When it is set (404 via the otherwise projection today; 401/403-with-shell for a future auth tier), the verdict's status wins outright — and you must suppress the conditional path BY STRIPPING the request's validators (If-None-Match, If-Modified-Since) before the assets fetch, so it returns 200 + full body to relabel. Never relabel a 304 itself: it has no body (a 404 with a null body is malformed) and would let a probe read cache freshness for a path that doesn't exist.

NameTypeDescriptionDefined in
kind"shell"Discriminates the shell verdict.index.ts:184
mountstringBase of the mount that owned the pathname.index.ts:186
status?numberStatus to serve the shell as; absent means serve it however you normally would.index.ts:188

Type Literal ​

ts
{
  kind: "redirect";
  location: string;
  mount: string;
  status: number;
}

Redirect to location: the mount-joined target path, which MAY carry its own query string when the target declares search params. Callers preserving the request's search must MERGE query params into it — string concatenation (location + url.search) produces ?a=1?b=2. The matcher tier resolves pathnames only: incoming search values never flow into redirect params.

NameTypeDescriptionDefined in
kind"redirect"Discriminates the redirect verdict.index.ts:200
locationstringThe mount-joined target path; merge the request's search with mergeSearch.index.ts:204
mountstringBase of the mount that owned the pathname.index.ts:202
statusnumberRedirect status to answer with: the matched state's RouteDeclaration.redirectStatusCode, else 302.index.ts:206

Type Literal ​

ts
{
  delegate: string;
  kind: "delegate";
  mount: string;
  params: RawParams;
  state: string;
  subpath: string;
}

Hand the request to the host's handler for delegate: the pathname matched a state that declares RouteDeclaration.delegate. Answer any method and any Accept with it, not only navigations.

NameTypeDescriptionDefined in
delegatestringThe key the matched state names; the host maps it to a handler.index.ts:221
kind"delegate"Discriminates the delegate verdict.index.ts:215
mountstringBase of the mount that owned the pathname.index.ts:217
paramsRawParamsThe params the pathname alone resolves; search params hold their declared defaults.index.ts:225
statestringName of the matched state.index.ts:223
subpathstringThe pathname within the mount, its base removed ('' at the bare base).index.ts:219

Type Literal ​

ts
{
  kind: "response";
  mount: string;
  params: RawParams;
  state: string;
  subpath: string;
}

Answer with the Response the handler bound to state builds from its resolves: the pathname matched a state that declares RouteDeclaration.response, decided by url matching alone, with no transition. Never serve the shell for it.

NameTypeDescriptionDefined in
kind"response"Discriminates the response verdict.index.ts:235
mountstringBase of the mount that owned the pathname.index.ts:237
paramsRawParamsThe params the pathname alone resolves; search params hold their declared defaults.index.ts:243
statestringName of the matched response state; the host maps it to a handler.index.ts:241
subpathstringThe pathname within the mount, its base removed ('' at the bare base).index.ts:239

Type Literal ​

ts
{
  kind: "notFound";
  mount?: string;
}

mount is set when a mount owned the pathname but nothing matched (per-mount 404s); absent when no mount matched at all.

NameTypeDescriptionDefined in
kind"notFound"Discriminates the no-route verdict.index.ts:248
mount?stringBase of the mount that owned the pathname, when one did.index.ts:250