@xyo-network/boundwitness-validator 2.75.0 → 2.75.2

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.
@@ -0,0 +1,19 @@
1
+ import { BoundWitness } from '@xyo-network/boundwitness-model';
2
+ import { PayloadValidator } from '@xyo-network/payload-validator';
3
+ export declare class BoundWitnessValidator<T extends BoundWitness<{
4
+ schema: string;
5
+ }> = BoundWitness> extends PayloadValidator<T> {
6
+ protected get expectedSchema(): string;
7
+ static validateSignature(hash: string, address: string, signature?: string): Error[];
8
+ addresses(): Error[];
9
+ addressesUniqueness(): Error[];
10
+ previousHashes(): Error[];
11
+ schema(): Error[];
12
+ schemas(): Error[];
13
+ signatures(): Promise<Error[]>;
14
+ validate(): Promise<Error[]>;
15
+ validateArrayLengths(): Error[];
16
+ validatePayloadHashesLength(): Error[];
17
+ private validateArrayLength;
18
+ }
19
+ //# sourceMappingURL=Validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../../src/Validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAOjE,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,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE;IAUpF,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;IAerB,QAAQ;IAYvB,oBAAoB,IAAI,KAAK,EAAE;IAM/B,2BAA2B,IAAI,KAAK,EAAE;IAMtC,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1,14 +1,13 @@
1
- // src/Validator.ts
2
1
  import { uniq } from "@xylabs/lodash";
3
2
  import { AddressValue } from "@xyo-network/account";
4
3
  import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
5
4
  import { PayloadHasher } from "@xyo-network/core";
6
5
  import { PayloadValidator } from "@xyo-network/payload-validator";
7
6
  import { validateType } from "@xyo-network/typeof";
8
- var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
7
+ const validateArraysSameLength = (a, b, message = "Array length mismatch") => {
9
8
  return a.length != b.length ? [Error(`${message} []`)] : [];
10
9
  };
11
- var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
10
+ class BoundWitnessValidator extends PayloadValidator {
12
11
  get expectedSchema() {
13
12
  return BoundWitnessSchema;
14
13
  }
@@ -65,7 +64,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
65
64
  ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
66
65
  ...(await Promise.all(
67
66
  this.obj.addresses.map(
68
- async (address, index) => _BoundWitnessValidator.validateSignature(await PayloadHasher.hashAsync(this.payload), address, this.obj._signatures?.[index]),
67
+ async (address, index) => BoundWitnessValidator.validateSignature(await PayloadHasher.hashAsync(this.payload), address, this.obj._signatures?.[index]),
69
68
  []
70
69
  )
71
70
  )).flat()
@@ -101,7 +100,7 @@ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidato
101
100
  }
102
101
  return [...arrayErrors, ...compareArrayErrors, ...errors];
103
102
  }
