@paroicms/cli
Version:
CLI of ParoiCMS
54 lines • 2.09 kB
JavaScript
import { rename, writeFile } from "node:fs/promises";
import { join } from "node:path";
export async function migrateFrom7To8(directory, oldSchema) {
const newSchema = {
...oldSchema,
};
newSchema.version = "8";
if (oldSchema.nodeTypes) {
newSchema.nodeTypes = oldSchema.nodeTypes.map((nodeType) => {
if (nodeType.kind !== "document")
return nodeType;
if (nodeType.labeling && nodeType.labeling.length > 0) {
if (!nodeType.fields) {
nodeType.fields = [];
}
for (const labelingObj of nodeType.labeling) {
nodeType.fields.unshift({
name: labelingObj.taxonomy,
localized: false,
storedAs: "labeling",
taxonomy: labelingObj.taxonomy,
multiple: labelingObj.relation === "multiple",
});
}
}
if (nodeType.labeling) {
delete nodeType.labeling;
}
return nodeType;
});
newSchema.nodeTypes = oldSchema.nodeTypes.map((nodeType) => {
if (!("fields" in nodeType))
return nodeType;
for (const f of nodeType.fields ?? []) {
if (typeof f === "string")
continue;
if (f.dataType === "quillDelta") {
f.dataType = "json";
f.renderAs = "html";
}
else if (f.dataType === "html") {
f.dataType = "string";
f.renderAs = "html";
}
delete f.visibility;
}
return nodeType;
});
}
await rename(join(directory, "site-schema.json"), join(directory, "site-schema-v7.json"));
await writeFile(join(directory, "site-schema.json"), JSON.stringify(newSchema, undefined, 2));
return newSchema;
}
//# sourceMappingURL=site-schema-migration-7-to-8.js.map