This commit is contained in:
syuilo 2024-08-23 08:08:33 +09:00
parent 437e80f3e9
commit d8dcad19a3
4 changed files with 656 additions and 57 deletions

View file

@ -0,0 +1,96 @@
import dns from 'dns';
import { readFile } from 'node:fs/promises';
import type { IncomingMessage } from 'node:http';
import { defineConfig } from 'vite';
import type { UserConfig } from 'vite';
import * as yaml from 'js-yaml';
import locales from '../../locales/index.js';
import { getConfig } from './vite.config.js';
dns.setDefaultResultOrder('ipv4first');
const defaultConfig = getConfig();
const { port } = yaml.load(await readFile('../../.config/default.yml', 'utf-8'));
const httpUrl = `http://localhost:${port}/`;
const websocketUrl = `ws://localhost:${port}/`;
// activitypubリクエストはProxyを通し、それ以外はViteの開発サーバーを返す
function varyHandler(req: IncomingMessage) {
if (req.headers.accept?.includes('application/activity+json')) {
return null;
}
return '/index.html';
}
const devConfig: UserConfig = {
// 基本の設定は vite.config.js から引き継ぐ
...defaultConfig,
root: 'src',
publicDir: '../assets',
base: './',
server: {
host: 'localhost',
port: 5173,
proxy: {
'/api': {
changeOrigin: true,
target: httpUrl,
},
'/assets': httpUrl,
'/static-assets': httpUrl,
'/client-assets': httpUrl,
'/files': httpUrl,
'/twemoji': httpUrl,
'/fluent-emoji': httpUrl,
'/sw.js': httpUrl,
'/streaming': {
target: websocketUrl,
ws: true,
},
'/favicon.ico': httpUrl,
'/robots.txt': httpUrl,
'/embed.js': httpUrl,
'/identicon': {
target: httpUrl,
rewrite(path) {
return path.replace('@localhost:5173', '');
},
},
'/url': httpUrl,
'/proxy': httpUrl,
'/_info_card_': httpUrl,
'/bios': httpUrl,
'/cli': httpUrl,
'/inbox': httpUrl,
'/emoji/': httpUrl,
'/notes': {
target: httpUrl,
bypass: varyHandler,
},
'/users': {
target: httpUrl,
bypass: varyHandler,
},
'/.well-known': {
target: httpUrl,
},
},
},
build: {
...defaultConfig.build,
rollupOptions: {
...defaultConfig.build?.rollupOptions,
input: 'index.html',
},
},
define: {
...defaultConfig.define,
_LANGS_FULL_: JSON.stringify(Object.entries(locales)),
},
};
export default defineConfig(({ command, mode }) => devConfig);

View file

@ -0,0 +1,190 @@
import path from 'path';
import pluginReplace from '@rollup/plugin-replace';
import pluginVue from '@vitejs/plugin-vue';
import { type UserConfig, defineConfig } from 'vite';
import locales from '../../locales/index.js';
import meta from '../../package.json';
import packageInfo from './package.json' with { type: 'json' };
import pluginUnwindCssModuleClassName from './lib/rollup-plugin-unwind-css-module-class-name.js';
import pluginJson5 from './vite.json5.js';
const extensions = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.json', '.json5', '.svg', '.sass', '.scss', '.css', '.vue'];
/**
* MisskeyのフロントエンドにバンドルせずCDNなどから別途読み込むリソースを記述する
* CDNを使わずにバンドルしたい場合orコメントアウトすればOK
*/
const externalPackages = [
// shikiコードブロックのシンタックスハイライトで使用中はテーマ・言語の定義の容量が大きいため、それらはCDNから読み込む
{
name: 'shiki',
match: /^shiki\/(?<subPkg>(langs|themes))$/,
path(id: string, pattern: RegExp): string {
const match = pattern.exec(id)?.groups;
return match
? `https://esm.sh/shiki@${packageInfo.dependencies.shiki}/${match['subPkg']}`
: id;
},
},
];
const hash = (str: string, seed = 0): number => {
let h1 = 0xdeadbeef ^ seed,
h2 = 0x41c6ce57 ^ seed;
for (let i = 0, ch; i < str.length; i++) {
ch = str.charCodeAt(i);
h1 = Math.imul(h1 ^ ch, 2654435761);
h2 = Math.imul(h2 ^ ch, 1597334677);
}
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
};
const BASE62_DIGITS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function toBase62(n: number): string {
if (n === 0) {
return '0';
}
let result = '';
while (n > 0) {
result = BASE62_DIGITS[n % BASE62_DIGITS.length] + result;
n = Math.floor(n / BASE62_DIGITS.length);
}
return result;
}
export function getConfig(): UserConfig {
return {
base: '/vite/',
server: {
port: 5173,
},
plugins: [
pluginVue(),
pluginUnwindCssModuleClassName(),
pluginJson5(),
...process.env.NODE_ENV === 'production'
? [
pluginReplace({
preventAssignment: true,
values: {
'isChromatic()': JSON.stringify(false),
},
}),
]
: [],
],
resolve: {
extensions,
alias: {
'@/': __dirname + '/src/',
'/client-assets/': __dirname + '/assets/',
'/static-assets/': __dirname + '/../backend/assets/',
'/fluent-emojis/': __dirname + '/../../fluent-emojis/dist/',
'/fluent-emoji/': __dirname + '/../../fluent-emojis/dist/',
},
},
css: {
modules: {
generateScopedName(name, filename, _css): string {
const id = (path.relative(__dirname, filename.split('?')[0]) + '-' + name).replace(/[\\\/\.\?&=]/g, '-').replace(/(src-|vue-)/g, '');
if (process.env.NODE_ENV === 'production') {
return 'x' + toBase62(hash(id)).substring(0, 4);
} else {
return id;
}
},
},
},
define: {
_VERSION_: JSON.stringify(meta.version),
_LANGS_: JSON.stringify(Object.entries(locales).map(([k, v]) => [k, v._lang_])),
_ENV_: JSON.stringify(process.env.NODE_ENV),
_DEV_: process.env.NODE_ENV !== 'production',
_PERF_PREFIX_: JSON.stringify('Misskey:'),
_DATA_TRANSFER_DRIVE_FILE_: JSON.stringify('mk_drive_file'),
_DATA_TRANSFER_DRIVE_FOLDER_: JSON.stringify('mk_drive_folder'),
_DATA_TRANSFER_DECK_COLUMN_: JSON.stringify('mk_deck_column'),
__VUE_OPTIONS_API__: true,
__VUE_PROD_DEVTOOLS__: false,
},
build: {
target: [
'chrome116',
'firefox116',
'safari16',
],
manifest: 'manifest.json',
rollupOptions: {
input: {
app: './src/_boot_.ts',
embedApp: './src/_embed_boot_.ts',
},
external: externalPackages.map(p => p.match),
output: {
manualChunks: {
vue: ['vue'],
photoswipe: ['photoswipe', 'photoswipe/lightbox', 'photoswipe/style.css'],
},
chunkFileNames: process.env.NODE_ENV === 'production' ? '[hash:8].js' : '[name]-[hash:8].js',
assetFileNames: process.env.NODE_ENV === 'production' ? '[hash:8][extname]' : '[name]-[hash:8][extname]',
paths(id) {
for (const p of externalPackages) {
if (p.match.test(id)) {
return p.path(id, p.match);
}
}
return id;
},
},
},
cssCodeSplit: true,
outDir: __dirname + '/../../built/_vite_',
assetsDir: '.',
emptyOutDir: false,
sourcemap: process.env.NODE_ENV === 'development',
reportCompressedSize: false,
// https://vitejs.dev/guide/dep-pre-bundling.html#monorepos-and-linked-dependencies
commonjsOptions: {
include: [/misskey-js/, /misskey-reversi/, /misskey-bubble-game/, /node_modules/],
},
},
worker: {
format: 'es',
},
test: {
environment: 'happy-dom',
deps: {
optimizer: {
web: {
include: [
// XXX: misskey-dev/browser-image-resizer has no "type": "module"
'browser-image-resizer',
],
},
},
},
includeSource: ['src/**/*.ts'],
},
};
}
const config = defineConfig(({ command, mode }) => getConfig());
export default config;

View file