104
- };
103
+ }
105
104
  export {
106
105
  BoundWitnessValidator
107
106
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Validator.ts"],"sourcesContent":["import { uniq } from '@xylabs/lodash'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/core'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { validateType } from '@xyo-network/typeof'\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: string, address: string, signature?: string): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(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(await PayloadHasher.hashAsync(this.payload), address, 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
+ {"version":3,"sources":["../../src/Validator.ts"],"sourcesContent":["import { uniq } from '@xylabs/lodash'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/core'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { validateType } from '@xyo-network/typeof'\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: string, address: string, signature?: string): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(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(await PayloadHasher.hashAsync(this.payload), address, 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":[]}
@@ -0,0 +1,2 @@
1
+ export * from './Validator';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -1,108 +1,2 @@
1
- // src/Validator.ts
2
- import { uniq } from "@xylabs/lodash";
3
- import { AddressValue } from "@xyo-network/account";
4
- import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
5
- import { PayloadHasher } from "@xyo-network/core";
6
- import { PayloadValidator } from "@xyo-network/payload-validator";
7
- import { validateType } from "@xyo-network/typeof";
8
- var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
9
- return a.length != b.length ? [Error(`${message} []`)] : [];
10
- };
11
- var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
12
- get expectedSchema() {
13
- return BoundWitnessSchema;
14
- }
15
- static validateSignature(hash, address, signature) {
16
- if (!signature) {
17
- return [Error(`Missing signature [${address}]`)];
18
- }
19
- if (!new AddressValue(address).verify(hash, signature)) {
20
- return [Error(`Invalid signature [${address}] [${signature}]`)];
21
- }
22
- return [];
23
- }
24
- addresses() {
25
- const errors = [];
26
- errors.push(...this.addressesUniqueness());
27
- return errors;
28
- }
29
- addressesUniqueness() {
30
- const errors = [];
31
- const { addresses } = this.obj;
32
- const uniqAddresses = uniq(addresses);
33
- if (addresses?.length !== uniqAddresses?.length)
34
- errors.push(Error("addresses must be unique"));
35
- return errors;
36
- }
37
- previousHashes() {
38
- const errors = [];
39
- return errors;
40
- }
41
- schema() {
42
- const errors = [];
43
- if (this.obj.schema !== this.expectedSchema) {
44
- errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`));
45
- }
46
- return errors;
47
- }
48
- schemas() {
49
- const errors = [];
50
- const Schemas = this.obj.payload_schemas;
51
- if (Schemas) {
52
- const schemaValidators = Schemas.map((schema) => {
53
- return PayloadValidator.schemaNameValidatorFactory?.(schema);
54
- });
55
- schemaValidators.forEach((validator) => {
56
- if (validator) {
57
- errors.push(...validator.all());
58
- }
59
- });
60
- }
61
- return errors;
62
- }
63
- async signatures() {
64
- return [
65
- ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
66
- ...(await Promise.all(
67
- this.obj.addresses.map(
68
- async (address, index) => _BoundWitnessValidator.validateSignature(await PayloadHasher.hashAsync(this.payload), address, this.obj._signatures?.[index]),
69
- []
70
- )
71
- )).flat()
72
- ];
73
- }
74
- async validate() {
75
- return [
76
- ...await this.signatures(),
77
- ...this.addresses(),
78
- ...this.validateArrayLengths(),
79
- ...this.schemas(),
80
- ...this.previousHashes(),
81
- ...this.schema(),
82
- ...await super.validate()
83
- ];
84
- }
85
- validateArrayLengths() {
86
- const errors = [];
87
- errors.push(...this.validatePayloadHashesLength());
88
- return errors;
89
- }
90
- validatePayloadHashesLength() {
91
- const errors = [];
92
- errors.push(...this.validateArrayLength("payload_hashes", "payload_schemas"));
93
- return errors;
94
- }
95
- validateArrayLength(fieldName, compareArrayName) {
96
- const errors = [];
97
- const [array, arrayErrors] = validateType("array", this.stringKeyObj[fieldName], true);
98
- const [compareArray, compareArrayErrors] = validateType("array", this.stringKeyObj[compareArrayName], true);
99
- if (array?.length !== compareArray?.length) {
100
- errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`));
101
- }
102
- return [...arrayErrors, ...compareArrayErrors, ...errors];
103
- }
104
- };
105
- export {
106
- BoundWitnessValidator
107
- };
1
+ export * from "./Validator";
108
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Validator.ts"],"sourcesContent":["import { uniq } from '@xylabs/lodash'\nimport { AddressValue } from '@xyo-network/account'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadHasher } from '@xyo-network/core'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { validateType } from '@xyo-network/typeof'\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: string, address: string, signature?: string): Error[] {\n if (!signature) {\n return [Error(`Missing signature [${address}]`)]\n }\n if (!new AddressValue(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(await PayloadHasher.hashAsync(this.payload), address, 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,SAAS,YAAY;AACrB,SAAS,oBAAoB;AAC7B,SAAuB,0BAA0B;AACjD,SAAS,qBAAqB;AAC9B,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAE7B,IAAM,2BAA2B,CAAC,GAAc,GAAc,UAAU,4BAA4B;AAClG,SAAO,EAAE,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC;AAC5D;AAEO,IAAM,wBAAN,MAAM,+BAAyF,iBAAoB;AAAA,EACxH,IAAc,iBAAyB;AACrC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,kBAAkB,MAAc,SAAiB,WAA6B;AACnF,QAAI,CAAC,WAAW;AACd,aAAO,CAAC,MAAM,sBAAsB,OAAO,GAAG,CAAC;AAAA,IACjD;AACA,QAAI,CAAC,IAAI,aAAa,OAAO,EAAE,OAAO,MAAM,SAAS,GAAG;AACtD,aAAO,CAAC,MAAM,sBAAsB,OAAO,MAAM,SAAS,GAAG,CAAC;AAAA,IAChE;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,YAAqB;AACnB,UAAM,SAAkB,CAAC;AAGzB,WAAO,KAAK,GAAG,KAAK,oBAAoB,CAAC;AACzC,WAAO;AAAA,EACT;AAAA,EAEA,sBAA+B;AAC7B,UAAM,SAAkB,CAAC;AACzB,UAAM,EAAE,UAAU,IAAI,KAAK;AAC3B,UAAM,gBAAgB,KAAK,SAAS;AACpC,QAAI,WAAW,WAAW,eAAe;AAAQ,aAAO,KAAK,MAAM,0BAA0B,CAAC;AAC9F,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB;AACf,UAAM,SAAkB,CAAC;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,SAAkB;AAChB,UAAM,SAAkB,CAAC;AACzB,QAAI,KAAK,IAAI,WAAW,KAAK,gBAAgB;AAC3C,aAAO,KAAK,MAAM,mBAAmB,KAAK,cAAc,QAAQ,KAAK,IAAI,MAAM,GAAG,CAAC;AAAA,IACrF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,UAAmB;AACjB,UAAM,SAAkB,CAAC;AACzB,UAAM,UAAU,KAAK,IAAI;AACzB,QAAI,SAAS;AACX,YAAM,mBAAmB,QAAQ,IAAI,CAAC,WAAmB;AACvD,eAAO,iBAAiB,6BAA6B,MAAM;AAAA,MAC7D,CAAC;AACD,uBAAiB,QAAQ,CAAC,cAAc;AACtC,YAAI,WAAW;AACb,iBAAO,KAAK,GAAG,UAAU,IAAI,CAAC;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAA+B;AACnC,WAAO;AAAA,MACL,GAAG,yBAAyB,KAAK,IAAI,eAAe,CAAC,GAAG,KAAK,IAAI,WAAW,qCAAqC;AAAA,MACjH,IACE,MAAM,QAAQ;AAAA,QACZ,KAAK,IAAI,UAAU;AAAA,UACjB,OAAO,SAAS,UACd,uBAAsB,kBAAkB,MAAM,cAAc,UAAU,KAAK,OAAO,GAAG,SAAS,KAAK,IAAI,cAAc,KAAK,CAAC;AAAA,UAC7H,CAAC;AAAA,QACH;AAAA,MACF,GACA,KAAK;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAe,WAAW;AACxB,WAAO;AAAA,MACL,GAAI,MAAM,KAAK,WAAW;AAAA,MAC1B,GAAG,KAAK,UAAU;AAAA,MAClB,GAAG,KAAK,qBAAqB;AAAA,MAC7B,GAAG,KAAK,QAAQ;AAAA,MAChB,GAAG,KAAK,eAAe;AAAA,MACvB,GAAG,KAAK,OAAO;AAAA,MACf,GAAI,MAAM,MAAM,SAAS;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,uBAAgC;AAC9B,UAAM,SAAkB,CAAC;AACzB,WAAO,KAAK,GAAG,KAAK,4BAA4B,CAAC;AACjD,WAAO;AAAA,EACT;AAAA,EAEA,8BAAuC;AACrC,UAAM,SAAkB,CAAC;AACzB,WAAO,KAAK,GAAG,KAAK,oBAAoB,kBAAkB,iBAAiB,CAAC;AAC5E,WAAO;AAAA,EACT;AAAA,EAEQ,oBAAoB,WAAmB,kBAAmC;AAChF,UAAM,SAAkB,CAAC;AAEzB,UAAM,CAAC,OAAO,WAAW,IAAI,aAAa,SAAS,KAAK,aAAa,SAAS,GAAS,IAAI;AAC3F,UAAM,CAAC,cAAc,kBAAkB,IAAI,aAAa,SAAS,KAAK,aAAa,gBAAgB,GAAS,IAAI;AAEhH,QAAI,OAAO,WAAW,cAAc,QAAQ;AAC1C,aAAO,KAAK,IAAI,MAAM,GAAG,SAAS,IAAI,gBAAgB,oBAAoB,OAAO,MAAM,QAAQ,cAAc,MAAM,GAAG,CAAC;AAAA,IACzH;AAEA,WAAO,CAAC,GAAG,aAAa,GAAG,oBAAoB,GAAG,MAAM;AAAA,EAC1D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export * from './Validator'\n"],"mappings":"AAAA,cAAc;","names":[]}