@wix/cli
Version:
CLI tool for building Wix sites and applications
184 lines (182 loc) • 6.11 kB
JavaScript
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