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": {