@xyo-network/boundwitness-wrapper 2.88.3 → 2.89.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/BoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: PayloadWrapper[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: PayloadWrapper<TPayload>[]\n private isBoundWitnessWrapper = true\n\n protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists).map((payload) => PayloadWrapper.wrap<TPayload>(payload))) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists).map((error) => PayloadWrapper.wrap<Payload>(error))) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): PayloadWrapper<TPayload>[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: string) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload()\n assertEx(payload && isBoundWitness(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n const result: Record<string, TPayload> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n\n for (const [payload, payloadHash] of payloadPairs) {\n result[payloadHash] = payload\n }\n return result\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n const result: Record<string, PayloadWrapper<TPayload>> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n\n for (const [payload, payloadHash] of payloadPairs) {\n result[payloadHash] = PayloadWrapper.wrap(payload)\n }\n return result\n }\n\n static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> {\n const hydratedObj = typeof obj === 'string' ? JSON.parse(obj) : obj\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n const castWrapper = hydratedObj as BoundWitnessWrapper<T, P>\n const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj as T, payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P> {\n switch (typeof obj) {\n case 'object': {\n const newWrapper = new BoundWitnessWrapper<T, P>(assertEx(BoundWitnessWrapper.unwrap<T>(obj)), payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getAllPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.body() as unknown as TBoundWitness,\n (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body() as unknown as TBoundWitness),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getAllPayloads(): Promise<TPayload[]> {\n return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getPayloads(): Promise<TPayload[]> {\n return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getWrappedModuleErrors(): Promisable<PayloadWrapper[]> {\n return this._moduleErrors\n }\n\n getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray.map((payload) => payload.body())]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"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","names":["assertEx","exists","compact","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadHasher","PayloadWrapper","PayloadWrapperBase","BoundWitnessWrapper","PayloadWrapperBase","_allPayloadMap","_moduleErrors","_payloadMap","_payloads","isBoundWitnessWrapper","boundwitness","payloads","moduleErrors","compact","filter","exists","map","payload","PayloadWrapper","wrap","error","addresses","obj","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","payloadsArray","Object","values","previousHashes","previous_hashes","as","value","load","address","wrapper","assertEx","isBoundWitness","boundWitness","undefined","mapPayloads","result","payloadPairs","Promise","all","unwrapped","unwrap","PayloadHasher","hashAsync","payloadHash","mapWrappedPayloads","parse","hydratedObj","JSON","Array","isArray","castWrapper","newWrapper","Error","tryParse","wrappedMap","boundWitnesses","allPayloadMap","getAllPayloads","dig","depth","innerBoundwitnessIndex","indexOf","BoundWitnessSchema","innerBoundwitnessHash","innerBoundwitnessPayload","getPayloads","innerBoundwitness","body","filterExclude","item","getAllWrappedPayloads","getMissingPayloads","payloadMap","hash","getWrappedPayloads","getWrappedModuleErrors","hashesBySchema","schema","index","payloadSchema","entries","push","payloadsByHashes","hashes","payloadsBySchema","prev","toResult","validate","BoundWitnessValidator"]}
1
+ {"version":3,"sources":["../../src/BoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: Payload[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: TPayload[]\n\n protected constructor(boundwitness: TBoundWitness, payloads?: TPayload[], moduleErrors?: Payload[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists)) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists)) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): TPayload[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: string) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.jsonPayload()\n assertEx(payload && isBoundWitness(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n const result: Record<string, TPayload> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, (await PayloadBuilder.build(unwrapped)).$hash]\n }),\n )\n\n for (const [payload, payloadHash] of payloadPairs) {\n result[payloadHash] = payload\n }\n return result\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n const result: Record<string, PayloadWrapper<TPayload>> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n\n await Promise.all(\n payloadPairs.map(async ([payload, hash]) => {\n result[hash] = await PayloadWrapper.wrap(payload)\n }),\n )\n return result\n }\n\n static async parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>> {\n const hydratedObj = await PayloadBuilder.build(typeof obj === 'string' ? JSON.parse(obj) : obj)\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n return hydratedObj instanceof BoundWitnessWrapper ? hydratedObj : new BoundWitnessWrapper(hydratedObj, payloads)\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static async tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined> {\n if (obj === undefined) return undefined\n try {\n return await this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.jsonPayload(), payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = await BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = await BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(this.getPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.jsonPayload() as unknown as TBoundWitness,\n await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n getModuleErrors(): Payload[] {\n return this._moduleErrors\n }\n\n getPayloads(): TPayload[] {\n return this._payloads\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this._payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"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","names":["assertEx","exists","compact","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadHasher","PayloadBuilder","PayloadWrapper","PayloadWrapperBase","BoundWitnessWrapper","PayloadWrapperBase","_allPayloadMap","_moduleErrors","_payloadMap","_payloads","boundwitness","payloads","moduleErrors","compact","filter","exists","addresses","obj","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","payloadsArray","Object","values","previousHashes","previous_hashes","as","value","load","address","wrapper","PayloadWrapper","payload","jsonPayload","assertEx","isBoundWitness","boundWitness","undefined","wrap","mapPayloads","result","payloadPairs","Promise","all","map","unwrapped","unwrap","PayloadBuilder","build","$hash","payloadHash","mapWrappedPayloads","PayloadHasher","hashAsync","hash","parse","hydratedObj","JSON","Array","isArray","Error","tryParse","schema","BoundWitnessSchema","wrappedDataMap","boundWitnesses","bw","dataHash","wrappedMap","allPayloadMap","getPayloads","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","getModuleErrors","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByHashes","hashes","payloadsBySchema","prev","toResult","validate","BoundWitnessValidator"]}
@@ -1,4 +1,3 @@
1
- import { Promisable } from '@xylabs/promise';
2
1
  import { BoundWitness } from '@xyo-network/boundwitness-model';
3
2
  import { Payload } from '@xyo-network/payload-model';
4
3
  import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
@@ -9,13 +8,12 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
9
8
  private _moduleErrors;
10
9
  private _payloadMap;
11
10
  private _payloads;
12
- private isBoundWitnessWrapper;
13
- protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]);
11
+ protected constructor(boundwitness: TBoundWitness, payloads?: TPayload[], moduleErrors?: Payload[]);
14
12
  get addresses(): string[];
15
13
  get boundwitness(): TBoundWitness;
16
14
  get payloadHashes(): string[];
17
15
  get payloadSchemas(): string[];
18
- get payloadsArray(): PayloadWrapper<TPayload>[];
16
+ get payloadsArray(): TPayload[];
19
17
  get previousHashes(): (string | null)[];
20
18
  static as<T extends BoundWitness = BoundWitness>(value: unknown): BoundWitnessWrapper<T, {
21
19
  schema: string;
@@ -27,18 +25,17 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
27
25
  } & object> | null>;
28
26
  static mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>>;
29
27
  static mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>>;
30
- static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P>;
31
- static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined;
32
- static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P>;
28
+ static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
29
+ static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined>;
30
+ static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
31
+ static wrappedDataMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>>;
33
32
  static wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>>;
34
33
  allPayloadMap(): Promise<Record<string, TPayload>>;
35
34
  dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>>;
36
- getAllPayloads(): Promise<TPayload[]>;
37
- getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
38
35
  getMissingPayloads(): Promise<string[]>;
39
- getPayloads(): Promise<TPayload[]>;
40
- getWrappedModuleErrors(): Promisable<PayloadWrapper[]>;
41
- getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
36
+ getModuleErrors(): Payload[];
37
+ getPayloads(): TPayload[];
38
+ getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]>;
42
39
  hashesBySchema(schema: string): string[];
43
40
  payloadMap(): Promise<Record<string, TPayload>>;
44
41
  payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { Promisable } from '@xylabs/promise';
2
1
  import { BoundWitness } from '@xyo-network/boundwitness-model';
3
2
  import { Payload } from '@xyo-network/payload-model';
4
3
  import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
@@ -9,13 +8,12 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
9
8
  private _moduleErrors;
10
9
  private _payloadMap;
11
10
  private _payloads;
12
- private isBoundWitnessWrapper;
13
- protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]);
11
+ protected constructor(boundwitness: TBoundWitness, payloads?: TPayload[], moduleErrors?: Payload[]);
14
12
  get addresses(): string[];
15
13
  get boundwitness(): TBoundWitness;
16
14
  get payloadHashes(): string[];
17
15
  get payloadSchemas(): string[];
18
- get payloadsArray(): PayloadWrapper<TPayload>[];
16
+ get payloadsArray(): TPayload[];
19
17
  get previousHashes(): (string | null)[];
20
18
  static as<T extends BoundWitness = BoundWitness>(value: unknown): BoundWitnessWrapper<T, {
21
19
  schema: string;
@@ -27,18 +25,17 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
27
25
  } & object> | null>;
28
26
  static mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>>;
29
27
  static mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>>;
30
- static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P>;
31
- static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined;
32
- static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P>;
28
+ static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
29
+ static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined>;
30
+ static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
31
+ static wrappedDataMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>>;
33
32
  static wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>>;
34
33
  allPayloadMap(): Promise<Record<string, TPayload>>;
35
34
  dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>>;
36
- getAllPayloads(): Promise<TPayload[]>;
37
- getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
38
35
  getMissingPayloads(): Promise<string[]>;
39
- getPayloads(): Promise<TPayload[]>;
40
- getWrappedModuleErrors(): Promisable<PayloadWrapper[]>;
41
- getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
36
+ getModuleErrors(): Payload[];
37
+ getPayloads(): TPayload[];
38
+ getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]>;
42
39
  hashesBySchema(schema: string): string[];
43
40
  payloadMap(): Promise<Record<string, TPayload>>;
44
41
  payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { Promisable } from '@xylabs/promise';
2
1
  import { BoundWitness } from '@xyo-network/boundwitness-model';
3
2
  import { Payload } from '@xyo-network/payload-model';
4
3
  import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
@@ -9,13 +8,12 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
9
8
  private _moduleErrors;
10
9
  private _payloadMap;
11
10
  private _payloads;
12
- private isBoundWitnessWrapper;
13
- protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]);
11
+ protected constructor(boundwitness: TBoundWitness, payloads?: TPayload[], moduleErrors?: Payload[]);
14
12
  get addresses(): string[];
