protons 4.0.2 → 5.1.0

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.
File without changes
@@ -1,3 +1,11 @@
1
+ export declare enum CODEC_TYPES {
2
+ VARINT = 0,
3
+ BIT64 = 1,
4
+ LENGTH_DELIMITED = 2,
5
+ START_GROUP = 3,
6
+ END_GROUP = 4,
7
+ BIT32 = 5
8
+ }
1
9
  interface Flags {
2
10
  output?: string;
3
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAkSA,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,iBAsC3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,oBAAY,WAAW;IACrB,MAAM,IAAI;IACV,KAAK,IAAA;IACL,gBAAgB,IAAA;IAChB,WAAW,IAAA;IACX,SAAS,IAAA;IACT,KAAK,IAAA;CACN;AA4gBD,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,iBAsC3D"}
package/dist/src/index.js CHANGED
@@ -1,27 +1,87 @@
1
- import { main as pbjs } from 'protobufjs/cli/pbjs.js';
1
+ import { main as pbjs } from 'protobufjs-cli/pbjs.js';
2
2
  import path from 'path';
3
3
  import { promisify } from 'util';
4
4
  import fs from 'fs/promises';
5
+ export var CODEC_TYPES;
6
+ (function (CODEC_TYPES) {
7
+ CODEC_TYPES[CODEC_TYPES["VARINT"] = 0] = "VARINT";
8
+ CODEC_TYPES[CODEC_TYPES["BIT64"] = 1] = "BIT64";
9
+ CODEC_TYPES[CODEC_TYPES["LENGTH_DELIMITED"] = 2] = "LENGTH_DELIMITED";
10
+ CODEC_TYPES[CODEC_TYPES["START_GROUP"] = 3] = "START_GROUP";
11
+ CODEC_TYPES[CODEC_TYPES["END_GROUP"] = 4] = "END_GROUP";
12
+ CODEC_TYPES[CODEC_TYPES["BIT32"] = 5] = "BIT32";
13
+ })(CODEC_TYPES || (CODEC_TYPES = {}));
5
14
  function pathWithExtension(input, extension, outputDir) {
6
15
  const output = outputDir ?? path.dirname(input);
7
16
  return path.join(output, path.basename(input).split('.').slice(0, -1).join('.') + extension);
8
17
  }
9
18
  const types = {
19
+ bool: 'boolean',
20
+ bytes: 'Uint8Array',
10
21
  double: 'number',
22
+ fixed32: 'number',
23
+ fixed64: 'bigint',
11
24
  float: 'number',
12
25
  int32: 'number',
13
26
  int64: 'bigint',
14
- uint32: 'number',
15
- uint64: 'bigint',
16
- sint32: 'number',
17
- sint64: 'bigint',
18
- fixed32: 'number',
19
- fixed64: 'bigint',
20
27
  sfixed32: 'number',
21
28
  sfixed64: 'bigint',
22
- bool: 'boolean',
29
+ sint32: 'number',
30
+ sint64: 'bigint',
23
31
  string: 'string',
24
- bytes: 'Uint8Array'
32
+ uint32: 'number',
33
+ uint64: 'bigint'
34
+ };
35
+ const encoderGenerators = {
36
+ bool: (val) => `writer.bool(${val})`,
37
+ bytes: (val) => `writer.bytes(${val})`,
38
+ double: (val) => `writer.double(${val})`,
39
+ fixed32: (val) => `writer.fixed32(${val})`,
40
+ fixed64: (val) => `writer.fixed64(${val})`,
41
+ float: (val) => `writer.float(${val})`,
42
+ int32: (val) => `writer.int32(${val})`,
43
+ int64: (val) => `writer.int64(${val})`,
44
+ sfixed32: (val) => `writer.sfixed32(${val})`,
45
+ sfixed64: (val) => `writer.sfixed64(${val})`,
46
+ sint32: (val) => `writer.sint32(${val})`,
47
+ sint64: (val) => `writer.sint64(${val})`,
48
+ string: (val) => `writer.string(${val})`,
49
+ uint32: (val) => `writer.uint32(${val})`,
50
+ uint64: (val) => `writer.uint64(${val})`
51
+ };
52
+ const decoderGenerators = {
53
+ bool: () => 'reader.bool()',
54
+ bytes: () => 'reader.bytes()',
55
+ double: () => 'reader.double()',
56
+ fixed32: () => 'reader.fixed32()',
57
+ fixed64: () => 'reader.fixed64()',
58
+ float: () => 'reader.float()',
59
+ int32: () => 'reader.int32()',
60
+ int64: () => 'reader.int64()',
61
+ sfixed32: () => 'reader.sfixed32()',
62
+ sfixed64: () => 'reader.sfixed64()',
63
+ sint32: () => 'reader.sint32()',
64
+ sint64: () => 'reader.sint64()',
65
+ string: () => 'reader.string()',
66
+ uint32: () => 'reader.uint32()',
67
+ uint64: () => 'reader.uint64()'
68
+ };
69
+ const defaultValueGenerators = {
70
+ bool: () => 'false',
71
+ bytes: () => 'new Uint8Array(0)',
72
+ double: () => '0',
73
+ fixed32: () => '0',
74
+ fixed64: () => '0n',
75
+ float: () => '0',
76
+ int32: () => '0',
77
+ int64: () => '0n',
78
+ sfixed32: () => '0',
79
+ sfixed64: () => '0n',
80
+ sint32: () => '0',
81
+ sint64: () => '0n',
82
+ string: () => "''",
83
+ uint32: () => '0',
84
+ uint64: () => '0n'
25
85
  };
26
86
  function findTypeName(typeName, classDef, moduleDef) {
27
87
  if (types[typeName] != null) {
@@ -56,31 +116,97 @@ function findDef(typeName, classDef, moduleDef) {
56
116
  }
57
117
  throw new Error(`Could not resolve type name "${typeName}"`);
58
118
  }
119
+ function createDefaultObject(fields, messageDef, moduleDef) {
120
+ const output = Object.entries(fields)
121
+ .map(([name, fieldDef]) => {
122
+ if (fieldDef.repeated) {
123
+ return `${name}: []`;
124
+ }
125
+ if (fieldDef.optional) {
126
+ return '';
127
+ }
128
+ const type = fieldDef.type;
129
+ let defaultValue;
130
+ if (defaultValueGenerators[type] != null) {
131
+ defaultValue = defaultValueGenerators[type]();
132
+ }
133
+ else {
134
+ const def = findDef(fieldDef.type, messageDef, moduleDef);
135
+ if (isEnumDef(def)) {
136
+ // select lowest-value enum - should be 0 but it's not guaranteed
137
+ const val = Object.entries(def.values)
138
+ .sort((a, b) => {
139
+ if (a[1] < b[1]) {
140
+ return 1;
141
+ }
142
+ if (a[1] > b[1]) {
143
+ return -1;
144
+ }
145
+ return 0;
146
+ })
147
+ .pop();
148
+ if (val == null) {
149
+ throw new Error(`Could not find default enum value for ${def.fullName}`);
150
+ }
151
+ defaultValue = `${def.name}.${val[0]}`;
152
+ }
153
+ else {
154
+ defaultValue = 'undefined';
155
+ }
156
+ }
157
+ return `${name}: ${defaultValue}`;
158
+ })
159
+ .filter(Boolean)
160
+ .join(',\n ');
161
+ if (output !== '') {
162
+ return `
163
+ ${output}
164
+ `;
165
+ }
166
+ return '';
167
+ }
59
168
  const encoders = {
60
169
  bool: 'bool',
61
- double: 'double',
62
170
  bytes: 'bytes',
171
+ double: 'double',
63
172
  fixed32: 'fixed32',
64
173
  fixed64: 'fixed64',
65
174
  float: 'float',
66
175
  int32: 'int32',
67
176
  int64: 'int64',
177
+ sfixed32: 'sfixed32',
178
+ sfixed64: 'sfixed64',
68
179
  sint32: 'sint32',
69
180
  sint64: 'sint64',
70
181
  string: 'string',
71
182
  uint32: 'uint32',
72
- uint64: 'uint64',
73
- sfixed32: 'sfixed32',
74
- sfixed64: 'sfixed64'
183
+ uint64: 'uint64'
184
+ };
185
+ const codecTypes = {
186
+ bool: CODEC_TYPES.VARINT,
187
+ bytes: CODEC_TYPES.LENGTH_DELIMITED,
188
+ double: CODEC_TYPES.BIT64,
189
+ enum: CODEC_TYPES.VARINT,
190
+ fixed32: CODEC_TYPES.BIT32,
191
+ fixed64: CODEC_TYPES.BIT64,
192
+ float: CODEC_TYPES.BIT32,
193
+ int32: CODEC_TYPES.VARINT,
194
+ int64: CODEC_TYPES.VARINT,
195
+ message: CODEC_TYPES.LENGTH_DELIMITED,
196
+ sfixed32: CODEC_TYPES.BIT32,
197
+ sfixed64: CODEC_TYPES.BIT64,
198
+ sint32: CODEC_TYPES.VARINT,
199
+ sint64: CODEC_TYPES.VARINT,
200
+ string: CODEC_TYPES.LENGTH_DELIMITED,
201
+ uint32: CODEC_TYPES.VARINT,
202
+ uint64: CODEC_TYPES.VARINT
75
203
  };
76
204
  function isEnumDef(obj) {
77
205
  return obj.values != null;
78
206
  }
79
207
  function defineFields(fields, messageDef, moduleDef) {
80
208
  return Object.entries(fields).map(([fieldName, fieldDef]) => {
81
- const isArray = fieldDef.rule === 'repeated';
82
- const isOptional = !isArray && fieldDef.options?.proto3_optional === true;
83
- return `${fieldName}${isOptional ? '?' : ''}: ${findTypeName(fieldDef.type, messageDef, moduleDef)}${isArray ? '[]' : ''}`;
209
+ return `${fieldName}${fieldDef.optional ? '?' : ''}: ${findTypeName(fieldDef.type, messageDef, moduleDef)}${fieldDef.repeated ? '[]' : ''}`;
84
210
  });
85
211
  }
86
212
  function compileMessage(messageDef, moduleDef) {
@@ -101,7 +227,7 @@ enum __${messageDef.name}Values {
101
227
 
102
228
  export namespace ${messageDef.name} {
103
229
  export const codec = () => {
104
- return enumeration<typeof ${messageDef.name}>(__${messageDef.name}Values)
230
+ return enumeration<${messageDef.name}>(__${messageDef.name}Values)
105
231
  }
106
232
  }`.trim();
107
233
  }
@@ -133,34 +259,121 @@ export interface ${messageDef.name} {
133
259
  .join('\n ')
134
260
  .trim()}
135
261
  }`;
262
+ const ensureArrayProps = Object.entries(fields)
263
+ .map(([name, fieldDef]) => {
264
+ // make sure repeated fields have an array if not set
265
+ if (fieldDef.optional && fieldDef.rule === 'repeated') {
266
+ return ` obj.${name} = obj.${name} ?? []`;
267
+ }
268
+ return '';
269
+ }).filter(Boolean).join('\n');
270
+ const ensureRequiredFields = Object.entries(fields)
271
+ .map(([name, fieldDef]) => {
272
+ // make sure required fields are set
273
+ if (!fieldDef.optional && !fieldDef.repeated) {
274
+ return `
275
+ if (obj.${name} == null) {
276
+ throw new Error('Protocol error: value for required field "${name}" was not found in protobuf')
277
+ }`;
278
+ }
279
+ return '';
280
+ }).filter(Boolean).join('\n');
136
281
  interfaceCodecDef = `
137
282
  let _codec: Codec<${messageDef.name}>
283
+
138
284
  export const codec = (): Codec<${messageDef.name}> => {
139
- if (!_codec) _codec = message<${messageDef.name}>({
140
- ${Object.entries(fields)
285
+ if (_codec == null) {
286
+ _codec = message<${messageDef.name}>((obj, writer, opts = {}) => {
287
+ if (opts.lengthDelimited !== false) {
288
+ writer.fork()
289
+ }
290
+ ${Object.entries(fields)
141
291
  .map(([name, fieldDef]) => {
142
292
  let codec = encoders[fieldDef.type];
293
+ let type = fieldDef.type;
143
294
  if (codec == null) {
144
295
  const def = findDef(fieldDef.type, messageDef, moduleDef);
145
296
  if (isEnumDef(def)) {
146
297
  moduleDef.imports.add('enumeration');
298
+ type = 'enum';
147
299
  }
148
300
  else {
149
301
  moduleDef.imports.add('message');
302
+ type = 'message';
150
303
  }
151
304
  const typeName = findTypeName(fieldDef.type, messageDef, moduleDef);
152
305
  codec = `${typeName}.codec()`;
153
306
  }
154
- else {
155
- moduleDef.imports.add(codec);
307
+ return `
308
+ if (obj.${name} != null) {${fieldDef.rule === 'repeated'
309
+ ? `
310
+ for (const value of obj.${name}) {
311
+ writer.uint32(${(fieldDef.id << 3) | codecTypes[type]})
312
+ ${encoderGenerators[type] == null ? `${codec}.encode(value, writer)` : encoderGenerators[type]('value')}
313
+ }`
314
+ : `
315
+ writer.uint32(${(fieldDef.id << 3) | codecTypes[type]})
316
+ ${encoderGenerators[type] == null ? `${codec}.encode(obj.${name}, writer)` : encoderGenerators[type](`obj.${name}`)}`}
317
+ }${fieldDef.optional
318
+ ? ''
319
+ : ` else {
320
+ throw new Error('Protocol error: required field "${name}" was not found in object')
321
+ }`}`;
322
+ }).join('\n')}
323
+
324
+ if (opts.lengthDelimited !== false) {
325
+ writer.ldelim()
326
+ }
327
+ }, (reader, length) => {
328
+ const obj: any = {${createDefaultObject(fields, messageDef, moduleDef)}}
329
+
330
+ const end = length == null ? reader.len : reader.pos + length
331
+
332
+ while (reader.pos < end) {
333
+ const tag = reader.uint32()
334
+
335
+ switch (tag >>> 3) {
336
+ ${Object.entries(fields)
337
+ .map(([name, fieldDef]) => {
338
+ let codec = encoders[fieldDef.type];
339
+ let type = fieldDef.type;
340
+ if (codec == null) {
341
+ const def = findDef(fieldDef.type, messageDef, moduleDef);
342
+ if (isEnumDef(def)) {
343
+ moduleDef.imports.add('enumeration');
344
+ type = 'enum';
345
+ }
346
+ else {
347
+ moduleDef.imports.add('message');
348
+ type = 'message';
349
+ }
350
+ const typeName = findTypeName(fieldDef.type, messageDef, moduleDef);
351
+ codec = `${typeName}.codec()`;
156
352
  }
157
- return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`;
158
- }).join(',\n ')}
159
- })
353
+ return `case ${fieldDef.id}:${fieldDef.rule === 'repeated'
354
+ ? `${fieldDef.optional
355
+ ? `
356
+ obj.${name} = obj.${name} ?? []`
357
+ : ''}
358
+ obj.${name}.push(${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()})`
359
+ : `
360
+ obj.${name} = ${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()}`}
361
+ break`;
362
+ }).join('\n ')}
363
+ default:
364
+ reader.skipType(tag & 7)
365
+ break
366
+ }
367
+ }${ensureArrayProps !== '' ? `\n\n${ensureArrayProps}` : ''}${ensureRequiredFields !== '' ? `\n${ensureRequiredFields}` : ''}
368
+
369
+ return obj
370
+ })
371
+ }
372
+
160
373
  return _codec
