@karust13/as-proto
Advanced tools
+1
-1
| { | ||
| "name": "@karust13/as-proto", | ||
| "version": "1.4.1", | ||
| "version": "1.4.2", | ||
| "description": "AssemblyScript runtime library for protobuf encoding/decoding", | ||
@@ -5,0 +5,0 @@ "main": "assembly/index.ts", |
+26
-17
@@ -9,3 +9,3 @@ <div align="center"> | ||
| [](https://www.npmjs.com/package/as-proto) | ||
| [](https://www.npmjs.com/package/@karust13/as-proto) | ||
@@ -15,8 +15,10 @@ </div> | ||
| ## Features | ||
| * Encodes and decodes protobuf messages | ||
| * Generates AssemblyScript files using `protoc` plugin | ||
| * Produces relatively small `.wasm` files | ||
| * Relatively fast, especially for messages that contains only primitive types | ||
| - Encodes and decodes protobuf messages | ||
| - Generates AssemblyScript files using `protoc` plugin | ||
| - Produces relatively small `.wasm` files | ||
| - Relatively fast, especially for messages that contains only primitive types | ||
| ## Installation | ||
| This package requires **Node 10.4+** or modern browser with [WebAssembly][1] support. | ||
@@ -36,6 +38,9 @@ Requires [`protoc`][2] installed for code generation. | ||
| ## Code generation | ||
| To generate AssemblyScript file from `.proto` file, use following command: | ||
| ```sh | ||
| protoc --plugin=protoc-gen-as=./node_modules/.bin/as-proto-gen --as_out=. ./file.proto | ||
| ``` | ||
| This command will create `./file.ts` file from `./file.proto` file. | ||
@@ -55,2 +60,3 @@ | ||
| ``` | ||
| ```typescript | ||
@@ -112,3 +118,5 @@ // star-repo-message.ts | ||
| ### Helper methods | ||
| In order to generate helper methods for encoding and decoding a message, pass the `gen-helper-methods` option with the `as_opt` parameter: | ||
| ```sh | ||
@@ -119,2 +127,3 @@ protoc --plugin=protoc-gen-as=./node_modules/.bin/as-proto-gen --as_opt=gen-helper-methods --as_out=. ./file.proto | ||
| This will add the following methods in a generated file: | ||
| ```typescript | ||
@@ -131,6 +140,8 @@ export function encodeStarRepoMessage(message: StarRepoMessage): Uint8Array { | ||
| ### Dependencies | ||
| This package will generate messages for all proto dependencies (for example `import "google/protobuf/timestamp.proto";`) | ||
| This package will generate messages for all proto dependencies (for example `import "google/protobuf/timestamp.proto";`) | ||
| unless you pass `--as_opt=no-gen-dependencies` option. | ||
| ## Usage | ||
| To encode and decode protobuf messages, all you need is `Protobuf` class and | ||
@@ -140,6 +151,6 @@ generated message class: | ||
| ```typescript | ||
| import { Protobuf } from 'as-proto/assembly'; | ||
| import { StarRepoMessage } from './star-repo-message'; // generated file | ||
| import { Protobuf } from "as-proto/assembly"; | ||
| import { StarRepoMessage } from "./star-repo-message"; // generated file | ||
| const message = new StarRepoMessage('piotr-oles', 'as-proto'); | ||
| const message = new StarRepoMessage("piotr-oles", "as-proto"); | ||
@@ -153,4 +164,4 @@ // encode | ||
| assert(decoded instanceof StarRepoMessage); | ||
| assert(decoded.author === 'piotr-oles'); | ||
| assert(decoded.repo === 'as-proto'); | ||
| assert(decoded.author === "piotr-oles"); | ||
| assert(decoded.repo === "as-proto"); | ||
| ``` | ||
@@ -161,9 +172,5 @@ | ||
| ```typescript | ||
| import { | ||
| StarRepoMessage, | ||
| encodeStarRepoMessage, | ||
| decodeStarRepoMessage | ||
| } from './star-repo-message'; // generated file | ||
| import { StarRepoMessage, encodeStarRepoMessage, decodeStarRepoMessage } from "./star-repo-message"; // generated file | ||
| const message = new StarRepoMessage('piotr-oles', 'as-proto'); | ||
| const message = new StarRepoMessage("piotr-oles", "as-proto"); | ||
@@ -177,2 +184,3 @@ const encoded = encodeStarRepoMessage(message); | ||
| ## Performance | ||
| I used performance benchmark from [`ts-proto`][3] library and added case for `as-proto`. | ||
@@ -236,2 +244,3 @@ The results on Intel Core i7 2.2 Ghz (MacBook Pro 2015): | ||
| ## License | ||
| MIT | ||
@@ -238,0 +247,0 @@ |
25269
0.12%239
3.91%