@trpc/next 11.3.1 → 11.3.2-canary.2

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.
Files changed (104) hide show
  1. package/app-dir/client/package.json +1 -0
  2. package/app-dir/links/nextCache/package.json +1 -0
  3. package/app-dir/links/nextHttp/package.json +1 -0
  4. package/app-dir/server/package.json +1 -0
  5. package/dist/app-dir/client.cjs +115 -0
  6. package/dist/app-dir/client.d.cts +50 -0
  7. package/dist/app-dir/client.d.cts.map +1 -0
  8. package/dist/app-dir/client.d.mts +50 -0
  9. package/dist/app-dir/client.d.mts.map +1 -0
  10. package/dist/app-dir/client.mjs +109 -40
  11. package/dist/app-dir/client.mjs.map +1 -0
  12. package/dist/app-dir/links/nextCache.cjs +48 -0
  13. package/dist/app-dir/links/nextCache.d.cts +15 -0
  14. package/dist/app-dir/links/nextCache.d.cts.map +1 -0
  15. package/dist/app-dir/links/nextCache.d.mts +15 -0
  16. package/dist/app-dir/links/nextCache.d.mts.map +1 -0
  17. package/dist/app-dir/links/nextCache.mjs +43 -55
  18. package/dist/app-dir/links/nextCache.mjs.map +1 -0
  19. package/dist/app-dir/links/nextHttp.cjs +35 -0
  20. package/dist/app-dir/links/nextHttp.d.cts +18 -0
  21. package/dist/app-dir/links/nextHttp.d.cts.map +1 -0
  22. package/dist/app-dir/links/nextHttp.d.mts +18 -0
  23. package/dist/app-dir/links/nextHttp.d.mts.map +1 -0
  24. package/dist/app-dir/links/nextHttp.mjs +30 -32
  25. package/dist/app-dir/links/nextHttp.mjs.map +1 -0
  26. package/dist/app-dir/server.cjs +96 -0
  27. package/dist/app-dir/server.d.cts +2 -0
  28. package/dist/app-dir/server.d.mts +2 -0
  29. package/dist/app-dir/server.mjs +85 -109
  30. package/dist/app-dir/server.mjs.map +1 -0
  31. package/dist/chunk-CUT6urMc.cjs +30 -0
  32. package/dist/index.cjs +95 -0
  33. package/dist/index.d.cts +35 -0
  34. package/dist/index.d.cts.map +1 -0
  35. package/dist/index.d.mts +35 -0
  36. package/dist/index.d.mts.map +1 -0
  37. package/dist/index.mjs +94 -2
  38. package/dist/index.mjs.map +1 -0
  39. package/dist/server.d-BXv5jwlB.d.mts +90 -0
  40. package/dist/server.d-BXv5jwlB.d.mts.map +1 -0
  41. package/dist/server.d-DLnegS7F.d.cts +90 -0
  42. package/dist/server.d-DLnegS7F.d.cts.map +1 -0
  43. package/dist/shared-C9SS-IYg.cjs +29 -0
  44. package/dist/shared-FEQznZ-6.mjs +18 -0
  45. package/dist/shared-FEQznZ-6.mjs.map +1 -0
  46. package/dist/ssrPrepass.cjs +104 -0
  47. package/dist/ssrPrepass.d.cts +9 -0
  48. package/dist/ssrPrepass.d.cts.map +1 -0
  49. package/dist/ssrPrepass.d.mts +9 -0
  50. package/dist/ssrPrepass.d.mts.map +1 -0
  51. package/dist/ssrPrepass.mjs +98 -131
  52. package/dist/ssrPrepass.mjs.map +1 -0
  53. package/dist/withTRPC.d-BY6FsDWi.d.mts +54 -0
  54. package/dist/withTRPC.d-BY6FsDWi.d.mts.map +1 -0
  55. package/dist/withTRPC.d-DctYN4Yz.d.cts +54 -0
  56. package/dist/withTRPC.d-DctYN4Yz.d.cts.map +1 -0
  57. package/package.json +63 -34
  58. package/ssrPrepass/package.json +1 -0
  59. package/app-dir/client/index.d.ts +0 -1
  60. package/app-dir/client/index.js +0 -1
  61. package/app-dir/links/nextCache/index.d.ts +0 -1
  62. package/app-dir/links/nextCache/index.js +0 -1
  63. package/app-dir/links/nextHttp/index.d.ts +0 -1
  64. package/app-dir/links/nextHttp/index.js +0 -1
  65. package/app-dir/server/index.d.ts +0 -1
  66. package/app-dir/server/index.js +0 -1
  67. package/dist/app-dir/client.d.ts +0 -6
  68. package/dist/app-dir/client.d.ts.map +0 -1
  69. package/dist/app-dir/client.js +0 -48
  70. package/dist/app-dir/create-action-hook.d.ts +0 -50
  71. package/dist/app-dir/create-action-hook.d.ts.map +0 -1
  72. package/dist/app-dir/create-action-hook.js +0 -108
  73. package/dist/app-dir/create-action-hook.mjs +0 -105
  74. package/dist/app-dir/links/nextCache.d.ts +0 -12
  75. package/dist/app-dir/links/nextCache.d.ts.map +0 -1
  76. package/dist/app-dir/links/nextCache.js +0 -62
  77. package/dist/app-dir/links/nextHttp.d.ts +0 -15
  78. package/dist/app-dir/links/nextHttp.d.ts.map +0 -1
  79. package/dist/app-dir/links/nextHttp.js +0 -39
  80. package/dist/app-dir/server.d.ts +0 -30
  81. package/dist/app-dir/server.d.ts.map +0 -1
  82. package/dist/app-dir/server.js +0 -122
  83. package/dist/app-dir/shared.d.ts +0 -55
  84. package/dist/app-dir/shared.d.ts.map +0 -1
  85. package/dist/app-dir/shared.js +0 -20
  86. package/dist/app-dir/shared.mjs +0 -17
  87. package/dist/app-dir/types.d.ts +0 -31
  88. package/dist/app-dir/types.d.ts.map +0 -1
  89. package/dist/createTRPCNext.d.ts +0 -29
  90. package/dist/createTRPCNext.d.ts.map +0 -1
  91. package/dist/createTRPCNext.js +0 -39
  92. package/dist/createTRPCNext.mjs +0 -37
  93. package/dist/index.d.ts +0 -3
  94. package/dist/index.d.ts.map +0 -1
  95. package/dist/index.js +0 -9
  96. package/dist/ssrPrepass.d.ts +0 -3
  97. package/dist/ssrPrepass.d.ts.map +0 -1
  98. package/dist/ssrPrepass.js +0 -139
  99. package/dist/withTRPC.d.ts +0 -54
  100. package/dist/withTRPC.d.ts.map +0 -1
  101. package/dist/withTRPC.js +0 -84
  102. package/dist/withTRPC.mjs +0 -82
  103. package/ssrPrepass/index.d.ts +0 -1
  104. package/ssrPrepass/index.js +0 -1
