From f5fd91c4e9f023bc7b787a940e824336d489b688 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 31 Mar 2025 01:48:59 +0200 Subject: [PATCH 1/5] solid-router-with-query --- package.json | 2 + packages/solid-router-with-query/README.md | 31 +++ .../solid-router-with-query/eslint.config.js | 22 ++ packages/solid-router-with-query/package.json | 79 ++++++++ .../solid-router-with-query/src/index.tsx | 189 ++++++++++++++++++ .../tests/index.test-d.ts | 55 +++++ .../solid-router-with-query/tsconfig.json | 8 + .../solid-router-with-query/vite.config.ts | 24 +++ pnpm-lock.yaml | 18 ++ scripts/publish.js | 4 + 10 files changed, 432 insertions(+) create mode 100644 packages/solid-router-with-query/README.md create mode 100644 packages/solid-router-with-query/eslint.config.js create mode 100644 packages/solid-router-with-query/package.json create mode 100644 packages/solid-router-with-query/src/index.tsx create mode 100644 packages/solid-router-with-query/tests/index.test-d.ts create mode 100644 packages/solid-router-with-query/tsconfig.json create mode 100644 packages/solid-router-with-query/vite.config.ts diff --git a/package.json b/package.json index aa7c8639b0..5d1474219a 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,8 @@ "@tanstack/history": "workspace:*", "@tanstack/router-core": "workspace:*", "@tanstack/react-router": "workspace:*", + "@tanstack/solid-router": "workspace:*", + "@tanstack/solid-router-with-query": "workspace:*", "@tanstack/router-cli": "workspace:*", "@tanstack/router-devtools": "workspace:*", "@tanstack/router-devtools-core": "workspace:^", diff --git a/packages/solid-router-with-query/README.md b/packages/solid-router-with-query/README.md new file mode 100644 index 0000000000..d83bf5fdf4 --- /dev/null +++ b/packages/solid-router-with-query/README.md @@ -0,0 +1,31 @@ + + +# TanStack React Router + +![TanStack Router Header](https://github.com/tanstack/router/raw/main/media/header.png) + +🤖 Type-safe router w/ built-in caching & URL state management for React! + + + #TanStack + + + + + + + + semantic-release + + Join the discussion on Github +Best of JS + + + + + + + +Enjoy this library? Try the entire [TanStack](https://tanstack.com)! [React Query](https://github.com/tannerlinsley/react-query), [React Table](https://github.com/tanstack/react-table), [React Charts](https://github.com/tannerlinsley/react-charts), [React Virtual](https://github.com/tannerlinsley/react-virtual) + +## Visit [tanstack.com/router](https://tanstack.com/router) for docs, guides, API and more! diff --git a/packages/solid-router-with-query/eslint.config.js b/packages/solid-router-with-query/eslint.config.js new file mode 100644 index 0000000000..2f0e9b0660 --- /dev/null +++ b/packages/solid-router-with-query/eslint.config.js @@ -0,0 +1,22 @@ +// @ts-check + +import rootConfig from '../../eslint.config.js' + +export default [ + ...rootConfig, + { + files: ['**/*.{ts,tsx}'], + }, + { + plugins: { + }, + rules: { + }, + }, + { + files: ['**/__tests__/**'], + rules: { + '@typescript-eslint/no-unnecessary-condition': 'off', + }, + }, +] diff --git a/packages/solid-router-with-query/package.json b/packages/solid-router-with-query/package.json new file mode 100644 index 0000000000..0036794a23 --- /dev/null +++ b/packages/solid-router-with-query/package.json @@ -0,0 +1,79 @@ +{ + "name": "@tanstack/solid-router-with-query", + "version": "1.114.29", + "description": "Modern and scalable routing for React applications", + "author": "Tanner Linsley", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/router.git", + "directory": "packages/solid-router-with-query" + }, + "homepage": "https://tanstack.com/router", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "keywords": [ + "solid", + "location", + "router", + "routing", + "async", + "async router", + "typescript" + ], + "scripts": { + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint ./src", + "test:types": "pnpm run \"/^test:types:ts[0-9]{2}$/\"", + "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js", + "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": "tsc", + "test:unit": "vitest", + "test:unit:dev": "pnpm run test:unit --watch", + "test:build": "publint --strict && attw --ignore-rules no-resolution --pack .", + "build": "vite build" + }, + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "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" + }, + "sideEffects": false, + "files": [ + "dist", + "src" + ], + "engines": { + "node": ">=12" + }, + "devDependencies": { + "vite-plugin-solid": "^2.11.6", + "solid-js": ">=1.9.5", + "@tanstack/router-core": "workspace:^", + "@tanstack/solid-router": "workspace:^", + "@tanstack/solid-query": ">=5.66.0" + }, + "peerDependencies": { + "solid-js": ">=1.9.5", + "@tanstack/router-core": ">=1.114.7", + "@tanstack/solid-router": ">=1.43.2", + "@tanstack/solid-query": ">=5.49.2" + } +} diff --git a/packages/solid-router-with-query/src/index.tsx b/packages/solid-router-with-query/src/index.tsx new file mode 100644 index 0000000000..660578f0ff --- /dev/null +++ b/packages/solid-router-with-query/src/index.tsx @@ -0,0 +1,189 @@ +import { + QueryClientProvider, + dehydrate, + hashKey, + hydrate, +} from '@tanstack/solid-query' +import { isRedirect } from '@tanstack/router-core' +import type * as Solid from 'solid-js'; +import type { AnyRouter } from '@tanstack/solid-router' +import type { + CreateQueryOptions, + QueryClient, + QueryObserverResult, +} from '@tanstack/solid-query' + +type AdditionalOptions = { + WrapProvider?: (props: { children: any }) => Solid.JSX.Element + /** + * If `true`, the QueryClient will handle errors thrown by `redirect()` inside of mutations and queries. + * + * @default true + * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/api/router/redirectFunction) + */ + handleRedirects?: boolean +} + +export type ValidateRouter = + NonNullable extends { + queryClient: QueryClient + } + ? TRouter + : never + +export function routerWithQueryClient( + router: ValidateRouter, + queryClient: QueryClient, + additionalOpts?: AdditionalOptions, +): TRouter { + const seenQueryKeys = new Set() + const streamedQueryKeys = new Set() + + const ogClientOptions = queryClient.getDefaultOptions() + queryClient.setDefaultOptions({ + ...ogClientOptions, + queries: { + ...ogClientOptions.queries, + _experimental_beforeQuery: (options: CreateQueryOptions) => { + // Call the original beforeQuery + ;(ogClientOptions.queries as any)?._experimental_beforeQuery?.(options) + + const hash = options.queryKeyHashFn || hashKey + // On the server, check if we've already seen the query before + if (router.isServer) { + if (seenQueryKeys.has(hash(options.queryKey))) { + return + } + + seenQueryKeys.add(hash(options.queryKey)) + + // If we haven't seen the query and we have data for it, + // That means it's going to get dehydrated with critical + // data, so we can skip the injection + if (queryClient.getQueryData(options.queryKey) !== undefined) { + ;(options as any).__skipInjection = true + return + } + } else { + // On the client, pick up the deferred data from the stream + const dehydratedClient = router.clientSsr!.getStreamedValue( + '__QueryClient__' + hash(options.queryKey), + ) + + // If we have data, hydrate it into the query client + if (dehydratedClient && !dehydratedClient.hydrated) { + dehydratedClient.hydrated = true + hydrate(queryClient, dehydratedClient) + } + } + }, + _experimental_afterQuery: ( + options: CreateQueryOptions, + _result: QueryObserverResult, + ) => { + // On the server (if we're not skipping injection) + // send down the dehydrated query + const hash = options.queryKeyHashFn || hashKey + if ( + router.isServer && + !(options as any).__skipInjection && + queryClient.getQueryData(options.queryKey) !== undefined && + !streamedQueryKeys.has(hash(options.queryKey)) + ) { + streamedQueryKeys.add(hash(options.queryKey)) + + router.serverSsr!.streamValue( + '__QueryClient__' + hash(options.queryKey), + dehydrate(queryClient, { + shouldDehydrateMutation: () => false, + shouldDehydrateQuery: (query) => + hash(query.queryKey) === hash(options.queryKey), + }), + ) + } + + // Call the original afterQuery + ;(ogClientOptions.queries as any)?._experimental_afterQuery?.( + options, + _result, + ) + }, + } as any, + }) + + if (additionalOpts?.handleRedirects ?? true) { + const ogMutationCacheConfig = queryClient.getMutationCache().config + queryClient.getMutationCache().config = { + ...ogMutationCacheConfig, + onError: (error, _variables, _context, _mutation) => { + if (isRedirect(error)) { + return router.navigate( + router.resolveRedirect({ + ...error, + _fromLocation: router.state.location, + }), + ) + } + + return ogMutationCacheConfig.onError?.( + error, + _variables, + _context, + _mutation, + ) + }, + } + + const ogQueryCacheConfig = queryClient.getQueryCache().config + queryClient.getQueryCache().config = { + ...ogQueryCacheConfig, + onError: (error, _query) => { + if (isRedirect(error)) { + return router.navigate( + router.resolveRedirect({ + ...error, + _fromLocation: router.state.location, + }), + ) + } + + return ogQueryCacheConfig.onError?.(error, _query) + }, + } + } + + const ogOptions = router.options + router.options = { + ...router.options, + dehydrate: () => { + return { + ...ogOptions.dehydrate?.(), + // When critical data is dehydrated, we also dehydrate the query client + dehydratedQueryClient: dehydrate(queryClient), + } + }, + hydrate: (dehydrated: any) => { + ogOptions.hydrate?.(dehydrated) + // On the client, hydrate the query client with the dehydrated data + hydrate(queryClient, dehydrated.dehydratedQueryClient) + }, + context: { + ...ogOptions.context, + // Pass the query client to the context, so we can access it in loaders + queryClient, + }, + // Wrap the app in a QueryClientProvider + Wrap: ({ children }) => { + const OuterWrapper = additionalOpts?.WrapProvider; + return ( + + + {ogOptions.Wrap ? {children} : children} + + + ) + }, + } + + return router +} diff --git a/packages/solid-router-with-query/tests/index.test-d.ts b/packages/solid-router-with-query/tests/index.test-d.ts new file mode 100644 index 0000000000..a6a220526a --- /dev/null +++ b/packages/solid-router-with-query/tests/index.test-d.ts @@ -0,0 +1,55 @@ +import { QueryClient } from '@tanstack/solid-query' +import { + createRootRouteWithContext, + createRouter, +} from '@tanstack/solid-router' + +import { expectTypeOf, test } from 'vitest' + +import { routerWithQueryClient } from '../src' + +test('basic { queryClient } context', () => { + const root = createRootRouteWithContext<{ + queryClient: QueryClient + }>()({}) + + const queryClient = new QueryClient() + const router = createRouter({ + context: { queryClient }, + routeTree: root, + }) + + const routerWithQuery = routerWithQueryClient(router, queryClient) + expectTypeOf(routerWithQuery).toEqualTypeOf(router) +}) + +test('no context fails', () => { + const root = createRootRouteWithContext()({}) + + const queryClient = new QueryClient() + const router = createRouter({ + routeTree: root, + }) + + routerWithQueryClient( + // @ts-expect-error - QueryClient must be in context type + router, + queryClient, + ) +}) + +test('allows additional props on context', () => { + const root = createRootRouteWithContext<{ + queryClient: QueryClient + extra: string + }>()({}) + + const queryClient = new QueryClient() + const router = createRouter({ + context: { queryClient, extra: 'extra' }, + routeTree: root, + }) + + const routerWithQuery = routerWithQueryClient(router, queryClient) + expectTypeOf(routerWithQuery).toEqualTypeOf(router) +}) diff --git a/packages/solid-router-with-query/tsconfig.json b/packages/solid-router-with-query/tsconfig.json new file mode 100644 index 0000000000..e24672b5de --- /dev/null +++ b/packages/solid-router-with-query/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "solid-js" + }, + "include": ["src", "tests", "vite.config.ts"] +} diff --git a/packages/solid-router-with-query/vite.config.ts b/packages/solid-router-with-query/vite.config.ts new file mode 100644 index 0000000000..b78cdf1373 --- /dev/null +++ b/packages/solid-router-with-query/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackViteConfig } from '@tanstack/config/vite' +import solid from 'vite-plugin-solid' +import packageJson from './package.json' +import type { UserConfig } from 'vitest/config' + +const config = defineConfig({ + plugins: [solid()] as UserConfig['plugins'], + test: { + name: packageJson.name, + dir: './tests', + watch: false, + environment: 'jsdom', + typecheck: { enabled: true }, + }, +}) + +export default mergeConfig( + config, + tanstackViteConfig({ + entry: './src/index.tsx', + srcDir: './src', + }), +) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a505dbe86..456c33e85e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6535,6 +6535,24 @@ importers: specifier: ^2.11.6 version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.1.2(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + packages/solid-router-with-query: + devDependencies: + '@tanstack/router-core': + specifier: workspace:* + version: link:../router-core + '@tanstack/solid-query': + specifier: '>=5.66.0' + version: 5.66.0(solid-js@1.9.5) + '@tanstack/solid-router': + specifier: workspace:^ + version: link:../solid-router + solid-js: + specifier: '>=1.9.5' + version: 1.9.5 + vite-plugin-solid: + specifier: ^2.11.6 + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.1.2(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + packages/solid-start: dependencies: '@tanstack/solid-start-client': diff --git a/scripts/publish.js b/scripts/publish.js index 1d55ca6ddc..e1f9c8b3f1 100644 --- a/scripts/publish.js +++ b/scripts/publish.js @@ -28,6 +28,10 @@ await publish({ name: '@tanstack/react-router-with-query', packageDir: 'packages/react-router-with-query', }, + { + name: '@tanstack/solid-router-with-query', + packageDir: 'packages/solid-router-with-query', + }, { name: '@tanstack/zod-adapter', packageDir: 'packages/zod-adapter', From b322413f23a67916e28d6efe4fa07aa0d9e11030 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 31 Mar 2025 02:41:26 +0200 Subject: [PATCH 2/5] mock the queryKey/queryKeyHashFn --- .../solid-router-with-query/src/index.tsx | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/packages/solid-router-with-query/src/index.tsx b/packages/solid-router-with-query/src/index.tsx index 660578f0ff..9c69c31a97 100644 --- a/packages/solid-router-with-query/src/index.tsx +++ b/packages/solid-router-with-query/src/index.tsx @@ -10,9 +10,17 @@ import type { AnyRouter } from '@tanstack/solid-router' import type { CreateQueryOptions, QueryClient, + QueryKey, QueryObserverResult, } from '@tanstack/solid-query' +// Extended query options to include the properties used in this file +interface ExtendedQueryOptions extends CreateQueryOptions { + queryKey: QueryKey; + queryKeyHashFn?: (queryKey: QueryKey) => string; + __skipInjection?: boolean; +} + type AdditionalOptions = { WrapProvider?: (props: { children: any }) => Solid.JSX.Element /** @@ -48,26 +56,27 @@ export function routerWithQueryClient( // Call the original beforeQuery ;(ogClientOptions.queries as any)?._experimental_beforeQuery?.(options) - const hash = options.queryKeyHashFn || hashKey + const extOptions = options as ExtendedQueryOptions; + const hash = extOptions.queryKeyHashFn || hashKey // On the server, check if we've already seen the query before if (router.isServer) { - if (seenQueryKeys.has(hash(options.queryKey))) { + if (seenQueryKeys.has(hash(extOptions.queryKey))) { return } - seenQueryKeys.add(hash(options.queryKey)) + seenQueryKeys.add(hash(extOptions.queryKey)) // If we haven't seen the query and we have data for it, // That means it's going to get dehydrated with critical // data, so we can skip the injection - if (queryClient.getQueryData(options.queryKey) !== undefined) { - ;(options as any).__skipInjection = true + if (queryClient.getQueryData(extOptions.queryKey) !== undefined) { + extOptions.__skipInjection = true return } } else { // On the client, pick up the deferred data from the stream const dehydratedClient = router.clientSsr!.getStreamedValue( - '__QueryClient__' + hash(options.queryKey), + '__QueryClient__' + hash(extOptions.queryKey), ) // If we have data, hydrate it into the query client @@ -83,21 +92,22 @@ export function routerWithQueryClient( ) => { // On the server (if we're not skipping injection) // send down the dehydrated query - const hash = options.queryKeyHashFn || hashKey + const extOptions = options as ExtendedQueryOptions; + const hash = extOptions.queryKeyHashFn || hashKey if ( router.isServer && - !(options as any).__skipInjection && - queryClient.getQueryData(options.queryKey) !== undefined && - !streamedQueryKeys.has(hash(options.queryKey)) + !extOptions.__skipInjection && + queryClient.getQueryData(extOptions.queryKey) !== undefined && + !streamedQueryKeys.has(hash(extOptions.queryKey)) ) { - streamedQueryKeys.add(hash(options.queryKey)) + streamedQueryKeys.add(hash(extOptions.queryKey)) router.serverSsr!.streamValue( - '__QueryClient__' + hash(options.queryKey), + '__QueryClient__' + hash(extOptions.queryKey), dehydrate(queryClient, { shouldDehydrateMutation: () => false, shouldDehydrateQuery: (query) => - hash(query.queryKey) === hash(options.queryKey), + hash(query.queryKey) === hash(extOptions.queryKey), }), ) } @@ -176,11 +186,19 @@ export function routerWithQueryClient( Wrap: ({ children }) => { const OuterWrapper = additionalOpts?.WrapProvider; return ( - - - {ogOptions.Wrap ? {children} : children} - - + <> + {OuterWrapper ? ( + + + {ogOptions.Wrap ? {children} : children} + + + ) : ( + + {ogOptions.Wrap ? {children} : children} + + )} + ) }, } From 2f8e276ce3681a68fcdcb7d72f7cda40d5e2e794 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 31 Mar 2025 02:41:39 +0200 Subject: [PATCH 3/5] add examples that uses solid-router-with-query --- .../solid/start-basic-solid-query/.gitignore | 22 + .../start-basic-solid-query/.prettierignore | 4 + .../.vscode/settings.json | 11 + .../solid/start-basic-solid-query/README.md | 72 +++ .../start-basic-solid-query/app.config.ts | 15 + .../start-basic-solid-query/package.json | 31 ++ .../postcss.config.mjs | 6 + .../public/android-chrome-192x192.png | Bin 0 -> 29964 bytes .../public/android-chrome-512x512.png | Bin 0 -> 109271 bytes .../public/apple-touch-icon.png | Bin 0 -> 27246 bytes .../public/favicon-16x16.png | Bin 0 -> 832 bytes .../public/favicon-32x32.png | Bin 0 -> 2115 bytes .../public/favicon.ico | Bin 0 -> 15406 bytes .../public/favicon.png | Bin 0 -> 1507 bytes .../public/site.webmanifest | 19 + .../solid/start-basic-solid-query/src/api.ts | 6 + .../start-basic-solid-query/src/client.tsx | 8 + .../src/components/DefaultCatchBoundary.tsx | 53 ++ .../src/components/NotFound.tsx | 25 + .../src/routeTree.gen.ts | 483 ++++++++++++++++++ .../start-basic-solid-query/src/router.tsx | 31 ++ .../src/routes/__root.tsx | 144 ++++++ .../src/routes/_pathlessLayout.tsx | 16 + .../routes/_pathlessLayout/_nested-layout.tsx | 34 ++ .../_nested-layout/route-a.tsx | 11 + .../_nested-layout/route-b.tsx | 11 + .../src/routes/api.users.ts | 17 + .../src/routes/api/users.$id.ts | 24 + .../src/routes/deferred.tsx | 53 ++ .../src/routes/index.tsx | 13 + .../src/routes/posts.$postId.tsx | 51 ++ .../src/routes/posts.index.tsx | 9 + .../src/routes/posts.route.tsx | 45 ++ .../src/routes/posts_.$postId.deep.tsx | 39 ++ .../src/routes/redirect.tsx | 9 + .../src/routes/users.$userId.tsx | 33 ++ .../src/routes/users.index.tsx | 9 + .../src/routes/users.route.tsx | 42 ++ .../solid/start-basic-solid-query/src/ssr.tsx | 13 + .../src/styles/app.css | 22 + .../src/utils/posts.tsx | 49 ++ .../start-basic-solid-query/src/utils/seo.ts | 33 ++ .../src/utils/users.tsx | 34 ++ .../tailwind.config.mjs | 4 + .../start-basic-solid-query/tsconfig.json | 23 + pnpm-lock.yaml | 116 +++-- 46 files changed, 1609 insertions(+), 31 deletions(-) create mode 100644 examples/solid/start-basic-solid-query/.gitignore create mode 100644 examples/solid/start-basic-solid-query/.prettierignore create mode 100644 examples/solid/start-basic-solid-query/.vscode/settings.json create mode 100644 examples/solid/start-basic-solid-query/README.md create mode 100644 examples/solid/start-basic-solid-query/app.config.ts create mode 100644 examples/solid/start-basic-solid-query/package.json create mode 100644 examples/solid/start-basic-solid-query/postcss.config.mjs create mode 100644 examples/solid/start-basic-solid-query/public/android-chrome-192x192.png create mode 100644 examples/solid/start-basic-solid-query/public/android-chrome-512x512.png create mode 100644 examples/solid/start-basic-solid-query/public/apple-touch-icon.png create mode 100644 examples/solid/start-basic-solid-query/public/favicon-16x16.png create mode 100644 examples/solid/start-basic-solid-query/public/favicon-32x32.png create mode 100644 examples/solid/start-basic-solid-query/public/favicon.ico create mode 100644 examples/solid/start-basic-solid-query/public/favicon.png create mode 100644 examples/solid/start-basic-solid-query/public/site.webmanifest create mode 100644 examples/solid/start-basic-solid-query/src/api.ts create mode 100644 examples/solid/start-basic-solid-query/src/client.tsx create mode 100644 examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx create mode 100644 examples/solid/start-basic-solid-query/src/components/NotFound.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routeTree.gen.ts create mode 100644 examples/solid/start-basic-solid-query/src/router.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/__root.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/api.users.ts create mode 100644 examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts create mode 100644 examples/solid/start-basic-solid-query/src/routes/deferred.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/index.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts.index.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts.route.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/redirect.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/users.index.tsx create mode 100644 examples/solid/start-basic-solid-query/src/routes/users.route.tsx create mode 100644 examples/solid/start-basic-solid-query/src/ssr.tsx create mode 100644 examples/solid/start-basic-solid-query/src/styles/app.css create mode 100644 examples/solid/start-basic-solid-query/src/utils/posts.tsx create mode 100644 examples/solid/start-basic-solid-query/src/utils/seo.ts create mode 100644 examples/solid/start-basic-solid-query/src/utils/users.tsx create mode 100644 examples/solid/start-basic-solid-query/tailwind.config.mjs create mode 100644 examples/solid/start-basic-solid-query/tsconfig.json diff --git a/examples/solid/start-basic-solid-query/.gitignore b/examples/solid/start-basic-solid-query/.gitignore new file mode 100644 index 0000000000..be342025da --- /dev/null +++ b/examples/solid/start-basic-solid-query/.gitignore @@ -0,0 +1,22 @@ +node_modules +package-lock.json +yarn.lock + +.DS_Store +.cache +.env +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/examples/solid/start-basic-solid-query/.prettierignore b/examples/solid/start-basic-solid-query/.prettierignore new file mode 100644 index 0000000000..2be5eaa6ec --- /dev/null +++ b/examples/solid/start-basic-solid-query/.prettierignore @@ -0,0 +1,4 @@ +**/build +**/public +pnpm-lock.yaml +routeTree.gen.ts \ No newline at end of file diff --git a/examples/solid/start-basic-solid-query/.vscode/settings.json b/examples/solid/start-basic-solid-query/.vscode/settings.json new file mode 100644 index 0000000000..00b5278e58 --- /dev/null +++ b/examples/solid/start-basic-solid-query/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "files.watcherExclude": { + "**/routeTree.gen.ts": true + }, + "search.exclude": { + "**/routeTree.gen.ts": true + }, + "files.readonlyInclude": { + "**/routeTree.gen.ts": true + } +} diff --git a/examples/solid/start-basic-solid-query/README.md b/examples/solid/start-basic-solid-query/README.md new file mode 100644 index 0000000000..90cba4aac1 --- /dev/null +++ b/examples/solid/start-basic-solid-query/README.md @@ -0,0 +1,72 @@ +# Welcome to TanStack.com! + +This site is built with TanStack Router! + +- [TanStack Router Docs](https://tanstack.com/router) + +It's deployed automagically with Netlify! + +- [Netlify](https://netlify.com/) + +## Development + +From your terminal: + +```sh +pnpm install +pnpm dev +``` + +This starts your app in development mode, rebuilding assets on file changes. + +## Editing and previewing the docs of TanStack projects locally + +The documentations for all TanStack projects except for `React Charts` are hosted on [https://tanstack.com](https://tanstack.com), powered by this TanStack Router app. +In production, the markdown doc pages are fetched from the GitHub repos of the projects, but in development they are read from the local file system. + +Follow these steps if you want to edit the doc pages of a project (in these steps we'll assume it's [`TanStack/form`](https://github.com/tanstack/form)) and preview them locally : + +1. Create a new directory called `tanstack`. + +```sh +mkdir tanstack +``` + +2. Enter the directory and clone this repo and the repo of the project there. + +```sh +cd tanstack +git clone git@github.com:TanStack/tanstack.com.git +git clone git@github.com:TanStack/form.git +``` + +> [!NOTE] +> Your `tanstack` directory should look like this: +> +> ``` +> tanstack/ +> | +> +-- form/ +> | +> +-- tanstack.com/ +> ``` + +> [!WARNING] +> Make sure the name of the directory in your local file system matches the name of the project's repo. For example, `tanstack/form` must be cloned into `form` (this is the default) instead of `some-other-name`, because that way, the doc pages won't be found. + +3. Enter the `tanstack/tanstack.com` directory, install the dependencies and run the app in dev mode: + +```sh +cd tanstack.com +pnpm i +# The app will run on https://localhost:3000 by default +pnpm dev +``` + +4. Now you can visit http://localhost:3000/form/latest/docs/overview in the browser and see the changes you make in `tanstack/form/docs`. + +> [!NOTE] +> The updated pages need to be manually reloaded in the browser. + +> [!WARNING] +> You will need to update the `docs/config.json` file (in the project's repo) if you add a new doc page! diff --git a/examples/solid/start-basic-solid-query/app.config.ts b/examples/solid/start-basic-solid-query/app.config.ts new file mode 100644 index 0000000000..2a06e3d3f0 --- /dev/null +++ b/examples/solid/start-basic-solid-query/app.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from '@tanstack/solid-start/config' +import tsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + tsr: { + appDirectory: 'src', + }, + vite: { + plugins: [ + tsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) diff --git a/examples/solid/start-basic-solid-query/package.json b/examples/solid/start-basic-solid-query/package.json new file mode 100644 index 0000000000..5a16d749dd --- /dev/null +++ b/examples/solid/start-basic-solid-query/package.json @@ -0,0 +1,31 @@ +{ + "name": "tanstack-solid-start-example-basic-solid-query", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start" + }, + "dependencies": { + "@tanstack/solid-query": "^5.66.0", + "@tanstack/solid-query-devtools": "^5.66.0", + "@tanstack/solid-router": "^1.114.29", + "@tanstack/solid-router-with-query": "^1.114.29", + "@tanstack/solid-router-devtools": "^1.114.29", + "@tanstack/solid-start": "^1.114.30", + "solid-js": "^1.9.5", + "redaxios": "^0.5.1", + "tailwind-merge": "^2.6.0", + "vinxi": "0.5.3" + }, + "devDependencies": { + "@types/node": "^22.5.4", + "postcss": "^8.5.1", + "autoprefixer": "^10.4.20", + "tailwindcss": "^3.4.17", + "typescript": "^5.7.2", + "vite-tsconfig-paths": "^5.1.4" + } +} diff --git a/examples/solid/start-basic-solid-query/postcss.config.mjs b/examples/solid/start-basic-solid-query/postcss.config.mjs new file mode 100644 index 0000000000..2e7af2b7f1 --- /dev/null +++ b/examples/solid/start-basic-solid-query/postcss.config.mjs @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/examples/solid/start-basic-solid-query/public/android-chrome-192x192.png b/examples/solid/start-basic-solid-query/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3 GIT binary patch literal 29964 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 b=FG literal 0 HcmV?d00001 diff --git a/examples/solid/start-basic-solid-query/public/android-chrome-512x512.png b/examples/solid/start-basic-solid-query/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69 GIT binary patch literal 109271 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 Ef@mE(_W%F@ literal 0 HcmV?d00001 diff --git a/examples/solid/start-basic-solid-query/public/apple-touch-icon.png b/examples/solid/start-basic-solid-query/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1 GIT binary patch literal 27246 zcmV)0K+eC3P)PyA07*naRCr$OeFvOfMfLx8?t5>0FWHvfdm})IKmh4Yf;2%;fge8wDFHVRn*nc_!V)g&V^58TUP{ybc zoX&t`mGN;5N`L`FIOn-w0Oy2bfa?XB1l1p!&yA0ypGID@4MrYDWwI6kRg9}4D6E{T z=u>=nlZVu8_l`?i_up}Ir@(&!4d8sveaCEve{T+w&=$UmgCE9$a{-oYK~-bH+TRA* z47fUp>x8%rcR7y}=-+rjKcRXwIVS}0f4Q?~SXfafsT@}_j$^=3Aa}@w3(3P0 zMTCs2{~ZNQ7mPUt3ny_sVJQ`E6KM4M#WP0(5`s8KBN#qX7#{Yk%BI^!rtbby4`c$3 z|4IY;&dQDn9Q+p?Y%(}Tf*~mZntb&>;Ru3ZrvknaU_bxa@XRe=y-sR9`pNtPEJa7 ziV~!6^m4U&v^PfGwt7T)Mw_XAy?CP@c?7ASqM7=TNKz$|B)&1;GCk$@-DggUS4`?!YWK=g@0#*4lfGnqO*kHVF zGPA5ew#lR}*f1Hd*E<(HN9B=}e&St%d5pHZ<#F4>+MdZHEX`86ZH%LxE9wtB%krQ4 zvKw%|w1B?1swyv_B%c)F?1vm|4mgyr0*4uBABwA1qqurCLMdrz8Z;iAS*7UAC{4UL z29<#?yK3L$Kd1KXdxy%%zgf54EI(~1<8-Y(I-h%C= z^YjWVG*iEiZ2KifT}FU+D!>7^=(W;$O3$jM{RfhwE@b^$}o@+(BgGaeRsZz6D?po27XNei73b z7SIpVrY{M%fa6jQxbAM;6jiZAVJ{Ilwt~#=l4Kua_aTiXYI}*(#+u_SaUf#5ktY!B zL{95Ar1k7WW>+QPW2h_o8X9vZM>Tv@=Lq&HW+}YEB zn|7Z&pkHs;dI@LB?EuCYE2t0|BnD@?PU;NUAe!vEW8^WIw=71=B8VXx2*xMXW0Yn3 zAxWlbr|*#|-5AP44-rUn7IGZViuO0Me4mUuoo#d0qnB&0335F;-OPcN+a`(Va(~O( z-^5`xH&|FCx+KP-W&DyneFvM1r#??me{O*OfOCI$+qQ4;2!EIXInJX_mf0cEeZH4| z!)580mUnmahSOBW!4vQjH9IeP0Xmd(LMyEy^Ak$ID6I#1y>@1SK0CSTn-j|E`WZg zc~v%NX?Lg`*8-Xkh8R*8#c(V*4@B?av1hX#bajrBTRl!#%X#9x>yPdwR#^n*NzdGd z;&pF<`BlwAXjlo2-}S$PnR%!leJ-|5zA=i=!X049C~1Yrh!z!aX-Siot=b3 z?wWeY0nIsA-fi9VdqBCKK~>ycvSsdP?%1L@OSGBWt2-_;#gH4sPq%yyxhINSI$`g| zv7K%2&te?E&4I2K9CPcj0z-6&%rtd7z-)j#l#z=yNBl^6V7_fl|h~= zj(TF~Q*39z<#r_0pBU%I9Ri3A4Kl~}_jY2|Z_h(YQ?)mDmN<69$WyTO@L!rvN=8{@ z_bxz5%ZqkElfd91RYe_o_mcL2-$21V?07UDDo7tPK!4P_J{M5`3dSxtRGs_E*TXqd z8>$fKY|>^r{UZU+<7ZdSXhZ^;QDiAjM4klL8Cs9rL<)mtN$+fq6CQbVov~&BakBAv^*A?-#xX5<{gB5%S~G0R zg?HQRr^zL9oBHSe48Z{E@uIb~Q*DAiMAkxVmV88`&1GNYOYSc39SawsjX6~?z9v%}#vW=7CoQ};9@hG3ntJuo6?vRet;{xDx-I94 zTc;b>wx)r#3Q0nLynaWuIZ-4zcM-DM&t-?gpry z1SOHf&?L(!aVM~+WF;+kTKOvOgCBPsES26t0W{|y__y?={$AzmT7a8p{k$M*TKrse z`L6GrmNE}!=B!UXlxow2I4pYc#Ko4bMtrj41E^dxryVxpSPaV2JzQh8O=?h7+pP7* z)|*&DRlF%5Ey~(FK5X@j*>FCRdaJBwq=zQ4y1 z4^bGQ%n}5%N9wg(!(XuXugI@?+}^eBIB1SHque-ymWM!n0XqYduJFLjoC6N%Z9Pjb z0mq-g$eiuu5wZUE0;yxb^?)z-jiWKJ26W_l4B6d!C;Qqtk8&AHdR^OIyuRjHY^hm? zJxx1f+JT?@;SwlhQkL2lJ#pl=8Jj_SpRJ9k7f59Q>lQ=%tD#^w)^)KHF;eVY*I zu7N+?2o?w1=8egqs+s}pv?=p&)$uoe?!EQ5)FY{? z0%@B+LVEdPC~B8wY>|vBJjIXQ-+E8@cF4&WZb#{ctKjdgwjPt%K@OsB$xUXm$#Dtg z+Xe;au+tBmm)-#bbOT>n+S3<#8Vpe`pkDik=q@Mz<^CZkx}FGEv3Tpd_~**UP}^n= zs^U`+2>9Xi`M`V(3RBSA(}z${J689*3m(Au675LSp=!Oe@97^cMD}Zs!q?U4?#rQ@ z!g+cMI%ZyiwyBp!nfsX( zT00RAM^KnK2#;O<3>Z_ivJ5{}H|fbsizpFH?q}RSOXU^MKL<)j8$gb9bkf`5*U>ZW zM0CyiCW3>;>ap~qk1tR&((2wo&W`&4E*+F54t?b? zS4KD^cP$agMDt&^OLTp)2Bw5Ac(y>I3xU*8Pg9*XrT6XsSALrU{ z4&BE8H6|2c%K?@jH8YG+F*Yuy-b|vbbDg$L2BX9T7jxTZj*XH_J(W$B_|c2Ept(zn zdgb%`P*9vFL<|j?(s3_+*==cTLsv&Pl6*<{@u|1qxN#(5d2MK=_B*43%EU6;=HeM; zj*xTXXO+!@LHHW$H1$D7Hh5|pcz{^7SCZ?o*O|WKuSnVZf;}T`4iAnBPp+p4J{-l) z+P{Oh`vvH>wnceJSKd;ABcckDF4VD6$MAob^tI-D$7v4NF_#{SA@<56`Ptjrray1$ zYQ}ZX-h}E_O4>uEx&D;x@A?~Ym_mK0?b;lXeH5qar(CTDh9#XTe) z?L49LD4`R34(?`%u?f>zFVCP+LT%IAmHqMgU?ItsnF^u(@jx9x6Xn#vCkWv*cEP~o z>J1psoUaOWsf~AX;Fc)Eo?8bJ@02za2Slhgmo)7cX>;?Z5B`Q1*S>~`8bM}G28zlG zg@|EK#_4M9>E4~S=|(1p zo5?MceQw#96CV$y*t>Aum9wX5-wb#yEIwdaMUk2rzaNba_fr4Y%JnZQ2 zY%us>zw>eaW?_)?Hz*KH^o+2eBUd0p)c}r>*JbGRHZgScbz)`Z8fTl?nGUN}^ z?#(p4PsPDjj^6G*w6%1gy}2DdU45qRx!(i>FgT|KGlxvY;lrllsNshpD&RrQy5VL|nMJU-4l`ZYi!l`ZCNNHCxN7 zx6RR2!|I)|A zx1%QwN73Lyy(}(t%gyzz0?fVLmcXbe3j6^d0!aZOXVc%ZXkycKI|e!w3L_GZX#aGu z8$FseWGc>`dMds?W{wb>bjCV>QSqQ@M;nxF>)~7e8rZ&a`a< zr4#Yv6TXijIVFPA-}&zSc)NTFl2ei}{cDqulBNX#kA%Y5w5r0?F>8#InZ^~e5V}u) zY2z5hwJcpBS5-tJ9KAigLX*{86k%`{gxvDJ~LvN@L>uNURSMNWF+Kzg&?F3*F2}lD$ z$vVU0h&ChjmViy%n&jS|u3l4I7?C#wzdYqelw=m-hSz_I^|f1(otr5D?f3i9Sl5ho zE3BYDv;xp3F(W%2ioQWJHiI;NeZ4`!aW&8bDXA%73i)|3C<=q(*DQy|U^~a0)PLLH^|6Qf|IvQ3(y5xD#An+N- zBYgCQ_6r%KOVYN7 z%S-k9{{`SMd2N(6Rae(+!Zokl4)Uci66u38vonNF*hsQCVe7w%Z%GK? z5F$f!L#qHbrJ*^c_|~+u@Z@JNqo$)CrNfFab@oJTU9(My7zRM;Tbf8@2O$uvVHG6S z5D4QX5=F>36G-w4?Fs3&X(jMl!@4`V(bCjzmR*pRi`!4U7PE&=mnMT8RMFTB+Wi#C1q!h`ILYfKLVi&$(lS!a@|??bb!DA7 z@e0#(@z-zMiJ>`$4%2Mph1-@>zr^-_fE_Sq&=x zZPe&is*_Dg-;l;(N#&>b!}2Fk+o1uBM2?c7g(w+Xq_cHdNu@VHFVm(lkwe0gbuS!2 z&F+0@sA+^MfaaYvQ6oig*p!qc1X2R#M$phxn=6LfGNJdWtD^_O-k^}@$xI#!hLN0_ zjO@HjA?i@yWZ{!Gi?w^|g&0DqC?g-gIN>_XBpEl65waNV{*6sv2b9VWfPf$B;A4QK zOsBgzl$zI})Vyl9BpS3JE=>#Kfj5&c#Wu`k3*y@<6CoFZEzevEraWeZ?Xpu@MruOE zNl=hS0%+@P$IbuxJ=QuLg{B-a9w})g1PYcRo&S)zv(*mTAnx1SXfEXhYWh3a7l+bx z#72p}9gbvGl8tG_$Scf2PC>TNde~ZH&J}CYkf=gp3u#V>3lmo-F>2V@!Gg}Zd!SpgdXmN@1y&mG^_=Z86u-kgF5Ll z7e$x~*1iS)O?S9+25JI{A;hucOKFKPUHV1^!*|&wcrspwxCm_D`*?mzTJkP1rcGBP z6sO6JW#9;vt2|%uWaS z))V)m-2$mPu_S2xM{L!S~r(KjXKF9p$MvX)uO4sRa8HI+GwO^ z*d2&yaoM(E7uuRNEzfmFd>fZeJxgn@YY0|-ayxa@&JK!EcC=0Mek4tZ?}PinIxEdX z0qU5O5t%|Bos!5S)x&!BLfP{al-4!gaAuJ3!e0)p@!SOsZuyXQ95qu zEZlv<4Z1bciC!nF4SpI+476y?I$Gd+_AaoF8Vk(Xxlrd^3AJp7-nDpTF|h7E@a=vC z#I+HLcd}M5mZZN}T$@%r(h1my;vEEVeyk7(F##Rg_ap)NW#b}vhmOJ=3a{tpV7pv- z<_2N;S#LOq#Z{~E#?GZ!yRRJGA-k)Wp(4}jAX$|_sm9&-If0s#6c8XLwH#UX2-tMo zDv<1l-xuvlYUC%5P4Y2uQki>a#E>;OIFWBiGM~rJz&oDIEmkR^x~E#uV8aw{d}DBMH(j=2i4=a&oTI1P zIxi@+9jPQAlcB`g@S8kK|AjOfB*Po!laXcA#9~)&-AyGZt4d0$ep|pOgtN0RMHRGb1;dOR8&h9s$dCe0O!r+@_p6|7XwhEVz z=SNp*=6C9>jg^H1iz=7nfwj-0mJWRCi9k#nL(N}V<1vv40XZZ%D{*TA9|1`KOIOcn zS_OIz!AUh>lbPI3U@Bi&1xeK4nj=5yuBm)_MyfojU-*!?F`r zscur)k=#t8I&pF;kDlii=2)_{-ZVNHv+SMKLj8B@@S||Yod1PS=*4BRLps*x)iB4@ zA^Iurz5?alm$Wm8NdO-{8j*8;0Av^H6V81}Wt~-ERd0cXyPys|9Xw~8U9D%q`UgmmTv!}=rs(S2s zFr4Q?5BEkm&@TRz#V^X`%H}LN>Gow0;r+d<&=b})^fcgUX{qo9d}jCndQL#=>FN<2 zF*!L2$!SSK+!D2i07!XaCBmdX5YYO>7)b1)M3ZvJ=rZ_xcN2LXW5X&o!1vfaqE22?3iXm3z(uvzmjD1D07*naRPzSe zo9yIXp>Ft=-3b<~6%&DHk3i(G+oSZwXYM;t;C>a zP6kqnG^JY35#WIwz?TO2j1$0kAu!~-=eyC^70^99A0FoO`4-W^3y&$7*vv}st6(IA z2iCucr^>Y>^u)D@Bc^4him(AD$mo!2PY|6Q-2$lOSVSTLanz2sE>o5zj!WRBwv${; zvM7~DRy#6<6L-&O1x9TE%4Y(-x=NVL?HO5VmMf*c5_Grspu4+An+O@HNYA1Jw3;5; z4cwtV?I11HW29tX60(!hQQtGLFv%aB`v5YN(h{U-{Lk3-jX-M?FmfVzp3a%QveAZl z$9qsV{}b>>gntMhGzF1qvEq@$U(e&W(u;9mYa|jmHFe~bmI_S&)D_U-%12ME}J<~U|WD{^HJ_d0_!+D6FrKOXZ zSrMB=QiBoaq@|xYeotqw0C{>VFkv~+l?7BB0Yn1YicnCLD}e75N@-Of{V<6%N)jFj|`0#A-sRATto6eeD0Ug@$&`VI* zJln_dwKv-5u_mUo3=VwOSb?iPyxZi=1XKzmU?nXRaoN_UHX$#QL4$xxfFxQYAo{=aZizvj+2}~p# z8=iYzo!w$`q_+X%KL!GQK*SGJP6ZlnMOvSxzIF^s(ZdBgCz=dmd-e87>88VT zD@y_z+pz||cOKN-P=%;543W9l0_3~xkyojC8?1RX;7f%%;$m=;hux6pWPY*QE@MeV z3}B6GTh-E8v;NoS=NC1fBRl?ny{hs*M7O~44#pY9~ZI1?I^Jv+2;3FKdW z!{qaE@#wF|CGmhiH~?cK>h9}>?~T8MRd3P&odiUVy8?XV5n9t+>S0~A@U6K6P`L2N zR)?GowMw4we7)Bl4<~$Iu)khoVC6Q@oYS*^lO62QK;G zF4Xt7iVa@T;6X@E(KxS>`g%3)MzSpdCXgHu%$uBz>Z=mTZL=bArpt1tw z=4XqOHJa~)uIeF^c4v?9`lAgjZ4Uo1`x;Ei)xz332f@6#*29qPU{*GNYbUdIQ!E+d zCYR&cF7HR)oB-M`)V9G=_t zp{Rj?L;uXtEaw;c%%f%%!+D(nSK}Ki2fs zIoXJO>qkJQ7Ffr<9uDQxzkxNZ*W_&((heAWrETiL!3%Ex~J z>uuC@)uof6&iX;@I_j50sr*0f8^s58?A72|<6S3>OF?vo?fd>oKQyD_n1JTbJ?D!| zsJkDG#cn}A2=DdjYkODXu8q$Kha&>(pi=w(v!$U`c%)_JWTJFLk;$29APJ0BJG4zC z>7WZr@~l9RI%u2fTZA@)PNf(|3j@$}EQM|(uaxb|$X5l6phBRX=zP}9*#>p+wk3W4q24)_A##Y2Il*jijxw++gNe*sunqg#urS0isb8X zIE*2q$~4)RX?_T#tFEtY6t1TRppyvD26r|ZE6~Sq!foHiotvIUNR5a|L;e|ggL0(_ z77c33S+Q=XSP955G;zild)$wIhuLhZYsRkfDzReB$Q_Bl9dR9e!hqzm`!oqS(6NZ2 zX7ca=i9NdB>MmvRlVCeP(Zr3kbVSbig_sPn602STWz*AI*J&k~{(bN~0(4^i<={*F zsqADn<~qTeEI@DlM`om#t|aAp3!=6vQoFne@3ob*sv>Y)w(=fSbW{uV*og5%EoUPR zRPU}6+KbZRMJO!N2A_^h~I8FO51~?zEM&Ju9KCd&c6>NBl2%0Rh_CAGfxNc7=Q?8ToAd z6+(_Pdl~uc4>xh}-;0N0gYI(rB3^_ax04g12E7_`%vVD=`hy>flhkBHA+Bdc3?dG? ze&rUVrX^$Sv{B-@JVi*RrbDmfT$EdwZEYl_VQs8y5jyLU7dSn^U z@~JDMKC)V$chUJc@@up4a`g)Qdh7F|7AljLgO$n3rG({kh$WDEZcZ8-G6 zUL5FX?ZCPfnt#pEv_d>Q>ssW~89q6=&@+DIDVK3G2h{;aIdrQdl2w1}Vf(6}{PSKd zbb=31=bQ;XT~|%Uzzy5=36#~(XuT#5{k5yWMPPP2ZtP^SN8e&#H~VJZAe>W7K!-oO z=V@^EEjvXI{9kX?t;TJep3(+#beT|fiH2}sXZaqqHnw5Z#Nh($&e=@C66>lO1kg#` z5Pla%FZ8jZrJRf?Lq_S>tm$2#*EC^Bbw*l=A$^$`{ZSuySCHsvCIL$FxQhT~gUfK! zEjI}uKDzroJhbay2dYVphi zPw+!jBI|5}@_%;&eLX-*8q{-t0A8p~29Hw+x7}M`}D$@ z$Xr;1eRXvpdyF28$;=Xp06951`2N-3N8z9XAxFQp?=#%7RXa^jlZvz`jRo+au_|;L6`j^D+Ng(?Q)4&ede&9)~fbbdu6VmX<`Pb?f+Lx1(LZ zU24urddwP$i$*IrIri?V6GxJa_K}%;*qFfr*s_e=+|VWrG31Lu=4fZTg26C$Y}TBB z=9L_Y{P&u$tztW!+J}7Vidq_s0I8|zxZ;ZMV)%&R=AbOxw;F%m`6e2IR=6?}n@Co+ zPNwS}l19=gdD0i;z_jM$jY7pp>4Q0UXeM!k9(v>=^KYjS#&w+ZO7*d_)4*{bxa&94 zy67U3XmiL~@`aB%MXWNOOJRWBq;~s+2iUf?P~Op2Z1@zYr(XdK8Eer%r@U=vpw~}P zos1MgWO~w(KUpWf3$OV7d5o*Nkm%tPX`5zt=GULi`OJ?fKDtJfqfb5DJkDda%{~Ns zw(mvtt~y&JPjX%&Io7!o-o3qAsOyG~D%E^K9EmtModltD-H6jMrYadPyzsIBw6K~> ziDYO3^@SIlhuKH!re2)}8#}7-pm4$m==@An?)*hou=aU$HU3vSD_7|{OWMsIU(H`u~|fYn!l=M{sWc?FQ39n%NM zYL2?8^wO~qxGULqZ&)7lW`DxRud ziU;@n3n4XZ?#W3vK4!{D3>#A_j&6A-iDfT*>Rs)SE>rNyoV#=fD|wf1(8yrXI=_;w zJkFCWhOORwF1IA!cpBRmna4)0!xoAS49J=ZTif;zH_;w&F0^6nQQuKNzWm=@dx4^U zob)81T@JKCUqW#$(3iZ(fu8pcMHP|r5C5)h!JUpn19Rvqm>S_8;LQDT|uC< zv=ldAf30Ub_x3j9@#@8RqhSqtRm<^0vtG@6;D+nWX#W@>|XGS;OX0E*J zahIMJw`{@uaxM7Hu+e2gHD{YdI^!V22!*yK)t8_7Fn`!-!iDnQ-I_o5&{1W`FSg9# zR0f%oNt__vG&vN}tTwK7pga`HcKu2#!sutSe1;B52HEMiF+#F#JkNKZCEf4^-i2QR_NA^;EnP}%0is#_! z!6)MJ+K+I56$L+q;CuxF(AJD@sA}8sHSLvnvHlZm>Z-<`-X_~c zo?6?>P*{>L!imv|7upX{6w(h~T_&8S=H^bouSQ*fRQ+U&wu;NaE_Hf})=Txf-H2e~ zHO6?#ICibas6($$KHzMs8RX!PM*AGJaXP{D12^Vv4^jOwXe0W!UJ3Bi8UNs}$z(p{ z;2O(w23;^lS7r>($rvk-w2CZlEyw)rnj;Er>c-EI0L{r^zYU))-6;Hri8Ehbd@Qak zJq~_F!K1ZHaQ|K{90OVF$OF%uOaOLl*)0x~&YC;TQm*TRMTVH2TXvh;gtw;s2t`Sn zx^UHJYw^^JFCr~TlB0EvA>Am^(F;tPI008&LK2zFX=vxn5s|Mrs(V|ox33vb)Gfv8 zj!J~(+gWu#6mcdpEm?&2tysTP94{N2R*VP7eiyj`{h*`FTulIZy1ThBFOMJ^E}~Bq z;oO*}tv#}F(^1cXz>N!Sz3|DvS{T@|Eco7nBYaR+8cV;XA=HwFMJJMFG`npSB+lWW z(BihOn7{pLQTCY0BQbuuA##vTwgt=IS*>l3z;J5bRNOY~ETkyptHJST?NZ!dqXC-C z?-_niQC?cRewJ^Zkcp;H}h2ZWza zGL0*K{Q9=r;MZ@KwbRAuuRG1?+nT;sywda;{?)tzE#Yo-t9@cq>6KoYbUlWqH87g`C?@jI-3+UtmZ?j{1ssFv$-a#d0s zs7EsX?k|qwTwUfSnHd#&y^A%;-ST|cR*v~QH8Up#VVN*p|_FeW zE!DlRp#cv*{scO^I*_ev`ef$P*-H_te7Nq4D=@4qPDCMxp4hpo=vBk0=&8fb-Uh5} z--+G9CT#82F7lMqeIvhxx!L2Q7-lRucuB)@xo%9;izPYpIT^Few%mS~Vd!jIe{mD5 zEE(2}DRUTqXTjZEo@qm5 z7)?&hnTR`vd;_UUl0KlCG2qeqrMSQLJ(1VE>__U&$8UcsxOSB0gaKXAG>1xY{7vYl+)(Zb*>gLz8 zCgP`qPe-mlI{w6C^~>FvcM&pn6jyDO2C8f{<+hAD0}aKceX;p`I~F)RDg_oz?Zh|7Vky>$pMA4a8U z{j+^`pa;aO{r#=SO)A|V+Qe#?G|QtVDCZBe$Q!pl#F%nr{L80fXp&qegKaeQ4lnMk zzzw^f6R*fAslBO}>1jx%BmOP~-Oyc)%XU60@{XN4Qkb{pWCW8j-8#vT z(-+3t<(tf~yKjuU7Nr!0$28_>Eb#G{UdGxjn~9PdOfE$z;_PDgmRX-xMLe`sL}v!BKeK1fmWRRsHv5TL! zvdNi$>zeJtY<_IU82oYQ1+LwE<-K?D;mVcBO0hPE^7z+x0>y=caLpy(MtW-OHXaH( z{@btAkM8ON2-KIHaV8F*G}%6%$0+T|TnU;1&P z(>{^u8vTu9V$In8TcJKXGjlR-C^!ze6jjnKxiFcV>R!hCofX2mHtX1F4v#vk8+1f# z#d~W+gi=bsDmn|NWli*){&ZOP=6ipSWIvFfW_Kku#pUcvia+r%l6S;tOAX083g~`r`H+HDGd;iIp5F;T7p7~QLRp5U_K_SNRu$Yc|0c}2Hes3wm7UhW6oqrb!SZp;?ApbSF6QDlp;5ZGI(b(SHF2>c=xk48e{xxrha1aE00^j`ON{G{;> zgm?r~XHO7LN;V`gVDF9^arl({qR&j9h}-i|MnH-&9W4NBEqL|gC3t_;rx-%9wPp6K z`(L&804+VhWv88v!^V<(r`wRZX&f!y>VAoXK|;AaW1TcOuN&OlrjA9?*c(U}1lcx; zZsTmNoL1Rx<;Y_itKD`9z>Ya#rO5WbiIp#HQoj7*#3we-afx@eN zw?U1bD;2>;{IKC=)JHmn9{Pymr`y!$#GT)MVX-(2OLF?7MHgaPG98wc*B7_8alEtY zQ!HGz6eU?eia**y*Bt`(bpn$|jKY;?ej^4?b}!#u(2d8>6Ja1;WyGRsT>kFCsG=ub zw8kruHaltLg{N5c$$6~r7=L=c%V@^}UcA}uoOup*XJ1?$D!>>F9~|v!A1-fr4%l|bXeYDp^mT4gO-;J(r?zViZumiK=e zU%;n*+Oe#2zIUn_h>`ToE8bl#g3yfg=i#Ly!&cEmG>x$k~a5M7b>jqjW+fK2YA zbe-E!Uk;usxEPttxOUiWX^d`1FcicC3tz(SeYF^Cg!Is}8YR$?tlh1^oC#BK;oK9Y zLSn4~UiJ4EH1Q|9^~FHO)5)0=qnmrHVyzUhFfve@Sos)#eEwE)PqsI#KQk^Cum=KQ zuNiOEb5+ZW_#{{*Lh({4gca|8CY<+^;KO}6XX9(h@*!EbHbl2M7!KoaZ@q%;HB}fd zT?*wK)`~`8c=2Fdcee9Zv3QeFEQs+4lEA7mkU{Uyc*=ltwmDwi{i&xv-zK~wl{5b6 z{Kx2QW&)J{!hG_6a64{ndtDfV=m-;e+L3kW+o>~gbH>~OwNn84Z4J;92HBw}!*EX< z(9s9nbH#P=E75nb45;$|W;#$5c%1P^ZhQ#fnm_cHB<+ec)>gAOmV#(&U7?uNMNnUsI;cBuLR??MlgGb`36G~B4BF~}cg{Gs`DNuccrRzd{)oIiS`_Y?f7M~h`K&0mVgGcVll7QMB0 z1s1JYE&!cPfOd$y^k-if*x3T4r)J?tXJ3N!WcT|+_Pa6vEnpxN_#NYaz2PV*Y}r6^ zf1Y`^N1AY6#}mk6$#@|BTukvhgP-@mbpp_9H9+S$a4P$C>}Uo;JQ-IUe-_4;SmzVH zYUDjV2sbo}*MXt&zwdv`|C>WlK;?57e{lX0U|5+jNj%xU-B~B$@;sL+kHFp1_c!+} z#2}V|n^WcrQ@3|YY;AjM-3lyPw;aQBH9$K{6n`^-^wE3U8O}T6cpN=0&Ow7v2wktg zj&NO_2Iw*4kbaVMN1>M} z%zh*B&=pXjHX?_mVi40!d;3|n0QCCh7(sxh3vDI)hYW7ga#S<{vqw+HMYB(`ok4Uq zA=1!*&R1W7+S#e2DuC2kvyd|9aJo5iKU@6Y>=p%B3!ofJ9J&lD-UMS)g@Hw=2lXi! zr7Dz$RrX0V^HA}6h%D1LQu0fc9VFyDQT~laJ#IE17ynkHEK|K~gw8U$8-t}tD(Sa2 zXn-D>3*pmY_E!JJD20BmsRi;g^YH)9yiC6oNdL&u7v2{{*S{7av~!0RLsboc`BIR2 z#u-RD?Q~$*M!Fiy&b~~#JK7yZGiSe~%RUX3ESKe^Gx?axKCA}0WDK~ncWHcV^~AxA zU=Y⪼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 N002ovPDHLkV1k;v<;Va4 literal 0 HcmV?d00001 diff --git a/examples/solid/start-basic-solid-query/public/favicon-16x16.png b/examples/solid/start-basic-solid-query/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e GIT binary patch literal 832 zcmV-G1Hb%Px%`bk7VR5(v%lW%BSRTRK~=OuZ4FYhI3vvy^4t8t~UDHGBS#44K%hSiDal!9Nj zeb^RZ;3&cb72F3w6s4;uUA7>Cf>1=Z56;a$8wZ=NKHtq z33GDV=_|V0E(QPTEB1=edhG{{=-+C??RQi7*e9J7YBnZR+PppIKjA8EV+}Yt`zH<7 zGR%O5D3|Ef)99hUXu19=Cxaki@6toZIe&u-X0(oDFRl|x6P7Bwc^mB(i9|gOY)Jh6DaPkmt z8Wr!@TP1|RPlYRlJe^eRB0K(gn91{(=zi{HrkpHIflw8&q%;+U!V&dFPYDQAWJh@< zwcklN9VEX?vG;}75GqCepKC25M^xV%BcR%A8c!)S5k4P0$g}HS#lA6zy`~K@9&EX4 zOrvr%_1U2dp~gg6G*;&`Jag*?jZTJv+$S`*#)zme_SFWOCm*F4U&hJihqxAu;8z}x zWv7!u>YKRa3PUJQs55wC)i4QvFOAV0jW$?1cnUJJ7Vl?z_ge{9q!zpfCJxd8vJ>-ql@0&`Bttn1~4;s>8tax%hr(^q#A_*wqAv( zh(T&>hJD?OhiP$sxAzkd1W1^EHV1WL3xM&6$*HhG@|8}OjPpG{+!;GC>w;ha0000< KMNUMnLSTZGXp5cz literal 0 HcmV?d00001 diff --git a/examples/solid/start-basic-solid-query/public/favicon-32x32.png b/examples/solid/start-basic-solid-query/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f GIT binary patch literal 2115 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 literal 0 HcmV?d00001 diff --git a/examples/solid/start-basic-solid-query/public/favicon.ico b/examples/solid/start-basic-solid-query/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/examples/solid/start-basic-solid-query/public/favicon.png b/examples/solid/start-basic-solid-query/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0 GIT binary patch literal 1507 zcmV<91swW`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^O-V#SR9Fd>S3Qp$MHK9ro!#4$ zEP@L_hX|b@f=!*_42h6mKu7{)4)_U*>1>0bCkUj;Z1X!7 zHe(Ew^Oi(|bW3J~xu+)XbtFF?4>!7TH$>(D_atUQVEj(8fGvYu2NF33#JZX>)(Vj8 zIi@z>Glt?6t~;Lf(|C8F>;WF^8F<^s7Scr!sZc01uB?HMHoL5+FZ>B(g+r-)?Sn)#3Zal#?G@GAwO5U27MpGOlC2+_saA)rl zP-<@-n~;PQOlm|Hi<+W;NdR;5+=zADzM&?!+CPD36=cGwHy6!D^vPEHG?rO`K>G|M z3FposX{yT132wuw1OR3Um_5JoKB#6?!QgBupIT;?YIr;WcpmuCE>S75mZid+ens#E zGPuYjiG0UNNVWu=f!Id^?9)34)eIpu-`j_~W0iAQzK(}XYc_!;87Tk~?4tq|h=2(! zuq0HCiNK)@+ocCKR3q1REdUju>HdYxd>JX@%oOibg+J~D+}rhz54D!NfC{h-OYk{M zkzmFtdrL@nL0bm8nF@pob1CeLC>12ef#in-Bzv2!wi)Iuwq24)`AH}|0QNQ^f$KHv z?5PBPo1*#GAuAk+Poe`?UJ>mP`@~d4a(103j0lwUx@_+$#B&VC%7r>#2$HIiD`KO8L|s3Yp%M}BT0;NJDzZtPnx=4%enhU zhW*pNN0t`^4%5MKAR+}=^Q?QeqQ`>bbK zf+-ji$Uz8V0?LpX@kh`k%DL)GCA2=@SJNKg56Wh>>pr=7{1PmHqG|~=AdLV3002ov JPDHLkV1ivgp)>#h literal 0 HcmV?d00001 diff --git a/examples/solid/start-basic-solid-query/public/site.webmanifest b/examples/solid/start-basic-solid-query/public/site.webmanifest new file mode 100644 index 0000000000..fa99de77db --- /dev/null +++ b/examples/solid/start-basic-solid-query/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/examples/solid/start-basic-solid-query/src/api.ts b/examples/solid/start-basic-solid-query/src/api.ts new file mode 100644 index 0000000000..ed511bcd26 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/api.ts @@ -0,0 +1,6 @@ +import { + createStartAPIHandler, + defaultAPIFileRouteHandler, +} from '@tanstack/solid-start/api' + +export default createStartAPIHandler(defaultAPIFileRouteHandler) diff --git a/examples/solid/start-basic-solid-query/src/client.tsx b/examples/solid/start-basic-solid-query/src/client.tsx new file mode 100644 index 0000000000..b8d415d9a8 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/client.tsx @@ -0,0 +1,8 @@ +/// +import { hydrateRoot } from 'solid-dom/client' +import { StartClient } from '@tanstack/solid-start' +import { createRouter } from './router' + +const router = createRouter() + +hydrateRoot(document, ) diff --git a/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..e15888ddb4 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx @@ -0,0 +1,53 @@ +import { + ErrorComponent, + Link, + rootRouteId, + useMatch, + useRouter, +} from '@tanstack/solid-router' +import type { ErrorComponentProps } from '@tanstack/solid-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/components/NotFound.tsx b/examples/solid/start-basic-solid-query/src/components/NotFound.tsx new file mode 100644 index 0000000000..ca4c1960fa --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/solid-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routeTree.gen.ts b/examples/solid/start-basic-solid-query/src/routeTree.gen.ts new file mode 100644 index 0000000000..3a3b2216ad --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routeTree.gen.ts @@ -0,0 +1,483 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as RedirectImport } from './routes/redirect' +import { Route as DeferredImport } from './routes/deferred' +import { Route as PathlessLayoutImport } from './routes/_pathlessLayout' +import { Route as UsersRouteImport } from './routes/users.route' +import { Route as PostsRouteImport } from './routes/posts.route' +import { Route as IndexImport } from './routes/index' +import { Route as UsersIndexImport } from './routes/users.index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as UsersUserIdImport } from './routes/users.$userId' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as PathlessLayoutNestedLayoutImport } from './routes/_pathlessLayout/_nested-layout' +import { Route as PostsPostIdDeepImport } from './routes/posts_.$postId.deep' +import { Route as PathlessLayoutNestedLayoutRouteBImport } from './routes/_pathlessLayout/_nested-layout/route-b' +import { Route as PathlessLayoutNestedLayoutRouteAImport } from './routes/_pathlessLayout/_nested-layout/route-a' + +// Create/Update Routes + +const RedirectRoute = RedirectImport.update({ + id: '/redirect', + path: '/redirect', + getParentRoute: () => rootRoute, +} as any) + +const DeferredRoute = DeferredImport.update({ + id: '/deferred', + path: '/deferred', + getParentRoute: () => rootRoute, +} as any) + +const PathlessLayoutRoute = PathlessLayoutImport.update({ + id: '/_pathlessLayout', + getParentRoute: () => rootRoute, +} as any) + +const UsersRouteRoute = UsersRouteImport.update({ + id: '/users', + path: '/users', + getParentRoute: () => rootRoute, +} as any) + +const PostsRouteRoute = PostsRouteImport.update({ + id: '/posts', + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const UsersIndexRoute = UsersIndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => UsersRouteRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => PostsRouteRoute, +} as any) + +const UsersUserIdRoute = UsersUserIdImport.update({ + id: '/$userId', + path: '/$userId', + getParentRoute: () => UsersRouteRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + id: '/$postId', + path: '/$postId', + getParentRoute: () => PostsRouteRoute, +} as any) + +const PathlessLayoutNestedLayoutRoute = PathlessLayoutNestedLayoutImport.update( + { + id: '/_nested-layout', + getParentRoute: () => PathlessLayoutRoute, + } as any, +) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + id: '/posts_/$postId/deep', + path: '/posts/$postId/deep', + getParentRoute: () => rootRoute, +} as any) + +const PathlessLayoutNestedLayoutRouteBRoute = + PathlessLayoutNestedLayoutRouteBImport.update({ + id: '/route-b', + path: '/route-b', + getParentRoute: () => PathlessLayoutNestedLayoutRoute, + } as any) + +const PathlessLayoutNestedLayoutRouteARoute = + PathlessLayoutNestedLayoutRouteAImport.update({ + id: '/route-a', + path: '/route-a', + getParentRoute: () => PathlessLayoutNestedLayoutRoute, + } as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/solid-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsRouteImport + parentRoute: typeof rootRoute + } + '/users': { + id: '/users' + path: '/users' + fullPath: '/users' + preLoaderRoute: typeof UsersRouteImport + parentRoute: typeof rootRoute + } + '/_pathlessLayout': { + id: '/_pathlessLayout' + path: '' + fullPath: '' + preLoaderRoute: typeof PathlessLayoutImport + parentRoute: typeof rootRoute + } + '/deferred': { + id: '/deferred' + path: '/deferred' + fullPath: '/deferred' + preLoaderRoute: typeof DeferredImport + parentRoute: typeof rootRoute + } + '/redirect': { + id: '/redirect' + path: '/redirect' + fullPath: '/redirect' + preLoaderRoute: typeof RedirectImport + parentRoute: typeof rootRoute + } + '/_pathlessLayout/_nested-layout': { + id: '/_pathlessLayout/_nested-layout' + path: '' + fullPath: '' + preLoaderRoute: typeof PathlessLayoutNestedLayoutImport + parentRoute: typeof PathlessLayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsRouteImport + } + '/users/$userId': { + id: '/users/$userId' + path: '/$userId' + fullPath: '/users/$userId' + preLoaderRoute: typeof UsersUserIdImport + parentRoute: typeof UsersRouteImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsRouteImport + } + '/users/': { + id: '/users/' + path: '/' + fullPath: '/users/' + preLoaderRoute: typeof UsersIndexImport + parentRoute: typeof UsersRouteImport + } + '/_pathlessLayout/_nested-layout/route-a': { + id: '/_pathlessLayout/_nested-layout/route-a' + path: '/route-a' + fullPath: '/route-a' + preLoaderRoute: typeof PathlessLayoutNestedLayoutRouteAImport + parentRoute: typeof PathlessLayoutNestedLayoutImport + } + '/_pathlessLayout/_nested-layout/route-b': { + id: '/_pathlessLayout/_nested-layout/route-b' + path: '/route-b' + fullPath: '/route-b' + preLoaderRoute: typeof PathlessLayoutNestedLayoutRouteBImport + parentRoute: typeof PathlessLayoutNestedLayoutImport + } + '/posts_/$postId/deep': { + id: '/posts_/$postId/deep' + path: '/posts/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface PostsRouteRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteRouteChildren: PostsRouteRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteRouteWithChildren = PostsRouteRoute._addFileChildren( + PostsRouteRouteChildren, +) + +interface UsersRouteRouteChildren { + UsersUserIdRoute: typeof UsersUserIdRoute + UsersIndexRoute: typeof UsersIndexRoute +} + +const UsersRouteRouteChildren: UsersRouteRouteChildren = { + UsersUserIdRoute: UsersUserIdRoute, + UsersIndexRoute: UsersIndexRoute, +} + +const UsersRouteRouteWithChildren = UsersRouteRoute._addFileChildren( + UsersRouteRouteChildren, +) + +interface PathlessLayoutNestedLayoutRouteChildren { + PathlessLayoutNestedLayoutRouteARoute: typeof PathlessLayoutNestedLayoutRouteARoute + PathlessLayoutNestedLayoutRouteBRoute: typeof PathlessLayoutNestedLayoutRouteBRoute +} + +const PathlessLayoutNestedLayoutRouteChildren: PathlessLayoutNestedLayoutRouteChildren = + { + PathlessLayoutNestedLayoutRouteARoute: + PathlessLayoutNestedLayoutRouteARoute, + PathlessLayoutNestedLayoutRouteBRoute: + PathlessLayoutNestedLayoutRouteBRoute, + } + +const PathlessLayoutNestedLayoutRouteWithChildren = + PathlessLayoutNestedLayoutRoute._addFileChildren( + PathlessLayoutNestedLayoutRouteChildren, + ) + +interface PathlessLayoutRouteChildren { + PathlessLayoutNestedLayoutRoute: typeof PathlessLayoutNestedLayoutRouteWithChildren +} + +const PathlessLayoutRouteChildren: PathlessLayoutRouteChildren = { + PathlessLayoutNestedLayoutRoute: PathlessLayoutNestedLayoutRouteWithChildren, +} + +const PathlessLayoutRouteWithChildren = PathlessLayoutRoute._addFileChildren( + PathlessLayoutRouteChildren, +) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '/posts': typeof PostsRouteRouteWithChildren + '/users': typeof UsersRouteRouteWithChildren + '': typeof PathlessLayoutNestedLayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/route-a': typeof PathlessLayoutNestedLayoutRouteARoute + '/route-b': typeof PathlessLayoutNestedLayoutRouteBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof PathlessLayoutNestedLayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts': typeof PostsIndexRoute + '/users': typeof UsersIndexRoute + '/route-a': typeof PathlessLayoutNestedLayoutRouteARoute + '/route-b': typeof PathlessLayoutNestedLayoutRouteBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/posts': typeof PostsRouteRouteWithChildren + '/users': typeof UsersRouteRouteWithChildren + '/_pathlessLayout': typeof PathlessLayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/_pathlessLayout/_nested-layout': typeof PathlessLayoutNestedLayoutRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/_pathlessLayout/_nested-layout/route-a': typeof PathlessLayoutNestedLayoutRouteARoute + '/_pathlessLayout/_nested-layout/route-b': typeof PathlessLayoutNestedLayoutRouteBRoute + '/posts_/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '/posts' + | '/users' + | '' + | '/deferred' + | '/redirect' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/route-a' + | '/route-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/deferred' + | '/redirect' + | '/posts/$postId' + | '/users/$userId' + | '/posts' + | '/users' + | '/route-a' + | '/route-b' + | '/posts/$postId/deep' + id: + | '__root__' + | '/' + | '/posts' + | '/users' + | '/_pathlessLayout' + | '/deferred' + | '/redirect' + | '/_pathlessLayout/_nested-layout' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/_pathlessLayout/_nested-layout/route-a' + | '/_pathlessLayout/_nested-layout/route-b' + | '/posts_/$postId/deep' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + PostsRouteRoute: typeof PostsRouteRouteWithChildren + UsersRouteRoute: typeof UsersRouteRouteWithChildren + PathlessLayoutRoute: typeof PathlessLayoutRouteWithChildren + DeferredRoute: typeof DeferredRoute + RedirectRoute: typeof RedirectRoute + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + PostsRouteRoute: PostsRouteRouteWithChildren, + UsersRouteRoute: UsersRouteRouteWithChildren, + PathlessLayoutRoute: PathlessLayoutRouteWithChildren, + DeferredRoute: DeferredRoute, + RedirectRoute: RedirectRoute, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/posts", + "/users", + "/_pathlessLayout", + "/deferred", + "/redirect", + "/posts_/$postId/deep" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/posts": { + "filePath": "posts.route.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/users": { + "filePath": "users.route.tsx", + "children": [ + "/users/$userId", + "/users/" + ] + }, + "/_pathlessLayout": { + "filePath": "_pathlessLayout.tsx", + "children": [ + "/_pathlessLayout/_nested-layout" + ] + }, + "/deferred": { + "filePath": "deferred.tsx" + }, + "/redirect": { + "filePath": "redirect.tsx" + }, + "/_pathlessLayout/_nested-layout": { + "filePath": "_pathlessLayout/_nested-layout.tsx", + "parent": "/_pathlessLayout", + "children": [ + "/_pathlessLayout/_nested-layout/route-a", + "/_pathlessLayout/_nested-layout/route-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/users/$userId": { + "filePath": "users.$userId.tsx", + "parent": "/users" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/users/": { + "filePath": "users.index.tsx", + "parent": "/users" + }, + "/_pathlessLayout/_nested-layout/route-a": { + "filePath": "_pathlessLayout/_nested-layout/route-a.tsx", + "parent": "/_pathlessLayout/_nested-layout" + }, + "/_pathlessLayout/_nested-layout/route-b": { + "filePath": "_pathlessLayout/_nested-layout/route-b.tsx", + "parent": "/_pathlessLayout/_nested-layout" + }, + "/posts_/$postId/deep": { + "filePath": "posts_.$postId.deep.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/examples/solid/start-basic-solid-query/src/router.tsx b/examples/solid/start-basic-solid-query/src/router.tsx new file mode 100644 index 0000000000..91891f3193 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/router.tsx @@ -0,0 +1,31 @@ +import { QueryClient } from '@tanstack/solid-query' +import { createRouter as createTanStackRouter } from '@tanstack/solid-router' +import { routerWithQueryClient } from '@tanstack/solid-router-with-query' +import { routeTree } from './routeTree.gen' +import { DefaultCatchBoundary } from './components/DefaultCatchBoundary' +import { NotFound } from './components/NotFound' + +// NOTE: Most of the integration code found here is experimental and will +// definitely end up in a more streamlined API in the future. This is just +// to show what's possible with the current APIs. + +export function createRouter() { + const queryClient = new QueryClient() + + return routerWithQueryClient( + createTanStackRouter({ + routeTree, + context: { queryClient }, + defaultPreload: 'intent', + defaultErrorComponent: DefaultCatchBoundary, + defaultNotFoundComponent: () => , + }), + queryClient, + ) +} + +declare module '@tanstack/solid-router' { + interface Register { + router: ReturnType + } +} diff --git a/examples/solid/start-basic-solid-query/src/routes/__root.tsx b/examples/solid/start-basic-solid-query/src/routes/__root.tsx new file mode 100644 index 0000000000..e93451df14 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/__root.tsx @@ -0,0 +1,144 @@ +import { + HeadContent, + Link, + Outlet, + Scripts, + createRootRouteWithContext, +} from '@tanstack/solid-router' +import { SolidQueryDevtools } from '@tanstack/solid-query-devtools' +import { TanStackRouterDevtools } from '@tanstack/solid-router-devtools' +import * as Solid from 'solid-js' +import type { QueryClient } from '@tanstack/solid-query' +import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary' +import { NotFound } from '~/components/NotFound' +import appCss from '~/styles/app.css?url' +import { seo } from '~/utils/seo' + +export const Route = createRootRouteWithContext<{ + queryClient: QueryClient +}>()({ + head: () => ({ + meta: [ + { + charset: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ...seo({ + title: + 'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework', + description: `TanStack Start is a type-safe, client-first, full-stack React framework. `, + }), + ], + links: [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + }), + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + ) +} + +function RootDocument({ children }: { children: Solid.JSX.Element }) { + return ( + + + + + +
+ + Home + {' '} + + Posts + {' '} + + Users + {' '} + + Pathless Layout + {' '} + + Deferred + {' '} + + This Route Does Not Exist + +
+
+ {children} + + + + + + ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx new file mode 100644 index 0000000000..e525470c60 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_pathlessLayout')({ + component: PathlessLayoutComponent, +}) + +function PathlessLayoutComponent() { + return ( +
+
I'm a pathless layout
+
+ +
+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx new file mode 100644 index 0000000000..8651932b0f --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_pathlessLayout/_nested-layout')({ + component: PathlessLayoutComponent, +}) + +function PathlessLayoutComponent() { + return ( +
+
I'm a nested pathless layout
+
+ + Go to route A + + + Go to route B + +
+
+ +
+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx new file mode 100644 index 0000000000..a22902a271 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-a.tsx @@ -0,0 +1,11 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_pathlessLayout/_nested-layout/route-a')( + { + component: LayoutAComponent, + }, +) + +function LayoutAComponent() { + return
I'm A!
+} diff --git a/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx new file mode 100644 index 0000000000..36231d2153 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/_pathlessLayout/_nested-layout/route-b.tsx @@ -0,0 +1,11 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_pathlessLayout/_nested-layout/route-b')( + { + component: LayoutBComponent, + }, +) + +function LayoutBComponent() { + return
I'm B!
+} diff --git a/examples/solid/start-basic-solid-query/src/routes/api.users.ts b/examples/solid/start-basic-solid-query/src/routes/api.users.ts new file mode 100644 index 0000000000..f37bf0db1b --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/api.users.ts @@ -0,0 +1,17 @@ +import { json } from '@tanstack/solid-start' +import { createAPIFileRoute } from '@tanstack/solid-start/api' +import axios from 'redaxios' +import type { User } from '../utils/users' + +export const APIRoute = createAPIFileRoute('/api/users')({ + GET: async ({ request }) => { + console.info('Fetching users... @', request.url) + const res = await axios.get>( + 'https://jsonplaceholder.typicode.com/users', + ) + + const list = res.data.slice(0, 10) + + return json(list.map((u) => ({ id: u.id, name: u.name, email: u.email }))) + }, +}) diff --git a/examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts b/examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts new file mode 100644 index 0000000000..b1786f6a30 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/api/users.$id.ts @@ -0,0 +1,24 @@ +import { json } from '@tanstack/solid-start' +import { createAPIFileRoute } from '@tanstack/solid-start/api' +import axios from 'redaxios' +import type { User } from '../../utils/users' + +export const APIRoute = createAPIFileRoute('/api/users/$id')({ + GET: async ({ request, params }) => { + console.info(`Fetching users by id=${params.id}... @`, request.url) + try { + const res = await axios.get( + 'https://jsonplaceholder.typicode.com/users/' + params.id, + ) + + return json({ + id: res.data.id, + name: res.data.name, + email: res.data.email, + }) + } catch (e) { + console.error(e) + return json({ error: 'User not found' }, { status: 404 }) + } + }, +}) diff --git a/examples/solid/start-basic-solid-query/src/routes/deferred.tsx b/examples/solid/start-basic-solid-query/src/routes/deferred.tsx new file mode 100644 index 0000000000..59723bf583 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/deferred.tsx @@ -0,0 +1,53 @@ +import { queryOptions, createQuery } from '@tanstack/solid-query' +import { createFileRoute } from '@tanstack/solid-router' +import { Suspense, createSignal } from 'solid-js' + +const deferredQueryOptions = () => + queryOptions({ + queryKey: ['deferred'], + queryFn: async () => { + await new Promise((r) => setTimeout(r, 3000)) + return { + message: `Hello deferred from the server!`, + status: 'success', + time: new Date(), + } + }, + }) + +export const Route = createFileRoute('/deferred')({ + loader: ({ context }) => { + // Kick off loading as early as possible! + context.queryClient.prefetchQuery(deferredQueryOptions()) + }, + component: Deferred, +}) + +function Deferred() { + const [count, setCount] = createSignal(0) + + return ( +
+ + + +
Count: {count()}
+
+ +
+
+ ) +} + +function DeferredQuery() { + const deferredQuery = createQuery(()=>deferredQueryOptions()) + + return ( +
+

Deferred Query

+
Status: {deferredQuery.data?.status}
+
Message: {deferredQuery.data?.message}
+
Time: {deferredQuery.data?.time.toISOString()}
+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/index.tsx b/examples/solid/start-basic-solid-query/src/routes/index.tsx new file mode 100644 index 0000000000..a128aeca0e --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!!!

+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx new file mode 100644 index 0000000000..057c23de92 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx @@ -0,0 +1,51 @@ +import { ErrorComponent, Link, createFileRoute } from '@tanstack/solid-router' +import { createQuery } from '@tanstack/solid-query' +import { postQueryOptions } from '../utils/posts' +import type { ErrorComponentProps } from '@tanstack/solid-router' +import { NotFound } from '~/components/NotFound' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId }, context }) => { + const data = await context.queryClient.ensureQueryData( + postQueryOptions(postId), + ) + + return { + title: data.title, + } + }, + head: ({ loaderData }) => ({ + meta: loaderData ? [{ title: loaderData.title }] : undefined, + }), + errorComponent: PostErrorComponent, + notFoundComponent: () => { + return Post not found + }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const params = Route.useParams() + const postQuery = createQuery(()=>postQueryOptions(params().postId)) + + return ( +
+

{postQuery.data?.title}

+
{postQuery.data?.body}
+ + Deep View + +
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.index.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.index.tsx new file mode 100644 index 0000000000..33d0386c19 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/posts.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx new file mode 100644 index 0000000000..1dcd36d70e --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx @@ -0,0 +1,45 @@ +import { createQuery } from '@tanstack/solid-query' +import { Link, Outlet, createFileRoute } from '@tanstack/solid-router' +import { postsQueryOptions } from '../utils/posts' + +export const Route = createFileRoute('/posts')({ + loader: async ({ context }) => { + await context.queryClient.ensureQueryData(postsQueryOptions()) + }, + head: () => ({ + meta: [{ title: 'Posts' }], + }), + component: PostsComponent, +}) + +function PostsComponent() { + const postsQuery = createQuery(()=>postsQueryOptions()) + + return ( +
+
    + {[ + ...postsQuery.data!, + { id: 'i-do-not-exist', title: 'Non-existent Post' }, + ].map((post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + })} +
+
+ +
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx b/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx new file mode 100644 index 0000000000..6fc5061d78 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx @@ -0,0 +1,39 @@ +import { Link, createFileRoute } from '@tanstack/solid-router' +import { useSuspenseQuery } from '@tanstack/solid-query' +import { postQueryOptions } from '../utils/posts' +import { PostErrorComponent } from './posts.$postId' + +export const Route = createFileRoute('/posts_/$postId/deep')({ + loader: async ({ params: { postId }, context }) => { + const data = await context.queryClient.ensureQueryData( + postQueryOptions(postId), + ) + + return { + title: data.title, + } + }, + head: ({ loaderData }) => ({ + meta: loaderData ? [{ title: loaderData.title }] : undefined, + }), + errorComponent: PostErrorComponent, + component: PostDeepComponent, +}) + +function PostDeepComponent() { + const { postId } = Route.useParams() + const postQuery = useSuspenseQuery(postQueryOptions(postId)) + + return ( +
+ + ← All Posts + +

{postQuery.data.title}

+
{postQuery.data.body}
+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/redirect.tsx b/examples/solid/start-basic-solid-query/src/routes/redirect.tsx new file mode 100644 index 0000000000..ca017f0635 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/redirect.tsx @@ -0,0 +1,9 @@ +import { createFileRoute, redirect } from '@tanstack/solid-router' + +export const Route = createFileRoute('/redirect')({ + beforeLoad: async () => { + throw redirect({ + to: '/posts', + }) + }, +}) diff --git a/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx new file mode 100644 index 0000000000..7318354acd --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx @@ -0,0 +1,33 @@ +import { createQuery } from '@tanstack/solid-query' +import { ErrorComponent, createFileRoute } from '@tanstack/solid-router' +import type { ErrorComponentProps } from '@tanstack/solid-router' +import { NotFound } from '~/components/NotFound' +import { userQueryOptions } from '~/utils/users' + +export const Route = createFileRoute('/users/$userId')({ + loader: async ({ context, params: { userId } }) => { + await context.queryClient.ensureQueryData(userQueryOptions(userId)) + }, + errorComponent: UserErrorComponent, + component: UserComponent, + notFoundComponent: () => { + return User not found + }, +}) + +export function UserErrorComponent({ error }: ErrorComponentProps) { + return +} + +function UserComponent() { + const params = Route.useParams() + const userQuery = createQuery(()=>userQueryOptions(params().userId)) + const user = userQuery.data + + return ( +
+

{user?.name}

+
{user?.email}
+
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/routes/users.index.tsx b/examples/solid/start-basic-solid-query/src/routes/users.index.tsx new file mode 100644 index 0000000000..bbc96801a9 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/users.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/users/')({ + component: UsersIndexComponent, +}) + +function UsersIndexComponent() { + return
Select a user.
+} diff --git a/examples/solid/start-basic-solid-query/src/routes/users.route.tsx b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx new file mode 100644 index 0000000000..10979073c7 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx @@ -0,0 +1,42 @@ +import { createQuery } from '@tanstack/solid-query' +import { Link, Outlet, createFileRoute } from '@tanstack/solid-router' +import { usersQueryOptions } from '../utils/users' + +export const Route = createFileRoute('/users')({ + loader: async ({ context }) => { + await context.queryClient.ensureQueryData(usersQueryOptions()) + }, + component: UsersComponent, +}) + +function UsersComponent() { + const usersQuery = createQuery(()=>usersQueryOptions()) + + return ( +
+
    + {[ + ...usersQuery.data!, + { id: 'i-do-not-exist', name: 'Non-existent User', email: '' }, + ].map((user) => { + return ( +
  • + +
    {user.name}
    + +
  • + ) + })} +
+
+ +
+ ) +} diff --git a/examples/solid/start-basic-solid-query/src/ssr.tsx b/examples/solid/start-basic-solid-query/src/ssr.tsx new file mode 100644 index 0000000000..ebd14c8120 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/ssr.tsx @@ -0,0 +1,13 @@ +/// +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/solid-start/server' +import { getRouterManifest } from '@tanstack/solid-start/router-manifest' + +import { createRouter } from './router' + +export default createStartHandler({ + createRouter, + getRouterManifest, +})(defaultStreamHandler) diff --git a/examples/solid/start-basic-solid-query/src/styles/app.css b/examples/solid/start-basic-solid-query/src/styles/app.css new file mode 100644 index 0000000000..c53c870665 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/styles/app.css @@ -0,0 +1,22 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html { + color-scheme: light dark; + } + + * { + @apply border-gray-200 dark:border-gray-800; + } + + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/examples/solid/start-basic-solid-query/src/utils/posts.tsx b/examples/solid/start-basic-solid-query/src/utils/posts.tsx new file mode 100644 index 0000000000..84091f451a --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/utils/posts.tsx @@ -0,0 +1,49 @@ +import { queryOptions } from '@tanstack/solid-query' +import { notFound } from '@tanstack/solid-router' +import { createServerFn } from '@tanstack/solid-start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPosts = createServerFn({ method: 'GET' }).handler( + async () => { + console.info('Fetching posts...') + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) + }, +) + +export const postsQueryOptions = () => + queryOptions({ + queryKey: ['posts'], + queryFn: () => fetchPosts(), + }) + +export const fetchPost = createServerFn({ method: 'GET' }) + .validator((d: string) => d) + .handler(async ({ data }) => { + console.info(`Fetching post with id ${data}...`) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${data}`) + .then((r) => r.data) + .catch((err) => { + console.error(err) + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post + }) + +export const postQueryOptions = (postId: string) => + queryOptions({ + queryKey: ['post', postId], + queryFn: () => fetchPost({ data: postId }), + }) diff --git a/examples/solid/start-basic-solid-query/src/utils/seo.ts b/examples/solid/start-basic-solid-query/src/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/examples/solid/start-basic-solid-query/src/utils/users.tsx b/examples/solid/start-basic-solid-query/src/utils/users.tsx new file mode 100644 index 0000000000..a27f1bb142 --- /dev/null +++ b/examples/solid/start-basic-solid-query/src/utils/users.tsx @@ -0,0 +1,34 @@ +import { queryOptions } from '@tanstack/solid-query' +import axios from 'redaxios' + +export type User = { + id: number + name: string + email: string +} + +export const DEPLOY_URL = 'http://localhost:3000' + +export const usersQueryOptions = () => + queryOptions({ + queryKey: ['users'], + queryFn: () => + axios + .get>(DEPLOY_URL + '/api/users') + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch users') + }), + }) + +export const userQueryOptions = (id: string) => + queryOptions({ + queryKey: ['users', id], + queryFn: () => + axios + .get(DEPLOY_URL + '/api/users/' + id) + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch user') + }), + }) diff --git a/examples/solid/start-basic-solid-query/tailwind.config.mjs b/examples/solid/start-basic-solid-query/tailwind.config.mjs new file mode 100644 index 0000000000..e49f4eb776 --- /dev/null +++ b/examples/solid/start-basic-solid-query/tailwind.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{js,jsx,ts,tsx}'], +} diff --git a/examples/solid/start-basic-solid-query/tsconfig.json b/examples/solid/start-basic-solid-query/tsconfig.json new file mode 100644 index 0000000000..a40235b863 --- /dev/null +++ b/examples/solid/start-basic-solid-query/tsconfig.json @@ -0,0 +1,23 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./src/*"] + }, + "noEmit": true + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 456c33e85e..152e41d57e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,8 @@ overrides: '@tanstack/history': workspace:* '@tanstack/router-core': workspace:* '@tanstack/react-router': workspace:* + '@tanstack/solid-router': workspace:* + '@tanstack/solid-router-with-query': workspace:* '@tanstack/router-cli': workspace:* '@tanstack/router-devtools': workspace:* '@tanstack/router-devtools-core': workspace:^ @@ -1498,7 +1500,7 @@ importers: e2e/solid-router/basic: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1538,7 +1540,7 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1575,7 +1577,7 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1624,7 +1626,7 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1661,7 +1663,7 @@ importers: e2e/solid-router/basic-scroll-restoration: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1707,7 +1709,7 @@ importers: specifier: ^5.66.0 version: 5.66.0(@tanstack/solid-query@5.66.0(solid-js@1.9.5))(solid-js@1.9.5) '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1753,7 +1755,7 @@ importers: specifier: ^5.66.0 version: 5.66.0(@tanstack/solid-query@5.66.0(solid-js@1.9.5))(solid-js@1.9.5) '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1796,7 +1798,7 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1842,7 +1844,7 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1885,7 +1887,7 @@ importers: e2e/solid-router/rspack-basic-file-based: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1931,7 +1933,7 @@ importers: e2e/solid-router/rspack-basic-virtual-named-export-config-file-based: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -1983,7 +1985,7 @@ importers: specifier: workspace:* version: link:../../../packages/router-plugin '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -2026,7 +2028,7 @@ importers: e2e/solid-start/basic: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -2084,7 +2086,7 @@ importers: e2e/solid-start/basic-tsr-config: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -2112,7 +2114,7 @@ importers: e2e/solid-start/scroll-restoration: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -2173,7 +2175,7 @@ importers: e2e/solid-start/server-functions: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -2237,7 +2239,7 @@ importers: e2e/solid-start/website: dependencies: '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5191,7 +5193,7 @@ importers: examples/solid/basic: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5231,7 +5233,7 @@ importers: examples/solid/basic-devtools-panel: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5265,7 +5267,7 @@ importers: examples/solid/basic-file-based: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5305,7 +5307,7 @@ importers: examples/solid/basic-non-nested-devtools: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5351,7 +5353,7 @@ importers: specifier: ^5.66.0 version: 5.66.0(@tanstack/solid-query@5.66.0(solid-js@1.9.5))(solid-js@1.9.5) '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5394,7 +5396,7 @@ importers: specifier: ^5.66.0 version: 5.66.0(@tanstack/solid-query@5.66.0(solid-js@1.9.5))(solid-js@1.9.5) '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5434,7 +5436,7 @@ importers: examples/solid/kitchen-sink-file-based: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5477,7 +5479,7 @@ importers: examples/solid/quickstart-file-based: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5517,7 +5519,7 @@ importers: examples/solid/start-bare: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5566,7 +5568,7 @@ importers: examples/solid/start-basic: dependencies: '@tanstack/solid-router': - specifier: ^1.114.29 + specifier: workspace:* version: link:../../../packages/solid-router '@tanstack/solid-router-devtools': specifier: workspace:^ @@ -5609,6 +5611,58 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.8.2)(vite@6.1.2(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + examples/solid/start-basic-solid-query: + dependencies: + '@tanstack/solid-query': + specifier: ^5.66.0 + version: 5.66.0(solid-js@1.9.5) + '@tanstack/solid-query-devtools': + specifier: ^5.66.0 + version: 5.66.0(@tanstack/solid-query@5.66.0(solid-js@1.9.5))(solid-js@1.9.5) + '@tanstack/solid-router': + specifier: workspace:* + version: link:../../../packages/solid-router + '@tanstack/solid-router-devtools': + specifier: workspace:^ + version: link:../../../packages/solid-router-devtools + '@tanstack/solid-router-with-query': + specifier: workspace:* + version: link:../../../packages/solid-router-with-query + '@tanstack/solid-start': + specifier: workspace:* + version: link:../../../packages/solid-start + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + solid-js: + specifier: ^1.9.5 + version: 1.9.5 + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + vinxi: + specifier: 0.5.3 + version: 0.5.3(@types/node@22.13.4)(db0@0.2.3)(ioredis@5.4.2)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + devDependencies: + '@types/node': + specifier: ^22.5.4 + version: 22.13.4 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.5.3) + postcss: + specifier: ^8.5.1 + version: 8.5.3 + tailwindcss: + specifier: ^3.4.17 + version: 3.4.17 + typescript: + specifier: ^5.7.2 + version: 5.8.2 + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4(typescript@5.8.2)(vite@6.1.2(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + packages/arktype-adapter: devDependencies: '@tanstack/react-router': @@ -6525,7 +6579,7 @@ importers: specifier: workspace:^ version: link:../router-devtools-core '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../solid-router solid-js: specifier: ^1.9.5 @@ -6544,7 +6598,7 @@ importers: specifier: '>=5.66.0' version: 5.66.0(solid-js@1.9.5) '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../solid-router solid-js: specifier: '>=1.9.5' @@ -6599,7 +6653,7 @@ importers: specifier: workspace:* version: link:../router-core '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../solid-router '@tanstack/start-client-core': specifier: workspace:* @@ -6758,7 +6812,7 @@ importers: specifier: workspace:* version: link:../router-core '@tanstack/solid-router': - specifier: workspace:^ + specifier: workspace:* version: link:../solid-router '@tanstack/start-client-core': specifier: workspace:* From 2cea473432e0e5325ea9f95ce3a0dd5ff4fac5c5 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 31 Mar 2025 02:52:17 +0200 Subject: [PATCH 4/5] add e2e tests --- e2e/solid-start/basic-solid-query/.gitignore | 22 + .../basic-solid-query/.prettierignore | 4 + .../basic-solid-query/app.config.ts | 15 + .../basic-solid-query/package.json | 36 ++ .../basic-solid-query/playwright.config.ts | 34 ++ .../basic-solid-query/postcss.config.mjs | 6 + .../public/android-chrome-192x192.png | Bin 0 -> 29964 bytes .../public/android-chrome-512x512.png | Bin 0 -> 109271 bytes .../public/apple-touch-icon.png | Bin 0 -> 27246 bytes .../public/favicon-16x16.png | Bin 0 -> 832 bytes .../public/favicon-32x32.png | Bin 0 -> 2115 bytes .../basic-solid-query/public/favicon.ico | Bin 0 -> 15406 bytes .../basic-solid-query/public/favicon.png | Bin 0 -> 1507 bytes .../basic-solid-query/public/site.webmanifest | 19 + e2e/solid-start/basic-solid-query/src/api.ts | 6 + .../basic-solid-query/src/client.tsx | 8 + .../src/components/DefaultCatchBoundary.tsx | 53 ++ .../src/components/NotFound.tsx | 25 + .../basic-solid-query/src/routeTree.gen.ts | 470 ++++++++++++++++++ .../basic-solid-query/src/router.tsx | 32 ++ .../basic-solid-query/src/routes/__root.tsx | 141 ++++++ .../basic-solid-query/src/routes/_layout.tsx | 16 + .../src/routes/_layout/_layout-2.tsx | 34 ++ .../src/routes/_layout/_layout-2/layout-a.tsx | 9 + .../src/routes/_layout/_layout-2/layout-b.tsx | 9 + .../basic-solid-query/src/routes/api.users.ts | 17 + .../src/routes/api/users.$id.ts | 24 + .../basic-solid-query/src/routes/deferred.tsx | 53 ++ .../basic-solid-query/src/routes/index.tsx | 13 + .../src/routes/posts.$postId.tsx | 52 ++ .../src/routes/posts.index.tsx | 9 + .../basic-solid-query/src/routes/posts.tsx | 44 ++ .../src/routes/posts_.$postId.deep.tsx | 39 ++ .../basic-solid-query/src/routes/redirect.tsx | 9 + .../src/routes/users.$userId.tsx | 34 ++ .../src/routes/users.index.tsx | 9 + .../basic-solid-query/src/routes/users.tsx | 43 ++ e2e/solid-start/basic-solid-query/src/ssr.tsx | 12 + .../basic-solid-query/src/styles/app.css | 22 + .../basic-solid-query/src/utils/posts.tsx | 49 ++ .../basic-solid-query/src/utils/seo.ts | 33 ++ .../basic-solid-query/src/utils/users.tsx | 37 ++ .../basic-solid-query/tailwind.config.mjs | 4 + .../basic-solid-query/tests/app.spec.ts | 36 ++ .../basic-solid-query/tsconfig.json | 23 + .../src/components/DefaultCatchBoundary.tsx | 2 +- .../src/routes/__root.tsx | 130 +++-- pnpm-lock.yaml | 61 +++ 48 files changed, 1624 insertions(+), 70 deletions(-) create mode 100644 e2e/solid-start/basic-solid-query/.gitignore create mode 100644 e2e/solid-start/basic-solid-query/.prettierignore create mode 100644 e2e/solid-start/basic-solid-query/app.config.ts create mode 100644 e2e/solid-start/basic-solid-query/package.json create mode 100644 e2e/solid-start/basic-solid-query/playwright.config.ts create mode 100644 e2e/solid-start/basic-solid-query/postcss.config.mjs create mode 100644 e2e/solid-start/basic-solid-query/public/android-chrome-192x192.png create mode 100644 e2e/solid-start/basic-solid-query/public/android-chrome-512x512.png create mode 100644 e2e/solid-start/basic-solid-query/public/apple-touch-icon.png create mode 100644 e2e/solid-start/basic-solid-query/public/favicon-16x16.png create mode 100644 e2e/solid-start/basic-solid-query/public/favicon-32x32.png create mode 100644 e2e/solid-start/basic-solid-query/public/favicon.ico create mode 100644 e2e/solid-start/basic-solid-query/public/favicon.png create mode 100644 e2e/solid-start/basic-solid-query/public/site.webmanifest create mode 100644 e2e/solid-start/basic-solid-query/src/api.ts create mode 100644 e2e/solid-start/basic-solid-query/src/client.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/components/DefaultCatchBoundary.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/components/NotFound.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routeTree.gen.ts create mode 100644 e2e/solid-start/basic-solid-query/src/router.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/__root.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/_layout.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-a.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-b.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/api.users.ts create mode 100644 e2e/solid-start/basic-solid-query/src/routes/api/users.$id.ts create mode 100644 e2e/solid-start/basic-solid-query/src/routes/deferred.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/index.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/posts.index.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/posts.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/redirect.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/users.index.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/routes/users.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/ssr.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/styles/app.css create mode 100644 e2e/solid-start/basic-solid-query/src/utils/posts.tsx create mode 100644 e2e/solid-start/basic-solid-query/src/utils/seo.ts create mode 100644 e2e/solid-start/basic-solid-query/src/utils/users.tsx create mode 100644 e2e/solid-start/basic-solid-query/tailwind.config.mjs create mode 100644 e2e/solid-start/basic-solid-query/tests/app.spec.ts create mode 100644 e2e/solid-start/basic-solid-query/tsconfig.json diff --git a/e2e/solid-start/basic-solid-query/.gitignore b/e2e/solid-start/basic-solid-query/.gitignore new file mode 100644 index 0000000000..be342025da --- /dev/null +++ b/e2e/solid-start/basic-solid-query/.gitignore @@ -0,0 +1,22 @@ +node_modules +package-lock.json +yarn.lock + +.DS_Store +.cache +.env +.vercel +.output +.vinxi + +/build/ +/api/ +/server/build +/public/build +.vinxi +# Sentry Config File +.env.sentry-build-plugin +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/e2e/solid-start/basic-solid-query/.prettierignore b/e2e/solid-start/basic-solid-query/.prettierignore new file mode 100644 index 0000000000..2be5eaa6ec --- /dev/null +++ b/e2e/solid-start/basic-solid-query/.prettierignore @@ -0,0 +1,4 @@ +**/build +**/public +pnpm-lock.yaml +routeTree.gen.ts \ No newline at end of file diff --git a/e2e/solid-start/basic-solid-query/app.config.ts b/e2e/solid-start/basic-solid-query/app.config.ts new file mode 100644 index 0000000000..2a06e3d3f0 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/app.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from '@tanstack/solid-start/config' +import tsConfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + tsr: { + appDirectory: 'src', + }, + vite: { + plugins: [ + tsConfigPaths({ + projects: ['./tsconfig.json'], + }), + ], + }, +}) diff --git a/e2e/solid-start/basic-solid-query/package.json b/e2e/solid-start/basic-solid-query/package.json new file mode 100644 index 0000000000..9072a0833b --- /dev/null +++ b/e2e/solid-start/basic-solid-query/package.json @@ -0,0 +1,36 @@ +{ + "name": "tanstack-solid-start-e2e-basic-solid-query", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "vinxi dev --port 3000", + "dev:e2e": "vinxi dev", + "build": "vinxi build && tsc --noEmit", + "start": "vinxi start", + "test:e2e": "playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/solid-query": "^5.66.0", + "@tanstack/solid-query-devtools": "^5.66.0", + "@tanstack/solid-router": "workspace:^", + "@tanstack/solid-router-with-query": "workspace:^", + "@tanstack/solid-router-devtools": "workspace:^", + "@tanstack/solid-start": "workspace:^", + "solid-js": "^1.9.5", + "redaxios": "^0.5.1", + "tailwind-merge": "^2.6.0", + "vinxi": "0.5.3" + }, + "devDependencies": { + "@playwright/test": "^1.50.1", + "@tanstack/router-e2e-utils": "workspace:^", + "@types/node": "^22.10.2", + "@vitejs/plugin-react": "^4.3.4", + "postcss": "^8.5.1", + "autoprefixer": "^10.4.20", + "tailwindcss": "^3.4.17", + "typescript": "^5.7.2", + "vite-tsconfig-paths": "^5.1.4" + } +} diff --git a/e2e/solid-start/basic-solid-query/playwright.config.ts b/e2e/solid-start/basic-solid-query/playwright.config.ts new file mode 100644 index 0000000000..bb77d0cf70 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/playwright.config.ts @@ -0,0 +1,34 @@ +import { defineConfig, devices } from '@playwright/test' +import { derivePort } from '@tanstack/router-e2e-utils' +import packageJson from './package.json' with { type: 'json' } + +const PORT = derivePort(packageJson.name) +const baseURL = `http://localhost:${PORT}` +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + workers: 1, + + reporter: [['line']], + + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL, + }, + + webServer: { + command: `VITE_SERVER_PORT=${PORT} pnpm build && VITE_SERVER_PORT=${PORT} pnpm start --port ${PORT}`, + url: baseURL, + reuseExistingServer: !process.env.CI, + stdout: 'pipe', + }, + + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], +}) diff --git a/e2e/solid-start/basic-solid-query/postcss.config.mjs b/e2e/solid-start/basic-solid-query/postcss.config.mjs new file mode 100644 index 0000000000..2e7af2b7f1 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/postcss.config.mjs @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/e2e/solid-start/basic-solid-query/public/android-chrome-192x192.png b/e2e/solid-start/basic-solid-query/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..09c8324f8c6781bc90fcf5dd38e0702bd5f171f3 GIT binary patch literal 29964 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
-$E{6Mn6vA;gG82)4;e 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 b=FG literal 0 HcmV?d00001 diff --git a/e2e/solid-start/basic-solid-query/public/android-chrome-512x512.png b/e2e/solid-start/basic-solid-query/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..11d626ea3d00fddd52861bf0af5554a92fc30d69 GIT binary patch literal 109271 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 Ef@mE(_W%F@ literal 0 HcmV?d00001 diff --git a/e2e/solid-start/basic-solid-query/public/apple-touch-icon.png b/e2e/solid-start/basic-solid-query/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9423cc02c40ea066d2a061cdcdf621c0718cb1 GIT binary patch literal 27246 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⪼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 N002ovPDHLkV1k;v<;Va4 literal 0 HcmV?d00001 diff --git a/e2e/solid-start/basic-solid-query/public/favicon-16x16.png b/e2e/solid-start/basic-solid-query/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e3389b00443d602a249b48ae0e21e333971c9c1e GIT binary patch literal 832 zcmV-G1Hb%Px%`bk7VR5(v%lW%BSRTRK~=OuZ4FYhI3vvy^4t8t~UDHGBS#44K%hSiDal!9Nj zeb^RZ;3&cb72F3w6s4;uUA7>Cf>1=Z56;a$8wZ=NKHtq z33GDV=_|V0E(QPTEB1=edhG{{=-+C??RQi7*e9J7YBnZR+PppIKjA8EV+}Yt`zH<7 zGR%O5D3|Ef)99hUXu19=Cxaki@6toZIe&u-X0(oDFRl|x6P7Bwc^mB(i9|gOY)Jh6DaPkmt z8Wr!@TP1|RPlYRlJe^eRB0K(gn91{(=zi{HrkpHIflw8&q%;+U!V&dFPYDQAWJh@< zwcklN9VEX?vG;}75GqCepKC25M^xV%BcR%A8c!)S5k4P0$g}HS#lA6zy`~K@9&EX4 zOrvr%_1U2dp~gg6G*;&`Jag*?jZTJv+$S`*#)zme_SFWOCm*F4U&hJihqxAu;8z}x zWv7!u>YKRa3PUJQs55wC)i4QvFOAV0jW$?1cnUJJ7Vl?z_ge{9q!zpfCJxd8vJ>-ql@0&`Bttn1~4;s>8tax%hr(^q#A_*wqAv( zh(T&>hJD?OhiP$sxAzkd1W1^EHV1WL3xM&6$*HhG@|8}OjPpG{+!;GC>w;ha0000< KMNUMnLSTZGXp5cz literal 0 HcmV?d00001 diff --git a/e2e/solid-start/basic-solid-query/public/favicon-32x32.png b/e2e/solid-start/basic-solid-query/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..900c77d444c9b31e6144b6ac0bb1ab7bb7ca767f GIT binary patch literal 2115 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 literal 0 HcmV?d00001 diff --git a/e2e/solid-start/basic-solid-query/public/favicon.ico b/e2e/solid-start/basic-solid-query/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a1751676f7e22811b1070572093996c93c87617 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/e2e/solid-start/basic-solid-query/public/favicon.png b/e2e/solid-start/basic-solid-query/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e77bc06091ade4496525a09d8900675afcf03f0 GIT binary patch literal 1507 zcmV<91swW`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^O-V#SR9Fd>S3Qp$MHK9ro!#4$ zEP@L_hX|b@f=!*_42h6mKu7{)4)_U*>1>0bCkUj;Z1X!7 zHe(Ew^Oi(|bW3J~xu+)XbtFF?4>!7TH$>(D_atUQVEj(8fGvYu2NF33#JZX>)(Vj8 zIi@z>Glt?6t~;Lf(|C8F>;WF^8F<^s7Scr!sZc01uB?HMHoL5+FZ>B(g+r-)?Sn)#3Zal#?G@GAwO5U27MpGOlC2+_saA)rl zP-<@-n~;PQOlm|Hi<+W;NdR;5+=zADzM&?!+CPD36=cGwHy6!D^vPEHG?rO`K>G|M z3FposX{yT132wuw1OR3Um_5JoKB#6?!QgBupIT;?YIr;WcpmuCE>S75mZid+ens#E zGPuYjiG0UNNVWu=f!Id^?9)34)eIpu-`j_~W0iAQzK(}XYc_!;87Tk~?4tq|h=2(! zuq0HCiNK)@+ocCKR3q1REdUju>HdYxd>JX@%oOibg+J~D+}rhz54D!NfC{h-OYk{M zkzmFtdrL@nL0bm8nF@pob1CeLC>12ef#in-Bzv2!wi)Iuwq24)`AH}|0QNQ^f$KHv z?5PBPo1*#GAuAk+Poe`?UJ>mP`@~d4a(103j0lwUx@_+$#B&VC%7r>#2$HIiD`KO8L|s3Yp%M}BT0;NJDzZtPnx=4%enhU zhW*pNN0t`^4%5MKAR+}=^Q?QeqQ`>bbK zf+-ji$Uz8V0?LpX@kh`k%DL)GCA2=@SJNKg56Wh>>pr=7{1PmHqG|~=AdLV3002ov JPDHLkV1ivgp)>#h literal 0 HcmV?d00001 diff --git a/e2e/solid-start/basic-solid-query/public/site.webmanifest b/e2e/solid-start/basic-solid-query/public/site.webmanifest new file mode 100644 index 0000000000..fa99de77db --- /dev/null +++ b/e2e/solid-start/basic-solid-query/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/e2e/solid-start/basic-solid-query/src/api.ts b/e2e/solid-start/basic-solid-query/src/api.ts new file mode 100644 index 0000000000..ed511bcd26 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/api.ts @@ -0,0 +1,6 @@ +import { + createStartAPIHandler, + defaultAPIFileRouteHandler, +} from '@tanstack/solid-start/api' + +export default createStartAPIHandler(defaultAPIFileRouteHandler) diff --git a/e2e/solid-start/basic-solid-query/src/client.tsx b/e2e/solid-start/basic-solid-query/src/client.tsx new file mode 100644 index 0000000000..3d080681c8 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/client.tsx @@ -0,0 +1,8 @@ +/// +import { hydrate } from 'solid-js/web' +import { StartClient } from '@tanstack/solid-start' +import { createRouter } from './router' + +const router = createRouter() + +hydrate(()=>, document!) diff --git a/e2e/solid-start/basic-solid-query/src/components/DefaultCatchBoundary.tsx b/e2e/solid-start/basic-solid-query/src/components/DefaultCatchBoundary.tsx new file mode 100644 index 0000000000..32aed20e67 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/components/DefaultCatchBoundary.tsx @@ -0,0 +1,53 @@ +import { + ErrorComponent, + Link, + rootRouteId, + useMatch, + useRouter, +} from '@tanstack/solid-router' +import type { ErrorComponentProps } from '@tanstack/solid-router' + +export function DefaultCatchBoundary({ error }: ErrorComponentProps) { + const router = useRouter() + const isRoot = useMatch({ + strict: false, + select: (state) => state.id === rootRouteId, + }) + + console.error(error) + + return ( +
+ +
+ + {isRoot() ? ( + + Home + + ) : ( + { + e.preventDefault() + window.history.back() + }} + > + Go Back + + )} +
+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/components/NotFound.tsx b/e2e/solid-start/basic-solid-query/src/components/NotFound.tsx new file mode 100644 index 0000000000..ca4c1960fa --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/components/NotFound.tsx @@ -0,0 +1,25 @@ +import { Link } from '@tanstack/solid-router' + +export function NotFound({ children }: { children?: any }) { + return ( +
+
+ {children ||

The page you are looking for does not exist.

} +
+

+ + + Start Over + +

+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routeTree.gen.ts b/e2e/solid-start/basic-solid-query/src/routeTree.gen.ts new file mode 100644 index 0000000000..55b94eb5b5 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routeTree.gen.ts @@ -0,0 +1,470 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as UsersImport } from './routes/users' +import { Route as RedirectImport } from './routes/redirect' +import { Route as PostsImport } from './routes/posts' +import { Route as DeferredImport } from './routes/deferred' +import { Route as LayoutImport } from './routes/_layout' +import { Route as IndexImport } from './routes/index' +import { Route as UsersIndexImport } from './routes/users.index' +import { Route as PostsIndexImport } from './routes/posts.index' +import { Route as UsersUserIdImport } from './routes/users.$userId' +import { Route as PostsPostIdImport } from './routes/posts.$postId' +import { Route as LayoutLayout2Import } from './routes/_layout/_layout-2' +import { Route as PostsPostIdDeepImport } from './routes/posts_.$postId.deep' +import { Route as LayoutLayout2LayoutBImport } from './routes/_layout/_layout-2/layout-b' +import { Route as LayoutLayout2LayoutAImport } from './routes/_layout/_layout-2/layout-a' + +// Create/Update Routes + +const UsersRoute = UsersImport.update({ + id: '/users', + path: '/users', + getParentRoute: () => rootRoute, +} as any) + +const RedirectRoute = RedirectImport.update({ + id: '/redirect', + path: '/redirect', + getParentRoute: () => rootRoute, +} as any) + +const PostsRoute = PostsImport.update({ + id: '/posts', + path: '/posts', + getParentRoute: () => rootRoute, +} as any) + +const DeferredRoute = DeferredImport.update({ + id: '/deferred', + path: '/deferred', + getParentRoute: () => rootRoute, +} as any) + +const LayoutRoute = LayoutImport.update({ + id: '/_layout', + getParentRoute: () => rootRoute, +} as any) + +const IndexRoute = IndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRoute, +} as any) + +const UsersIndexRoute = UsersIndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => UsersRoute, +} as any) + +const PostsIndexRoute = PostsIndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => PostsRoute, +} as any) + +const UsersUserIdRoute = UsersUserIdImport.update({ + id: '/$userId', + path: '/$userId', + getParentRoute: () => UsersRoute, +} as any) + +const PostsPostIdRoute = PostsPostIdImport.update({ + id: '/$postId', + path: '/$postId', + getParentRoute: () => PostsRoute, +} as any) + +const LayoutLayout2Route = LayoutLayout2Import.update({ + id: '/_layout-2', + getParentRoute: () => LayoutRoute, +} as any) + +const PostsPostIdDeepRoute = PostsPostIdDeepImport.update({ + id: '/posts_/$postId/deep', + path: '/posts/$postId/deep', + getParentRoute: () => rootRoute, +} as any) + +const LayoutLayout2LayoutBRoute = LayoutLayout2LayoutBImport.update({ + id: '/layout-b', + path: '/layout-b', + getParentRoute: () => LayoutLayout2Route, +} as any) + +const LayoutLayout2LayoutARoute = LayoutLayout2LayoutAImport.update({ + id: '/layout-a', + path: '/layout-a', + getParentRoute: () => LayoutLayout2Route, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/solid-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutImport + parentRoute: typeof rootRoute + } + '/deferred': { + id: '/deferred' + path: '/deferred' + fullPath: '/deferred' + preLoaderRoute: typeof DeferredImport + parentRoute: typeof rootRoute + } + '/posts': { + id: '/posts' + path: '/posts' + fullPath: '/posts' + preLoaderRoute: typeof PostsImport + parentRoute: typeof rootRoute + } + '/redirect': { + id: '/redirect' + path: '/redirect' + fullPath: '/redirect' + preLoaderRoute: typeof RedirectImport + parentRoute: typeof rootRoute + } + '/users': { + id: '/users' + path: '/users' + fullPath: '/users' + preLoaderRoute: typeof UsersImport + parentRoute: typeof rootRoute + } + '/_layout/_layout-2': { + id: '/_layout/_layout-2' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutLayout2Import + parentRoute: typeof LayoutImport + } + '/posts/$postId': { + id: '/posts/$postId' + path: '/$postId' + fullPath: '/posts/$postId' + preLoaderRoute: typeof PostsPostIdImport + parentRoute: typeof PostsImport + } + '/users/$userId': { + id: '/users/$userId' + path: '/$userId' + fullPath: '/users/$userId' + preLoaderRoute: typeof UsersUserIdImport + parentRoute: typeof UsersImport + } + '/posts/': { + id: '/posts/' + path: '/' + fullPath: '/posts/' + preLoaderRoute: typeof PostsIndexImport + parentRoute: typeof PostsImport + } + '/users/': { + id: '/users/' + path: '/' + fullPath: '/users/' + preLoaderRoute: typeof UsersIndexImport + parentRoute: typeof UsersImport + } + '/_layout/_layout-2/layout-a': { + id: '/_layout/_layout-2/layout-a' + path: '/layout-a' + fullPath: '/layout-a' + preLoaderRoute: typeof LayoutLayout2LayoutAImport + parentRoute: typeof LayoutLayout2Import + } + '/_layout/_layout-2/layout-b': { + id: '/_layout/_layout-2/layout-b' + path: '/layout-b' + fullPath: '/layout-b' + preLoaderRoute: typeof LayoutLayout2LayoutBImport + parentRoute: typeof LayoutLayout2Import + } + '/posts_/$postId/deep': { + id: '/posts_/$postId/deep' + path: '/posts/$postId/deep' + fullPath: '/posts/$postId/deep' + preLoaderRoute: typeof PostsPostIdDeepImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +interface LayoutLayout2RouteChildren { + LayoutLayout2LayoutARoute: typeof LayoutLayout2LayoutARoute + LayoutLayout2LayoutBRoute: typeof LayoutLayout2LayoutBRoute +} + +const LayoutLayout2RouteChildren: LayoutLayout2RouteChildren = { + LayoutLayout2LayoutARoute: LayoutLayout2LayoutARoute, + LayoutLayout2LayoutBRoute: LayoutLayout2LayoutBRoute, +} + +const LayoutLayout2RouteWithChildren = LayoutLayout2Route._addFileChildren( + LayoutLayout2RouteChildren, +) + +interface LayoutRouteChildren { + LayoutLayout2Route: typeof LayoutLayout2RouteWithChildren +} + +const LayoutRouteChildren: LayoutRouteChildren = { + LayoutLayout2Route: LayoutLayout2RouteWithChildren, +} + +const LayoutRouteWithChildren = + LayoutRoute._addFileChildren(LayoutRouteChildren) + +interface PostsRouteChildren { + PostsPostIdRoute: typeof PostsPostIdRoute + PostsIndexRoute: typeof PostsIndexRoute +} + +const PostsRouteChildren: PostsRouteChildren = { + PostsPostIdRoute: PostsPostIdRoute, + PostsIndexRoute: PostsIndexRoute, +} + +const PostsRouteWithChildren = PostsRoute._addFileChildren(PostsRouteChildren) + +interface UsersRouteChildren { + UsersUserIdRoute: typeof UsersUserIdRoute + UsersIndexRoute: typeof UsersIndexRoute +} + +const UsersRouteChildren: UsersRouteChildren = { + UsersUserIdRoute: UsersUserIdRoute, + UsersIndexRoute: UsersIndexRoute, +} + +const UsersRouteWithChildren = UsersRoute._addFileChildren(UsersRouteChildren) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute + '': typeof LayoutLayout2RouteWithChildren + '/deferred': typeof DeferredRoute + '/redirect': typeof RedirectRoute + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts': typeof PostsIndexRoute + '/users': typeof UsersIndexRoute + '/layout-a': typeof LayoutLayout2LayoutARoute + '/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute + '/_layout': typeof LayoutRouteWithChildren + '/deferred': typeof DeferredRoute + '/posts': typeof PostsRouteWithChildren + '/redirect': typeof RedirectRoute + '/users': typeof UsersRouteWithChildren + '/_layout/_layout-2': typeof LayoutLayout2RouteWithChildren + '/posts/$postId': typeof PostsPostIdRoute + '/users/$userId': typeof UsersUserIdRoute + '/posts/': typeof PostsIndexRoute + '/users/': typeof UsersIndexRoute + '/_layout/_layout-2/layout-a': typeof LayoutLayout2LayoutARoute + '/_layout/_layout-2/layout-b': typeof LayoutLayout2LayoutBRoute + '/posts_/$postId/deep': typeof PostsPostIdDeepRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: + | '/' + | '' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + fileRoutesByTo: FileRoutesByTo + to: + | '/' + | '' + | '/deferred' + | '/redirect' + | '/posts/$postId' + | '/users/$userId' + | '/posts' + | '/users' + | '/layout-a' + | '/layout-b' + | '/posts/$postId/deep' + id: + | '__root__' + | '/' + | '/_layout' + | '/deferred' + | '/posts' + | '/redirect' + | '/users' + | '/_layout/_layout-2' + | '/posts/$postId' + | '/users/$userId' + | '/posts/' + | '/users/' + | '/_layout/_layout-2/layout-a' + | '/_layout/_layout-2/layout-b' + | '/posts_/$postId/deep' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute + LayoutRoute: typeof LayoutRouteWithChildren + DeferredRoute: typeof DeferredRoute + PostsRoute: typeof PostsRouteWithChildren + RedirectRoute: typeof RedirectRoute + UsersRoute: typeof UsersRouteWithChildren + PostsPostIdDeepRoute: typeof PostsPostIdDeepRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, + LayoutRoute: LayoutRouteWithChildren, + DeferredRoute: DeferredRoute, + PostsRoute: PostsRouteWithChildren, + RedirectRoute: RedirectRoute, + UsersRoute: UsersRouteWithChildren, + PostsPostIdDeepRoute: PostsPostIdDeepRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/", + "/_layout", + "/deferred", + "/posts", + "/redirect", + "/users", + "/posts_/$postId/deep" + ] + }, + "/": { + "filePath": "index.tsx" + }, + "/_layout": { + "filePath": "_layout.tsx", + "children": [ + "/_layout/_layout-2" + ] + }, + "/deferred": { + "filePath": "deferred.tsx" + }, + "/posts": { + "filePath": "posts.tsx", + "children": [ + "/posts/$postId", + "/posts/" + ] + }, + "/redirect": { + "filePath": "redirect.tsx" + }, + "/users": { + "filePath": "users.tsx", + "children": [ + "/users/$userId", + "/users/" + ] + }, + "/_layout/_layout-2": { + "filePath": "_layout/_layout-2.tsx", + "parent": "/_layout", + "children": [ + "/_layout/_layout-2/layout-a", + "/_layout/_layout-2/layout-b" + ] + }, + "/posts/$postId": { + "filePath": "posts.$postId.tsx", + "parent": "/posts" + }, + "/users/$userId": { + "filePath": "users.$userId.tsx", + "parent": "/users" + }, + "/posts/": { + "filePath": "posts.index.tsx", + "parent": "/posts" + }, + "/users/": { + "filePath": "users.index.tsx", + "parent": "/users" + }, + "/_layout/_layout-2/layout-a": { + "filePath": "_layout/_layout-2/layout-a.tsx", + "parent": "/_layout/_layout-2" + }, + "/_layout/_layout-2/layout-b": { + "filePath": "_layout/_layout-2/layout-b.tsx", + "parent": "/_layout/_layout-2" + }, + "/posts_/$postId/deep": { + "filePath": "posts_.$postId.deep.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/e2e/solid-start/basic-solid-query/src/router.tsx b/e2e/solid-start/basic-solid-query/src/router.tsx new file mode 100644 index 0000000000..684b6a60b0 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/router.tsx @@ -0,0 +1,32 @@ +import { QueryClient } from '@tanstack/solid-query' +import { createRouter as createTanStackRouter } from '@tanstack/solid-router' +import { routerWithQueryClient } from '@tanstack/solid-router-with-query' +import { routeTree } from './routeTree.gen' +import { DefaultCatchBoundary } from './components/DefaultCatchBoundary' +import { NotFound } from './components/NotFound' + +// NOTE: Most of the integration code found here is experimental and will +// definitely end up in a more streamlined API in the future. This is just +// to show what's possible with the current APIs. + +export function createRouter() { + const queryClient = new QueryClient() + + return routerWithQueryClient( + createTanStackRouter({ + routeTree, + context: { queryClient }, + scrollRestoration: true, + defaultPreload: 'intent', + defaultErrorComponent: DefaultCatchBoundary, + defaultNotFoundComponent: () => , + }), + queryClient, + ) +} + +declare module '@tanstack/solid-router' { + interface Register { + router: ReturnType + } +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/__root.tsx b/e2e/solid-start/basic-solid-query/src/routes/__root.tsx new file mode 100644 index 0000000000..857ecea572 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/__root.tsx @@ -0,0 +1,141 @@ +import { + HeadContent, + Link, + Outlet, + Scripts, + createRootRouteWithContext, +} from '@tanstack/solid-router' +import { SolidQueryDevtools } from '@tanstack/solid-query-devtools' +import { TanStackRouterDevtoolsInProd } from '@tanstack/solid-router-devtools' +import * as React from 'react' +import type { QueryClient } from '@tanstack/solid-query' +import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary' +import { NotFound } from '~/components/NotFound' +import appCss from '~/styles/app.css?url' +import { seo } from '~/utils/seo' +import * as Solid from 'solid-js' + +export const Route = createRootRouteWithContext<{ + queryClient: QueryClient +}>()({ + head: () => ({ + meta: [ + { + charset: 'utf-8', + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1', + }, + ...seo({ + title: + 'TanStack Start | Type-Safe, Client-First, Full-Stack React Framework', + description: `TanStack Start is a type-safe, client-first, full-stack React framework. `, + }), + ], + links: [ + { rel: 'stylesheet', href: appCss }, + { + rel: 'apple-touch-icon', + sizes: '180x180', + href: '/apple-touch-icon.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + href: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + href: '/favicon-16x16.png', + }, + { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, + { rel: 'icon', href: '/favicon.ico' }, + ], + }), + errorComponent: (props) => { + return ( + + + + ) + }, + notFoundComponent: () => , + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + ) +} + +function RootDocument({ children }: { children: Solid.JSX.Element }) { + return ( + <> + +
+ + Home + {' '} + + Posts + {' '} + + Users + {' '} + + Layout + {' '} + + Deferred + {' '} + + This Route Does Not Exist + +
+
+ {children} + + + + + ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/_layout.tsx b/e2e/solid-start/basic-solid-query/src/routes/_layout.tsx new file mode 100644 index 0000000000..6cda4a6954 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/_layout.tsx @@ -0,0 +1,16 @@ +import { Outlet, createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_layout')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a layout
+
+ +
+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2.tsx b/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2.tsx new file mode 100644 index 0000000000..a0c65e6fe7 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2.tsx @@ -0,0 +1,34 @@ +import { Link, Outlet, createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_layout/_layout-2')({ + component: LayoutComponent, +}) + +function LayoutComponent() { + return ( +
+
I'm a nested layout
+
+ + Layout A + + + Layout B + +
+
+ +
+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-a.tsx b/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-a.tsx new file mode 100644 index 0000000000..139c891946 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-a.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-a')({ + component: LayoutAComponent, +}) + +function LayoutAComponent() { + return
I'm A!
+} diff --git a/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-b.tsx b/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-b.tsx new file mode 100644 index 0000000000..c9b5d7fffd --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/_layout/_layout-2/layout-b.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/_layout/_layout-2/layout-b')({ + component: LayoutBComponent, +}) + +function LayoutBComponent() { + return
I'm B!
+} diff --git a/e2e/solid-start/basic-solid-query/src/routes/api.users.ts b/e2e/solid-start/basic-solid-query/src/routes/api.users.ts new file mode 100644 index 0000000000..f37bf0db1b --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/api.users.ts @@ -0,0 +1,17 @@ +import { json } from '@tanstack/solid-start' +import { createAPIFileRoute } from '@tanstack/solid-start/api' +import axios from 'redaxios' +import type { User } from '../utils/users' + +export const APIRoute = createAPIFileRoute('/api/users')({ + GET: async ({ request }) => { + console.info('Fetching users... @', request.url) + const res = await axios.get>( + 'https://jsonplaceholder.typicode.com/users', + ) + + const list = res.data.slice(0, 10) + + return json(list.map((u) => ({ id: u.id, name: u.name, email: u.email }))) + }, +}) diff --git a/e2e/solid-start/basic-solid-query/src/routes/api/users.$id.ts b/e2e/solid-start/basic-solid-query/src/routes/api/users.$id.ts new file mode 100644 index 0000000000..b1786f6a30 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/api/users.$id.ts @@ -0,0 +1,24 @@ +import { json } from '@tanstack/solid-start' +import { createAPIFileRoute } from '@tanstack/solid-start/api' +import axios from 'redaxios' +import type { User } from '../../utils/users' + +export const APIRoute = createAPIFileRoute('/api/users/$id')({ + GET: async ({ request, params }) => { + console.info(`Fetching users by id=${params.id}... @`, request.url) + try { + const res = await axios.get( + 'https://jsonplaceholder.typicode.com/users/' + params.id, + ) + + return json({ + id: res.data.id, + name: res.data.name, + email: res.data.email, + }) + } catch (e) { + console.error(e) + return json({ error: 'User not found' }, { status: 404 }) + } + }, +}) diff --git a/e2e/solid-start/basic-solid-query/src/routes/deferred.tsx b/e2e/solid-start/basic-solid-query/src/routes/deferred.tsx new file mode 100644 index 0000000000..59723bf583 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/deferred.tsx @@ -0,0 +1,53 @@ +import { queryOptions, createQuery } from '@tanstack/solid-query' +import { createFileRoute } from '@tanstack/solid-router' +import { Suspense, createSignal } from 'solid-js' + +const deferredQueryOptions = () => + queryOptions({ + queryKey: ['deferred'], + queryFn: async () => { + await new Promise((r) => setTimeout(r, 3000)) + return { + message: `Hello deferred from the server!`, + status: 'success', + time: new Date(), + } + }, + }) + +export const Route = createFileRoute('/deferred')({ + loader: ({ context }) => { + // Kick off loading as early as possible! + context.queryClient.prefetchQuery(deferredQueryOptions()) + }, + component: Deferred, +}) + +function Deferred() { + const [count, setCount] = createSignal(0) + + return ( +
+ + + +
Count: {count()}
+
+ +
+
+ ) +} + +function DeferredQuery() { + const deferredQuery = createQuery(()=>deferredQueryOptions()) + + return ( +
+

Deferred Query

+
Status: {deferredQuery.data?.status}
+
Message: {deferredQuery.data?.message}
+
Time: {deferredQuery.data?.time.toISOString()}
+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/index.tsx b/e2e/solid-start/basic-solid-query/src/routes/index.tsx new file mode 100644 index 0000000000..a128aeca0e --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/index.tsx @@ -0,0 +1,13 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Welcome Home!!!

+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx b/e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx new file mode 100644 index 0000000000..0bf3f34060 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx @@ -0,0 +1,52 @@ +import { ErrorComponent, Link, createFileRoute } from '@tanstack/solid-router' +import { createQuery } from '@tanstack/solid-query' +import type { ErrorComponentProps } from '@tanstack/solid-router' + +import { postQueryOptions } from '~/utils/posts' +import { NotFound } from '~/components/NotFound' + +export const Route = createFileRoute('/posts/$postId')({ + loader: async ({ params: { postId }, context }) => { + const data = await context.queryClient.ensureQueryData( + postQueryOptions(postId), + ) + + return { + title: data.title, + } + }, + head: ({ loaderData }) => ({ + meta: loaderData ? [{ title: loaderData.title }] : undefined, + }), + errorComponent: PostErrorComponent, + notFoundComponent: () => { + return Post not found + }, + component: PostComponent, +}) + +export function PostErrorComponent({ error }: ErrorComponentProps) { + return +} + +function PostComponent() { + const params = Route.useParams() + const postQuery = createQuery(()=>postQueryOptions(params().postId)) + + return ( +
+

{postQuery.data?.title}

+
{postQuery.data?.body}
+ + Deep View + +
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/posts.index.tsx b/e2e/solid-start/basic-solid-query/src/routes/posts.index.tsx new file mode 100644 index 0000000000..33d0386c19 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/posts.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/posts/')({ + component: PostsIndexComponent, +}) + +function PostsIndexComponent() { + return
Select a post.
+} diff --git a/e2e/solid-start/basic-solid-query/src/routes/posts.tsx b/e2e/solid-start/basic-solid-query/src/routes/posts.tsx new file mode 100644 index 0000000000..e69a2b77f3 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/posts.tsx @@ -0,0 +1,44 @@ +import { createQuery } from '@tanstack/solid-query' +import { Link, Outlet, createFileRoute } from '@tanstack/solid-router' + +import { postsQueryOptions } from '~/utils/posts' + +export const Route = createFileRoute('/posts')({ + loader: async ({ context }) => { + await context.queryClient.ensureQueryData(postsQueryOptions()) + }, + head: () => ({ meta: [{ title: 'Posts' }] }), + component: PostsComponent, +}) + +function PostsComponent() { + const postsQuery = createQuery(()=>postsQueryOptions()) + + return ( +
+
    + {[ + ...postsQuery.data!, + { id: 'i-do-not-exist', title: 'Non-existent Post' }, + ].map((post) => { + return ( +
  • + +
    {post.title.substring(0, 20)}
    + +
  • + ) + })} +
+
+ +
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx b/e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx new file mode 100644 index 0000000000..d34dfe2ff8 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx @@ -0,0 +1,39 @@ +import { Link, createFileRoute } from '@tanstack/solid-router' +import { createQuery } from '@tanstack/solid-query' +import { postQueryOptions } from '../utils/posts' +import { PostErrorComponent } from './posts.$postId' + +export const Route = createFileRoute('/posts_/$postId/deep')({ + loader: async ({ params: { postId }, context }) => { + const data = await context.queryClient.ensureQueryData( + postQueryOptions(postId), + ) + + return { + title: data.title, + } + }, + head: ({ loaderData }) => ({ + meta: loaderData ? [{ title: loaderData.title }] : undefined, + }), + errorComponent: PostErrorComponent, + component: PostDeepComponent, +}) + +function PostDeepComponent() { + const params = Route.useParams() + const postQuery = createQuery(()=>postQueryOptions(params().postId)) + + return ( +
+ + ← All Posts + +

{postQuery.data?.title}

+
{postQuery.data?.body}
+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/redirect.tsx b/e2e/solid-start/basic-solid-query/src/routes/redirect.tsx new file mode 100644 index 0000000000..ca017f0635 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/redirect.tsx @@ -0,0 +1,9 @@ +import { createFileRoute, redirect } from '@tanstack/solid-router' + +export const Route = createFileRoute('/redirect')({ + beforeLoad: async () => { + throw redirect({ + to: '/posts', + }) + }, +}) diff --git a/e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx b/e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx new file mode 100644 index 0000000000..db29691e33 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx @@ -0,0 +1,34 @@ +import { createQuery } from '@tanstack/solid-query' +import { ErrorComponent, createFileRoute } from '@tanstack/solid-router' +import type { ErrorComponentProps } from '@tanstack/solid-router' + +import { NotFound } from '~/components/NotFound' +import { userQueryOptions } from '~/utils/users' + +export const Route = createFileRoute('/users/$userId')({ + loader: async ({ context, params: { userId } }) => { + await context.queryClient.ensureQueryData(userQueryOptions(userId)) + }, + errorComponent: UserErrorComponent, + component: UserComponent, + notFoundComponent: () => { + return User not found + }, +}) + +export function UserErrorComponent({ error }: ErrorComponentProps) { + return +} + +function UserComponent() { + const params = Route.useParams() + const userQuery = createQuery(()=>userQueryOptions(params().userId)) + const user = userQuery.data + + return ( +
+

{user?.name}

+
{user?.email}
+
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/routes/users.index.tsx b/e2e/solid-start/basic-solid-query/src/routes/users.index.tsx new file mode 100644 index 0000000000..bbc96801a9 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/users.index.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/solid-router' + +export const Route = createFileRoute('/users/')({ + component: UsersIndexComponent, +}) + +function UsersIndexComponent() { + return
Select a user.
+} diff --git a/e2e/solid-start/basic-solid-query/src/routes/users.tsx b/e2e/solid-start/basic-solid-query/src/routes/users.tsx new file mode 100644 index 0000000000..4dc8d8dfeb --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/routes/users.tsx @@ -0,0 +1,43 @@ +import { createQuery } from '@tanstack/solid-query' +import { Link, Outlet, createFileRoute } from '@tanstack/solid-router' + +import { usersQueryOptions } from '~/utils/users' + +export const Route = createFileRoute('/users')({ + loader: async ({ context }) => { + await context.queryClient.ensureQueryData(usersQueryOptions()) + }, + component: UsersComponent, +}) + +function UsersComponent() { + const usersQuery = createQuery(()=>usersQueryOptions()) + + return ( +
+
    + {[ + ...usersQuery.data!, + { id: 'i-do-not-exist', name: 'Non-existent User', email: '' }, + ].map((user) => { + return ( +
  • + +
    {user.name}
    + +
  • + ) + })} +
+
+ +
+ ) +} diff --git a/e2e/solid-start/basic-solid-query/src/ssr.tsx b/e2e/solid-start/basic-solid-query/src/ssr.tsx new file mode 100644 index 0000000000..6d10bea05f --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/ssr.tsx @@ -0,0 +1,12 @@ +import { + createStartHandler, + defaultStreamHandler, +} from '@tanstack/solid-start/server' +import { getRouterManifest } from '@tanstack/solid-start/router-manifest' + +import { createRouter } from './router' + +export default createStartHandler({ + createRouter, + getRouterManifest, +})(defaultStreamHandler) diff --git a/e2e/solid-start/basic-solid-query/src/styles/app.css b/e2e/solid-start/basic-solid-query/src/styles/app.css new file mode 100644 index 0000000000..c53c870665 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/styles/app.css @@ -0,0 +1,22 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + html { + color-scheme: light dark; + } + + * { + @apply border-gray-200 dark:border-gray-800; + } + + html, + body { + @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; + } + + .using-mouse * { + outline: none !important; + } +} diff --git a/e2e/solid-start/basic-solid-query/src/utils/posts.tsx b/e2e/solid-start/basic-solid-query/src/utils/posts.tsx new file mode 100644 index 0000000000..d3ab71d525 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/utils/posts.tsx @@ -0,0 +1,49 @@ +import { queryOptions } from '@tanstack/solid-query' +import { notFound } from '@tanstack/solid-router' +import { createServerFn } from '@tanstack/solid-start' +import axios from 'redaxios' + +export type PostType = { + id: string + title: string + body: string +} + +export const fetchPosts = createServerFn({ method: 'GET' }).handler( + async () => { + console.info('Fetching posts...') + return axios + .get>('https://jsonplaceholder.typicode.com/posts') + .then((r) => r.data.slice(0, 10)) + }, +) + +export const postsQueryOptions = () => + queryOptions({ + queryKey: ['posts'], + queryFn: () => fetchPosts(), + }) + +export const fetchPost = createServerFn({ method: 'GET' }) + .validator((postId: string) => postId) + .handler(async ({ data: postId }) => { + console.info(`Fetching post with id ${postId}...`) + const post = await axios + .get(`https://jsonplaceholder.typicode.com/posts/${postId}`) + .then((r) => r.data) + .catch((err) => { + console.error(err) + if (err.status === 404) { + throw notFound() + } + throw err + }) + + return post + }) + +export const postQueryOptions = (postId: string) => + queryOptions({ + queryKey: ['post', postId], + queryFn: () => fetchPost({ data: postId }), + }) diff --git a/e2e/solid-start/basic-solid-query/src/utils/seo.ts b/e2e/solid-start/basic-solid-query/src/utils/seo.ts new file mode 100644 index 0000000000..d18ad84b74 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/utils/seo.ts @@ -0,0 +1,33 @@ +export const seo = ({ + title, + description, + keywords, + image, +}: { + title: string + description?: string + image?: string + keywords?: string +}) => { + const tags = [ + { title }, + { name: 'description', content: description }, + { name: 'keywords', content: keywords }, + { name: 'twitter:title', content: title }, + { name: 'twitter:description', content: description }, + { name: 'twitter:creator', content: '@tannerlinsley' }, + { name: 'twitter:site', content: '@tannerlinsley' }, + { name: 'og:type', content: 'website' }, + { name: 'og:title', content: title }, + { name: 'og:description', content: description }, + ...(image + ? [ + { name: 'twitter:image', content: image }, + { name: 'twitter:card', content: 'summary_large_image' }, + { name: 'og:image', content: image }, + ] + : []), + ] + + return tags +} diff --git a/e2e/solid-start/basic-solid-query/src/utils/users.tsx b/e2e/solid-start/basic-solid-query/src/utils/users.tsx new file mode 100644 index 0000000000..52d659b001 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/src/utils/users.tsx @@ -0,0 +1,37 @@ +import { queryOptions } from '@tanstack/solid-query' +import axios from 'redaxios' + +export type User = { + id: number + name: string + email: string +} + +const PORT = + import.meta.env.VITE_SERVER_PORT || process.env.VITE_SERVER_PORT || 3000 + +export const DEPLOY_URL = `http://localhost:${PORT}` + +export const usersQueryOptions = () => + queryOptions({ + queryKey: ['users'], + queryFn: () => + axios + .get>(DEPLOY_URL + '/api/users') + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch users') + }), + }) + +export const userQueryOptions = (id: string) => + queryOptions({ + queryKey: ['users', id], + queryFn: () => + axios + .get(DEPLOY_URL + '/api/users/' + id) + .then((r) => r.data) + .catch(() => { + throw new Error('Failed to fetch user') + }), + }) diff --git a/e2e/solid-start/basic-solid-query/tailwind.config.mjs b/e2e/solid-start/basic-solid-query/tailwind.config.mjs new file mode 100644 index 0000000000..e49f4eb776 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/tailwind.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{js,jsx,ts,tsx}'], +} diff --git a/e2e/solid-start/basic-solid-query/tests/app.spec.ts b/e2e/solid-start/basic-solid-query/tests/app.spec.ts new file mode 100644 index 0000000000..af128bfcb4 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/tests/app.spec.ts @@ -0,0 +1,36 @@ +import { expect, test } from '@playwright/test' + +test('Navigating to post', async ({ page }) => { + await page.goto('/') + + await page.getByRole('link', { name: 'Posts' }).click() + await page.getByRole('link', { name: 'sunt aut facere repe' }).click() + await page.getByRole('link', { name: 'Deep View' }).click() + await expect(page.getByRole('heading')).toContainText('sunt aut facere') +}) + +test('Navigating to user', async ({ page }) => { + await page.goto('/') + + await page.getByRole('link', { name: 'Users' }).click() + await page.getByRole('link', { name: 'Leanne Graham' }).click() + await expect(page.getByRole('heading')).toContainText('Leanne Graham') +}) + +test('Navigating nested layouts', async ({ page }) => { + await page.goto('/') + + await page.getByRole('link', { name: 'Layout', exact: true }).click() + await page.getByRole('link', { name: 'Layout A' }).click() + await expect(page.locator('body')).toContainText("I'm A!") + await page.getByRole('link', { name: 'Layout B' }).click() + await expect(page.locator('body')).toContainText("I'm B!") +}) + +test('Navigating to a not-found route', async ({ page }) => { + await page.goto('/') + + await page.getByRole('link', { name: 'This Route Does Not Exist' }).click() + await page.getByRole('link', { name: 'Start Over' }).click() + await expect(page.getByRole('heading')).toContainText('Welcome Home!') +}) diff --git a/e2e/solid-start/basic-solid-query/tsconfig.json b/e2e/solid-start/basic-solid-query/tsconfig.json new file mode 100644 index 0000000000..a40235b863 --- /dev/null +++ b/e2e/solid-start/basic-solid-query/tsconfig.json @@ -0,0 +1,23 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./src/*"] + }, + "noEmit": true + } +} diff --git a/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx index e15888ddb4..32aed20e67 100644 --- a/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx +++ b/examples/solid/start-basic-solid-query/src/components/DefaultCatchBoundary.tsx @@ -28,7 +28,7 @@ export function DefaultCatchBoundary({ error }: ErrorComponentProps) { > Try Again - {isRoot ? ( + {isRoot() ? ( - - - ) + return } function RootDocument({ children }: { children: Solid.JSX.Element }) { return ( - - - - - -
- - Home - {' '} - - Posts - {' '} - - Users - {' '} - - Pathless Layout - {' '} - - Deferred - {' '} - - This Route Does Not Exist - -
-
- {children} - - - - - + <> + +
+ + Home + {' '} + + Posts + {' '} + + Users + {' '} + + Pathless Layout + {' '} + + Deferred + {' '} + + This Route Does Not Exist + +
+
+ {children} + + + + ) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 152e41d57e..a7870eec6e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2083,6 +2083,67 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.8.2)(vite@6.1.2(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + e2e/solid-start/basic-solid-query: + dependencies: + '@tanstack/solid-query': + specifier: ^5.66.0 + version: 5.66.0(solid-js@1.9.5) + '@tanstack/solid-query-devtools': + specifier: ^5.66.0 + version: 5.66.0(@tanstack/solid-query@5.66.0(solid-js@1.9.5))(solid-js@1.9.5) + '@tanstack/solid-router': + specifier: workspace:* + version: link:../../../packages/solid-router + '@tanstack/solid-router-devtools': + specifier: workspace:^ + version: link:../../../packages/solid-router-devtools + '@tanstack/solid-router-with-query': + specifier: workspace:* + version: link:../../../packages/solid-router-with-query + '@tanstack/solid-start': + specifier: workspace:* + version: link:../../../packages/solid-start + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + solid-js: + specifier: ^1.9.5 + version: 1.9.5 + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + vinxi: + specifier: 0.5.3 + version: 0.5.3(@types/node@22.13.4)(db0@0.2.3)(ioredis@5.4.2)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + devDependencies: + '@playwright/test': + specifier: ^1.50.1 + version: 1.50.1 + '@tanstack/router-e2e-utils': + specifier: workspace:^ + version: link:../../e2e-utils + '@types/node': + specifier: ^22.10.2 + version: 22.13.4 + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@6.1.2(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.5.3) + postcss: + specifier: ^8.5.1 + version: 8.5.3 + tailwindcss: + specifier: ^3.4.17 + version: 3.4.17 + typescript: + specifier: ^5.7.2 + version: 5.8.2 + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4(typescript@5.8.2)(vite@6.1.2(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + e2e/solid-start/basic-tsr-config: dependencies: '@tanstack/solid-router': From 4965219369739958fa3bce74d636c04da730a0b8 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 00:53:24 +0000 Subject: [PATCH 5/5] ci: apply automated fixes --- .../basic-solid-query/src/client.tsx | 2 +- .../basic-solid-query/src/routes/deferred.tsx | 2 +- .../src/routes/posts.$postId.tsx | 2 +- .../basic-solid-query/src/routes/posts.tsx | 2 +- .../src/routes/posts_.$postId.deep.tsx | 7 ++--- .../src/routes/users.$userId.tsx | 2 +- .../basic-solid-query/src/routes/users.tsx | 2 +- .../src/routes/deferred.tsx | 2 +- .../src/routes/posts.$postId.tsx | 2 +- .../src/routes/posts.route.tsx | 2 +- .../src/routes/posts_.$postId.deep.tsx | 5 +--- .../src/routes/users.$userId.tsx | 2 +- .../src/routes/users.route.tsx | 2 +- .../solid-router-with-query/eslint.config.js | 6 ++--- .../solid-router-with-query/src/index.tsx | 26 ++++++++++++------- 15 files changed, 33 insertions(+), 33 deletions(-) diff --git a/e2e/solid-start/basic-solid-query/src/client.tsx b/e2e/solid-start/basic-solid-query/src/client.tsx index 3d080681c8..071dbdf4ad 100644 --- a/e2e/solid-start/basic-solid-query/src/client.tsx +++ b/e2e/solid-start/basic-solid-query/src/client.tsx @@ -5,4 +5,4 @@ import { createRouter } from './router' const router = createRouter() -hydrate(()=>, document!) +hydrate(() => , document!) diff --git a/e2e/solid-start/basic-solid-query/src/routes/deferred.tsx b/e2e/solid-start/basic-solid-query/src/routes/deferred.tsx index 59723bf583..7ce060840f 100644 --- a/e2e/solid-start/basic-solid-query/src/routes/deferred.tsx +++ b/e2e/solid-start/basic-solid-query/src/routes/deferred.tsx @@ -40,7 +40,7 @@ function Deferred() { } function DeferredQuery() { - const deferredQuery = createQuery(()=>deferredQueryOptions()) + const deferredQuery = createQuery(() => deferredQueryOptions()) return (
diff --git a/e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx b/e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx index 0bf3f34060..331775f0d4 100644 --- a/e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx +++ b/e2e/solid-start/basic-solid-query/src/routes/posts.$postId.tsx @@ -31,7 +31,7 @@ export function PostErrorComponent({ error }: ErrorComponentProps) { function PostComponent() { const params = Route.useParams() - const postQuery = createQuery(()=>postQueryOptions(params().postId)) + const postQuery = createQuery(() => postQueryOptions(params().postId)) return (
diff --git a/e2e/solid-start/basic-solid-query/src/routes/posts.tsx b/e2e/solid-start/basic-solid-query/src/routes/posts.tsx index e69a2b77f3..3c61a1a929 100644 --- a/e2e/solid-start/basic-solid-query/src/routes/posts.tsx +++ b/e2e/solid-start/basic-solid-query/src/routes/posts.tsx @@ -12,7 +12,7 @@ export const Route = createFileRoute('/posts')({ }) function PostsComponent() { - const postsQuery = createQuery(()=>postsQueryOptions()) + const postsQuery = createQuery(() => postsQueryOptions()) return (
diff --git a/e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx b/e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx index d34dfe2ff8..0d84e1f2d7 100644 --- a/e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx +++ b/e2e/solid-start/basic-solid-query/src/routes/posts_.$postId.deep.tsx @@ -22,14 +22,11 @@ export const Route = createFileRoute('/posts_/$postId/deep')({ function PostDeepComponent() { const params = Route.useParams() - const postQuery = createQuery(()=>postQueryOptions(params().postId)) + const postQuery = createQuery(() => postQueryOptions(params().postId)) return (
- + ← All Posts

{postQuery.data?.title}

diff --git a/e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx b/e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx index db29691e33..fe9f58faf3 100644 --- a/e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx +++ b/e2e/solid-start/basic-solid-query/src/routes/users.$userId.tsx @@ -22,7 +22,7 @@ export function UserErrorComponent({ error }: ErrorComponentProps) { function UserComponent() { const params = Route.useParams() - const userQuery = createQuery(()=>userQueryOptions(params().userId)) + const userQuery = createQuery(() => userQueryOptions(params().userId)) const user = userQuery.data return ( diff --git a/e2e/solid-start/basic-solid-query/src/routes/users.tsx b/e2e/solid-start/basic-solid-query/src/routes/users.tsx index 4dc8d8dfeb..92f595b171 100644 --- a/e2e/solid-start/basic-solid-query/src/routes/users.tsx +++ b/e2e/solid-start/basic-solid-query/src/routes/users.tsx @@ -11,7 +11,7 @@ export const Route = createFileRoute('/users')({ }) function UsersComponent() { - const usersQuery = createQuery(()=>usersQueryOptions()) + const usersQuery = createQuery(() => usersQueryOptions()) return (
diff --git a/examples/solid/start-basic-solid-query/src/routes/deferred.tsx b/examples/solid/start-basic-solid-query/src/routes/deferred.tsx index 59723bf583..7ce060840f 100644 --- a/examples/solid/start-basic-solid-query/src/routes/deferred.tsx +++ b/examples/solid/start-basic-solid-query/src/routes/deferred.tsx @@ -40,7 +40,7 @@ function Deferred() { } function DeferredQuery() { - const deferredQuery = createQuery(()=>deferredQueryOptions()) + const deferredQuery = createQuery(() => deferredQueryOptions()) return (
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx index 057c23de92..a370d08090 100644 --- a/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx +++ b/examples/solid/start-basic-solid-query/src/routes/posts.$postId.tsx @@ -30,7 +30,7 @@ export function PostErrorComponent({ error }: ErrorComponentProps) { function PostComponent() { const params = Route.useParams() - const postQuery = createQuery(()=>postQueryOptions(params().postId)) + const postQuery = createQuery(() => postQueryOptions(params().postId)) return (
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx index 1dcd36d70e..b568cdd3d6 100644 --- a/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx +++ b/examples/solid/start-basic-solid-query/src/routes/posts.route.tsx @@ -13,7 +13,7 @@ export const Route = createFileRoute('/posts')({ }) function PostsComponent() { - const postsQuery = createQuery(()=>postsQueryOptions()) + const postsQuery = createQuery(() => postsQueryOptions()) return (
diff --git a/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx b/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx index 6fc5061d78..f5ae7ff840 100644 --- a/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx +++ b/examples/solid/start-basic-solid-query/src/routes/posts_.$postId.deep.tsx @@ -26,10 +26,7 @@ function PostDeepComponent() { return (
- + ← All Posts

{postQuery.data.title}

diff --git a/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx index 7318354acd..ad8a1a1209 100644 --- a/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx +++ b/examples/solid/start-basic-solid-query/src/routes/users.$userId.tsx @@ -21,7 +21,7 @@ export function UserErrorComponent({ error }: ErrorComponentProps) { function UserComponent() { const params = Route.useParams() - const userQuery = createQuery(()=>userQueryOptions(params().userId)) + const userQuery = createQuery(() => userQueryOptions(params().userId)) const user = userQuery.data return ( diff --git a/examples/solid/start-basic-solid-query/src/routes/users.route.tsx b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx index 10979073c7..fa2edb30a5 100644 --- a/examples/solid/start-basic-solid-query/src/routes/users.route.tsx +++ b/examples/solid/start-basic-solid-query/src/routes/users.route.tsx @@ -10,7 +10,7 @@ export const Route = createFileRoute('/users')({ }) function UsersComponent() { - const usersQuery = createQuery(()=>usersQueryOptions()) + const usersQuery = createQuery(() => usersQueryOptions()) return (
diff --git a/packages/solid-router-with-query/eslint.config.js b/packages/solid-router-with-query/eslint.config.js index 2f0e9b0660..bd7118fa1a 100644 --- a/packages/solid-router-with-query/eslint.config.js +++ b/packages/solid-router-with-query/eslint.config.js @@ -8,10 +8,8 @@ export default [ files: ['**/*.{ts,tsx}'], }, { - plugins: { - }, - rules: { - }, + plugins: {}, + rules: {}, }, { files: ['**/__tests__/**'], diff --git a/packages/solid-router-with-query/src/index.tsx b/packages/solid-router-with-query/src/index.tsx index 9c69c31a97..4601542ea1 100644 --- a/packages/solid-router-with-query/src/index.tsx +++ b/packages/solid-router-with-query/src/index.tsx @@ -5,7 +5,7 @@ import { hydrate, } from '@tanstack/solid-query' import { isRedirect } from '@tanstack/router-core' -import type * as Solid from 'solid-js'; +import type * as Solid from 'solid-js' import type { AnyRouter } from '@tanstack/solid-router' import type { CreateQueryOptions, @@ -16,9 +16,9 @@ import type { // Extended query options to include the properties used in this file interface ExtendedQueryOptions extends CreateQueryOptions { - queryKey: QueryKey; - queryKeyHashFn?: (queryKey: QueryKey) => string; - __skipInjection?: boolean; + queryKey: QueryKey + queryKeyHashFn?: (queryKey: QueryKey) => string + __skipInjection?: boolean } type AdditionalOptions = { @@ -56,7 +56,7 @@ export function routerWithQueryClient( // Call the original beforeQuery ;(ogClientOptions.queries as any)?._experimental_beforeQuery?.(options) - const extOptions = options as ExtendedQueryOptions; + const extOptions = options as ExtendedQueryOptions const hash = extOptions.queryKeyHashFn || hashKey // On the server, check if we've already seen the query before if (router.isServer) { @@ -92,7 +92,7 @@ export function routerWithQueryClient( ) => { // On the server (if we're not skipping injection) // send down the dehydrated query - const extOptions = options as ExtendedQueryOptions; + const extOptions = options as ExtendedQueryOptions const hash = extOptions.queryKeyHashFn || hashKey if ( router.isServer && @@ -184,18 +184,26 @@ export function routerWithQueryClient( }, // Wrap the app in a QueryClientProvider Wrap: ({ children }) => { - const OuterWrapper = additionalOpts?.WrapProvider; + const OuterWrapper = additionalOpts?.WrapProvider return ( <> {OuterWrapper ? ( - {ogOptions.Wrap ? {children} : children} + {ogOptions.Wrap ? ( + {children} + ) : ( + children + )} ) : ( - {ogOptions.Wrap ? {children} : children} + {ogOptions.Wrap ? ( + {children} + ) : ( + children + )} )}