gen-jhipster
Version:
Spring Boot + Angular/React/Vue in one handy generator
338 lines (337 loc) • 26.5 kB
TypeScript
import type { GeneratorMeta } from '@yeoman/types';
import { simpleGit } from 'simple-git';
import type { CopyOptions } from 'mem-fs-editor';
import type { Data as TemplateData, Options as TemplateOptions } from 'ejs';
import YeomanGenerator, { type ComposeOptions, type Storage } from 'yeoman-generator';
import type Environment from 'yeoman-environment';
import SharedData from '../base/shared-data.js';
import type { Logger } from '../base/support/index.js';
import type { CascatedEditFileCallback, EditFileCallback, EditFileOptions, JHipsterGeneratorFeatures, JHipsterGeneratorOptions, ValidationResult, WriteFileOptions } from '../base/api.js';
import { type JHipsterArguments, type JHipsterCommandDefinition, type JHipsterConfigs, type JHipsterOptions } from '../../lib/command/index.js';
import NeedleApi from '../needle-api.js';
import type BaseApplicationGenerator from '../base-application/generator.js';
import type { ApplicationConfiguration } from '../../lib/types/application/yo-rc.js';
/**
* This is the base class for a generator for every generator.
*/
export default class CoreGenerator extends YeomanGenerator<JHipsterGeneratorOptions, JHipsterGeneratorFeatures> {
static asPriority: (priorityName: string) => string;
static INITIALIZING: string;
static PROMPTING: string;
static CONFIGURING: string;
static COMPOSING: string;
static COMPOSING_COMPONENT: string;
static LOADING: string;
static PREPARING: string;
static POST_PREPARING: string;
static DEFAULT: string;
static WRITING: string;
static POST_WRITING: string;
static INSTALL: string;
static POST_INSTALL: string;
static END: string;
context?: Record<string, any>;
useVersionPlaceholders?: boolean;
skipChecks?: boolean;
ignoreNeedlesError?: boolean;
experimental?: boolean;
debugEnabled?: boolean;
jhipster7Migration?: boolean | 'verbose' | 'silent';
relativeDir: (from: string, to: string) => string;
relative: (from: string, to: string) => string;
readonly sharedData: SharedData<any>;
readonly logger: Logger;
jhipsterConfig: Record<string, any>;
/**
* @deprecated
*/
jhipsterTemplatesFolders: string[];
blueprintStorage?: Storage;
/** Allow to use a specific definition at current command operations */
generatorCommand?: JHipsterCommandDefinition;
/**
* @experimental
* Additional commands to be considered
*/
generatorsToCompose: string[];
private _jhipsterGenerator?;
private _needleApi?;
env: Environment;
log: Logger;
_meta?: GeneratorMeta;
constructor(args: string | string[], options: JHipsterGeneratorOptions, features: JHipsterGeneratorFeatures);
/**
* Override yeoman generator's usage function to fine tune --help message.
*/
usage(): string;
storeCurrentJHipsterVersion(): void;
/**
* @deprecated
*/
get needleApi(): NeedleApi;
/**
* JHipster config with default values fallback
*/
get jhipsterConfigWithDefaults(): Readonly<ApplicationConfiguration & Record<string, any>>;
/**
* Warn or throws check failure based on current skipChecks option.
* @param message
*/
handleCheckFailure(message: string): void;
/**
* Check if the JHipster version used to generate an existing project is less than the passed version argument
*
* @param {string} version - A valid semver version string
*/
isJhipsterVersionLessThan(version: string): boolean;
/**
* Wrapper for `semver.lt` to check if the oldVersion exists and is less than the newVersion.
* Can be used by blueprints.
*/
isVersionLessThan(oldVersion: string | null, newVersion: string): boolean;
/**
* Get arguments for the priority
*/
getArgsForPriority(priorityName: string): {
control: import("../base/types.js").Control;
source: import("../../lib/types/application/application.js").BaseApplicationSource;
}[] | {
control: import("../base/types.js").Control;
configChanges: {
[k: string]: {
newValue: any;
oldValue: any;
};
};
}[] | {
control: import("../base/types.js").Control;
}[];
/**
* Check if the generator should ask for prompts.
*/
shouldAskForPrompts({ control }: {
control: any;
}): boolean;
/**
* Override yeoman-generator method that gets methods to be queued, filtering the result.
*/
getTaskNames(): string[];
queueCurrentJHipsterCommandTasks(): void;
/**
* Get the current Command Definition for the generator.
* `generatorCommand` takes precedence.
*/
getCurrentJHipsterCommand(): Promise<JHipsterCommandDefinition>;
/**
* Parse command definition arguments, options and configs.
* Blueprints with command override takes precedence.
*/
parseCurrentJHipsterCommand(): Promise<void>;
/**
* Prompts for command definition configs.
* Blueprints with command override takes precedence.
*/
promptCurrentJHipsterCommand(): Promise<import("yeoman-generator").PromptAnswers>;
/**
* Configure the current JHipster command.
* Blueprints with command override takes precedence.
*/
configureCurrentJHipsterCommandConfig(): Promise<void>;
/**
* Load the current JHipster command storage configuration into the context.
* Blueprints with command override takes precedence.
*/
loadCurrentJHipsterCommandConfig(context: any): Promise<void>;
/**
* @experimental
* Compose the current JHipster command compose.
* Blueprints commands compose without generators will be composed.
*/
composeCurrentJHipsterCommand(): Promise<void>;
parseJHipsterCommand(commandDef: JHipsterCommandDefinition): void;
parseJHipsterOptions(options: JHipsterOptions | undefined, configs?: JHipsterConfigs | boolean, common?: boolean): void;
parseJHipsterArguments(jhipsterArguments?: JHipsterArguments): void;
prepareQuestions(configs?: JHipsterConfigs): ({
storage: any;
type: "input" | "list" | "confirm" | "checkbox";
message: string | ((any: any) => string);
when?: boolean | ((any: any) => boolean);
default?: any | ((any: any) => any);
filter?: any | ((any: any) => any);
transformer?: any | ((any: any) => any);
validate?: any | ((any: any) => any);
name: string;
choices: import("../../lib/command/types.js").JHipsterChoices | undefined;
} | {
storage: any;
type?: "input" | "checkbox" | "confirm" | "list" | undefined;
message?: string | ((any: any) => string) | undefined;
when?: boolean | ((any: any) => boolean);
default?: any | ((any: any) => any);
filter?: any | ((any: any) => any);
transformer?: any | ((any: any) => any);
validate?: any | ((any: any) => any);
name: string;
choices: import("../../lib/command/types.js").JHipsterChoices | undefined;
})[];
/**
* Generate a date to be used by Liquibase changelogs.
*
* @param {Boolean} [reproducible=true] - Set true if the changelog date can be reproducible.
* Set false to create a changelog date incrementing the last one.
* @return {String} Changelog date.
*/
dateFormatForLiquibase(reproducible?: boolean): string;
/**
* Alternative templatePath that fetches from the blueprinted generator, instead of the blueprint.
*/
jhipsterTemplatePath(...path: string[]): string;
/**
* Compose with a jhipster generator using default jhipster config.
* @return {object} the composed generator
*/
composeWithJHipster<const G extends string>(gen: G, options?: ComposeOptions<BaseApplicationGenerator>): Promise<BaseApplicationGenerator<{
InitializingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
PromptingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
ConfiguringTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
ComposingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
LoadingTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingTaskParam: import("../../lib/types/application/tasks.js").PreparingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
ConfiguringEachEntityTaskParam: import("../../lib/types/application/tasks.js").ConfiguringEachEntityTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
LoadingEntitiesTaskParam: import("../../lib/types/application/tasks.js").LoadingEntitiesTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingEachEntityTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingEachEntityFieldTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityFieldTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingEachEntityRelationshipTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityRelationshipTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostPreparingEachEntityTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostPreparingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl & {
source: import("../../lib/types/application/application.js").BaseApplicationSource;
} & {
application: import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>;
};
DefaultTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithEntities<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
WritingTaskParam: import("../../lib/types/application/tasks.js").WritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
WritingEntitiesTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithEntities<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostWritingTaskParam: import("../../lib/types/application/tasks.js").PostWritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostWritingEntitiesTaskParam: import("../../lib/types/application/tasks.js").PostWritingEntitiesTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreConflictsTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
InstallTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostInstallTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
EndTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
}>[]>;
/**
* Compose with a jhipster generator using default jhipster config, but queue it immediately.
*/
dependsOnJHipster(generator: string, options?: ComposeOptions<BaseApplicationGenerator>): Promise<BaseApplicationGenerator<{
InitializingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
PromptingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
ConfiguringTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
ComposingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl;
LoadingTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplicationDefaults<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingTaskParam: import("../../lib/types/application/tasks.js").PreparingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
ConfiguringEachEntityTaskParam: import("../../lib/types/application/tasks.js").ConfiguringEachEntityTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
LoadingEntitiesTaskParam: import("../../lib/types/application/tasks.js").LoadingEntitiesTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingEachEntityTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingEachEntityFieldTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityFieldTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreparingEachEntityRelationshipTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityRelationshipTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostPreparingEachEntityTaskParam: import("../../lib/types/application/tasks.js").PreparingEachEntityTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostPreparingTaskParam: import("../../lib/types/base/tasks.js").TaskParamWithControl & {
source: import("../../lib/types/application/application.js").BaseApplicationSource;
} & {
application: import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>;
};
DefaultTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithEntities<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
WritingTaskParam: import("../../lib/types/application/tasks.js").WritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
WritingEntitiesTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithEntities<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostWritingTaskParam: import("../../lib/types/application/tasks.js").PostWritingTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostWritingEntitiesTaskParam: import("../../lib/types/application/tasks.js").PostWritingEntitiesTaskParam<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PreConflictsTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
InstallTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
PostInstallTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
EndTaskParam: import("../../lib/types/application/tasks.js").TaskParamWithApplication<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>, import("../../lib/types/application/application.js").ApplicationType<import("../base-application/index.js").Entity<import("../base-application/index.js").Field, never>>>;
}>[]>;
/**
* Remove File
*/
removeFile(...path: string[]): string;
/**
* Remove Folder
* @param path
*/
removeFolder(...path: string[]): void;
/**
* Fetch files from the gen-jhipster instance installed
*/
fetchFromInstalledJHipster(...path: string[]): string;
/**
* Utility function to write file.
*
* @param source
* @param destination - destination
* @param data - template data
* @param options - options passed to ejs render
* @param copyOptions
*/
writeFile(source: string, destination: string, data?: TemplateData, options?: TemplateOptions, copyOptions?: CopyOptions): void;
/**
* write the given files using provided options.
*/
writeFiles<DataType = any>(options: WriteFileOptions<DataType, this>): Promise<string[]>;
/**
* Edit file content.
* Edits an empty file if `options.create` is truthy or no callback is passed.
* @example
* // Throws if `foo.txt` doesn't exists or append the content.
* editFile('foo.txt', content => content + 'foo.txt content');
* @example
* // Appends `foo.txt` content if whether exists or not.
* editFile('foo.txt', { create: true }, content => content + 'foo.txt content');
* @example
* // Appends `foo.txt` content if whether exists or not using the returned cascaded callback.
* editFile('foo.txt')(content => content + 'foo.txt content');
*/
editFile(file: string, ...transformCallbacks: EditFileCallback<this>[]): CascatedEditFileCallback<this>;
editFile(file: string, options: EditFileOptions, ...transformCallbacks: EditFileCallback<this>[]): CascatedEditFileCallback<this>;
/**
* Convert value to a yaml and write to destination
*/
writeDestinationYaml(filepath: string, value: Record<string | number, any>): void;
/**
* Merge value to an existing yaml and write to destination
* Removes every comment (due to parsing/merging process) except the at the top of the file.
*/
mergeDestinationYaml(filepath: string, value: Record<string | number, any>): void;
/**
* Merge value to an existing json and write to destination
*/
mergeDestinationJson(filepath: string, value: Record<string | number, any>): void;
/**
* Shallow clone or convert dependencies to placeholder if needed.
*/
prepareDependencies(map: Record<string, string>, valuePlaceholder?: 'java' | 'docker' | ((value: string) => string)): Record<string, string>;
loadNodeDependencies(destination: Record<string, string>, source: Record<string, string>): void;
/**
* Load Java dependencies from a gradle catalog file.
* @param javaDependencies
* @param gradleCatalog Gradle catalog file path, true for gen-jhipster's generator catalog of falsy for blueprint catalog
*/
loadJavaDependenciesFromGradleCatalog(javaDependencies: Record<string, string>, gradleCatalogFile?: string): void;
loadJavaDependenciesFromGradleCatalog(javaDependencies: Record<string, string>, mainGenerator: boolean): void;
loadNodeDependenciesFromPackageJson(destination: Record<string, string>, packageJsonFile?: string): void;
/**
* Print ValidationResult info/warnings or throw result Error.
*/
validateResult(result: ValidationResult, { throwOnError }?: {
throwOnError?: boolean | undefined;
}): void;
/**
* Checks if there is a newer JHipster version available.
*/
protected checkForNewVersion(): Promise<void>;
/**
* Create a simple-git instance using current destinationPath as baseDir.
*/
createGit(options?: Parameters<typeof simpleGit>[0]): import("simple-git").SimpleGit;
private calculateApplicationId;
protected getSharedApplication(applicationFolder?: string): any;
private createSharedData;
}