protons 7.6.1 → 8.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.
Files changed (60) hide show
  1. package/README.md +8 -6
  2. package/dist/bin/protons.js +1 -1
  3. package/dist/src/fields/array-field.d.ts +18 -0
  4. package/dist/src/fields/array-field.d.ts.map +1 -0
  5. package/dist/src/fields/array-field.js +83 -0
  6. package/dist/src/fields/array-field.js.map +1 -0
  7. package/dist/src/fields/enum-field.d.ts +9 -0
  8. package/dist/src/fields/enum-field.d.ts.map +1 -0
  9. package/dist/src/fields/enum-field.js +21 -0
  10. package/dist/src/fields/enum-field.js.map +1 -0
  11. package/dist/src/fields/field.d.ts +45 -0
  12. package/dist/src/fields/field.d.ts.map +1 -0
  13. package/dist/src/fields/field.js +147 -0
  14. package/dist/src/fields/field.js.map +1 -0
  15. package/dist/src/fields/map-field.d.ts +22 -0
  16. package/dist/src/fields/map-field.d.ts.map +1 -0
  17. package/dist/src/fields/map-field.js +83 -0
  18. package/dist/src/fields/map-field.js.map +1 -0
  19. package/dist/src/fields/message-field.d.ts +9 -0
  20. package/dist/src/fields/message-field.d.ts.map +1 -0
  21. package/dist/src/fields/message-field.js +23 -0
  22. package/dist/src/fields/message-field.js.map +1 -0
  23. package/dist/src/index.d.ts +190 -16
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +8 -895
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/types/enum.d.ts +21 -0
  28. package/dist/src/types/enum.d.ts.map +1 -0
  29. package/dist/src/types/enum.js +87 -0
  30. package/dist/src/types/enum.js.map +1 -0
  31. package/dist/src/types/index.d.ts +20 -0
  32. package/dist/src/types/index.d.ts.map +1 -0
  33. package/dist/src/types/index.js +2 -0
  34. package/dist/src/types/index.js.map +1 -0
  35. package/dist/src/types/message.d.ts +49 -0
  36. package/dist/src/types/message.d.ts.map +1 -0
  37. package/dist/src/types/message.js +478 -0
  38. package/dist/src/types/message.js.map +1 -0
  39. package/dist/src/types/module.d.ts +30 -0
  40. package/dist/src/types/module.d.ts.map +1 -0
  41. package/dist/src/types/module.js +184 -0
  42. package/dist/src/types/module.js.map +1 -0
  43. package/dist/src/types/primitive.d.ts +13 -0
  44. package/dist/src/types/primitive.d.ts.map +1 -0
  45. package/dist/src/types/primitive.js +174 -0
  46. package/dist/src/types/primitive.js.map +1 -0
  47. package/dist/typedoc-urls.json +2 -4
  48. package/package.json +104 -16
  49. package/src/fields/array-field.ts +109 -0
  50. package/src/fields/enum-field.ts +30 -0
  51. package/src/fields/field.ts +201 -0
  52. package/src/fields/map-field.ts +107 -0
  53. package/src/fields/message-field.ts +29 -0
  54. package/src/index.ts +9 -1114
  55. package/src/types/enum.ts +112 -0
  56. package/src/types/index.ts +21 -0
  57. package/src/types/message.ts +558 -0
  58. package/src/types/module.ts +234 -0
  59. package/src/types/primitive.ts +215 -0
  60. package/LICENSE +0 -4
