UNPKG

@supernovaio/cli

Version:

Supernova.io Command Line Interface

63 lines (61 loc) 2.97 kB
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1af328de-095d-55d2-a5cb-7bf45e9322eb")}catch(e){}}(); import { mkdir, writeFile } from "node:fs/promises"; import path from "node:path"; async function ensureSnapshotLayout(snapshotRoot) { await mkdir(path.join(snapshotRoot, "raw"), { recursive: true }); } function isEmptyJsonPayload(payload) { if (payload === null || payload === undefined) { return true; } if (Array.isArray(payload)) { return payload.length === 0; } if (typeof payload === "object") { return Object.keys(payload).length === 0; } return false; } async function writeJson(filePath, payload) { if (isEmptyJsonPayload(payload)) { return; } await writeFile(filePath, `${JSON.stringify(payload, null, 2)}\n`, "utf8"); } export async function writeSnapshot(input) { const { artifacts, snapshotRoot } = input; await ensureSnapshotLayout(snapshotRoot); const rawArtifacts = new Set(input.rawArtifacts ?? ["static-components", "typescript-api", "storybook-stories", "storybook-docs", "jsdoc", "component-usage"]); if (rawArtifacts.has("static-components")) { await writeJson(path.join(snapshotRoot, "raw", "static-components.json"), artifacts.staticComponents); } if (rawArtifacts.has("typescript-api")) { await writeJson(path.join(snapshotRoot, "raw", "typescript-api.json"), artifacts.typescriptApi); } if (rawArtifacts.has("storybook-stories")) { await writeJson(path.join(snapshotRoot, "raw", "storybook-stories.json"), artifacts.storybookStories); } if (rawArtifacts.has("storybook-docs")) { await writeJson(path.join(snapshotRoot, "raw", "storybook-docs.json"), artifacts.storybookDocs); } if (rawArtifacts.has("jsdoc")) { await writeJson(path.join(snapshotRoot, "raw", "jsdoc.json"), artifacts.jsdoc); } if (rawArtifacts.has("component-usage")) { const usageRecords = artifacts.componentUsage; if (isEmptyJsonPayload(usageRecords)) { return; } const importFromPackages = [...new Set((input.usageImportFromPackages ?? []).map(item => item.trim()).filter(Boolean))].sort((a, b) => a.localeCompare(b)); const packageNames = [...new Set([...importFromPackages, ...Object.keys(usageRecords)])]; const payload = { meta: { importFromPackages, }, packages: Object.fromEntries(packageNames.map(packageName => [packageName, { records: usageRecords[packageName] ?? {} }])), }; await writeJson(path.join(snapshotRoot, "raw", "component-usage.json"), payload); } } //# sourceMappingURL=write-snapshot.js.map //# debugId=1af328de-095d-55d2-a5cb-7bf45e9322eb