LiveSvelte.SSR behaviour (LiveSvelte v0.18.0)

Copy Markdown View Source

A behaviour for rendering Svelte components server-side.

To define a custom renderer, change the application config in config.exs:

config :live_svelte, ssr_module: MyCustomSSRModule

Telemetry

Exposes a telemetry span for each render under the key [:live_svelte, :ssr].

The following events are emitted:

  • [:live_svelte, :ssr, :start] — fired when a render begins. Metadata: %{component: name, props: props, slots: slots}.

  • [:live_svelte, :ssr, :stop] — fired when a render completes successfully. Metadata: same. Measurements include %{duration: duration} in native time units (convert with :erlang.convert_time_unit(duration, :native, :millisecond)).

  • [:live_svelte, :ssr, :exception] — fired when the renderer raises. The exception is re-raised after the event is emitted.

Summary

Types

A render response which should take the shape

Types

component_name()

@type component_name() :: String.t()

props()

@type props() :: %{optional(String.t() | atom()) => any()}

render_response()

@type render_response() :: %{
  required(String.t()) =>
    %{required(String.t()) => String.t() | nil} | String.t()
}

A render response which should take the shape:

%{
  "css" => %{
    "code" => String.t | nil,
    "map" => String.t | nil
  },
  "head" => String.t,
  "html" => String.t
}

slots()

@type slots() :: %{optional(String.t() | atom()) => any()}

Callbacks

render(component_name, props, slots)

@callback render(component_name(), props(), slots()) :: render_response() | no_return()

Functions

render(name, props, slots)

@spec render(component_name(), props(), slots()) :: render_response() | no_return()

server_path()

This function is deprecated. Use LiveSvelte.SSR.NodeJS.server_path/0 instead..