@supernovaio/cli
Version:
Supernova.io Command Line Interface
63 lines (61 loc) • 2.97 kB
JavaScript
!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