multiformats

Bindings to the js implementation of multiformats.

Package Version Hex Docs

Currently only the sha256 hasher is supported.

npm install --save multiformats@13
gleam add multiformats@1
import dag_json
import multiformats/cid
import multiformats/hashes/sha256

pub fn main() {
  let data = // some json
  let bytes = dag_json.encode(data)
  let multihash = sha256.digest(bytes)
  cid.create_v1(dag_json.code(), multihash)
  |> cid.to_string
}

Further documentation can be found at https://hexdocs.pm/multiformats.

Use in the browser

This version exposes a promises based API that works in the browser and on node. node has an implementation of the WebCrypto API.

The javascript package that this module binds to is indicated using the browser field of the package.json file. more info.

If bundling you need to ensure that your bundler will use this field. For example rollup using the @rollup/plugin-node-resolve plugin requires configuring as the default behaviour is to ignore the browser field.

import dag_json
import multiformats/cid
import multiformats/hashes/sha256_browser as sha256
import gleam/javascript/promise

pub fn main() {
  let data = // some json
  let bytes = dag_json.encode(data)
  use multihash <- promise.map(sha256.digest(bytes))
  cid.create_v1(dag_json.code(), multihash)
  |> cid.to_string
}

Development

gleam run   # Run the project
gleam test  # Run the tests

Credit

Created for EYG, a new integration focused programming language.

Search Document