@@ -10,10 +10,16 @@ export interface Foo {
10
10
}
11
11
12
12
export namespace Foo {
13
+ let _codec : Codec < Foo >
14
+
13
15
export const codec = ( ) : Codec < Foo > => {
14
- return message < Foo > ( {
15
- 1 : { name : 'baz' , codec : uint32 }
16
- } )
16
+ if ( _codec == null ) {
17
+ _codec = message < Foo > ( {
18
+ 1 : { name : 'baz' , codec : uint32 }
19
+ } )
20
+ }
21
+
22
+ return _codec
17
23
}
18
24
19
25
export const encode = ( obj : Foo ) : Uint8ArrayList => {
@@ -30,10 +36,16 @@ export interface Bar {
30
36
}
31
37
32
38
export namespace Bar {
39
+ let _codec : Codec < Bar >
40
+
33
41
export const codec = ( ) : Codec < Bar > => {
34
- return message < Bar > ( {
35
- 1 : { name : 'tmp' , codec : Foo . codec ( ) }
36
- } )
42
+ if ( _codec == null ) {
43
+ _codec = message < Bar > ( {
44
+ 1 : { name : 'tmp' , codec : Foo . codec ( ) }
45
+ } )
46
+ }
47
+
48
+ return _codec
37
49
}
38
50
39
51
export const encode = ( obj : Bar ) : Uint8ArrayList => {
@@ -65,10 +77,16 @@ export interface Yo {
65
77
}
66
78
67
79
export namespace Yo {
80
+ let _codec : Codec < Yo >
81
+
68
82
export const codec = ( ) : Codec < Yo > => {
69
- return message < Yo > ( {
70
- 1 : { name : 'lol' , codec : FOO . codec ( ) , repeats : true }
71
- } )
83
+ if ( _codec == null ) {
84
+ _codec = message < Yo > ( {
85
+ 1 : { name : 'lol' , codec : FOO . codec ( ) , repeats : true }
86
+ } )
87
+ }
88
+
89
+ return _codec
72
90
}
73
91
74
92
export const encode = ( obj : Yo ) : Uint8ArrayList => {
@@ -86,11 +104,17 @@ export interface Lol {
86
104
}
87
105
88
106
export namespace Lol {
107
+ let _codec : Codec < Lol >
108
+
89
109
export const codec = ( ) : Codec < Lol > => {
90
- return message < Lol > ( {
91
- 1 : { name : 'lol' , codec : string } ,
92
- 2 : { name : 'b' , codec : Bar . codec ( ) }
93
- } )
110
+ if ( _codec == null ) {
111
+ _codec = message < Lol > ( {
112
+ 1 : { name : 'lol' , codec : string } ,
113
+ 2 : { name : 'b' , codec : Bar . codec ( ) }
114
+ } )
115
+ }
116
+
117
+ return _codec
94
118
}
95
119
96
120
export const encode = ( obj : Lol ) : Uint8ArrayList => {
@@ -110,13 +134,19 @@ export interface Test {
110
134
}
111
135
112
136
export namespace Test {
137
+ let _codec : Codec < Test >
138
+
113
139
export const codec = ( ) : Codec < Test > => {
114
- return message < Test > ( {
115
- 6 : { name : 'meh' , codec : Lol . codec ( ) } ,
116
- 3 : { name : 'hello' , codec : uint32 } ,
117
- 1 : { name : 'foo' , codec : string } ,
118
- 7 : { name : 'payload' , codec : bytes }
119
- } )
140
+ if ( _codec == null ) {
141
+ _codec = message < Test > ( {
142
+ 6 : { name : 'meh' , codec : Lol . codec ( ) } ,
143
+ 3 : { name : 'hello' , codec : uint32 } ,
144
+ 1 : { name : 'foo' , codec : string } ,
145
+ 7 : { name : 'payload' , codec : bytes }
146
+ } )
147
+ }
148
+
149
+ return _codec
120
150
}
121
151
122
152
export const encode = ( obj : Test ) : Uint8ArrayList => {
0 commit comments