{"version":3,"sources":["/src/utils/trpc.tsx","/src/utils/try.ts"],"sourcesContent":["import { QueryCache, QueryClient } from '@tanstack/react-query';\nimport {\n\ttype HTTPLinkOptions,\n\tTRPCClientError,\n\tcreateTRPCReact,\n\ttype httpBatchLink,\n\thttpLink,\n\ttype inferReactQueryProcedureOptions,\n\tloggerLink,\n} from '@trpc/react-query';\nimport type { inferRouterInputs, inferRouterOutputs } from '@trpc/server';\nimport { message } from 'antd';\nimport type { AppRouter } from 'server/trpc';\nimport dayjs from 'dayjs';\nimport * as isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport { isUndefined, omitBy } from 'lodash-es';\nimport superjson from 'superjson';\nimport { FASTIFY_API, isDevelopment } from '../config/local';\nimport { tryFreshToken } from './try';\n\nexport function registerMoreClass() {\n\t// registerClass(InsertResult, {\n\t// \tallowProps: [\"insertId\", \"numInsertedOrUpdatedRows\"],\n\t// });\n\t// registerClass(UpdateResult, {\n\t// \tallowProps: [\"numUpdatedRows\", \"numChangedRows\"],\n\t// });\n}\nregisterMoreClass();\n\ndayjs.extend(isSameOrAfter.default);\n// const wsClient = createWSClient({\n// url: `ws://localhost:2022`,\n// });\n\nconst queryCache = new QueryCache({\n\tonError: (error) => {\n\t\tif (isDevelopment) {\n\t\t\t// console.log(error, typeof error, error.message, Object.entries(error));\n\t\t\tmessage.error(`${error.message}`);\n\t\t} else {\n\t\t\tmessage.error(`${error.message}`);\n\t\t}\n\n\t\tif (error instanceof TRPCClientError) {\n\t\t\tif (error?.code === 'UNAUTHORIZED') {\n\t\t\t\tlocation.href = '/account/sign-in?app=apartment';\n\t\t\t}\n\t\t}\n\t},\n\t// onSuccess: (data) => {\n\t// console.log(data);\n\t// },\n\t// onSettled: (data, error) => {\n\t// console.log(data, error);\n\t// },\n});\n\nexport const TrpcBase = createTRPCReact({\n\tabortOnUnmount: true,\n});\n\nexport type ReactQueryOptions = inferReactQueryProcedureOptions;\nexport type RouterInputs = inferRouterInputs;\nexport type RouterOutputs = inferRouterOutputs;\n\n// https://github.com/trpc/trpc/discussions/2036\nexport const queryClient = new QueryClient({\n\tqueryCache: queryCache,\n\tdefaultOptions: {\n\t\tqueries: {\n\t\t\tretry: false,\n\t\t},\n\t},\n});\n\nexport const trpcConfig = (app: string, isUseAuth: boolean) => {\n\tconst params: Parameters[0] | HTTPLinkOptions = {\n\t\turl: `${FASTIFY_API}/trpc`,\n\t\tasync fetch(url, options) {\n\t\t\t// 不需要用权限\n\t\t\tif (!isUseAuth) {\n\t\t\t\treturn fetch(url, options);\n\t\t\t}\n\n\t\t\tlet idToken = '';\n\t\t\ttry {\n\t\t\t\tidToken = await tryFreshToken(app);\n\t\t\t} catch {\n\t\t\t\tlocation.href = `/account/sign-in?app=${app}`;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\treturn fetch(url, {\n\t\t\t\t\t...options,\n\t\t\t\t\theaders: omitBy(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...options?.headers,\n\t\t\t\t\t\t\tAuthorization: idToken && `Bearer ${idToken}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tisUndefined,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error?.message) {\n\t\t\t\t\tmessage.error(error?.message);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t};\n\n\treturn {\n\t\ttransformer: superjson,\n\t\tlinks: [\n\t\t\tloggerLink({\n\t\t\t\tenabled: (opts) =>\n\t\t\t\t\topts.direction === 'down' &&\n\t\t\t\t\topts.result instanceof Error &&\n\t\t\t\t\topts?.result?.cause?.message !== 'The user aborted a request.' &&\n\t\t\t\t\topts?.result?.cause?.message !== 'signal is aborted without reason',\n\t\t\t}),\n\t\t\thttpLink(params as HTTPLinkOptions),\n\t\t\t// isDevelopment\n\t\t\t// ?\n\t\t\t// : httpBatchLink(params as Parameters[0]),\n\n\t\t\t// call subscriptions through websockets and the rest over http\n\t\t\t// splitLink({\n\t\t\t// condition(op) {\n\t\t\t// return op.type === 'subscription';\n\t\t\t// },\n\t\t\t// true: wsLink({\n\t\t\t// client: wsClient,\n\t\t\t// }),\n\t\t\t// false: httpLink({\n\t\t\t// url: `http://localhost:2022`,\n\t\t\t// }),\n\t\t\t// }),\n\t\t],\n\t} as Parameters[0];\n};\n","import { isNil } from 'lodash-es';\nimport { apiResource } from './apiResource';\nimport { logtoClient } from '../LogtoContainer';\n\nexport const tryFreshToken = async (app: string,) => {\n\tconst tempToken = await logtoClient.getAccessToken(apiResource);\n\n\tif (isNil(tempToken)) {\n\t\t// token 400 为空 直接退出了\n\t\t// 说明没有登陆过\n\t\tlocation.href = `/account/sign-in?app=${app}`;\n\t\tthrow new Error('unauthorized');\n\t}\n\n\tlocalStorage.setItem('idToken', tempToken);\n\treturn tempToken;\n};\n\n\n"],"names":[],"mappings":"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"}