Spark DSL extension for defining typed Phoenix channel event subscriptions.
Declares which Ash PubSub publications a channel intercepts. For each declared
event, AshTypescript reads the publication's returns type and generates a
typed TypeScript payload type. An event map and typed subscription helper are
also generated for the channel.
The recommended way to get typed payloads is to use transform :some_calc on
publications, pointing to a resource calculation with :auto typing. Ash
auto-derives the returns type from the calculation expression. You can also
use explicit returns: with an anonymous function transform.
Usage
defmodule MyAppWeb.OrgAdminChannel do
use AshTypescript.TypedChannel
@impl true
def join("org_admin:" <> org_id, _payload, socket) do
{:ok, socket}
end
typed_channel do
resource MyApp.Post do
publish :post_created
publish :post_updated
end
resource MyApp.Comment do
publish :comment_created
end
end
end