Skip to content

Latest commit

 

History

History

@leancodepl/admin - Admin App Generator

Admin App Generator is a package for generating strongly typed components from backend admin contracts. It uses schema and api factory generated by admin and client plugins of Contracts Generator It relies on Ant Design and react-query-cqrs-client.

Usage

Example Api Components generation

import { createApiComponents } from "@leancodepl/admin"; // function that generates strongly typed components
import { QueryClient } from "@tanstack/react-query";
import schema from "./api-components-schema"; // schema of api components generated by "admin" plugin
import cqrs from "./cqrs"; // api factory generated by "client" plugin
import { loginManager } from "../services/loginManager";

export type ReactQueryCqrs = ReturnType<typeof mkCqrsClient>;

export const tokenProvider: TokenProvider = {
  getToken: () => loginManager.getToken().then(t => (t ? `Bearer ${t}` : undefined)),
  invalidateToken: () => loginManager.tryRefreshToken().then(r => r ?? false),
};

export const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      retry: 3,
    },
  },
});

const cqrsAdminClientConfig = {
  cqrsEndpoint: "api.local.lncd.pl",
  queryClient,
  tokenProvider,
};

// Generated dictionary of Api Components
export const apiComponents = createApiComponents(schema, { cqrsClientConfig: cqrsAdminClientConfig, cqrs });

Example Api Component usage

export function HomePage() {
    return (
        <apiComponents.TenantsListApiTable
            NameRender={(_, { id, name }) => <>{name} - {id}</>}
            pagination={{ defaultPageSize: 20 }}
            rowKey={({ id }) => id}
        />
    );
}