{
  "name": "songwhip-web-app",
  "version": "3.0.0",
  "private": true,
  "license": "UNLICENSED",
  "packageManager": "yarn@1.22.22",
  "engines": {
    "node": "24.x"
  },
  "scripts": {
    "build": "yarn build:app",
    "build:app": "NODE_ENV=production NODE_OPTIONS=\"--openssl-legacy-provider\" next build --no-lint",
    "build:icons": "yarn tsx ./build/icons/buildIcons.ts",
    "start": "NODE_OPTIONS=\"--max-http-header-size=1000000\" NODE_ENV=production next start -p ${PORT:-3000}",
    "dev": "yarn i18n:watch & NODE_OPTIONS=\"--max-http-header-size=1000000\" next dev -p ${PORT:-3000}",
    "dev:staging": "dotenv -e .env.staging -e .env -- yarn dev",
    "dev:production": "dotenv -e .env.production -e .env -- yarn dev",
    "clean": "rm -rf node_modules **/node_modules .next",
    "check-bundle": "BUNDLE_ANALYZE=browser yarn build",
    "format": "prettier --write .",
    "postinstall": "scripts/post-install",
    "i18n:sync": "frontend-i18n sync",
    "i18n:download": "yarn i18n:sync -d",
    "i18n:init": "frontend-i18n init",
    "i18n:watch": "frontend-i18n watch",
    "test": "yarn i18n:init && yarn test:format && yarn test:types && yarn test:unit && yarn test:lint",
    "test:unit": "jest --config test/unit/jest.config.js",
    "test:watch": "yarn run test:unit --watch",
    "test:types": "tsc --project tsconfig.json && yarn test:types:cypress && yarn test:types:edgeWorker",
    "test:types:edgeWorker": "cd edgeWorker && yarn test:types",
    "test:types:cypress": "tsc --project test/cypress/tsconfig.json",
    "test:cypress:e2e:run:staging": "dotenv -e test/cypress/e2e/.env.staging -e test/cypress/e2e/.env -- cypress run -C test/cypress/e2e/cypress.config.staging.ts --e2e --browser chrome",
    "test:cypress:e2e:run:production": "dotenv -e test/cypress/e2e/.env.production -e test/cypress/e2e/.env -- cypress run -C test/cypress/e2e/cypress.config.production.ts --e2e --browser chrome",
    "test:cypress:e2e:staging": "dotenv -e test/cypress/e2e/.env.staging -e test/cypress/e2e/.env -- cypress open -C test/cypress/e2e/cypress.config.staging.ts --e2e --browser chrome",
    "test:cypress:e2e:production": "dotenv -e test/cypress/e2e/.env.production -e test/cypress/e2e/.env -- cypress open -C test/cypress/e2e/cypress.config.production.ts --e2e --browser chrome",
    "test:cypress:local:dev:open": "./test/cypress/local/cypress --server-type development open",
    "test:cypress:local:run": "./test/cypress/local/cypress --server-type production run",
    "test:cypress:local:prebuild": "./test/cypress/local/cypress-prebuild",
    "cypress": "./test/cypress/local/cypress",
    "cypress:dev": "yarn run test:cypress:local:dev:open",
    "cypress:dev:logs": "cd test/cypress/local/services && docker compose logs",
    "cypress:run": "yarn run test:cypress:local:run",
    "cypress:run:spec": "run(){ yarn test:cypress:local:run --spec \"**/*$1*\" \"${@:2}\"; }; run",
    "test:lint": "yarn test:lint:app && yarn test:lint:cypress",
    "test:lint:app": "next lint --quiet",
    "test:lint:cypress": "eslint --ext .js,.ts --quiet test/cypress",
    "test:format": "git ls-files -z | xargs -0 prettier --ignore-unknown --check",
    "test:edge-worker": "(cd edgeWorker && yarn test)",
    "test:k6": "./test/k6/scripts/run",
    "test:k6:dev": "./test/k6/scripts/dev",
    "test:playwright": "playwright test",
    "test:playwright:install": "playwright install",
    "test:playwright:open": "playwright test --ui",
    "test:playwright:dev-api": "API_ENDPOINT=http://localhost:5003/v3 yarn test:playwright",
    "test:playwright:e2e": "playwright test --config e2e.playwright.config.ts",
    "test:playwright:e2e:open": "yarn test:playwright:e2e --ui"
  },
  "dependencies": {
    "@base-ui/react": "^1.5.0",
    "@lexical/html": "^0.45.0",
    "@lexical/link": "^0.45.0",
    "@lexical/react": "^0.45.0",
    "@lexical/selection": "^0.45.0",
    "@lexical/utils": "^0.45.0",
    "@react-input/mask": "^2.0.4",
    "@reduxjs/toolkit": "^2.6.1",
    "@sentry/nextjs": "^10.53.1",
    "@theorchard/songwhip-api": "^1.0.176",
    "@theorchard/songwhip-events": "^3.0.6",
    "@theorchard/songwhip-lookup": "^1.0.32",
    "@theorchard/songwhip-utils": "^1.2.1",
    "@theorchard/suite-i18n-localization": "^1.2.6",
    "@theorchard/suite-icons": "^3.41.0",
    "accept-language-parser": "^1.5.0",
    "chartist": "^0.11.4",
    "classnames": "^2.2.6",
    "countries-list": "^2.5.0",
    "country-emoji": "^1.4.1",
    "crypto-js": "^4.2.0",
    "debug": "^4.3.1",
    "form-data": "^4.0.0",
    "haversine-distance": "^1.2.1",
    "hls.js": "^1.6.2",
    "isomorphic-dompurify": "^3.18.0",
    "jsonwebtoken": "^9.0.0",
    "lexical": "^0.45.0",
    "lodash-es": "^4.17.20",
    "mitt": "^3.0.1",
    "next": "^15.5.19",
    "nprogress": "^0.2.0",
    "parse-domain": "^7.0.1",
    "randombytes": "^2.1.0",
    "react": "19.1.4",
    "react-dom": "19.1.4",
    "react-easy-crop": "^4.2.0",
    "react-hook-form": "^7.79.0",
    "react-redux": "^9.2.0",
    "reselect": "^5.1.1",
    "smoothscroll-polyfill": "^0.4.4",
    "swr": "^2.4.1",
    "tinycolor2": "^1.4.2",
    "uuid": "^13.0.0"
  },
  "devDependencies": {
    "@actions/core": "^1.9.1",
    "@babel/plugin-transform-typescript": "^7.27.0",
    "@ianvs/prettier-plugin-sort-imports": "^4.4.1",
    "@next/bundle-analyzer": "^15.3.1",
    "@playwright/test": "^1.60.0",
    "@simonsmith/cypress-image-snapshot": "^10.0.0",
    "@stylexjs/babel-plugin": "^0.18.3",
    "@stylexjs/postcss-plugin": "^0.18.3",
    "@testing-library/dom": "^10.4.0",
    "@testing-library/react": "^16.3.0",
    "@theorchard/frontend-cli-i18n": "^2.0.7",
    "@types/accept-language-parser": "^1.5.3",
    "@types/cheerio": "^0.22.18",
    "@types/fernet": "^0.4.1",
    "@types/google.maps": "^3.53.1",
    "@types/intercom-web": "^2.8.24",
    "@types/jest": "^29.5.14",
    "@types/jsonwebtoken": "^9.0.7",
    "@types/k6": "^0.44.2",
    "@types/lodash-es": "^4.17.4",
    "@types/node": "^20",
    "@types/react": "^19.1.2",
    "@types/react-dom": "^19.1.2",
    "autoprefixer": "^10.5.0",
    "babel-plugin-tsconfig-paths-module-resolver": "^1.0.4",
    "buffer": "^6.0.3",
    "chalk": "^5.3.0",
    "cheerio": "^1.1.2",
    "clipboardy": "^2.3.0",
    "cypress": "^14.2.3",
    "cypress-real-events": "^1.14.0",
    "cypress-split": "^1.24.0",
    "cypress-terminal-report": "^7.3.3",
    "cypress-wait-until": "^3.0.2",
    "dotenv": "^16.0.0",
    "dotenv-cli": "^7.4.2",
    "eslint": "^8.57.0",
    "eslint-config-cypress": "^0.28.0",
    "eslint-config-next": "15.2.4",
    "eslint-plugin-jest": "^28.11.0",
    "glob": "^7.1.4",
    "husky": "^3.0.3",
    "jest": "^29.7.0",
    "jest-environment-jsdom": "^29.7.0",
    "jest-transform-stub": "2.0.0",
    "nock": "^13.2.4",
    "patch-package": "^8.0.0",
    "prettier": "^3.5.3",
    "schema-dts": "^1.1.0",
    "svgo": "^3.3.2",
    "tsx": "^4.19.4",
    "typescript": "^5.4.5",
    "utility-types": "^3.10.0",
    "vercel": "^41.6.0",
    "webpack": "^5.99.7",
    "zod": "^4.1.5"
  },
  "resolutions": {
    "vercel/@vercel/node/path-to-regexp": "^6.3.0",
    "vercel/@vercel/remix-builder/path-to-regexp": "^6.3.0",
    "isomorphic-dompurify/jsdom": "25.0.1",
    "isomorphic-dompurify/jsdom/parse5": "7.3.0"
  },
  "husky": {
    "hooks": {
      "pre-push": "yarn test"
    }
  }
}
