protons 5.0.0 → 6.0.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 +16 -0
- package/dist/bin/protons.js +0 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +175 -64
- package/dist/src/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +202 -71
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
- [Install](#install)
|
|
14
14
|
- [Usage](#usage)
|
|
15
|
+
- [Differences from protobuf.js](#differences-from-protobufjs)
|
|
15
16
|
- [Contribute](#contribute)
|
|
16
17
|
- [License](#license)
|
|
17
18
|
- [Contribute](#contribute-1)
|
|
@@ -59,6 +60,21 @@ console.info(decoded.message)
|
|
|
59
60
|
// 'hello world'
|
|
60
61
|
```
|
|
61
62
|
|
|
63
|
+
## Differences from protobuf.js
|
|
64
|
+
|
|
65
|
+
This module uses the internal reader/writer from `protobuf.js` as it is highly optimised and there's no point reinventing the wheel.
|
|
66
|
+
|
|
67
|
+
It does have one or two differences:
|
|
68
|
+
|
|
69
|
+
1. Supports `proto3` semantics only
|
|
70
|
+
2. All 64 bit values are represented as `BigInt`s and not `Long`s (e.g. `int64`, `uint64`, `sint64` etc)
|
|
71
|
+
3. Unset `optional` fields are set on the deserialized object forms as `undefined` instead of the default values
|
|
72
|
+
4. `singular` fields set to default values are not serialized and are set to default values when deserialized if not set - protobuf.js [diverges from the language guide](https://github.com/protobufjs/protobuf.js/issues/1468#issuecomment-745177012) around this feature
|
|
73
|
+
|
|
74
|
+
## Missing features
|
|
75
|
+
|
|
76
|
+
Some features are missing `OneOf`, `Map`s, etc due to them not being needed so far in ipfs/libp2p. If these features are important to you, please open PRs implementing them along with tests comparing the generated bytes to `protobuf.js` and `pbjs`.
|
|
77
|
+
|
|
62
78
|
## Contribute
|
|
63
79
|
|
|
64
80
|
Feel free to join in. All welcome. Open an [issue](https://github.com/ipfs/protons/issues)!
|
package/dist/bin/protons.js
CHANGED
|
File without changes
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
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;AA6jBD,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,iBAyC3D"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable max-depth */
|
|
1
2
|
import { main as pbjs } from 'protobufjs-cli/pbjs.js';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
import { promisify } from 'util';
|
|
@@ -33,28 +34,26 @@ const types = {
|
|
|
33
34
|
uint64: 'bigint'
|
|
34
35
|
};
|
|
35
36
|
const encoderGenerators = {
|
|
36
|
-
bool: (val) => `
|
|
37
|
-
bytes: (val) => `
|
|
38
|
-
double: (val) => `
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
uint64: (val) => `writer.uint64(${val})`
|
|
37
|
+
bool: (val) => `w.bool(${val})`,
|
|
38
|
+
bytes: (val) => `w.bytes(${val})`,
|
|
39
|
+
double: (val) => `w.double(${val})`,
|
|
40
|
+
fixed32: (val) => `w.fixed32(${val})`,
|
|
41
|
+
fixed64: (val) => `w.fixed64(${val})`,
|
|
42
|
+
float: (val) => `w.float(${val})`,
|
|
43
|
+
int32: (val) => `w.int32(${val})`,
|
|
44
|
+
int64: (val) => `w.int64(${val})`,
|
|
45
|
+
sfixed32: (val) => `w.sfixed32(${val})`,
|
|
46
|
+
sfixed64: (val) => `w.sfixed64(${val})`,
|
|
47
|
+
sint32: (val) => `w.sint32(${val})`,
|
|
48
|
+
sint64: (val) => `w.sint64(${val})`,
|
|
49
|
+
string: (val) => `w.string(${val})`,
|
|
50
|
+
uint32: (val) => `w.uint32(${val})`,
|
|
51
|
+
uint64: (val) => `w.uint64(${val})`
|
|
52
52
|
};
|
|
53
53
|
const decoderGenerators = {
|
|
54
54
|
bool: () => 'reader.bool()',
|
|
55
55
|
bytes: () => 'reader.bytes()',
|
|
56
56
|
double: () => 'reader.double()',
|
|
57
|
-
// enumeration: () => `writer.double(${val})`,
|
|
58
57
|
fixed32: () => 'reader.fixed32()',
|
|
59
58
|
fixed64: () => 'reader.fixed64()',
|
|
60
59
|
float: () => 'reader.float()',
|
|
@@ -68,6 +67,40 @@ const decoderGenerators = {
|
|
|
68
67
|
uint32: () => 'reader.uint32()',
|
|
69
68
|
uint64: () => 'reader.uint64()'
|
|
70
69
|
};
|
|
70
|
+
const defaultValueGenerators = {
|
|
71
|
+
bool: () => 'false',
|
|
72
|
+
bytes: () => 'new Uint8Array(0)',
|
|
73
|
+
double: () => '0',
|
|
74
|
+
fixed32: () => '0',
|
|
75
|
+
fixed64: () => '0n',
|
|
76
|
+
float: () => '0',
|
|
77
|
+
int32: () => '0',
|
|
78
|
+
int64: () => '0n',
|
|
79
|
+
sfixed32: () => '0',
|
|
80
|
+
sfixed64: () => '0n',
|
|
81
|
+
sint32: () => '0',
|
|
82
|
+
sint64: () => '0n',
|
|
83
|
+
string: () => "''",
|
|
84
|
+
uint32: () => '0',
|
|
85
|
+
uint64: () => '0n'
|
|
86
|
+
};
|
|
87
|
+
const defaultValueTestGenerators = {
|
|
88
|
+
bool: (field) => `${field} !== false`,
|
|
89
|
+
bytes: (field) => `(${field} != null && ${field}.byteLength > 0)`,
|
|
90
|
+
double: (field) => `${field} !== 0`,
|
|
91
|
+
fixed32: (field) => `${field} !== 0`,
|
|
92
|
+
fixed64: (field) => `${field} !== 0n`,
|
|
93
|
+
float: (field) => `${field} !== 0`,
|
|
94
|
+
int32: (field) => `${field} !== 0`,
|
|
95
|
+
int64: (field) => `${field} !== 0n`,
|
|
96
|
+
sfixed32: (field) => `${field} !== 0`,
|
|
97
|
+
sfixed64: (field) => `${field} !== 0n`,
|
|
98
|
+
sint32: (field) => `${field} !== 0`,
|
|
99
|
+
sint64: (field) => `${field} !== 0n`,
|
|
100
|
+
string: (field) => `${field} !== ''`,
|
|
101
|
+
uint32: (field) => `${field} !== 0`,
|
|
102
|
+
uint64: (field) => `${field} !== 0n`
|
|
103
|
+
};
|
|
71
104
|
function findTypeName(typeName, classDef, moduleDef) {
|
|
72
105
|
if (types[typeName] != null) {
|
|
73
106
|
return types[typeName];
|
|
@@ -101,6 +134,55 @@ function findDef(typeName, classDef, moduleDef) {
|
|
|
101
134
|
}
|
|
102
135
|
throw new Error(`Could not resolve type name "${typeName}"`);
|
|
103
136
|
}
|
|
137
|
+
function createDefaultObject(fields, messageDef, moduleDef) {
|
|
138
|
+
const output = Object.entries(fields)
|
|
139
|
+
.map(([name, fieldDef]) => {
|
|
140
|
+
if (fieldDef.repeated) {
|
|
141
|
+
return `${name}: []`;
|
|
142
|
+
}
|
|
143
|
+
if (fieldDef.optional) {
|
|
144
|
+
return '';
|
|
145
|
+
}
|
|
146
|
+
const type = fieldDef.type;
|
|
147
|
+
let defaultValue;
|
|
148
|
+
if (defaultValueGenerators[type] != null) {
|
|
149
|
+
defaultValue = defaultValueGenerators[type]();
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const def = findDef(fieldDef.type, messageDef, moduleDef);
|
|
153
|
+
if (isEnumDef(def)) {
|
|
154
|
+
// select lowest-value enum - should be 0 but it's not guaranteed
|
|
155
|
+
const val = Object.entries(def.values)
|
|
156
|
+
.sort((a, b) => {
|
|
157
|
+
if (a[1] < b[1]) {
|
|
158
|
+
return 1;
|
|
159
|
+
}
|
|
160
|
+
if (a[1] > b[1]) {
|
|
161
|
+
return -1;
|
|
162
|
+
}
|
|
163
|
+
return 0;
|
|
164
|
+
})
|
|
165
|
+
.pop();
|
|
166
|
+
if (val == null) {
|
|
167
|
+
throw new Error(`Could not find default enum value for ${def.fullName}`);
|
|
168
|
+
}
|
|
169
|
+
defaultValue = `${def.name}.${val[0]}`;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
defaultValue = 'undefined';
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return `${name}: ${defaultValue}`;
|
|
176
|
+
})
|
|
177
|
+
.filter(Boolean)
|
|
178
|
+
.join(',\n ');
|
|
179
|
+
if (output !== '') {
|
|
180
|
+
return `
|
|
181
|
+
${output}
|
|
182
|
+
`;
|
|
183
|
+
}
|
|
184
|
+
return '';
|
|
185
|
+
}
|
|
104
186
|
const encoders = {
|
|
105
187
|
bool: 'bool',
|
|
106
188
|
bytes: 'bytes',
|
|
@@ -195,41 +277,22 @@ export interface ${messageDef.name} {
|
|
|
195
277
|
.join('\n ')
|
|
196
278
|
.trim()}
|
|
197
279
|
}`;
|
|
198
|
-
const ensureArrayProps = Object.entries(fields)
|
|
199
|
-
.map(([name, fieldDef]) => {
|
|
200
|
-
// make sure repeated fields have an array if not set
|
|
201
|
-
if (fieldDef.rule === 'repeated') {
|
|
202
|
-
return ` obj.${name} = obj.${name} ?? []`;
|
|
203
|
-
}
|
|
204
|
-
return '';
|
|
205
|
-
}).filter(Boolean).join('\n');
|
|
206
|
-
const ensureRequiredFields = Object.entries(fields)
|
|
207
|
-
.map(([name, fieldDef]) => {
|
|
208
|
-
// make sure required fields are set
|
|
209
|
-
if (!fieldDef.optional) {
|
|
210
|
-
return `
|
|
211
|
-
if (obj.${name} == null) {
|
|
212
|
-
throw new Error('Protocol error: value for required field "${name}" was not found in protobuf')
|
|
213
|
-
}`;
|
|
214
|
-
}
|
|
215
|
-
return '';
|
|
216
|
-
}).filter(Boolean).join('\n');
|
|
217
280
|
interfaceCodecDef = `
|
|
218
281
|
let _codec: Codec<${messageDef.name}>
|
|
219
282
|
|
|
220
283
|
export const codec = (): Codec<${messageDef.name}> => {
|
|
221
284
|
if (_codec == null) {
|
|
222
|
-
_codec = message<${messageDef.name}>((obj,
|
|
285
|
+
_codec = message<${messageDef.name}>((obj, w, opts = {}) => {
|
|
223
286
|
if (opts.lengthDelimited !== false) {
|
|
224
|
-
|
|
287
|
+
w.fork()
|
|
225
288
|
}
|
|
226
289
|
${Object.entries(fields)
|
|
227
290
|
.map(([name, fieldDef]) => {
|
|
228
291
|
let codec = encoders[fieldDef.type];
|
|
229
292
|
let type = fieldDef.type;
|
|
293
|
+
let typeName = '';
|
|
230
294
|
if (codec == null) {
|
|
231
|
-
|
|
232
|
-
if (isEnumDef(def)) {
|
|
295
|
+
if (fieldDef.enum) {
|
|
233
296
|
moduleDef.imports.add('enumeration');
|
|
234
297
|
type = 'enum';
|
|
235
298
|
}
|
|
@@ -237,31 +300,58 @@ ${Object.entries(fields)
|
|
|
237
300
|
moduleDef.imports.add('message');
|
|
238
301
|
type = 'message';
|
|
239
302
|
}
|
|
240
|
-
|
|
303
|
+
typeName = findTypeName(fieldDef.type, messageDef, moduleDef);
|
|
241
304
|
codec = `${typeName}.codec()`;
|
|
242
305
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
306
|
+
let valueTest = `obj.${name} != null`;
|
|
307
|
+
// proto3 singular fields should only be written out if they are not the default value
|
|
308
|
+
if (!fieldDef.optional && !fieldDef.repeated) {
|
|
309
|
+
if (defaultValueTestGenerators[type] != null) {
|
|
310
|
+
valueTest = `opts.writeDefaults === true || ${defaultValueTestGenerators[type](`obj.${name}`)}`;
|
|
311
|
+
}
|
|
312
|
+
else if (type === 'enum') {
|
|
313
|
+
// handle enums
|
|
314
|
+
valueTest = `opts.writeDefaults === true || (obj.${name} != null && __${fieldDef.type}Values[obj.${name}] !== 0)`;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
function createWriteField(valueVar) {
|
|
318
|
+
const id = (fieldDef.id << 3) | codecTypes[type];
|
|
319
|
+
let writeField = `w.uint32(${id})
|
|
320
|
+
${encoderGenerators[type] == null ? `${codec}.encode(${valueVar}, w)` : encoderGenerators[type](valueVar)}`;
|
|
321
|
+
if (type === 'message') {
|
|
322
|
+
// message fields are only written if they have values
|
|
323
|
+
writeField = `w.uint32(${id})
|
|
324
|
+
${typeName}.codec().encode(${valueVar}, w, {
|
|
325
|
+
writeDefaults: ${Boolean(fieldDef.repeated).toString()}
|
|
326
|
+
})`;
|
|
327
|
+
}
|
|
328
|
+
return writeField;
|
|
329
|
+
}
|
|
330
|
+
let writeField = createWriteField(`obj.${name}`);
|
|
331
|
+
if (fieldDef.repeated) {
|
|
332
|
+
writeField = `
|
|
246
333
|
for (const value of obj.${name}) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
334
|
+
${createWriteField('value')
|
|
335
|
+
.split('\n')
|
|
336
|
+
.map(s => {
|
|
337
|
+
const trimmed = s.trim();
|
|
338
|
+
return trimmed === '' ? trimmed : ` ${s}`;
|
|
339
|
+
})
|
|
340
|
+
.join('\n')}
|
|
341
|
+
}
|
|
342
|
+
`.trim();
|
|
343
|
+
}
|
|
344
|
+
return `
|
|
345
|
+
if (${valueTest}) {
|
|
346
|
+
${writeField}
|
|
347
|
+
}`;
|
|
258
348
|
}).join('\n')}
|
|
259
349
|
|
|
260
350
|
if (opts.lengthDelimited !== false) {
|
|
261
|
-
|
|
351
|
+
w.ldelim()
|
|
262
352
|
}
|
|
263
353
|
}, (reader, length) => {
|
|
264
|
-
const obj: any = {}
|
|
354
|
+
const obj: any = {${createDefaultObject(fields, messageDef, moduleDef)}}
|
|
265
355
|
|
|
266
356
|
const end = length == null ? reader.len : reader.pos + length
|
|
267
357
|
|
|
@@ -274,8 +364,7 @@ ${Object.entries(fields)
|
|
|
274
364
|
let codec = encoders[fieldDef.type];
|
|
275
365
|
let type = fieldDef.type;
|
|
276
366
|
if (codec == null) {
|
|
277
|
-
|
|
278
|
-
if (isEnumDef(def)) {
|
|
367
|
+
if (fieldDef.enum) {
|
|
279
368
|
moduleDef.imports.add('enumeration');
|
|
280
369
|
type = 'enum';
|
|
281
370
|
}
|
|
@@ -288,7 +377,6 @@ ${Object.entries(fields)
|
|
|
288
377
|
}
|
|
289
378
|
return `case ${fieldDef.id}:${fieldDef.rule === 'repeated'
|
|
290
379
|
? `
|
|
291
|
-
obj.${name} = obj.${name} ?? []
|
|
292
380
|
obj.${name}.push(${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()})`
|
|
293
381
|
: `
|
|
294
382
|
obj.${name} = ${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()}`}
|
|
@@ -298,7 +386,7 @@ ${Object.entries(fields)
|
|
|
298
386
|
reader.skipType(tag & 7)
|
|
299
387
|
break
|
|
300
388
|
}
|
|
301
|
-
}
|
|
389
|
+
}
|
|
302
390
|
|
|
303
391
|
return obj
|
|
304
392
|
})
|
|
@@ -346,8 +434,9 @@ function defineModule(def) {
|
|
|
346
434
|
}
|
|
347
435
|
if (classDef.fields != null) {
|
|
348
436
|
for (const name of Object.keys(classDef.fields)) {
|
|
349
|
-
|
|
350
|
-
|
|
437
|
+
const fieldDef = classDef.fields[name];
|
|
438
|
+
fieldDef.repeated = fieldDef.rule === 'repeated';
|
|
439
|
+
fieldDef.optional = !fieldDef.repeated && fieldDef.options?.proto3_optional === true;
|
|
351
440
|
}
|
|
352
441
|
}
|
|
353
442
|
if (parent == null) {
|
|
@@ -356,6 +445,25 @@ function defineModule(def) {
|
|
|
356
445
|
}
|
|
357
446
|
}
|
|
358
447
|
defineMessage(defs);
|
|
448
|
+
// set enum/message fields now all messages have been defined
|
|
449
|
+
for (const className of Object.keys(defs)) {
|
|
450
|
+
const classDef = defs[className];
|
|
451
|
+
if (classDef.fields != null) {
|
|
452
|
+
for (const name of Object.keys(classDef.fields)) {
|
|
453
|
+
const fieldDef = classDef.fields[name];
|
|
454
|
+
if (types[fieldDef.type] == null) {
|
|
455
|
+
const def = findDef(fieldDef.type, classDef, moduleDef);
|
|
456
|
+
fieldDef.enum = isEnumDef(def);
|
|
457
|
+
fieldDef.message = !fieldDef.enum;
|
|
458
|
+
if (fieldDef.message && !fieldDef.repeated) {
|
|
459
|
+
// the default type for a message is unset so they are always optional
|
|
460
|
+
// https://developers.google.com/protocol-buffers/docs/proto3#default
|
|
461
|
+
fieldDef.optional = true;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
359
467
|
for (const className of Object.keys(defs)) {
|
|
360
468
|
const classDef = defs[className];
|
|
361
469
|
moduleDef.compiled.push(compileMessage(classDef, moduleDef));
|
|
@@ -372,7 +480,9 @@ export async function generate(source, flags) {
|
|
|
372
480
|
const moduleDef = defineModule(def);
|
|
373
481
|
let lines = [
|
|
374
482
|
'/* eslint-disable import/export */',
|
|
483
|
+
'/* eslint-disable complexity */',
|
|
375
484
|
'/* eslint-disable @typescript-eslint/no-namespace */',
|
|
485
|
+
'/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */',
|
|
376
486
|
''
|
|
377
487
|
];
|
|
378
488
|
if (moduleDef.imports.size > 0) {
|
|
@@ -390,6 +500,7 @@ export async function generate(source, flags) {
|
|
|
390
500
|
...moduleDef.compiled
|
|
391
501
|
];
|
|
392
502
|
const content = lines.join('\n').trim();
|
|
393
|
-
|
|
503
|
+
const outputPath = pathWithExtension(source, '.ts', flags.output);
|
|
504
|
+
await fs.writeFile(outputPath, content + '\n');
|
|
394
505
|
}
|
|
395
506
|
//# sourceMappingURL=index.js.map
|
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": "
|
|
3
|
+
"version": "6.0.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",
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
"long": "^5.2.0",
|
|
162
162
|
"pbjs": "^0.0.14",
|
|
163
163
|
"protobufjs": "^7.0.0",
|
|
164
|
-
"protons-runtime": "^
|
|
164
|
+
"protons-runtime": "^4.0.0",
|
|
165
165
|
"uint8arraylist": "^2.3.2",
|
|
166
166
|
"uint8arrays": "^3.1.0"
|
|
167
167
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable max-depth */
|
|
2
|
+
|
|
1
3
|
import { main as pbjs } from 'protobufjs-cli/pbjs.js'
|
|
2
4
|
import path from 'path'
|
|
3
5
|
import { promisify } from 'util'
|
|
@@ -36,29 +38,27 @@ const types: Record<string, string> = {
|
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
const encoderGenerators: Record<string, (val: string) => string> = {
|
|
39
|
-
bool: (val) => `
|
|
40
|
-
bytes: (val) => `
|
|
41
|
-
double: (val) => `
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
uint64: (val) => `writer.uint64(${val})`
|
|
41
|
+
bool: (val) => `w.bool(${val})`,
|
|
42
|
+
bytes: (val) => `w.bytes(${val})`,
|
|
43
|
+
double: (val) => `w.double(${val})`,
|
|
44
|
+
fixed32: (val) => `w.fixed32(${val})`,
|
|
45
|
+
fixed64: (val) => `w.fixed64(${val})`,
|
|
46
|
+
float: (val) => `w.float(${val})`,
|
|
47
|
+
int32: (val) => `w.int32(${val})`,
|
|
48
|
+
int64: (val) => `w.int64(${val})`,
|
|
49
|
+
sfixed32: (val) => `w.sfixed32(${val})`,
|
|
50
|
+
sfixed64: (val) => `w.sfixed64(${val})`,
|
|
51
|
+
sint32: (val) => `w.sint32(${val})`,
|
|
52
|
+
sint64: (val) => `w.sint64(${val})`,
|
|
53
|
+
string: (val) => `w.string(${val})`,
|
|
54
|
+
uint32: (val) => `w.uint32(${val})`,
|
|
55
|
+
uint64: (val) => `w.uint64(${val})`
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
const decoderGenerators: Record<string, () => string> = {
|
|
58
59
|
bool: () => 'reader.bool()',
|
|
59
60
|
bytes: () => 'reader.bytes()',
|
|
60
61
|
double: () => 'reader.double()',
|
|
61
|
-
// enumeration: () => `writer.double(${val})`,
|
|
62
62
|
fixed32: () => 'reader.fixed32()',
|
|
63
63
|
fixed64: () => 'reader.fixed64()',
|
|
64
64
|
float: () => 'reader.float()',
|
|
@@ -73,6 +73,42 @@ const decoderGenerators: Record<string, () => string> = {
|
|
|
73
73
|
uint64: () => 'reader.uint64()'
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
const defaultValueGenerators: Record<string, () => string> = {
|
|
77
|
+
bool: () => 'false',
|
|
78
|
+
bytes: () => 'new Uint8Array(0)',
|
|
79
|
+
double: () => '0',
|
|
80
|
+
fixed32: () => '0',
|
|
81
|
+
fixed64: () => '0n',
|
|
82
|
+
float: () => '0',
|
|
83
|
+
int32: () => '0',
|
|
84
|
+
int64: () => '0n',
|
|
85
|
+
sfixed32: () => '0',
|
|
86
|
+
sfixed64: () => '0n',
|
|
87
|
+
sint32: () => '0',
|
|
88
|
+
sint64: () => '0n',
|
|
89
|
+
string: () => "''",
|
|
90
|
+
uint32: () => '0',
|
|
91
|
+
uint64: () => '0n'
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const defaultValueTestGenerators: Record<string, (field: string) => string> = {
|
|
95
|
+
bool: (field) => `${field} !== false`,
|
|
96
|
+
bytes: (field) => `(${field} != null && ${field}.byteLength > 0)`,
|
|
97
|
+
double: (field) => `${field} !== 0`,
|
|
98
|
+
fixed32: (field) => `${field} !== 0`,
|
|
99
|
+
fixed64: (field) => `${field} !== 0n`,
|
|
100
|
+
float: (field) => `${field} !== 0`,
|
|
101
|
+
int32: (field) => `${field} !== 0`,
|
|
102
|
+
int64: (field) => `${field} !== 0n`,
|
|
103
|
+
sfixed32: (field) => `${field} !== 0`,
|
|
104
|
+
sfixed64: (field) => `${field} !== 0n`,
|
|
105
|
+
sint32: (field) => `${field} !== 0`,
|
|
106
|
+
sint64: (field) => `${field} !== 0n`,
|
|
107
|
+
string: (field) => `${field} !== ''`,
|
|
108
|
+
uint32: (field) => `${field} !== 0`,
|
|
109
|
+
uint64: (field) => `${field} !== 0n`
|
|
110
|
+
}
|
|
111
|
+
|
|
76
112
|
function findTypeName (typeName: string, classDef: MessageDef, moduleDef: ModuleDef): string {
|
|
77
113
|
if (types[typeName] != null) {
|
|
78
114
|
return types[typeName]
|
|
@@ -117,6 +153,65 @@ function findDef (typeName: string, classDef: MessageDef, moduleDef: ModuleDef):
|
|
|
117
153
|
throw new Error(`Could not resolve type name "${typeName}"`)
|
|
118
154
|
}
|
|
119
155
|
|
|
156
|
+
function createDefaultObject (fields: Record<string, FieldDef>, messageDef: MessageDef, moduleDef: ModuleDef): string {
|
|
157
|
+
const output = Object.entries(fields)
|
|
158
|
+
.map(([name, fieldDef]) => {
|
|
159
|
+
if (fieldDef.repeated) {
|
|
160
|
+
return `${name}: []`
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (fieldDef.optional) {
|
|
164
|
+
return ''
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const type: string = fieldDef.type
|
|
168
|
+
let defaultValue
|
|
169
|
+
|
|
170
|
+
if (defaultValueGenerators[type] != null) {
|
|
171
|
+
defaultValue = defaultValueGenerators[type]()
|
|
172
|
+
} else {
|
|
173
|
+
const def = findDef(fieldDef.type, messageDef, moduleDef)
|
|
174
|
+
|
|
175
|
+
if (isEnumDef(def)) {
|
|
176
|
+
// select lowest-value enum - should be 0 but it's not guaranteed
|
|
177
|
+
const val = Object.entries(def.values)
|
|
178
|
+
.sort((a, b) => {
|
|
179
|
+
if (a[1] < b[1]) {
|
|
180
|
+
return 1
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (a[1] > b[1]) {
|
|
184
|
+
return -1
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return 0
|
|
188
|
+
})
|
|
189
|
+
.pop()
|
|
190
|
+
|
|
191
|
+
if (val == null) {
|
|
192
|
+
throw new Error(`Could not find default enum value for ${def.fullName}`)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
defaultValue = `${def.name}.${val[0]}`
|
|
196
|
+
} else {
|
|
197
|
+
defaultValue = 'undefined'
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return `${name}: ${defaultValue}`
|
|
202
|
+
})
|
|
203
|
+
.filter(Boolean)
|
|
204
|
+
.join(',\n ')
|
|
205
|
+
|
|
206
|
+
if (output !== '') {
|
|
207
|
+
return `
|
|
208
|
+
${output}
|
|
209
|
+
`
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return ''
|
|
213
|
+
}
|
|
214
|
+
|
|
120
215
|
const encoders: Record<string, string> = {
|
|
121
216
|
bool: 'bool',
|
|
122
217
|
bytes: 'bytes',
|
|
@@ -183,6 +278,8 @@ interface FieldDef {
|
|
|
183
278
|
rule: string
|
|
184
279
|
optional: boolean
|
|
185
280
|
repeated: boolean
|
|
281
|
+
message: boolean
|
|
282
|
+
enum: boolean
|
|
186
283
|
}
|
|
187
284
|
|
|
188
285
|
function defineFields (fields: Record<string, FieldDef>, messageDef: MessageDef, moduleDef: ModuleDef) {
|
|
@@ -256,47 +353,23 @@ export interface ${messageDef.name} {
|
|
|
256
353
|
}
|
|
257
354
|
}`
|
|
258
355
|
|
|
259
|
-
const ensureArrayProps = Object.entries(fields)
|
|
260
|
-
.map(([name, fieldDef]) => {
|
|
261
|
-
// make sure repeated fields have an array if not set
|
|
262
|
-
if (fieldDef.rule === 'repeated') {
|
|
263
|
-
return ` obj.${name} = obj.${name} ?? []`
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
return ''
|
|
267
|
-
}).filter(Boolean).join('\n')
|
|
268
|
-
|
|
269
|
-
const ensureRequiredFields = Object.entries(fields)
|
|
270
|
-
.map(([name, fieldDef]) => {
|
|
271
|
-
// make sure required fields are set
|
|
272
|
-
if (!fieldDef.optional) {
|
|
273
|
-
return `
|
|
274
|
-
if (obj.${name} == null) {
|
|
275
|
-
throw new Error('Protocol error: value for required field "${name}" was not found in protobuf')
|
|
276
|
-
}`
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
return ''
|
|
280
|
-
}).filter(Boolean).join('\n')
|
|
281
|
-
|
|
282
356
|
interfaceCodecDef = `
|
|
283
357
|
let _codec: Codec<${messageDef.name}>
|
|
284
358
|
|
|
285
359
|
export const codec = (): Codec<${messageDef.name}> => {
|
|
286
360
|
if (_codec == null) {
|
|
287
|
-
_codec = message<${messageDef.name}>((obj,
|
|
361
|
+
_codec = message<${messageDef.name}>((obj, w, opts = {}) => {
|
|
288
362
|
if (opts.lengthDelimited !== false) {
|
|
289
|
-
|
|
363
|
+
w.fork()
|
|
290
364
|
}
|
|
291
365
|
${Object.entries(fields)
|
|
292
366
|
.map(([name, fieldDef]) => {
|
|
293
367
|
let codec: string = encoders[fieldDef.type]
|
|
294
368
|
let type: string = fieldDef.type
|
|
369
|
+
let typeName: string = ''
|
|
295
370
|
|
|
296
371
|
if (codec == null) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
if (isEnumDef(def)) {
|
|
372
|
+
if (fieldDef.enum) {
|
|
300
373
|
moduleDef.imports.add('enumeration')
|
|
301
374
|
type = 'enum'
|
|
302
375
|
} else {
|
|
@@ -304,34 +377,69 @@ ${Object.entries(fields)
|
|
|
304
377
|
type = 'message'
|
|
305
378
|
}
|
|
306
379
|
|
|
307
|
-
|
|
380
|
+
typeName = findTypeName(fieldDef.type, messageDef, moduleDef)
|
|
308
381
|
codec = `${typeName}.codec()`
|
|
309
382
|
}
|
|
310
383
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
384
|
+
let valueTest = `obj.${name} != null`
|
|
385
|
+
|
|
386
|
+
// proto3 singular fields should only be written out if they are not the default value
|
|
387
|
+
if (!fieldDef.optional && !fieldDef.repeated) {
|
|
388
|
+
if (defaultValueTestGenerators[type] != null) {
|
|
389
|
+
valueTest = `opts.writeDefaults === true || ${defaultValueTestGenerators[type](`obj.${name}`)}`
|
|
390
|
+
} else if (type === 'enum') {
|
|
391
|
+
// handle enums
|
|
392
|
+
valueTest = `opts.writeDefaults === true || (obj.${name} != null && __${fieldDef.type}Values[obj.${name}] !== 0)`
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
function createWriteField (valueVar: string): string {
|
|
397
|
+
const id = (fieldDef.id << 3) | codecTypes[type]
|
|
398
|
+
|
|
399
|
+
let writeField = `w.uint32(${id})
|
|
400
|
+
${encoderGenerators[type] == null ? `${codec}.encode(${valueVar}, w)` : encoderGenerators[type](valueVar)}`
|
|
401
|
+
|
|
402
|
+
if (type === 'message') {
|
|
403
|
+
// message fields are only written if they have values
|
|
404
|
+
writeField = `w.uint32(${id})
|
|
405
|
+
${typeName}.codec().encode(${valueVar}, w, {
|
|
406
|
+
writeDefaults: ${Boolean(fieldDef.repeated).toString()}
|
|
407
|
+
})`
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
return writeField
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
let writeField = createWriteField(`obj.${name}`)
|
|
414
|
+
|
|
415
|
+
if (fieldDef.repeated) {
|
|
416
|
+
writeField = `
|
|
315
417
|
for (const value of obj.${name}) {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
418
|
+
${
|
|
419
|
+
createWriteField('value')
|
|
420
|
+
.split('\n')
|
|
421
|
+
.map(s => {
|
|
422
|
+
const trimmed = s.trim()
|
|
423
|
+
|
|
424
|
+
return trimmed === '' ? trimmed : ` ${s}`
|
|
425
|
+
})
|
|
426
|
+
.join('\n')
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
`.trim()
|
|
322
430
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}`
|
|
431
|
+
|
|
432
|
+
return `
|
|
433
|
+
if (${valueTest}) {
|
|
434
|
+
${writeField}
|
|
435
|
+
}`
|
|
328
436
|
}).join('\n')}
|
|
329
437
|
|
|
330
438
|
if (opts.lengthDelimited !== false) {
|
|
331
|
-
|
|
439
|
+
w.ldelim()
|
|
332
440
|
}
|
|
333
441
|
}, (reader, length) => {
|
|
334
|
-
const obj: any = {}
|
|
442
|
+
const obj: any = {${createDefaultObject(fields, messageDef, moduleDef)}}
|
|
335
443
|
|
|
336
444
|
const end = length == null ? reader.len : reader.pos + length
|
|
337
445
|
|
|
@@ -345,9 +453,7 @@ ${Object.entries(fields)
|
|
|
345
453
|
let type: string = fieldDef.type
|
|
346
454
|
|
|
347
455
|
if (codec == null) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
if (isEnumDef(def)) {
|
|
456
|
+
if (fieldDef.enum) {
|
|
351
457
|
moduleDef.imports.add('enumeration')
|
|
352
458
|
type = 'enum'
|
|
353
459
|
} else {
|
|
@@ -361,7 +467,6 @@ ${Object.entries(fields)
|
|
|
361
467
|
|
|
362
468
|
return `case ${fieldDef.id}:${fieldDef.rule === 'repeated'
|
|
363
469
|
? `
|
|
364
|
-
obj.${name} = obj.${name} ?? []
|
|
365
470
|
obj.${name}.push(${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()})`
|
|
366
471
|
: `
|
|
367
472
|
obj.${name} = ${decoderGenerators[type] == null ? `${codec}.decode(reader${type === 'message' ? ', reader.uint32()' : ''})` : decoderGenerators[type]()}`}
|
|
@@ -371,7 +476,7 @@ ${Object.entries(fields)
|
|
|
371
476
|
reader.skipType(tag & 7)
|
|
372
477
|
break
|
|
373
478
|
}
|
|
374
|
-
}
|
|
479
|
+
}
|
|
375
480
|
|
|
376
481
|
return obj
|
|
377
482
|
})
|
|
@@ -435,8 +540,9 @@ function defineModule (def: ClassDef): ModuleDef {
|
|
|
435
540
|
|
|
436
541
|
if (classDef.fields != null) {
|
|
437
542
|
for (const name of Object.keys(classDef.fields)) {
|
|
438
|
-
|
|
439
|
-
|
|
543
|
+
const fieldDef = classDef.fields[name]
|
|
544
|
+
fieldDef.repeated = fieldDef.rule === 'repeated'
|
|
545
|
+
fieldDef.optional = !fieldDef.repeated && fieldDef.options?.proto3_optional === true
|
|
440
546
|
}
|
|
441
547
|
}
|
|
442
548
|
|
|
@@ -448,6 +554,28 @@ function defineModule (def: ClassDef): ModuleDef {
|
|
|
448
554
|
|
|
449
555
|
defineMessage(defs)
|
|
450
556
|
|
|
557
|
+
// set enum/message fields now all messages have been defined
|
|
558
|
+
for (const className of Object.keys(defs)) {
|
|
559
|
+
const classDef = defs[className]
|
|
560
|
+
|
|
561
|
+
if (classDef.fields != null) {
|
|
562
|
+
for (const name of Object.keys(classDef.fields)) {
|
|
563
|
+
const fieldDef = classDef.fields[name]
|
|
564
|
+
if (types[fieldDef.type] == null) {
|
|
565
|
+
const def = findDef(fieldDef.type, classDef, moduleDef)
|
|
566
|
+
fieldDef.enum = isEnumDef(def)
|
|
567
|
+
fieldDef.message = !fieldDef.enum
|
|
568
|
+
|
|
569
|
+
if (fieldDef.message && !fieldDef.repeated) {
|
|
570
|
+
// the default type for a message is unset so they are always optional
|
|
571
|
+
// https://developers.google.com/protocol-buffers/docs/proto3#default
|
|
572
|
+
fieldDef.optional = true
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
451
579
|
for (const className of Object.keys(defs)) {
|
|
452
580
|
const classDef = defs[className]
|
|
453
581
|
|
|
@@ -474,7 +602,9 @@ export async function generate (source: string, flags: Flags) {
|
|
|
474
602
|
|
|
475
603
|
let lines = [
|
|
476
604
|
'/* eslint-disable import/export */',
|
|
605
|
+
'/* eslint-disable complexity */',
|
|
477
606
|
'/* eslint-disable @typescript-eslint/no-namespace */',
|
|
607
|
+
'/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */',
|
|
478
608
|
''
|
|
479
609
|
]
|
|
480
610
|
|
|
@@ -497,6 +627,7 @@ export async function generate (source: string, flags: Flags) {
|
|
|
497
627
|
]
|
|
498
628
|
|
|
499
629
|
const content = lines.join('\n').trim()
|
|
630
|
+
const outputPath = pathWithExtension(source, '.ts', flags.output)
|
|
500
631
|
|
|
501
|
-
await fs.writeFile(
|
|
632
|
+
await fs.writeFile(outputPath, content + '\n')
|
|
502
633
|
}
|