@tanstack/solid-start-client 1.120.5 → 1.121.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -28
- package/dist/cjs/index.d.cts +2 -11
- package/dist/cjs/renderRSC.cjs.map +1 -1
- package/dist/cjs/useServerFn.cjs +2 -5
- package/dist/cjs/useServerFn.cjs.map +1 -1
- package/dist/esm/index.d.ts +2 -11
- package/dist/esm/renderRSC.js.map +1 -1
- package/dist/esm/useServerFn.js +2 -5
- package/dist/esm/useServerFn.js.map +1 -1
- package/package.json +4 -5
- package/src/index.tsx +33 -40
- package/src/renderRSC.tsx +1 -1
- package/src/useServerFn.ts +2 -6
- package/dist/cjs/routesManifest.d.cts +0 -0
- package/dist/esm/routesManifest.d.ts +0 -0
- package/src/routesManifest.ts +0 -0
package/README.md
CHANGED
|
@@ -1,33 +1,9 @@
|
|
|
1
|
-
> 🤫 we're cooking up something special!
|
|
2
|
-
|
|
3
1
|
<img src="https://static.scarf.sh/a.png?x-pxid=d988eb79-b0fc-4a2b-8514-6a1ab932d188" />
|
|
4
2
|
|
|
5
|
-
# TanStack Start
|
|
6
|
-
|
|
7
|
-

