@tanstack/react-start-client 1.132.0-alpha.9 → 1.132.0
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/dist/esm/StartClient.d.ts +1 -4
- package/dist/esm/StartClient.js +4 -8
- package/dist/esm/StartClient.js.map +1 -1
- package/dist/esm/index.d.ts +1 -3
- package/dist/esm/index.js +2 -13
- package/dist/esm/index.js.map +1 -1
- package/package.json +5 -5
- package/src/StartClient.tsx +8 -10
- package/src/index.tsx +1 -57
- package/src/tests/createServerFn.test-d.tsx +1 -1
- package/dist/esm/useServerFn.d.ts +0 -1
- package/dist/esm/useServerFn.js +0 -28
- package/dist/esm/useServerFn.js.map +0 -1
- package/src/useServerFn.ts +0 -31
package/dist/esm/StartClient.js
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Await, RouterProvider } from "@tanstack/react-router";
|
|
3
|
-
import {
|
|
3
|
+
import { hydrateStart } from "@tanstack/start-client-core/client";
|
|
4
4
|
let hydrationPromise;
|
|
5
|
-
function StartClient(
|
|
5
|
+
function StartClient() {
|
|
6
6
|
if (!hydrationPromise) {
|
|
7
|
-
|
|
8
|
-
hydrationPromise = hydrate(props.router);
|
|
9
|
-
} else {
|
|
10
|
-
hydrationPromise = Promise.resolve();
|
|
11
|
-
}
|
|
7
|
+
hydrationPromise = hydrateStart();
|
|
12
8
|
}
|
|
13
9
|
return /* @__PURE__ */ jsx(
|
|
14
10
|
Await,
|
|
15
11
|
{
|
|
16
12
|
promise: hydrationPromise,
|
|
17
|
-
children: () => /* @__PURE__ */ jsx(RouterProvider, { router
|
|
13
|
+
children: (router) => /* @__PURE__ */ jsx(RouterProvider, { router })
|
|
18
14
|
}
|
|
19
15
|
);
|
|
20
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartClient.js","sources":["../../src/StartClient.tsx"],"sourcesContent":["import { Await, RouterProvider } from '@tanstack/react-router'\nimport {
|
|
1
|
+
{"version":3,"file":"StartClient.js","sources":["../../src/StartClient.tsx"],"sourcesContent":["import { Await, RouterProvider } from '@tanstack/react-router'\n\nimport { hydrateStart } from '@tanstack/start-client-core/client'\n\nimport type { AnyRouter } from '@tanstack/router-core'\n\nlet hydrationPromise: Promise<AnyRouter> | undefined\nexport function StartClient() {\n if (!hydrationPromise) {\n hydrationPromise = hydrateStart()\n }\n\n return (\n <Await\n promise={hydrationPromise}\n children={(router) => <RouterProvider router={router} />}\n />\n )\n}\n"],"names":[],"mappings":";;;AAMA,IAAI;AACG,SAAS,cAAc;AAC5B,MAAI,CAAC,kBAAkB;AACrB,uBAAmB,aAAA;AAAA,EACrB;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,UAAU,CAAC,WAAW,oBAAC,kBAAe,OAAA,CAAgB;AAAA,IAAA;AAAA,EAAA;AAG5D;"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export { mergeHeaders, createIsomorphicFn, createServerFn, createMiddleware, registerGlobalMiddleware, globalMiddleware, createServerOnlyFn, createClientOnlyFn, json, createClientRpc, } from '@tanstack/start-client-core';
|
|
2
|
-
export { type DehydratedRouter, type IsomorphicFn, type ServerOnlyFn, type ClientOnlyFn, type IsomorphicFnBase, type CompiledFetcherFnOptions, type CompiledFetcherFn, type Fetcher, type OptionalFetcher, type RequiredFetcher, 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';
|
|
3
1
|
export { StartClient } from './StartClient.js';
|
|
4
2
|
export { renderRsc } from './renderRSC.js';
|
|
5
|
-
export {
|
|
3
|
+
export { createClientRpc } from '@tanstack/start-client-core/client';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
import { createClientOnlyFn, createClientRpc, createIsomorphicFn, createMiddleware, createServerFn, createServerOnlyFn, globalMiddleware, json, mergeHeaders, registerGlobalMiddleware } from "@tanstack/start-client-core";
|
|
2
1
|
import { StartClient } from "./StartClient.js";
|
|
3
2
|
import { renderRsc } from "./renderRSC.js";
|
|
4
|
-
import {
|
|
3
|
+
import { createClientRpc } from "@tanstack/start-client-core/client";
|
|
5
4
|
export {
|
|
6
5
|
StartClient,
|
|
7
|
-
createClientOnlyFn,
|
|
8
6
|
createClientRpc,
|
|
9
|
-
|
|
10
|
-
createMiddleware,
|
|
11
|
-
createServerFn,
|
|
12
|
-
createServerOnlyFn,
|
|
13
|
-
globalMiddleware,
|
|
14
|
-
json,
|
|
15
|
-
mergeHeaders,
|
|
16
|
-
registerGlobalMiddleware,
|
|
17
|
-
renderRsc,
|
|
18
|
-
useServerFn
|
|
7
|
+
renderRsc
|
|
19
8
|
};
|
|
20
9
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/react-start-client",
|
|
3
|
-
"version": "1.132.0
|
|
3
|
+
"version": "1.132.0",
|
|
4
4
|
"description": "Modern and scalable routing for React applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,15 +40,15 @@
|
|
|
40
40
|
"src"
|
|
41
41
|
],
|
|
42
42
|
"engines": {
|
|
43
|
-
"node": ">=12"
|
|
43
|
+
"node": ">=22.12.0"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"cookie-es": "^1.2.2",
|
|
47
47
|
"tiny-invariant": "^1.3.3",
|
|
48
48
|
"tiny-warning": "^1.0.3",
|
|
49
|
-
"@tanstack/
|
|
50
|
-
"@tanstack/
|
|
51
|
-
"@tanstack/
|
|
49
|
+
"@tanstack/router-core": "1.132.0",
|
|
50
|
+
"@tanstack/start-client-core": "1.132.0",
|
|
51
|
+
"@tanstack/react-router": "1.132.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@testing-library/react": "^16.2.0",
|
package/src/StartClient.tsx
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { Await, RouterProvider } from '@tanstack/react-router'
|
|
2
|
-
import { hydrate } from '@tanstack/start-client-core'
|
|
3
|
-
import type { AnyRouter } from '@tanstack/router-core'
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
import { hydrateStart } from '@tanstack/start-client-core/client'
|
|
4
|
+
|
|
5
|
+
import type { AnyRouter } from '@tanstack/router-core'
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
let hydrationPromise: Promise<AnyRouter> | undefined
|
|
8
|
+
export function StartClient() {
|
|
8
9
|
if (!hydrationPromise) {
|
|
9
|
-
|
|
10
|
-
hydrationPromise = hydrate(props.router)
|
|
11
|
-
} else {
|
|
12
|
-
hydrationPromise = Promise.resolve()
|
|
13
|
-
}
|
|
10
|
+
hydrationPromise = hydrateStart()
|
|
14
11
|
}
|
|
12
|
+
|
|
15
13
|
return (
|
|
16
14
|
<Await
|
|
17
15
|
promise={hydrationPromise}
|
|
18
|
-
children={() => <RouterProvider router={
|
|
16
|
+
children={(router) => <RouterProvider router={router} />}
|
|
19
17
|
/>
|
|
20
18
|
)
|
|
21
19
|
}
|
package/src/index.tsx
CHANGED
|
@@ -1,59 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
mergeHeaders,
|
|
3
|
-
createIsomorphicFn,
|
|
4
|
-
createServerFn,
|
|
5
|
-
createMiddleware,
|
|
6
|
-
registerGlobalMiddleware,
|
|
7
|
-
globalMiddleware,
|
|
8
|
-
createServerOnlyFn,
|
|
9
|
-
createClientOnlyFn,
|
|
10
|
-
json,
|
|
11
|
-
createClientRpc,
|
|
12
|
-
} from '@tanstack/start-client-core'
|
|
13
|
-
export {
|
|
14
|
-
type DehydratedRouter,
|
|
15
|
-
type IsomorphicFn,
|
|
16
|
-
type ServerOnlyFn,
|
|
17
|
-
type ClientOnlyFn,
|
|
18
|
-
type IsomorphicFnBase,
|
|
19
|
-
type CompiledFetcherFnOptions,
|
|
20
|
-
type CompiledFetcherFn,
|
|
21
|
-
type Fetcher,
|
|
22
|
-
type OptionalFetcher,
|
|
23
|
-
type RequiredFetcher,
|
|
24
|
-
type RscStream,
|
|
25
|
-
type FetcherData,
|
|
26
|
-
type FetcherBaseOptions,
|
|
27
|
-
type ServerFn,
|
|
28
|
-
type ServerFnCtx,
|
|
29
|
-
type ServerFnResponseType,
|
|
30
|
-
type JsonResponse,
|
|
31
|
-
type IntersectAllValidatorInputs,
|
|
32
|
-
type IntersectAllValidatorOutputs,
|
|
33
|
-
type FunctionMiddlewareServerFn,
|
|
34
|
-
type AnyFunctionMiddleware,
|
|
35
|
-
type FunctionMiddlewareOptions,
|
|
36
|
-
type FunctionMiddlewareWithTypes,
|
|
37
|
-
type FunctionMiddlewareValidator,
|
|
38
|
-
type FunctionMiddlewareServer,
|
|
39
|
-
type FunctionMiddlewareAfterClient,
|
|
40
|
-
type FunctionMiddlewareAfterServer,
|
|
41
|
-
type FunctionMiddleware,
|
|
42
|
-
type FunctionMiddlewareClientFnOptions,
|
|
43
|
-
type FunctionMiddlewareClientFnResult,
|
|
44
|
-
type FunctionMiddlewareClientNextFn,
|
|
45
|
-
type FunctionClientResultWithContext,
|
|
46
|
-
type AssignAllClientContextBeforeNext,
|
|
47
|
-
type AssignAllMiddleware,
|
|
48
|
-
type AssignAllServerContext,
|
|
49
|
-
type FunctionMiddlewareAfterValidator,
|
|
50
|
-
type FunctionMiddlewareClientFn,
|
|
51
|
-
type FunctionMiddlewareServerFnResult,
|
|
52
|
-
type FunctionMiddlewareClient,
|
|
53
|
-
type FunctionMiddlewareServerFnOptions,
|
|
54
|
-
type FunctionMiddlewareServerNextFn,
|
|
55
|
-
type FunctionServerResultWithContext,
|
|
56
|
-
} from '@tanstack/start-client-core'
|
|
57
1
|
export { StartClient } from './StartClient'
|
|
58
2
|
export { renderRsc } from './renderRSC'
|
|
59
|
-
export {
|
|
3
|
+
export { createClientRpc } from '@tanstack/start-client-core/client'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { expectTypeOf, test } from 'vitest'
|
|
2
2
|
import { createServerFn } from '@tanstack/start-client-core'
|
|
3
3
|
|
|
4
|
-
test('createServerFn returns RSC', () => {
|
|
4
|
+
test.skip('createServerFn returns RSC', () => {
|
|
5
5
|
const fn = createServerFn().handler(() => ({
|
|
6
6
|
rscs: [
|
|
7
7
|
<div key="0">I'm an RSC</div>,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(serverFn: T): (...args: Parameters<T>) => ReturnType<T>;
|
package/dist/esm/useServerFn.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { isRedirect } from "@tanstack/router-core";
|
|
3
|
-
import { useRouter } from "@tanstack/react-router";
|
|
4
|
-
function useServerFn(serverFn) {
|
|
5
|
-
const router = useRouter();
|
|
6
|
-
return React.useCallback(
|
|
7
|
-
async (...args) => {
|
|
8
|
-
try {
|
|
9
|
-
const res = await serverFn(...args);
|
|
10
|
-
if (isRedirect(res)) {
|
|
11
|
-
throw res;
|
|
12
|
-
}
|
|
13
|
-
return res;
|
|
14
|
-
} catch (err) {
|
|
15
|
-
if (isRedirect(err)) {
|
|
16
|
-
err.options._fromLocation = router.state.location;
|
|
17
|
-
return router.navigate(router.resolveRedirect(err).options);
|
|
18
|
-
}
|
|
19
|
-
throw err;
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
[router, serverFn]
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
export {
|
|
26
|
-
useServerFn
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=useServerFn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useServerFn.js","sources":["../../src/useServerFn.ts"],"sourcesContent":["import * as React from 'react'\nimport { isRedirect } from '@tanstack/router-core'\nimport { useRouter } from '@tanstack/react-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 React.useCallback(\n 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 },\n [router, serverFn],\n ) as any\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,YACd,UAC2C;AAC3C,QAAM,SAAS,UAAA;AAEf,SAAO,MAAM;AAAA,IACX,UAAU,SAAqB;AAC7B,UAAI;AACF,cAAM,MAAM,MAAM,SAAS,GAAG,IAAI;AAElC,YAAI,WAAW,GAAG,GAAG;AACnB,gBAAM;AAAA,QACR;AAEA,eAAO;AAAA,MACT,SAAS,KAAK;AACZ,YAAI,WAAW,GAAG,GAAG;AACnB,cAAI,QAAQ,gBAAgB,OAAO,MAAM;AACzC,iBAAO,OAAO,SAAS,OAAO,gBAAgB,GAAG,EAAE,OAAO;AAAA,QAC5D;AAEA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,QAAQ;AAAA,EAAA;AAErB;"}
|
package/src/useServerFn.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as React from 'react'
|
|
2
|
-
import { isRedirect } from '@tanstack/router-core'
|
|
3
|
-
import { useRouter } from '@tanstack/react-router'
|
|
4
|
-
|
|
5
|
-
export function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(
|
|
6
|
-
serverFn: T,
|
|
7
|
-
): (...args: Parameters<T>) => ReturnType<T> {
|
|
8
|
-
const router = useRouter()
|
|
9
|
-
|
|
10
|
-
return React.useCallback(
|
|
11
|
-
async (...args: Array<any>) => {
|
|
12
|
-
try {
|
|
13
|
-
const res = await serverFn(...args)
|
|
14
|
-
|
|
15
|
-
if (isRedirect(res)) {
|
|
16
|
-
throw res
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return res
|
|
20
|
-
} catch (err) {
|
|
21
|
-
if (isRedirect(err)) {
|
|
22
|
-
err.options._fromLocation = router.state.location
|
|
23
|
-
return router.navigate(router.resolveRedirect(err).options)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
throw err
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
[router, serverFn],
|
|
30
|
-
) as any
|
|
31
|
-
}
|