@@ -0,0 +1,184 @@
1
+ import { NoMessagesFoundError } from 'protons-runtime';
2
+ import { Enum, isEnumDef } from "./enum.js";
3
+ import { Message } from "./message.js";
4
+ import { Primitive } from "./primitive.js";
5
+ const types = {
6
+ bool: 'boolean',
7
+ bytes: 'Uint8Array',
8
+ double: 'number',
9
+ fixed32: 'number',
10
+ fixed64: 'bigint',
11
+ float: 'number',
12
+ int32: 'number',
13
+ int64: 'bigint',
14
+ sfixed32: 'number',
15
+ sfixed64: 'bigint',
16
+ sint32: 'number',
17
+ sint64: 'bigint',
18
+ string: 'string',
19
+ uint32: 'number',
20
+ uint64: 'bigint'
21
+ };
22
+ export class Module {
23
+ imports;
24
+ types;
25
+ eslintIgnores;
26
+ flags;
27
+ globals;
28
+ constructor(def, flags) {
29
+ this.imports = new Map();
30
+ this.flags = flags;
31
+ this.types = {};
32
+ this.globals = [];
33
+ this.eslintIgnores = [];
34
+ Object.entries(types).forEach(([pbType, jsType]) => {
35
+ this.types[pbType] = new Primitive(pbType, jsType);
36
+ });
37
+ const defs = def.nested;
38
+ if (defs == null) {
39
+ throw new NoMessagesFoundError('No top-level messages found in protobuf');
40
+ }
41
+ for (const [name, def] of Object.entries(defs)) {
42
+ let type;
43
+ if (isEnumDef(def)) {
44
+ type = new Enum(name, name, def);
45
+ }
46
+ else {
47
+ type = new Message(name, name, def, this);
48
+ }
49
+ this.globals.push(type);
50
+ this.types[name] = type;
51
+ }
52
+ this.globals.forEach(type => type.init());
53
+ }
54
+ addImport(module, symbol, alias) {
55
+ const defs = this._findDefs(module);
56
+ for (const def of defs) {
57
+ // check if we already have a definition for this symbol
58
+ if (def.symbol === symbol) {
59
+ if (alias !== def.alias) {
60
+ throw new Error(`Type symbol ${symbol} imported from ${module} with alias ${def.alias} does not match alias ${alias}`);
61
+ }
62
+ // if it was a type before it's not now
63
+ def.type = false;
64
+ return;
65
+ }
66
+ }
67
+ defs.push({
68
+ symbol,
69
+ alias,
70
+ type: false
71
+ });
72
+ }
73
+ addTypeImport(module, symbol, alias) {
74
+ const defs = this._findDefs(module);
75
+ for (const def of defs) {
76
+ // check if we already have a definition for this symbol
77
+ if (def.symbol === symbol) {
78
+ if (alias !== def.alias) {
79
+ throw new Error(`Type symbol ${symbol} imported from ${module} with alias ${def.alias} does not match alias ${alias}`);
80
+ }
81
+ return;
82
+ }
83
+ }
84
+ defs.push({
85
+ symbol,
86
+ alias,
87
+ type: true
88
+ });
89
+ }
90
+ addEslintIgnore(rule) {
91
+ if (this.eslintIgnores.includes(rule)) {
92
+ return;
93
+ }
94
+ this.eslintIgnores.push(rule);
95
+ }
96
+ _findDefs(module) {
97
+ let defs = this.imports.get(module);
98
+ if (defs == null) {
99
+ defs = [];
100
+ this.imports.set(module, defs);
101
+ }
102
+ return defs;
103
+ }
104
+ compile() {
105
+ const compiled = this.globals.map(def => def.compile(this)).flat();
106
+ // TODO: make these conditional
107
+ // const ignores: string[] = [
108
+ // '/* eslint-disable import/export */',
109
+ // '/* eslint-disable complexity */',
110
+ // '/* eslint-disable @typescript-eslint/no-namespace */',
111
+ // '/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */',
112
+ // '/* eslint-disable @typescript-eslint/no-empty-interface */',
113
+ // '/* eslint-disable import/consistent-type-specifier-style */',
114
+ // '/* eslint-disable @typescript-eslint/no-unused-vars */',
115
+ // '/* eslint-disable require-yield */'
116
+ // ]
117
+ const imports = [];
118
+ const importedModules = Array.from([...this.imports.entries()])
119
+ .sort((a, b) => {
120
+ return a[0].localeCompare(b[0]);
121
+ })
122
+ .sort((a, b) => {
123
+ const aAllTypes = a[1].reduce((acc, curr) => {
124
+ return acc && curr.type;
125
+ }, true);
126
+ const bAllTypes = b[1].reduce((acc, curr) => {
127
+ return acc && curr.type;
128
+ }, true);
129
+ if (aAllTypes && !bAllTypes) {
130
+ return 1;
131
+ }
132
+ if (!aAllTypes && bAllTypes) {
133
+ return -1;
134
+ }
135
+ return 0;
136
+ });
137
+ // add imports
138
+ for (const imp of importedModules) {
139
+ const symbols = imp[1]
140
+ .filter(imp => !imp.type)
141
+ .sort((a, b) => {
142
+ return a.symbol.localeCompare(b.symbol);
143
+ }).map(imp => {
144
+ return `${imp.symbol}${imp.alias != null ? ` as ${imp.alias}` : ''}`;
145
+ }).join(', ');
146
+ if (symbols.length > 0) {
147
+ imports.push(`import { ${symbols} } from '${imp[0]}'`);
148
+ }
149
+ }
150
+ // add type imports
151
+ for (const imp of importedModules) {
152
+ const symbols = imp[1]
153
+ .filter(imp => imp.type)
154
+ .sort((a, b) => {
155
+ return a.symbol.localeCompare(b.symbol);
156
+ }).map(imp => {
157
+ return `${imp.symbol}${imp.alias != null ? ` as ${imp.alias}` : ''}`;
158
+ }).join(', ');
159
+ if (symbols.length > 0) {
160
+ imports.push(`import type { ${symbols} } from '${imp[0]}'`);
161
+ }
162
+ }
163
+ return [
164
+ ...this.eslintIgnores.map(rule => `/* eslint-disable ${rule} */`),
165
+ '',
166
+ ...imports,
167
+ '',
168
+ ...compiled
169
+ ]
170
+ .join('\n')
171
+ .split('\n')
172
+ .map((line) => line.trim() === '' ? '' : line)
173
+ .join('\n')
174
+ .trim();
175
+ }
176
+ findType(jsType, override) {
177
+ const type = this.types[override ?? jsType];
178
+ if (type == null) {
179
+ throw new Error(`Type for "${jsType}"${override == null ? '' : ` (overridden to "${override}")`} not found in ${[...Object.keys(this.types)].join(', ')}`);
180
+ }
181
+ return type;
182
+ }
183
+ }
184
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/types/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Type } from './index.ts';
2
+ import type { Field } from '../fields/field.ts';
3
+ export declare class Primitive implements Type {
4
+ jsType: string;
5
+ pbType: string;
6
+ constructor(pbType: string, jsType: string);
7
+ init(): void;
8
+ getDecoder(field: Field): string;
9
+ getStreamingDecoder(field: Field, prefix: string): string;
10
+ getValueTest(field: Field, accessor: string): string;
11
+ getEncoder(field: Field, accessor: string): string;
12
+ }
13
+ //# sourceMappingURL=primitive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../../src/types/primitive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAqK/C,qBAAa,SAAU,YAAW,IAAI;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;gBAER,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK3C,IAAI,IAAK,IAAI;IAIb,UAAU,CAAE,KAAK,EAAE,KAAK,GAAG,MAAM;IAIjC,mBAAmB,CAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAc1D,YAAY,CAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAarD,UAAU,CAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CAGpD"}
@@ -0,0 +1,174 @@
1
+ import { ArrayField } from "../fields/array-field.js";
2
+ const decoderGenerators = {
3
+ bool: () => 'reader.bool()',
4
+ bytes: () => 'reader.bytes()',
5
+ double: () => 'reader.double()',
6
+ fixed32: () => 'reader.fixed32()',
7
+ fixed64: (jsTypeOverride) => {
8
+ if (jsTypeOverride === 'number') {
9
+ return 'reader.fixed64Number()';
10
+ }
11
+ if (jsTypeOverride === 'string') {
12
+ return 'reader.fixed64String()';
13
+ }
14
+ return 'reader.fixed64()';
15
+ },
16
+ float: () => 'reader.float()',
17
+ int32: () => 'reader.int32()',
18
+ int64: (jsTypeOverride) => {
19
+ if (jsTypeOverride === 'number') {
20
+ return 'reader.int64Number()';
21
+ }
22
+ if (jsTypeOverride === 'string') {
23
+ return 'reader.int64String()';
24
+ }
25
+ return 'reader.int64()';
26
+ },
27
+ sfixed32: () => 'reader.sfixed32()',
28
+ sfixed64: (jsTypeOverride) => {
29
+ if (jsTypeOverride === 'number') {
30
+ return 'reader.sfixed64Number()';
31
+ }
32
+ if (jsTypeOverride === 'string') {
33
+ return 'reader.sfixed64String()';
34
+ }
35
+ return 'reader.sfixed64()';
36
+ },
37
+ sint32: () => 'reader.sint32()',
38
+ sint64: (jsTypeOverride) => {
39
+ if (jsTypeOverride === 'number') {
40
+ return 'reader.sint64Number()';
41
+ }
42
+ if (jsTypeOverride === 'string') {
43
+ return 'reader.sint64String()';
44
+ }
45
+ return 'reader.sint64()';
46
+ },
47
+ string: () => 'reader.string()',
48
+ uint32: () => 'reader.uint32()',
49
+ uint64: (jsTypeOverride) => {
50
+ if (jsTypeOverride === 'number') {
51
+ return 'reader.uint64Number()';
52
+ }
53
+ if (jsTypeOverride === 'string') {
54
+ return 'reader.uint64String()';
55
+ }
56
+ return 'reader.uint64()';
57
+ }
58
+ };
59
+ const encoderGenerators = {
60
+ bool: (val) => `w.bool(${val})`,
61
+ bytes: (val) => `w.bytes(${val})`,
62
+ double: (val) => `w.double(${val})`,
63
+ fixed32: (val) => `w.fixed32(${val})`,
64
+ fixed64: (val, jsTypeOverride) => {
65
+ if (jsTypeOverride === 'number') {
66
+ return `w.fixed64Number(${val})`;
67
+ }
68
+ if (jsTypeOverride === 'string') {
69
+ return `w.fixed64String(${val})`;
70
+ }
71
+ return `w.fixed64(${val})`;
72
+ },
73
+ float: (val) => `w.float(${val})`,
74
+ int32: (val) => `w.int32(${val})`,
75
+ int64: (val, jsTypeOverride) => {
76
+ if (jsTypeOverride === 'number') {
77
+ return `w.int64Number(${val})`;
78
+ }
79
+ if (jsTypeOverride === 'string') {
80
+ return `w.int64String(${val})`;
81
+ }
82
+ return `w.int64(${val})`;
83
+ },
84
+ sfixed32: (val) => `w.sfixed32(${val})`,
85
+ sfixed64: (val, jsTypeOverride) => {
86
+ if (jsTypeOverride === 'number') {
87
+ return `w.sfixed64Number(${val})`;
88
+ }
89
+ if (jsTypeOverride === 'string') {
90
+ return `w.sfixed64String(${val})`;
91
+ }
92
+ return `w.sfixed64(${val})`;
93
+ },
94
+ sint32: (val) => `w.sint32(${val})`,
95
+ sint64: (val, jsTypeOverride) => {
96
+ if (jsTypeOverride === 'number') {
97
+ return `w.sint64Number(${val})`;
98
+ }
99
+ if (jsTypeOverride === 'string') {
100
+ return `w.sint64String(${val})`;
101
+ }
102
+ return `w.sint64(${val})`;
103
+ },
104
+ string: (val) => `w.string(${val})`,
105
+ uint32: (val) => `w.uint32(${val})`,
106
+ uint64: (val, jsTypeOverride) => {
107
+ if (jsTypeOverride === 'number') {
108
+ return `w.uint64Number(${val})`;
109
+ }
110
+ if (jsTypeOverride === 'string') {
111
+ return `w.uint64String(${val})`;
112
+ }
113
+ return `w.uint64(${val})`;
114
+ }
115
+ };
116
+ const defaultValueTestGenerators = {
117
+ bool: (field) => `(${field} != null && ${field} !== false)`,
118
+ bytes: (field) => `(${field} != null && ${field}.byteLength > 0)`,
119
+ double: (field) => `(${field} != null && ${field} !== 0)`,
120
+ fixed32: (field) => `(${field} != null && ${field} !== 0)`,
121
+ fixed64: (field) => `(${field} != null && ${field} !== 0n)`,
122
+ float: (field) => `(${field} != null && ${field} !== 0)`,
123
+ int32: (field) => `(${field} != null && ${field} !== 0)`,
124
+ int64: (field) => `(${field} != null && ${field} !== 0n)`,
125
+ sfixed32: (field) => `(${field} != null && ${field} !== 0)`,
126
+ sfixed64: (field) => `(${field} != null && ${field} !== 0n)`,
127
+ sint32: (field) => `(${field} != null && ${field} !== 0)`,
128
+ sint64: (field) => `(${field} != null && ${field} !== 0n)`,
129
+ string: (field) => `(${field} != null && ${field} !== '')`,
130
+ uint32: (field) => `(${field} != null && ${field} !== 0)`,
131
+ uint64: (field) => `(${field} != null && ${field} !== 0n)`
132
+ };
133
+ const defaultValueTestGeneratorsJsTypeOverrides = {
134
+ number: (field) => `(${field} != null && ${field} !== 0)`,
135
+ string: (field) => `(${field} != null && ${field} !== '')`
136
+ };
137
+ export class Primitive {
138
+ jsType;
139
+ pbType;
140
+ constructor(pbType, jsType) {
141
+ this.jsType = jsType;
142
+ this.pbType = pbType;
143
+ }
144
+ init() {
145
+ }
146
+ getDecoder(field) {
147
+ return decoderGenerators[this.pbType](field.jsTypeOverride);
148
+ }
149
+ getStreamingDecoder(field, prefix) {
150
+ const generator = decoderGenerators[this.pbType](field.jsTypeOverride);
151
+ if (field instanceof ArrayField) {
152
+ return `yield {
153
+ field: ${prefix},
154
+ index: obj.${field.name},
155
+ value: ${generator}
156
+ }`;
157
+ }
158
+ return generator;
159
+ }
160
+ getValueTest(field, accessor) {
161
+ // proto3 singular fields should only be written out if they are not the default value
162
+ if (!field.optional && !field.proto2Required) {
163
+ if (field.jsTypeOverride != null) {
164
+ return defaultValueTestGeneratorsJsTypeOverrides[field.jsTypeOverride](accessor);
165
+ }
166
+ return defaultValueTestGenerators[field.type](accessor);
167
+ }
168
+ return `${accessor} != null`;
169
+ }
170
+ getEncoder(field, accessor) {
171
+ return encoderGenerators[this.pbType](accessor, field.jsTypeOverride);
172
+ }
173
+ }
174
+ //# sourceMappingURL=primitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../../src/types/primitive.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  {
2
- "CODEC_TYPES": "https://ipfs.github.io/protons/enums/protons.CODEC_TYPES.html",
3
- ".:CODEC_TYPES": "https://ipfs.github.io/protons/enums/protons.CODEC_TYPES.html",
4
- "CodeError": "https://ipfs.github.io/protons/classes/protons.CodeError.html",
5
- ".:CodeError": "https://ipfs.github.io/protons/classes/protons.CodeError.html",
2
+ "Flags": "https://ipfs.github.io/protons/interfaces/protons.Flags.html",
3
+ ".:Flags": "https://ipfs.github.io/protons/interfaces/protons.Flags.html",
6
4
  "generate": "https://ipfs.github.io/protons/functions/protons.generate.html",
