UNPKG

sb-mig

Version:

CLI to rule the world. (and handle stuff related to Storyblok CMS)

45 lines (44 loc) 1.92 kB
import Logger from "../../utils/logger.js"; import { getComponentPresets } from "./componentPresets.js"; import { updatePreset, createPreset } from "./presets.js"; const _resolvePresets = async (res, all_presets, component, config) => { const componentId = res.data.component.id; if (all_presets && all_presets.length > 0) { const all_presets_modified = all_presets.map((p) => { return { preset: { ...p.preset, component_id: componentId } }; }); Logger.log(`Checking preset for '${component.name}' component`); const allRemoteComponentPresets = await getComponentPresets(component.name, config); const presetsToUpdate = []; const presetsToCreate = []; for (const componentPreset of all_presets_modified) { const shouldBeUpdated = allRemoteComponentPresets && allRemoteComponentPresets.find((remotePreset) => componentPreset.preset.name === remotePreset.preset.name); if (shouldBeUpdated) { presetsToUpdate.push({ ...componentPreset, preset: { id: shouldBeUpdated.preset.id, ...componentPreset.preset, }, }); } else { presetsToCreate.push(componentPreset); } } const presetsToUpdateResult = await Promise.all(presetsToUpdate.map((preset) => { return updatePreset({ p: preset }, config); })); const presetsToCreateResult = await Promise.all(presetsToCreate.map((preset) => { return createPreset(preset, config); })); return [...presetsToCreateResult, presetsToUpdateResult]; } else { Logger.warning("There are no presets for this component."); return []; } }; export default _resolvePresets;