@xyo-network/core 2.20.47 → 2.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/dist/cjs/BoundWitness/Builder/Builder.d.ts +5 -5
  2. package/dist/cjs/BoundWitness/Builder/Builder.js.map +1 -1
  3. package/dist/cjs/BoundWitness/Validator/BodyValidator.d.ts +7 -8
  4. package/dist/cjs/BoundWitness/Validator/BodyValidator.js +23 -20
  5. package/dist/cjs/BoundWitness/Validator/BodyValidator.js.map +1 -1
  6. package/dist/cjs/BoundWitness/Validator/MetaValidator.d.ts +4 -5
  7. package/dist/cjs/BoundWitness/Validator/MetaValidator.js +9 -11
  8. package/dist/cjs/BoundWitness/Validator/MetaValidator.js.map +1 -1
  9. package/dist/cjs/BoundWitness/Validator/Validator.d.ts +5 -5
  10. package/dist/cjs/BoundWitness/Validator/Validator.js +9 -8
  11. package/dist/cjs/BoundWitness/Validator/Validator.js.map +1 -1
  12. package/dist/cjs/BoundWitness/Wrapper/Wrapper.d.ts +5 -7
  13. package/dist/cjs/BoundWitness/Wrapper/Wrapper.js +5 -8
  14. package/dist/cjs/BoundWitness/Wrapper/Wrapper.js.map +1 -1
  15. package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBase.d.ts +9 -0
  16. package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBase.js +3 -0
  17. package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBase.js.map +1 -0
  18. package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
  19. package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js +19 -0
  20. package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
  21. package/dist/cjs/BoundWitness/models/Base/index.d.ts +2 -0
  22. package/dist/cjs/BoundWitness/models/Base/index.js +6 -0
  23. package/dist/cjs/BoundWitness/models/Base/index.js.map +1 -0
  24. package/dist/cjs/BoundWitness/models/Body/XyoBoundWitnessBody.d.ts +3 -5
  25. package/dist/cjs/BoundWitness/models/Meta/XyoBoundWitnessMeta.d.ts +7 -10
  26. package/dist/cjs/BoundWitness/models/WithXyoBoundWitnessMeta.d.ts +2 -2
  27. package/dist/cjs/BoundWitness/models/XyoBoundWitness.d.ts +2 -5
  28. package/dist/cjs/BoundWitness/models/index.d.ts +1 -1
  29. package/dist/cjs/BoundWitness/models/index.js +1 -1
  30. package/dist/cjs/Hasher/XyoAbstractHasher.d.ts +2 -2
  31. package/dist/cjs/Hasher/XyoAbstractHasher.js +3 -2
  32. package/dist/cjs/Hasher/XyoAbstractHasher.js.map +1 -1
  33. package/dist/cjs/Hasher/XyoHasher.d.ts +10 -5
  34. package/dist/cjs/Hasher/XyoHasher.js +28 -8
  35. package/dist/cjs/Hasher/XyoHasher.js.map +1 -1
  36. package/dist/cjs/Hasher/index.d.ts +0 -1
  37. package/dist/cjs/Hasher/index.js +0 -1
  38. package/dist/cjs/Hasher/index.js.map +1 -1
  39. package/dist/cjs/Hasher/removeFields.d.ts +3 -3
  40. package/dist/cjs/Hasher/removeFields.js +8 -5
  41. package/dist/cjs/Hasher/removeFields.js.map +1 -1
  42. package/dist/cjs/Hasher/sortFields.d.ts +1 -1
  43. package/dist/cjs/Hasher/sortFields.js +3 -2
  44. package/dist/cjs/Hasher/sortFields.js.map +1 -1
  45. package/dist/cjs/Huri/Huri.d.ts +2 -2
  46. package/dist/cjs/Payload/Builder/Builder.d.ts +3 -2
  47. package/dist/cjs/Payload/Builder/Builder.js.map +1 -1
  48. package/dist/cjs/Payload/Validator/BodyValidator.d.ts +4 -6
  49. package/dist/cjs/Payload/Validator/BodyValidator.js +5 -7
  50. package/dist/cjs/Payload/Validator/BodyValidator.js.map +1 -1
  51. package/dist/cjs/Payload/Validator/MetaValidator.d.ts +4 -5
  52. package/dist/cjs/Payload/Validator/MetaValidator.js +7 -9
  53. package/dist/cjs/Payload/Validator/MetaValidator.js.map +1 -1
  54. package/dist/cjs/Payload/Validator/Validator.d.ts +4 -5
  55. package/dist/cjs/Payload/Validator/Validator.js +5 -4
  56. package/dist/cjs/Payload/Validator/Validator.js.map +1 -1
  57. package/dist/cjs/Payload/Wrapper/Validator.d.ts +5 -6
  58. package/dist/cjs/Payload/Wrapper/Validator.js +5 -7
  59. package/dist/cjs/Payload/Wrapper/Validator.js.map +1 -1
  60. package/dist/cjs/Payload/Wrapper/Wrapper.d.ts +5 -7
  61. package/dist/cjs/Payload/Wrapper/Wrapper.js +5 -9
  62. package/dist/cjs/Payload/Wrapper/Wrapper.js.map +1 -1
  63. package/dist/cjs/Payload/index.d.ts +0 -1
  64. package/dist/cjs/Payload/index.js +0 -1
  65. package/dist/cjs/Payload/index.js.map +1 -1
  66. package/dist/cjs/Payload/models/Base.d.ts +6 -0
  67. package/dist/cjs/Payload/models/Base.js +3 -0
  68. package/dist/cjs/Payload/models/Base.js.map +1 -0
  69. package/dist/cjs/Payload/models/Body.d.ts +2 -3
  70. package/dist/cjs/Payload/models/Meta.d.ts +12 -7
  71. package/dist/cjs/Payload/models/WithAdditional.d.ts +4 -0
  72. package/dist/cjs/Payload/models/WithAdditional.js +3 -0
  73. package/dist/cjs/Payload/models/WithAdditional.js.map +1 -0
  74. package/dist/cjs/Payload/models/XyoPayload.d.ts +2 -4
  75. package/dist/cjs/Payload/models/index.d.ts +1 -2
  76. package/dist/cjs/Payload/models/index.js +1 -2
  77. package/dist/cjs/Payload/models/index.js.map +1 -1
  78. package/dist/cjs/Query/QueryPayload.d.ts +1 -1
  79. package/dist/cjs/Schema/Payload.d.ts +3 -3
  80. package/dist/cjs/Test/testBoundWitness.d.ts +2 -2
  81. package/dist/cjs/Test/testBoundWitness.js.map +1 -1
  82. package/dist/cjs/Test/testPayload.d.ts +3 -2
  83. package/dist/cjs/Test/testPayload.js.map +1 -1
  84. package/dist/cjs/Wallet/Base/WordsPayload.d.ts +1 -1
  85. package/dist/cjs/Witness/LegacyWitness.d.ts +3 -3
  86. package/dist/cjs/Witness/LegacyWitness.js.map +1 -1
  87. package/dist/cjs/Witness/QueryWitness.d.ts +1 -1
  88. package/dist/cjs/Witness/QueryWitness.js.map +1 -1
  89. package/dist/cjs/Witness/Witness.d.ts +1 -1
  90. package/dist/cjs/lib/StringKeyObject.d.ts +4 -0
  91. package/dist/cjs/lib/StringKeyObject.js +3 -0
  92. package/dist/cjs/lib/StringKeyObject.js.map +1 -0
  93. package/dist/cjs/lib/XyoObject.d.ts +6 -0
  94. package/dist/cjs/lib/XyoObject.js +13 -0
  95. package/dist/cjs/lib/XyoObject.js.map +1 -0
  96. package/dist/cjs/lib/XyoValidator.d.ts +4 -0
  97. package/dist/cjs/lib/XyoValidator.js +8 -0
  98. package/dist/cjs/lib/XyoValidator.js.map +1 -0
  99. package/dist/cjs/lib/index.d.ts +3 -0
  100. package/dist/cjs/lib/index.js +3 -0
  101. package/dist/cjs/lib/index.js.map +1 -1
  102. package/dist/cjs/lib/isXyoPayloadOfSchemaType.d.ts +3 -3
  103. package/dist/cjs/models/Base.d.ts +6 -0
  104. package/dist/cjs/models/Base.js +3 -0
  105. package/dist/cjs/models/Base.js.map +1 -0
  106. package/dist/cjs/models/Meta.d.ts +15 -0
  107. package/dist/cjs/models/Meta.js +3 -0
  108. package/dist/cjs/models/Meta.js.map +1 -0
  109. package/dist/cjs/models/XyoPayload.d.ts +2 -0
  110. package/dist/cjs/models/XyoPayload.js +3 -0
  111. package/dist/cjs/models/XyoPayload.js.map +1 -0
  112. package/dist/cjs/models/index.d.ts +3 -1
  113. package/dist/cjs/models/index.js +3 -1
  114. package/dist/cjs/models/index.js.map +1 -1
  115. package/dist/cjs/shared.d.ts +1 -1
  116. package/dist/cjs/shared.js +1 -1
  117. package/dist/cjs/shared.js.map +1 -1
  118. package/dist/esm/BoundWitness/Builder/Builder.d.ts +5 -5
  119. package/dist/esm/BoundWitness/Builder/Builder.js.map +1 -1
  120. package/dist/esm/BoundWitness/Validator/BodyValidator.d.ts +7 -8
  121. package/dist/esm/BoundWitness/Validator/BodyValidator.js +24 -22
  122. package/dist/esm/BoundWitness/Validator/BodyValidator.js.map +1 -1
  123. package/dist/esm/BoundWitness/Validator/MetaValidator.d.ts +4 -5
  124. package/dist/esm/BoundWitness/Validator/MetaValidator.js +9 -11
  125. package/dist/esm/BoundWitness/Validator/MetaValidator.js.map +1 -1
  126. package/dist/esm/BoundWitness/Validator/Validator.d.ts +5 -5
  127. package/dist/esm/BoundWitness/Validator/Validator.js +9 -8
  128. package/dist/esm/BoundWitness/Validator/Validator.js.map +1 -1
  129. package/dist/esm/BoundWitness/Wrapper/Wrapper.d.ts +5 -7
  130. package/dist/esm/BoundWitness/Wrapper/Wrapper.js +3 -7
  131. package/dist/esm/BoundWitness/Wrapper/Wrapper.js.map +1 -1
  132. package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBase.d.ts +9 -0
  133. package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBase.js +2 -0
  134. package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBase.js.map +1 -0
  135. package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
  136. package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js +16 -0
  137. package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
  138. package/dist/esm/BoundWitness/models/Base/index.d.ts +2 -0
  139. package/dist/esm/BoundWitness/models/Base/index.js +3 -0
  140. package/dist/esm/BoundWitness/models/Base/index.js.map +1 -0
  141. package/dist/esm/BoundWitness/models/Body/XyoBoundWitnessBody.d.ts +3 -5
  142. package/dist/esm/BoundWitness/models/Meta/XyoBoundWitnessMeta.d.ts +7 -10
  143. package/dist/esm/BoundWitness/models/WithXyoBoundWitnessMeta.d.ts +2 -2
  144. package/dist/esm/BoundWitness/models/XyoBoundWitness.d.ts +2 -5
  145. package/dist/esm/BoundWitness/models/index.d.ts +1 -1
  146. package/dist/esm/BoundWitness/models/index.js +1 -1
  147. package/dist/esm/Hasher/XyoAbstractHasher.d.ts +2 -2
  148. package/dist/esm/Hasher/XyoAbstractHasher.js +3 -2
  149. package/dist/esm/Hasher/XyoAbstractHasher.js.map +1 -1
  150. package/dist/esm/Hasher/XyoHasher.d.ts +10 -5
  151. package/dist/esm/Hasher/XyoHasher.js +27 -8
  152. package/dist/esm/Hasher/XyoHasher.js.map +1 -1
  153. package/dist/esm/Hasher/index.d.ts +0 -1
  154. package/dist/esm/Hasher/index.js +0 -1
  155. package/dist/esm/Hasher/index.js.map +1 -1
  156. package/dist/esm/Hasher/removeFields.d.ts +3 -3
  157. package/dist/esm/Hasher/removeFields.js +8 -5
  158. package/dist/esm/Hasher/removeFields.js.map +1 -1
  159. package/dist/esm/Hasher/sortFields.d.ts +1 -1
  160. package/dist/esm/Hasher/sortFields.js +3 -2
  161. package/dist/esm/Hasher/sortFields.js.map +1 -1
  162. package/dist/esm/Huri/Huri.d.ts +2 -2
  163. package/dist/esm/Payload/Builder/Builder.d.ts +3 -2
  164. package/dist/esm/Payload/Builder/Builder.js.map +1 -1
  165. package/dist/esm/Payload/Validator/BodyValidator.d.ts +4 -6
  166. package/dist/esm/Payload/Validator/BodyValidator.js +5 -8
  167. package/dist/esm/Payload/Validator/BodyValidator.js.map +1 -1
  168. package/dist/esm/Payload/Validator/MetaValidator.d.ts +4 -5
  169. package/dist/esm/Payload/Validator/MetaValidator.js +7 -9
  170. package/dist/esm/Payload/Validator/MetaValidator.js.map +1 -1
  171. package/dist/esm/Payload/Validator/Validator.d.ts +4 -5
  172. package/dist/esm/Payload/Validator/Validator.js +5 -5
  173. package/dist/esm/Payload/Validator/Validator.js.map +1 -1
  174. package/dist/esm/Payload/Wrapper/Validator.d.ts +5 -6
  175. package/dist/esm/Payload/Wrapper/Validator.js +5 -7
  176. package/dist/esm/Payload/Wrapper/Validator.js.map +1 -1
  177. package/dist/esm/Payload/Wrapper/Wrapper.d.ts +5 -7
  178. package/dist/esm/Payload/Wrapper/Wrapper.js +6 -10
  179. package/dist/esm/Payload/Wrapper/Wrapper.js.map +1 -1
  180. package/dist/esm/Payload/index.d.ts +0 -1
  181. package/dist/esm/Payload/index.js +0 -1
  182. package/dist/esm/Payload/index.js.map +1 -1
  183. package/dist/esm/Payload/models/Base.d.ts +6 -0
  184. package/dist/esm/Payload/models/Base.js +2 -0
  185. package/dist/esm/Payload/models/Base.js.map +1 -0
  186. package/dist/esm/Payload/models/Body.d.ts +2 -3
  187. package/dist/esm/Payload/models/Meta.d.ts +12 -7
  188. package/dist/esm/Payload/models/WithAdditional.d.ts +4 -0
  189. package/dist/esm/Payload/models/WithAdditional.js +2 -0
  190. package/dist/esm/Payload/models/WithAdditional.js.map +1 -0
  191. package/dist/esm/Payload/models/XyoPayload.d.ts +2 -4
  192. package/dist/esm/Payload/models/index.d.ts +1 -2
  193. package/dist/esm/Payload/models/index.js +1 -2
  194. package/dist/esm/Payload/models/index.js.map +1 -1
  195. package/dist/esm/Query/QueryPayload.d.ts +1 -1
  196. package/dist/esm/Schema/Payload.d.ts +3 -3
  197. package/dist/esm/Test/testBoundWitness.d.ts +2 -2
  198. package/dist/esm/Test/testBoundWitness.js.map +1 -1
  199. package/dist/esm/Test/testPayload.d.ts +3 -2
  200. package/dist/esm/Test/testPayload.js.map +1 -1
  201. package/dist/esm/Wallet/Base/WordsPayload.d.ts +1 -1
  202. package/dist/esm/Witness/LegacyWitness.d.ts +1 -1
  203. package/dist/esm/Witness/LegacyWitness.js.map +1 -1
  204. package/dist/esm/Witness/QueryWitness.d.ts +1 -1
  205. package/dist/esm/Witness/QueryWitness.js.map +1 -1
  206. package/dist/esm/Witness/Witness.d.ts +1 -1
  207. package/dist/esm/lib/StringKeyObject.d.ts +4 -0
  208. package/dist/esm/lib/StringKeyObject.js +2 -0
  209. package/dist/esm/lib/StringKeyObject.js.map +1 -0
  210. package/dist/esm/lib/XyoObject.d.ts +6 -0
  211. package/dist/esm/lib/XyoObject.js +9 -0
  212. package/dist/esm/lib/XyoObject.js.map +1 -0
  213. package/dist/esm/lib/XyoValidator.d.ts +4 -0
  214. package/dist/esm/lib/XyoValidator.js +4 -0
  215. package/dist/esm/lib/XyoValidator.js.map +1 -0
  216. package/dist/esm/lib/index.d.ts +3 -0
  217. package/dist/esm/lib/index.js +3 -0
  218. package/dist/esm/lib/index.js.map +1 -1
  219. package/dist/esm/lib/isXyoPayloadOfSchemaType.d.ts +3 -3
  220. package/dist/esm/models/Base.d.ts +6 -0
  221. package/dist/esm/models/Base.js +2 -0
  222. package/dist/esm/models/Base.js.map +1 -0
  223. package/dist/esm/models/Meta.d.ts +15 -0
  224. package/dist/esm/models/Meta.js +2 -0
  225. package/dist/esm/models/Meta.js.map +1 -0
  226. package/dist/esm/models/XyoPayload.d.ts +2 -0
  227. package/dist/esm/models/XyoPayload.js +2 -0
  228. package/dist/esm/models/XyoPayload.js.map +1 -0
  229. package/dist/esm/models/index.d.ts +3 -1
  230. package/dist/esm/models/index.js +3 -1
  231. package/dist/esm/models/index.js.map +1 -1
  232. package/dist/esm/shared.d.ts +1 -1
  233. package/dist/esm/shared.js +1 -1
  234. package/dist/esm/shared.js.map +1 -1
  235. package/package.json +1 -1
  236. package/src/BoundWitness/Builder/Builder.spec.ts +4 -3
  237. package/src/BoundWitness/Builder/Builder.ts +7 -7
  238. package/src/BoundWitness/Validator/BodyValidator.spec.ts +1 -1
  239. package/src/BoundWitness/Validator/BodyValidator.ts +26 -27
  240. package/src/BoundWitness/Validator/MetaValidator.spec.ts +10 -10
  241. package/src/BoundWitness/Validator/MetaValidator.ts +9 -13
  242. package/src/BoundWitness/Validator/Validator.spec.ts +1 -1
  243. package/src/BoundWitness/Validator/Validator.ts +11 -11
  244. package/src/BoundWitness/Wrapper/Wrapper.ts +4 -11
  245. package/src/BoundWitness/models/Base/XyoBoundWitnessBase.ts +10 -0
  246. package/src/BoundWitness/models/{Body/XyoBoundWitnessBodySchema.ts → Base/XyoBoundWitnessBaseSchema.ts} +1 -3
  247. package/src/BoundWitness/models/Base/index.ts +2 -0
  248. package/src/BoundWitness/models/Meta/XyoBoundWitnessMeta.ts +7 -10
  249. package/src/BoundWitness/models/WithXyoBoundWitnessMeta.ts +2 -2
  250. package/src/BoundWitness/models/XyoBoundWitness.ts +2 -6
  251. package/src/BoundWitness/models/index.ts +1 -1
  252. package/src/Hasher/XyoHasher.ts +31 -8
  253. package/src/Hasher/index.ts +0 -1
  254. package/src/Hasher/removeFields.ts +17 -9
  255. package/src/Hasher/sortFields.ts +8 -5
  256. package/src/Huri/Huri.spec.ts +1 -1
  257. package/src/Huri/Huri.ts +1 -1
  258. package/src/Payload/Builder/Builder.ts +3 -2
  259. package/src/Payload/Validator/BodyValidator.spec.ts +1 -1
  260. package/src/Payload/Validator/BodyValidator.ts +6 -13
  261. package/src/Payload/Validator/MetaValidator.spec.ts +1 -1
  262. package/src/Payload/Validator/MetaValidator.ts +7 -11
  263. package/src/Payload/Validator/Validator.spec.ts +16 -16
  264. package/src/Payload/Validator/Validator.ts +6 -8
  265. package/src/Payload/Wrapper/Validator.ts +6 -10
  266. package/src/Payload/Wrapper/Wrapper.ts +7 -13
  267. package/src/Payload/index.ts +0 -1
  268. package/src/Query/QueryPayload.ts +1 -1
  269. package/src/Schema/Payload.ts +3 -3
  270. package/src/Test/testBoundWitness.ts +2 -2
  271. package/src/Test/testPayload.ts +3 -2
  272. package/src/Wallet/Base/WordsPayload.ts +1 -1
  273. package/src/Witness/LegacyWitness.ts +2 -1
  274. package/src/Witness/QueryWitness.ts +2 -1
  275. package/src/Witness/Witness.ts +1 -1
  276. package/src/lib/StringKeyObject.ts +2 -0
  277. package/src/lib/XyoObject.ts +11 -0
  278. package/src/lib/XyoValidator.ts +5 -0
  279. package/src/lib/index.ts +3 -0
  280. package/src/lib/isXyoPayloadOfSchemaType.ts +1 -1
  281. package/src/models/Base.ts +6 -0
  282. package/src/models/Meta.ts +17 -0
  283. package/src/models/XyoPayload.ts +3 -0
  284. package/src/models/index.ts +3 -1
  285. package/src/shared.ts +1 -1
  286. package/src/BoundWitness/models/Body/XyoBoundWitnessBody.ts +0 -13
  287. package/src/BoundWitness/models/Body/index.ts +0 -2
  288. package/src/Hasher/XyoAbstractHasher.ts +0 -37
  289. package/src/Payload/models/Body.ts +0 -7
  290. package/src/Payload/models/Meta.ts +0 -11
  291. package/src/Payload/models/WithXyoPayloadMeta.ts +0 -6
  292. package/src/Payload/models/XyoPayload.ts +0 -6
  293. package/src/Payload/models/index.ts +0 -4
  294. package/src/models/WithStringIndex.ts +0 -1
