@xyo-network/core 2.20.29 → 2.20.32

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.
Files changed (80) hide show
  1. package/dist/cjs/BoundWitness/Builder/Builder.js +2 -2
  2. package/dist/cjs/BoundWitness/Builder/Builder.js.map +1 -1
  3. package/dist/cjs/BoundWitness/Validator/BodyValidator.js +1 -1
  4. package/dist/cjs/BoundWitness/Validator/BodyValidator.js.map +1 -1
  5. package/dist/cjs/BoundWitness/Validator/MetaValidator.js +2 -2
  6. package/dist/cjs/BoundWitness/Validator/MetaValidator.js.map +1 -1
  7. package/dist/cjs/Hasher/XyoAbstractHasher.d.ts +11 -0
  8. package/dist/cjs/Hasher/XyoAbstractHasher.js +34 -0
  9. package/dist/cjs/Hasher/XyoAbstractHasher.js.map +1 -0
  10. package/dist/cjs/Hasher/XyoHasher.d.ts +4 -6
  11. package/dist/cjs/Hasher/XyoHasher.js +6 -20
  12. package/dist/cjs/Hasher/XyoHasher.js.map +1 -1
  13. package/dist/cjs/Hasher/index.d.ts +1 -0
  14. package/dist/cjs/Hasher/index.js +1 -0
  15. package/dist/cjs/Hasher/index.js.map +1 -1
  16. package/dist/cjs/Payload/Builder/Builder.js +1 -1
  17. package/dist/cjs/Payload/Builder/Builder.js.map +1 -1
  18. package/dist/cjs/Payload/Validator/MetaValidator.js +1 -1
  19. package/dist/cjs/Payload/Validator/MetaValidator.js.map +1 -1
  20. package/dist/cjs/Payload/Wrapper/Wrapper.d.ts +4 -4
  21. package/dist/cjs/Payload/Wrapper/Wrapper.js +5 -2
  22. package/dist/cjs/Payload/Wrapper/Wrapper.js.map +1 -1
  23. package/dist/cjs/Query/QueryPayload.d.ts +6 -0
  24. package/dist/cjs/Query/QueryPayload.js +3 -0
  25. package/dist/cjs/Query/QueryPayload.js.map +1 -0
  26. package/dist/cjs/Query/index.d.ts +1 -0
  27. package/dist/cjs/Query/index.js +5 -0
  28. package/dist/cjs/Query/index.js.map +1 -0
  29. package/dist/cjs/Schema/Payload.d.ts +1 -0
  30. package/dist/cjs/shared.d.ts +1 -0
  31. package/dist/cjs/shared.js +1 -0
  32. package/dist/cjs/shared.js.map +1 -1
  33. package/dist/docs.json +7954 -6871
  34. package/dist/esm/BoundWitness/Builder/Builder.js +2 -2
  35. package/dist/esm/BoundWitness/Builder/Builder.js.map +1 -1
  36. package/dist/esm/BoundWitness/Validator/BodyValidator.js +1 -1
  37. package/dist/esm/BoundWitness/Validator/BodyValidator.js.map +1 -1
  38. package/dist/esm/BoundWitness/Validator/MetaValidator.js +2 -2
  39. package/dist/esm/BoundWitness/Validator/MetaValidator.js.map +1 -1
  40. package/dist/esm/Hasher/XyoAbstractHasher.d.ts +11 -0
  41. package/dist/esm/Hasher/XyoAbstractHasher.js +29 -0
  42. package/dist/esm/Hasher/XyoAbstractHasher.js.map +1 -0
  43. package/dist/esm/Hasher/XyoHasher.d.ts +4 -6
  44. package/dist/esm/Hasher/XyoHasher.js +6 -19
  45. package/dist/esm/Hasher/XyoHasher.js.map +1 -1
  46. package/dist/esm/Hasher/index.d.ts +1 -0
  47. package/dist/esm/Hasher/index.js +1 -0
  48. package/dist/esm/Hasher/index.js.map +1 -1
  49. package/dist/esm/Payload/Builder/Builder.js +1 -1
  50. package/dist/esm/Payload/Builder/Builder.js.map +1 -1
  51. package/dist/esm/Payload/Validator/MetaValidator.js +1 -1
  52. package/dist/esm/Payload/Validator/MetaValidator.js.map +1 -1
  53. package/dist/esm/Payload/Wrapper/Wrapper.d.ts +4 -4
  54. package/dist/esm/Payload/Wrapper/Wrapper.js +6 -4
  55. package/dist/esm/Payload/Wrapper/Wrapper.js.map +1 -1
  56. package/dist/esm/Query/QueryPayload.d.ts +6 -0
  57. package/dist/esm/Query/QueryPayload.js +2 -0
  58. package/dist/esm/Query/QueryPayload.js.map +1 -0
  59. package/dist/esm/Query/index.d.ts +1 -0
  60. package/dist/esm/Query/index.js +2 -0
  61. package/dist/esm/Query/index.js.map +1 -0
  62. package/dist/esm/Schema/Payload.d.ts +1 -0
  63. package/dist/esm/shared.d.ts +1 -0
  64. package/dist/esm/shared.js +1 -0
  65. package/dist/esm/shared.js.map +1 -1
  66. package/package.json +4 -4
  67. package/src/BoundWitness/Builder/Builder.spec.ts +1 -1
  68. package/src/BoundWitness/Builder/Builder.ts +2 -2
  69. package/src/BoundWitness/Validator/BodyValidator.ts +1 -1
  70. package/src/BoundWitness/Validator/MetaValidator.ts +2 -2
  71. package/src/Hasher/XyoAbstractHasher.ts +37 -0
  72. package/src/Hasher/XyoHasher.ts +7 -24
  73. package/src/Hasher/index.ts +1 -0
  74. package/src/Payload/Builder/Builder.ts +1 -1
  75. package/src/Payload/Validator/MetaValidator.ts +1 -1
  76. package/src/Payload/Wrapper/Wrapper.ts +8 -6
  77. package/src/Query/QueryPayload.ts +7 -0
  78. package/src/Query/index.ts +1 -0
  79. package/src/Schema/Payload.ts +1 -0
  80. package/src/shared.ts +1 -0
