UNPKG

@paroicms/cli

Version:
55 lines 2.03 kB
import { readFile, rename, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { pathExists } from "@paroicms/internal-server-lib"; export async function migrateFrom21To30(directory, siteSchema) { const { version, languages, usePlugins, useModules, site, documentTypes, partTypes, ...rest } = siteSchema; const leafTypes = [ ...(documentTypes?.map(({ leafType, ...t }) => ({ kind: "document", typeName: leafType, ...t, })) ?? []), ...(partTypes?.map(({ leafType, ...t }) => ({ kind: "part", typeName: leafType, ...t, })) ?? []), ]; if (site) { leafTypes.unshift({ kind: "site", ...site, }); } const newSchema = { version: "3.0", languages, usePlugins, useModules, leafTypes, ...rest, }; await rename(join(directory, "site-schema.json"), join(directory, "site-schema-v2.1.json")); await writeFile(join(directory, "site-schema.json"), JSON.stringify(newSchema, undefined, 2)); for (const language of siteSchema.languages) { const l10nFile = join(directory, `site-schema.l10n.${language}.json`); if (!(await pathExists(l10nFile))) continue; const { site, documentTypes, partTypes, ...rest } = JSON.parse(await readFile(l10nFile, "utf-8")); const leafTypes = { _site: site, ...(documentTypes ?? {}), ...(partTypes ?? {}), }; const newContent = Object.keys(leafTypes).length === 0 ? rest : { leafTypes, ...rest, }; await rename(l10nFile, join(directory, `site-schema-v2.1.l10n.${language}.json`)); await writeFile(join(directory, `site-schema.l10n.${language}.json`), JSON.stringify(newContent, undefined, 2)); } return newSchema; } //# sourceMappingURL=site-schema-migration-2.1-to-3.0.js.map