Skip to content

Commit 11393ea

Browse files
authored
chore: Renovate README.md (#1995)
1 parent 722b635 commit 11393ea

File tree

1 file changed

+50
-63
lines changed

1 file changed

+50
-63
lines changed

README.md

+50-63
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1-
<h1><p align="center"><img alt="protobuf.js" src="https://github.com/dcodeIO/protobuf.js/raw/master/pbjs.png" width="120" height="104" /></p></h1>
2-
<p align="center"><a href="https://npmjs.org/package/protobufjs"><img src="https://img.shields.io/npm/v/protobufjs.svg" alt=""></a> <a href="https://travis-ci.org/dcodeIO/protobuf.js"><img src="https://travis-ci.org/dcodeIO/protobuf.js.svg?branch=master" alt=""></a> <a href="https://npmjs.org/package/protobufjs"><img src="https://img.shields.io/npm/dm/protobufjs.svg" alt=""></a> <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dcode%40dcode.io&item_name=Open%20Source%20Software%20Donation&item_number=dcodeIO%2Fprotobuf.js"><img alt="donate ❤" src="https://img.shields.io/badge/donate-❤-ff2244.svg"></a></p>
1+
<h1><p align="center"><img alt="protobuf.js" src="https://github.com/protobufjs/protobuf.js/raw/master/pbjs.svg" height="100" /><br/>protobuf.js</p></h1>
2+
<p align="center">
3+
<a href="https://github.com/protobufjs/protobuf.js/actions/workflows/test.yml"><img src="https://img.shields.io/github/actions/workflow/status/protobufjs/protobuf.js/test.yml?branch=master&label=build&logo=github" alt=""></a>
4+
<a href="https://github.com/protobufjs/protobuf.js/actions/workflows/release.yaml"><img src="https://img.shields.io/github/actions/workflow/status/protobufjs/protobuf.js/release.yaml?branch=master&label=release&logo=github" alt=""></a>
5+
<a href="https://npmjs.org/package/protobufjs"><img src="https://img.shields.io/npm/v/protobufjs.svg?logo=npm" alt=""></a>
6+
<a href="https://npmjs.org/package/protobufjs"><img src="https://img.shields.io/npm/dm/protobufjs.svg?label=downloads&logo=npm" alt=""></a>
7+
<a href="https://www.jsdelivr.com/package/npm/protobufjs"><img src="https://img.shields.io/jsdelivr/npm/hm/protobufjs?label=requests&logo=jsdelivr" alt=""></a>
8+
</p>
39

4-
**Protocol Buffers** are a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more, originally designed at Google ([see](https://developers.google.com/protocol-buffers/)).
10+
**Protocol Buffers** are a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more, originally designed at Google ([see](https://protobuf.dev/)).
511

6-
**protobuf.js** is a pure JavaScript implementation with [TypeScript](https://www.typescriptlang.org) support for [node.js](https://nodejs.org) and the browser. It's easy to use, blazingly fast and works out of the box with [.proto](https://developers.google.com/protocol-buffers/docs/proto) files!
12+
**protobuf.js** is a pure JavaScript implementation with [TypeScript](https://www.typescriptlang.org) support for [Node.js](https://nodejs.org) and the browser. It's easy to use, does not sacrifice on performance, has good conformance and works out of the box with [.proto](https://protobuf.dev/programming-guides/proto3/) files!
713

814
Contents
915
--------
@@ -42,76 +48,57 @@ Contents
4248
Installation
4349
---------------
4450

45-
### node.js
51+
### Node.js
4652

47-
```
48-
$> npm install protobufjs [--save --save-prefix=~]
53+
```sh
54+
npm install protobufjs --save
4955
```
5056

5157
```js
58+
// Static code + Reflection + .proto parser
5259
var protobuf = require("protobufjs");
53-
```
5460

55-
The command line utility lives in the protobufjs-cli package and must be installed separately:
61+
// Static code + Reflection
62+
var protobuf = require("protobufjs/light");
5663

64+
// Static code only
65+
var protobuf = require("protobufjs/minimal");
5766
```
58-
$> npm install protobufjs-cli [--save --save-prefix=~]
59-
```
60-
61-
**Note** that this library's versioning scheme is not semver-compatible for historical reasons. For guaranteed backward compatibility, always depend on `~6.A.B` instead of `^6.A.B` (hence the `--save-prefix` above).
62-
63-
### Browsers
6467

65-
Development:
68+
The optional [command line utility](./cli/) to generate static code and reflection bundles lives in the `protobufjs-cli` package and can be installed separately:
6669

67-
```
68-
<script src="//cdn.jsdelivr.net/npm/protobufjs@7.X.X/dist/protobuf.js"></script>
70+
```sh
71+
npm install protobufjs-cli --save-dev
6972
```
7073

71-
Production:
74+
### Browsers
7275

73-
```
76+
Pick the variant matching your needs and replace the version tag with the exact [release](https://github.com/protobufjs/protobuf.js/tags) your project depends upon. For example, to use the minified full variant:
77+
78+
```html
7479
<script src="//cdn.jsdelivr.net/npm/protobufjs@7.X.X/dist/protobuf.min.js"></script>
7580
```
7681

77-
**Remember** to replace the version tag with the exact [release](https://github.com/protobufjs/protobuf.js/tags) your project depends upon.
78-
79-
The library supports CommonJS and AMD loaders and also exports globally as `protobuf`.
80-
81-
### Distributions
82-
83-
Where bundle size is a factor, there are additional stripped-down versions of the [full library][dist-full] (~19kb gzipped) available that exclude certain functionality:
84-
85-
* When working with JSON descriptors (i.e. generated by [pbjs](cli/README.md#pbjs-for-javascript)) and/or reflection only, see the [light library][dist-light] (~16kb gzipped) that excludes the parser. CommonJS entry point is:
86-
87-
```js
88-
var protobuf = require("protobufjs/light");
89-
```
90-
91-
* When working with statically generated code only, see the [minimal library][dist-minimal] (~6.5kb gzipped) that also excludes reflection. CommonJS entry point is:
92-
93-
```js
94-
var protobuf = require("protobufjs/minimal");
95-
```
96-
9782
| Distribution | Location
98-
|------------|-----------------------------------
99-
| Full | <https://cdn.jsdelivr.net/npm/protobufjs/dist/>
100-
| Light | <https://cdn.jsdelivr.net/npm/protobufjs/dist/light/>
101-
| Minimal | <https://cdn.jsdelivr.net/npm/protobufjs/dist/minimal/>
83+
|--------------|--------------------------------------------------------
84+
| Full | <https://cdn.jsdelivr.net/npm/protobufjs/dist/>
85+
| Light | <https://cdn.jsdelivr.net/npm/protobufjs/dist/light/>
86+
| Minimal | <https://cdn.jsdelivr.net/npm/protobufjs/dist/minimal/>
87+
88+
All variants support CommonJS and AMD loaders and export globally as `window.protobuf`.
10289

10390
Usage
10491
-----
10592

106-
Because JavaScript is a dynamically typed language, protobuf.js introduces the concept of a **valid message** in order to provide the best possible [performance](#performance) (and, as a side product, proper typings):
93+
Because JavaScript is a dynamically typed language, protobuf.js utilizes the concept of a **valid message** in order to provide the best possible [performance](#performance) (and, as a side product, proper typings):
10794

10895
### Valid message
10996

11097
> A valid message is an object (1) not missing any required fields and (2) exclusively composed of JS types understood by the wire format writer.
11198
11299
There are two possible types of valid messages and the encoder is able to work with both of these for convenience:
113100

114-
* **Message instances** (explicit instances of message classes with default values on their prototype) always (have to) satisfy the requirements of a valid message by design and
101+
* **Message instances** (explicit instances of message classes with default values on their prototype) naturally satisfy the requirements of a valid message and
115102
* **Plain JavaScript objects** that just so happen to be composed in a way satisfying the requirements of a valid message as well.
116103

117104
In a nutshell, the wire format writer understands the following types:
@@ -126,11 +113,11 @@ In a nutshell, the wire format writer understands the following types:
126113
| bytes | `Uint8Array` (optimal)<br />`Buffer` (optimal under node)<br />`Array.<number>` (8 bit integers) | `base64.decode(value)` if a `string`<br />`Object` with non-zero `.length` is assumed to be buffer-like
127114
| enum | `number` (32 bit integer) | Looks up the numeric id if a `string`
128115
| message | Valid message | `Message.fromObject(value)`
116+
| repeated T | `Array<T>` | Copy
117+
| map<K, V> | `Object<K,V>` | Copy
129118

130119
* Explicit `undefined` and `null` are considered as not set if the field is optional.
131-
* Repeated fields are `Array.<T>`.
132-
* Map fields are `Object.<string,T>` with the key being the string representation of the respective value or an 8 characters long binary hash string for `Long`-likes.
133-
* Types marked as *optimal* provide the best performance because no conversion step (i.e. number to low and high bits or base64 string to buffer) is required.
120+
* Maps are objects where the key is the string representation of the respective value or an 8 characters long hash string for `Long`-likes.
134121

135122
### Toolset
136123

@@ -210,7 +197,7 @@ For reference, the following diagram aims to display relationships between the d
210197

211198
<p align="center"><img alt="Toolset Diagram" src="https://protobufjs.github.io/protobuf.js/toolset.svg" /></p>
212199

213-
> In other words: `verify` indicates that calling `create` or `encode` directly on the plain object will [result in a valid message respectively] succeed. `fromObject`, on the other hand, does conversion from a broader range of plain objects to create valid messages. ([ref](https://github.com/dcodeIO/protobuf.js/issues/748#issuecomment-291925749))
200+
> In other words: `verify` indicates that calling `create` or `encode` directly on the plain object will [result in a valid message respectively] succeed. `fromObject`, on the other hand, does conversion from a broader range of plain objects to create valid messages. ([ref](https://github.com/protobufjs/protobuf.js/issues/748#issuecomment-291925749))
214201
215202
Examples
216203
--------
@@ -482,13 +469,13 @@ greeter.sayHello({ name: 'you' })
482469
});
483470
```
484471

485-
There is also an [example for streaming RPC](https://github.com/dcodeIO/protobuf.js/blob/master/examples/streaming-rpc.js).
472+
There is also an [example for streaming RPC](https://github.com/protobufjs/protobuf.js/blob/master/examples/streaming-rpc.js).
486473

487474
Note that the service API is meant for clients. Implementing a server-side endpoint pretty much always requires transport channel (i.e. http, websocket, etc.) specific code with the only common denominator being that it decodes and encodes messages.
488475

489476
### Usage with TypeScript
490477

491-
The library ships with its own [type definitions](https://github.com/dcodeIO/protobuf.js/blob/master/index.d.ts) and modern editors like [Visual Studio Code](https://code.visualstudio.com/) will automatically detect and use them for code completion.
478+
The library ships with its own [type definitions](https://github.com/protobufjs/protobuf.js/blob/master/index.d.ts) and modern editors like [Visual Studio Code](https://code.visualstudio.com/) will automatically detect and use them for code completion.
492479

493480
The npm package depends on [@types/node](https://www.npmjs.com/package/@types/node) because of `Buffer` and [@types/long](https://www.npmjs.com/package/@types/long) because of `Long`. If you are not building for node and/or not using long.js, it should be safe to exclude them manually.
494481

@@ -595,18 +582,18 @@ Other notes:
595582
* Default values must be specified as arguments to the decorator instead of using a property initializer for proper prototype behavior.
596583
* Property names on decorated classes must not be renamed on compile time (i.e. by a minifier) because decorators just receive the original field name as a string.
597584

598-
**ProTip!** Not as pretty, but you can [use decorators in plain JavaScript](https://github.com/dcodeIO/protobuf.js/blob/master/examples/js-decorators.js) as well.
585+
**ProTip!** Not as pretty, but you can [use decorators in plain JavaScript](https://github.com/protobufjs/protobuf.js/blob/master/examples/js-decorators.js) as well.
599586

600587
Additional documentation
601588
------------------------
602589

603590
#### Protocol Buffers
604-
* [Google's Developer Guide](https://developers.google.com/protocol-buffers/docs/overview)
591+
* [Google's Developer Guide](https://protobuf.dev/overview/)
605592

606593
#### protobuf.js
607594
* [API Documentation](https://protobufjs.github.io/protobuf.js)
608-
* [CHANGELOG](https://github.com/dcodeIO/protobuf.js/blob/master/CHANGELOG.md)
609-
* [Frequently asked questions](https://github.com/dcodeIO/protobuf.js/wiki) on our wiki
595+
* [CHANGELOG](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)
596+
* [Frequently asked questions](https://github.com/protobufjs/protobuf.js/wiki) on our wiki
610597

611598
#### Community
612599
* [Questions and answers](http://stackoverflow.com/search?tab=newest&q=protobuf.js) on StackOverflow
@@ -666,13 +653,13 @@ These results are achieved by
666653
* using node-specific functionality where beneficial and, of course
667654
* avoiding unnecessary operations through splitting up [the toolset](#toolset).
668655

669-
You can also run [the benchmark](https://github.com/dcodeIO/protobuf.js/blob/master/bench/index.js) ...
656+
You can also run [the benchmark](https://github.com/protobufjs/protobuf.js/blob/master/bench/index.js) ...
670657

671658
```
672659
$> npm run bench
673660
```
674661

675-
and [the profiler](https://github.com/dcodeIO/protobuf.js/blob/master/bench/prof.js) yourself (the latter requires a recent version of node):
662+
and [the profiler](https://github.com/protobufjs/protobuf.js/blob/master/bench/prof.js) yourself (the latter requires a recent version of node):
676663

677664
```
678665
$> npm run prof <encode|decode|encode-browser|decode-browser> [iterations=10000000]
@@ -686,18 +673,18 @@ Compatibility
686673
* Works in all modern and not-so-modern browsers except IE8.
687674
* Because the internals of this package do not rely on `google/protobuf/descriptor.proto`, options are parsed and presented literally.
688675
* If typed arrays are not supported by the environment, plain arrays will be used instead.
689-
* Support for pre-ES5 environments (except IE8) can be achieved by [using a polyfill](https://github.com/dcodeIO/protobuf.js/blob/master/scripts/polyfill.js).
690-
* Support for [Content Security Policy](https://w3c.github.io/webappsec-csp/)-restricted environments (like Chrome extensions without [unsafe-eval](https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-eval)) can be achieved by generating and using static code instead.
676+
* Support for pre-ES5 environments (except IE8) can be achieved by [using a polyfill](https://github.com/protobufjs/protobuf.js/blob/master/lib/polyfill.js).
677+
* Support for [Content Security Policy](https://w3c.github.io/webappsec-csp/)-restricted environments (like Chrome extensions without unsafe-eval) can be achieved by generating and using static code instead.
691678
* If a proper way to work with 64 bit values (uint64, int64 etc.) is required, just install [long.js](https://github.com/dcodeIO/long.js) alongside this library. All 64 bit numbers will then be returned as a `Long` instance instead of a possibly unsafe JavaScript number ([see](https://github.com/dcodeIO/long.js)).
692-
* For descriptor.proto interoperability, see [ext/descriptor](https://github.com/dcodeIO/protobuf.js/tree/master/ext/descriptor)
679+
* For descriptor.proto interoperability, see [ext/descriptor](https://github.com/protobufjs/protobuf.js/tree/master/ext/descriptor)
693680

694681
Building
695682
--------
696683

697684
To build the library or its components yourself, clone it from GitHub and install the development dependencies:
698685

699686
```
700-
$> git clone https://github.com/dcodeIO/protobuf.js.git
687+
$> git clone https://github.com/protobufjs/protobuf.js.git
701688
$> cd protobuf.js
702689
$> npm install
703690
```
@@ -735,6 +722,6 @@ By default, protobuf.js integrates into any browserify build-process without req
735722
protobuf.configure();
736723
```
737724

738-
* If you have any special requirements, there is [the bundler](https://github.com/dcodeIO/protobuf.js/blob/master/scripts/bundle.js) for reference.
725+
* If you have any special requirements, there is [the bundler](https://github.com/protobufjs/protobuf.js/blob/master/scripts/bundle.js) for reference.
739726

740727
**License:** [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)

0 commit comments

Comments
 (0)