diff --git a/package.json b/package.json index 7713368e..10fd9406 100644 --- a/package.json +++ b/package.json @@ -4,17 +4,18 @@ "scripts": { "dev": "turbo dev --filter tuono", "build": "turbo build --filter tuono", - "lint": "turbo lint --filter tuono", - "format": "turbo format --filter tuono", - "format:check": "turbo format:check --filter tuono", + "lint": "turbo lint", + "format": "turbo format", + "format:check": "turbo format:check", "types": "turbo types --filter tuono", "test": "turbo test", - "test:watch": "turbo test:watch" + "test:watch": "turbo test:watch" }, "workspaces": [ "tuono", - "tuono-lazy-fn-vite-plugin", - "tuono-fs-router-vite-plugin" + "tuono-lazy-fn-vite-plugin", + "tuono-fs-router-vite-plugin", + "tuono-router" ], "author": "Valerio Ageno", "license": "MIT", @@ -37,6 +38,6 @@ "vitest": "^1.5.2" }, "dependencies": { - "turbo": "^2.0.4" + "turbo": "^2.0.12" } } diff --git a/packages/router/.prettierignore b/packages/router/.prettierignore new file mode 100644 index 00000000..dee70d2f --- /dev/null +++ b/packages/router/.prettierignore @@ -0,0 +1,2 @@ +dist +pnpm-lock.yaml diff --git a/packages/router/README.md b/packages/router/README.md new file mode 100644 index 00000000..86ab47c5 --- /dev/null +++ b/packages/router/README.md @@ -0,0 +1,5 @@ +# tuono-router + +This package holds the logic related to the client/server react routing. + +Check [tuono](https://github.com/Valerioageno/tuono) for more. diff --git a/packages/router/package.json b/packages/router/package.json new file mode 100644 index 00000000..ccb1f291 --- /dev/null +++ b/packages/router/package.json @@ -0,0 +1,56 @@ +{ + "name": "tuono-router", + "version": "0.8.3", + "description": "React routing component for the framework tuono. Tuono is the react/rust fullstack framework", + "scripts": { + "dev": "vite build --watch", + "build": "vite build", + "lint": "eslint --ext .ts,.tsx ./src -c ../../.eslintrc", + "format": "prettier -u --write --ignore-unknown '**/*'", + "format:check": "prettier --check --ignore-unknown '**/*'", + "types": "tsc --noEmit", + "test:watch": "vitest", + "test": "vitest run" + }, + "keywords": [], + "author": "Valerio Ageno", + "license": "MIT", + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "files": [ + "dist", + "src", + "README.md" + ], + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + }, + "dependencies": { + "vite": "^5.2.11", + "zustand": "4.4.7" + }, + "devDependencies": { + "@tanstack/config": "^0.7.11", + "@testing-library/jest-dom": "^6.4.5", + "@testing-library/react": "^15.0.7", + "jsdom": "^24.0.0", + "prettier": "^3.2.4", + "vitest": "^1.5.2" + } +} diff --git a/packages/tuono/src/router/components/Link.tsx b/packages/router/src/components/Link.tsx similarity index 100% rename from packages/tuono/src/router/components/Link.tsx rename to packages/router/src/components/Link.tsx diff --git a/packages/tuono/src/router/components/Matches.spec.tsx b/packages/router/src/components/Matches.spec.tsx similarity index 100% rename from packages/tuono/src/router/components/Matches.spec.tsx rename to packages/router/src/components/Matches.spec.tsx diff --git a/packages/tuono/src/router/components/Matches.tsx b/packages/router/src/components/Matches.tsx similarity index 100% rename from packages/tuono/src/router/components/Matches.tsx rename to packages/router/src/components/Matches.tsx diff --git a/packages/tuono/src/router/components/NotFound.tsx b/packages/router/src/components/NotFound.tsx similarity index 100% rename from packages/tuono/src/router/components/NotFound.tsx rename to packages/router/src/components/NotFound.tsx diff --git a/packages/tuono/src/router/components/RouteMatch.spec.tsx b/packages/router/src/components/RouteMatch.spec.tsx similarity index 100% rename from packages/tuono/src/router/components/RouteMatch.spec.tsx rename to packages/router/src/components/RouteMatch.spec.tsx diff --git a/packages/tuono/src/router/components/RouteMatch.tsx b/packages/router/src/components/RouteMatch.tsx similarity index 100% rename from packages/tuono/src/router/components/RouteMatch.tsx rename to packages/router/src/components/RouteMatch.tsx diff --git a/packages/tuono/src/router/components/RouterContext.tsx b/packages/router/src/components/RouterContext.tsx similarity index 100% rename from packages/tuono/src/router/components/RouterContext.tsx rename to packages/router/src/components/RouterContext.tsx diff --git a/packages/tuono/src/router/components/RouterProvider.tsx b/packages/router/src/components/RouterProvider.tsx similarity index 100% rename from packages/tuono/src/router/components/RouterProvider.tsx rename to packages/router/src/components/RouterProvider.tsx diff --git a/packages/tuono/src/router/dynamic.tsx b/packages/router/src/dynamic.tsx similarity index 100% rename from packages/tuono/src/router/dynamic.tsx rename to packages/router/src/dynamic.tsx diff --git a/packages/tuono/src/router/hooks/useInternalRouter.tsx b/packages/router/src/hooks/useInternalRouter.tsx similarity index 100% rename from packages/tuono/src/router/hooks/useInternalRouter.tsx rename to packages/router/src/hooks/useInternalRouter.tsx diff --git a/packages/tuono/src/router/hooks/useListenBrowserUrlUpdates.tsx b/packages/router/src/hooks/useListenBrowserUrlUpdates.tsx similarity index 100% rename from packages/tuono/src/router/hooks/useListenBrowserUrlUpdates.tsx rename to packages/router/src/hooks/useListenBrowserUrlUpdates.tsx diff --git a/packages/tuono/src/router/hooks/useRouter.tsx b/packages/router/src/hooks/useRouter.tsx similarity index 100% rename from packages/tuono/src/router/hooks/useRouter.tsx rename to packages/router/src/hooks/useRouter.tsx diff --git a/packages/tuono/src/router/hooks/useRouterStore.tsx b/packages/router/src/hooks/useRouterStore.tsx similarity index 100% rename from packages/tuono/src/router/hooks/useRouterStore.tsx rename to packages/router/src/hooks/useRouterStore.tsx diff --git a/packages/tuono/src/router/hooks/useServerSideProps.tsx b/packages/router/src/hooks/useServerSideProps.tsx similarity index 100% rename from packages/tuono/src/router/hooks/useServerSideProps.tsx rename to packages/router/src/hooks/useServerSideProps.tsx diff --git a/packages/tuono/src/router/index.tsx b/packages/router/src/index.ts similarity index 100% rename from packages/tuono/src/router/index.tsx rename to packages/router/src/index.ts diff --git a/packages/tuono/src/router/route.ts b/packages/router/src/route.ts similarity index 100% rename from packages/tuono/src/router/route.ts rename to packages/router/src/route.ts diff --git a/packages/tuono/src/router/router.ts b/packages/router/src/router.ts similarity index 100% rename from packages/tuono/src/router/router.ts rename to packages/router/src/router.ts diff --git a/packages/tuono/src/router/types.ts b/packages/router/src/types.ts similarity index 100% rename from packages/tuono/src/router/types.ts rename to packages/router/src/types.ts diff --git a/packages/tuono/src/router/utils.ts b/packages/router/src/utils.ts similarity index 100% rename from packages/tuono/src/router/utils.ts rename to packages/router/src/utils.ts diff --git a/packages/tuono/src/router/utils/from-url-to-parsed-location.ts b/packages/router/src/utils/from-url-to-parsed-location.ts similarity index 100% rename from packages/tuono/src/router/utils/from-url-to-parsed-location.ts rename to packages/router/src/utils/from-url-to-parsed-location.ts diff --git a/packages/router/tsconfig.json b/packages/router/tsconfig.json new file mode 100644 index 00000000..d4961d20 --- /dev/null +++ b/packages/router/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "react" + }, + "include": ["src", "tests", "vite.config.ts"] +} diff --git a/packages/router/vite.config.ts b/packages/router/vite.config.ts new file mode 100644 index 00000000..e6166910 --- /dev/null +++ b/packages/router/vite.config.ts @@ -0,0 +1,23 @@ +/// +/// +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackBuildConfig } from '@tanstack/config/build' +import react from '@vitejs/plugin-react' + +const config = defineConfig({ + plugins: [react()], + test: { + name: 'react-router', + watch: true, + environment: 'jsdom', + globals: true, + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: './src/index.ts', + srcDir: './src', + }), +) diff --git a/packages/tuono/package.json b/packages/tuono/package.json index f977ed2a..774fc5e0 100644 --- a/packages/tuono/package.json +++ b/packages/tuono/package.json @@ -8,9 +8,7 @@ "lint": "eslint --ext .ts,.tsx ./src -c ../../.eslintrc", "format": "prettier -u --write --ignore-unknown '**/*'", "format:check": "prettier --check --ignore-unknown '**/*'", - "types": "tsc --noEmit", - "test:watch": "vitest", - "test": "vitest run" + "types": "tsc --noEmit" }, "type": "module", "types": "dist/esm/index.d.ts", @@ -92,17 +90,14 @@ "react-meta-tags": "^1.0.1", "tuono-fs-router-vite-plugin": "workspace:*", "tuono-lazy-fn-vite-plugin": "workspace:*", - "vite": "^5.2.11", - "zustand": "4.4.7" + "tuono-router": "workspace:*", + "vite": "^5.2.11" }, "devDependencies": { - "@testing-library/jest-dom": "^6.4.5", - "@testing-library/react": "^15.0.7", "@types/babel-traverse": "^6.25.10", "@types/babel__traverse": "^7.20.6", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "jsdom": "^24.0.0", "prettier": "^3.2.4", "vitest": "^1.5.2" }, diff --git a/packages/tuono/src/hydration/index.tsx b/packages/tuono/src/hydration/index.tsx index b803d7ee..ba49063f 100644 --- a/packages/tuono/src/hydration/index.tsx +++ b/packages/tuono/src/hydration/index.tsx @@ -1,6 +1,6 @@ import React from 'react' import { hydrateRoot } from 'react-dom/client' -import { RouterProvider, createRouter } from '../router' +import { RouterProvider, createRouter } from 'tuono-router' type RouteTree = any diff --git a/packages/tuono/src/index.ts b/packages/tuono/src/index.ts index 2018cc9d..55ade937 100644 --- a/packages/tuono/src/index.ts +++ b/packages/tuono/src/index.ts @@ -7,7 +7,7 @@ import { RouterProvider, dynamic, useRouter, -} from './router' +} from 'tuono-router' export type { TuonoProps } from './types' diff --git a/packages/tuono/src/ssr/index.tsx b/packages/tuono/src/ssr/index.tsx index 23b71bbd..8fd5c658 100644 --- a/packages/tuono/src/ssr/index.tsx +++ b/packages/tuono/src/ssr/index.tsx @@ -3,7 +3,7 @@ import * as React from 'react' import { renderToString, renderToStaticMarkup } from 'react-dom/server' import MetaTagsServer from 'react-meta-tags/server' import { MetaTagsContext } from 'react-meta-tags' -import { RouterProvider, createRouter } from '../router' +import { RouterProvider, createRouter } from 'tuono-router' type RouteTree = any type Mode = 'Dev' | 'Prod' diff --git a/packages/tuono/vite.config.ts b/packages/tuono/vite.config.ts index f929e672..d260b490 100644 --- a/packages/tuono/vite.config.ts +++ b/packages/tuono/vite.config.ts @@ -6,12 +6,6 @@ import react from '@vitejs/plugin-react' const config = defineConfig({ plugins: [react()], - test: { - name: 'react-router', - watch: true, - environment: 'jsdom', - globals: true, - }, }) export default mergeConfig( diff --git a/turbo.json b/turbo.json index 7988ed9b..b925b902 100644 --- a/turbo.json +++ b/turbo.json @@ -1,7 +1,11 @@ { "$schema": "https://turbo.build/schema.json", "tasks": { - "lint": {}, + "lint": { + "dependsOn": [ + "^build" + ] + }, "format": {}, "format:check": {}, "types": {