UNPKG

convex

Version:

Client for the Convex Cloud

134 lines (125 loc) 4.91 kB
"use strict"; import { header } from "./common.js"; export function importPath(modulePath) { const filePath = modulePath.replace("\\", "/"); const lastDot = filePath.lastIndexOf("."); return filePath.slice(0, lastDot === -1 ? void 0 : lastDot); } export function moduleIdentifier(modulePath) { return importPath(modulePath).replace("/", "_"); } const reactJS = ` ${header("Generated React hooks.")} import { useQueryGeneric, useMutationGeneric, useConvexGeneric } from "convex/react"; /** * Load a reactive query within a React component. * * This React hook contains internal state that will cause a rerender whenever * the query result changes. * * This relies on the {@link ConvexProvider} being above in the React component tree. * * @param name - The name of the query function. * @param args - The arguments to the query function. * @returns \`undefined\` if loading and the query's return value otherwise. */ export const useQuery = useQueryGeneric; /** * Construct a new {@link ReactMutation}. * * Mutation objects can be called like functions to request execution of the * corresponding Convex function, or further configured with * [optimistic updates](https://docs.convex.dev/using/optimistic-updates). * * The value returned by this hook is stable across renders, so it can be used * by React dependency arrays and memoization logic relying on object identity * without causing rerenders. * * This relies on the {@link ConvexProvider} being above in the React component tree. * * @param name - The name of the mutation. * @returns The {@link ReactMutation} object with that name. */ export const useMutation = useMutationGeneric; /** * Get the {@link ConvexReactClient} within a React component. * * This relies on the {@link ConvexProvider} being above in the React component tree. * * @returns The active {@link ConvexReactClient} object, or \`undefined\`. */ export const useConvex = useConvexGeneric; `; export function reactCodegen(modulePaths) { const reactDTS = `${header("Generated React hooks.")} import type { ApiFromModules, OptimisticLocalStore as GenericOptimisticLocalStore } from "convex/browser"; import type { UseQueryForAPI, UseMutationForAPI, UseConvexForAPI } from "convex/react"; ${modulePaths.map( (modulePath) => `import type * as ${moduleIdentifier(modulePath)} from "../${importPath( modulePath )}";` ).join("\n")} /** * A type describing your app's public Convex API. * * This \`ConvexAPI\` type includes information about the arguments and return * types of your app's query and mutation functions. * * This type should be used with type-parameterized classes like * \`ConvexReactClient\` to create app-specific types. */ export type ConvexAPI = ApiFromModules<{ ${modulePaths.map( (modulePath) => `"${importPath(modulePath)}": typeof ${moduleIdentifier(modulePath)},` ).join("\n")} }>; /** * Load a reactive query within a React component. * * This React hook contains internal state that will cause a rerender whenever * the query result changes. * * This relies on the {@link ConvexProvider} being above in the React component tree. * * @param name - The name of the query function. * @param args - The arguments to the query function. * @returns \`undefined\` if loading and the query's return value otherwise. */ export declare const useQuery: UseQueryForAPI<ConvexAPI>; /** * Construct a new {@link ReactMutation}. * * Mutation objects can be called like functions to request execution of the * corresponding Convex function, or further configured with * [optimistic updates](https://docs.convex.dev/using/optimistic-updates). * * The value returned by this hook is stable across renders, so it can be used * by React dependency arrays and memoization logic relying on object identity * without causing rerenders. * * This relies on the {@link ConvexProvider} being above in the React component tree. * * @param name - The name of the mutation. * @returns The {@link ReactMutation} object with that name. */ export declare const useMutation: UseMutationForAPI<ConvexAPI>; /** * Get the {@link ConvexReactClient} within a React component. * * This relies on the {@link ConvexProvider} being above in the React component tree. * * @returns The active {@link ConvexReactClient} object, or \`undefined\`. */ export declare const useConvex: UseConvexForAPI<ConvexAPI>; /** * A view of the query results currently in the Convex client for use within * optimistic updates. */ export type OptimisticLocalStore = GenericOptimisticLocalStore<ConvexAPI>; `; return { JS: reactJS, DTS: reactDTS }; } //# sourceMappingURL=react.js.map