@xyo-network/payload 2.21.11

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 (179) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +79 -0
  3. package/babel.config.json +5 -0
  4. package/dist/cjs/Builder/Builder.d.ts +15 -0
  5. package/dist/cjs/Builder/Builder.js +31 -0
  6. package/dist/cjs/Builder/Builder.js.map +1 -0
  7. package/dist/cjs/Builder/index.d.ts +1 -0
  8. package/dist/cjs/Builder/index.js +5 -0
  9. package/dist/cjs/Builder/index.js.map +1 -0
  10. package/dist/cjs/Huri/Huri.d.ts +29 -0
  11. package/dist/cjs/Huri/Huri.js +111 -0
  12. package/dist/cjs/Huri/Huri.js.map +1 -0
  13. package/dist/cjs/Huri/index.d.ts +1 -0
  14. package/dist/cjs/Huri/index.js +5 -0
  15. package/dist/cjs/Huri/index.js.map +1 -0
  16. package/dist/cjs/Query/QueryPayload.d.ts +11 -0
  17. package/dist/cjs/Query/QueryPayload.js +3 -0
  18. package/dist/cjs/Query/QueryPayload.js.map +1 -0
  19. package/dist/cjs/Query/index.d.ts +1 -0
  20. package/dist/cjs/Query/index.js +5 -0
  21. package/dist/cjs/Query/index.js.map +1 -0
  22. package/dist/cjs/Schema/Payload.d.ts +10 -0
  23. package/dist/cjs/Schema/Payload.js +3 -0
  24. package/dist/cjs/Schema/Payload.js.map +1 -0
  25. package/dist/cjs/Schema/index.d.ts +1 -0
  26. package/dist/cjs/Schema/index.js +5 -0
  27. package/dist/cjs/Schema/index.js.map +1 -0
  28. package/dist/cjs/SchemaNameValidator.d.ts +73 -0
  29. package/dist/cjs/SchemaNameValidator.js +135 -0
  30. package/dist/cjs/SchemaNameValidator.js.map +1 -0
  31. package/dist/cjs/Test/index.d.ts +1 -0
  32. package/dist/cjs/Test/index.js +5 -0
  33. package/dist/cjs/Test/index.js.map +1 -0
  34. package/dist/cjs/Test/testPayload.d.ts +5 -0
  35. package/dist/cjs/Test/testPayload.js +19 -0
  36. package/dist/cjs/Test/testPayload.js.map +1 -0
  37. package/dist/cjs/Validator/BodyValidator.d.ts +9 -0
  38. package/dist/cjs/Validator/BodyValidator.js +29 -0
  39. package/dist/cjs/Validator/BodyValidator.js.map +1 -0
  40. package/dist/cjs/Validator/MetaValidator.d.ts +8 -0
  41. package/dist/cjs/Validator/MetaValidator.js +34 -0
  42. package/dist/cjs/Validator/MetaValidator.js.map +1 -0
  43. package/dist/cjs/Validator/Validator.d.ts +10 -0
  44. package/dist/cjs/Validator/Validator.js +20 -0
  45. package/dist/cjs/Validator/Validator.js.map +1 -0
  46. package/dist/cjs/Validator/index.d.ts +3 -0
  47. package/dist/cjs/Validator/index.js +7 -0
  48. package/dist/cjs/Validator/index.js.map +1 -0
  49. package/dist/cjs/Wrapper/Validator.d.ts +8 -0
  50. package/dist/cjs/Wrapper/Validator.js +17 -0
  51. package/dist/cjs/Wrapper/Validator.js.map +1 -0
  52. package/dist/cjs/Wrapper/Wrapper.d.ts +9 -0
  53. package/dist/cjs/Wrapper/Wrapper.js +27 -0
  54. package/dist/cjs/Wrapper/Wrapper.js.map +1 -0
  55. package/dist/cjs/Wrapper/index.d.ts +2 -0
  56. package/dist/cjs/Wrapper/index.js +6 -0
  57. package/dist/cjs/Wrapper/index.js.map +1 -0
  58. package/dist/cjs/index.d.ts +9 -0
  59. package/dist/cjs/index.js +13 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/cjs/isXyoPayloadOfSchemaType.d.ts +4 -0
  62. package/dist/cjs/isXyoPayloadOfSchemaType.js +9 -0
  63. package/dist/cjs/isXyoPayloadOfSchemaType.js.map +1 -0
  64. package/dist/cjs/models/Base.d.ts +6 -0
  65. package/dist/cjs/models/Base.js +3 -0
  66. package/dist/cjs/models/Base.js.map +1 -0
  67. package/dist/cjs/models/Meta.d.ts +24 -0
  68. package/dist/cjs/models/Meta.js +3 -0
  69. package/dist/cjs/models/Meta.js.map +1 -0
  70. package/dist/cjs/models/XyoPayload.d.ts +2 -0
  71. package/dist/cjs/models/XyoPayload.js +3 -0
  72. package/dist/cjs/models/XyoPayload.js.map +1 -0
  73. package/dist/cjs/models/index.d.ts +3 -0
  74. package/dist/cjs/models/index.js +7 -0
  75. package/dist/cjs/models/index.js.map +1 -0
  76. package/dist/docs.json +7 -0
  77. package/dist/esm/Builder/Builder.d.ts +15 -0
  78. package/dist/esm/Builder/Builder.js +30 -0
  79. package/dist/esm/Builder/Builder.js.map +1 -0
  80. package/dist/esm/Builder/index.d.ts +1 -0
  81. package/dist/esm/Builder/index.js +2 -0
  82. package/dist/esm/Builder/index.js.map +1 -0
  83. package/dist/esm/Huri/Huri.d.ts +29 -0
  84. package/dist/esm/Huri/Huri.js +99 -0
  85. package/dist/esm/Huri/Huri.js.map +1 -0
  86. package/dist/esm/Huri/index.d.ts +1 -0
  87. package/dist/esm/Huri/index.js +2 -0
  88. package/dist/esm/Huri/index.js.map +1 -0
  89. package/dist/esm/Query/QueryPayload.d.ts +11 -0
  90. package/dist/esm/Query/QueryPayload.js +2 -0
  91. package/dist/esm/Query/QueryPayload.js.map +1 -0
  92. package/dist/esm/Query/index.d.ts +1 -0
  93. package/dist/esm/Query/index.js +2 -0
  94. package/dist/esm/Query/index.js.map +1 -0
  95. package/dist/esm/Schema/Payload.d.ts +10 -0
  96. package/dist/esm/Schema/Payload.js +2 -0
  97. package/dist/esm/Schema/Payload.js.map +1 -0
  98. package/dist/esm/Schema/index.d.ts +1 -0
  99. package/dist/esm/Schema/index.js +2 -0
  100. package/dist/esm/Schema/index.js.map +1 -0
  101. package/dist/esm/SchemaNameValidator.d.ts +73 -0
  102. package/dist/esm/SchemaNameValidator.js +117 -0
  103. package/dist/esm/SchemaNameValidator.js.map +1 -0
  104. package/dist/esm/Test/index.d.ts +1 -0
  105. package/dist/esm/Test/index.js +2 -0
  106. package/dist/esm/Test/index.js.map +1 -0
  107. package/dist/esm/Test/testPayload.d.ts +5 -0
  108. package/dist/esm/Test/testPayload.js +15 -0
  109. package/dist/esm/Test/testPayload.js.map +1 -0
  110. package/dist/esm/Validator/BodyValidator.d.ts +9 -0
  111. package/dist/esm/Validator/BodyValidator.js +24 -0
  112. package/dist/esm/Validator/BodyValidator.js.map +1 -0
  113. package/dist/esm/Validator/MetaValidator.d.ts +8 -0
  114. package/dist/esm/Validator/MetaValidator.js +31 -0
  115. package/dist/esm/Validator/MetaValidator.js.map +1 -0
  116. package/dist/esm/Validator/Validator.d.ts +10 -0
  117. package/dist/esm/Validator/Validator.js +16 -0
  118. package/dist/esm/Validator/Validator.js.map +1 -0
  119. package/dist/esm/Validator/index.d.ts +3 -0
  120. package/dist/esm/Validator/index.js +4 -0
  121. package/dist/esm/Validator/index.js.map +1 -0
  122. package/dist/esm/Wrapper/Validator.d.ts +8 -0
  123. package/dist/esm/Wrapper/Validator.js +13 -0
  124. package/dist/esm/Wrapper/Validator.js.map +1 -0
  125. package/dist/esm/Wrapper/Wrapper.d.ts +9 -0
  126. package/dist/esm/Wrapper/Wrapper.js +20 -0
  127. package/dist/esm/Wrapper/Wrapper.js.map +1 -0
  128. package/dist/esm/Wrapper/index.d.ts +2 -0
  129. package/dist/esm/Wrapper/index.js +3 -0
  130. package/dist/esm/Wrapper/index.js.map +1 -0
  131. package/dist/esm/index.d.ts +9 -0
  132. package/dist/esm/index.js +10 -0
  133. package/dist/esm/index.js.map +1 -0
  134. package/dist/esm/isXyoPayloadOfSchemaType.d.ts +4 -0
  135. package/dist/esm/isXyoPayloadOfSchemaType.js +5 -0
  136. package/dist/esm/isXyoPayloadOfSchemaType.js.map +1 -0
  137. package/dist/esm/models/Base.d.ts +6 -0
  138. package/dist/esm/models/Base.js +2 -0
  139. package/dist/esm/models/Base.js.map +1 -0
  140. package/dist/esm/models/Meta.d.ts +24 -0
  141. package/dist/esm/models/Meta.js +2 -0
  142. package/dist/esm/models/Meta.js.map +1 -0
  143. package/dist/esm/models/XyoPayload.d.ts +2 -0
  144. package/dist/esm/models/XyoPayload.js +2 -0
  145. package/dist/esm/models/XyoPayload.js.map +1 -0
  146. package/dist/esm/models/index.d.ts +3 -0
  147. package/dist/esm/models/index.js +4 -0
  148. package/dist/esm/models/index.js.map +1 -0
  149. package/jest.config.cjs +25 -0
  150. package/package.json +56 -0
  151. package/src/Builder/Builder.spec.ts +37 -0
  152. package/src/Builder/Builder.ts +43 -0
  153. package/src/Builder/index.ts +1 -0
  154. package/src/Huri/Huri.spec.ts +92 -0
  155. package/src/Huri/Huri.ts +155 -0
  156. package/src/Huri/index.ts +1 -0
  157. package/src/Query/QueryPayload.ts +15 -0
  158. package/src/Query/index.ts +1 -0
  159. package/src/Schema/Payload.ts +11 -0
  160. package/src/Schema/index.ts +1 -0
  161. package/src/SchemaNameValidator.ts +128 -0
  162. package/src/Test/index.ts +1 -0
  163. package/src/Test/testPayload.ts +19 -0
  164. package/src/Validator/BodyValidator.spec.ts +11 -0
  165. package/src/Validator/BodyValidator.ts +28 -0
  166. package/src/Validator/MetaValidator.spec.ts +11 -0
  167. package/src/Validator/MetaValidator.ts +34 -0
  168. package/src/Validator/Validator.spec.ts +63 -0
  169. package/src/Validator/Validator.ts +21 -0
  170. package/src/Validator/index.ts +3 -0
  171. package/src/Wrapper/Validator.ts +17 -0
  172. package/src/Wrapper/Wrapper.ts +25 -0
  173. package/src/Wrapper/index.ts +2 -0
  174. package/src/index.ts +9 -0
  175. package/src/isXyoPayloadOfSchemaType.ts +8 -0
  176. package/src/models/Base.ts +6 -0
  177. package/src/models/Meta.ts +28 -0
  178. package/src/models/XyoPayload.ts +3 -0
  179. package/src/models/index.ts +3 -0
