@xyo-network/boundwitness-validator 2.88.3 → 2.89.0-rc.10

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.
@@ -31,7 +31,7 @@ var import_lodash = require("@xylabs/lodash");
31
31
  var import_typeof = require("@xylabs/typeof");
32
32
  var import_account = require("@xyo-network/account");
33
33
  var import_boundwitness_model = require("@xyo-network/boundwitness-model");
34
- var import_hash = require("@xyo-network/hash");
34
+ var import_payload = require("@xyo-network/payload");
35
35
  var import_payload_validator = require("@xyo-network/payload-validator");
36
36
  var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
37
37
  return a.length == b.length ? [] : [
@@ -99,8 +99,8 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
99
99
  }
100
100
  async signatures() {
101
101
  return [
102
- ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
103
- ...(await Promise.all(this.obj.addresses.map(async (address, index) => _BoundWitnessValidator.validateSignature((0, import_arraybuffer.toUint8Array)(await import_hash.PayloadHasher.hashAsync(this.payload)), (0, import_arraybuffer.toUint8Array)(address), (0, import_arraybuffer.toUint8Array)(this.obj._signatures?.[index]))))).flat()
102
+ ...validateArraysSameLength(this.obj.$meta?.signatures ?? [], this.obj.addresses ?? [], "Length mismatch: address/signature"),
103
+ ...(await Promise.all(this.obj.addresses?.map(async (address, index) => _BoundWitnessValidator.validateSignature((0, import_arraybuffer.toUint8Array)(await import_payload.PayloadBuilder.dataHash(this.payload)), (0, import_arraybuffer.toUint8Array)(address), (0, import_arraybuffer.toUint8Array)(this.obj.$meta?.signatures?.[index]))) ?? [])).flat()
104
104
  ];
105
105
  }
106
106
  async validate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Validator.ts"],"sourcesContent":["export * from './Validator'\n","import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, 'Length mismatch: address/_signature'),\n ...(\n await Promise.all(\n this.obj.addresses.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadHasher.hashAsync(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj._signatures?.[index]),\n ),\n ),\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":"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","names":["validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","_signatures","Promise","index","PayloadHasher","hashAsync","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Validator.ts"],"sourcesContent":["export * from './Validator'\n","import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj.$meta?.signatures ?? [], this.obj.addresses ?? [], 'Length mismatch: address/signature'),\n ...(\n await Promise.all(\n this.obj.addresses?.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadBuilder.dataHash(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj.$meta?.signatures?.[index]),\n ),\n ) ?? [],\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":"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","names":["validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","$meta","Promise","index","PayloadBuilder","dataHash","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
@@ -7,7 +7,7 @@ import { uniq } from "@xylabs/lodash";
7
7
  import { validateType } from "@xylabs/typeof";
8
8
  import { AddressValue } from "@xyo-network/account";
9
9
  import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
10
- import { PayloadHasher } from "@xyo-network/hash";
10
+ import { PayloadBuilder } from "@xyo-network/payload";
11
11
  import { PayloadValidator } from "@xyo-network/payload-validator";
12
12
  var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
13
13
  return a.length == b.length ? [] : [
@@ -75,8 +75,8 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
75
75
  }
76
76
  async signatures() {
77
77
  return [
78
- ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
79
- ...(await Promise.all(this.obj.addresses.map(async (address, index) => _BoundWitnessValidator.validateSignature(toUint8Array(await PayloadHasher.hashAsync(this.payload)), toUint8Array(address), toUint8Array(this.obj._signatures?.[index]))))).flat()
78
+ ...validateArraysSameLength(this.obj.$meta?.signatures ?? [], this.obj.addresses ?? [], "Length mismatch: address/signature"),
79
+ ...(await Promise.all(this.obj.addresses?.map(async (address, index) => _BoundWitnessValidator.validateSignature(toUint8Array(await PayloadBuilder.dataHash(this.payload)), toUint8Array(address), toUint8Array(this.obj.$meta?.signatures?.[index]))) ?? [])).flat()
80
80
  ];
81
81
  }
