Socket
Socket
Sign inDemoInstall

arbundles

Package Overview
Dependencies
Maintainers
1
Versions
90
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

arbundles - npm Package Compare versions

Comparing version 0.2.7 to 0.2.8

1

build/Bundle.d.ts

@@ -14,2 +14,3 @@ /// <reference types="node" />

get(index: number | string): DataItem;
getSizes(): number[];
getIds(): string[];

@@ -16,0 +17,0 @@ getIdBy(index: number): string;

@@ -7,2 +7,3 @@ "use strict";

const DataItem_1 = tslib_1.__importDefault(require("./DataItem"));
const crypto = tslib_1.__importStar(require("crypto"));
const HEADER_START = 32;

@@ -28,2 +29,9 @@ class Bundle {

}
getSizes() {
const ids = [];
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) {
ids.push(utils_1.byteArrayToLong(this.binary.subarray(i, i + 32)));
}
return ids;
}
getIds() {

@@ -53,3 +61,7 @@ const ids = [];

const items = this.getItems();
const validity = await Promise.all(items.map(item => item.isValid()));
const validity = await Promise.all(items.map(item => {
const valid = item.isValid();
const expected = base64url_1.default(crypto.createHash("sha256").update(item.rawSignature).digest());
return valid && item.id === expected;
}));
return validity.every(valid => valid === true);

@@ -84,4 +96,7 @@ }

const dataItemStart = bundleStart + offset;
const slice = this.binary.subarray(dataItemStart, dataItemStart + dataItemSize);
return new DataItem_1.default(slice);
const slice = this.binary.subarray(dataItemStart, dataItemStart + dataItemSize + 200);
console.log(slice.toString());
const item = new DataItem_1.default(slice);
item.rawId = this.binary.slice(32 + (64 * index), 64 + (64 * index));
return item;
}

@@ -88,0 +103,0 @@ getById(id) {

4

build/DataItem.js

@@ -31,3 +31,3 @@ "use strict";

get id() {
return base64url_1.default.encode(this._id);
return base64url_1.default.encode(this.rawId);
}

@@ -47,3 +47,3 @@ set id(id) {

get rawSignature() {
return this.binary.subarray(0, 512);
return this.binary.subarray(2, 514);
}

@@ -50,0 +50,0 @@ get signature() {

@@ -1,5 +0,4 @@

import { DataItemCreateOptions } from "../build/ar-data-base";
import { Signer } from "../build/signing";
import FileBundle from "./FileBundle";
import FileDataItem from "./FileDataItem";
export declare function bundleAndSignData(dataItems: (DataItemCreateOptions | FileDataItem)[], signer: Signer, dir?: string): Promise<FileBundle>;
import { Signer } from '../build/signing';
import FileBundle from './FileBundle';
import FileDataItem from './FileDataItem';
export declare function bundleAndSignData(dataItems: (FileDataItem)[], signer: Signer, dir?: string): Promise<FileBundle>;

@@ -7,6 +7,4 @@ "use strict";

const fs = tslib_1.__importStar(require("fs"));
const createData_1 = require("./createData");
const utils_1 = require("../build/utils");
const FileBundle_1 = tslib_1.__importDefault(require("./FileBundle"));
const FileDataItem_1 = tslib_1.__importDefault(require("./FileDataItem"));
async function bundleAndSignData(dataItems, signer, dir) {

@@ -19,10 +17,4 @@ const headerFile = await tmp_promise_1.file({ dir });

let dataItem;
if (FileDataItem_1.default.isDataItem(item)) {
dataItem = item;
if (!dataItem.isSigned()) {
await dataItem.sign(signer);
}
}
else {
dataItem = await createData_1.createData(item, signer);
dataItem = item;
if (!dataItem.isSigned()) {
await dataItem.sign(signer);

@@ -29,0 +21,0 @@ }

@@ -1,12 +0,4 @@

/// <reference types="node" />
import FileDataItem from "./FileDataItem";
import { DataItemCreateOptions } from "../build/ar-data-base";
import { PathLike } from "fs";
import * as fs from "fs";
import { Signer } from "../build/signing";
interface CreateFileDataItemOptions {
path?: PathLike;
stream?: fs.WriteStream;
}
export declare function createData(opts: DataItemCreateOptions, signer: Signer, createOpts?: CreateFileDataItemOptions): Promise<FileDataItem>;
export {};
import { Signer } from '../build/signing';
export declare function createData(data: string | Uint8Array, signer: Signer, opts?: DataItemCreateOptions): Promise<FileDataItem>;

@@ -15,13 +15,11 @@ "use strict";

const OWNER_LENGTH = 512;
async function createData(opts, signer, createOpts) {
async function createData(data, signer, opts) {
const filename = await tmp_promise_1.tmpName();
const stream = createOpts?.stream ?? fs.createWriteStream(filename);
const stream = fs.createWriteStream(filename);
const _owner = signer.publicKey;
assert_1.default(_owner.byteLength == OWNER_LENGTH, new Error(`Public key isn't the correct length: ${_owner.byteLength}`));
const _target = opts.target ? base64url_1.default.toBuffer(opts.target) : null;
const _anchor = opts.anchor ? buffer_1.Buffer.from(opts.anchor) : null;
const _tags = (opts.tags?.length ?? 0) > 0 ? await parser_1.serializeTags(opts.tags) : null;
const _data = typeof opts.data === "string"
? buffer_1.Buffer.from(opts.data)
: buffer_1.Buffer.from(opts.data);
const _target = opts?.target ? base64url_1.default.toBuffer(opts.target) : null;
const _anchor = opts?.anchor ? buffer_1.Buffer.from(opts.anchor) : null;
const _tags = (opts?.tags?.length ?? 0) > 0 ? await parser_1.serializeTags(opts.tags) : null;
const _data = buffer_1.Buffer.from(data);
stream.write(utils_1.shortTo2ByteArray(signer.signatureType));

@@ -40,3 +38,3 @@ stream.write(Uint8Array.from(EMPTY_ARRAY));

}
stream.write(utils_1.longTo8ByteArray(opts.tags?.length ?? 0));
stream.write(utils_1.longTo8ByteArray(opts?.tags?.length ?? 0));
const bytesCount = utils_1.longTo8ByteArray(_tags?.byteLength ?? 0);

@@ -43,0 +41,0 @@ stream.write(bytesCount);

@@ -37,4 +37,4 @@ /// <reference types="node" />

private anchorStart;
private tagsStart;
tagsStart(): Promise<number>;
dataStart(): Promise<number>;
}
{
"name": "arbundles",
"version": "0.2.7",
"version": "0.2.8",
"description": "Arweave bundling library",

@@ -28,2 +28,3 @@ "author": "Josh Benaron <joshbenaron@gmail.com>",

"devDependencies": {
"@textury/ardb": "^1.1.3",
"@types/deep-equal": "^1.0.1",

@@ -30,0 +31,0 @@ "@types/jest": "~26.0.23",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc