ADempiere node.js write in JavaScript for gRPC service, currently is used as library of proxy ADempiere service and is published as NPM
- ADempiere-gRPC-Server, docker image erpya/adempiere-grpc-all-in-one.
See also:
- ADempiere-Vue, docker image erpya/adempiere-vue. service, use it for connect with:
- Proxy-Adempiere-API, docker image erpya/proxy-adempiere-api.
# installing via NPM
npm install @adempiere/grpc-api --save
# installing via Yarn
yarn add @adempiere/grpc-api
Here a example for it using from Proxy of ADempiere API: https://github.com/adempiere/proxy-adempiere-api/blob/master/src/modules/adempiere-api/index.ts#L17
For recreate stub class you must have follow:
# Get the latest version number of protoc
LATEST_VERSION=$(curl --silent "https://api.github.com/repos/protocolbuffers/protobuf/releases/latest" |
grep -Po '"tag_name": "\K.*?(?=")' |
sed -E 's|v||g')
ARCHITECTURE=$(arch)
ZIP_FILE=protoc-$LATEST_VERSION-linux-$ARCHITECTURE.zip
# Download latest version
URL="https://github.com/protocolbuffers/protobuf/releases/download/v$LATEST_VERSION/$ZIP_FILE"
curl -OL $URL
# Extract and overwrite into dir
sudo unzip -o $ZIP_FILE -d /usr/local bin/protoc
sudo unzip -o $ZIP_FILE -d /usr/local 'include/*'
# Delete donwloaded file
rm -f -v $ZIP_FILE
# Assign read and execute permissions
sudo chmod 755 /usr/local/bin/protoc
sudo chmod 755 -R /usr/local/include/google/
When installation is complete, check the version with
protoc --version
This is only used to generate the stub if gRPC is handled on the client side.
# Get the latest version number of protoc-gen-grpc-web
LATEST_VERSION=$(curl --silent "https://api.github.com/repos/grpc/grpc-web/releases/latest" |
grep -Po '"tag_name": "\K.*?(?=")' |
sed -E 's|v||g')
FILE=protoc-gen-grpc-web
# Download
URL=https://github.com/grpc/grpc-web/releases/download/$LATEST_VERSION/$FILE-$LATEST_VERSION-linux-x86_64
curl -L $URL -o $FILE
# Extract and overwrite into dir
sudo mv -f -v $FILE /usr/local/bin/
# Assign read and execute permissions
sudo chmod 755 /usr/local/bin/$FILE
It can be installed as a global dependency although it is already managed as a project dependency.
Via npm:
sudo npm install -g grpc-tools
Via yarn:
yarn global add grpc-tools
# install dependecies and dev dependencies
npm i
# generate all stub
npm run stub
Note to generate specific proto definition:
- To access:
npm run stub:access
- To base data type:
npm run stub:base_data_type
- To business:
npm run stub:business
- To client:
npm run stub:client
- To core functionality:
npm run stub:core_functionality
- To dictionary:
npm run stub:dictionary
- To enrollment:
npm run stub:enrollment
- To point of sales:
npm run stub:point_of_sales
Generate all stub:
grpc_tools_node_protoc \
--js_out=import_style=commonjs,binary:src/grpc \
--grpc_out=src/grpc \
proto/access.proto proto/base_data_type.proto proto/business.proto proto/client.proto proto/core_functionality.proto proto/dictionary.proto proto/enrollment.proto proto/point_of_sales.proto
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To access:
# Generate stub to access.proto file
grpc_tools_node_protoc \
proto/access.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To base data type:
# Generate stub to base_data_type.proto file
grpc_tools_node_protoc \
proto/base_data_type.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To business:
# Generate stub to business.proto file
grpc_tools_node_protoc \
proto/business.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To client:
# Generate stub to client.proto file
grpc_tools_node_protoc \
proto/access.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To core functionality:
# Generate stub to access.proto file
grpc_tools_node_protoc \
proto/core_functionality.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To dictionary:
# Generate stub to access.proto file
grpc_tools_node_protoc \
proto/dictionary.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To enrollment:
# Generate stub to access.proto file
grpc_tools_node_protoc \
proto/enrollment.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
- To point of sales:
# Generate stub to access.proto file
grpc_tools_node_protoc \
proto/point_of_sales.proto \
--js_out=import_style=commonjs,binary:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR
# --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR
The result is generated on: src/grpc/proto/
folder
access_grpc_pb.js
access_pb.js
base_data_type_grpc_pb.js
base_data_type_pb.js
business_grpc_pb.js
business_pb.js
client_grpc_pb.js
client_pb.js
core_functionality_grpc_pb.js
core_functionality_pb.js
dictionary_grpc_pb.js
dictionary_pb.js
enrollment_grpc_pb.js
enrollment_pb.js
point_of_sales_grpc_pb.js
point_of_sales_pb.js
Become a sponsor and get your logo on our README on GitHub with a link to your site. Become a sponsor