@baseplate-dev/react-generators
Version:
React Generators for Baseplate
64 lines • 3.39 kB
JavaScript
import { renderTextTemplateFileAction, typescriptFileProvider, } from '@baseplate-dev/core-generators';
import { createGenerator, createGeneratorTask, createProviderTask, } from '@baseplate-dev/sync';
import { quot } from '@baseplate-dev/utils';
import { z } from 'zod';
import { generatedGraphqlImportsProvider } from '#src/generators/apollo/react-apollo/index.js';
import { reactComponentsImportsProvider } from '#src/generators/core/react-components/index.js';
import { reactConfigImportsProvider, reactConfigProvider, } from '#src/generators/core/react-config/index.js';
import { reactErrorImportsProvider } from '#src/generators/core/react-error/index.js';
import { reactRoutesProvider } from '#src/providers/index.js';
import { ADMIN_ADMIN_BULL_BOARD_GENERATED } from './generated/index.js';
const descriptorSchema = z.object({
bullBoardUrl: z.string().min(1),
});
export const adminBullBoardGenerator = createGenerator({
name: 'admin/admin-bull-board',
generatorFileUrl: import.meta.url,
descriptorSchema,
buildTasks: ({ bullBoardUrl }) => ({
paths: ADMIN_ADMIN_BULL_BOARD_GENERATED.paths.task,
reactConfig: createProviderTask(reactConfigProvider, (reactConfig) => {
reactConfig.configEntries.set('VITE_BULL_BOARD_BASE', {
comment: 'Base path for bull-board site',
validator: 'z.string().min(1)',
devDefaultValue: bullBoardUrl,
});
}),
main: createGeneratorTask({
dependencies: {
typescriptFile: typescriptFileProvider,
reactComponentsImports: reactComponentsImportsProvider,
reactConfigImports: reactConfigImportsProvider,
reactErrorImports: reactErrorImportsProvider,
generatedGraphqlImports: generatedGraphqlImportsProvider,
paths: ADMIN_ADMIN_BULL_BOARD_GENERATED.paths.provider,
reactRoutes: reactRoutesProvider,
},
run({ typescriptFile, reactComponentsImports, reactConfigImports, reactErrorImports, generatedGraphqlImports, paths, reactRoutes, }) {
const routeFilePath = reactRoutes.getRouteFilePath();
return {
build: async (builder) => {
await builder.apply(typescriptFile.renderTemplateFile({
template: ADMIN_ADMIN_BULL_BOARD_GENERATED.templates.bullBoardPage,
destination: paths.bullBoardPage,
variables: {
TPL_ROUTE_PATH: quot(`${routeFilePath}/bull-board/`),
},
importMapProviders: {
reactComponentsImports,
reactConfigImports,
reactErrorImports,
generatedGraphqlImports,
},
}));
await builder.apply(renderTextTemplateFileAction({
template: ADMIN_ADMIN_BULL_BOARD_GENERATED.templates.bullBoard,
destination: paths.bullBoard,
}));
},
};
},
}),
}),
});
//# sourceMappingURL=admin-bull-board.generator.js.map