Arweave Bundles
A library for creating, editing, reading and verifying bundles.
See ANS-104 for more details.
Installing the library
Using npm:
npm install ans104
Using yarn:
yarn add ans104
Creating bundles
import { bundleAndSignData } from "ans104";
const dataItems = [
{ data: "some data" },
{ data: "some other data" },
];
const signer = new ArweaveSigner(jwk);
const bundle = bundleAndSignData(dataItems, jwk);
It's as simple as that! All the binary encoding is handled for you.
Creating and using a DataItem
import { createData } from "ans104";
const data = { data: "some data" };
const signer = new ArweaveSigner(jwk);
const dataItem = createData(data, signer);
const owner = dataItem.owner;
await dataItem.sign(jwk);
assert(owner == jwk.n);
Get a DataItem in a bundle
const bundle = bundleAndSignData(dataItems, jwk);
const byIndex = bundle.get(0);
const byId = bundle.get("hKMMPNh_emBf8v_at1tFzNYACisyMQNcKzeeE1QE9p8");
const all = bundle.items;
Submit a transaction
const bundle = bundleAndSignData(dataItems, jwk);
const tx = await bundle.toTransaction(arweave, jwk);
tx.addTag('MyTag', 'value1');
tx.addTag('MyTag', 'value2');
await arweave.transactions.sign(tx);
await arweave.transactions.post(tx);
Parse a bundle binary
import { unbundleData } from "ans104";
const data = await arweave.transactions.getData("hKMMPNh_emBf8v_at1tFzNYACisyMQNcKzeeE1QE9p8");
const bundle = new Bundle(data);
File API
The file API stores the items in the filesystem meaning you can bundle more items without hitting the NodeJS memory
limit