Packages
ash_typescript
0.8.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.3
0.15.2
retired
0.15.1
retired
0.15.0
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
retired
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.0
0.3.3
0.3.2
0.3.1
0.2.0
0.1.2
0.1.0
Generate type-safe TypeScript clients directly from your Ash resources and actions, ensuring end-to-end type safety between your backend and frontend.
Current section
Files
Jump to
Current section
Files
documentation/dsls/DSL-AshTypescript.Rpc.md
<!--
This file was generated by Spark. Do not edit it by hand.
-->
# AshTypescript.Rpc
## typescript_rpc
Define available RPC-actions for resources in this domain.
The error handler will be called with (error, context) and should return a modified error map.
If a module is provided, it must export a handle_error/2 function.
Default error handler: {AshTypescript.Rpc.DefaultErrorHandler, :handle_error, []}
Example:
```elixir
error_handler {MyApp.CustomErrorHandler, :handle_error, []}
### or
error_handler MyApp.CustomErrorHandler
show_raised_errors?:
Set to true in development to see full error details.
Keep false in production for security.
```
### Nested DSLs
* [resource](#typescript_rpc-resource)
* rpc_action
* typed_query
### Options
| Name | Type | Default | Docs |
|------|------|---------|------|
| [`error_handler`](#typescript_rpc-error_handler){: #typescript_rpc-error_handler } | `mfa \| module` | `{AshTypescript.Rpc.DefaultErrorHandler, :handle_error, []}` | An MFA or module that implements error handling for RPC operations. |
| [`show_raised_errors?`](#typescript_rpc-show_raised_errors?){: #typescript_rpc-show_raised_errors? } | `boolean` | `false` | Whether to show detailed information for raised exceptions. |
### typescript_rpc.resource
```elixir
resource resource
```
Define available RPC-actions for a resource
### Nested DSLs
* [rpc_action](#typescript_rpc-resource-rpc_action)
* [typed_query](#typescript_rpc-resource-typed_query)
### Arguments
| Name | Type | Default | Docs |
|------|------|---------|------|
| [`resource`](#typescript_rpc-resource-resource){: #typescript_rpc-resource-resource } | `module` | | The resource being configured |
### typescript_rpc.resource.rpc_action
```elixir
rpc_action name, action
```
Define an RPC action that exposes a resource action to TypeScript clients.
Metadata fields: Action metadata can be exposed via `show_metadata` option.
Set to `nil` (default) to expose all metadata fields, `false` or `[]` to disable,
or provide a list of atoms to expose specific fields.
Metadata field naming: Use `metadata_field_names` to map invalid metadata field names
(e.g., `field_1`, `is_valid?`) to valid TypeScript identifiers.
Example: `metadata_field_names [field_1: :field1, is_valid?: :isValid]`
### Arguments
| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#typescript_rpc-resource-rpc_action-name){: #typescript_rpc-resource-rpc_action-name } | `atom` | | The name of the RPC-action |
| [`action`](#typescript_rpc-resource-rpc_action-action){: #typescript_rpc-resource-rpc_action-action } | `atom` | | The resource action to expose |
### Options
| Name | Type | Default | Docs |
|------|------|---------|------|
| [`read_action`](#typescript_rpc-resource-rpc_action-read_action){: #typescript_rpc-resource-rpc_action-read_action } | `atom` | | The read action to use for update and destroy operations when finding records |
| [`show_metadata`](#typescript_rpc-resource-rpc_action-show_metadata){: #typescript_rpc-resource-rpc_action-show_metadata } | `nil \| boolean \| list(atom)` | | Which metadata fields to expose (nil=all, false/[]=none, list=specific fields) |
| [`metadata_field_names`](#typescript_rpc-resource-rpc_action-metadata_field_names){: #typescript_rpc-resource-rpc_action-metadata_field_names } | `list({atom, atom})` | `[]` | Map metadata field names to valid TypeScript identifiers |
### Introspection
Target: `AshTypescript.Rpc.RpcAction`
### typescript_rpc.resource.typed_query
```elixir
typed_query name, action
```
### Arguments
| Name | Type | Default | Docs |
|------|------|---------|------|
| [`name`](#typescript_rpc-resource-typed_query-name){: #typescript_rpc-resource-typed_query-name } | `atom` | | The name of the RPC-action |
| [`action`](#typescript_rpc-resource-typed_query-action){: #typescript_rpc-resource-typed_query-action } | `atom` | | The read action on the resource to query |
### Options
| Name | Type | Default | Docs |
|------|------|---------|------|
| [`ts_result_type_name`](#typescript_rpc-resource-typed_query-ts_result_type_name){: #typescript_rpc-resource-typed_query-ts_result_type_name } | `String.t` | | The name of the TypeScript type for the query result |
| [`ts_fields_const_name`](#typescript_rpc-resource-typed_query-ts_fields_const_name){: #typescript_rpc-resource-typed_query-ts_fields_const_name } | `String.t` | | The name of the constant for the fields, that can be reused by the client to re-run the query |
| [`fields`](#typescript_rpc-resource-typed_query-fields){: #typescript_rpc-resource-typed_query-fields } | `list(any)` | | The fields to query |
### Introspection
Target: `AshTypescript.Rpc.TypedQuery`
### Introspection
Target: `AshTypescript.Rpc.Resource`
<style type="text/css">.spark-required::after { content: "*"; color: red !important; }</style>