@xyo-network/payload-builder
Advanced tools
Comparing version
import type { Hash, Hex } from '@xylabs/hex'; | ||
import type { AnyObject } from '@xylabs/object'; | ||
import { type Payload, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { type Payload, type WithHashMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { PayloadBuilderBase } from './BuilderBase.ts'; | ||
import type { PayloadBuilderOptions } from './Options.ts'; | ||
export declare class PayloadBuilder<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> extends PayloadBuilderBase<T, O> { | ||
static addSequencedStorageMeta<T extends Payload = Payload>(payload: T, hash?: Hash, dataHash?: Hash): Promise<WithStorageMeta<T>>; | ||
static addHashMeta<T extends Payload>(payload: T): Promise<WithHashMeta<T>>; | ||
static addHashMeta<T extends Payload>(payloads: T[]): Promise<WithHashMeta<T>[]>; | ||
static addSequencedStorageMeta<T extends Payload = Payload>(payload: T): Promise<WithStorageMeta<T>>; | ||
static addStorageMeta<T extends Payload>(payload: T): Promise<WithStorageMeta<T>>; | ||
@@ -9,0 +11,0 @@ static addStorageMeta<T extends Payload>(payloads: T[]): Promise<WithStorageMeta<T>[]>; |
@@ -18,2 +18,4 @@ import type { AnyObject } from '@xylabs/object'; | ||
static omitMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
@@ -20,0 +22,0 @@ static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; |
import type { Hash, Hex } from '@xylabs/hex'; | ||
import type { AnyObject } from '@xylabs/object'; | ||
import { type Payload, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { type Payload, type WithHashMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { PayloadBuilderBase } from './BuilderBase.ts'; | ||
import type { PayloadBuilderOptions } from './Options.ts'; | ||
export declare class PayloadBuilder<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> extends PayloadBuilderBase<T, O> { | ||
static addSequencedStorageMeta<T extends Payload = Payload>(payload: T, hash?: Hash, dataHash?: Hash): Promise<WithStorageMeta<T>>; | ||
static addHashMeta<T extends Payload>(payload: T): Promise<WithHashMeta<T>>; | ||
static addHashMeta<T extends Payload>(payloads: T[]): Promise<WithHashMeta<T>[]>; | ||
static addSequencedStorageMeta<T extends Payload = Payload>(payload: T): Promise<WithStorageMeta<T>>; | ||
static addStorageMeta<T extends Payload>(payload: T): Promise<WithStorageMeta<T>>; | ||
@@ -9,0 +11,0 @@ static addStorageMeta<T extends Payload>(payloads: T[]): Promise<WithStorageMeta<T>[]>; |
@@ -18,2 +18,4 @@ import type { AnyObject } from '@xylabs/object'; | ||
static omitMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
@@ -20,0 +22,0 @@ static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; |
import type { Hash, Hex } from '@xylabs/hex'; | ||
import type { AnyObject } from '@xylabs/object'; | ||
import { type Payload, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { type Payload, type WithHashMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { PayloadBuilderBase } from './BuilderBase.ts'; | ||
import type { PayloadBuilderOptions } from './Options.ts'; | ||
export declare class PayloadBuilder<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> extends PayloadBuilderBase<T, O> { | ||
static addSequencedStorageMeta<T extends Payload = Payload>(payload: T, hash?: Hash, dataHash?: Hash): Promise<WithStorageMeta<T>>; | ||
static addHashMeta<T extends Payload>(payload: T): Promise<WithHashMeta<T>>; | ||
static addHashMeta<T extends Payload>(payloads: T[]): Promise<WithHashMeta<T>[]>; | ||
static addSequencedStorageMeta<T extends Payload = Payload>(payload: T): Promise<WithStorageMeta<T>>; | ||
static addStorageMeta<T extends Payload>(payload: T): Promise<WithStorageMeta<T>>; | ||
@@ -9,0 +11,0 @@ static addStorageMeta<T extends Payload>(payloads: T[]): Promise<WithStorageMeta<T>[]>; |
@@ -18,2 +18,4 @@ import type { AnyObject } from '@xylabs/object'; | ||
static omitMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
@@ -20,0 +22,0 @@ static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; |
{ | ||
"name": "@xyo-network/payload-builder", | ||
"version": "3.6.0-rc.2", | ||
"version": "3.6.0-rc.3", | ||
"description": "Primary SDK for using XYO Protocol 2.0", | ||
@@ -37,4 +37,4 @@ "homepage": "https://xyo.network", | ||
"@xylabs/promise": "^4.4.12", | ||
"@xyo-network/hash": "^3.6.0-rc.2", | ||
"@xyo-network/payload-model": "^3.6.0-rc.2" | ||
"@xyo-network/hash": "^3.6.0-rc.3", | ||
"@xyo-network/payload-model": "^3.6.0-rc.3" | ||
}, | ||
@@ -41,0 +41,0 @@ "devDependencies": { |
@@ -6,9 +6,10 @@ import { assertEx } from '@xylabs/assert' | ||
} from '@xylabs/hex' | ||
import { | ||
isHash, isHex, toHex, | ||
} from '@xylabs/hex' | ||
import { isHex, toHex } from '@xylabs/hex' | ||
import type { AnyObject } from '@xylabs/object' | ||
import { ObjectHasher } from '@xyo-network/hash' | ||
import { | ||
type Payload, StorageMetaConstants, type WithStorageMeta, | ||
type Payload, | ||
StorageMetaConstants, | ||
type WithHashMeta, | ||
type WithStorageMeta, | ||
} from '@xyo-network/payload-model' | ||
@@ -23,11 +24,28 @@ | ||
> extends PayloadBuilderBase<T, O> { | ||
static async addSequencedStorageMeta<T extends Payload = Payload>(payload: T, hash?: Hash, dataHash?: Hash): Promise<WithStorageMeta<T>> { | ||
assertEx(hash === undefined || isHash(hash), () => 'Invalid hash') | ||
assertEx(dataHash === undefined || isHash(dataHash), () => 'Invalid dataHash') | ||
const _hash = hash ?? await PayloadBuilder.hash(payload) | ||
static async addHashMeta<T extends Payload>(payload: T): Promise<WithHashMeta<T>> | ||
static async addHashMeta<T extends Payload>(payloads: T[]): Promise<WithHashMeta<T>[]> | ||
static async addHashMeta<T extends Payload>(payloads: T | T[]): Promise<WithHashMeta<T>[] | WithHashMeta<T>> { | ||
if (Array.isArray(payloads)) { | ||
return await Promise.all( | ||
payloads.map(async (payload) => { | ||
return await this.addHashMeta(payload) | ||
}), | ||
) | ||
} else { | ||
const _hash = await PayloadBuilder.hash(payloads) | ||
const _dataHash = await PayloadBuilder.dataHash(payloads) | ||
return { | ||
...payloads, | ||
_dataHash, | ||
_hash, | ||
} | ||
} | ||
} | ||
static async addSequencedStorageMeta<T extends Payload = Payload>(payload: T): Promise<WithStorageMeta<T>> { | ||
const withHashMeta = await this.addHashMeta(payload) | ||
const _sequence = this.buildSequence(Date.now(), withHashMeta._hash.slice(-(StorageMetaConstants.nonceBytes * 2)) as Hex) | ||
return { | ||
...payload, | ||
_sequence: this.buildSequence(Date.now(), _hash.slice(-(StorageMetaConstants.nonceBytes * 2)) as Hex), | ||
_dataHash: dataHash ?? await PayloadBuilder.dataHash(payload), | ||
_hash, | ||
...withHashMeta, | ||
_sequence, | ||
} | ||
@@ -41,6 +59,4 @@ } | ||
? await (async () => { | ||
const pairs = await PayloadBuilder.hashPairs(payloads) | ||
return await Promise.all(pairs.map(async ([payload, hash]) => await this.addSequencedStorageMeta( | ||
return await Promise.all(payloads.map(async payload => await this.addSequencedStorageMeta( | ||
payload, | ||
hash, | ||
))) | ||
@@ -47,0 +63,0 @@ })() |
@@ -67,2 +67,10 @@ import { assertEx } from '@xylabs/assert' | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[] | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T | T[], maxDepth = 100): T | T[] { | ||
return Array.isArray(payloads) | ||
? payloads.map(payload => this.omitPrivateStorageMeta(payload, maxDepth)) as T[] | ||
: omitBy(payloads, omitByPrefixPredicate('_'), maxDepth) as T | ||
} | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T | ||
@@ -69,0 +77,0 @@ static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[] |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
126988
6.2%1179
6.03%