protons 7.2.1 → 7.3.1

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.
@@ -9,6 +9,7 @@ async function main() {
9
9
  Options
10
10
  --output, -o Path to a directory to write transpiled typescript files into
11
11
  --strict, -s Causes parsing warnings to become errors
12
+ --path, -p Adds a directory to the include path
12
13
 
13
14
  Examples
14
15
  $ protons ./path/to/file.proto ./path/to/other/file.proto
@@ -23,6 +24,11 @@ async function main() {
23
24
  strict: {
24
25
  type: 'boolean',
25
26
  shortFlag: 's'
27
+ },
28
+ path: {
29
+ type: 'string',
30
+ shortFlag: 'p',
31
+ isMultiple: true
26
32
  }
27
33
  }
28
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"protons.js","sourceRoot":"","sources":["../../bin/protons.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC;;;;;;;;;;CAUlB,EAAE;QACC,8CAA8C;QAC9C,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,GAAG;aACf;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,GAAG;aACf;SACF;KACF,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;KAC5C;IAED,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE;QAC9B,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;KAClC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAC,iCAAiC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"protons.js","sourceRoot":"","sources":["../../bin/protons.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC;;;;;;;;;;;CAWlB,EAAE;QACC,8CAA8C;QAC9C,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,GAAG;aACf;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,GAAG;aACf;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,IAAI;aACjB;SACF;KACF,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;KAC5C;IAED,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE;QAC9B,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;KAClC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAC,iCAAiC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -19,6 +19,10 @@ interface Flags {
19
19
  * If true, warnings will be thrown as errors
20
20
  */
21
21
  strict?: boolean;
22
+ /**
23
+ * A list of directories to add to the include path
24
+ */
25
+ path?: string[];
22
26
  }
23
27
  export declare function generate(source: string, flags: Flags): Promise<void>;
24
28
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,oBAAY,WAAW;IACrB,MAAM,IAAI;IACV,KAAK,IAAA;IACL,gBAAgB,IAAA;IAChB,WAAW,IAAA;IACX,SAAS,IAAA;IACT,KAAK,IAAA;CACN;AAOD,qBAAa,SAAU,SAAQ,KAAK;IAC3B,IAAI,EAAE,MAAM,CAAA;gBAEN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKnE;AAu0BD,UAAU,KAAK;IACb;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,oBAAY,WAAW;IACrB,MAAM,IAAI;IACV,KAAK,IAAA;IACL,gBAAgB,IAAA;IAChB,WAAW,IAAA;IACX,SAAS,IAAA;IACT,KAAK,IAAA;CACN;AAOD,qBAAa,SAAU,SAAQ,KAAK;IAC3B,IAAI,EAAE,MAAM,CAAA;gBAEN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKnE;AAk6BD,UAAU,KAAK;IACb;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAwG3E"}
package/dist/src/index.js CHANGED
@@ -160,7 +160,7 @@ const decoderGenerators = {
160
160
  };
161
161
  const defaultValueGenerators = {
162
162
  bool: () => 'false',
163
- bytes: () => 'new Uint8Array(0)',
163
+ bytes: () => 'uint8ArrayAlloc(0)',
164
164
  double: () => '0',
165
165
  fixed32: () => '0',
166
166
  fixed64: () => '0n',
@@ -265,6 +265,9 @@ function createDefaultObject(fields, messageDef, moduleDef) {
265
265
  if (jsTypeOverride != null && defaultValueGeneratorsJsTypeOverrides[jsTypeOverride] != null) {
266
266
  defaultValueGenerator = defaultValueGeneratorsJsTypeOverrides[jsTypeOverride];
267
267
  }
268
+ if (type === 'bytes') {
269
+ moduleDef.addImport('uint8arrays/alloc', 'alloc', 'uint8ArrayAlloc');
270
+ }
268
271
  defaultValue = defaultValueGenerator();
269
272
  }
270
273
  else {
@@ -351,7 +354,7 @@ function defineFields(fields, messageDef, moduleDef) {
351
354
  }
352
355
  function compileMessage(messageDef, moduleDef, flags) {
353
356
  if (isEnumDef(messageDef)) {
354
- moduleDef.imports.add('enumeration');
357
+ moduleDef.addImport('protons-runtime', 'enumeration');
355
358
  // check that the enum def values start from 0
356
359
  if (Object.values(messageDef.values)[0] !== 0) {
357
360
  const message = `enum ${messageDef.name} does not contain a value that maps to zero as it's first element, this is required in proto3 - see https://protobuf.dev/programming-guides/proto3/#enum`;
@@ -394,10 +397,11 @@ export namespace ${messageDef.name} {
394
397
  }
395
398
  const fields = messageDef.fields ?? {};
396
399
  // import relevant modules
397
- moduleDef.imports.add('encodeMessage');
398
- moduleDef.imports.add('decodeMessage');
399
- moduleDef.imports.add('message');
400
- moduleDef.importedTypes.add('Codec');
400
+ moduleDef.addImport('protons-runtime', 'encodeMessage');
401
+ moduleDef.addImport('protons-runtime', 'decodeMessage');
402
+ moduleDef.addImport('protons-runtime', 'message');
403
+ moduleDef.addTypeImport('protons-runtime', 'Codec');
404
+ moduleDef.addTypeImport('uint8arraylist', 'Uint8ArrayList');
401
405
  const interfaceFields = defineFields(fields, messageDef, moduleDef)
402
406
  .join('\n ')
403
407
  .trim();
@@ -422,11 +426,11 @@ export interface ${messageDef.name} {
422
426
  let typeName = '';
423
427
  if (codec == null) {
424
428
  if (fieldDef.enum) {
425
- moduleDef.imports.add('enumeration');
429
+ moduleDef.addImport('protons-runtime', 'enumeration');
426
430
  type = 'enum';
427
431
  }
428
432
  else {
429
- moduleDef.imports.add('message');
433
+ moduleDef.addImport('protons-runtime', 'message');
430
434
  type = 'message';
431
435
  }
432
436
  typeName = findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef);
@@ -524,11 +528,11 @@ export interface ${messageDef.name} {
524
528
  let type = fieldDef.type;
525
529
  if (codec == null) {
526
530
  if (fieldDef.enum) {
527
- moduleDef.imports.add('enumeration');
531
+ moduleDef.addImport('protons-runtime', 'enumeration');
528
532
  type = 'enum';
529
533
  }
530
534
  else {
531
- moduleDef.imports.add('message');
535
+ moduleDef.addImport('protons-runtime', 'message');
532
536
  type = 'message';
533
537
  }
534
538
  const typeName = findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef);
@@ -538,14 +542,32 @@ export interface ${messageDef.name} {
538
542
  const jsTypeOverride = findJsTypeOverride(fieldDef.type, fieldDef);
539
543
  const parseValue = `${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type](jsTypeOverride)}`;
540
544
  if (fieldDef.map) {
541
- return `case ${fieldDef.id}: {
545
+ let limit = '';
546
+ if (fieldDef.lengthLimit != null) {
547
+ moduleDef.addImport('protons-runtime', 'CodeError');
548
+ limit = `
549
+ if (obj.${fieldName}.size === ${fieldDef.lengthLimit}) {
550
+ throw new CodeError('decode error - map field "${fieldName}" had too many elements', 'ERR_MAX_SIZE')
551
+ }
552
+ `;
553
+ }
554
+ return `case ${fieldDef.id}: {${limit}
542
555
  const entry = ${parseValue}
543
556
  obj.${fieldName}.set(entry.key, entry.value)
544
557
  break
545
558
  }`;
546
559
  }
547
560
  else if (fieldDef.repeated) {
548
- return `case ${fieldDef.id}: {
561
+ let limit = '';
562
+ if (fieldDef.lengthLimit != null) {
563
+ moduleDef.addImport('protons-runtime', 'CodeError');
564
+ limit = `
565
+ if (obj.${fieldName}.length === ${fieldDef.lengthLimit}) {
566
+ throw new CodeError('decode error - repeated field "${fieldName}" had too many elements', 'ERR_MAX_LENGTH')
567
+ }
568
+ `;
569
+ }
570
+ return `case ${fieldDef.id}: {${limit}
549
571
  obj.${fieldName}.push(${parseValue})
550
572
  break
551
573
  }`;
@@ -609,14 +631,64 @@ export namespace ${messageDef.name} {
609
631
  }
610
632
  `.trimStart();
611
633
  }
634
+ class ModuleDef {
635
+ imports;
636
+ types;
637
+ compiled;
638
+ globals;
639
+ constructor() {
640
+ this.imports = new Map();
641
+ this.types = new Set();
642
+ this.compiled = [];
643
+ this.globals = {};
644
+ }
645
+ addImport(module, symbol, alias) {
646
+ const defs = this._findDefs(module);
647
+ for (const def of defs) {
648
+ // check if we already have a definition for this symbol
649
+ if (def.symbol === symbol) {
650
+ if (alias !== def.alias) {
651
+ throw new Error(`Type symbol ${symbol} imported from ${module} with alias ${def.alias} does not match alias ${alias}`);
652
+ }
653
+ // if it was a type before it's not now
654
+ def.type = false;
655
+ return;
656
+ }
657
+ }
658
+ defs.push({
659
+ symbol,
660
+ alias,
661
+ type: false
662
+ });
663
+ }
664
+ addTypeImport(module, symbol, alias) {
665
+ const defs = this._findDefs(module);
666
+ for (const def of defs) {
667
+ // check if we already have a definition for this symbol
668
+ if (def.symbol === symbol) {
669
+ if (alias !== def.alias) {
670
+ throw new Error(`Type symbol ${symbol} imported from ${module} with alias ${def.alias} does not match alias ${alias}`);
671
+ }
672
+ return;
673
+ }
674
+ }
675
+ defs.push({
676
+ symbol,
677
+ alias,
678
+ type: true
679
+ });
680
+ }
681
+ _findDefs(module) {
682
+ let defs = this.imports.get(module);
683
+ if (defs == null) {
684
+ defs = [];
685
+ this.imports.set(module, defs);
686
+ }
687
+ return defs;
688
+ }
689
+ }
612
690
  function defineModule(def, flags) {
613
- const moduleDef = {
614
- imports: new Set(),
615
- importedTypes: new Set(),
616
- types: new Set(),
617
- compiled: [],
618
- globals: {}
619
- };
691
+ const moduleDef = new ModuleDef();
620
692
  const defs = def.nested;
621
693
  if (defs == null) {
622
694
  throw new CodeError('No top-level messages found in protobuf', 'ERR_NO_MESSAGES_FOUND');
@@ -636,6 +708,7 @@ function defineModule(def, flags) {
636
708
  fieldDef.repeated = fieldDef.rule === 'repeated';
637
709
  fieldDef.optional = !fieldDef.repeated && fieldDef.options?.proto3_optional === true;
638
710
  fieldDef.map = fieldDef.keyType != null;
711
+ fieldDef.lengthLimit = fieldDef.options?.['(protons.options).limit'];
639
712
  fieldDef.proto2Required = false;
640
713
  if (fieldDef.rule === 'required') {
641
714
  const message = `field "${name}" is required, this is not allowed in proto3. Please convert your proto2 definitions to proto3 - see https://github.com/ipfs/protons/wiki/Required-fields-and-protobuf-3`;
@@ -689,7 +762,11 @@ function defineModule(def, flags) {
689
762
  }
690
763
  export async function generate(source, flags) {
691
764
  // convert .protobuf to .json
692
- const json = await promisify(pbjs)(['-t', 'json', source]);
765
+ const json = await promisify(pbjs)([
766
+ '-t', 'json',
767
+ ...(flags.path ?? []).map(p => ['--path', path.isAbsolute(p) ? p : path.resolve(process.cwd(), p)]).flat(),
768
+ source
769
+ ]);
693
770
  if (json == null) {
694
771
  throw new Error(`Could not convert ${source} to intermediate JSON format`);
695
772
  }
@@ -728,23 +805,40 @@ export async function generate(source, flags) {
728
805
  '/* eslint-disable @typescript-eslint/no-empty-interface */'
729
806
  ];
730
807
  const imports = [];
731
- if (moduleDef.imports.size > 0) {
732
- imports.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`);
733
- }
734
- if (moduleDef.imports.has('encodeMessage')) {
735
- imports.push("import type { Uint8ArrayList } from 'uint8arraylist'");
736
- }
737
- if (moduleDef.importedTypes.size > 0) {
738
- imports.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`);
808
+ const importedModules = Array.from([...moduleDef.imports.entries()])
809
+ .sort((a, b) => {
810
+ return a[0].localeCompare(b[0]);
811
+ })
812
+ .sort((a, b) => {
813
+ const aAllTypes = a[1].reduce((acc, curr) => {
814
+ return acc && curr.type;
815
+ }, true);
816
+ const bAllTypes = b[1].reduce((acc, curr) => {
817
+ return acc && curr.type;
818
+ }, true);
819
+ if (aAllTypes && !bAllTypes) {
820
+ return 1;
821
+ }
822
+ if (!aAllTypes && bAllTypes) {
823
+ return -1;
824
+ }
825
+ return 0;
826
+ });
827
+ for (const imp of importedModules) {
828
+ const allTypes = imp[1].reduce((acc, curr) => {
829
+ return acc && curr.type;
830
+ }, true);
831
+ const symbols = imp[1].sort((a, b) => {
832
+ return a.symbol.localeCompare(b.symbol);
833
+ }).map(imp => {
834
+ return `${!allTypes && imp.type ? 'type ' : ''}${imp.symbol}${imp.alias != null ? ` as ${imp.alias}` : ''}`;
835
+ }).join(', ');
836
+ imports.push(`import ${allTypes ? 'type ' : ''}{ ${symbols} } from '${imp[0]}'`);
739
837
  }
740
838
  const lines = [
741
839
  ...ignores,
742
840
  '',
743
- ...imports.sort((a, b) => {
744
- const aModule = a.split("from '")[1].toString();
745
- const bModule = b.split("from '")[1].toString();
746
- return aModule.localeCompare(bModule);
747
- }),
841
+ ...imports,
748
842
  '',
749
843
  ...moduleDef.compiled
750
844
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
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": "7.2.1",
3
+ "version": "7.3.1",
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",
@@ -139,6 +139,7 @@
139
139
  "pbjs": "^0.0.14",
140
140
  "protobufjs": "^7.0.0",
141
141
  "protons-runtime": "^5.0.0",
142
- "uint8arraylist": "^2.4.3"
142
+ "uint8arraylist": "^2.4.3",
143
+ "uint8arrays": "^4.0.6"
143
144
  }
144
145
  }
package/src/index.ts CHANGED
@@ -190,7 +190,7 @@ const decoderGenerators: Record<string, (jsTypeOverride?: 'number' | 'string') =
190
190
 
191
191
  const defaultValueGenerators: Record<string, () => string> = {
192
192
  bool: () => 'false',
193
- bytes: () => 'new Uint8Array(0)',
193
+ bytes: () => 'uint8ArrayAlloc(0)',
194
194
  double: () => '0',
195
195
  fixed32: () => '0',
196
196
  fixed64: () => '0n',
@@ -320,6 +320,10 @@ function createDefaultObject (fields: Record<string, FieldDef>, messageDef: Mess
320
320
  defaultValueGenerator = defaultValueGeneratorsJsTypeOverrides[jsTypeOverride]
321
321
  }
322
322
 
323
+ if (type === 'bytes') {
324
+ moduleDef.addImport('uint8arrays/alloc', 'alloc', 'uint8ArrayAlloc')
325
+ }
326
+
323
327
  defaultValue = defaultValueGenerator()
324
328
  } else {
325
329
  const def = findDef(fieldDef.type, messageDef, moduleDef)
@@ -430,6 +434,7 @@ interface FieldDef {
430
434
  rule: string
431
435
  optional: boolean
432
436
  repeated: boolean
437
+ lengthLimit?: number
433
438
  message: boolean
434
439
  enum: boolean
435
440
  map: boolean
@@ -456,7 +461,7 @@ function defineFields (fields: Record<string, FieldDef>, messageDef: MessageDef,
456
461
 
457
462
  function compileMessage (messageDef: MessageDef, moduleDef: ModuleDef, flags?: Flags): string {
458
463
  if (isEnumDef(messageDef)) {
459
- moduleDef.imports.add('enumeration')
464
+ moduleDef.addImport('protons-runtime', 'enumeration')
460
465
 
461
466
  // check that the enum def values start from 0
462
467
  if (Object.values(messageDef.values)[0] !== 0) {
@@ -509,10 +514,11 @@ export namespace ${messageDef.name} {
509
514
  const fields = messageDef.fields ?? {}
510
515
 
511
516
  // import relevant modules
512
- moduleDef.imports.add('encodeMessage')
513
- moduleDef.imports.add('decodeMessage')
514
- moduleDef.imports.add('message')
515
- moduleDef.importedTypes.add('Codec')
517
+ moduleDef.addImport('protons-runtime', 'encodeMessage')
518
+ moduleDef.addImport('protons-runtime', 'decodeMessage')
519
+ moduleDef.addImport('protons-runtime', 'message')
520
+ moduleDef.addTypeImport('protons-runtime', 'Codec')
521
+ moduleDef.addTypeImport('uint8arraylist', 'Uint8ArrayList')
516
522
 
517
523
  const interfaceFields = defineFields(fields, messageDef, moduleDef)
518
524
  .join('\n ')
@@ -543,10 +549,10 @@ export interface ${messageDef.name} {
543
549
 
544
550
  if (codec == null) {
545
551
  if (fieldDef.enum) {
546
- moduleDef.imports.add('enumeration')
552
+ moduleDef.addImport('protons-runtime', 'enumeration')
547
553
  type = 'enum'
548
554
  } else {
549
- moduleDef.imports.add('message')
555
+ moduleDef.addImport('protons-runtime', 'message')
550
556
  type = 'message'
551
557
  }
552
558
 
@@ -668,10 +674,10 @@ export interface ${messageDef.name} {
668
674
 
669
675
  if (codec == null) {
670
676
  if (fieldDef.enum) {
671
- moduleDef.imports.add('enumeration')
677
+ moduleDef.addImport('protons-runtime', 'enumeration')
672
678
  type = 'enum'
673
679
  } else {
674
- moduleDef.imports.add('message')
680
+ moduleDef.addImport('protons-runtime', 'message')
675
681
  type = 'message'
676
682
  }
677
683
 
@@ -685,13 +691,37 @@ export interface ${messageDef.name} {
685
691
  const parseValue = `${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type](jsTypeOverride)}`
686
692
 
687
693
  if (fieldDef.map) {
688
- return `case ${fieldDef.id}: {
694
+ let limit = ''
695
+
696
+ if (fieldDef.lengthLimit != null) {
697
+ moduleDef.addImport('protons-runtime', 'CodeError')
698
+
699
+ limit = `
700
+ if (obj.${fieldName}.size === ${fieldDef.lengthLimit}) {
701
+ throw new CodeError('decode error - map field "${fieldName}" had too many elements', 'ERR_MAX_SIZE')
702
+ }
703
+ `
704
+ }
705
+
706
+ return `case ${fieldDef.id}: {${limit}
689
707
  const entry = ${parseValue}
690
708
  obj.${fieldName}.set(entry.key, entry.value)
691
709
  break
692
710
  }`
693
711
  } else if (fieldDef.repeated) {
694
- return `case ${fieldDef.id}: {
712
+ let limit = ''
713
+
714
+ if (fieldDef.lengthLimit != null) {
715
+ moduleDef.addImport('protons-runtime', 'CodeError')
716
+
717
+ limit = `
718
+ if (obj.${fieldName}.length === ${fieldDef.lengthLimit}) {
719
+ throw new CodeError('decode error - repeated field "${fieldName}" had too many elements', 'ERR_MAX_LENGTH')
720
+ }
721
+ `
722
+ }
723
+
724
+ return `case ${fieldDef.id}: {${limit}
695
725
  obj.${fieldName}.push(${parseValue})
696
726
  break
697
727
  }`
@@ -760,23 +790,83 @@ export namespace ${messageDef.name} {
760
790
  `.trimStart()
761
791
  }
762
792
 
763
- interface ModuleDef {
764
- imports: Set<string>
765
- importedTypes: Set<string>
793
+ interface Import {
794
+ symbol: string
795
+ alias?: string
796
+ type: boolean
797
+ }
798
+
799
+ class ModuleDef {
800
+ imports: Map<string, Import[]>
766
801
  types: Set<string>
767
802
  compiled: string[]
768
803
  globals: Record<string, ClassDef>
769
- }
770
804
 
771
- function defineModule (def: ClassDef, flags: Flags): ModuleDef {
772
- const moduleDef: ModuleDef = {
773
- imports: new Set(),
774
- importedTypes: new Set(),
775
- types: new Set(),
776
- compiled: [],
777
- globals: {}
805
+ constructor () {
806
+ this.imports = new Map()
807
+ this.types = new Set()
808
+ this.compiled = []
809
+ this.globals = {}
810
+ }
811
+
812
+ addImport (module: string, symbol: string, alias?: string): void {
813
+ const defs = this._findDefs(module)
814
+
815
+ for (const def of defs) {
816
+ // check if we already have a definition for this symbol
817
+ if (def.symbol === symbol) {
818
+ if (alias !== def.alias) {
819
+ throw new Error(`Type symbol ${symbol} imported from ${module} with alias ${def.alias} does not match alias ${alias}`)
820
+ }
821
+
822
+ // if it was a type before it's not now
823
+ def.type = false
824
+ return
825
+ }
826
+ }
827
+
828
+ defs.push({
829
+ symbol,
830
+ alias,
831
+ type: false
832
+ })
778
833
  }
779
834
 
835
+ addTypeImport (module: string, symbol: string, alias?: string): void {
836
+ const defs = this._findDefs(module)
837
+
838
+ for (const def of defs) {
839
+ // check if we already have a definition for this symbol
840
+ if (def.symbol === symbol) {
841
+ if (alias !== def.alias) {
842
+ throw new Error(`Type symbol ${symbol} imported from ${module} with alias ${def.alias} does not match alias ${alias}`)
843
+ }
844
+
845
+ return
846
+ }
847
+ }
848
+
849
+ defs.push({
850
+ symbol,
851
+ alias,
852
+ type: true
853
+ })
854
+ }
855
+
856
+ _findDefs (module: string): Import[] {
857
+ let defs = this.imports.get(module)
858
+
859
+ if (defs == null) {
860
+ defs = []
861
+ this.imports.set(module, defs)
862
+ }
863
+
864
+ return defs
865
+ }
866
+ }
867
+
868
+ function defineModule (def: ClassDef, flags: Flags): ModuleDef {
869
+ const moduleDef = new ModuleDef()
780
870
  const defs = def.nested
781
871
 
782
872
  if (defs == null) {
@@ -801,6 +891,7 @@ function defineModule (def: ClassDef, flags: Flags): ModuleDef {
801
891
  fieldDef.repeated = fieldDef.rule === 'repeated'
802
892
  fieldDef.optional = !fieldDef.repeated && fieldDef.options?.proto3_optional === true
803
893
  fieldDef.map = fieldDef.keyType != null
894
+ fieldDef.lengthLimit = fieldDef.options?.['(protons.options).limit']
804
895
  fieldDef.proto2Required = false
805
896
 
806
897
  if (fieldDef.rule === 'required') {
@@ -876,11 +967,20 @@ interface Flags {
876
967
  * If true, warnings will be thrown as errors
877
968
  */
878
969
  strict?: boolean
970
+
971
+ /**
972
+ * A list of directories to add to the include path
973
+ */
974
+ path?: string[]
879
975
  }
880
976
 
881
977
  export async function generate (source: string, flags: Flags): Promise<void> {
882
978
  // convert .protobuf to .json
883
- const json = await promisify(pbjs)(['-t', 'json', source])
979
+ const json = await promisify(pbjs)([
980
+ '-t', 'json',
981
+ ...(flags.path ?? []).map(p => ['--path', path.isAbsolute(p) ? p : path.resolve(process.cwd(), p)]).flat(),
982
+ source
983
+ ])
884
984
 
885
985
  if (json == null) {
886
986
  throw new Error(`Could not convert ${source} to intermediate JSON format`)
@@ -928,28 +1028,48 @@ export async function generate (source: string, flags: Flags): Promise<void> {
928
1028
  ]
929
1029
 
930
1030
  const imports = []
1031
+ const importedModules = Array.from([...moduleDef.imports.entries()])
1032
+ .sort((a, b) => {
1033
+ return a[0].localeCompare(b[0])
1034
+ })
1035
+ .sort((a, b) => {
1036
+ const aAllTypes = a[1].reduce((acc, curr) => {
1037
+ return acc && curr.type
1038
+ }, true)
931
1039
 
932
- if (moduleDef.imports.size > 0) {
933
- imports.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`)
934
- }
1040
+ const bAllTypes = b[1].reduce((acc, curr) => {
1041
+ return acc && curr.type
1042
+ }, true)
935
1043
 
936
- if (moduleDef.imports.has('encodeMessage')) {
937
- imports.push("import type { Uint8ArrayList } from 'uint8arraylist'")
938
- }
1044
+ if (aAllTypes && !bAllTypes) {
1045
+ return 1
1046
+ }
939
1047
 
940
- if (moduleDef.importedTypes.size > 0) {
941
- imports.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`)
1048
+ if (!aAllTypes && bAllTypes) {
1049
+ return -1
1050
+ }
1051
+
1052
+ return 0
1053
+ })
1054
+
1055
+ for (const imp of importedModules) {
1056
+ const allTypes = imp[1].reduce((acc, curr) => {
1057
+ return acc && curr.type
1058
+ }, true)
1059
+
1060
+ const symbols = imp[1].sort((a, b) => {
1061
+ return a.symbol.localeCompare(b.symbol)
1062
+ }).map(imp => {
1063
+ return `${!allTypes && imp.type ? 'type ' : ''}${imp.symbol}${imp.alias != null ? ` as ${imp.alias}` : ''}`
1064
+ }).join(', ')
1065
+
1066
+ imports.push(`import ${allTypes ? 'type ' : ''}{ ${symbols} } from '${imp[0]}'`)
942
1067
  }
943
1068
 
944
1069
  const lines = [
945
1070
  ...ignores,
946
1071
  '',
947
- ...imports.sort((a, b) => {
948
- const aModule = a.split("from '")[1].toString()
949
- const bModule = b.split("from '")[1].toString()
950
-
951
- return aModule.localeCompare(bModule)
952
- }),
1072
+ ...imports,
953
1073
  '',
954
1074
  ...moduleDef.compiled
955
1075
  ]