An easy-to-use platform for EEG experimentation in the classroom
at main 247 lines 7.0 kB view raw
1{ 2 "name": "brainwaves", 3 "productName": "BrainWaves", 4 "version": "1.0.0", 5 "description": "EEG Experiment Desktop Application", 6 "main": "./out/main/index.js", 7 "scripts": { 8 "dev": "node internals/scripts/patchDeps.mjs && electron-vite dev", 9 "build": "electron-vite build", 10 "postbuild": "node internals/scripts/BuildViewers.mjs", 11 "preview": "electron-vite preview", 12 "package": "npm run build && electron-builder build --publish never", 13 "package-all": "npm run build && electron-builder build --mac --win --linux", 14 "package-ci": "npm run build && electron-builder build --publish always", 15 "package-mac": "npm run build && electron-builder build --mac", 16 "package-linux": "npm run build && electron-builder build --linux", 17 "package-win": "npm run build && electron-builder build --win --x64", 18 "postinstall": "electron-builder install-app-deps && node internals/scripts/InstallPyodide.mjs && node internals/scripts/InstallMNE.mjs && node internals/scripts/patchDeps.mjs", 19 "install-pyodide": "node internals/scripts/InstallPyodide.mjs && node internals/scripts/InstallMNE.mjs", 20 "lint": "cross-env NODE_ENV=development eslint . --cache", 21 "lint-fix": "npm run lint -- --fix", 22 "lint-styles": "stylelint '**/*.*(css|scss)'", 23 "lint-styles-fix": "npm run lint-styles -- --fix; exit 0", 24 "postlint-fix": "prettier --single-quote --write '**/*.{ts,tsx,js,jsx,json,html,css,less,scss,yml}'", 25 "postlint-styles-fix": "prettier --single-quote --write '**/*.{css,scss}'", 26 "test": "vitest run", 27 "test:watch": "vitest", 28 "test-all": "npm run lint && npm run lint-styles && npm run typecheck && npm run build && npm test", 29 "tsc": "tsc --noEmit", 30 "typecheck": "tsc --noEmit" 31 }, 32 "lint-staged": { 33 "*.{js,jsx,ts,tsx}": [ 34 "cross-env NODE_ENV=development eslint --cache" 35 ], 36 "{*.json,.{prettierrc,stylelintrc}}": [ 37 "prettier --parser json --write" 38 ], 39 "*.{css,scss}": [ 40 "stylelint --fix", 41 "prettier --single-quote --write" 42 ], 43 "*.{html,md,yml}": [ 44 "prettier --single-quote --write" 45 ] 46 }, 47 "build": { 48 "productName": "BrainWaves", 49 "appId": "com.electron.brainwaves", 50 "asar": true, 51 "files": [ 52 "out/**/*", 53 "node_modules/**/*", 54 "package.json" 55 ], 56 "dmg": { 57 "contents": [ 58 { 59 "x": 130, 60 "y": 220 61 }, 62 { 63 "x": 410, 64 "y": 220, 65 "type": "link", 66 "path": "/Applications" 67 } 68 ] 69 }, 70 "win": { 71 "target": [ 72 "nsis", 73 "msi" 74 ] 75 }, 76 "linux": { 77 "target": [ 78 "deb", 79 "rpm", 80 "AppImage" 81 ], 82 "category": "Education" 83 }, 84 "directories": { 85 "buildResources": "resources", 86 "output": "release" 87 }, 88 "publish": { 89 "provider": "github", 90 "owner": "makebrainwaves", 91 "repo": "brainwaves", 92 "private": false 93 }, 94 "extraResources": [ 95 { 96 "from": "./src/renderer/experiments/", 97 "to": "experiments", 98 "filter": "**/*" 99 }, 100 { 101 "from": "./src/renderer/utils/webworker/src/", 102 "to": "pyodide", 103 "filter": "**/*" 104 } 105 ] 106 }, 107 "repository": { 108 "type": "git", 109 "url": "git+https://github.com/makebrainwaves/BrainWaves" 110 }, 111 "author": { 112 "name": "Dano Morrison", 113 "email": "dano@neurotechx.com", 114 "url": "https://github.com/makebrainwaves" 115 }, 116 "contributors": [ 117 { 118 "name": "Teon L Brooks", 119 "url": "https://teonbrooks.com" 120 }, 121 { 122 "name": "Yury Shevchenko", 123 "url": "https://yuryshevchenko.com/" 124 } 125 ], 126 "license": "MIT", 127 "keywords": [ 128 "eeg", 129 "electron", 130 "react", 131 "redux", 132 "redux-observable", 133 "muse", 134 "emotiv", 135 "pyodide", 136 "wasm", 137 "lab.js" 138 ], 139 "homepage": "https://github.com/makebrainwaves/BrainWaves/", 140 "devDependencies": { 141 "@babel/plugin-proposal-class-properties": "^7.10.4", 142 "@babel/plugin-proposal-decorators": "^7.10.5", 143 "@testing-library/dom": "^10.4.1", 144 "@testing-library/jest-dom": "^6.4.0", 145 "@testing-library/react": "^16.0.0", 146 "@types/node": "^22.12.0", 147 "@types/react": "^18.x", 148 "@types/react-dom": "^18.x", 149 "@types/react-plotly.js": "^2.6.4", 150 "@types/redux-logger": "^3.0.8", 151 "@typescript-eslint/eslint-plugin": "^8.56.0", 152 "@typescript-eslint/parser": "^8.56.0", 153 "@vitejs/plugin-react": "^4.0.0", 154 "autoprefixer": "^10.4.0", 155 "chalk": "^4.1.0", 156 "cross-env": "^7.0.0", 157 "electron": "^39.6.1", 158 "electron-builder": "^26.8.1", 159 "electron-vite": "^5.0.0", 160 "eslint": "^9.39.2", 161 "eslint-config-prettier": "^10.1.8", 162 "eslint-plugin-import": "^2.32.0", 163 "eslint-plugin-jsx-a11y": "^6.10.2", 164 "eslint-plugin-prettier": "^5.5.5", 165 "eslint-plugin-react": "^7.37.5", 166 "eslint-plugin-react-hooks": "^5.2.0", 167 "husky": "^8.0.0", 168 "jsdom": "^25.0.0", 169 "lint-staged": "^16.2.7", 170 "postcss": "^8.4.0", 171 "prettier": "^3.8.1", 172 "redux-logger": "^3.0.6", 173 "rimraf": "^6.1.3", 174 "sass": "^1.50.0", 175 "stylelint": "^17.3.0", 176 "stylelint-config-standard": "^40.0.0", 177 "tailwindcss": "^3.4.0", 178 "tar-fs": "^2.1.4", 179 "typescript": "^5.0.0", 180 "unbzip2-stream": "1.4.2", 181 "vite": "^7.3.1", 182 "vitest": "^3.0.0" 183 }, 184 "dependencies": { 185 "@electron-toolkit/preload": "^3.0.2", 186 "@electron-toolkit/utils": "^4.0.0", 187 "@fortawesome/fontawesome-free": "^5.13.0", 188 "@neurosity/pipes": "^5.2.1", 189 "@radix-ui/react-dialog": "^1.1.0", 190 "@radix-ui/react-dropdown-menu": "^2.1.0", 191 "@radix-ui/react-select": "^2.2.6", 192 "@radix-ui/react-slot": "^1.1.0", 193 "@reduxjs/toolkit": "^2.11.2", 194 "ajv": "^8.18.0", 195 "caniuse-lite": "^1.0.30001241", 196 "class-variance-authority": "^0.7.0", 197 "clsx": "^2.1.0", 198 "d3": "^7.9.0", 199 "dayjs": "^1.11.19", 200 "electron-log": "^5.4.3", 201 "electron-updater": "^6.8.3", 202 "events": "^3.3.0", 203 "lab.js": "23.0.0-alpha4", 204 "lodash": "^4.17.15", 205 "mkdirp": "^1.0.4", 206 "mousetrap": "^1.6.5", 207 "muse-js": "^3.1.0", 208 "papaparse": "^5.5.3", 209 "pathe": "^2.0.3", 210 "plotly.js": "^3.4.0", 211 "pyodide": "^0.29.3", 212 "rc-slider": "9.2.4", 213 "react": "^18.x", 214 "react-dom": "^18.x", 215 "react-plotly.js": "^2.6.0", 216 "react-redux": "^9.2.0", 217 "react-router-dom": "^6.26.0", 218 "react-toastify": "^11.x", 219 "redux": "^5.x", 220 "redux-observable": "^2.0.0-rc.2", 221 "redux-thunk": "^2.3.0", 222 "rxjs": "^7.8.2", 223 "simple-statistics": "^7.1.0", 224 "simplify-js": "^1.2.4", 225 "tailwind-merge": "^2.3.0", 226 "typesafe-actions": "^5.1.0", 227 "ws": "^8.19.0" 228 }, 229 "overrides": { 230 "react": "^18.x", 231 "react-dom": "^18.x", 232 "yauzl": "^3.2.1" 233 }, 234 "engines": { 235 "node": "^20.19.0 || >=22.12.0", 236 "npm": ">=8.x" 237 }, 238 "prettier": { 239 "singleQuote": true, 240 "trailingComma": "es5" 241 }, 242 "stylelint": { 243 "extends": [ 244 "stylelint-config-standard" 245 ] 246 } 247}