@@ -9,7 +9,7 @@ export class XyoBoundWitnessBuilder {
9
9
  }
10
10
  get _payload_hashes() {
11
11
  return this._payloads.map((payload) => {
12
- return new XyoHasher(payload).sortedHash();
12
+ return new XyoHasher(payload).hash;
13
13
  });
14
14
  }
15
15
  witness(account) {
@@ -55,7 +55,7 @@ export class XyoBoundWitnessBuilder {
55
55
  }
56
56
  build() {
57
57
  const hashableFields = this.hashableFields();
58
- const _hash = new XyoHasher(hashableFields).sortedHash();
58
+ const _hash = new XyoHasher(hashableFields).hash;
59
59
  const ret = { ...hashableFields, _client: 'js', _hash, _signatures: this.signatures(_hash), _timestamp: Date.now() };
60
60
  if (this.config.inlinePayloads) {
61
61
  ret._payloads = this.inlinePayloads();
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Builder/Builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Builder/Builder.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ class XyoBoundWitnessBodyValidator {
46
46
  const errors = [];
47
47
  const passedHashes = this.body.payload_hashes;
48
48
  this.payloads?.forEach((payload, index) => {
49
- const calcHash = new XyoHasher(payload).sortedHash();
49
+ const calcHash = new XyoHasher(payload).hash;
50
50
  const passedHash = passedHashes[index];
51
51
  if (calcHash !== passedHash) {
52
52
  errors.push(new Error(`hash mismatch [${calcHash} !== ${passedHash}]`));
@@ -1 +1 @@
1
- {"version":3,"file":"BodyValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/BodyValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BodyValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/BodyValidator.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,9 @@ export class XyoBoundWitnessMetaValidator {
13
13
  hash() {
14
14
  const errors = [];
15
15
  const hasher = new XyoHasher(this.bw);
16
- const bodyHash = hasher.sortedHash();
16
+ const bodyHash = hasher.hash;
17
17
  if (bodyHash !== this.bw._hash)
18
- errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.sortedStringify()}]`));
18
+ errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.stringified}]`));
19
19
  return errors;
20
20
  }
21
21
  payloads() {
@@ -1 +1 @@
1
- {"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/MetaValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/BoundWitness/Validator/MetaValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare abstract class XyoAbstractHasher<T extends Record<string, unknown>> {
2
+ protected abstract get obj(): T;
3
+ get hashFields(): Record<string, unknown>;
4
+ /** @deprecated use stringified instead */
5
+ sortedStringify(): string;
6
+ get stringified(): string;
7
+ /** @deprecated use hash instead */
8
+ sortedHash(): string;
9
+ get hash(): string;
10
+ private sortedHashData;
11
+ }
@@ -0,0 +1,29 @@
1
+ import shajs from 'sha.js';
2
+ import { removeEmptyFields } from './removeEmptyFields';
3
+ import { deepOmitUnderscoreFields } from './removeFields';
4
+ import { sortFields } from './sortFields';
5
+ export class XyoAbstractHasher {
6
+ get hashFields() {
7
+ return removeEmptyFields(deepOmitUnderscoreFields(this.obj));
8
+ }
9
+ /** @deprecated use stringified instead */
10
+ sortedStringify() {
11
+ return this.stringified;
12
+ }
13
+ get stringified() {
14
+ const sortedEntry = sortFields(this.hashFields);
15
+ return JSON.stringify(sortedEntry);
16
+ }
17
+ /** @deprecated use hash instead */
18
+ sortedHash() {
19
+ return this.hash;
20
+ }
21
+ get hash() {
22
+ return this.sortedHashData().toString('hex');
23
+ }
24
+ sortedHashData() {
25
+ const stringObject = this.stringified;
26
+ return shajs('sha256').update(stringObject).digest();
27
+ }
28
+ }
29
+ //# sourceMappingURL=XyoAbstractHasher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoAbstractHasher.js","sourceRoot":"","sources":["../../../src/Hasher/XyoAbstractHasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,OAAgB,iBAAiB;IAGrC,IAAI,UAAU;QACZ,OAAO,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,0CAA0C;IACnC,eAAe;QACpB,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,IAAW,WAAW;QACpB,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;IAED,mCAAmC;IAC5B,UAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9C,CAAC;IAEO,cAAc;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAA;QACrC,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAA;IACtD,CAAC;CACF"}
@@ -1,8 +1,6 @@
1
- export declare class XyoHasher<T extends Record<string, unknown>> {
2
- readonly obj: T;
1
+ import { XyoAbstractHasher } from './XyoAbstractHasher';
2
+ export declare class XyoHasher<T extends Record<string, unknown>> extends XyoAbstractHasher<T> {
3
+ private readonly memoryObj;
3
4
  constructor(obj: T);
4
- get hashFields(): Record<string, unknown>;
5
- sortedStringify(): string;
6
- sortedHash(): string;
7
- private sortedHashData;
5
+ protected get obj(): T;
8
6
  }
@@ -1,24 +1,11 @@
1
- import shajs from 'sha.js';
2
- import { removeEmptyFields } from './removeEmptyFields';
3
- import { deepOmitUnderscoreFields } from './removeFields';
4
- import { sortFields } from './sortFields';
5
- export class XyoHasher {
1
+ import { XyoAbstractHasher } from './XyoAbstractHasher';
2
+ export class XyoHasher extends XyoAbstractHasher {
6
3
  constructor(obj) {
7
- this.obj = obj;
4
+ super();
5
+ this.memoryObj = obj;
8
6
  }
9
- get hashFields() {
10
- return removeEmptyFields(deepOmitUnderscoreFields(this.obj));
11
- }
12
- sortedStringify() {
13
- const sortedEntry = sortFields(this.hashFields);
14
- return JSON.stringify(sortedEntry);
15
- }
16
- sortedHash() {
17
- return this.sortedHashData().toString('hex');
18
- }
19
- sortedHashData() {
20
- const stringObject = this.sortedStringify();
21
- return shajs('sha256').update(stringObject).digest();
7
+ get obj() {
8
+ return this.memoryObj;
22
9
  }
23
10
  }
24
11
  //# sourceMappingURL=XyoHasher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoHasher.js","sourceRoot":"","sources":["../../../src/Hasher/XyoHasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,OAAO,SAAS;IAEpB,YAAY,GAAM;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;IAEM,eAAe;QACpB,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9C,CAAC;IAEO,cAAc;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAA;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"XyoHasher.js","sourceRoot":"","sources":["../../../src/Hasher/XyoHasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,OAAO,SAA6C,SAAQ,iBAAoB;IAEpF,YAAY,GAAM;QAChB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;IACtB,CAAC;IAED,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  export * from './removeEmptyFields';
2
2
  export * from './removeFields';
3
3
  export * from './sortFields';
4
+ export * from './XyoAbstractHasher';
4
5
  export * from './XyoHasher';
@@ -1,5 +1,6 @@
1
1
  export * from './removeEmptyFields';
2
2
  export * from './removeFields';
3
3
  export * from './sortFields';
4
+ export * from './XyoAbstractHasher';
4
5
  export * from './XyoHasher';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Hasher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Hasher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA"}
@@ -22,7 +22,7 @@ export class XyoPayloadBuilder {
22
22
  }
23
23
  build() {
24
24
  const hashableFields = this.hashableFields();
25
- const _hash = new XyoHasher(hashableFields).sortedHash();
25
+ const _hash = new XyoHasher(hashableFields).hash;
26
26
  const _timestamp = Date.now();
27
27
  return { ...hashableFields, _client: 'js', _hash, _timestamp, schema: this._schema };
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/Payload/Builder/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAOrF,MAAM,OAAO,iBAAiB;IAK5B,YAAY,EAAE,MAAM,EAA4B;QAJxC,YAAO,GAAe,EAAE,CAAA;QAK9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAEM,MAAM,CAAC,MAAmB;QAC/B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;SACjE;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,YAAY,CAAC,IAAa;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,cAAc;QACnB,OAAO;YACL,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrG,MAAM,EAAE,IAAI,CAAC,OAAO;SAChB,CAAA;IACR,CAAC;IAEM,KAAK;QACV,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAC5C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAA;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC7B,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;IACtF,CAAC;CACF"}
1
+ {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../../src/Payload/Builder/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAOrF,MAAM,OAAO,iBAAiB;IAK5B,YAAY,EAAE,MAAM,EAA4B;QAJxC,YAAO,GAAe,EAAE,CAAA;QAK9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAEM,MAAM,CAAC,MAAmB;QAC/B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;SACjE;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,YAAY,CAAC,IAAa;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,cAAc;QACnB,OAAO;YACL,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrG,MAAM,EAAE,IAAI,CAAC,OAAO;SAChB,CAAA;IACR,CAAC;IAEM,KAAK;QACV,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAC5C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAA;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC7B,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;IACtF,CAAC;CACF"}
@@ -8,7 +8,7 @@ class XyoPayloadMetaValidator {
8
8
  hash() {
9
9
  const errors = [];
10
10
  const wrapper = new XyoHasher(this.payload);
11
- const bodyHash = wrapper.sortedHash();
11
+ const bodyHash = wrapper.hash;
12
12
  if (bodyHash !== this.payload._hash)
13
13
  errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.payload._hash}]`));
14
14
  return errors;
@@ -1 +1 @@
1
- {"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/Payload/Validator/MetaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAC3C,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAE3C,MAAM,uBAAuB;IAE3B,YAAY,OAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,IAAI;QACT,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;QACrC,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oCAAoC,QAAQ,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC3I,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QACnC,IAAI,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAA;aACrE,IAAI,UAAU,GAAG,qBAAqB;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;aAChG,IAAI,UAAU,GAAG,qBAAqB;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA;QACpG,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,GAAG;QACR,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAChD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../../src/Payload/Validator/MetaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAC3C,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAE3C,MAAM,uBAAuB;IAE3B,YAAY,OAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,IAAI;QACT,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAA;QAC7B,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oCAAoC,QAAQ,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC3I,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QACnC,IAAI,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAA;aACrE,IAAI,UAAU,GAAG,qBAAqB;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;aAChG,IAAI,UAAU,GAAG,qBAAqB;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA;QACpG,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,GAAG;QACR,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAChD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
@@ -1,9 +1,9 @@
1
- import { XyoHasher } from '../../Hasher';
1
+ import { XyoAbstractHasher } from '../../Hasher';
2
2
  import { XyoPayload } from '../models';
3
- declare class XyoPayloadWrapper<T extends XyoPayload> extends XyoHasher<T> {
4
- readonly payload: T;
3
+ export declare class XyoPayloadWrapper<T extends XyoPayload> extends XyoAbstractHasher<T> {
4
+ payload: T;
5
5
  constructor(payload: T);
6
+ protected get obj(): T;
6
7
  get body(): T;
7
8
  get meta(): T;
8
9
  }
9
- export { XyoPayloadWrapper };
@@ -1,9 +1,12 @@
1
- import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoHasher } from '../../Hasher';
2
- class XyoPayloadWrapper extends XyoHasher {
1
+ import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoAbstractHasher } from '../../Hasher';
2
+ export class XyoPayloadWrapper extends XyoAbstractHasher {
3
3
  constructor(payload) {
4
- super(payload);
4
+ super();
5
5
  this.payload = payload;
6
6
  }
7
+ get obj() {
8
+ return this.payload;
9
+ }
7
10
  get body() {
8
11
  return deepOmitUnderscoreFields(this.payload);
9
12
  }
@@ -11,5 +14,4 @@ class XyoPayloadWrapper extends XyoHasher {
11
14
  return deepPickUnderscoreFields(this.payload);
12
15
  }
13
16
  }
14
- export { XyoPayloadWrapper };
15
17
  //# sourceMappingURL=Wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../../../src/Payload/Wrapper/Wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG5F,MAAM,iBAAwC,SAAQ,SAAY;IAEhE,YAAY,OAAU;QACpB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,IAAW,IAAI;QACb,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;CACF;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../../../src/Payload/Wrapper/Wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAGpG,MAAM,OAAO,iBAAwC,SAAQ,iBAAoB;IAE/E,YAAY,OAAU;QACpB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,IAAW,IAAI;QACb,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { XyoPayload } from '../Payload';
2
+ export interface XyoQueryPayload extends XyoPayload {
3
+ budget?: number;
4
+ maxFrequency?: 'once' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';
5
+ minBid?: number;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QueryPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryPayload.js","sourceRoot":"","sources":["../../../src/Query/QueryPayload.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './QueryPayload';
@@ -0,0 +1,2 @@
1
+ export * from './QueryPayload';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Query/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -6,4 +6,5 @@ export interface XyoSchemaPayload extends XyoPayload {
6
6
  $id?: string;
7
7
  [key: string]: unknown;
8
8
  };
9
+ extends?: string;
9
10
  }
@@ -4,6 +4,7 @@ export * from './Huri';
4
4
  export * from './lib';
5
5
  export * from './models';
6
6
  export * from './Payload';
7
+ export * from './Query';
7
8
  export * from './Schema';
8
9
  export * from './SchemaNameValidator';
9
10
  export * from './Wallet';
@@ -4,6 +4,7 @@ export * from './Huri';
4
4
  export * from './lib';
5
5
  export * from './models';
6
6
  export * from './Payload';
7
+ export * from './Query';
7
8
  export * from './Schema';
8
9
  export * from './SchemaNameValidator';
9
10
  export * from './Wallet';
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/shared.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/shared.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
package/package.json CHANGED
@@ -19,11 +19,11 @@
19
19
  },
20
20
  "description": "Primary SDK for using XYO Protocol 2.0",
21
21
  "devDependencies": {
22
- "@babel/core": "^7.17.12",
23
- "@babel/preset-env": "^7.17.12",
22
+ "@babel/core": "^7.18.0",
23
+ "@babel/preset-env": "^7.18.0",
24
24
  "@types/elliptic": "^6.4.14",
25
25
  "@types/lodash": "^4.14.182",
26
- "@types/node": "^17.0.34",
26
+ "@types/node": "^17.0.35",
27
27
  "@types/sha.js": "^2.4.0",
28
28
  "@types/ua-parser-js": "^0.7.36",
29
29
  "@xylabs/eslint-config": "^2.3.22",
@@ -72,6 +72,6 @@
72
72
  },
73
73
  "sideEffects": true,
74
74
  "types": "dist/esm/index.d.ts",
75
- "version": "2.20.29",
75
+ "version": "2.20.32",
76
76
  "packageManager": "yarn@3.1.1"
77
77
  }
@@ -32,7 +32,7 @@ const payloadHash = '3c817871cbf24708703e907dbc344b1b2aefcc3603d14d59c3a35a5c446
32
32
  describe('XyoBoundWitnessBuilder', () => {
33
33
  describe('hash', () => {
34
34
  it.each(payloads)('consistently hashes equivalent payload independent of the order of the keys', (payload) => {
35
- const hash = new XyoHasher(payload).sortedHash()
35
+ const hash = new XyoHasher(payload).hash
36
36
  expect(hash).toEqual(payloadHash)
37
37
  })
38
38
  })
@@ -19,7 +19,7 @@ export class XyoBoundWitnessBuilder {
19
19
 
20
20
  private get _payload_hashes(): string[] {
21
21
  return this._payloads.map((payload) => {
22
- return new XyoHasher(payload).sortedHash()
22
+ return new XyoHasher(payload).hash
23
23
  })
24
24
  }
25
25
 
@@ -72,7 +72,7 @@ export class XyoBoundWitnessBuilder {
72
72
 
73
73
  public build(): XyoBoundWitness {
74
74
  const hashableFields = this.hashableFields() as unknown as Record<string, unknown>
75
- const _hash = new XyoHasher(hashableFields).sortedHash()
75
+ const _hash = new XyoHasher(hashableFields).hash
76
76
 
77
77
  const ret = { ...hashableFields, _client: 'js', _hash, _signatures: this.signatures(_hash), _timestamp: Date.now() } as XyoBoundWitness
78
78
  if (this.config.inlinePayloads) {
@@ -60,7 +60,7 @@ class XyoBoundWitnessBodyValidator {
60
60
  const errors: Error[] = []
61
61
  const passedHashes = this.body.payload_hashes
62
62
  this.payloads?.forEach((payload, index) => {
63
- const calcHash = new XyoHasher(payload).sortedHash()
63
+ const calcHash = new XyoHasher(payload).hash
64
64
  const passedHash = passedHashes[index]
65
65
  if (calcHash !== passedHash) {
66
66
  errors.push(new Error(`hash mismatch [${calcHash} !== ${passedHash}]`))
@@ -21,8 +21,8 @@ export class XyoBoundWitnessMetaValidator {
21
21
 
22
22
  const hasher = new XyoHasher(this.bw)
23
23
 
24
- const bodyHash = hasher.sortedHash()
25
- if (bodyHash !== this.bw._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.sortedStringify()}]`))
24
+ const bodyHash = hasher.hash
25
+ if (bodyHash !== this.bw._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.bw._hash}] [sortedStringify: ${hasher.stringified}]`))
26
26
  return errors
27
27
  }
28
28
 
@@ -0,0 +1,37 @@
1
+ import shajs from 'sha.js'
2
+
3
+ import { removeEmptyFields } from './removeEmptyFields'
4
+ import { deepOmitUnderscoreFields } from './removeFields'
5
+ import { sortFields } from './sortFields'
6
+
7
+ export abstract class XyoAbstractHasher<T extends Record<string, unknown>> {
8
+ protected abstract get obj(): T
9
+
10
+ get hashFields() {
11
+ return removeEmptyFields(deepOmitUnderscoreFields(this.obj))
12
+ }
13
+
14
+ /** @deprecated use stringified instead */
15
+ public sortedStringify() {
16
+ return this.stringified
17
+ }
18
+
19
+ public get stringified() {
20
+ const sortedEntry = sortFields(this.hashFields)
21
+ return JSON.stringify(sortedEntry)
22
+ }
23
+
24
+ /** @deprecated use hash instead */
25
+ public sortedHash() {
26
+ return this.hash
27
+ }
28
+
29
+ public get hash() {
30
+ return this.sortedHashData().toString('hex')
31
+ }
32
+
33
+ private sortedHashData() {
34
+ const stringObject = this.stringified
35
+ return shajs('sha256').update(stringObject).digest()
36
+ }
37
+ }
@@ -1,30 +1,13 @@
1
- import shajs from 'sha.js'
1
+ import { XyoAbstractHasher } from './XyoAbstractHasher'
2
2
 
3
- import { removeEmptyFields } from './removeEmptyFields'
4
- import { deepOmitUnderscoreFields } from './removeFields'
5
- import { sortFields } from './sortFields'
6
-
7
- export class XyoHasher<T extends Record<string, unknown>> {
8
- public readonly obj: T
3
+ export class XyoHasher<T extends Record<string, unknown>> extends XyoAbstractHasher<T> {
4
+ private readonly memoryObj: T
9
5
  constructor(obj: T) {
10
- this.obj = obj
11
- }
12
-
13
- get hashFields() {
14
- return removeEmptyFields(deepOmitUnderscoreFields(this.obj))
15
- }
16
-
17
- public sortedStringify() {
18
- const sortedEntry = sortFields(this.hashFields)
19
- return JSON.stringify(sortedEntry)
20
- }
21
-
22
- public sortedHash() {
23
- return this.sortedHashData().toString('hex')
6
+ super()
7
+ this.memoryObj = obj
24
8
  }
25
9
 
26
- private sortedHashData() {
27
- const stringObject = this.sortedStringify()
28
- return shajs('sha256').update(stringObject).digest()
10
+ protected get obj() {
11
+ return this.memoryObj
29
12
  }
30
13
  }
@@ -1,4 +1,5 @@
1
1
  export * from './removeEmptyFields'
2
2
  export * from './removeFields'
3
3
  export * from './sortFields'
4
+ export * from './XyoAbstractHasher'
4
5
  export * from './XyoHasher'
@@ -35,7 +35,7 @@ export class XyoPayloadBuilder<T extends XyoPayload> {
35
35
 
36
36
  public build(): T {
37
37
  const hashableFields = this.hashableFields()
38
- const _hash = new XyoHasher(hashableFields).sortedHash()
38
+ const _hash = new XyoHasher(hashableFields).hash
39
39
  const _timestamp = Date.now()
40
40
  return { ...hashableFields, _client: 'js', _hash, _timestamp, schema: this._schema }
41
41
  }
@@ -14,7 +14,7 @@ class XyoPayloadMetaValidator {
14
14
  const errors: Error[] = []
15
15
  const wrapper = new XyoHasher(this.payload)
16
16
 
17
- const bodyHash = wrapper.sortedHash()
17
+ const bodyHash = wrapper.hash
18
18
  if (bodyHash !== this.payload._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.payload._hash}]`))
19
19
  return errors
20
20
  }
@@ -1,13 +1,17 @@
1
- import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoHasher } from '../../Hasher'
1
+ import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoAbstractHasher } from '../../Hasher'
2
2
  import { XyoPayload } from '../models'
3
3
 
4
- class XyoPayloadWrapper<T extends XyoPayload> extends XyoHasher<T> {
5
- public readonly payload: T
4
+ export class XyoPayloadWrapper<T extends XyoPayload> extends XyoAbstractHasher<T> {
5
+ public payload: T
6
6
  constructor(payload: T) {
7
- super(payload)
7
+ super()
8
8
  this.payload = payload
9
9
  }
10
10
 
11
+ protected get obj() {
12
+ return this.payload
13
+ }
14
+
11
15
  public get body() {
12
16
  return deepOmitUnderscoreFields(this.payload)
13
17
  }
@@ -16,5 +20,3 @@ class XyoPayloadWrapper<T extends XyoPayload> extends XyoHasher<T> {
16
20
  return deepPickUnderscoreFields(this.payload)
17
21
  }
18
22
  }
19
-
20
- export { XyoPayloadWrapper }
@@ -0,0 +1,7 @@
1
+ import { XyoPayload } from '../Payload'
2
+
3
+ export interface XyoQueryPayload extends XyoPayload {
4
+ budget?: number
5
+ maxFrequency?: 'once' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year'
6
+ minBid?: number
7
+ }
@@ -0,0 +1 @@
1
+ export * from './QueryPayload'
@@ -7,4 +7,5 @@ export interface XyoSchemaPayload extends XyoPayload {
7
7
  $id?: string
8
8
  [key: string]: unknown
9
9
  }
10
+ extends?: string
10
11
  }
package/src/shared.ts CHANGED
@@ -4,6 +4,7 @@ export * from './Huri'
4
4
  export * from './lib'
5
5
  export * from './models'
6
6
  export * from './Payload'
7
+ export * from './Query'
7
8
  export * from './Schema'
8
9
  export * from './SchemaNameValidator'
9
10
  export * from './Wallet'