🚀 DAY 4 OF LAUNCH WEEK: Introducing GitHub Actions Scanning Support.Learn more →
Socket
Book a DemoInstallSign in
Socket

ckt-lumos-molecule

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ckt-lumos-molecule

Molecule parser for CKB

latest
Source
npmnpm
Version
0.30.0
Version published
Maintainers
1
Created
Source

@ckb-lumos/molecule

A molecule parser written in JavaScript that helps developers to parse molecule into a codec map.

const { createParser } = require("@ckb-lumos/molecule");

const parser = createParser();
const codecMap = parser.parse(`
  array Uint8 [byte; 1];
`);

codecMap.Uint8.pack(1);

lumos-molecule-codegen

A CLI to generate a set of TypeScript-friendly codec from a Molecule schema file. To use it, you need to install @ckb-lumos/molecule and @ckb-lumos/codec first. The @ckb-lumos/molecule could be devDependencies if you only use it for codegen.

npm install -D @ckb-lumos/molecule
npm install @ckb-lumos/codec

Then you can create a lumos-molecule-codegen.json file to configure the codegen.

Note: if you find the npx lumos-molecule-codegen command is not found, please try to replace npx with node_modules/.bin/lumos-molecule-codegen.

Single File

// lumos-molecule-codegen.json
{
  // keep | camelcase
  objectKeyFormat: "camelcase",
  // prepend the import statement to custom and override the generated codec
  prepend: "import { Uint32, Uint64, Uint128 } from './customized'",
  // the input schema file
  schemaFile: "blockchain.mol",
}

Finally, run the following command to generate code to write to generated.ts.

npx lumos-molecule-codegen > generated.ts

Codegen Directory

To generate all the molecule files in a directory that match the pattern of **/*.mol, you can use the following configuration.

{
  // keep | camelcase
  objectKeyFormat: "camelcase",
  // prepend the import statement to custom and override the generated codec
  // to make the relative import work, you need to run the command in the same directory as the `customized` directory
  prepend: "import { Uint32, Uint64, Uint128 } from './customized'",
  // the input schema directory, all **/*.mol in the directory will be processed
  schemaDir: "schemas",
  // the output directory
  outDir: "generated",
}

Then run the following command to generate code to the generated directory.

npx lumos-molecule-codegen

Known Issues

The parser inside @ckb-lumos/molecule is based on the EBNF, but the Rust implementation is based on the Pest, there are some differences between them, such as

  • comment starts with #
  • comment defined in the struct, table, or union is not supported well

Therefore, to use lumos-molecule-codegen, you need to make sure the comments should not be placed

FAQs

Package last updated on 14 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts