Skip to content

Commit

Permalink
feat(bindings/nodejs): init nodejs binding (#138)
Browse files Browse the repository at this point in the history
  • Loading branch information
everpcpc authored Jun 29, 2023
1 parent da2eb9a commit b959127
Show file tree
Hide file tree
Showing 25 changed files with 2,174 additions and 17 deletions.
139 changes: 139 additions & 0 deletions .github/workflows/bindings.nodejs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
name: bindings nodejs

on:
push:
branches:
- main
tags:
- v*
pull_request:
branches:
- main
paths:
- 'bindings/nodejs/**'
- ".github/workflows/bindings.nodejs.yml"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
defaults:
run:
working-directory: bindings/nodejs
steps:
- uses: actions/checkout@v3
- name: Setup Rust toolchain
uses: ./.github/actions/setup
with:
cache-key: bindings-nodejs
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '18'
cache: yarn
cache-dependency-path: "bindings/nodejs/yarn.lock"
- name: Corepack
run: corepack enable
- name: Install dependencies
run: |
yarn install --immutable
- name: Check format
run: yarn run prettier --check .
- name: Build
run: yarn build:debug
- name: Check diff
run: git diff --exit-code
- name: Test
run: yarn test

build:
name: build-${{ matrix.os }}-${{ matrix.arch }}
runs-on: ${{ matrix.os }}-latest
defaults:
run:
working-directory: bindings/nodejs
strategy:
matrix:
include:
- { os: ubuntu, arch: x64, target: x86_64-unknown-linux-gnu }
- { os: windows, arch: x64, target: x86_64-pc-windows-msvc }
- { os: macos, arch: x64, target: x86_64-apple-darwin }
- { os: macos, arch: arm64, target: aarch64-apple-darwin }
steps:
- uses: actions/checkout@v3
- name: Setup Rust toolchain
uses: ./.github/actions/setup
with:
cache-key: bindings-nodejs
target: ${{ matrix.target }}
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '18'
cache: yarn
cache-dependency-path: "bindings/nodejs/yarn.lock"
- name: Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: build
shell: bash
run: |
if [[ "${{ matrix.target }}" == 'aarch64-apple-darwin' ]]; then
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
export CC=$(xcrun -f clang)
export CXX=$(xcrun -f clang++)
SYSROOT=$(xcrun --sdk macosx --show-sdk-path)
export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT"
fi
export NAPI_TARGET=${{ matrix.target }}
yarn build
- name: strip for macos
if: matrix.os == 'macos'
run: |
strip -x *.node
- uses: actions/upload-artifact@v3
with:
name: bindings-nodejs
path: bindings/nodejs/*.node

publish:
if: startsWith(github.ref, 'refs/tags/v')
needs: build
runs-on: ubuntu-latest
defaults:
run:
working-directory: bindings/nodejs
steps:
- uses: actions/checkout@v3
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '18'
cache: yarn
cache-dependency-path: "bindings/nodejs/yarn.lock"
- name: Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: bindings/nodejs/artifacts
- name: Move artifacts
run: yarn run napi artifacts
- name: List packages
run: ls -R ./npm
- name: Add LICENSE
working-directory: .
run: cp LICENSE ./bindings/nodejs
- name: Publish
run: |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
npm publish --access public --provenance
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
17 changes: 4 additions & 13 deletions .github/workflows/ci.yaml → .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,15 @@ jobs:

build:
runs-on: ${{ matrix.os }}-latest
name: build-${{ matrix.os }}
name: build-${{ matrix.os }}-${{ matrix.arch }}
strategy:
matrix:
include:
- os: ubuntu
target: x86_64-unknown-linux-gnu
- os: macos
target: x86_64-apple-darwin
- os: windows
target: x86_64-pc-windows-msvc
- { os: ubuntu, arch: x86_64, target: x86_64-unknown-linux-gnu }
- { os: macos, arch: x86_64, target: x86_64-apple-darwin }
- { os: windows, arch: x86_64, target: x86_64-pc-windows-msvc }
steps:
- uses: actions/checkout@v3

- name: Setup Python-3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'

- uses: ./.github/actions/setup
with:
cache-key: build
Expand Down
18 changes: 18 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: PR Assistant

on:
pull_request_target:
branches:
- main
types:
- opened
- edited
- synchronize

jobs:
title:
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
File renamed without changes.
File renamed without changes.
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ members = [
"core",
"driver",
"cli",
"bindings/python"
"bindings/python",
"bindings/nodejs",
]
193 changes: 193 additions & 0 deletions bindings/nodejs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
# Created by https://www.toptal.com/developers/gitignore/api/node
# Edit at https://www.toptal.com/developers/gitignore?templates=node

### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
artifacts/

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# End of https://www.toptal.com/developers/gitignore/api/node

# Created by https://www.toptal.com/developers/gitignore/api/macos
# Edit at https://www.toptal.com/developers/gitignore?templates=macos

### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### macOS Patch ###
# iCloud generated files
*.icloud

# End of https://www.toptal.com/developers/gitignore/api/macos

# Created by https://www.toptal.com/developers/gitignore/api/windows
# Edit at https://www.toptal.com/developers/gitignore?templates=windows

### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db

# Dump file
*.stackdump

# Folder config file
[Dd]esktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp

# Windows shortcuts
*.lnk

# End of https://www.toptal.com/developers/gitignore/api/windows

#Added by cargo

/target
Cargo.lock

.pnp.*
.yarn
*.node
docs/
Loading

0 comments on commit b959127

Please sign in to comment.