@aptre/protobuf-es-lite 0.1.4 → 0.1.5
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/typescript.js +18 -14
- package/package.json +7 -2
package/dist/typescript.js
CHANGED
|
@@ -30,27 +30,30 @@ function generateTs(schema) {
|
|
|
30
30
|
f.preamble(file);
|
|
31
31
|
f.print(`export const protobufPackage = "${file.proto.package}";`);
|
|
32
32
|
f.print();
|
|
33
|
+
for (const enumeration of file.enums) {
|
|
34
|
+
generateEnum(f, enumeration);
|
|
35
|
+
}
|
|
33
36
|
const messageTypes = [];
|
|
34
37
|
const dependencies = new Map();
|
|
35
38
|
function collectMessages(message) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
if (message.file === file) {
|
|
40
|
+
messageTypes.push(message);
|
|
41
|
+
const deps = new Set();
|
|
42
|
+
for (const field of message.fields) {
|
|
43
|
+
if (field.fieldKind === "message" && field.message.file === file) {
|
|
44
|
+
deps.add(field.message);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
dependencies.set(message, deps);
|
|
48
|
+
for (const nestedMessage of message.nestedMessages) {
|
|
49
|
+
collectMessages(nestedMessage);
|
|
41
50
|
}
|
|
42
|
-
}
|
|
43
|
-
dependencies.set(message, deps);
|
|
44
|
-
for (const nestedMessage of message.nestedMessages) {
|
|
45
|
-
collectMessages(nestedMessage);
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
|
-
for (const enumeration of file.enums) {
|
|
49
|
-
generateEnum(f, enumeration);
|
|
50
|
-
}
|
|
51
53
|
for (const message of file.messages) {
|
|
52
54
|
collectMessages(message);
|
|
53
55
|
}
|
|
56
|
+
// Topological sort toensure consts are declared in the right order.
|
|
54
57
|
const sortedMessageTypes = topologicalSort(messageTypes, dependencies);
|
|
55
58
|
for (const message of sortedMessageTypes) {
|
|
56
59
|
generateMessage(schema, f, message);
|
|
@@ -59,10 +62,11 @@ function generateTs(schema) {
|
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
exports.generateTs = generateTs;
|
|
65
|
+
// topologicalSort sorts the list of messages by dependency order.
|
|
62
66
|
function topologicalSort(messages, dependencies) {
|
|
63
67
|
const result = [];
|
|
64
68
|
const visited = new Set();
|
|
65
|
-
|
|
69
|
+
function visit(message) {
|
|
66
70
|
if (visited.has(message))
|
|
67
71
|
return;
|
|
68
72
|
visited.add(message);
|
|
@@ -70,7 +74,7 @@ function topologicalSort(messages, dependencies) {
|
|
|
70
74
|
visit(dep);
|
|
71
75
|
}
|
|
72
76
|
result.push(message);
|
|
73
|
-
}
|
|
77
|
+
}
|
|
74
78
|
for (const message of messages) {
|
|
75
79
|
visit(message);
|
|
76
80
|
}
|
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.1.
|
|
4
|
+
"version": "0.1.5",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"url": "git+ssh://git@github.com/aperturerobotics/protobuf-es-lite.git"
|
|
@@ -40,9 +40,13 @@
|
|
|
40
40
|
"release": "npm run release:version && npm run release:commit",
|
|
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
|
-
"format": "prettier --write './src/**/(*.ts|*.tsx|*.html|*.css|*.scss)'"
|
|
43
|
+
"format": "prettier --write './src/**/(*.ts|*.tsx|*.html|*.css|*.scss)'",
|
|
44
|
+
"precommit": "npm run format"
|
|
44
45
|
},
|
|
45
46
|
"preferUnplugged": true,
|
|
47
|
+
"pre-commit": [
|
|
48
|
+
"precommit"
|
|
49
|
+
],
|
|
46
50
|
"dependencies": {
|
|
47
51
|
"@bufbuild/protobuf": "^1.9.0",
|
|
48
52
|
"@bufbuild/protoplugin": "1.9.0"
|
|
@@ -56,6 +60,7 @@
|
|
|
56
60
|
}
|
|
57
61
|
},
|
|
58
62
|
"devDependencies": {
|
|
63
|
+
"pre-commit": "^1.2.2",
|
|
59
64
|
"prettier": "^3.2.5",
|
|
60
65
|
"rimraf": "^5.0.5",
|
|
61
66
|
"typescript": "^5.4.5"
|