jam/package.json

167 lines
7 KiB
JSON

{
"name": "jam",
"version": "2.0.0-SNAPSHOT",
"private": true,
"description": "Your sats. Your privacy. Your profit.",
"repository": "git@github.com:joinmarket-webui/jam.git",
"license": "MIT",
"type": "module",
"engines": {
"node": ">=24.11.1",
"npm": ">=11.6.2"
},
"scripts": {
"dev": "npm run dev:ng:native",
"dev:ng:native": "JAM_BACKEND=joinmarket-ng JMOBWATCH_PORT=31800 VITE_JAM_DEV_MODE=true vite",
"dev:ng:jam-standalone": "JAM_BACKEND=jam-standalone JAM_API_PORT=29080 VITE_JAM_DEV_MODE=true vite",
"dev:clientserver:native": "JAM_BACKEND=joinmarket-clientserver JMWALLETD_API_PORT=30183 JMWALLETD_WEBSOCKET_PORT=30283 JMOBWATCH_PORT=30601 VITE_JAM_DEV_MODE=true vite",
"dev:clientserver:jam-standalone": "JAM_BACKEND=jam-standalone JAM_API_PORT=31080 VITE_JAM_DEV_MODE=true vite",
"build": "tsc -b && vite build",
"lint": "npm run lint:check",
"lint:check": "eslint .",
"lint:fix": "eslint . --fix",
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
"format:write": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
"format": "npm run lint:fix && npm run format:write",
"preview": "vite preview",
"storybook": "npm run storybook:up",
"storybook:up": "storybook dev -p 6006",
"storybook:build": "storybook build --disable-telemetry",
"storybook:build-gh-pages": "STORYBOOK_MSW_SERVICE_WORKER_URL=./mockServiceWorker.js npm run storybook:build",
"storybook:serve-static": "cd storybook-static/ && python3 -m http.server",
"test": "NODE_OPTIONS=--no-webstorage vitest run",
"test:unit": "NODE_OPTIONS=--no-webstorage vitest run --project unit",
"test:storybook": "NODE_OPTIONS=--no-webstorage vitest run --project storybook",
"check": "npm run format && npm run test && npm run build",
"regtest:build": "npm run regtest:clear && npm run regtest:pull && docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml build --pull",
"regtest:pull": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml pull",
"regtest:rebuild": "rm -rf docker/regtest/.tmp && npm run regtest:build -- --no-cache",
"regtest:clear": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml down --volumes --remove-orphans",
"regtest:up": "./docker/regtest/prepare-setup.sh && docker compose --env-file docker/regtest/.env.generated --file docker/regtest/docker-compose.yml up --detach --wait --wait-timeout 120",
"regtest:down": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml down",
"regtest:logs:all": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml logs --follow",
"regtest:logs": "npm run regtest:logs:ng:native:jmwalletd",
"regtest:logs:ng:native:jmwalletd": "docker logs -f jm_regtest_joinmarket",
"regtest:logs:ng:obwatch": "docker logs -f jm_regtest_joinmarket_ng_orderbook_watcher",
"regtest:logs:obwatch": "npm run regtest:logs:ng:obwatch",
"regtest:logs:ng:directory_node": "docker exec -t jm_regtest_joinmarket_directory_node tail -f /var/log/jam/directory_node_stdout.log -n 200",
"regtest:logs:clientserver:native:jmwalletd": "docker exec -t jm_regtest_joinmarket3 tail -f /var/log/jam/jmwalletd_stdout.log",
"regtest:logs:clientserver:native:schedule": "docker exec -t jm_regtest_joinmarket3 tail -f /root/.joinmarket/logs/TUMBLE.schedule",
"regtest:init": "./docker/regtest/init-setup.sh",
"regtest:mine": "watch -n 11 ./docker/regtest/mine-block.sh"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
],
"*.{json,css,md}": "prettier --write"
},
"browserslist": {
"production": [
"> 0.5%",
"last 2 versions",
"not dead",
"not op_mini all"
]
},
"dependencies": {
"@hookform/resolvers": "5.4.0",
"@joinmarket-webui/joinmarket-api-ts": "0.3.0",
"@noble/hashes": "2.2.0",
"@radix-ui/react-accordion": "1.2.14",
"@radix-ui/react-avatar": "1.2.0",
"@radix-ui/react-checkbox": "1.3.5",
"@radix-ui/react-dialog": "1.1.17",
"@radix-ui/react-dropdown-menu": "2.1.18",
"@radix-ui/react-label": "2.1.10",
"@radix-ui/react-popover": "1.1.17",
"@radix-ui/react-radio-group": "1.4.1",
"@radix-ui/react-select": "2.3.1",
"@radix-ui/react-separator": "1.1.10",
"@radix-ui/react-slot": "1.3.0",
"@radix-ui/react-switch": "1.3.1",
"@radix-ui/react-tabs": "1.1.15",
"@radix-ui/react-tooltip": "1.2.10",
"@scure/bip32": "2.2.0",
"@scure/bip39": "2.2.0",
"@tailwindcss/vite": "4.3.1",
"@tanstack/match-sorter-utils": "8.19.4",
"@tanstack/react-query": "5.101.0",
"@tanstack/react-table": "8.21.3",
"bitcoin-address-validation": "3.0.0",
"class-variance-authority": "0.7.1",
"clsx": "2.1.1",
"html5-qrcode": "2.3.8",
"i18next-browser-languagedetector": "8.2.1",
"lucide-react": "1.20.0",
"next-themes": "0.4.6",
"qrcode": "1.5.4",
"radix-ui": "1.6.0",
"react": "19.2.7",
"react-dom": "19.2.7",
"react-hook-form": "7.79.0",
"react-i18next": "17.0.8",
"react-router-dom": "7.18.0",
"react-use-websocket": "4.13.0",
"sonner": "2.0.7",
"tailwind-merge": "3.6.0",
"tailwindcss": "4.3.1",
"tw-animate-css": "1.4.0",
"yup": "1.7.1",
"zustand": "5.0.14"
},
"devDependencies": {
"@chromatic-com/storybook": "5.2.1",
"@eslint/js": "9.39.4",
"@playwright/test": "1.61.0",
"@storybook/addon-a11y": "10.4.6",
"@storybook/addon-docs": "10.4.6",
"@storybook/addon-vitest": "10.4.6",
"@storybook/react-vite": "10.4.6",
"@tanstack/eslint-plugin-query": "5.101.0",
"@testing-library/jest-dom": "6.9.1",
"@testing-library/react": "16.3.2",
"@testing-library/user-event": "14.6.1",
"@trivago/prettier-plugin-sort-imports": "6.0.2",
"@types/node": "24.12.4",
"@types/qrcode": "1.5.6",
"@types/react": "19.2.17",
"@types/react-dom": "19.2.3",
"@vitejs/plugin-react": "6.0.2",
"@vitest/browser": "4.1.9",
"@vitest/browser-playwright": "4.1.9",
"@vitest/coverage-v8": "4.1.9",
"conventional-changelog": "7.2.0",
"eslint": "9.39.4",
"eslint-plugin-compat": "7.0.2",
"eslint-plugin-react-hooks": "7.1.1",
"eslint-plugin-react-refresh": "0.5.3",
"eslint-plugin-storybook": "10.4.6",
"eslint-plugin-unicorn": "64.0.0",
"globals": "17.6.0",
"husky": "9.1.7",
"jsdom": "29.1.1",
"lint-staged": "17.0.7",
"msw": "2.14.6",
"msw-storybook-addon": "2.0.7",
"prettier": "3.8.4",
"prettier-plugin-tailwindcss": "0.8.0",
"storybook": "10.4.6",
"typescript": "6.0.3",
"typescript-eslint": "8.61.1",
"vite": "8.0.16",
"vitest": "4.1.9"
},
"overrides": {
"storybook": "$storybook",
"@joinmarket-webui/joinmarket-api-ts": {
"@tanstack/react-query": "$@tanstack/react-query"
}
},
"msw": {
"workerDirectory": [
"public"
]
}
}