UNPKG

sb-mig

Version:

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

105 lines (104 loc) 3.21 kB
import fs from "fs"; import { createRequire } from "module"; import path from "path"; export const prop = (k) => (o) => o[k]; export const pipe = (...fns) => (x) => [...fns].reduce((acc, f) => f(acc), x); export const unpackElements = (input) => { const [_1, _2, ...elementsForUse] = input; return elementsForUse; }; export const unpackOne = (input) => { const [_1, _2, elementForUse] = input; return elementForUse; }; export const getFileContent = (data) => { return import(data.file) .then((res) => { return res.default; }) .catch((err) => { console.log(err); console.log("Cannot find requested file."); }); }; export const getFileContentWithRequire = (data) => { const require = createRequire(import.meta.url); const fileContent = require(data.file); if (fileContent.default) { return fileContent.default; } return fileContent; }; export const getFilesContentWithRequire = (data) => { return data.files.map((file) => getFileContentWithRequire({ file })); }; export const isObjectEmpty = (obj) => { if (obj) { return Object.keys(obj).length === 0 && obj.constructor === Object; } else { return true; } }; export const delay = (time) => new Promise((resolve) => setTimeout(resolve, time)); export const isItFactory = (flags, rules, whitelist) => { return (type) => { const rulesCopy = [...rules[type]]; const flagsKeys = Object.keys(flags); const temp = flagsKeys.map((flag) => { if (whitelist.includes(flag)) { return true; } if (rulesCopy.includes(flag)) { rulesCopy.splice(rulesCopy.indexOf(flag), 1); return true; } else { return false; } }); if (rulesCopy.length > 0) { return false; } else { return temp.every((el) => el === true); } }; }; export const getPackageJson = () => { const packageJsonPath = path.join(process.cwd(), "package.json"); // Read the file content as a string const packageJsonContent = fs.readFileSync(packageJsonPath, "utf-8"); // Parse the file content as a JSON object const packageJson = JSON.parse(packageJsonContent); return packageJson; }; export const extractFields = (data, filter) => { const result = {}; for (const key in filter) { if (filter[key] === true) { result[key] = data[key]; } else if (typeof filter[key] === "object") { result[key] = extractFields(data[key], filter[key]); } } return result; }; // export const generateMetadata = (args: any) => { // const packageJson = getPackageJson(); // // const contentHubName = packageJson.name; // const contentHubLatestVersion = packageJson.version; // // const backpackVersionInContentHub = // packageJson.dependencies['@ef-global/backpack']; // // return { // metadata: { // contentHubName, // contentHubLatestVersion, // backpackVersionInContentHub, // }, // }; // };