UNPKG

@paroicms/server

Version:
43 lines 1.79 kB
import { isObj } from "@paroicms/public-anywhere-lib"; import { rm } from "node:fs/promises"; import { createNewRegisteredSite } from "../connector/site-conf/site-conf.js"; import { addRegisteredSite, appConf, platformLogger, registeredSites, removeRegisteredSite, } from "../context.js"; import { getActiveSiteContext, unloadSiteContext } from "../site-context/site-context.js"; export async function registerNewSite(options) { if (appConf.kind !== "multisite") { throw new Error("registerNewSite is only available in multisite mode"); } const newRegSite = await createNewRegisteredSite(options, appConf); addRegisteredSite(newRegSite); return newRegSite; } export async function removeSite(siteContext) { const fqdn = siteContext.fqdn; if (appConf.kind !== "multisite") { throw new Error("removeSite is only available in multisite mode"); } const regSite = registeredSites.get(fqdn); if (!regSite) throw new Error(`unknown site "${fqdn}"`); removeRegisteredSite(fqdn); const activeSiteContext = getActiveSiteContext(fqdn, { returnsUndef: true }); if (activeSiteContext) { await unloadSiteContext(activeSiteContext); } const directories = Array.from(new Set([regSite.dataDir, regSite.cacheDir, regSite.backupDir, regSite.siteDir])).sort(); platformLogger.info(`Remove site "${fqdn}": ${directories.join(", ")}`); for (const dir of directories) { await rmDirRecursive(dir); } } async function rmDirRecursive(dir) { try { await rm(dir, { recursive: true, force: true }); } catch (error) { if (!isObj(error) || (error.code !== "ENOENT" && error.code !== "ENOTDIR")) { throw error; } } } //# sourceMappingURL=site-lifecycle-api.js.map