@@ -0,0 +1,29 @@
1
+ import { XyoDataLike } from '@xyo-network/core';
2
+ import { XyoPayload } from '../models';
3
+ export declare type XyoObjectCategory = 'block' | 'payload';
4
+ export declare type HuriFetchFunction = (huri: Huri) => Promise<XyoPayload | undefined>;
5
+ export interface HuriOptions {
6
+ archivistUri?: string;
7
+ }
8
+ export interface XyoFetchedPayload<T extends XyoPayload = XyoPayload> {
9
+ payload: T;
10
+ huri?: Huri;
11
+ }
12
+ export declare class Huri {
13
+ originalHref: string;
14
+ protocol?: string;
15
+ archivist?: string;
16
+ archive?: string;
17
+ hash: string;
18
+ private isHuri;
19
+ constructor(huri: XyoDataLike | Huri, { archivistUri }?: HuriOptions);
20
+ private parsePath;
21
+ private validateParse;
22
+ get href(): string;
23
+ toString(): string;
24
+ fetch(): Promise<XyoPayload<object> | undefined>;
25
+ static fetch(huri: Huri): Promise<XyoPayload | undefined>;
26
+ private static parseProtocol;
27
+ private static parsePath;
28
+ static isHuri(value: unknown): Huri | undefined;
29
+ }
@@ -0,0 +1,99 @@
1
+ import { assertEx } from '@xylabs/sdk-js';
2
+ import { XyoAddressValue } from '@xyo-network/account';
3
+ import axios from 'axios';
4
+ export class Huri {
5
+ constructor(huri, { archivistUri } = {}) {
6
+ this.isHuri = true;
7
+ const huriString = (Huri.isHuri(huri)?.href ?? typeof huri === 'string') ? huri : new XyoAddressValue(huri).hex;
8
+ this.originalHref = huriString;
9
+ const protocol = Huri.parseProtocol(huriString);
10
+ this.protocol = protocol ?? 'https';
11
+ const path = assertEx(Huri.parsePath(huriString), 'Missing path');
12
+ this.hash = this.parsePath(path, protocol !== undefined);
13
+ //if archivistUri sent, overwrite protocol and archivist
14
+ if (archivistUri) {
15
+ const archivistUriParts = archivistUri.split('://');
16
+ this.protocol = archivistUriParts[0];
17
+ this.archivist = archivistUriParts[1];
18
+ }
19
+ this.validateParse();
20
+ }
21
+ parsePath(path, hasProtocol) {
22
+ const pathParts = path.split('/');
23
+ //if the protocal was found, then there is not allowed to be a leading /
24
+ assertEx(!(hasProtocol && pathParts[0].length === 0), 'Invalid protocol seperator');
25
+ //remove leading '/' if needed
26
+ pathParts[0].length === 0 ? pathParts.shift() : null;
27
+ //hash is assumed to be the last part
28
+ const hash = assertEx(pathParts.pop(), 'No hash specified');
29
+ //archivist is assumed to be the first part
30
+ this.archivist = pathParts.shift() ?? 'api.archivist.xyo.network';
31
+ //the archive is whatever is left
32
+ this.archive = pathParts.pop();
33
+ //after we pull off all the path parts, there should be nothing left
34
+ assertEx(pathParts.length === 0, 'Too many path parts');
35
+ return hash;
36
+ }
37
+ validateParse() {
38
+ //the archivist should not be zero length
39
+ assertEx(this.archivist?.length !== 0, 'Invalid archivist length');
40
+ //the archivist should not be zero length (can be undefined)
41
+ assertEx(this.archive?.length !== 0, 'Invalid archive length');
42
+ //the archive should not be set if the archivist is not set
43
+ assertEx(!(this.archive && !this.archivist), 'If specifying archive, archivist is also required');
44
+ }
45
+ /*
46
+ The full href or the hash
47
+ */
48
+ get href() {
49
+ const parts = [];
50
+ if (this.protocol) {
51
+ parts.push(`${this.protocol}:/`);
52
+ }
53
+ if (this.archive) {
54
+ parts.push(`${this.archive}`);
55
+ }
56
+ if (this.archivist) {
57
+ parts.push(`${this.archivist}`);
58
+ }
59
+ parts.push(this.hash);
60
+ return parts.join('/');
61
+ }
62
+ toString() {
63
+ return this.href;
64
+ }
65
+ async fetch() {
66
+ return await Huri.fetch(this);
67
+ }
68
+ static async fetch(huri) {
69
+ return (await axios.get(huri.href)).data;
70
+ }
71
+ static parseProtocol(huri) {
72
+ const protocolSplit = huri.split('//');
73
+ assertEx(protocolSplit.length <= 2, `Invalid second protocol [${protocolSplit[2]}]`);
74
+ const rawProtocol = protocolSplit.length === 2 ? protocolSplit.shift() : undefined;
75
+ if (rawProtocol) {
76
+ const protocolParts = rawProtocol?.split(':');
77
+ assertEx(protocolParts.length === 2, `Invalid protocol format [${rawProtocol}]`);
78
+ assertEx(protocolParts[1].length === 0, `Invalid protocol format (post :) [${rawProtocol}]`);
79
+ return protocolParts.shift();
80
+ }
81
+ }
82
+ static parsePath(huri) {
83
+ const protocolSplit = huri.split('//');
84
+ assertEx(protocolSplit.length <= 2, `Invalid format [${huri}]`);
85
+ if (protocolSplit.length === 1) {
86
+ return huri;
87
+ }
88
+ if (protocolSplit.length === 2) {
89
+ return protocolSplit[1];
90
+ }
91
+ }
92
+ static isHuri(value) {
93
+ if (typeof value === 'object') {
94
+ return value.isHuri ? value : undefined;
95
+ }
96
+ return undefined;
97
+ }
98
+ }
99
+ //# sourceMappingURL=Huri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Huri.js","sourceRoot":"","sources":["../../../src/Huri/Huri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,KAAK,MAAM,OAAO,CAAA;AA2BzB,MAAM,OAAO,IAAI;IASf,YAAY,IAAwB,EAAE,EAAE,YAAY,KAAkB,EAAE;QAFhE,WAAM,GAAG,IAAI,CAAA;QAGnB,MAAM,UAAU,GAAG,CAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAC,CAAC,CAAE,IAAe,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,IAAmB,CAAC,CAAC,GAAG,CAAA;QACxI,IAAI,CAAC,YAAY,GAAG,UAAU,CAAA;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAA;QAEnC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAA;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAA;QAExD,wDAAwD;QACxD,IAAI,YAAY,EAAE;YAChB,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACnD,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;SACtC;QAED,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAEO,SAAS,CAAC,IAAY,EAAE,WAAoB;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEjC,wEAAwE;QACxE,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAA;QAEnF,8BAA8B;QAC9B,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAEpD,qCAAqC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAE3D,2CAA2C;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,2BAA2B,CAAA;QAEjE,iCAAiC;QACjC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,CAAA;QAE9B,oEAAoE;QACpE,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAEvD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,aAAa;QACnB,yCAAyC;QACzC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,EAAE,0BAA0B,CAAC,CAAA;QAElE,4DAA4D;QAC5D,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,EAAE,wBAAwB,CAAC,CAAA;QAE9D,2DAA2D;QAC3D,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,mDAAmD,CAAC,CAAA;IACnG,CAAC;IAED;;MAEE;IAEF,IAAW,IAAI;QACb,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA;SACjC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;SAC9B;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;SAChC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAU;QAC3B,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAa,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACtD,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAY;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtC,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE,4BAA4B,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACpF,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QAClF,IAAI,WAAW,EAAE;YACf,MAAM,aAAa,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAC7C,QAAQ,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,4BAA4B,WAAW,GAAG,CAAC,CAAA;YAChF,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,qCAAqC,WAAW,GAAG,CAAC,CAAA;YAC5F,OAAO,aAAa,CAAC,KAAK,EAAE,CAAA;SAC7B;IACH,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,IAAY;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtC,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE,mBAAmB,IAAI,GAAG,CAAC,CAAA;QAC/D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAA;SACZ;QACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAA;SACxB;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAAc;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAQ,KAAc,CAAC,MAAM,CAAC,CAAC,CAAE,KAAc,CAAC,CAAC,CAAC,SAAS,CAAA;SAC5D;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export * from './Huri';
@@ -0,0 +1,2 @@
1
+ export * from './Huri';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Huri/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { XyoPayload } from '../models';
2
+ export interface XyoQueryPayload extends XyoPayload {
3
+ /** @field The preferred schema to use for the answer */
4
+ targetSchema?: string;
5
+ /** @field The maximum XYO that can be spent executing the query */
6
+ budget?: number;
7
+ /** @field The frequency on which this query can be rerun */
8
+ maxFrequency?: 'once' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';
9
+ /** @field The starting point for the bidding on the query */
10
+ minBid?: number;
11
+ }
@@ -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"}
@@ -0,0 +1,10 @@
1
+ import { XyoPayload } from '../models';
2
+ export declare type XyoSchemaPayload = XyoPayload<{
3
+ /** @deprecated use definition.$id instead */
4
+ name?: string;
5
+ definition: {
6
+ $id?: string;
7
+ [key: string]: unknown;
8
+ };
9
+ extends?: string;
10
+ }>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Payload.js","sourceRoot":"","sources":["../../../src/Schema/Payload.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './Payload';
@@ -0,0 +1,2 @@
1
+ export * from './Payload';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Validates a XYO schema structure and existence
3
+ */
4
+ export declare class XyoSchemaNameValidator {
5
+ schema?: string;
6
+ constructor(schema?: string);
7
+ private _parts?;
8
+ /**
9
+ * The schema converted into a string array split on '.'
10
+ *
11
+ * @returns string[]
12
+ */
13
+ get parts(): string[] | undefined;
14
+ /**
15
+ * Levels in the schema
16
+ *
17
+ * @returns number
18
+ */
19
+ get levels(): number | undefined;
20
+ /**
21
+ * Checks whether the schema is all lowercase
22
+ *
23
+ * @returns boolean
24
+ */
25
+ get isLowercase(): boolean;
26
+ /**
27
+ *
28
+ * Get a domain for the schema at a certain level
29
+ *
30
+ * @param level - Zero based level to check
31
+ * @returns string
32
+ */
33
+ private domainLevel;
34
+ private _rootDomain?;
35
+ /**
36
+ * The rootDomain is the first two levels of the schema, in reverse order
37
+ * This can be used to determine who 'owns' that schema, based on domain
38
+ * registration
39
+ *
40
+ * @returns string
41
+ */
42
+ get rootDomain(): string | undefined;
43
+ /**
44
+ * Checks if the root domain validates via DNS resolution
45
+ *
46
+ * @returns boolean
47
+ */
48
+ rootDomainExists(): Promise<boolean>;
49
+ /**
50
+ * Determines how many levels of the schema's reverse domain
51
+ * pass DNS resolution
52
+ *
53
+ * @returns number (0 if none exist)
54
+ */
55
+ domainExistanceDepth(): Promise<number>;
56
+ /**
57
+ * Run all the validations
58
+ * @param checkExistance - boolean
59
+ * @returns Error[]
60
+ */
61
+ allDynamic(): Promise<Error[]>;
62
+ /**
63
+ * Run all static validations
64
+ * @returns Error[]
65
+ */
66
+ all(): Error[];
67
+ }
68
+ /** @deprectated use XyoSchemaNameValidator instead */
69
+ export declare class SchemaValidator extends XyoSchemaNameValidator {
70
+ }
71
+ /** @deprectated use XyoSchemaNameValidator instead */
72
+ export declare class XyoSchemaValidator extends XyoSchemaNameValidator {
73
+ }
@@ -0,0 +1,117 @@
1
+ import { domainExists } from '@xyo-network/core';
2
+ /**
3
+ * Validates a XYO schema structure and existence
4
+ */
5
+ export class XyoSchemaNameValidator {
6
+ constructor(schema) {
7
+ this.schema = schema;
8
+ }
9
+ /**
10
+ * The schema converted into a string array split on '.'
11
+ *
12
+ * @returns string[]
13
+ */
14
+ get parts() {
15
+ this._parts = this._parts ?? this.schema?.split('.');
16
+ return this._parts;
17
+ }
18
+ /**
19
+ * Levels in the schema
20
+ *
21
+ * @returns number
22
+ */
23
+ get levels() {
24
+ return this.parts?.length;
25
+ }
26
+ /**
27
+ * Checks whether the schema is all lowercase
28
+ *
29
+ * @returns boolean
30
+ */
31
+ get isLowercase() {
32
+ return this.schema === this.schema?.toLowerCase();
33
+ }
34
+ /**
35
+ *
36
+ * Get a domain for the schema at a certain level
37
+ *
38
+ * @param level - Zero based level to check
39
+ * @returns string
40
+ */
41
+ domainLevel(level) {
42
+ return this.parts
43
+ ?.slice(0, level + 1)
44
+ .reverse()
45
+ .join('.');
46
+ }
47
+ /**
48
+ * The rootDomain is the first two levels of the schema, in reverse order
49
+ * This can be used to determine who 'owns' that schema, based on domain
50
+ * registration
51
+ *
52
+ * @returns string
53
+ */
54
+ get rootDomain() {
55
+ this._rootDomain = this._rootDomain ?? this.domainLevel(1);
56
+ return this._rootDomain;
57
+ }
58
+ /**
59
+ * Checks if the root domain validates via DNS resolution
60
+ *
61
+ * @returns boolean
62
+ */
63
+ async rootDomainExists() {
64
+ return await domainExists(this.rootDomain);
65
+ }
66
+ /**
67
+ * Determines how many levels of the schema's reverse domain
68
+ * pass DNS resolution
69
+ *
70
+ * @returns number (0 if none exist)
71
+ */
72
+ async domainExistanceDepth() {
73
+ const levels = this.levels ?? 0;
74
+ let level = 0;
75
+ while (level < levels) {
76
+ if (!(await domainExists(this.domainLevel(level)))) {
77
+ break;
78
+ }
79
+ level += 1;
80
+ }
81
+ return level;
82
+ }
83
+ /**
84
+ * Run all the validations
85
+ * @param checkExistance - boolean
86
+ * @returns Error[]
87
+ */
88
+ async allDynamic() {
89
+ const errors = [];
90
+ if ((this.schema?.length ?? 0) === 0)
91
+ errors.push(Error('schema missing'));
92
+ else if (!(await this.rootDomainExists()))
93
+ errors.push(Error(`schema root domain must exist [${this.rootDomain}]`));
94
+ return errors;
95
+ }
96
+ /**
97
+ * Run all static validations
98
+ * @returns Error[]
99
+ */
100
+ all() {
101
+ const errors = [];
102
+ if ((this.schema?.length ?? 0) === 0)
103
+ errors.push(Error('schema missing'));
104
+ else if ((this.levels ?? 0) < 3)
105
+ errors.push(Error(`schema levels < 3 [${this.levels}, ${this.schema}]`));
106
+ else if (!this.isLowercase)
107
+ errors.push(Error(`schema not lowercase [${this.schema}]`));
108
+ return errors;
109
+ }
110
+ }
111
+ /** @deprectated use XyoSchemaNameValidator instead */
112
+ export class SchemaValidator extends XyoSchemaNameValidator {
113
+ }
114
+ /** @deprectated use XyoSchemaNameValidator instead */
115
+ export class XyoSchemaValidator extends XyoSchemaNameValidator {
116
+ }
117
+ //# sourceMappingURL=SchemaNameValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaNameValidator.js","sourceRoot":"","sources":["../../src/SchemaNameValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './testPayload';
@@ -0,0 +1,2 @@
1
+ export * from './testPayload';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Test/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { WithAdditional } from '@xyo-network/core';
2
+ import { XyoPayloadWithMeta } from '../models';
3
+ declare const testSchema = "network.xyo.test";
4
+ declare const testPayload: WithAdditional<XyoPayloadWithMeta>;
5
+ export { testPayload, testSchema };
@@ -0,0 +1,15 @@
1
+ const testSchema = 'network.xyo.test';
2
+ const testPayload = {
3
+ _archive: 'test',
4
+ _hash: '20e14207f952a09f767ff614a648546c037fe524ace0bfe55db31f818aff1f1c',
5
+ _timestamp: 1609459255555,
6
+ numberField: 1,
7
+ objectField: {
8
+ numberField: 1,
9
+ stringField: 'stringValue',
10
+ },
11
+ schema: testSchema,
12
+ stringField: 'stringValue',
13
+ };
14
+ export { testPayload, testSchema };
15
+ //# sourceMappingURL=testPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testPayload.js","sourceRoot":"","sources":["../../../src/Test/testPayload.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,GAAG,kBAAkB,CAAA;AACrC,MAAM,WAAW,GAAuC;IACtD,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,kEAAkE;IACzE,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,CAAC;IACd,WAAW,EAAE;QACX,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,aAAa;KAC3B;IACD,MAAM,EAAE,UAAU;IAClB,WAAW,EAAE,aAAa;CAC3B,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { XyoValidator } from '@xyo-network/core';
2
+ import { XyoPayload } from '../models';
3
+ import { XyoSchemaNameValidator } from '../SchemaNameValidator';
4
+ export declare class XyoPayloadBodyValidator<T extends XyoPayload = XyoPayload> extends XyoValidator<T> {
5
+ private _schemaValidator?;
6
+ get schemaValidator(): XyoSchemaNameValidator;
7
+ schemaName(): Error[];
8
+ validate(): Error[];
9
+ }
@@ -0,0 +1,24 @@
1
+ import { XyoValidator } from '@xyo-network/core';
2
+ import { XyoSchemaNameValidator } from '../SchemaNameValidator';
3
+ export class XyoPayloadBodyValidator extends XyoValidator {
4
+ get schemaValidator() {
5
+ this._schemaValidator = this._schemaValidator ?? new XyoSchemaNameValidator(this.obj.schema ?? '');
6
+ return this._schemaValidator;
7
+ }
8
+ schemaName() {
9
+ const errors = [];
10
+ if (this.obj.schema === undefined) {
11
+ errors.push(Error('schema missing'));
12
+ }
13
+ else {
14
+ errors.push(...this.schemaValidator.all());
15
+ }
16
+ return errors;
17
+ }
18
+ validate() {
19
+ const errors = [];
20
+ errors.push(...this.schemaName());
21
+ return errors;
22
+ }
23
+ }
24
+ //# sourceMappingURL=BodyValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BodyValidator.js","sourceRoot":"","sources":["../../../src/Validator/BodyValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,OAAO,uBAA2D,SAAQ,YAAe;IAE7F,IAAI,eAAe;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QAClG,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;IAEM,UAAU;QACf,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;SACrC;aAAM;YACL,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAA;SAC3C;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,QAAQ;QACb,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QACjC,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { XyoValidator } from '@xyo-network/core';
2
+ import { XyoPayloadMeta } from '../models';
3
+ declare class XyoPayloadMetaValidator<T extends XyoPayloadMeta = XyoPayloadMeta> extends XyoValidator<T> {
4
+ hash(): Error[];
5
+ timestamp(): Error[];
6
+ validate(): Error[];
7
+ }
8
+ export { XyoPayloadMetaValidator };
@@ -0,0 +1,31 @@
1
+ import { XyoHasher, XyoValidator } from '@xyo-network/core';
2
+ const MIN_ALLOWED_TIMESTAMP = 1609459200000;
3
+ const MAX_ALLOWED_TIMESTAMP = 4102444800000;
4
+ class XyoPayloadMetaValidator extends XyoValidator {
5
+ hash() {
6
+ const errors = [];
7
+ const wrapper = new XyoHasher(this.obj);
8
+ const bodyHash = wrapper.hash;
9
+ if (bodyHash !== this.obj._hash)
10
+ errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.obj._hash}]`));
11
+ return errors;
12
+ }
13
+ timestamp() {
14
+ const errors = [];
15
+ const { _timestamp } = this.obj;
16
+ if (_timestamp === undefined)
17
+ errors.push(new Error('Missing _timestamp'));
18
+ else if (_timestamp < MIN_ALLOWED_TIMESTAMP)
19
+ errors.push(new Error('_timestamp is before year 2021'));
20
+ else if (_timestamp > MAX_ALLOWED_TIMESTAMP)
21
+ errors.push(new Error('_timestamp is after year 2100'));
22
+ return errors;
23
+ }
24
+ validate() {
25
+ const errors = [];
26
+ errors.push(...this.hash(), ...this.timestamp());
27
+ return errors;
28
+ }
29
+ }
30
+ export { XyoPayloadMetaValidator };
31
+ //# sourceMappingURL=MetaValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaValidator.js","sourceRoot":"","sources":["../../../src/Validator/MetaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAI3D,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAC3C,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAE3C,MAAM,uBAAmE,SAAQ,YAAe;IACvF,IAAI;QACT,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAA;QAC7B,IAAI,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oCAAoC,QAAQ,aAAa,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QACnI,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,CAAA;QAC/B,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,QAAQ;QACb,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"}
@@ -0,0 +1,10 @@
1
+ import { XyoValidator } from '@xyo-network/core';
2
+ import { XyoPayloadWithMeta } from '../models';
3
+ import { XyoPayloadBodyValidator } from './BodyValidator';
4
+ import { XyoPayloadMetaValidator } from './MetaValidator';
5
+ export declare class XyoPayloadValidator<T extends XyoPayloadWithMeta = XyoPayloadWithMeta> extends XyoValidator<T> {
6
+ body: XyoPayloadBodyValidator;
7
+ meta: XyoPayloadMetaValidator;
8
+ constructor(payload: T);
9
+ validate(): Error[];
10
+ }
@@ -0,0 +1,16 @@
1
+ import { XyoValidator } from '@xyo-network/core';
2
+ import { XyoPayloadBodyValidator } from './BodyValidator';
3
+ import { XyoPayloadMetaValidator } from './MetaValidator';
4
+ export class XyoPayloadValidator extends XyoValidator {
5
+ constructor(payload) {
6
+ super(payload);
7
+ this.body = new XyoPayloadBodyValidator(payload);
8
+ this.meta = new XyoPayloadMetaValidator(payload);
9
+ }
10
+ validate() {
11
+ const errors = [];
12
+ errors.push(...this.body.validate());
13
+ return errors;
14
+ }
15
+ }
16
+ //# sourceMappingURL=Validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../src/Validator/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,MAAM,OAAO,mBAAuE,SAAQ,YAAe;IAGzG,YAAY,OAAU;QACpB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAClD,CAAC;IAEM,QAAQ;QACb,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpC,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export * from './BodyValidator';
2
+ export * from './MetaValidator';
3
+ export * from './Validator';
@@ -0,0 +1,4 @@
1
+ export * from './BodyValidator';
2
+ export * from './MetaValidator';
3
+ export * from './Validator';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validator/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { XyoValidator } from '@xyo-network/core';
2
+ import { XyoPayloadWithMeta } from '../models';
3
+ import { XyoPayloadValidator } from '../Validator';
4
+ import { XyoPayloadWrapper } from './Wrapper';
5
+ export declare class XyoPayloadWrapperValidator<T extends XyoPayloadWrapper<XyoPayloadWithMeta> = XyoPayloadWrapper<XyoPayloadWithMeta>> extends XyoValidator<T> {
6
+ get payload(): XyoPayloadValidator<XyoPayloadWithMeta<unknown>>;
7
+ validate(): Error[];
8
+ }
@@ -0,0 +1,13 @@
1
+ import { XyoValidator } from '@xyo-network/core';
2
+ import { XyoPayloadValidator } from '../Validator';
3
+ export class XyoPayloadWrapperValidator extends XyoValidator {
4
+ get payload() {
5
+ return new XyoPayloadValidator(this.obj.body);
6
+ }
7
+ validate() {
8
+ const errors = [];
9
+ errors.push(...this.payload.validate());
10
+ return errors;
11
+ }
12
+ }
13
+ //# sourceMappingURL=Validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../../src/Wrapper/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,MAAM,OAAO,0BAAoH,SAAQ,YAAe;IACtJ,IAAW,OAAO;QAChB,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC;IAEM,QAAQ;QACb,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvC,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { XyoDataLike, XyoHasher } from '@xyo-network/core';
2
+ import { Huri } from '../Huri';
3
+ import { XyoPayload } from '../models';
4
+ export declare class XyoPayloadWrapper<T extends XyoPayload> extends XyoHasher<T> {
5
+ get payload(): T;
6
+ get body(): T;
7
+ get meta(): T;
8
+ static load(address: XyoDataLike | Huri): Promise<XyoPayloadWrapper<XyoPayload<object>> | undefined>;
9
+ }
@@ -0,0 +1,20 @@
1
+ import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoHasher } from '@xyo-network/core';
2
+ import { Huri } from '../Huri';
3
+ export class XyoPayloadWrapper extends XyoHasher {
4
+ get payload() {
5
+ return this.obj;
6
+ }
7
+ get body() {
8
+ return deepOmitUnderscoreFields(this.obj);
9
+ }
10
+ get meta() {
11
+ return deepPickUnderscoreFields(this.obj);
12
+ }
13
+ static async load(address) {
14
+ const payload = await new Huri(address).fetch();
15
+ if (payload) {
16
+ return new XyoPayloadWrapper(payload);
17
+ }
18
+ }
19
+ }
20
+ //# sourceMappingURL=Wrapper.js.map