@xyo-network/boundwitness-validator 2.84.6 → 2.84.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAmBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAmBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAmBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -33,7 +33,7 @@ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
33
33
  var import_hash = require("@xyo-network/hash");
34
34
  var import_payload_validator = require("@xyo-network/payload-validator");
35
35
  var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
36
- return a.length != b.length ? [Error(`${message} []`)] : [];
36
+ return a.length == b.length ? [] : [Error(`${message} []`)];
37
37
  };
38
38
  var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_validator.PayloadValidator {
39
39
  get expectedSchema() {
@@ -79,11 +79,11 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
79
79
  const schemaValidators = Schemas.map((schema) => {
80
80
  return import_payload_validator.PayloadValidator.schemaNameValidatorFactory?.(schema);
81
81
  });
82
- schemaValidators.forEach((validator) => {
82
+ for (const validator of schemaValidators) {
83
83
  if (validator) {
84
84
  errors.push(...validator.all());
85
85
  }
86
- });
86
+ }
87
87
  }
88
88
  return errors;
89
89
  }
@@ -96,8 +96,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
96
96
  (0, import_arraybuffer.toUint8Array)(await import_hash.PayloadHasher.hashAsync(this.payload)),
97
97
  (0, import_arraybuffer.toUint8Array)(address),
98
98
  (0, import_arraybuffer.toUint8Array)(this.obj._signatures?.[index])
99
- ),
100
- []
99
+ )
101
100
  )
102
101
  )).flat()
103
102
  ];
@@ -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 schemaValidators.forEach((validator) => {\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[]>>(\n 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 )\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":[]}
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":[]}
@@ -7,7 +7,7 @@ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
7
7
  import { PayloadHasher } from "@xyo-network/hash";
8
8
  import { PayloadValidator } from "@xyo-network/payload-validator";
9
9
  var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
10
- return a.length != b.length ? [Error(`${message} []`)] : [];
10
+ return a.length == b.length ? [] : [Error(`${message} []`)];
11
11
  };
12
12
  var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
13
13
  get expectedSchema() {
@@ -53,11 +53,11 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
53
53
  const schemaValidators = Schemas.map((schema) => {
54
54
  return PayloadValidator.schemaNameValidatorFactory?.(schema);
55
55
  });
56
- schemaValidators.forEach((validator) => {
56
+ for (const validator of schemaValidators) {
57
57
  if (validator) {
58
58
  errors.push(...validator.all());
59
59
  }
60
- });
60
+ }
61
61
  }
62
62
  return errors;
63
63
  }
@@ -70,8 +70,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
70
70
  toUint8Array(await PayloadHasher.hashAsync(this.payload)),
71
71
  toUint8Array(address),
72
72
  toUint8Array(this.obj._signatures?.[index])
73
- ),
74
- []
73
+ )
75
74
  )
76
75
  )).flat()
77
76
  ];
@@ -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 schemaValidators.forEach((validator) => {\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[]>>(\n 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 )\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":[]}
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":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAmBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAmBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAmBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAMjE,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACvH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAUnG,SAAS,IAAI,KAAK,EAAE;IAQpB,mBAAmB,IAAI,KAAK,EAAE;IAQ9B,cAAc;IAKd,MAAM,IAAI,KAAK,EAAE;IAQjB,OAAO,IAAI,KAAK,EAAE;IAgBZ,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiBrB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1,23 +1,49 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ BoundWitnessValidator: () => BoundWitnessValidator
24
+ });
25
+ module.exports = __toCommonJS(src_exports);
26
+
1
27
  // src/Validator.ts
2
- import { toUint8Array } from "@xylabs/arraybuffer";
3
- import { uniq } from "@xylabs/lodash";
4
- import { validateType } from "@xylabs/typeof";
5
- import { AddressValue } from "@xyo-network/account";
6
- import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
7
- import { PayloadHasher } from "@xyo-network/hash";
8
- import { PayloadValidator } from "@xyo-network/payload-validator";
28
+ var import_arraybuffer = require("@xylabs/arraybuffer");
29
+ var import_lodash = require("@xylabs/lodash");
30
+ var import_typeof = require("@xylabs/typeof");
31
+ var import_account = require("@xyo-network/account");
32
+ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
33
+ var import_hash = require("@xyo-network/hash");
34
+ var import_payload_validator = require("@xyo-network/payload-validator");
9
35
  var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
10
- return a.length != b.length ? [Error(`${message} []`)] : [];
36
+ return a.length == b.length ? [] : [Error(`${message} []`)];
11
37
  };
