{ "name": "jam", "private": true, "version": "0.1.0", "type": "module", "scripts": { "dev": "VITE_JAM_DEV_MODE=true vite", "dev:secondary": "JAM_BACKEND=jam-standalone JAM_API_PORT=29080 npm run dev", "build": "tsc -b && vite build", "lint": "eslint .", "prettier": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,md}\"", "format": "npm run lint -- --fix && npm run prettier", "preview": "vite preview", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "prepare": "husky install", "test": "vitest run", "test:unit": "vitest run --project unit", "test:storybook": "vitest run --project storybook", "check": "npm run format && npm run test && npm run build", "regtest:build": "npm run regtest:clear && docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml build --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:logs": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml logs --follow", "regtest:down": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml down", "regtest:logs:jmwalletd": "docker exec -t jm_regtest_joinmarket tail -f /var/log/jam/jmwalletd_stdout.log", "regtest:logs:schedule": "docker exec -t jm_regtest_joinmarket tail -f /root/.joinmarket/logs/TUMBLE.schedule", "regtest:logs:directory_node": "docker exec -t jm_regtest_joinmarket_directory_node tail -f /var/log/jam/directory_node_stdout.log -n 200", "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" }, "dependencies": { "@noble/hashes": "1.8.0", "@radix-ui/react-accordion": "1.2.11", "@radix-ui/react-avatar": "1.1.10", "@radix-ui/react-dialog": "1.1.14", "@radix-ui/react-label": "2.1.7", "@radix-ui/react-select": "2.2.5", "@radix-ui/react-separator": "1.1.7", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-tooltip": "1.2.7", "@tailwindcss/vite": "4.1.10", "@tanstack/react-query": "5.87.1", "class-variance-authority": "0.7.1", "clsx": "2.1.1", "i18next-browser-languagedetector": "8.2.0", "lucide-react": "0.518.0", "next-themes": "0.4.6", "qrcode": "1.5.4", "react": "19.1.0", "react-dom": "19.1.0", "react-i18next": "15.5.3", "react-router-dom": "7.6.2", "sonner": "2.0.5", "tailwind-merge": "3.3.1", "tailwindcss": "4.1.10", "tw-animate-css": "1.3.4", "zustand": "5.0.7" }, "devDependencies": { "@chromatic-com/storybook": "4.0.0", "@eslint/js": "9.29.0", "@playwright/test": "1.53.1", "@storybook/addon-a11y": "9.0.12", "@storybook/addon-docs": "9.0.12", "@storybook/addon-vitest": "9.0.12", "@storybook/react-vite": "9.0.12", "@trivago/prettier-plugin-sort-imports": "5.2.2", "@types/node": "22.15.29", "@types/qrcode": "1.5.5", "@types/react": "19.1.8", "@types/react-dom": "19.1.6", "@vitejs/plugin-react": "4.5.2", "@vitest/browser": "3.2.4", "conventional-changelog": "7.1.0", "eslint": "9.29.0", "eslint-plugin-react-hooks": "5.2.0", "eslint-plugin-react-refresh": "0.4.20", "eslint-plugin-storybook": "9.0.12", "globals": "16.2.0", "husky": "8.0.0", "lint-staged": "16.1.2", "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.13", "storybook": "9.0.12", "typescript": "~5.8.3", "typescript-eslint": "8.34.1", "vite": "6.3.5", "vitest": "3.2.4" }, "overrides": { "storybook": "$storybook" } }