generator-jhipster
Version:
Spring Boot + Angular/React/Vue in one handy generator
66 lines (65 loc) • 3.02 kB
JavaScript
/**
* Copyright 2013-2026 the original author or authors from the JHipster project.
*
* This file is part of the JHipster project, see https://www.jhipster.tech/
* for more information.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { buildMutateDataForProperty } from "../utils/derived-property.js";
export const getCommandDerivedPropertyMutations = (configs, options = {}) => {
const scopes = options.scopes ?? ['storage', 'blueprint', 'context'];
const scopeConfigs = Object.entries(configs).filter(([_key, def]) => scopes.includes(def.scope));
const mutations = {
__override__: false,
};
for (const [key, def] of scopeConfigs) {
if (def.choices) {
const array = def.internal?.type === Array;
const anyCheck = array ? undefined : (value, choices) => (typeof value !== 'string' || value === 'no' ? false : choices.includes(value));
const choiceValues = def.choices.map(choice => (typeof choice === 'object' ? choice.value : choice));
Object.assign(mutations, buildMutateDataForProperty(key, choiceValues, { array, anyCheck }));
if (def.internal?.alias) {
Object.assign(mutations, { [def.internal.alias]: (context) => context[key] }, buildMutateDataForProperty(key, choiceValues, { array, anyCheck, prefix: def.internal.alias }));
}
}
}
return mutations;
};
export const getCommandDefaultMutations = (configs, options = {}) => {
const scopes = options.scopes ?? ['storage', 'blueprint', 'context'];
const scopeConfigs = Object.entries(configs).filter(([_key, def]) => scopes.includes(def.scope));
const mutations = {
__override__: false,
};
for (const [key, def] of scopeConfigs) {
mutations[key] = (context, { delayMarker }) => {
if (delayMarker) {
return delayMarker;
}
return typeof def.default === 'function' ? def.default(context) : def.default;
};
}
return mutations;
};
export const getCommandBlueprintLoadingMutations = (blueprintGenerator, configs) => {
const blueprintScopedConfigs = Object.entries(configs).filter(([_key, def]) => def.scope === 'blueprint');
const getValue = (key) => blueprintGenerator.blueprintStorage.get(key) ?? undefined;
const mutations = {
__override__: false,
};
for (const [key] of blueprintScopedConfigs) {
mutations[key] = () => getValue(key);
}
return mutations;
};