12
- var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
38
+ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_validator.PayloadValidator {
13
39
  get expectedSchema() {
14
- return BoundWitnessSchema;
40
+ return import_boundwitness_model.BoundWitnessSchema;
15
41
  }
16
42
  static validateSignature(hash, address, signature) {
17
43
  if (!signature) {
18
44
  return [Error(`Missing signature [${address}]`)];
19
45
  }
20
- if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {
46
+ if (!new import_account.AddressValue((0, import_arraybuffer.toUint8Array)(address)).verify(hash, signature)) {
21
47
  return [Error(`Invalid signature [${address}] [${signature}]`)];
22
48
  }
23
49
  return [];
@@ -30,7 +56,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
30
56
  addressesUniqueness() {
31
57
  const errors = [];
32
58
  const { addresses } = this.obj;
33
- const uniqAddresses = uniq(addresses);
59
+ const uniqAddresses = (0, import_lodash.uniq)(addresses);
34
60
  if ((addresses == null ? void 0 : addresses.length) !== (uniqAddresses == null ? void 0 : uniqAddresses.length))
35
61
  errors.push(Error("addresses must be unique"));
36
62
  return errors;
@@ -52,13 +78,13 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
52
78
  if (Schemas) {
53
79
  const schemaValidators = Schemas.map((schema) => {
54
80
  var _a, _b;
55
- return (_b = (_a = PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
81
+ return (_b = (_a = import_payload_validator.PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
56
82
  });
57
- schemaValidators.forEach((validator) => {
83
+ for (const validator of schemaValidators) {
58
84
  if (validator) {
59
85
  errors.push(...validator.all());
60
86
  }
61
- });
87
+ }
62
88
  }
63
89
  return errors;
64
90
  }
@@ -70,12 +96,11 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
70
96
  async (address, index) => {
71
97
  var _a;
72
98
  return _BoundWitnessValidator.validateSignature(
73
- toUint8Array(await PayloadHasher.hashAsync(this.payload)),
74
- toUint8Array(address),
75
- toUint8Array((_a = this.obj._signatures) == null ? void 0 : _a[index])
99
+ (0, import_arraybuffer.toUint8Array)(await import_hash.PayloadHasher.hashAsync(this.payload)),
100
+ (0, import_arraybuffer.toUint8Array)(address),
101
+ (0, import_arraybuffer.toUint8Array)((_a = this.obj._signatures) == null ? void 0 : _a[index])
76
102
  );
77
- },
78
- []
103
+ }
79
104
  )
80
105
  )).flat()
81
106
  ];
@@ -103,15 +128,16 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
103
128
  }
104
129
  validateArrayLength(fieldName, compareArrayName) {
105
130
  const errors = [];
106
- const [array, arrayErrors] = validateType("array", this.stringKeyObj[fieldName], true);
107
- const [compareArray, compareArrayErrors] = validateType("array", this.stringKeyObj[compareArrayName], true);
131
+ const [array, arrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[fieldName], true);
132
+ const [compareArray, compareArrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[compareArrayName], true);
108
133
  if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
109
134
  errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
110
135
  }
111
136
  return [...arrayErrors, ...compareArrayErrors, ...errors];
112
137
  }
113
138
  };
114
- export {
139
+ // Annotate the CommonJS export names for ESM import in node:
140
+ 0 && (module.exports = {
115
141
  BoundWitnessValidator
116
- };
117
- //# sourceMappingURL=index.mjs.map
142
+ });
143
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +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":[]}
@@ -1,49 +1,23 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- BoundWitnessValidator: () => BoundWitnessValidator
24
- });
25
- module.exports = __toCommonJS(src_exports);
26
-
27
1
  // src/Validator.ts
28
- var import_arraybuffer = require("@xylabs/arraybuffer");
29
- var import_lodash = require("@xylabs/lodash");
30
- var import_typeof = require("@xylabs/typeof");
31
- var import_account = require("@xyo-network/account");
32
- var import_boundwitness_model = require("@xyo-network/boundwitness-model");
33
- var import_hash = require("@xyo-network/hash");
34
- var import_payload_validator = require("@xyo-network/payload-validator");
2
+ import { toUint8Array } from "@xylabs/arraybuffer";
3
+ import { uniq } from "@xylabs/lodash";
4
+ import { validateType } from "@xylabs/typeof";
5
+ import { AddressValue } from "@xyo-network/account";
6
+ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
7
+ import { PayloadHasher } from "@xyo-network/hash";
8
+ import { PayloadValidator } from "@xyo-network/payload-validator";
35
9
  var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
