Walks a freshly generated %Ash.Info.Manifest{} once and populates
custom.ash_typescript on every struct that carries ash_typescript-owned
data:
manifest.resources[i].custom.ash_typescript— for resources that use theAshTypescript.Resourceextension. Captures thefield_namesandargument_namesDSL mappings (forward + reverse) plus pre-computed formatted client names for the built-in formatters.manifest.types[i].resource.custom.ash_typescript— same shape as above, applied to the embedded%Manifest.Resource{}carried inside eachkind: :embedded_resourcetype entry.manifest.types[i].custom.ash_typescript— forAsh.Type.NewType/ TypedStruct / custom type modules that exporttypescript_field_names/0.manifest.entrypoints[i].custom.ash_typescript— mirrors theconfig.ash_typescriptpayload thatRpcConfigCollectorpassed intoAsh.Info.Manifest.Generator.generate/1, plus pre-computed metadata field-name mappings derived fromrpc_action.metadata_field_names.
Runtime callers should read decorated data via AshTypescript.Manifest.Custom
rather than poking at :custom directly.
This module is pure: given a manifest in, returns a manifest out. All
module-level information it needs (Spark DSL state on resource modules,
typescript_field_names/0 callbacks) is queried via the module atoms that
the manifest already references — the caller (BuildManifest) is responsible
for ensuring every referenced module is compiled before decoration runs.
Summary
Functions
Returns a decorated copy of manifest.
Functions
@spec decorate(Ash.Info.Manifest.t()) :: Ash.Info.Manifest.t()
Returns a decorated copy of manifest.