Skip to content

Commit 09865d0

Browse files
committed
Unified proto/reflection/classes/static encoding API to always return a writer
1 parent f153d01 commit 09865d0

File tree

11 files changed

+30
-45
lines changed

11 files changed

+30
-45
lines changed

README.md

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Features
1616
--------
1717
* Lightning fast through [runtime code generation](#performance)
1818
* Exhaustive [browser support](#compatibility)
19-
* Managed [TypeScript support](#usage-with-typescript)
19+
* Managed [TypeScript definitions](#usage-with-typescript)
2020
* Elaborate [API documentation](#documentation)
2121
* Convenient [CLI utilities](#command-line)
2222
* Seamless [browserify integration](#browserify-integration)
@@ -102,17 +102,19 @@ protobuf.load("awesome.proto", function(err, root) {
102102
// Create a new message
103103
var message = AwesomeMessage.create({ awesomeField: "AwesomeString" });
104104

105-
// Encode a message (note that reflection encodes to a writer and we need to call finish)
105+
// Encode a message
106106
var buffer = AwesomeMessage.encode(message).finish();
107107
// ... do something with buffer
108108

109-
// Or, encode a plain object (note that reflection encodes to a writer and we need to call finish)
109+
// Or, encode a plain object
110110
var buffer = AwesomeMessage.encode({ awesomeField: "AwesomeString" }).finish();
111111
// ... do something with buffer
112112

113113
// Decode a buffer
114114
var message = AwesomeMessage.decode(buffer);
115115
// ... do something with message
116+
117+
// If your application uses length-delimited buffers, there is also encodeDelimited and decodeDelimited.
116118
});
117119
```
118120

@@ -154,17 +156,7 @@ protobuf.inherits(AwesomeMessage, root.lookup("awesomepackage.AwesomeMessage") /
154156

155157
var message = new AwesomeMessage({ awesomeField: "AwesomeString" });
156158

157-
// Encode a message (note that classes encode to a buffer directly)
158-
var buffer = AwesomeMessage.encode(message);
159-
// ... do something with buffer
160-
161-
// Or, encode a plain object (note that classes encode to a buffer directly)
162-
var buffer = AwesomeMessage.encode({ awesomeField: "AwesomeString" });
163-
// ... do something with buffer
164-
165-
// Decode a buffer
166-
var message = AwesomeMessage.decode(buffer);
167-
// ... do something with message
159+
// Continue at "Encode a message" above
168160
```
169161

170162
Custom classes are automatically populated with static `encode`, `encodeDelimited`, `decode`, `decodeDelimited` and `verify` methods and reference their reflected type via the `$type` property. Note that there are no methods (just `$type`) on instances by default as method names might conflict with field names.
@@ -358,7 +350,7 @@ $> npm run types
358350

359351
### Browserify integration
360352

361-
protobuf.js integrates nicely into your browserify build-process. There are a few possible tweaks, though:
353+
protobuf.js integrates into any browserify build-process. There are a few possible tweaks:
362354

363355
* If performance is a concern or IE8 support is required, you should make sure to exclude the browserified `buffer` module and let protobuf.js do its thing with Uint8Array/Array instead.
364356
* If you do not need int64 support, you can exclude the `long` module.

cli/targets/proto.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ function buildRoot(root) {
9393
} else
9494
break;
9595
} while (true);
96-
if (pkg.length)
97-
out.push("package " + pkg.join(".") + ";", "");
9896
out.push('syntax = "proto' + syntax + '";');
97+
if (pkg.length)
98+
out.push("", "package " + pkg.join(".") + ";");
9999

100100
buildOptions(ptr);
101101
ptr.nestedArray.forEach(build);

dist/protobuf.js

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.min.js.gz

-5 Bytes
Binary file not shown.

dist/protobuf.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

google/protobuf/descriptor.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package google.protobuf;
2-
31
syntax = "proto2";
42

3+
package google.protobuf;
4+
55
message FileDescriptorSet {
66

77
repeated FileDescriptorProto file = 1;

runtime.js

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,11 @@
66
*/
77
var runtime = exports;
88

9-
/**
10-
* @alias Reader
11-
*/
9+
/** @alias Reader */
1210
runtime.Reader = require("./src/reader");
1311

14-
/**
15-
* @alias Writer
16-
*/
12+
/** @alias Writer */
1713
runtime.Writer = require("./src/writer");
1814

19-
/**
20-
* Runtime utility.
21-
* @memberof runtime
22-
*/
15+
/** @alias util */
2316
runtime.util = require("./src/util/runtime");

src/inherits.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ function inherits(clazz, type, options) {
6161
* @function
6262
* @param {Prototype|Object} message Message to encode
6363
* @param {Writer} [writer] Writer to use
64-
* @returns {Uint8Array} Encoded message
64+
* @returns {Writer} Writer
6565
*/
6666
encode: {
6767
value: function encode(message, writer) {
68-
return this.$type.encode(message, writer).finish();
68+
return this.$type.encode(message, writer);
6969
}
7070
},
7171

@@ -75,11 +75,11 @@ function inherits(clazz, type, options) {
7575
* @function
7676
* @param {Prototype|Object} message Message to encode
7777
* @param {Writer} [writer] Writer to use
78-
* @returns {Uint8Array} Encoded message
78+
* @returns {Writer} Writer
7979
*/
8080
encodeDelimited: {
8181
value: function encodeDelimited(message, writer) {
82-
return this.$type.encodeDelimited(message, writer).finish();
82+
return this.$type.encodeDelimited(message, writer);
8383
}
8484
},
8585

0 commit comments

Comments
 (0)