{"version":3,"file":"server.mjs","names":[],"sources":["../src/server.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n                       🗲 Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website:                  https://stormsoftware.com\n Repository:               https://github.com/storm-software/stryke\n Documentation:            https://docs.stormsoftware.com/projects/stryke\n Contact:                  https://stormsoftware.com/contact\n\n SPDX-License-Identifier:  Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------\n\n                       ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 License, and is\n free for commercial and private use. For more information, please visit\n our licensing page.\n\n Website:         https://stormsoftware.com\n Repository:      https://github.com/storm-software/stryke\n Documentation:   https://stormsoftware.com/projects/stryke/docs\n Contact:         https://stormsoftware.com/contact\n License:         https://stormsoftware.com/projects/stryke/license\n\n ------------------------------------------------------------------- */\n\nimport type { MaybePromise } from \"@stryke/types\";\nimport type { Resolver } from \"@trpc/client\";\nimport { loggerLink } from \"@trpc/client\";\nimport { experimental_nextCacheLink } from \"@trpc/next/app-dir/links/nextCache\";\nimport { experimental_createTRPCNextAppDirServer } from \"@trpc/next/app-dir/server\";\nimport type { AnyTRPCRouter, inferRouterContext } from \"@trpc/server\";\nimport type {\n  AnyProcedure,\n  AnyRootTypes,\n  inferProcedureInput,\n  inferTransformedProcedureOutput,\n  ProcedureType,\n  RouterRecord\n} from \"@trpc/server/unstable-core-do-not-import\";\nimport type { FeatureFlags, ResolverDef } from \"@trpc/tanstack-react-query\";\nimport type { ReadonlyRequestCookies } from \"next/dist/server/web/spec-extension/adapters/request-cookies\";\nimport { transformer } from \"./shared\";\n\nexport type DecorateProcedureServer<\n  TType extends ProcedureType,\n  TDef extends ResolverDef\n> = TType extends \"query\"\n  ? {\n      query: Resolver<TDef>;\n      revalidate: (\n        input?: TDef[\"input\"]\n      ) => Promise<\n        { revalidated: false; error: string } | { revalidated: true }\n      >;\n    }\n  : TType extends \"mutation\"\n    ? {\n        mutate: Resolver<TDef>;\n      }\n    : TType extends \"subscription\"\n      ? {\n          subscribe: Resolver<TDef>;\n        }\n      : never;\n\nexport type NextAppDirDecorateRouterRecord<\n  TRoot extends AnyRootTypes,\n  TRecord extends RouterRecord\n> = {\n  [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value\n    ? $Value extends AnyProcedure\n      ? DecorateProcedureServer<\n          $Value[\"_def\"][\"type\"],\n          {\n            input: inferProcedureInput<$Value>;\n            output: inferTransformedProcedureOutput<TRoot, $Value>;\n            errorShape: TRoot[\"errorShape\"];\n            transformer: TRoot[\"transformer\"];\n            featureFlags: FeatureFlags;\n          }\n        >\n      : $Value extends RouterRecord\n        ? NextAppDirDecorateRouterRecord<TRoot, $Value>\n        : never\n    : never;\n};\n\n/**\n * This client invokes procedures directly on the server without fetching over HTTP.\n *\n * @param cookies - A function that returns the cookies\n * @param router - The router created by the user\n * @param createContext - An optional function to generate a context\n */\nexport function createTRPCServer<\n  TRouter extends AnyTRPCRouter,\n  TContext extends inferRouterContext<TRouter> = inferRouterContext<TRouter>\n>(\n  cookies: () => Promise<ReadonlyRequestCookies>,\n  router: TRouter,\n  createContext: () => MaybePromise<TContext> = () => ({}) as TContext\n): NextAppDirDecorateRouterRecord<\n  TRouter[\"_def\"][\"_config\"][\"$types\"],\n  TRouter[\"_def\"][\"record\"]\n> {\n  return experimental_createTRPCNextAppDirServer<TRouter>({\n    config() {\n      return {\n        links: [\n          loggerLink({\n            enabled: _op => true\n          }),\n          experimental_nextCacheLink({\n            // requests are cached for 5 seconds\n            revalidate: 5,\n            router,\n            transformer,\n            createContext: async () => {\n              const context = await Promise.resolve(createContext());\n\n              context.headers ??= {};\n              context.headers[\"x-trpc-source\"] = \"rsc-invoke\";\n              context.headers.cookie = (await cookies()).toString();\n\n              return context;\n            }\n          })\n        ]\n      };\n    }\n  });\n}\n\nexport {\n  experimental_notFound as notFound,\n  experimental_redirect as redirect\n} from \"@trpc/server/adapters/next-app-dir\";\n"],"mappings":";;;;;;;;;;;;;;AAwGA,SAAgB,iBAId,SACA,QACA,uBAAqD,CAAC,IAItD;CACA,OAAO,wCAAiD,EACtD,SAAS;EACP,OAAO,EACL,OAAO,CACL,WAAW,EACT,UAAS,QAAO,KAClB,CAAC,GACD,2BAA2B;GAEzB,YAAY;GACZ;GACA;GACA,eAAe,YAAY;IACzB,MAAM,UAAU,MAAM,QAAQ,QAAQ,cAAc,CAAC;IAErD,QAAQ,YAAY,CAAC;IACrB,QAAQ,QAAQ,mBAAmB;IACnC,QAAQ,QAAQ,UAAU,MAAM,QAAQ,EAAC,CAAE,SAAS;IAEpD,OAAO;GACT;EACF,CAAC,CACH,EACF;CACF,EACF,CAAC;AACH"}