UNPKG

gen-jhipster

Version:

VHipster - Spring Boot + Angular/React/Vue in one handy generator

85 lines (84 loc) 3.24 kB
import { getConfigWithDefaults } from "../../lib/jhipster/default-application-options.js"; import { mutateData } from "../../lib/utils/index.js"; import BaseGenerator from "../base/index.js"; import { PRIORITY_NAMES } from "../base-core/priorities.js"; import { CONTEXT_DATA_APPLICATION_KEY, CONTEXT_DATA_SOURCE_KEY } from "./support/index.js"; const { LOADING, PREPARING, POST_PREPARING, DEFAULT, WRITING, POST_WRITING, PRE_CONFLICTS, INSTALL, END } = PRIORITY_NAMES; const PRIORITY_WITH_SOURCE = new Set([PREPARING, POST_PREPARING, POST_WRITING]); const PRIORITY_WITH_APPLICATION_DEFAULTS = new Set([PREPARING, LOADING]); const PRIORITY_WITH_APPLICATION = new Set([ LOADING, PREPARING, POST_PREPARING, DEFAULT, WRITING, POST_WRITING, PRE_CONFLICTS, INSTALL, END, ]); const getFirstArgForPriority = (priorityName) => ({ source: PRIORITY_WITH_SOURCE.has(priorityName), application: PRIORITY_WITH_APPLICATION.has(priorityName), applicationDefaults: PRIORITY_WITH_APPLICATION_DEFAULTS.has(priorityName), }); /** * This is the base class for a generator that generates entities. */ export default class BaseSimpleApplicationGenerator extends BaseGenerator { constructor(args, options, features) { super(args, options, { storeJHipsterVersion: true, storeBlueprintVersion: true, ...features }); } get context() { return this.getContextData(CONTEXT_DATA_APPLICATION_KEY, { factory: () => ({ nodeDependencies: {}, customizeTemplatePaths: [], user: undefined }), }); } get #source() { return this.getContextData(CONTEXT_DATA_SOURCE_KEY, { factory: () => ({}) }); } /** * JHipster config with default values fallback */ get jhipsterConfigWithDefaults() { const configWithDefaults = getConfigWithDefaults(super.jhipsterConfigWithDefaults); return configWithDefaults; } /** * @deprecated use dependsOnBootstrap('common'), dependsOnBootstrap('base-application') or dependsOnBootstrap('base-simple-application') */ dependsOnBootstrapApplicationBase(options) { return this.dependsOnJHipster('jhipster:base-application:bootstrap', options); } getArgsForPriority(priorityName) { const args = super.getArgsForPriority(priorityName); let firstArg = this.getTaskFirstArgForPriority(priorityName); if (args.length > 0) { firstArg = { ...args[0], ...firstArg }; } return [firstArg]; } /** * @protected */ getTaskFirstArgForPriority(priorityName) { const { source, application, applicationDefaults } = getFirstArgForPriority(priorityName); const args = {}; if (application) { args.application = this.context; } if (source) { args.source = this.#source; } if (applicationDefaults) { args.applicationDefaults = (...args) => mutateData(this.context, ...args.map(data => ({ __override__: false, ...data }))); } return args; } /** * Utility method to get typed objects for autocomplete. */ asBootstrapApplicationTaskGroup(taskGroup) { return taskGroup; } }