@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.
- package/LICENSE +165 -0
- package/README.md +79 -0
- package/babel.config.json +5 -0
- package/dist/cjs/Builder/Builder.d.ts +23 -0
- package/dist/cjs/Builder/Builder.js +68 -0
- package/dist/cjs/Builder/Builder.js.map +1 -0
- package/dist/cjs/Builder/index.d.ts +1 -0
- package/dist/cjs/Builder/index.js +5 -0
- package/dist/cjs/Builder/index.js.map +1 -0
- package/dist/cjs/Test/index.d.ts +1 -0
- package/dist/cjs/Test/index.js +5 -0
- package/dist/cjs/Test/index.js.map +1 -0
- package/dist/cjs/Test/testBoundWitness.d.ts +3 -0
- package/dist/cjs/Test/testBoundWitness.js +17 -0
- package/dist/cjs/Test/testBoundWitness.js.map +1 -0
- package/dist/cjs/Validator/BodyValidator.d.ts +17 -0
- package/dist/cjs/Validator/BodyValidator.js +94 -0
- package/dist/cjs/Validator/BodyValidator.js.map +1 -0
- package/dist/cjs/Validator/MetaValidator.d.ts +13 -0
- package/dist/cjs/Validator/MetaValidator.js +67 -0
- package/dist/cjs/Validator/MetaValidator.js.map +1 -0
- package/dist/cjs/Validator/Validator.d.ts +12 -0
- package/dist/cjs/Validator/Validator.js +47 -0
- package/dist/cjs/Validator/Validator.js.map +1 -0
- package/dist/cjs/Validator/index.d.ts +3 -0
- package/dist/cjs/Validator/index.js +7 -0
- package/dist/cjs/Validator/index.js.map +1 -0
- package/dist/cjs/Validator/ip-regex.d.ts +9 -0
- package/dist/cjs/Validator/ip-regex.js +31 -0
- package/dist/cjs/Validator/ip-regex.js.map +1 -0
- package/dist/cjs/Validator/is-ip.d.ts +4 -0
- package/dist/cjs/Validator/is-ip.js +21 -0
- package/dist/cjs/Validator/is-ip.js.map +1 -0
- package/dist/cjs/Wrapper/Wrapper.d.ts +11 -0
- package/dist/cjs/Wrapper/Wrapper.js +27 -0
- package/dist/cjs/Wrapper/Wrapper.js.map +1 -0
- package/dist/cjs/Wrapper/index.d.ts +1 -0
- package/dist/cjs/Wrapper/index.js +5 -0
- package/dist/cjs/Wrapper/index.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/isXyoPayloadOfSchemaType.d.ts +2 -0
- package/dist/cjs/isXyoPayloadOfSchemaType.js +6 -0
- package/dist/cjs/isXyoPayloadOfSchemaType.js.map +1 -0
- package/dist/cjs/models/Base/XyoBoundWitnessBase.d.ts +9 -0
- package/dist/cjs/models/Base/XyoBoundWitnessBase.js +3 -0
- package/dist/cjs/models/Base/XyoBoundWitnessBase.js.map +1 -0
- package/dist/cjs/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
- package/dist/cjs/models/Base/XyoBoundWitnessBaseSchema.js +19 -0
- package/dist/cjs/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
- package/dist/cjs/models/Base/index.d.ts +2 -0
- package/dist/cjs/models/Base/index.js +6 -0
- package/dist/cjs/models/Base/index.js.map +1 -0
- package/dist/cjs/models/Meta/XyoBoundWitnessMeta.d.ts +7 -0
- package/dist/cjs/models/Meta/XyoBoundWitnessMeta.js +3 -0
- package/dist/cjs/models/Meta/XyoBoundWitnessMeta.js.map +1 -0
- package/dist/cjs/models/Meta/XyoBoundWitnessMetaSchema.d.ts +85 -0
- package/dist/cjs/models/Meta/XyoBoundWitnessMetaSchema.js +28 -0
- package/dist/cjs/models/Meta/XyoBoundWitnessMetaSchema.js.map +1 -0
- package/dist/cjs/models/Meta/index.d.ts +2 -0
- package/dist/cjs/models/Meta/index.js +6 -0
- package/dist/cjs/models/Meta/index.js.map +1 -0
- package/dist/cjs/models/WithXyoBoundWitnessMeta.d.ts +4 -0
- package/dist/cjs/models/WithXyoBoundWitnessMeta.js +3 -0
- package/dist/cjs/models/WithXyoBoundWitnessMeta.js.map +1 -0
- package/dist/cjs/models/XyoBoundWitness.d.ts +6 -0
- package/dist/cjs/models/XyoBoundWitness.js +3 -0
- package/dist/cjs/models/XyoBoundWitness.js.map +1 -0
- package/dist/cjs/models/XyoBoundWitnessSchema.d.ts +75 -0
- package/dist/cjs/models/XyoBoundWitnessSchema.js +17 -0
- package/dist/cjs/models/XyoBoundWitnessSchema.js.map +1 -0
- package/dist/cjs/models/index.d.ts +5 -0
- package/dist/cjs/models/index.js +9 -0
- package/dist/cjs/models/index.js.map +1 -0
- package/dist/docs.json +7 -0
- package/dist/esm/Builder/Builder.d.ts +23 -0
- package/dist/esm/Builder/Builder.js +66 -0
- package/dist/esm/Builder/Builder.js.map +1 -0
- package/dist/esm/Builder/index.d.ts +1 -0
- package/dist/esm/Builder/index.js +2 -0
- package/dist/esm/Builder/index.js.map +1 -0
- package/dist/esm/Test/index.d.ts +1 -0
- package/dist/esm/Test/index.js +2 -0
- package/dist/esm/Test/index.js.map +1 -0
- package/dist/esm/Test/testBoundWitness.d.ts +3 -0
- package/dist/esm/Test/testBoundWitness.js +14 -0
- package/dist/esm/Test/testBoundWitness.js.map +1 -0
- package/dist/esm/Validator/BodyValidator.d.ts +17 -0
- package/dist/esm/Validator/BodyValidator.js +88 -0
- package/dist/esm/Validator/BodyValidator.js.map +1 -0
- package/dist/esm/Validator/MetaValidator.d.ts +13 -0
- package/dist/esm/Validator/MetaValidator.js +63 -0
- package/dist/esm/Validator/MetaValidator.js.map +1 -0
- package/dist/esm/Validator/Validator.d.ts +12 -0
- package/dist/esm/Validator/Validator.js +42 -0
- package/dist/esm/Validator/Validator.js.map +1 -0
- package/dist/esm/Validator/index.d.ts +3 -0
- package/dist/esm/Validator/index.js +4 -0
- package/dist/esm/Validator/index.js.map +1 -0
- package/dist/esm/Validator/ip-regex.d.ts +9 -0
- package/dist/esm/Validator/ip-regex.js +27 -0
- package/dist/esm/Validator/ip-regex.js.map +1 -0
- package/dist/esm/Validator/is-ip.d.ts +4 -0
- package/dist/esm/Validator/is-ip.js +14 -0
- package/dist/esm/Validator/is-ip.js.map +1 -0
- package/dist/esm/Wrapper/Wrapper.d.ts +11 -0
- package/dist/esm/Wrapper/Wrapper.js +20 -0
- package/dist/esm/Wrapper/Wrapper.js.map +1 -0
- package/dist/esm/Wrapper/index.d.ts +1 -0
- package/dist/esm/Wrapper/index.js +2 -0
- package/dist/esm/Wrapper/index.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/isXyoPayloadOfSchemaType.d.ts +2 -0
- package/dist/esm/isXyoPayloadOfSchemaType.js +3 -0
- package/dist/esm/isXyoPayloadOfSchemaType.js.map +1 -0
- package/dist/esm/models/Base/XyoBoundWitnessBase.d.ts +9 -0
- package/dist/esm/models/Base/XyoBoundWitnessBase.js +2 -0
- package/dist/esm/models/Base/XyoBoundWitnessBase.js.map +1 -0
- package/dist/esm/models/Base/XyoBoundWitnessBaseSchema.d.ts +36 -0
- package/dist/esm/models/Base/XyoBoundWitnessBaseSchema.js +16 -0
- package/dist/esm/models/Base/XyoBoundWitnessBaseSchema.js.map +1 -0
- package/dist/esm/models/Base/index.d.ts +2 -0
- package/dist/esm/models/Base/index.js +3 -0
- package/dist/esm/models/Base/index.js.map +1 -0
- package/dist/esm/models/Meta/XyoBoundWitnessMeta.d.ts +7 -0
- package/dist/esm/models/Meta/XyoBoundWitnessMeta.js +2 -0
- package/dist/esm/models/Meta/XyoBoundWitnessMeta.js.map +1 -0
- package/dist/esm/models/Meta/XyoBoundWitnessMetaSchema.d.ts +85 -0
- package/dist/esm/models/Meta/XyoBoundWitnessMetaSchema.js +23 -0
- package/dist/esm/models/Meta/XyoBoundWitnessMetaSchema.js.map +1 -0
- package/dist/esm/models/Meta/index.d.ts +2 -0
- package/dist/esm/models/Meta/index.js +3 -0
- package/dist/esm/models/Meta/index.js.map +1 -0
- package/dist/esm/models/WithXyoBoundWitnessMeta.d.ts +4 -0
- package/dist/esm/models/WithXyoBoundWitnessMeta.js +2 -0
- package/dist/esm/models/WithXyoBoundWitnessMeta.js.map +1 -0
- package/dist/esm/models/XyoBoundWitness.d.ts +6 -0
- package/dist/esm/models/XyoBoundWitness.js +2 -0
- package/dist/esm/models/XyoBoundWitness.js.map +1 -0
- package/dist/esm/models/XyoBoundWitnessSchema.d.ts +75 -0
- package/dist/esm/models/XyoBoundWitnessSchema.js +21 -0
- package/dist/esm/models/XyoBoundWitnessSchema.js.map +1 -0
- package/dist/esm/models/index.d.ts +5 -0
- package/dist/esm/models/index.js +6 -0
- package/dist/esm/models/index.js.map +1 -0
- package/jest.config.cjs +25 -0
- package/package.json +61 -0
- package/src/Builder/Builder.spec.ts +88 -0
- package/src/Builder/Builder.ts +83 -0
- package/src/Builder/index.ts +1 -0
- package/src/Test/index.ts +1 -0
- package/src/Test/testBoundWitness.ts +16 -0
- package/src/Validator/BodyValidator.spec.ts +11 -0
- package/src/Validator/BodyValidator.ts +102 -0
- package/src/Validator/MetaValidator.spec.ts +56 -0
- package/src/Validator/MetaValidator.ts +71 -0
- package/src/Validator/Validator.spec.ts +11 -0
- package/src/Validator/Validator.ts +51 -0
- package/src/Validator/index.ts +3 -0
- package/src/Validator/ip-regex.ts +39 -0
- package/src/Validator/is-ip.ts +17 -0
- package/src/Wrapper/Wrapper.ts +27 -0
- package/src/Wrapper/index.ts +1 -0
- package/src/index.ts +5 -0
- package/src/isXyoPayloadOfSchemaType.ts +5 -0
- package/src/models/Base/XyoBoundWitnessBase.ts +10 -0
- package/src/models/Base/XyoBoundWitnessBaseSchema.ts +15 -0
- package/src/models/Base/index.ts +2 -0
- package/src/models/Meta/XyoBoundWitnessMeta.ts +8 -0
- package/src/models/Meta/XyoBoundWitnessMetaSchema.ts +24 -0
- package/src/models/Meta/index.ts +2 -0
- package/src/models/WithXyoBoundWitnessMeta.ts +6 -0
- package/src/models/XyoBoundWitness.ts +8 -0
- package/src/models/XyoBoundWitnessSchema.ts +23 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/jest.config.cjs
ADDED
|
@@ -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
|
+
})
|