15
13
  get boundwitness(): TBoundWitness;
16
14
  get payloadHashes(): string[];
17
15
  get payloadSchemas(): string[];
18
- get payloadsArray(): PayloadWrapper<TPayload>[];
16
+ get payloadsArray(): TPayload[];
19
17
  get previousHashes(): (string | null)[];
20
18
  static as<T extends BoundWitness = BoundWitness>(value: unknown): BoundWitnessWrapper<T, {
21
19
  schema: string;
@@ -27,18 +25,17 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
27
25
  } & object> | null>;
28
26
  static mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>>;
29
27
  static mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>>;
30
- static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P>;
31
- static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined;
32
- static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P>;
28
+ static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
29
+ static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined>;
30
+ static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
31
+ static wrappedDataMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>>;
33
32
  static wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>>;
34
33
  allPayloadMap(): Promise<Record<string, TPayload>>;
35
34
  dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>>;
36
- getAllPayloads(): Promise<TPayload[]>;
37
- getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
38
35
  getMissingPayloads(): Promise<string[]>;
39
- getPayloads(): Promise<TPayload[]>;
40
- getWrappedModuleErrors(): Promisable<PayloadWrapper[]>;
41
- getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
36
+ getModuleErrors(): Payload[];
37
+ getPayloads(): TPayload[];
38
+ getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]>;
42
39
  hashesBySchema(schema: string): string[];
