UNPKG

@nuxt/content

Version:

Write your content inside your Nuxt app

55 lines (54 loc) 1.32 kB
import { createDefu } from "defu"; export * from "./files.js"; export const defu = createDefu((obj, key, value) => { if (Array.isArray(obj[key]) && Array.isArray(value)) { obj[key] = value; return true; } }); export const createSingleton = (fn) => { let instance; return (_args) => { if (!instance) { instance = fn(); } return instance; }; }; export function deepDelete(obj, newObj) { for (const key in obj) { const val = newObj[key]; if (!(key in newObj)) { delete obj[key]; } if (val !== null && typeof val === "object") { deepDelete(obj[key], newObj[key]); } } } export function deepAssign(obj, newObj) { for (const key in newObj) { const val = newObj[key]; if (val === "_DELETED_") { delete obj[key]; continue; } if (val !== null && typeof val === "object") { if (Array.isArray(val) && Array.isArray(obj[key])) { obj[key] = val; } else { obj[key] = obj[key] || {}; deepAssign(obj[key], val); } } else { obj[key] = val; } } } export function parseSourceBase(source) { const [fixPart, ...rest] = source.include.includes("*") ? source.include.split("*") : ["", source.include]; return { fixed: fixPart || "", dynamic: "*" + rest.join("*") }; }