1.0.0-alpha.1 • Published 7 months ago

jucid-cardano v1.0.0-alpha.1

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Lucid Fork

Jucid is JSHy's fork of Lucid (Jshy + Lucid = Jucid). Lucid accidentally introduces memory leaks into applications due to incorrect memory management of WASM objects. Jucid handles internal memory correctly, exposes new interfaces to allow you to management objects you use correclty, and is a drop-in replacement for Lucid. Once this fork is merged into Lucid, it is unlikely it will be maintained.

Get started

NPM

npm install jucid-cardano

Deno 🦕

For JavaScript and TypeScript

import { jucid } from "https://deno.land/x/jucid@1.0.0-alpha.1/mod.ts";

Web

<script type="module">
  import { Lucid } from "https://unpkg.com/jucid@1.0.0-alpha.1/web/mod.js";
  // ...
</script>

Build from source

Build NPM and Web target

deno task build

Outputs a dist folder

Examples

  • Coming Soon

Basic usage

// import { Blockfrost, Lucid } from "https://deno.land/x/jucid@1.0.0-alpha.1/mod.ts"; Deno
import { Blockfrost, Lucid } from "jucid-cardano"; // NPM

const lucid = await Lucid.new(
  new Blockfrost("https://cardano-preview.blockfrost.io/api/v0", "<projectId>"),
  "Preview"
);

// Assumes you are in a browser environment
const api = await window.cardano.nami.enable();
lucid.selectWallet(api);

const tx = lucid.newTx().payToAddress("addr...", { lovelace: 5000000n });
const completeTx = await tx.complete();
const signedTx = await completeTx.sign();

const txHash = await signedTx.submit();
Freeables.free(tx, completeTx, signedTx);

console.log(txHash);

Test

deno task test

Build Core

This library is built on top of a customized version of the serialization-lib (cardano-multiplatform-lib) and on top of the message-signing library, which are written in Rust.

deno task build:core

Test Core

deno task test:core

Docs

View docs 📖

You can generate documentation with:

deno doc

Compatibility

Lucid is an ES Module, so to run it in the browser any bundler which allows for top level await and WebAssembly is recommended. If you use Webpack 5 enable in the webpack.config.js:

experiments: {
    asyncWebAssembly: true,
    topLevelAwait: true,
    layers: true // optional, with some bundlers/frameworks it doesn't work without
  }

To run the library in Node.js you need to set {"type" : "module"} in your project's package.json. Otherwise you will get import issues.

Contributing

Contributions and PRs are welcome!\ The contribution instructions.