@xyo-network/boundwitness-validator 2.84.19 → 2.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.cjs +21 -15
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +23 -15
- package/dist/browser/index.js.map +1 -1
- package/dist/node/index.cjs +24 -19
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +26 -19
- package/dist/node/index.js.map +1 -1
- package/package.json +6 -6
package/dist/browser/index.cjs
CHANGED
|
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
7
|
var __export = (target, all) => {
|
|
7
8
|
for (var name in all)
|
|
8
9
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -32,19 +33,28 @@ var import_account = require("@xyo-network/account");
|
|
|
32
33
|
var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
33
34
|
var import_hash = require("@xyo-network/hash");
|
|
34
35
|
var import_payload_validator = require("@xyo-network/payload-validator");
|
|
35
|
-
var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
|
|
36
|
-
return a.length == b.length ? [] : [
|
|
37
|
-
}
|
|
36
|
+
var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
|
|
37
|
+
return a.length == b.length ? [] : [
|
|
38
|
+
Error(`${message} []`)
|
|
39
|
+
];
|
|
40
|
+
}, "validateArraysSameLength");
|
|
38
41
|
var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_validator.PayloadValidator {
|
|
42
|
+
static {
|
|
43
|
+
__name(this, "BoundWitnessValidator");
|
|
44
|
+
}
|
|
39
45
|
get expectedSchema() {
|
|
40
46
|
return import_boundwitness_model.BoundWitnessSchema;
|
|
41
47
|
}
|
|
42
48
|
static validateSignature(hash, address, signature) {
|
|
43
49
|
if (!signature) {
|
|
44
|
-
return [
|
|
50
|
+
return [
|
|
51
|
+
Error(`Missing signature [${address}]`)
|
|
52
|
+
];
|
|
45
53
|
}
|
|
46
54
|
if (!new import_account.AddressValue((0, import_arraybuffer.toUint8Array)(address)).verify(hash, signature)) {
|
|
47
|
-
return [
|
|
55
|
+
return [
|
|
56
|
+
Error(`Invalid signature [${address}] [${signature}]`)
|
|
57
|
+
];
|
|
48
58
|
}
|
|
49
59
|
return [];
|
|
50
60
|
}
|
|
@@ -90,15 +100,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
|
|
|
90
100
|
async signatures() {
|
|
91
101
|
return [
|
|
92
102
|
...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
|
|
93
|
-
...(await Promise.all(
|
|
94
|
-
this.obj.addresses.map(
|
|
95
|
-
async (address, index) => _BoundWitnessValidator.validateSignature(
|
|
96
|
-
(0, import_arraybuffer.toUint8Array)(await import_hash.PayloadHasher.hashAsync(this.payload)),
|
|
97
|
-
(0, import_arraybuffer.toUint8Array)(address),
|
|
98
|
-
(0, import_arraybuffer.toUint8Array)(this.obj._signatures?.[index])
|
|
99
|
-
)
|
|
100
|
-
)
|
|
101
|
-
)).flat()
|
|
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
104
|
];
|
|
103
105
|
}
|
|
104
106
|
async validate() {
|
|
@@ -129,7 +131,11 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
|
|
|
129
131
|
if (array?.length !== compareArray?.length) {
|
|
130
132
|
errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`));
|
|
131
133
|
}
|
|
132
|
-
return [
|
|
134
|
+
return [
|
|
135
|
+
...arrayErrors,
|
|
136
|
+
...compareArrayErrors,
|
|
137
|
+
...errors
|
|
138
|
+
];
|
|
133
139
|
}
|
|
134
140
|
};
|
|
135
141
|
//# sourceMappingURL=index.cjs.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 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":"
|
|
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"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
1
4
|
// src/Validator.ts
|
|
2
5
|
import { toUint8Array } from "@xylabs/arraybuffer";
|
|
3
6
|
import { uniq } from "@xylabs/lodash";
|
|
@@ -6,19 +9,28 @@ import { AddressValue } from "@xyo-network/account";
|
|
|
6
9
|
import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
|
|
7
10
|
import { PayloadHasher } from "@xyo-network/hash";
|
|
8
11
|
import { PayloadValidator } from "@xyo-network/payload-validator";
|
|
9
|
-
var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
|
|
10
|
-
return a.length == b.length ? [] : [
|
|
11
|
-
}
|
|
12
|
+
var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
|
|
13
|
+
return a.length == b.length ? [] : [
|
|
14
|
+
Error(`${message} []`)
|
|
15
|
+
];
|
|
16
|
+
}, "validateArraysSameLength");
|
|
12
17
|
var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
|
|
18
|
+
static {
|
|
19
|
+
__name(this, "BoundWitnessValidator");
|
|
20
|
+
}
|
|
13
21
|
get expectedSchema() {
|
|
14
22
|
return BoundWitnessSchema;
|
|
15
23
|
}
|
|
16
24
|
static validateSignature(hash, address, signature) {
|
|
17
25
|
if (!signature) {
|
|
18
|
-
return [
|
|
26
|
+
return [
|
|
27
|
+
Error(`Missing signature [${address}]`)
|
|
28
|
+
];
|
|
19
29
|
}
|
|
20
30
|
if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {
|
|
21
|
-
return [
|
|
31
|
+
return [
|
|
32
|
+
Error(`Invalid signature [${address}] [${signature}]`)
|
|
33
|
+
];
|
|
22
34
|
}
|
|
23
35
|
return [];
|
|
24
36
|
}
|
|
@@ -64,15 +76,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
|
|
|
64
76
|
async signatures() {
|
|
65
77
|
return [
|
|
66
78
|
...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
|
|
67
|
-
...(await Promise.all(
|
|
68
|
-
this.obj.addresses.map(
|
|
69
|
-
async (address, index) => _BoundWitnessValidator.validateSignature(
|
|
70
|
-
toUint8Array(await PayloadHasher.hashAsync(this.payload)),
|
|
71
|
-
toUint8Array(address),
|
|
72
|
-
toUint8Array(this.obj._signatures?.[index])
|
|
73
|
-
)
|
|
74
|
-
)
|
|
75
|
-
)).flat()
|
|
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()
|
|
76
80
|
];
|
|
77
81
|
}
|
|
78
82
|
async validate() {
|
|
@@ -103,7 +107,11 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
|
|
|
103
107
|
if (array?.length !== compareArray?.length) {
|
|
104
108
|
errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`));
|
|
105
109
|
}
|
|
106
|
-
return [
|
|
110
|
+
return [
|
|
111
|
+
...arrayErrors,
|
|
112
|
+
...compareArrayErrors,
|
|
113
|
+
...errors
|
|
114
|
+
];
|
|
107
115
|
}
|
|
108
116
|
};
|
|
109
117
|
export {
|
|
@@ -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":"
|
|
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":";;;;AAAA,SAASA,oBAAoB;AAC7B,SAASC,YAAY;AACrB,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;AAC7B,SAAuBC,0BAA0B;AACjD,SAASC,qBAAqB;AAC9B,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,wBAAN,MAAMA,+BAAyFC,iBAAAA;EAZtG,OAYsGA;;;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,QAAIA,WAAWb,WAAWkB,eAAelB;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;AACpC,eAAOlB,iBAAiBwB,6BAA6BN,MAAAA;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;AACnC,WAAO;SACFlC,yBAAyB,KAAKqB,IAAIc,eAAe,CAAA,GAAI,KAAKd,IAAIJ,WAAW,qCAAA;UAE1E,MAAMmB,QAAQH,IACZ,KAAKZ,IAAIJ,UAAUa,IAAsB,OAAOlB,SAASyB,UACvD/B,uBAAsBI,kBACpBK,aAAa,MAAMuB,cAAcC,UAAU,KAAKC,OAAO,CAAA,GACvDzB,aAAaH,OAAAA,GACbG,aAAa,KAAKM,IAAIc,cAAcE,KAAAA,CAAM,CAAA,CAAA,CAAA,GAIhDI,KAAI;;EAEV;EAEA,MAAeC,WAAW;AACxB,WAAO;SACD,MAAM,KAAKR,WAAU;SACtB,KAAKjB,UAAS;SACd,KAAK0B,qBAAoB;SACzB,KAAKjB,QAAO;SACZ,KAAKF,eAAc;SACnB,KAAKC,OAAM;SACV,MAAM,MAAMiB,SAAAA;;EAEpB;EAEAC,uBAAgC;AAC9B,UAAMzB,SAAkB,CAAA;AACxBA,WAAOC,KAAI,GAAI,KAAKyB,4BAA2B,CAAA;AAC/C,WAAO1B;EACT;EAEA0B,8BAAuC;AACrC,UAAM1B,SAAkB,CAAA;AACxBA,WAAOC,KAAI,GAAI,KAAK0B,oBAAoB,kBAAkB,iBAAA,CAAA;AAC1D,WAAO3B;EACT;EAEQ2B,oBAAoBC,WAAmBC,kBAAmC;AAChF,UAAM7B,SAAkB,CAAA;AAExB,UAAM,CAAC8B,OAAOC,WAAAA,IAAeC,aAAa,SAAS,KAAKC,aAAaL,SAAAA,GAAkB,IAAA;AACvF,UAAM,CAACM,cAAcC,kBAAAA,IAAsBH,aAAa,SAAS,KAAKC,aAAaJ,gBAAAA,GAAyB,IAAA;AAE5G,QAAIC,OAAO5C,WAAWgD,cAAchD,QAAQ;AAC1Cc,aAAOC,KAAK,IAAId,MAAM,GAAGyC,SAAAA,IAAaC,gBAAAA,oBAAoCC,OAAO5C,MAAAA,QAAcgD,cAAchD,MAAAA,GAAS,CAAA;IACxH;AAEA,WAAO;SAAI6C;SAAgBI;SAAuBnC;;EACpD;AACF;","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"]}
|
package/dist/node/index.cjs
CHANGED
|
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
7
|
var __export = (target, all) => {
|
|
7
8
|
for (var name in all)
|
|
8
9
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -32,19 +33,25 @@ var import_account = require("@xyo-network/account");
|
|
|
32
33
|
var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
33
34
|
var import_hash = require("@xyo-network/hash");
|
|
34
35
|
var import_payload_validator = require("@xyo-network/payload-validator");
|
|
35
|
-
var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
|
|
36
|
-
return a.length == b.length ? [] : [
|
|
37
|
-
}
|
|
38
|
-
|
|
36
|
+
var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
|
|
37
|
+
return a.length == b.length ? [] : [
|
|
38
|
+
Error(`${message} []`)
|
|
39
|
+
];
|
|
40
|
+
}, "validateArraysSameLength");
|
|
41
|
+
var _BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_validator.PayloadValidator {
|
|
39
42
|
get expectedSchema() {
|
|
40
43
|
return import_boundwitness_model.BoundWitnessSchema;
|
|
41
44
|
}
|
|
42
45
|
static validateSignature(hash, address, signature) {
|
|
43
46
|
if (!signature) {
|
|
44
|
-
return [
|
|
47
|
+
return [
|
|
48
|
+
Error(`Missing signature [${address}]`)
|
|
49
|
+
];
|
|
45
50
|
}
|
|
46
51
|
if (!new import_account.AddressValue((0, import_arraybuffer.toUint8Array)(address)).verify(hash, signature)) {
|
|
47
|
-
return [
|
|
52
|
+
return [
|
|
53
|
+
Error(`Invalid signature [${address}] [${signature}]`)
|
|
54
|
+
];
|
|
48
55
|
}
|
|
49
56
|
return [];
|
|
50
57
|
}
|
|
@@ -91,18 +98,10 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
|
|
|
91
98
|
async signatures() {
|
|
92
99
|
return [
|
|
93
100
|
...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
|
|
94
|
-
...(await Promise.all(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
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])
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
)
|
|
105
|
-
)).flat()
|
|
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()
|
|
106
105
|
];
|
|
107
106
|
}
|
|
108
107
|
async validate() {
|
|
@@ -133,9 +132,15 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_
|
|
|
133
132
|
if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
|
|
134
133
|
errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
|
|
135
134
|
}
|
|
136
|
-
return [
|
|
135
|
+
return [
|
|
136
|
+
...arrayErrors,
|
|
137
|
+
...compareArrayErrors,
|
|
138
|
+
...errors
|
|
139
|
+
];
|
|
137
140
|
}
|
|
138
141
|
};
|
|
142
|
+
__name(_BoundWitnessValidator, "BoundWitnessValidator");
|
|
143
|
+
var BoundWitnessValidator = _BoundWitnessValidator;
|
|
139
144
|
// Annotate the CommonJS export names for ESM import in node:
|
|
140
145
|
0 && (module.exports = {
|
|
141
146
|
BoundWitnessValidator
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -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":"
|
|
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"]}
|
package/dist/node/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
1
4
|
// src/Validator.ts
|
|
2
5
|
import { toUint8Array } from "@xylabs/arraybuffer";
|
|
3
6
|
import { uniq } from "@xylabs/lodash";
|
|
@@ -6,19 +9,25 @@ import { AddressValue } from "@xyo-network/account";
|
|
|
6
9
|
import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
|
|
7
10
|
import { PayloadHasher } from "@xyo-network/hash";
|
|
8
11
|
import { PayloadValidator } from "@xyo-network/payload-validator";
|
|
9
|
-
var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
|
|
10
|
-
return a.length == b.length ? [] : [
|
|
11
|
-
}
|
|
12
|
-
|
|
12
|
+
var validateArraysSameLength = /* @__PURE__ */ __name((a, b, message = "Array length mismatch") => {
|
|
13
|
+
return a.length == b.length ? [] : [
|
|
14
|
+
Error(`${message} []`)
|
|
15
|
+
];
|
|
16
|
+
}, "validateArraysSameLength");
|
|
17
|
+
var _BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
|
|
13
18
|
get expectedSchema() {
|
|
14
19
|
return BoundWitnessSchema;
|
|
15
20
|
}
|
|
16
21
|
static validateSignature(hash, address, signature) {
|
|
17
22
|
if (!signature) {
|
|
18
|
-
return [
|
|
23
|
+
return [
|
|
24
|
+
Error(`Missing signature [${address}]`)
|
|
25
|
+
];
|
|
19
26
|
}
|
|
20
27
|
if (!new AddressValue(toUint8Array(address)).verify(hash, signature)) {
|
|
21
|
-
return [
|
|
28
|
+
return [
|
|
29
|
+
Error(`Invalid signature [${address}] [${signature}]`)
|
|
30
|
+
];
|
|
22
31
|
}
|
|
23
32
|
return [];
|
|
24
33
|
}
|
|
@@ -65,18 +74,10 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
|
|
|
65
74
|
async signatures() {
|
|
66
75
|
return [
|
|
67
76
|
...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
|
|
68
|
-
...(await Promise.all(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return _BoundWitnessValidator.validateSignature(
|
|
73
|
-
toUint8Array(await PayloadHasher.hashAsync(this.payload)),
|
|
74
|
-
toUint8Array(address),
|
|
75
|
-
toUint8Array((_a = this.obj._signatures) == null ? void 0 : _a[index])
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
)
|
|
79
|
-
)).flat()
|
|
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()
|
|
80
81
|
];
|
|
81
82
|
}
|
|
82
83
|
async validate() {
|
|
@@ -107,9 +108,15 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
|
|
|
107
108
|
if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
|
|
108
109
|
errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
|
|
109
110
|
}
|
|
110
|
-
return [
|
|
111
|
+
return [
|
|
112
|
+
...arrayErrors,
|
|
113
|
+
...compareArrayErrors,
|
|
114
|
+
...errors
|
|
115
|
+
];
|
|
111
116
|
}
|
|
112
117
|
};
|
|
118
|
+
__name(_BoundWitnessValidator, "BoundWitnessValidator");
|
|
119
|
+
var BoundWitnessValidator = _BoundWitnessValidator;
|
|
113
120
|
export {
|
|
114
121
|
BoundWitnessValidator
|
|
115
122
|
};
|
package/dist/node/index.js.map
CHANGED
|
@@ -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":"
|
|
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":";;;;AAAA,SAASA,oBAAoB;AAC7B,SAASC,YAAY;AACrB,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;AAC7B,SAAuBC,0BAA0B;AACjD,SAASC,qBAAqB;AAC9B,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;AACnC,WAAO;SACFlC,yBAAyB,KAAKqB,IAAIc,eAAe,CAAA,GAAI,KAAKd,IAAIJ,WAAW,qCAAA;UAE1E,MAAMmB,QAAQH,IACZ,KAAKZ,IAAIJ,UAAUa,IAAsB,OAAOlB,SAASyB,UAAAA;AA7EnE;AA8EY/B,sCAAsBI,kBACpBK,aAAa,MAAMuB,cAAcC,UAAU,KAAKC,OAAO,CAAA,GACvDzB,aAAaH,OAAAA,GACbG,cAAa,UAAKM,IAAIc,gBAAT,mBAAuBE,MAAM,CAAA;OAAA,CAAA,GAIhDI,KAAI;;EAEV;EAEA,MAAeC,WAAW;AACxB,WAAO;SACD,MAAM,KAAKR,WAAU;SACtB,KAAKjB,UAAS;SACd,KAAK0B,qBAAoB;SACzB,KAAKjB,QAAO;SACZ,KAAKF,eAAc;SACnB,KAAKC,OAAM;SACV,MAAM,MAAMiB,SAAAA;;EAEpB;EAEAC,uBAAgC;AAC9B,UAAMzB,SAAkB,CAAA;AACxBA,WAAOC,KAAI,GAAI,KAAKyB,4BAA2B,CAAA;AAC/C,WAAO1B;EACT;EAEA0B,8BAAuC;AACrC,UAAM1B,SAAkB,CAAA;AACxBA,WAAOC,KAAI,GAAI,KAAK0B,oBAAoB,kBAAkB,iBAAA,CAAA;AAC1D,WAAO3B;EACT;EAEQ2B,oBAAoBC,WAAmBC,kBAAmC;AAChF,UAAM7B,SAAkB,CAAA;AAExB,UAAM,CAAC8B,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,+BAAO5C,aAAWgD,6CAAchD,SAAQ;AAC1Cc,aAAOC,KAAK,IAAId,MAAM,GAAGyC,SAAAA,IAAaC,gBAAAA,oBAAoCC,+BAAO5C,MAAAA,QAAcgD,6CAAchD,MAAAA,GAAS,CAAA;IACxH;AAEA,WAAO;SAAI6C;SAAgBI;SAAuBnC;;EACpD;AACF;AAjHsGX;AAA/F,IAAMD,wBAAN;","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"]}
|
package/package.json
CHANGED
|
@@ -13,16 +13,16 @@
|
|
|
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.
|
|
17
|
-
"@xyo-network/boundwitness-model": "~2.
|
|
18
|
-
"@xyo-network/hash": "~2.
|
|
19
|
-
"@xyo-network/payload-validator": "~2.
|
|
16
|
+
"@xyo-network/account": "~2.85.0",
|
|
17
|
+
"@xyo-network/boundwitness-model": "~2.85.0",
|
|
18
|
+
"@xyo-network/hash": "~2.85.0",
|
|
19
|
+
"@xyo-network/payload-validator": "~2.85.0"
|
|
20
20
|
},
|
|
21
21
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@xylabs/ts-scripts-yarn3": "^3.2.25",
|
|
24
24
|
"@xylabs/tsconfig": "^3.2.25",
|
|
25
|
-
"@xyo-network/schema-name-validator": "~2.
|
|
25
|
+
"@xyo-network/schema-name-validator": "~2.85.0",
|
|
26
26
|
"typescript": "^5.3.3"
|
|
27
27
|
},
|
|
28
28
|
"exports": {
|
|
@@ -63,6 +63,6 @@
|
|
|
63
63
|
},
|
|
64
64
|
"sideEffects": false,
|
|
65
65
|
"types": "dist/node/index.d.ts",
|
|
66
|
-
"version": "2.
|
|
66
|
+
"version": "2.85.0",
|
|
67
67
|
"type": "module"
|
|
68
68
|
}
|