161
374
  }
162
375
 
163
- export const encode = (obj: ${messageDef.name}): Uint8ArrayList => {
376
+ export const encode = (obj: ${messageDef.name}): Uint8Array => {
164
377
  return encodeMessage(obj, ${messageDef.name}.codec())
165
378
  }
166
379
 
@@ -197,6 +410,12 @@ function defineModule(def) {
197
410
  if (classDef.nested != null) {
198
411
  defineMessage(classDef.nested, classDef);
199
412
  }
413
+ if (classDef.fields != null) {
414
+ for (const name of Object.keys(classDef.fields)) {
415
+ classDef.fields[name].repeated = classDef.fields[name].rule === 'repeated';
416
+ classDef.fields[name].optional = !classDef.fields[name].repeated && classDef.fields[name].options?.proto3_optional === true;
417
+ }
418
+ }
200
419
  if (parent == null) {
201
420
  moduleDef.globals[className] = classDef;
202
421
  }
@@ -225,12 +444,12 @@ export async function generate(source, flags) {
225
444
  if (moduleDef.imports.size > 0) {
226
445
  lines.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`);
227
446
  }
228
- if (moduleDef.importedTypes.size > 0) {
229
- lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`);
230
- }
231
447
  if (moduleDef.imports.has('encodeMessage')) {
232
448
  lines.push("import type { Uint8ArrayList } from 'uint8arraylist'");
233
449
  }
450
+ if (moduleDef.importedTypes.size > 0) {
451
+ lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`);
452
+ }
234
453
  lines = [
235
454
  ...lines,
236
455
  '',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,EAAE,MAAM,aAAa,CAAA;AAE5B,SAAS,iBAAiB,CAAE,KAAa,EAAE,SAAiB,EAAE,SAAkB;IAC9E,MAAM,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAA;AAC9F,CAAC;AAED,MAAM,KAAK,GAA2B;IACpC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,YAAY;CACpB,CAAA;AAED,SAAS,YAAY,CAAE,QAAgB,EAAE,QAAoB,EAAE,SAAoB;IACjF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;QAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAA;KACvB;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;KAC/C;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;QACvC,OAAO,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAA;KAC1C;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;QAC3B,OAAO,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KAC1D;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;QACvC,OAAO,QAAQ,CAAA;KAChB;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,GAAG,CAAC,CAAA;AAC9D,CAAC;AAED,SAAS,OAAO,CAAE,QAAgB,EAAE,QAAoB,EAAE,SAAoB;IAC5E,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;KAC/C;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;QACvC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;KACnC;IAED,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;QAC3B,OAAO,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KACrD;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;QACvC,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;KACnC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,GAAG,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,QAAQ,GAA2B;IACvC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACrB,CAAA;AAmBD,SAAS,SAAS,CAAE,GAAQ;IAC1B,OAAO,GAAG,CAAC,MAAM,IAAI,IAAI,CAAA;AAC3B,CAAC;AASD,SAAS,YAAY,CAAE,MAAgC,EAAE,UAAsB,EAAE,SAAoB;IACnG,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAA;QAC5C,MAAM,UAAU,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;QAEzE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAC5H,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,cAAc,CAAE,UAAsB,EAAE,SAAoB;IACnE,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE;QACzB,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAEpC,OAAO;cACG,UAAU,CAAC,IAAI;IAEzB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACxC,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,CAAA;QAC9B,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EACvB;;;SAGO,UAAU,CAAC,IAAI;IAEpB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACtD,OAAO,GAAG,IAAI,MAAM,KAAK,EAAE,CAAA;QAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EACvB;;;mBAGiB,UAAU,CAAC,IAAI;;gCAEF,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI;;EAEnE,CAAC,IAAI,EAAE,CAAA;KACN;IAED,IAAI,MAAM,GAAG,EAAE,CAAA;IAEf,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE;QAC7B,MAAM,GAAG,IAAI,CAAA;QACb,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;aACvC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;aACjD,IAAI,CAAC,MAAM,CAAC;aACZ,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;aAClD,IAAI,CAAC,IAAI,CAAC,CAAA;KACd;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAA;IAEtC,0BAA0B;IAC1B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACtC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACtC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEpC,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;SAChE,IAAI,CAAC,MAAM,CAAC;SACZ,IAAI,EAAE,CAAA;IAET,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,iBAAiB,GAAG,EAAE,CAAA;IAE1B,IAAI,eAAe,KAAK,EAAE,EAAE;QAC1B,YAAY,GAAG;mBACA,UAAU,CAAC,IAAI;IAE9B,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;aACxC,IAAI,CAAC,MAAM,CAAC;aACZ,IAAI,EACT;EACA,CAAA;QACE,iBAAiB,GAAG;sBACF,UAAU,CAAC,IAAI;mCACF,UAAU,CAAC,IAAI;oCACd,UAAU,CAAC,IAAI;QAC3C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACvB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE;YACxB,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAEnC,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;gBAEzD,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;oBAClB,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;iBACrC;qBAAM;oBACL,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;iBACjC;gBAED,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;gBACnE,KAAK,GAAG,GAAG,QAAQ,UAAU,CAAA;aAC9B;iBAAM;gBACL,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;aAC7B;YAED,OAAO,GAAG,QAAQ,CAAC,EAAE,cAAc,IAAI,aAAa,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;QAChM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;;;;;gCAKQ,UAAU,CAAC,IAAI;gCACf,UAAU,CAAC,IAAI;;;8DAGe,UAAU,CAAC,IAAI;gCAC7C,UAAU,CAAC,IAAI;IAC3C,CAAA;KACD;IAED,OAAO;EACP,YAAY;;mBAEK,UAAU,CAAC,IAAI;IAC9B,GAAG,MAAM,GAAG,MAAM,KAAK,EAAE,IAAI,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,iBAAiB,EAAE,CAAC,IAAI,EAAE;;CAEjG,CAAC,SAAS,EAAE,CAAA;AACb,CAAC;AAUD,SAAS,YAAY,CAAE,GAAa;IAClC,MAAM,SAAS,GAAc;QAC3B,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;KACZ,CAAA;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAA;IAEvB,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;KAC3D;IAED,SAAS,aAAa,CAAE,IAA8B,EAAE,MAAiB;QACvE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;YAEhC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAA;YACzB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;YACxB,QAAQ,CAAC,QAAQ,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAA;YAElF,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC3B,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;aACzC;YAED,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA;aACxC;SACF;IACH,CAAC;IAED,aAAa,CAAC,IAAI,CAAC,CAAA;IAEnB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QAEhC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;KAC7D;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAE,MAAc,EAAE,KAAY;IAC1D,6BAA6B;IAC7B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAE1D,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,8BAA8B,CAAC,CAAA;KAC3E;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAEnC,IAAI,KAAK,GAAG;QACV,oCAAoC;QACpC,sDAAsD;QACtD,EAAE;KACH,CAAA;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;QAC9B,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;KAC5F;IAED,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE;QACpC,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;KACvG;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;QAC1C,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;KACnE;IAED,KAAK,GAAG;QACN,GAAG,KAAK;QACR,EAAE;QACF,GAAG,SAAS,CAAC,QAAQ;KACtB,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IAEvC,MAAM,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,CAAA;AACpF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "protons",
3
- "version": "4.0.2",
3
+ "version": "5.1.0",
4
4
  "description": "Protobuf to ts transpiler",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/protons/tree/master/packages/protons#readme",
@@ -154,12 +154,15 @@
154
154
  },
155
155
  "dependencies": {
156
156
  "meow": "^10.1.2",
157
- "protobufjs": "^6.11.2"
157
+ "protobufjs-cli": "^1.0.0"
158
158
  },
159
159
  "devDependencies": {
160
160
  "aegir": "^37.0.5",
161
+ "long": "^5.2.0",
161
162
  "pbjs": "^0.0.14",
162
- "protons-runtime": "^2.0.0",
163
- "uint8arraylist": "^2.0.0"
163
+ "protobufjs": "^7.0.0",
164
+ "protons-runtime": "^3.0.0",
165
+ "uint8arraylist": "^2.3.2",
166
+ "uint8arrays": "^3.1.0"
164
167
  }
165
168
  }
package/src/index.ts CHANGED
@@ -1,29 +1,92 @@
1
- import { main as pbjs } from 'protobufjs/cli/pbjs.js'
1
+ import { main as pbjs } from 'protobufjs-cli/pbjs.js'
2
2
  import path from 'path'
3
3
  import { promisify } from 'util'
4
4
  import fs from 'fs/promises'
5
5
 
6
+ export enum CODEC_TYPES {
7
+ VARINT = 0,
8
+ BIT64,
9
+ LENGTH_DELIMITED,
10
+ START_GROUP,
11
+ END_GROUP,
12
+ BIT32
13
+ }
14
+
6
15
  function pathWithExtension (input: string, extension: string, outputDir?: string) {
7
16
  const output = outputDir ?? path.dirname(input)
8
17
  return path.join(output, path.basename(input).split('.').slice(0, -1).join('.') + extension)
9
18
  }
10
19
 
11
20
  const types: Record<string, string> = {
21
+ bool: 'boolean',
22
+ bytes: 'Uint8Array',
12
23
  double: 'number',
24
+ fixed32: 'number',
25
+ fixed64: 'bigint',
13
26
  float: 'number',
14
27
  int32: 'number',
15
28
  int64: 'bigint',
16
- uint32: 'number',
17
- uint64: 'bigint',
18
- sint32: 'number',
19
- sint64: 'bigint',
20
- fixed32: 'number',
21
- fixed64: 'bigint',
22
29
  sfixed32: 'number',
23
30
  sfixed64: 'bigint',
24
- bool: 'boolean',
31
+ sint32: 'number',
32
+ sint64: 'bigint',
25
33
  string: 'string',
26
- bytes: 'Uint8Array'
34
+ uint32: 'number',
35
+ uint64: 'bigint'
36
+ }
37
+
38
+ const encoderGenerators: Record<string, (val: string) => string> = {
39
+ bool: (val) => `writer.bool(${val})`,
40
+ bytes: (val) => `writer.bytes(${val})`,
41
+ double: (val) => `writer.double(${val})`,
42
+ fixed32: (val) => `writer.fixed32(${val})`,
43
+ fixed64: (val) => `writer.fixed64(${val})`,
44
+ float: (val) => `writer.float(${val})`,
45
+ int32: (val) => `writer.int32(${val})`,
46
+ int64: (val) => `writer.int64(${val})`,
47
+ sfixed32: (val) => `writer.sfixed32(${val})`,
48
+ sfixed64: (val) => `writer.sfixed64(${val})`,
49
+ sint32: (val) => `writer.sint32(${val})`,
50
+ sint64: (val) => `writer.sint64(${val})`,
51
+ string: (val) => `writer.string(${val})`,
52
+ uint32: (val) => `writer.uint32(${val})`,
53
+ uint64: (val) => `writer.uint64(${val})`
54
+ }
55
+
56
+ const decoderGenerators: Record<string, () => string> = {
57
+ bool: () => 'reader.bool()',
58
+ bytes: () => 'reader.bytes()',
59
+ double: () => 'reader.double()',
60
+ fixed32: () => 'reader.fixed32()',
61
+ fixed64: () => 'reader.fixed64()',
62
+ float: () => 'reader.float()',
63
+ int32: () => 'reader.int32()',
64
+ int64: () => 'reader.int64()',
65
+ sfixed32: () => 'reader.sfixed32()',
66
+ sfixed64: () => 'reader.sfixed64()',
67
+ sint32: () => 'reader.sint32()',
68
+ sint64: () => 'reader.sint64()',
69
+ string: () => 'reader.string()',
70
+ uint32: () => 'reader.uint32()',
71
+ uint64: () => 'reader.uint64()'
72
+ }
73
+
74
+ const defaultValueGenerators: Record<string, () => string> = {
75
+ bool: () => 'false',
76
+ bytes: () => 'new Uint8Array(0)',
77
+ double: () => '0',
78
+ fixed32: () => '0',
79
+ fixed64: () => '0n',
80
+ float: () => '0',
81
+ int32: () => '0',
82
+ int64: () => '0n',
83
+ sfixed32: () => '0',
84
+ sfixed64: () => '0n',
85
+ sint32: () => '0',
86
+ sint64: () => '0n',
87
+ string: () => "''",
88
+ uint32: () => '0',
89
+ uint64: () => '0n'
27
90
  }
28
91
 
29
92
  function findTypeName (typeName: string, classDef: MessageDef, moduleDef: ModuleDef): string {
@@ -70,22 +133,101 @@ function findDef (typeName: string, classDef: MessageDef, moduleDef: ModuleDef):
70
133
  throw new Error(`Could not resolve type name "${typeName}"`)
71
134
  }
72
135
 
136
+ function createDefaultObject (fields: Record<string, FieldDef>, messageDef: MessageDef, moduleDef: ModuleDef): string {
137
+ const output = Object.entries(fields)
138
+ .map(([name, fieldDef]) => {
139
+ if (fieldDef.repeated) {
140
+ return `${name}: []`
141
+ }
142
+
143
+ if (fieldDef.optional) {
144
+ return ''
145
+ }
146
+
147
+ const type: string = fieldDef.type
148
+ let defaultValue
149
+
150
+ if (defaultValueGenerators[type] != null) {
151
+ defaultValue = defaultValueGenerators[type]()
152
+ } else {
153
+ const def = findDef(fieldDef.type, messageDef, moduleDef)
154
+
155
+ if (isEnumDef(def)) {
156
+ // select lowest-value enum - should be 0 but it's not guaranteed
157
+ const val = Object.entries(def.values)
158
+ .sort((a, b) => {
159
+ if (a[1] < b[1]) {
160
+ return 1
161
+ }
162
+
163
+ if (a[1] > b[1]) {
164
+ return -1
165
+ }
166
+
167
+ return 0
168
+ })
169
+ .pop()
170
+
171
+ if (val == null) {
172
+ throw new Error(`Could not find default enum value for ${def.fullName}`)
173
+ }
174
+
175
+ defaultValue = `${def.name}.${val[0]}`
176
+ } else {
177
+ defaultValue = 'undefined'
178
+ }
179
+ }
180
+
181
+ return `${name}: ${defaultValue}`
182
+ })
183
+ .filter(Boolean)
184
+ .join(',\n ')
185
+
186
+ if (output !== '') {
187
+ return `
188
+ ${output}
189
+ `
190
+ }
191
+
192
+ return ''
193
+ }
194
+
73
195
  const encoders: Record<string, string> = {
74
196
  bool: 'bool',
75
- double: 'double',
76
197
  bytes: 'bytes',
198
+ double: 'double',
77
199
  fixed32: 'fixed32',
78
200
  fixed64: 'fixed64',
79
201
  float: 'float',
80
202
  int32: 'int32',
81
203
  int64: 'int64',
204
+ sfixed32: 'sfixed32',
205
+ sfixed64: 'sfixed64',
82
206
  sint32: 'sint32',
83
207
  sint64: 'sint64',
84
208
  string: 'string',
85
209
  uint32: 'uint32',
86
- uint64: 'uint64',
87
- sfixed32: 'sfixed32',
88
- sfixed64: 'sfixed64'
210
+ uint64: 'uint64'
211
+ }
212
+
213
+ const codecTypes: Record<string, CODEC_TYPES> = {
214
+ bool: CODEC_TYPES.VARINT,
215
+ bytes: CODEC_TYPES.LENGTH_DELIMITED,
216
+ double: CODEC_TYPES.BIT64,
217
+ enum: CODEC_TYPES.VARINT,
218
+ fixed32: CODEC_TYPES.BIT32,
219
+ fixed64: CODEC_TYPES.BIT64,
220
+ float: CODEC_TYPES.BIT32,
221
+ int32: CODEC_TYPES.VARINT,
222
+ int64: CODEC_TYPES.VARINT,
223
+ message: CODEC_TYPES.LENGTH_DELIMITED,
224
+ sfixed32: CODEC_TYPES.BIT32,
225
+ sfixed64: CODEC_TYPES.BIT64,
226
+ sint32: CODEC_TYPES.VARINT,
227
+ sint64: CODEC_TYPES.VARINT,
228
+ string: CODEC_TYPES.LENGTH_DELIMITED,
229
+ uint32: CODEC_TYPES.VARINT,
230
+ uint64: CODEC_TYPES.VARINT
89
231
  }
90
232
 
91
233
  interface ClassDef {
@@ -114,14 +256,13 @@ interface FieldDef {
114
256
  id: number
115
257
  options?: Record<string, any>
116
258
  rule: string
259
+ optional: boolean
260
+ repeated: boolean
117
261
  }
118
262
 
119
263
  function defineFields (fields: Record<string, FieldDef>, messageDef: MessageDef, moduleDef: ModuleDef) {
120
264
  return Object.entries(fields).map(([fieldName, fieldDef]) => {
121
- const isArray = fieldDef.rule === 'repeated'
122
- const isOptional = !isArray && fieldDef.options?.proto3_optional === true
123
-
124
- return `${fieldName}${isOptional ? '?' : ''}: ${findTypeName(fieldDef.type, messageDef, moduleDef)}${isArray ? '[]' : ''}`
265
+ return `${fieldName}${fieldDef.optional ? '?' : ''}: ${findTypeName(fieldDef.type, messageDef, moduleDef)}${fieldDef.repeated ? '[]' : ''}`
125
266
  })
126
267
  }
127
268
 
@@ -148,7 +289,7 @@ enum __${messageDef.name}Values {
148
289
 
149
290
  export namespace ${messageDef.name} {
150
291
  export const codec = () => {
151
- return enumeration<typeof ${messageDef.name}>(__${messageDef.name}Values)
292
+ return enumeration<${messageDef.name}>(__${messageDef.name}Values)
152
293
  }
153
294
  }`.trim()
154
295
  }
@@ -189,36 +330,134 @@ export interface ${messageDef.name} {
189
330
  .trim()
190
331
  }
191
332
  }`
333
+
334
+ const ensureArrayProps = Object.entries(fields)
335
+ .map(([name, fieldDef]) => {
336
+ // make sure repeated fields have an array if not set
337
+ if (fieldDef.optional && fieldDef.rule === 'repeated') {
338
+ return ` obj.${name} = obj.${name} ?? []`
339
+ }
340
+
341
+ return ''
342
+ }).filter(Boolean).join('\n')
343
+
344
+ const ensureRequiredFields = Object.entries(fields)
345
+ .map(([name, fieldDef]) => {
346
+ // make sure required fields are set
347
+ if (!fieldDef.optional && !fieldDef.repeated) {
348
+ return `
349
+ if (obj.${name} == null) {
350
+ throw new Error('Protocol error: value for required field "${name}" was not found in protobuf')
351
+ }`
352
+ }
353
+
354
+ return ''
355
+ }).filter(Boolean).join('\n')
356
+
192
357
  interfaceCodecDef = `
193
358
  let _codec: Codec<${messageDef.name}>
359
+
194
360
  export const codec = (): Codec<${messageDef.name}> => {
195
- if (!_codec) _codec = message<${messageDef.name}>({
196
- ${Object.entries(fields)
361
+ if (_codec == null) {
362
+ _codec = message<${messageDef.name}>((obj, writer, opts = {}) => {
363
+ if (opts.lengthDelimited !== false) {
364
+ writer.fork()
365
+ }
366
+ ${Object.entries(fields)
197
367
  .map(([name, fieldDef]) => {
198
- let codec = encoders[fieldDef.type]
368
+ let codec: string = encoders[fieldDef.type]
369
+ let type: string = fieldDef.type
199
370
 
200
371
  if (codec == null) {
201
372
  const def = findDef(fieldDef.type, messageDef, moduleDef)
202
373
 
203
374
  if (isEnumDef(def)) {
204
375
  moduleDef.imports.add('enumeration')
376
+ type = 'enum'
205
377
  } else {
206
378
  moduleDef.imports.add('message')
379
+ type = 'message'
207
380
  }
208
381
 
209
382
  const typeName = findTypeName(fieldDef.type, messageDef, moduleDef)
210
383
  codec = `${typeName}.codec()`
211
- } else {
212
- moduleDef.imports.add(codec)
213
384
  }
214
385
 
215
- return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`
216
- }).join(',\n ')}
217
- })
386
+ return `
387
+ if (obj.${name} != null) {${
388
+ fieldDef.rule === 'repeated'
389
+ ? `
390
+ for (const value of obj.${name}) {
391
+ writer.uint32(${(fieldDef.id << 3) | codecTypes[type]})
392
+ ${encoderGenerators[type] == null ? `${codec}.encode(value, writer)` : encoderGenerators[type]('value')}
393
+ }`
394
+ : `
395
+ writer.uint32(${(fieldDef.id << 3) | codecTypes[type]})
396
+ ${encoderGenerators[type] == null ? `${codec}.encode(obj.${name}, writer)` : encoderGenerators[type](`obj.${name}`)}`
397
+ }
398
+ }${fieldDef.optional
399
+ ? ''
400
+ : ` else {
401
+ throw new Error('Protocol error: required field "${name}" was not found in object')
402
+ }`}`
403
+ }).join('\n')}
404
+
405
+ if (opts.lengthDelimited !== false) {
406
+ writer.ldelim()
407
+ }
408
+ }, (reader, length) => {
409
+ const obj: any = {${createDefaultObject(fields, messageDef, moduleDef)}}
410
+
411
+ const end = length == null ? reader.len : reader.pos + length
412
+
413
+ while (reader.pos < end) {
414
+ const tag = reader.uint32()
415
+
416
+ switch (tag >>> 3) {
417
+ ${Object.entries(fields)
418
+ .map(([name, fieldDef]) => {
419
+ let codec: string = encoders[fieldDef.type]
420
+ let type: string = fieldDef.type
421
+
422
+ if (codec == null) {
423
+ const def = findDef(fieldDef.type, messageDef, moduleDef)
424
+
425
+ if (isEnumDef(def)) {
426
+ moduleDef.imports.add('enumeration')
427
+ type = 'enum'
428
+ } else {
429
+ moduleDef.imports.add('message')
430
+ type = 'message'
431
+ }
432
+
433
+ const typeName = findTypeName(fieldDef.type, messageDef, moduleDef)
434
+ codec = `${typeName}.codec()`
435
+ }
436
+
437
+ return `case ${fieldDef.id}:${fieldDef.rule === 'repeated'
438
+ ? `${fieldDef.optional
439
+ ? `
440
+ obj.${name} = obj.${name} ?? []`
441
+ : ''}
442
+ obj.${name}.push(${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()})`
443
+ : `
444
+ obj.${name} = ${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()}`}
445
+ break`
446
+ }).join('\n ')}
447
+ default:
448
+ reader.skipType(tag & 7)
449
+ break
450
+ }
451
+ }${ensureArrayProps !== '' ? `\n\n${ensureArrayProps}` : ''}${ensureRequiredFields !== '' ? `\n${ensureRequiredFields}` : ''}
452
+
453
+ return obj
454
+ })
455
+ }
456
+
218
457
  return _codec
219
458
  }
220
459
 
221
- export const encode = (obj: ${messageDef.name}): Uint8ArrayList => {
460
+ export const encode = (obj: ${messageDef.name}): Uint8Array => {
222
461
  return encodeMessage(obj, ${messageDef.name}.codec())
223
462
  }
224
463
 
@@ -271,6 +510,13 @@ function defineModule (def: ClassDef): ModuleDef {
271
510
  defineMessage(classDef.nested, classDef)
272
511
  }
273
512
 
513
+ if (classDef.fields != null) {
514
+ for (const name of Object.keys(classDef.fields)) {
515
+ classDef.fields[name].repeated = classDef.fields[name].rule === 'repeated'
516
+ classDef.fields[name].optional = !classDef.fields[name].repeated && classDef.fields[name].options?.proto3_optional === true
517
+ }
518
+ }
519
+
274
520
  if (parent == null) {
275
521
  moduleDef.globals[className] = classDef
276
522
  }
@@ -313,14 +559,14 @@ export async function generate (source: string, flags: Flags) {
313
559
  lines.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`)
314
560
  }
315
561
 
316
- if (moduleDef.importedTypes.size > 0) {
317
- lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`)
318
- }
319
-
320
562
  if (moduleDef.imports.has('encodeMessage')) {
321
563
  lines.push("import type { Uint8ArrayList } from 'uint8arraylist'")
322
564
  }
323
565
 
566
+ if (moduleDef.importedTypes.size > 0) {
567
+ lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`)
568
+ }
569
+
324
570
  lines = [
325
571
  ...lines,
326
572
  '',