protons 7.0.7 → 7.2.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.
- package/README.md +1 -1
- package/dist/bin/protons.js +5 -0
- package/dist/bin/protons.js.map +1 -1
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +198 -39
- package/dist/src/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +257 -41
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://ipfs.tech)
|
|
4
4
|
[](https://discuss.ipfs.tech)
|
|
5
5
|
[](https://codecov.io/gh/ipfs/protons)
|
|
6
|
-
[](https://github.com/ipfs/protons/actions/workflows/js-test-and-release.yml?query=branch%3Amain)
|
|
7
7
|
|
|
8
8
|
> Protobuf to ts transpiler
|
|
9
9
|
|
package/dist/bin/protons.js
CHANGED
|
@@ -8,6 +8,7 @@ async function main() {
|
|
|
8
8
|
|
|
9
9
|
Options
|
|
10
10
|
--output, -o Path to a directory to write transpiled typescript files into
|
|
11
|
+
--strict, -s Causes parsing warnings to become errors
|
|
11
12
|
|
|
12
13
|
Examples
|
|
13
14
|
$ protons ./path/to/file.proto ./path/to/other/file.proto
|
|
@@ -18,6 +19,10 @@ async function main() {
|
|
|
18
19
|
output: {
|
|
19
20
|
type: 'string',
|
|
20
21
|
shortFlag: 'o'
|
|
22
|
+
},
|
|
23
|
+
strict: {
|
|
24
|
+
type: 'boolean',
|
|
25
|
+
shortFlag: 's'
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
28
|
});
|
package/dist/bin/protons.js.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -6,8 +6,19 @@ export declare enum CODEC_TYPES {
|
|
|
6
6
|
END_GROUP = 4,
|
|
7
7
|
BIT32 = 5
|
|
8
8
|
}
|
|
9
|
+
export declare class CodeError extends Error {
|
|
10
|
+
code: string;
|
|
11
|
+
constructor(message: string, code: string, options?: ErrorOptions);
|
|
12
|
+
}
|
|
9
13
|
interface Flags {
|
|
14
|
+
/**
|
|
15
|
+
* Specifies an output directory
|
|
16
|
+
*/
|
|
10
17
|
output?: string;
|
|
18
|
+
/**
|
|
19
|
+
* If true, warnings will be thrown as errors
|
|
20
|
+
*/
|
|
21
|
+
strict?: boolean;
|
|
11
22
|
}
|
|
12
23
|
export declare function generate(source: string, flags: Flags): Promise<void>;
|
|
13
24
|
export {};
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/src/index.js
CHANGED
|
@@ -16,6 +16,13 @@ function pathWithExtension(input, extension, outputDir) {
|
|
|
16
16
|
const output = outputDir ?? path.dirname(input);
|
|
17
17
|
return path.join(output, path.basename(input).split('.').slice(0, -1).join('.') + extension);
|
|
18
18
|
}
|
|
19
|
+
export class CodeError extends Error {
|
|
20
|
+
code;
|
|
21
|
+
constructor(message, code, options) {
|
|
22
|
+
super(message, options);
|
|
23
|
+
this.code = code;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
19
26
|
const types = {
|
|
20
27
|
bool: 'boolean',
|
|
21
28
|
bytes: 'Uint8Array',
|
|
@@ -33,39 +40,123 @@ const types = {
|
|
|
33
40
|
uint32: 'number',
|
|
34
41
|
uint64: 'bigint'
|
|
35
42
|
};
|
|
43
|
+
const jsTypeOverrides = {
|
|
44
|
+
JS_NUMBER: 'number',
|
|
45
|
+
JS_STRING: 'string'
|
|
46
|
+
};
|
|
36
47
|
const encoderGenerators = {
|
|
37
48
|
bool: (val) => `w.bool(${val})`,
|
|
38
49
|
bytes: (val) => `w.bytes(${val})`,
|
|
39
50
|
double: (val) => `w.double(${val})`,
|
|
40
51
|
fixed32: (val) => `w.fixed32(${val})`,
|
|
41
|
-
fixed64: (val) =>
|
|
52
|
+
fixed64: (val, jsTypeOverride) => {
|
|
53
|
+
if (jsTypeOverride === 'number') {
|
|
54
|
+
return `w.fixed64Number(${val})`;
|
|
55
|
+
}
|
|
56
|
+
if (jsTypeOverride === 'string') {
|
|
57
|
+
return `w.fixed64String(${val})`;
|
|
58
|
+
}
|
|
59
|
+
return `w.fixed64(${val})`;
|
|
60
|
+
},
|
|
42
61
|
float: (val) => `w.float(${val})`,
|
|
43
62
|
int32: (val) => `w.int32(${val})`,
|
|
44
|
-
int64: (val) =>
|
|
63
|
+
int64: (val, jsTypeOverride) => {
|
|
64
|
+
if (jsTypeOverride === 'number') {
|
|
65
|
+
return `w.int64Number(${val})`;
|
|
66
|
+
}
|
|
67
|
+
if (jsTypeOverride === 'string') {
|
|
68
|
+
return `w.int64String(${val})`;
|
|
69
|
+
}
|
|
70
|
+
return `w.int64(${val})`;
|
|
71
|
+
},
|
|
45
72
|
sfixed32: (val) => `w.sfixed32(${val})`,
|
|
46
|
-
sfixed64: (val) =>
|
|
73
|
+
sfixed64: (val, jsTypeOverride) => {
|
|
74
|
+
if (jsTypeOverride === 'number') {
|
|
75
|
+
return `w.sfixed64Number(${val})`;
|
|
76
|
+
}
|
|
77
|
+
if (jsTypeOverride === 'string') {
|
|
78
|
+
return `w.sfixed64String(${val})`;
|
|
79
|
+
}
|
|
80
|
+
return `w.sfixed64(${val})`;
|
|
81
|
+
},
|
|
47
82
|
sint32: (val) => `w.sint32(${val})`,
|
|
48
|
-
sint64: (val) =>
|
|
83
|
+
sint64: (val, jsTypeOverride) => {
|
|
84
|
+
if (jsTypeOverride === 'number') {
|
|
85
|
+
return `w.sint64Number(${val})`;
|
|
86
|
+
}
|
|
87
|
+
if (jsTypeOverride === 'string') {
|
|
88
|
+
return `w.sint64String(${val})`;
|
|
89
|
+
}
|
|
90
|
+
return `w.sint64(${val})`;
|
|
91
|
+
},
|
|
49
92
|
string: (val) => `w.string(${val})`,
|
|
50
93
|
uint32: (val) => `w.uint32(${val})`,
|
|
51
|
-
uint64: (val) =>
|
|
94
|
+
uint64: (val, jsTypeOverride) => {
|
|
95
|
+
if (jsTypeOverride === 'number') {
|
|
96
|
+
return `w.uint64Number(${val})`;
|
|
97
|
+
}
|
|
98
|
+
if (jsTypeOverride === 'string') {
|
|
99
|
+
return `w.uint64String(${val})`;
|
|
100
|
+
}
|
|
101
|
+
return `w.uint64(${val})`;
|
|
102
|
+
}
|
|
52
103
|
};
|
|
53
104
|
const decoderGenerators = {
|
|
54
105
|
bool: () => 'reader.bool()',
|
|
55
106
|
bytes: () => 'reader.bytes()',
|
|
56
107
|
double: () => 'reader.double()',
|
|
57
108
|
fixed32: () => 'reader.fixed32()',
|
|
58
|
-
fixed64: () =>
|
|
109
|
+
fixed64: (jsTypeOverride) => {
|
|
110
|
+
if (jsTypeOverride === 'number') {
|
|
111
|
+
return 'reader.fixed64Number()';
|
|
112
|
+
}
|
|
113
|
+
if (jsTypeOverride === 'string') {
|
|
114
|
+
return 'reader.fixed64String()';
|
|
115
|
+
}
|
|
116
|
+
return 'reader.fixed64()';
|
|
117
|
+
},
|
|
59
118
|
float: () => 'reader.float()',
|
|
60
119
|
int32: () => 'reader.int32()',
|
|
61
|
-
int64: () =>
|
|
120
|
+
int64: (jsTypeOverride) => {
|
|
121
|
+
if (jsTypeOverride === 'number') {
|
|
122
|
+
return 'reader.int64Number()';
|
|
123
|
+
}
|
|
124
|
+
if (jsTypeOverride === 'string') {
|
|
125
|
+
return 'reader.int64String()';
|
|
126
|
+
}
|
|
127
|
+
return 'reader.int64()';
|
|
128
|
+
},
|
|
62
129
|
sfixed32: () => 'reader.sfixed32()',
|
|
63
|
-
sfixed64: () =>
|
|
130
|
+
sfixed64: (jsTypeOverride) => {
|
|
131
|
+
if (jsTypeOverride === 'number') {
|
|
132
|
+
return 'reader.sfixed64Number()';
|
|
133
|
+
}
|
|
134
|
+
if (jsTypeOverride === 'string') {
|
|
135
|
+
return 'reader.sfixed64String()';
|
|
136
|
+
}
|
|
137
|
+
return 'reader.sfixed64()';
|
|
138
|
+
},
|
|
64
139
|
sint32: () => 'reader.sint32()',
|
|
65
|
-
sint64: () =>
|
|
140
|
+
sint64: (jsTypeOverride) => {
|
|
141
|
+
if (jsTypeOverride === 'number') {
|
|
142
|
+
return 'reader.sint64Number()';
|
|
143
|
+
}
|
|
144
|
+
if (jsTypeOverride === 'string') {
|
|
145
|
+
return 'reader.sint64String()';
|
|
146
|
+
}
|
|
147
|
+
return 'reader.sint64()';
|
|
148
|
+
},
|
|
66
149
|
string: () => 'reader.string()',
|
|
67
150
|
uint32: () => 'reader.uint32()',
|
|
68
|
-
uint64: () =>
|
|
151
|
+
uint64: (jsTypeOverride) => {
|
|
152
|
+
if (jsTypeOverride === 'number') {
|
|
153
|
+
return 'reader.uint64Number()';
|
|
154
|
+
}
|
|
155
|
+
if (jsTypeOverride === 'string') {
|
|
156
|
+
return 'reader.uint64String()';
|
|
157
|
+
}
|
|
158
|
+
return 'reader.uint64()';
|
|
159
|
+
}
|
|
69
160
|
};
|
|
70
161
|
const defaultValueGenerators = {
|
|
71
162
|
bool: () => 'false',
|
|
@@ -84,6 +175,10 @@ const defaultValueGenerators = {
|
|
|
84
175
|
uint32: () => '0',
|
|
85
176
|
uint64: () => '0n'
|
|
86
177
|
};
|
|
178
|
+
const defaultValueGeneratorsJsTypeOverrides = {
|
|
179
|
+
number: () => '0',
|
|
180
|
+
string: () => "''"
|
|
181
|
+
};
|
|
87
182
|
const defaultValueTestGenerators = {
|
|
88
183
|
bool: (field) => `(${field} != null && ${field} !== false)`,
|
|
89
184
|
bytes: (field) => `(${field} != null && ${field}.byteLength > 0)`,
|
|
@@ -101,7 +196,23 @@ const defaultValueTestGenerators = {
|
|
|
101
196
|
uint32: (field) => `(${field} != null && ${field} !== 0)`,
|
|
102
197
|
uint64: (field) => `(${field} != null && ${field} !== 0n)`
|
|
103
198
|
};
|
|
104
|
-
|
|
199
|
+
const defaultValueTestGeneratorsJsTypeOverrides = {
|
|
200
|
+
number: (field) => `(${field} != null && ${field} !== 0)`,
|
|
201
|
+
string: (field) => `(${field} != null && ${field} !== '')`
|
|
202
|
+
};
|
|
203
|
+
function findJsTypeOverride(defaultType, fieldDef) {
|
|
204
|
+
if (fieldDef.options?.jstype != null && jsTypeOverrides[fieldDef.options?.jstype] != null) {
|
|
205
|
+
if (!['int64', 'uint64', 'sint64', 'fixed64', 'sfixed64'].includes(defaultType)) {
|
|
206
|
+
throw new Error(`jstype is only allowed on int64, uint64, sint64, fixed64 or sfixed64 fields - got "${defaultType}"`);
|
|
207
|
+
}
|
|
208
|
+
return jsTypeOverrides[fieldDef.options?.jstype];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function findJsTypeName(typeName, classDef, moduleDef, fieldDef) {
|
|
212
|
+
const override = findJsTypeOverride(typeName, fieldDef);
|
|
213
|
+
if (override != null) {
|
|
214
|
+
return override;
|
|
215
|
+
}
|
|
105
216
|
if (types[typeName] != null) {
|
|
106
217
|
return types[typeName];
|
|
107
218
|
}
|
|
@@ -112,7 +223,7 @@ function findTypeName(typeName, classDef, moduleDef) {
|
|
|
112
223
|
return `${classDef.fullName}.${typeName}`;
|
|
113
224
|
}
|
|
114
225
|
if (classDef.parent != null) {
|
|
115
|
-
return
|
|
226
|
+
return findJsTypeName(typeName, classDef.parent, moduleDef, fieldDef);
|
|
116
227
|
}
|
|
117
228
|
if (moduleDef.globals[typeName] != null) {
|
|
118
229
|
return typeName;
|
|
@@ -148,8 +259,13 @@ function createDefaultObject(fields, messageDef, moduleDef) {
|
|
|
148
259
|
}
|
|
149
260
|
const type = fieldDef.type;
|
|
150
261
|
let defaultValue;
|
|
151
|
-
|
|
152
|
-
|
|
262
|
+
let defaultValueGenerator = defaultValueGenerators[type];
|
|
263
|
+
if (defaultValueGenerator != null) {
|
|
264
|
+
const jsTypeOverride = findJsTypeOverride(type, fieldDef);
|
|
265
|
+
if (jsTypeOverride != null && defaultValueGeneratorsJsTypeOverrides[jsTypeOverride] != null) {
|
|
266
|
+
defaultValueGenerator = defaultValueGeneratorsJsTypeOverrides[jsTypeOverride];
|
|
267
|
+
}
|
|
268
|
+
defaultValue = defaultValueGenerator();
|
|
153
269
|
}
|
|
154
270
|
else {
|
|
155
271
|
const def = findDef(fieldDef.type, messageDef, moduleDef);
|
|
@@ -228,14 +344,25 @@ function isEnumDef(obj) {
|
|
|
228
344
|
function defineFields(fields, messageDef, moduleDef) {
|
|
229
345
|
return Object.entries(fields).map(([fieldName, fieldDef]) => {
|
|
230
346
|
if (fieldDef.map) {
|
|
231
|
-
return `${fieldName}: Map<${
|
|
347
|
+
return `${fieldName}: Map<${findJsTypeName(fieldDef.keyType ?? 'string', messageDef, moduleDef, fieldDef)}, ${findJsTypeName(fieldDef.valueType, messageDef, moduleDef, fieldDef)}>`;
|
|
232
348
|
}
|
|
233
|
-
return `${fieldName}${fieldDef.optional ? '?' : ''}: ${
|
|
349
|
+
return `${fieldName}${fieldDef.optional ? '?' : ''}: ${findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef)}${fieldDef.repeated ? '[]' : ''}`;
|
|
234
350
|
});
|
|
235
351
|
}
|
|
236
|
-
function compileMessage(messageDef, moduleDef) {
|
|
352
|
+
function compileMessage(messageDef, moduleDef, flags) {
|
|
237
353
|
if (isEnumDef(messageDef)) {
|
|
238
354
|
moduleDef.imports.add('enumeration');
|
|
355
|
+
// check that the enum def values start from 0
|
|
356
|
+
if (Object.values(messageDef.values)[0] !== 0) {
|
|
357
|
+
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`;
|
|
358
|
+
if (flags?.strict === true) {
|
|
359
|
+
throw new CodeError(message, 'ERR_PARSE_ERROR');
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
// eslint-disable-next-line no-console
|
|
363
|
+
console.info(`[WARN] ${message}`);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
239
366
|
return `
|
|
240
367
|
export enum ${messageDef.name} {
|
|
241
368
|
${Object.keys(messageDef.values).map(name => {
|
|
@@ -259,7 +386,7 @@ export namespace ${messageDef.name} {
|
|
|
259
386
|
if (messageDef.nested != null) {
|
|
260
387
|
nested = '\n';
|
|
261
388
|
nested += Object.values(messageDef.nested)
|
|
262
|
-
.map(def => compileMessage(def, moduleDef).trim())
|
|
389
|
+
.map(def => compileMessage(def, moduleDef, flags).trim())
|
|
263
390
|
.join('\n\n')
|
|
264
391
|
.split('\n')
|
|
265
392
|
.map(line => line.trim() === '' ? '' : ` ${line}`)
|
|
@@ -302,21 +429,35 @@ export interface ${messageDef.name} {
|
|
|
302
429
|
moduleDef.imports.add('message');
|
|
303
430
|
type = 'message';
|
|
304
431
|
}
|
|
305
|
-
typeName =
|
|
432
|
+
typeName = findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef);
|
|
306
433
|
codec = `${typeName}.codec()`;
|
|
307
434
|
}
|
|
308
435
|
let valueTest = `obj.${name} != null`;
|
|
309
436
|
if (fieldDef.map) {
|
|
310
437
|
valueTest = `obj.${name} != null && obj.${name}.size !== 0`;
|
|
311
438
|
}
|
|
312
|
-
else if (!fieldDef.optional && !fieldDef.repeated) {
|
|
439
|
+
else if (!fieldDef.optional && !fieldDef.repeated && !fieldDef.proto2Required) {
|
|
440
|
+
let defaultValueTestGenerator = defaultValueTestGenerators[type];
|
|
313
441
|
// proto3 singular fields should only be written out if they are not the default value
|
|
314
|
-
if (
|
|
315
|
-
|
|
442
|
+
if (defaultValueTestGenerator != null) {
|
|
443
|
+
const jsTypeOverride = findJsTypeOverride(type, fieldDef);
|
|
444
|
+
if (jsTypeOverride != null && defaultValueTestGeneratorsJsTypeOverrides[jsTypeOverride] != null) {
|
|
445
|
+
defaultValueTestGenerator = defaultValueTestGeneratorsJsTypeOverrides[jsTypeOverride];
|
|
446
|
+
}
|
|
447
|
+
valueTest = `${defaultValueTestGenerator(`obj.${name}`)}`;
|
|
316
448
|
}
|
|
317
449
|
else if (type === 'enum') {
|
|
318
450
|
// handle enums
|
|
319
|
-
|
|
451
|
+
const def = findDef(fieldDef.type, messageDef, moduleDef);
|
|
452
|
+
if (!isEnumDef(def)) {
|
|
453
|
+
throw new Error(`${fieldDef.type} was not enum def`);
|
|
454
|
+
}
|
|
455
|
+
valueTest = `obj.${name} != null`;
|
|
456
|
+
// singular enums default to 0, but enums can be defined without a 0
|
|
457
|
+
// value which is against the proto3 spec but is tolerated
|
|
458
|
+
if (Object.values(def.values)[0] === 0) {
|
|
459
|
+
valueTest += ` && __${fieldDef.type}Values[obj.${name}] !== 0`;
|
|
460
|
+
}
|
|
320
461
|
}
|
|
321
462
|
}
|
|
322
463
|
function createWriteField(valueVar) {
|
|
@@ -327,8 +468,12 @@ export interface ${messageDef.name} {
|
|
|
327
468
|
throw new Error(`${fieldDef.type} was not enum def`);
|
|
328
469
|
}
|
|
329
470
|
}
|
|
330
|
-
let writeField = () =>
|
|
331
|
-
|
|
471
|
+
let writeField = () => {
|
|
472
|
+
const encoderGenerator = encoderGenerators[type];
|
|
473
|
+
const jsTypeOverride = findJsTypeOverride(type, fieldDef);
|
|
474
|
+
return `w.uint32(${id})
|
|
475
|
+
${encoderGenerator == null ? `${codec}.encode(${valueVar}, w)` : encoderGenerator(valueVar, jsTypeOverride)}`;
|
|
476
|
+
};
|
|
332
477
|
if (type === 'message') {
|
|
333
478
|
// message fields are only written if they have values. But if a message
|
|
334
479
|
// is part of a repeated field, and consists of only default values it
|
|
@@ -386,10 +531,12 @@ export interface ${messageDef.name} {
|
|
|
386
531
|
moduleDef.imports.add('message');
|
|
387
532
|
type = 'message';
|
|
388
533
|
}
|
|
389
|
-
const typeName =
|
|
534
|
+
const typeName = findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef);
|
|
390
535
|
codec = `${typeName}.codec()`;
|
|
391
536
|
}
|
|
392
|
-
|
|
537
|
+
// override setting type on js object
|
|
538
|
+
const jsTypeOverride = findJsTypeOverride(fieldDef.type, fieldDef);
|
|
539
|
+
const parseValue = `${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type](jsTypeOverride)}`;
|
|
393
540
|
if (fieldDef.map) {
|
|
394
541
|
return `case ${fieldDef.id}: {
|
|
395
542
|
const entry = ${parseValue}
|
|
@@ -398,13 +545,15 @@ export interface ${messageDef.name} {
|
|
|
398
545
|
}`;
|
|
399
546
|
}
|
|
400
547
|
else if (fieldDef.repeated) {
|
|
401
|
-
return `case ${fieldDef.id}:
|
|
548
|
+
return `case ${fieldDef.id}: {
|
|
402
549
|
obj.${fieldName}.push(${parseValue})
|
|
403
|
-
break
|
|
550
|
+
break
|
|
551
|
+
}`;
|
|
404
552
|
}
|
|
405
|
-
return `case ${fieldDef.id}:
|
|
553
|
+
return `case ${fieldDef.id}: {
|
|
406
554
|
obj.${fieldName} = ${parseValue}
|
|
407
|
-
break
|
|
555
|
+
break
|
|
556
|
+
}`;
|
|
408
557
|
}
|
|
409
558
|
return createReadField(fieldName, fieldDef);
|
|
410
559
|
})
|
|
@@ -431,9 +580,10 @@ ${encodeFields === '' ? '' : `${encodeFields}\n`}
|
|
|
431
580
|
const tag = reader.uint32()
|
|
432
581
|
|
|
433
582
|
switch (tag >>> 3) {${decodeFields === '' ? '' : `\n ${decodeFields}`}
|
|
434
|
-
default:
|
|
583
|
+
default: {
|
|
435
584
|
reader.skipType(tag & 7)
|
|
436
585
|
break
|
|
586
|
+
}
|
|
437
587
|
}
|
|
438
588
|
}
|
|
439
589
|
|
|
@@ -459,7 +609,7 @@ export namespace ${messageDef.name} {
|
|
|
459
609
|
}
|
|
460
610
|
`.trimStart();
|
|
461
611
|
}
|
|
462
|
-
function defineModule(def) {
|
|
612
|
+
function defineModule(def, flags) {
|
|
463
613
|
const moduleDef = {
|
|
464
614
|
imports: new Set(),
|
|
465
615
|
importedTypes: new Set(),
|
|
@@ -469,9 +619,9 @@ function defineModule(def) {
|
|
|
469
619
|
};
|
|
470
620
|
const defs = def.nested;
|
|
471
621
|
if (defs == null) {
|
|
472
|
-
throw new
|
|
622
|
+
throw new CodeError('No top-level messages found in protobuf', 'ERR_NO_MESSAGES_FOUND');
|
|
473
623
|
}
|
|
474
|
-
function defineMessage(defs, parent) {
|
|
624
|
+
function defineMessage(defs, parent, flags) {
|
|
475
625
|
for (const className of Object.keys(defs)) {
|
|
476
626
|
const classDef = defs[className];
|
|
477
627
|
classDef.name = className;
|
|
@@ -486,8 +636,17 @@ function defineModule(def) {
|
|
|
486
636
|
fieldDef.repeated = fieldDef.rule === 'repeated';
|
|
487
637
|
fieldDef.optional = !fieldDef.repeated && fieldDef.options?.proto3_optional === true;
|
|
488
638
|
fieldDef.map = fieldDef.keyType != null;
|
|
639
|
+
fieldDef.proto2Required = false;
|
|
489
640
|
if (fieldDef.rule === 'required') {
|
|
490
|
-
|
|
641
|
+
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`;
|
|
642
|
+
if (flags?.strict === true) {
|
|
643
|
+
throw new CodeError(message, 'ERR_PARSE_ERROR');
|
|
644
|
+
}
|
|
645
|
+
else {
|
|
646
|
+
fieldDef.proto2Required = true;
|
|
647
|
+
// eslint-disable-next-line no-console
|
|
648
|
+
console.info(`[WARN] ${message}`);
|
|
649
|
+
}
|
|
491
650
|
}
|
|
492
651
|
}
|
|
493
652
|
}
|
|
@@ -519,12 +678,12 @@ function defineModule(def) {
|
|
|
519
678
|
}
|
|
520
679
|
}
|
|
521
680
|
}
|
|
522
|
-
defineMessage(defs);
|
|
681
|
+
defineMessage(defs, undefined, flags);
|
|
523
682
|
// set enum/message fields now all messages have been defined
|
|
524
683
|
updateTypes(defs);
|
|
525
684
|
for (const className of Object.keys(defs)) {
|
|
526
685
|
const classDef = defs[className];
|
|
527
|
-
moduleDef.compiled.push(compileMessage(classDef, moduleDef));
|
|
686
|
+
moduleDef.compiled.push(compileMessage(classDef, moduleDef, flags));
|
|
528
687
|
}
|
|
529
688
|
return moduleDef;
|
|
530
689
|
}
|
|
@@ -560,7 +719,7 @@ export async function generate(source, flags) {
|
|
|
560
719
|
fieldDef.rule = 'repeated';
|
|
561
720
|
}
|
|
562
721
|
}
|
|
563
|
-
const moduleDef = defineModule(def);
|
|
722
|
+
const moduleDef = defineModule(def, flags);
|
|
564
723
|
const ignores = [
|
|
565
724
|
'/* eslint-disable import/export */',
|
|
566
725
|
'/* eslint-disable complexity */',
|
package/dist/src/index.js.map
CHANGED
|
@@ -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.0
|
|
3
|
+
"version": "7.2.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",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"release": {
|
|
39
39
|
"branches": [
|
|
40
|
-
"
|
|
40
|
+
"main"
|
|
41
41
|
],
|
|
42
42
|
"plugins": [
|
|
43
43
|
[
|
package/src/index.ts
CHANGED
|
@@ -19,6 +19,16 @@ function pathWithExtension (input: string, extension: string, outputDir?: string
|
|
|
19
19
|
return path.join(output, path.basename(input).split('.').slice(0, -1).join('.') + extension)
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
export class CodeError extends Error {
|
|
23
|
+
public code: string
|
|
24
|
+
|
|
25
|
+
constructor (message: string, code: string, options?: ErrorOptions) {
|
|
26
|
+
super(message, options)
|
|
27
|
+
|
|
28
|
+
this.code = code
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
22
32
|
const types: Record<string, string> = {
|
|
23
33
|
bool: 'boolean',
|
|
24
34
|
bytes: 'Uint8Array',
|
|
@@ -37,40 +47,145 @@ const types: Record<string, string> = {
|
|
|
37
47
|
uint64: 'bigint'
|
|
38
48
|
}
|
|
39
49
|
|
|
40
|
-
const
|
|
50
|
+
const jsTypeOverrides: Record<string, 'number' | 'string'> = {
|
|
51
|
+
JS_NUMBER: 'number',
|
|
52
|
+
JS_STRING: 'string'
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const encoderGenerators: Record<string, (val: string, jsTypeOverride?: 'number' | 'string') => string> = {
|
|
41
56
|
bool: (val) => `w.bool(${val})`,
|
|
42
57
|
bytes: (val) => `w.bytes(${val})`,
|
|
43
58
|
double: (val) => `w.double(${val})`,
|
|
44
59
|
fixed32: (val) => `w.fixed32(${val})`,
|
|
45
|
-
fixed64: (val) =>
|
|
60
|
+
fixed64: (val, jsTypeOverride) => {
|
|
61
|
+
if (jsTypeOverride === 'number') {
|
|
62
|
+
return `w.fixed64Number(${val})`
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (jsTypeOverride === 'string') {
|
|
66
|
+
return `w.fixed64String(${val})`
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return `w.fixed64(${val})`
|
|
70
|
+
},
|
|
46
71
|
float: (val) => `w.float(${val})`,
|
|
47
72
|
int32: (val) => `w.int32(${val})`,
|
|
48
|
-
int64: (val) =>
|
|
73
|
+
int64: (val, jsTypeOverride) => {
|
|
74
|
+
if (jsTypeOverride === 'number') {
|
|
75
|
+
return `w.int64Number(${val})`
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (jsTypeOverride === 'string') {
|
|
79
|
+
return `w.int64String(${val})`
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return `w.int64(${val})`
|
|
83
|
+
},
|
|
49
84
|
sfixed32: (val) => `w.sfixed32(${val})`,
|
|
50
|
-
sfixed64: (val) =>
|
|
85
|
+
sfixed64: (val, jsTypeOverride) => {
|
|
86
|
+
if (jsTypeOverride === 'number') {
|
|
87
|
+
return `w.sfixed64Number(${val})`
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (jsTypeOverride === 'string') {
|
|
91
|
+
return `w.sfixed64String(${val})`
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return `w.sfixed64(${val})`
|
|
95
|
+
},
|
|
51
96
|
sint32: (val) => `w.sint32(${val})`,
|
|
52
|
-
sint64: (val) =>
|
|
97
|
+
sint64: (val, jsTypeOverride) => {
|
|
98
|
+
if (jsTypeOverride === 'number') {
|
|
99
|
+
return `w.sint64Number(${val})`
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (jsTypeOverride === 'string') {
|
|
103
|
+
return `w.sint64String(${val})`
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return `w.sint64(${val})`
|
|
107
|
+
},
|
|
53
108
|
string: (val) => `w.string(${val})`,
|
|
54
109
|
uint32: (val) => `w.uint32(${val})`,
|
|
55
|
-
uint64: (val) =>
|
|
110
|
+
uint64: (val, jsTypeOverride) => {
|
|
111
|
+
if (jsTypeOverride === 'number') {
|
|
112
|
+
return `w.uint64Number(${val})`
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (jsTypeOverride === 'string') {
|
|
116
|
+
return `w.uint64String(${val})`
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return `w.uint64(${val})`
|
|
120
|
+
}
|
|
56
121
|
}
|
|
57
122
|
|
|
58
|
-
const decoderGenerators: Record<string, () => string> = {
|
|
123
|
+
const decoderGenerators: Record<string, (jsTypeOverride?: 'number' | 'string') => string> = {
|
|
59
124
|
bool: () => 'reader.bool()',
|
|
60
125
|
bytes: () => 'reader.bytes()',
|
|
61
126
|
double: () => 'reader.double()',
|
|
62
127
|
fixed32: () => 'reader.fixed32()',
|
|
63
|
-
fixed64: () =>
|
|
128
|
+
fixed64: (jsTypeOverride) => {
|
|
129
|
+
if (jsTypeOverride === 'number') {
|
|
130
|
+
return 'reader.fixed64Number()'
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (jsTypeOverride === 'string') {
|
|
134
|
+
return 'reader.fixed64String()'
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return 'reader.fixed64()'
|
|
138
|
+
},
|
|
64
139
|
float: () => 'reader.float()',
|
|
65
140
|
int32: () => 'reader.int32()',
|
|
66
|
-
int64: () =>
|
|
141
|
+
int64: (jsTypeOverride) => {
|
|
142
|
+
if (jsTypeOverride === 'number') {
|
|
143
|
+
return 'reader.int64Number()'
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (jsTypeOverride === 'string') {
|
|
147
|
+
return 'reader.int64String()'
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return 'reader.int64()'
|
|
151
|
+
},
|
|
67
152
|
sfixed32: () => 'reader.sfixed32()',
|
|
68
|
-
sfixed64: () =>
|
|
153
|
+
sfixed64: (jsTypeOverride) => {
|
|
154
|
+
if (jsTypeOverride === 'number') {
|
|
155
|
+
return 'reader.sfixed64Number()'
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (jsTypeOverride === 'string') {
|
|
159
|
+
return 'reader.sfixed64String()'
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return 'reader.sfixed64()'
|
|
163
|
+
},
|
|
69
164
|
sint32: () => 'reader.sint32()',
|
|
70
|
-
sint64: () =>
|
|
165
|
+
sint64: (jsTypeOverride) => {
|
|
166
|
+
if (jsTypeOverride === 'number') {
|
|
167
|
+
return 'reader.sint64Number()'
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (jsTypeOverride === 'string') {
|
|
171
|
+
return 'reader.sint64String()'
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return 'reader.sint64()'
|
|
175
|
+
},
|
|
71
176
|
string: () => 'reader.string()',
|
|
72
177
|
uint32: () => 'reader.uint32()',
|
|
73
|
-
uint64: () =>
|
|
178
|
+
uint64: (jsTypeOverride) => {
|
|
179
|
+
if (jsTypeOverride === 'number') {
|
|
180
|
+
return 'reader.uint64Number()'
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (jsTypeOverride === 'string') {
|
|
184
|
+
return 'reader.uint64String()'
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return 'reader.uint64()'
|
|
188
|
+
}
|
|
74
189
|
}
|
|
75
190
|
|
|
76
191
|
const defaultValueGenerators: Record<string, () => string> = {
|
|
@@ -91,6 +206,11 @@ const defaultValueGenerators: Record<string, () => string> = {
|
|
|
91
206
|
uint64: () => '0n'
|
|
92
207
|
}
|
|
93
208
|
|
|
209
|
+
const defaultValueGeneratorsJsTypeOverrides: Record<string, () => string> = {
|
|
210
|
+
number: () => '0',
|
|
211
|
+
string: () => "''"
|
|
212
|
+
}
|
|
213
|
+
|
|
94
214
|
const defaultValueTestGenerators: Record<string, (field: string) => string> = {
|
|
95
215
|
bool: (field) => `(${field} != null && ${field} !== false)`,
|
|
96
216
|
bytes: (field) => `(${field} != null && ${field}.byteLength > 0)`,
|
|
@@ -109,7 +229,28 @@ const defaultValueTestGenerators: Record<string, (field: string) => string> = {
|
|
|
109
229
|
uint64: (field) => `(${field} != null && ${field} !== 0n)`
|
|
110
230
|
}
|
|
111
231
|
|
|
112
|
-
|
|
232
|
+
const defaultValueTestGeneratorsJsTypeOverrides: Record<string, (field: string) => string> = {
|
|
233
|
+
number: (field) => `(${field} != null && ${field} !== 0)`,
|
|
234
|
+
string: (field) => `(${field} != null && ${field} !== '')`
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function findJsTypeOverride (defaultType: string, fieldDef: FieldDef): 'number' | 'string' | undefined {
|
|
238
|
+
if (fieldDef.options?.jstype != null && jsTypeOverrides[fieldDef.options?.jstype] != null) {
|
|
239
|
+
if (!['int64', 'uint64', 'sint64', 'fixed64', 'sfixed64'].includes(defaultType)) {
|
|
240
|
+
throw new Error(`jstype is only allowed on int64, uint64, sint64, fixed64 or sfixed64 fields - got "${defaultType}"`)
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
return jsTypeOverrides[fieldDef.options?.jstype]
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function findJsTypeName (typeName: string, classDef: MessageDef, moduleDef: ModuleDef, fieldDef: FieldDef): string {
|
|
248
|
+
const override = findJsTypeOverride(typeName, fieldDef)
|
|
249
|
+
|
|
250
|
+
if (override != null) {
|
|
251
|
+
return override
|
|
252
|
+
}
|
|
253
|
+
|
|
113
254
|
if (types[typeName] != null) {
|
|
114
255
|
return types[typeName]
|
|
115
256
|
}
|
|
@@ -123,7 +264,7 @@ function findTypeName (typeName: string, classDef: MessageDef, moduleDef: Module
|
|
|
123
264
|
}
|
|
124
265
|
|
|
125
266
|
if (classDef.parent != null) {
|
|
126
|
-
return
|
|
267
|
+
return findJsTypeName(typeName, classDef.parent, moduleDef, fieldDef)
|
|
127
268
|
}
|
|
128
269
|
|
|
129
270
|
if (moduleDef.globals[typeName] != null) {
|
|
@@ -170,9 +311,16 @@ function createDefaultObject (fields: Record<string, FieldDef>, messageDef: Mess
|
|
|
170
311
|
|
|
171
312
|
const type: string = fieldDef.type
|
|
172
313
|
let defaultValue
|
|
314
|
+
let defaultValueGenerator = defaultValueGenerators[type]
|
|
315
|
+
|
|
316
|
+
if (defaultValueGenerator != null) {
|
|
317
|
+
const jsTypeOverride = findJsTypeOverride(type, fieldDef)
|
|
318
|
+
|
|
319
|
+
if (jsTypeOverride != null && defaultValueGeneratorsJsTypeOverrides[jsTypeOverride] != null) {
|
|
320
|
+
defaultValueGenerator = defaultValueGeneratorsJsTypeOverrides[jsTypeOverride]
|
|
321
|
+
}
|
|
173
322
|
|
|
174
|
-
|
|
175
|
-
defaultValue = defaultValueGenerators[type]()
|
|
323
|
+
defaultValue = defaultValueGenerator()
|
|
176
324
|
} else {
|
|
177
325
|
const def = findDef(fieldDef.type, messageDef, moduleDef)
|
|
178
326
|
|
|
@@ -287,22 +435,41 @@ interface FieldDef {
|
|
|
287
435
|
map: boolean
|
|
288
436
|
valueType: string
|
|
289
437
|
keyType: string
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Support proto2 required field. This field means a value should always be
|
|
441
|
+
* in the serialized buffer, any message without it should be considered
|
|
442
|
+
* invalid. It was removed for proto3.
|
|
443
|
+
*/
|
|
444
|
+
proto2Required: boolean
|
|
290
445
|
}
|
|
291
446
|
|
|
292
447
|
function defineFields (fields: Record<string, FieldDef>, messageDef: MessageDef, moduleDef: ModuleDef): string[] {
|
|
293
448
|
return Object.entries(fields).map(([fieldName, fieldDef]) => {
|
|
294
449
|
if (fieldDef.map) {
|
|
295
|
-
return `${fieldName}: Map<${
|
|
450
|
+
return `${fieldName}: Map<${findJsTypeName(fieldDef.keyType ?? 'string', messageDef, moduleDef, fieldDef)}, ${findJsTypeName(fieldDef.valueType, messageDef, moduleDef, fieldDef)}>`
|
|
296
451
|
}
|
|
297
452
|
|
|
298
|
-
return `${fieldName}${fieldDef.optional ? '?' : ''}: ${
|
|
453
|
+
return `${fieldName}${fieldDef.optional ? '?' : ''}: ${findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef)}${fieldDef.repeated ? '[]' : ''}`
|
|
299
454
|
})
|
|
300
455
|
}
|
|
301
456
|
|
|
302
|
-
function compileMessage (messageDef: MessageDef, moduleDef: ModuleDef): string {
|
|
457
|
+
function compileMessage (messageDef: MessageDef, moduleDef: ModuleDef, flags?: Flags): string {
|
|
303
458
|
if (isEnumDef(messageDef)) {
|
|
304
459
|
moduleDef.imports.add('enumeration')
|
|
305
460
|
|
|
461
|
+
// check that the enum def values start from 0
|
|
462
|
+
if (Object.values(messageDef.values)[0] !== 0) {
|
|
463
|
+
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`
|
|
464
|
+
|
|
465
|
+
if (flags?.strict === true) {
|
|
466
|
+
throw new CodeError(message, 'ERR_PARSE_ERROR')
|
|
467
|
+
} else {
|
|
468
|
+
// eslint-disable-next-line no-console
|
|
469
|
+
console.info(`[WARN] ${message}`)
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
306
473
|
return `
|
|
307
474
|
export enum ${messageDef.name} {
|
|
308
475
|
${
|
|
@@ -332,7 +499,7 @@ export namespace ${messageDef.name} {
|
|
|
332
499
|
if (messageDef.nested != null) {
|
|
333
500
|
nested = '\n'
|
|
334
501
|
nested += Object.values(messageDef.nested)
|
|
335
|
-
.map(def => compileMessage(def, moduleDef).trim())
|
|
502
|
+
.map(def => compileMessage(def, moduleDef, flags).trim())
|
|
336
503
|
.join('\n\n')
|
|
337
504
|
.split('\n')
|
|
338
505
|
.map(line => line.trim() === '' ? '' : ` ${line}`)
|
|
@@ -383,7 +550,7 @@ export interface ${messageDef.name} {
|
|
|
383
550
|
type = 'message'
|
|
384
551
|
}
|
|
385
552
|
|
|
386
|
-
typeName =
|
|
553
|
+
typeName = findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef)
|
|
387
554
|
codec = `${typeName}.codec()`
|
|
388
555
|
}
|
|
389
556
|
|
|
@@ -391,13 +558,33 @@ export interface ${messageDef.name} {
|
|
|
391
558
|
|
|
392
559
|
if (fieldDef.map) {
|
|
393
560
|
valueTest = `obj.${name} != null && obj.${name}.size !== 0`
|
|
394
|
-
} else if (!fieldDef.optional && !fieldDef.repeated) {
|
|
561
|
+
} else if (!fieldDef.optional && !fieldDef.repeated && !fieldDef.proto2Required) {
|
|
562
|
+
let defaultValueTestGenerator = defaultValueTestGenerators[type]
|
|
563
|
+
|
|
395
564
|
// proto3 singular fields should only be written out if they are not the default value
|
|
396
|
-
if (
|
|
397
|
-
|
|
565
|
+
if (defaultValueTestGenerator != null) {
|
|
566
|
+
const jsTypeOverride = findJsTypeOverride(type, fieldDef)
|
|
567
|
+
|
|
568
|
+
if (jsTypeOverride != null && defaultValueTestGeneratorsJsTypeOverrides[jsTypeOverride] != null) {
|
|
569
|
+
defaultValueTestGenerator = defaultValueTestGeneratorsJsTypeOverrides[jsTypeOverride]
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
valueTest = `${defaultValueTestGenerator(`obj.${name}`)}`
|
|
398
573
|
} else if (type === 'enum') {
|
|
399
574
|
// handle enums
|
|
400
|
-
|
|
575
|
+
const def = findDef(fieldDef.type, messageDef, moduleDef)
|
|
576
|
+
|
|
577
|
+
if (!isEnumDef(def)) {
|
|
578
|
+
throw new Error(`${fieldDef.type} was not enum def`)
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
valueTest = `obj.${name} != null`
|
|
582
|
+
|
|
583
|
+
// singular enums default to 0, but enums can be defined without a 0
|
|
584
|
+
// value which is against the proto3 spec but is tolerated
|
|
585
|
+
if (Object.values(def.values)[0] === 0) {
|
|
586
|
+
valueTest += ` && __${fieldDef.type}Values[obj.${name}] !== 0`
|
|
587
|
+
}
|
|
401
588
|
}
|
|
402
589
|
}
|
|
403
590
|
|
|
@@ -412,8 +599,13 @@ export interface ${messageDef.name} {
|
|
|
412
599
|
}
|
|
413
600
|
}
|
|
414
601
|
|
|
415
|
-
let writeField = (): string =>
|
|
416
|
-
|
|
602
|
+
let writeField = (): string => {
|
|
603
|
+
const encoderGenerator = encoderGenerators[type]
|
|
604
|
+
const jsTypeOverride = findJsTypeOverride(type, fieldDef)
|
|
605
|
+
|
|
606
|
+
return `w.uint32(${id})
|
|
607
|
+
${encoderGenerator == null ? `${codec}.encode(${valueVar}, w)` : encoderGenerator(valueVar, jsTypeOverride)}`
|
|
608
|
+
}
|
|
417
609
|
|
|
418
610
|
if (type === 'message') {
|
|
419
611
|
// message fields are only written if they have values. But if a message
|
|
@@ -483,11 +675,14 @@ export interface ${messageDef.name} {
|
|
|
483
675
|
type = 'message'
|
|
484
676
|
}
|
|
485
677
|
|
|
486
|
-
const typeName =
|
|
678
|
+
const typeName = findJsTypeName(fieldDef.type, messageDef, moduleDef, fieldDef)
|
|
487
679
|
codec = `${typeName}.codec()`
|
|
488
680
|
}
|
|
489
681
|
|
|
490
|
-
|
|
682
|
+
// override setting type on js object
|
|
683
|
+
const jsTypeOverride = findJsTypeOverride(fieldDef.type, fieldDef)
|
|
684
|
+
|
|
685
|
+
const parseValue = `${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type](jsTypeOverride)}`
|
|
491
686
|
|
|
492
687
|
if (fieldDef.map) {
|
|
493
688
|
return `case ${fieldDef.id}: {
|
|
@@ -496,14 +691,16 @@ export interface ${messageDef.name} {
|
|
|
496
691
|
break
|
|
497
692
|
}`
|
|
498
693
|
} else if (fieldDef.repeated) {
|
|
499
|
-
return `case ${fieldDef.id}:
|
|
694
|
+
return `case ${fieldDef.id}: {
|
|
500
695
|
obj.${fieldName}.push(${parseValue})
|
|
501
|
-
break
|
|
696
|
+
break
|
|
697
|
+
}`
|
|
502
698
|
}
|
|
503
699
|
|
|
504
|
-
return `case ${fieldDef.id}:
|
|
700
|
+
return `case ${fieldDef.id}: {
|
|
505
701
|
obj.${fieldName} = ${parseValue}
|
|
506
|
-
break
|
|
702
|
+
break
|
|
703
|
+
}`
|
|
507
704
|
}
|
|
508
705
|
|
|
509
706
|
return createReadField(fieldName, fieldDef)
|
|
@@ -532,9 +729,10 @@ ${encodeFields === '' ? '' : `${encodeFields}\n`}
|
|
|
532
729
|
const tag = reader.uint32()
|
|
533
730
|
|
|
534
731
|
switch (tag >>> 3) {${decodeFields === '' ? '' : `\n ${decodeFields}`}
|
|
535
|
-
default:
|
|
732
|
+
default: {
|
|
536
733
|
reader.skipType(tag & 7)
|
|
537
734
|
break
|
|
735
|
+
}
|
|
538
736
|
}
|
|
539
737
|
}
|
|
540
738
|
|
|
@@ -570,7 +768,7 @@ interface ModuleDef {
|
|
|
570
768
|
globals: Record<string, ClassDef>
|
|
571
769
|
}
|
|
572
770
|
|
|
573
|
-
function defineModule (def: ClassDef): ModuleDef {
|
|
771
|
+
function defineModule (def: ClassDef, flags: Flags): ModuleDef {
|
|
574
772
|
const moduleDef: ModuleDef = {
|
|
575
773
|
imports: new Set(),
|
|
576
774
|
importedTypes: new Set(),
|
|
@@ -582,10 +780,10 @@ function defineModule (def: ClassDef): ModuleDef {
|
|
|
582
780
|
const defs = def.nested
|
|
583
781
|
|
|
584
782
|
if (defs == null) {
|
|
585
|
-
throw new
|
|
783
|
+
throw new CodeError('No top-level messages found in protobuf', 'ERR_NO_MESSAGES_FOUND')
|
|
586
784
|
}
|
|
587
785
|
|
|
588
|
-
function defineMessage (defs: Record<string, ClassDef>, parent?: ClassDef): void {
|
|
786
|
+
function defineMessage (defs: Record<string, ClassDef>, parent?: ClassDef, flags?: Flags): void {
|
|
589
787
|
for (const className of Object.keys(defs)) {
|
|
590
788
|
const classDef = defs[className]
|
|
591
789
|
|
|
@@ -603,9 +801,19 @@ function defineModule (def: ClassDef): ModuleDef {
|
|
|
603
801
|
fieldDef.repeated = fieldDef.rule === 'repeated'
|
|
604
802
|
fieldDef.optional = !fieldDef.repeated && fieldDef.options?.proto3_optional === true
|
|
605
803
|
fieldDef.map = fieldDef.keyType != null
|
|
804
|
+
fieldDef.proto2Required = false
|
|
606
805
|
|
|
607
806
|
if (fieldDef.rule === 'required') {
|
|
608
|
-
|
|
807
|
+
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`
|
|
808
|
+
|
|
809
|
+
if (flags?.strict === true) {
|
|
810
|
+
throw new CodeError(message, 'ERR_PARSE_ERROR')
|
|
811
|
+
} else {
|
|
812
|
+
fieldDef.proto2Required = true
|
|
813
|
+
|
|
814
|
+
// eslint-disable-next-line no-console
|
|
815
|
+
console.info(`[WARN] ${message}`)
|
|
816
|
+
}
|
|
609
817
|
}
|
|
610
818
|
}
|
|
611
819
|
}
|
|
@@ -644,7 +852,7 @@ function defineModule (def: ClassDef): ModuleDef {
|
|
|
644
852
|
}
|
|
645
853
|
}
|
|
646
854
|
|
|
647
|
-
defineMessage(defs)
|
|
855
|
+
defineMessage(defs, undefined, flags)
|
|
648
856
|
|
|
649
857
|
// set enum/message fields now all messages have been defined
|
|
650
858
|
updateTypes(defs)
|
|
@@ -652,14 +860,22 @@ function defineModule (def: ClassDef): ModuleDef {
|
|
|
652
860
|
for (const className of Object.keys(defs)) {
|
|
653
861
|
const classDef = defs[className]
|
|
654
862
|
|
|
655
|
-
moduleDef.compiled.push(compileMessage(classDef, moduleDef))
|
|
863
|
+
moduleDef.compiled.push(compileMessage(classDef, moduleDef, flags))
|
|
656
864
|
}
|
|
657
865
|
|
|
658
866
|
return moduleDef
|
|
659
867
|
}
|
|
660
868
|
|
|
661
869
|
interface Flags {
|
|
870
|
+
/**
|
|
871
|
+
* Specifies an output directory
|
|
872
|
+
*/
|
|
662
873
|
output?: string
|
|
874
|
+
|
|
875
|
+
/**
|
|
876
|
+
* If true, warnings will be thrown as errors
|
|
877
|
+
*/
|
|
878
|
+
strict?: boolean
|
|
663
879
|
}
|
|
664
880
|
|
|
665
881
|
export async function generate (source: string, flags: Flags): Promise<void> {
|
|
@@ -701,7 +917,7 @@ export async function generate (source: string, flags: Flags): Promise<void> {
|
|
|
701
917
|
}
|
|
702
918
|
}
|
|
703
919
|
|
|
704
|
-
const moduleDef = defineModule(def)
|
|
920
|
+
const moduleDef = defineModule(def, flags)
|
|
705
921
|
|
|
706
922
|
const ignores = [
|
|
707
923
|
'/* eslint-disable import/export */',
|