82
82
  async validate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Validator.ts"],"sourcesContent":["import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, 'Length mismatch: address/_signature'),\n ...(\n await Promise.all(\n this.obj.addresses.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadHasher.hashAsync(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj._signatures?.[index]),\n ),\n ),\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":"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","names":["toUint8Array","uniq","validateType","AddressValue","BoundWitnessSchema","PayloadHasher","PayloadValidator","validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","_signatures","Promise","index","PayloadHasher","hashAsync","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
1
+ {"version":3,"sources":["../../src/Validator.ts"],"sourcesContent":["import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj.$meta?.signatures ?? [], this.obj.addresses ?? [], 'Length mismatch: address/signature'),\n ...(\n await Promise.all(\n this.obj.addresses?.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadBuilder.dataHash(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj.$meta?.signatures?.[index]),\n ),\n ) ?? [],\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":"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","names":["toUint8Array","uniq","validateType","AddressValue","BoundWitnessSchema","PayloadBuilder","PayloadValidator","validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","$meta","Promise","index","PayloadBuilder","dataHash","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
@@ -31,7 +31,7 @@ var import_lodash = require("@xylabs/lodash");
31
31
  var import_typeof = require("@xylabs/typeof");
32
32
  var import_account = require("@xyo-network/account");
33
33
  var import_boundwitness_model = require("@xyo-network/boundwitness-model");
34
- var import_hash = require("@xyo-network/hash");
34
+ var import_payload = require("@xyo-network/payload");
35
35
  var import_payload_validator = require("@xyo-network/payload-validator");
36
36
  var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
37
37
  return a.length == b.length ? [] : [
@@ -96,12 +96,13 @@ var _BoundWitnessValidator = class _BoundWitnessValidator extends import_payload
96
96
  return errors;
97
97
  }
98
98
  async signatures() {
99
+ var _a, _b;
99
100
  return [
100
- ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
101
- ...(await Promise.all(this.obj.addresses.map(async (address, index) => {
102
- var _a;
103
- return _BoundWitnessValidator.validateSignature((0, import_arraybuffer.toUint8Array)(await import_hash.PayloadHasher.hashAsync(this.payload)), (0, import_arraybuffer.toUint8Array)(address), (0, import_arraybuffer.toUint8Array)((_a = this.obj._signatures) == null ? void 0 : _a[index]));
104
- }))).flat()
101
+ ...validateArraysSameLength(((_a = this.obj.$meta) == null ? void 0 : _a.signatures) ?? [], this.obj.addresses ?? [], "Length mismatch: address/signature"),
102
+ ...(await Promise.all(((_b = this.obj.addresses) == null ? void 0 : _b.map(async (address, index) => {
103
+ var _a2, _b2;
104
+ return _BoundWitnessValidator.validateSignature((0, import_arraybuffer.toUint8Array)(await import_payload.PayloadBuilder.dataHash(this.payload)), (0, import_arraybuffer.toUint8Array)(address), (0, import_arraybuffer.toUint8Array)((_b2 = (_a2 = this.obj.$meta) == null ? void 0 : _a2.signatures) == null ? void 0 : _b2[index]));
105
+ })) ?? [])).flat()
105
106
  ];
106
107
  }
107
108
  async validate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Validator.ts"],"sourcesContent":["export * from './Validator'\n","import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, 'Length mismatch: address/_signature'),\n ...(\n await Promise.all(\n this.obj.addresses.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadHasher.hashAsync(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj._signatures?.[index]),\n ),\n ),\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":"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","names":["validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","_signatures","Promise","index","PayloadHasher","hashAsync","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Validator.ts"],"sourcesContent":["export * from './Validator'\n","import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj.$meta?.signatures ?? [], this.obj.addresses ?? [], 'Length mismatch: address/signature'),\n ...(\n await Promise.all(\n this.obj.addresses?.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadBuilder.dataHash(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj.$meta?.signatures?.[index]),\n ),\n ) ?? [],\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":"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","names":["validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","$meta","Promise","index","_a","_b","PayloadBuilder","dataHash","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
@@ -7,7 +7,7 @@ import { uniq } from "@xylabs/lodash";
7
7
  import { validateType } from "@xylabs/typeof";
8
8
  import { AddressValue } from "@xyo-network/account";
9
9
  import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
10
- import { PayloadHasher } from "@xyo-network/hash";
10
+ import { PayloadBuilder } from "@xyo-network/payload";
11
11
  import { PayloadValidator } from "@xyo-network/payload-validator";
12
12
  var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
13
13
  return a.length == b.length ? [] : [
@@ -72,12 +72,13 @@ var _BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidat
72
72
  return errors;
73
73
  }
74
74
  async signatures() {
75
+ var _a, _b;
75
76
  return [
76
- ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
77
- ...(await Promise.all(this.obj.addresses.map(async (address, index) => {
78
- var _a;
79
- return _BoundWitnessValidator.validateSignature(toUint8Array(await PayloadHasher.hashAsync(this.payload)), toUint8Array(address), toUint8Array((_a = this.obj._signatures) == null ? void 0 : _a[index]));
80
- }))).flat()
77
+ ...validateArraysSameLength(((_a = this.obj.$meta) == null ? void 0 : _a.signatures) ?? [], this.obj.addresses ?? [], "Length mismatch: address/signature"),
78
+ ...(await Promise.all(((_b = this.obj.addresses) == null ? void 0 : _b.map(async (address, index) => {
79
+ var _a2, _b2;
80
+ return _BoundWitnessValidator.validateSignature(toUint8Array(await PayloadBuilder.dataHash(this.payload)), toUint8Array(address), toUint8Array((_b2 = (_a2 = this.obj.$meta) == null ? void 0 : _a2.signatures) == null ? void 0 : _b2[index]));
81
+ })) ?? [])).flat()
81
82
  ];
82
83
  }
83
84
  async validate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Validator.ts"],"sourcesContent":["import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, 'Length mismatch: address/_signature'),\n ...(\n await Promise.all(\n this.obj.addresses.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadHasher.hashAsync(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj._signatures?.[index]),\n ),\n ),\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":"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","names":["toUint8Array","uniq","validateType","AddressValue","BoundWitnessSchema","PayloadHasher","PayloadValidator","validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","_signatures","Promise","index","PayloadHasher","hashAsync","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
