feat(packages/tuono): config – add optimizeDeps and plugins to vite options (#197)

This commit is contained in:
Marco Pasqualetti
2024-12-08 10:44:09 +01:00
committed by GitHub
parent bcf7e5b5ab
commit c6e93c266a
12 changed files with 284 additions and 240 deletions
+1 -1
View File
@@ -23,7 +23,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/mdx": "^2.0.13", "@types/mdx": "^2.0.13",
"@types/react": "^18.3.3", "@types/react": "^18.3.13",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^18.3.0",
"postcss": "^8.4.39", "postcss": "^8.4.39",
"postcss-preset-mantine": "^1.17.0", "postcss-preset-mantine": "^1.17.0",
+2 -2
View File
@@ -8,8 +8,8 @@
"tuono": "link:../../packages/tuono" "tuono": "link:../../packages/tuono"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.3.3", "@types/react": "^18.3.13",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^18.3.0",
"typescript": "^5.4.5" "typescript": "^5.6.3"
} }
} }
+2 -2
View File
@@ -8,8 +8,8 @@
"tuono": "link:../../packages/tuono" "tuono": "link:../../packages/tuono"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.3.3", "@types/react": "^18.3.13",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^18.3.0",
"typescript": "^5.4.5" "typescript": "^5.6.3"
} }
} }
+5 -4
View File
@@ -3,14 +3,15 @@
"description": "Tuono example combined with mdx", "description": "Tuono example combined with mdx",
"version": "0.0.1", "version": "0.0.1",
"dependencies": { "dependencies": {
"@mdx-js/react": "^3.0.1", "@mdx-js/react": "3.1.0",
"react": "18.3.1", "react": "18.3.1",
"react-dom": "18.3.1", "react-dom": "18.3.1",
"tuono": "link:../../packages/tuono" "tuono": "link:../../packages/tuono"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.3.3", "@mdx-js/rollup": "3.1.0",
"@types/react-dom": "^18.3.0", "@types/react": "18.3.13",
"typescript": "^5.5.3" "@types/react-dom": "18.3.0",
"typescript": "^5.6.3"
} }
} }
+11 -1
View File
@@ -1,5 +1,15 @@
import type { TuonoConfig } from 'tuono/config' import type { TuonoConfig } from 'tuono/config'
import mdx from '@mdx-js/rollup'
const config: TuonoConfig = {} const config: TuonoConfig = {
vite: {
optimizeDeps: {
exclude: ['@mdx-js/react'],
},
plugins: [
{ enforce: 'pre', ...mdx({ providerImportSource: '@mdx-js/react' }) },
],
},
}
export default config export default config
+2 -2
View File
@@ -26,7 +26,7 @@
"@eslint/js": "9.15.0", "@eslint/js": "9.15.0",
"@tanstack/config": "^0.7.0", "@tanstack/config": "^0.7.0",
"@types/node": "^22.0.0", "@types/node": "^22.0.0",
"@types/react": "^18.3.1", "@types/react": "^18.3.13",
"@vitejs/plugin-react": "^4.2.1", "@vitejs/plugin-react": "^4.2.1",
"eslint": "^9.15.0", "eslint": "^9.15.0",
"eslint-import-resolver-typescript": "^3.6.1", "eslint-import-resolver-typescript": "^3.6.1",
@@ -35,7 +35,7 @@
"eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-hooks": "^5.0.0",
"prettier": "^3.2.4", "prettier": "^3.2.4",
"turbo": "^2.2.3", "turbo": "^2.2.3",
"typescript": "^5.6.3", "typescript": "5.6.3",
"typescript-eslint": "8.15.0", "typescript-eslint": "8.15.0",
"vite": "^5.2.11", "vite": "^5.2.11",
"vitest": "^2.0.0" "vitest": "^2.0.0"
+1 -2
View File
@@ -101,7 +101,6 @@
"@babel/template": "^7.24.0", "@babel/template": "^7.24.0",
"@babel/traverse": "^7.24.1", "@babel/traverse": "^7.24.1",
"@babel/types": "^7.24.0", "@babel/types": "^7.24.0",
"@mdx-js/rollup": "^3.0.1",
"@types/babel__core": "^7.20.5", "@types/babel__core": "^7.20.5",
"@types/node": "^22.0.0", "@types/node": "^22.0.0",
"@vitejs/plugin-react-swc": "^3.7.0", "@vitejs/plugin-react-swc": "^3.7.0",
@@ -115,7 +114,7 @@
"devDependencies": { "devDependencies": {
"@types/babel-traverse": "^6.25.10", "@types/babel-traverse": "^6.25.10",
"@types/babel__traverse": "^7.20.6", "@types/babel__traverse": "^7.20.6",
"@types/react": "^18.3.3", "@types/react": "^18.3.13",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^18.3.0",
"prettier": "^3.2.4", "prettier": "^3.2.4",
"vitest": "^2.0.0" "vitest": "^2.0.0"
+104 -89
View File
@@ -3,59 +3,74 @@ import { build, createServer, mergeConfig } from 'vite'
import react from '@vitejs/plugin-react-swc' import react from '@vitejs/plugin-react-swc'
import ViteFsRouter from 'tuono-fs-router-vite-plugin' import ViteFsRouter from 'tuono-fs-router-vite-plugin'
import { LazyLoadingPlugin } from 'tuono-lazy-fn-vite-plugin' import { LazyLoadingPlugin } from 'tuono-lazy-fn-vite-plugin'
import mdx from '@mdx-js/rollup'
import type { TuonoConfig } from '../config'
import { loadConfig, blockingAsync } from './utils' import { loadConfig, blockingAsync } from './utils'
const VITE_PORT = 3001 const VITE_PORT = 3001
const BASE_CONFIG: InlineConfig = { /**
root: '.tuono', * From a given {@link TuonoConfig} return a `vite` "mergeable" {@link InlineConfig}
logLevel: 'silent', * including all default tuono related options
publicDir: '../public', */
cacheDir: 'cache', function createBaseViteConfigFromTuonoConfig(
envDir: '../', tuonoConfig: TuonoConfig,
optimizeDeps: { ): InlineConfig {
exclude: ['@mdx-js/react'], const viteBaseConfig: InlineConfig = {
}, root: '.tuono',
plugins: [ logLevel: 'silent',
{ enforce: 'pre', ...mdx({ providerImportSource: '@mdx-js/react' }) }, publicDir: '../public',
// @ts-expect-error: TS configuration issue. cacheDir: 'cache',
react({ include: /\.(jsx|js|mdx|md|tsx|ts)$/ }), envDir: '../',
ViteFsRouter(),
LazyLoadingPlugin(), resolve: {
], alias: tuonoConfig.vite?.alias ?? {},
},
optimizeDeps: tuonoConfig.vite?.optimizeDeps,
plugins: [
...(tuonoConfig.vite?.plugins ?? []),
react(),
ViteFsRouter(),
LazyLoadingPlugin(),
],
}
// seems redundant but it's useful to log the value when debugging, until we have a logging infrastructure.
return viteBaseConfig
} }
const developmentSSRBundle = (): void => { const developmentSSRBundle = (): void => {
blockingAsync(async () => { blockingAsync(async () => {
const config = await loadConfig() const config = await loadConfig()
await build( await build(
mergeConfig(BASE_CONFIG, { mergeConfig<InlineConfig, InlineConfig>(
resolve: { createBaseViteConfigFromTuonoConfig(config),
alias: config.vite?.alias || {}, {
}, build: {
build: { ssr: true,
ssr: true, minify: false,
minify: false, outDir: 'server',
outDir: 'server', emptyOutDir: true,
emptyOutDir: true, rollupOptions: {
rollupOptions: { input: './.tuono/server-main.tsx',
input: './.tuono/server-main.tsx', onLog() {
onLog() { /* Silence all logs */
// Silence all logs },
}, output: {
output: { entryFileNames: 'dev-server.js',
entryFileNames: 'dev-server.js', format: 'iife',
format: 'iife', },
}, },
}, },
ssr: {
target: 'webworker',
noExternal: true,
},
}, },
ssr: { ),
target: 'webworker',
noExternal: true,
},
}),
) )
}) })
} }
@@ -64,25 +79,25 @@ const developmentCSRWatch = (): void => {
blockingAsync(async () => { blockingAsync(async () => {
const config = await loadConfig() const config = await loadConfig()
const server = await createServer( const server = await createServer(
mergeConfig(BASE_CONFIG, { mergeConfig<InlineConfig, InlineConfig>(
resolve: { createBaseViteConfigFromTuonoConfig(config),
alias: config.vite?.alias || {}, {
}, // Entry point for the development vite proxy
// Entry point for the development vite proxy base: '/vite-server/',
base: '/vite-server/',
server: { server: {
port: VITE_PORT, port: VITE_PORT,
strictPort: true, strictPort: true,
}, },
build: { build: {
manifest: true, manifest: true,
emptyOutDir: true, emptyOutDir: true,
rollupOptions: { rollupOptions: {
input: './.tuono/client-main.tsx', input: './.tuono/client-main.tsx',
},
}, },
}, },
}), ),
) )
await server.listen() await server.listen()
}) })
@@ -93,44 +108,44 @@ const buildProd = (): void => {
const config = await loadConfig() const config = await loadConfig()
await build( await build(
mergeConfig(BASE_CONFIG, { mergeConfig<InlineConfig, InlineConfig>(
resolve: { createBaseViteConfigFromTuonoConfig(config),
alias: config.vite?.alias || {}, {
}, build: {
build: { manifest: true,
manifest: true, emptyOutDir: true,
emptyOutDir: true, outDir: '../out/client',
outDir: '../out/client', rollupOptions: {
rollupOptions: { input: './.tuono/client-main.tsx',
input: './.tuono/client-main.tsx',
},
},
}),
)
await build(
mergeConfig(BASE_CONFIG, {
resolve: {
alias: config.vite?.alias || {},
},
build: {
ssr: true,
minify: true,
outDir: '../out/server',
emptyOutDir: true,
rollupOptions: {
input: './.tuono/server-main.tsx',
output: {
entryFileNames: 'prod-server.js',
format: 'iife',
}, },
}, },
}, },
ssr: { ),
target: 'webworker', )
noExternal: true,
await build(
mergeConfig<InlineConfig, InlineConfig>(
createBaseViteConfigFromTuonoConfig(config),
{
build: {
ssr: true,
minify: true,
outDir: '../out/server',
emptyOutDir: true,
rollupOptions: {
input: './.tuono/server-main.tsx',
output: {
entryFileNames: 'prod-server.js',
format: 'iife',
},
},
},
ssr: {
target: 'webworker',
noExternal: true,
},
}, },
}), ),
) )
}) })
} }
+61 -46
View File
@@ -21,34 +21,41 @@ describe('loadConfig', () => {
}) })
}) })
describe('normalizeConfig - vite - alias', () => { describe('normalizeConfig - vite', () => {
it('should return the config as is, adding `vite` with alias', () => { it('should empty base config if empty config is provided', () => {
const config: TuonoConfig = {} const config: TuonoConfig = {}
expect(normalizeConfig(config)).toStrictEqual({ expect(normalizeConfig(config)).toStrictEqual({
vite: { alias: undefined }, vite: { alias: undefined, optimizeDeps: undefined, plugins: [] },
}) })
}) })
it('should return an empty config if invalid values are provided', () => { it('should return an empty config if invalid values are provided', () => {
// @ts-expect-error testing invalid config // @ts-expect-error testing invalid config
expect(normalizeConfig({ invalid: true })).toStrictEqual({ expect(normalizeConfig({ invalid: true })).toStrictEqual({
vite: { alias: undefined }, vite: { alias: undefined, optimizeDeps: undefined, plugins: [] },
}) })
}) })
})
describe('normalizeConfig - vite - alias', () => {
it('should not modify alias pointing to packages', () => { it('should not modify alias pointing to packages', () => {
const libraryName = '@tabler/icons-react' const libraryName = '@tabler/icons-react'
const libraryAlias = '@tabler/icons-react/dist/esm/icons/index.mjs' const libraryAlias = '@tabler/icons-react/dist/esm/icons/index.mjs'
const config: TuonoConfig = { const config: TuonoConfig = {
vite: { alias: { [libraryName]: libraryAlias } }, vite: { alias: { [libraryName]: libraryAlias } },
} }
expect(normalizeConfig(config)).toStrictEqual({
vite: { expect(normalizeConfig(config)).toStrictEqual(
alias: { expect.objectContaining({
'@tabler/icons-react': '@tabler/icons-react/dist/esm/icons/index.mjs', vite: expect.objectContaining({
}, alias: {
}, '@tabler/icons-react':
}) '@tabler/icons-react/dist/esm/icons/index.mjs',
},
}) as unknown,
}),
)
}) })
it('should transform relative paths to absolute path relative to process.cwd()', () => { it('should transform relative paths to absolute path relative to process.cwd()', () => {
@@ -56,31 +63,36 @@ describe('normalizeConfig - vite - alias', () => {
vite: { alias: { '@': './src', '@no-prefix': 'src' } }, vite: { alias: { '@': './src', '@no-prefix': 'src' } },
} }
expect(normalizeConfig(config)).toStrictEqual({ expect(normalizeConfig(config)).toStrictEqual(
vite: { expect.objectContaining({
alias: { vite: expect.objectContaining({
'@': path.join(PROCESS_CWD_MOCK, 'src'), alias: {
'@no-prefix': path.join(PROCESS_CWD_MOCK, 'src'), '@': path.join(PROCESS_CWD_MOCK, 'src'),
}, '@no-prefix': path.join(PROCESS_CWD_MOCK, 'src'),
}, },
}) }) as unknown,
}),
)
}) })
it('should not transform alias with absolute path', () => { it('should not transform alias with absolute path', () => {
const config: TuonoConfig = { const config: TuonoConfig = {
vite: { alias: { '@1': '/src/pippo', '@2': 'file://pluto' } }, vite: { alias: { '@1': '/src/pippo', '@2': 'file://pluto' } },
} }
expect(normalizeConfig(config)).toStrictEqual({
vite: { expect(normalizeConfig(config)).toStrictEqual(
alias: { expect.objectContaining({
'@1': '/src/pippo', vite: expect.objectContaining({
'@2': 'file://pluto', alias: {
}, '@1': '/src/pippo',
}, '@2': 'file://pluto',
}) },
}) as unknown,
}),
)
}) })
it('should apply previuos behaviuor when using alias as list', () => { it('should apply previous behavior when using alias as list', () => {
const config: TuonoConfig = { const config: TuonoConfig = {
vite: { vite: {
alias: [ alias: [
@@ -90,23 +102,26 @@ describe('normalizeConfig - vite - alias', () => {
], ],
}, },
} }
expect(normalizeConfig(config)).toStrictEqual({
vite: { expect(normalizeConfig(config)).toStrictEqual(
alias: [ expect.objectContaining({
{ vite: expect.objectContaining({
find: '1', alias: [
replacement: '@tabler/icons-react-fun', {
}, find: '1',
{ replacement: '@tabler/icons-react-fun',
find: '2', },
replacement: path.join(PROCESS_CWD_MOCK, 'src'), {
}, find: '2',
{ replacement: path.join(PROCESS_CWD_MOCK, 'src'),
find: '3', },
replacement: 'file://pluto', {
}, find: '3',
], replacement: 'file://pluto',
}, },
}) ],
}) as unknown,
}),
)
}) })
}) })
+4 -3
View File
@@ -1,6 +1,5 @@
import path from 'path' import path from 'node:path'
import { pathToFileURL } from 'node:url'
import { pathToFileURL } from 'url'
import type { AliasOptions } from 'vite' import type { AliasOptions } from 'vite'
@@ -75,6 +74,8 @@ export const normalizeConfig = (config: TuonoConfig): TuonoConfig => {
return { return {
vite: { vite: {
alias: normalizeViteAlias(config.vite?.alias), alias: normalizeViteAlias(config.vite?.alias),
optimizeDeps: config.vite?.optimizeDeps,
plugins: config.vite?.plugins ?? [],
}, },
} }
} }
+3 -1
View File
@@ -1,7 +1,9 @@
import type { AliasOptions } from 'vite' import type { AliasOptions, DepOptimizationOptions, Plugin } from 'vite'
export interface TuonoConfig { export interface TuonoConfig {
vite?: { vite?: {
alias?: AliasOptions alias?: AliasOptions
optimizeDeps?: DepOptimizationOptions
plugins?: Array<Plugin>
} }
} }
+88 -87
View File
@@ -18,8 +18,8 @@ importers:
specifier: ^22.0.0 specifier: ^22.0.0
version: 22.10.0 version: 22.10.0
'@types/react': '@types/react':
specifier: ^18.3.1 specifier: ^18.3.13
version: 18.3.12 version: 18.3.13
'@vitejs/plugin-react': '@vitejs/plugin-react':
specifier: ^4.2.1 specifier: ^4.2.1
version: 4.3.4(vite@5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))) version: 4.3.4(vite@5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)))
@@ -45,7 +45,7 @@ importers:
specifier: ^2.2.3 specifier: ^2.2.3
version: 2.3.3 version: 2.3.3
typescript: typescript:
specifier: ^5.6.3 specifier: 5.6.3
version: 5.6.3 version: 5.6.3
typescript-eslint: typescript-eslint:
specifier: 8.15.0 specifier: 8.15.0
@@ -61,16 +61,16 @@ importers:
dependencies: dependencies:
'@mantine/code-highlight': '@mantine/code-highlight':
specifier: ^7.11.2 specifier: ^7.11.2
version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) version: 7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/core': '@mantine/core':
specifier: ^7.11.2 specifier: ^7.11.2
version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) version: 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': '@mantine/hooks':
specifier: ^7.11.2 specifier: ^7.11.2
version: 7.14.2(react@18.3.1) version: 7.14.2(react@18.3.1)
'@mdx-js/react': '@mdx-js/react':
specifier: ^3.0.1 specifier: ^3.0.1
version: 3.1.0(@types/react@18.3.12)(react@18.3.1) version: 3.1.0(@types/react@18.3.13)(react@18.3.1)
'@tabler/icons-react': '@tabler/icons-react':
specifier: ^3.11.0 specifier: ^3.11.0
version: 3.22.0(react@18.3.1) version: 3.22.0(react@18.3.1)
@@ -85,17 +85,17 @@ importers:
version: 18.3.1(react@18.3.1) version: 18.3.1(react@18.3.1)
tuono: tuono:
specifier: npm:tuono@0.15.0 specifier: npm:tuono@0.15.0
version: 0.15.0(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49)) version: 0.15.0(@types/react@18.3.13)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49))
devDependencies: devDependencies:
'@types/mdx': '@types/mdx':
specifier: ^2.0.13 specifier: ^2.0.13
version: 2.0.13 version: 2.0.13
'@types/react': '@types/react':
specifier: ^18.3.3 specifier: ^18.3.13
version: 18.3.12 version: 18.3.13
'@types/react-dom': '@types/react-dom':
specifier: ^18.3.0 specifier: ^18.3.0
version: 18.3.1 version: 18.3.0
postcss: postcss:
specifier: ^8.4.39 specifier: ^8.4.39
version: 8.4.49 version: 8.4.49
@@ -119,14 +119,14 @@ importers:
version: link:../../packages/tuono version: link:../../packages/tuono
devDependencies: devDependencies:
'@types/react': '@types/react':
specifier: ^18.3.3 specifier: ^18.3.13
version: 18.3.12 version: 18.3.13
'@types/react-dom': '@types/react-dom':
specifier: ^18.3.0 specifier: ^18.3.0
version: 18.3.1 version: 18.3.0
typescript: typescript:
specifier: ^5.4.5 specifier: ^5.6.3
version: 5.7.2 version: 5.6.3
examples/tuono-tutorial: examples/tuono-tutorial:
dependencies: dependencies:
@@ -141,20 +141,20 @@ importers:
version: link:../../packages/tuono version: link:../../packages/tuono
devDependencies: devDependencies:
'@types/react': '@types/react':
specifier: ^18.3.3 specifier: ^18.3.13
version: 18.3.12 version: 18.3.13
'@types/react-dom': '@types/react-dom':
specifier: ^18.3.0 specifier: ^18.3.0
version: 18.3.1 version: 18.3.0
typescript: typescript:
specifier: ^5.4.5 specifier: ^5.6.3
version: 5.7.2 version: 5.6.3
examples/with-mdx: examples/with-mdx:
dependencies: dependencies:
'@mdx-js/react': '@mdx-js/react':
specifier: ^3.0.1 specifier: 3.1.0
version: 3.1.0(@types/react@18.3.12)(react@18.3.1) version: 3.1.0(@types/react@18.3.13)(react@18.3.1)
react: react:
specifier: 18.3.1 specifier: 18.3.1
version: 18.3.1 version: 18.3.1
@@ -165,15 +165,18 @@ importers:
specifier: link:../../packages/tuono specifier: link:../../packages/tuono
version: link:../../packages/tuono version: link:../../packages/tuono
devDependencies: devDependencies:
'@mdx-js/rollup':
specifier: 3.1.0
version: 3.1.0(acorn@8.14.0)(rollup@4.25.0)
'@types/react': '@types/react':
specifier: ^18.3.3 specifier: 18.3.13
version: 18.3.12 version: 18.3.13
'@types/react-dom': '@types/react-dom':
specifier: ^18.3.0 specifier: 18.3.0
version: 18.3.1 version: 18.3.0
typescript: typescript:
specifier: ^5.5.3 specifier: ^5.6.3
version: 5.7.2 version: 5.6.3
packages/fs-router-vite-plugin: packages/fs-router-vite-plugin:
dependencies: dependencies:
@@ -241,7 +244,7 @@ importers:
version: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)) version: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
zustand: zustand:
specifier: 4.4.7 specifier: 4.4.7
version: 4.4.7(@types/react@18.3.12)(react@18.3.1) version: 4.4.7(@types/react@18.3.13)(react@18.3.1)
devDependencies: devDependencies:
'@tanstack/config': '@tanstack/config':
specifier: ^0.7.11 specifier: ^0.7.11
@@ -251,7 +254,7 @@ importers:
version: 6.6.3 version: 6.6.3
'@testing-library/react': '@testing-library/react':
specifier: ^16.0.0 specifier: ^16.0.0
version: 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) version: 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
jsdom: jsdom:
specifier: ^25.0.0 specifier: ^25.0.0
version: 25.0.1 version: 25.0.1
@@ -291,9 +294,6 @@ importers:
'@babel/types': '@babel/types':
specifier: ^7.24.0 specifier: ^7.24.0
version: 7.26.0 version: 7.26.0
'@mdx-js/rollup':
specifier: ^3.0.1
version: 3.1.0(acorn@8.14.0)(rollup@4.25.0)
'@types/babel__core': '@types/babel__core':
specifier: ^7.20.5 specifier: ^7.20.5
version: 7.20.5 version: 7.20.5
@@ -335,11 +335,11 @@ importers:
specifier: ^7.20.6 specifier: ^7.20.6
version: 7.20.6 version: 7.20.6
'@types/react': '@types/react':
specifier: ^18.3.3 specifier: ^18.3.13
version: 18.3.12 version: 18.3.13
'@types/react-dom': '@types/react-dom':
specifier: ^18.3.0 specifier: ^18.3.0
version: 18.3.1 version: 18.3.0
prettier: prettier:
specifier: ^3.2.4 specifier: ^3.2.4
version: 3.4.1 version: 3.4.1
@@ -1097,11 +1097,14 @@ packages:
'@types/prop-types@15.7.13': '@types/prop-types@15.7.13':
resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
'@types/react-dom@18.3.0':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
'@types/react-dom@18.3.1': '@types/react-dom@18.3.1':
resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==}
'@types/react@18.3.12': '@types/react@18.3.13':
resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} resolution: {integrity: sha512-ii/gswMmOievxAJed4PAHT949bpYjPKXvXo1v6cRB/kqc2ZR4n+SgyCyvyc5Fec5ez8VnUumI1Vk7j6fRyRogg==}
'@types/unist@2.0.11': '@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -2323,9 +2326,6 @@ packages:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true hasBin: true
magic-string@0.30.12:
resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
magic-string@0.30.14: magic-string@0.30.14:
resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==}
@@ -3908,16 +3908,16 @@ snapshots:
'@kwsites/promise-deferred@1.1.1': {} '@kwsites/promise-deferred@1.1.1': {}
'@mantine/code-highlight@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': '@mantine/code-highlight@7.14.2(@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.14.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies: dependencies:
'@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mantine/core': 7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.14.2(react@18.3.1) '@mantine/hooks': 7.14.2(react@18.3.1)
clsx: 2.1.1 clsx: 2.1.1
highlight.js: 11.10.0 highlight.js: 11.10.0
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
'@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': '@mantine/core@7.14.2(@mantine/hooks@7.14.2(react@18.3.1))(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies: dependencies:
'@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.14.2(react@18.3.1) '@mantine/hooks': 7.14.2(react@18.3.1)
@@ -3925,8 +3925,8 @@ snapshots:
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
react-number-format: 5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-number-format: 5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) react-remove-scroll: 2.6.0(@types/react@18.3.13)(react@18.3.1)
react-textarea-autosize: 8.5.5(@types/react@18.3.12)(react@18.3.1) react-textarea-autosize: 8.5.5(@types/react@18.3.13)(react@18.3.1)
type-fest: 4.28.0 type-fest: 4.28.0
transitivePeerDependencies: transitivePeerDependencies:
- '@types/react' - '@types/react'
@@ -3965,10 +3965,10 @@ snapshots:
- acorn - acorn
- supports-color - supports-color
'@mdx-js/react@3.1.0(@types/react@18.3.12)(react@18.3.1)': '@mdx-js/react@3.1.0(@types/react@18.3.13)(react@18.3.1)':
dependencies: dependencies:
'@types/mdx': 2.0.13 '@types/mdx': 2.0.13
'@types/react': 18.3.12 '@types/react': 18.3.13
react: 18.3.1 react: 18.3.1
'@mdx-js/rollup@3.1.0(acorn@8.14.0)(rollup@4.25.0)': '@mdx-js/rollup@3.1.0(acorn@8.14.0)(rollup@4.25.0)':
@@ -4257,14 +4257,14 @@ snapshots:
lodash: 4.17.21 lodash: 4.17.21
redent: 3.0.0 redent: 3.0.0
'@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies: dependencies:
'@babel/runtime': 7.26.0 '@babel/runtime': 7.26.0
'@testing-library/dom': 10.4.0 '@testing-library/dom': 10.4.0
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
'@types/react-dom': 18.3.1 '@types/react-dom': 18.3.1
'@types/acorn@4.0.6': '@types/acorn@4.0.6':
@@ -4338,11 +4338,16 @@ snapshots:
'@types/prop-types@15.7.13': {} '@types/prop-types@15.7.13': {}
'@types/react-dom@18.3.0':
dependencies:
'@types/react': 18.3.13
'@types/react-dom@18.3.1': '@types/react-dom@18.3.1':
dependencies: dependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
optional: true
'@types/react@18.3.12': '@types/react@18.3.13':
dependencies: dependencies:
'@types/prop-types': 15.7.13 '@types/prop-types': 15.7.13
csstype: 3.1.3 csstype: 3.1.3
@@ -5827,10 +5832,6 @@ snapshots:
lz-string@1.5.0: {} lz-string@1.5.0: {}
magic-string@0.30.12:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
magic-string@0.30.14: magic-string@0.30.14:
dependencies: dependencies:
'@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/sourcemap-codec': 1.5.0
@@ -6413,40 +6414,40 @@ snapshots:
react-refresh@0.14.2: {} react-refresh@0.14.2: {}
react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): react-remove-scroll-bar@2.3.6(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.13)(react@18.3.1)
tslib: 2.8.1 tslib: 2.8.1
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): react-remove-scroll@2.6.0(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) react-remove-scroll-bar: 2.3.6(@types/react@18.3.13)(react@18.3.1)
react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.13)(react@18.3.1)
tslib: 2.8.1 tslib: 2.8.1
use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) use-callback-ref: 1.3.2(@types/react@18.3.13)(react@18.3.1)
use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.13)(react@18.3.1)
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): react-style-singleton@2.2.1(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
get-nonce: 1.0.1 get-nonce: 1.0.1
invariant: 2.2.4 invariant: 2.2.4
react: 18.3.1 react: 18.3.1
tslib: 2.8.1 tslib: 2.8.1
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
react-textarea-autosize@8.5.5(@types/react@18.3.12)(react@18.3.1): react-textarea-autosize@8.5.5(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
'@babel/runtime': 7.26.0 '@babel/runtime': 7.26.0
react: 18.3.1 react: 18.3.1
use-composed-ref: 1.3.0(react@18.3.1) use-composed-ref: 1.3.0(react@18.3.1)
use-latest: 1.2.1(@types/react@18.3.12)(react@18.3.1) use-latest: 1.2.1(@types/react@18.3.13)(react@18.3.1)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/react' - '@types/react'
@@ -6575,7 +6576,7 @@ snapshots:
rollup-plugin-preserve-directives@0.4.0(rollup@4.25.0): rollup-plugin-preserve-directives@0.4.0(rollup@4.25.0):
dependencies: dependencies:
'@rollup/pluginutils': 5.1.3(rollup@4.25.0) '@rollup/pluginutils': 5.1.3(rollup@4.25.0)
magic-string: 0.30.12 magic-string: 0.30.14
rollup: 4.25.0 rollup: 4.25.0
rollup@4.25.0: rollup@4.25.0:
@@ -6878,13 +6879,13 @@ snapshots:
- supports-color - supports-color
- terser - terser
tuono-router@0.15.0(@types/node@22.10.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sugarss@4.0.1(postcss@8.4.49)): tuono-router@0.15.0(@types/node@22.10.0)(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sugarss@4.0.1(postcss@8.4.49)):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
react-intersection-observer: 9.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-intersection-observer: 9.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)) vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
zustand: 4.4.7(@types/react@18.3.12)(react@18.3.1) zustand: 4.4.7(@types/react@18.3.13)(react@18.3.1)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
- '@types/react' - '@types/react'
@@ -6897,7 +6898,7 @@ snapshots:
- sugarss - sugarss
- terser - terser
tuono@0.15.0(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49)): tuono@0.15.0(@types/react@18.3.13)(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49)):
dependencies: dependencies:
'@babel/core': 7.26.0 '@babel/core': 7.26.0
'@babel/generator': 7.26.2 '@babel/generator': 7.26.2
@@ -6918,7 +6919,7 @@ snapshots:
react-helmet-async: 2.0.5(react@18.3.1) react-helmet-async: 2.0.5(react@18.3.1)
tuono-fs-router-vite-plugin: 0.15.0(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)) tuono-fs-router-vite-plugin: 0.15.0(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
tuono-lazy-fn-vite-plugin: 0.15.0(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)) tuono-lazy-fn-vite-plugin: 0.15.0(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
tuono-router: 0.15.0(@types/node@22.10.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sugarss@4.0.1(postcss@8.4.49)) tuono-router: 0.15.0(@types/node@22.10.0)(@types/react@18.3.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sugarss@4.0.1(postcss@8.4.49))
vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)) vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
transitivePeerDependencies: transitivePeerDependencies:
- '@swc/helpers' - '@swc/helpers'
@@ -7079,37 +7080,37 @@ snapshots:
dependencies: dependencies:
punycode: 2.3.1 punycode: 2.3.1
use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): use-callback-ref@1.3.2(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
tslib: 2.8.1 tslib: 2.8.1
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
use-composed-ref@1.3.0(react@18.3.1): use-composed-ref@1.3.0(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
use-isomorphic-layout-effect@1.1.2(@types/react@18.3.12)(react@18.3.1): use-isomorphic-layout-effect@1.1.2(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
use-latest@1.2.1(@types/react@18.3.12)(react@18.3.1): use-latest@1.2.1(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.12)(react@18.3.1) use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.13)(react@18.3.1)
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): use-sidecar@1.1.2(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
detect-node-es: 1.1.0 detect-node-es: 1.1.0
react: 18.3.1 react: 18.3.1
tslib: 2.8.1 tslib: 2.8.1
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
use-sync-external-store@1.2.0(react@18.3.1): use-sync-external-store@1.2.0(react@18.3.1):
dependencies: dependencies:
@@ -7156,7 +7157,7 @@ snapshots:
'@vue/language-core': 1.8.27(typescript@5.6.3) '@vue/language-core': 1.8.27(typescript@5.6.3)
debug: 4.3.7 debug: 4.3.7
kolorist: 1.8.0 kolorist: 1.8.0
magic-string: 0.30.12 magic-string: 0.30.14
typescript: 5.6.3 typescript: 5.6.3
vue-tsc: 1.8.27(typescript@5.6.3) vue-tsc: 1.8.27(typescript@5.6.3)
optionalDependencies: optionalDependencies:
@@ -7173,7 +7174,7 @@ snapshots:
'@vue/language-core': 1.8.27(typescript@5.7.2) '@vue/language-core': 1.8.27(typescript@5.7.2)
debug: 4.3.7 debug: 4.3.7
kolorist: 1.8.0 kolorist: 1.8.0
magic-string: 0.30.12 magic-string: 0.30.14
typescript: 5.7.2 typescript: 5.7.2
vue-tsc: 1.8.27(typescript@5.7.2) vue-tsc: 1.8.27(typescript@5.7.2)
optionalDependencies: optionalDependencies:
@@ -7366,11 +7367,11 @@ snapshots:
optionalDependencies: optionalDependencies:
commander: 9.5.0 commander: 9.5.0
zustand@4.4.7(@types/react@18.3.12)(react@18.3.1): zustand@4.4.7(@types/react@18.3.13)(react@18.3.1):
dependencies: dependencies:
use-sync-external-store: 1.2.0(react@18.3.1) use-sync-external-store: 1.2.0(react@18.3.1)
optionalDependencies: optionalDependencies:
'@types/react': 18.3.12 '@types/react': 18.3.13
react: 18.3.1 react: 18.3.1
zwitch@2.0.4: {} zwitch@2.0.4: {}