@aptre/protobuf-es-lite 0.2.1 → 0.2.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/dist/binary.js +19 -6
- package/dist/json.js +8 -2
- package/dist/typescript.js +17 -11
- package/package.json +7 -2
package/dist/binary.js
CHANGED
|
@@ -12,7 +12,11 @@ function readField(target, // eslint-disable-line @typescript-eslint/no-explicit
|
|
|
12
12
|
reader, field, wireType, options) {
|
|
13
13
|
let { repeated, localName } = field;
|
|
14
14
|
if (field.oneof) {
|
|
15
|
-
|
|
15
|
+
var oneofMsg = target[field.oneof.localName];
|
|
16
|
+
if (!oneofMsg) {
|
|
17
|
+
oneofMsg = target[field.oneof.localName] = {};
|
|
18
|
+
}
|
|
19
|
+
target = oneofMsg;
|
|
16
20
|
if (target.case != localName) {
|
|
17
21
|
delete target.value;
|
|
18
22
|
}
|
|
@@ -29,18 +33,21 @@ reader, field, wireType, options) {
|
|
|
29
33
|
read = readScalarLTString;
|
|
30
34
|
}
|
|
31
35
|
if (repeated) {
|
|
32
|
-
|
|
36
|
+
var tgtArr = target[localName];
|
|
37
|
+
if (!Array.isArray(tgtArr)) {
|
|
38
|
+
tgtArr = target[localName] = [];
|
|
39
|
+
}
|
|
33
40
|
const isPacked = wireType == protobuf_1.WireType.LengthDelimited &&
|
|
34
41
|
scalarType != protobuf_1.ScalarType.STRING &&
|
|
35
42
|
scalarType != protobuf_1.ScalarType.BYTES;
|
|
36
43
|
if (isPacked) {
|
|
37
44
|
let e = reader.uint32() + reader.pos;
|
|
38
45
|
while (reader.pos < e) {
|
|
39
|
-
|
|
46
|
+
tgtArr.push(read(reader, scalarType));
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
else {
|
|
43
|
-
|
|
50
|
+
tgtArr.push(read(reader, scalarType));
|
|
44
51
|
}
|
|
45
52
|
}
|
|
46
53
|
else {
|
|
@@ -50,8 +57,11 @@ reader, field, wireType, options) {
|
|
|
50
57
|
case "message":
|
|
51
58
|
const messageType = field.T;
|
|
52
59
|
if (repeated) {
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
var tgtArr = target[localName];
|
|
61
|
+
if (!Array.isArray(tgtArr)) {
|
|
62
|
+
tgtArr = target[localName] = [];
|
|
63
|
+
}
|
|
64
|
+
tgtArr.push(readMessageField(reader, messageType.create(), messageType.fields, options, field));
|
|
55
65
|
}
|
|
56
66
|
else {
|
|
57
67
|
if ((0, is_message_js_1.isCompleteMessage)(target[localName], messageType.fields.list())) {
|
|
@@ -67,6 +77,9 @@ reader, field, wireType, options) {
|
|
|
67
77
|
break;
|
|
68
78
|
case "map":
|
|
69
79
|
let [mapKey, mapVal] = readMapEntry(field, reader, options);
|
|
80
|
+
if (typeof target[localName] !== "object") {
|
|
81
|
+
target[localName] = {};
|
|
82
|
+
}
|
|
70
83
|
// safe to assume presence of map object, oneof cannot contain repeated values
|
|
71
84
|
target[localName][mapKey] = mapVal;
|
|
72
85
|
break;
|
package/dist/json.js
CHANGED
|
@@ -165,7 +165,10 @@ function readField(target, jsonValue, field, options) {
|
|
|
165
165
|
if (!Array.isArray(jsonValue)) {
|
|
166
166
|
throw new Error(`cannot decode field ${field.name} from JSON: ${debugJsonValue(jsonValue)}`);
|
|
167
167
|
}
|
|
168
|
-
|
|
168
|
+
var targetArray = target[localName];
|
|
169
|
+
if (!Array.isArray(targetArray)) {
|
|
170
|
+
targetArray = target[localName] = [];
|
|
171
|
+
}
|
|
169
172
|
for (const jsonItem of jsonValue) {
|
|
170
173
|
if (jsonItem === null) {
|
|
171
174
|
throw new Error(`cannot decode field ${field.name} from JSON: ${debugJsonValue(jsonItem)}`);
|
|
@@ -202,7 +205,10 @@ function readField(target, jsonValue, field, options) {
|
|
|
202
205
|
if (typeof jsonValue != "object" || Array.isArray(jsonValue)) {
|
|
203
206
|
throw new Error(`cannot decode field ${field.name} from JSON: ${debugJsonValue(jsonValue)}`);
|
|
204
207
|
}
|
|
205
|
-
|
|
208
|
+
var targetMap = target[localName];
|
|
209
|
+
if (typeof targetMap !== "object") {
|
|
210
|
+
targetMap = target[localName] = {};
|
|
211
|
+
}
|
|
206
212
|
for (const [jsonMapKey, jsonMapValue] of Object.entries(jsonValue)) {
|
|
207
213
|
if (jsonMapValue === null) {
|
|
208
214
|
throw new Error(`cannot decode field ${field.name} from JSON: map value null`);
|
package/dist/typescript.js
CHANGED
|
@@ -36,24 +36,30 @@ function generateTs(schema) {
|
|
|
36
36
|
const messageTypes = [];
|
|
37
37
|
const dependencies = new Map();
|
|
38
38
|
function collectMessages(message) {
|
|
39
|
-
if (message.file
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
if (message.file !== file) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
messageTypes.push(message);
|
|
43
|
+
const deps = new Set();
|
|
44
|
+
for (const field of message.fields) {
|
|
45
|
+
if (field.fieldKind === "message" && field.message.file === file) {
|
|
46
|
+
deps.add(field.message);
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
else if (field.fieldKind === "map" &&
|
|
49
|
+
field.mapValue.kind === "message" &&
|
|
50
|
+
field.mapValue.message.file === file) {
|
|
51
|
+
deps.add(field.mapValue.message);
|
|
50
52
|
}
|
|
51
53
|
}
|
|
54
|
+
dependencies.set(message, deps);
|
|
55
|
+
for (const nestedMessage of message.nestedMessages) {
|
|
56
|
+
collectMessages(nestedMessage);
|
|
57
|
+
}
|
|
52
58
|
}
|
|
53
59
|
for (const message of file.messages) {
|
|
54
60
|
collectMessages(message);
|
|
55
61
|
}
|
|
56
|
-
// Topological sort
|
|
62
|
+
// Topological sort to ensure consts are declared in the right order.
|
|
57
63
|
const sortedMessageTypes = topologicalSort(messageTypes, dependencies);
|
|
58
64
|
for (const message of sortedMessageTypes) {
|
|
59
65
|
generateMessage(schema, f, message);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aptre/protobuf-es-lite",
|
|
3
3
|
"description": "Lightweight Protobuf codegen for TypeScript and JavaScript.",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.4",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"url": "git+ssh://git@github.com/aperturerobotics/protobuf-es-lite.git"
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"typecheck": "tsc --noEmit --project tsconfig.json --outDir ./dist",
|
|
42
42
|
"example": "npm run build && protoc --plugin=./bin/protoc-gen-es-lite --es-lite_out=. --es-lite_opt target=ts --es-lite_opt ts_nocheck=false ./example/example.proto",
|
|
43
43
|
"format": "prettier --write './src/**/(*.ts|*.tsx|*.html|*.css|*.scss)'",
|
|
44
|
-
"precommit": "
|
|
44
|
+
"precommit": "lint-staged"
|
|
45
45
|
},
|
|
46
46
|
"preferUnplugged": true,
|
|
47
47
|
"pre-commit": [
|
|
@@ -60,9 +60,14 @@
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
+
"lint-staged": ">=10",
|
|
63
64
|
"pre-commit": "^1.2.2",
|
|
64
65
|
"prettier": "^3.2.5",
|
|
65
66
|
"rimraf": "^5.0.5",
|
|
66
67
|
"typescript": "^5.4.5"
|
|
68
|
+
},
|
|
69
|
+
"lint-staged": {
|
|
70
|
+
"package.json": "prettier --write",
|
|
71
|
+
"./src/**/(*.ts|*.tsx|*.html|*.css|*.scss)": "prettier --write"
|
|
67
72
|
}
|
|
68
73
|
}
|