@ -0,0 +1,48 @@
// Original: https://github.com/rollup/plugins/tree/8835dd2aed92f408d7dc72d7cc25a9728e16face/packages/json
import JSON5 from 'json5';
import { Plugin } from 'rollup';
import { createFilter, dataToEsm } from '@rollup/pluginutils';
import { RollupJsonOptions } from '@rollup/plugin-json';
// json5 extends SyntaxError with additional fields (without subclassing)
// https://github.com/json5/json5/blob/de344f0619bda1465a6e25c76f1c0c3dda8108d9/lib/parse.js#L1111-L1112
interface Json5SyntaxError extends SyntaxError {
lineNumber: number;
columnNumber: number;
}
export default function json5(options: RollupJsonOptions = {}): Plugin {
const filter = createFilter(options.include, options.exclude);
const indent = 'indent' in options ? options.indent : '\t';
return {
name: 'json5',
// eslint-disable-next-line no-shadow
transform(json, id) {
if (id.slice(-6) !== '.json5' || !filter(id)) return null;
try {
const parsed = JSON5.parse(json);
return {
code: dataToEsm(parsed, {
preferConst: options.preferConst,
compact: options.compact,
namedExports: options.namedExports,
indent,
}),
map: { mappings: '' },
};
} catch (err) {
if (!(err instanceof SyntaxError)) {
throw err;
}
const message = 'Could not parse JSON5 file';
const { lineNumber, columnNumber } = err as Json5SyntaxError;
this.warn({ message, id, loc: { line: lineNumber, column: columnNumber } });
return null;
}
},
};
}

View file