43
40
  payloadMap(): Promise<Record<string, TPayload>>;
44
41
  payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
@@ -32,17 +32,17 @@ var import_lodash = require("@xylabs/lodash");
32
32
  var import_boundwitness_model = require("@xyo-network/boundwitness-model");
33
33
  var import_boundwitness_validator = require("@xyo-network/boundwitness-validator");
34
34
  var import_hash = require("@xyo-network/hash");
35
+ var import_payload_builder = require("@xyo-network/payload-builder");
35
36
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
36
37
  var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
37
38
  _allPayloadMap;
38
39
  _moduleErrors;
39
40
  _payloadMap;
40
41
  _payloads;
41
- isBoundWitnessWrapper = true;
42
42
  constructor(boundwitness, payloads, moduleErrors) {
43
43
  super(boundwitness);
44
- this._payloads = payloads ? (0, import_lodash.compact)(payloads.filter(import_exists.exists).map((payload) => import_payload_wrapper.PayloadWrapper.wrap(payload))) : [];
45
- this._moduleErrors = moduleErrors ? (0, import_lodash.compact)(moduleErrors.filter(import_exists.exists).map((error) => import_payload_wrapper.PayloadWrapper.wrap(error))) : [];
44
+ this._payloads = payloads ? (0, import_lodash.compact)(payloads.filter(import_exists.exists)) : [];
45
+ this._moduleErrors = moduleErrors ? (0, import_lodash.compact)(moduleErrors.filter(import_exists.exists)) : [];
46
46
  }