@@ -1,22 +1,17 @@
1
- import { WithStringIndex } from '../../models'
1
+ import { XyoValidator } from '../../lib'
2
+ import { XyoPayload } from '../../models'
2
3
  import { XyoSchemaNameValidator } from '../../SchemaNameValidator'
3
- import { XyoPayloadBody } from '../models'
4
-
5
- class XyoPayloadBodyValidator {
6
- private body: WithStringIndex<XyoPayloadBody>
7
- constructor(body: XyoPayloadBody) {
8
- this.body = body as WithStringIndex<XyoPayloadBody>
9
- }
10
4
 
5
+ export class XyoPayloadBodyValidator<T extends XyoPayload = XyoPayload> extends XyoValidator<T> {
11
6
  private _schemaValidator?: XyoSchemaNameValidator
12
7
  get schemaValidator() {
13
- this._schemaValidator = this._schemaValidator ?? new XyoSchemaNameValidator(this.body.schema ?? '')
8
+ this._schemaValidator = this._schemaValidator ?? new XyoSchemaNameValidator(this.obj.schema ?? '')
14
9
  return this._schemaValidator
15
10
  }
16
11
 
17
12
  public schemaName() {
18
13
  const errors: Error[] = []
19
- if (this.body.schema === undefined) {
14
+ if (this.obj.schema === undefined) {
20
15
  errors.push(Error('schema missing'))
21
16
  } else {
22
17
  errors.push(...this.schemaValidator.all())
@@ -24,11 +19,9 @@ class XyoPayloadBodyValidator {
24
19
  return errors
25
20
  }
26
21
 
27
- public all() {
22
+ public validate() {
28
23
  const errors: Error[] = []
29
24
  errors.push(...this.schemaName())
30
25
  return errors
31
26
  }
32
27
  }
33
-
34
- export { XyoPayloadBodyValidator }
@@ -4,7 +4,7 @@ import { XyoPayloadMetaValidator } from './MetaValidator'
4
4
 
5
5
  test('all', () => {
6
6
  const validator = new XyoPayloadMetaValidator(testPayload)
7
- const errors = validator.all()
7
+ const errors = validator.validate()
8
8
  dumpErrors(errors)
9
9
  expect(errors.length).toBe(0)
10
10
  })
@@ -1,34 +1,30 @@
1
1
  import { XyoHasher } from '../../Hasher'
2
- import { XyoPayload } from '../models'
2
+ import { XyoValidator } from '../../lib'
3
+ import { XyoPayloadMeta } from '../../models'
3
4
 
4
5
  const MIN_ALLOWED_TIMESTAMP = 1609459200000
5
6
  const MAX_ALLOWED_TIMESTAMP = 4102444800000
6
7
 
7
- class XyoPayloadMetaValidator {
8
- private payload: XyoPayload
9
- constructor(payload: XyoPayload) {
10
- this.payload = payload
11
- }
12
-
8
+ class XyoPayloadMetaValidator<T extends XyoPayloadMeta = XyoPayloadMeta> extends XyoValidator<T> {
13
9
  public hash() {
14
10
  const errors: Error[] = []
15
- const wrapper = new XyoHasher(this.payload)
11
+ const wrapper = new XyoHasher(this.obj)
16
12
 
17
13
  const bodyHash = wrapper.hash
18
- if (bodyHash !== this.payload._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.payload._hash}]`))
14
+ if (bodyHash !== this.obj._hash) errors.push(new Error(`Body hash mismatch: [calculated: ${bodyHash}] [found: ${this.obj._hash}]`))
19
15
  return errors
20
16
  }
21
17
 
22
18
  public timestamp() {
23
19
  const errors: Error[] = []
24
- const { _timestamp } = this.payload
20
+ const { _timestamp } = this.obj
25
21
  if (_timestamp === undefined) errors.push(new Error('Missing _timestamp'))
26
22
  else if (_timestamp < MIN_ALLOWED_TIMESTAMP) errors.push(new Error('_timestamp is before year 2021'))
27
23
  else if (_timestamp > MAX_ALLOWED_TIMESTAMP) errors.push(new Error('_timestamp is after year 2100'))
28
24
  return errors
29
25
  }
30
26
 
31
- public all() {
27
+ public validate() {
32
28
  const errors: Error[] = []
33
29
  errors.push(...this.hash(), ...this.timestamp())
34
30
  return errors
@@ -1,53 +1,53 @@
1
1
  import { dumpErrors } from '../../lib'
2
- import { XyoPayload } from '../models'
2
+ import { XyoPayloadWithMeta } from '../../models'
3
3
  import { XyoPayloadValidator } from './Validator'
4
4
 
5
- const testPayloadNoSchema: XyoPayload = {
5
+ const testPayloadNoSchema: XyoPayloadWithMeta = {
6
6
  _hash: '44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a',
7
7
  _timestamp: 1609459255555,
8
- } as XyoPayload
9
- const testPayloadMixedCase: XyoPayload = {
8
+ } as XyoPayloadWithMeta
9
+ const testPayloadMixedCase: XyoPayloadWithMeta = {
10
10
  _hash: '9a67116e05c33135f6ba23768f9a3fbbba155297ee1bb0a7e21d91fdc3835769',
11
11
  _timestamp: 1609459255555,
12
12
  schema: 'network.xyo.testMixedCaseSchema',
13
- }
14
- const testPayloadTooFewLevels: XyoPayload = {
13
+ } as XyoPayloadWithMeta
14
+ const testPayloadTooFewLevels: XyoPayloadWithMeta = {
15
15
  _hash: '95206b26e3173deaac5e3f5d4510d50112b6348d3a2128b1eb6fe3ca66957628',
16
16
  _timestamp: 1609459255555,
17
17
  schema: 'network.xyo',
18
- }
19
- const testPayloadDoesNotExist: XyoPayload = {
18
+ } as XyoPayloadWithMeta
19
+ const testPayloadDoesNotExist: XyoPayloadWithMeta = {
20
20
  _hash: '360b4ce36862ef2a20dd572d69283a86d351b2b4a9cd4f61ae6f7a320be81dbf',
21
21
  _timestamp: 1609459255555,
22
22
  schema: 'network.dfd-sf-sf-s.blahblah',
23
- }
24
- const testPayloadValid: XyoPayload = {
23
+ } as XyoPayloadWithMeta
24
+ const testPayloadValid: XyoPayloadWithMeta = {
25
25
  _hash: '4b5958c6d16b26d6790e33f5be45578728b0ea36e40a0d1b9c9164822341cac1',
26
26
  _timestamp: 1609459255555,
27
27
  schema: 'network.xyo.test',
28
- }
28
+ } as XyoPayloadWithMeta
29
29
 
30
30
  test('all [missing schema]', () => {
31
31
  const validator = new XyoPayloadValidator(testPayloadNoSchema)
32
- const errors = validator.all()
32
+ const errors = validator.validate()
33
33
  expect(errors.length).toBe(1)
34
34
  })
35
35
 
36
36
  test('all [mixed case]', () => {
37
37
  const validator = new XyoPayloadValidator(testPayloadMixedCase)
38
- const errors = validator.all()
38
+ const errors = validator.validate()
39
39
  expect(errors.length).toBe(1)
40
40
  })
41
41
 
42
42
  test('all [too few levels]', () => {
43
43
  const validator = new XyoPayloadValidator(testPayloadTooFewLevels)
44
- const errors = validator.all()
44
+ const errors = validator.validate()
45
45
  expect(errors.length).toBe(1)
46
46
  })
47
47
 
48
48
  test('all [does not exist]', () => {
49
49
  const validator = new XyoPayloadValidator(testPayloadDoesNotExist)
50
- const errors = validator.all()
50
+ const errors = validator.validate()
51
51
  dumpErrors(errors)
52
52
  expect(errors.length).toBe(0)
53
53
  })
@@ -56,7 +56,7 @@ test('all [valid]', () => {
56
56
  const validator = new XyoPayloadValidator(testPayloadValid)
57
57
 
58
58
  let errors: Error[] = []
59
- errors = validator.all()
59
+ errors = validator.validate()
60
60
  dumpErrors(errors)
61
61
  expect(errors.length).toBe(0)
62
62
  })
@@ -1,22 +1,20 @@
1
- import { XyoPayload } from '../models'
1
+ import { XyoValidator } from '../../lib'
2
+ import { XyoPayloadWithMeta } from '../../models'
2
3
  import { XyoPayloadBodyValidator } from './BodyValidator'
3
4
  import { XyoPayloadMetaValidator } from './MetaValidator'
4
5
 
5
- class XyoPayloadValidator<T extends XyoPayload = XyoPayload> {
6
- protected payload: T
6
+ export class XyoPayloadValidator<T extends XyoPayloadWithMeta = XyoPayloadWithMeta> extends XyoValidator<T> {
7
7
  public body: XyoPayloadBodyValidator
8
8
  public meta: XyoPayloadMetaValidator
9
9
  constructor(payload: T) {
10
- this.payload = payload
10
+ super(payload)
11
11
  this.body = new XyoPayloadBodyValidator(payload)
12
12
  this.meta = new XyoPayloadMetaValidator(payload)
13
13
  }
14
14
 
15
- public all() {
15
+ public validate() {
16
16
  const errors: Error[] = []
17
- errors.push(...this.body.all())
17
+ errors.push(...this.body.validate())
18
18
  return errors
19
19
  }
20
20
  }
21
-
22
- export { XyoPayloadValidator }
@@ -1,20 +1,16 @@
1
- import { XyoPayload } from '../models'
1
+ import { XyoValidator } from '../../lib'
2
+ import { XyoPayloadWithMeta } from '../../models'
2
3
  import { XyoPayloadValidator } from '../Validator'
3
4
  import { XyoPayloadWrapper } from './Wrapper'
4
5
 
5
- export class XyoPayloadWrapperValidator<T extends XyoPayloadWrapper<XyoPayload> = XyoPayloadWrapper<XyoPayload>> {
6
- protected wrapper: T
7
- constructor(wrapper: T) {
8
- this.wrapper = wrapper
9
- }
10
-
6
+ export class XyoPayloadWrapperValidator<T extends XyoPayloadWrapper<XyoPayloadWithMeta> = XyoPayloadWrapper<XyoPayloadWithMeta>> extends XyoValidator<T> {
11
7
  public get payload() {
12
- return new XyoPayloadValidator(this.wrapper.payload)
8
+ return new XyoPayloadValidator(this.obj.body)
13
9
  }
14
10
 
15
- public all() {
11
+ public validate() {
16
12
  const errors: Error[] = []
17
- errors.push(...this.payload.all())
13
+ errors.push(...this.payload.validate())
18
14
  return errors
19
15
  }
20
16
  }
@@ -1,25 +1,19 @@
1
- import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoAbstractHasher } from '../../Hasher'
1
+ import { deepOmitUnderscoreFields, deepPickUnderscoreFields, XyoHasher } from '../../Hasher'
2
2
  import { Huri } from '../../Huri'
3
+ import { XyoPayload } from '../../models'
3
4
  import { XyoDataLike } from '../../Wallet'
4
- import { XyoPayload } from '../models'
5
5
 
6
- export class XyoPayloadWrapper<T extends XyoPayload> extends XyoAbstractHasher<T> {
7
- public payload: T
8
- constructor(payload: T) {
9
- super()
10
- this.payload = payload
11
- }
12
-
13
- protected get obj() {
14
- return this.payload
6
+ export class XyoPayloadWrapper<T extends XyoPayload> extends XyoHasher<T> {
7
+ public get payload() {
8
+ return this.obj
15
9
  }
16
10
 
17
11
  public get body() {
18
- return deepOmitUnderscoreFields(this.payload)
12
+ return deepOmitUnderscoreFields<T>(this.obj)
19
13
  }
20
14
 
21
15
  public get meta() {
22
- return deepPickUnderscoreFields(this.payload)
16
+ return deepPickUnderscoreFields<T>(this.obj)
23
17
  }
24
18
 
25
19
  public static async load(address: XyoDataLike | Huri) {
@@ -1,4 +1,3 @@
1
1
  export * from './Builder'
2
- export * from './models'
3
2
  export * from './Validator'
4
3
  export * from './Wrapper'
@@ -1,4 +1,4 @@
1
- import { XyoPayload } from '../Payload'
1
+ import { XyoPayload } from '../models'
2
2
 
3
3
  export interface XyoQueryPayload extends XyoPayload {
4
4
  /** @field The preferred schema to use for the answer */
@@ -1,6 +1,6 @@
1
- import { XyoPayload } from '../Payload'
1
+ import { XyoPayload } from '../models'
2
2
 
3
- export interface XyoSchemaPayload extends XyoPayload {
3
+ export type XyoSchemaPayload = XyoPayload<{
4
4
  /** @deprecated use definition.$id instead */
5
5
  name?: string
6
6
  definition: {
@@ -8,4 +8,4 @@ export interface XyoSchemaPayload extends XyoPayload {
8
8
  [key: string]: unknown
9
9
  }
10
10
  extends?: string
11
- }
11
+ }>
@@ -1,6 +1,6 @@
1
- import { XyoBoundWitness } from '../BoundWitness'
1
+ import { XyoBoundWitnessWithMeta } from '../BoundWitness'
2
2
 
3
- const testBoundWitness: XyoBoundWitness = {
3
+ const testBoundWitness: XyoBoundWitnessWithMeta = {
4
4
  _archive: 'temp',
5
5
  _client: 'js',
6
6
  _hash: 'b0ffb9ebf872dc316b7be48327256c5316f7cb84d7c706861b18b86af1942dea',
@@ -1,7 +1,8 @@
1
- import { XyoPayload } from '../Payload'
1
+ import { WithAdditional } from '../lib'
2
+ import { XyoPayloadWithMeta } from '../models'
2
3
 
3
4
  const testSchema = 'network.xyo.test'
4
- const testPayload: XyoPayload = {
5
+ const testPayload: WithAdditional<XyoPayloadWithMeta> = {
5
6
  _archive: 'test',
6
7
  _hash: '20e14207f952a09f767ff614a648546c037fe524ace0bfe55db31f818aff1f1c',
7
8
  _timestamp: 1609459255555,
@@ -1,4 +1,4 @@
1
- import { XyoPayload } from '../../Payload'
1
+ import { XyoPayload } from '../../models'
2
2
 
3
3
  export interface XyoWordsPayload extends XyoPayload {
4
4
  words: string[]
@@ -1,4 +1,5 @@
1
- import { XyoPayload, XyoPayloadBuilder } from '../Payload'
1
+ import { XyoPayload } from '../models'
2
+ import { XyoPayloadBuilder } from '../Payload'
2
3
  import { XyoWitness } from './Witness'
3
4
 
4
5
  export interface XyoSimpleWitnessConfig<T extends XyoPayload = XyoPayload> {
@@ -1,6 +1,7 @@
1
1
  import { delay } from '@xylabs/sdk-js'
2
2
 
3
- import { XyoPayload, XyoPayloadBuilder } from '../Payload'
3
+ import { XyoPayload } from '../models'
4
+ import { XyoPayloadBuilder } from '../Payload'
4
5
  import { XyoQueryPayload } from '../Query'
5
6
  import { XyoWitness } from './Witness'
6
7
 
@@ -1,4 +1,4 @@
1
- import { XyoPayload } from '../Payload'
1
+ import { XyoPayload } from '../models'
2
2
 
3
3
  export abstract class XyoWitness<T extends XyoPayload = XyoPayload> {
4
4
  abstract observe(fields?: Partial<T>): Promise<T>
@@ -0,0 +1,2 @@
1
+ export type StringKeyObject = { [key: string]: unknown }
2
+ export type WithAdditional<T> = T & StringKeyObject
@@ -0,0 +1,11 @@
1
+ import { StringKeyObject } from './StringKeyObject'
2
+
3
+ export abstract class XyoObject<T extends object = object> {
4
+ public readonly obj: T
5
+ constructor(obj: T) {
6
+ this.obj = obj
7
+ }
8
+ protected get stringKeyObj() {
9
+ return this.obj as unknown as StringKeyObject
10
+ }
11
+ }
@@ -0,0 +1,5 @@
1
+ import { XyoObject } from './XyoObject'
2
+
3
+ export abstract class XyoValidator<T extends object = object> extends XyoObject<T> {
4
+ public abstract validate(payload: T): Error[]
5
+ }
package/src/lib/index.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export * from './dns'
2
2
  export * from './dumpErrors'
3
3
  export * from './isBrowser'
4
+ export * from './StringKeyObject'
4
5
  export * from './typeOf'
6
+ export * from './XyoObject'
7
+ export * from './XyoValidator'
@@ -1,5 +1,5 @@
1
1
  import { XyoBoundWitness } from '../BoundWitness'
2
- import { XyoPayload } from '../Payload'
2
+ import { XyoPayload } from '../models'
3
3
  import { XyoSchemaPayload } from '../Schema'
4
4
 
5
5
  export const isXyoPayloadOfSchemaType = <T extends XyoPayload>(schema: string) => {
@@ -0,0 +1,6 @@
1
+ export interface XyoPayloadBase {
2
+ schema: string
3
+ previousHash?: string
4
+ sources?: string[]
5
+ timestamp?: number
6
+ }
@@ -0,0 +1,17 @@
1
+ import { XyoPayloadBase } from './Base'
2
+ import { XyoPayload } from './XyoPayload'
3
+
4
+ export interface XyoPayloadMetaBase {
5
+ _hash: string
6
+ _observeDuration?: number
7
+ _archive: string
8
+ _client?: string
9
+ _reportedHash?: string
10
+ _timestamp: number
11
+ _sources?: XyoPayload[]
12
+ }
13
+
14
+ export type XyoPayloadMeta<T = unknown> = T & XyoPayloadMetaBase
15
+ export type XyoPartialPayloadMeta<T = unknown> = T & Partial<XyoPayloadMetaBase>
16
+ export type XyoPayloadWithMeta<T = unknown> = T & XyoPayloadMetaBase & XyoPayloadBase
17
+ export type XyoPayloadWithPartialMeta<T = unknown> = T & Partial<XyoPayloadMetaBase> & XyoPayloadBase
@@ -0,0 +1,3 @@
1
+ import { XyoPayloadBase } from './Base'
2
+
3
+ export type XyoPayload<T extends object = object> = T & XyoPayloadBase
@@ -1 +1,3 @@
1
- export * from './WithStringIndex'
1
+ export * from './Base'
2
+ export * from './Meta'
3
+ export * from './XyoPayload'
package/src/shared.ts CHANGED
@@ -2,10 +2,10 @@ export * from './BoundWitness'
2
2
  export * from './Hasher'
3
3
  export * from './Huri'
4
4
  export * from './lib'
5
- export * from './models'
6
5
  export * from './Payload'
7
6
  export * from './Query'
8
7
  export * from './Schema'
9
8
  export * from './SchemaNameValidator'
10
9
  export * from './Wallet'
11
10
  export * from './Witness'
11
+ export * from './models'
@@ -1,13 +0,0 @@
1
- import { XyoPayloadBody } from '../../../Payload'
2
-
3
- interface XyoBoundWitnessBody extends XyoPayloadBody {
4
- [key: string]: unknown
5
- addresses: string[]
6
- previous_hash?: string
7
- payload_hashes: string[]
8
- payload_schemas: string[]
9
- previous_hashes: (string | null)[]
10
- schema: string
11
- }
12
-
13
- export type { XyoBoundWitnessBody }
@@ -1,2 +0,0 @@
1
- export * from './XyoBoundWitnessBody'
2
- export * from './XyoBoundWitnessBodySchema'
@@ -1,37 +0,0 @@
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,7 +0,0 @@
1
- interface XyoPayloadBody {
2
- [key: string]: unknown
3
- schema: string
4
- previousHash?: string
5
- }
6
-
7
- export type { XyoPayloadBody }
@@ -1,11 +0,0 @@
1
- interface XyoPayloadMeta {
2
- [key: string]: unknown
3
- _hash?: string
4
- _client?: string
5
- _reportedHash?: string
6
- _timestamp?: number
7
- _observeDuration?: number
8
- _archive?: string
9
- }
10
-
11
- export type { XyoPayloadMeta }
@@ -1,6 +0,0 @@
1
- import { XyoPayloadBody } from './Body'
2
- import { XyoPayloadMeta } from './Meta'
3
-
4
- type WithXyoPayloadMeta<T extends XyoPayloadBody> = T & XyoPayloadMeta
5
-
6
- export type { WithXyoPayloadMeta }
@@ -1,6 +0,0 @@
1
- import { XyoPayloadBody } from './Body'
2
- import { WithXyoPayloadMeta } from './WithXyoPayloadMeta'
3
-
4
- export type XyoPayloadFull = WithXyoPayloadMeta<XyoPayloadBody>
5
-
6
- export type XyoPayload<T = XyoPayloadFull> = T extends XyoPayloadFull ? T : XyoPayloadFull & T
@@ -1,4 +0,0 @@
1
- export * from './Body'
2
- export * from './Meta'
3
- export * from './WithXyoPayloadMeta'
4
- export * from './XyoPayload'
@@ -1 +0,0 @@
1
- export type WithStringIndex<T> = T & Record<string, unknown>