{ "name": "xyz.chatboxapp.app", "productName": "xyz.chatboxapp.app", "version": "0.0.1", "license": "GPL-3.0 license", "description": "A desktop client for multiple cutting-edge AI models", "main": "./src/main/main.ts", "scripts": { "build": "concurrently \"npm run build:main\" \"npm run build:renderer\"", "build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts", "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", "postinstall": "ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts", "package": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never", "package:all": "ts-node ./.erb/scripts/clean.js dist && npm run build && electron-builder build --publish never --win --mac --linux", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", "dev": "npm start", "start": "ts-node ./.erb/scripts/check-port-in-use.js && npm run start:renderer", "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", "start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts", "start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts", "test": "jest", "lint": "cross-env NODE_ENV=development eslint . --ext .js,.jsx,.ts,.tsx", "check": "npx tsc --noEmit", "prettier": "cross-env prettier -w ./src/**/*.{ts,tsx,json,css}", "prepare": "husky" }, "repository": { "type": "git", "url": "https://github.com/Bin-Huang/chatbox.git" }, "keywords": [], "author": { "name": "bennhuang", "email": "tohuangbin@gmail.com" }, "devDependencies": { "@electron/notarize": "^2.0.0", "@electron/rebuild": "^3.2.13", "@faker-js/faker": "^8.0.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@svgr/webpack": "^8.0.1", "@teamsupercell/typings-for-css-modules-loader": "^2.5.2", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", "@types/gtag.js": "^0.0.13", "@types/highlight.js": "^10.1.0", "@types/jest": "^29.5.2", "@types/katex": "^0.16.2", "@types/lodash": "^4.14.197", "@types/mark.js": "^8.11.12", "@types/markdown-it": "^12.2.3", "@types/markdown-it-link-attributes": "^3.0.1", "@types/node": "20.2.5", "@types/react": "^18.2.8", "@types/react-dom": "^18.2.4", "@types/react-syntax-highlighter": "^15.5.9", "@types/react-test-renderer": "^18.0.0", "@types/store": "^2.0.2", "@types/terser-webpack-plugin": "^5.0.4", "@types/uuid": "^9.0.1", "@types/webpack-bundle-analyzer": "^4.6.0", "@typescript-eslint/eslint-plugin": "^5.59.8", "@typescript-eslint/parser": "^5.59.8", "autoprefixer": "^10.4.14", "browserslist-config-erb": "^0.0.3", "chalk": "^4.1.2", "concurrently": "^8.1.0", "core-js": "^3.34.0", "cross-env": "^7.0.3", "css-loader": "^6.8.1", "css-minimizer-webpack-plugin": "^5.0.0", "detect-port": "^1.5.1", "dotenv": "^16.3.1", "electron": "^22.3.13", "electron-builder": "^24.13.3", "electron-devtools-installer": "^3.2.0", "electronmon": "^2.0.2", "eslint": "^8.42.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-erb": "^4.0.6", "eslint-import-resolver-typescript": "^3.5.5", "eslint-import-resolver-webpack": "^0.13.2", "eslint-plugin-compat": "^4.1.4", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^7.2.13", "html-webpack-plugin": "^5.5.1", "husky": "^9.0.11", "identity-obj-proxy": "^3.0.0", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "mini-css-extract-plugin": "^2.7.6", "node-loader": "^2.0.0", "postcss": "^8.4.25", "postcss-loader": "^7.3.3", "prettier": "^2.8.8", "react-refresh": "^0.14.0", "react-test-renderer": "^18.2.0", "rimraf": "^5.0.1", "sass": "^1.62.1", "sass-loader": "^13.3.1", "style-loader": "^3.3.3", "tailwindcss": "^3.3.2", "terser-webpack-plugin": "^5.3.9", "ts-jest": "^29.1.0", "ts-loader": "^9.4.3", "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.0.1", "typescript": "^4.9.5", "url-loader": "^4.1.1", "webpack": "^5.85.0", "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^5.1.1", "webpack-dev-server": "^4.15.0", "webpack-merge": "^5.9.0" }, "dependencies": { "@braintree/sanitize-url": "^6.0.4", "@dnd-kit/core": "^6.0.8", "@dnd-kit/modifiers": "^6.0.1", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", "@mui/icons-material": "^5.11.11", "@mui/material": "^5.11.11", "@radix-ui/react-dialog": "^1.0.5", "@sentry/react": "^7.73.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "clsx": "^2.0.0", "copy-to-clipboard": "^3.3.3", "electron-debug": "^3.2.0", "electron-log": "^4.4.8", "electron-store": "^8.1.0", "electron-updater": "^5.3.0", "eventsource-parser": "^1.0.0", "form-data": "^4.0.0", "fs-extra": "^11.1.1", "highlight.js": "^11.7.0", "i18next": "^22.4.13", "jotai": "^2.1.0", "jotai-optics": "^0.3.0", "js-tiktoken": "^1.0.7", "lodash": "^4.17.21", "lucide-react": "^0.285.0", "ofetch": "^1.0.1", "optics-ts": "^2.4.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-i18next": "^12.2.0", "react-markdown": "^9.0.0", "react-router-dom": "^6.11.2", "react-syntax-highlighter": "^15.5.0", "react-zoom-pan-pinch": "^3.4.4", "rehype-katex": "^7.0.0", "remark-breaks": "^4.0.0", "remark-gfm": "^4.0.0", "remark-math": "^6.0.0", "sanitize-filename": "^1.6.3", "tailwind-merge": "^1.14.0", "tailwindcss-animate": "^1.0.7", "uuid": "^9.0.0", "web-vitals": "^2.1.4" }, "browserslist": [], "prettier": { "tabWidth": 4, "singleQuote": true, "printWidth": 120, "semi": false, "overrides": [ { "files": [ ".prettierrc", ".eslintrc" ], "options": { "parser": "json" } } ] }, "build": { "productName": "Chatbox", "appId": "xyz.chatboxapp.app", "asar": true, "asarUnpack": "**\\*.{node,dll}", "files": [ "dist", "node_modules", "package.json" ], "afterSign": ".erb/scripts/notarize.js", "mac": { "notarize": false, "category": "public.app-category.developer-tools", "target": { "target": "default", "arch": [ "arm64", "x64" ] }, "type": "distribution", "hardenedRuntime": true, "entitlements": "assets/entitlements.mac.plist", "entitlementsInherit": "assets/entitlements.mac.plist", "gatekeeperAssess": false }, "dmg": { "contents": [ { "x": 130, "y": 220 }, { "x": 410, "y": 220, "type": "link", "path": "/Applications" } ] }, "win": { "target": [ { "target": "nsis", "arch": [ "x64", "arm64" ] } ], "verifyUpdateCodeSignature": false, "artifactName": "${productName}-${version}-Setup.${ext}", "signingHashAlgorithms": [ "sha256" ] }, "nsis": { "oneClick": false, "allowToChangeInstallationDirectory": true }, "linux": { "target": [ { "target": "AppImage", "arch": [ "x64", "arm64" ] }, { "target": "deb", "arch": [ "x64", "arm64" ] } ], "category": "Development", "artifactName": "${productName}-${version}-${arch}.${ext}" }, "directories": { "app": "release/app", "buildResources": "assets", "output": "release/build" }, "extraResources": [ "./assets/**" ], "publish": [ { "provider": "s3", "bucket": "chatbox", "endpoint": "https://323943171e765db4cc94a7f640e57cb0.r2.cloudflarestorage.com", "path": "/releases" }, { "provider": "github", "owner": "Bin-Huang", "repo": "chatbox" } ] }, "devEngines": { "node": ">=14.x", "npm": ">=7.x" }, "electronmon": { "patterns": [ "!**/**", "src/main/**" ], "logLevel": "quiet" } }