UNPKG

@wix/cli

Version:

CLI tool for building Wix sites and applications

184 lines (182 loc) 6.11 kB
import { createRequire as _createRequire } from 'node:module'; const require = _createRequire(import.meta.url); import { createAstroLogger } from "./chunk-7BABMGCW.js"; import { ProjectModelProvider, loadProjectModel } from "./chunk-OQJA5FSX.js"; import { HttpClientProvider, buildHttpClientHeaders } from "./chunk-FYLO6WOU.js"; import { PanoramaProvider, createCommandTransaction } from "./chunk-3B6VL2WO.js"; import { addUserFields, reportCommandStartEvent } from "./chunk-2KP5J2KZ.js"; import { AuthProvider, BiProvider, DebugLogProvider, ErrorReporterProvider, LoginModeProvider, writeCrashReport } from "./chunk-CCWE4DS6.js"; import { render } from "./chunk-UC5LTXTA.js"; import { require_react } from "./chunk-QNHANFRW.js"; import { getDebugLogFilePath } from "./chunk-4UTFAKA5.js"; import { CliError, CliErrorCode, cliErrorToError, isCliSystemError, require_lib } from "./chunk-CO5A7CZG.js"; import { __toESM, init_esm_shims } from "./chunk-EXLZF52D.js"; // ../cli-astro-commands/src/commands/render-command.tsx init_esm_shims(); var import_react = __toESM(require_react(), 1); import { cwd } from "node:process"; var import_variant = __toESM(require_lib(), 1); function getFlow(model) { return model.config.projectType === "App" ? "Astro_App" : "Headless"; } async function initServices({ model, command, flow, cliVersion, services }) { const { biLogger, errorReporter, panorama } = services; errorReporter.setTag("project", flow); errorReporter.setTag("project.app_id", model.config.appId); panorama.setDefaultClientData({ cliProject: flow, cliAppId: model.config.appId }); if (model.config.projectType === "App" && model.config.projectId != null) { errorReporter.setTag("project.id", model.config.projectId); panorama.setDefaultClientData({ cliProjectId: model.config.projectId }); } if (model.config.projectType === "Site") { errorReporter.setTag("project.site_id", model.config.siteId); panorama.setDefaultClientData({ cliSiteId: model.config.siteId }); } biLogger.updateDefaults({ flow, cliVersion, command: command.name(), _appId: model.config.appId }); } async function renderCommand(command, services, cliVersion, tree) { await runCommand(command, services, cliVersion, async (model) => { const { biLogger, errorReporter, panorama } = services; const debugLogFilePath = getDebugLogFilePath(model.projectFolder); const handleLogin = (userInfo) => { errorReporter.setUser({ id: userInfo.userId }); addUserFields(biLogger, userInfo.userId); }; const headers = buildHttpClientHeaders({ flow: getFlow(model), command: command.name(), cliVersion }); await render( /* @__PURE__ */ import_react.default.createElement(BiProvider, { value: biLogger }, /* @__PURE__ */ import_react.default.createElement(ErrorReporterProvider, { value: errorReporter }, /* @__PURE__ */ import_react.default.createElement(PanoramaProvider, { value: panorama }, /* @__PURE__ */ import_react.default.createElement(LoginModeProvider, { value: services.loginMode }, /* @__PURE__ */ import_react.default.createElement(AuthProvider, { onLogin: handleLogin }, /* @__PURE__ */ import_react.default.createElement(HttpClientProvider, { headers }, /* @__PURE__ */ import_react.default.createElement(DebugLogProvider, { filePath: debugLogFilePath }, /* @__PURE__ */ import_react.default.createElement(ProjectModelProvider, { value: model }, tree)))))))) ); }); } async function runCommand(command, services, cliVersion, commandFn) { const model = await loadProjectModel(cwd(), services.definedWixConfig); const flow = getFlow(model); await initServices({ model, command, flow, services, cliVersion }); const debugLogFilePath = getDebugLogFilePath(model.projectFolder); const pluginLogger = createAstroLogger({ isPrefixed: true }); const { pluginsInterface } = model; if (pluginsInterface) { pluginsInterface.onPluginError = (error, context) => { const pluginError = new CliError({ code: CliErrorCode.PluginHandlerFailed({ handlerName: context.handlerName, pluginName: context.pluginName }), cause: error, info: { handlerName: context.handlerName, pluginName: context.pluginName } }); writeCrashReport(debugLogFilePath, pluginError, /* @__PURE__ */ new Date()); if (context.handlerName !== "cli-error") { void model.pluginsInterface?.eventsEmitter.emit("cli-error", { type: "cli-system", error: cliErrorToError(pluginError) }); } pluginLogger.error( `Plugin "${context.pluginName}" failed while handling "${context.handlerName}".` ); pluginLogger.error( (error instanceof Error && error.stack ? error.stack : void 0) ?? `${error}` ); }; } const cmdName = command.name(); if (cmdName === "dev" || cmdName === "build" || cmdName === "preview") { await pluginsInterface?.hooksEmitter.emitSerial("cli:setup", { cmd: cmdName }); } services.errorReporter.on("errorReported", (error) => { if (!(0, import_variant.isType)(error.cliCode, CliErrorCode.FailedToBuildAstroApp)) { void pluginsInterface?.eventsEmitter.emit("cli-error", { type: isCliSystemError(error) ? "cli-system" : "cli-user", error: cliErrorToError(error) }); } }); const { panorama, biLogger } = services; const commandStatus = reportCommandStartEvent({ msid: model.config.projectType === "Site" ? model.config.siteId : void 0, appId: model.config.appId, biLogger, command, cliVersion, flow, extensions: {}, extraFields: void 0 }); const transaction = createCommandTransaction(panorama, command); try { transaction.start(); await commandFn(model); transaction.finish(); commandStatus.succeed(); } catch (e) { commandStatus.failed(e); throw e; } } export { renderCommand, runCommand }; //# sourceMappingURL=chunk-Z7UA4ACU.js.map