{
    "name": "frontend-royalties",
    "version": "1.0.0",
    "description": "UI for Abacus application.",
    "url": "https://github.com/theorchard/frontend-royalties",
    "author": "The Orchard",
    "license": "UNLICENSED",
    "engines": {
        "node": ">=24"
    },
    "scripts": {
        "build": "yarn frontend build",
        "build:analyze": "GENERATE_BUNDLE_REPORT=1 yarn build",
        "preview": "CDN_URL=/ yarn build && npx serve -s -p 8080 build",
        "format": "prettier --write .",
        "format:check": "prettier --check .",
        "lint": "yarn lint:css && yarn lint:js --quiet",
        "lint:css": "stylelint 'src/**/*.scss'",
        "lint:js": "eslint --ext .js,.ts,.tsx,.jsx --cache --cache-location .cache/.eslintcache src",
        "start": "frontend start",
        "test": "yarn format:check && yarn lint && yarn check:types && yarn test:unit",
        "test:unit": "jest --coverage",
        "test:unit:watch": "DEBUG_PRINT_LIMIT=10000 yarn test:unit --watch",
        "watch": "yarn test:unit:watch",
        "check:types": "./scripts/checkGeneratedTypes.sh",
        "check:dead-code": "knip --no-progress --cache",
        "generate:types": "yarn graphql-codegen --config codegen.ts"
    },
    "eslintConfig": {
        "extends": "@theorchard/react-ts-prettier",
        "globals": {
            "process": "readonly",
            "require": "readonly"
        },
        "rules": {
            "object-curly-spacing": [
                "error",
                "always"
            ],
            "react/jsx-key": "warn",
            "react-hooks/rules-of-hooks": "warn",
            "testing-library/no-wait-for-multiple-assertions": "warn",
            "no-restricted-imports": [
                "error",
                {
                    "paths": [
                        {
                            "name": "lodash",
                            "message": "Import from 'lodash-es' instead — CommonJS 'lodash' is not tree-shakeable and is not a declared dependency."
                        }
                    ],
                    "patterns": [
                        "lodash/*"
                    ]
                }
            ]
        },
        "overrides": [
            {
                "files": [
                    "**/*.ts",
                    "**/*.tsx"
                ],
                "rules": {
                    "@typescript-eslint/no-unsafe-argument": "off",
                    "@typescript-eslint/no-unsafe-return": "off"
                }
            }
        ],
        "settings": {
            "import/resolver": {
                "typescript": {
                    "project": "./tsconfig.json"
                }
            }
        }
    },
    "prettier": "@theorchard/prettier-config",
    "devDependencies": {
        "@babel/plugin-proposal-class-properties": "^7.18.6",
        "@babel/plugin-proposal-export-default-from": "^7.29.7",
        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
        "@babel/plugin-transform-react-jsx": "^7.29.7",
        "@babel/preset-env": "^7.29.7",
        "@babel/preset-react": "^7.29.7",
        "@graphql-codegen/add": "^5.0.3",
        "@graphql-codegen/cli": "^5.0.7",
        "@graphql-codegen/client-preset": "4.3.3",
        "@graphql-codegen/introspection": "4.0.3",
        "@graphql-codegen/near-operation-file-preset": "^5.2.1",
        "@graphql-codegen/typescript": "^4.1.6",
        "@graphql-codegen/typescript-operations": "^4.6.1",
        "@graphql-tools/jest-transform": "^2.0.1",
        "@testing-library/dom": "^10.4.1",
        "@testing-library/jest-dom": "^6.9.1",
        "@testing-library/react": "^16.3.2",
        "@testing-library/user-event": "^14.6.1",
        "@theorchard/eslint-config-react-ts-prettier": "^2.3.1",
        "@theorchard/frontend-cli": "^4.3.0",
        "@theorchard/jest-config": "^3.0.0",
        "@theorchard/prettier-config": "^1.0.0",
        "@theorchard/stylelint-config-prettier": "^1.1.3",
        "@theorchard/suite-testing": "^3.2.0",
        "@types/file-saver": "^2.0.7",
        "@types/jest": "^29.5.14",
        "@types/react-router-dom": "^5.3.3",
        "@types/spark-md5": "^3.0.5",
        "babel-plugin-react-compiler": "^1.0.0",
        "compression-webpack-plugin": "^11.1.0",
        "dotenv": "^16.6.1",
        "eslint-import-resolver-typescript": "^4.4.5",
        "history": "^4.10.1",
        "jest": "^29.7.0",
        "jest-environment-jsdom": "29.7.0",
        "knip": "^6.16.1",
        "mockdate": "^3.0.5",
        "prettier": "^3.8.3",
        "sass": "^1.79.6",
        "stylelint": "^14.3.0",
        "ts-jest": "^29.4.11",
        "typescript": "5.9.3",
        "webpack-bundle-analyzer": "^4.10.2"
    },
    "dependencies": {
        "@apollo/client": "~3.6.10",
        "@aws-sdk/client-s3": "^3.1060.0",
        "@aws-sdk/lib-storage": "^3.1060.0",
        "@babel/runtime": "^7.29.7",
        "@dnd-kit/core": "^6.3.1",
        "@dnd-kit/sortable": "^10.0.0",
        "@dnd-kit/utilities": "^3.2.2",
        "@theorchard/accounting-apps-shared": "1.11.0",
        "@theorchard/countries": "^3.0.1",
        "@theorchard/frontend-cli-webpack": "^2.4.3",
        "@theorchard/suite-components": "^13.7.0",
        "@theorchard/suite-config": "1.10.0",
        "@theorchard/suite-frontend": "^9.12.0",
        "@theorchard/suite-icons": "7.21.0",
        "@types/lodash-es": "^4.17.12",
        "bignumber.js": "^9.3.1",
        "classnames": "^2.5.1",
        "file-saver": "^2.0.5",
        "graphql": "^15.10.2",
        "husky": "^8.0.3",
        "i18n-iso-countries": "^6.8.0",
        "jszip": "^3.10.1",
        "libphonenumber-js": "^1.13.5",
        "lint-staged": "^13.3.0",
        "lodash-es": "^4.18.0",
        "prop-types": "^15.8.1",
        "react": "^19.2.7",
        "react-dom": "^19.2.7",
        "react-dropzone": "^12.1.0",
        "react-router-dom": "^5.3.4",
        "react-select": "^5.10.2",
        "spark-md5": "^3.0.2",
        "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
    },
    "resolutions": {
        "react": "19.2.7",
        "react-dom": "19.2.7",
        "@babel/plugin-transform-modules-systemjs": "^7.29.4",
        "qs": "^6.15.2",
        "form-data": "4.0.6",
        "picomatch": "^4.0.4",
        "serialize-javascript": "^7.0.5",
        "js-yaml": "^4.1.1",
        "lodash-es": "^4.18.0",
        "lodash": "^4.18.0",
        "yaml": "^2.8.3",
        "brace-expansion": "^2.0.3",
        "follow-redirects": "^1.16.0",
        "@tootallnate/once": "^3.0.1",
        "on-headers": "^1.1.0",
        "micromatch": "^4.0.8",
        "fast-uri": "^3.1.2",
        "fast-xml-builder": "^1.1.7",
        "fast-xml-parser": "^5.7.0",
        "postcss": "^8.5.10",
        "js-cookie": "^3.0.7",
        "uuid": "^14.0.0",
        "webpack-dev-server": "^5.2.4",
        "ws": "^8.20.1",
        "shell-quote": "^1.8.4"
    },
    "browserslist": {
        "production": [
            ">0.2%",
            "not dead",
            "not op_mini all"
        ],
        "development": [
            "last 1 chrome version",
            "last 1 firefox version",
            "last 1 safari version"
        ]
    },
    "lint-staged": {
        "*.{js,jsx,ts,tsx,scss,css,json,md,yaml}": [
            "prettier --write"
        ],
        "*.scss": "stylelint --fix"
    }
}