@ -686,6 +686,214 @@ importers:
specifier: 5.1.0
version: 5.1.0
packages/embed:
dependencies:
'@discordapp/twemoji':
specifier: 15.0.3
version: 15.0.3
'@github/webauthn-json':
specifier: 2.1.1
version: 2.1.1
'@rollup/plugin-json':
specifier: 6.1.0
version: 6.1.0(rollup@4.19.1)
'@rollup/plugin-replace':
specifier: 5.0.7
version: 5.0.7(rollup@4.19.1)
'@rollup/pluginutils':
specifier: 5.1.0
version: 5.1.0(rollup@4.19.1)
'@tabler/icons-webfont':
specifier: 3.3.0
version: 3.3.0
'@twemoji/parser':
specifier: 15.1.1
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.1.0
version: 5.1.0(vite@5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3))(vue@3.4.37(typescript@5.5.4))
'@vue/compiler-sfc':
specifier: 3.4.37
version: 3.4.37
aiscript-vscode:
specifier: github:aiscript-dev/aiscript-vscode#v0.1.11
version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/e1e1b27f2f72cd28a473e004b6da0d8fc0bd40d9
astring:
specifier: 1.8.6
version: 1.8.6
buraha:
specifier: 0.0.1
version: 0.0.1
compare-versions:
specifier: 6.1.1
version: 6.1.1
date-fns:
specifier: 2.30.0
version: 2.30.0
escape-regexp:
specifier: 0.0.1
version: 0.0.1
estree-walker:
specifier: 3.0.3
version: 3.0.3
eventemitter3:
specifier: 5.0.1
version: 5.0.1
idb-keyval:
specifier: 6.2.1
version: 6.2.1
is-file-animated:
specifier: 1.0.2
version: 1.0.2
json5:
specifier: 2.2.3
version: 2.2.3
mfm-js:
specifier: 0.24.0
version: 0.24.0
misskey-js:
specifier: workspace:*
version: link:../misskey-js
punycode:
specifier: 2.3.1
version: 2.3.1
rollup:
specifier: 4.19.1
version: 4.19.1
sanitize-html:
specifier: 2.13.0
version: 2.13.0
sass:
specifier: 1.77.8
version: 1.77.8
shiki:
specifier: 1.12.0
version: 1.12.0
strict-event-emitter-types:
specifier: 2.0.0
version: 2.0.0
throttle-debounce:
specifier: 5.0.2
version: 5.0.2
tinycolor2:
specifier: 1.6.0
version: 1.6.0
tsc-alias:
specifier: 1.8.10
version: 1.8.10
tsconfig-paths:
specifier: 4.2.0
version: 4.2.0
typescript:
specifier: 5.5.4
version: 5.5.4
uuid:
specifier: 10.0.0
version: 10.0.0
vite:
specifier: 5.3.5
version: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vue:
specifier: 3.4.37
version: 3.4.37(typescript@5.5.4)
devDependencies:
'@misskey-dev/summaly':
specifier: 5.1.0
version: 5.1.0
'@testing-library/vue':
specifier: 8.1.0
version: 8.1.0(@vue/compiler-sfc@3.4.37)(@vue/server-renderer@3.4.37(vue@3.4.37(typescript@5.5.4)))(vue@3.4.37(typescript@5.5.4))
'@types/escape-regexp':
specifier: 0.0.3
version: 0.0.3
'@types/estree':
specifier: 1.0.5
version: 1.0.5
'@types/micromatch':
specifier: 4.0.9
version: 4.0.9
'@types/node':
specifier: 20.14.12
version: 20.14.12
'@types/punycode':
specifier: 2.1.4
version: 2.1.4
'@types/sanitize-html':
specifier: 2.11.0
version: 2.11.0
'@types/throttle-debounce':
specifier: 5.0.2
version: 5.0.2
'@types/tinycolor2':
specifier: 1.4.6
version: 1.4.6
'@types/uuid':
specifier: 10.0.0
version: 10.0.0
'@types/ws':
specifier: 8.5.11
version: 8.5.11
'@typescript-eslint/eslint-plugin':
specifier: 7.17.0
version: 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)
'@typescript-eslint/parser':
specifier: 7.17.0
version: 7.17.0(eslint@9.8.0)(typescript@5.5.4)
'@vitest/coverage-v8':
specifier: 1.6.0
version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3))
'@vue/runtime-core':
specifier: 3.4.37
version: 3.4.37
acorn:
specifier: 8.12.1
version: 8.12.1
cross-env:
specifier: 7.0.3
version: 7.0.3
eslint-plugin-import:
specifier: 2.29.1
version: 2.29.1(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)
eslint-plugin-vue:
specifier: 9.27.0
version: 9.27.0(eslint@9.8.0)
fast-glob:
specifier: 3.3.2
version: 3.3.2
happy-dom:
specifier: 10.0.3
version: 10.0.3
intersection-observer:
specifier: 0.12.2
version: 0.12.2
micromatch:
specifier: 4.0.7
version: 4.0.7
msw:
specifier: 2.3.4
version: 2.3.4(typescript@5.5.4)
nodemon:
specifier: 3.1.4
version: 3.1.4
prettier:
specifier: 3.3.3
version: 3.3.3
start-server-and-test:
specifier: 2.0.4
version: 2.0.4
vite-plugin-turbosnap:
specifier: 1.0.3
version: 1.0.3
vue-component-type-helpers:
specifier: 2.0.29
version: 2.0.29
vue-eslint-parser:
specifier: 9.4.3
version: 9.4.3(eslint@9.8.0)
vue-tsc:
specifier: 2.0.29
version: 2.0.29(typescript@5.5.4)
packages/frontend:
dependencies:
'@discordapp/twemoji':
@ -5386,9 +5594,6 @@ packages:
'@vue/compiler-core@3.4.37':
resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==}
'@vue/compiler-dom@3.4.34':
resolution: {integrity: sha512-3PUOTS1h5cskdOJMExCu2TInXuM0j60DRPpSCJDqOCupCfUZCJoyQmKtRmA8EgDNZ5kcEE7vketamRZfrEuVDw==}
'@vue/compiler-dom@3.4.37':
resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==}
@ -6985,10 +7190,6 @@ packages:
engines: {node: '>=4'}
hasBin: true
esquery@1.4.2:
resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==}
engines: {node: '>=0.10'}
esquery@1.6.0:
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
engines: {node: '>=0.10'}
@ -9198,10 +9399,6 @@ packages:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
normalize-url@8.0.0:
resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==}
engines: {node: '>=14.16'}
normalize-url@8.0.1:
resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
engines: {node: '>=14.16'}
@ -9837,10 +10034,6 @@ packages:
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
postcss@8.4.38:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
postcss@8.4.40:
resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
engines: {node: ^10 || ^12 || >=14}
@ -11909,8 +12102,8 @@ snapshots:
'@ampproject/remapping@2.2.1':
dependencies:
'@jridgewell/gen-mapping': 0.3.2
'@jridgewell/trace-mapping': 0.3.18
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
'@apidevtools/openapi-schemas@2.1.0': {}
@ -12435,7 +12628,7 @@ snapshots:
'@babel/code-frame@7.24.7':
dependencies:
'@babel/highlight': 7.24.7
picocolors: 1.0.0
picocolors: 1.0.1
'@babel/compat-data@7.23.5': {}
@ -12710,7 +12903,7 @@ snapshots:
'@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.0
picocolors: 1.0.1
'@babel/parser@7.24.7':
dependencies:
@ -13390,7 +13583,7 @@ snapshots:
'@babel/template@7.22.15':
dependencies:
'@babel/code-frame': 7.23.5
'@babel/code-frame': 7.24.7
'@babel/parser': 7.24.7
'@babel/types': 7.24.7
@ -13408,7 +13601,7 @@ snapshots:
'@babel/traverse@7.23.5':
dependencies:
'@babel/code-frame': 7.23.5
'@babel/code-frame': 7.24.7
'@babel/generator': 7.23.5
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.23.0
@ -14303,7 +14496,7 @@ snapshots:
'@jest/source-map@29.6.3':
dependencies:
'@jridgewell/trace-mapping': 0.3.18
'@jridgewell/trace-mapping': 0.3.25
callsites: 3.1.0
graceful-fs: 4.2.11
@ -16527,7 +16720,7 @@ snapshots:
'@testing-library/dom@9.3.4':
dependencies:
'@babel/code-frame': 7.23.5
'@babel/code-frame': 7.24.7
'@babel/runtime': 7.23.4
'@types/aria-query': 5.0.1
aria-query: 5.1.3
@ -17238,14 +17431,14 @@ snapshots:
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.5(supports-color@8.1.1)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
istanbul-reports: 3.1.6
magic-string: 0.30.10
magicast: 0.3.4
picocolors: 1.0.0
picocolors: 1.0.1
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
@ -17253,6 +17446,25 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3))':
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
debug: 4.3.5(supports-color@8.1.1)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
istanbul-reports: 3.1.6
magic-string: 0.30.10
magicast: 0.3.4
picocolors: 1.0.1
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- supports-color
'@vitest/expect@1.6.0':
dependencies:
'@vitest/spy': 1.6.0
@ -17331,11 +17543,6 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.0
'@vue/compiler-dom@3.4.34':
dependencies:
'@vue/compiler-core': 3.4.34
'@vue/shared': 3.4.34
'@vue/compiler-dom@3.4.37':
dependencies:
'@vue/compiler-core': 3.4.37
@ -17368,8 +17575,8 @@ snapshots:
'@vue/language-core@2.0.16(typescript@5.5.4)':
dependencies:
'@volar/language-core': 2.2.0
'@vue/compiler-dom': 3.4.34
'@vue/shared': 3.4.34
'@vue/compiler-dom': 3.4.37
'@vue/shared': 3.4.37
computeds: 0.0.1
minimatch: 9.0.4
path-browserify: 1.0.1
@ -17380,9 +17587,9 @@ snapshots:
'@vue/language-core@2.0.29(typescript@5.5.4)':
dependencies:
'@volar/language-core': 2.4.0-alpha.18
'@vue/compiler-dom': 3.4.34
'@vue/compiler-dom': 3.4.37
'@vue/compiler-vue2': 2.7.16
'@vue/shared': 3.4.34
'@vue/shared': 3.4.37
computeds: 0.0.1
minimatch: 9.0.4
muggle-string: 0.4.1
@ -18076,7 +18283,7 @@ snapshots:
http-cache-semantics: 4.1.1
keyv: 4.5.4
mimic-response: 4.0.0
normalize-url: 8.0.0
normalize-url: 8.0.1
responselike: 3.0.0
cacheable-request@12.0.1:
@ -18688,6 +18895,12 @@ snapshots:
optionalDependencies:
supports-color: 5.5.0
debug@4.3.5(supports-color@5.5.0):
dependencies:
ms: 2.1.2
optionalDependencies:
supports-color: 5.5.0
debug@4.3.5(supports-color@8.1.1):
dependencies:
ms: 2.1.2
@ -19290,10 +19503,6 @@ snapshots:
esprima@4.0.1: {}
esquery@1.4.2:
dependencies:
estraverse: 5.3.0
esquery@1.6.0:
dependencies:
estraverse: 5.3.0
@ -21008,6 +21217,35 @@ snapshots:
transitivePeerDependencies:
- supports-color
jsdom@24.1.1:
dependencies:
cssstyle: 4.0.1
data-urls: 5.0.0
decimal.js: 10.4.3
form-data: 4.0.0
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.5
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.12
parse5: 7.1.2
rrweb-cssom: 0.7.1
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 4.1.4
w3c-xmlserializer: 5.0.0
webidl-conversions: 7.0.0
whatwg-encoding: 3.1.1
whatwg-mimetype: 4.0.0
whatwg-url: 14.0.0
ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
xml-name-validator: 5.0.0
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
optional: true
jsdom@24.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3):
dependencies:
cssstyle: 4.0.1
@ -22066,7 +22304,7 @@ snapshots:
nodemon@3.1.4:
dependencies:
chokidar: 3.5.3
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.5(supports-color@5.5.0)
ignore-by-default: 1.0.1
minimatch: 3.1.2
pstree.remy: 1.1.8
@ -22113,8 +22351,6 @@ snapshots:
normalize-url@6.1.0: {}
normalize-url@8.0.0: {}
normalize-url@8.0.1: {}
npm-run-path@2.0.2:
@ -22727,12 +22963,6 @@ snapshots:
postcss-value-parser@4.2.0: {}
postcss@8.4.38:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.2.0
postcss@8.4.40:
dependencies:
nanoid: 3.3.7
@ -23399,7 +23629,7 @@ snapshots:
htmlparser2: 8.0.1
is-plain-object: 5.0.0
parse-srcset: 1.0.2
postcss: 8.4.38
postcss: 8.4.40
sass@1.77.8:
dependencies:
@ -23968,7 +24198,7 @@ snapshots:
css-tree: 2.3.1
css-what: 6.1.0
csso: 5.0.5
picocolors: 1.0.0
picocolors: 1.0.1
symbol-tree@3.2.4: {}
@ -24391,13 +24621,13 @@ snapshots:
dependencies:
browserslist: 4.22.2
escalade: 3.1.1
picocolors: 1.0.0
picocolors: 1.0.1
update-browserslist-db@1.0.13(browserslist@4.23.0):
dependencies:
browserslist: 4.23.0
escalade: 3.1.1
picocolors: 1.0.0
picocolors: 1.0.1
uri-js@4.4.1:
dependencies:
@ -24449,7 +24679,7 @@ snapshots:
v8-to-istanbul@9.2.0:
dependencies:
'@jridgewell/trace-mapping': 0.3.18
'@jridgewell/trace-mapping': 0.3.25
'@types/istanbul-lib-coverage': 2.0.4
convert-source-map: 2.0.0
@ -24482,7 +24712,7 @@ snapshots:
cac: 6.7.14
debug: 4.3.5(supports-color@8.1.1)
pathe: 1.1.2
picocolors: 1.0.0
picocolors: 1.0.1
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
transitivePeerDependencies:
- '@types/node'
@ -24549,6 +24779,41 @@ snapshots:
- supports-color
- terser
vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.77.8)(terser@5.31.3):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
'@vitest/snapshot': 1.6.0
'@vitest/spy': 1.6.0
'@vitest/utils': 1.6.0
acorn-walk: 8.3.2
chai: 4.3.10
debug: 4.3.4(supports-color@5.5.0)
execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.10
pathe: 1.1.2
picocolors: 1.0.0
std-env: 3.7.0
strip-literal: 2.1.0
tinybench: 2.6.0
tinypool: 0.8.4
vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
vite-node: 1.6.0(@types/node@20.14.12)(sass@1.77.8)(terser@5.31.3)
why-is-node-running: 2.2.2
optionalDependencies:
'@types/node': 20.14.12
happy-dom: 10.0.3
jsdom: 24.1.1
transitivePeerDependencies:
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
void-elements@3.1.0: {}
vscode-jsonrpc@8.2.0: {}
@ -24597,7 +24862,7 @@ snapshots:
dependencies:
'@babel/parser': 7.24.7
'@babel/types': 7.24.7
'@vue/compiler-dom': 3.4.34
'@vue/compiler-dom': 3.4.37
'@vue/compiler-sfc': 3.4.37
ast-types: 0.16.1
hash-sum: 2.0.0
@ -24610,12 +24875,12 @@ snapshots:
vue-eslint-parser@9.4.3(eslint@9.8.0):
dependencies:
debug: 4.3.4(supports-color@5.5.0)
debug: 4.3.5(supports-color@8.1.1)
eslint: 9.8.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.4.2
esquery: 1.6.0
lodash: 4.17.21
semver: 7.6.0
transitivePeerDependencies: