Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion js/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
src/buttplug-rs-ffi
src/web/buttplug-rs-ffi
build/
prebuilds/
bin/
yarn.error.log
buttplug-*.tgz
12 changes: 10 additions & 2 deletions js/.npmignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
dist/module/buttplug_rs_ffi_bg_web.js
bin
build
node_modules
scripts
!scripts/install_core.js
src
scripts
buttplug-*.tgz
index.html
tsconfig.*.json
tsconfig.json
tsfmt.json
webpack.base.cjs
34 changes: 34 additions & 0 deletions js/binding.gyp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"targets": [{
"target_name": "binding",
"sources": ["src/node/binding.cpp"],
"include_dirs": [
"<!@(node -p \"require('node-addon-api').include\")",
],
"dependencies": [
"<!(node -p \"require('node-addon-api').gyp\")"
],
'cflags!': [ '-fno-exceptions' ],
'cflags_cc!': [ '-fno-exceptions' ],
'xcode_settings': {
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
'CLANG_CXX_LIBRARY': 'libc++',
'MACOSX_DEPLOYMENT_TARGET': '10.7',
},
'msvs_settings': {
'VCCLCompilerTool': { 'ExceptionHandling': 1 },
},
"conditions": [
['OS=="linux"', {
"cflags": [ "-std=c++11", "-Wall" ]
}, {
"cflags": [ "-std=c++11", "-stdlib=libc++", "-Wall" ]
}],
['OS=="win"', {
"sources": [
"src/node/win32-dlfcn.cpp"
]
}]
]
}]
}
71 changes: 56 additions & 15 deletions js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,42 +14,83 @@
"bugs": {
"url": "https://github.com/buttplugio/buttplug-rs-ffi/issues"
},
"ffi-version": "2.0.2",
"scripts": {
"install": "node-gyp-build && node scripts/install_core.js",

"prebuild:win32": "prebuildify --napi --tag-uv --tag-armv --platform win32",
"prebuild:darwin": "prebuildify --napi --tag-uv --tag-armv --platform darwin",
"prebuild:linux": "prebuildify --napi --tag-uv --tag-armv --platform linux",
"prebuild": "yarn prebuild:win32 && yarn prebuild:darwin && yarn prebuild:linux",

"build:rust:node": "node scripts/install_core.js --build",
"build:rust:web": "rimraf src/web/buttplug-rs-ffi && cd ../ffi && cross-env RUSTFLAGS=\"--cfg=web_sys_unstable_apis\" wasm-pack build -d../js/src/web/buttplug-rs-ffi --release -- --features wasm --no-default-features && cd ../js && rimraf src/web/buttplug-rs-ffi/.gitignore src/web/buttplug-rs-ffi/package.json src/web/buttplug-rs-ffi/README.md",
"build:rust": "yarn build:rust:node && yarn build:rust:web",

"build:proto": "pbjs -t static-module -w es6 -o src/buttplug_ffi.js ../protobuf_schemas/buttplug_rs_ffi.proto && node scripts/modularize.cjs && pbjs -t static-module ../protobuf_schemas/buttplug_rs_ffi.proto | pbts -o src/buttplug_ffi.d.ts -",

"build:node:rust": "node scripts/install_core.js",
"build:node:gyp": "yarn prebuild",
"build:node:tsc": "tsc -p tsconfig.json && copyfiles -u 1 \"src/**/*.{js,d.ts}\" --exclude \"src/web/**/*.*\" dist/node",
"build:node": "yarn build:node:rust && yarn build:node:gyp && yarn build:node:tsc",

"test:node": "yarn build:node && node scripts/test_node.cjs",

"build:web:rust": "yarn build:rust:web",
"build:web:webpack": "webpack --progress --config webpack.base.cjs --env development",
"build:web:webpack:production": "webpack --progress --config webpack.base.cjs --env production",
"build:web": "yarn build:web:rust && yarn build:web:webpack",
"build:web:production": "yarn build:web:rust && yarn build:web:webpack:production",

"build": "yarn build:proto && yarn build:node && yarn build:web",
"build:production": "yarn build:proto && yarn build:node && yarn build:webpack:production",
"build:publish": "rimraf dist && rimraf bin && rimraf build && yarn build:production",

"build:local": "cross-env BUTTPLUG_FFI_INSTALL_CORE_BUILD=true yarn build",
"build:local:production": "cross-env BUTTPLUG_FFI_INSTALL_CORE_BUILD=true yarn build:production",

"clean:node:gyp": "rimraf build && rimraf prebuilds",
"clean:node": "rimraf dist/node && rimraf bin && yarn clean:node:gyp",
"clean:web": "rimraf dist/web && rimraf src/web/buttplug-rs-ffi",
"clean": "yarn clean:node && yarn clean:web && rimraf dist",

"dev": "webpack-dev-server --hot --config webpack.base.js --env development",
"build:publish": "rimraf dist && yarn build:rust && yarn build:webpack && yarn build:webpack:production",
"build:rust": "rimraf src/buttplug-rs-ffi && cd ../ffi && cross-env RUSTFLAGS=\"--cfg=web_sys_unstable_apis\" wasm-pack build -d../js/src/buttplug-rs-ffi --release -- --features wasm --no-default-features && cd ../js && node scripts/modularize.cjs wasm-pack && rimraf src/buttplug-rs-ffi/.gitignore src/buttplug-rs-ffi/package.json src/buttplug-rs-ffi/README.md",
"build:main": "tsc -p tsconfig.json && copyfiles -u 1 \"src/**/*.js\" dist/module && copyfiles -u 1 \"src/**/*.d.ts\" dist/module && copyfiles -u 1 \"src/**/*.wasm\" dist/module",
"build:proto": "pbjs -t static-module -w es6 -o src/buttplug_ffi.js ../protobuf_schemas/buttplug_rs_ffi.proto && node scripts/modularize.cjs pbjs && pbjs -t static-module ../protobuf_schemas/buttplug_rs_ffi.proto | pbts -o src/buttplug_ffi.d.ts -",
"build:webpack": "yarn build:main && webpack --progress --config webpack.base.cjs --env development",
"build:webpack:production": "webpack --progress --config webpack.base.cjs --env production"
"build:webpack": "yarn build:web",
"build:webpack:production": "yarn build:web:production"
},
"sideEffects": "false",
"type": "module",
"main": "./dist/module/index.js",
"main": "./dist/node/index.js",
"exports": {
"node": "./dist/module/index.js",
"browser": "./dist/web/buttplug.min.js"
"node": "./dist/node/index.js",
"browser": [
"./dist/web/buttplug.min.js",
"./dist/web/buttplug.js"
]
},
"imports": {
"#buttplug_rs_ffi_bg": {
"node": "./dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg_node.js"
"#ffi_wrap": {
"node": "./dist/node/node/ffi_wrap.js"
}
},
"types": "./dist/module/index.d.ts",
"types": "./dist/node/index.d.ts",
"dependencies": {
"protobufjs": "^6.10.2",
"websocket": "^1.0.34"
"node-addon-api": "^4.0.0",
"node-gyp-build": "^4.2.3",
"protobufjs": "^6.10.2"
},
"devDependencies": {
"@types/node": "15",
"copyfiles": "^2.4.1",
"cross-env": "^7.0.3",
"fork-ts-checker-webpack-plugin": "^6.1.0",
"html-loader": "^1.3.2",
"prebuildify": "^4.1.2",
"rimraf": "^3.0.2",
"ts-loader": "^8",
"ts-node": "^9.1.1",
"ts-proto": "^1.80.1",
"typescript": "^4.1.5",
"typescript": "4.3",
"uglify-js": "^3.12.7",
"webpack": "^4",
"webpack-cli": "^3",
Expand Down
Loading