kinobi
TypeScript icon, indicating that this package has built-in type declarations

0.21.4 • Public • Published

Kinobi ➤ Main Library

npm npm-downloads

This package is the main library for Kinobi. It re-exports most of the other packages in the Kinobi monorepo and offers a Kinobi type with a few helpers to help bind everything together.

Installation

pnpm install kinobi

Packages included

This package includes the following packages. Note that some of them also re-export other packages.

The Kinobi helper

Additionally, this package offers a Kinobi type and a few helper functions to help you work with Kinobi IDLs.

Kinobi

The Kinobi interface wraps a RootNode and offers some helper methods to work with it.

export interface Kinobi {
    accept<T>(visitor: Visitor<T>): T;
    clone(): Kinobi;
    getJson(): string;
    getRoot(): RootNode;
    update(visitor: Visitor<Node | null>): void;
}

The accept function allows us to visit the wrapped RootNode using the provided visitor.

// Log the Kinobi IDL in the console.
kinobi.accept(consoleLogVisitor(getDebugStringVisitor({ indent: true })));

The update function also accepts a visitor, but it uses the return value of that visitor to update the wrapped RootNode. This means that, given a RootNode, the provided visitor should also return a RootNode. An error will be thrown otherwise.

// Delete account nodes named "mint".
kinobi.update(deleteNodesVisitor(['[accountNode]mint']));

// Transform all number nodes into u64 number nodes.
kinobi.update(
    bottomUpTransformerVisitor([
        {
            select: '[numberTypeNode]',
            transform: () => numberTypeNode(u64),
        },
    ]),
);

Other helper functions include:

  • clone(): Creates a new instance of the Kinobi interface with a deep copy of the wrapped RootNode.
  • getJson(): Returns the JSON representation of the Kinobi IDL.
  • getRoot(): Returns the wrapped RootNode.
const clonedKinobi = kinobi.clone();
const jsonIdl = kinobi.getJson();
const rootNode = kinobi.getRoot();

createFromRoot(rootNode)

The createFromRoot function creates a new instance of the Kinobi interface from a RootNode.

const kinobi = createFromRoot(rootNode(programNode({ ... })));

createFromJson(jsonIdl)

The createFromJson function creates a new instance of the Kinobi interface from a JSON representation of a RootNode.

const json: string = fs.readFileSync('path/to/kinobiIdl.json', 'utf-8');
const kinobi = createFromJson(json);

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
0.21.4113latest

Version History

VersionDownloads (Last 7 Days)Published
0.21.4113
0.21.32
0.21.21
0.21.11
0.21.01
0.20.668
0.20.51
0.20.413
0.20.31
0.20.21
0.20.11
0.20.01
0.1.01

Package Sidebar

Install

npm i kinobi

Weekly Downloads

205

Version

0.21.4

License

MIT

Unpacked Size

128 kB

Total Files

18

Last publish

Collaborators

  • lorisleiva