7
5
  ".:generate": "https://ipfs.github.io/protons/functions/protons.generate.html"
8
6
  }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "protons",
3
- "version": "7.6.1",
3
+ "version": "8.0.0",
4
4
  "description": "Protobuf to ts transpiler",
5
5
  "license": "Apache-2.0 OR MIT",
6
- "homepage": "https://github.com/ipfs/protons/tree/master/packages/protons#readme",
6
+ "homepage": "https://github.com/ipfs/protons/tree/main/packages/protons#readme",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/ipfs/protons.git"
@@ -32,12 +32,98 @@
32
32
  "import": "./dist/src/index.js"
33
33
  }
34
34
  },
35
- "eslintConfig": {
36
- "extends": "ipfs",
37
- "parserOptions": {
38
- "project": true,
39
- "sourceType": "module"
40
- }
35
+ "release": {
36
+ "branches": [
37
+ "main"
38
+ ],
39
+ "plugins": [
40
+ [
41
+ "@semantic-release/commit-analyzer",
42
+ {
43
+ "preset": "conventionalcommits",
44
+ "releaseRules": [
45
+ {
46
+ "breaking": true,
47
+ "release": "major"
48
+ },
49
+ {
50
+ "revert": true,
51
+ "release": "patch"
52
+ },
53
+ {
54
+ "type": "feat",
55
+ "release": "minor"
56
+ },
57
+ {
58
+ "type": "fix",
59
+ "release": "patch"
60
+ },
61
+ {
62
+ "type": "docs",
63
+ "release": "patch"
64
+ },
65
+ {
66
+ "type": "test",
67
+ "release": "patch"
68
+ },
69
+ {
70
+ "type": "deps",
71
+ "release": "patch"
72
+ },
73
+ {
74
+ "scope": "no-release",
75
+ "release": false
76
+ }
77
+ ]
78
+ }
79
+ ],
80
+ [
81
+ "@semantic-release/release-notes-generator",
82
+ {
83
+ "preset": "conventionalcommits",
84
+ "presetConfig": {
85
+ "types": [
86
+ {
87
+ "type": "feat",
88
+ "section": "Features"
89
+ },
90
+ {
91
+ "type": "fix",
92
+ "section": "Bug Fixes"
93
+ },
94
+ {
95
+ "type": "chore",
96
+ "section": "Trivial Changes"
97
+ },
98
+ {
99
+ "type": "docs",
100
+ "section": "Documentation"
101
+ },
102
+ {
103
+ "type": "deps",
104
+ "section": "Dependencies"
105
+ },
106
+ {
107
+ "type": "test",
108
+ "section": "Tests"
109
+ }
110
+ ]
111
+ }
112
+ }
113
+ ],
114
+ "@semantic-release/changelog",
115
+ "@semantic-release/npm",
116
+ "@semantic-release/github",
117
+ [
118
+ "@semantic-release/git",
119
+ {
120
+ "assets": [
121
+ "CHANGELOG.md",
122
+ "package.json"
123
+ ]
124
+ }
125
+ ]
126
+ ]
41
127
  },
42
128
  "scripts": {
43
129
  "clean": "aegir clean",
@@ -46,19 +132,21 @@
46
132
  "build": "aegir build",
47
133
  "test": "aegir test -t node",
48
134
  "test:node": "aegir test -t node --cov",
49
- "release": "aegir release"
135
+ "release": "aegir release",
136
+ "generate": "node ./dist/bin/protons.js test/fixtures/*.proto"
50
137
  },
51
138
  "dependencies": {
52
- "meow": "^13.1.0",
53
- "protobufjs-cli": "^1.0.0",
139
+ "meow": "^14.1.0",
140
+ "protobufjs-cli": "^1.2.0",
54
141
  "protons-runtime": "^5.0.0"
55
142
  },
56
143
  "devDependencies": {
57
- "aegir": "^47.0.5",
58
- "long": "^5.2.0",
144
+ "aegir": "^47.0.26",
145
+ "it-all": "^3.0.9",
146
+ "long": "^5.3.2",
59
147
  "pbjs": "^0.0.14",
60
- "protobufjs": "^7.0.0",
61
- "uint8arraylist": "^2.4.3",
62
- "uint8arrays": "^5.0.1"
148
+ "protobufjs": "^7.5.4",
149
+ "uint8arraylist": "^2.4.8",
150
+ "uint8arrays": "^5.1.0"
63
151
  }
64
152
  }
