Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
{
"name": "gSender",
"version": "1.7.0-Edge-2",
"description": "Electron sender for GRBL based CNC machines",
"author": {
"name": "Sienci Labs <hi@sienci.com>",
"email": "hi@sienci.com"
},
"main": "./dist/gsender/server-cli",
"types": "./dist/gsender/server-cli",
"pkg": {
"scripts": [
"node_modules/axios/dist/**/*.cjs",
"node_modules/axios/dist/**/*.js"
],
"assets": [
"dist/gsender/pendant/**/*",
"node_modules/**/*.node"
]
},
"bin": {
"cnc": "./bin/cnc",
"gsender": "./bin/gsender"
},
"files": [
"bin",
"dist",
"static"
],
"repository": {
"type": "git",
"url": "https://github.com/Sienci-Labs/gsender"
},
"license": "MIT",
"engines": {
"node": ">=18"
},
"preferGlobal": true,
"scripts": {
"prepare": "npm run clean",
"prebuild-latest": "npm run package-sync && bash -c \"cd src; npm version ${npm_package_version}-${COMMIT_COUNT} --allow-same-version\" && node esbuild.config.js --prebuild-only --production",
"prebuild-dev": "npm run package-sync && node esbuild.config.js --prebuild-only",
"prebuild-prod": "npm run package-sync && node esbuild.config.js --prebuild-only --production",
"build": "npm run build-prod",
"build-latest": "concurrently --kill-others-on-fail --names \"build-dev-css,build-prod-server,vite:build,vite:build:pendant\" \"npm run build-dev-css\" \"npm run build-prod-server\" \"npm run vite:build\" \"npm run vite:build:pendant\" && npm run copy-css && npm run prepare-default-plugins",
"build-dev": "concurrently --kill-others-on-fail --names \"build-dev-css,build-dev-server\" \"npm run build-dev-server\" \"npm run build-dev-css\"",
"build-dev-server": "node esbuild.config.js --target=all",
"build-dev-css": "postcss src/app/src/index.css -o src/app/src/application.css --config src/app/postcss.config.cjs",
"build-prod": "concurrently --kill-others-on-fail --names \"build-dev-css,build-prod-server,vite:build,vite:build:pendant\" \"npm run build-dev-css\" \"npm run build-prod-server\" \"npm run vite:build\" \"npm run vite:build:pendant\" && npm run copy-css && npm run prepare-default-plugins",
"build-prod-server": "node esbuild.config.js --production --target=all",
"copy-css": "cross-env mkdir -p dist/gsender/app/src && cp src/app/src/application.css dist/gsender/app/src/",
"prepare-default-plugins": "node scripts/prepare-default-plugins.js",
"prepare-dev-plugins": "node scripts/prepare-dev-plugins.js",
"postbuild-dev-server": "echo 'Static files copied by esbuild'",
"postbuild-prod-server": "echo 'Static files copied by esbuild'",
"clean": "bash -c 'rm -rf ./dist ./output'",
"tailwind-dev": "npx tailwindcss -i src/app/src/index.css -o src/app/src/application.css --config src/app/tailwind.config.ts --watch",
"electron": "electron",
"electron-builder": "electron-builder",
"electron-builder:debug": "cross-env DEBUG=electron-builder electron-builder",
"github-release": "github-release",
"electron-rebuild": "electron-rebuild",
"package-sync": "node scripts/package-sync.js",
"build:macos": "bash -c 'scripts/electron-builder.sh --macos --x64 --arm64'",
"build:macos-x64": "bash -c 'scripts/electron-builder.sh --macos --x64'",
"build:macos-arm64": "bash -c 'scripts/electron-builder.sh --macos --arm64'",
"build:linux-ia32": "bash -c 'scripts/electron-builder.sh --linux --ia32'",
"build:linux-x64": "bash -c 'scripts/electron-builder.sh --linux --x64'",
"build:linux-armv7l": "bash -c 'scripts/electron-builder.sh --linux --armv7l'",
"build:linux": "bash -c 'scripts/electron-builder.sh --linux --x64 --arm64'",
"build:linux-arm64": "bash -c 'scripts/electron-builder.sh --linux --arm64'",
"build:windows-ia32": "bash -c 'scripts/electron-builder.sh --windows --ia32'",
"build:windows-x64": "bash -c 'scripts/electron-builder.sh --windows --x64'",
"build:windows": "bash -c 'scripts/electron-builder.sh --windows --x64'",
"start": "cross-env ./bin/gsender",
"start-electron": "electron ./dist/gsender/main",
"watch-dev": "node esbuild.config.js --watch",
"start-dev": "cross-env NODE_ENV=development ./bin/gsender -vv -p 8000",
"start-dev:nodemon": "nodemon --exec \"node ./bin/gsender -vv -p 8000\"",
"dev": "npm run prebuild-dev && npm run build-dev-server && npm run prepare-dev-plugins && concurrently --kill-others-on-fail --names \"esbuild,server,tailwind\" \"npm run watch-dev\" \"npm run start-dev:nodemon\" \"npm run tailwind-dev\"",
"dev:electron": "npm run build-dev && npm run prepare-dev-plugins && node scripts/electron-hot.js",
"vite:dev": "cd src/app && vite --port 5173 --host --force",
"prod": "npm run build-prod && NODE_ENV=production ./bin/gsender",
"format": "biome format --write .",
"format:check": "biome format .",
"lint": "biome check --formatter-enabled=false .",
"lint:fix": "biome check --write .",
"stylint": "stylint src/app",
"test": "npx jest --config jest.config.js",
"coveralls": "tap test/*.js --coverage --coverage-report=text-lcov --nyc-arg=--require --nyc-arg=esbuild-register | coveralls",
"cy:run": "cypress run",
"test:plugins": "cypress run --config-file cypress.plugins.config.js --browser chrome",
"testgrblhal": "npm run report:clean && (npx cypress run --headed --browser chrome --spec cypress/e2e/grblHal/A_grblHal_master_spec.cy.js || true) && npm run report:merge && npm run report:generate && npm run dashboard:generate && npm run dashboard:open",
"report:clean": "if exist cypress\\reports\\mochawesome\\.jsons rmdir /s /q cypress\\reports\\mochawesome\\.jsons && mkdir cypress\\reports\\mochawesome\\.jsons",
"report:merge": "mochawesome-merge cypress/reports/mochawesome/.jsons/*.json -o cypress/reports/mochawesome/merged.json",
"report:generate": "marge cypress/reports/mochawesome/merged.json -f report --reportDir cypress/reports/html --inline --charts",
"report:open": "start cypress/reports/html/merged.html",
"dashboard:generate": "node cypress/dashboard/generate-dashboard.js",
"dashboard:open": "start cypress/dashboard/report/index.html",
"test:report": "npm run report:clean && (npx cypress run --spec cypress/e2e/grblHal/A_grblHal_master_spec.cy.js || true) && npm run report:merge && npm run report:generate && npm run dashboard:generate",
"cypress:open": "cypress open",
"vite:build": "cross-env NODE_OPTIONS='--max-old-space-size=8192' yarn --cwd ./src/app build",
"vite:build:pendant": "yarn --cwd ./src/pendant build",
"vite:build:pendant-standalone": "vite build --config src/pendant/vite.config.ts --outDir ../../dist/gsender-pendant/pendant --emptyOutDir",
"vite:dev:pendant": "cd src/pendant && vite --port 5174 --host --force",
"prebuild-pendant": "npm run package-sync && node esbuild.config.js --production --prebuild-pendant-only",
"pendant:electron:dev": "npm run build-dev && concurrently --kill-others-on-fail --names \"esbuild,server,vite,electron\" \"npm run watch-dev\" \"npm run start-dev:nodemon\" \"npm run vite:dev:pendant\" \"node scripts/wait-for-url.mjs http://127.0.0.1:5174 && cross-env NODE_ENV=development ELECTRON_RENDERER_URL=http://127.0.0.1:5174 electron ./output/pendant-main\"",
"pendant:build": "npm run prebuild-pendant && concurrently --kill-others-on-fail --names \"build-pendant-bundles,vite:build:pendant\" \"node esbuild.config.js --production --target=pendant\" \"npm run vite:build:pendant-standalone\"",
"build:pendant:mac": "npm run pendant:build && bash -c 'scripts/electron-builder-pendant.sh --macos --x64 --arm64'",
"build:pendant:pi": "npm run pendant:build && bash -c 'scripts/electron-builder-pendant.sh --linux --arm64'",
"build:pendant:win": "npm run pendant:build && bash -c 'scripts/electron-builder-pendant.sh --win --x64'",
"postvite:build": "bash -c \"mkdir -p dist/gsender/app; cp -af src/app/{favicon.ico,images,assets} dist/gsender/app/\"",
"install:packages": "yarn install && yarn install --prefix /src/app",
"check-types": "node ./src/app/node_modules/typescript/bin/tsc --noEmit -p ./src/app",
"test:unit": "jest",
"test:unit:watch": "jest --watch",
"test:app": "yarn --cwd src/app test"
},
"build": {
"appId": "org.sienci.gsender-edge",
"extraMetadata": {
"main": "./main.js"
},
"afterSign": "./notarize.js",
"extends": null,
"artifactName": "${name}-${version}-${arch}.${ext}",
"asar": true,
"asarUnpack": [
"**/*.node",
"**/*.{dll,so,dylib,exe}"
],
"productName": "gSender Edge",
"generateUpdatesFilesForAllChannels": true,
"npmRebuild": false,
"compression": "normal",
"removePackageScripts": true,
"buildDependenciesFromSource": false,
"files": [
"**/*",
"!**/*.map"
],
"extraFiles": [
{
"from": "dist/gsender/plugins/",
"to": "plugins/"
}
],
"extraResources": [
"./node_modules/@electron/remote/**"
],
"directories": {
"buildResources": "electron-build",
"output": "output",
"app": "dist/gsender"
},
"nsis": {
"allowToChangeInstallationDirectory": true,
"oneClick": false,
"license": "LICENSE",
"perMachine": true,
"installerSidebar": "electron-build/sidebar.bmp",
"createDesktopShortcut": false,
"createStartMenuShortcut": false,
"include": "electron-build/installer.nsh"
},
"mac": {
"category": "public.app-category.productivity",
"target": [
"dmg"
],
"icon": "electron-build/icon.icns",
"electronUpdaterCompatibility": ">=2.16",
"darkModeSupport": true,
"mergeASARs": false,
"hardenedRuntime": true,
"entitlements": "electron-build/entitlements.mac.plist",
"entitlementsInherit": "electron-build/entitlements.mac.plist"
},
"dmg": {
"background": "electron-build/background.png",
"icon": "electron-build/icon.icns",
"iconSize": 80,
"iconTextSize": 12,
"writeUpdateInfo": false,
"contents": [
{
"x": 448,
"y": 344,
"type": "link",
"path": "/Applications"
},
{
"x": 192,
"y": 344,
"type": "file"
}
]
},
"win": {
"target": [
"nsis"
],
"icon": "electron-build/icon.ico",
"signtoolOptions": {
"sign": "./WindowsSigner.js"
}
},
"linux": {
"category": "Utility",
"icon": "electron-build/icon-square.png",
"target": [
"AppImage",
"deb"
]
},
"fileAssociations": [
{
"ext": "gcode",
"name": "G-Code File",
"description": "G-Code CNC machining file",
"role": "Viewer",
"icon": "file_association_icon"
},
{
"ext": "gc",
"name": "G-Code File",
"description": "G-Code CNC machining file",
"role": "Viewer",
"icon": "file_association_icon"
},
{
"ext": "nc",
"name": "G-Code File",
"description": "G-Code CNC machining file",
"role": "Viewer",
"icon": "file_association_icon"
},
{
"ext": "tap",
"name": "G-Code File",
"description": "G-Code CNC machining file",
"role": "Viewer",
"icon": "file_association_icon"
},
{
"ext": "cnc",
"name": "G-Code File",
"description": "G-Code CNC machining file",
"role": "Viewer",
"icon": "file_association_icon"
}
]
},
"keywords": [
"gsender",
"arduino",
"raspberry",
"pi",
"cnc",
"gcode",
"grbl",
"grblhal",
"react",
"socket.io"
],
"dependencies": {
"@electron/remote": "^2.1.3",
"@posthog/react": "^1.9.0",
"@sentry/electron": "^7.7.1",
"@sentry/react": "^9.28.0",
"@serialport/parser-byte-length": "^13.0.0",
"@serialport/parser-readline": "^13.0.0",
"@sienci/avrgirl-arduino": "^5.0.3",
"@sienci/gviewer": "^0.1.38",
"@types/estree": "^1.0.9",
"acorn": "^8.18.0",
"acorn-walk": "^8.3.5",
"axios": "^1.2.4",
"basic-ftp": "^5.1.0",
"bcrypt-nodejs": "0.0.3",
"buffer-chunks": "^0.1.1",
"chalk": "~2.4.2",
"commander": "^10.0.0",
"compression": "^1.8.1",
"connect-restreamer": "~1.0.3",
"consolidate": "~0.15.1",
"cookie-parser": "~1.4.4",
"cors": "^2.8.5",
"crc-full": "^1.1.0",
"debug": "^4.4.3",
"deep-keys": "~0.5.0",
"electron-log": "^5.4.3",
"electron-store": "^11.0.2",
"electron-updater": "^6.7.3",
"ensure-array": "~1.0.0",
"errorhandler": "~1.5.0",
"escodegen": "~1.11.1",
"esprima": "~4.0.1",
"expand-tilde": "~2.0.2",
"express": "~4.16.4",
"express-jwt": "~5.3.1",
"express-session": "^1.19.0",
"gcode-interpreter": "~2.1.0",
"gcode-parser": "~1.3.6",
"hogan.js": "~3.0.2",
"http-proxy": "~1.18.1",
"i18next": "~15.0.9",
"i18next-fs-backend": "^1.1.4",
"i18next-http-middleware": "^3.2.1",
"is-electron": "^2.2.2",
"is-online": "^9.0.1",
"jsonfile": "^6.2.0",
"jsonwebtoken": "~8.5.1",
"jszip": "^3.10.1",
"lodash": "~4.17.11",
"method-override": "~3.0.0",
"minimatch": "~3.0.4",
"mkdirp": "~0.5.1",
"morgan": "^1.10.1",
"multer": "^1.4.5-lts.1",
"nrf-intel-hex": "^1.3.0",
"posthog-js": "^1.372.5",
"range_check": "~1.4.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-virtuoso": "^4.18.13",
"registry-auth-token": "~3.4.0",
"registry-url": "~5.1.0",
"rimraf": "~2.6.3",
"semver": "^7.7.4",
"serialport": "^13.0.0",
"serve-favicon": "~2.5.0",
"serve-static": "~1.13.2",
"session-file-store": "^1.5.0",
"shortid": "~2.2.14",
"sirv": "^2.0.4",
"socket.io": "^4.1.3",
"spawn-default-shell": "~2.0.0",
"superagent": "^6.1.0",
"usb": "^2.17.0",
"uuid": "~3.3.2",
"watch": "~1.0.2",
"webappengine": "~1.2.0",
"winreg": "^1.2.5",
"winston": "^3.19.0"
},
"devDependencies": {
"@babel/core": "^7.29.0",
"@babel/preset-env": "^7.25.8",
"@babel/preset-react": "^7.25.8",
"@babel/preset-typescript": "^7.27.1",
"@biomejs/biome": "2.5.11",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@electron/notarize": "^3.1.1",
"@electron/rebuild": "^4.0.3",
"@radix-ui/react-accordion": "^1.2.0",
"@radix-ui/react-alert-dialog": "^1.1.1",
"@radix-ui/react-checkbox": "^1.1.1",
"@radix-ui/react-dialog": "^1.1.1",
"@radix-ui/react-dropdown-menu": "^2.1.1",
"@radix-ui/react-label": "^2.1.0",
"@radix-ui/react-navigation-menu": "^1.2.0",
"@radix-ui/react-popover": "^1.1.1",
"@radix-ui/react-progress": "^1.1.0",
"@radix-ui/react-radio-group": "^1.2.0",
"@radix-ui/react-scroll-area": "^1.1.0",
"@radix-ui/react-select": "^2.1.1",
"@radix-ui/react-slider": "^1.2.0",
"@radix-ui/react-slot": "^1.1.0",
"@radix-ui/react-switch": "^1.1.0",
"@radix-ui/react-tabs": "^1.1.0",
"@radix-ui/react-toast": "^1.2.1",
"@radix-ui/react-toggle": "^1.1.0",
"@radix-ui/react-toggle-group": "^1.1.0",
"@radix-ui/react-tooltip": "^1.1.2",
"@react-pdf/renderer": "^4.3.2",
"@reduxjs/toolkit": "^2.2.7",
"@sentry/esbuild-plugin": "^4.4.0",
"@sentry/vite-plugin": "^3.5.0",
"@tanstack/match-sorter-utils": "^8.8.4",
"@tanstack/react-router": "^1.159.6",
"@tanstack/react-table": "^8.9.3",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/jest": "^30.0.0",
"@types/lodash": "^4.17.21",
"@types/pubsub-js": "^1.8.6",
"@types/react-dom": "^18.3.0",
"@types/react-syntax-highlighter": "^15.5.13",
"@vitejs/plugin-react": "4.3.1",
"@xterm/addon-fit": "^0.10.0",
"@xterm/xterm": "^5.5.0",
"autoprefixer": "^10.4.19",
"babel-plugin-transform-import-meta": "^2.3.3",
"body-parser": "~1.18.3",
"boolean": "~1.0.0",
"chained-function": "~0.5.0",
"chart.js": "^4.4.7",
"class-variance-authority": "^0.7.0",
"classnames": "^2.5.1",
"cli-color": "~1.4.0",
"cmdk": "^1.0.0",
"colornames": "~1.1.1",
"concaveman": "^2.0.0",
"concurrently": "~4.1.0",
"coveralls": "^3.1.1",
"cross-env": "^10.1.0",
"cypress": "^13.4.0",
"cypress-grep": "^3.0.4",
"cypress-mochawesome-reporter": "^4.0.2",
"cypress-multi-reporters": "^2.0.5",
"cypress-real-events": "^1.11.0",
"date-fns": "^4.1.0",
"detect-browser": "~4.4.0",
"dotenv": "~7.0.0",
"electron": "^38.2.0",
"electron-builder": "^26.16.1",
"electron-reloader": "^1.2.3",
"embla-carousel-react": "^8.2.0",
"esbuild": "^0.25.10",
"esbuild-register": "^3.6.0",
"file-saver": "^2.0.5",
"gamepad.js": "^2.1.0",
"github-release-cli": "~1.1.0",
"html-react-parser": "^5.2.2",
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"lucide-react": "^0.428.0",
"memoize-one": "~5.0.4",
"mocha-junit-reporter": "^2.2.1",
"mochawesome": "^7.1.4",
"mochawesome-merge": "^5.1.1",
"mochawesome-report-generator": "^6.3.2",
"moment": "^2.30.1",
"mousetrap": "~1.6.3",
"namespace-constants": "^1.0.1",
"next-themes": "^0.4.3",
"nib": "^1.2.0",
"node-gyp": "^9.3.1",
"nodemon": "^3.1.10",
"objtools": "~2.0.0",
"pkg": "^5.8.1",
"postcss": "^8.4.47",
"postcss-cli": "^11.0.1",
"progress": "~2.0.3",
"prop-types": "^15.8.1",
"pubsub-js": "~1.9.4",
"react-chartjs-2": "^5.3.0",
"react-hook-form": "^7.52.2",
"react-icons": "^5.3.0",
"react-infinite-tree": "~0.7.1",
"react-intersection-observer": "^9.15.1",
"react-markdown": "^8.0.3",
"react-qr-code": "^2.0.11",
"react-redux": "^7.2.4",
"react-responsive": "^10.0.1",
"react-router": "^7.1.5",
"react-select": "^4.3.0",
"react-syntax-highlighter": "^16.1.0",
"redux-devtools": "^3.7.0",
"redux-saga": "^1.1.3",
"sha1": "~1.1.1",
"socket.io-client": "^4.1.3",
"sonner": "^2.0.7",
"stylint": "^2.0.0",
"stylus": "^0.64.0",
"tailwind-variants": "^0.2.1",
"tailwindcss": "^3.4.13",
"tailwindcss-animate": "^1.0.7",
"tap": "~12.6.2",
"three": "^0.182.0",
"ts-jest": "^29.4.6",
"universal-logger": "~1.0.1",
"universal-logger-browser": "~1.0.2",
"use-long-press": "^3.2.0",
"vaul": "^1.1.2",
"vite": "^7.3.1",
"vite-css-modules": "^1.11.1",
"vite-plugin-node-polyfills": "0.23.0",
"vite-tsconfig-paths": "5.0.1",
"xterm": "^5.3.0",
"xterm-addon-fit": "^0.8.0"
},
"resolutions": {
"@react-pdf/image": "3.0.4"
},
"packageManager": "yarn@1.22.22"
}
b6d6e761eThis file is pinned to the selected release. Download the original to open it in your design tool.