mulink 1.0.6 → 1.0.8
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/.tsbuildinfo +1 -1
- package/dist/lib/{chunk-GHDF3TJA.js → chunk-MEK5NG2G.js} +55 -17
- package/dist/lib/chunk-MEK5NG2G.js.map +1 -0
- package/dist/lib/{chunk-PZXEJ43S.cjs → chunk-PSLYNNKP.cjs} +55 -17
- package/dist/lib/chunk-PSLYNNKP.cjs.map +1 -0
- package/dist/lib/cli.cjs +16 -16
- package/dist/lib/cli.js +1 -1
- package/dist/lib/client.cjs +18 -18
- package/dist/lib/client.js +2 -2
- package/dist/lib/index.cjs +15 -15
- package/dist/lib/index.js +1 -1
- package/package.json +1 -1
- package/dist/lib/chunk-GHDF3TJA.js.map +0 -1
- package/dist/lib/chunk-PZXEJ43S.cjs.map +0 -1
|
@@ -1037,13 +1037,25 @@ import { cache } from 'react'
|
|
|
1037
1037
|
* Next.js 16.0.1: These modules are only available on the server
|
|
1038
1038
|
* We use dynamic imports to avoid bundling them in the client
|
|
1039
1039
|
*/
|
|
1040
|
+
type NextHeadersModule = typeof import('next/headers')
|
|
1041
|
+
type NextReadonlyHeaders = Awaited<ReturnType<NextHeadersModule['headers']>>
|
|
1042
|
+
type NextReadonlyCookies = Awaited<ReturnType<NextHeadersModule['cookies']>>
|
|
1043
|
+
|
|
1040
1044
|
let serverOnlyModules: {
|
|
1041
|
-
cookies?: () =>
|
|
1042
|
-
headers?: () =>
|
|
1045
|
+
cookies?: () => NextReadonlyCookies
|
|
1046
|
+
headers?: () => Headers
|
|
1043
1047
|
after?: (fn: () => void | Promise<void>) => void
|
|
1044
1048
|
updateTag?: (tag: string) => void
|
|
1045
1049
|
} | null = null
|
|
1046
1050
|
|
|
1051
|
+
function toMutableHeaders(source: NextReadonlyHeaders) {
|
|
1052
|
+
const mutableHeaders = new Headers()
|
|
1053
|
+
source.forEach((value, key) => {
|
|
1054
|
+
mutableHeaders.append(key, value)
|
|
1055
|
+
})
|
|
1056
|
+
return mutableHeaders
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1047
1059
|
/**
|
|
1048
1060
|
* Lazy load server-only modules only when needed (server-side)
|
|
1049
1061
|
* Next.js 16.0.1: This ensures server-only code is not bundled in the client
|
|
@@ -1061,9 +1073,11 @@ async function getServerModules() {
|
|
|
1061
1073
|
const serverModule = await import('next/server').catch(() => null)
|
|
1062
1074
|
const cacheModule = await import('next/cache').catch(() => null)
|
|
1063
1075
|
|
|
1076
|
+
const getReadonlyHeaders = headersModule?.headers as (() => NextReadonlyHeaders) | undefined
|
|
1077
|
+
const getReadonlyCookies = headersModule?.cookies as (() => NextReadonlyCookies) | undefined
|
|
1064
1078
|
serverOnlyModules = {
|
|
1065
|
-
cookies:
|
|
1066
|
-
headers:
|
|
1079
|
+
cookies: getReadonlyCookies,
|
|
1080
|
+
headers: getReadonlyHeaders ? () => toMutableHeaders(getReadonlyHeaders()) : undefined,
|
|
1067
1081
|
after: serverModule?.after,
|
|
1068
1082
|
updateTag: cacheModule?.updateTag,
|
|
1069
1083
|
}
|
|
@@ -1244,7 +1258,7 @@ const metricsCollector = {
|
|
|
1244
1258
|
// Send metrics in background (server-side only)
|
|
1245
1259
|
try {
|
|
1246
1260
|
const serverModules = await getServerModules()
|
|
1247
|
-
if (serverModules
|
|
1261
|
+
if (serverModules?.after) {
|
|
1248
1262
|
serverModules.after(async () => {
|
|
1249
1263
|
await this.sendMetrics(metrics)
|
|
1250
1264
|
})
|
|
@@ -1317,7 +1331,7 @@ export class BaseApiClient {
|
|
|
1317
1331
|
const serverModules = await getServerModules()
|
|
1318
1332
|
|
|
1319
1333
|
// Get auth token from various sources (server-side only)
|
|
1320
|
-
if (serverModules
|
|
1334
|
+
if (serverModules?.cookies && serverModules.headers) {
|
|
1321
1335
|
try {
|
|
1322
1336
|
const cookieStore = serverModules.cookies()
|
|
1323
1337
|
const headersList = serverModules.headers()
|
|
@@ -1377,7 +1391,7 @@ export class BaseApiClient {
|
|
|
1377
1391
|
// Get server modules (only available server-side)
|
|
1378
1392
|
const serverModules = await getServerModules()
|
|
1379
1393
|
|
|
1380
|
-
if (serverModules
|
|
1394
|
+
if (serverModules?.headers) {
|
|
1381
1395
|
try {
|
|
1382
1396
|
const headersList = serverModules.headers()
|
|
1383
1397
|
|
|
@@ -3761,12 +3775,36 @@ const searchParamsParser = {
|
|
|
3761
3775
|
filter: parseAsString.withDefault(''),
|
|
3762
3776
|
}` : ""}
|
|
3763
3777
|
|
|
3764
|
-
|
|
3778
|
+
// Error handling utility
|
|
3765
3779
|
function handleActionError(error: unknown): never {
|
|
3766
3780
|
const message = error instanceof Error ? error.message : 'An unexpected error occurred'
|
|
3767
3781
|
toast.error(message)
|
|
3768
3782
|
throw new Error(message)
|
|
3769
|
-
}
|
|
3783
|
+
}
|
|
3784
|
+
|
|
3785
|
+
type ActionResultLike<T> = {
|
|
3786
|
+
data?: T
|
|
3787
|
+
serverError?: unknown
|
|
3788
|
+
validationErrors?: unknown
|
|
3789
|
+
}
|
|
3790
|
+
|
|
3791
|
+
async function resolveActionResult<T>(actionPromise: Promise<any>): Promise<T> {
|
|
3792
|
+
const result = await actionPromise
|
|
3793
|
+
if (result && typeof result === 'object') {
|
|
3794
|
+
const actionResult = result as ActionResultLike<T>
|
|
3795
|
+
if (actionResult.serverError) {
|
|
3796
|
+
const message = typeof actionResult.serverError === 'string' ? actionResult.serverError : 'Server action failed'
|
|
3797
|
+
throw new Error(message)
|
|
3798
|
+
}
|
|
3799
|
+
if (actionResult.validationErrors) {
|
|
3800
|
+
throw new Error('Validation failed, please check your input')
|
|
3801
|
+
}
|
|
3802
|
+
if (typeof actionResult.data !== 'undefined') {
|
|
3803
|
+
return actionResult.data as T
|
|
3804
|
+
}
|
|
3805
|
+
}
|
|
3806
|
+
return result as T
|
|
3807
|
+
}
|
|
3770
3808
|
|
|
3771
3809
|
${queryHooks}
|
|
3772
3810
|
|
|
@@ -3849,7 +3887,7 @@ export function ${hookName}(${parameterTypes.length > 0 ? `${parameterTypes.join
|
|
|
3849
3887
|
queryKey: [...${queryKey}, searchParams],
|
|
3850
3888
|
queryFn: async ({ signal }: { signal?: AbortSignal }) => {
|
|
3851
3889
|
try {
|
|
3852
|
-
const result = await ${actionName}(${actionCallParams.replace(queryParamObject, "{ ...searchParams }")})
|
|
3890
|
+
const result = await resolveActionResult<${returnType}>(${actionName}(${actionCallParams.replace(queryParamObject, "{ ...searchParams }")}))
|
|
3853
3891
|
return result
|
|
3854
3892
|
} catch (error) {
|
|
3855
3893
|
handleActionError(error)
|
|
@@ -3887,7 +3925,7 @@ export function ${hookName.replace("use", "useInfinite")}(${parameterTypes.lengt
|
|
|
3887
3925
|
queryKey: [...${queryKey}, 'infinite', searchParams],
|
|
3888
3926
|
queryFn: async ({ pageParam = 1, signal }: { pageParam?: number; signal?: AbortSignal }) => {
|
|
3889
3927
|
try {
|
|
3890
|
-
const result = await ${actionName}(${actionCallParams.replace(queryParamObject, "{ ...searchParams, page: pageParam, limit: searchParams.limit }")})
|
|
3928
|
+
const result = await resolveActionResult<${returnType}>(${actionName}(${actionCallParams.replace(queryParamObject, "{ ...searchParams, page: pageParam, limit: searchParams.limit }")}))
|
|
3891
3929
|
return result
|
|
3892
3930
|
} catch (error) {
|
|
3893
3931
|
handleActionError(error)
|
|
@@ -3922,7 +3960,7 @@ export function ${hookName.replace("use", "useSuspense")}(${parameterTypes.lengt
|
|
|
3922
3960
|
return useSuspenseQuery({
|
|
3923
3961
|
queryKey: ${queryKey},
|
|
3924
3962
|
queryFn: async () => {
|
|
3925
|
-
const result = await ${actionName}(${actionCallParams})
|
|
3963
|
+
const result = await resolveActionResult<${returnType}>(${actionName}(${actionCallParams}))
|
|
3926
3964
|
return result
|
|
3927
3965
|
},
|
|
3928
3966
|
staleTime: ${staleTime},
|
|
@@ -3943,7 +3981,7 @@ export function ${hookName}(${parameterTypes.length > 0 ? `${parameterTypes.join
|
|
|
3943
3981
|
queryKey: ${queryKey},
|
|
3944
3982
|
queryFn: async ({ signal }: { signal?: AbortSignal }) => {
|
|
3945
3983
|
try {
|
|
3946
|
-
const result = await ${actionName}(${actionCallParams})
|
|
3984
|
+
const result = await resolveActionResult<${returnType}>(${actionCallParams === "{}" ? `${actionName}()` : `${actionName}(${actionCallParams})`})
|
|
3947
3985
|
return result
|
|
3948
3986
|
} catch (error) {
|
|
3949
3987
|
handleActionError(error)
|
|
@@ -3979,7 +4017,7 @@ export function ${hookName.replace("use", "useSuspense")}(${parameterTypes.lengt
|
|
|
3979
4017
|
return useSuspenseQuery({
|
|
3980
4018
|
queryKey: ${queryKey},
|
|
3981
4019
|
queryFn: async () => {
|
|
3982
|
-
const result = await ${actionName}(${actionCallParams})
|
|
4020
|
+
const result = await resolveActionResult<${returnType}>(${actionCallParams === "{}" ? `${actionName}()` : `${actionName}(${actionCallParams})`})
|
|
3983
4021
|
return result
|
|
3984
4022
|
},
|
|
3985
4023
|
staleTime: ${staleTime},
|
|
@@ -4033,7 +4071,7 @@ export function ${hookName}(options?: {
|
|
|
4033
4071
|
const mutation = useMutation({
|
|
4034
4072
|
mutationFn: async (variables: ${inputType}): Promise<${outputType}> => {
|
|
4035
4073
|
try {
|
|
4036
|
-
const result = await ${actionName}(${variablesParam === "undefined" ? "" : "variables"})
|
|
4074
|
+
const result = await resolveActionResult<${outputType}>(${actionName}(${variablesParam === "undefined" ? "" : "variables"}))
|
|
4037
4075
|
return (result ?? ({} as ${outputType}))
|
|
4038
4076
|
} catch (error) {
|
|
4039
4077
|
handleActionError(error)
|
|
@@ -9616,5 +9654,5 @@ exports.VersionChecker = VersionChecker;
|
|
|
9616
9654
|
exports.__name = __name;
|
|
9617
9655
|
exports.checkAndNotifyUpdates = checkAndNotifyUpdates;
|
|
9618
9656
|
exports.createBridgeVersionChecker = createBridgeVersionChecker;
|
|
9619
|
-
//# sourceMappingURL=chunk-
|
|
9620
|
-
//# sourceMappingURL=chunk-
|
|
9657
|
+
//# sourceMappingURL=chunk-PSLYNNKP.cjs.map
|
|
9658
|
+
//# sourceMappingURL=chunk-PSLYNNKP.cjs.map
|