remove @mswjs/source

This commit is contained in:
Gauthier Roebroeck 2025-06-30 11:13:25 +08:00
parent ff2c8c184b
commit d3aa9fc6f3
6 changed files with 89 additions and 186 deletions

View file

@ -22,6 +22,7 @@ export default defineConfigWithVueTs(
'**/dist/**',
'**/dist-ssr/**',
'**/coverage/**',
'**/storybook-static/**',
'openapi-generator.mts',
'**/generated/openapi/komga.d.ts',
'public-msw/**/*',

View file

@ -25,7 +25,6 @@
"@eslint/js": "^9.29.0",
"@formatjs/cli": "^6.7.2",
"@iconify-json/mdi": "^1.2.3",
"@mswjs/source": "^0.4.1",
"@storybook/addon-a11y": "^9.0.13",
"@storybook/addon-docs": "^9.0.13",
"@storybook/addon-themes": "^9.0.13",
@ -1051,23 +1050,6 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@faker-js/faker": {
"version": "8.4.1",
"resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz",
"integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/fakerjs"
}
],
"license": "MIT",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0",
"npm": ">=6.14.13"
}
},
"node_modules/@formatjs/cli": {
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.7.2.tgz",
@ -1612,26 +1594,6 @@
"node": ">=18"
}
},
"node_modules/@mswjs/source": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@mswjs/source/-/source-0.4.1.tgz",
"integrity": "sha512-sUaUz5OaMgsFm9KERnIP/bZY/6kLb1DJS9qPPw28oAndaESZCjr7Fmob7wYUluTokQDBTQeY2bXrUQ9FK/6fxQ==",
"dev": true,
"dependencies": {
"@stoplight/json": "^3.21.7",
"@types/har-format": "^1.2.16",
"@yellow-ticket/seed-json-schema": "^0.1.6",
"openapi-types": "^12.1.3",
"outvariant": "^1.4.3",
"yaml": "^2.8.0"
},
"engines": {
"node": ">=20"
},
"peerDependencies": {
"msw": "^2.10.0"
}
},
"node_modules/@neoconfetti/react": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@neoconfetti/react/-/react-1.0.0.tgz",
@ -2478,58 +2440,6 @@
"win32"
]
},
"node_modules/@stoplight/json": {
"version": "3.21.7",
"resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.7.tgz",
"integrity": "sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@stoplight/ordered-object-literal": "^1.0.3",
"@stoplight/path": "^1.3.2",
"@stoplight/types": "^13.6.0",
"jsonc-parser": "~2.2.1",
"lodash": "^4.17.21",
"safe-stable-stringify": "^1.1"
},
"engines": {
"node": ">=8.3.0"
}
},
"node_modules/@stoplight/ordered-object-literal": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz",
"integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
"node_modules/@stoplight/path": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz",
"integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
"node_modules/@stoplight/types": {
"version": "13.20.0",
"resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
"integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@types/json-schema": "^7.0.4",
"utility-types": "^3.10.0"
},
"engines": {
"node": "^12.20 || >=14.13"
}
},
"node_modules/@storybook/addon-a11y": {
"version": "9.0.13",
"resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.0.13.tgz",
@ -2927,13 +2837,6 @@
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
"license": "MIT"
},
"node_modules/@types/har-format": {
"version": "1.2.16",
"resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.16.tgz",
"integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@ -4369,19 +4272,6 @@
"vue": "^3.5.0"
}
},
"node_modules/@yellow-ticket/seed-json-schema": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@yellow-ticket/seed-json-schema/-/seed-json-schema-0.1.6.tgz",
"integrity": "sha512-RtI85ohEQpARt8qRLeqglOpPFu/00YGmw3Mi7iNphbjoDCwm4QrZWnVBy9uEn2veUC6fuw0GHjHAFzAfJxaEZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@faker-js/faker": "^8.4.1",
"@types/json-schema": "^7.0.15",
"outvariant": "^1.4.2",
"randexp": "^0.5.3"
}
},
"node_modules/abbrev": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
@ -5435,16 +5325,6 @@
"url": "https://dotenvx.com"
}
},
"node_modules/drange": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz",
"integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@ -7430,13 +7310,6 @@
"node": ">=6"
}
},
"node_modules/jsonc-parser": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz",
"integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==",
"dev": true,
"license": "MIT"
},
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@ -8207,13 +8080,6 @@
"msw": "^2.7.0"
}
},
"node_modules/openapi-types": {
"version": "12.1.3",
"resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz",
"integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==",
"dev": true,
"license": "MIT"
},
"node_modules/openapi-typescript": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-7.8.0.tgz",
@ -8963,20 +8829,6 @@
],
"license": "MIT"
},
"node_modules/randexp": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz",
"integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==",
"dev": true,
"license": "MIT",
"dependencies": {
"drange": "^1.0.2",
"ret": "^0.2.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/rc9": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
@ -9154,16 +9006,6 @@
"node": ">=4"
}
},
"node_modules/ret": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz",
"integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/reusify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
@ -9282,13 +9124,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/safe-stable-stringify": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz",
"integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==",
"dev": true,
"license": "MIT"
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@ -10976,16 +10811,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/utility-types": {
"version": "3.11.0",
"resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz",
"integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/varint": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",

