UNPKG

@wix/cli

Version:

CLI tool for building Wix sites and applications

184 lines (178 loc) 5.86 kB
import { createRequire as _createRequire } from 'node:module'; const require = _createRequire(import.meta.url); import { useMultilingualClient } from "./chunk-RY2IFAQA.js"; import { useWixCliAstroBi } from "./chunk-KGXWWZJW.js"; import { useProjectModel } from "./chunk-OQJA5FSX.js"; import { TRANSLATIONS_FILE_PATH, getMultilingualMetadataPath } from "./chunk-KCDAY54L.js"; import { SiteAuthProvider } from "./chunk-CCWE4DS6.js"; import { Alert, Box_default, ConfirmInput, Spinner, useAsync, useAsyncCallback } from "./chunk-UC5LTXTA.js"; import { require_react } from "./chunk-QNHANFRW.js"; import { pathExists, readFile, writeJson } from "./chunk-TLLAD5LU.js"; import { external_exports } from "./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/TranslationPushCommand/index.ts init_esm_shims(); // ../cli-astro-commands/src/components/TranslationPushCommand/TranslationPushCommand.tsx init_esm_shims(); var import_react2 = __toESM(require_react(), 1); var import_variant2 = __toESM(require_lib(), 1); import { join } from "node:path"; // ../cli-astro-commands/src/components/TranslationPushCommand/TranslationPush.tsx init_esm_shims(); var import_react = __toESM(require_react(), 1); var import_variant = __toESM(require_lib(), 1); var CONFIRM_PUSH_QUESTION = "Push translations? Unused keys will be deleted, new ones added. This can't be undone."; var TranslationPush = ({ translations, onComplete, skipConfirmation }) => { const { model } = useProjectModel(); const multilingualClient = useMultilingualClient(); const bi = useWixCliAstroBi(); const { status, execute } = useAsyncCallback(async () => { const primaryLanguageCode = await multilingualClient.getPrimaryLanguage(); const metadataPath = getMultilingualMetadataPath(model.projectFolder); await writeJson(metadataPath, { primaryLanguageCode }, { spaces: 2 }); await multilingualClient.pushTranslations(translations); return { primaryLanguageCode }; }); useAsync(async () => { if (!skipConfirmation) { return; } execute().then(() => onComplete?.()).catch(() => { }); }, []); return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, !skipConfirmation && /* @__PURE__ */ import_react.default.createElement(Box_default, { marginBottom: 1 }, /* @__PURE__ */ import_react.default.createElement( ConfirmInput, { label: CONFIRM_PUSH_QUESTION, initialValue: true, onSubmit: (confirmed) => { bi.cliFlowStepAnswered({ question: CONFIRM_PUSH_QUESTION, questionKey: "translation_push_command.confirm_push", answer: String(confirmed) }); if (confirmed) { execute().then(() => onComplete?.()).catch(() => { }); } else { onComplete?.(); } } } )), (0, import_variant.match)(status, { NotRequested: () => null, Loading: () => /* @__PURE__ */ import_react.default.createElement(Spinner, { text: "Pushing translation file..." }), Success: ({ result: { primaryLanguageCode } }) => /* @__PURE__ */ import_react.default.createElement(Alert, { type: "success" }, 'Translation keys of "', primaryLanguageCode, '" were pushed.'), Error: () => null })); }; // ../cli-astro-commands/src/components/TranslationPushCommand/read-translations-file.ts init_esm_shims(); var translationsSchema = external_exports.union([ external_exports.record(external_exports.string()), external_exports.record(external_exports.record(external_exports.string())) ]); async function readTranslationsFile(translationsFilePath) { const fileContent = await readFile(translationsFilePath, "utf-8"); let parsedContent; try { parsedContent = JSON.parse(fileContent); } catch (error) { throw new CliError({ code: CliErrorCode.InvalidJsonFile({ filePath: translationsFilePath }), cause: error }); } const parseResult = translationsSchema.safeParse(parsedContent); if (!parseResult.success) { throw new CliError({ code: CliErrorCode.InvalidTranslationsFileSchema({ filePath: translationsFilePath, zodError: parseResult.error }), cause: parseResult.error }); } return parseResult.data; } // ../cli-astro-commands/src/components/TranslationPushCommand/TranslationPushCommand.tsx var TranslationPushCommand = ({ onComplete, skipConfirmation }) => { const { model: { config, projectFolder } } = useProjectModel(); const translationsFilePath = join(projectFolder, TRANSLATIONS_FILE_PATH); const { status } = useAsync(async () => { if (config.projectType !== "Site") { throw new CliError({ code: CliErrorCode.TranslationUnsupportedForProjectType(), cause: null }); } if (!await pathExists(translationsFilePath)) { throw new CliError({ code: CliErrorCode.TranslationFileNotFound({ filePath: TRANSLATIONS_FILE_PATH }), cause: null }); } const translations = await readTranslationsFile(translationsFilePath); return { siteId: config.siteId, translations }; }, [translationsFilePath]); return (0, import_variant2.match)(status, { Loading: () => null, Error: () => null, Success: ({ result: { siteId, translations } }) => { return /* @__PURE__ */ import_react2.default.createElement(SiteAuthProvider, { siteId }, /* @__PURE__ */ import_react2.default.createElement( TranslationPush, { translations, onComplete, skipConfirmation } )); } }); }; export { TranslationPushCommand }; //# sourceMappingURL=chunk-HXUVFIQH.js.map