47
47
  get addresses() {
48
48
  return this.boundwitness.addresses;
@@ -67,10 +67,10 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
67
67
  }
68
68
  static async load(address) {
69
69
  const wrapper = await import_payload_wrapper.PayloadWrapper.load(address);
70
- const payload = wrapper == null ? void 0 : wrapper.payload();
70
+ const payload = wrapper == null ? void 0 : wrapper.jsonPayload();
71
71
  (0, import_assert.assertEx)(payload && (0, import_boundwitness_model.isBoundWitness)(payload), "Attempt to load non-boundwitness");
72
72
  const boundWitness = payload && (0, import_boundwitness_model.isBoundWitness)(payload) ? payload : void 0;
73
- return boundWitness ? _BoundWitnessWrapper.wrap(boundWitness) : null;
73
+ return boundWitness ? await _BoundWitnessWrapper.wrap(boundWitness) : null;
74
74
  }
75
75
  static async mapPayloads(payloads) {
76
76
  const result = {};
@@ -78,7 +78,7 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
78
78
  const unwrapped = (0, import_assert.assertEx)(import_payload_wrapper.PayloadWrapper.unwrap(payload));
79
79
  return [
80
80
  unwrapped,
81
- await import_hash.PayloadHasher.hashAsync(unwrapped)
81
+ (await import_payload_builder.PayloadBuilder.build(unwrapped)).$hash
82
82
  ];
83
83
  }));
84
84
  for (const [payload, payloadHash] of payloadPairs) {
@@ -95,49 +95,60 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
95
95
  await import_hash.PayloadHasher.hashAsync(unwrapped)
96
96
  ];
97
97
  }));
98
- for (const [payload, payloadHash] of payloadPairs) {
99
- result[payloadHash] = import_payload_wrapper.PayloadWrapper.wrap(payload);
100
- }
98
+ await Promise.all(payloadPairs.map(async ([payload, hash]) => {
99
+ result[hash] = await import_payload_wrapper.PayloadWrapper.wrap(payload);
100
+ }));
101
101
  return result;
102
102
  }
