protons 3.0.1 → 3.0.4
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 +2 -0
- package/dist/bin/protons.js +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +73 -43
- package/dist/src/index.js.map +1 -1
- package/package.json +7 -8
- package/src/index.ts +65 -25
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# protons <!-- omit in toc -->
|
|
2
2
|
|
|
3
|
+
[](https://github.com/ipfs/protons/actions/workflows/js-test-and-release.yml)
|
|
4
|
+
|
|
3
5
|
> Generate typescript from .proto files
|
|
4
6
|
|
|
5
7
|
## Table of contents <!-- omit in toc -->
|
package/dist/bin/protons.js
CHANGED
|
@@ -4,13 +4,13 @@ import { generate } from '../src/index.js';
|
|
|
4
4
|
async function main() {
|
|
5
5
|
const cli = meow(`
|
|
6
6
|
Usage
|
|
7
|
-
$ protons source
|
|
7
|
+
$ protons source...
|
|
8
8
|
|
|
9
9
|
Options
|
|
10
|
-
--output, -o
|
|
10
|
+
--output, -o Path to a directory to write transpiled typescript files into
|
|
11
11
|
|
|
12
12
|
Examples
|
|
13
|
-
$ protons ./path/to/file.proto
|
|
13
|
+
$ protons ./path/to/file.proto ./path/to/other/file.proto
|
|
14
14
|
`, {
|
|
15
15
|
importMeta: import.meta,
|
|
16
16
|
flags: {
|
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":"AA+RA,wBAAsB,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAkCzD"}
|
package/dist/src/index.js
CHANGED
|
@@ -87,75 +87,96 @@ function compileMessage(messageDef, moduleDef) {
|
|
|
87
87
|
moduleDef.imports.add('enumeration');
|
|
88
88
|
return `
|
|
89
89
|
export enum ${messageDef.name} {
|
|
90
|
-
${Object.
|
|
91
|
-
return `${
|
|
90
|
+
${Object.keys(messageDef.values).map(name => {
|
|
91
|
+
return `${name} = '${name}'`;
|
|
92
92
|
}).join(',\n ').trim()}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
enum __${messageDef.name}Values {
|
|
96
|
+
${Object.entries(messageDef.values).map(([name, value]) => {
|
|
97
|
+
return `${name} = ${value}`;
|
|
98
|
+
}).join(',\n ').trim()}
|
|
97
99
|
}
|
|
98
|
-
|
|
100
|
+
|
|
101
|
+
export namespace ${messageDef.name} {
|
|
102
|
+
export const codec = () => {
|
|
103
|
+
return enumeration<typeof ${messageDef.name}>(__${messageDef.name}Values)
|
|
104
|
+
}
|
|
105
|
+
}`.trim();
|
|
99
106
|
}
|
|
100
107
|
let nested = '';
|
|
101
108
|
if (messageDef.nested != null) {
|
|
102
109
|
nested = '\n';
|
|
103
110
|
nested += Object.values(messageDef.nested)
|
|
104
111
|
.map(def => compileMessage(def, moduleDef).trim())
|
|
105
|
-
.join('\n')
|
|
112
|
+
.join('\n\n')
|
|
106
113
|
.split('\n')
|
|
107
114
|
.map(line => line.trim() === '' ? '' : ` ${line}`)
|
|
108
115
|
.join('\n');
|
|
109
|
-
nested += '\n';
|
|
110
116
|
}
|
|
111
117
|
const fields = messageDef.fields ?? {};
|
|
112
118
|
// import relevant modules
|
|
113
119
|
moduleDef.imports.add('encodeMessage');
|
|
114
120
|
moduleDef.imports.add('decodeMessage');
|
|
115
121
|
moduleDef.imports.add('message');
|
|
116
|
-
|
|
122
|
+
moduleDef.importedTypes.add('Codec');
|
|
123
|
+
const interfaceFields = defineFields(fields, messageDef, moduleDef)
|
|
124
|
+
.join('\n ')
|
|
125
|
+
.trim();
|
|
126
|
+
let interfaceDef = '';
|
|
127
|
+
let interfaceCodecDef = '';
|
|
128
|
+
if (interfaceFields !== '') {
|
|
129
|
+
interfaceDef = `
|
|
117
130
|
export interface ${messageDef.name} {
|
|
118
131
|
${defineFields(fields, messageDef, moduleDef)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
.join('\n ')
|
|
133
|
+
.trim()}
|
|
134
|
+
}`;
|
|
135
|
+
interfaceCodecDef = `
|
|
136
|
+
export const codec = (): Codec<${messageDef.name}> => {
|
|
137
|
+
return message<${messageDef.name}>({
|
|
138
|
+
${Object.entries(fields)
|
|
139
|
+
.map(([name, fieldDef]) => {
|
|
140
|
+
let codec = encoders[fieldDef.type];
|
|
141
|
+
if (codec == null) {
|
|
142
|
+
const def = findDef(fieldDef.type, messageDef, moduleDef);
|
|
143
|
+
if (isEnumDef(def)) {
|
|
144
|
+
moduleDef.imports.add('enumeration');
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
moduleDef.imports.add('message');
|
|
148
|
+
}
|
|
149
|
+
const typeName = findTypeName(fieldDef.type, messageDef, moduleDef);
|
|
150
|
+
codec = `${typeName}.codec()`;
|
|
132
151
|
}
|
|
133
152
|
else {
|
|
134
|
-
moduleDef.imports.add(
|
|
153
|
+
moduleDef.imports.add(codec);
|
|
135
154
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
moduleDef.imports.add(codec);
|
|
141
|
-
}
|
|
142
|
-
return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`;
|
|
143
|
-
}).join(',\n ')}
|
|
144
|
-
})
|
|
155
|
+
return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`;
|
|
156
|
+
}).join(',\n ')}
|
|
157
|
+
})
|
|
158
|
+
}
|
|
145
159
|
|
|
146
160
|
export const encode = (obj: ${messageDef.name}): Uint8Array => {
|
|
147
|
-
return encodeMessage(obj, ${messageDef.name}.codec)
|
|
161
|
+
return encodeMessage(obj, ${messageDef.name}.codec())
|
|
148
162
|
}
|
|
149
163
|
|
|
150
164
|
export const decode = (buf: Uint8Array): ${messageDef.name} => {
|
|
151
|
-
return decodeMessage(buf, ${messageDef.name}.codec)
|
|
152
|
-
}
|
|
165
|
+
return decodeMessage(buf, ${messageDef.name}.codec())
|
|
166
|
+
}`;
|
|
167
|
+
}
|
|
168
|
+
return `
|
|
169
|
+
${interfaceDef}
|
|
170
|
+
|
|
171
|
+
export namespace ${messageDef.name} {
|
|
172
|
+
${`${nested}${nested !== '' && interfaceCodecDef !== '' ? '\n' : ''}${interfaceCodecDef}`.trim()}
|
|
153
173
|
}
|
|
154
|
-
|
|
174
|
+
`.trimStart();
|
|
155
175
|
}
|
|
156
176
|
function defineModule(def) {
|
|
157
177
|
const moduleDef = {
|
|
158
178
|
imports: new Set(),
|
|
179
|
+
importedTypes: new Set(),
|
|
159
180
|
types: new Set(),
|
|
160
181
|
compiled: [],
|
|
161
182
|
globals: {}
|
|
@@ -193,14 +214,23 @@ export async function generate(source, flags) {
|
|
|
193
214
|
}
|
|
194
215
|
const def = JSON.parse(json);
|
|
195
216
|
const moduleDef = defineModule(def);
|
|
196
|
-
|
|
197
|
-
/* eslint-disable import/export */
|
|
198
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
217
|
+
let lines = [
|
|
218
|
+
'/* eslint-disable import/export */',
|
|
219
|
+
'/* eslint-disable @typescript-eslint/no-namespace */',
|
|
220
|
+
''
|
|
221
|
+
];
|
|
222
|
+
if (moduleDef.imports.size > 0) {
|
|
223
|
+
lines.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`);
|
|
224
|
+
}
|
|
225
|
+
if (moduleDef.importedTypes.size > 0) {
|
|
226
|
+
lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`);
|
|
227
|
+
}
|
|
228
|
+
lines = [
|
|
229
|
+
...lines,
|
|
230
|
+
'',
|
|
231
|
+
...moduleDef.compiled
|
|
232
|
+
];
|
|
233
|
+
const content = lines.join('\n').trim();
|
|
204
234
|
await fs.writeFile(pathWithExtension(source, '.ts'), content + '\n');
|
|
205
235
|
}
|
|
206
236
|
//# 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.0.
|
|
3
|
+
"version": "3.0.4",
|
|
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",
|
|
@@ -141,19 +141,18 @@
|
|
|
141
141
|
},
|
|
142
142
|
"scripts": {
|
|
143
143
|
"lint": "aegir lint",
|
|
144
|
-
"dep-check": "aegir dep-check
|
|
145
|
-
"build": "
|
|
146
|
-
"
|
|
147
|
-
"test": "aegir test -t node
|
|
148
|
-
"
|
|
149
|
-
"release": "semantic-release -e semantic-release-monorepo"
|
|
144
|
+
"dep-check": "aegir dep-check",
|
|
145
|
+
"build": "aegir build",
|
|
146
|
+
"test": "aegir test -t node",
|
|
147
|
+
"test:node": "aegir test -t node --cov",
|
|
148
|
+
"release": "aegir release"
|
|
150
149
|
},
|
|
151
150
|
"dependencies": {
|
|
152
151
|
"meow": "^10.1.2",
|
|
153
152
|
"protobufjs": "^6.11.2"
|
|
154
153
|
},
|
|
155
154
|
"devDependencies": {
|
|
156
|
-
"aegir": "^
|
|
155
|
+
"aegir": "^37.0.5",
|
|
157
156
|
"pbjs": "^0.0.14",
|
|
158
157
|
"protons-runtime": "^1.0.0"
|
|
159
158
|
}
|
package/src/index.ts
CHANGED
|
@@ -131,16 +131,25 @@ function compileMessage (messageDef: MessageDef, moduleDef: ModuleDef): string {
|
|
|
131
131
|
return `
|
|
132
132
|
export enum ${messageDef.name} {
|
|
133
133
|
${
|
|
134
|
-
Object.
|
|
135
|
-
return `${
|
|
134
|
+
Object.keys(messageDef.values).map(name => {
|
|
135
|
+
return `${name} = '${name}'`
|
|
136
136
|
}).join(',\n ').trim()
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
enum __${messageDef.name}Values {
|
|
141
|
+
${
|
|
142
|
+
Object.entries(messageDef.values).map(([name, value]) => {
|
|
143
|
+
return `${name} = ${value}`
|
|
144
|
+
}).join(',\n ').trim()
|
|
145
|
+
}
|
|
142
146
|
}
|
|
143
|
-
|
|
147
|
+
|
|
148
|
+
export namespace ${messageDef.name} {
|
|
149
|
+
export const codec = () => {
|
|
150
|
+
return enumeration<typeof ${messageDef.name}>(__${messageDef.name}Values)
|
|
151
|
+
}
|
|
152
|
+
}`.trim()
|
|
144
153
|
}
|
|
145
154
|
|
|
146
155
|
let nested = ''
|
|
@@ -149,11 +158,10 @@ export namespace ${messageDef.name} {
|
|
|
149
158
|
nested = '\n'
|
|
150
159
|
nested += Object.values(messageDef.nested)
|
|
151
160
|
.map(def => compileMessage(def, moduleDef).trim())
|
|
152
|
-
.join('\n')
|
|
161
|
+
.join('\n\n')
|
|
153
162
|
.split('\n')
|
|
154
163
|
.map(line => line.trim() === '' ? '' : ` ${line}`)
|
|
155
164
|
.join('\n')
|
|
156
|
-
nested += '\n'
|
|
157
165
|
}
|
|
158
166
|
|
|
159
167
|
const fields = messageDef.fields ?? {}
|
|
@@ -162,19 +170,28 @@ export namespace ${messageDef.name} {
|
|
|
162
170
|
moduleDef.imports.add('encodeMessage')
|
|
163
171
|
moduleDef.imports.add('decodeMessage')
|
|
164
172
|
moduleDef.imports.add('message')
|
|
173
|
+
moduleDef.importedTypes.add('Codec')
|
|
165
174
|
|
|
166
|
-
|
|
175
|
+
const interfaceFields = defineFields(fields, messageDef, moduleDef)
|
|
176
|
+
.join('\n ')
|
|
177
|
+
.trim()
|
|
178
|
+
|
|
179
|
+
let interfaceDef = ''
|
|
180
|
+
let interfaceCodecDef = ''
|
|
181
|
+
|
|
182
|
+
if (interfaceFields !== '') {
|
|
183
|
+
interfaceDef = `
|
|
167
184
|
export interface ${messageDef.name} {
|
|
168
185
|
${
|
|
169
186
|
defineFields(fields, messageDef, moduleDef)
|
|
170
187
|
.join('\n ')
|
|
171
188
|
.trim()
|
|
172
189
|
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export
|
|
176
|
-
|
|
177
|
-
|
|
190
|
+
}`
|
|
191
|
+
interfaceCodecDef = `
|
|
192
|
+
export const codec = (): Codec<${messageDef.name}> => {
|
|
193
|
+
return message<${messageDef.name}>({
|
|
194
|
+
${Object.entries(fields)
|
|
178
195
|
.map(([name, fieldDef]) => {
|
|
179
196
|
let codec = encoders[fieldDef.type]
|
|
180
197
|
|
|
@@ -188,28 +205,37 @@ export namespace ${messageDef.name} {${nested}
|
|
|
188
205
|
}
|
|
189
206
|
|
|
190
207
|
const typeName = findTypeName(fieldDef.type, messageDef, moduleDef)
|
|
191
|
-
codec = `${typeName}.codec`
|
|
208
|
+
codec = `${typeName}.codec()`
|
|
192
209
|
} else {
|
|
193
210
|
moduleDef.imports.add(codec)
|
|
194
211
|
}
|
|
195
212
|
|
|
196
213
|
return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`
|
|
197
|
-
}).join(',\n
|
|
198
|
-
|
|
214
|
+
}).join(',\n ')}
|
|
215
|
+
})
|
|
216
|
+
}
|
|
199
217
|
|
|
200
218
|
export const encode = (obj: ${messageDef.name}): Uint8Array => {
|
|
201
|
-
return encodeMessage(obj, ${messageDef.name}.codec)
|
|
219
|
+
return encodeMessage(obj, ${messageDef.name}.codec())
|
|
202
220
|
}
|
|
203
221
|
|
|
204
222
|
export const decode = (buf: Uint8Array): ${messageDef.name} => {
|
|
205
|
-
return decodeMessage(buf, ${messageDef.name}.codec)
|
|
223
|
+
return decodeMessage(buf, ${messageDef.name}.codec())
|
|
224
|
+
}`
|
|
206
225
|
}
|
|
226
|
+
|
|
227
|
+
return `
|
|
228
|
+
${interfaceDef}
|
|
229
|
+
|
|
230
|
+
export namespace ${messageDef.name} {
|
|
231
|
+
${`${nested}${nested !== '' && interfaceCodecDef !== '' ? '\n' : ''}${interfaceCodecDef}`.trim()}
|
|
207
232
|
}
|
|
208
|
-
|
|
233
|
+
`.trimStart()
|
|
209
234
|
}
|
|
210
235
|
|
|
211
236
|
interface ModuleDef {
|
|
212
237
|
imports: Set<string>
|
|
238
|
+
importedTypes: Set<string>
|
|
213
239
|
types: Set<string>
|
|
214
240
|
compiled: string[]
|
|
215
241
|
globals: Record<string, ClassDef>
|
|
@@ -218,6 +244,7 @@ interface ModuleDef {
|
|
|
218
244
|
function defineModule (def: ClassDef): ModuleDef {
|
|
219
245
|
const moduleDef: ModuleDef = {
|
|
220
246
|
imports: new Set(),
|
|
247
|
+
importedTypes: new Set(),
|
|
221
248
|
types: new Set(),
|
|
222
249
|
compiled: [],
|
|
223
250
|
globals: {}
|
|
@@ -269,14 +296,27 @@ export async function generate (source: string, flags: any) {
|
|
|
269
296
|
const def = JSON.parse(json)
|
|
270
297
|
const moduleDef = defineModule(def)
|
|
271
298
|
|
|
272
|
-
|
|
273
|
-
/* eslint-disable import/export */
|
|
274
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
299
|
+
let lines = [
|
|
300
|
+
'/* eslint-disable import/export */',
|
|
301
|
+
'/* eslint-disable @typescript-eslint/no-namespace */',
|
|
302
|
+
''
|
|
303
|
+
]
|
|
304
|
+
|
|
305
|
+
if (moduleDef.imports.size > 0) {
|
|
306
|
+
lines.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`)
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
if (moduleDef.importedTypes.size > 0) {
|
|
310
|
+
lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`)
|
|
311
|
+
}
|
|
275
312
|
|
|
276
|
-
|
|
313
|
+
lines = [
|
|
314
|
+
...lines,
|
|
315
|
+
'',
|
|
316
|
+
...moduleDef.compiled
|
|
317
|
+
]
|
|
277
318
|
|
|
278
|
-
|
|
279
|
-
`.trim()
|
|
319
|
+
const content = lines.join('\n').trim()
|
|
280
320
|
|
|
281
321
|
await fs.writeFile(pathWithExtension(source, '.ts'), content + '\n')
|
|
282
322
|
}
|