package.json
Rama main · réplica de lectura del repositorio original.
{
"name": "multiforum",
"version": "0.2.0",
"private": true,
"license": "MIT",
"type": "module",
"packageManager": "pnpm@10.28.2",
"engines": {
"node": ">=24.13.0 <27"
},
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev --host localhost --port 3000",
"dev:mocked": "VITE_E2E_MOCK_MODE=true nuxt dev --host localhost --port 3000",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare",
"graphql:validate": "node scripts/validate-graphql-operations.mjs",
"graphql:inventory": "node scripts/validate-graphql-operations.mjs --report-only --report artifacts/graphql/operations.json",
"graphql:check": "node scripts/validate-graphql-operations.mjs --report artifacts/graphql/operations.json",
"graphql:test": "node --test scripts/graphql-operations.test.mjs scripts/graphql-typed-operations.test.mjs scripts/typed-operation-consumers.test.mjs scripts/create-issue-contract.test.mjs",
"schema:check": "node scripts/check-graphql-schema.mjs",
"schema:update": "node scripts/update-graphql-schema.mjs",
"schema:test": "node --test scripts/graphql-schema-contract.test.mjs",
"compile": "node scripts/generate-graphql-types.mjs && pnpm operations:generate",
"lint": "eslint --cache --cache-location node_modules/.cache/eslint/",
"lint:a11y": "pnpm exec eslint \"components/**/*.vue\" --quiet --cache --cache-location node_modules/.cache/eslint/",
"prepare": "husky install",
"prettier:check": "prettier --check .",
"start": "nuxt start",
"test": "playwright test",
"test:playwright": "playwright test tests/playwright/mocked",
"test:playwright:mocked": "playwright test tests/playwright/mocked",
"test:playwright:stateful:admin": "PLAYWRIGHT_STATEFUL=true playwright test tests/playwright/stateful/adminModeration",
"playwright:neo4j:up": "docker compose -f docker-compose.playwright.yml up -d --wait",
"playwright:neo4j:down": "docker compose -f docker-compose.playwright.yml down -v",
"build:playwright:mocked": "NITRO_PRESET=node-server VITE_E2E_MOCK_MODE=true VITE_GRAPHQL_URL=http://127.0.0.1:4100/graphql VITE_SERVER_NAME='Playwright Test Server' VITE_SENTRY_AUTH_TOKEN='' nuxt build",
"test:playwright:mocked:build": "playwright test --config playwright.build.config.ts",
"test:unit": "NODE_OPTIONS=--no-experimental-webstorage vitest",
"test:unit:run": "NODE_OPTIONS=--no-experimental-webstorage vitest run",
"coverage": "NODE_OPTIONS=--no-experimental-webstorage vitest run --coverage",
"coverage:ui": "NODE_OPTIONS=--no-experimental-webstorage vitest --coverage --ui",
"coverage:open": "pnpm run coverage && open coverage/index.html",
"coverage:e2e:build": "E2E_COVERAGE=true pnpm run build:playwright:mocked",
"coverage:e2e:collect": "E2E_COVERAGE=true playwright test --config playwright.build.config.ts",
"coverage:e2e:report": "node --max-old-space-size=6144 tests/playwright/coverage/report.mjs",
"coverage:audit": "node scripts/coverage-audit.mjs",
"perf:budget": "node scripts/check-route-budgets.mjs",
"test:performance-budgets": "node --test scripts/check-route-budgets.test.mjs",
"knip": "knip",
"tsc": "vue-tsc --noEmit",
"verify": "pnpm run tsc && pnpm run test:unit:run",
"lint-verify": "pnpm run test:unit:run && pnpm run lint:a11y",
"operations:generate": "node scripts/generate-graphql-operations.mjs",
"operations:check": "node scripts/generate-graphql-operations.mjs --check && node scripts/typed-operation-consumers.mjs --report artifacts/graphql/typed-consumers.json",
"schema:types:check": "node scripts/generate-graphql-types.mjs --check",
"fix:contracts": "pnpm compile && pnpm operations:contract:generate",
"operations:contract:generate": "node scripts/frontend-operation-contract.mjs --generate",
"operations:contract:check": "node scripts/frontend-operation-contract.mjs --check",
"operations:export": "node scripts/frontend-operation-contract.mjs --export",
"compatibility:test": "node --test scripts/frontend-operation-contract.test.mjs",
"compatibility:check": "node scripts/check-backend-compatibility.mjs"
},
"dependencies": {
"@apollo/client": "^3.13.5",
"@auth0/auth0-nuxt": "^1.1.0",
"@codemirror/lang-yaml": "^6.1.3",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.43.8",
"@floating-ui/vue": "^2.0.1",
"@fortawesome/fontawesome-free": "^7.3.1",
"@fortawesome/fontawesome-svg-core": "7.3.1",
"@fortawesome/free-regular-svg-icons": "7.3.1",
"@fortawesome/free-solid-svg-icons": "7.3.0",
"@fortawesome/vue-fontawesome": "^3.3.0",
"@google/model-viewer": "^4.4.0",
"@googlemaps/js-api-loader": "^2.1.3",
"@googlemaps/markerclusterer": "^2.6.2",
"@graphql-typed-document-node/core": "3.2.0",
"@headlessui/vue": "^1.7.23",
"@sentry/nuxt": "^10.62.0",
"@tailwindcss/forms": "^0.5.11",
"@tailwindcss/typography": "^0.5.20",
"@upstash/redis": "^1.38.0",
"@vue/apollo-composable": "^4.2.2",
"axios": "^1.20.0",
"chart.js": "^4.5.1",
"codemirror": "^6.0.2",
"crypto-js": "^4.2.0",
"diff-match-patch": "^1.0.5",
"dotenv": "^18.0.8",
"emoji-picker-element": "^1.29.1",
"graphql": "^16.14.2",
"graphql-tag": "^2.12.7",
"h3": "^1.15.11",
"highlight.js": "^11.12.0",
"identicon.js": "^2.3.3",
"js-yaml": "^5.4.2",
"lucide-vue-next": "^1.0.0",
"luxon": "^3.6.0",
"markdown-it": "^14.3.1",
"md-editor-v3": "^6.5.6",
"nuxt": "~4.5.1",
"pinia": "^3.0.2",
"remove-markdown": "^0.8.0",
"sanitize-html": "^2.18.1",
"three": "^0.183.2",
"tslib": "^2.8.1",
"unstorage": "^1.17.5",
"vue": "^3.5.44",
"vue-chartjs": "^5.3.4",
"vue-codemirror": "^6.1.1",
"vue-easy-lightbox": "^1.19.0",
"vue-router": "^5.3.1",
"vue3-popper": "^1.5.0",
"vuedraggable": "^4.1.0"
},
"devDependencies": {
"@axe-core/playwright": "^4.12.1",
"@graphql-codegen/cli": "7.4.6",
"@graphql-codegen/client-preset": "^6.2.3",
"@graphql-codegen/typed-document-node": "7.1.1",
"@graphql-codegen/typescript": "6.1.2",
"@graphql-codegen/typescript-operations": "6.1.10",
"@nuxt/eslint-config": "^1.17.0",
"@nuxt/image": "^2.1.0",
"@nuxt/schema": "~4.5.1",
"@nuxt/types": "^2.18.1",
"@nuxtjs/apollo": "^5.0.0-alpha.15",
"@nuxtjs/google-fonts": "^3.2.0",
"@pinia/testing": "^1.0.1",
"@playwright/test": "^1.64.1",
"@tailwindcss/vite": "^4.3.3",
"@types/crypto-js": "^4.2.2",
"@types/diff-match-patch": "^1.0.36",
"@types/google.maps": "^3.66.7",
"@types/identicon.js": "^2.3.5",
"@types/luxon": "^3.7.2",
"@types/markdown-it": "^14.1.2",
"@types/node": "^26.1.0",
"@types/sanitize-html": "^2.16.1",
"@types/webpack-env": "^1.18.8",
"@vitejs/plugin-vue": "^6.0.10",
"@vitest/coverage-v8": "^4.1.11",
"@vitest/ui": "^4.1.11",
"@vue/test-utils": "^2.4.11",
"accented": "^1.6.0",
"eslint": "^10.6.0",
"eslint-plugin-vuejs-accessibility": "^2.5.0",
"globals": "^17.13.0",
"happy-dom": "^20.14.5",
"husky": "^9.1.7",
"jsdom": "^30.1.1",
"knip": "^6.41.0",
"lint-staged": "^17.2.0",
"monocart-coverage-reports": "^2.12.12",
"prettier": "^3.9.10",
"prettier-plugin-tailwindcss": "^0.8.1",
"sass": "^1.101.0",
"tailwindcss": "^4.3.3",
"typescript": "^6.0.3",
"vite": "^8.3.4",
"vitest": "^4.1.11",
"vue-tsc": "^3.3.11"
},
"lint-staged": {
"*.ts": [
"eslint --fix --cache --cache-location node_modules/.cache/eslint/"
],
"*.vue": [
"eslint --fix --cache --cache-location node_modules/.cache/eslint/"
]
}
}