View file

@ -42,7 +42,6 @@
"@eslint/js": "^9.29.0",
"@formatjs/cli": "^6.7.2",
"@iconify-json/mdi": "^1.2.3",
"@mswjs/source": "^0.4.1",
"@storybook/addon-a11y": "^9.0.13",
"@storybook/addon-docs": "^9.0.13",
"@storybook/addon-themes": "^9.0.13",

View file

@ -1,17 +1,9 @@
import { actuatorHandlers } from '@/mocks/api/handlers/actuator'
import { announcementHandlers } from '@/mocks/api/handlers/announcements'
import { releasesHandlers } from '@/mocks/api/handlers/releases'
import { fromOpenApi } from '@mswjs/source/open-api'
import type { OpenAPIV3 } from 'openapi-types'
import spec from '../../../../komga/docs/openapi.json'
import { HttpResponse } from 'msw'
const doc = {
basePath: import.meta.env.VITE_KOMGA_API_URL,
...spec,
} as unknown as OpenAPIV3.Document
// manually defined handlers need to be before fromOpenApi
export const handlers = [...announcementHandlers, ...releasesHandlers, ...(await fromOpenApi(doc))]
export const handlers = [...actuatorHandlers, ...announcementHandlers, ...releasesHandlers]
export const response401Unauthorized = () =>
HttpResponse.json({ error: 'Unauthorized' }, { status: 401 })

View file

@ -0,0 +1,42 @@
import { httpTyped } from '@/mocks/api/httpTyped'
export const actuatorInfo = {
git: {
branch: 'master',
commit: {
id: '9be980d',
time: '2025-03-12T03:40:38Z',
},
},
build: {
artifact: 'komga',
name: 'komga',
version: '1.21.2',
group: 'komga',
},
java: {
version: '23.0.2',
vendor: {
name: 'Eclipse Adoptium',
version: 'Temurin-23.0.2+7',
},
runtime: {
name: 'OpenJDK Runtime Environment',
version: '23.0.2+7',
},
jvm: {
name: 'OpenJDK 64-Bit Server VM',
vendor: 'Eclipse Adoptium',
version: '23.0.2+7',
},
},
os: {
name: 'Linux',
version: '6.8.0-57-generic',
arch: 'amd64',
},
}
export const actuatorHandlers = [
httpTyped.get('/actuator/info', ({ response }) => response(200).json(actuatorInfo as never)),
]

View file

@ -1,5 +1,46 @@
import { httpTyped } from '@/mocks/api/httpTyped'
export const announcementsMixedRead = {
version: 'https://jsonfeed.org/version/1',
title: 'Announcements',
home_page_url: 'https://komga.org/blog',
description: 'Latest Komga announcements',
items: [
{
id: 'https://komga.org/blog/ebook-drop2',
url: 'https://komga.org/blog/ebook-drop2',
title: 'eBook drop 2',
summary: 'Version 1.9.0 contains the second feature drop for Ebooks support.',
content_html: '<p>A longer text…</p>',
date_modified: new Date('2023-12-15T00:00:00Z'),
author: {
name: 'gotson',
url: 'https://github.com/gotson',
},
tags: ['upgrade', 'komga'],
_komga: {
read: false,
},
},
{
id: 'https://komga.org/blog/ebook-support',
url: 'https://komga.org/blog/ebook-support',
title: 'eBook support',
summary: 'Version 1.8.0 is bringing a long awaited feature: proper eBook support!',
content_html: '<p>A longer text…</p>',
date_modified: new Date('2023-11-29T00:00:00Z'),
author: {
name: 'gotson',
url: 'https://github.com/gotson',
},
tags: ['upgrade', 'komga'],
_komga: {
read: true,
},
},
],
}
export const announcementsAllRead = {
version: 'https://jsonfeed.org/version/1',
title: 'Announcements',
@ -42,5 +83,8 @@ export const announcementsAllRead = {
}
export const announcementHandlers = [
httpTyped.get('/api/v1/announcements', ({ response }) =>
response(200).json(announcementsMixedRead),
),
httpTyped.put('/api/v1/announcements', ({ response }) => response(204).empty()),
]