@@ -0,0 +1,35 @@
1
+ import { TRPCPrepassHelper, TRPCPrepassProps, WithTRPCConfig, WithTRPCNoSSROptions, WithTRPCSSROptions, withTRPC } from "./withTRPC.d-DctYN4Yz.cjs";
2
+ import { AnyRouter, ProtectedIntersection } from "@trpc/server/unstable-core-do-not-import";
3
+ import { CreateReactUtils, DecorateRouterRecord, TRPCUseQueries, TRPCUseSuspenseQueries } from "@trpc/react-query/shared";
4
+ import { NextPageContext } from "next/types";
5
+
6
+ //#region src/createTRPCNext.d.ts
7
+
8
+ /**
9
+ * @internal
10
+ */
11
+ interface CreateTRPCNextBase<TRouter extends AnyRouter, TSSRContext extends NextPageContext> {
12
+ /**
13
+ * @deprecated renamed to `useUtils` and will be removed in a future tRPC version
14
+ *
15
+ * @see https://trpc.io/docs/v11/client/react/useUtils
16
+ */
17
+ useContext(): CreateReactUtils<TRouter, TSSRContext>;
18
+ /**
19
+ * @see https://trpc.io/docs/v11/client/react/useUtils
20
+ */
21
+ useUtils(): CreateReactUtils<TRouter, TSSRContext>;
22
+ withTRPC: ReturnType<typeof withTRPC<TRouter, TSSRContext>>;
23
+ useQueries: TRPCUseQueries<TRouter>;
24
+ useSuspenseQueries: TRPCUseSuspenseQueries<TRouter>;
25
+ }
26
+ /**
27
+ * @internal
28
+ */
29
+ type CreateTRPCNext<TRouter extends AnyRouter, TSSRContext extends NextPageContext> = ProtectedIntersection<CreateTRPCNextBase<TRouter, TSSRContext>, DecorateRouterRecord<TRouter['_def']['_config']['$types'], TRouter['_def']['record']>>;
30
+ declare function createTRPCNext<TRouter extends AnyRouter, TSSRContext extends NextPageContext = NextPageContext>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>): CreateTRPCNext<TRouter, TSSRContext>;
31
+ //# sourceMappingURL=createTRPCNext.d.ts.map
32
+
33
+ //#endregion
34
+ export { CreateTRPCNext, CreateTRPCNextBase, TRPCPrepassHelper, TRPCPrepassProps, WithTRPCConfig, WithTRPCNoSSROptions, WithTRPCSSROptions, createTRPCNext, withTRPC };
35
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/createTRPCNext.tsx"],"sourcesContent":[],"mappings":";;;;;;;;AA0BA;;AACkB,UADD,kBACC,CAAA,gBAAA,SAAA,EAAA,oBACI,eADJ,CAAA,CAAA;EAAS;;;;;EAYW,UAAE,EAAA,EAJxB,gBAIwB,CAJP,OAIO,EAJE,WAIF,CAAA;EAAW;;;EACQ,QAA7B,EAAA,EADhB,gBACgB,CADC,OACD,EADU,WACV,CAAA;EAAQ,QAA1B,EAAA,UAAA,CAAA,OAAkB,QAAlB,CAA2B,OAA3B,EAAoC,WAApC,CAAA,CAAA;EAAU,UACO,EAAf,cAAe,CAAA,OAAA,CAAA;EAAO,kBAAtB,EACQ,sBADR,CAC+B,OAD/B,CAAA;;;AAC8B;AAM5C;AAA0B,KAAd,cAAc,CAAA,gBACR,SADQ,EAAA,oBAEJ,eAFI,CAAA,GAGtB,qBAHsB,CAIxB,kBAJwB,CAIL,OAJK,EAII,WAJJ,CAAA,EAKxB,oBALwB,CAMtB,OANsB,CAAA,MAAA,CAAA,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,EAOtB,OAPsB,CAAA,MAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AACR,iBAUF,cAVE,CAAA,gBAWA,SAXA,EAAA,oBAYI,eAZJ,GAYsB,eAZtB,CAAA,CAAA,IAAA,EAcV,oBAdU,CAcW,OAdX,CAAA,GAcsB,kBAdtB,CAcyC,OAdzC,CAAA,CAAA,EAef,cAfe,CAeA,OAfA,EAeS,WAfT,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { TRPCPrepassHelper, TRPCPrepassProps, WithTRPCConfig, WithTRPCNoSSROptions, WithTRPCSSROptions, withTRPC } from "./withTRPC.d-BY6FsDWi.mjs";
2
+ import { CreateReactUtils, DecorateRouterRecord, TRPCUseQueries, TRPCUseSuspenseQueries } from "@trpc/react-query/shared";
3
+ import { AnyRouter, ProtectedIntersection } from "@trpc/server/unstable-core-do-not-import";
4
+ import { NextPageContext } from "next/types";
5
+
6
+ //#region src/createTRPCNext.d.ts
7
+
8
+ /**
9
+ * @internal
10
+ */
11
+ interface CreateTRPCNextBase<TRouter extends AnyRouter, TSSRContext extends NextPageContext> {
12
+ /**
13
+ * @deprecated renamed to `useUtils` and will be removed in a future tRPC version
14
+ *
15
+ * @see https://trpc.io/docs/v11/client/react/useUtils
16
+ */
17
+ useContext(): CreateReactUtils<TRouter, TSSRContext>;
18
+ /**
19
+ * @see https://trpc.io/docs/v11/client/react/useUtils
20
+ */
21
+ useUtils(): CreateReactUtils<TRouter, TSSRContext>;
22
+ withTRPC: ReturnType<typeof withTRPC<TRouter, TSSRContext>>;
23
+ useQueries: TRPCUseQueries<TRouter>;
24
+ useSuspenseQueries: TRPCUseSuspenseQueries<TRouter>;
25
+ }
26
+ /**
27
+ * @internal
28
+ */
29
+ type CreateTRPCNext<TRouter extends AnyRouter, TSSRContext extends NextPageContext> = ProtectedIntersection<CreateTRPCNextBase<TRouter, TSSRContext>, DecorateRouterRecord<TRouter['_def']['_config']['$types'], TRouter['_def']['record']>>;
30
+ declare function createTRPCNext<TRouter extends AnyRouter, TSSRContext extends NextPageContext = NextPageContext>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>): CreateTRPCNext<TRouter, TSSRContext>;
31
+ //# sourceMappingURL=createTRPCNext.d.ts.map
32
+
33
+ //#endregion
34
+ export { CreateTRPCNext, CreateTRPCNextBase, TRPCPrepassHelper, TRPCPrepassProps, WithTRPCConfig, WithTRPCNoSSROptions, WithTRPCSSROptions, createTRPCNext, withTRPC };
35
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/createTRPCNext.tsx"],"sourcesContent":[],"mappings":";;;;;;;;AA0BA;;AACkB,UADD,kBACC,CAAA,gBAAA,SAAA,EAAA,oBACI,eADJ,CAAA,CAAA;EAAS;;;;;EAYW,UAAE,EAAA,EAJxB,gBAIwB,CAJP,OAIO,EAJE,WAIF,CAAA;EAAW;;;EACQ,QAA7B,EAAA,EADhB,gBACgB,CADC,OACD,EADU,WACV,CAAA;EAAQ,QAA1B,EAAA,UAAA,CAAA,OAAkB,QAAlB,CAA2B,OAA3B,EAAoC,WAApC,CAAA,CAAA;EAAU,UACO,EAAf,cAAe,CAAA,OAAA,CAAA;EAAO,kBAAtB,EACQ,sBADR,CAC+B,OAD/B,CAAA;;;AAC8B;AAM5C;AAA0B,KAAd,cAAc,CAAA,gBACR,SADQ,EAAA,oBAEJ,eAFI,CAAA,GAGtB,qBAHsB,CAIxB,kBAJwB,CAIL,OAJK,EAII,WAJJ,CAAA,EAKxB,oBALwB,CAMtB,OANsB,CAAA,MAAA,CAAA,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,EAOtB,OAPsB,CAAA,MAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AACR,iBAUF,cAVE,CAAA,gBAWA,SAXA,EAAA,oBAYI,eAZJ,GAYsB,eAZtB,CAAA,CAAA,IAAA,EAcV,oBAdU,CAcW,OAdX,CAAA,GAcsB,kBAdtB,CAcyC,OAdzC,CAAA,CAAA,EAef,cAfe,CAeA,OAfA,EAeS,WAfT,CAAA"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,94 @@
1
- export { withTRPC } from './withTRPC.mjs';
2
- export { createTRPCNext } from './createTRPCNext.mjs';
1
+ import { HydrationBoundary, QueryClientProvider } from "@tanstack/react-query";
2
+ import { getTransformer } from "@trpc/client/unstable-internals";
3
+ import { createReactDecoration, createReactQueryUtils, createRootHooks, getQueryClient } from "@trpc/react-query/shared";
4
+ import React, { useMemo, useState } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import { createFlatProxy } from "@trpc/server/unstable-core-do-not-import";
7
+
8
+ //#region src/withTRPC.tsx
9
+ function withTRPC(opts) {
10
+ const { config: getClientConfig } = opts;
11
+ const transformer = getTransformer(opts.transformer);
12
+ return (AppOrPage) => {
13
+ const trpc = createRootHooks(opts);
14
+ const WithTRPC = (props) => {
15
+ const [prepassProps] = useState(() => {
16
+ if (props.trpc) return props.trpc;
17
+ const config = getClientConfig({});
18
+ const queryClient$1 = getQueryClient(config);
19
+ const trpcClient$1 = trpc.createClient(config);
20
+ return {
21
+ abortOnUnmount: config.abortOnUnmount,
22
+ queryClient: queryClient$1,
23
+ trpcClient: trpcClient$1,
24
+ ssrState: opts.ssr ? "mounting" : false,
25
+ ssrContext: null
26
+ };
27
+ });
28
+ const { queryClient, trpcClient, ssrState, ssrContext } = prepassProps;
29
+ const trpcState = props.pageProps?.trpcState;
30
+ const hydratedState = React.useMemo(() => {
31
+ if (!trpcState) return trpcState;
32
+ return transformer.input.deserialize(trpcState);
33
+ }, [trpcState]);
34
+ return /* @__PURE__ */ jsx(trpc.Provider, {
35
+ abortOnUnmount: prepassProps.abortOnUnmount ?? false,
36
+ client: trpcClient,
37
+ queryClient,
38
+ ssrState,
39
+ ssrContext,
40
+ children: /* @__PURE__ */ jsx(QueryClientProvider, {
41
+ client: queryClient,
42
+ children: /* @__PURE__ */ jsx(HydrationBoundary, {
43
+ state: hydratedState,
44
+ children: /* @__PURE__ */ jsx(AppOrPage, { ...props })
45
+ })
46
+ })
47
+ });
48
+ };
49
+ if (opts.ssr) opts.ssrPrepass({
50
+ parent: opts,
51
+ AppOrPage,
52
+ WithTRPC
53
+ });
54
+ else if (AppOrPage.getInitialProps) WithTRPC.getInitialProps = async (appOrPageCtx) => {
55
+ const isApp = !!appOrPageCtx.Component;
56
+ let pageProps = {};
57
+ const originalProps = await AppOrPage.getInitialProps(appOrPageCtx);
58
+ const originalPageProps = isApp ? originalProps.pageProps ?? {} : originalProps;
59
+ pageProps = {
60
+ ...originalPageProps,
61
+ ...pageProps
62
+ };
63
+ const getAppTreeProps = (props) => isApp ? { pageProps: props } : props;
64
+ return getAppTreeProps(pageProps);
65
+ };
66
+ const displayName = AppOrPage.displayName ?? AppOrPage.name ?? "Component";
67
+ WithTRPC.displayName = `withTRPC(${displayName})`;
68
+ return WithTRPC;
69
+ };
70
+ }
71
+
72
+ //#endregion
73
+ //#region src/createTRPCNext.tsx
74
+ function createTRPCNext(opts) {
75
+ const hooks = createRootHooks(opts);
76
+ const _withTRPC = withTRPC(opts);
77
+ const proxy = createReactDecoration(hooks);
78
+ return createFlatProxy((key) => {
79
+ if (key === "useContext" || key === "useUtils") return () => {
80
+ const context = hooks.useUtils();
81
+ return useMemo(() => {
82
+ return createReactQueryUtils(context);
83
+ }, [context]);
84
+ };
85
+ if (key === "useQueries") return hooks.useQueries;
86
+ if (key === "useSuspenseQueries") return hooks.useSuspenseQueries;
87
+ if (key === "withTRPC") return _withTRPC;
88
+ return proxy[key];
89
+ });
90
+ }
91
+
92
+ //#endregion
93
+ export { createTRPCNext, withTRPC };
94
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>","AppOrPage: NextComponentType<any, any, any>","props: AppPropsType<NextRouter, any> & {\n trpc?: $PrepassProps;\n }","queryClient","trpcClient","hydratedState: DehydratedState | undefined","appOrPageCtx: AppContextType","pageProps: Dict<unknown>","props: Dict<unknown>","opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>"],"sources":["../src/withTRPC.tsx","../src/createTRPCNext.tsx"],"sourcesContent":["/**\n * Heavily based on urql's ssr\n * https://github.com/FormidableLabs/urql/blob/main/packages/next-urql/src/with-urql-client.ts\n */\nimport type { DehydratedState, QueryClient } from '@tanstack/react-query';\nimport { HydrationBoundary, QueryClientProvider } from '@tanstack/react-query';\nimport type {\n CreateTRPCClientOptions,\n TRPCClient,\n TRPCClientError,\n TRPCUntypedClient,\n} from '@trpc/client';\nimport type { CoercedTransformerParameters } from '@trpc/client/unstable-internals';\nimport {\n getTransformer,\n type TransformerOptions,\n} from '@trpc/client/unstable-internals';\nimport type {\n CreateTRPCReactOptions,\n CreateTRPCReactQueryClientConfig,\n} from '@trpc/react-query/shared';\nimport { createRootHooks, getQueryClient } from '@trpc/react-query/shared';\nimport type {\n AnyRouter,\n Dict,\n inferClientTypes,\n ResponseMeta,\n} from '@trpc/server/unstable-core-do-not-import';\nimport type {\n AppContextType,\n AppPropsType,\n NextComponentType,\n NextPageContext,\n} from 'next/dist/shared/lib/utils';\nimport type { NextRouter } from 'next/router';\nimport React, { useState } from 'react';\n\nexport type WithTRPCConfig<TRouter extends AnyRouter> =\n CreateTRPCClientOptions<TRouter> &\n CreateTRPCReactQueryClientConfig & {\n abortOnUnmount?: boolean;\n };\n\ntype WithTRPCOptions<TRouter extends AnyRouter> =\n CreateTRPCReactOptions<TRouter> & {\n config: (info: { ctx?: NextPageContext }) => WithTRPCConfig<TRouter>;\n } & TransformerOptions<inferClientTypes<TRouter>>;\n\nexport type TRPCPrepassHelper = (opts: {\n parent: WithTRPCSSROptions<AnyRouter>;\n WithTRPC: NextComponentType<any, any, any>;\n AppOrPage: NextComponentType<any, any, any>;\n}) => void;\nexport type WithTRPCSSROptions<TRouter extends AnyRouter> =\n WithTRPCOptions<TRouter> & {\n /**\n * If you enable this, you also need to add a `ssrPrepass`-prop\n * @see https://trpc.io/docs/client/nextjs/ssr\n */\n ssr:\n | true\n | ((opts: { ctx: NextPageContext }) => boolean | Promise<boolean>);\n responseMeta?: (opts: {\n ctx: NextPageContext;\n clientErrors: TRPCClientError<TRouter>[];\n }) => ResponseMeta;\n /**\n * use `import { ssrPrepass } from '@trpc/next/ssrPrepass'`\n * @see https://trpc.io/docs/client/nextjs/ssr\n */\n ssrPrepass: TRPCPrepassHelper;\n };\n\nexport type WithTRPCNoSSROptions<TRouter extends AnyRouter> =\n WithTRPCOptions<TRouter> & {\n ssr?: false;\n };\n\nexport type TRPCPrepassProps<\n TRouter extends AnyRouter,\n TSSRContext extends NextPageContext = NextPageContext,\n> = {\n config: WithTRPCConfig<TRouter>;\n queryClient: QueryClient;\n trpcClient: TRPCUntypedClient<TRouter> | TRPCClient<TRouter>;\n ssrState: 'prepass';\n ssrContext: TSSRContext;\n};\n\nexport function withTRPC<\n TRouter extends AnyRouter,\n TSSRContext extends NextPageContext = NextPageContext,\n>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>) {\n const { config: getClientConfig } = opts;\n const transformer = getTransformer(\n (opts as CoercedTransformerParameters).transformer,\n );\n\n type $PrepassProps = TRPCPrepassProps<TRouter, TSSRContext>;\n return (AppOrPage: NextComponentType<any, any, any>): NextComponentType => {\n const trpc = createRootHooks<TRouter, TSSRContext>(opts);\n\n const WithTRPC = (\n props: AppPropsType<NextRouter, any> & {\n trpc?: $PrepassProps;\n },\n ) => {\n const [prepassProps] = useState(() => {\n if (props.trpc) {\n return props.trpc;\n }\n\n const config = getClientConfig({});\n const queryClient = getQueryClient(config);\n const trpcClient = trpc.createClient(config);\n\n return {\n abortOnUnmount: config.abortOnUnmount,\n queryClient,\n trpcClient,\n ssrState: opts.ssr ? ('mounting' as const) : (false as const),\n ssrContext: null,\n };\n });\n\n const { queryClient, trpcClient, ssrState, ssrContext } = prepassProps;\n\n // allow normal components to be wrapped, not just app/pages\n const trpcState = props.pageProps?.trpcState;\n\n const hydratedState: DehydratedState | undefined = React.useMemo(() => {\n if (!trpcState) {\n return trpcState;\n }\n\n return transformer.input.deserialize(trpcState);\n }, [trpcState]);\n\n return (\n <trpc.Provider\n abortOnUnmount={(prepassProps as any).abortOnUnmount ?? false}\n client={trpcClient}\n queryClient={queryClient}\n ssrState={ssrState}\n ssrContext={ssrContext}\n >\n <QueryClientProvider client={queryClient}>\n <HydrationBoundary state={hydratedState}>\n <AppOrPage {...props} />\n </HydrationBoundary>\n </QueryClientProvider>\n </trpc.Provider>\n );\n };\n\n if (opts.ssr) {\n opts.ssrPrepass({\n parent: opts,\n AppOrPage,\n WithTRPC,\n });\n } else if (AppOrPage.getInitialProps) {\n // Allow combining `getServerSideProps` and `getInitialProps`\n\n WithTRPC.getInitialProps = async (appOrPageCtx: AppContextType) => {\n // Determine if we are wrapping an App component or a Page component.\n const isApp = !!appOrPageCtx.Component;\n\n // Run the wrapped component's getInitialProps function.\n let pageProps: Dict<unknown> = {};\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const originalProps = await AppOrPage.getInitialProps!(\n appOrPageCtx as any,\n );\n const originalPageProps = isApp\n ? (originalProps.pageProps ?? {})\n : originalProps;\n\n pageProps = {\n ...originalPageProps,\n ...pageProps,\n };\n const getAppTreeProps = (props: Dict<unknown>) =>\n isApp ? { pageProps: props } : props;\n\n return getAppTreeProps(pageProps);\n };\n }\n\n const displayName = AppOrPage.displayName ?? AppOrPage.name ?? 'Component';\n WithTRPC.displayName = `withTRPC(${displayName})`;\n\n return WithTRPC as any;\n };\n}\n","/* istanbul ignore file -- @preserve */\n// We're testing this through E2E-testing\nimport type {\n CreateReactUtils,\n DecorateRouterRecord,\n TRPCUseQueries,\n TRPCUseSuspenseQueries,\n} from '@trpc/react-query/shared';\nimport {\n createReactDecoration,\n createReactQueryUtils,\n createRootHooks,\n} from '@trpc/react-query/shared';\nimport type {\n AnyRouter,\n ProtectedIntersection,\n} from '@trpc/server/unstable-core-do-not-import';\nimport { createFlatProxy } from '@trpc/server/unstable-core-do-not-import';\nimport type { NextPageContext } from 'next/types';\nimport { useMemo } from 'react';\nimport type { WithTRPCNoSSROptions, WithTRPCSSROptions } from './withTRPC';\nimport { withTRPC } from './withTRPC';\n\n/**\n * @internal\n */\nexport interface CreateTRPCNextBase<\n TRouter extends AnyRouter,\n TSSRContext extends NextPageContext,\n> {\n /**\n * @deprecated renamed to `useUtils` and will be removed in a future tRPC version\n *\n * @see https://trpc.io/docs/v11/client/react/useUtils\n */\n useContext(): CreateReactUtils<TRouter, TSSRContext>;\n /**\n * @see https://trpc.io/docs/v11/client/react/useUtils\n */\n useUtils(): CreateReactUtils<TRouter, TSSRContext>;\n withTRPC: ReturnType<typeof withTRPC<TRouter, TSSRContext>>;\n useQueries: TRPCUseQueries<TRouter>;\n useSuspenseQueries: TRPCUseSuspenseQueries<TRouter>;\n}\n\n/**\n * @internal\n */\nexport type CreateTRPCNext<\n TRouter extends AnyRouter,\n TSSRContext extends NextPageContext,\n> = ProtectedIntersection<\n CreateTRPCNextBase<TRouter, TSSRContext>,\n DecorateRouterRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >\n>;\n\nexport function createTRPCNext<\n TRouter extends AnyRouter,\n TSSRContext extends NextPageContext = NextPageContext,\n>(\n opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>,\n): CreateTRPCNext<TRouter, TSSRContext> {\n const hooks = createRootHooks<TRouter, TSSRContext>(opts);\n\n // TODO: maybe set TSSRContext to `never` when using `WithTRPCNoSSROptions`\n const _withTRPC = withTRPC(opts);\n\n const proxy = createReactDecoration(hooks) as DecorateRouterRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >;\n\n return createFlatProxy((key) => {\n if (key === 'useContext' || key === 'useUtils') {\n return () => {\n const context = hooks.useUtils();\n // create a stable reference of the utils context\n return useMemo(() => {\n return (createReactQueryUtils as any)(context);\n }, [context]);\n };\n }\n\n if (key === 'useQueries') {\n return hooks.useQueries;\n }\n\n if (key === 'useSuspenseQueries') {\n return hooks.useSuspenseQueries;\n }\n\n if (key === 'withTRPC') {\n return _withTRPC;\n }\n\n return proxy[key];\n });\n}\n"],"mappings":";;;;;;;;AAyFA,SAAgB,SAGdA,MAAmE;CACnE,MAAM,EAAE,QAAQ,iBAAiB,GAAG;CACpC,MAAM,cAAc,eACjB,KAAsC,YACxC;AAGD,QAAO,CAACC,cAAmE;EACzE,MAAM,OAAO,gBAAsC,KAAK;EAExD,MAAM,WAAW,CACfC,UAGG;GACH,MAAM,CAAC,aAAa,GAAG,SAAS,MAAM;AACpC,QAAI,MAAM,KACR,QAAO,MAAM;IAGf,MAAM,SAAS,gBAAgB,CAAE,EAAC;IAClC,MAAMC,gBAAc,eAAe,OAAO;IAC1C,MAAMC,eAAa,KAAK,aAAa,OAAO;AAE5C,WAAO;KACL,gBAAgB,OAAO;KACvB;KACA;KACA,UAAU,KAAK,MAAO,aAAwB;KAC9C,YAAY;IACb;GACF,EAAC;GAEF,MAAM,EAAE,aAAa,YAAY,UAAU,YAAY,GAAG;GAG1D,MAAM,YAAY,MAAM,WAAW;GAEnC,MAAMC,gBAA6C,MAAM,QAAQ,MAAM;AACrE,SAAK,UACH,QAAO;AAGT,WAAO,YAAY,MAAM,YAAY,UAAU;GAChD,GAAE,CAAC,SAAU,EAAC;AAEf,0BACE,IAAC,KAAK;IACJ,gBAAiB,aAAqB,kBAAkB;IACxD,QAAQ;IACK;IACH;IACE;8BAEZ,IAAC;KAAoB,QAAQ;+BAC3B,IAAC;MAAkB,OAAO;gCACxB,IAAC,aAAU,GAAI,QAAS;OACN;MACA;KACR;EAEnB;AAED,MAAI,KAAK,IACP,MAAK,WAAW;GACd,QAAQ;GACR;GACA;EACD,EAAC;WACO,UAAU,gBAGnB,UAAS,kBAAkB,OAAOC,iBAAiC;GAEjE,MAAM,UAAU,aAAa;GAG7B,IAAIC,YAA2B,CAAE;GAEjC,MAAM,gBAAgB,MAAM,UAAU,gBACpC,aACD;GACD,MAAM,oBAAoB,QACrB,cAAc,aAAa,CAAE,IAC9B;AAEJ,eAAY;IACV,GAAG;IACH,GAAG;GACJ;GACD,MAAM,kBAAkB,CAACC,UACvB,QAAQ,EAAE,WAAW,MAAO,IAAG;AAEjC,UAAO,gBAAgB,UAAU;EAClC;EAGH,MAAM,cAAc,UAAU,eAAe,UAAU,QAAQ;AAC/D,WAAS,eAAe,WAAW,YAAY;AAE/C,SAAO;CACR;AACF;;;;ACvID,SAAgB,eAIdC,MACsC;CACtC,MAAM,QAAQ,gBAAsC,KAAK;CAGzD,MAAM,YAAY,SAAS,KAAK;CAEhC,MAAM,QAAQ,sBAAsB,MAAM;AAK1C,QAAO,gBAAgB,CAAC,QAAQ;AAC9B,MAAI,QAAQ,gBAAgB,QAAQ,WAClC,QAAO,MAAM;GACX,MAAM,UAAU,MAAM,UAAU;AAEhC,UAAO,QAAQ,MAAM;AACnB,WAAO,AAAC,sBAA8B,QAAQ;GAC/C,GAAE,CAAC,OAAQ,EAAC;EACd;AAGH,MAAI,QAAQ,aACV,QAAO,MAAM;AAGf,MAAI,QAAQ,qBACV,QAAO,MAAM;AAGf,MAAI,QAAQ,WACV,QAAO;AAGT,SAAO,MAAM;CACd,EAAC;AACH"}
@@ -0,0 +1,90 @@
1
+ import { AnyClientTypes, AnyProcedure, AnyRootTypes, AnyRouter, ErrorHandlerOptions, MaybePromise, ProcedureType, ProtectedIntersection, RootConfig, RouterRecord, Simplify, TRPCResponse, inferClientTypes, inferProcedureInput, inferTransformedProcedureOutput } from "@trpc/server/unstable-core-do-not-import";
2
+ import { CreateTRPCClientOptions, Resolver, TRPCClient, TRPCUntypedClient } from "@trpc/client";
3
+ import { CreateContextCallback, inferProcedureOutput } from "@trpc/server";
4
+
5
+ //#region src/app-dir/shared.d.ts
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ interface CreateTRPCNextAppRouterOptions<TRouter extends AnyRouter> {
11
+ config: () => CreateTRPCClientOptions<TRouter>;
12
+ }
13
+ /**
14
+ * @internal
15
+ */
16
+
17
+ /**
18
+ * @internal
19
+ */
20
+ interface ActionHandlerDef {
21
+ input?: any;
22
+ output?: any;
23
+ errorShape: any;
24
+ }
25
+ /**
26
+ * @internal
27
+ */
28
+ type inferActionDef<TRoot extends AnyClientTypes, TProc extends AnyProcedure> = {
29
+ input: inferProcedureInput<TProc>;
30
+ output: inferProcedureOutput<TProc>;
31
+ errorShape: TRoot['errorShape'];
32
+ };
33
+ //#endregion
34
+ //#region src/app-dir/types.d.ts
35
+ type ResolverDef = {
36
+ input: any;
37
+ output: any;
38
+ transformer: boolean;
39
+ errorShape: any;
40
+ };
41
+ type DecorateProcedureServer<TType extends ProcedureType, TDef extends ResolverDef> = TType extends 'query' ? {
42
+ query: Resolver<TDef>;
43
+ revalidate: (input?: TDef['input']) => Promise<{
44
+ revalidated: false;
45
+ error: string;
46
+ } | {
47
+ revalidated: true;
48
+ }>;
49
+ } : TType extends 'mutation' ? {
50
+ mutate: Resolver<TDef>;
51
+ } : TType extends 'subscription' ? {
52
+ subscribe: Resolver<TDef>;
53
+ } : never;
54
+ type NextAppDirDecorateRouterRecord<TRoot extends AnyRootTypes, TRecord extends RouterRecord> = { [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value ? $Value extends AnyProcedure ? DecorateProcedureServer<$Value['_def']['type'], {
55
+ input: inferProcedureInput<$Value>;
56
+ output: inferTransformedProcedureOutput<TRoot, $Value>;
57
+ errorShape: TRoot['errorShape'];
58
+ transformer: TRoot['transformer'];
59
+ }> : $Value extends RouterRecord ? NextAppDirDecorateRouterRecord<TRoot, $Value> : never : never };
60
+ //#endregion
61
+ //#region src/app-dir/server.d.ts
62
+ declare function experimental_createTRPCNextAppDirServer<TRouter extends AnyRouter>(opts: CreateTRPCNextAppRouterOptions<TRouter>): NextAppDirDecorateRouterRecord<TRouter["_def"]["_config"]["$types"], TRouter["_def"]["record"]>;
63
+ /**
64
+ * @internal
65
+ */
66
+ type TRPCActionHandler<TDef extends ActionHandlerDef> = (input: FormData | TDef['input']) => Promise<TRPCResponse<TDef['output'], TDef['errorShape']>>;
67
+ declare function experimental_createServerActionHandler<TInstance extends {
68
+ _config: RootConfig<AnyRootTypes>;
69
+ }>(t: TInstance, opts: CreateContextCallback<TInstance['_config']['$types']['ctx'], () => MaybePromise<TInstance['_config']['$types']['ctx']>> & {
70
+ /**
71
+ * Transform form data to a `Record` before passing it to the procedure
72
+ * @default true
73
+ */
74
+ normalizeFormData?: boolean;
75
+ /**
76
+ * Called when an error occurs in the handler
77
+ */
78
+ onError?: (opts: ErrorHandlerOptions<TInstance['_config']['$types']['ctx']>) => void;
79
+ /**
80
+ * Rethrow errors that should be handled by Next.js
81
+ * @default true
82
+ */
83
+ rethrowNextErrors?: boolean;
84
+ }): <TProc extends AnyProcedure>(proc: TProc) => TRPCActionHandler<Simplify<inferActionDef<inferClientTypes<TInstance>, TProc>>>;
85
+ declare function experimental_revalidateEndpoint(req: Request): Promise<Response>;
86
+ //# sourceMappingURL=server.d.ts.map
87
+
88
+ //#endregion
89
+ export { ActionHandlerDef, CreateTRPCNextAppRouterOptions, TRPCActionHandler, experimental_createServerActionHandler, experimental_createTRPCNextAppDirServer, experimental_revalidateEndpoint };
90
+ //# sourceMappingURL=server.d-BXv5jwlB.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d-BXv5jwlB.d.mts","names":[],"sources":["../src/app-dir/shared.ts","../src/app-dir/types.ts","../src/app-dir/server.ts"],"sourcesContent":[],"mappings":";;;;;;ACiBA;;;AAEe,UD2EE,8BC3EF,CAAA,gBD2EiD,SC3EjD,CAAA,CAAA;EAAW,MACtB,EAAA,GAAA,GD2EY,uBC3EZ,CD2EoC,OC3EpC,CAAA;;;;;;;;;AAeiB,UDmFJ,gBAAA,CCnFI;EAAQ,KAAA,CAAA,EAAA,GAAA;EAIjB,MAAA,CAAA,EAAA,GAAA;EAA8B,UAAA,EAAA,GAAA;;;;;AAIP,KDqFvB,cCrFuB,CAAA,cDsFnB,cCtFmB,EAAA,cDuFnB,YCvFmB,CAAA,GAAA;EAAI,KACjC,EDwFG,mBCxFH,CDwFuB,KCxFvB,CAAA;EAAM,MAAS,EDyFX,oBCzFW,CDyFU,KCzFV,CAAA;EAAY,UAEvB,EDwFI,KCxFJ,CAAA,YAAA,CAAA;CAAM;;;KApCX,WAAA;;;EDoFY,WAAA,EAAA,OAAA;EAA8B,UAAA,EAAA,GAAA;CAAA;AACP,KC9E5B,uBD8E4B,CAAA,cC7ExB,aD6EwB,EAAA,aC5EzB,WD4EyB,CAAA,GC3EpC,KD2EoC,SAAA,OAAA,GAAA;EAAO,KAA/B,ECzEH,QDyEG,CCzEM,IDyEN,CAAA;EAAuB,UAAA,EAAA,CAAA,KAAA,CAAA,ECvEvB,IDuEuB,CAAA,OAAA,CAAA,EAAA,GCtE5B,ODsE4B,CAAA;IAuBtB,WAAA,EAAA,KAAgB;IAUrB,KAAA,EAAA,MAAc;EAAA,CAAA,GAAA;IACV,WAAA,EAAA,IAAA;EAAc,CAAA,CAAA;CACF,GCrGxB,KDuGyB,SAAA,UAAA,GAAA;EAAK,MAAzB,ECrGO,QDqGP,CCrGgB,IDqGhB,CAAA;CAAmB,GCnGtB,KDoGyB,SAAA,cAAA,GAAA;EAAK,SAA1B,EClGW,QDkGX,CClGoB,IDkGpB,CAAA;CAAoB,GAAA,KAChB;AAAK,KC/FP,8BD+FO,CAAA,cC9FH,YD8FG,EAAA,gBC7FD,YD6FC,CAAA,GAAA,iBC3FF,UAAU,QAAQ,6BAC7B,eAAe,eACb,wBACE;SAES,oBAAoB;UACnB,gCAAgC,OAAO;EAvCtD,UAAW,EAwCQ,KAxCR,CAAA,YAAA,CAAA;EAOJ,WAAA,EAkCa,KAlCb,CAAA,aAAuB,CAAA;AAAA,CAAA,CAAA,GAqC3B,MArC2B,SAqCZ,YArCY,GAsCzB,8BAtCyB,CAsCM,KAtCN,EAsCa,MAtCb,CAAA,GAAA,KAAA,GAAA,KAAA,EAAA;;;AD6ElB,iBEtDD,uCFsD+B,CAAA,gBErD7B,SFqD6B,CAAA,CAAA,IAAA,EEpDvC,8BFoDuC,CEpDR,OFoDQ,CAAA,CAAA,EEpDA,8BFoDA,CEpDA,OFoDA,CAAA,MAAA,CAAA,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,EEpDA,OFoDA,CAAA,MAAA,CAAA,CAAA,QAAA,CAAA,CAAA;;;;AAC/B,KEnBJ,iBFmBI,CAAA,aEnB2B,gBFmB3B,CAAA,GAAA,CAAA,KAAA,EElBP,QFkBO,GElBI,IFkBJ,CAAA,OAAA,CAAA,EAAA,GEjBX,OFiBW,CEjBH,YFiBG,CEjBU,IFiBV,CAAA,QAAA,CAAA,EEjB0B,IFiB1B,CAAA,YAAA,CAAA,CAAA,CAAA;AAAuB,iBEfvB,sCFeuB,CAAA,kBAAA;EAuBtB,OAAA,EEpCJ,UFoCoB,CEpCT,YFoCS,CAAA;AAUjC,CAAA,CAAA,CAAA,CAAY,EE3CP,SF2CO,EAAA,IAAc,EE1ClB,qBF0CkB,CEzCtB,SFyCsB,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,CAAA,KAAA,CAAA,EAAA,GAAA,GExChB,YFwCgB,CExCH,SFwCG,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,GAAA;EAAA;;;;EAIQ,iBAAzB,CAAA,EAAA,OAAA;EAAmB;;;EAET,OAAA,CAAA,EAAA,CAAA,IAAA,EEnCP,mBFmCO,CEnCa,SFmCb,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,CAAA,KAAA,CAAA,CAAA,EAAA,GAAA,IAAA;;;;AC9H+B;EAStC,iBAAA,CAAA,EAAA,OAAuB;CAAA,CAAA,EAAA,CAAA,cCsGgB,YDtGhB,CAAA,CAAA,IAAA,ECuGzB,KDvGyB,EAAA,GCwG9B,iBDxG8B,CCyG/B,QDzG+B,CCyGtB,cDzGsB,CCyGP,gBDzGO,CCyGU,SDzGV,CAAA,ECyGsB,KDzGtB,CAAA,CAAA,CAAA;AACnB,iBCmLM,+BAAA,CDnLN,GAAA,ECmL2C,ODnL3C,CAAA,ECmLkD,ODnLlD,CCmLkD,QDnLlD,CAAA"}
@@ -0,0 +1,90 @@
1
+ import { CreateTRPCClientOptions, Resolver, TRPCClient, TRPCUntypedClient } from "@trpc/client";
2
+ import { AnyClientTypes, AnyProcedure, AnyRootTypes, AnyRouter, ErrorHandlerOptions, MaybePromise, ProcedureType, ProtectedIntersection, RootConfig, RouterRecord, Simplify, TRPCResponse, inferClientTypes, inferProcedureInput, inferTransformedProcedureOutput } from "@trpc/server/unstable-core-do-not-import";
3
+ import { CreateContextCallback, inferProcedureOutput } from "@trpc/server";
4
+
5
+ //#region src/app-dir/shared.d.ts
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ interface CreateTRPCNextAppRouterOptions<TRouter extends AnyRouter> {
11
+ config: () => CreateTRPCClientOptions<TRouter>;
12
+ }
13
+ /**
14
+ * @internal
15
+ */
16
+
17
+ /**
18
+ * @internal
19
+ */
20
+ interface ActionHandlerDef {
21
+ input?: any;
22
+ output?: any;
23
+ errorShape: any;
24
+ }
25
+ /**
26
+ * @internal
27
+ */
28
+ type inferActionDef<TRoot extends AnyClientTypes, TProc extends AnyProcedure> = {
29
+ input: inferProcedureInput<TProc>;
30
+ output: inferProcedureOutput<TProc>;
31
+ errorShape: TRoot['errorShape'];
32
+ };
33
+ //#endregion
34
+ //#region src/app-dir/types.d.ts
35
+ type ResolverDef = {
36
+ input: any;
37
+ output: any;
38
+ transformer: boolean;
39
+ errorShape: any;
40
+ };
41
+ type DecorateProcedureServer<TType extends ProcedureType, TDef extends ResolverDef> = TType extends 'query' ? {
42
+ query: Resolver<TDef>;
43
+ revalidate: (input?: TDef['input']) => Promise<{
44
+ revalidated: false;
45
+ error: string;
46
+ } | {
47
+ revalidated: true;
48
+ }>;
49
+ } : TType extends 'mutation' ? {
50
+ mutate: Resolver<TDef>;
51
+ } : TType extends 'subscription' ? {
52
+ subscribe: Resolver<TDef>;
53
+ } : never;
54
+ type NextAppDirDecorateRouterRecord<TRoot extends AnyRootTypes, TRecord extends RouterRecord> = { [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value ? $Value extends AnyProcedure ? DecorateProcedureServer<$Value['_def']['type'], {
55
+ input: inferProcedureInput<$Value>;
56
+ output: inferTransformedProcedureOutput<TRoot, $Value>;
57
+ errorShape: TRoot['errorShape'];
58
+ transformer: TRoot['transformer'];
59
+ }> : $Value extends RouterRecord ? NextAppDirDecorateRouterRecord<TRoot, $Value> : never : never };
60
+ //#endregion
61
+ //#region src/app-dir/server.d.ts
62
+ declare function experimental_createTRPCNextAppDirServer<TRouter extends AnyRouter>(opts: CreateTRPCNextAppRouterOptions<TRouter>): NextAppDirDecorateRouterRecord<TRouter["_def"]["_config"]["$types"], TRouter["_def"]["record"]>;
63
+ /**
64
+ * @internal
65
+ */
66
+ type TRPCActionHandler<TDef extends ActionHandlerDef> = (input: FormData | TDef['input']) => Promise<TRPCResponse<TDef['output'], TDef['errorShape']>>;
67
+ declare function experimental_createServerActionHandler<TInstance extends {
68
+ _config: RootConfig<AnyRootTypes>;
69
+ }>(t: TInstance, opts: CreateContextCallback<TInstance['_config']['$types']['ctx'], () => MaybePromise<TInstance['_config']['$types']['ctx']>> & {
70
+ /**
71
+ * Transform form data to a `Record` before passing it to the procedure
72
+ * @default true
73
+ */
74
+ normalizeFormData?: boolean;
75
+ /**
76
+ * Called when an error occurs in the handler
77
+ */
78
+ onError?: (opts: ErrorHandlerOptions<TInstance['_config']['$types']['ctx']>) => void;
79
+ /**
80
+ * Rethrow errors that should be handled by Next.js
81
+ * @default true
82
+ */
83
+ rethrowNextErrors?: boolean;
84
+ }): <TProc extends AnyProcedure>(proc: TProc) => TRPCActionHandler<Simplify<inferActionDef<inferClientTypes<TInstance>, TProc>>>;
85
+ declare function experimental_revalidateEndpoint(req: Request): Promise<Response>;
86
+ //# sourceMappingURL=server.d.ts.map
87
+
88
+ //#endregion
89
+ export { ActionHandlerDef, CreateTRPCNextAppRouterOptions, TRPCActionHandler, experimental_createServerActionHandler, experimental_createTRPCNextAppDirServer, experimental_revalidateEndpoint };
90
+ //# sourceMappingURL=server.d-DLnegS7F.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d-DLnegS7F.d.cts","names":[],"sources":["../src/app-dir/shared.ts","../src/app-dir/types.ts","../src/app-dir/server.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const __trpc_server_unstable_core_do_not_import = require_chunk.__toESM(require("@trpc/server/unstable-core-do-not-import"));
3
+ const __trpc_client = require_chunk.__toESM(require("@trpc/client"));
4
+
5
+ //#region src/app-dir/shared.ts
6
+ /**
7
+ * @internal
8
+ */
9
+ function generateCacheTag(procedurePath, input) {
10
+ return input ? `${procedurePath}?input=${JSON.stringify(input)}` : procedurePath;
11
+ }
12
+ function isFormData(value) {
13
+ if (typeof FormData === "undefined") return false;
14
+ return value instanceof FormData;
15
+ }
16
+
17
+ //#endregion
18
+ Object.defineProperty(exports, 'generateCacheTag', {
19
+ enumerable: true,
20
+ get: function () {
21
+ return generateCacheTag;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, 'isFormData', {
25
+ enumerable: true,
26
+ get: function () {
27
+ return isFormData;
28
+ }
29
+ });
@@ -0,0 +1,18 @@
1
+ import { createRecursiveProxy } from "@trpc/server/unstable-core-do-not-import";
2
+ import { TRPCUntypedClient } from "@trpc/client";
3
+
4
+ //#region src/app-dir/shared.ts
5
+ /**
6
+ * @internal
7
+ */
8
+ function generateCacheTag(procedurePath, input) {
9
+ return input ? `${procedurePath}?input=${JSON.stringify(input)}` : procedurePath;
10
+ }
11
+ function isFormData(value) {
12
+ if (typeof FormData === "undefined") return false;
13
+ return value instanceof FormData;
14
+ }
15
+
16
+ //#endregion
17
+ export { generateCacheTag, isFormData };
18
+ //# sourceMappingURL=shared-FEQznZ-6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-FEQznZ-6.mjs","names":["procedurePath: string","input: any","value: unknown"],"sources":["../src/app-dir/shared.ts"],"sourcesContent":["import type {\n CreateTRPCClientOptions,\n Resolver,\n TRPCClient,\n} from '@trpc/client';\nimport { getUntypedClient, TRPCUntypedClient } from '@trpc/client';\nimport type { inferProcedureOutput } from '@trpc/server';\nimport type {\n AnyClientTypes,\n AnyProcedure,\n AnyQueryProcedure,\n AnyRootTypes,\n AnyRouter,\n inferProcedureInput,\n inferTransformedProcedureOutput,\n ProtectedIntersection,\n RouterRecord,\n} from '@trpc/server/unstable-core-do-not-import';\nimport { createRecursiveProxy } from '@trpc/server/unstable-core-do-not-import';\n\n/**\n * @internal\n */\nexport type UseProcedureRecord<\n TRoot extends AnyRootTypes,\n TRecord extends RouterRecord,\n> = {\n [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value\n ? $Value extends AnyQueryProcedure\n ? Resolver<{\n input: inferProcedureInput<$Value>;\n output: inferTransformedProcedureOutput<TRoot, $Value>;\n errorShape: TRoot['errorShape'];\n transformer: TRoot['transformer'];\n }>\n : $Value extends RouterRecord\n ? UseProcedureRecord<TRoot, $Value>\n : never\n : never;\n};\n\nexport function createUseProxy<TRouter extends AnyRouter>(\n client: TRPCUntypedClient<TRouter> | TRPCClient<TRouter>,\n) {\n const untypedClient: TRPCUntypedClient<TRouter> =\n client instanceof TRPCUntypedClient ? client : getUntypedClient(client);\n\n return createRecursiveProxy<\n UseProcedureRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >\n >((opts) => {\n const path = opts.path.join('.');\n\n return untypedClient.query(path, ...opts.args);\n });\n}\n\ntype NextAppRouterUse<TRouter extends AnyRouter> = {\n <TData extends Promise<unknown>[]>(\n cb: (\n t: UseProcedureRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >,\n ) => [...TData],\n ): {\n [TKey in keyof TData]: Awaited<TData[TKey]>;\n };\n <TData extends Promise<unknown>>(\n cb: (\n t: UseProcedureRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >,\n ) => TData,\n ): Awaited<TData>;\n};\ntype CreateTRPCNextAppRouterBase<TRouter extends AnyRouter> = {\n use: NextAppRouterUse<TRouter>;\n};\nexport type CreateTRPCNextAppRouter<TRouter extends AnyRouter> =\n ProtectedIntersection<\n CreateTRPCNextAppRouterBase<TRouter>,\n UseProcedureRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >\n >;\n\n/**\n * @internal\n */\nexport interface CreateTRPCNextAppRouterOptions<TRouter extends AnyRouter> {\n config: () => CreateTRPCClientOptions<TRouter>;\n}\n\n/**\n * @internal\n */\nexport function generateCacheTag(procedurePath: string, input: any) {\n return input\n ? `${procedurePath}?input=${JSON.stringify(input)}`\n : procedurePath;\n}\n\nexport function isFormData(value: unknown): value is FormData {\n if (typeof FormData === 'undefined') {\n // FormData is not supported\n return false;\n }\n return value instanceof FormData;\n}\n\n/**\n * @internal\n */\nexport interface ActionHandlerDef {\n input?: any;\n output?: any;\n errorShape: any;\n}\n\n// ts-prune-ignore-next\n/**\n * @internal\n */\nexport type inferActionDef<\n TRoot extends AnyClientTypes,\n TProc extends AnyProcedure,\n> = {\n input: inferProcedureInput<TProc>;\n output: inferProcedureOutput<TProc>;\n errorShape: TRoot['errorShape'];\n};\n"],"mappings":";;;;;;;AAqGA,SAAgB,iBAAiBA,eAAuBC,OAAY;AAClE,QAAO,SACF,EAAE,cAAc,SAAS,KAAK,UAAU,MAAM,CAAC,IAChD;AACL;AAED,SAAgB,WAAWC,OAAmC;AAC5D,YAAW,aAAa,YAEtB,QAAO;AAET,QAAO,iBAAiB;AACzB"}
@@ -0,0 +1,104 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const __tanstack_react_query = require_chunk.__toESM(require("@tanstack/react-query"));
3
+ const __trpc_client_unstable_internals = require_chunk.__toESM(require("@trpc/client/unstable-internals"));
4
+ const __trpc_react_query_shared = require_chunk.__toESM(require("@trpc/react-query/shared"));
5
+ const react = require_chunk.__toESM(require("react"));
6
+ const __trpc_client = require_chunk.__toESM(require("@trpc/client"));
7
+
8
+ //#region src/ssrPrepass.ts
9
+ function transformQueryOrMutationCacheErrors(result) {
10
+ const error = result.state.error;
11
+ if (error instanceof Error && error.name === "TRPCClientError") {
12
+ const newError = {
13
+ message: error.message,
14
+ data: error.data,
15
+ shape: error.shape
16
+ };
17
+ return {
18
+ ...result,
19
+ state: {
20
+ ...result.state,
21
+ error: newError
22
+ }
23
+ };
24
+ }
25
+ return result;
26
+ }
27
+ const ssrPrepass = (opts) => {
28
+ const { parent, WithTRPC, AppOrPage } = opts;
29
+ const transformer = (0, __trpc_client_unstable_internals.getTransformer)(parent.transformer);
30
+ WithTRPC.getInitialProps = async (appOrPageCtx) => {
31
+ const shouldSsr = async () => {
32
+ if (typeof window !== "undefined") return false;
33
+ if (typeof parent.ssr === "function") try {
34
+ return await parent.ssr({ ctx: appOrPageCtx.ctx });
35
+ } catch {
36
+ return false;
37
+ }
38
+ return parent.ssr;
39
+ };
40
+ const ssrEnabled = await shouldSsr();
41
+ const AppTree = appOrPageCtx.AppTree;
42
+ const isApp = !!appOrPageCtx.Component;
43
+ const ctx = isApp ? appOrPageCtx.ctx : appOrPageCtx;
44
+ let pageProps = {};
45
+ if (AppOrPage.getInitialProps) {
46
+ const originalProps = await AppOrPage.getInitialProps(appOrPageCtx);
47
+ const originalPageProps = isApp ? originalProps.pageProps ?? {} : originalProps;
48
+ pageProps = {
49
+ ...originalPageProps,
50
+ ...pageProps
51
+ };
52
+ }
53
+ const getAppTreeProps = (props) => isApp ? { pageProps: props } : props;
54
+ if (typeof window !== "undefined" || !ssrEnabled) return getAppTreeProps(pageProps);
55
+ const config = parent.config({ ctx });
56
+ const trpcClient = (0, __trpc_client.createTRPCUntypedClient)(config);
57
+ const queryClient = (0, __trpc_react_query_shared.getQueryClient)(config);
58
+ const trpcProp = {
59
+ config,
60
+ trpcClient,
61
+ queryClient,
62
+ ssrState: "prepass",
63
+ ssrContext: ctx
64
+ };
65
+ const prepassProps = {
66
+ pageProps,
67
+ trpc: trpcProp
68
+ };
69
+ const reactDomServer = await import("react-dom/server");
70
+ while (true) {
71
+ reactDomServer.renderToString((0, react.createElement)(AppTree, prepassProps));
72
+ if (!queryClient.isFetching()) break;
73
+ await new Promise((resolve) => {
74
+ const unsub = queryClient.getQueryCache().subscribe((event) => {
75
+ if (event?.query.getObserversCount() === 0) {
76
+ resolve();
77
+ unsub();
78
+ }
79
+ });
80
+ });
81
+ }
82
+ const dehydratedCache = (0, __tanstack_react_query.dehydrate)(queryClient, { shouldDehydrateQuery(query) {
83
+ const isExcludedFromSSr = query.state.fetchStatus === "idle" && query.state.status === "pending";
84
+ return !isExcludedFromSSr;
85
+ } });
86
+ const dehydratedCacheWithErrors = {
87
+ ...dehydratedCache,
88
+ queries: dehydratedCache.queries.map(transformQueryOrMutationCacheErrors),
89
+ mutations: dehydratedCache.mutations.map(transformQueryOrMutationCacheErrors)
90
+ };
91
+ pageProps["trpcState"] = transformer.input.serialize(dehydratedCacheWithErrors);
92
+ const appTreeProps = getAppTreeProps(pageProps);
93
+ const meta = parent.responseMeta?.({
94
+ ctx,
95
+ clientErrors: [...dehydratedCache.queries, ...dehydratedCache.mutations].map((v) => v.state.error).flatMap((err) => err instanceof Error && err.name === "TRPCClientError" ? [err] : [])
96
+ }) ?? {};
97
+ for (const [key, value] of Object.entries(meta.headers ?? {})) if (typeof value === "string") ctx.res?.setHeader(key, value);
98
+ if (meta.status && ctx.res) ctx.res.statusCode = meta.status;
99
+ return appTreeProps;
100
+ };
101
+ };
102
+
103
+ //#endregion
104
+ exports.ssrPrepass = ssrPrepass;
@@ -0,0 +1,9 @@
1
+ import { TRPCPrepassHelper } from "./withTRPC.d-DctYN4Yz.cjs";
2
+
3
+ //#region src/ssrPrepass.d.ts
4
+ declare const ssrPrepass: TRPCPrepassHelper;
5
+ //# sourceMappingURL=ssrPrepass.d.ts.map
6
+
7
+ //#endregion
8
+ export { ssrPrepass };
9
+ //# sourceMappingURL=ssrPrepass.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssrPrepass.d.cts","names":[],"sources":["../src/ssrPrepass.ts"],"sourcesContent":[],"mappings":";;;cA8Ca,YAAY"}
@@ -0,0 +1,9 @@
1
+ import { TRPCPrepassHelper } from "./withTRPC.d-BY6FsDWi.mjs";
2
+
3
+ //#region src/ssrPrepass.d.ts
4
+ declare const ssrPrepass: TRPCPrepassHelper;
5
+ //# sourceMappingURL=ssrPrepass.d.ts.map
6
+
7
+ //#endregion
8
+ export { ssrPrepass };
9
+ //# sourceMappingURL=ssrPrepass.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssrPrepass.d.mts","names":[],"sources":["../src/ssrPrepass.ts"],"sourcesContent":[],"mappings":";;;cA8Ca,YAAY"}