103
- static parse(obj, payloads) {
104
- const hydratedObj = typeof obj === "string" ? JSON.parse(obj) : obj;
103
+ static async parse(obj, payloads) {
104
+ const hydratedObj = await import_payload_builder.PayloadBuilder.build(typeof obj === "string" ? JSON.parse(obj) : obj);
105
105
  (0, import_assert.assertEx)(!Array.isArray(hydratedObj), "Array can not be converted to BoundWitnessWrapper");
106
106
  switch (typeof hydratedObj) {
107
107
  case "object": {
108
- const castWrapper = hydratedObj;
109
- const newWrapper = (castWrapper == null ? void 0 : castWrapper.isBoundWitnessWrapper) ? castWrapper : new _BoundWitnessWrapper(hydratedObj, payloads);
110
- return newWrapper;
108
+ return hydratedObj instanceof _BoundWitnessWrapper ? hydratedObj : new _BoundWitnessWrapper(hydratedObj, payloads);
111
109
  }
112
110
  }
113
111
  throw new Error(`Unable to parse [${typeof obj}]`);
114
112
  }
115
- static tryParse(obj, payloads) {
113
+ static async tryParse(obj, payloads) {
116
114
  if (obj === void 0)
117
115
  return void 0;
118
116
  try {
119
- return this.parse(obj, payloads);
117
+ return await this.parse(obj, payloads);
120
118
  } catch {
121
119
  return void 0;
122
120
  }
123
121
  }
124
- static wrap(obj, payloads) {
122
+ static async wrap(obj, payloads) {
125
123
  switch (typeof obj) {
126
124
  case "object": {
127
- const newWrapper = new _BoundWitnessWrapper((0, import_assert.assertEx)(_BoundWitnessWrapper.unwrap(obj)), payloads);
128
- return newWrapper;
125
+ if (obj instanceof _BoundWitnessWrapper) {
126
+ return obj;
127
+ } else if (obj instanceof import_payload_wrapper.PayloadWrapper && obj.schema() === import_boundwitness_model.BoundWitnessSchema) {
128
+ return await _BoundWitnessWrapper.parse(obj.jsonPayload(), payloads);
129
+ } else {
130
+ return await _BoundWitnessWrapper.parse(obj, payloads);
131
+ }
129
132
  }
130
133
  }
131
134
  }
135
+ static async wrappedDataMap(boundWitnesses) {
136
+ const result = {};
137
+ await Promise.all(boundWitnesses.map(async (payload) => {
138
+ const bw = await _BoundWitnessWrapper.parse(payload);
139
+ result[await bw.dataHash()] = bw;
140
+ }));
141
+ return result;
142
+ }
132
143
  static async wrappedMap(boundWitnesses) {
133
144
  const result = {};
134
145
  await Promise.all(boundWitnesses.map(async (payload) => {
135
- result[await _BoundWitnessWrapper.hashAsync(payload)] = _BoundWitnessWrapper.parse(payload);
146
+ result[await _BoundWitnessWrapper.hashAsync(payload)] = await _BoundWitnessWrapper.parse(payload);
136
147
  }));
137
148
  return result;
138
149
  }
139
150
  async allPayloadMap() {
140
- this._allPayloadMap = this._allPayloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
151
+ this._allPayloadMap = this._allPayloadMap ?? await _BoundWitnessWrapper.mapPayloads(this.getPayloads());
141
152
  return this._allPayloadMap;
142
153
  }
143
154
  async dig(depth) {
@@ -147,7 +158,7 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
147
158
  if (innerBoundwitnessIndex > -1) {
148
159
  const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
149
160
  const innerBoundwitnessPayload = (await _BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
150
- const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(innerBoundwitnessPayload.body(), (await import_hash.PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body())) : void 0;
161
+ const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(innerBoundwitnessPayload.jsonPayload(), await import_hash.PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)) : void 0;
151
162
  if (innerBoundwitness) {
152
163
  return innerBoundwitness.dig(depth ? depth - 1 : void 0);
153
164
  }
@@ -155,25 +166,19 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
155
166
  (0, import_assert.assertEx)(!depth, `Dig failed [Remaining Depth: ${depth}]`);
156
167
  return this;
157
168
  }
158
- async getAllPayloads() {
159
- return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload());
160
- }
161
- getAllWrappedPayloads() {
162
- return this._payloads;
163
- }
164
169
  async getMissingPayloads() {
165
170
  const payloadMap = await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
166
171
  return this.payloadHashes.filter((hash) => !payloadMap[hash]);
167
172
  }
168
- async getPayloads() {
169
- return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload());
170
- }
171
- getWrappedModuleErrors() {
173
+ getModuleErrors() {
172
174
  return this._moduleErrors;
173
175
  }
174
- getWrappedPayloads() {
176
+ getPayloads() {
175
177
  return this._payloads;
176
178
  }
179
+ async getWrappedPayloads() {
180
+ return await Promise.all(this._payloads.map((payload) => import_payload_wrapper.PayloadWrapper.wrap(payload)));
181
+ }
177
182
  hashesBySchema(schema) {
178
183
  const result = [];
179
184
  for (const [index, payloadSchema] of this.payloadSchemas.entries()) {
@@ -184,7 +189,7 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
184
189
  return result;
185
190
  }
186
191
  async payloadMap() {
187
- this._payloadMap = this._payloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
192
+ this._payloadMap = this._payloadMap ?? await _BoundWitnessWrapper.mapPayloads(this.getPayloads());
188
193
  return this._payloadMap;
189
194
  }
190
195
  async payloadsByHashes(hashes) {
@@ -200,7 +205,7 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
200
205
  toResult() {
201
206
  return [
202
207
  this.boundwitness,
203
- this.payloadsArray.map((payload) => payload.body())
208
+ this.payloadsArray
204
209
  ];
205
210
  }
206
211
  async validate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: PayloadWrapper[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: PayloadWrapper<TPayload>[]\n private isBoundWitnessWrapper = true\n\n protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists).map((payload) => PayloadWrapper.wrap<TPayload>(payload))) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists).map((error) => PayloadWrapper.wrap<Payload>(error))) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): PayloadWrapper<TPayload>[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: string) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload()\n assertEx(payload && isBoundWitness(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n const result: Record<string, TPayload> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n\n for (const [payload, payloadHash] of payloadPairs) {\n result[payloadHash] = payload\n }\n return result\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n const result: Record<string, PayloadWrapper<TPayload>> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n\n for (const [payload, payloadHash] of payloadPairs) {\n result[payloadHash] = PayloadWrapper.wrap(payload)\n }\n return result\n }\n\n static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> {\n const hydratedObj = typeof obj === 'string' ? JSON.parse(obj) : obj\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n const castWrapper = hydratedObj as BoundWitnessWrapper<T, P>\n const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj as T, payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P> {\n switch (typeof obj) {\n case 'object': {\n const newWrapper = new BoundWitnessWrapper<T, P>(assertEx(BoundWitnessWrapper.unwrap<T>(obj)), payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getAllPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.body() as unknown as TBoundWitness,\n (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body() as unknown as TBoundWitness),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getAllPayloads(): Promise<TPayload[]> {\n return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getPayloads(): Promise<TPayload[]> {\n return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getWrappedModuleErrors(): Promisable<PayloadWrapper[]> {\n return this._moduleErrors\n }\n\n getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray.map((payload) => payload.body())]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"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","names":["BoundWitnessWrapper","PayloadWrapperBase","_allPayloadMap","_moduleErrors","_payloadMap","_payloads","isBoundWitnessWrapper","boundwitness","payloads","moduleErrors","compact","filter","exists","map","payload","PayloadWrapper","wrap","error","addresses","obj","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","payloadsArray","Object","values","previousHashes","previous_hashes","as","value","load","address","wrapper","assertEx","isBoundWitness","boundWitness","undefined","mapPayloads","result","payloadPairs","Promise","all","unwrapped","unwrap","PayloadHasher","hashAsync","payloadHash","mapWrappedPayloads","parse","hydratedObj","JSON","Array","isArray","castWrapper","newWrapper","Error","tryParse","wrappedMap","boundWitnesses","allPayloadMap","getAllPayloads","dig","depth","innerBoundwitnessIndex","indexOf","BoundWitnessSchema","innerBoundwitnessHash","innerBoundwitnessPayload","getPayloads","innerBoundwitness","body","filterExclude","item","getAllWrappedPayloads","getMissingPayloads","payloadMap","hash","getWrappedPayloads","getWrappedModuleErrors","hashesBySchema","schema","index","payloadSchema","entries","push","payloadsByHashes","hashes","payloadsBySchema","prev","toResult","validate","BoundWitnessValidator"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: Payload[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: TPayload[]\n\n protected constructor(boundwitness: TBoundWitness, payloads?: TPayload[], moduleErrors?: Payload[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists)) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists)) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): TPayload[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: string) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.jsonPayload()\n assertEx(payload && isBoundWitness(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n const result: Record<string, TPayload> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, (await PayloadBuilder.build(unwrapped)).$hash]\n }),\n )\n\n for (const [payload, payloadHash] of payloadPairs) {\n result[payloadHash] = payload\n }\n return result\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n const result: Record<string, PayloadWrapper<TPayload>> = {}\n const payloadPairs = await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n\n await Promise.all(\n payloadPairs.map(async ([payload, hash]) => {\n result[hash] = await PayloadWrapper.wrap(payload)\n }),\n )\n return result\n }\n\n static async parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>> {\n const hydratedObj = await PayloadBuilder.build(typeof obj === 'string' ? JSON.parse(obj) : obj)\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n return hydratedObj instanceof BoundWitnessWrapper ? hydratedObj : new BoundWitnessWrapper(hydratedObj, payloads)\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static async tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined> {\n if (obj === undefined) return undefined\n try {\n return await this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.jsonPayload(), payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = await BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = await BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(this.getPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.jsonPayload() as unknown as TBoundWitness,\n await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n getModuleErrors(): Payload[] {\n return this._moduleErrors\n }\n\n getPayloads(): TPayload[] {\n return this._payloads\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this._payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"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","names":["BoundWitnessWrapper","PayloadWrapperBase","_allPayloadMap","_moduleErrors","_payloadMap","_payloads","boundwitness","payloads","moduleErrors","compact","filter","exists","addresses","obj","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","payloadsArray","Object","values","previousHashes","previous_hashes","as","value","load","address","wrapper","PayloadWrapper","payload","jsonPayload","assertEx","isBoundWitness","boundWitness","undefined","wrap","mapPayloads","result","payloadPairs","Promise","all","map","unwrapped","unwrap","PayloadBuilder","build","$hash","payloadHash","mapWrappedPayloads","PayloadHasher","hashAsync","hash","parse","hydratedObj","JSON","Array","isArray","Error","tryParse","schema","BoundWitnessSchema","wrappedDataMap","boundWitnesses","bw","dataHash","wrappedMap","allPayloadMap","getPayloads","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","getModuleErrors","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByHashes","hashes","payloadsBySchema","prev","toResult","validate","BoundWitnessValidator"]}