@baseplate-dev/react-generators
Version:
React Generators for Baseplate
193 lines • 10.1 kB
TypeScript
import type { TsCodeFragment, TsImportDeclaration } from '@baseplate-dev/core-generators';
/**
* Argument for the createApolloClient function with various
* hooks to get the appropriate values
*
* @example
* ```ts
* // In app/AppApolloProvider.tsx
* function AppApolloProvider() {
* REACT_RENDER_BODY;
*
* const client = useMemo(
* () => createApolloClient({ NAME }),
* [NAME],
* );
* }
*
* // In services/apollo/index.ts
*
* function createApolloClient({ NAME }: { NAME: TYPE }) {
* ...
* }
* ```
*/
export interface ApolloCreateArgument {
/**
* Name of the argument
*/
name: string;
/**
* Type of the argument
*/
type: TsCodeFragment | string;
/**
* Fragment to add to the React render function for the Apollo Provider
*
* This should add the name of the argument to the scope to be used in the
* createApolloClient function.
*/
reactRenderBody: TsCodeFragment;
}
declare const APOLLO_LINK_PRIORITY: {
error: number;
auth: number;
network: number;
};
type ApolloLinkPriority = keyof typeof APOLLO_LINK_PRIORITY;
/**
* Link for the ApolloClient
*/
export interface ApolloLink {
/**
* Name of the link
*/
name: string;
/**
* Import of the link if not declared in the bodyFragment
*/
nameImport?: TsImportDeclaration;
/**
* Priority of the link
*/
priority: ApolloLinkPriority;
/**
* Fragment to add the body of the createApolloClient function.
*
* This should add the name of the link to the function scope.
*/
bodyFragment?: TsCodeFragment;
/**
* The name of any links this link depends on.
*/
dependencies?: string[];
/**
* Which network transport this link applies to.
*
* @default 'all'
*/
transport?: 'http' | 'ws' | 'all';
}
declare const reactApolloConfigProvider: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
createApolloClientArguments: import("@baseplate-dev/utils").NamedArrayFieldContainer<ApolloCreateArgument>;
apolloLinks: import("@baseplate-dev/utils").NamedArrayFieldContainer<ApolloLink>;
websocketOptions: import("@baseplate-dev/utils").MapContainer<string, string | TsCodeFragment>;
}>, "getValues">>;
export { reactApolloConfigProvider };
export interface ReactApolloProvider {
/**
* Get the path to the generated graphql file
*
* @returns The path to the generated graphql file
*/
getGeneratedFilePath(): string;
}
export declare const reactApolloProvider: import("@baseplate-dev/sync").ProviderType<ReactApolloProvider>;
export declare const reactApolloGenerator: import("@baseplate-dev/sync").GeneratorBundleCreator<{
devApiEndpoint: string;
schemaLocation: string;
enableSubscriptions?: boolean | undefined;
}, {
paths: import("@baseplate-dev/sync").GeneratorTask<{
apolloReactApolloPaths: import("@baseplate-dev/sync").ProviderExport<import("./generated/template-paths.js").ApolloReactApolloPaths>;
}, {
packageInfo: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").PackageInfoProvider>;
}, undefined>;
imports: import("@baseplate-dev/sync").GeneratorTask<{
generatedGraphqlImports: import("@baseplate-dev/sync").ProviderExport<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
'*': {};
}>>;
reactApolloImports: import("@baseplate-dev/sync").ProviderExport<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
config: {};
createApolloCache: {};
createApolloClient: {};
}>>;
}, {
paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").ApolloReactApolloPaths>;
}, undefined>;
renderers: import("@baseplate-dev/sync").GeneratorTask<{
apolloReactApolloRenderers: import("@baseplate-dev/sync").ProviderExport<import("./generated/template-renderers.js").ApolloReactApolloRenderers>;
}, {
paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").ApolloReactApolloPaths>;
typescriptFile: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").TypescriptFileProvider>;
}, undefined>;
setup: import("@baseplate-dev/sync").GeneratorTask<import("@baseplate-dev/sync").ProviderExportMap<Record<string, import("@baseplate-dev/sync").Provider>> | undefined, import("@baseplate-dev/sync").ProviderDependencyMap<Record<string, import("@baseplate-dev/sync").Provider>>, import("@baseplate-dev/sync").ProviderExportMap<Record<string, import("@baseplate-dev/sync").Provider>> | undefined>;
nodePackages: import("@baseplate-dev/sync").AnyGeneratorTask;
codegen: import("@baseplate-dev/sync").AnyGeneratorTask;
reactTypescript: import("@baseplate-dev/sync").GeneratorTask<undefined, {
provider: import("@baseplate-dev/sync").ProviderType<import("#src/generators/core/index.js").ReactTypescriptProvider>;
}, undefined>;
websocketPackages: import("@baseplate-dev/sync").AnyGeneratorTask | undefined;
eslintConfig: import("@baseplate-dev/sync").GeneratorTask<undefined, {
provider: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
react: import("@baseplate-dev/utils").ScalarContainer<boolean | undefined>;
eslintIgnore: import("@baseplate-dev/utils").ArrayContainer<string>;
devDependencies: import("@baseplate-dev/utils").ArrayContainer<string>;
disableVitest: import("@baseplate-dev/utils").ScalarContainer<boolean | undefined>;
tsDefaultProjectFiles: import("@baseplate-dev/utils").ArrayContainer<string>;
}>, "getValues">>;
}, undefined>;
prettier: import("@baseplate-dev/sync").GeneratorTask<undefined, {
provider: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").PrettierProvider>;
}, undefined>;
reactProxy: import("@baseplate-dev/sync").GeneratorTask<undefined, {
provider: import("@baseplate-dev/sync").ProviderType<import("#src/generators/core/index.js").ReactProxyProvider>;
}, undefined>;
reactConfig: import("@baseplate-dev/sync").GeneratorTask<undefined, {
provider: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
configEntries: import("@baseplate-dev/utils").MapContainer<string, import("#src/generators/core/index.js").ReactConfigEntry>;
additionalDevEnvVars: import("@baseplate-dev/utils").MapContainer<string, string>;
}>, "getValues">>;
}, undefined>;
reactAppConfig: import("@baseplate-dev/sync").GeneratorTask<any, {
paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").ApolloReactApolloPaths>;
reactAppConfig: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
errorBoundary: import("@baseplate-dev/utils").ScalarContainer<((contents: TsCodeFragment) => TsCodeFragment) | undefined>;
renderWrappers: import("@baseplate-dev/utils").MapContainer<string, import("#src/generators/core/index.js").RenderWrapper>;
renderSiblings: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
renderRoot: import("@baseplate-dev/utils").ScalarContainer<TsCodeFragment | undefined>;
}>, "getValues">>;
}, any>;
routerContext: import("@baseplate-dev/sync").GeneratorTask<any, {
reactRouterConfig: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
routerSetupFragments: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
routerBodyFragments: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
rootLayoutComponent: import("@baseplate-dev/utils").ScalarContainer<TsCodeFragment | undefined>;
rootContextFields: import("@baseplate-dev/utils").NamedArrayFieldContainer<import("#src/generators/core/index.js").RootRouteContextField>;
errorComponentHeaderFragments: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
errorComponentBodyFragments: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
}>, "getValues">>;
}, any>;
main: import("@baseplate-dev/sync").GeneratorTask<{
reactApollo: import("@baseplate-dev/sync").ProviderExport<ReactApolloProvider>;
}, {
reactConfigImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
config: {};
}>>;
reactApolloConfigValues: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/utils").FieldMapValues<{
createApolloClientArguments: import("@baseplate-dev/utils").NamedArrayFieldContainer<ApolloCreateArgument>;
apolloLinks: import("@baseplate-dev/utils").NamedArrayFieldContainer<ApolloLink>;
websocketOptions: import("@baseplate-dev/utils").MapContainer<string, string | TsCodeFragment>;
}>>;
paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").ApolloReactApolloPaths>;
renderers: import("@baseplate-dev/sync").ProviderType<import("./generated/template-renderers.js").ApolloReactApolloRenderers>;
}, any>;
graphqlErrorContext: import("@baseplate-dev/sync").GeneratorTask<any, {
reactErrorConfig: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
contextActions: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
errorReporters: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
errorFormatters: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
}>, "getValues">>;
}, any>;
}>;
//# sourceMappingURL=react-apollo.generator.d.ts.map