Codama ➤ Renderers ➤ JavaScript

This package generates JavaScript clients from your Codama IDLs. The generated clients are compatible with @solana/kit.
Installation
pnpm install @codama/renderers-js
Usage
Add the following script to your Codama configuration file.
{
"scripts": {
"js": {
"from": "@codama/renderers-js",
"args": ["clients/js/src/generated"]
}
}
}
An object can be passed as a second argument to further configure the renderer. See the Options section below for more details.
Options
The renderVisitor accepts the following options.
deleteFolderBeforeRendering | boolean | true | Whether the base directory should be cleaned before generating new files. |
formatCode | boolean | true | Whether we should use Prettier to format the generated code. |
prettierOptions | PrettierOptions | {} | The options to use when formatting the code using Prettier. |
asyncResolvers | string[] | [] | The exhaustive list of ResolverValueNode's names whose implementation is asynchronous in JavaScript. |
customAccountData | string[] | [] | The names of all AccountNodes whose data should be manually written in JavaScript. |
customInstructionData | string[] | [] | The names of all InstructionNodes whose data should be manually written in JavaScript. |
linkOverrides | Record<'accounts' | 'definedTypes' | 'instructions' | 'pdas' | 'programs' | 'resolvers', Record<string, string>> | {} | A object that overrides the import path of link nodes. For instance, { definedTypes: { counter: 'hooked' } } uses the hooked folder to import any link node referring to the counter type. |
dependencyMap | Record<string, string> | {} | A mapping between import aliases and their actual package name or path in JavaScript. |
dependencyVersions | Record<string, string> | {} | A mapping between external package names — e.g. @solana/kit — and the version range we should use for them — e.g. ^5.0.0. The renderer offers default values for all external dependencies it relies on but this option may be used to override some of these values or add new ones. |
internalNodes | string[] | [] | The names of all nodes that should be generated but not exported by the index.ts files. |
nameTransformers | Partial<NameTransformers> | {} | An object that enables us to override the names of any generated type, constant or function. |
nonScalarEnums | string[] | [] | The names of enum variants with no data that should be treated as a data union instead of a native enum type. This is only useful if you are referencing an enum value in your Codama IDL. |
renderParentInstructions | boolean | false | When using nested instructions, whether the parent instructions should also be rendered. When set to false (default), only the instruction leaves are being rendered. |
useGranularImports | boolean | false | Whether to import the @solana/kit library using sub-packages such as @solana/addresses or @solana/codecs-strings. When set to true, the main @solana/kit library is used which enables generated clients to install it as a peerDependency. |
syncPackageJson | boolean | false | Whether to update the dependencies of the existing package.json — or create a new package.json when missing — at the provided packageFolder option if provided. |
packageFolder | string | | The package folder of the generated JS client — i.e. where the package.json lives. Note that this option must be provided for the syncPackageJson option to work. |