Skip to content

Commit 57d32cc

Browse files
Merge pull request #18 from kaleido-io/optimize-jsonschema
Optimize JSON Schema compilation
2 parents 9358fd2 + 1ab8232 commit 57d32cc

File tree

1 file changed

+120
-118
lines changed

1 file changed

+120
-118
lines changed

pkg/ffi2abi/ffi_param_validator.go

Lines changed: 120 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -22,141 +22,143 @@ import (
2222

2323
type ParamValidator struct{}
2424

25-
func (v *ParamValidator) Compile(ctx jsonschema.CompilerContext, m map[string]interface{}) (jsonschema.ExtSchema, error) {
26-
return nil, nil
27-
}
28-
29-
func (v *ParamValidator) GetMetaSchema() *jsonschema.Schema {
30-
return jsonschema.MustCompileString("ffiParamDetails.json", `{
31-
"$ref": "#/$defs/ethereumParam",
32-
"$defs": {
33-
"ethereumParam": {
34-
"oneOf": [
35-
{
36-
"type": "object",
37-
"properties": {
38-
"type": {
39-
"type": "string",
40-
"not": {
41-
"const": "object"
42-
}
43-
},
44-
"details": {
45-
"$ref": "#/$defs/details"
25+
var compiledMetaSchema = jsonschema.MustCompileString("ffiParamDetails.json", `{
26+
"$ref": "#/$defs/ethereumParam",
27+
"$defs": {
28+
"ethereumParam": {
29+
"oneOf": [
30+
{
31+
"type": "object",
32+
"properties": {
33+
"type": {
34+
"type": "string",
35+
"not": {
36+
"const": "object"
4637
}
4738
},
48-
"required": [
49-
"details"
50-
]
39+
"details": {
40+
"$ref": "#/$defs/details"
41+
}
5142
},
52-
{
53-
"type": "object",
54-
"properties": {
55-
"type": {
56-
"const": "object"
57-
},
58-
"details": {
59-
"$ref": "#/$defs/details"
60-
},
61-
"properties": {
62-
"type": "object",
63-
"patternProperties": {
64-
".*": {
65-
"$ref": "#/$defs/ethereumObjectChildParam"
66-
}
67-
}
68-
}
43+
"required": [
44+
"details"
45+
]
46+
},
47+
{
48+
"type": "object",
49+
"properties": {
50+
"type": {
51+
"const": "object"
52+
},
53+
"details": {
54+
"$ref": "#/$defs/details"
6955
},
70-
"required": [
71-
"details",
72-
"type"
73-
]
74-
}
75-
]
76-
},
77-
"ethereumObjectChildParam": {
78-
"oneOf": [
79-
{
80-
"type": "object",
8156
"properties": {
82-
"type": {
83-
"type": "string",
84-
"not": {
85-
"const": "object"
57+
"type": "object",
58+
"patternProperties": {
59+
".*": {
60+
"$ref": "#/$defs/ethereumObjectChildParam"
8661
}
87-
},
88-
"details": {
89-
"$ref": "#/$defs/objectFieldDetails"
9062
}
91-
},
92-
"required": [
93-
"details"
94-
]
63+
}
9564
},
96-
{
97-
"type": "object",
98-
"properties": {
99-
"type": {
65+
"required": [
66+
"details",
67+
"type"
68+
]
69+
}
70+
]
71+
},
72+
"ethereumObjectChildParam": {
73+
"oneOf": [
74+
{
75+
"type": "object",
76+
"properties": {
77+
"type": {
78+
"type": "string",
79+
"not": {
10080
"const": "object"
101-
},
102-
"details": {
103-
"$ref": "#/$defs/objectFieldDetails"
104-
},
105-
"properties": {
106-
"type": "object",
107-
"patternProperties": {
108-
".*": {
109-
"$ref": "#/$defs/ethereumObjectChildParam"
110-
}
111-
}
11281
}
11382
},
114-
"required": [
115-
"details"
116-
]
117-
}
118-
]
119-
},
120-
"details": {
121-
"type": "object",
122-
"properties": {
123-
"type": {
124-
"type": "string"
83+
"details": {
84+
"$ref": "#/$defs/objectFieldDetails"
85+
}
12586
},
126-
"internalType": {
127-
"type": "string"
87+
"required": [
88+
"details"
89+
]
90+
},
91+
{
92+
"type": "object",
93+
"properties": {
94+
"type": {
95+
"const": "object"
96+
},
97+
"details": {
98+
"$ref": "#/$defs/objectFieldDetails"
99+
},
100+
"properties": {
101+
"type": "object",
102+
"patternProperties": {
103+
".*": {
104+
"$ref": "#/$defs/ethereumObjectChildParam"
105+
}
106+
}
107+
}
128108
},
129-
"indexed": {
130-
"type": "boolean"
131-
}
109+
"required": [
110+
"details"
111+
]
112+
}
113+
]
114+
},
115+
"details": {
116+
"type": "object",
117+
"properties": {
118+
"type": {
119+
"type": "string"
120+
},
121+
"internalType": {
122+
"type": "string"
132123
},
133-
"required": [
134-
"type"
135-
]
124+
"indexed": {
125+
"type": "boolean"
126+
}
136127
},
137-
"objectFieldDetails": {
138-
"type": "object",
139-
"properties": {
140-
"type": {
141-
"type": "string"
142-
},
143-
"internalType": {
144-
"type": "string"
145-
},
146-
"indexed": {
147-
"type": "boolean"
148-
},
149-
"index": {
150-
"type": "integer"
151-
}
128+
"required": [
129+
"type"
130+
]
131+
},
132+
"objectFieldDetails": {
133+
"type": "object",
134+
"properties": {
135+
"type": {
136+
"type": "string"
152137
},
153-
"required": [
154-
"type",
155-
"index"
156-
]
157-
}
138+
"internalType": {
139+
"type": "string"
140+
},
141+
"indexed": {
142+
"type": "boolean"
143+
},
144+
"index": {
145+
"type": "integer"
146+
}
147+
},
148+
"required": [
149+
"type",
150+
"index"
151+
]
158152
}
159-
}`)
153+
}
154+
}`)
155+
156+
func (v *ParamValidator) Compile(ctx jsonschema.CompilerContext, m map[string]interface{}) (jsonschema.ExtSchema, error) {
157+
return nil, nil
158+
}
159+
160+
func (v *ParamValidator) GetMetaSchema() *jsonschema.Schema {
161+
return compiledMetaSchema
160162
}
161163

162164
func (v *ParamValidator) GetExtensionName() string {

0 commit comments

Comments
 (0)