@xyo-network/boundwitness 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 (178) 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 +23 -0
  5. package/dist/cjs/Builder/Builder.js +68 -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/Test/index.d.ts +1 -0
  11. package/dist/cjs/Test/index.js +5 -0
  12. package/dist/cjs/Test/index.js.map +1 -0
  13. package/dist/cjs/Test/testBoundWitness.d.ts +3 -0
  14. package/dist/cjs/Test/testBoundWitness.js +17 -0
  15. package/dist/cjs/Test/testBoundWitness.js.map +1 -0
  16. package/dist/cjs/Validator/BodyValidator.d.ts +17 -0
  17. package/dist/cjs/Validator/BodyValidator.js +94 -0
  18. package/dist/cjs/Validator/BodyValidator.js.map +1 -0
  19. package/dist/cjs/Validator/MetaValidator.d.ts +13 -0
  20. package/dist/cjs/Validator/MetaValidator.js +67 -0
  21. package/dist/cjs/Validator/MetaValidator.js.map +1 -0
  22. package/dist/cjs/Validator/Validator.d.ts +12 -0
  23. package/dist/cjs/Validator/Validator.js +47 -0
  24. package/dist/cjs/Validator/Validator.js.map +1 -0
  25. package/dist/cjs/Validator/index.d.ts +3 -0
  26. package/dist/cjs/Validator/index.js +7 -0
  27. package/dist/cjs/Validator/index.js.map +1 -0
  28. package/dist/cjs/Validator/ip-regex.d.ts +9 -0
  29. package/dist/cjs/Validator/ip-regex.js +31 -0
  30. package/dist/cjs/Validator/ip-regex.js.map +1 -0
  31. package/dist/cjs/Validator/is-ip.d.ts +4 -0
  32. package/dist/cjs/Validator/is-ip.js +21 -0
  33. package/dist/cjs/Validator/is-ip.js.map +1 -0
  34. package/dist/cjs/Wrapper/Wrapper.d.ts +11 -0
  35. package/dist/cjs/Wrapper/Wrapper.js +27 -0
  36. package/dist/cjs/Wrapper/Wrapper.js.map +1 -0
  37. package/dist/cjs/Wrapper/index.d.ts +1 -0
  38. package/dist/cjs/Wrapper/index.js +5 -0
  39. package/dist/cjs/Wrapper/index.js.map +1 -0
  40. package/dist/cjs/index.d.ts +5 -0
  41. package/dist/cjs/index.js +9 -0
  42. package/dist/cjs/index.js.map +1 -0
  43. package/dist/cjs/isXyoPayloadOfSchemaType.d.ts +2 -0
  44. package/dist/cjs/isXyoPayloadOfSchemaType.js +6 -0
  45. package/dist/cjs/isXyoPayloadOfSchemaType.js.map +1 -0
  46. package/dist/cjs/models/Base/XyoBoundWitnessBase.d.ts +9 -0
  47. package/dist/cjs/models/Base/XyoBoundWitnessBase.js +3 -0
  48. package/dist/cjs/models/Base/XyoBoundWitnessBase.js.map +1 -0
  49. package/dist/cjs/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
  50. package/dist/cjs/models/Base/XyoBoundWitnessBaseSchema.js +19 -0
  51. package/dist/cjs/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
  52. package/dist/cjs/models/Base/index.d.ts +2 -0
  53. package/dist/cjs/models/Base/index.js +6 -0
  54. package/dist/cjs/models/Base/index.js.map +1 -0
  55. package/dist/cjs/models/Meta/XyoBoundWitnessMeta.d.ts +7 -0
  56. package/dist/cjs/models/Meta/XyoBoundWitnessMeta.js +3 -0
  57. package/dist/cjs/models/Meta/XyoBoundWitnessMeta.js.map +1 -0
  58. package/dist/cjs/models/Meta/XyoBoundWitnessMetaSchema.d.ts +85 -0
  59. package/dist/cjs/models/Meta/XyoBoundWitnessMetaSchema.js +28 -0
  60. package/dist/cjs/models/Meta/XyoBoundWitnessMetaSchema.js.map +1 -0
  61. package/dist/cjs/models/Meta/index.d.ts +2 -0
  62. package/dist/cjs/models/Meta/index.js +6 -0
  63. package/dist/cjs/models/Meta/index.js.map +1 -0
  64. package/dist/cjs/models/WithXyoBoundWitnessMeta.d.ts +4 -0
  65. package/dist/cjs/models/WithXyoBoundWitnessMeta.js +3 -0
  66. package/dist/cjs/models/WithXyoBoundWitnessMeta.js.map +1 -0
  67. package/dist/cjs/models/XyoBoundWitness.d.ts +6 -0
  68. package/dist/cjs/models/XyoBoundWitness.js +3 -0
  69. package/dist/cjs/models/XyoBoundWitness.js.map +1 -0
  70. package/dist/cjs/models/XyoBoundWitnessSchema.d.ts +75 -0
  71. package/dist/cjs/models/XyoBoundWitnessSchema.js +17 -0
  72. package/dist/cjs/models/XyoBoundWitnessSchema.js.map +1 -0
  73. package/dist/cjs/models/index.d.ts +5 -0
  74. package/dist/cjs/models/index.js +9 -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 +23 -0
  78. package/dist/esm/Builder/Builder.js +66 -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/Test/index.d.ts +1 -0
  84. package/dist/esm/Test/index.js +2 -0
  85. package/dist/esm/Test/index.js.map +1 -0
  86. package/dist/esm/Test/testBoundWitness.d.ts +3 -0
  87. package/dist/esm/Test/testBoundWitness.js +14 -0
  88. package/dist/esm/Test/testBoundWitness.js.map +1 -0
  89. package/dist/esm/Validator/BodyValidator.d.ts +17 -0
  90. package/dist/esm/Validator/BodyValidator.js +88 -0
  91. package/dist/esm/Validator/BodyValidator.js.map +1 -0
  92. package/dist/esm/Validator/MetaValidator.d.ts +13 -0
  93. package/dist/esm/Validator/MetaValidator.js +63 -0
  94. package/dist/esm/Validator/MetaValidator.js.map +1 -0
  95. package/dist/esm/Validator/Validator.d.ts +12 -0
  96. package/dist/esm/Validator/Validator.js +42 -0
  97. package/dist/esm/Validator/Validator.js.map +1 -0
  98. package/dist/esm/Validator/index.d.ts +3 -0
  99. package/dist/esm/Validator/index.js +4 -0
  100. package/dist/esm/Validator/index.js.map +1 -0
  101. package/dist/esm/Validator/ip-regex.d.ts +9 -0
  102. package/dist/esm/Validator/ip-regex.js +27 -0
  103. package/dist/esm/Validator/ip-regex.js.map +1 -0
  104. package/dist/esm/Validator/is-ip.d.ts +4 -0
  105. package/dist/esm/Validator/is-ip.js +14 -0
  106. package/dist/esm/Validator/is-ip.js.map +1 -0
  107. package/dist/esm/Wrapper/Wrapper.d.ts +11 -0
  108. package/dist/esm/Wrapper/Wrapper.js +20 -0
  109. package/dist/esm/Wrapper/Wrapper.js.map +1 -0
  110. package/dist/esm/Wrapper/index.d.ts +1 -0
  111. package/dist/esm/Wrapper/index.js +2 -0
  112. package/dist/esm/Wrapper/index.js.map +1 -0
  113. package/dist/esm/index.d.ts +5 -0
  114. package/dist/esm/index.js +6 -0
  115. package/dist/esm/index.js.map +1 -0
  116. package/dist/esm/isXyoPayloadOfSchemaType.d.ts +2 -0
  117. package/dist/esm/isXyoPayloadOfSchemaType.js +3 -0
  118. package/dist/esm/isXyoPayloadOfSchemaType.js.map +1 -0
  119. package/dist/esm/models/Base/XyoBoundWitnessBase.d.ts +9 -0
  120. package/dist/esm/models/Base/XyoBoundWitnessBase.js +2 -0
  121. package/dist/esm/models/Base/XyoBoundWitnessBase.js.map +1 -0
  122. package/dist/esm/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
  123. package/dist/esm/models/Base/XyoBoundWitnessBaseSchema.js +16 -0
  124. package/dist/esm/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
  125. package/dist/esm/models/Base/index.d.ts +2 -0
  126. package/dist/esm/models/Base/index.js +3 -0
  127. package/dist/esm/models/Base/index.js.map +1 -0
  128. package/dist/esm/models/Meta/XyoBoundWitnessMeta.d.ts +7 -0
  129. package/dist/esm/models/Meta/XyoBoundWitnessMeta.js +2 -0
  130. package/dist/esm/models/Meta/XyoBoundWitnessMeta.js.map +1 -0
  131. package/dist/esm/models/Meta/XyoBoundWitnessMetaSchema.d.ts +85 -0
  132. package/dist/esm/models/Meta/XyoBoundWitnessMetaSchema.js +23 -0
  133. package/dist/esm/models/Meta/XyoBoundWitnessMetaSchema.js.map +1 -0
  134. package/dist/esm/models/Meta/index.d.ts +2 -0
  135. package/dist/esm/models/Meta/index.js +3 -0
  136. package/dist/esm/models/Meta/index.js.map +1 -0
  137. package/dist/esm/models/WithXyoBoundWitnessMeta.d.ts +4 -0
  138. package/dist/esm/models/WithXyoBoundWitnessMeta.js +2 -0
  139. package/dist/esm/models/WithXyoBoundWitnessMeta.js.map +1 -0
  140. package/dist/esm/models/XyoBoundWitness.d.ts +6 -0
  141. package/dist/esm/models/XyoBoundWitness.js +2 -0
  142. package/dist/esm/models/XyoBoundWitness.js.map +1 -0
  143. package/dist/esm/models/XyoBoundWitnessSchema.d.ts +75 -0
  144. package/dist/esm/models/XyoBoundWitnessSchema.js +21 -0
  145. package/dist/esm/models/XyoBoundWitnessSchema.js.map +1 -0
  146. package/dist/esm/models/index.d.ts +5 -0
  147. package/dist/esm/models/index.js +6 -0
  148. package/dist/esm/models/index.js.map +1 -0
  149. package/jest.config.cjs +25 -0
  150. package/package.json +61 -0
  151. package/src/Builder/Builder.spec.ts +88 -0
  152. package/src/Builder/Builder.ts +83 -0
  153. package/src/Builder/index.ts +1 -0
  154. package/src/Test/index.ts +1 -0
  155. package/src/Test/testBoundWitness.ts +16 -0
  156. package/src/Validator/BodyValidator.spec.ts +11 -0
  157. package/src/Validator/BodyValidator.ts +102 -0
  158. package/src/Validator/MetaValidator.spec.ts +56 -0
  159. package/src/Validator/MetaValidator.ts +71 -0
  160. package/src/Validator/Validator.spec.ts +11 -0
  161. package/src/Validator/Validator.ts +51 -0
  162. package/src/Validator/index.ts +3 -0
  163. package/src/Validator/ip-regex.ts +39 -0
  164. package/src/Validator/is-ip.ts +17 -0
  165. package/src/Wrapper/Wrapper.ts +27 -0
  166. package/src/Wrapper/index.ts +1 -0
  167. package/src/index.ts +5 -0
  168. package/src/isXyoPayloadOfSchemaType.ts +5 -0
  169. package/src/models/Base/XyoBoundWitnessBase.ts +10 -0
  170. package/src/models/Base/XyoBoundWitnessBaseSchema.ts +15 -0
  171. package/src/models/Base/index.ts +2 -0
  172. package/src/models/Meta/XyoBoundWitnessMeta.ts +8 -0
  173. package/src/models/Meta/XyoBoundWitnessMetaSchema.ts +24 -0
  174. package/src/models/Meta/index.ts +2 -0
  175. package/src/models/WithXyoBoundWitnessMeta.ts +6 -0
  176. package/src/models/XyoBoundWitness.ts +8 -0
  177. package/src/models/XyoBoundWitnessSchema.ts +23 -0
  178. package/src/models/index.ts +5 -0
