github-actions[bot] 36df852972 [1.x] Publish packages (#916) 2 days ago
..
src 538d0f3f5e build(deps): bump @noble/hashes from 1.8.0 to 2.0.1 (#863) 2 days ago
test 5c3fb46cf5 Add programId to PdaValueNode (#915) 2 days ago
.gitignore 12b373877c Add nodes-from-anchor package (#8) 1 year ago
.prettierignore 760dda5775 Inline scripts in packages (#842) 2 months ago
CHANGELOG.md 36df852972 [1.x] Publish packages (#916) 2 days ago
LICENSE 1794ecdd3f Update license dates (#835) 2 months ago
README.md 9936e036da Add support for default shank ix discriminators in nodes-from-anchor (#590) 6 months ago
package.json 36df852972 [1.x] Publish packages (#916) 2 days ago
tsconfig.declarations.json 12b373877c Add nodes-from-anchor package (#8) 1 year ago
tsconfig.json 760dda5775 Inline scripts in packages (#842) 2 months ago
tsup.config.ts 760dda5775 Inline scripts in packages (#842) 2 months ago
vitest.config.mts 760dda5775 Inline scripts in packages (#842) 2 months ago

README.md

Codama ➤ Nodes From Anchor

npm npm-downloads

This package converts Anchor IDLs from various versions into Codama IDLs.

Installation

pnpm install @codama/nodes-from-anchor

[!NOTE]

  • This package is not included in the main codama package.
  • If metadata.origin is not set on the IDL, it is assumed to be "anchor". If you are trying to parse a Shank IDL, be sure that origin is set to "shank" so discriminators can be set correctly.

Functions

rootNodeFromAnchor(anchorIdl)

This function takes a valid Anchor IDL and returns a RootNode.

// node ./codama.mjs
import { rootNodeFromAnchor } from '@codama/nodes-from-anchor';
import { createFromRoot } from 'codama';
import { readFileSync } from 'node:fs';
import path from 'path';

// Read the content of your IDL file.
const anchorIdlPath = path.join(__dirname, 'target', 'idl', 'anchor_program.json');
const anchorIdl = JSON.parse(readFileSync(anchorIdlPath, 'utf-8'));

// Parse it into a Codama IDL.
const codama = createFromRoot(rootNodeFromAnchor(anchorIdl));