1
+ {"version":3,"sources":["../../src/Validator.ts"],"sourcesContent":["import { toUint8Array } from '@xylabs/arraybuffer'\nimport { uniq } from '@xylabs/lodash'\nimport { validateType } from '@xylabs/typeof'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\n\nconst validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {\n return a.length == b.length ? [] : [Error(`${message} []`)]\n}\n\nexport class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {\n protected get expectedSchema(): string {\n return BoundWitnessSchema\n }\n\n static validateSignature(hash: ArrayBuffer, address: ArrayBuffer, signature?: ArrayBuffer): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {\n return [Error(`Invalid signature [${address}] [${signature}]`)]\n }\n return []\n }\n\n addresses(): Error[] {\n const errors: Error[] = []\n //const { addresses } = this.obj\n //if (!addresses?.length) errors.push(new Error('addresses missing [at least one address required]'))\n errors.push(...this.addressesUniqueness())\n return errors\n }\n\n addressesUniqueness(): Error[] {\n const errors: Error[] = []\n const { addresses } = this.obj\n const uniqAddresses = uniq(addresses)\n if (addresses?.length !== uniqAddresses?.length) errors.push(Error('addresses must be unique'))\n return errors\n }\n\n previousHashes() {\n const errors: Error[] = []\n return errors\n }\n\n schema(): Error[] {\n const errors: Error[] = []\n if (this.obj.schema !== this.expectedSchema) {\n errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`))\n }\n return errors\n }\n\n schemas(): Error[] {\n const errors: Error[] = []\n const Schemas = this.obj.payload_schemas\n if (Schemas) {\n const schemaValidators = Schemas.map((schema: string) => {\n return PayloadValidator.schemaNameValidatorFactory?.(schema)\n })\n for (const validator of schemaValidators) {\n if (validator) {\n errors.push(...validator.all())\n }\n }\n }\n return errors\n }\n\n async signatures(): Promise<Error[]> {\n return [\n ...validateArraysSameLength(this.obj.$meta?.signatures ?? [], this.obj.addresses ?? [], 'Length mismatch: address/signature'),\n ...(\n await Promise.all(\n this.obj.addresses?.map<Promise<Error[]>>(async (address, index) =>\n BoundWitnessValidator.validateSignature(\n toUint8Array(await PayloadBuilder.dataHash(this.payload)),\n toUint8Array(address),\n toUint8Array(this.obj.$meta?.signatures?.[index]),\n ),\n ) ?? [],\n )\n ).flat(),\n ]\n }\n\n override async validate() {\n return [\n ...(await this.signatures()),\n ...this.addresses(),\n ...this.validateArrayLengths(),\n ...this.schemas(),\n ...this.previousHashes(),\n ...this.schema(),\n ...(await super.validate()),\n ]\n }\n\n validateArrayLengths(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validatePayloadHashesLength())\n return errors\n }\n\n validatePayloadHashesLength(): Error[] {\n const errors: Error[] = []\n errors.push(...this.validateArrayLength('payload_hashes', 'payload_schemas'))\n return errors\n }\n\n private validateArrayLength(fieldName: string, compareArrayName: string): Error[] {\n const errors: Error[] = []\n\n const [array, arrayErrors] = validateType('array', this.stringKeyObj[fieldName] as [], true)\n const [compareArray, compareArrayErrors] = validateType('array', this.stringKeyObj[compareArrayName] as [], true)\n\n if (array?.length !== compareArray?.length) {\n errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`))\n }\n\n return [...arrayErrors, ...compareArrayErrors, ...errors]\n }\n}\n"],"mappings":";;;;AAAA,SAASA,oBAAoB;AAC7B,SAASC,YAAY;AACrB,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;AAC7B,SAAuBC,0BAA0B;AACjD,SAASC,sBAAsB;AAC/B,SAASC,wBAAwB;AAEjC,IAAMC,2BAA2B,wBAACC,GAAcC,GAAcC,UAAU,4BAAuB;AAC7F,SAAOF,EAAEG,UAAUF,EAAEE,SAAS,CAAA,IAAK;IAACC,MAAM,GAAGF,OAAAA,KAAY;;AAC3D,GAFiC;AAI1B,IAAMG,yBAAN,MAAMA,+BAAyFC,iBAAAA;EACpG,IAAcC,iBAAyB;AACrC,WAAOC;EACT;EAEA,OAAOC,kBAAkBC,MAAmBC,SAAsBC,WAAkC;AAClG,QAAI,CAACA,WAAW;AACd,aAAO;QAACR,MAAM,sBAAsBO,OAAAA,GAAU;;IAChD;AACA,QAAI,CAAC,IAAIE,aAAaC,aAAaH,OAAAA,CAAAA,EAAUI,OAAOL,MAAME,SAAAA,GAAY;AACpE,aAAO;QAACR,MAAM,sBAAsBO,OAAAA,MAAaC,SAAAA,GAAY;;IAC/D;AACA,WAAO,CAAA;EACT;EAEAI,YAAqB;AACnB,UAAMC,SAAkB,CAAA;AAGxBA,WAAOC,KAAI,GAAI,KAAKC,oBAAmB,CAAA;AACvC,WAAOF;EACT;EAEAE,sBAA+B;AAC7B,UAAMF,SAAkB,CAAA;AACxB,UAAM,EAAED,UAAS,IAAK,KAAKI;AAC3B,UAAMC,gBAAgBC,KAAKN,SAAAA;AAC3B,SAAIA,uCAAWb,aAAWkB,+CAAelB;AAAQc,aAAOC,KAAKd,MAAM,0BAAA,CAAA;AACnE,WAAOa;EACT;EAEAM,iBAAiB;AACf,UAAMN,SAAkB,CAAA;AACxB,WAAOA;EACT;EAEAO,SAAkB;AAChB,UAAMP,SAAkB,CAAA;AACxB,QAAI,KAAKG,IAAII,WAAW,KAAKjB,gBAAgB;AAC3CU,aAAOC,KAAKd,MAAM,mBAAmB,KAAKG,cAAc,QAAQ,KAAKa,IAAII,MAAM,GAAG,CAAA;IACpF;AACA,WAAOP;EACT;EAEAQ,UAAmB;AACjB,UAAMR,SAAkB,CAAA;AACxB,UAAMS,UAAU,KAAKN,IAAIO;AACzB,QAAID,SAAS;AACX,YAAME,mBAAmBF,QAAQG,IAAI,CAACL,WAAAA;AA5D5C;AA6DQ,gBAAOlB,6BAAiBwB,+BAAjBxB,4BAA8CkB;MACvD,CAAA;AACA,iBAAWO,aAAaH,kBAAkB;AACxC,YAAIG,WAAW;AACbd,iBAAOC,KAAI,GAAIa,UAAUC,IAAG,CAAA;QAC9B;MACF;IACF;AACA,WAAOf;EACT;EAEA,MAAMgB,aAA+B;AAxEvC;AAyEI,WAAO;SACFlC,2BAAyB,UAAKqB,IAAIc,UAAT,mBAAgBD,eAAc,CAAA,GAAI,KAAKb,IAAIJ,aAAa,CAAA,GAAI,oCAAA;UAEtF,MAAMmB,QAAQH,MACZ,UAAKZ,IAAIJ,cAAT,mBAAoBa,IAAsB,OAAOlB,SAASyB,UAAAA;AA7EpE,YAAAC,KAAAC;AA8EYjC,sCAAsBI,kBACpBK,aAAa,MAAMyB,eAAeC,SAAS,KAAKC,OAAO,CAAA,GACvD3B,aAAaH,OAAAA,GACbG,cAAawB,OAAAD,MAAA,KAAKjB,IAAIc,UAAT,gBAAAG,IAAgBJ,eAAhB,gBAAAK,IAA6BF,MAAM,CAAA;aAE/C,CAAA,CAAE,GAETM,KAAI;;EAEV;EAEA,MAAeC,WAAW;AACxB,WAAO;SACD,MAAM,KAAKV,WAAU;SACtB,KAAKjB,UAAS;SACd,KAAK4B,qBAAoB;SACzB,KAAKnB,QAAO;SACZ,KAAKF,eAAc;SACnB,KAAKC,OAAM;SACV,MAAM,MAAMmB,SAAAA;;EAEpB;EAEAC,uBAAgC;AAC9B,UAAM3B,SAAkB,CAAA;AACxBA,WAAOC,KAAI,GAAI,KAAK2B,4BAA2B,CAAA;AAC/C,WAAO5B;EACT;EAEA4B,8BAAuC;AACrC,UAAM5B,SAAkB,CAAA;AACxBA,WAAOC,KAAI,GAAI,KAAK4B,oBAAoB,kBAAkB,iBAAA,CAAA;AAC1D,WAAO7B;EACT;EAEQ6B,oBAAoBC,WAAmBC,kBAAmC;AAChF,UAAM/B,SAAkB,CAAA;AAExB,UAAM,CAACgC,OAAOC,WAAAA,IAAeC,aAAa,SAAS,KAAKC,aAAaL,SAAAA,GAAkB,IAAA;AACvF,UAAM,CAACM,cAAcC,kBAAAA,IAAsBH,aAAa,SAAS,KAAKC,aAAaJ,gBAAAA,GAAyB,IAAA;AAE5G,SAAIC,+BAAO9C,aAAWkD,6CAAclD,SAAQ;AAC1Cc,aAAOC,KAAK,IAAId,MAAM,GAAG2C,SAAAA,IAAaC,gBAAAA,oBAAoCC,+BAAO9C,MAAAA,QAAckD,6CAAclD,MAAAA,GAAS,CAAA;IACxH;AAEA,WAAO;SAAI+C;SAAgBI;SAAuBrC;;EACpD;AACF;AAjHsGX;AAA/F,IAAMD,wBAAN;","names":["toUint8Array","uniq","validateType","AddressValue","BoundWitnessSchema","PayloadBuilder","PayloadValidator","validateArraysSameLength","a","b","message","length","Error","BoundWitnessValidator","PayloadValidator","expectedSchema","BoundWitnessSchema","validateSignature","hash","address","signature","AddressValue","toUint8Array","verify","addresses","errors","push","addressesUniqueness","obj","uniqAddresses","uniq","previousHashes","schema","schemas","Schemas","payload_schemas","schemaValidators","map","schemaNameValidatorFactory","validator","all","signatures","$meta","Promise","index","_a","_b","PayloadBuilder","dataHash","payload","flat","validate","validateArrayLengths","validatePayloadHashesLength","validateArrayLength","fieldName","compareArrayName","array","arrayErrors","validateType","stringKeyObj","compareArray","compareArrayErrors"]}
package/package.json CHANGED
@@ -10,19 +10,19 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/arraybuffer": "^2.13.29",
14
- "@xylabs/lodash": "^2.13.29",
15
- "@xylabs/typeof": "^2.13.29",
16
- "@xyo-network/account": "~2.88.3",
17
- "@xyo-network/boundwitness-model": "~2.88.3",
18
- "@xyo-network/hash": "~2.88.3",
19
- "@xyo-network/payload-validator": "~2.88.3"
13
+ "@xylabs/arraybuffer": "^2.14.0",
14
+ "@xylabs/lodash": "^2.14.0",
15
+ "@xylabs/typeof": "^2.14.0",
16
+ "@xyo-network/account": "~2.89.0-rc.10",
17
+ "@xyo-network/boundwitness-model": "~2.89.0-rc.10",
18
+ "@xyo-network/payload": "~2.89.0-rc.10",
19
+ "@xyo-network/payload-validator": "~2.89.0-rc.10"
20
20
  },
