From 14bea363560d075c83ceda54e3ba3e9a269877bf Mon Sep 17 00:00:00 2001 From: Valerio Ageno <51341197+Valerioageno@users.noreply.github.com> Date: Sun, 15 Dec 2024 09:22:19 +0100 Subject: [PATCH] fix: update `lazyLoadComponent` fn name to `__tuono__internal__lazyLoadComponent` (#222) --- .prettierignore | 7 +- apps/documentation/package.json | 2 +- eslint.config.js | 1 + packages/lazy-fn-vite-plugin/.prettierignore | 2 - packages/lazy-fn-vite-plugin/package.json | 4 +- packages/lazy-fn-vite-plugin/src/constants.ts | 2 +- packages/lazy-fn-vite-plugin/src/index.ts | 2 +- .../external-dynamic/client.expected.tsx | 4 + .../external-dynamic/server.expected.tsx | 4 + .../tests/sources/external-dynamic/source.tsx | 7 ++ .../tests/sources/vanilla/client.expected.tsx | 3 + .../tests/sources/vanilla/server.expected.tsx | 3 + .../tests/sources/vanilla/source.tsx | 6 ++ .../tests/transpileSource.test.ts | 92 +++++++------------ packages/lazy-fn-vite-plugin/tsconfig.json | 3 +- packages/router/.prettierignore | 2 - packages/router/package.json | 4 +- packages/router/src/dynamic.tsx | 4 +- packages/router/src/index.ts | 2 +- packages/tuono/.prettierignore | 2 - packages/tuono/package.json | 4 +- packages/tuono/src/index.ts | 2 +- 22 files changed, 83 insertions(+), 79 deletions(-) delete mode 100644 packages/lazy-fn-vite-plugin/.prettierignore create mode 100644 packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/client.expected.tsx create mode 100644 packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/server.expected.tsx create mode 100644 packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/source.tsx create mode 100644 packages/lazy-fn-vite-plugin/tests/sources/vanilla/client.expected.tsx create mode 100644 packages/lazy-fn-vite-plugin/tests/sources/vanilla/server.expected.tsx create mode 100644 packages/lazy-fn-vite-plugin/tests/sources/vanilla/source.tsx delete mode 100644 packages/router/.prettierignore delete mode 100644 packages/tuono/.prettierignore diff --git a/.prettierignore b/.prettierignore index eeeb7be5..8cd2bd69 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,6 @@ -pnpm-lock.yaml \ No newline at end of file +pnpm-lock.yaml + +dist +.tuono + +packages/lazy-fn-vite-plugin/tests/sources/* diff --git a/apps/documentation/package.json b/apps/documentation/package.json index e87a90b9..37fd540b 100644 --- a/apps/documentation/package.json +++ b/apps/documentation/package.json @@ -6,7 +6,7 @@ "type": "module", "scripts": { "lint": "eslint .", - "format": "prettier -u --write --ignore-unknown .", + "format": "prettier --write --ignore-unknown .", "format:check": "prettier --check --ignore-unknown .", "types": "tsc --noEmit" }, diff --git a/eslint.config.js b/eslint.config.js index 467a89a7..3849278a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -14,6 +14,7 @@ export default tseslint.config( // #region package-specific 'packages/fs-router-vite-plugin/tests/generator/**', + 'packages/lazy-fn-vite-plugin/tests/sources/**', 'packages/tuono/bin/**', // #endregion package-specific diff --git a/packages/lazy-fn-vite-plugin/.prettierignore b/packages/lazy-fn-vite-plugin/.prettierignore deleted file mode 100644 index dee70d2f..00000000 --- a/packages/lazy-fn-vite-plugin/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -pnpm-lock.yaml diff --git a/packages/lazy-fn-vite-plugin/package.json b/packages/lazy-fn-vite-plugin/package.json index ac0b7909..964f381f 100644 --- a/packages/lazy-fn-vite-plugin/package.json +++ b/packages/lazy-fn-vite-plugin/package.json @@ -7,8 +7,8 @@ "dev": "vite build --watch", "build": "vite build", "lint": "eslint .", - "format": "prettier -u --write --ignore-unknown '**/*'", - "format:check": "prettier --check --ignore-unknown '**/*'", + "format": "prettier --write --ignore-unknown --ignore-path ../../.prettierignore .", + "format:check": "prettier --check --ignore-unknown --ignore-path ../../.prettierignore .", "types": "tsc --noEmit", "test:watch": "vitest", "test": "vitest run" diff --git a/packages/lazy-fn-vite-plugin/src/constants.ts b/packages/lazy-fn-vite-plugin/src/constants.ts index 87ebd54b..bed282fe 100644 --- a/packages/lazy-fn-vite-plugin/src/constants.ts +++ b/packages/lazy-fn-vite-plugin/src/constants.ts @@ -1,3 +1,3 @@ export const TUONO_DYNAMIC_FN_ID = 'dynamic' -export const TUONO_LAZY_FN_ID = 'lazyLoadComponent' +export const TUONO_LAZY_FN_ID = '__tuono__internal__lazyLoadComponent' export const TUONO_MAIN_PACKAGE = 'tuono' diff --git a/packages/lazy-fn-vite-plugin/src/index.ts b/packages/lazy-fn-vite-plugin/src/index.ts index 7a7c8a5b..9ce1c5b4 100644 --- a/packages/lazy-fn-vite-plugin/src/index.ts +++ b/packages/lazy-fn-vite-plugin/src/index.ts @@ -33,7 +33,7 @@ const RemoveTuonoLazyImport: PluginItem = { /** * [CLIENT build] - * This plugin replace the `dynamic` function with the `lazyLoadComponent` one + * This plugin replace the `dynamic` function with the `__tuono__internal__lazyLoadComponent` one */ const ReplaceTuonoLazyImport: PluginItem = { name: 'remove-tuono-lazy-import-plugin', diff --git a/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/client.expected.tsx b/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/client.expected.tsx new file mode 100644 index 00000000..2f76de16 --- /dev/null +++ b/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/client.expected.tsx @@ -0,0 +1,4 @@ +import { createRoute } from 'tuono'; +import { dynamic } from 'external-lib'; +const IndexImport = dynamic(() => import('./../src/routes/index')); +const PokemonspokemonImport = dynamic(() => import('./../src/routes/pokemons/[pokemon]')); diff --git a/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/server.expected.tsx b/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/server.expected.tsx new file mode 100644 index 00000000..2f76de16 --- /dev/null +++ b/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/server.expected.tsx @@ -0,0 +1,4 @@ +import { createRoute } from 'tuono'; +import { dynamic } from 'external-lib'; +const IndexImport = dynamic(() => import('./../src/routes/index')); +const PokemonspokemonImport = dynamic(() => import('./../src/routes/pokemons/[pokemon]')); diff --git a/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/source.tsx b/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/source.tsx new file mode 100644 index 00000000..f3062fee --- /dev/null +++ b/packages/lazy-fn-vite-plugin/tests/sources/external-dynamic/source.tsx @@ -0,0 +1,7 @@ +import { createRoute } from 'tuono' +import { dynamic } from 'external-lib' + +const IndexImport = dynamic(() => import('./../src/routes/index')) +const PokemonspokemonImport = dynamic( + () => import('./../src/routes/pokemons/[pokemon]'), +) diff --git a/packages/lazy-fn-vite-plugin/tests/sources/vanilla/client.expected.tsx b/packages/lazy-fn-vite-plugin/tests/sources/vanilla/client.expected.tsx new file mode 100644 index 00000000..978c3aa1 --- /dev/null +++ b/packages/lazy-fn-vite-plugin/tests/sources/vanilla/client.expected.tsx @@ -0,0 +1,3 @@ +import { createRoute, __tuono__internal__lazyLoadComponent as dynamic } from 'tuono'; +const IndexImport = dynamic(() => import('./../src/routes/index')); +const PokemonspokemonImport = dynamic(() => import('./../src/routes/pokemons/[pokemon]')); diff --git a/packages/lazy-fn-vite-plugin/tests/sources/vanilla/server.expected.tsx b/packages/lazy-fn-vite-plugin/tests/sources/vanilla/server.expected.tsx new file mode 100644 index 00000000..00aa40c8 --- /dev/null +++ b/packages/lazy-fn-vite-plugin/tests/sources/vanilla/server.expected.tsx @@ -0,0 +1,3 @@ +import { createRoute } from 'tuono'; +import IndexImport from "./../src/routes/index"; +import PokemonspokemonImport from "./../src/routes/pokemons/[pokemon]"; diff --git a/packages/lazy-fn-vite-plugin/tests/sources/vanilla/source.tsx b/packages/lazy-fn-vite-plugin/tests/sources/vanilla/source.tsx new file mode 100644 index 00000000..0f912545 --- /dev/null +++ b/packages/lazy-fn-vite-plugin/tests/sources/vanilla/source.tsx @@ -0,0 +1,6 @@ +import { createRoute, dynamic } from 'tuono' + +const IndexImport = dynamic(() => import('./../src/routes/index')) +const PokemonspokemonImport = dynamic( + () => import('./../src/routes/pokemons/[pokemon]'), +) diff --git a/packages/lazy-fn-vite-plugin/tests/transpileSource.test.ts b/packages/lazy-fn-vite-plugin/tests/transpileSource.test.ts index 025b4300..6ffcb33e 100644 --- a/packages/lazy-fn-vite-plugin/tests/transpileSource.test.ts +++ b/packages/lazy-fn-vite-plugin/tests/transpileSource.test.ts @@ -1,27 +1,11 @@ +import fs from 'node:fs/promises' +import path from 'node:path' + import { it, expect, describe } from 'vitest' import type { Plugin } from 'vite' import { LazyLoadingPlugin } from '../src' -const SOURCE_CODE = ` -import { createRoute, dynamic } from 'tuono' - -const IndexImport = dynamic(() => import('./../src/routes/index')) -const PokemonspokemonImport = dynamic( - () => import('./../src/routes/pokemons/[pokemon]'), -) -` - -const NON_DYNAMIC_SOURCE = ` -import { createRoute } from 'tuono' -import {dynamic} from 'external-lib' - -const IndexImport = dynamic(() => import('./../src/routes/index')) -const PokemonspokemonImport = dynamic( - () => import('./../src/routes/pokemons/[pokemon]'), -) -` - type ViteTransformHandler = Exclude< Plugin['transform'], // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type @@ -33,45 +17,35 @@ function getTransform(): (...args: Parameters) => string { return LazyLoadingPlugin().transform as never } -describe('Transpile tuono source', () => { - it('Into the client bundle', () => { - const pluginTransform = getTransform() - const bundle = pluginTransform(SOURCE_CODE, 'id') - expect(bundle) - .toBe(`import { createRoute, lazyLoadComponent as dynamic } from 'tuono'; -const IndexImport = dynamic(() => import('./../src/routes/index')); -const PokemonspokemonImport = dynamic(() => import('./../src/routes/pokemons/[pokemon]'));`) - }) +describe('"dynamic" fn', async () => { + const folderNames = await fs.readdir(`${process.cwd()}/tests/sources`) - it('Into the server bundle', () => { - const pluginTransform = getTransform() - const bundle = pluginTransform(SOURCE_CODE, 'id', { - ssr: true, - }) - expect(bundle).toBe(`import { createRoute } from 'tuono'; -import IndexImport from "./../src/routes/index"; -import PokemonspokemonImport from "./../src/routes/pokemons/[pokemon]";`) - }) -}) - -describe('Non tuono dynamic function', () => { - it('Into the client bundle', () => { - const pluginTransform = getTransform() - const bundle = pluginTransform(NON_DYNAMIC_SOURCE, 'id') - expect(bundle).toBe(`import { createRoute } from 'tuono'; -import { dynamic } from 'external-lib'; -const IndexImport = dynamic(() => import('./../src/routes/index')); -const PokemonspokemonImport = dynamic(() => import('./../src/routes/pokemons/[pokemon]'));`) - }) - - it('Into the server bundle', () => { - const pluginTransform = getTransform() - const bundle = pluginTransform(NON_DYNAMIC_SOURCE, 'id', { - ssr: true, - }) - expect(bundle).toBe(`import { createRoute } from 'tuono'; -import { dynamic } from 'external-lib'; -const IndexImport = dynamic(() => import('./../src/routes/index')); -const PokemonspokemonImport = dynamic(() => import('./../src/routes/pokemons/[pokemon]'));`) - }) + it.each(folderNames)( + 'should correctly build the "%s" dynamic fn', + async (folderName) => { + const testDirPath = `${process.cwd()}/tests/sources/${folderName}` + + const source = await fs.readFile( + path.join(testDirPath, 'source.tsx'), + 'utf-8', + ) + + const pluginTransform = getTransform() + const clientBundle = pluginTransform(source, 'id') + const serverBundle = pluginTransform(source, 'id', { ssr: true }) + + const expectedClientSrc = `${testDirPath}/client.expected.tsx` + const expectedServerSrc = `${testDirPath}/server.expected.tsx` + + await expect(clientBundle).toMatchFileSnapshot( + expectedClientSrc, + `${testDirPath} client build should be equal to ${expectedClientSrc}`, + ) + + await expect(serverBundle).toMatchFileSnapshot( + expectedServerSrc, + `${testDirPath} server build should be equal to ${expectedServerSrc}`, + ) + }, + ) }) diff --git a/packages/lazy-fn-vite-plugin/tsconfig.json b/packages/lazy-fn-vite-plugin/tsconfig.json index 05056167..a30a085c 100644 --- a/packages/lazy-fn-vite-plugin/tsconfig.json +++ b/packages/lazy-fn-vite-plugin/tsconfig.json @@ -1,4 +1,5 @@ { "extends": "../../tsconfig.json", - "include": ["src", "tests", "vite.config.ts"] + "include": ["src", "tests", "vite.config.ts"], + "exclude": ["tests/sources"] } diff --git a/packages/router/.prettierignore b/packages/router/.prettierignore deleted file mode 100644 index dee70d2f..00000000 --- a/packages/router/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -pnpm-lock.yaml diff --git a/packages/router/package.json b/packages/router/package.json index f33d1db1..158c17cf 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -7,8 +7,8 @@ "dev": "vite build --watch", "build": "vite build", "lint": "eslint .", - "format": "prettier -u --write --ignore-unknown '**/*'", - "format:check": "prettier --check --ignore-unknown '**/*'", + "format": "prettier --write --ignore-unknown --ignore-path ../../.prettierignore .", + "format:check": "prettier --check --ignore-unknown --ignore-path ../../.prettierignore .", "types": "tsc --noEmit", "test:watch": "vitest", "test": "vitest run" diff --git a/packages/router/src/dynamic.tsx b/packages/router/src/dynamic.tsx index 6285bf89..01d862cc 100644 --- a/packages/router/src/dynamic.tsx +++ b/packages/router/src/dynamic.tsx @@ -41,7 +41,9 @@ export const dynamic = (importFn: ImportFn): React.JSX.Element => { return <> } -export const lazyLoadComponent = (factory: ImportFn): RouteComponent => { +export const __tuono__internal__lazyLoadComponent = ( + factory: ImportFn, +): RouteComponent => { let LoadedComponent: ComponentType | undefined const LazyComponent = React.lazy(factory) as unknown as RouteComponent diff --git a/packages/router/src/index.ts b/packages/router/src/index.ts index f618dc32..fdb28559 100644 --- a/packages/router/src/index.ts +++ b/packages/router/src/index.ts @@ -2,5 +2,5 @@ export { RouterProvider } from './components/RouterProvider' export { default as Link } from './components/Link' export { createRouter } from './router' export { createRoute, createRootRoute } from './route' -export { dynamic, lazyLoadComponent } from './dynamic' +export { dynamic, __tuono__internal__lazyLoadComponent } from './dynamic' export { useRouter } from './hooks/useRouter' diff --git a/packages/tuono/.prettierignore b/packages/tuono/.prettierignore deleted file mode 100644 index dee70d2f..00000000 --- a/packages/tuono/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -pnpm-lock.yaml diff --git a/packages/tuono/package.json b/packages/tuono/package.json index 20057c2f..f8f08668 100644 --- a/packages/tuono/package.json +++ b/packages/tuono/package.json @@ -7,8 +7,8 @@ "dev": "vite build --watch", "build": "vite build", "lint": "eslint .", - "format": "prettier -u --write --ignore-unknown '**/*'", - "format:check": "prettier --check --ignore-unknown '**/*'", + "format": "prettier --write --ignore-unknown --ignore-path ../../.prettierignore .", + "format:check": "prettier --check --ignore-unknown --ignore-path ../../.prettierignore .", "types": "tsc --noEmit", "test:watch": "vitest", "test": "vitest run" diff --git a/packages/tuono/src/index.ts b/packages/tuono/src/index.ts index 5756d6d9..ea745dbe 100644 --- a/packages/tuono/src/index.ts +++ b/packages/tuono/src/index.ts @@ -7,8 +7,8 @@ export { Link, RouterProvider, dynamic, - lazyLoadComponent, useRouter, + __tuono__internal__lazyLoadComponent, } from 'tuono-router' export type { TuonoProps } from './types'