import { UseQueryOptions, UseMutationOptions, QueryObserverResult, UseMutationResult } from 'react-query'; export * from 'react-query'; import { AbortSignal } from 'abort-controller'; import { IdTokenClaims, UserinfoResponse } from 'openid-client'; interface ServerAuthAuthenticated { isAuthenticated: true; credentials: ServerAuthCredentials; } interface ServerAuthUnauthenticated { error?: unknown; isAuthenticated: false; } declare type ServerAuth = ServerAuthAuthenticated | ServerAuthUnauthenticated; interface ServerAuthCredentials { audience?: string; accessToken: string; claims: IdTokenClaims; expiresAt: number; idToken: string; scope: string[]; user: UserinfoResponse; } interface FunctionQueryOptions extends Omit { } interface FunctionMutationOptions extends UseMutationOptions { } declare type NonContextFunctionArgs = T extends (ctx: ServerFunctionContext, ...args: infer U) => any ? U : never; declare type FunctionReturnType = ReturnType extends PromiseLike ? U : ReturnType; interface ServerFunctionContext { auth: ServerAuth; signal?: AbortSignal; } interface ServerFunction { (ctx: ServerFunctionContext, ...args: any[]): any; } /** * Create a `react-query` `useQuery` hook function suitable for reading data from a * Nostalgie Function * * @param fn A reference to a Nostalgie Function exposed via the Functions Entrypoint * @param factoryOptions Default options to apply to all invocations of the actual * query. You might use this to set default cache values like `stateTime`. * * @example * ```ts * import * as React from 'react'; * import { createFunctionQuery } from 'nostalgie/functions'; * import { listBlogPosts } from './functions.ts'; * * const useBlogPosts = createFunctionQuery(listBlogPosts, { staleTime: 30000 }); * * export default function BlogPosts() { * const posts = useBlogPosts([]); * * if (posts.isLoading) return
Loading...
; * if (posts.isError) return
{`Error: ${data.error}`
* * return posts.data.map(post => ( * * )); * } * ``` */ declare function createQueryFunction(fn: T, factoryOptions?: FunctionQueryOptions): (args: NonContextFunctionArgs, options?: FunctionQueryOptions | undefined) => QueryObserverResult, unknown>; declare function useQueryFunction(fn: T, args: NonContextFunctionArgs, options?: FunctionQueryOptions): QueryObserverResult, unknown>; /** * * @param fn A reference to a Nostalgie Function exposed via the Functions Entrypoint * @param factoryOptions Default options to apply to all invocations of the actual * mutation. You might use this to set default observer hooks like `onError`. * * @example * ```ts * import * as React from 'react'; * import { createFunctionQuery } from 'nostalgie/functions'; * import { likeBlogPost } from './functions.ts'; * import type { BlogPost } from './functions.ts'; * * const useLikePost = createFunctionMutation(likeBlogPost); * * export default function BlogPost(props: React.PropsWithChildren<{ post: BlogPost }>) { * const likePost = useLikePost(); * const onClickLike = (e: React.MouseEvent) => { * e.preventDefault(); * likePost.mutate([post.id]); * } * * return ( *
*

{post.title}

*

{post.body}

*
* * {likePost.isLoading ? '...' : null} * {likePost.isError ? likePost.error.message : null} *
*
* ); * } * ``` */ declare function createMutationFunction(fn: T, factoryOptions?: FunctionMutationOptions, unknown, NonContextFunctionArgs>): (options?: FunctionMutationOptions, unknown, NonContextFunctionArgs, unknown> | undefined) => void | UseMutationResult, unknown, NonContextFunctionArgs, unknown>; export { ServerFunction, ServerFunctionContext, createMutationFunction, createQueryFunction, useQueryFunction };