diff --git a/eslint.config.js b/eslint.config.js index 9f607939..58f0248d 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -7,7 +7,6 @@ export default tseslint.config( { ignores: [ // #region shared - '**/build', '**/dist', '**/.tuono', '**/vite.config.ts.timestamp**', diff --git a/packages/tuono/src/build/index.ts b/packages/tuono/src/build/index.ts index 5458a9ea..91b82bad 100644 --- a/packages/tuono/src/build/index.ts +++ b/packages/tuono/src/build/index.ts @@ -1,8 +1,10 @@ -import { build, createServer, InlineConfig, mergeConfig } from 'vite' +import type { InlineConfig } from 'vite' +import { build, createServer, mergeConfig } from 'vite' import react from '@vitejs/plugin-react-swc' import ViteFsRouter from 'tuono-fs-router-vite-plugin' import { LazyLoadingPlugin } from 'tuono-lazy-fn-vite-plugin' import mdx from '@mdx-js/rollup' + import { loadConfig, blockingAsync } from './utils' const VITE_PORT = 3001 @@ -18,14 +20,14 @@ const BASE_CONFIG: InlineConfig = { }, plugins: [ { enforce: 'pre', ...mdx({ providerImportSource: '@mdx-js/react' }) }, - // @ts-ignore: TS configuration issue. + // @ts-expect-error: TS configuration issue. react({ include: /\.(jsx|js|mdx|md|tsx|ts)$/ }), ViteFsRouter(), LazyLoadingPlugin(), ], } -const developmentSSRBundle = () => { +const developmentSSRBundle = (): void => { blockingAsync(async () => { const config = await loadConfig() await build( @@ -40,8 +42,9 @@ const developmentSSRBundle = () => { emptyOutDir: true, rollupOptions: { input: './.tuono/server-main.tsx', - // Silent all logs - onLog() {}, + onLog() { + // Silence all logs + }, output: { entryFileNames: 'dev-server.js', format: 'iife', @@ -57,7 +60,7 @@ const developmentSSRBundle = () => { }) } -const developmentCSRWatch = () => { +const developmentCSRWatch = (): void => { blockingAsync(async () => { const config = await loadConfig() const server = await createServer( @@ -85,7 +88,7 @@ const developmentCSRWatch = () => { }) } -const buildProd = () => { +const buildProd = (): void => { blockingAsync(async () => { const config = await loadConfig() @@ -132,7 +135,7 @@ const buildProd = () => { }) } -const buildConfig = () => { +const buildConfig = (): void => { blockingAsync(async () => { await build({ root: '.tuono', diff --git a/packages/tuono/src/build/utils.spec.ts b/packages/tuono/src/build/utils.spec.ts index a327f769..da69d97b 100644 --- a/packages/tuono/src/build/utils.spec.ts +++ b/packages/tuono/src/build/utils.spec.ts @@ -14,7 +14,7 @@ describe('loadConfig', () => { it('should error if the config does not exist', async () => { const consoleErrorSpy = vi .spyOn(console, 'error') - .mockImplementation(() => {}) + .mockImplementation(() => undefined) await loadConfig() expect(consoleErrorSpy).toHaveBeenCalledTimes(2) diff --git a/packages/tuono/src/build/utils.ts b/packages/tuono/src/build/utils.ts index 89aa7639..21624d1e 100644 --- a/packages/tuono/src/build/utils.ts +++ b/packages/tuono/src/build/utils.ts @@ -1,5 +1,7 @@ import path from 'path' +import { pathToFileURL } from 'url' + import type { AliasOptions } from 'vite' import type { TuonoConfig } from '../config' @@ -9,7 +11,6 @@ import { CONFIG_FOLDER_NAME, CONFIG_FILE_NAME, } from './constants' -import { pathToFileURL } from 'url' /** * Normalize vite alias option: @@ -44,16 +45,18 @@ const normalizeViteAlias = (alias?: AliasOptions): AliasOptions | undefined => { if (!alias) return if (Array.isArray(alias)) { - return alias.map(({ replacement, ...userAliasDefinition }) => ({ - ...userAliasDefinition, - replacement: normalizeAliasPath(replacement), - })) + return (alias as Extract).map( + ({ replacement, ...userAliasDefinition }) => ({ + ...userAliasDefinition, + replacement: normalizeAliasPath(replacement), + }), + ) } if (typeof alias === 'object') { - let normalizedAlias: AliasOptions = {} - for (let [key, value] of Object.entries(alias)) { - normalizedAlias[key] = normalizeAliasPath(value) + const normalizedAlias: AliasOptions = {} + for (const [key, value] of Object.entries(alias)) { + normalizedAlias[key] = normalizeAliasPath(value as string) } return normalizedAlias } @@ -71,14 +74,14 @@ const normalizeViteAlias = (alias?: AliasOptions): AliasOptions | undefined => { export const normalizeConfig = (config: TuonoConfig): TuonoConfig => { return { vite: { - alias: normalizeViteAlias(config?.vite?.alias), + alias: normalizeViteAlias(config.vite?.alias), }, } } export const loadConfig = async (): Promise => { try { - const configFile = await import( + const configFile = (await import( pathToFileURL( path.join( process.cwd(), @@ -87,7 +90,7 @@ export const loadConfig = async (): Promise => { CONFIG_FILE_NAME, ), ).href - ) + )) as { default: TuonoConfig } return normalizeConfig(configFile.default) } catch (err) { @@ -97,8 +100,8 @@ export const loadConfig = async (): Promise => { } } -export const blockingAsync = (callback: () => Promise) => { - ;(async () => { +export const blockingAsync = (callback: () => Promise): void => { + void (async (): Promise => { await callback() })() }