1.0.0 • Published 3 years ago

ans104 v1.0.0

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
3 years ago

Arweave Bundles

Please note this package has been moved to arbundles and this package will be deprecated

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 = await 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 = await createData(data, signer);

// Get owner in base64url encoded string
const owner = dataItem.owner;

// Sign a single DataItem 
await dataItem.sign(jwk);

assert(owner == jwk.n);

Get a DataItem in a bundle

const bundle = await bundleAndSignData(dataItems, jwk);

// Get by index
const byIndex = bundle.get(0);

// Get by transaction id
const byId = bundle.get("hKMMPNh_emBf8v_at1tFzNYACisyMQNcKzeeE1QE9p8");

// Get all DataItems
const all = bundle.items;

Submit a transaction

const bundle = await bundleAndSignData(dataItems, jwk);

// Convert bundle to Arweave transaction
const tx = await bundle.toTransaction(arweave, jwk);

// Add some more tags after creation.
tx.addTag('MyTag', 'value1');
tx.addTag('MyTag', 'value2');

await arweave.transactions.sign(tx, jwk);
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

This API is experimental so avoid use in production. There's one issue that exists that may affect it's overall functionality and could lead to breaking changes.

The file API stores the items in the filesystem meaning you can bundle more items without hitting the NodeJS memory limit.

Docs coming soon...

1.0.0

3 years ago

0.6.6

3 years ago

0.6.3

3 years ago

0.6.2

3 years ago

0.6.5

3 years ago

0.6.4

3 years ago

0.6.1

3 years ago

0.6.0

3 years ago

0.5.8

3 years ago

0.5.7

3 years ago

0.5.9

3 years ago

0.5.4

3 years ago

0.5.3

3 years ago

0.5.6

3 years ago

0.5.5

3 years ago

0.5.0

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.3.9

3 years ago

0.3.0

3 years ago

0.3.6

3 years ago

0.3.5

3 years ago

0.3.8

3 years ago

0.3.7

3 years ago

0.4.1

3 years ago

0.3.2

3 years ago

0.4.0

3 years ago

0.3.1

3 years ago

0.3.4

3 years ago

0.4.2

3 years ago

0.3.3

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.4

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago