diff --git a/labeler-config.yml b/labeler-config.yml index 15ee4ba018e..69529887a6e 100644 --- a/labeler-config.yml +++ b/labeler-config.yml @@ -43,9 +43,6 @@ 'package: router-generator': - changed-files: - any-glob-to-any-file: 'packages/router-generator/**/*' -'package: router-is-server': - - changed-files: - - any-glob-to-any-file: 'packages/router-is-server/**/*' 'package: router-plugin': - changed-files: - any-glob-to-any-file: 'packages/router-plugin/**/*' diff --git a/packages/react-router/vite.config.ts b/packages/react-router/vite.config.ts index 4ed56483684..47091993efa 100644 --- a/packages/react-router/vite.config.ts +++ b/packages/react-router/vite.config.ts @@ -5,7 +5,7 @@ import packageJson from './package.json' const config = defineConfig({ plugins: [react()], - // Add 'development' condition for tests to resolve @tanstack/router-is-server + // Add 'development' condition for tests to resolve @tanstack/router-core/isServer // to the development export (isServer = undefined) instead of node (isServer = true) ...(process.env.VITEST && { resolve: { diff --git a/packages/router-core/package.json b/packages/router-core/package.json index c5125d2b35d..e649cf56313 100644 --- a/packages/router-core/package.json +++ b/packages/router-core/package.json @@ -68,6 +68,86 @@ "default": "./dist/cjs/ssr/client.cjs" } }, + "./isServer": { + "development": { + "import": { + "types": "./dist/esm/isServer/development.d.ts", + "default": "./dist/esm/isServer/development.js" + }, + "require": { + "types": "./dist/cjs/isServer/development.d.cts", + "default": "./dist/cjs/isServer/development.cjs" + } + }, + "workerd": { + "import": { + "types": "./dist/esm/isServer/server.d.ts", + "default": "./dist/esm/isServer/server.js" + }, + "require": { + "types": "./dist/cjs/isServer/server.d.cts", + "default": "./dist/cjs/isServer/server.cjs" + } + }, + "worker": { + "import": { + "types": "./dist/esm/isServer/server.d.ts", + "default": "./dist/esm/isServer/server.js" + }, + "require": { + "types": "./dist/cjs/isServer/server.d.cts", + "default": "./dist/cjs/isServer/server.cjs" + } + }, + "browser": { + "import": { + "types": "./dist/esm/isServer/client.d.ts", + "default": "./dist/esm/isServer/client.js" + }, + "require": { + "types": "./dist/cjs/isServer/client.d.cts", + "default": "./dist/cjs/isServer/client.cjs" + } + }, + "deno": { + "import": { + "types": "./dist/esm/isServer/server.d.ts", + "default": "./dist/esm/isServer/server.js" + }, + "require": { + "types": "./dist/cjs/isServer/server.d.cts", + "default": "./dist/cjs/isServer/server.cjs" + } + }, + "node": { + "import": { + "types": "./dist/esm/isServer/server.d.ts", + "default": "./dist/esm/isServer/server.js" + }, + "require": { + "types": "./dist/cjs/isServer/server.d.cts", + "default": "./dist/cjs/isServer/server.cjs" + } + }, + "bun": { + "import": { + "types": "./dist/esm/isServer/server.d.ts", + "default": "./dist/esm/isServer/server.js" + }, + "require": { + "types": "./dist/cjs/isServer/server.d.cts", + "default": "./dist/cjs/isServer/server.cjs" + } + }, + "import": { + "types": "./dist/esm/isServer/client.d.ts", + "default": "./dist/esm/isServer/client.js" + }, + "require": { + "types": "./dist/cjs/isServer/client.d.cts", + "default": "./dist/cjs/isServer/client.cjs" + } + }, "./package.json": "./package.json" }, "sideEffects": false, @@ -80,7 +160,6 @@ }, "dependencies": { "@tanstack/history": "workspace:*", - "@tanstack/router-is-server": "workspace:*", "@tanstack/store": "^0.8.0", "cookie-es": "^2.0.0", "seroval": "^1.4.2", diff --git a/packages/router-core/src/isServer.ts b/packages/router-core/src/isServer.ts index 560947269ac..98f73e12616 100644 --- a/packages/router-core/src/isServer.ts +++ b/packages/router-core/src/isServer.ts @@ -1,7 +1,7 @@ /** * Static server/client detection for tree-shaking support. * - * This file re-exports `isServer` from `@tanstack/router-is-server` which uses + * This re-exports `isServer` from the `isServer/` directory which uses * conditional exports to provide different values based on the environment: * * - `browser` condition → `false` (client) @@ -21,4 +21,4 @@ * } * ``` */ -export { isServer } from '@tanstack/router-is-server' +export { isServer } from './isServer/development' diff --git a/packages/router-core/src/isServer/client.ts b/packages/router-core/src/isServer/client.ts new file mode 100644 index 00000000000..f2f86b6ec71 --- /dev/null +++ b/packages/router-core/src/isServer/client.ts @@ -0,0 +1 @@ +export const isServer = false diff --git a/packages/router-is-server/src/development.ts b/packages/router-core/src/isServer/development.ts similarity index 100% rename from packages/router-is-server/src/development.ts rename to packages/router-core/src/isServer/development.ts diff --git a/packages/router-core/src/isServer/server.ts b/packages/router-core/src/isServer/server.ts new file mode 100644 index 00000000000..6f290a1fa0f --- /dev/null +++ b/packages/router-core/src/isServer/server.ts @@ -0,0 +1 @@ +export const isServer = true diff --git a/packages/router-core/vite.config.ts b/packages/router-core/vite.config.ts index a27d8d35355..c6f7fc9220d 100644 --- a/packages/router-core/vite.config.ts +++ b/packages/router-core/vite.config.ts @@ -18,7 +18,14 @@ const config = defineConfig({ export default mergeConfig( config, tanstackViteConfig({ - entry: ['./src/index.ts', './src/ssr/client.ts', './src/ssr/server.ts'], + entry: [ + './src/index.ts', + './src/ssr/client.ts', + './src/ssr/server.ts', + './src/isServer/server.ts', + './src/isServer/client.ts', + './src/isServer/development.ts', + ], srcDir: './src', }), ) diff --git a/packages/router-is-server/eslint.config.js b/packages/router-is-server/eslint.config.js deleted file mode 100644 index b527b96a78a..00000000000 --- a/packages/router-is-server/eslint.config.js +++ /dev/null @@ -1,15 +0,0 @@ -// @ts-check - -import rootConfig from '../../eslint.config.js' - -export default [ - ...rootConfig, - { - rules: { - // We explicitly annotate `isServer: boolean` even though it's inferrable - // because the explicit type is important for documentation and ensures - // consistent typing across all conditional export files - '@typescript-eslint/no-inferrable-types': 'off', - }, - }, -] diff --git a/packages/router-is-server/package.json b/packages/router-is-server/package.json deleted file mode 100644 index 5cd2fe56788..00000000000 --- a/packages/router-is-server/package.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "name": "@tanstack/router-is-server", - "version": "1.127.3", - "description": "Server/client detection for TanStack Router with tree-shaking support", - "author": "Tanner Linsley", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/TanStack/router.git", - "directory": "packages/router-is-server" - }, - "homepage": "https://tanstack.com/router", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "keywords": [ - "router", - "server", - "client", - "tree-shaking" - ], - "scripts": { - "clean": "rimraf ./dist && rimraf ./coverage", - "test:eslint": "eslint ./src", - "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", - "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js", - "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js", - "test:types:ts56": "node ../../node_modules/typescript56/lib/tsc.js", - "test:types:ts57": "node ../../node_modules/typescript57/lib/tsc.js", - "test:types:ts58": "node ../../node_modules/typescript58/lib/tsc.js", - "test:types:ts59": "tsc", - "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", - "test:unit": "exit 0", - "test:unit:dev": "exit 0", - "build": "vite build" - }, - "type": "module", - "types": "dist/esm/server.d.ts", - "main": "dist/cjs/server.cjs", - "module": "dist/esm/server.js", - "exports": { - ".": { - "development": { - "import": { - "types": "./dist/esm/development.d.ts", - "default": "./dist/esm/development.js" - }, - "require": { - "types": "./dist/cjs/development.d.cts", - "default": "./dist/cjs/development.cjs" - } - }, - "workerd": { - "import": { - "types": "./dist/esm/server.d.ts", - "default": "./dist/esm/server.js" - }, - "require": { - "types": "./dist/cjs/server.d.cts", - "default": "./dist/cjs/server.cjs" - } - }, - "worker": { - "import": { - "types": "./dist/esm/server.d.ts", - "default": "./dist/esm/server.js" - }, - "require": { - "types": "./dist/cjs/server.d.cts", - "default": "./dist/cjs/server.cjs" - } - }, - "browser": { - "import": { - "types": "./dist/esm/client.d.ts", - "default": "./dist/esm/client.js" - }, - "require": { - "types": "./dist/cjs/client.d.cts", - "default": "./dist/cjs/client.cjs" - } - }, - "deno": { - "import": { - "types": "./dist/esm/server.d.ts", - "default": "./dist/esm/server.js" - }, - "require": { - "types": "./dist/cjs/server.d.cts", - "default": "./dist/cjs/server.cjs" - } - }, - "node": { - "import": { - "types": "./dist/esm/server.d.ts", - "default": "./dist/esm/server.js" - }, - "require": { - "types": "./dist/cjs/server.d.cts", - "default": "./dist/cjs/server.cjs" - } - }, - "bun": { - "import": { - "types": "./dist/esm/server.d.ts", - "default": "./dist/esm/server.js" - }, - "require": { - "types": "./dist/cjs/server.d.cts", - "default": "./dist/cjs/server.cjs" - } - }, - "import": { - "types": "./dist/esm/client.d.ts", - "default": "./dist/esm/client.js" - }, - "require": { - "types": "./dist/cjs/client.d.cts", - "default": "./dist/cjs/client.cjs" - } - }, - "./package.json": "./package.json" - }, - "sideEffects": false, - "files": [ - "dist", - "src" - ], - "engines": { - "node": ">=12" - } -} diff --git a/packages/router-is-server/src/client.ts b/packages/router-is-server/src/client.ts deleted file mode 100644 index 4023ccd1648..00000000000 --- a/packages/router-is-server/src/client.ts +++ /dev/null @@ -1 +0,0 @@ -export const isServer: boolean = false diff --git a/packages/router-is-server/src/server.ts b/packages/router-is-server/src/server.ts deleted file mode 100644 index f5608b94c61..00000000000 --- a/packages/router-is-server/src/server.ts +++ /dev/null @@ -1 +0,0 @@ -export const isServer: boolean = true diff --git a/packages/router-is-server/tsconfig.json b/packages/router-is-server/tsconfig.json deleted file mode 100644 index 596e2cf729a..00000000000 --- a/packages/router-is-server/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["src"] -} diff --git a/packages/router-is-server/vite.config.ts b/packages/router-is-server/vite.config.ts deleted file mode 100644 index 2cc498ab545..00000000000 --- a/packages/router-is-server/vite.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig, mergeConfig } from 'vite' -import { tanstackViteConfig } from '@tanstack/config/vite' - -const config = defineConfig({ - plugins: [], -}) - -export default mergeConfig( - config, - tanstackViteConfig({ - entry: ['./src/server.ts', './src/client.ts', './src/development.ts'], - srcDir: './src', - cjs: true, - }), -) diff --git a/packages/solid-router/vite.config.ts b/packages/solid-router/vite.config.ts index 042f35bf4d4..20fb836daf1 100644 --- a/packages/solid-router/vite.config.ts +++ b/packages/solid-router/vite.config.ts @@ -25,7 +25,7 @@ const config = defineConfig(({ mode }) => { return { plugins: [solid()] as ViteUserConfig['plugins'], - // Add 'development' condition for tests to resolve @tanstack/router-is-server + // Add 'development' condition for tests to resolve @tanstack/router-core/isServer // to the development export (isServer = undefined) instead of node (isServer = true) ...(process.env.VITEST && { resolve: { diff --git a/packages/vue-router/vite.config.ts b/packages/vue-router/vite.config.ts index 00f91ff148c..e92d5ea60d5 100644 --- a/packages/vue-router/vite.config.ts +++ b/packages/vue-router/vite.config.ts @@ -14,7 +14,7 @@ const config = defineConfig({ alias: { '@tanstack/vue-router': resolve(__dirname, 'src'), }, - // Add 'development' condition for tests to resolve @tanstack/router-is-server + // Add 'development' condition for tests to resolve @tanstack/router-core/isServer // to the development export (isServer = undefined) instead of node (isServer = true) ...(process.env.VITEST && { conditions: ['development'] }), }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94d2b9b27d7..46345cd798f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11718,9 +11718,6 @@ importers: '@tanstack/history': specifier: workspace:* version: link:../history - '@tanstack/router-is-server': - specifier: workspace:* - version: link:../router-is-server '@tanstack/store': specifier: ^0.8.0 version: 0.8.0 @@ -11834,8 +11831,6 @@ importers: specifier: workspace:* version: link:../react-router - packages/router-is-server: {} - packages/router-plugin: dependencies: '@babel/core':