{ "name": "frontend", "version": "1.1.0", "license": "Apache-2.0", "private": true, "engines": { "node": ">=22" }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^8.0.0", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", "@fontsource-variable/bricolage-grotesque": "^5.3.0", "@fontsource-variable/recursive": "^5.3.0", "@fontsource/ibm-plex-mono": "^5.3.0", "@fontsource/ibm-plex-sans": "^5.3.0", "@mui/icons-material": "^5.11.16", "@mui/material": "^5.12.1", "@openuidev/lang-core": "1.0.1", "@openuidev/react-lang": "1.0.1", "@sentry/react": "^10.65.0", "ajv": "8.20.0", "axios": "^1.3.4", "chart.js": "^4.5.0", "d3": "^7.9.0", "date-fns": "^2.30.0", "emoji-picker-react": "^4.4.9", "i18next": "^26.3.6", "i18next-browser-languagedetector": "^8.2.1", "mammoth": "^1.12.0", "node-emoji": "^2.2.0", "papaparse": "^5.5.3", "react": "^18.2.0", "react-chartjs-2": "^5.3.0", "react-dom": "^18.2.0", "react-i18next": "^17.0.10", "react-markdown": "^10.1.0", "react-router-dom": "^6.11.0", "socket.io-client": "^4.7.2", "zod": "4.6.7" }, "scripts": { "start": "vite", "build": "vite build && node scripts/generate-seo-pages.mjs", "preview": "vite preview", "test": "jest --watchAll=false --forceExit && node --test scripts/generate-seo-pages.test.mjs scripts/nginx-routing.test.mjs scripts/signup-source.test.mjs scripts/ui-card-catalogue.test.mjs scripts/og-card.test.mjs", "test:coverage": "jest --coverage --watchAll=false --forceExit", "typecheck": "tsc --noEmit", "lint": "eslint src --ext .js,.jsx,.ts,.tsx", "lint:fix": "eslint src --ext .js,.jsx,.ts,.tsx --fix", "sync:ui-catalogue": "node scripts/sync-ui-card-catalogue.mjs" }, "devDependencies": { "@babel/core": "^7.24.0", "@babel/preset-env": "^7.24.0", "@babel/preset-react": "^7.24.0", "@babel/preset-typescript": "^7.24.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/jest": "^30.0.0", "@types/papaparse": "^5.5.2", "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", "@vitejs/plugin-react": "^4.3.4", "babel-jest": "^29.7.0", "eslint": "^8.56.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-i18next": "^6.1.5", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "typescript": "^5.6.3", "vite": "^5.4.19" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "jest": { "testEnvironment": "jsdom", "transform": { "^.+\\.(js|jsx|ts|tsx)$": "babel-jest" }, "moduleNameMapper": { "^@fontsource-variable/(inter|bricolage-grotesque)$": "/src/__mocks__/fileMock.js", "^react-markdown$": "/src/__mocks__/react-markdown.js", "^d3$": "/src/__mocks__/d3.js", "\\.(css|less|scss|sass)$": "/src/__mocks__/fileMock.js", "\\.(jpg|jpeg|png|gif|svg|ttf|woff|woff2)$": "/src/__mocks__/fileMock.js" }, "transformIgnorePatterns": [ "node_modules/(?!(?:.*/)?(?:axios|\\@ungap\\/structured\\-clone|bail|ccount|character\\-entities|character\\-entities\\-html4|character\\-entities\\-legacy|character\\-reference\\-invalid|comma\\-separated\\-tokens|decode\\-named\\-character\\-reference|dequal|devlop|estree\\-util\\-is\\-identifier\\-name|hast\\-util\\-to\\-jsx\\-runtime|hast\\-util\\-whitespace|html\\-url\\-attributes|is\\-alphabetical|is\\-alphanumerical|is\\-decimal|is\\-hexadecimal|longest\\-streak|mdast\\-util\\-from\\-markdown|mdast\\-util\\-mdx\\-expression|mdast\\-util\\-mdx\\-jsx|mdast\\-util\\-mdxjs\\-esm|mdast\\-util\\-phrasing|mdast\\-util\\-to\\-hast|mdast\\-util\\-to\\-markdown|mdast\\-util\\-to\\-string|micromark|micromark\\-core\\-commonmark|micromark\\-factory\\-destination|micromark\\-factory\\-label|micromark\\-factory\\-space|micromark\\-factory\\-title|micromark\\-factory\\-whitespace|micromark\\-util\\-character|micromark\\-util\\-chunked|micromark\\-util\\-classify\\-character|micromark\\-util\\-combine\\-extensions|micromark\\-util\\-decode\\-numeric\\-character\\-reference|micromark\\-util\\-decode\\-string|micromark\\-util\\-encode|micromark\\-util\\-html\\-tag\\-name|micromark\\-util\\-normalize\\-identifier|micromark\\-util\\-resolve\\-all|micromark\\-util\\-sanitize\\-uri|micromark\\-util\\-subtokenize|micromark\\-util\\-symbol|micromark\\-util\\-types|parse\\-entities|property\\-information|react\\-markdown|remark\\-parse|remark\\-rehype|space\\-separated\\-tokens|stringify\\-entities|style\\-to\\-object|trim\\-lines|trough|unified|unist\\-util\\-is|unist\\-util\\-position|unist\\-util\\-stringify\\-position|unist\\-util\\-visit|unist\\-util\\-visit\\-parents|vfile|vfile\\-message|zwitch|is-plain-obj)/)" ], "setupFilesAfterEnv": [ "/src/setupTests.ts" ] } }