protons 3.0.2 → 3.0.3
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/dist/bin/protons.js +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +56 -36
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +44 -16
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":"AAuRA,wBAAsB,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAkCzD"}
|
package/dist/src/index.js
CHANGED
|
@@ -96,54 +96,58 @@ export namespace ${messageDef.name} {
|
|
|
96
96
|
export const codec = () => {
|
|
97
97
|
return enumeration<typeof ${messageDef.name}>(${messageDef.name})
|
|
98
98
|
}
|
|
99
|
-
}
|
|
100
|
-
`;
|
|
99
|
+
}`.trim();
|
|
101
100
|
}
|
|
102
101
|
let nested = '';
|
|
103
102
|
if (messageDef.nested != null) {
|
|
104
103
|
nested = '\n';
|
|
105
104
|
nested += Object.values(messageDef.nested)
|
|
106
105
|
.map(def => compileMessage(def, moduleDef).trim())
|
|
107
|
-
.join('\n')
|
|
106
|
+
.join('\n\n')
|
|
108
107
|
.split('\n')
|
|
109
108
|
.map(line => line.trim() === '' ? '' : ` ${line}`)
|
|
110
109
|
.join('\n');
|
|
111
|
-
nested += '\n';
|
|
112
110
|
}
|
|
113
111
|
const fields = messageDef.fields ?? {};
|
|
114
112
|
// import relevant modules
|
|
115
113
|
moduleDef.imports.add('encodeMessage');
|
|
116
114
|
moduleDef.imports.add('decodeMessage');
|
|
117
115
|
moduleDef.imports.add('message');
|
|
118
|
-
|
|
116
|
+
moduleDef.importedTypes.add('Codec');
|
|
117
|
+
const interfaceFields = defineFields(fields, messageDef, moduleDef)
|
|
118
|
+
.join('\n ')
|
|
119
|
+
.trim();
|
|
120
|
+
let interfaceDef = '';
|
|
121
|
+
let interfaceCodecDef = '';
|
|
122
|
+
if (interfaceFields !== '') {
|
|
123
|
+
interfaceDef = `
|
|
119
124
|
export interface ${messageDef.name} {
|
|
120
125
|
${defineFields(fields, messageDef, moduleDef)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export
|
|
126
|
-
export const codec = () => {
|
|
126
|
+
.join('\n ')
|
|
127
|
+
.trim()}
|
|
128
|
+
}`;
|
|
129
|
+
interfaceCodecDef = `
|
|
130
|
+
export const codec = (): Codec<${messageDef.name}> => {
|
|
127
131
|
return message<${messageDef.name}>({
|
|
128
132
|
${Object.entries(fields)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
.map(([name, fieldDef]) => {
|
|
134
|
+
let codec = encoders[fieldDef.type];
|
|
135
|
+
if (codec == null) {
|
|
136
|
+
const def = findDef(fieldDef.type, messageDef, moduleDef);
|
|
137
|
+
if (isEnumDef(def)) {
|
|
138
|
+
moduleDef.imports.add('enumeration');
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
moduleDef.imports.add('message');
|
|
142
|
+
}
|
|
143
|
+
const typeName = findTypeName(fieldDef.type, messageDef, moduleDef);
|
|
144
|
+
codec = `${typeName}.codec()`;
|
|
135
145
|
}
|
|
136
146
|
else {
|
|
137
|
-
moduleDef.imports.add(
|
|
147
|
+
moduleDef.imports.add(codec);
|
|
138
148
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
moduleDef.imports.add(codec);
|
|
144
|
-
}
|
|
145
|
-
return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`;
|
|
146
|
-
}).join(',\n ')}
|
|
149
|
+
return `${fieldDef.id}: { name: '${name}', codec: ${codec}${fieldDef.options?.proto3_optional === true ? ', optional: true' : ''}${fieldDef.rule === 'repeated' ? ', repeats: true' : ''} }`;
|
|
150
|
+
}).join(',\n ')}
|
|
147
151
|
})
|
|
148
152
|
}
|
|
149
153
|
|
|
@@ -153,13 +157,20 @@ export namespace ${messageDef.name} {${nested}
|
|
|
153
157
|
|
|
154
158
|
export const decode = (buf: Uint8Array): ${messageDef.name} => {
|
|
155
159
|
return decodeMessage(buf, ${messageDef.name}.codec())
|
|
156
|
-
}
|
|
160
|
+
}`;
|
|
161
|
+
}
|
|
162
|
+
return `
|
|
163
|
+
${interfaceDef}
|
|
164
|
+
|
|
165
|
+
export namespace ${messageDef.name} {
|
|
166
|
+
${`${nested}${nested !== '' && interfaceCodecDef !== '' ? '\n' : ''}${interfaceCodecDef}`.trim()}
|
|
157
167
|
}
|
|
158
|
-
|
|
168
|
+
`.trimStart();
|
|
159
169
|
}
|
|
160
170
|
function defineModule(def) {
|
|
161
171
|
const moduleDef = {
|
|
162
172
|
imports: new Set(),
|
|
173
|
+
importedTypes: new Set(),
|
|
163
174
|
types: new Set(),
|
|
164
175
|
compiled: [],
|
|
165
176
|
globals: {}
|
|
@@ -197,14 +208,23 @@ export async function generate(source, flags) {
|
|
|
197
208
|
}
|
|
198
209
|
const def = JSON.parse(json);
|
|
199
210
|
const moduleDef = defineModule(def);
|
|
200
|
-
|
|
201
|
-
/* eslint-disable import/export */
|
|
202
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
211
|
+
let lines = [
|
|
212
|
+
'/* eslint-disable import/export */',
|
|
213
|
+
'/* eslint-disable @typescript-eslint/no-namespace */',
|
|
214
|
+
''
|
|
215
|
+
];
|
|
216
|
+
if (moduleDef.imports.size > 0) {
|
|
217
|
+
lines.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`);
|
|
218
|
+
}
|
|
219
|
+
if (moduleDef.importedTypes.size > 0) {
|
|
220
|
+
lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`);
|
|
221
|
+
}
|
|
222
|
+
lines = [
|
|
223
|
+
...lines,
|
|
224
|
+
'',
|
|
225
|
+
...moduleDef.compiled
|
|
226
|
+
];
|
|
227
|
+
const content = lines.join('\n').trim();
|
|
208
228
|
await fs.writeFile(pathWithExtension(source, '.ts'), content + '\n');
|
|
209
229
|
}
|
|
210
230
|
//# 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
package/src/index.ts
CHANGED
|
@@ -141,8 +141,7 @@ export namespace ${messageDef.name} {
|
|
|
141
141
|
export const codec = () => {
|
|
142
142
|
return enumeration<typeof ${messageDef.name}>(${messageDef.name})
|
|
143
143
|
}
|
|
144
|
-
}
|
|
145
|
-
`
|
|
144
|
+
}`.trim()
|
|
146
145
|
}
|
|
147
146
|
|
|
148
147
|
let nested = ''
|
|
@@ -151,11 +150,10 @@ export namespace ${messageDef.name} {
|
|
|
151
150
|
nested = '\n'
|
|
152
151
|
nested += Object.values(messageDef.nested)
|
|
153
152
|
.map(def => compileMessage(def, moduleDef).trim())
|
|
154
|
-
.join('\n')
|
|
153
|
+
.join('\n\n')
|
|
155
154
|
.split('\n')
|
|
156
155
|
.map(line => line.trim() === '' ? '' : ` ${line}`)
|
|
157
156
|
.join('\n')
|
|
158
|
-
nested += '\n'
|
|
159
157
|
}
|
|
160
158
|
|
|
161
159
|
const fields = messageDef.fields ?? {}
|
|
@@ -164,18 +162,26 @@ export namespace ${messageDef.name} {
|
|
|
164
162
|
moduleDef.imports.add('encodeMessage')
|
|
165
163
|
moduleDef.imports.add('decodeMessage')
|
|
166
164
|
moduleDef.imports.add('message')
|
|
165
|
+
moduleDef.importedTypes.add('Codec')
|
|
167
166
|
|
|
168
|
-
|
|
167
|
+
const interfaceFields = defineFields(fields, messageDef, moduleDef)
|
|
168
|
+
.join('\n ')
|
|
169
|
+
.trim()
|
|
170
|
+
|
|
171
|
+
let interfaceDef = ''
|
|
172
|
+
let interfaceCodecDef = ''
|
|
173
|
+
|
|
174
|
+
if (interfaceFields !== '') {
|
|
175
|
+
interfaceDef = `
|
|
169
176
|
export interface ${messageDef.name} {
|
|
170
177
|
${
|
|
171
178
|
defineFields(fields, messageDef, moduleDef)
|
|
172
179
|
.join('\n ')
|
|
173
180
|
.trim()
|
|
174
181
|
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
export
|
|
178
|
-
export const codec = () => {
|
|
182
|
+
}`
|
|
183
|
+
interfaceCodecDef = `
|
|
184
|
+
export const codec = (): Codec<${messageDef.name}> => {
|
|
179
185
|
return message<${messageDef.name}>({
|
|
180
186
|
${Object.entries(fields)
|
|
181
187
|
.map(([name, fieldDef]) => {
|
|
@@ -207,13 +213,21 @@ export namespace ${messageDef.name} {${nested}
|
|
|
207
213
|
|
|
208
214
|
export const decode = (buf: Uint8Array): ${messageDef.name} => {
|
|
209
215
|
return decodeMessage(buf, ${messageDef.name}.codec())
|
|
216
|
+
}`
|
|
210
217
|
}
|
|
218
|
+
|
|
219
|
+
return `
|
|
220
|
+
${interfaceDef}
|
|
221
|
+
|
|
222
|
+
export namespace ${messageDef.name} {
|
|
223
|
+
${`${nested}${nested !== '' && interfaceCodecDef !== '' ? '\n' : ''}${interfaceCodecDef}`.trim()}
|
|
211
224
|
}
|
|
212
|
-
|
|
225
|
+
`.trimStart()
|
|
213
226
|
}
|
|
214
227
|
|
|
215
228
|
interface ModuleDef {
|
|
216
229
|
imports: Set<string>
|
|
230
|
+
importedTypes: Set<string>
|
|
217
231
|
types: Set<string>
|
|
218
232
|
compiled: string[]
|
|
219
233
|
globals: Record<string, ClassDef>
|
|
@@ -222,6 +236,7 @@ interface ModuleDef {
|
|
|
222
236
|
function defineModule (def: ClassDef): ModuleDef {
|
|
223
237
|
const moduleDef: ModuleDef = {
|
|
224
238
|
imports: new Set(),
|
|
239
|
+
importedTypes: new Set(),
|
|
225
240
|
types: new Set(),
|
|
226
241
|
compiled: [],
|
|
227
242
|
globals: {}
|
|
@@ -273,14 +288,27 @@ export async function generate (source: string, flags: any) {
|
|
|
273
288
|
const def = JSON.parse(json)
|
|
274
289
|
const moduleDef = defineModule(def)
|
|
275
290
|
|
|
276
|
-
|
|
277
|
-
/* eslint-disable import/export */
|
|
278
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
291
|
+
let lines = [
|
|
292
|
+
'/* eslint-disable import/export */',
|
|
293
|
+
'/* eslint-disable @typescript-eslint/no-namespace */',
|
|
294
|
+
''
|
|
295
|
+
]
|
|
296
|
+
|
|
297
|
+
if (moduleDef.imports.size > 0) {
|
|
298
|
+
lines.push(`import { ${Array.from(moduleDef.imports).join(', ')} } from 'protons-runtime'`)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (moduleDef.importedTypes.size > 0) {
|
|
302
|
+
lines.push(`import type { ${Array.from(moduleDef.importedTypes).join(', ')} } from 'protons-runtime'`)
|
|
303
|
+
}
|
|
279
304
|
|
|
280
|
-
|
|
305
|
+
lines = [
|
|
306
|
+
...lines,
|
|
307
|
+
'',
|
|
308
|
+
...moduleDef.compiled
|
|
309
|
+
]
|
|
281
310
|
|
|
282
|
-
|
|
283
|
-
`.trim()
|
|
311
|
+
const content = lines.join('\n').trim()
|
|
284
312
|
|
|
285
313
|
await fs.writeFile(pathWithExtension(source, '.ts'), content + '\n')
|
|
286
314
|
}
|