Comparing version 0.2.1 to 0.2.2
@@ -5,7 +5,7 @@ /// <reference types="node" /> | ||
import Arweave from "arweave"; | ||
import { BundleInterface } from "./BundleInterface"; | ||
import { JWKInterface } from "./interface-jwk"; | ||
import { BundleInterface } from './BundleInterface'; | ||
import { JWKInterface } from './interface-jwk'; | ||
export default class Bundle implements BundleInterface { | ||
readonly binary: Buffer; | ||
constructor(binary: Buffer, verify?: boolean); | ||
constructor(binary: Buffer); | ||
get length(): number; | ||
@@ -18,4 +18,3 @@ get items(): DataItem[]; | ||
toTransaction(arweave: Arweave, jwk: JWKInterface): Promise<Transaction>; | ||
verify(): boolean; | ||
private static _verify; | ||
verify(): Promise<boolean>; | ||
private getOffset; | ||
@@ -26,2 +25,3 @@ private getByIndex; | ||
private getBundleStart; | ||
private getItems; | ||
} |
@@ -10,33 +10,8 @@ "use strict"; | ||
binary; | ||
constructor(binary, verify = false) { | ||
if (verify) { | ||
if (!Bundle._verify(binary)) | ||
throw new Error("Binary not valid bundle"); | ||
} | ||
constructor(binary) { | ||
this.binary = binary; | ||
} | ||
get length() { | ||
return this.getDataItemCount(); | ||
} | ||
get items() { | ||
const items = new Array(this.length); | ||
let offset = 0; | ||
const bundleStart = this.getBundleStart(); | ||
let counter = 0; | ||
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) { | ||
const _offset = utils_1.byteArrayToLong(this.binary.subarray(i, i + 32)); | ||
const _id = this.binary.subarray(i + 32, i + 64); | ||
const dataItemStart = bundleStart + offset; | ||
const bytes = this.binary.subarray(dataItemStart, dataItemStart + _offset); | ||
offset += _offset; | ||
const item = new DataItem_1.default(bytes); | ||
item.rawId = _id; | ||
items[counter] = item; | ||
counter++; | ||
} | ||
return items; | ||
} | ||
getRaw() { | ||
return this.binary; | ||
} | ||
get length() { return this.getDataItemCount(); } | ||
get items() { return this.getItems(); } | ||
getRaw() { return this.binary; } | ||
get(index) { | ||
@@ -55,3 +30,3 @@ if (typeof index === "number") { | ||
const ids = []; | ||
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) { | ||
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) { | ||
ids.push(base64url_1.default.encode(this.binary.subarray(i + 32, i + 64))); | ||
@@ -65,3 +40,3 @@ } | ||
} | ||
const start = 64 + 64 * index; | ||
const start = 64 + (64 * index); | ||
return base64url_1.default.encode(this.binary.subarray(start, start + 32)); | ||
@@ -71,3 +46,3 @@ } | ||
const tx = await arweave.createTransaction({ | ||
data: this.binary, | ||
data: this.binary | ||
}, jwk); | ||
@@ -78,21 +53,10 @@ tx.addTag("Bundle-Format", "binary"); | ||
} | ||
verify() { | ||
return Bundle._verify(this.binary); | ||
async verify() { | ||
const items = this.getItems(); | ||
const validity = await Promise.all(items.map(item => item.isValid())); | ||
return validity.every(valid => valid === true); | ||
} | ||
static _verify(binary) { | ||
const length = utils_1.byteArrayToLong(binary.subarray(0, 32)); | ||
let offset = 32 + 64 * length; | ||
for (let i = HEADER_START; i < HEADER_START + 64 * length; i += 64) { | ||
const _offset = utils_1.byteArrayToLong(binary.subarray(i, i + 32)); | ||
const item = new DataItem_1.default(binary.subarray(offset, offset + _offset)); | ||
if (!item.isValid()) { | ||
return false; | ||
} | ||
offset += _offset; | ||
} | ||
return true; | ||
} | ||
getOffset(id) { | ||
let offset = 0; | ||
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) { | ||
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) { | ||
const _offset = utils_1.byteArrayToLong(this.binary.subarray(i, i + 32)); | ||
@@ -109,6 +73,6 @@ offset += _offset; | ||
let offset = 0; | ||
const headerStart = 32 + 64 * index; | ||
const headerStart = 32 + (64 * index); | ||
const dataItemSize = utils_1.byteArrayToLong(this.binary.subarray(headerStart, headerStart + 32)); | ||
let counter = 0; | ||
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) { | ||
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) { | ||
if (counter == index) { | ||
@@ -140,6 +104,24 @@ break; | ||
getBundleStart() { | ||
return 32 + 64 * this.length; | ||
return 32 + (64 * this.length); | ||
} | ||
getItems() { | ||
const items = new Array(this.length); | ||
let offset = 0; | ||
const bundleStart = this.getBundleStart(); | ||
let counter = 0; | ||
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) { | ||
const _offset = utils_1.byteArrayToLong(this.binary.subarray(i, i + 32)); | ||
const _id = this.binary.subarray(i + 32, i + 64); | ||
const dataItemStart = bundleStart + offset; | ||
const bytes = this.binary.subarray(dataItemStart, dataItemStart + _offset); | ||
offset += _offset; | ||
const item = new DataItem_1.default(bytes); | ||
item.rawId = _id; | ||
items[counter] = item; | ||
counter++; | ||
} | ||
return items; | ||
} | ||
} | ||
exports.default = Bundle; | ||
//# sourceMappingURL=Bundle.js.map |
{ | ||
"name": "arbundles", | ||
"version": "0.2.1", | ||
"version": "0.2.2", | ||
"description": "Arweave bundling library", | ||
@@ -5,0 +5,0 @@ "author": "Josh Benaron <joshbenaron@gmail.com>", |
@@ -23,7 +23,7 @@ # Arweave Bundles | ||
```ts | ||
import { bundleAndSignData } from "arbundles"; | ||
import { bundleAndSignData, createData } from "arbundles"; | ||
const dataItems = [ | ||
{ data: "some data" }, | ||
{ data: "some other data" }, | ||
createData("some data"), | ||
createData("some other data") | ||
]; | ||
@@ -38,3 +38,3 @@ | ||
## Creating and using a DataItem | ||
## Creating and sending data to a Bundler | ||
@@ -44,7 +44,5 @@ ```ts | ||
const data = { data: "some data" }; | ||
const signer = new ArweaveSigner(jwk); | ||
const dataItem = await createData(data, signer); | ||
const dataItem = createData("some message", signer); | ||
@@ -57,3 +55,3 @@ // Get owner in base64url encoded string | ||
assert(owner == jwk.n); | ||
const response = dataItem.sendToBundler(); | ||
``` | ||
@@ -60,0 +58,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
90645
1949
105