Skip to content

Commit 66d9387

Browse files
authored
fix: single instance codec (#55)
**Motivation** - Right now every time we call `encode()` or `decode()`, a new codec is returned, it also create other codecs of internal fields **Description** - Generate the `codec()` function using single instance pattern part of #51
1 parent 8991c51 commit 66d9387

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

packages/protons/src/index.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,9 @@ export interface ${messageDef.name} {
190190
}
191191
}`
192192
interfaceCodecDef = `
193+
let _codec: Codec<${messageDef.name}>
193194
export const codec = (): Codec<${messageDef.name}> => {
194-
return message<${messageDef.name}>({
195+
if (!_codec) _codec = message<${messageDef.name}>({
195196
${Object.entries(fields)
196197
.map(([name, fieldDef]) => {
197198
let codec = encoders[fieldDef.type]
@@ -214,6 +215,7 @@ export interface ${messageDef.name} {
214215
return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`
215216
}).join(',\n ')}
216217
})
218+
return _codec
217219
}
218220
219221
export const encode = (obj: ${messageDef.name}): Uint8ArrayList => {

0 commit comments

Comments
 (0)