mtmsdk 0.0.50 → 0.0.52
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/gomtmapi/@tanstack/react-query.gen.d.ts +1 -13
- package/dist/gomtmapi/@tanstack/react-query.gen.d.ts.map +1 -1
- package/dist/gomtmapi/@tanstack/react-query.gen.js +1 -37
- package/dist/gomtmapi/@tanstack/react-query.gen.js.map +1 -1
- package/dist/gomtmapi/index.d.ts +2 -2
- package/dist/gomtmapi/index.d.ts.map +1 -1
- package/dist/gomtmapi/index.js +1 -1
- package/dist/gomtmapi/index.js.map +1 -1
- package/dist/gomtmapi/schemas.gen.d.ts +0 -57
- package/dist/gomtmapi/schemas.gen.d.ts.map +1 -1
- package/dist/gomtmapi/schemas.gen.js +0 -60
- package/dist/gomtmapi/schemas.gen.js.map +1 -1
- package/dist/gomtmapi/sdk.gen.d.ts +1 -13
- package/dist/gomtmapi/sdk.gen.d.ts.map +1 -1
- package/dist/gomtmapi/sdk.gen.js +0 -26
- package/dist/gomtmapi/sdk.gen.js.map +1 -1
- package/dist/gomtmapi/types.gen.d.ts +0 -94
- package/dist/gomtmapi/types.gen.d.ts.map +1 -1
- package/dist/gomtmapi/zod.gen.d.ts +0 -62
- package/dist/gomtmapi/zod.gen.d.ts.map +1 -1
- package/dist/gomtmapi/zod.gen.js +0 -51
- package/dist/gomtmapi/zod.gen.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/schema.d.ts +1 -11
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +0 -9
- package/dist/lib/schema.js.map +1 -1
- package/dist/mtgate_api/client.gen.d.ts.map +1 -1
- package/dist/mtgate_api/client.gen.js +1 -1
- package/dist/mtgate_api/client.gen.js.map +1 -1
- package/dist/mtgate_api/index.d.ts +2 -2
- package/dist/mtgate_api/index.d.ts.map +1 -1
- package/dist/mtgate_api/index.js +1 -1
- package/dist/mtgate_api/index.js.map +1 -1
- package/dist/mtgate_api/sdk.gen.d.ts +0 -8
- package/dist/mtgate_api/sdk.gen.d.ts.map +1 -1
- package/dist/mtgate_api/sdk.gen.js +1 -29
- package/dist/mtgate_api/sdk.gen.js.map +1 -1
- package/dist/mtgate_api/types.gen.d.ts +1 -200
- package/dist/mtgate_api/types.gen.d.ts.map +1 -1
- package/dist/openclaw/gateway.d.ts.map +1 -1
- package/dist/openclaw/gateway.js +1 -1
- package/dist/openclaw/gateway.js.map +1 -1
- package/dist/sbmng/@tanstack/react-query.gen.d.ts +39 -65
- package/dist/sbmng/@tanstack/react-query.gen.d.ts.map +1 -1
- package/dist/sbmng/@tanstack/react-query.gen.js +19 -65
- package/dist/sbmng/@tanstack/react-query.gen.js.map +1 -1
- package/dist/sbmng/index.d.ts +2 -2
- package/dist/sbmng/index.d.ts.map +1 -1
- package/dist/sbmng/index.js +1 -1
- package/dist/sbmng/index.js.map +1 -1
- package/dist/sbmng/schemas.gen.d.ts +6 -95
- package/dist/sbmng/schemas.gen.d.ts.map +1 -1
- package/dist/sbmng/schemas.gen.js +7 -139
- package/dist/sbmng/schemas.gen.js.map +1 -1
- package/dist/sbmng/sdk.gen.d.ts +7 -17
- package/dist/sbmng/sdk.gen.d.ts.map +1 -1
- package/dist/sbmng/sdk.gen.js +10 -32
- package/dist/sbmng/sdk.gen.js.map +1 -1
- package/dist/sbmng/types.gen.d.ts +41 -157
- package/dist/sbmng/types.gen.d.ts.map +1 -1
- package/dist/supabase/supabase-client.d.ts +85 -181
- package/dist/supabase/supabase-client.d.ts.map +1 -1
- package/dist/supabase/supabase.d.ts +170 -362
- package/dist/supabase/supabase.d.ts.map +1 -1
- package/dist/supabase/use-sb-query/build-query-opts.d.ts +6 -2
- package/dist/supabase/use-sb-query/build-query-opts.d.ts.map +1 -1
- package/dist/supabase/use-sb-query/build-query-opts.js +8 -4
- package/dist/supabase/use-sb-query/build-query-opts.js.map +1 -1
- package/dist/supabase/use-sb-query/use-query.d.ts +9 -6
- package/dist/supabase/use-sb-query/use-query.d.ts.map +1 -1
- package/dist/supabase/use-sb-query/use-query.js.map +1 -1
- package/dist/supabase/use-sb-query/use-rpc-query.d.ts +25 -17
- package/dist/supabase/use-sb-query/use-rpc-query.d.ts.map +1 -1
- package/dist/supabase/use-sb-query/use-rpc-query.js +48 -26
- package/dist/supabase/use-sb-query/use-rpc-query.js.map +1 -1
- package/dist/types/database.schemas.d.ts +129 -222
- package/dist/types/database.schemas.d.ts.map +1 -1
- package/dist/types/database.schemas.js +112 -124
- package/dist/types/database.schemas.js.map +1 -1
- package/dist/types/database.types.d.ts +85 -181
- package/dist/types/database.types.d.ts.map +1 -1
- package/dist/types/database.types.js.map +1 -1
- package/dist/types/index.d.ts +30 -59
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +16 -3
- package/dist/types/index.js.map +1 -1
- package/package.json +105 -110
- package/src/cloud-account/platform-configs.ts +73 -73
- package/src/gomtmapi/@tanstack/react-query.gen.ts +537 -575
- package/src/gomtmapi/client/client.gen.ts +311 -311
- package/src/gomtmapi/client/index.ts +25 -25
- package/src/gomtmapi/client/types.gen.ts +241 -241
- package/src/gomtmapi/client/utils.gen.ts +332 -332
- package/src/gomtmapi/client.gen.ts +16 -16
- package/src/gomtmapi/core/auth.gen.ts +42 -42
- package/src/gomtmapi/core/bodySerializer.gen.ts +100 -100
- package/src/gomtmapi/core/params.gen.ts +176 -176
- package/src/gomtmapi/core/pathSerializer.gen.ts +181 -181
- package/src/gomtmapi/core/queryKeySerializer.gen.ts +136 -136
- package/src/gomtmapi/core/serverSentEvents.gen.ts +266 -266
- package/src/gomtmapi/core/types.gen.ts +118 -118
- package/src/gomtmapi/core/utils.gen.ts +143 -143
- package/src/gomtmapi/index.ts +4 -4
- package/src/gomtmapi/schemas.gen.ts +532 -596
- package/src/gomtmapi/sdk.gen.ts +371 -399
- package/src/gomtmapi/types.gen.ts +854 -962
- package/src/gomtmapi/zod.gen.ts +448 -507
- package/src/index.ts +4 -5
- package/src/lib/aisdk/types.ts +7 -7
- package/src/lib/logger/index.ts +8 -8
- package/src/lib/schema.ts +37 -50
- package/src/mtgate_api/client/client.gen.ts +311 -311
- package/src/mtgate_api/client/index.ts +25 -25
- package/src/mtgate_api/client/types.gen.ts +241 -241
- package/src/mtgate_api/client/utils.gen.ts +332 -332
- package/src/mtgate_api/client.gen.ts +16 -16
- package/src/mtgate_api/core/auth.gen.ts +42 -42
- package/src/mtgate_api/core/bodySerializer.gen.ts +100 -100
- package/src/mtgate_api/core/params.gen.ts +176 -176
- package/src/mtgate_api/core/pathSerializer.gen.ts +181 -181
- package/src/mtgate_api/core/queryKeySerializer.gen.ts +136 -136
- package/src/mtgate_api/core/serverSentEvents.gen.ts +266 -266
- package/src/mtgate_api/core/types.gen.ts +118 -118
- package/src/mtgate_api/core/utils.gen.ts +143 -143
- package/src/mtgate_api/index.ts +4 -4
- package/src/mtgate_api/sdk.gen.ts +17 -54
- package/src/mtgate_api/types.gen.ts +5 -239
- package/src/openclaw/client-info.ts +54 -54
- package/src/openclaw/device-auth-utils.ts +26 -26
- package/src/openclaw/device-auth.ts +99 -99
- package/src/openclaw/device-identity.ts +108 -108
- package/src/openclaw/gateway.ts +392 -392
- package/src/openclaw/types.ts +518 -518
- package/src/sbmng/@tanstack/react-query.gen.ts +2967 -3017
- package/src/sbmng/client/client.gen.ts +311 -311
- package/src/sbmng/client/index.ts +25 -25
- package/src/sbmng/client/types.gen.ts +241 -241
- package/src/sbmng/client/utils.gen.ts +332 -332
- package/src/sbmng/client.gen.ts +16 -16
- package/src/sbmng/core/auth.gen.ts +42 -42
- package/src/sbmng/core/bodySerializer.gen.ts +100 -100
- package/src/sbmng/core/params.gen.ts +176 -176
- package/src/sbmng/core/pathSerializer.gen.ts +181 -181
- package/src/sbmng/core/queryKeySerializer.gen.ts +136 -136
- package/src/sbmng/core/serverSentEvents.gen.ts +266 -266
- package/src/sbmng/core/types.gen.ts +118 -118
- package/src/sbmng/core/utils.gen.ts +143 -143
- package/src/sbmng/index.ts +4 -4
- package/src/sbmng/schemas.gen.ts +9671 -9805
- package/src/sbmng/sdk.gen.ts +1755 -1780
- package/src/sbmng/types.gen.ts +7886 -8016
- package/src/supabase/auth-provider.tsx +67 -67
- package/src/supabase/context.tsx +51 -51
- package/src/supabase/cursor-pagination.ts +155 -155
- package/src/supabase/schema/browser.ts +44 -44
- package/src/supabase/schema/index.ts +25 -25
- package/src/supabase/supabase-client.ts +30 -30
- package/src/supabase/supabase.ts +67 -67
- package/src/supabase/use-sb-query/build-query-opts.ts +68 -56
- package/src/supabase/use-sb-query/key.ts +57 -57
- package/src/supabase/use-sb-query/use-query.ts +352 -340
- package/src/supabase/use-sb-query/use-rpc-mutation.ts +83 -83
- package/src/supabase/use-sb-query/use-rpc-query.ts +267 -231
- package/src/supabase/utils.ts +75 -75
- package/src/types/database.schemas.ts +4359 -4378
- package/src/types/database.types.ts +4182 -4288
- package/src/types/index.ts +85 -102
- package/dist/adk/api/client.d.ts +0 -9
- package/dist/adk/api/client.d.ts.map +0 -1
- package/dist/adk/api/client.js +0 -39
- package/dist/adk/api/client.js.map +0 -1
- package/dist/adk/core/constants/tool-icons.d.ts +0 -21
- package/dist/adk/core/constants/tool-icons.d.ts.map +0 -1
- package/dist/adk/core/constants/tool-icons.js +0 -47
- package/dist/adk/core/constants/tool-icons.js.map +0 -1
- package/dist/adk/core/models/AgentBuilder.d.ts +0 -77
- package/dist/adk/core/models/AgentBuilder.d.ts.map +0 -1
- package/dist/adk/core/models/AgentBuilder.js +0 -18
- package/dist/adk/core/models/AgentBuilder.js.map +0 -1
- package/dist/adk/core/models/AgentRunRequest.d.ts +0 -37
- package/dist/adk/core/models/AgentRunRequest.d.ts.map +0 -1
- package/dist/adk/core/models/AgentRunRequest.js +0 -18
- package/dist/adk/core/models/AgentRunRequest.js.map +0 -1
- package/dist/adk/core/models/Eval.d.ts +0 -55
- package/dist/adk/core/models/Eval.d.ts.map +0 -1
- package/dist/adk/core/models/Eval.js +0 -27
- package/dist/adk/core/models/Eval.js.map +0 -1
- package/dist/adk/core/models/LiveRequest.d.ts +0 -23
- package/dist/adk/core/models/LiveRequest.d.ts.map +0 -1
- package/dist/adk/core/models/LiveRequest.js +0 -18
- package/dist/adk/core/models/LiveRequest.js.map +0 -1
- package/dist/adk/core/models/RuntimeConfig.d.ts +0 -32
- package/dist/adk/core/models/RuntimeConfig.d.ts.map +0 -1
- package/dist/adk/core/models/RuntimeConfig.js +0 -18
- package/dist/adk/core/models/RuntimeConfig.js.map +0 -1
- package/dist/adk/core/models/Session.d.ts +0 -117
- package/dist/adk/core/models/Session.d.ts.map +0 -1
- package/dist/adk/core/models/Session.js +0 -31
- package/dist/adk/core/models/Session.js.map +0 -1
- package/dist/adk/core/models/Trace.d.ts +0 -40
- package/dist/adk/core/models/Trace.d.ts.map +0 -1
- package/dist/adk/core/models/Trace.js +0 -2
- package/dist/adk/core/models/Trace.js.map +0 -1
- package/dist/adk/core/models/types.d.ts +0 -338
- package/dist/adk/core/models/types.d.ts.map +0 -1
- package/dist/adk/core/models/types.js +0 -189
- package/dist/adk/core/models/types.js.map +0 -1
- package/dist/lib/utils.d.ts +0 -14
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -45
- package/dist/lib/utils.js.map +0 -1
- package/dist/mtgate_api/@tanstack/react-query.gen.d.ts +0 -166
- package/dist/mtgate_api/@tanstack/react-query.gen.d.ts.map +0 -1
- package/dist/mtgate_api/@tanstack/react-query.gen.js +0 -118
- package/dist/mtgate_api/@tanstack/react-query.gen.js.map +0 -1
- package/dist/mtgate_api/schemas.gen.d.ts +0 -233
- package/dist/mtgate_api/schemas.gen.d.ts.map +0 -1
- package/dist/mtgate_api/schemas.gen.js +0 -277
- package/dist/mtgate_api/schemas.gen.js.map +0 -1
- package/dist/mtgate_api/zod.gen.d.ts +0 -321
- package/dist/mtgate_api/zod.gen.d.ts.map +0 -1
- package/dist/mtgate_api/zod.gen.js +0 -148
- package/dist/mtgate_api/zod.gen.js.map +0 -1
- package/dist/mtmai_api/@tanstack/react-query.gen.d.ts +0 -949
- package/dist/mtmai_api/@tanstack/react-query.gen.d.ts.map +0 -1
- package/dist/mtmai_api/@tanstack/react-query.gen.js +0 -917
- package/dist/mtmai_api/@tanstack/react-query.gen.js.map +0 -1
- package/dist/mtmai_api/client/client.gen.d.ts +0 -3
- package/dist/mtmai_api/client/client.gen.d.ts.map +0 -1
- package/dist/mtmai_api/client/client.gen.js +0 -236
- package/dist/mtmai_api/client/client.gen.js.map +0 -1
- package/dist/mtmai_api/client/index.d.ts +0 -9
- package/dist/mtmai_api/client/index.d.ts.map +0 -1
- package/dist/mtmai_api/client/index.js +0 -7
- package/dist/mtmai_api/client/index.js.map +0 -1
- package/dist/mtmai_api/client/types.gen.d.ts +0 -118
- package/dist/mtmai_api/client/types.gen.d.ts.map +0 -1
- package/dist/mtmai_api/client/types.gen.js +0 -3
- package/dist/mtmai_api/client/types.gen.js.map +0 -1
- package/dist/mtmai_api/client/utils.gen.d.ts +0 -34
- package/dist/mtmai_api/client/utils.gen.d.ts.map +0 -1
- package/dist/mtmai_api/client/utils.gen.js +0 -232
- package/dist/mtmai_api/client/utils.gen.js.map +0 -1
- package/dist/mtmai_api/client.gen.d.ts +0 -13
- package/dist/mtmai_api/client.gen.d.ts.map +0 -1
- package/dist/mtmai_api/client.gen.js +0 -4
- package/dist/mtmai_api/client.gen.js.map +0 -1
- package/dist/mtmai_api/core/auth.gen.d.ts +0 -19
- package/dist/mtmai_api/core/auth.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/auth.gen.js +0 -15
- package/dist/mtmai_api/core/auth.gen.js.map +0 -1
- package/dist/mtmai_api/core/bodySerializer.gen.d.ts +0 -26
- package/dist/mtmai_api/core/bodySerializer.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/bodySerializer.gen.js +0 -58
- package/dist/mtmai_api/core/bodySerializer.gen.js.map +0 -1
- package/dist/mtmai_api/core/params.gen.d.ts +0 -44
- package/dist/mtmai_api/core/params.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/params.gen.js +0 -101
- package/dist/mtmai_api/core/params.gen.js.map +0 -1
- package/dist/mtmai_api/core/pathSerializer.gen.d.ts +0 -34
- package/dist/mtmai_api/core/pathSerializer.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/pathSerializer.gen.js +0 -115
- package/dist/mtmai_api/core/pathSerializer.gen.js.map +0 -1
- package/dist/mtmai_api/core/queryKeySerializer.gen.d.ts +0 -19
- package/dist/mtmai_api/core/queryKeySerializer.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/queryKeySerializer.gen.js +0 -100
- package/dist/mtmai_api/core/queryKeySerializer.gen.js.map +0 -1
- package/dist/mtmai_api/core/serverSentEvents.gen.d.ts +0 -72
- package/dist/mtmai_api/core/serverSentEvents.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/serverSentEvents.gen.js +0 -138
- package/dist/mtmai_api/core/serverSentEvents.gen.js.map +0 -1
- package/dist/mtmai_api/core/types.gen.d.ts +0 -79
- package/dist/mtmai_api/core/types.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/types.gen.js +0 -3
- package/dist/mtmai_api/core/types.gen.js.map +0 -1
- package/dist/mtmai_api/core/utils.gen.d.ts +0 -20
- package/dist/mtmai_api/core/utils.gen.d.ts.map +0 -1
- package/dist/mtmai_api/core/utils.gen.js +0 -88
- package/dist/mtmai_api/core/utils.gen.js.map +0 -1
- package/dist/mtmai_api/index.d.ts +0 -3
- package/dist/mtmai_api/index.d.ts.map +0 -1
- package/dist/mtmai_api/index.js +0 -4
- package/dist/mtmai_api/index.js.map +0 -1
- package/dist/mtmai_api/schemas.gen.d.ts +0 -7721
- package/dist/mtmai_api/schemas.gen.d.ts.map +0 -1
- package/dist/mtmai_api/schemas.gen.js +0 -9774
- package/dist/mtmai_api/schemas.gen.js.map +0 -1
- package/dist/mtmai_api/sdk.gen.d.ts +0 -282
- package/dist/mtmai_api/sdk.gen.d.ts.map +0 -1
- package/dist/mtmai_api/sdk.gen.js +0 -404
- package/dist/mtmai_api/sdk.gen.js.map +0 -1
- package/dist/mtmai_api/types.gen.d.ts +0 -7152
- package/dist/mtmai_api/types.gen.d.ts.map +0 -1
- package/dist/mtmai_api/types.gen.js +0 -253
- package/dist/mtmai_api/types.gen.js.map +0 -1
- package/dist/mtmai_api/zod.gen.d.ts +0 -55827
- package/dist/mtmai_api/zod.gen.d.ts.map +0 -1
- package/dist/mtmai_api/zod.gen.js +0 -4805
- package/dist/mtmai_api/zod.gen.js.map +0 -1
- package/dist/supabase/use-sb-query/prefetch.d.ts +0 -10
- package/dist/supabase/use-sb-query/prefetch.d.ts.map +0 -1
- package/dist/supabase/use-sb-query/prefetch.js +0 -14
- package/dist/supabase/use-sb-query/prefetch.js.map +0 -1
- package/src/adk/api/client.ts +0 -46
- package/src/adk/core/constants/tool-icons.ts +0 -51
- package/src/adk/core/models/AgentBuilder.ts +0 -80
- package/src/adk/core/models/AgentRunRequest.ts +0 -33
- package/src/adk/core/models/Eval.ts +0 -70
- package/src/adk/core/models/LiveRequest.ts +0 -23
- package/src/adk/core/models/RuntimeConfig.ts +0 -33
- package/src/adk/core/models/Session.ts +0 -52
- package/src/adk/core/models/Trace.ts +0 -42
- package/src/adk/core/models/types.ts +0 -255
- package/src/lib/utils.ts +0 -54
- package/src/mtgate_api/@tanstack/react-query.gen.ts +0 -142
- package/src/mtgate_api/schemas.gen.ts +0 -290
- package/src/mtgate_api/zod.gen.ts +0 -176
- package/src/mtmai_api/@tanstack/react-query.gen.ts +0 -1010
- package/src/mtmai_api/client/client.gen.ts +0 -311
- package/src/mtmai_api/client/index.ts +0 -25
- package/src/mtmai_api/client/types.gen.ts +0 -241
- package/src/mtmai_api/client/utils.gen.ts +0 -332
- package/src/mtmai_api/client.gen.ts +0 -16
- package/src/mtmai_api/core/auth.gen.ts +0 -42
- package/src/mtmai_api/core/bodySerializer.gen.ts +0 -100
- package/src/mtmai_api/core/params.gen.ts +0 -176
- package/src/mtmai_api/core/pathSerializer.gen.ts +0 -181
- package/src/mtmai_api/core/queryKeySerializer.gen.ts +0 -136
- package/src/mtmai_api/core/serverSentEvents.gen.ts +0 -266
- package/src/mtmai_api/core/types.gen.ts +0 -118
- package/src/mtmai_api/core/utils.gen.ts +0 -143
- package/src/mtmai_api/index.ts +0 -4
- package/src/mtmai_api/schemas.gen.ts +0 -9980
- package/src/mtmai_api/sdk.gen.ts +0 -471
- package/src/mtmai_api/types.gen.ts +0 -7609
- package/src/mtmai_api/zod.gen.ts +0 -5101
- package/src/supabase/use-sb-query/prefetch.ts +0 -59
|
@@ -1,231 +1,267 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 简化版的 Supabase RPC 查询 Hook
|
|
3
|
-
* 自动处理 Supabase Client 的获取,无需手动调用 useSupabaseBrowser()
|
|
4
|
-
*
|
|
5
|
-
* 使用示例:
|
|
6
|
-
* ```tsx
|
|
7
|
-
* // 方式1: 自动推断类型
|
|
8
|
-
* const query1 = useRpcQuery("dash_navitems_list", { p_location: "sidebar_admin" });
|
|
9
|
-
*
|
|
10
|
-
* // 方式2: 使用 Zod Schema 进行类型验证和推断 (推荐)
|
|
11
|
-
* const navItemSchema = z.object({ label: z.string(), url: z.string().optional() });
|
|
12
|
-
* const query2 = useRpcQuery("dash_navitems_list", { p_location: "sidebar_admin" }, {
|
|
13
|
-
* schema: z.object({ rows: z.array(navItemSchema) })
|
|
14
|
-
* });
|
|
15
|
-
* // data 的类型为 { rows: { label: string; url?: string }[] } | undefined
|
|
16
|
-
*
|
|
17
|
-
* // 方式3: 显式泛型指定返回类型
|
|
18
|
-
* type NavItem = { label: string; url?: string };
|
|
19
|
-
* const query3 = useRpcQuery<NavItem[]>("dash_navitems_list", { p_location: "sidebar_admin" });
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
import { useMemo } from "react";
|
|
24
|
-
import type {
|
|
25
|
-
import type {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
type
|
|
31
|
-
useSbQuery,
|
|
32
|
-
useSbSuspenseQuery,
|
|
33
|
-
} from "./use-query";
|
|
34
|
-
|
|
35
|
-
/** 从 SBFunctions 中提取 RPC 函数名的类型 */
|
|
36
|
-
export type RPCFunctionName = keyof SBFunctions;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* 获取 RPC 查询的通用 Query Key 前缀 (用于 invalidation)
|
|
40
|
-
* 对应 supabase-cache-helpers 生成的 key 结构: ['postgrest', 'null'|'page', schema, table|rpc, ...]
|
|
41
|
-
*
|
|
42
|
-
* @param functionName RPC 函数名
|
|
43
|
-
* @returns Standard Query Key Prefix e.g. ["postgrest", "null", "public", "function_name"]
|
|
44
|
-
*/
|
|
45
|
-
export function getRpcQueryKey(functionName: string): string[] {
|
|
46
|
-
// 默认 schema 为 public, infinite prefix 默认为 "null" (即使是 infinite query, invalidate prefix 通常也能匹配?)
|
|
47
|
-
// 注意: explicit invalidation 最好匹配 prefix.
|
|
48
|
-
// supabase-cache-helpers 的 getSbTableKey 返回的是 4 个元素
|
|
49
|
-
// 注: 对于 RPC,表名解析为 rpc/名称
|
|
50
|
-
return [KEY_PREFIX, "null", "public", `rpc/${functionName}`];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/** 提取指定 RPC 函数的参数类型 */
|
|
54
|
-
export type RPCFunctionArgs<T extends RPCFunctionName> = SBFunctions[T]["Args"] extends never
|
|
55
|
-
? Record<string, never>
|
|
56
|
-
: SBFunctions[T]["Args"];
|
|
57
|
-
|
|
58
|
-
/** 提取指定 RPC 函数的返回类型 */
|
|
59
|
-
export type RPCFunctionReturns<T extends RPCFunctionName> = SBFunctions[T]["Returns"];
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* const
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
1
|
+
/**
|
|
2
|
+
* 简化版的 Supabase RPC 查询 Hook
|
|
3
|
+
* 自动处理 Supabase Client 的获取,无需手动调用 useSupabaseBrowser()
|
|
4
|
+
*
|
|
5
|
+
* 使用示例:
|
|
6
|
+
* ```tsx
|
|
7
|
+
* // 方式1: 自动推断类型
|
|
8
|
+
* const query1 = useRpcQuery("dash_navitems_list", { p_location: "sidebar_admin" });
|
|
9
|
+
*
|
|
10
|
+
* // 方式2: 使用 Zod Schema 进行类型验证和推断 (推荐)
|
|
11
|
+
* const navItemSchema = z.object({ label: z.string(), url: z.string().optional() });
|
|
12
|
+
* const query2 = useRpcQuery("dash_navitems_list", { p_location: "sidebar_admin" }, {
|
|
13
|
+
* schema: z.object({ rows: z.array(navItemSchema) })
|
|
14
|
+
* });
|
|
15
|
+
* // data 的类型为 { rows: { label: string; url?: string }[] } | undefined
|
|
16
|
+
*
|
|
17
|
+
* // 方式3: 显式泛型指定返回类型
|
|
18
|
+
* type NavItem = { label: string; url?: string };
|
|
19
|
+
* const query3 = useRpcQuery<NavItem[]>("dash_navitems_list", { p_location: "sidebar_admin" });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { useMemo } from "react";
|
|
24
|
+
import type { PostgrestError } from "@supabase/postgrest-js";
|
|
25
|
+
import type { z } from "zod";
|
|
26
|
+
import type { SBFunctions } from "../../types";
|
|
27
|
+
import { useSupabaseBrowser } from "../context";
|
|
28
|
+
import {
|
|
29
|
+
KEY_PREFIX,
|
|
30
|
+
type UseQueryAnyReturn,
|
|
31
|
+
useSbQuery,
|
|
32
|
+
useSbSuspenseQuery,
|
|
33
|
+
} from "./use-query";
|
|
34
|
+
|
|
35
|
+
/** 从 SBFunctions 中提取 RPC 函数名的类型 */
|
|
36
|
+
export type RPCFunctionName = keyof SBFunctions;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 获取 RPC 查询的通用 Query Key 前缀 (用于 invalidation)
|
|
40
|
+
* 对应 supabase-cache-helpers 生成的 key 结构: ['postgrest', 'null'|'page', schema, table|rpc, ...]
|
|
41
|
+
*
|
|
42
|
+
* @param functionName RPC 函数名
|
|
43
|
+
* @returns Standard Query Key Prefix e.g. ["postgrest", "null", "public", "function_name"]
|
|
44
|
+
*/
|
|
45
|
+
export function getRpcQueryKey(functionName: string): string[] {
|
|
46
|
+
// 默认 schema 为 public, infinite prefix 默认为 "null" (即使是 infinite query, invalidate prefix 通常也能匹配?)
|
|
47
|
+
// 注意: explicit invalidation 最好匹配 prefix.
|
|
48
|
+
// supabase-cache-helpers 的 getSbTableKey 返回的是 4 个元素
|
|
49
|
+
// 注: 对于 RPC,表名解析为 rpc/名称
|
|
50
|
+
return [KEY_PREFIX, "null", "public", `rpc/${functionName}`];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** 提取指定 RPC 函数的参数类型 */
|
|
54
|
+
export type RPCFunctionArgs<T extends RPCFunctionName> = SBFunctions[T]["Args"] extends never
|
|
55
|
+
? Record<string, never>
|
|
56
|
+
: SBFunctions[T]["Args"];
|
|
57
|
+
|
|
58
|
+
/** 提取指定 RPC 函数的返回类型 */
|
|
59
|
+
export type RPCFunctionReturns<T extends RPCFunctionName> = SBFunctions[T]["Returns"];
|
|
60
|
+
|
|
61
|
+
type RpcExtraQueryOptions<TSchema extends z.ZodTypeAny | undefined = undefined> = {
|
|
62
|
+
/**
|
|
63
|
+
* 可选的 Zod Schema 用于验证和推断返回类型
|
|
64
|
+
* 当传入时,将自动验证数据并从 schema 推断类型
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```tsx
|
|
68
|
+
* const navItemSchema = z.object({ label: z.string(), url: z.string().optional() });
|
|
69
|
+
* const resultSchema = z.object({ rows: z.array(navItemSchema), meta: z.any() });
|
|
70
|
+
*
|
|
71
|
+
* const { data } = useRpcQuery("dash_navitems_list", { p_location: "sidebar_admin" }, {
|
|
72
|
+
* schema: resultSchema
|
|
73
|
+
* });
|
|
74
|
+
* // data 类型自动推断为 { rows: { label: string; url?: string }[]; meta: any } | undefined
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
schema?: TSchema;
|
|
78
|
+
queryKeySuffix?: readonly unknown[];
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
type RpcQueryOptions<TSchema extends z.ZodTypeAny | undefined = undefined> = RpcExtraQueryOptions<TSchema> &
|
|
82
|
+
Record<string, unknown>;
|
|
83
|
+
|
|
84
|
+
type RpcSuspenseQueryOptions<TSchema extends z.ZodTypeAny | undefined = undefined> = RpcExtraQueryOptions<TSchema> &
|
|
85
|
+
Record<string, unknown>;
|
|
86
|
+
|
|
87
|
+
type UseRpcSchemaQueryReturn<TData> = Omit<UseQueryAnyReturn<unknown>, "data" | "error"> & {
|
|
88
|
+
data: TData | undefined;
|
|
89
|
+
error: PostgrestError | RpcSchemaValidationError | null;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
class RpcSchemaValidationError extends Error {
|
|
93
|
+
readonly functionName: RPCFunctionName;
|
|
94
|
+
readonly originalError: Error;
|
|
95
|
+
|
|
96
|
+
constructor(functionName: RPCFunctionName, error: Error) {
|
|
97
|
+
super(`[${String(functionName)}] RPC 响应不符合 schema: ${error.message}`);
|
|
98
|
+
this.name = "RpcSchemaValidationError";
|
|
99
|
+
this.functionName = functionName;
|
|
100
|
+
this.originalError = error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function validateRpcData<TSchema extends z.ZodTypeAny>(
|
|
105
|
+
hookName: "useRpcQuery" | "useRpcSuspenseQuery",
|
|
106
|
+
functionName: RPCFunctionName,
|
|
107
|
+
schema: TSchema,
|
|
108
|
+
data: unknown,
|
|
109
|
+
): { success: true; data: z.infer<TSchema> } | { success: false; error: RpcSchemaValidationError } {
|
|
110
|
+
const result = schema.safeParse(data);
|
|
111
|
+
if (result.success) {
|
|
112
|
+
return {
|
|
113
|
+
success: true,
|
|
114
|
+
data: result.data,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
console.error(`[${hookName}] Schema validation failed for ${String(functionName)}:`, result.error);
|
|
119
|
+
return {
|
|
120
|
+
success: false,
|
|
121
|
+
error: new RpcSchemaValidationError(functionName, result.error),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* 基于 RPC 函数名和参数进行查询的 Hook (普通模式)
|
|
127
|
+
*
|
|
128
|
+
* @template TData 返回数据类型(显式指定或从数据库函数推断)
|
|
129
|
+
* @param functionName RPC 函数名
|
|
130
|
+
* @param args RPC 函数参数
|
|
131
|
+
* @param options 配置选项,包含 React Query 配置和可选的 schema
|
|
132
|
+
* @returns 查询结果
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```tsx
|
|
136
|
+
* // 示例1: 基础使用(自动推断)
|
|
137
|
+
* const { data } = useRpcQuery("sys_config_get", { p_key: "github_app" });
|
|
138
|
+
*
|
|
139
|
+
* // 示例2: 使用 Zod Schema(推荐)
|
|
140
|
+
* const navItemSchema = z.object({ label: z.string(), url: z.string().optional() });
|
|
141
|
+
* const { data } = useRpcQuery("dash_navitems_list", { p_location: "sidebar_admin" }, {
|
|
142
|
+
* schema: z.object({ rows: z.array(navItemSchema), meta: z.any() })
|
|
143
|
+
* });
|
|
144
|
+
*
|
|
145
|
+
* // 示例3: 显式泛型
|
|
146
|
+
* type NavItem = { label: string; url?: string };
|
|
147
|
+
* const { data } = useRpcQuery<NavItem[]>("dash_navitems_list", { p_location: "sidebar_admin" });
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
// Overload 1: Schema provided -> Infer TData from Schema
|
|
151
|
+
export function useRpcQuery<TFunc extends RPCFunctionName, TSchema extends z.ZodTypeAny>(
|
|
152
|
+
functionName: TFunc,
|
|
153
|
+
args: RPCFunctionArgs<TFunc> | undefined,
|
|
154
|
+
options: RpcQueryOptions<TSchema> & { schema: TSchema },
|
|
155
|
+
): UseRpcSchemaQueryReturn<z.infer<TSchema>>;
|
|
156
|
+
|
|
157
|
+
// Overload 2: No schema provided -> Infer TData from Generic (defaulting to RPC return)
|
|
158
|
+
export function useRpcQuery<TFunc extends RPCFunctionName, TData = RPCFunctionReturns<TFunc>>(
|
|
159
|
+
functionName: TFunc,
|
|
160
|
+
args?: RPCFunctionArgs<TFunc>,
|
|
161
|
+
options?: RpcQueryOptions<undefined> & { schema?: undefined },
|
|
162
|
+
): UseQueryAnyReturn<TData>;
|
|
163
|
+
|
|
164
|
+
export function useRpcQuery<TFunc extends RPCFunctionName, TData = RPCFunctionReturns<TFunc>>(
|
|
165
|
+
functionName: TFunc,
|
|
166
|
+
args?: RPCFunctionArgs<TFunc>,
|
|
167
|
+
options?: RpcQueryOptions,
|
|
168
|
+
): UseQueryAnyReturn<TData> {
|
|
169
|
+
const sb = useSupabaseBrowser();
|
|
170
|
+
const query = sb.rpc(functionName, args as never);
|
|
171
|
+
|
|
172
|
+
const { schema, ...reactQueryConfig } = options || {};
|
|
173
|
+
|
|
174
|
+
// biome-ignore lint/suspicious/noExplicitAny: 绕过 Supabase 内部类型系统
|
|
175
|
+
const baseResult = useSbQuery(query as any, reactQueryConfig as any);
|
|
176
|
+
|
|
177
|
+
// 如果提供了 schema,对数据进行验证和转换
|
|
178
|
+
const transformedResult = useMemo(() => {
|
|
179
|
+
if (!schema || baseResult.error || baseResult.data === undefined) {
|
|
180
|
+
return baseResult;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const validationResult = validateRpcData("useRpcQuery", functionName, schema, baseResult.data);
|
|
184
|
+
if (validationResult.success) {
|
|
185
|
+
return {
|
|
186
|
+
...baseResult,
|
|
187
|
+
data: validationResult.data as TData,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return {
|
|
192
|
+
...baseResult,
|
|
193
|
+
data: undefined,
|
|
194
|
+
error: validationResult.error,
|
|
195
|
+
isError: true,
|
|
196
|
+
isSuccess: false,
|
|
197
|
+
status: "error",
|
|
198
|
+
} as unknown as UseQueryAnyReturn<TData>;
|
|
199
|
+
}, [schema, baseResult, functionName]);
|
|
200
|
+
|
|
201
|
+
return transformedResult as UseQueryAnyReturn<TData>;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* 基于 RPC 函数名和参数进行查询的 Hook (Suspense 模式)
|
|
206
|
+
*
|
|
207
|
+
* @template TData 返回数据类型(通过 schema 或泛型指定)
|
|
208
|
+
* @param functionName RPC 函数名
|
|
209
|
+
* @param args RPC 函数参数
|
|
210
|
+
* @param options 配置选项
|
|
211
|
+
* @returns Suspense 查询结果
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```tsx
|
|
215
|
+
* const navItemSchema = z.object({ label: z.string(), url: z.string().optional() });
|
|
216
|
+
* const { data } = useRpcSuspenseQuery("dash_navitems_list", { p_location: "sidebar_admin" }, {
|
|
217
|
+
* schema: z.object({ rows: z.array(navItemSchema) })
|
|
218
|
+
* });
|
|
219
|
+
* // data 类型: { rows: { label: string; url?: string }[] }
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
// Overload 1: Schema provided
|
|
223
|
+
export function useRpcSuspenseQuery<TFunc extends RPCFunctionName, TSchema extends z.ZodTypeAny>(
|
|
224
|
+
functionName: TFunc,
|
|
225
|
+
args: RPCFunctionArgs<TFunc> | undefined,
|
|
226
|
+
options: RpcSuspenseQueryOptions<TSchema> & { schema: TSchema },
|
|
227
|
+
): { data: z.infer<TSchema>; [key: string]: unknown };
|
|
228
|
+
|
|
229
|
+
// Overload 2: No schema
|
|
230
|
+
export function useRpcSuspenseQuery<TFunc extends RPCFunctionName, TData = RPCFunctionReturns<TFunc>>(
|
|
231
|
+
functionName: TFunc,
|
|
232
|
+
args?: RPCFunctionArgs<TFunc>,
|
|
233
|
+
options?: RpcSuspenseQueryOptions<undefined> & { schema?: undefined },
|
|
234
|
+
): { data: TData; [key: string]: unknown };
|
|
235
|
+
|
|
236
|
+
export function useRpcSuspenseQuery<TFunc extends RPCFunctionName, TData = RPCFunctionReturns<TFunc>>(
|
|
237
|
+
functionName: TFunc,
|
|
238
|
+
args?: RPCFunctionArgs<TFunc>,
|
|
239
|
+
options?: RpcSuspenseQueryOptions,
|
|
240
|
+
): { data: TData; [key: string]: unknown } {
|
|
241
|
+
const sb = useSupabaseBrowser();
|
|
242
|
+
const query = sb.rpc(functionName, args as never);
|
|
243
|
+
|
|
244
|
+
const { schema, ...reactQueryConfig } = options || {};
|
|
245
|
+
|
|
246
|
+
// biome-ignore lint/suspicious/noExplicitAny: 绕过 Supabase 内部类型系统
|
|
247
|
+
const baseResult = useSbSuspenseQuery(query as any, reactQueryConfig as any);
|
|
248
|
+
|
|
249
|
+
// 如果提供了 schema,对数据进行验证和转换
|
|
250
|
+
const transformedData = useMemo(() => {
|
|
251
|
+
if (!schema) {
|
|
252
|
+
return baseResult.data as TData;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
const validationResult = validateRpcData("useRpcSuspenseQuery", functionName, schema, baseResult.data);
|
|
256
|
+
if (!validationResult.success) {
|
|
257
|
+
throw validationResult.error;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return validationResult.data as TData;
|
|
261
|
+
}, [schema, baseResult.data, functionName]);
|
|
262
|
+
|
|
263
|
+
return {
|
|
264
|
+
...baseResult,
|
|
265
|
+
data: transformedData,
|
|
266
|
+
} as { data: TData; [key: string]: unknown };
|
|
267
|
+
}
|