@@ -0,0 +1,109 @@
1
+ import { Enum } from '../types/enum.ts'
2
+ import { Message } from '../types/message.ts'
3
+ import { codecTypes, Field } from './field.ts'
4
+ import type { FieldDef } from './field.ts'
5
+ import type { Parent, Type } from '../types/index.ts'
6
+
7
+ export interface ArrayFieldDef extends FieldDef {
8
+ rule: 'repeated'
9
+ }
10
+
11
+ export function isArrayFieldDef (obj?: any): obj is ArrayFieldDef {
12
+ return obj?.rule === 'repeated'
13
+ }
14
+
15
+ export class ArrayField extends Field {
16
+ private lengthLimit?: number
17
+
18
+ constructor (name: string, def: ArrayFieldDef, parent: Parent) {
19
+ super(name, def, parent)
20
+
21
+ this.lengthLimit = def.options?.['(protons.options).limit']
22
+ }
23
+
24
+ getInterfaceField (parent: Parent, indent = ''): string {
25
+ return `${super.getInterfaceField(parent, indent)}[]`
26
+ }
27
+
28
+ getDefaultField (parent: Parent): string {
29
+ return `${this.name}: []`
30
+ }
31
+
32
+ getEncoder (parent: Parent): string {
33
+ const type = parent.findType(this.type)
34
+ let id = (this.id << 3) | codecTypes[this.type]
35
+
36
+ if (type instanceof Message) {
37
+ id = (this.id << 3) | codecTypes.message
38
+ }
39
+
40
+ if (type instanceof Enum) {
41
+ id = (this.id << 3) | codecTypes.enum
42
+ }
43
+
44
+ return `
45
+ if (obj.${this.name} != null) {
46
+ for (const value of obj.${this.name}) {
47
+ w.uint32(${id})
48
+ ${type.getEncoder(this, 'value')}
49
+ }
50
+ }`
51
+ }
52
+
53
+ getDecoder (parent: Parent): string {
54
+ parent.addImport('protons-runtime', 'MaxLengthError')
55
+
56
+ let limit = `
57
+ if (opts.limits?.${this.name} != null && obj.${this.name}.length === opts.limits.${this.name}) {
58
+ throw new MaxLengthError('Decode error - repeated field "${this.name}" had too many elements')
59
+ }
60
+ `
61
+
62
+ if (this.lengthLimit != null) {
63
+ limit += `
64
+ if (obj.${this.name}.length === ${this.lengthLimit}) {
65
+ throw new MaxLengthError('Decode error - repeated field "${this.name}" had too many elements')
66
+ }
67
+ `
68
+ }
69
+
70
+ const type: Type = parent.findType(this.type)
71
+
72
+ return `case ${this.id}: {${limit}
73
+ obj.${this.name}.push(${type.getDecoder(this)})
74
+ break
75
+ }`
76
+ }
77
+
78
+ getStreamingDecoder (parent: Parent): string {
79
+ parent.addImport('protons-runtime', 'MaxLengthError')
80
+
81
+ let limit = `
82
+ if (opts.limits?.${this.name} != null && obj.${this.name} === opts.limits.${this.name}) {
83
+ throw new MaxLengthError('Streaming decode error - repeated field "${this.name}" had too many elements')
84
+ }
85
+ `
86
+
87
+ if (this.lengthLimit != null) {
88
+ limit += `
89
+ if (obj.${this.name} === ${this.lengthLimit}) {
90
+ throw new MaxLengthError('Streaming decode error - repeated field "${this.name}" had too many elements')
91
+ }
92
+ `
93
+ }
94
+
95
+ const type: Type = parent.findType(this.type)
96
+
97
+ return `case ${this.id}: {${limit}
98
+ ${type.getStreamingDecoder(this, `\`\${prefix != null ? \`\${prefix}\` : '$'}.${this.name}[]\``, ' ')}
99
+
100
+ obj.${this.name}++
101
+
102
+ break
103
+ }`
104
+ }
105
+
106
+ getLimitField (): string {
107
+ return `${this.name}: ${this.lengthLimit ?? 0}`
108
+ }
109
+ }