|
|
8
|
-
|
|
9
|
-
🤖 Type-safe router w/ built-in caching & URL state management for React!
|
|
3
|
+
# TanStack Solid Start - Client
|
|
10
4
|
|
|
11
|
-
|
|
12
|
-
<img alt="#TanStack" src="https://img.shields.io/twitter/url?color=%2308a0e9&label=%23TanStack&style=social&url=https%3A%2F%2Ftwitter.com%2Fintent%2Ftweet%3Fbutton_hashtag%3DTanStack">
|
|
13
|
-
</a><a href="https://discord.com/invite/WrRKjPJ" target="\_parent">
|
|
14
|
-
<img alt="" src="https://img.shields.io/badge/Discord-TanStack-%235865F2" />
|
|
15
|
-
</a><a href="https://npmjs.com/package/@tanstack/solid-router" target="\_parent">
|
|
16
|
-
<img alt="" src="https://img.shields.io/npm/dm/@tanstack/router.svg" />
|
|
17
|
-
</a><a href="https://bundlephobia.com/result?p=@tanstack/solid-router" target="\_parent">
|
|
18
|
-
<img alt="" src="https://badgen.net/bundlephobia/minzip/@tanstack/solid-router" />
|
|
19
|
-
</a><a href="#badge">
|
|
20
|
-
<img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg">
|
|
21
|
-
</a><a href="https://github.com/tanstack/router/discussions">
|
|
22
|
-
<img alt="Join the discussion on Github" src="https://img.shields.io/badge/Github%20Discussions%20%26%20Support-Chat%20now!-blue" />
|
|
23
|
-
</a><a href="https://bestofjs.org/projects/router"><img alt="Best of JS" src="https://img.shields.io/endpoint?url=https://bestofjs-serverless.now.sh/api/project-badge?fullName=tanstack%2Frouter%26since=daily" /></a><a href="https://github.com/tanstack/router" target="\_parent">
|
|
24
|
-
<img alt="" src="https://img.shields.io/github/stars/tanstack/router.svg?style=social&label=Star" />
|
|
25
|
-
</a><a href="https://twitter.com/tan_stack" target="\_parent">
|
|
26
|
-
<img alt="" src="https://img.shields.io/twitter/follow/tan_stack.svg?style=social&label=Follow @TanStack" />
|
|
27
|
-
</a><a href="https://twitter.com/tannerlinsley" target="\_parent">
|
|
28
|
-
<img alt="" src="https://img.shields.io/twitter/follow/tannerlinsley.svg?style=social&label=Follow @TannerLinsley" />
|
|
29
|
-
</a>
|
|
5
|
+
This package is not meant to be used directly. It is a dependency of [`@tanstack/solid-start`](https://www.npmjs.com/package/@tanstack/solid-start).
|
|
30
6
|
|
|
31
|
-
|
|
7
|
+
TanStack Solid Start is a fullstack-framework made for SSR, Streaming, Server Functions, API Routes, bundling and more powered by [TanStack Router](https://tanstack.com/router).
|
|
32
8
|
|
|
33
|
-
|
|
9
|
+
Head over to [tanstack.com/start](https://tanstack.com/start) for more information about getting started.
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
export { mergeHeaders } from '@tanstack/start-client-core';
|
|
2
|
-
export {
|
|
3
|
-
export { type DehydratedRouter, type ClientExtractedBaseEntry, type StartSsrGlobal, type ClientExtractedEntry, type SsrMatch, type ClientExtractedPromise, type ClientExtractedStream, type ResolvePromiseState, } from '@tanstack/start-client-core';
|
|
4
|
-
export { createIsomorphicFn, type IsomorphicFn, type ServerOnlyFn, type ClientOnlyFn, type IsomorphicFnBase, } from '@tanstack/start-client-core';
|
|
5
|
-
export { createServerFn } from '@tanstack/start-client-core';
|
|
6
|
-
export { type ServerFn as FetchFn, type ServerFnCtx as FetchFnCtx, type CompiledFetcherFnOptions, type CompiledFetcherFn, type Fetcher, type RscStream, type FetcherData, type FetcherBaseOptions, type ServerFn, type ServerFnCtx, type ServerFnResponseType, } from '@tanstack/start-client-core';
|
|
7
|
-
export { type JsonResponse } from '@tanstack/start-client-core';
|
|
8
|
-
export { createMiddleware, type IntersectAllValidatorInputs, type IntersectAllValidatorOutputs, type MiddlewareServerFn, type AnyMiddleware, type MiddlewareOptions, type MiddlewareWithTypes, type MiddlewareValidator, type MiddlewareServer, type MiddlewareAfterClient, type MiddlewareAfterMiddleware, type MiddlewareAfterServer, type Middleware, type MiddlewareClientFnOptions, type MiddlewareClientFnResult, type MiddlewareClientNextFn, type ClientResultWithContext, type AssignAllClientContextBeforeNext, type AssignAllMiddleware, type AssignAllServerContext, type MiddlewareAfterValidator, type MiddlewareClientFn, type MiddlewareServerFnResult, type MiddlewareClient, type MiddlewareServerFnOptions, type MiddlewareServerNextFn, type ServerResultWithContext, } from '@tanstack/start-client-core';
|
|
9
|
-
export { registerGlobalMiddleware, globalMiddleware, } from '@tanstack/start-client-core';
|
|
10
|
-
export { serverOnly, clientOnly } from '@tanstack/start-client-core';
|
|
11
|
-
export { json } from '@tanstack/start-client-core';
|
|
1
|
+
export { mergeHeaders, startSerializer, createIsomorphicFn, createServerFn, createMiddleware, registerGlobalMiddleware, globalMiddleware, serverOnly, clientOnly, json, } from '@tanstack/start-client-core';
|
|
2
|
+
export { type DehydratedRouter, type ClientExtractedBaseEntry, type StartSsrGlobal, type ClientExtractedEntry, type SsrMatch, type ClientExtractedPromise, type ClientExtractedStream, type ResolvePromiseState, type IsomorphicFn, type ServerOnlyFn, type ClientOnlyFn, type IsomorphicFnBase, type ServerFn as FetchFn, type ServerFnCtx as FetchFnCtx, type CompiledFetcherFnOptions, type CompiledFetcherFn, type Fetcher, type RscStream, type FetcherData, type FetcherBaseOptions, type ServerFn, type ServerFnCtx, type ServerFnResponseType, type JsonResponse, type IntersectAllValidatorInputs, type IntersectAllValidatorOutputs, type FunctionMiddlewareServerFn, type AnyFunctionMiddleware, type FunctionMiddlewareOptions, type FunctionMiddlewareWithTypes, type FunctionMiddlewareValidator, type FunctionMiddlewareServer, type FunctionMiddlewareAfterClient, type FunctionMiddlewareAfterServer, type FunctionMiddleware, type FunctionMiddlewareClientFnOptions, type FunctionMiddlewareClientFnResult, type FunctionMiddlewareClientNextFn, type FunctionClientResultWithContext, type AssignAllClientContextBeforeNext, type AssignAllMiddleware, type AssignAllServerContext, type FunctionMiddlewareAfterValidator, type FunctionMiddlewareClientFn, type FunctionMiddlewareServerFnResult, type FunctionMiddlewareClient, type FunctionMiddlewareServerFnOptions, type FunctionMiddlewareServerNextFn, type FunctionServerResultWithContext, } from '@tanstack/start-client-core';
|
|
12
3
|
export { Meta } from './Meta.cjs';
|
|
13
4
|
export { Scripts } from './Scripts.cjs';
|
|
14
5
|
export { StartClient } from './StartClient.cjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderRSC.cjs","sources":["../../src/renderRSC.tsx"],"sourcesContent":["// TODO: RSCs\n// // @ts-expect-error\n// import * as reactDom from '
|
|
1
|
+
{"version":3,"file":"renderRSC.cjs","sources":["../../src/renderRSC.tsx"],"sourcesContent":["// TODO: RSCs\n// // @ts-expect-error\n// import * as reactDom from 'react-server-dom/client'\n// import { isValidElement } from 'solid-js'\nimport invariant from 'tiny-invariant'\nimport type * as Solid from 'solid-js'\n\nexport function renderRsc(input: any): Solid.JSX.Element {\n // TODO: isValidElement\n // if (isValidElement(input)) {\n // return input\n // }\n\n if (typeof input === 'object' && !input.state) {\n input.state = {\n status: 'pending',\n promise: Promise.resolve()\n .then(() => {\n let element\n\n // We're in node\n // TODO: RSCs\n // if (reactDom.createFromNodeStream) {\n // const stream = await import('node:stream')\n\n // let body: any = input\n\n // // Unwrap the response\n // if (input instanceof Response) {\n // body = input.body\n // }\n\n // // Convert ReadableStream to NodeJS stream.Readable\n // if (body instanceof ReadableStream) {\n // body = stream.Readable.fromWeb(body as any)\n // }\n\n // if (stream.Readable.isReadable(body)) {\n // // body = copyStreamToRaw(body)\n // } else if (input.text) {\n // // create a readable stream by awaiting the text method\n // body = new stream.Readable({\n // async read() {\n // input.text().then((value: any) => {\n // this.push(value)\n // this.push(null)\n // })\n // },\n // })\n // } else {\n // console.error('input', input)\n // throw new Error('Unexpected rsc input type 👆')\n // }\n\n // element = await reactDom.createFromNodeStream(body)\n // } else {\n // // We're in the browser\n // if (input.body instanceof ReadableStream) {\n // input = input.body\n // }\n\n // if (input instanceof ReadableStream) {\n // element = await reactDom.createFromReadableStream(input)\n // }\n\n // if (input instanceof Response) {\n // // copy to the response body to cache the raw data\n // element = await reactDom.createFromFetch(input)\n // }\n // }\n\n // return element\n\n invariant(false, 'renderRSC() is coming soon!')\n })\n .then((element) => {\n input.state.value = element\n input.state.status = 'success'\n })\n .catch((err) => {\n input.state.status = 'error'\n input.state.error = err\n }),\n }\n }\n\n if (input.state.status === 'pending') {\n throw input.state.promise\n }\n\n return input.state.value\n}\n"],"names":["renderRsc","input","state","status","promise","Promise","resolve","then","invariant","element","value","catch","err","error"],"mappings":";;;AAOO,SAASA,UAAUC,OAA+B;AAMvD,MAAI,OAAOA,UAAU,YAAY,CAACA,MAAMC,OAAO;AAC7CD,UAAMC,QAAQ;AAAA,MACZC,QAAQ;AAAA,MACRC,SAASC,QAAQC,QAAQ,EACtBC,KAAK,MAAM;AAwDVC,kBAAU,OAAO,6BAA6B;AAAA,MAAA,CAC/C,EACAD,KAAME,CAAY,YAAA;AACjBR,cAAMC,MAAMQ,QAAQD;AACpBR,cAAMC,MAAMC,SAAS;AAAA,MAAA,CACtB,EACAQ,MAAOC,CAAQ,QAAA;AACdX,cAAMC,MAAMC,SAAS;AACrBF,cAAMC,MAAMW,QAAQD;AAAAA,MACrB,CAAA;AAAA,IACL;AAAA,EAAA;AAGEX,MAAAA,MAAMC,MAAMC,WAAW,WAAW;AACpC,UAAMF,MAAMC,MAAME;AAAAA,EAAAA;AAGpB,SAAOH,MAAMC,MAAMQ;AACrB;;"}
|
package/dist/cjs/useServerFn.cjs
CHANGED
|
@@ -13,11 +13,8 @@ function useServerFn(serverFn) {
|
|
|
13
13
|
return res;
|
|
14
14
|
} catch (err) {
|
|
15
15
|
if (routerCore.isRedirect(err)) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
_fromLocation: router.state.location
|
|
19
|
-
});
|
|
20
|
-
return router.navigate(resolvedRedirect);
|
|
16
|
+
err.options._fromLocation = router.state.location;
|
|
17
|
+
return router.navigate(router.resolveRedirect(err).options);
|
|
21
18
|
}
|
|
22
19
|
throw err;
|
|
23
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useServerFn.cjs","sources":["../../src/useServerFn.ts"],"sourcesContent":["import { isRedirect } from '@tanstack/router-core'\nimport { useRouter } from '@tanstack/solid-router'\n\nexport function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(\n serverFn: T,\n): (...args: Parameters<T>) => ReturnType<T> {\n const router = useRouter()\n\n return (async (...args: Array<any>) => {\n try {\n const res = await serverFn(...args)\n\n if (isRedirect(res)) {\n throw res\n }\n\n return res\n } catch (err) {\n if (isRedirect(err)) {\n
|
|
1
|
+
{"version":3,"file":"useServerFn.cjs","sources":["../../src/useServerFn.ts"],"sourcesContent":["import { isRedirect } from '@tanstack/router-core'\nimport { useRouter } from '@tanstack/solid-router'\n\nexport function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(\n serverFn: T,\n): (...args: Parameters<T>) => ReturnType<T> {\n const router = useRouter()\n\n return (async (...args: Array<any>) => {\n try {\n const res = await serverFn(...args)\n\n if (isRedirect(res)) {\n throw res\n }\n\n return res\n } catch (err) {\n if (isRedirect(err)) {\n err.options._fromLocation = router.state.location\n return router.navigate(router.resolveRedirect(err).options)\n }\n\n throw err\n }\n }) as any\n}\n"],"names":["useRouter","isRedirect"],"mappings":";;;;AAGO,SAAS,YACd,UAC2C;AAC3C,QAAM,SAASA,YAAAA,UAAU;AAEzB,SAAQ,UAAU,SAAqB;AACjC,QAAA;AACF,YAAM,MAAM,MAAM,SAAS,GAAG,IAAI;AAE9B,UAAAC,WAAAA,WAAW,GAAG,GAAG;AACb,cAAA;AAAA,MAAA;AAGD,aAAA;AAAA,aACA,KAAK;AACR,UAAAA,WAAAA,WAAW,GAAG,GAAG;AACf,YAAA,QAAQ,gBAAgB,OAAO,MAAM;AACzC,eAAO,OAAO,SAAS,OAAO,gBAAgB,GAAG,EAAE,OAAO;AAAA,MAAA;AAGtD,YAAA;AAAA,IAAA;AAAA,EAEV;AACF;;"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
export { mergeHeaders } from '@tanstack/start-client-core';
|
|
2
|
-
export {
|
|
3
|
-
export { type DehydratedRouter, type ClientExtractedBaseEntry, type StartSsrGlobal, type ClientExtractedEntry, type SsrMatch, type ClientExtractedPromise, type ClientExtractedStream, type ResolvePromiseState, } from '@tanstack/start-client-core';
|
|
4
|
-
export { createIsomorphicFn, type IsomorphicFn, type ServerOnlyFn, type ClientOnlyFn, type IsomorphicFnBase, } from '@tanstack/start-client-core';
|
|
5
|
-
export { createServerFn } from '@tanstack/start-client-core';
|
|
6
|
-
export { type ServerFn as FetchFn, type ServerFnCtx as FetchFnCtx, type CompiledFetcherFnOptions, type CompiledFetcherFn, type Fetcher, type RscStream, type FetcherData, type FetcherBaseOptions, type ServerFn, type ServerFnCtx, type ServerFnResponseType, } from '@tanstack/start-client-core';
|
|
7
|
-
export { type JsonResponse } from '@tanstack/start-client-core';
|
|
8
|
-
export { createMiddleware, type IntersectAllValidatorInputs, type IntersectAllValidatorOutputs, type MiddlewareServerFn, type AnyMiddleware, type MiddlewareOptions, type MiddlewareWithTypes, type MiddlewareValidator, type MiddlewareServer, type MiddlewareAfterClient, type MiddlewareAfterMiddleware, type MiddlewareAfterServer, type Middleware, type MiddlewareClientFnOptions, type MiddlewareClientFnResult, type MiddlewareClientNextFn, type ClientResultWithContext, type AssignAllClientContextBeforeNext, type AssignAllMiddleware, type AssignAllServerContext, type MiddlewareAfterValidator, type MiddlewareClientFn, type MiddlewareServerFnResult, type MiddlewareClient, type MiddlewareServerFnOptions, type MiddlewareServerNextFn, type ServerResultWithContext, } from '@tanstack/start-client-core';
|
|
9
|
-
export { registerGlobalMiddleware, globalMiddleware, } from '@tanstack/start-client-core';
|
|
10
|
-
export { serverOnly, clientOnly } from '@tanstack/start-client-core';
|
|
11
|
-
export { json } from '@tanstack/start-client-core';
|
|
1
|
+
export { mergeHeaders, startSerializer, createIsomorphicFn, createServerFn, createMiddleware, registerGlobalMiddleware, globalMiddleware, serverOnly, clientOnly, json, } from '@tanstack/start-client-core';
|
|
2
|
+
export { type DehydratedRouter, type ClientExtractedBaseEntry, type StartSsrGlobal, type ClientExtractedEntry, type SsrMatch, type ClientExtractedPromise, type ClientExtractedStream, type ResolvePromiseState, type IsomorphicFn, type ServerOnlyFn, type ClientOnlyFn, type IsomorphicFnBase, type ServerFn as FetchFn, type ServerFnCtx as FetchFnCtx, type CompiledFetcherFnOptions, type CompiledFetcherFn, type Fetcher, type RscStream, type FetcherData, type FetcherBaseOptions, type ServerFn, type ServerFnCtx, type ServerFnResponseType, type JsonResponse, type IntersectAllValidatorInputs, type IntersectAllValidatorOutputs, type FunctionMiddlewareServerFn, type AnyFunctionMiddleware, type FunctionMiddlewareOptions, type FunctionMiddlewareWithTypes, type FunctionMiddlewareValidator, type FunctionMiddlewareServer, type FunctionMiddlewareAfterClient, type FunctionMiddlewareAfterServer, type FunctionMiddleware, type FunctionMiddlewareClientFnOptions, type FunctionMiddlewareClientFnResult, type FunctionMiddlewareClientNextFn, type FunctionClientResultWithContext, type AssignAllClientContextBeforeNext, type AssignAllMiddleware, type AssignAllServerContext, type FunctionMiddlewareAfterValidator, type FunctionMiddlewareClientFn, type FunctionMiddlewareServerFnResult, type FunctionMiddlewareClient, type FunctionMiddlewareServerFnOptions, type FunctionMiddlewareServerNextFn, type FunctionServerResultWithContext, } from '@tanstack/start-client-core';
|
|
12
3
|
export { Meta } from './Meta.js';
|
|
13
4
|
export { Scripts } from './Scripts.js';
|
|
14
5
|
export { StartClient } from './StartClient.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderRSC.js","sources":["../../src/renderRSC.tsx"],"sourcesContent":["// TODO: RSCs\n// // @ts-expect-error\n// import * as reactDom from '
|
|
1
|
+
{"version":3,"file":"renderRSC.js","sources":["../../src/renderRSC.tsx"],"sourcesContent":["// TODO: RSCs\n// // @ts-expect-error\n// import * as reactDom from 'react-server-dom/client'\n// import { isValidElement } from 'solid-js'\nimport invariant from 'tiny-invariant'\nimport type * as Solid from 'solid-js'\n\nexport function renderRsc(input: any): Solid.JSX.Element {\n // TODO: isValidElement\n // if (isValidElement(input)) {\n // return input\n // }\n\n if (typeof input === 'object' && !input.state) {\n input.state = {\n status: 'pending',\n promise: Promise.resolve()\n .then(() => {\n let element\n\n // We're in node\n // TODO: RSCs\n // if (reactDom.createFromNodeStream) {\n // const stream = await import('node:stream')\n\n // let body: any = input\n\n // // Unwrap the response\n // if (input instanceof Response) {\n // body = input.body\n // }\n\n // // Convert ReadableStream to NodeJS stream.Readable\n // if (body instanceof ReadableStream) {\n // body = stream.Readable.fromWeb(body as any)\n // }\n\n // if (stream.Readable.isReadable(body)) {\n // // body = copyStreamToRaw(body)\n // } else if (input.text) {\n // // create a readable stream by awaiting the text method\n // body = new stream.Readable({\n // async read() {\n // input.text().then((value: any) => {\n // this.push(value)\n // this.push(null)\n // })\n // },\n // })\n // } else {\n // console.error('input', input)\n // throw new Error('Unexpected rsc input type 👆')\n // }\n\n // element = await reactDom.createFromNodeStream(body)\n // } else {\n // // We're in the browser\n // if (input.body instanceof ReadableStream) {\n // input = input.body\n // }\n\n // if (input instanceof ReadableStream) {\n // element = await reactDom.createFromReadableStream(input)\n // }\n\n // if (input instanceof Response) {\n // // copy to the response body to cache the raw data\n // element = await reactDom.createFromFetch(input)\n // }\n // }\n\n // return element\n\n invariant(false, 'renderRSC() is coming soon!')\n })\n .then((element) => {\n input.state.value = element\n input.state.status = 'success'\n })\n .catch((err) => {\n input.state.status = 'error'\n input.state.error = err\n }),\n }\n }\n\n if (input.state.status === 'pending') {\n throw input.state.promise\n }\n\n return input.state.value\n}\n"],"names":["renderRsc","input","state","status","promise","Promise","resolve","then","invariant","element","value","catch","err","error"],"mappings":";AAOO,SAASA,UAAUC,OAA+B;AAMvD,MAAI,OAAOA,UAAU,YAAY,CAACA,MAAMC,OAAO;AAC7CD,UAAMC,QAAQ;AAAA,MACZC,QAAQ;AAAA,MACRC,SAASC,QAAQC,QAAQ,EACtBC,KAAK,MAAM;AAwDVC,kBAAU,OAAO,6BAA6B;AAAA,MAAA,CAC/C,EACAD,KAAME,CAAY,YAAA;AACjBR,cAAMC,MAAMQ,QAAQD;AACpBR,cAAMC,MAAMC,SAAS;AAAA,MAAA,CACtB,EACAQ,MAAOC,CAAQ,QAAA;AACdX,cAAMC,MAAMC,SAAS;AACrBF,cAAMC,MAAMW,QAAQD;AAAAA,MACrB,CAAA;AAAA,IACL;AAAA,EAAA;AAGEX,MAAAA,MAAMC,MAAMC,WAAW,WAAW;AACpC,UAAMF,MAAMC,MAAME;AAAAA,EAAAA;AAGpB,SAAOH,MAAMC,MAAMQ;AACrB;"}
|
package/dist/esm/useServerFn.js
CHANGED
|
@@ -11,11 +11,8 @@ function useServerFn(serverFn) {
|
|
|
11
11
|
return res;
|
|
12
12
|
} catch (err) {
|
|
13
13
|
if (isRedirect(err)) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
_fromLocation: router.state.location
|
|
17
|
-
});
|
|
18
|
-
return router.navigate(resolvedRedirect);
|
|
14
|
+
err.options._fromLocation = router.state.location;
|
|
15
|
+
return router.navigate(router.resolveRedirect(err).options);
|
|
19
16
|
}
|
|
20
17
|
throw err;
|
|
21
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useServerFn.js","sources":["../../src/useServerFn.ts"],"sourcesContent":["import { isRedirect } from '@tanstack/router-core'\nimport { useRouter } from '@tanstack/solid-router'\n\nexport function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(\n serverFn: T,\n): (...args: Parameters<T>) => ReturnType<T> {\n const router = useRouter()\n\n return (async (...args: Array<any>) => {\n try {\n const res = await serverFn(...args)\n\n if (isRedirect(res)) {\n throw res\n }\n\n return res\n } catch (err) {\n if (isRedirect(err)) {\n
|
|
1
|
+
{"version":3,"file":"useServerFn.js","sources":["../../src/useServerFn.ts"],"sourcesContent":["import { isRedirect } from '@tanstack/router-core'\nimport { useRouter } from '@tanstack/solid-router'\n\nexport function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(\n serverFn: T,\n): (...args: Parameters<T>) => ReturnType<T> {\n const router = useRouter()\n\n return (async (...args: Array<any>) => {\n try {\n const res = await serverFn(...args)\n\n if (isRedirect(res)) {\n throw res\n }\n\n return res\n } catch (err) {\n if (isRedirect(err)) {\n err.options._fromLocation = router.state.location\n return router.navigate(router.resolveRedirect(err).options)\n }\n\n throw err\n }\n }) as any\n}\n"],"names":[],"mappings":";;AAGO,SAAS,YACd,UAC2C;AAC3C,QAAM,SAAS,UAAU;AAEzB,SAAQ,UAAU,SAAqB;AACjC,QAAA;AACF,YAAM,MAAM,MAAM,SAAS,GAAG,IAAI;AAE9B,UAAA,WAAW,GAAG,GAAG;AACb,cAAA;AAAA,MAAA;AAGD,aAAA;AAAA,aACA,KAAK;AACR,UAAA,WAAW,GAAG,GAAG;AACf,YAAA,QAAQ,gBAAgB,OAAO,MAAM;AACzC,eAAO,OAAO,SAAS,OAAO,gBAAgB,GAAG,EAAE,OAAO;AAAA,MAAA;AAGtD,YAAA;AAAA,IAAA;AAAA,EAEV;AACF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/solid-start-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.121.0-alpha.3",
|
|
4
4
|
"description": "Modern and scalable routing for Solid applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -51,10 +51,9 @@
|
|
|
51
51
|
"jsesc": "^3.1.0",
|
|
52
52
|
"tiny-invariant": "^1.3.3",
|
|
53
53
|
"tiny-warning": "^1.0.3",
|
|
54
|
-
"
|
|
55
|
-
"@tanstack/
|
|
56
|
-
"@tanstack/start-client-core": "^1.
|
|
57
|
-
"@tanstack/router-core": "^1.120.5"
|
|
54
|
+
"@tanstack/solid-router": "^1.121.0-alpha.3",
|
|
55
|
+
"@tanstack/router-core": "^1.121.0-alpha.3",
|
|
56
|
+
"@tanstack/start-client-core": "^1.121.0-alpha.3"
|
|
58
57
|
},
|
|
59
58
|
"devDependencies": {
|
|
60
59
|
"@solidjs/testing-library": "^0.8.10",
|
package/src/index.tsx
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export {
|
|
2
|
+
mergeHeaders,
|
|
3
|
+
startSerializer,
|
|
4
|
+
createIsomorphicFn,
|
|
5
|
+
createServerFn,
|
|
6
|
+
createMiddleware,
|
|
7
|
+
registerGlobalMiddleware,
|
|
8
|
+
globalMiddleware,
|
|
9
|
+
serverOnly,
|
|
10
|
+
clientOnly,
|
|
11
|
+
json,
|
|
12
|
+
} from '@tanstack/start-client-core'
|
|
4
13
|
export {
|
|
5
14
|
type DehydratedRouter,
|
|
6
15
|
type ClientExtractedBaseEntry,
|
|
@@ -10,16 +19,10 @@ export {
|
|
|
10
19
|
type ClientExtractedPromise,
|
|
11
20
|
type ClientExtractedStream,
|
|
12
21
|
type ResolvePromiseState,
|
|
13
|
-
} from '@tanstack/start-client-core'
|
|
14
|
-
export {
|
|
15
|
-
createIsomorphicFn,
|
|
16
22
|
type IsomorphicFn,
|
|
17
23
|
type ServerOnlyFn,
|
|
18
24
|
type ClientOnlyFn,
|
|
19
25
|
type IsomorphicFnBase,
|
|
20
|
-
} from '@tanstack/start-client-core'
|
|
21
|
-
export { createServerFn } from '@tanstack/start-client-core'
|
|
22
|
-
export {
|
|
23
26
|
type ServerFn as FetchFn,
|
|
24
27
|
type ServerFnCtx as FetchFnCtx,
|
|
25
28
|
type CompiledFetcherFnOptions,
|
|
@@ -31,43 +34,33 @@ export {
|
|
|
31
34
|
type ServerFn,
|
|
32
35
|
type ServerFnCtx,
|
|
33
36
|
type ServerFnResponseType,
|
|
34
|
-
|
|
35
|
-
export { type JsonResponse } from '@tanstack/start-client-core'
|
|
36
|
-
export {
|
|
37
|
-
createMiddleware,
|
|
37
|
+
type JsonResponse,
|
|
38
38
|
type IntersectAllValidatorInputs,
|
|
39
39
|
type IntersectAllValidatorOutputs,
|
|
40
|
-
type
|
|
41
|
-
type
|
|
42
|
-
type
|
|
43
|
-
type
|
|
44
|
-
type
|
|
45
|
-
type
|
|
46
|
-
type
|
|
47
|
-
type
|
|
48
|
-
type
|
|
49
|
-
type
|
|
50
|
-
type
|
|
51
|
-
type
|
|
52
|
-
type
|
|
53
|
-
type ClientResultWithContext,
|
|
40
|
+
type FunctionMiddlewareServerFn,
|
|
41
|
+
type AnyFunctionMiddleware,
|
|
42
|
+
type FunctionMiddlewareOptions,
|
|
43
|
+
type FunctionMiddlewareWithTypes,
|
|
44
|
+
type FunctionMiddlewareValidator,
|
|
45
|
+
type FunctionMiddlewareServer,
|
|
46
|
+
type FunctionMiddlewareAfterClient,
|
|
47
|
+
type FunctionMiddlewareAfterServer,
|
|
48
|
+
type FunctionMiddleware,
|
|
49
|
+
type FunctionMiddlewareClientFnOptions,
|
|
50
|
+
type FunctionMiddlewareClientFnResult,
|
|
51
|
+
type FunctionMiddlewareClientNextFn,
|
|
52
|
+
type FunctionClientResultWithContext,
|
|
54
53
|
type AssignAllClientContextBeforeNext,
|
|
55
54
|
type AssignAllMiddleware,
|
|
56
55
|
type AssignAllServerContext,
|
|
57
|
-
type
|
|
58
|
-
type
|
|
59
|
-
type
|
|
60
|
-
type
|
|
61
|
-
type
|
|
62
|
-
type
|
|
63
|
-
type
|
|
64
|
-
} from '@tanstack/start-client-core'
|
|
65
|
-
export {
|
|
66
|
-
registerGlobalMiddleware,
|
|
67
|
-
globalMiddleware,
|
|
56
|
+
type FunctionMiddlewareAfterValidator,
|
|
57
|
+
type FunctionMiddlewareClientFn,
|
|
58
|
+
type FunctionMiddlewareServerFnResult,
|
|
59
|
+
type FunctionMiddlewareClient,
|
|
60
|
+
type FunctionMiddlewareServerFnOptions,
|
|
61
|
+
type FunctionMiddlewareServerNextFn,
|
|
62
|
+
type FunctionServerResultWithContext,
|
|
68
63
|
} from '@tanstack/start-client-core'
|
|
69
|
-
export { serverOnly, clientOnly } from '@tanstack/start-client-core'
|
|
70
|
-
export { json } from '@tanstack/start-client-core'
|
|
71
64
|
export { Meta } from './Meta'
|
|
72
65
|
export { Scripts } from './Scripts'
|
|
73
66
|
export { StartClient } from './StartClient'
|
package/src/renderRSC.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// TODO: RSCs
|
|
2
2
|
// // @ts-expect-error
|
|
3
|
-
// import * as reactDom from '
|
|
3
|
+
// import * as reactDom from 'react-server-dom/client'
|
|
4
4
|
// import { isValidElement } from 'solid-js'
|
|
5
5
|
import invariant from 'tiny-invariant'
|
|
6
6
|
import type * as Solid from 'solid-js'
|
package/src/useServerFn.ts
CHANGED
|
@@ -17,12 +17,8 @@ export function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(
|
|
|
17
17
|
return res
|
|
18
18
|
} catch (err) {
|
|
19
19
|
if (isRedirect(err)) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
_fromLocation: router.state.location,
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
return router.navigate(resolvedRedirect)
|
|
20
|
+
err.options._fromLocation = router.state.location
|
|
21
|
+
return router.navigate(router.resolveRedirect(err).options)
|
|
26
22
|
}
|
|
27
23
|
|
|
28
24
|
throw err
|
|
File without changes
|
|
File without changes
|
package/src/routesManifest.ts
DELETED
|
File without changes
|