326 lines
20 KiB
JSON
326 lines
20 KiB
JSON
{
|
|
"name": "hivegrid-cloud",
|
|
"version": "1.7.0",
|
|
"private": true,
|
|
"packageManager": "pnpm@11.12.0",
|
|
"sideEffects": false,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "pnpm --filter @hivegrid/web dev",
|
|
"dev:local": "bash scripts/dev/local.sh",
|
|
"dev:local:credentials": "pnpm exec tsx scripts/ensure-local-credentials.ts",
|
|
"dev:services": "docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d postgres redis clamav",
|
|
"dev:services:mark-local": "bash scripts/dev/mark-local-database.sh",
|
|
"dev:services:down": "docker compose -f docker-compose.yml -f docker-compose.dev.yml down",
|
|
"dev:db:roles": "node scripts/dev-provision-rls-roles.mjs",
|
|
"env:pull": "node scripts/worktree-session.mjs env-pull",
|
|
"env:edit": "node scripts/worktree-session.mjs env-edit",
|
|
"session:start": "node scripts/worktree-session.mjs start",
|
|
"session:finish": "node scripts/worktree-session.mjs finish",
|
|
"build": "pnpm --filter @hivegrid/db prisma:generate && pnpm --filter @hivegrid/db build && pnpm --filter @hivegrid/web build",
|
|
"build:ci": "pnpm run build",
|
|
"sbom": "node scripts/generate-sbom.mjs",
|
|
"subframe:sync": "npx -y @subframe/cli@1.209.0 sync --all",
|
|
"lint": "eslint --max-warnings=0 --ext .tsx,.ts .",
|
|
"test": "node scripts/run-core-tests.mjs run apps/web/app/ apps/portal-domain-controller/src scripts tools/api-inventory/scan-api-routes.test.ts packages/db/src/*boundary.test.ts",
|
|
"test:packages": "node scripts/verify-package-test-scripts.mjs && pnpm --filter './packages/*' --filter '!@hivegrid/foundation' --filter '!@hivegrid/view-models' --filter '!@hivegrid/ui-app' --filter '!@hivegrid/ui-subframe' --filter '!@hivegrid/ui-mock' --if-present test",
|
|
"test:component:p20": "playwright test --config=playwright-ct.config.ts",
|
|
"test:foundation": "vitest run packages/foundation/src packages/view-models/src packages/ui-app/src packages/ui-subframe/src packages/ui-mock/src",
|
|
"verify:ci-baseline": "node scripts/verify-ci-baseline.mjs",
|
|
"verify:env-drift": "node --import tsx scripts/check-env-drift.mjs",
|
|
"verify:health-baseline": "node scripts/verify-health-baseline.mjs",
|
|
"verify:api-inventory": "tsx scripts/check-api-inventory.ts && pnpm exec vitest run tools/api-inventory/scan-api-routes.test.ts apps/api/src/route-access-inventory.test.ts apps/api/src/route-access-inventory-doc.test.ts",
|
|
"verify:i18n": "tsx scripts/i18n-check.ts && tsx scripts/i18n-quality.ts && node scripts/verify-i18n-german-diacritics.mjs && node scripts/verify-hardcoded-strings.mjs && eslint --max-warnings=0 --ext .tsx,.ts packages/ui-app/src packages/ui-subframe/src packages/ui-mock/src",
|
|
"verify:i18n-performance": "tsx scripts/i18n-catalog-performance.ts",
|
|
"verify:phase-c-boundaries": "node scripts/verify-phase-c-boundaries.mjs",
|
|
"verify:ui-visual": "tsx scripts/verify-ui-mock-visual.ts",
|
|
"verify:ui-hot-swap": "tsx scripts/verify-ui-hot-swap.ts",
|
|
"test:hot-swap": "pnpm exec vitest run scripts/verify-ui-hot-swap.test.ts && pnpm run verify:ui-hot-swap",
|
|
"verify:tenant-isolation-report": "tsx scripts/tenant-isolation-report.ts --check",
|
|
"verify:cross-cutting-models": "node scripts/verify-cross-cutting-models-complete.mjs",
|
|
"verify:sidebar-routes": "pnpm exec vitest run apps/web/app/application/sidebar/AdminSidebar.test.tsx apps/web/app/application/sidebar/AppSidebar.test.tsx apps/web/app/components/layouts/sidebars/shadcn/app-sidebar.test.tsx apps/web/app/routes/admin/admin-route-targets.test.ts apps/web/app/routes.test.ts",
|
|
"verify:gitea-ci-workflow": "node scripts/verify-gitea-ci-workflow.mjs",
|
|
"verify:action-pins": "node scripts/verify-action-pins.mjs && node scripts/verify-container-image-pins.mjs && node scripts/verify-upstream-source-pins.mjs && node scripts/verify-workflow-node-runtime.mjs",
|
|
"verify:workflow-outbox-native": "pnpm exec vitest run apps/worker/src/outbox/event-router.test.ts apps/worker/src/jobs/workflow-trigger.test.ts apps/worker/src/jobs/workflow-trigger-bootstrap.test.ts apps/worker/src/jobs/workflow-trigger-boundary.test.ts apps/worker/src/jobs/workflow-trigger-executor-factory.test.ts apps/worker/src/jobs/workflow-trigger-native-executor.test.ts apps/worker/src/jobs/workflow-trigger-store.test.ts apps/worker/src/health.test.ts apps/worker/src/index.test.ts packages/foundation/src/workflows.test.ts apps/web/app/modules/workflowEngine/routes/workflow-engine/workflow-producer-inventory.test.ts",
|
|
"verify:plugin-runtime-live": "node scripts/verify-plugin-runtime-live.mjs",
|
|
"verify:db-migrate-status": "node scripts/verify-db-migrate-status.mjs",
|
|
"verify:db-migrate-status:staging": "bash scripts/verify-db-migrate-status-staging.sh",
|
|
"verify:prisma-baseline": "node scripts/verify-prisma-baseline.mjs",
|
|
"verify:prisma-baseline-equivalence": "bash scripts/verify-prisma-baseline-equivalence.sh",
|
|
"verify:migrations-parity": "bash scripts/verify-migrations-schema-parity.sh",
|
|
"verify:shk-first-steps-migration": "bash scripts/verify-shk-first-steps-migration.sh",
|
|
"verify:identity-invite-migration": "bash scripts/verify-identity-invite-migration.sh",
|
|
"verify:openapi-security": "tsx scripts/openapi-guard.ts",
|
|
"verify:deploy-workflow": "node scripts/verify-gitea-deploy-workflow.mjs",
|
|
"verify:deploy-readiness": "node scripts/verify-deploy-readiness.mjs",
|
|
"verify:docker-baseline": "node scripts/verify-docker-baseline.mjs",
|
|
"verify:docker-non-root": "node scripts/verify-docker-non-root.mjs",
|
|
"verify:tenant-policy-contract": "node scripts/generate-tenant-policy-contract.mjs --check",
|
|
"verify:rls-live": "bash scripts/verify-rls-live.sh",
|
|
"verify:platform-leads-rls-live": "bash scripts/verify-platform-leads-rls-live.sh",
|
|
"verify:platform-notification-redis-live": "bash scripts/verify-platform-notification-redis-live.sh",
|
|
"verify:platform-leads-tooling": "tsc -p scripts/platform-leads/tsconfig.json && eslint --max-warnings=0 scripts/platform-leads/*.ts && vitest run scripts/platform-leads/*.test.ts",
|
|
"verify:rls-release-readiness": "node scripts/verify-rls-release-readiness.mjs",
|
|
"verify:migrator-role": "node scripts/verify-migrator-role.mjs",
|
|
"verify:runtime-closures": "node scripts/verify-runtime-closures.mjs",
|
|
"verify:bundle-size": "node scripts/verify-bundle-size.mjs",
|
|
"verify:route-inventory": "node scripts/verify-route-inventory.mjs",
|
|
"verify:source-health": "node scripts/verify-source-health.mjs",
|
|
"verify:eslint-baseline": "node scripts/verify-eslint-baseline.mjs",
|
|
"verify:a11y-baseline": "node scripts/verify-a11y-baseline.mjs",
|
|
"verify:secrets": "node scripts/verify-secrets.mjs",
|
|
"verify:test-density": "node scripts/verify-test-density.mjs",
|
|
"verify:test-coverage": "node scripts/verify-test-coverage.mjs",
|
|
"test:coverage": "node scripts/vitest-cli-compat.mjs run --coverage apps/web/app/ scripts tools/api-inventory/scan-api-routes.test.ts packages/db/src/*boundary.test.ts",
|
|
"coverage:badge": "node scripts/coverage-summary.mjs",
|
|
"metrics:commit-history": "node scripts/metrics/commit-history.mjs",
|
|
"metrics:loc-history": "node scripts/metrics/loc-history.mjs",
|
|
"verify:a11y-coverage": "node scripts/verify-a11y-coverage.mjs",
|
|
"verify:color-contrast": "node scripts/verify-color-contrast.mjs",
|
|
"test:a11y": "pnpm exec vitest run apps/web/app/components/ui/button.a11y.test.tsx apps/web/app/components/ui/errors/ErrorPage.a11y.test.tsx apps/web/app/components/ui/*.axe.test.tsx apps/web/app/components/core/SkipToContent.test.tsx apps/web/app/components/aceternity/HoverEffect.a11y.test.tsx apps/web/app/components/ui/lists/ViewToggle.a11y.test.tsx apps/web/app/components/ui/lists/ViewToggleWithUrl.a11y.test.tsx apps/web/app/components/ui/tabs/TabsWithIcons.a11y.test.tsx scripts/verify-color-contrast.test.mjs",
|
|
"verify:production-seed-artifact": "node scripts/verify-production-seed-artifact.mjs",
|
|
"verify:docker-runtime-smoke": "bash scripts/docker-web-runtime-smoke.sh hivegrid-web:smoke",
|
|
"verify:docker-api-runtime-smoke": "bash scripts/docker-api-runtime-smoke.sh hivegrid-api:smoke",
|
|
"verify:docker-mcp-runtime-smoke": "bash scripts/docker-mcp-runtime-smoke.sh hivegrid-mcp:smoke",
|
|
"verify:docker-worker-runtime-smoke": "bash scripts/docker-worker-runtime-smoke.sh hivegrid-worker:smoke",
|
|
"verify:docker-hocuspocus-runtime-smoke": "bash scripts/docker-hocuspocus-runtime-smoke.sh hivegrid-hocuspocus:smoke",
|
|
"verify:docker-portal-domain-controller-runtime-smoke": "bash scripts/docker-portal-domain-controller-runtime-smoke.sh hivegrid-portal-domain-controller:smoke",
|
|
"verify:portal-domain-controller-deploy": "node scripts/verify-portal-domain-controller-deploy.mjs",
|
|
"verify:auth-api-body-baseline": "node scripts/verify-auth-api-body-baseline.mjs",
|
|
"verify:api-auth-routing-baseline": "node scripts/verify-api-auth-routing-baseline.mjs",
|
|
"verify:api-auth-enforced-baseline": "node scripts/verify-api-auth-enforced-baseline.mjs",
|
|
"verify:mfa-scope-baseline": "node scripts/verify-mfa-scope-baseline.mjs",
|
|
"verify:impersonation-scope-baseline": "node scripts/verify-impersonation-scope-baseline.mjs",
|
|
"verify:api-auth-hardening-baseline": "node scripts/verify-api-auth-hardening-baseline.mjs",
|
|
"verify:transactional-mail-provider-baseline": "node scripts/verify-transactional-mail-provider-baseline.mjs",
|
|
"verify:db-boundary-baseline": "node scripts/verify-db-boundary-baseline.mjs",
|
|
"verify:observability-console-baseline": "node scripts/verify-observability-console-baseline.mjs",
|
|
"verify:permissions-audit-baseline": "node scripts/verify-permissions-audit-baseline.mjs",
|
|
"verify:audit-cascade-guard": "node scripts/verify-audit-cascade-guard.mjs",
|
|
"verify:permission-matrix": "node scripts/verify-permission-matrix.mjs",
|
|
"verify:billing-boundary-baseline": "node scripts/verify-billing-boundary-baseline.mjs",
|
|
"verify:role-permission-baseline": "node scripts/verify-role-permission-baseline.mjs",
|
|
"verify:notification-boundary-baseline": "node scripts/verify-notification-boundary-baseline.mjs",
|
|
"verify:realtime-boundary-baseline": "node scripts/verify-realtime-boundary-baseline.mjs",
|
|
"verify:storage-boundary-baseline": "node scripts/verify-storage-boundary-baseline.mjs",
|
|
"verify:export-boundary-baseline": "node scripts/verify-export-boundary-baseline.mjs",
|
|
"verify:import-boundary-baseline": "node scripts/verify-import-boundary-baseline.mjs",
|
|
"verify:security-gdpr-docs": "node scripts/verify-security-gdpr-docs.mjs",
|
|
"verify:host-aware-url-baseline": "node scripts/verify-host-aware-url-baseline.mjs",
|
|
"verify:theme-error-state-baseline": "node scripts/verify-theme-error-state-baseline.mjs",
|
|
"verify:i18n-hardcoded-baseline": "node scripts/verify-i18n-hardcoded-baseline.mjs",
|
|
"verify:hardcoded-strings": "node scripts/verify-hardcoded-strings.mjs",
|
|
"verify:tenant-auth-baseline": "node scripts/verify-tenant-auth-baseline.mjs",
|
|
"verify:onboarding-flow": "node scripts/verify-onboarding-flow.mjs",
|
|
"verify:platform-admin-dashboard-baseline": "node scripts/verify-platform-admin-dashboard-baseline.mjs",
|
|
"verify:settings-api-onboarding-baseline": "node scripts/verify-settings-api-onboarding-baseline.mjs",
|
|
"verify:health-ci-quality-baseline": "node scripts/verify-health-ci-quality-baseline.mjs",
|
|
"verify:staging-live-uat-readiness": "node scripts/verify-staging-live-uat-readiness.mjs",
|
|
"customer-portal:uat:catalog": "tsx scripts/customer-portal-uat/provision-catalog.ts",
|
|
"billing:catalog": "tsx scripts/billing-catalog/sync.ts",
|
|
"verify:billing-catalog": "vitest run scripts/billing-catalog/*.test.ts packages/entitlements/src/commercial-catalog.test.ts",
|
|
"customer-portal:uat:commercial-fixture": "tsx scripts/customer-portal-uat/provision-commercial-fixture.ts",
|
|
"customer-portal:uat:fixture": "tsx scripts/customer-portal-uat/provision-fixture.ts",
|
|
"customer-portal:uat:project-invitation-contact": "tsx scripts/customer-portal-uat/provision-project-invitation-contact.ts",
|
|
"customer-portal:uat:mail-adapter": "python3 scripts/customer-portal-uat/portal_setup_mail_adapter.py",
|
|
"verify:customer-portal-mail-adapter": "python3 -m unittest discover -s scripts/customer-portal-uat -p '*_test.py'",
|
|
"verify:customer-portal-uat": "vitest run scripts/customer-portal-uat/*.test.ts",
|
|
"verify:docs-links": "tsx scripts/docs-link-check.ts",
|
|
"verify:core-build-without-plugins-smoke": "node scripts/verify-core-build-without-plugins-smoke.mjs",
|
|
"verify:removed-modules": "tsx scripts/scan-removed-modules.ts",
|
|
"verify:load": "node scripts/run-load-tests.mjs",
|
|
"typecheck": "pnpm --filter @hivegrid/portal-domain-controller typecheck && pnpm --filter @hivegrid/web typecheck",
|
|
"prettier": "prettier --write '**/*.{ts,tsx}'",
|
|
"start": "pnpm --filter @hivegrid/web start",
|
|
"db:generate": "pnpm --filter @hivegrid/db prisma:generate",
|
|
"db:prepare:portal-legacy-commerce-recut": "node scripts/assert-portal-legacy-commerce-recut-db-push.mjs && pnpm exec prisma db execute --file prisma/rls/portal-legacy-commerce-recut-pre-db-push.sql --config prisma.config.ts",
|
|
"db:roles:provision": "node scripts/provision-rls-roles.mjs",
|
|
"db:migrate:deploy": "pnpm --filter @hivegrid/db prisma:migrate:deploy",
|
|
"seed": "pnpm --filter @hivegrid/db seed",
|
|
"seed:e2e-readiness": "tsx scripts/seed-e2e-readiness.ts",
|
|
"seed:demo": "HIVEGRID_DEMO_SEED=1 tsx scripts/seed-hivegrid-demo.ts",
|
|
"seed:demo-pro": "tsx scripts/seed-demo-pro-crm.ts",
|
|
"seed:staging-data": "tsx scripts/seed-demo-pro-crm.ts",
|
|
"seed:demo-pro:geodata": "tsx scripts/validate-demo-pro-geodata.ts",
|
|
"seed:prod": "NODE_ENV=production pnpm --filter @hivegrid/db seed",
|
|
"permissions:sync": "pnpm --filter @hivegrid/db permissions:sync",
|
|
"migrate:api-keys": "tsx scripts/migrate-api-keys.ts",
|
|
"platform-leads:backfill": "tsx scripts/platform-leads/backfill-cli.ts",
|
|
"platform-leads:source-bootstrap": "tsx scripts/platform-leads/source-bootstrap-cli.ts",
|
|
"verify:licenses": "node scripts/verify-licenses.mjs",
|
|
"verify:lighthouse": "node scripts/run-lighthouse.mjs",
|
|
"prepare": "node -e \"process.exit(process.env.CI ? 0 : 1)\" || lefthook install || true",
|
|
"verify:e2e-a11y": "node scripts/run-playwright-a11y.mjs",
|
|
"verify:e2e-customer-portal-invitation": "playwright test tests/e2e/va-p26a-customer-portal.smoke.spec.ts --config=playwright.config.ts --grep 'stateful invitation lifecycle' --project=chromium --reporter=line",
|
|
"verify:e2e-mutating-readiness:local": "REQUIRE_E2E_A11Y=1 REQUIRE_AUTH_E2E=1 REQUIRE_E2E_READINESS=1 REQUIRE_E2E_MUTATING_READINESS=1 E2E_A11Y_STRICT=1 E2E_BROWSER_MATRIX=1 E2E_ALLOW_WORKFLOW_RUN=1 E2E_ALLOW_CHAT_SEND=1 E2E_ALLOW_REGISTRATION_CREATE=1 E2E_ALLOW_ACCOUNT_CREATE=1 E2E_ALLOW_NO_TENANT_ACCOUNT_CREATE=1 E2E_ALLOW_PLUGIN_LIFECYCLE_MUTATION=1 E2E_ALLOW_PLUGIN_SETTINGS_WRITE=1 pnpm run verify:e2e-a11y",
|
|
"verify:e2e-mutating-readiness:worker-local": "E2E_REQUIRE_WORKFLOW_OUTBOX_DRAIN=1 pnpm run verify:e2e-mutating-readiness:local"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "3.1048.0",
|
|
"@epic-web/cachified": "^4.0.0",
|
|
"@headlessui/react": "^2.2.0",
|
|
"@hello-pangea/dnd": "^18.0.1",
|
|
"@hivegrid/brand": "workspace:*",
|
|
"@hivegrid/config": "workspace:*",
|
|
"@hivegrid/db": "workspace:*",
|
|
"@hivegrid/entitlements": "workspace:*",
|
|
"@hivegrid/i18n": "workspace:*",
|
|
"@hivegrid/logger": "workspace:*",
|
|
"@hivegrid/mail": "workspace:*",
|
|
"@hivegrid/queue": "workspace:*",
|
|
"@hivegrid/storage": "workspace:*",
|
|
"@hivegrid/ui": "workspace:*",
|
|
"@hivegrid/url": "workspace:*",
|
|
"@hocuspocus/provider": "4.3.0",
|
|
"@monaco-editor/react": "^4.6.0",
|
|
"@popperjs/core": "^2.11.8",
|
|
"@prisma/adapter-pg": "7.8.0",
|
|
"@prisma/client": "7.8.0",
|
|
"@radix-ui/react-accordion": "^1.2.3",
|
|
"@radix-ui/react-alert-dialog": "^1.1.6",
|
|
"@radix-ui/react-aspect-ratio": "^1.1.2",
|
|
"@radix-ui/react-avatar": "^1.1.10",
|
|
"@radix-ui/react-checkbox": "^1.3.2",
|
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
"@radix-ui/react-context-menu": "^2.2.6",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-hover-card": "^1.1.15",
|
|
"@radix-ui/react-label": "^2.1.7",
|
|
"@radix-ui/react-popover": "^1.1.15",
|
|
"@radix-ui/react-progress": "^1.1.8",
|
|
"@radix-ui/react-radio-group": "^1.3.7",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.8",
|
|
"@radix-ui/react-slider": "^1.3.5",
|
|
"@radix-ui/react-slot": "^1.2.4",
|
|
"@radix-ui/react-switch": "^1.2.5",
|
|
"@radix-ui/react-tabs": "^1.1.3",
|
|
"@radix-ui/react-toggle": "^1.1.2",
|
|
"@radix-ui/react-toggle-group": "^1.1.2",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@react-router/node": "7.18.1",
|
|
"@react-router/remix-config-routes-adapter": "0.0.0-nightly-bf7ecb711-20240911",
|
|
"@sindresorhus/slugify": "^2.2.1",
|
|
"@tiptap/core": "^2.11.5",
|
|
"@tiptap/extension-collaboration": "2.27.2",
|
|
"@tiptap/extension-collaboration-cursor": "2.27.2",
|
|
"@tiptap/extension-color": "^2.11.5",
|
|
"@tiptap/extension-highlight": "^2.11.5",
|
|
"@tiptap/extension-horizontal-rule": "^2.11.5",
|
|
"@tiptap/extension-image": "^2.11.5",
|
|
"@tiptap/extension-link": "^2.11.5",
|
|
"@tiptap/extension-placeholder": "^2.0.3",
|
|
"@tiptap/extension-text-style": "^2.11.5",
|
|
"@tiptap/extension-underline": "^2.11.5",
|
|
"@tiptap/pm": "^2.11.5",
|
|
"@tiptap/react": "^2.11.5",
|
|
"@tiptap/starter-kit": "^2.11.5",
|
|
"@tiptap/suggestion": "^2.11.5",
|
|
"@xyflow/react": "^12.10.0",
|
|
"ajv": "^8.12.0",
|
|
"bcryptjs": "^3.0.3",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"dagre": "^0.8.5",
|
|
"date-fns": "^4.1.0",
|
|
"date-fns-tz": "^3.2.0",
|
|
"decimal.js": "^10.4.3",
|
|
"dotenv": "^16.6.1",
|
|
"embla-carousel-react": "^8.6.0",
|
|
"handlebars": "^4.7.8",
|
|
"html-to-text": "^9.0.5",
|
|
"i18next": "24.2.3",
|
|
"i18next-browser-languagedetector": "^7.1.0",
|
|
"i18next-http-backend": "3.0.6",
|
|
"input-otp": "^1.4.2",
|
|
"is-ip": "^3.1.0",
|
|
"isbot": "^3.7.0",
|
|
"jsonwebtoken": "^9.0.0",
|
|
"lru-cache": "^10.1.0",
|
|
"lucide-react": "^0.482.0",
|
|
"mailchecker": "^6.0.1",
|
|
"monaco-editor": "0.55.1",
|
|
"motion": "^12.23.26",
|
|
"otpauth": "^9.5.1",
|
|
"pdfjs-dist": "6.0.227",
|
|
"pg": "^8.20.0",
|
|
"pino": "^9.14.0",
|
|
"platform": "^1.3.6",
|
|
"prisma": "7.8.0",
|
|
"qrcode.react": "^4.2.0",
|
|
"react": "19.2.3",
|
|
"react-colorful": "^5.6.1",
|
|
"react-day-picker": "^9.7.0",
|
|
"react-dom": "19.2.3",
|
|
"react-hook-form": "^7.54.2",
|
|
"react-i18next": "^15.1.0",
|
|
"react-resizable-panels": "^2.1.7",
|
|
"react-router": "7.18.1",
|
|
"react-sortablejs": "^6.1.4",
|
|
"react-use-measure": "^2.1.7",
|
|
"recharts": "^2.15.3",
|
|
"remix-i18next": "^7.0.1",
|
|
"sonner": "^1.7.4",
|
|
"spin-delay": "^1.1.0",
|
|
"tailwind-merge": "^3.0.2",
|
|
"tippy.js": "^6.3.7",
|
|
"use-debounce": "^9.0.3",
|
|
"vaul": "^1.1.2",
|
|
"y-protocols": "1.0.6",
|
|
"yjs": "13.6.30",
|
|
"zod": "^3.25.72",
|
|
"zustand": "^5.0.6"
|
|
},
|
|
"devDependencies": {
|
|
"@axe-core/playwright": "^4.10.0",
|
|
"@headlessui/tailwindcss": "^0.2.2",
|
|
"@playwright/experimental-ct-react": "1.59.1",
|
|
"@playwright/test": "1.59.1",
|
|
"@react-router/dev": "7.18.1",
|
|
"@tailwindcss/aspect-ratio": "^0.4.2",
|
|
"@tailwindcss/forms": "^0.5.10",
|
|
"@tailwindcss/postcss": "^4.1.12",
|
|
"@tailwindcss/typography": "^0.5.9",
|
|
"@tailwindcss/vite": "4.2.4",
|
|
"@testing-library/dom": "^10.4.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@types/dagre": "^0.7.52",
|
|
"@types/html-to-text": "^9.0.1",
|
|
"@types/jsonwebtoken": "^9.0.6",
|
|
"@types/pg": "^8.20.0",
|
|
"@types/platform": "^1.3.4",
|
|
"@types/react": "19.2.7",
|
|
"@types/react-dom": "19.2.3",
|
|
"@typescript-eslint/eslint-plugin": "^8.59.2",
|
|
"@typescript-eslint/parser": "^8.59.2",
|
|
"@vitejs/plugin-react": "4.7.0",
|
|
"@vitest/coverage-v8": "3.2.7",
|
|
"axe-core": "^4.11.4",
|
|
"esbuild": "0.28.1",
|
|
"eslint": "^8.54.0",
|
|
"eslint-plugin-import": "^2.32.0",
|
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"jsdom": "^26.1.0",
|
|
"jsonc-eslint-parser": "^3.1.0",
|
|
"lefthook": "^1.7.0",
|
|
"markdownlint-cli": "^0.48.0",
|
|
"minimatch": "^10.0.1",
|
|
"playwright": "1.59.1",
|
|
"postcss": "^8.4.32",
|
|
"prettier": "^3.5.3",
|
|
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
"tailwindcss": "^4.1.12",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"tsx": "^4.6.2",
|
|
"typescript": "^5.3.2",
|
|
"vite": "7.3.6",
|
|
"vite-tsconfig-paths": "^4.2.2",
|
|
"vitest": "^3.2.7"
|
|
}
|
|
}
|