@xyo-network/boundwitness-validator 2.75.0 → 2.75.1

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"}
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/Validator.ts
19
21
  var Validator_exports = {};
20
22
  __export(Validator_exports, {
21
23
  BoundWitnessValidator: () => BoundWitnessValidator
@@ -27,10 +29,10 @@ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
27
29
  var import_core = require("@xyo-network/core");
28
30
  var import_payload_validator = require("@xyo-network/payload-validator");
29
31
  var import_typeof = require("@xyo-network/typeof");
30
- const validateArraysSameLength = (a, b, message = "Array length mismatch") => {
32
+ var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
31
33
  return a.length != b.length ? [Error(`${message} []`)] : [];
32
34
  };
33
- class BoundWitnessValidator extends import_payload_validator.PayloadValidator {
35
+ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_validator.PayloadValidator {
34
36
  get expectedSchema() {
35
37
  return import_boundwitness_model.BoundWitnessSchema;
36
38
  }
@@ -52,7 +54,7 @@ class BoundWitnessValidator extends import_payload_validator.PayloadValidator {
52
54
  const errors = [];
53
55
  const { addresses } = this.obj;
54
56
  const uniqAddresses = (0, import_lodash.uniq)(addresses);
55
- if (addresses?.length !== uniqAddresses?.length)
57
+ if ((addresses == null ? void 0 : addresses.length) !== (uniqAddresses == null ? void 0 : uniqAddresses.length))
56
58
  errors.push(Error("addresses must be unique"));
57
59
  return errors;
58
60
  }
@@ -72,7 +74,8 @@ class BoundWitnessValidator extends import_payload_validator.PayloadValidator {
72
74
  const Schemas = this.obj.payload_schemas;
73
75
  if (Schemas) {
74
76
  const schemaValidators = Schemas.map((schema) => {
75
- return import_payload_validator.PayloadValidator.schemaNameValidatorFactory?.(schema);
77
+ var _a, _b;
78
+ return (_b = (_a = import_payload_validator.PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
76
79
  });
77
80
  schemaValidators.forEach((validator) => {
78
81
  if (validator) {
@@ -87,7 +90,10 @@ class BoundWitnessValidator extends import_payload_validator.PayloadValidator {
87
90
  ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
88
91
  ...(await Promise.all(
89
92
  this.obj.addresses.map(
90
- async (address, index) => BoundWitnessValidator.validateSignature(await import_core.PayloadHasher.hashAsync(this.payload), address, this.obj._signatures?.[index]),
93
+ async (address, index) => {
94
+ var _a;
95
+ return _BoundWitnessValidator.validateSignature(await import_core.PayloadHasher.hashAsync(this.payload), address, (_a = this.obj._signatures) == null ? void 0 : _a[index]);
96
+ },
91
97
  []
92
98
  )
93
99
  )).flat()
@@ -118,12 +124,12 @@ class BoundWitnessValidator extends import_payload_validator.PayloadValidator {
118
124
  const errors = [];
119
125
  const [array, arrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[fieldName], true);
120
126
  const [compareArray, compareArrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[compareArrayName], true);
121
- if (array?.length !== compareArray?.length) {
122
- errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`));
127
+ if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
128
+ errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
123
129
  }
124
130
  return [...arrayErrors, ...compareArrayErrors, ...errors];
125
131
  }
126
- }
132
+ };
127
133
  // Annotate the CommonJS export names for ESM import in node:
128
134
  0 && (module.exports = {
129
135
  BoundWitnessValidator
@@ -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":[]}
@@ -1,13 +1,14 @@
1
+ // src/Validator.ts
1
2
  import { uniq } from "@xylabs/lodash";
2
3
  import { AddressValue } from "@xyo-network/account";
3
4
  import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
4
5
  import { PayloadHasher } from "@xyo-network/core";
5
6
  import { PayloadValidator } from "@xyo-network/payload-validator";
6
7
  import { validateType } from "@xyo-network/typeof";
7
- const validateArraysSameLength = (a, b, message = "Array length mismatch") => {
8
+ var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
8
9
  return a.length != b.length ? [Error(`${message} []`)] : [];
9
10
  };
10
- class BoundWitnessValidator extends PayloadValidator {
11
+ var BoundWitnessValidator = class _BoundWitnessValidator extends PayloadValidator {
11
12
  get expectedSchema() {
12
13
  return BoundWitnessSchema;
13
14
  }
@@ -29,7 +30,7 @@ class BoundWitnessValidator extends PayloadValidator {
29
30
  const errors = [];
30
31
  const { addresses } = this.obj;
31
32
  const uniqAddresses = uniq(addresses);
32
- if (addresses?.length !== uniqAddresses?.length)
33
+ if ((addresses == null ? void 0 : addresses.length) !== (uniqAddresses == null ? void 0 : uniqAddresses.length))
33
34
  errors.push(Error("addresses must be unique"));
34
35
  return errors;
35
36
  }
@@ -49,7 +50,8 @@ class BoundWitnessValidator extends PayloadValidator {
49
50
  const Schemas = this.obj.payload_schemas;
50
51
  if (Schemas) {
51
52
  const schemaValidators = Schemas.map((schema) => {
52
- return PayloadValidator.schemaNameValidatorFactory?.(schema);
53
+ var _a, _b;
54
+ return (_b = (_a = PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
53
55
  });
54
56
  schemaValidators.forEach((validator) => {
55
57
  if (validator) {
@@ -64,7 +66,10 @@ class BoundWitnessValidator extends PayloadValidator {
64
66
  ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
65
67
  ...(await Promise.all(
66
68
  this.obj.addresses.map(
67
- async (address, index) => BoundWitnessValidator.validateSignature(await PayloadHasher.hashAsync(this.payload), address, this.obj._signatures?.[index]),
69
+ async (address, index) => {
70
+ var _a;
71
+ return _BoundWitnessValidator.validateSignature(await PayloadHasher.hashAsync(this.payload), address, (_a = this.obj._signatures) == null ? void 0 : _a[index]);
72
+ },
68
73
  []
69
74
  )
70
75
  )).flat()
@@ -95,12 +100,12 @@ class BoundWitnessValidator extends PayloadValidator {
95
100
  const errors = [];
96
101
  const [array, arrayErrors] = validateType("array", this.stringKeyObj[fieldName], true);
97
102
  const [compareArray, compareArrayErrors] = validateType("array", this.stringKeyObj[compareArrayName], true);
98
- if (array?.length !== compareArray?.length) {
99
- errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array?.length} !== ${compareArray?.length}]`));
103
+ if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
104
+ errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
100
105
  }
101
106
  return [...arrayErrors, ...compareArrayErrors, ...errors];
102
107
  }
103
- }
108
+ };
104
109
  export {
105
110
  BoundWitnessValidator
106
111
  };
@@ -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"}
@@ -3,6 +3,10 @@ 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 __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
6
10
  var __copyProps = (to, from, except, desc) => {
7
11
  if (from && typeof from === "object" || typeof from === "function") {
8
12
  for (let key of __getOwnPropNames(from))
@@ -11,13 +15,125 @@ var __copyProps = (to, from, except, desc) => {
11
15
  }
12
16
  return to;
13
17
  };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
16
21
  var src_exports = {};
22
+ __export(src_exports, {
23
+ BoundWitnessValidator: () => BoundWitnessValidator
24
+ });
17
25
  module.exports = __toCommonJS(src_exports);
18
- __reExport(src_exports, require("./Validator"), module.exports);
26
+
27
+ // src/Validator.ts
28
+ var import_lodash = require("@xylabs/lodash");
29
+ var import_account = require("@xyo-network/account");
30
+ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
31
+ var import_core = require("@xyo-network/core");
32
+ var import_payload_validator = require("@xyo-network/payload-validator");
33
+ var import_typeof = require("@xyo-network/typeof");
34
+ var validateArraysSameLength = (a, b, message = "Array length mismatch") => {
35
+ return a.length != b.length ? [Error(`${message} []`)] : [];
36
+ };
37
+ var BoundWitnessValidator = class _BoundWitnessValidator extends import_payload_validator.PayloadValidator {
38
+ get expectedSchema() {
39
+ return import_boundwitness_model.BoundWitnessSchema;
40
+ }
41
+ static validateSignature(hash, address, signature) {
42
+ if (!signature) {
43
+ return [Error(`Missing signature [${address}]`)];
44
+ }
45
+ if (!new import_account.AddressValue(address).verify(hash, signature)) {
46
+ return [Error(`Invalid signature [${address}] [${signature}]`)];
47
+ }
48
+ return [];
49
+ }
50
+ addresses() {
51
+ const errors = [];
52
+ errors.push(...this.addressesUniqueness());
53
+ return errors;
54
+ }
55
+ addressesUniqueness() {
56
+ const errors = [];
57
+ const { addresses } = this.obj;
58
+ const uniqAddresses = (0, import_lodash.uniq)(addresses);
59
+ if ((addresses == null ? void 0 : addresses.length) !== (uniqAddresses == null ? void 0 : uniqAddresses.length))
60
+ errors.push(Error("addresses must be unique"));
61
+ return errors;
62
+ }
63
+ previousHashes() {
64
+ const errors = [];
65
+ return errors;
66
+ }
67
+ schema() {
68
+ const errors = [];
69
+ if (this.obj.schema !== this.expectedSchema) {
70
+ errors.push(Error(`invalid schema [${this.expectedSchema} !== ${this.obj.schema}]`));
71
+ }
72
+ return errors;
73
+ }
74
+ schemas() {
75
+ const errors = [];
76
+ const Schemas = this.obj.payload_schemas;
77
+ if (Schemas) {
78
+ const schemaValidators = Schemas.map((schema) => {
79
+ var _a, _b;
80
+ return (_b = (_a = import_payload_validator.PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
81
+ });
82
+ schemaValidators.forEach((validator) => {
83
+ if (validator) {
84
+ errors.push(...validator.all());
85
+ }
86
+ });
87
+ }
88
+ return errors;
89
+ }
90
+ async signatures() {
91
+ return [
92
+ ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
93
+ ...(await Promise.all(
94
+ this.obj.addresses.map(
95
+ async (address, index) => {
96
+ var _a;
97
+ return _BoundWitnessValidator.validateSignature(await import_core.PayloadHasher.hashAsync(this.payload), address, (_a = this.obj._signatures) == null ? void 0 : _a[index]);
98
+ },
99
+ []
100
+ )
101
+ )).flat()
102
+ ];
103
+ }
104
+ async validate() {
105
+ return [
106
+ ...await this.signatures(),
107
+ ...this.addresses(),
108
+ ...this.validateArrayLengths(),
109
+ ...this.schemas(),
110
+ ...this.previousHashes(),
111
+ ...this.schema(),
112
+ ...await super.validate()
113
+ ];
114
+ }
115
+ validateArrayLengths() {
116
+ const errors = [];
117
+ errors.push(...this.validatePayloadHashesLength());
118
+ return errors;
119
+ }
120
+ validatePayloadHashesLength() {
121
+ const errors = [];
122
+ errors.push(...this.validateArrayLength("payload_hashes", "payload_schemas"));
123
+ return errors;
124
+ }
125
+ validateArrayLength(fieldName, compareArrayName) {
126
+ const errors = [];
127
+ const [array, arrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[fieldName], true);
128
+ const [compareArray, compareArrayErrors] = (0, import_typeof.validateType)("array", this.stringKeyObj[compareArrayName], true);
129
+ if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
130
+ errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
131
+ }
132
+ return [...arrayErrors, ...compareArrayErrors, ...errors];
133
+ }
134
+ };
19
135
  // Annotate the CommonJS export names for ESM import in node:
20
136
  0 && (module.exports = {
21
- ...require("./Validator")
137
+ BoundWitnessValidator
22
138
  });
23
139
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export * from './Validator'\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,wBAAd;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Validator.ts"],"sourcesContent":["export * from './Validator'\n","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,2 +1,112 @@
1
- export * from "./Validator";
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 == null ? void 0 : addresses.length) !== (uniqAddresses == null ? void 0 : 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
+ var _a, _b;
54
+ return (_b = (_a = PayloadValidator).schemaNameValidatorFactory) == null ? void 0 : _b.call(_a, schema);
55
+ });
56
+ schemaValidators.forEach((validator) => {
57
+ if (validator) {
58
+ errors.push(...validator.all());
59
+ }
60
+ });
61
+ }
62
+ return errors;
63
+ }
64
+ async signatures() {
65
+ return [
66
+ ...validateArraysSameLength(this.obj._signatures ?? [], this.obj.addresses, "Length mismatch: address/_signature"),
67
+ ...(await Promise.all(
68
+ this.obj.addresses.map(
69
+ async (address, index) => {
70
+ var _a;
71
+ return _BoundWitnessValidator.validateSignature(await PayloadHasher.hashAsync(this.payload), address, (_a = this.obj._signatures) == null ? void 0 : _a[index]);
72
+ },
73
+ []
74
+ )
75
+ )).flat()
76
+ ];
77
+ }
78
+ async validate() {
79
+ return [
80
+ ...await this.signatures(),
81
+ ...this.addresses(),
82
+ ...this.validateArrayLengths(),
83
+ ...this.schemas(),
84
+ ...this.previousHashes(),
85
+ ...this.schema(),
86
+ ...await super.validate()
87
+ ];
88
+ }
89
+ validateArrayLengths() {
90
+ const errors = [];
91
+ errors.push(...this.validatePayloadHashesLength());
92
+ return errors;
93
+ }
94
+ validatePayloadHashesLength() {
95
+ const errors = [];
96
+ errors.push(...this.validateArrayLength("payload_hashes", "payload_schemas"));
97
+ return errors;
98
+ }
99
+ validateArrayLength(fieldName, compareArrayName) {
100
+ const errors = [];
101
+ const [array, arrayErrors] = validateType("array", this.stringKeyObj[fieldName], true);
102
+ const [compareArray, compareArrayErrors] = validateType("array", this.stringKeyObj[compareArrayName], true);
103
+ if ((array == null ? void 0 : array.length) !== (compareArray == null ? void 0 : compareArray.length)) {
104
+ errors.push(new Error(`${fieldName}/${compareArrayName} count mismatch [${array == null ? void 0 : array.length} !== ${compareArray == null ? void 0 : compareArray.length}]`));
105
+ }
106
+ return [...arrayErrors, ...compareArrayErrors, ...errors];
107
+ }
108
+ };
109
+ export {
110
+ BoundWitnessValidator
111
+ };
2
112
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export * from './Validator'\n"],"mappings":"AAAA,cAAc;","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":[]}
package/package.json CHANGED
@@ -10,17 +10,17 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/lodash": "^2.11.22",
14
- "@xyo-network/account": "~2.75.0",
15
- "@xyo-network/boundwitness-model": "~2.75.0",
16
- "@xyo-network/core": "~2.75.0",
17
- "@xyo-network/payload-validator": "~2.75.0",
18
- "@xyo-network/typeof": "~2.75.0"
13
+ "@xylabs/lodash": "^2.12.10",
14
+ "@xyo-network/account": "~2.75.1",
15
+ "@xyo-network/boundwitness-model": "~2.75.1",
16
+ "@xyo-network/core": "~2.75.1",
17
+ "@xyo-network/payload-validator": "~2.75.1",
18
+ "@xyo-network/typeof": "~2.75.1"
19
19
  },
20
20
  "description": "Primary SDK for using XYO Protocol 2.0",
21
21
  "devDependencies": {
22
- "@xylabs/ts-scripts-yarn3": "^3.0.70",
23
- "@xylabs/tsconfig": "^3.0.70",
22
+ "@xylabs/ts-scripts-yarn3": "^3.0.77",
23
+ "@xylabs/tsconfig": "^3.0.77",
24
24
  "typescript": "^5.2.2"
25
25
  },
26
26
  "docs": "dist/docs.json",
@@ -28,7 +28,7 @@
28
28
  ".": {
29
29
  "browser": {
30
30
  "require": {
31
- "types": "./dist/browser/index.d.ts",
31
+ "types": "./dist/browser/index.d.cts",
32
32
  "default": "./dist/browser/index.cjs"
33
33
  },
34
34
  "import": {
@@ -65,5 +65,5 @@
65
65
  },
66
66
  "sideEffects": false,
67
67
  "types": "dist/node/index.d.ts",
68
- "version": "2.75.0"
68
+ "version": "2.75.1"
69
69
  }