feat(portal-shell): add MSW mock layer with production bundle exclusion (P1-5)

MSW v2.7.0 fallback layer covering dashboard/users/exams/grades domains.
NEXT_PUBLIC_MSW=1 enables browser Service Worker + SSR route handler mock
responses without backend. Production build excludes all mock data via
Turbopack resolveAlias redirecting @/mocks to empty stub.

Acceptance: build bundle (client+server) verified clean of mock strings;
typecheck/lint/vitest (231 tests) all pass.
This commit is contained in:
SpecialX
2026-07-22 14:48:30 +08:00
parent da05c9107a
commit 9358372657
16 changed files with 1292 additions and 67 deletions

268
pnpm-lock.yaml generated
View File

@@ -186,7 +186,7 @@ importers:
version: 5.101.2(react@18.3.0)
'@urql/next':
specifier: ^1.1.0
version: 1.1.0(next@14.2.35(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react@18.3.0)(urql@4.2.0(@urql/core@5.0.0(graphql@16.14.2))(react@18.3.0))
version: 1.1.0(next@14.2.35(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react@18.3.0)(urql@4.2.0(@urql/core@5.0.0(graphql@16.14.2))(react@18.3.0))
clsx:
specifier: ^2.1.0
version: 2.1.1
@@ -369,6 +369,9 @@ importers:
lucide-react:
specifier: ^0.562.0
version: 0.562.0(react@19.2.7)
msw:
specifier: 2.7.0
version: 2.7.0(@types/node@22.20.1)(typescript@5.6.2)
next:
specifier: ^16.0.10
version: 16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
@@ -456,7 +459,7 @@ importers:
version: 5.6.2
vitest:
specifier: ^2.0.0
version: 2.1.0(@types/node@22.20.1)(jsdom@25.0.0)(lightningcss@1.32.0)(msw@2.15.0(@types/node@22.20.1)(typescript@5.6.2))(terser@5.49.0)
version: 2.1.0(@types/node@22.20.1)(jsdom@25.0.0)(lightningcss@1.32.0)(msw@2.7.0(@types/node@22.20.1)(typescript@5.6.2))(terser@5.49.0)
apps/student-portal:
dependencies:
@@ -2051,6 +2054,15 @@ packages:
'@borewit/text-codec@0.2.2':
resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==}
'@bundled-es-modules/cookie@2.0.1':
resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==}
'@bundled-es-modules/statuses@1.0.1':
resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==}
'@bundled-es-modules/tough-cookie@0.1.6':
resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==}
'@colors/colors@1.5.0':
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
@@ -3274,10 +3286,23 @@ packages:
cpu: [x64]
os: [win32]
'@inquirer/ansi@1.0.2':
resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}
engines: {node: '>=18'}
'@inquirer/ansi@2.0.7':
resolution: {integrity: sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
'@inquirer/confirm@5.1.21':
resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/confirm@6.1.1':
resolution: {integrity: sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
@@ -3287,6 +3312,15 @@ packages:
'@types/node':
optional: true
'@inquirer/core@10.3.2':
resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/core@11.2.1':
resolution: {integrity: sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
@@ -3296,10 +3330,23 @@ packages:
'@types/node':
optional: true
'@inquirer/figures@1.0.15':
resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}
engines: {node: '>=18'}
'@inquirer/figures@2.0.7':
resolution: {integrity: sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
'@inquirer/type@3.0.10':
resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
'@inquirer/type@4.0.7':
resolution: {integrity: sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
@@ -3352,15 +3399,9 @@ packages:
'@jridgewell/sourcemap-codec@1.4.10':
resolution: {integrity: sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==}
'@jridgewell/sourcemap-codec@1.4.14':
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
'@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
@@ -3489,6 +3530,10 @@ packages:
'@module-federation/webpack-bundler-runtime@2.7.0':
resolution: {integrity: sha512-3qLRIqcZVBNgJrZpiEzcTP8a6+mCdUV1QGk/XljawsQHyNieMVdLQtdLvkoF5Z5kRXNMovq+wv3vchKOMWyA8w==}
'@mswjs/interceptors@0.37.6':
resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==}
engines: {node: '>=18'}
'@mswjs/interceptors@0.41.9':
resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==}
engines: {node: '>=18'}
@@ -6374,6 +6419,9 @@ packages:
'@types/connect@3.4.38':
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
'@types/cookie@0.6.0':
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
'@types/d3-array@3.2.2':
resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==}
@@ -6544,6 +6592,9 @@ packages:
'@types/tedious@4.0.14':
resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==}
'@types/tough-cookie@4.0.5':
resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
'@types/uuid@10.0.0':
resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==}
@@ -7512,8 +7563,8 @@ packages:
cookie-signature@1.0.7:
resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==}
cookie@0.7.1:
resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
cookie@0.7.2:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
cookie@1.1.1:
@@ -8664,6 +8715,9 @@ packages:
header-case@2.0.4:
resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
headers-polyfill@4.0.3:
resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==}
headers-polyfill@5.0.1:
resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==}
@@ -9695,6 +9749,16 @@ packages:
typescript:
optional: true
msw@2.7.0:
resolution: {integrity: sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==}
engines: {node: '>=18'}
hasBin: true
peerDependencies:
typescript: '>= 4.8.x'
peerDependenciesMeta:
typescript:
optional: true
multer@2.0.2:
resolution: {integrity: sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==}
engines: {node: '>= 10.16.0'}
@@ -9706,6 +9770,10 @@ packages:
resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
mute-stream@2.0.0:
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
engines: {node: ^18.17.0 || >=20.5.0}
mute-stream@3.0.0:
resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
engines: {node: ^20.17.0 || >=22.9.0}
@@ -11459,14 +11527,14 @@ packages:
resolution: {integrity: sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==}
engines: {node: '>=12.20'}
type-fest@2.5.0:
resolution: {integrity: sha512-wB5vE+XXZ2g2mDRo18yZMae1joUhquomLTm+BkxeuRHnwmrNWzVPNrFah9z7pjsKNiVAaJL33+uQbgbPSARyqw==}
engines: {node: '>=12.20'}
type-fest@3.9.0:
resolution: {integrity: sha512-hR8JP2e8UiH7SME5JZjsobBlEiatFoxpzCP+R3ZeCo7kAaG1jXQE5X/buLzogM6GJu8le9Y4OcfNuIQX0rZskA==}
engines: {node: '>=14.16'}
type-fest@4.41.0:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
type-fest@5.8.0:
resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==}
engines: {node: '>=20'}
@@ -12067,6 +12135,10 @@ packages:
resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
engines: {node: '>=12.20'}
yoctocolors-cjs@2.1.3:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
zen-observable-ts@1.2.5:
resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==}
@@ -12489,6 +12561,19 @@ snapshots:
'@borewit/text-codec@0.2.2': {}
'@bundled-es-modules/cookie@2.0.1':
dependencies:
cookie: 0.7.2
'@bundled-es-modules/statuses@1.0.1':
dependencies:
statuses: 2.0.2
'@bundled-es-modules/tough-cookie@0.1.6':
dependencies:
'@types/tough-cookie': 4.0.5
tough-cookie: 4.1.4
'@colors/colors@1.5.0':
optional: true
@@ -13849,8 +13934,17 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
'@inquirer/ansi@1.0.2': {}
'@inquirer/ansi@2.0.7': {}
'@inquirer/confirm@5.1.21(@types/node@22.20.1)':
dependencies:
'@inquirer/core': 10.3.2(@types/node@22.20.1)
'@inquirer/type': 3.0.10(@types/node@22.20.1)
optionalDependencies:
'@types/node': 22.20.1
'@inquirer/confirm@6.1.1(@types/node@22.20.1)':
dependencies:
'@inquirer/core': 11.2.1(@types/node@22.20.1)
@@ -13858,6 +13952,19 @@ snapshots:
optionalDependencies:
'@types/node': 22.20.1
'@inquirer/core@10.3.2(@types/node@22.20.1)':
dependencies:
'@inquirer/ansi': 1.0.2
'@inquirer/figures': 1.0.15
'@inquirer/type': 3.0.10(@types/node@22.20.1)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
optionalDependencies:
'@types/node': 22.20.1
'@inquirer/core@11.2.1(@types/node@22.20.1)':
dependencies:
'@inquirer/ansi': 2.0.7
@@ -13870,8 +13977,14 @@ snapshots:
optionalDependencies:
'@types/node': 22.20.1
'@inquirer/figures@1.0.15': {}
'@inquirer/figures@2.0.7': {}
'@inquirer/type@3.0.10(@types/node@22.20.1)':
optionalDependencies:
'@types/node': 22.20.1
'@inquirer/type@4.0.7(@types/node@22.20.1)':
optionalDependencies:
'@types/node': 22.20.1
@@ -13899,7 +14012,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.12':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/gen-mapping@0.3.2':
@@ -13930,18 +14043,14 @@ snapshots:
'@jridgewell/sourcemap-codec@1.4.10': {}
'@jridgewell/sourcemap-codec@1.4.14': {}
'@jridgewell/sourcemap-codec@1.4.15': {}
'@jridgewell/sourcemap-codec@1.5.0': {}
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.4.14
'@jridgewell/sourcemap-codec': 1.5.5
'@js-sdsl/ordered-map@4.4.2': {}
@@ -14061,7 +14170,7 @@ snapshots:
next: 14.2.35(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)
react: 18.3.0
react-dom: 18.3.0(react@18.3.0)
styled-jsx: 5.1.6(react@18.3.0)
styled-jsx: 5.1.6(@babel/core@7.29.7)(react@18.3.0)
webpack: 5.92.1(lightningcss@1.32.0)(postcss@8.5.18)
transitivePeerDependencies:
- '@rspack/core'
@@ -14132,6 +14241,15 @@ snapshots:
'@module-federation/runtime': 2.7.0
'@module-federation/sdk': 2.7.0
'@mswjs/interceptors@0.37.6':
dependencies:
'@open-draft/deferred-promise': 2.2.0
'@open-draft/logger': 0.3.0
'@open-draft/until': 2.1.0
is-node-process: 1.2.0
outvariant: 1.4.3
strict-event-emitter: 0.5.1
'@mswjs/interceptors@0.41.9':
dependencies:
'@open-draft/deferred-promise': 2.2.0
@@ -17544,6 +17662,8 @@ snapshots:
dependencies:
'@types/node': 22.20.1
'@types/cookie@0.6.0': {}
'@types/d3-array@3.2.2': {}
'@types/d3-color@3.1.3': {}
@@ -17741,6 +17861,8 @@ snapshots:
dependencies:
'@types/node': 22.20.1
'@types/tough-cookie@4.0.5': {}
'@types/uuid@10.0.0': {}
'@types/uuid@9.0.8': {}
@@ -17859,7 +17981,7 @@ snapshots:
transitivePeerDependencies:
- graphql
'@urql/next@1.1.0(next@14.2.35(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react@18.3.0)(urql@4.2.0(@urql/core@5.0.0(graphql@16.14.2))(react@18.3.0))':
'@urql/next@1.1.0(next@14.2.35(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react@18.3.0)(urql@4.2.0(@urql/core@5.0.0(graphql@16.14.2))(react@18.3.0))':
dependencies:
next: 14.2.35(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(react-dom@18.3.0(react@18.3.0))(react@18.3.0)
react: 18.3.0
@@ -17910,6 +18032,15 @@ snapshots:
msw: 2.15.0(@types/node@22.20.1)(typescript@5.6.2)
vite: 5.0.0(@types/node@22.20.1)(lightningcss@1.32.0)(terser@5.49.0)
'@vitest/mocker@2.1.0(@vitest/spy@2.1.0)(msw@2.7.0(@types/node@22.20.1)(typescript@5.6.2))(vite@5.0.0(@types/node@22.20.1)(lightningcss@1.32.0)(terser@5.49.0))':
dependencies:
'@vitest/spy': 2.1.0
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
msw: 2.7.0(@types/node@22.20.1)(typescript@5.6.2)
vite: 5.0.0(@types/node@22.20.1)(lightningcss@1.32.0)(terser@5.49.0)
'@vitest/pretty-format@2.1.0':
dependencies:
tinyrainbow: 1.2.0
@@ -18859,7 +18990,7 @@ snapshots:
cookie-signature@1.0.7: {}
cookie@0.7.1: {}
cookie@0.7.2: {}
cookie@1.1.1: {}
@@ -19629,7 +19760,7 @@ snapshots:
body-parser: 1.20.6
content-disposition: 0.5.4
content-type: 1.0.5
cookie: 0.7.1
cookie: 0.7.2
cookie-signature: 1.0.7
debug: 2.6.9
depd: 2.0.0
@@ -20199,6 +20330,8 @@ snapshots:
capital-case: 1.0.4
tslib: 2.8.1
headers-polyfill@4.0.3: {}
headers-polyfill@5.0.1:
dependencies:
'@types/set-cookie-parser': 2.4.10
@@ -21221,6 +21354,31 @@ snapshots:
transitivePeerDependencies:
- '@types/node'
msw@2.7.0(@types/node@22.20.1)(typescript@5.6.2):
dependencies:
'@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
'@bundled-es-modules/tough-cookie': 0.1.6
'@inquirer/confirm': 5.1.21(@types/node@22.20.1)
'@mswjs/interceptors': 0.37.6
'@open-draft/deferred-promise': 2.2.0
'@open-draft/until': 2.1.0
'@types/cookie': 0.6.0
'@types/statuses': 2.0.6
graphql: 16.14.2
headers-polyfill: 4.0.3
is-node-process: 1.2.0
outvariant: 1.4.3
path-to-regexp: 6.3.0
picocolors: 1.1.1
strict-event-emitter: 0.5.1
type-fest: 4.41.0
yargs: 17.7.3
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- '@types/node'
multer@2.0.2:
dependencies:
append-field: 1.0.0
@@ -21235,6 +21393,8 @@ snapshots:
mute-stream@1.0.0: {}
mute-stream@2.0.0: {}
mute-stream@3.0.0: {}
mysql2@3.22.6(@types/node@22.20.1):
@@ -22025,14 +22185,14 @@ snapshots:
dependencies:
find-up: 6.3.0
read-pkg: 7.1.0
type-fest: 2.5.0
type-fest: 2.13.0
read-pkg@7.1.0:
dependencies:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 3.0.2
parse-json: 5.2.0
type-fest: 2.5.0
type-fest: 2.13.0
readable-stream@2.3.8:
dependencies:
@@ -22772,6 +22932,14 @@ snapshots:
optionalDependencies:
'@babel/core': 7.29.7
styled-jsx@5.1.6(@babel/core@7.29.7)(react@18.3.0):
dependencies:
client-only: 0.0.1
react: 18.3.0
optionalDependencies:
'@babel/core': 7.29.7
optional: true
styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.2.7):
dependencies:
client-only: 0.0.1
@@ -22779,12 +22947,6 @@ snapshots:
optionalDependencies:
'@babel/core': 7.29.7
styled-jsx@5.1.6(react@18.3.0):
dependencies:
client-only: 0.0.1
react: 18.3.0
optional: true
subscriptions-transport-ws@0.11.0(graphql@16.14.2):
dependencies:
backo2: 1.0.2
@@ -23194,10 +23356,10 @@ snapshots:
type-fest@2.13.0: {}
type-fest@2.5.0: {}
type-fest@3.9.0: {}
type-fest@4.41.0: {}
type-fest@5.8.0:
dependencies:
tagged-tag: 1.0.0
@@ -23511,6 +23673,40 @@ snapshots:
- supports-color
- terser
vitest@2.1.0(@types/node@22.20.1)(jsdom@25.0.0)(lightningcss@1.32.0)(msw@2.7.0(@types/node@22.20.1)(typescript@5.6.2))(terser@5.49.0):
dependencies:
'@vitest/expect': 2.1.0
'@vitest/mocker': 2.1.0(@vitest/spy@2.1.0)(msw@2.7.0(@types/node@22.20.1)(typescript@5.6.2))(vite@5.0.0(@types/node@22.20.1)(lightningcss@1.32.0)(terser@5.49.0))
'@vitest/pretty-format': 2.1.0
'@vitest/runner': 2.1.0
'@vitest/snapshot': 2.1.0
'@vitest/spy': 2.1.0
'@vitest/utils': 2.1.0
chai: 5.1.1
debug: 4.4.3
magic-string: 0.30.21
pathe: 1.1.2
std-env: 3.7.0
tinybench: 2.9.0
tinyexec: 0.3.0
tinypool: 1.0.0
tinyrainbow: 1.2.0
vite: 5.0.0(@types/node@22.20.1)(lightningcss@1.32.0)(terser@5.49.0)
vite-node: 2.1.0(@types/node@22.20.1)(lightningcss@1.32.0)(terser@5.49.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.20.1
jsdom: 25.0.0
transitivePeerDependencies:
- less
- lightningcss
- msw
- sass
- stylus
- sugarss
- supports-color
- terser
w3c-xmlserializer@5.0.0:
dependencies:
xml-name-validator: 5.0.0
@@ -23763,7 +23959,7 @@ snapshots:
wide-align@1.1.5:
dependencies:
string-width: 4.1.0
string-width: 4.2.3
wonka@4.0.14: {}
@@ -23863,6 +24059,8 @@ snapshots:
yocto-queue@1.2.2: {}
yoctocolors-cjs@2.1.3: {}
zen-observable-ts@1.2.5:
dependencies:
zen-observable: 0.8.15