Files
matrix-authentication-service/frontend/package.json
T
Quentin Gliech c349228505 Migrate from npm to pnpm workspace
Sets up a pnpm workspace at the repo root with the single existing
frontend/ package, pinned via packageManager to pnpm@11.1.0. The new
pnpm-workspace.yaml enables three pnpm 11 defaults explicitly so they
can't silently be relaxed:

 - trustPolicy: no-downgrade (override via trustPolicyExclude)
 - strictDepBuilds: true (override via allowBuilds)
 - strictPeerDependencies: true (override via peerDependencyRules.allowedVersions)

allowBuilds permits the @swc/core, esbuild and msw postinstalls (native
binaries / service worker setup) and explicitly denies @scarf/scarf
telemetry. trustPolicyExclude lists semver@6.3.1, which a transitive of
@babel/core publishes without provenance even though earlier versions
had it.

The lockfile is imported from the previous package-lock.json, so locked
versions stay identical to npm — no dependency upgrades sneak in here.
@graphql-typed-document-node/core is added as an explicit devDependency
because @graphql-codegen/client-preset's generated code imports it
directly and pnpm doesn't hoist transitive deps.

The frontend/.npmrc engine-strict=true setting moves to pnpm-workspace.yaml
as engineStrict: true.
2026-05-12 12:13:46 +02:00

90 lines
2.8 KiB
JSON

{
"name": "mas-frontend",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"generate": "graphql-codegen && i18next-cli extract",
"lint": "graphql-codegen && biome check && tsc && i18next-cli extract --ci",
"format": "biome format --write",
"build": "rimraf ./dist/ && vite build",
"preview": "vite preview",
"test": "vitest",
"coverage": "vitest run --coverage",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
"i18n": "i18next-cli",
"knip": "knip"
},
"dependencies": {
"@fontsource/inconsolata": "^5.2.8",
"@fontsource/inter": "^5.2.8",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-dialog": "^1.1.15",
"@tanstack/react-query": "^5.97.0",
"@tanstack/react-router": "^1.168.10",
"@vector-im/compound-design-tokens": "6.10.1",
"@vector-im/compound-web": "^8.3.5",
"@zxcvbn-ts/core": "^3.0.4",
"@zxcvbn-ts/language-common": "^3.0.4",
"classnames": "^2.5.1",
"date-fns": "^4.1.0",
"i18next": "^26.0.4",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-i18next": "^17.0.2",
"swagger-ui-dist": "^5.31.0",
"valibot": "^1.2.0",
"vaul": "^1.1.2"
},
"devDependencies": {
"@biomejs/biome": "^2.4.2",
"@browser-logos/chrome": "^2.0.0",
"@browser-logos/firefox": "^3.0.10",
"@browser-logos/safari": "^2.1.0",
"@graphql-codegen/cli": "^6.2.1",
"@graphql-codegen/client-preset": "^5.2.3",
"@graphql-codegen/typescript-msw": "^4.0.0",
"@graphql-typed-document-node/core": "^3.2.0",
"@storybook/addon-docs": "^10.3.5",
"@storybook/react-vite": "^10.3.5",
"@tanstack/react-query-devtools": "^5.97.0",
"@tanstack/react-router-devtools": "^1.166.11",
"@tanstack/router-plugin": "^1.167.12",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.1",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^25.3.0",
"@types/react": "19.2.14",
"@types/react-dom": "19.2.3",
"@types/swagger-ui-dist": "^3.30.6",
"@vitejs/plugin-react": "^6.0.1",
"@vitest/coverage-v8": "^4.1.3",
"autoprefixer": "^10.4.23",
"browserslist-to-esbuild": "^2.1.1",
"graphql": "^16.12.0",
"happy-dom": "^20.8.9",
"i18next-cli": "^1.51.7",
"knip": "^5.81.0",
"msw": "^2.12.8",
"msw-storybook-addon": "^2.0.6",
"postcss": "^8.5.12",
"postcss-import": "^16.1.1",
"postcss-nesting": "^14.0.0",
"rimraf": "^6.1.2",
"storybook": "^10.1.11",
"tailwindcss": "^3.4.19",
"tinyglobby": "^0.2.15",
"typescript": "^5.9.3",
"vite": "8.0.0",
"vite-plugin-graphql-codegen": "^3.8.0",
"vitest": "^4.0.15"
},
"msw": {
"workerDirectory": [
".storybook/public"
]
}
}