Comparing version 0.2.7 to 0.2.8
@@ -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) { |
@@ -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", |
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
90585
18
1948