36
- return a.length != b.length ? [Error(`${message} []`)] : [];
10
+ return a.length == b.length ? [] : [Error(`${message} []`)];
37
11
  };
38
- var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_validator.PayloadValidator {
12
+ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
39
13
  get expectedSchema() {
40
- return import_boundwitness_model.BoundWitnessSchema;
14
+ return BoundWitnessSchema;
41
15
  }
42
16
  static validateSignature(hash, address, signature) {
43
17
  if (!signature) {
44
18
  return [Error(`Missing signature [${address}]`)];
45
19
  }
46
- if (!new import_account.AddressValue((0, import_arraybuffer.toUint8Array)(address)).verify(hash, signature)) {
20
+ if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {
47
21
  return [Error(`Invalid signature [${address}] [${signature}]`)];
48
22
  }
49
23
  return [];
@@ -56,7 +30,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
56
30
  addressesUniqueness() {
57
31
  const errors = [];
58
32
  const { addresses } = this.obj;
59
- const uniqAddresses = (0, import_lodash.uniq)(addresses);
33
+ const uniqAddresses = uniq(addresses);
60
34
  if ((addresses == null ? void 0 : addresses.length) !== (uniqAddresses == null ? void 0 : uniqAddresses.length))
61
35
  errors.push(Error("addresses must be unique"));
62
36
  return errors;
@@ -78,13 +52,13 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
78
52
  if (Schemas) {
79
53
  const schemaValidators = Schemas.map((schema) => {
80
54
  var _a, _b;
81
- return (_b = (_a = import_payload_validator.PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
55
+ return (_b = (_a = PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
82
56
  });
83
- schemaValidators.forEach((validator) => {
57
+ for (const validator of schemaValidators) {
84
58
  if (validator) {
85
59
  errors.push(...validator.all());
86
60
  }
87
- });
61
+ }
88
62
  }
89
63
  return errors;
90
64
  }
@@ -96,12 +70,11 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
96
70
  async (address, index) => {
97
71
  var _a;
98
72
  return _BoundWitnessValidator.validateSignature(
99
- (0, import_arraybuffer.toUint8Array)(await import_hash.PayloadHasher.hashAsync(this.payload)),
100
- (0, import_arraybuffer.toUint8Array)(address),
101
- (0, import_arraybuffer.toUint8Array)((_a = this.obj._signatures) == null ? void 0 : _a[index])
73
+ toUint8Array(await PayloadHasher.hashAsync(this.payload)),
74
+ toUint8Array(address),
75
+ toUint8Array((_a = this.obj._signatures) == null ? void 0 : _a[index])
102
76
  );
103
- },
104
- []
77
+ }
105
78
  )
106
79
  )).flat()
107
80
  ];
@@ -129,16 +102,15 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
129
102
  }
130
103
  validateArrayLength(fieldName, compareArrayName) {
131
104
  const errors = [];
132
- const [array, arrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[fieldName], true);
133
- const [compareArray, compareArrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[compareArrayName], true);
105
+ const [array, arrayErrors] = validateType("array", this.stringKeyObj[fieldName], true);
106
+ const [compareArray, compareArrayErrors] = validateType("array", this.stringKeyObj[compareArrayName], true);
134
107
  if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
135
108
  errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
136
109
  }
137
110
  return [...arrayErrors, ...compareArrayErrors, ...errors];
138
111
  }
139
112
  };
140
- // Annotate the CommonJS export names for ESM import in node:
141
- 0 && (module.exports = {
113
+ export {
142
114
  BoundWitnessValidator
143
- });
115
+ };
144
116
  //# sourceMappingURL=index.js.map
