generator-begcode
Version:
Spring Boot + Angular/React/Vue in one handy generator
212 lines (185 loc) • 6.27 kB
TypeScript
/* eslint-disable @typescript-eslint/consistent-type-imports */
import type { ExportApplicationPropertiesFromCommand } from '../../lib/command/types.js';
import type CoreGenerator from '../base-core/generator.ts';
import type { ClientApplication } from '../client/types.js';
import type { I18nApplication } from '../languages/types.js';
import type { SpringBootApplication } from '../server/types.js';
import type { OptionWithDerivedProperties } from './application-options.js';
export type BaseApplication = {
jhipsterVersion: string;
baseName: string;
capitalizedBaseName: string;
dasherizedBaseName: string;
humanizedBaseName: string;
camelizedBaseName: string;
hipster: string;
lowercaseBaseName: string;
upperFirstCamelCaseBaseName: string;
documentationArchiveUrl: string;
projectVersion: string;
projectDescription: string;
jhiPrefix: string;
entitySuffix: string;
dtoSuffix: string;
skipCommitHook: boolean;
skipJhipsterDependencies: boolean;
fakerSeed?: string;
nodeVersion: string;
nodePackageManager: string;
/* @deprecated use nodePackageManager */
clientPackageManager: string;
nodeDependencies: Record<string, string>;
skipClient?: boolean;
skipServer?: boolean;
monorepository?: boolean;
blueprints?: { name: string; version: string }[];
testFrameworks?: string[];
/** Customize templates sourceFile and destinationFile */
customizeTemplatePaths: ((
this: CoreGenerator,
file: {
namespace: string;
sourceFile: string;
resolvedSourceFile: string;
destinationFile: string;
templatesRoots: string[];
},
context: any,
) => undefined | { sourceFile: string; resolvedSourceFile: string; destinationFile: string; templatesRoots: string[] })[];
// add by begcode start
ormTool?: string;
userIdType?: string;
useLombok?: boolean;
useMultiTenant?: boolean;
smsProvider?: string;
ossProvider?: string;
useCommonTable?: boolean;
useBigScreen?: boolean;
frontOrBack?: string;
workflow?: string;
skipComponent?: string;
begcodeData?: any;
onlyLowcode?: boolean;
initJdl?: boolean;
// add by begcode end
} & I18nApplication;
/* ApplicationType Start */
type MicroservicesArchitectureApplication = {
microfrontend: boolean;
gatewayServerPort: number;
};
type GatewayApplication = MicroservicesArchitectureApplication & {
microfrontends: string[];
};
/*
Deterministic option causes types to be too complex
type ApplicationType = DeterministicOptionWithDerivedProperties<
'applicationType',
['monolith', 'gateway', 'microservice', 'gatewaywithall', 'commonmodule'],
[Record<string, never>, GatewayApplication, MicroservicesArchitectureApplication]
>;
*/
type ApplicationProperties = OptionWithDerivedProperties<'applicationType', ['monolith', 'gateway', 'microservice', 'commonmodule']> &
GatewayApplication &
MicroservicesArchitectureApplication;
/* ApplicationType End */
/* AuthenticationType Start */
/*
Deterministic option causes types to be too complex
type UserManagement =
| {
skipUserManagement: true;
generateUserManagement: false;
generateBuiltInUserEntity?: false;
generateBuiltInAuthorityEntity: false;
}
| {
skipUserManagement: false;
generateBuiltInUserEntity?: boolean;
generateUserManagement: true;
user: any;
userManagement: any;
generateBuiltInAuthorityEntity: boolean;
authority: any;
};
*/
type UserManagement<Entity> = {
skipUserManagement: boolean;
generateUserManagement: boolean;
generateBuiltInUserEntity?: boolean;
generateBuiltInAuthorityEntity: boolean;
user: Entity;
userManagement: Entity;
authority: Entity;
};
type JwtApplication = {
jwtSecretKey: string;
};
type Oauth2Application = {
syncUserWithIdp?: boolean;
};
type SessionApplication = {
rememberMeKey: string;
};
/*
Deterministic option causes types to be too complex
type AuthenticationType = DeterministicOptionWithDerivedProperties<
'authenticationType',
['jwt', 'oauth2', 'session'],
[JwtApplication, Oauth2Application, SessionApplication]
>;
*/
type AuthenticationProperties<Entity> = OptionWithDerivedProperties<'authenticationType', ['jwt', 'oauth2', 'session']> &
UserManagement<Entity> &
JwtApplication &
Oauth2Application &
SessionApplication;
/* AuthenticationType End */
type QuirksApplication = {
cypressBootstrapEntities?: boolean;
};
export type CommonClientServerApplication<Entity> = BaseApplication &
QuirksApplication &
AuthenticationProperties<Entity> &
SpringBootApplication &
ClientApplication &
ExportApplicationPropertiesFromCommand<typeof import('../git/command.ts').default> &
ExportApplicationPropertiesFromCommand<typeof import('../docker/command.ts').default> &
import('../docker/types.d.ts').DockerApplicationType &
ExportApplicationPropertiesFromCommand<typeof import('../project-name/command.ts').default> &
ApplicationProperties & {
clientRootDir: string;
clientSrcDir: string;
clientTestDir?: string;
clientDistDir?: string;
clientDir?: string;
devServerPort: number;
devServerPorts: number[];
pages: string[];
serverPort: number;
backendType?: string;
backendTypeJavaAny?: boolean;
backendTypeSpringBoot?: boolean;
temporaryDir?: string;
hipsterName?: string;
hipsterProductName?: string;
hipsterHomePageProductName?: string;
hipsterStackOverflowProductName?: string;
hipsterBugTrackerProductName?: string;
hipsterChatProductName?: string;
hipsterTwitterUsername?: string;
hipsterDocumentationLink?: string;
hipsterTwitterLink?: string;
hipsterProjectLink?: string;
hipsterStackoverflowLink?: string;
hipsterBugTrackerLink?: string;
hipsterChatLink?: string;
dockerServicesDir?: string;
dockerServices?: string[];
prettierFolders?: string;
prettierExtensions?: string;
builtInServices?: string[];
};
type ServiceDiscoveryApplication = OptionWithDerivedProperties<'serviceDiscoveryType', ['no', 'eureka', 'consul']>;
type MonitoringApplication = OptionWithDerivedProperties<'monitoring', ['no', 'elk', 'prometheus']>;
export type PlatformApplication = ServiceDiscoveryApplication & MonitoringApplication;