@@ -0,0 +1,36 @@
1
+ export declare const XyoBoundWitnessBaseSchema: {
2
+ $id: string;
3
+ additionalProperties: boolean;
4
+ properties: {
5
+ addresses: {
6
+ items: {
7
+ type: string;
8
+ };
9
+ type: string;
10
+ };
11
+ payload_hashes: {
12
+ items: {
13
+ type: string;
14
+ };
15
+ type: string;
16
+ };
17
+ payload_schemas: {
18
+ items: {
19
+ type: string;
20
+ };
21
+ type: string;
22
+ };
23
+ previous_hashes: {
24
+ items: {
25
+ nullable: boolean;
26
+ type: string;
27
+ };
28
+ type: string;
29
+ };
30
+ schema: {
31
+ type: string;
32
+ };
33
+ };
34
+ required: string[];
35
+ type: string;
36
+ };
@@ -0,0 +1,16 @@
1
+ //Should type as JSONSchemaType<XyoBoundWitnessBody> once ajv/eslint issue is fixed
2
+ //https://github.com/microsoft/TypeScript/issues/44851
3
+ export const XyoBoundWitnessBaseSchema = {
4
+ $id: 'https://schemas.xyo.network/2.0/boundwitness/body',
5
+ additionalProperties: false,
6
+ properties: {
7
+ addresses: { items: { type: 'string' }, type: 'array' },
8
+ payload_hashes: { items: { type: 'string' }, type: 'array' },
9
+ payload_schemas: { items: { type: 'string' }, type: 'array' },
10
+ previous_hashes: { items: { nullable: true, type: 'string' }, type: 'array' },
11
+ schema: { type: 'string' },
12
+ },
13
+ required: ['addresses', 'payload_hashes', 'payload_schemas', 'previous_hashes', 'schema'],
14
+ type: 'object',
15
+ };
16
+ //# sourceMappingURL=XyoBoundWitnessBaseSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoBoundWitnessBaseSchema.js","sourceRoot":"","sources":["../../../../src/models/Base/XyoBoundWitnessBaseSchema.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,sDAAsD;AACtD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,GAAG,EAAE,mDAAmD;IACxD,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QACvD,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC5D,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC7D,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC7E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3B;IACD,QAAQ,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC;IACzF,IAAI,EAAE,QAAQ;CACf,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './XyoBoundWitnessBase';
2
+ export * from './XyoBoundWitnessBaseSchema';
@@ -0,0 +1,3 @@
1
+ export * from './XyoBoundWitnessBase';
2
+ export * from './XyoBoundWitnessBaseSchema';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/models/Base/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { XyoPayloadMeta, XyoPayloadWithPartialMeta } from '@xyo-network/payload';
2
+ export declare type XyoBoundWitnessMeta<P extends XyoPayloadWithPartialMeta = XyoPayloadWithPartialMeta> = XyoPayloadMeta<{
3
+ _payloads?: P[];
4
+ _signatures?: string[];
5
+ _source_ip?: string;
6
+ _user_agent?: string;
7
+ }>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=XyoBoundWitnessMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoBoundWitnessMeta.js","sourceRoot":"","sources":["../../../../src/models/Meta/XyoBoundWitnessMeta.ts"],"names":[],"mappings":""}
@@ -0,0 +1,85 @@
1
+ export declare const XyoBoundWitnessMetaSchemaProperties: () => {
2
+ _archive: {
3
+ nullable: boolean;
4
+ type: string;
5
+ };
6
+ _client: {
7
+ nullable: boolean;
8
+ type: string;
9
+ };
10
+ _hash: {
11
+ nullable: boolean;
12
+ type: string;
13
+ };
14
+ _payloads: {
15
+ items: {
16
+ type: string;
17
+ };
18
+ nullable: boolean;
19
+ type: string;
20
+ };
21
+ _signatures: {
22
+ items: {
23
+ type: string;
24
+ };
25
+ nullable: boolean;
26
+ type: string;
27
+ };
28
+ _source_ip: {
29
+ nullable: boolean;
30
+ type: string;
31
+ };
32
+ _timestamp: {
33
+ nullable: boolean;
34
+ type: string;
35
+ };
36
+ _user_agent: {
37
+ nullable: boolean;
38
+ type: string;
39
+ };
40
+ };
41
+ export declare const XyoBoundWitnessMetaSchema: () => {
42
+ $id: string;
43
+ additionalProperties: boolean;
44
+ properties: () => {
45
+ _archive: {
46
+ nullable: boolean;
47
+ type: string;
48
+ };
49
+ _client: {
50
+ nullable: boolean;
51
+ type: string;
52
+ };
53
+ _hash: {
54
+ nullable: boolean;
55
+ type: string;
56
+ };
57
+ _payloads: {
58
+ items: {
59
+ type: string;
60
+ };
61
+ nullable: boolean;
62
+ type: string;
63
+ };
64
+ _signatures: {
65
+ items: {
66
+ type: string;
67
+ };
68
+ nullable: boolean;
69
+ type: string;
70
+ };
71
+ _source_ip: {
72
+ nullable: boolean;
73
+ type: string;
74
+ };
75
+ _timestamp: {
76
+ nullable: boolean;
77
+ type: string;
78
+ };
79
+ _user_agent: {
80
+ nullable: boolean;
81
+ type: string;
82
+ };
83
+ };
84
+ type: string;
85
+ };
@@ -0,0 +1,23 @@
1
+ //Should type as JSONSchemaType<XyoBoundWitnessMeta> once ajv/eslint issue is fixed
2
+ //https://github.com/microsoft/TypeScript/issues/44851
3
+ export const XyoBoundWitnessMetaSchemaProperties = () => {
4
+ return {
5
+ _archive: { nullable: true, type: 'string' },
6
+ _client: { nullable: true, type: 'string' },
7
+ _hash: { nullable: true, type: 'string' },
8
+ _payloads: { items: { type: 'object' }, nullable: true, type: 'array' },
9
+ _signatures: { items: { type: 'string' }, nullable: true, type: 'array' },
10
+ _source_ip: { nullable: true, type: 'string' },
11
+ _timestamp: { nullable: true, type: 'number' },
12
+ _user_agent: { nullable: true, type: 'string' },
13
+ };
14
+ };
15
+ export const XyoBoundWitnessMetaSchema = () => {
16
+ return {
17
+ $id: 'https://schemas.xyo.network/2.0/boundwitness/meta',
18
+ additionalProperties: false,
19
+ properties: XyoBoundWitnessMetaSchemaProperties,
20
+ type: 'object',
21
+ };
22
+ };
23
+ //# sourceMappingURL=XyoBoundWitnessMetaSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoBoundWitnessMetaSchema.js","sourceRoot":"","sources":["../../../../src/models/Meta/XyoBoundWitnessMetaSchema.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,sDAAsD;AAEtD,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,EAAE;IACtD,OAAO;QACL,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5C,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3C,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QACvE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QACzE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9C,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9C,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,OAAO;QACL,GAAG,EAAE,mDAAmD;QACxD,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,mCAAmC;QAC/C,IAAI,EAAE,QAAQ;KACf,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './XyoBoundWitnessMeta';
2
+ export * from './XyoBoundWitnessMetaSchema';
@@ -0,0 +1,3 @@
1
+ export * from './XyoBoundWitnessMeta';
2
+ export * from './XyoBoundWitnessMetaSchema';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/models/Meta/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { XyoBoundWitnessMeta } from './Meta';
2
+ import { XyoBoundWitness } from './XyoBoundWitness';
3
+ declare type WithXyoBoundWitnessMeta<T extends XyoBoundWitness> = T & XyoBoundWitnessMeta;
4
+ export type { WithXyoBoundWitnessMeta };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WithXyoBoundWitnessMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithXyoBoundWitnessMeta.js","sourceRoot":"","sources":["../../../src/models/WithXyoBoundWitnessMeta.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { XyoPayloadWithPartialMeta } from '@xyo-network/payload';
2
+ import { XyoBoundWitnessBase } from './Base';
3
+ import { XyoBoundWitnessMeta } from './Meta';
4
+ export declare type XyoBoundWitness<T extends object = object> = T & XyoBoundWitnessBase;
5
+ export declare type XyoBoundWitnessWithMeta<T = unknown, P extends XyoPayloadWithPartialMeta = XyoPayloadWithPartialMeta> = T & XyoBoundWitnessMeta<P> & XyoBoundWitness;
6
+ export declare type XyoBoundWitnessWithPartialMeta<T = unknown, P extends XyoPayloadWithPartialMeta = XyoPayloadWithPartialMeta> = T & Partial<XyoBoundWitnessMeta<P>> & XyoBoundWitness;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=XyoBoundWitness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoBoundWitness.js","sourceRoot":"","sources":["../../../src/models/XyoBoundWitness.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ declare const XyoBoundWitnessSchema: () => {
2
+ $id: string;
3
+ additionalProperties: boolean;
4
+ properties: {
5
+ addresses: {
6
+ items: {
7
+ type: string;
8
+ };
9
+ type: string;
10
+ };
11
+ payload_hashes: {
12
+ items: {
13
+ type: string;
14
+ };
15
+ type: string;
16
+ };
17
+ payload_schemas: {
18
+ items: {
19
+ type: string;
20
+ };
21
+ type: string;
22
+ };
23
+ previous_hashes: {
24
+ items: {
25
+ nullable: boolean;
26
+ type: string;
27
+ };
28
+ type: string;
29
+ };
30
+ schema: {
31
+ type: string;
32
+ };
33
+ _archive: {
34
+ nullable: boolean;
35
+ type: string;
36
+ };
37
+ _client: {
38
+ nullable: boolean;
39
+ type: string;
40
+ };
41
+ _hash: {
42
+ nullable: boolean;
43
+ type: string;
44
+ };
45
+ _payloads: {
46
+ items: {
47
+ type: string;
48
+ };
49
+ nullable: boolean;
50
+ type: string;
51
+ };
52
+ _signatures: {
53
+ items: {
54
+ type: string;
55
+ };
56
+ nullable: boolean;
57
+ type: string;
58
+ };
59
+ _source_ip: {
60
+ nullable: boolean;
61
+ type: string;
62
+ };
63
+ _timestamp: {
64
+ nullable: boolean;
65
+ type: string;
66
+ };
67
+ _user_agent: {
68
+ nullable: boolean;
69
+ type: string;
70
+ };
71
+ };
72
+ required: string[];
73
+ type: string;
74
+ };
75
+ export { XyoBoundWitnessSchema };
@@ -0,0 +1,21 @@
1
+ //Should type as JSONSchemaType<XyoBoundWitness> once ajv/eslint issue is fixed
2
+ //https://github.com/microsoft/TypeScript/issues/44851
3
+ import { XyoBoundWitnessMetaSchemaProperties } from './Meta';
4
+ const XyoBoundWitnessSchema = () => {
5
+ return {
6
+ $id: 'https://schemas.xyo.network/2.0/boundwitness',
7
+ additionalProperties: false,
8
+ properties: {
9
+ ...XyoBoundWitnessMetaSchemaProperties(),
10
+ addresses: { items: { type: 'string' }, type: 'array' },
11
+ payload_hashes: { items: { type: 'string' }, type: 'array' },
12
+ payload_schemas: { items: { type: 'string' }, type: 'array' },
13
+ previous_hashes: { items: { nullable: true, type: 'string' }, type: 'array' },
14
+ schema: { type: 'string' },
15
+ },
16
+ required: ['addresses', 'payload_hashes', 'payload_schemas', 'previous_hashes', 'schema'],
17
+ type: 'object',
18
+ };
19
+ };
20
+ export { XyoBoundWitnessSchema };
21
+ //# sourceMappingURL=XyoBoundWitnessSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoBoundWitnessSchema.js","sourceRoot":"","sources":["../../../src/models/XyoBoundWitnessSchema.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sDAAsD;AAEtD,OAAO,EAAE,mCAAmC,EAAE,MAAM,QAAQ,CAAA;AAE5D,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACjC,OAAO;QACL,GAAG,EAAE,8CAA8C;QACnD,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACV,GAAG,mCAAmC,EAAE;YACxC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YACvD,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC5D,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC7D,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC7E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3B;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC;QACzF,IAAI,EAAE,QAAQ;KACf,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './Base';
2
+ export * from './Meta';
3
+ export * from './WithXyoBoundWitnessMeta';
4
+ export * from './XyoBoundWitness';
5
+ export * from './XyoBoundWitnessSchema';
@@ -0,0 +1,6 @@
1
+ export * from './Base';
2
+ export * from './Meta';
3
+ export * from './WithXyoBoundWitnessMeta';
4
+ export * from './XyoBoundWitness';
5
+ export * from './XyoBoundWitnessSchema';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA"}
@@ -0,0 +1,25 @@
1
+ const generateJestConfig = ({ esModules }) => {
2
+ const esModuleslist = Array.isArray(esModules) ? esModules.join('|') : esModules
3
+ return {
4
+ globals: {
5
+ 'ts-jest': {
6
+ tsconfig: 'tsconfig.test.json',
7
+ },
8
+ },
9
+ moduleNameMapper: {
10
+ '^(\\.{1,2}/.*)\\.js$': '$1',
11
+ },
12
+ preset: 'ts-jest/presets/default-esm',
13
+ setupFiles: ['dotenv/config'],
14
+ setupFilesAfterEnv: ['jest-sorted'],
15
+ testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',
16
+ testTimeout: 20000,
17
+ transform: {
18
+ [`(${esModuleslist}).+\\.js$`]: 'babel-jest',
19
+ '^.+\\.tsx?$': 'ts-jest/legacy',
20
+ },
21
+ transformIgnorePatterns: [`./node_modules/(?!${esModuleslist})`],
22
+ }
23
+ }
24
+
25
+ module.exports = generateJestConfig({ esModules: ['is-ip', 'ip-regex', 'lodash-es', 'uuid'] })
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@xyo-network/boundwitness",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@xylabs/sdk-js": "^2.5.9",
14
+ "@xyo-network/account": "^2.21.11",
15
+ "@xyo-network/core": "^2.21.11",
16
+ "@xyo-network/payload": "^2.21.11",
17
+ "@xyo-network/typeof": "^2.21.11",
18
+ "lodash": "^4.17.21",
19
+ "ua-parser-js": "^1.0.2"
20
+ },
21
+ "description": "Primary SDK for using XYO Protocol 2.0",
22
+ "devDependencies": {
23
+ "@types/lodash": "^4.14.182",
24
+ "@types/ua-parser-js": "^0.7.36",
25
+ "tslib": "^2.4.0"
26
+ },
27
+ "browser": "dist/esm/index.js",
28
+ "docs": "dist/docs.json",
29
+ "exports": {
30
+ ".": {
31
+ "node": {
32
+ "import": "./dist/esm/index.js",
33
+ "require": "./dist/cjs/index.js"
34
+ },
35
+ "browser": {
36
+ "import": "./dist/esm/index.js",
37
+ "require": "./dist/cjs/index.js"
38
+ },
39
+ "default": "./dist/esm/index.js"
40
+ },
41
+ "./dist/docs.json": {
42
+ "default": "./dist/docs.json"
43
+ },
44
+ "./package.json": "./package.json"
45
+ },
46
+ "main": "dist/cjs/index.js",
47
+ "module": "dist/esm/index.js",
48
+ "homepage": "https://xyo.network",
49
+ "license": "LGPL-3.0-only",
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
56
+ },
57
+ "sideEffects": true,
58
+ "types": "dist/esm/index.d.ts",
59
+ "version": "2.21.11",
60
+ "packageManager": "yarn@3.1.1"
61
+ }
@@ -0,0 +1,88 @@
1
+ /* eslint-disable sort-keys-fix/sort-keys-fix */
2
+ /* eslint-disable sort-keys */
3
+
4
+ import { XyoAccount, XyoAddressValue } from '@xyo-network/account'
5
+ import { StringKeyObject, XyoHasher } from '@xyo-network/core'
6
+ import { XyoPayload } from '@xyo-network/payload'
7
+
8
+ import { XyoBoundWitnessBuilder } from './Builder'
9
+
10
+ const schema = 'network.xyo.temp'
11
+ const payload1: XyoPayload<StringKeyObject> = {
12
+ number_field: 1,
13
+ object_field: {
14
+ number_value: 2,
15
+ string_value: 'yo',
16
+ },
17
+ schema,
18
+ string_field: 'there',
19
+ timestamp: 1618603439107,
20
+ }
21
+ const payload2: XyoPayload<StringKeyObject> = {
22
+ timestamp: 1618603439107,
23
+ string_field: 'there',
24
+ schema,
25
+ object_field: {
26
+ string_value: 'yo',
27
+ number_value: 2,
28
+ },
29
+ number_field: 1,
30
+ }
31
+ const payloads = [payload1, payload2]
32
+ const payloadHash = '3c817871cbf24708703e907dbc344b1b2aefcc3603d14d59c3a35a5c446410d1'
33
+
34
+ describe('XyoBoundWitnessBuilder', () => {
35
+ describe('hash', () => {
36
+ it.each(payloads)('consistently hashes equivalent payload independent of the order of the keys', (payload) => {
37
+ const hash = new XyoHasher(payload).hash
38
+ expect(hash).toEqual(payloadHash)
39
+ })
40
+ })
41
+ describe('build', () => {
42
+ describe('_hash', () => {
43
+ it.each(payloads)('consistently hashes equivalent payloads independent of the order of the keys', (payload) => {
44
+ const address = XyoAccount.fromPhrase('test1')
45
+ let builder = new XyoBoundWitnessBuilder()
46
+ expect(builder).toBeDefined()
47
+ builder = builder.witness(address)
48
+ expect(builder).toBeDefined()
49
+ builder = builder.payload(payload)
50
+ expect(builder).toBeDefined()
51
+
52
+ const actual = builder.build()
53
+
54
+ expect(actual).toBeDefined()
55
+ expect(actual._hash).toEqual('7f3203f2d191f12c26cd1aec62b718be8848471f82831a8870f82fc669a5f35b')
56
+
57
+ if (actual._hash && actual._signatures) {
58
+ const addr = new XyoAddressValue(actual.addresses[0])
59
+ expect(addr.hex).toBe(actual.addresses[0])
60
+ const verify = new XyoAddressValue(actual.addresses[0]).verify(actual._hash, actual._signatures[0])
61
+ expect(verify).toBe(true)
62
+ }
63
+ })
64
+ })
65
+ describe('with inlinePayloads true', () => {
66
+ it('contains the _payloads field', () => {
67
+ const address = XyoAccount.fromPhrase('test2')
68
+ const builder = new XyoBoundWitnessBuilder({ inlinePayloads: true }).witness(address).payload(payload1)
69
+
70
+ const actual = builder.build()
71
+
72
+ expect(actual).toBeDefined()
73
+ expect(actual._payloads).toBeDefined()
74
+ })
75
+ })
76
+ describe('with inlinePayloads false', () => {
77
+ it('omits the _payloads field', () => {
78
+ const address = XyoAccount.fromPhrase('test3')
79
+ const builder = new XyoBoundWitnessBuilder({ inlinePayloads: false }).witness(address).payload(payload1)
80
+
81
+ const actual = builder.build()
82
+
83
+ expect(actual).toBeDefined()
84
+ expect(actual._payloads).toBeUndefined()
85
+ })
86
+ })
87
+ })
88
+ })
@@ -0,0 +1,83 @@
1
+ import { assertEx, Buffer } from '@xylabs/sdk-js'
2
+ import { XyoAccount } from '@xyo-network/account'
3
+ import { sortFields, WithAdditional, XyoHasher } from '@xyo-network/core'
4
+ import { XyoPayload } from '@xyo-network/payload'
5
+
6
+ import { WithXyoBoundWitnessMeta, XyoBoundWitness, XyoBoundWitnessWithMeta } from '../models'
7
+
8
+ export interface XyoBoundWitnessBuilderConfig {
9
+ /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */
10
+ readonly inlinePayloads?: boolean
11
+ }
12
+
13
+ export class XyoBoundWitnessBuilder {
14
+ private _accounts: XyoAccount[] = []
15
+ private _payload_schemas: string[] = []
16
+ private _payloads: XyoPayload[] = []
17
+
18
+ constructor(public readonly config: XyoBoundWitnessBuilderConfig = { inlinePayloads: false }) {}
19
+
20
+ private get _payload_hashes(): string[] {
21
+ return this._payloads.map((payload) => {
22
+ return new XyoHasher(payload).hash
23
+ })
24
+ }
25
+
26
+ public witness(account: XyoAccount) {
27
+ this._accounts?.push(account)
28
+ return this
29
+ }
30
+
31
+ public payloads<T extends XyoPayload = WithAdditional<XyoPayload>>(payloads: (T | null)[]) {
32
+ payloads.forEach((payload) => {
33
+ if (payload !== null) {
34
+ this.payload(payload)
35
+ }
36
+ })
37
+ return this
38
+ }
39
+
40
+ public payload<T extends XyoPayload = WithAdditional<XyoPayload>>(payload?: T) {
41
+ if (payload) {
42
+ this._payload_schemas.push(payload.schema)
43
+ this._payloads.push(assertEx(sortFields(payload)))
44
+ }
45
+ return this
46
+ }
47
+
48
+ public hashableFields(): XyoBoundWitness {
49
+ const addresses = this._accounts.map((account) => account.addressValue.hex)
50
+ const previous_hashes = this._accounts.map((account) => account.previousHash?.hex ?? null)
51
+ return {
52
+ addresses: assertEx(addresses, 'Missing addresses'),
53
+ payload_hashes: assertEx(this._payload_hashes, 'Missing payload_hashes'),
54
+ payload_schemas: assertEx(this._payload_schemas, 'Missing payload_schemas'),
55
+ previous_hashes,
56
+ schema: 'network.xyo.boundwitness',
57
+ }
58
+ }
59
+
60
+ private signatures(_hash: string) {
61
+ return this._accounts.map((account) => Buffer.from(account.sign(Buffer.from(_hash, 'hex'))).toString('hex'))
62
+ }
63
+
64
+ private inlinePayloads() {
65
+ return this._payloads.map<XyoPayload>((payload, index) => {
66
+ return {
67
+ ...payload,
68
+ schema: this._payload_schemas[index],
69
+ }
70
+ })
71
+ }
72
+
73
+ public build(): XyoBoundWitnessWithMeta {
74
+ const hashableFields = this.hashableFields() as unknown as Record<string, unknown>
75
+ const _hash = new XyoHasher(hashableFields).hash
76
+
77
+ const ret = { ...hashableFields, _client: 'js', _hash, _signatures: this.signatures(_hash), _timestamp: Date.now() } as WithXyoBoundWitnessMeta<XyoBoundWitness>
78
+ if (this.config.inlinePayloads) {
79
+ ret._payloads = this.inlinePayloads()
80
+ }
81
+ return ret
82
+ }
83
+ }
@@ -0,0 +1 @@
1
+ export * from './Builder'
@@ -0,0 +1 @@
1
+ export * from './testBoundWitness'
@@ -0,0 +1,16 @@
1
+ import { XyoBoundWitnessWithMeta } from '../models'
2
+
3
+ const testBoundWitness: XyoBoundWitnessWithMeta = {
4
+ _archive: 'temp',
5
+ _client: 'js',
6
+ _hash: 'b0ffb9ebf872dc316b7be48327256c5316f7cb84d7c706861b18b86af1942dea',
7
+ _signatures: ['95100e5fd2012b958e96895870cfac5353c3a33a19314cfd1304ef7d01d052ec2a3ef80d6449cf88d463027fe0d868ed8cfb8b7323d37e93a08570233eea0b17'],
8
+ _timestamp: 1650067385598,
9
+ addresses: ['5346a2ce56ec4177b67092bda710e150ba6fa046'],
10
+ payload_hashes: ['20e14207f952a09f767ff614a648546c037fe524ace0bfe55db31f818aff1f1c'],
11
+ payload_schemas: ['network.xyo.test'],
12
+ previous_hashes: [null],
13
+ schema: 'network.xyo.boundwitness',
14
+ }
15
+
16
+ export { testBoundWitness }
@@ -0,0 +1,11 @@
1
+ import { dumpErrors } from '@xyo-network/core'
2
+
3
+ import { testBoundWitness } from '../Test'
4
+ import { XyoBoundWitnessBodyValidator } from './BodyValidator'
5
+
6
+ test('all', () => {
7
+ const validator = new XyoBoundWitnessBodyValidator(testBoundWitness)
8
+ const errors = validator.validate()
9
+ dumpErrors(errors)
10
+ expect(errors.length).toBe(0)
11
+ })