@@ -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 schemaValidators.forEach((validator) => {\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[]>>(\n 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 )\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":[]}
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":[]}
package/package.json CHANGED
@@ -13,19 +13,18 @@
13
13
  "@xylabs/arraybuffer": "^2.13.20",
14
14
  "@xylabs/lodash": "^2.13.20",
15
15
  "@xylabs/typeof": "^2.13.20",
16
- "@xyo-network/account": "~2.84.6",
17
- "@xyo-network/boundwitness-model": "~2.84.6",
18
- "@xyo-network/hash": "~2.84.6",
19
- "@xyo-network/payload-validator": "~2.84.6"
16
+ "@xyo-network/account": "~2.84.8",
17
+ "@xyo-network/boundwitness-model": "~2.84.8",
18
+ "@xyo-network/hash": "~2.84.8",
19
+ "@xyo-network/payload-validator": "~2.84.8"
20
20
  },
21
21
  "description": "Primary SDK for using XYO Protocol 2.0",
22
22
  "devDependencies": {
23
- "@xylabs/ts-scripts-yarn3": "^3.2.19",
24
- "@xylabs/tsconfig": "^3.2.19",
25
- "@xyo-network/schema-name-validator": "~2.84.6",
23
+ "@xylabs/ts-scripts-yarn3": "^3.2.24",
24
+ "@xylabs/tsconfig": "^3.2.24",
25
+ "@xyo-network/schema-name-validator": "~2.84.8",
26
26
  "typescript": "^5.3.3"
27
27
  },
28
- "docs": "dist/docs.json",
29
28
  "exports": {
30
29
  ".": {
31
30
  "browser": {
@@ -40,19 +39,19 @@
40
39
  },
41
40
  "node": {
42
41
  "require": {
43
- "types": "./dist/node/index.d.ts",
44
- "default": "./dist/node/index.js"
42
+ "types": "./dist/node/index.d.cts",
43
+ "default": "./dist/node/index.cjs"
45
44
  },
46
45
  "import": {
47
46
  "types": "./dist/node/index.d.mts",
48
- "default": "./dist/node/index.mjs"
47
+ "default": "./dist/node/index.js"
49
48
  }
50
49
  }
51
50
  },
52
51
  "./package.json": "./package.json"
53
52
  },
54
- "main": "dist/node/index.js",
55
- "module": "dist/node/index.mjs",
53
+ "main": "dist/node/index.cjs",
54
+ "module": "dist/node/index.js",
56
55
  "homepage": "https://xyo.network",
57
56
  "license": "LGPL-3.0-only",
58
57
  "publishConfig": {
@@ -64,5 +63,6 @@
64
63
  },
65
64
  "sideEffects": false,
66
65
  "types": "dist/node/index.d.ts",
67
- "version": "2.84.6"
66
+ "version": "2.84.8",
67
+ "type": "module"
68
68
  }
package/src/Validator.ts CHANGED
@@ -7,7 +7,7 @@ import { PayloadHasher } from '@xyo-network/hash'
7
7
  import { PayloadValidator } from '@xyo-network/payload-validator'
8
8
 
9
9
  const validateArraysSameLength = (a: unknown[], b: unknown[], message = 'Array length mismatch') => {
10
- return a.length != b.length ? [Error(`${message} []`)] : []
10
+ return a.length == b.length ? [] : [Error(`${message} []`)]
11
11
  }
12
12
 
13
13
  export class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> = BoundWitness> extends PayloadValidator<T> {
@@ -61,11 +61,11 @@ export class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> =
61
61
  const schemaValidators = Schemas.map((schema: string) => {
62
62
  return PayloadValidator.schemaNameValidatorFactory?.(schema)
63
63
  })
64
- schemaValidators.forEach((validator) => {
64
+ for (const validator of schemaValidators) {
65
65
  if (validator) {
66
66
  errors.push(...validator.all())
67
67
  }
68
- })
68
+ }
69
69
  }
70
70
  return errors
71
71
  }
@@ -75,14 +75,12 @@ export class BoundWitnessValidator<T extends BoundWitness<{ schema: string }> =
75
75
  ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, 'Length mismatch: address/_signature'),
76
76
  ...(
77
77
  await Promise.all(
78
- this.obj.addresses.map<Promise<Error[]>>(
79
- async (address, index) =>
80
- BoundWitnessValidator.validateSignature(
81
- toUint8Array(await PayloadHasher.hashAsync(this.payload)),
82
- toUint8Array(address),
83
- toUint8Array(this.obj._signatures?.[index]),
84
- ),
85
- [],
78
+ this.obj.addresses.map<Promise<Error[]>>(async (address, index) =>
79
+ BoundWitnessValidator.validateSignature(
80
+ toUint8Array(await PayloadHasher.hashAsync(this.payload)),
81
+ toUint8Array(address),
82
+ toUint8Array(this.obj._signatures?.[index]),
83
+ ),
86
84
  ),
87
85
  )
88
86
  ).flat(),
@@ -1 +0,0 @@
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 schemaValidators.forEach((validator) => {\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[]>>(\n 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 )\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":[]}