@xyo-network/boundwitness-wrapper 2.92.7 → 2.92.8
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.
- package/dist/browser/index.cjs +4 -4
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +4 -4
- package/dist/browser/index.js.map +1 -1
- package/dist/node/index.cjs +4 -4
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +4 -4
- package/dist/node/index.js.map +1 -1
- package/package.json +11 -11
- package/src/BoundWitnessWrapper.ts +4 -4
- package/src/QueryBoundWitnessWrapper.ts +1 -1
package/dist/browser/index.cjs
CHANGED
|
@@ -73,7 +73,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
73
73
|
static async load(address) {
|
|
74
74
|
const wrapper = await import_payload_wrapper.PayloadWrapper.load(address);
|
|
75
75
|
const payload = wrapper?.payload;
|
|
76
|
-
(0, import_assert.assertEx)(payload && (0, import_boundwitness_model.isBoundWitness)(payload), "Attempt to load non-boundwitness");
|
|
76
|
+
(0, import_assert.assertEx)(payload && (0, import_boundwitness_model.isBoundWitness)(payload), () => "Attempt to load non-boundwitness");
|
|
77
77
|
const boundWitness = payload && (0, import_boundwitness_model.isBoundWitness)(payload) ? payload : void 0;
|
|
78
78
|
return boundWitness ? await _BoundWitnessWrapper.wrap(boundWitness) : null;
|
|
79
79
|
}
|
|
@@ -164,11 +164,11 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
164
164
|
}
|
|
165
165
|
async payloadsByDataHashes(hashes) {
|
|
166
166
|
const map = await this.payloadsDataHashMap();
|
|
167
|
-
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], "Hash not found"));
|
|
167
|
+
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], () => "Hash not found"));
|
|
168
168
|
}
|
|
169
169
|
async payloadsByHashes(hashes) {
|
|
170
170
|
const map = await this.payloadsHashMap();
|
|
171
|
-
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], "Hash not found"));
|
|
171
|
+
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], () => "Hash not found"));
|
|
172
172
|
}
|
|
173
173
|
payloadsBySchema(schema) {
|
|
174
174
|
return this.payloads.filter((payload) => payload?.schema === schema);
|
|
@@ -207,7 +207,7 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitn
|
|
|
207
207
|
_payloadsWithoutQuery;
|
|
208
208
|
_query;
|
|
209
209
|
static async parseQuery(obj, payloads) {
|
|
210
|
-
(0, import_assert2.assertEx)(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
210
|
+
(0, import_assert2.assertEx)(!Array.isArray(obj), () => "Array can not be converted to QueryBoundWitnessWrapper");
|
|
211
211
|
switch (typeof obj) {
|
|
212
212
|
case "object": {
|
|
213
213
|
const castWrapper = obj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\nexport * from './QueryBoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","import_assert","import_payload_wrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\nexport * from './QueryBoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,oBAAyB;AAEzB,oBAAyB;AACzB,gCAAiF;AACjF,oCAAsC;AACtC,6BAA+B;AAE/B,6BAAyE;AAElE,IAAMA,wBAAwB,wBACnCC,UAAAA;AAEA,UAAIC,6CAAqBD,KAAAA,GAAQ;AAC/B,WAAO,OAAQA,MAAoCE,wBAAwB;EAC7E;AACA,SAAO;AACT,GAPqC;AAS9B,IAAMC,sBAAN,MAAMA,6BAGHC,0CAAAA;EArBV,OAqBUA;;;;;;EACAC;EACAC;EAER,YACSC,cACAC,WAAiC,CAAA,GACjCC,cACP;AACA,UAAMF,YAAAA;SAJCA,eAAAA;SACAC,WAAAA;SACAC,eAAAA;EAGT;EAEA,IAAIC,YAAY;AACd,WAAO,KAAKH,aAAaG;EAC3B;EAEA,IAAIC,gBAAgB;AAClB,WAAO,KAAKJ,aAAaK;EAC3B;EAEA,IAAIC,iBAAiB;AACnB,WAAO,KAAKN,aAAaO;EAC3B;EAEA,IAAIC,iBAAiB;AACnB,WAAO,KAAKR,aAAaS;EAC3B;EAEA,OAAOC,GAA0CjB,OAAgB;AAC/D,WAAOA,iBAAiBG,uBAAuBH,QAAmCkB;EACpF;EAEA,aAAaC,KAAKC,SAAkB;AAClC,UAAMC,UAAU,MAAMC,sCAAeH,KAAKC,OAAAA;AAC1C,UAAMG,UAAUF,SAASE;AACzBC,gCAASD,eAAWE,0CAAeF,OAAAA,GAAU,MAAM,kCAAA;AAEnD,UAAMG,eAAyCH,eAAWE,0CAAeF,OAAAA,IAAWA,UAAUL;AAC9F,WAAOQ,eAAe,MAAMvB,qBAAoBwB,KAAKD,YAAAA,IAAgB;EACvE;EAEA,OAAOE,MACLC,KACArB,UAC2B;AAC3B,QAAIsB,cAAuCZ;AAC3C,YAAQ,OAAOW,KAAAA;MACb,KAAK,UAAU;AACbC,sBAAcC,KAAKH,MAAMC,GAAAA;AACzB;MACF;MACA,KAAK,UAAU;AACb,gBAAIG,wBAASH,GAAAA,GAAM;AACjBC,wBAAcD;QAChB;AACA;MACF;IACF;AAEA,QAAIC,aAAa;AACf,UAAI/B,sBAA4B+B,WAAAA,GAAc;AAC5C,eAAOA;MACT;AACA,cAAIL,0CAAeK,WAAAA,GAAc;AAC/B,eAAO,IAAI3B,qBAAoB2B,aAAatB,YAAY,CAAA,CAAE;MAC5D;IACF;AAEA,UAAM,IAAIyB,MAAM,oBAAoB,OAAOJ,GAAAA,GAAM;EACnD;EAEA,OAAOK,SAAoDL,KAAcrB,UAAiE;AACxI,QAAIqB,QAAQX;AAAW,aAAOA;AAC9B,QAAI;AACF,aAAO,KAAKU,MAAMC,KAAKrB,QAAAA;IACzB,QAAQ;AACN,aAAOU;IACT;EACF;EAEA,aAAaS,KACXE,KACArB,UACoC;AACpC,YAAQ,OAAOqB,KAAAA;MACb,KAAK,UAAU;AACb,YAAIA,eAAe1B,sBAAqB;AACtC,iBAAO0B;QACT,WAAWA,eAAeP,yCAAkBO,IAAIM,OAAM,MAAOC,8CAAoB;AAC/E,iBAAO,MAAMjC,qBAAoByB,MAAMC,IAAIN,SAASf,QAAAA;QACtD,OAAO;AACL,iBAAO,MAAML,qBAAoByB,MAAMC,KAAKrB,QAAAA;QAC9C;MACF;IACF;EACF;EAEA,aAAa6B,mBACXC,gBACiD;AACjD,UAAMC,SAAiD,CAAC;AACxD,UAAMC,QAAQC,IACZH,eAAeI,IAAI,OAAOnB,YAAAA;AACxB,YAAMoB,KAAKxC,qBAAoByB,MAAkBL,OAAAA;AACjDgB,aAAO,MAAMI,GAAGC,SAAQ,CAAA,IAAMD;IAChC,CAAA,CAAA;AAEF,WAAOJ;EACT;EAEA,MAAMM,IAAIC,OAA6D;AACrE,QAAIA,UAAU;AAAG,aAAO;AAExB,UAAMC,yBAAiC,KAAKlC,eAAemC,QAAQZ,4CAAAA;AACnE,QAAIW,yBAAyB,IAAI;AAC/B,YAAME,wBAA8B,KAAKtC,cAAcoC,sBAAAA;AACvD,YAAMG,+BAA2BC,2CAC9B,MAAMC,sCAAeC,cAAc,KAAK7C,QAAQ,GAAGyC,qBAAAA,CAAsB;AAE5E,YAAMK,oBACJJ,2BACE,IAAI/C,qBAAmC+C,0BAA0B,MAAME,sCAAeG,cAAc,KAAK/C,UAAUyC,qBAAAA,CAAAA,IACnH/B;AACJ,UAAIoC,mBAAmB;AACrB,eAAOA,kBAAkBT,IAAIC,QAAQA,QAAQ,IAAI5B,MAAAA;MACnD;IACF;AACAM,gCAAS,CAACsB,OAAO,MAAM,gCAAgCA,KAAAA,GAAQ;AAC/D,WAAO;EACT;EAEA,MAAMU,qBAAqB;AACzB,UAAMC,aAAa,MAAM,KAAKvD,oBAAmB;AACjD,WAAO,KAAKS,cAAc+C,OAAO,CAACC,SAAS,CAACF,WAAWE,IAAAA,CAAK;EAC9D;EAEA,MAAMC,qBAA0D;AAC9D,WAAO,MAAMpB,QAAQC,IAAI,KAAKjC,SAASkC,IAAI,CAACnB,YAAYD,sCAAeK,KAAKJ,OAAAA,CAAAA,CAAAA;EAC9E;EAEAsC,eAAe1B,QAAgB;AAC7B,UAAMI,SAAmB,CAAA;AACzB,eAAW,CAACuB,OAAOC,aAAAA,KAAkB,KAAKlD,eAAemD,QAAO,GAAI;AAClE,UAAID,kBAAkB5B,QAAQ;AAC5BI,eAAO0B,KAAK,KAAKtD,cAAcmD,KAAAA,CAAM;MACvC;IACF;AACA,WAAOvB;EACT;EAEA,MAAM2B,qBAAqBC,QAAqC;AAC9D,UAAMzB,MAAM,MAAM,KAAKxC,oBAAmB;AAC1C,WAAOiE,OAAOzB,IAAI,CAACiB,aAASnC,wBAASkB,IAAIiB,IAAAA,GAAO,MAAM,gBAAA,CAAA;EACxD;EAEA,MAAMS,iBAAiBD,QAAqC;AAC1D,UAAMzB,MAAM,MAAM,KAAK2B,gBAAe;AACtC,WAAOF,OAAOzB,IAAI,CAACiB,aAASnC,wBAASkB,IAAIiB,IAAAA,GAAO,MAAM,gBAAA,CAAA;EACxD;EAEAW,iBAAqCnC,QAA+B;AAClE,WAAO,KAAK3B,SAASkD,OAAO,CAACnC,YAAYA,SAASY,WAAWA,MAAAA;EAC/D;EAEA,MAAMjC,sBAAiE;AACrE,SAAKG,kBAAkB,KAAKA,mBAAoB,MAAM+C,sCAAeC,cAAwB,KAAK7C,QAAQ;AAC1G,WAAO,KAAKH;EACd;EAEA,MAAMgE,kBAA6D;AACjE,SAAK/D,cAAc,KAAKA,eAAgB,MAAM8C,sCAAemB,UAAoB,KAAK/D,QAAQ;AAC9F,WAAO,KAAKF;EACd;EAEAkE,KAAKpD,SAAkB;AACrB,WAAO,KAAKL,eAAe,KAAKL,UAAUsC,QAAQ5B,OAAAA,CAAAA;EACpD;EAEAqD,WAAW;AACT,WAAO;MAAC,KAAKlE;MAAc,KAAKC;;EAClC;EAEA,MAAekE,WAA6B;AAC1C,WAAO,MAAM,IAAIC,oDAAsB,KAAKpE,YAAY,EAAEmE,SAAQ;EACpE;AACF;;;AC9MA,IAAAE,iBAAyB;AACzB,oBAAwB;AAExB,qBAA+B;AAE/B,IAAAC,0BAA+B;AAIxB,IAAMC,2BAAN,MAAMA,kCAA0DC,oBAAAA;EATvE,OASuEA;;;EAC7DC;EACAC;EAER,aAAaC,WAAoCC,KAAcC,UAA4D;AACzHC,iCAAS,CAACC,MAAMC,QAAQJ,GAAAA,GAAM,MAAM,wDAAA;AACpC,YAAQ,OAAOA,KAAAA;MACb,KAAK,UAAU;AACb,cAAMK,cAAcL;AACpB,cAAMM,UACJD,uBAAuBV,4BAA2BU,cAChD,IAAIV,0BACF,MAAMY,8BAAeC,MAAMR,GAAAA,GAC3BC,WAAW,MAAMQ,QAAQC,IAAIT,SAASU,IAAI,CAACC,YAAYL,8BAAeC,MAAMI,OAAAA,CAAAA,CAAAA,IAAaC,MAAAA;AAM/F,eAAOP;MACT;IACF;AACA,UAAM,IAAIQ,MAAM,oBAAoB,OAAOd,GAAAA,GAAM;EACnD;EAEA,MAAMe,0BAA8D;AAClE,SAAKlB,wBACH,KAAKA,yBACJ,MAAMY,QAAQC,QACbM,wBAAS,MAAMT,8BAAeU,cAAc,KAAKhB,UAAU,KAAKW,QAAQM,KAAK,GAAGP,IAAI,CAACC,YAAYO,uCAAeC,KAAKR,OAAAA,CAAAA,CAAAA,CAAAA;AAEzH,WAAO,KAAKf;EACd;EAEA,MAAMwB,WAAuB;AAC3B,UAAMC,aAAa,MAAM,KAAKC,oBAAmB;AACjD,SAAKzB,SAAS,KAAKA,UAAWwB,WAAW,KAAKE,aAAaN,KAAK;AAChE,eAAOhB,yBAAS,KAAKJ,QAAQ,MAAM,kBAAkB,KAAK0B,YAAY,GAAG;EAC3E;AACF;","names":["isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","import_assert","import_payload_wrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -47,7 +47,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
47
47
|
static async load(address) {
|
|
48
48
|
const wrapper = await PayloadWrapper.load(address);
|
|
49
49
|
const payload = wrapper?.payload;
|
|
50
|
-
assertEx(payload && isBoundWitness(payload), "Attempt to load non-boundwitness");
|
|
50
|
+
assertEx(payload && isBoundWitness(payload), () => "Attempt to load non-boundwitness");
|
|
51
51
|
const boundWitness = payload && isBoundWitness(payload) ? payload : void 0;
|
|
52
52
|
return boundWitness ? await _BoundWitnessWrapper.wrap(boundWitness) : null;
|
|
53
53
|
}
|
|
@@ -138,11 +138,11 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
138
138
|
}
|
|
139
139
|
async payloadsByDataHashes(hashes) {
|
|
140
140
|
const map = await this.payloadsDataHashMap();
|
|
141
|
-
return hashes.map((hash) => assertEx(map[hash], "Hash not found"));
|
|
141
|
+
return hashes.map((hash) => assertEx(map[hash], () => "Hash not found"));
|
|
142
142
|
}
|
|
143
143
|
async payloadsByHashes(hashes) {
|
|
144
144
|
const map = await this.payloadsHashMap();
|
|
145
|
-
return hashes.map((hash) => assertEx(map[hash], "Hash not found"));
|
|
145
|
+
return hashes.map((hash) => assertEx(map[hash], () => "Hash not found"));
|
|
146
146
|
}
|
|
147
147
|
payloadsBySchema(schema) {
|
|
148
148
|
return this.payloads.filter((payload) => payload?.schema === schema);
|
|
@@ -181,7 +181,7 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitn
|
|
|
181
181
|
_payloadsWithoutQuery;
|
|
182
182
|
_query;
|
|
183
183
|
static async parseQuery(obj, payloads) {
|
|
184
|
-
assertEx2(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
184
|
+
assertEx2(!Array.isArray(obj), () => "Array can not be converted to QueryBoundWitnessWrapper");
|
|
185
185
|
switch (typeof obj) {
|
|
186
186
|
case "object": {
|
|
187
187
|
const castWrapper = obj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["assertEx","isObject","asBoundWitness","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadBuilder","isPayloadWrapperBase","PayloadWrapper","PayloadWrapperBase","isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","assertEx","compact","PayloadBuilder","PayloadWrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
|
1
|
+
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["assertEx","isObject","asBoundWitness","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadBuilder","isPayloadWrapperBase","PayloadWrapper","PayloadWrapperBase","isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","assertEx","compact","PayloadBuilder","PayloadWrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
package/dist/node/index.cjs
CHANGED
|
@@ -70,7 +70,7 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
|
|
|
70
70
|
static async load(address) {
|
|
71
71
|
const wrapper = await import_payload_wrapper.PayloadWrapper.load(address);
|
|
72
72
|
const payload = wrapper == null ? void 0 : wrapper.payload;
|
|
73
|
-
(0, import_assert.assertEx)(payload && (0, import_boundwitness_model.isBoundWitness)(payload), "Attempt to load non-boundwitness");
|
|
73
|
+
(0, import_assert.assertEx)(payload && (0, import_boundwitness_model.isBoundWitness)(payload), () => "Attempt to load non-boundwitness");
|
|
74
74
|
const boundWitness = payload && (0, import_boundwitness_model.isBoundWitness)(payload) ? payload : void 0;
|
|
75
75
|
return boundWitness ? await _BoundWitnessWrapper.wrap(boundWitness) : null;
|
|
76
76
|
}
|
|
@@ -161,11 +161,11 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wra
|
|
|
161
161
|
}
|
|
162
162
|
async payloadsByDataHashes(hashes) {
|
|
163
163
|
const map = await this.payloadsDataHashMap();
|
|
164
|
-
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], "Hash not found"));
|
|
164
|
+
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], () => "Hash not found"));
|
|
165
165
|
}
|
|
166
166
|
async payloadsByHashes(hashes) {
|
|
167
167
|
const map = await this.payloadsHashMap();
|
|
168
|
-
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], "Hash not found"));
|
|
168
|
+
return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], () => "Hash not found"));
|
|
169
169
|
}
|
|
170
170
|
payloadsBySchema(schema) {
|
|
171
171
|
return this.payloads.filter((payload) => (payload == null ? void 0 : payload.schema) === schema);
|
|
@@ -203,7 +203,7 @@ var _QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWit
|
|
|
203
203
|
_payloadsWithoutQuery;
|
|
204
204
|
_query;
|
|
205
205
|
static async parseQuery(obj, payloads) {
|
|
206
|
-
(0, import_assert2.assertEx)(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
206
|
+
(0, import_assert2.assertEx)(!Array.isArray(obj), () => "Array can not be converted to QueryBoundWitnessWrapper");
|
|
207
207
|
switch (typeof obj) {
|
|
208
208
|
case "object": {
|
|
209
209
|
const castWrapper = obj;
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\nexport * from './QueryBoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","import_assert","import_payload_wrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\nexport * from './QueryBoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","import_assert","import_payload_wrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
package/dist/node/index.js
CHANGED
|
@@ -44,7 +44,7 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
44
44
|
static async load(address) {
|
|
45
45
|
const wrapper = await PayloadWrapper.load(address);
|
|
46
46
|
const payload = wrapper == null ? void 0 : wrapper.payload;
|
|
47
|
-
assertEx(payload && isBoundWitness(payload), "Attempt to load non-boundwitness");
|
|
47
|
+
assertEx(payload && isBoundWitness(payload), () => "Attempt to load non-boundwitness");
|
|
48
48
|
const boundWitness = payload && isBoundWitness(payload) ? payload : void 0;
|
|
49
49
|
return boundWitness ? await _BoundWitnessWrapper.wrap(boundWitness) : null;
|
|
50
50
|
}
|
|
@@ -135,11 +135,11 @@ var _BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
135
135
|
}
|
|
136
136
|
async payloadsByDataHashes(hashes) {
|
|
137
137
|
const map = await this.payloadsDataHashMap();
|
|
138
|
-
return hashes.map((hash) => assertEx(map[hash], "Hash not found"));
|
|
138
|
+
return hashes.map((hash) => assertEx(map[hash], () => "Hash not found"));
|
|
139
139
|
}
|
|
140
140
|
async payloadsByHashes(hashes) {
|
|
141
141
|
const map = await this.payloadsHashMap();
|
|
142
|
-
return hashes.map((hash) => assertEx(map[hash], "Hash not found"));
|
|
142
|
+
return hashes.map((hash) => assertEx(map[hash], () => "Hash not found"));
|
|
143
143
|
}
|
|
144
144
|
payloadsBySchema(schema) {
|
|
145
145
|
return this.payloads.filter((payload) => (payload == null ? void 0 : payload.schema) === schema);
|
|
@@ -177,7 +177,7 @@ var _QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWit
|
|
|
177
177
|
_payloadsWithoutQuery;
|
|
178
178
|
_query;
|
|
179
179
|
static async parseQuery(obj, payloads) {
|
|
180
|
-
assertEx2(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
180
|
+
assertEx2(!Array.isArray(obj), () => "Array can not be converted to QueryBoundWitnessWrapper");
|
|
181
181
|
switch (typeof obj) {
|
|
182
182
|
case "object": {
|
|
183
183
|
const castWrapper = obj;
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["assertEx","isObject","asBoundWitness","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadBuilder","isPayloadWrapperBase","PayloadWrapper","PayloadWrapperBase","isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","assertEx","compact","PayloadBuilder","PayloadWrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
|
1
|
+
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\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 ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\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?: WithMeta<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 async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): 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.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<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 = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\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: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\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 payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["assertEx","isObject","asBoundWitness","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadBuilder","isPayloadWrapperBase","PayloadWrapper","PayloadWrapperBase","isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","assertEx","compact","PayloadBuilder","PayloadWrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
package/package.json
CHANGED
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^3.0.
|
|
14
|
-
"@xylabs/hex": "^3.0.
|
|
15
|
-
"@xylabs/lodash": "^3.0.
|
|
16
|
-
"@xylabs/object": "^3.0.
|
|
17
|
-
"@xyo-network/boundwitness-model": "~2.92.
|
|
18
|
-
"@xyo-network/boundwitness-validator": "~2.92.
|
|
19
|
-
"@xyo-network/payload": "~2.92.
|
|
20
|
-
"@xyo-network/payload-builder": "~2.92.
|
|
21
|
-
"@xyo-network/payload-model": "~2.92.
|
|
22
|
-
"@xyo-network/payload-wrapper": "~2.92.
|
|
13
|
+
"@xylabs/assert": "^3.0.15",
|
|
14
|
+
"@xylabs/hex": "^3.0.15",
|
|
15
|
+
"@xylabs/lodash": "^3.0.15",
|
|
16
|
+
"@xylabs/object": "^3.0.15",
|
|
17
|
+
"@xyo-network/boundwitness-model": "~2.92.8",
|
|
18
|
+
"@xyo-network/boundwitness-validator": "~2.92.8",
|
|
19
|
+
"@xyo-network/payload": "~2.92.8",
|
|
20
|
+
"@xyo-network/payload-builder": "~2.92.8",
|
|
21
|
+
"@xyo-network/payload-model": "~2.92.8",
|
|
22
|
+
"@xyo-network/payload-wrapper": "~2.92.8"
|
|
23
23
|
},
|
|
24
24
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
25
25
|
"devDependencies": {
|
|
@@ -65,6 +65,6 @@
|
|
|
65
65
|
},
|
|
66
66
|
"sideEffects": false,
|
|
67
67
|
"types": "dist/node/index.d.ts",
|
|
68
|
-
"version": "2.92.
|
|
68
|
+
"version": "2.92.8",
|
|
69
69
|
"type": "module"
|
|
70
70
|
}
|
|
@@ -54,7 +54,7 @@ export class BoundWitnessWrapper<
|
|
|
54
54
|
static async load(address: Address) {
|
|
55
55
|
const wrapper = await PayloadWrapper.load(address)
|
|
56
56
|
const payload = wrapper?.payload
|
|
57
|
-
assertEx(payload && isBoundWitness(payload), 'Attempt to load non-boundwitness')
|
|
57
|
+
assertEx(payload && isBoundWitness(payload), () => 'Attempt to load non-boundwitness')
|
|
58
58
|
|
|
59
59
|
const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined
|
|
60
60
|
return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null
|
|
@@ -72,7 +72,7 @@ export class BoundWitnessWrapper<
|
|
|
72
72
|
}
|
|
73
73
|
case 'object': {
|
|
74
74
|
if (isObject(obj)) {
|
|
75
|
-
hydratedObj = obj as WithMeta<T>
|
|
75
|
+
hydratedObj = obj as unknown as WithMeta<T>
|
|
76
76
|
}
|
|
77
77
|
break
|
|
78
78
|
}
|
|
@@ -171,12 +171,12 @@ export class BoundWitnessWrapper<
|
|
|
171
171
|
|
|
172
172
|
async payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {
|
|
173
173
|
const map = await this.payloadsDataHashMap()
|
|
174
|
-
return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)
|
|
174
|
+
return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {
|
|
178
178
|
const map = await this.payloadsHashMap()
|
|
179
|
-
return hashes.map((hash) => assertEx(map[hash], 'Hash not found') as TPayload)
|
|
179
|
+
return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {
|
|
@@ -12,7 +12,7 @@ export class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitn
|
|
|
12
12
|
private _query: T | undefined
|
|
13
13
|
|
|
14
14
|
static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {
|
|
15
|
-
assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')
|
|
15
|
+
assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')
|
|
16
16
|
switch (typeof obj) {
|
|
17
17
|
case 'object': {
|
|
18
18
|
const castWrapper = obj as QueryBoundWitnessWrapper<T>
|