
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Simpler use of grpc in Node.js.
$ npm install grpc-pack or yarn add grpc-pack
Model and Service
syntax = "proto3";
package service;
service Greeter {
rpc Hello (Name) returns (Message) {}
}
message Name {
string name = 1;
}
message Message {
string message = 1;
}
const { createServer } = require('grpc-pack');
const server = createServer();
server.use({
protoPath: 'path/to/directory_proto',
protoName: 'greeter.proto',
serviceName: 'Greeter',
routes: {
hello: (call, callback) => {
callback(null, { message: `Hello, ${call.request.name}` });
},
},
});
server.listen('0.0.0.0:6969');
const { createClient } = require('grpc-pack');
const client = createClient(
{
protoPath: 'path/to/directory_proto',
protoName: 'greeter.proto',
serviceName: 'Greeter',
},
'0.0.0.0:6969'
);
client.hello({ name: 'Seorang Eksa' }, (err, { message }) => {
if(err) throw err;
console.log(message);
});
Service
syntax="proto3";
package service;
option go_package = "github.com/zoobc/zoobc-core/common/service";
import "model/block.proto";
import "google/api/annotations.proto";
// BlockService represent request on Blockchain's Block
service BlockService {
rpc GetBlocks(model.GetBlocksRequest) returns (model.GetBlocksResponse) {
option (google.api.http) = {
get: "/v1/block/GetBlocks"
};
}
}
Model
// Block represent the block data structure stored in the database
message Block {
int64 ID = 1 [ jstype = JS_STRING ];
uint32 Height = 2;
string CumulativeDifficulty = 3;
int64 TotalCoinBase = 4 [ jstype = JS_STRING ];
uint32 Version = 5;
}
// BlockExtendedInfo represent the Block data plus part of block data not to be persisted to database
message BlockExtendedInfo {
Block Block = 1;
}
// GetBlocksRequest create request to get a list block
message GetBlocksRequest {
// Fetch block from `n` height
uint32 Height = 1;
}
message GetBlocksResponse {
// Number of block returned
uint32 Count = 1;
// Blocks height returned from
uint32 Height = 2;
// Blocks returned
repeated Block Blocks = 3;
}
const { createServer } = require('grpc-pack');
const server = createServer();
const mockup = [
{
ID: '1',
Height: 1,
CumulativeDifficulty: 'Test 1',
TotalCoinBase: 10000,
Version: 1,
},
{
ID: '2',
Height: 2,
CumulativeDifficulty: 'Test 2',
TotalCoinBase: 20000,
Version: 1,
},
{
ID: '3',
Height: 2,
CumulativeDifficulty: 'Test 3',
TotalCoinBase: 30000,
Version: 1,
},
];
server.use({
protoPath: 'path/to/directory_proto',
protoName: 'block.proto',
servicePath: 'service',
serviceName: 'BlockService',
routes: {
GetBlocks: (call, callback) => {
const Height = call.request.Height;
const Blocks = Height > 0 ? mockup.filter(f => f.Height === Height) : mockup;
const Count = Blocks.length;
const GetBlocksResponse = {
Count,
Height,
Blocks,
};
callback(null, GetBlocksResponse);
},
},
});
server.listen('0.0.0.0:6969');
const { createClient } = require('grpc-pack');
const client = createClient(
{
protoPath: 'path/to/directory_proto',
protoName: 'block.proto',
servicePath: 'service',
serviceName: 'BlockService',
},
'0.0.0.0:6969'
);
const params = { Height: 1 };
client.GetBlocks(params, (err, res) => {
if(err) throw err;
console.log(res);
});
This project is licensed under the MIT License - see the LICENSE file for details
FAQs
Simpler use of grpc in Node.js
We found that grpc-pack demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.