@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.
- package/dist/cjs/BoundWitness/Builder/Builder.d.ts +5 -5
- package/dist/cjs/BoundWitness/Builder/Builder.js.map +1 -1
- package/dist/cjs/BoundWitness/Validator/BodyValidator.d.ts +7 -8
- package/dist/cjs/BoundWitness/Validator/BodyValidator.js +23 -20
- package/dist/cjs/BoundWitness/Validator/BodyValidator.js.map +1 -1
- package/dist/cjs/BoundWitness/Validator/MetaValidator.d.ts +4 -5
- package/dist/cjs/BoundWitness/Validator/MetaValidator.js +9 -11
- package/dist/cjs/BoundWitness/Validator/MetaValidator.js.map +1 -1
- package/dist/cjs/BoundWitness/Validator/Validator.d.ts +5 -5
- package/dist/cjs/BoundWitness/Validator/Validator.js +9 -8
- package/dist/cjs/BoundWitness/Validator/Validator.js.map +1 -1
- package/dist/cjs/BoundWitness/Wrapper/Wrapper.d.ts +5 -7
- package/dist/cjs/BoundWitness/Wrapper/Wrapper.js +5 -8
- package/dist/cjs/BoundWitness/Wrapper/Wrapper.js.map +1 -1
- package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBase.d.ts +9 -0
- package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBase.js +3 -0
- package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBase.js.map +1 -0
- package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
- package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js +19 -0
- package/dist/cjs/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
- package/dist/cjs/BoundWitness/models/Base/index.d.ts +2 -0
- package/dist/cjs/BoundWitness/models/Base/index.js +6 -0
- package/dist/cjs/BoundWitness/models/Base/index.js.map +1 -0
- package/dist/cjs/BoundWitness/models/Body/XyoBoundWitnessBody.d.ts +3 -5
- package/dist/cjs/BoundWitness/models/Meta/XyoBoundWitnessMeta.d.ts +7 -10
- package/dist/cjs/BoundWitness/models/WithXyoBoundWitnessMeta.d.ts +2 -2
- package/dist/cjs/BoundWitness/models/XyoBoundWitness.d.ts +2 -5
- package/dist/cjs/BoundWitness/models/index.d.ts +1 -1
- package/dist/cjs/BoundWitness/models/index.js +1 -1
- package/dist/cjs/Hasher/XyoAbstractHasher.d.ts +2 -2
- package/dist/cjs/Hasher/XyoAbstractHasher.js +3 -2
- package/dist/cjs/Hasher/XyoAbstractHasher.js.map +1 -1
- package/dist/cjs/Hasher/XyoHasher.d.ts +10 -5
- package/dist/cjs/Hasher/XyoHasher.js +28 -8
- package/dist/cjs/Hasher/XyoHasher.js.map +1 -1
- package/dist/cjs/Hasher/index.d.ts +0 -1
- package/dist/cjs/Hasher/index.js +0 -1
- package/dist/cjs/Hasher/index.js.map +1 -1
- package/dist/cjs/Hasher/removeFields.d.ts +3 -3
- package/dist/cjs/Hasher/removeFields.js +8 -5
- package/dist/cjs/Hasher/removeFields.js.map +1 -1
- package/dist/cjs/Hasher/sortFields.d.ts +1 -1
- package/dist/cjs/Hasher/sortFields.js +3 -2
- package/dist/cjs/Hasher/sortFields.js.map +1 -1
- package/dist/cjs/Huri/Huri.d.ts +2 -2
- package/dist/cjs/Payload/Builder/Builder.d.ts +3 -2
- package/dist/cjs/Payload/Builder/Builder.js.map +1 -1
- package/dist/cjs/Payload/Validator/BodyValidator.d.ts +4 -6
- package/dist/cjs/Payload/Validator/BodyValidator.js +5 -7
- package/dist/cjs/Payload/Validator/BodyValidator.js.map +1 -1
- package/dist/cjs/Payload/Validator/MetaValidator.d.ts +4 -5
- package/dist/cjs/Payload/Validator/MetaValidator.js +7 -9
- package/dist/cjs/Payload/Validator/MetaValidator.js.map +1 -1
- package/dist/cjs/Payload/Validator/Validator.d.ts +4 -5
- package/dist/cjs/Payload/Validator/Validator.js +5 -4
- package/dist/cjs/Payload/Validator/Validator.js.map +1 -1
- package/dist/cjs/Payload/Wrapper/Validator.d.ts +5 -6
- package/dist/cjs/Payload/Wrapper/Validator.js +5 -7
- package/dist/cjs/Payload/Wrapper/Validator.js.map +1 -1
- package/dist/cjs/Payload/Wrapper/Wrapper.d.ts +5 -7
- package/dist/cjs/Payload/Wrapper/Wrapper.js +5 -9
- package/dist/cjs/Payload/Wrapper/Wrapper.js.map +1 -1
- package/dist/cjs/Payload/index.d.ts +0 -1
- package/dist/cjs/Payload/index.js +0 -1
- package/dist/cjs/Payload/index.js.map +1 -1
- package/dist/cjs/Payload/models/Base.d.ts +6 -0
- package/dist/cjs/Payload/models/Base.js +3 -0
- package/dist/cjs/Payload/models/Base.js.map +1 -0
- package/dist/cjs/Payload/models/Body.d.ts +2 -3
- package/dist/cjs/Payload/models/Meta.d.ts +12 -7
- package/dist/cjs/Payload/models/WithAdditional.d.ts +4 -0
- package/dist/cjs/Payload/models/WithAdditional.js +3 -0
- package/dist/cjs/Payload/models/WithAdditional.js.map +1 -0
- package/dist/cjs/Payload/models/XyoPayload.d.ts +2 -4
- package/dist/cjs/Payload/models/index.d.ts +1 -2
- package/dist/cjs/Payload/models/index.js +1 -2
- package/dist/cjs/Payload/models/index.js.map +1 -1
- package/dist/cjs/Query/QueryPayload.d.ts +1 -1
- package/dist/cjs/Schema/Payload.d.ts +3 -3
- package/dist/cjs/Test/testBoundWitness.d.ts +2 -2
- package/dist/cjs/Test/testBoundWitness.js.map +1 -1
- package/dist/cjs/Test/testPayload.d.ts +3 -2
- package/dist/cjs/Test/testPayload.js.map +1 -1
- package/dist/cjs/Wallet/Base/WordsPayload.d.ts +1 -1
- package/dist/cjs/Witness/LegacyWitness.d.ts +3 -3
- package/dist/cjs/Witness/LegacyWitness.js.map +1 -1
- package/dist/cjs/Witness/QueryWitness.d.ts +1 -1
- package/dist/cjs/Witness/QueryWitness.js.map +1 -1
- package/dist/cjs/Witness/Witness.d.ts +1 -1
- package/dist/cjs/lib/StringKeyObject.d.ts +4 -0
- package/dist/cjs/lib/StringKeyObject.js +3 -0
- package/dist/cjs/lib/StringKeyObject.js.map +1 -0
- package/dist/cjs/lib/XyoObject.d.ts +6 -0
- package/dist/cjs/lib/XyoObject.js +13 -0
- package/dist/cjs/lib/XyoObject.js.map +1 -0
- package/dist/cjs/lib/XyoValidator.d.ts +4 -0
- package/dist/cjs/lib/XyoValidator.js +8 -0
- package/dist/cjs/lib/XyoValidator.js.map +1 -0
- package/dist/cjs/lib/index.d.ts +3 -0
- package/dist/cjs/lib/index.js +3 -0
- package/dist/cjs/lib/index.js.map +1 -1
- package/dist/cjs/lib/isXyoPayloadOfSchemaType.d.ts +3 -3
- package/dist/cjs/models/Base.d.ts +6 -0
- package/dist/cjs/models/Base.js +3 -0
- package/dist/cjs/models/Base.js.map +1 -0
- package/dist/cjs/models/Meta.d.ts +15 -0
- package/dist/cjs/models/Meta.js +3 -0
- package/dist/cjs/models/Meta.js.map +1 -0
- package/dist/cjs/models/XyoPayload.d.ts +2 -0
- package/dist/cjs/models/XyoPayload.js +3 -0
- package/dist/cjs/models/XyoPayload.js.map +1 -0
- package/dist/cjs/models/index.d.ts +3 -1
- package/dist/cjs/models/index.js +3 -1
- package/dist/cjs/models/index.js.map +1 -1
- package/dist/cjs/shared.d.ts +1 -1
- package/dist/cjs/shared.js +1 -1
- package/dist/cjs/shared.js.map +1 -1
- package/dist/esm/BoundWitness/Builder/Builder.d.ts +5 -5
- package/dist/esm/BoundWitness/Builder/Builder.js.map +1 -1
- package/dist/esm/BoundWitness/Validator/BodyValidator.d.ts +7 -8
- package/dist/esm/BoundWitness/Validator/BodyValidator.js +24 -22
- package/dist/esm/BoundWitness/Validator/BodyValidator.js.map +1 -1
- package/dist/esm/BoundWitness/Validator/MetaValidator.d.ts +4 -5
- package/dist/esm/BoundWitness/Validator/MetaValidator.js +9 -11
- package/dist/esm/BoundWitness/Validator/MetaValidator.js.map +1 -1
- package/dist/esm/BoundWitness/Validator/Validator.d.ts +5 -5
- package/dist/esm/BoundWitness/Validator/Validator.js +9 -8
- package/dist/esm/BoundWitness/Validator/Validator.js.map +1 -1
- package/dist/esm/BoundWitness/Wrapper/Wrapper.d.ts +5 -7
- package/dist/esm/BoundWitness/Wrapper/Wrapper.js +3 -7
- package/dist/esm/BoundWitness/Wrapper/Wrapper.js.map +1 -1
- package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBase.d.ts +9 -0
- package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBase.js +2 -0
- package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBase.js.map +1 -0
- package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
- package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js +16 -0
- package/dist/esm/BoundWitness/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
- package/dist/esm/BoundWitness/models/Base/index.d.ts +2 -0
- package/dist/esm/BoundWitness/models/Base/index.js +3 -0
- package/dist/esm/BoundWitness/models/Base/index.js.map +1 -0
- package/dist/esm/BoundWitness/models/Body/XyoBoundWitnessBody.d.ts +3 -5
- package/dist/esm/BoundWitness/models/Meta/XyoBoundWitnessMeta.d.ts +7 -10
- package/dist/esm/BoundWitness/models/WithXyoBoundWitnessMeta.d.ts +2 -2
- package/dist/esm/BoundWitness/models/XyoBoundWitness.d.ts +2 -5
- package/dist/esm/BoundWitness/models/index.d.ts +1 -1
- package/dist/esm/BoundWitness/models/index.js +1 -1
- package/dist/esm/Hasher/XyoAbstractHasher.d.ts +2 -2
- package/dist/esm/Hasher/XyoAbstractHasher.js +3 -2
- package/dist/esm/Hasher/XyoAbstractHasher.js.map +1 -1
- package/dist/esm/Hasher/XyoHasher.d.ts +10 -5
- package/dist/esm/Hasher/XyoHasher.js +27 -8
- package/dist/esm/Hasher/XyoHasher.js.map +1 -1
- package/dist/esm/Hasher/index.d.ts +0 -1
- package/dist/esm/Hasher/index.js +0 -1
- package/dist/esm/Hasher/index.js.map +1 -1
- package/dist/esm/Hasher/removeFields.d.ts +3 -3
- package/dist/esm/Hasher/removeFields.js +8 -5
- package/dist/esm/Hasher/removeFields.js.map +1 -1
- package/dist/esm/Hasher/sortFields.d.ts +1 -1
- package/dist/esm/Hasher/sortFields.js +3 -2
- package/dist/esm/Hasher/sortFields.js.map +1 -1
- package/dist/esm/Huri/Huri.d.ts +2 -2
- package/dist/esm/Payload/Builder/Builder.d.ts +3 -2
- package/dist/esm/Payload/Builder/Builder.js.map +1 -1
- package/dist/esm/Payload/Validator/BodyValidator.d.ts +4 -6
- package/dist/esm/Payload/Validator/BodyValidator.js +5 -8
- package/dist/esm/Payload/Validator/BodyValidator.js.map +1 -1
- package/dist/esm/Payload/Validator/MetaValidator.d.ts +4 -5
- package/dist/esm/Payload/Validator/MetaValidator.js +7 -9
- package/dist/esm/Payload/Validator/MetaValidator.js.map +1 -1
- package/dist/esm/Payload/Validator/Validator.d.ts +4 -5
- package/dist/esm/Payload/Validator/Validator.js +5 -5
- package/dist/esm/Payload/Validator/Validator.js.map +1 -1
- package/dist/esm/Payload/Wrapper/Validator.d.ts +5 -6
- package/dist/esm/Payload/Wrapper/Validator.js +5 -7
- package/dist/esm/Payload/Wrapper/Validator.js.map +1 -1
- package/dist/esm/Payload/Wrapper/Wrapper.d.ts +5 -7
- package/dist/esm/Payload/Wrapper/Wrapper.js +6 -10
- package/dist/esm/Payload/Wrapper/Wrapper.js.map +1 -1
- package/dist/esm/Payload/index.d.ts +0 -1
- package/dist/esm/Payload/index.js +0 -1
- package/dist/esm/Payload/index.js.map +1 -1
- package/dist/esm/Payload/models/Base.d.ts +6 -0
- package/dist/esm/Payload/models/Base.js +2 -0
- package/dist/esm/Payload/models/Base.js.map +1 -0
- package/dist/esm/Payload/models/Body.d.ts +2 -3
- package/dist/esm/Payload/models/Meta.d.ts +12 -7
- package/dist/esm/Payload/models/WithAdditional.d.ts +4 -0
- package/dist/esm/Payload/models/WithAdditional.js +2 -0
- package/dist/esm/Payload/models/WithAdditional.js.map +1 -0
- package/dist/esm/Payload/models/XyoPayload.d.ts +2 -4
- package/dist/esm/Payload/models/index.d.ts +1 -2
- package/dist/esm/Payload/models/index.js +1 -2
- package/dist/esm/Payload/models/index.js.map +1 -1
- package/dist/esm/Query/QueryPayload.d.ts +1 -1
- package/dist/esm/Schema/Payload.d.ts +3 -3
- package/dist/esm/Test/testBoundWitness.d.ts +2 -2
- package/dist/esm/Test/testBoundWitness.js.map +1 -1
- package/dist/esm/Test/testPayload.d.ts +3 -2
- package/dist/esm/Test/testPayload.js.map +1 -1
- package/dist/esm/Wallet/Base/WordsPayload.d.ts +1 -1
- package/dist/esm/Witness/LegacyWitness.d.ts +1 -1
- package/dist/esm/Witness/LegacyWitness.js.map +1 -1
- package/dist/esm/Witness/QueryWitness.d.ts +1 -1
- package/dist/esm/Witness/QueryWitness.js.map +1 -1
- package/dist/esm/Witness/Witness.d.ts +1 -1
- package/dist/esm/lib/StringKeyObject.d.ts +4 -0
- package/dist/esm/lib/StringKeyObject.js +2 -0
- package/dist/esm/lib/StringKeyObject.js.map +1 -0
- package/dist/esm/lib/XyoObject.d.ts +6 -0
- package/dist/esm/lib/XyoObject.js +9 -0
- package/dist/esm/lib/XyoObject.js.map +1 -0
- package/dist/esm/lib/XyoValidator.d.ts +4 -0
- package/dist/esm/lib/XyoValidator.js +4 -0
- package/dist/esm/lib/XyoValidator.js.map +1 -0
- package/dist/esm/lib/index.d.ts +3 -0
- package/dist/esm/lib/index.js +3 -0
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/isXyoPayloadOfSchemaType.d.ts +3 -3
- package/dist/esm/models/Base.d.ts +6 -0
- package/dist/esm/models/Base.js +2 -0
- package/dist/esm/models/Base.js.map +1 -0
- package/dist/esm/models/Meta.d.ts +15 -0
- package/dist/esm/models/Meta.js +2 -0
- package/dist/esm/models/Meta.js.map +1 -0
- package/dist/esm/models/XyoPayload.d.ts +2 -0
- package/dist/esm/models/XyoPayload.js +2 -0
- package/dist/esm/models/XyoPayload.js.map +1 -0
- package/dist/esm/models/index.d.ts +3 -1
- package/dist/esm/models/index.js +3 -1
- package/dist/esm/models/index.js.map +1 -1
- package/dist/esm/shared.d.ts +1 -1
- package/dist/esm/shared.js +1 -1
- package/dist/esm/shared.js.map +1 -1
- package/package.json +1 -1
- package/src/BoundWitness/Builder/Builder.spec.ts +4 -3
- package/src/BoundWitness/Builder/Builder.ts +7 -7
- package/src/BoundWitness/Validator/BodyValidator.spec.ts +1 -1
- package/src/BoundWitness/Validator/BodyValidator.ts +26 -27
- package/src/BoundWitness/Validator/MetaValidator.spec.ts +10 -10
- package/src/BoundWitness/Validator/MetaValidator.ts +9 -13
- package/src/BoundWitness/Validator/Validator.spec.ts +1 -1
- package/src/BoundWitness/Validator/Validator.ts +11 -11
- package/src/BoundWitness/Wrapper/Wrapper.ts +4 -11
- package/src/BoundWitness/models/Base/XyoBoundWitnessBase.ts +10 -0
- package/src/BoundWitness/models/{Body/XyoBoundWitnessBodySchema.ts → Base/XyoBoundWitnessBaseSchema.ts} +1 -3
- package/src/BoundWitness/models/Base/index.ts +2 -0
- package/src/BoundWitness/models/Meta/XyoBoundWitnessMeta.ts +7 -10
- package/src/BoundWitness/models/WithXyoBoundWitnessMeta.ts +2 -2
- package/src/BoundWitness/models/XyoBoundWitness.ts +2 -6
- package/src/BoundWitness/models/index.ts +1 -1
- package/src/Hasher/XyoHasher.ts +31 -8
- package/src/Hasher/index.ts +0 -1
- package/src/Hasher/removeFields.ts +17 -9
- package/src/Hasher/sortFields.ts +8 -5
- package/src/Huri/Huri.spec.ts +1 -1
- package/src/Huri/Huri.ts +1 -1
- package/src/Payload/Builder/Builder.ts +3 -2
- package/src/Payload/Validator/BodyValidator.spec.ts +1 -1
- package/src/Payload/Validator/BodyValidator.ts +6 -13
- package/src/Payload/Validator/MetaValidator.spec.ts +1 -1
- package/src/Payload/Validator/MetaValidator.ts +7 -11
- package/src/Payload/Validator/Validator.spec.ts +16 -16
- package/src/Payload/Validator/Validator.ts +6 -8
- package/src/Payload/Wrapper/Validator.ts +6 -10
- package/src/Payload/Wrapper/Wrapper.ts +7 -13
- package/src/Payload/index.ts +0 -1
- package/src/Query/QueryPayload.ts +1 -1
- package/src/Schema/Payload.ts +3 -3
- package/src/Test/testBoundWitness.ts +2 -2
- package/src/Test/testPayload.ts +3 -2
- package/src/Wallet/Base/WordsPayload.ts +1 -1
- package/src/Witness/LegacyWitness.ts +2 -1
- package/src/Witness/QueryWitness.ts +2 -1
- package/src/Witness/Witness.ts +1 -1
- package/src/lib/StringKeyObject.ts +2 -0
- package/src/lib/XyoObject.ts +11 -0
- package/src/lib/XyoValidator.ts +5 -0
- package/src/lib/index.ts +3 -0
- package/src/lib/isXyoPayloadOfSchemaType.ts +1 -1
- package/src/models/Base.ts +6 -0
- package/src/models/Meta.ts +17 -0
- package/src/models/XyoPayload.ts +3 -0
- package/src/models/index.ts +3 -1
- package/src/shared.ts +1 -1
- package/src/BoundWitness/models/Body/XyoBoundWitnessBody.ts +0 -13
- package/src/BoundWitness/models/Body/index.ts +0 -2
- package/src/Hasher/XyoAbstractHasher.ts +0 -37
- package/src/Payload/models/Body.ts +0 -7
- package/src/Payload/models/Meta.ts +0 -11
- package/src/Payload/models/WithXyoPayloadMeta.ts +0 -6
- package/src/Payload/models/XyoPayload.ts +0 -6
- package/src/Payload/models/index.ts +0 -4
- package/src/models/WithStringIndex.ts +0 -1
|
@@ -1,22 +1,17 @@
|
|
|
1
|
-
import {
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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 {
|
|
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.
|
|
11
|
+
const wrapper = new XyoHasher(this.obj)
|
|
16
12
|
|
|
17
13
|
const bodyHash = wrapper.hash
|
|
18
|
-
if (bodyHash !== this.
|
|
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.
|
|
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
|
|
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 {
|
|
2
|
+
import { XyoPayloadWithMeta } from '../../models'
|
|
3
3
|
import { XyoPayloadValidator } from './Validator'
|
|
4
4
|
|
|
5
|
-
const testPayloadNoSchema:
|
|
5
|
+
const testPayloadNoSchema: XyoPayloadWithMeta = {
|
|
6
6
|
_hash: '44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a',
|
|
7
7
|
_timestamp: 1609459255555,
|
|
8
|
-
} as
|
|
9
|
-
const testPayloadMixedCase:
|
|
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:
|
|
13
|
+
} as XyoPayloadWithMeta
|
|
14
|
+
const testPayloadTooFewLevels: XyoPayloadWithMeta = {
|
|
15
15
|
_hash: '95206b26e3173deaac5e3f5d4510d50112b6348d3a2128b1eb6fe3ca66957628',
|
|
16
16
|
_timestamp: 1609459255555,
|
|
17
17
|
schema: 'network.xyo',
|
|
18
|
-
}
|
|
19
|
-
const testPayloadDoesNotExist:
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
59
|
+
errors = validator.validate()
|
|
60
60
|
dumpErrors(errors)
|
|
61
61
|
expect(errors.length).toBe(0)
|
|
62
62
|
})
|
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
import {
|
|
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
|
|
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
|
-
|
|
10
|
+
super(payload)
|
|
11
11
|
this.body = new XyoPayloadBodyValidator(payload)
|
|
12
12
|
this.meta = new XyoPayloadMetaValidator(payload)
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
public
|
|
15
|
+
public validate() {
|
|
16
16
|
const errors: Error[] = []
|
|
17
|
-
errors.push(...this.body.
|
|
17
|
+
errors.push(...this.body.validate())
|
|
18
18
|
return errors
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
export { XyoPayloadValidator }
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import {
|
|
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<
|
|
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.
|
|
8
|
+
return new XyoPayloadValidator(this.obj.body)
|
|
13
9
|
}
|
|
14
10
|
|
|
15
|
-
public
|
|
11
|
+
public validate() {
|
|
16
12
|
const errors: Error[] = []
|
|
17
|
-
errors.push(...this.payload.
|
|
13
|
+
errors.push(...this.payload.validate())
|
|
18
14
|
return errors
|
|
19
15
|
}
|
|
20
16
|
}
|
|
@@ -1,25 +1,19 @@
|
|
|
1
|
-
import { deepOmitUnderscoreFields, deepPickUnderscoreFields,
|
|
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
|
|
7
|
-
public payload
|
|
8
|
-
|
|
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.
|
|
12
|
+
return deepOmitUnderscoreFields<T>(this.obj)
|
|
19
13
|
}
|
|
20
14
|
|
|
21
15
|
public get meta() {
|
|
22
|
-
return deepPickUnderscoreFields(this.
|
|
16
|
+
return deepPickUnderscoreFields<T>(this.obj)
|
|
23
17
|
}
|
|
24
18
|
|
|
25
19
|
public static async load(address: XyoDataLike | Huri) {
|
package/src/Payload/index.ts
CHANGED
package/src/Schema/Payload.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { XyoPayload } from '../
|
|
1
|
+
import { XyoPayload } from '../models'
|
|
2
2
|
|
|
3
|
-
export
|
|
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 {
|
|
1
|
+
import { XyoBoundWitnessWithMeta } from '../BoundWitness'
|
|
2
2
|
|
|
3
|
-
const testBoundWitness:
|
|
3
|
+
const testBoundWitness: XyoBoundWitnessWithMeta = {
|
|
4
4
|
_archive: 'temp',
|
|
5
5
|
_client: 'js',
|
|
6
6
|
_hash: 'b0ffb9ebf872dc316b7be48327256c5316f7cb84d7c706861b18b86af1942dea',
|
package/src/Test/testPayload.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WithAdditional } from '../lib'
|
|
2
|
+
import { XyoPayloadWithMeta } from '../models'
|
|
2
3
|
|
|
3
4
|
const testSchema = 'network.xyo.test'
|
|
4
|
-
const testPayload:
|
|
5
|
+
const testPayload: WithAdditional<XyoPayloadWithMeta> = {
|
|
5
6
|
_archive: 'test',
|
|
6
7
|
_hash: '20e14207f952a09f767ff614a648546c037fe524ace0bfe55db31f818aff1f1c',
|
|
7
8
|
_timestamp: 1609459255555,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { XyoPayload
|
|
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
|
|
3
|
+
import { XyoPayload } from '../models'
|
|
4
|
+
import { XyoPayloadBuilder } from '../Payload'
|
|
4
5
|
import { XyoQueryPayload } from '../Query'
|
|
5
6
|
import { XyoWitness } from './Witness'
|
|
6
7
|
|
package/src/Witness/Witness.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/lib/index.ts
CHANGED
|
@@ -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
|
package/src/models/index.ts
CHANGED
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,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 +0,0 @@
|
|
|
1
|
-
export type WithStringIndex<T> = T & Record<string, unknown>
|