21
21
  "description": "Primary SDK for using XYO Protocol 2.0",
22
22
  "devDependencies": {
23
23
  "@xylabs/ts-scripts-yarn3": "^3.2.42",
24
24
  "@xylabs/tsconfig": "^3.2.42",
25
- "@xyo-network/schema-name-validator": "~2.88.3",
25
+ "@xyo-network/schema-name-validator": "~2.89.0-rc.10",
26
26
  "typescript": "^5.3.3"
27
27
  },
28
28
  "exports": {
@@ -63,6 +63,7 @@
63
63
  },
64
64
  "sideEffects": false,
65
65
  "types": "dist/node/index.d.ts",
66
- "version": "2.88.3",
67
- "type": "module"
66
+ "version": "2.89.0-rc.10",
67
+ "type": "module",
68
+ "stableVersion": "2.88.3"
68
69
  }
package/src/Validator.ts CHANGED
@@ -3,7 +3,7 @@ import { uniq } from '@xylabs/lodash'
3
3
  import { validateType } from '@xylabs/typeof'
4
4
  import { AddressValue } from '@xyo-network/account'
5
5
  import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'
6
- import { PayloadHasher } from '@xyo-network/hash'
6
+ import { PayloadBuilder } from '@xyo-network/payload'
7
7
  import { PayloadValidator } from '@xyo-network/payload-validator'
8
8
 
9
9
  const validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {
@@ -72,16 +72,16 @@ export class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> =
72
72
 
73
73
  async signatures(): Promise<Error[]> {
74
74
  return [
75
- ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, 'Length mismatch: address/_signature'),
75
+ ...validateArraysSameLength(this.obj.$meta?.signatures ?? [], this.obj.addresses ?? [], 'Length mismatch: address/signature'),
76
76
  ...(
77
77
  await Promise.all(
78
- this.obj.addresses.map<Promise<Error[]>>(async (address, index) =>
78
+ this.obj.addresses?.map<Promise<Error[]>>(async (address, index) =>
79
79
  BoundWitnessValidator.validateSignature(
80
- toUint8Array(await PayloadHasher.hashAsync(this.payload)),
80
+ toUint8Array(await PayloadBuilder.dataHash(this.payload)),
81
81
  toUint8Array(address),
82
- toUint8Array(this.obj._signatures?.[index]),
82
+ toUint8Array(this.obj.$meta?.signatures?.[index]),
83
83
  ),
84
- ),
84
+ ) ?? [],
85
85
  )
86
86
  ).flat(),
87
87
  ]