@xyo-network/boundwitness-builder 2.90.2 → 2.90.4

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.
Files changed (61) hide show
  1. package/dist/browser/Builder.d.cts +5 -5
  2. package/dist/browser/Builder.d.cts.map +1 -1
  3. package/dist/browser/Builder.d.mts +5 -5
  4. package/dist/browser/Builder.d.mts.map +1 -1
  5. package/dist/browser/Builder.d.ts +5 -5
  6. package/dist/browser/Builder.d.ts.map +1 -1
  7. package/dist/browser/Query/index.d.cts +0 -1
  8. package/dist/browser/Query/index.d.cts.map +1 -1
  9. package/dist/browser/Query/index.d.mts +0 -1
  10. package/dist/browser/Query/index.d.mts.map +1 -1
  11. package/dist/browser/Query/index.d.ts +0 -1
  12. package/dist/browser/Query/index.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +7 -42
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.js +7 -42
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/node/Builder.d.cts +5 -5
  18. package/dist/node/Builder.d.cts.map +1 -1
  19. package/dist/node/Builder.d.mts +5 -5
  20. package/dist/node/Builder.d.mts.map +1 -1
  21. package/dist/node/Builder.d.ts +5 -5
  22. package/dist/node/Builder.d.ts.map +1 -1
  23. package/dist/node/Query/index.d.cts +0 -1
  24. package/dist/node/Query/index.d.cts.map +1 -1
  25. package/dist/node/Query/index.d.mts +0 -1
  26. package/dist/node/Query/index.d.mts.map +1 -1
  27. package/dist/node/Query/index.d.ts +0 -1
  28. package/dist/node/Query/index.d.ts.map +1 -1
  29. package/dist/node/index.cjs +9 -43
  30. package/dist/node/index.cjs.map +1 -1
  31. package/dist/node/index.js +8 -41
  32. package/dist/node/index.js.map +1 -1
  33. package/package.json +12 -17
  34. package/src/Builder.ts +12 -8
  35. package/src/Query/index.ts +0 -1
  36. package/dist/browser/Query/QueryBoundWitnessValidator.d.cts +0 -11
  37. package/dist/browser/Query/QueryBoundWitnessValidator.d.cts.map +0 -1
  38. package/dist/browser/Query/QueryBoundWitnessValidator.d.mts +0 -11
  39. package/dist/browser/Query/QueryBoundWitnessValidator.d.mts.map +0 -1
  40. package/dist/browser/Query/QueryBoundWitnessValidator.d.ts +0 -11
  41. package/dist/browser/Query/QueryBoundWitnessValidator.d.ts.map +0 -1
  42. package/dist/browser/Query/QueryBoundWitnessWrapper.d.cts +0 -12
  43. package/dist/browser/Query/QueryBoundWitnessWrapper.d.cts.map +0 -1
  44. package/dist/browser/Query/QueryBoundWitnessWrapper.d.mts +0 -12
  45. package/dist/browser/Query/QueryBoundWitnessWrapper.d.mts.map +0 -1
  46. package/dist/browser/Query/QueryBoundWitnessWrapper.d.ts +0 -12
  47. package/dist/browser/Query/QueryBoundWitnessWrapper.d.ts.map +0 -1
  48. package/dist/node/Query/QueryBoundWitnessValidator.d.cts +0 -11
  49. package/dist/node/Query/QueryBoundWitnessValidator.d.cts.map +0 -1
  50. package/dist/node/Query/QueryBoundWitnessValidator.d.mts +0 -11
  51. package/dist/node/Query/QueryBoundWitnessValidator.d.mts.map +0 -1
  52. package/dist/node/Query/QueryBoundWitnessValidator.d.ts +0 -11
  53. package/dist/node/Query/QueryBoundWitnessValidator.d.ts.map +0 -1
  54. package/dist/node/Query/QueryBoundWitnessWrapper.d.cts +0 -12
  55. package/dist/node/Query/QueryBoundWitnessWrapper.d.cts.map +0 -1
  56. package/dist/node/Query/QueryBoundWitnessWrapper.d.mts +0 -12
  57. package/dist/node/Query/QueryBoundWitnessWrapper.d.mts.map +0 -1
  58. package/dist/node/Query/QueryBoundWitnessWrapper.d.ts +0 -12
  59. package/dist/node/Query/QueryBoundWitnessWrapper.d.ts.map +0 -1
  60. package/src/Query/QueryBoundWitnessValidator.ts +0 -51
  61. package/src/Query/QueryBoundWitnessWrapper.ts +0 -48
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts","../../src/Query/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { Address, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { AnyObject, JsonObject } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { sortFields } from '@xyo-network/hash'\nimport { PayloadBuilder, PayloadBuilderBase, PayloadBuilderOptions, PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes'\n\nexport interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload>\n extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {\n readonly accounts?: AccountInstance[]\n readonly destination?: string[]\n readonly payloadHashes?: TBoundWitness['payload_hashes']\n readonly payloadSchemas?: TBoundWitness['payload_schemas']\n readonly payloads?: TPayload[]\n readonly sourceQuery?: Hash\n readonly timestamp?: number\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<\n Omit<TBoundWitness, GeneratedBoundWitnessFields>,\n BoundWitnessBuilderOptions<TBoundWitness> & { schema: BoundWitnessSchema }\n> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[]\n private _destination?: string[]\n private _errorHashes?: string[]\n private _errors: ModuleError[] = []\n private _payloadHashes?: string[]\n private _payloadSchemas?: string[]\n private _payloads: TPayload[]\n private _sourceQuery?: Hash\n private _timestamp: boolean | number\n\n constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>) {\n super({ ...options, schema: BoundWitnessSchema })\n const { accounts, payloadHashes, payloadSchemas, payloads, sourceQuery, timestamp, destination } = options ?? {}\n this._accounts = accounts ?? []\n this._payloadHashes = payloadHashes\n this._payloadSchemas = payloadSchemas\n this._payloads = payloads ?? []\n this._sourceQuery = sourceQuery\n this._destination = destination\n this._timestamp = timestamp ?? true\n }\n\n protected get addresses(): Address[] {\n return this._accounts.map((account) => account.address.toLowerCase())\n }\n\n protected get payloadSchemas(): string[] {\n return (\n this._payloadSchemas ??\n this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n protected get previousHashBuffers(): (ArrayBuffer | null)[] {\n return this._accounts.map((account) => account.previousHashBytes ?? null)\n }\n\n protected get previousHashes(): (Hash | null)[] {\n return this._accounts.map((account) => account.previousHash ?? null)\n }\n\n protected get timestamp(): number {\n return (this._timestamp = typeof this._timestamp === 'number' ? this._timestamp : Date.now())\n }\n\n static addressIndex<T extends BoundWitness>(payload: T, address: Address) {\n const index = payload.addresses.indexOf(address)\n if (index === -1) {\n throw new Error('Invalid address')\n }\n return index\n }\n\n static async build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>) {\n return await new BoundWitnessBuilder(options).build()\n }\n\n static override async dataHashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n ): Promise<Omit<T, '$hash' | '$meta'>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields)\n }\n\n static override async hashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n $meta?: JsonObject,\n $hash?: Hash,\n timestamp?: number,\n ): Promise<WithMeta<T>> {\n return await PayloadBuilderBase.hashableFields(schema, fields, $meta, $hash, timestamp)\n }\n\n static previousHash<T extends BoundWitness>(boundWitness: T, address: Address) {\n return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase()\n }\n\n protected static async linkingFields<T extends BoundWitness = BoundWitness>(\n accounts: AccountInstance[],\n payloads?: Payload[],\n timestamp = Date.now(),\n ) {\n const addresses = accounts.map((account) => hexFromArrayBuffer(account.addressBytes, { prefix: false }))\n const previous_hashes = accounts.map((account) => account.previousHash ?? null)\n const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : []\n const payload_schemas = payloads?.map(({ schema }) => schema)\n return { addresses, payload_hashes, payload_schemas, previous_hashes, timestamp } as Omit<T, '$meta' | '$hash' | 'schema'>\n }\n\n protected static async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta: JsonObject = { ...otherMeta }\n\n if (accounts?.length && previousHashes?.length) {\n assertEx(accounts.length === previousHashes.length, 'accounts and previousHashes must have same length')\n meta.signatures = await this.signatures(accounts, dataHash, previousHashes)\n }\n\n if (sourceQuery) {\n meta.sourceQuery = sourceQuery\n }\n\n if (destination) {\n meta.destination = destination\n }\n\n return meta\n }\n\n protected static signature<T extends BoundWitness>(payload: T, address: Address) {\n return payload.$meta.signatures[this.addressIndex(payload, address)]\n }\n\n protected static async signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n const hashBytes = toArrayBuffer(hash)\n const previousHashesBytes = previousHashes?.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hashBytes, previousHashesBytes[index]))))\n }\n\n private static validateLinkingFields(bw: Pick<BoundWitness, 'payload_hashes' | 'payload_schemas'>) {\n assertEx(bw.payload_hashes?.length === bw.payload_schemas?.length, 'Payload hash/schema mismatch')\n assertEx(!bw.payload_hashes.some((hash) => !hash), () => 'nulls found in hashes')\n assertEx(!bw.payload_schemas.some((schema) => !schema), 'nulls found in schemas')\n }\n\n async build(): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]> {\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const dataHashableFields = (await this.dataHashableFields()) as TBoundWitness\n const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash\n const $meta = await this.metaFields($hash)\n\n const ret = {\n ...dataHashableFields,\n $hash,\n $meta,\n } as WithMeta<TBoundWitness>\n return [ret, this._payloads, this._errors]\n })\n }\n\n override async dataHashableFields(): Promise<Omit<TBoundWitness, '$meta' | '$hash'>> {\n const fields = await this.linkingFields()\n const result = await BoundWitnessBuilder.dataHashableFields<TBoundWitness>(this._schema, fields)\n\n BoundWitnessBuilder.validateLinkingFields(result)\n\n return result as Omit<TBoundWitness, '$meta' | '$hash'>\n }\n\n async error(payload?: ModuleError) {\n const unwrappedPayload = await PayloadWrapper.unwrap(payload)\n assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')\n if (unwrappedPayload) {\n this._errors.push(assertEx(sortFields(unwrappedPayload)))\n }\n return this\n }\n\n async errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n await Promise.all(\n errors.map(async (error) => {\n if (error !== null) {\n await this.error(error)\n }\n }),\n )\n }\n return this\n }\n\n hashes(hashes: Hash[], schema: Schema[]) {\n assertEx(this.payloads.length === 0, 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n async payload(payload?: TPayload) {\n const unwrappedPayload = await PayloadWrapper.unwrap<TPayload>(payload)\n assertEx(this._payloadHashes === undefined, 'Can not set payloads when hashes already set')\n if (unwrappedPayload) {\n this._payloads.push(assertEx(sortFields<TPayload>(unwrappedPayload)))\n }\n return this\n }\n\n async payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n await Promise.all(\n payloads.map(async (payload) => {\n if (payload !== null) {\n await this.payload(payload)\n }\n }),\n )\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase()\n return this\n }\n\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n const hash = toArrayBuffer(_hash)\n const previousHashesBytes = previousHashes.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))))\n }\n\n private async linkingFields() {\n return await BoundWitnessBuilder.linkingFields<TBoundWitness>(this._accounts, this._payloads, this.timestamp)\n }\n\n private async metaFields(dataHash: Hash): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Query, WithMeta } from '@xyo-network/payload-model'\n\nimport { BoundWitnessBuilder } from '../Builder'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: WithMeta<TQuery> | undefined\n\n override async dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n return {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n }\n\n override async hashableFields(): Promise<WithMeta<TBoundWitness>> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as WithMeta<TBoundWitness>\n }\n\n async query<T extends TQuery>(query: T) {\n this._query = await PayloadBuilder.build(query)\n await this.payload(this._query)\n return this\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\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\n ? 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 /*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.jsonPayload().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 T | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["toArrayBuffer","toUint8Array","assertEx","hexFromArrayBuffer","BoundWitnessSchema","sortFields","PayloadBuilder","PayloadBuilderBase","PayloadWrapper","Mutex","BoundWitnessBuilder","PayloadBuilderBase","_accounts","_destination","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","options","schema","BoundWitnessSchema","accounts","payloadHashes","payloadSchemas","payloads","sourceQuery","timestamp","destination","addresses","map","account","address","toLowerCase","payload","assertEx","missingSchemaMessage","previousHashBuffers","previousHashBytes","previousHashes","previousHash","Date","now","addressIndex","index","indexOf","Error","build","dataHashableFields","fields","hashableFields","$meta","$hash","boundWitness","previous_hashes","linkingFields","hexFromArrayBuffer","addressBytes","prefix","payload_hashes","PayloadBuilder","dataHashes","payload_schemas","metaFields","dataHash","otherMeta","meta","length","signatures","signature","hash","hashBytes","toArrayBuffer","previousHashesBytes","ph","toUint8Array","undefined","Promise","all","sign","validateLinkingFields","bw","some","_buildMutex","runExclusive","ret","result","_schema","error","unwrappedPayload","PayloadWrapper","unwrap","push","sortFields","errors","hashes","query","witness","witnesses","_hash","_$meta","JSON","stringify","Mutex","assertEx","QueryBoundWitnessSchema","PayloadBuilder","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","dataHashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","hashableFields","PayloadBuilder","build","payload","assertEx","compact","BoundWitnessWrapper","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","jsonPayload","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
1
+ {"version":3,"sources":["../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts"],"sourcesContent":["import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { Address, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { AnyObject, JsonObject } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { sortFields } from '@xyo-network/hash'\nimport { PayloadBuilder, PayloadBuilderBase, PayloadBuilderOptions, PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes'\n\nexport interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload>\n extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {\n readonly accounts?: AccountInstance[]\n readonly destination?: string[]\n readonly payloadHashes?: TBoundWitness['payload_hashes']\n readonly payloadSchemas?: TBoundWitness['payload_schemas']\n readonly payloads?: TPayload[]\n readonly sourceQuery?: Hash\n readonly timestamp?: number\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<\n Omit<TBoundWitness, GeneratedBoundWitnessFields>,\n BoundWitnessBuilderOptions<TBoundWitness> & { schema: BoundWitnessSchema }\n> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[]\n private _destination?: string[]\n private _errorHashes?: string[]\n private _errors: ModuleError[] = []\n private _payloadHashes?: string[]\n private _payloadSchemas?: string[]\n private _payloads: TPayload[]\n private _sourceQuery?: Hash\n private _timestamp: boolean | number\n\n constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>) {\n super({ ...options, schema: BoundWitnessSchema })\n const { accounts, payloadHashes, payloadSchemas, payloads, sourceQuery, timestamp, destination } = options ?? {}\n this._accounts = accounts ?? []\n this._payloadHashes = payloadHashes\n this._payloadSchemas = payloadSchemas\n this._payloads = payloads ?? []\n this._sourceQuery = sourceQuery\n this._destination = destination\n this._timestamp = timestamp ?? true\n }\n\n protected get addresses(): Address[] {\n return this._accounts.map((account) => account.address.toLowerCase())\n }\n\n protected get payloadSchemas(): string[] {\n return (\n this._payloadSchemas ??\n this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n protected get previousHashBuffers(): (ArrayBuffer | null)[] {\n return this._accounts.map((account) => account.previousHashBytes ?? null)\n }\n\n protected get previousHashes(): (Hash | null)[] {\n return this._accounts.map((account) => account.previousHash ?? null)\n }\n\n protected get timestamp(): number {\n return (this._timestamp = typeof this._timestamp === 'number' ? this._timestamp : Date.now())\n }\n\n static addressIndex<T extends BoundWitness>(payload: T, address: Address) {\n const index = payload.addresses.indexOf(address)\n if (index === -1) {\n throw new Error('Invalid address')\n }\n return index\n }\n\n static async build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>) {\n return await new BoundWitnessBuilder(options).build()\n }\n\n static override async dataHashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n ): Promise<Omit<T, '$hash' | '$meta'>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields)\n }\n\n static override async hashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n $meta?: JsonObject,\n $hash?: Hash,\n timestamp?: number,\n ): Promise<WithMeta<T>> {\n return await PayloadBuilderBase.hashableFields(schema, fields, $meta, $hash, timestamp)\n }\n\n static previousHash<T extends BoundWitness>(boundWitness: T, address: Address) {\n return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase()\n }\n\n protected static async linkingFields<T extends BoundWitness = BoundWitness>(\n accounts: AccountInstance[],\n payloads?: Payload[],\n timestamp = Date.now(),\n ) {\n const addresses = accounts.map((account) => hexFromArrayBuffer(account.addressBytes, { prefix: false }))\n const previous_hashes = accounts.map((account) => account.previousHash ?? null)\n const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : []\n const payload_schemas = payloads?.map(({ schema }) => schema)\n return { addresses, payload_hashes, payload_schemas, previous_hashes, timestamp } as Omit<T, '$meta' | '$hash' | 'schema'>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta: JsonObject = { ...(await PayloadBuilderBase.metaFields(dataHash, otherMeta)) }\n\n if (accounts?.length && previousHashes?.length) {\n assertEx(accounts.length === previousHashes.length, 'accounts and previousHashes must have same length')\n meta.signatures = await this.signatures(accounts, dataHash, previousHashes)\n }\n\n if (sourceQuery) {\n meta.sourceQuery = sourceQuery\n }\n\n if (destination) {\n meta.destination = destination\n }\n\n return meta\n }\n\n protected static signature<T extends BoundWitness>(payload: T, address: Address) {\n return payload.$meta.signatures[this.addressIndex(payload, address)]\n }\n\n protected static async signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n const hashBytes = toArrayBuffer(hash)\n const previousHashesBytes = previousHashes?.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hashBytes, previousHashesBytes[index]))))\n }\n\n private static validateLinkingFields(bw: Pick<BoundWitness, 'payload_hashes' | 'payload_schemas'>) {\n assertEx(bw.payload_hashes?.length === bw.payload_schemas?.length, 'Payload hash/schema mismatch')\n assertEx(!bw.payload_hashes.some((hash) => !hash), () => 'nulls found in hashes')\n assertEx(!bw.payload_schemas.some((schema) => !schema), 'nulls found in schemas')\n }\n\n async build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]> {\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const dataHashableFields = (await this.dataHashableFields()) as TBoundWitness\n const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash\n const $meta = await this.metaFields($hash)\n\n const ret = {\n ...dataHashableFields,\n $hash,\n $meta,\n } as WithMeta<TBoundWitness>\n return [\n ret,\n await Promise.all(this._payloads?.map((payload) => PayloadBuilder.build(payload))),\n await Promise.all(this._errors?.map((error) => PayloadBuilder.build(error))),\n ]\n })\n }\n\n override async dataHashableFields(): Promise<Omit<TBoundWitness, '$meta' | '$hash'>> {\n const fields = await this.linkingFields()\n const result = await BoundWitnessBuilder.dataHashableFields<TBoundWitness>(this._schema, fields)\n\n BoundWitnessBuilder.validateLinkingFields(result)\n\n return result as Omit<TBoundWitness, '$meta' | '$hash'>\n }\n\n async error(payload?: ModuleError) {\n const unwrappedPayload = await PayloadWrapper.unwrap(payload)\n assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')\n if (unwrappedPayload) {\n this._errors.push(assertEx(sortFields(unwrappedPayload)))\n }\n return this\n }\n\n async errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n await Promise.all(\n errors.map(async (error) => {\n if (error !== null) {\n await this.error(error)\n }\n }),\n )\n }\n return this\n }\n\n hashes(hashes: Hash[], schema: Schema[]) {\n assertEx(this.payloads.length === 0, 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n async payload(payload?: TPayload) {\n const unwrappedPayload = await PayloadWrapper.unwrap<TPayload>(payload)\n assertEx(this._payloadHashes === undefined, 'Can not set payloads when hashes already set')\n if (unwrappedPayload) {\n this._payloads.push(assertEx(sortFields<TPayload>(unwrappedPayload)))\n }\n return this\n }\n\n async payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n await Promise.all(\n payloads.map(async (payload) => {\n if (payload !== null) {\n await this.payload(payload)\n }\n }),\n )\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase()\n return this\n }\n\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected override async metaFields(dataHash: Hash): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n const hash = toArrayBuffer(_hash)\n const previousHashesBytes = previousHashes.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))))\n }\n\n private async linkingFields() {\n return await BoundWitnessBuilder.linkingFields<TBoundWitness>(this._accounts, this._payloads, this.timestamp)\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Query, WithMeta } from '@xyo-network/payload-model'\n\nimport { BoundWitnessBuilder } from '../Builder'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: WithMeta<TQuery> | undefined\n\n override async dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n return {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n }\n\n override async hashableFields(): Promise<WithMeta<TBoundWitness>> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as WithMeta<TBoundWitness>\n }\n\n async query<T extends TQuery>(query: T) {\n this._query = await PayloadBuilder.build(query)\n await this.payload(this._query)\n return this\n }\n}\n"],"mappings":"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","names":["toArrayBuffer","toUint8Array","assertEx","hexFromArrayBuffer","BoundWitnessSchema","sortFields","PayloadBuilder","PayloadBuilderBase","PayloadWrapper","Mutex","BoundWitnessBuilder","PayloadBuilderBase","_accounts","_destination","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","options","schema","BoundWitnessSchema","accounts","payloadHashes","payloadSchemas","payloads","sourceQuery","timestamp","destination","addresses","map","account","address","toLowerCase","payload","assertEx","missingSchemaMessage","previousHashBuffers","previousHashBytes","previousHashes","previousHash","Date","now","addressIndex","index","indexOf","Error","build","dataHashableFields","fields","hashableFields","$meta","$hash","boundWitness","previous_hashes","linkingFields","hexFromArrayBuffer","addressBytes","prefix","payload_hashes","PayloadBuilder","dataHashes","payload_schemas","metaFields","dataHash","otherMeta","meta","length","signatures","signature","hash","hashBytes","toArrayBuffer","previousHashesBytes","ph","toUint8Array","undefined","Promise","all","sign","validateLinkingFields","bw","some","_buildMutex","runExclusive","ret","error","result","_schema","unwrappedPayload","PayloadWrapper","unwrap","push","sortFields","errors","hashes","query","witness","witnesses","_$meta","_hash","JSON","stringify","Mutex","assertEx","QueryBoundWitnessSchema","PayloadBuilder","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","dataHashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","hashableFields","PayloadBuilder","build","payload"]}
package/package.json CHANGED
@@ -10,28 +10,23 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/arraybuffer": "^2.14.0",
14
- "@xylabs/assert": "^2.14.0",
15
- "@xylabs/error": "^2.14.0",
16
- "@xylabs/hex": "^2.14.0",
17
- "@xylabs/lodash": "^2.14.0",
18
- "@xylabs/object": "^2.89.0",
19
- "@xyo-network/account-model": "~2.90.2",
20
- "@xyo-network/boundwitness-model": "~2.90.2",
21
- "@xyo-network/boundwitness-validator": "~2.90.2",
22
- "@xyo-network/boundwitness-wrapper": "~2.90.2",
23
- "@xyo-network/hash": "~2.90.2",
24
- "@xyo-network/payload": "~2.90.2",
25
- "@xyo-network/payload-model": "~2.90.2",
26
- "@xyo-network/payload-wrapper": "~2.90.2",
13
+ "@xylabs/arraybuffer": "^2.14.1",
14
+ "@xylabs/assert": "^2.14.1",
15
+ "@xylabs/hex": "^2.14.1",
16
+ "@xylabs/object": "^2.89.1",
17
+ "@xyo-network/account-model": "~2.90.4",
18
+ "@xyo-network/boundwitness-model": "~2.90.4",
19
+ "@xyo-network/hash": "~2.90.4",
20
+ "@xyo-network/payload": "~2.90.4",
21
+ "@xyo-network/payload-model": "~2.90.4",
27
22
  "async-mutex": "^0.4.1"
28
23
  },
29
24
  "description": "Primary SDK for using XYO Protocol 2.0",
30
25
  "devDependencies": {
31
- "@xylabs/object": "^2.89.0",
26
+ "@xylabs/object": "^2.89.1",
32
27
  "@xylabs/ts-scripts-yarn3": "^3.2.42",
33
28
  "@xylabs/tsconfig": "^3.2.42",
34
- "@xyo-network/account": "~2.90.2",
29
+ "@xyo-network/account": "~2.90.4",
35
30
  "typescript": "^5.3.3"
36
31
  },
37
32
  "exports": {
@@ -72,6 +67,6 @@
72
67
  },
73
68
  "sideEffects": false,
74
69
  "types": "dist/node/index.d.ts",
75
- "version": "2.90.2",
70
+ "version": "2.90.4",
76
71
  "type": "module"
77
72
  }
package/src/Builder.ts CHANGED
@@ -119,7 +119,7 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitne
119
119
  return { addresses, payload_hashes, payload_schemas, previous_hashes, timestamp } as Omit<T, '$meta' | '$hash' | 'schema'>
120
120
  }
121
121
 
122
- protected static async metaFields(
122
+ protected static override async metaFields(
123
123
  dataHash: Hash,
124
124
  otherMeta?: JsonObject,
125
125
  accounts?: AccountInstance[],
@@ -127,7 +127,7 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitne
127
127
  destination?: Address[],
128
128
  sourceQuery?: Hash,
129
129
  ): Promise<JsonObject> {
130
- const meta: JsonObject = { ...otherMeta }
130
+ const meta: JsonObject = { ...(await PayloadBuilderBase.metaFields(dataHash, otherMeta)) }
131
131
 
132
132
  if (accounts?.length && previousHashes?.length) {
133
133
  assertEx(accounts.length === previousHashes.length, 'accounts and previousHashes must have same length')
@@ -161,7 +161,7 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitne
161
161
  assertEx(!bw.payload_schemas.some((schema) => !schema), 'nulls found in schemas')
162
162
  }
163
163
 
164
- async build(): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]> {
164
+ async build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]> {
165
165
  return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {
166
166
  const dataHashableFields = (await this.dataHashableFields()) as TBoundWitness
167
167
  const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash
@@ -172,7 +172,11 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitne
172
172
  $hash,
173
173
  $meta,
174
174
  } as WithMeta<TBoundWitness>
175
- return [ret, this._payloads, this._errors]
175
+ return [
176
+ ret,
177
+ await Promise.all(this._payloads?.map((payload) => PayloadBuilder.build(payload))),
178
+ await Promise.all(this._errors?.map((error) => PayloadBuilder.build(error))),
179
+ ]
176
180
  })
177
181
  }
178
182
 
@@ -250,6 +254,10 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitne
250
254
  return this
251
255
  }
252
256
 
257
+ protected override async metaFields(dataHash: Hash): Promise<JsonObject> {
258
+ return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)
259
+ }
260
+
253
261
  protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {
254
262
  const hash = toArrayBuffer(_hash)
255
263
  const previousHashesBytes = previousHashes.map((ph) => (ph ? toUint8Array(ph) : undefined))
@@ -260,10 +268,6 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitne
260
268
  return await BoundWitnessBuilder.linkingFields<TBoundWitness>(this._accounts, this._payloads, this.timestamp)
261
269
  }
262
270
 
263
- private async metaFields(dataHash: Hash): Promise<JsonObject> {
264
- return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)
265
- }
266
-
267
271
  private missingSchemaMessage(payload: Payload) {
268
272
  return `Builder: Missing Schema\n${JSON.stringify(payload, null, 2)}`
269
273
  }
@@ -1,2 +1 @@
1
1
  export * from './QueryBoundWitnessBuilder'
2
- export * from './QueryBoundWitnessWrapper'
@@ -1,11 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
3
- import { Query } from '@xyo-network/payload-model';
4
- export declare class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
5
- private _query;
6
- protected get expectedSchema(): string;
7
- static isQueryBoundWitnessValidator(obj: unknown): boolean;
8
- validate(): Promise<Error[]>;
9
- validateResultSet(): Promise<Error[]>;
10
- }
11
- //# sourceMappingURL=QueryBoundWitnessValidator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessValidator.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGrE,qBAAa,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,qBAAqB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAA+B;IAE7C,cAAuB,cAAc,IAAI,MAAM,CAE9C;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO;IAIjC,QAAQ;IAOjB,iBAAiB;CAwBxB"}
@@ -1,11 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
3
- import { Query } from '@xyo-network/payload-model';
4
- export declare class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
5
- private _query;
6
- protected get expectedSchema(): string;
7
- static isQueryBoundWitnessValidator(obj: unknown): boolean;
8
- validate(): Promise<Error[]>;
9
- validateResultSet(): Promise<Error[]>;
10
- }
11
- //# sourceMappingURL=QueryBoundWitnessValidator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessValidator.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGrE,qBAAa,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,qBAAqB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAA+B;IAE7C,cAAuB,cAAc,IAAI,MAAM,CAE9C;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO;IAIjC,QAAQ;IAOjB,iBAAiB;CAwBxB"}
@@ -1,11 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
3
- import { Query } from '@xyo-network/payload-model';
4
- export declare class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
5
- private _query;
6
- protected get expectedSchema(): string;
7
- static isQueryBoundWitnessValidator(obj: unknown): boolean;
8
- validate(): Promise<Error[]>;
9
- validateResultSet(): Promise<Error[]>;
10
- }
11
- //# sourceMappingURL=QueryBoundWitnessValidator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessValidator.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGrE,qBAAa,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,qBAAqB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAA+B;IAE7C,cAAuB,cAAc,IAAI,MAAM,CAE9C;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO;IAIjC,QAAQ;IAOjB,iBAAiB;CAwBxB"}
@@ -1,12 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
3
- import { Payload, Query } from '@xyo-network/payload-model';
4
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
5
- export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
6
- private _payloadsWithoutQuery;
7
- private _query;
8
- static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
9
- getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
10
- getQuery(): Promise<T>;
11
- }
12
- //# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
@@ -1,12 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
3
- import { Payload, Query } from '@xyo-network/payload-model';
4
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
5
- export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
6
- private _payloadsWithoutQuery;
7
- private _query;
8
- static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
9
- getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
10
- getQuery(): Promise<T>;
11
- }
12
- //# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
@@ -1,12 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
3
- import { Payload, Query } from '@xyo-network/payload-model';
4
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
5
- export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
6
- private _payloadsWithoutQuery;
7
- private _query;
8
- static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
9
- getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
10
- getQuery(): Promise<T>;
11
- }
12
- //# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
@@ -1,11 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
3
- import { Query } from '@xyo-network/payload-model';
4
- export declare class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
5
- private _query;
6
- protected get expectedSchema(): string;
7
- static isQueryBoundWitnessValidator(obj: unknown): boolean;
8
- validate(): Promise<Error[]>;
9
- validateResultSet(): Promise<Error[]>;
10
- }
11
- //# sourceMappingURL=QueryBoundWitnessValidator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessValidator.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGrE,qBAAa,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,qBAAqB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAA+B;IAE7C,cAAuB,cAAc,IAAI,MAAM,CAE9C;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO;IAIjC,QAAQ;IAOjB,iBAAiB;CAwBxB"}
@@ -1,11 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
3
- import { Query } from '@xyo-network/payload-model';
4
- export declare class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
5
- private _query;
6
- protected get expectedSchema(): string;
7
- static isQueryBoundWitnessValidator(obj: unknown): boolean;
8
- validate(): Promise<Error[]>;
9
- validateResultSet(): Promise<Error[]>;
10
- }
11
- //# sourceMappingURL=QueryBoundWitnessValidator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessValidator.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGrE,qBAAa,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,qBAAqB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAA+B;IAE7C,cAAuB,cAAc,IAAI,MAAM,CAE9C;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO;IAIjC,QAAQ;IAOjB,iBAAiB;CAwBxB"}
@@ -1,11 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
3
- import { Query } from '@xyo-network/payload-model';
4
- export declare class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
5
- private _query;
6
- protected get expectedSchema(): string;
7
- static isQueryBoundWitnessValidator(obj: unknown): boolean;
8
- validate(): Promise<Error[]>;
9
- validateResultSet(): Promise<Error[]>;
10
- }
11
- //# sourceMappingURL=QueryBoundWitnessValidator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessValidator.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGrE,qBAAa,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,qBAAqB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAA+B;IAE7C,cAAuB,cAAc,IAAI,MAAM,CAE9C;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO;IAIjC,QAAQ;IAOjB,iBAAiB;CAwBxB"}
@@ -1,12 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
3
- import { Payload, Query } from '@xyo-network/payload-model';
4
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
5
- export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
6
- private _payloadsWithoutQuery;
7
- private _query;
8
- static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
9
- getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
10
- getQuery(): Promise<T>;
11
- }
12
- //# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
@@ -1,12 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
3
- import { Payload, Query } from '@xyo-network/payload-model';
4
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
5
- export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
6
- private _payloadsWithoutQuery;
7
- private _query;
8
- static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
9
- getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
10
- getQuery(): Promise<T>;
11
- }
12
- //# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
@@ -1,12 +0,0 @@
1
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
3
- import { Payload, Query } from '@xyo-network/payload-model';
4
- import { PayloadWrapper } from '@xyo-network/payload-wrapper';
5
- export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
6
- private _payloadsWithoutQuery;
7
- private _query;
8
- static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
9
- getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
10
- getQuery(): Promise<T>;
11
- }
12
- //# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
@@ -1,51 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { handleError } from '@xylabs/error'
3
- import { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'
4
- import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'
5
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
6
- import { PayloadSetPayload, Query } from '@xyo-network/payload-model'
7
- import { PayloadWrapper } from '@xyo-network/payload-wrapper'
8
-
9
- export class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
10
- private _query: PayloadWrapper<T> | undefined
11
-
12
- protected override get expectedSchema(): string {
13
- return QueryBoundWitnessSchema
14
- }
15
-
16
- static isQueryBoundWitnessValidator(obj: unknown) {
17
- return (obj as QueryBoundWitnessValidator)?.constructor === QueryBoundWitnessValidator
18
- }
19
-
20
- override async validate() {
21
- return [
22
- ...(await super.validate()),
23
- // ...this.validateResultSet()
24
- ]
25
- }
26
-
27
- async validateResultSet() {
28
- const errors: Error[] = []
29
- try {
30
- const resultSetHash = assertEx(this.obj.resultSet, 'Missing ResultSet')
31
- const wrapper = await BoundWitnessWrapper.parse(this.obj)
32
- const resultSet = await PayloadWrapper.wrap<PayloadSetPayload>((await wrapper.payloadsDataHashMap())[resultSetHash] as PayloadSetPayload)
33
- const required = resultSet?.jsonPayload().required
34
- if (required) {
35
- for (const [key, value] of Object.entries(required)) {
36
- const found = wrapper.payloadSchemas.reduce((count, schema) => {
37
- return count + (schema === key ? 1 : 0)
38
- }, 0)
39
- if (found !== value) {
40
- errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`))
41
- }
42
- }
43
- }
44
- } catch (ex) {
45
- handleError(ex, (error) => {
46
- errors.push(error)
47
- })
48
- }
49
- return errors
50
- }
51
- }
@@ -1,48 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { compact } from '@xylabs/lodash'
3
- import { QueryBoundWitness } from '@xyo-network/boundwitness-model'
4
- import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
5
- import { PayloadBuilder } from '@xyo-network/payload'
6
- import { Payload, Query } from '@xyo-network/payload-model'
7
- import { PayloadWrapper } from '@xyo-network/payload-wrapper'
8
-
9
- export class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
10
- private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined
11
- private _query: T | undefined
12
-
13
- static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {
14
- assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')
15
- switch (typeof obj) {
16
- case 'object': {
17
- const castWrapper = obj as QueryBoundWitnessWrapper<T>
18
- const wrapper =
19
- castWrapper instanceof QueryBoundWitnessWrapper
20
- ? castWrapper
21
- : new QueryBoundWitnessWrapper<T>(
22
- await PayloadBuilder.build(obj as QueryBoundWitness),
23
- payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,
24
- )
25
- /*if (!wrapper.valid) {
26
- console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)
27
- }*/
28
- return wrapper
29
- }
30
- }
31
- throw new Error(`Unable to parse [${typeof obj}]`)
32
- }
33
-
34
- async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {
35
- this._payloadsWithoutQuery =
36
- this._payloadsWithoutQuery ??
37
- (await Promise.all(
38
- compact((await PayloadBuilder.filterExclude(this.payloads, this.jsonPayload().query)).map((payload) => PayloadWrapper.wrap(payload))),
39
- ))
40
- return this._payloadsWithoutQuery
41
- }
42
-
43
- async getQuery(): Promise<T> {
44
- const payloadMap = await this.payloadsDataHashMap()
45
- this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)
46
- return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)
47
- }
48
- }