UNPKG

@wix/cli

Version:

CLI tool for building Wix sites and applications

179 lines (175 loc) 5.98 kB
import { createRequire as _createRequire } from 'node:module'; const require = _createRequire(import.meta.url); import { pKe } from "./chunk-HVUWKADU.js"; import "./chunk-A4SLQB4K.js"; import { getEditorReactComponentExtensionsDir } from "./chunk-FLDCYVA4.js"; import "./chunk-TQF2C25T.js"; import { assertBuildOutputExists, readBuildMetadata } from "./chunk-NPYBTUWU.js"; import { useProjectModel } from "./chunk-OQJA5FSX.js"; import "./chunk-KCDAY54L.js"; import { require_kebabCase } from "./chunk-7QTVQZAE.js"; import { Alert, Box_default, Spinner, Text, useAsync } from "./chunk-UC5LTXTA.js"; import "./chunk-5VIJC5EU.js"; import "./chunk-MZDJNQLB.js"; import { require_react } from "./chunk-QNHANFRW.js"; import "./chunk-AFPDHQYI.js"; import "./chunk-4UTFAKA5.js"; import "./chunk-XZUGLEBK.js"; import { outputFile } from "./chunk-TLLAD5LU.js"; import "./chunk-SDLCFZRL.js"; import { CliError, CliErrorCode, require_lib } from "./chunk-CO5A7CZG.js"; import { __toESM, init_esm_shims } from "./chunk-EXLZF52D.js"; // ../cli-astro-commands/src/components/GenerateManifestCommand/index.ts init_esm_shims(); // ../cli-astro-commands/src/components/GenerateManifestCommand/GenerateManifestCommand.tsx init_esm_shims(); var import_react2 = __toESM(require_react(), 1); var import_variant = __toESM(require_lib(), 1); import { join, dirname, relative } from "node:path"; var import_kebabCase = __toESM(require_kebabCase(), 1); // ../../node_modules/@wix/zero-config-implementation/dist/index.js init_esm_shims(); var import_react = __toESM(require_react(), 1); // ../cli-astro-commands/src/components/GenerateManifestCommand/GenerateManifestCommand.tsx async function generateManifestForExtension(ext, projectFolder) { try { const { srcPath, distPath } = ext.topology["resources.client.componentUrl"]; const folder = dirname(srcPath); const route = relative( getEditorReactComponentExtensionsDir(projectFolder), folder ); const generatedFileName = (0, import_kebabCase.default)(route); const filePath = join(folder, `${generatedFileName}.generated.ts`); const res = await pKe(srcPath, distPath); const content = [ `/**`, ` * THIS FILE IS AUTO-GENERATED`, ` * Changes to this file will be overwritten during the next build/sync.`, ` * To make changes, update the source code or use the ${generatedFileName}.extension.ts file`, ` */`, ``, `import type { EditorElement } from '@wix/react-component-schema';`, ``, `export const editorElement = ${JSON.stringify(res.component.editorElement, null, 2)} as EditorElement;`, `` ].join("\n"); await outputFile(filePath, content); return { relativePath: relative(projectFolder, filePath), errors: res.errors }; } catch (cause) { throw new CliError({ code: CliErrorCode.FailedToGenerateExtensionConfig({ extensionId: ext.id }), cause }); } } function formatExtractionError(err) { return `[${err.phase}] ${err.componentName}: ${err.error.message}`; } var ManifestTaskList = ({ extensions, projectFolder }) => { const total = extensions.length; const [tasks, setTasks] = (0, import_react2.useState)([]); useAsync(async () => { const completed = []; for (const ext of extensions) { setTasks([...completed, { status: "running", componentId: ext.id }]); const { relativePath, errors } = await generateManifestForExtension( ext, projectFolder ); completed.push( errors.length === 0 ? { status: "success", relativePath } : { status: "warning", relativePath, errors } ); } setTasks(completed); }, []); return /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, tasks.map((task, i) => { const stepper = `[${i + 1}/${total}]`; switch (task.status) { case "running": return /* @__PURE__ */ import_react2.default.createElement( Spinner, { key: i, text: `${stepper} Generating config for component ${task.componentId}` } ); case "success": return /* @__PURE__ */ import_react2.default.createElement(Alert, { key: i, type: "success" }, `${stepper} Generated ${task.relativePath}`); case "warning": return /* @__PURE__ */ import_react2.default.createElement(import_react2.Fragment, { key: i }, /* @__PURE__ */ import_react2.default.createElement(Alert, { type: "warning" }, `${stepper} Generated ${task.relativePath}`), task.errors.map((err, j) => /* @__PURE__ */ import_react2.default.createElement( Box_default, { key: j, paddingLeft: 2, paddingBottom: 1, flexDirection: "column" }, /* @__PURE__ */ import_react2.default.createElement(Alert, { type: "insight" }, formatExtractionError(err)) ))); } })); }; var GenerateManifestCommand = () => { const { model } = useProjectModel(); const { status } = useAsync(async () => { await assertBuildOutputExists(model.projectFolder, model.config); return readBuildMetadata(model.projectFolder, model.config); }, []); return (0, import_variant.match)(status, { Error: () => null, Loading: () => null, Success: ({ result }) => { const extensions = (result.extensionsTopology ?? []).filter( (ext) => ext.type === "EDITOR_REACT_COMPONENT" ); if (extensions.length === 0) { return /* @__PURE__ */ import_react2.default.createElement(Text, null, "No extensions that can generate manifest for exist"); } return /* @__PURE__ */ import_react2.default.createElement( ManifestTaskList, { extensions, projectFolder: model.projectFolder } ); } }); }; export { GenerateManifestCommand }; //# sourceMappingURL=GenerateManifestCommand-NR4DWXYE.js.map