@wix/cli-app 1.1.32 → 1.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/CreateVersionCommand-3ECZI65A.js +4 -0
- package/build/{CreateVersionCommand-AKOX3F4R.js.map → CreateVersionCommand-3ECZI65A.js.map} +1 -1
- package/build/DevCommand-B7WYY2UQ.js +4 -0
- package/build/DevCommand-B7WYY2UQ.js.map +1 -0
- package/build/{GenerateCommand-57P6KOOM.js → GenerateCommand-CIO77YCS.js} +3 -3
- package/build/{GenerateCommand-57P6KOOM.js.map → GenerateCommand-CIO77YCS.js.map} +1 -1
- package/build/LogsCommand-VJ64MYDN.js +4 -0
- package/build/LogsCommand-VJ64MYDN.js.map +1 -0
- package/build/PreviewCommand-BZY2XOZN.js +4 -0
- package/build/ServeCommand-AEELDVFH.js +4 -0
- package/build/ServeCommand-AEELDVFH.js.map +1 -0
- package/build/{build-ISANKZIW.js → build-JVHXDZDD.js} +2 -2
- package/build/{chunk-DPW3BI3Y.js → chunk-2KPKOJPE.js} +2 -2
- package/build/chunk-35SQ77PW.js +4 -0
- package/build/chunk-35SQ77PW.js.map +1 -0
- package/build/{chunk-ZSNZ62EG.js → chunk-COIDN4V4.js} +2 -2
- package/build/{chunk-K5V5YWVI.js → chunk-E6MYDYCH.js} +2 -2
- package/build/{chunk-6PKE6DT4.js → chunk-F4LXYTO3.js} +2 -2
- package/build/chunk-F4YTZ6XA.js +116 -0
- package/build/{chunk-NXQAYU44.js.map → chunk-F4YTZ6XA.js.map} +1 -1
- package/build/{chunk-KWUMJ6JQ.js → chunk-F55KYUXJ.js} +2 -2
- package/build/{chunk-ZRKMSAZQ.js → chunk-FBYP5GID.js} +2 -2
- package/build/{chunk-BOQ3NCXF.js → chunk-HTO6ALNX.js} +2 -2
- package/build/{chunk-BOQ3NCXF.js.map → chunk-HTO6ALNX.js.map} +1 -1
- package/build/{chunk-EI7JLTNP.js → chunk-HTY6QIPX.js} +2 -2
- package/build/{chunk-ARPIRV47.js → chunk-JAY5356K.js} +2 -2
- package/build/{chunk-H2U4YHRN.js → chunk-JKG4PFVP.js} +2 -2
- package/build/{chunk-J5ANBYWF.js → chunk-KQOYEWON.js} +4 -4
- package/build/chunk-KQOYEWON.js.map +1 -0
- package/build/{chunk-DRRMAC33.js → chunk-MB65UVFQ.js} +28 -28
- package/build/chunk-MB65UVFQ.js.map +1 -0
- package/build/chunk-MKVAJTCF.js +4 -0
- package/build/chunk-MKVAJTCF.js.map +1 -0
- package/build/{chunk-MRVGH2GQ.js → chunk-MON4UIEH.js} +2 -2
- package/build/chunk-QTYWYBN3.js +4 -0
- package/build/chunk-QTYWYBN3.js.map +1 -0
- package/build/{chunk-W2OGV6HU.js → chunk-ROZV4SHP.js} +2 -2
- package/build/chunk-X62VPDUS.js +4 -0
- package/build/{chunk-VQJRKVSE.js → chunk-XUF2HJAT.js} +2 -2
- package/build/{chunk-VQJRKVSE.js.map → chunk-XUF2HJAT.js.map} +1 -1
- package/build/index.js +2 -2
- package/build/index.js.map +1 -1
- package/build/{preview-ABI3GMT6.js → preview-L5LDZK2L.js} +2 -2
- package/build/render-command-IA3LLA3F.js +4 -0
- package/build/render-command-IA3LLA3F.js.map +1 -0
- package/package.json +6 -6
- package/templates/dashboard-plugin/files/plugin.tsx.ejs +11 -0
- package/build/CreateVersionCommand-AKOX3F4R.js +0 -4
- package/build/DevCommand-CVMI3OND.js +0 -4
- package/build/DevCommand-CVMI3OND.js.map +0 -1
- package/build/LogsCommand-P5LW5VOI.js +0 -4
- package/build/LogsCommand-P5LW5VOI.js.map +0 -1
- package/build/PreviewCommand-AXFQVFBV.js +0 -4
- package/build/ServeCommand-CEFAI6Z4.js +0 -4
- package/build/ServeCommand-CEFAI6Z4.js.map +0 -1
- package/build/chunk-A5N3P734.js +0 -4
- package/build/chunk-A5N3P734.js.map +0 -1
- package/build/chunk-DRRMAC33.js.map +0 -1
- package/build/chunk-J5ANBYWF.js.map +0 -1
- package/build/chunk-LE2AC3SJ.js +0 -4
- package/build/chunk-MDC42U33.js +0 -4
- package/build/chunk-MDC42U33.js.map +0 -1
- package/build/chunk-NXQAYU44.js +0 -116
- package/build/chunk-QZS4ARDD.js +0 -4
- package/build/chunk-QZS4ARDD.js.map +0 -1
- package/build/chunk-RPI6ANLU.js +0 -4
- package/build/chunk-RPI6ANLU.js.map +0 -1
- package/build/render-command-F4KJL2DD.js +0 -4
- package/build/render-command-F4KJL2DD.js.map +0 -1
- /package/build/{PreviewCommand-AXFQVFBV.js.map → PreviewCommand-BZY2XOZN.js.map} +0 -0
- /package/build/{build-ISANKZIW.js.map → build-JVHXDZDD.js.map} +0 -0
- /package/build/{chunk-DPW3BI3Y.js.map → chunk-2KPKOJPE.js.map} +0 -0
- /package/build/{chunk-ZSNZ62EG.js.map → chunk-COIDN4V4.js.map} +0 -0
- /package/build/{chunk-K5V5YWVI.js.map → chunk-E6MYDYCH.js.map} +0 -0
- /package/build/{chunk-6PKE6DT4.js.map → chunk-F4LXYTO3.js.map} +0 -0
- /package/build/{chunk-KWUMJ6JQ.js.map → chunk-F55KYUXJ.js.map} +0 -0
- /package/build/{chunk-ZRKMSAZQ.js.map → chunk-FBYP5GID.js.map} +0 -0
- /package/build/{chunk-EI7JLTNP.js.map → chunk-HTY6QIPX.js.map} +0 -0
- /package/build/{chunk-ARPIRV47.js.map → chunk-JAY5356K.js.map} +0 -0
- /package/build/{chunk-H2U4YHRN.js.map → chunk-JKG4PFVP.js.map} +0 -0
- /package/build/{chunk-MRVGH2GQ.js.map → chunk-MON4UIEH.js.map} +0 -0
- /package/build/{chunk-W2OGV6HU.js.map → chunk-ROZV4SHP.js.map} +0 -0
- /package/build/{chunk-LE2AC3SJ.js.map → chunk-X62VPDUS.js.map} +0 -0
- /package/build/{preview-ABI3GMT6.js.map → preview-L5LDZK2L.js.map} +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as _createRequire } from 'node:module';
|
|
2
|
+
const require = _createRequire(import.meta.url);
|
|
3
|
+
import{a as B}from"./chunk-PCBMS46R.js";import{a as Q}from"./chunk-MKVAJTCF.js";import{a as G}from"./chunk-MON4UIEH.js";import"./chunk-35SQ77PW.js";import{a as z}from"./chunk-E6MYDYCH.js";import"./chunk-COIDN4V4.js";import"./chunk-JAY5356K.js";import"./chunk-2KPKOJPE.js";import"./chunk-F4LXYTO3.js";import{g as J}from"./chunk-QTYWYBN3.js";import"./chunk-F55KYUXJ.js";import{$a as ae,Fa as K,Ga as w,Na as I,db as $,f as O,u as U}from"./chunk-F4YTZ6XA.js";import{F as j,H,L as v,N as F,O as y,R as b,S as N,V as k,W as u,a as V,b as q,d as S,e as h,w as P,z as _}from"./chunk-MB65UVFQ.js";import{e as d,h as t}from"./chunk-V4TR6DCM.js";t();t();var e=d(V(),1);var E=d(q(),1);t();var f=d(V(),1);var W=({onSubmit:o})=>{let{t:s}=u(),[r,n]=(0,f.useState)(!1);return f.default.createElement(f.default.Fragment,null,f.default.createElement(j,{label:s("create_version_command.confirm_version_creation"),initialValue:!0,onSubmit:i=>{i?o(!0):(n(!0),o(!1))}}),r&&f.default.createElement(_,null,s("create_version_command.confirm_version_creation_aborted")))};t();var X=d(V(),1),L=d(ae(),1);var Y=({version:o,onSubmit:s})=>{let{t:r}=u();return X.default.createElement(H,{label:r("create_version_command.version_type_question"),options:[{title:r("create_version_command.version_type_question_minor",{version:(0,L.inc)(o,"minor")}),value:B.MINOR},{title:r("create_version_command.version_type_question_major",{version:(0,L.inc)(o,"major")}),value:B.MAJOR}],onSubmit:({value:n})=>s(n)})};t();var Z=async({appId:o,tag:s,versionType:r,arm:n,biLogger:i,httpClient:p,backendServerUrl:T})=>{try{let{newVersion:a}=await n.promoteToDevCenter(o,s,r);return T&&await new I(i,p).makrDeploymentAsPermanent(o,I.DeploymentUrToDeploymentId(T)),a}catch(a){throw O(a)&&a.response?.status===428?new S({code:h.FailedToCreateVersionForSubmittedApp(),cause:a}):new S({code:h.FailedToCreateVersion(),cause:a})}};t();var m=d(V(),1),R=d(q(),1);var ee=({appId:o,version:s})=>{let{t:r}=u(),{getAppValidationFailuresCount:n}=w(),{status:i}=b(async()=>n(o,s),[]);return(0,R.match)(i,{NotRequested:()=>null,Error:()=>null,Loading:()=>m.default.createElement(y,{text:r("create_version_command.checking_validation_status")}),Success:({result:p})=>m.default.createElement(m.default.Fragment,null,p===0?m.default.createElement(k,{i18nKey:"create_version_command.version_validation_ok",components:[m.default.createElement(F,{url:`https://dev.wix.com/dc3/my-apps/${o}/versions`})]}):m.default.createElement(v,{type:"warning"},m.default.createElement(k,{i18nKey:"create_version_command.version_validation_has_failures",components:[m.default.createElement(F,{url:`https://dev.wix.com/dc3/my-apps/${o}/dashboard?open-blockers-panel`})]})))})};var ce=({baseUrl:o,siteIdOverride:s,preApprovePreview:r,versionType:n})=>{let{t:i}=u(),{model:p}=$(),{backendComponentsByType:T}=z(),a=J(),{getAppSnapshot:D}=w(),[x,oe]=(0,e.useState)(),[M,re]=(0,e.useState)(r),te=K({type:"backoffice"}),ne=U(),{status:ie}=b(async()=>{await G(p.projectFolder);let{latestVersion:c}=await D({appId:p.config.appId});return c},[]),A=N((c,l,me,pe)=>Z({appId:p.config.appId,tag:me,versionType:l,arm:a,biLogger:ne,httpClient:te,backendServerUrl:pe}));function se(c,l){oe(c),M&&n&&A.execute(n,c,l)}return(0,E.match)(ie,{Loading:()=>e.default.createElement(y,null),Error:()=>null,Success:({result:c})=>e.default.createElement(e.default.Fragment,null,e.default.createElement(_,null,i("create_version_command.check_preview_before_version_release")),e.default.createElement(Q,{baseUrl:o,siteIdOverride:s,onPreviewCreated:se}),x&&T.Event.length>0&&e.default.createElement(P,{marginBottom:1},e.default.createElement(v,{type:"warning"},e.default.createElement(_,null,i("create_version_command.confirm_version_events_warning")))),x&&!r&&e.default.createElement(W,{onSubmit:re}),x&&M&&e.default.createElement(e.default.Fragment,null,e.default.createElement(_,null,i("create_version_command.current_version",{version:c})),!n&&e.default.createElement(Y,{version:c,onSubmit:l=>A.execute(l,x)}),(0,E.match)(A.status,{NotRequested:()=>null,Error:()=>null,Loading:()=>e.default.createElement(y,{text:i("create_version_command.creating_version")}),Success:({result:l})=>e.default.createElement(e.default.Fragment,null,e.default.createElement(v,{type:"success"},i("create_version_command.creating_version_success",{version:l})),e.default.createElement(ee,{appId:p.config.appId,version:l}))})))})};export{ce as CreateVersionCommand};
|
|
4
|
+
//# sourceMappingURL=CreateVersionCommand-3ECZI65A.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/CreateVersionCommand/index.ts","../src/components/CreateVersionCommand/CreateVersionCommand.tsx","../src/components/CreateVersionCommand/ConfirmVersionCreation.tsx","../src/components/CreateVersionCommand/SelectVersionType.tsx","../src/components/CreateVersionCommand/promoteVersion.ts","../src/components/CreateVersionCommand/VersionValidationStatus.tsx"],"sourcesContent":["export { CreateVersionCommand } from './CreateVersionCommand.js';\n","import type { FC } from 'react';\nimport React, { useState } from 'react';\nimport { useARMClient } from '@wix/arm-client';\nimport {\n Alert,\n Box,\n Spinner,\n useAsync,\n useAsyncCallback,\n} from '@wix/cli-ui-kit';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport type { VersionType } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\nimport { Text } from '@wix/cli-ui-kit';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport { useProjectModel } from '../../model.js';\nimport { PreviewCommand } from '../PreviewCommand/index.js';\nimport { assertBuildOutputExists } from '../../files/assert-build-output-exists.js';\nimport { ConfirmVersionCreation } from './ConfirmVersionCreation.js';\nimport { SelectVersionType } from './SelectVersionType.js';\nimport { promoteVersion } from './promoteVersion.js';\nimport { VersionValidationStatus } from './VersionValidationStatus.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\nexport const CreateVersionCommand: FC<{\n baseUrl?: string;\n siteIdOverride?: string;\n preApprovePreview: boolean;\n versionType?: VersionType;\n}> = ({ baseUrl, siteIdOverride, preApprovePreview, versionType }) => {\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const { backendComponentsByType } = useBackendComponents();\n const arm = useARMClient();\n const { getAppSnapshot } = useDevCenterClient();\n const [tag, setTag] = useState<string>();\n const [versionCreationApproved, setVersionCreationApproved] =\n useState(preApprovePreview);\n const httpClient = useHttpClient({ type: 'backoffice' });\n const biLogger = useBiLogger();\n\n const { status } = useAsync(async () => {\n await assertBuildOutputExists(model.projectFolder);\n const { latestVersion } = await getAppSnapshot({\n appId: model.config.appId,\n });\n\n return latestVersion;\n }, []);\n\n const promoteVersionAction = useAsyncCallback(\n (_, versionType: VersionType, tag: string, backendServerUrl?: string) => {\n return promoteVersion({\n appId: model.config.appId,\n tag,\n versionType,\n arm,\n biLogger,\n httpClient,\n backendServerUrl,\n });\n }\n );\n\n function setTagAndMaybePromote(tag: string, backendServerUrl?: string) {\n setTag(tag);\n if (versionCreationApproved && versionType) {\n promoteVersionAction.execute(versionType, tag, backendServerUrl);\n }\n }\n\n return match(status, {\n Loading: () => <Spinner />,\n Error: () => null,\n Success: ({ result: latestVersion }) => (\n <>\n <Text>\n {t('create_version_command.check_preview_before_version_release')}\n </Text>\n <PreviewCommand\n baseUrl={baseUrl}\n siteIdOverride={siteIdOverride}\n onPreviewCreated={setTagAndMaybePromote}\n />\n {tag && backendComponentsByType.Event.length > 0 && (\n <Box marginBottom={1}>\n <Alert type=\"warning\">\n <Text>\n {t('create_version_command.confirm_version_events_warning')}\n </Text>\n </Alert>\n </Box>\n )}\n {tag && !preApprovePreview && (\n <ConfirmVersionCreation onSubmit={setVersionCreationApproved} />\n )}\n\n {tag && versionCreationApproved && (\n <>\n <Text>\n {t('create_version_command.current_version', {\n version: latestVersion,\n })}\n </Text>\n\n {!versionType && (\n <SelectVersionType\n version={latestVersion}\n onSubmit={(versionType) =>\n promoteVersionAction.execute(versionType, tag)\n }\n />\n )}\n\n {match(promoteVersionAction.status, {\n NotRequested: () => null,\n Error: () => null,\n Loading: () => (\n <Spinner text={t('create_version_command.creating_version')} />\n ),\n Success: ({ result: version }) => (\n <>\n <Alert type=\"success\">\n {t('create_version_command.creating_version_success', {\n version,\n })}\n </Alert>\n <VersionValidationStatus\n appId={model.config.appId}\n version={version}\n />\n </>\n ),\n })}\n </>\n )}\n </>\n ),\n });\n};\n","import type { FC } from 'react';\nimport React, { useState } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { ConfirmInput, Text } from '@wix/cli-ui-kit';\n\nexport const ConfirmVersionCreation: FC<{\n onSubmit: (value: boolean) => void;\n}> = ({ onSubmit }) => {\n const { t } = useTranslation();\n const [cancelled, setCancelled] = useState<boolean>(false);\n\n return (\n <>\n <ConfirmInput\n label={t('create_version_command.confirm_version_creation')}\n initialValue={true}\n onSubmit={(confirmation) => {\n if (confirmation) {\n onSubmit(true);\n } else {\n setCancelled(true);\n onSubmit(false);\n }\n }}\n />\n {cancelled && (\n <Text>\n {t('create_version_command.confirm_version_creation_aborted')}\n </Text>\n )}\n </>\n );\n};\n","import type { FC } from 'react';\nimport React from 'react';\nimport { inc } from 'semver';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { SelectInput } from '@wix/cli-ui-kit';\nimport { VersionType } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\n\nexport const SelectVersionType: FC<{\n version: string;\n onSubmit: (versionType: VersionType) => void;\n}> = ({ version, onSubmit }) => {\n const { t } = useTranslation();\n\n return (\n <SelectInput\n label={t('create_version_command.version_type_question')}\n options={[\n {\n title: t('create_version_command.version_type_question_minor', {\n version: inc(version, 'minor'),\n }),\n value: VersionType.MINOR,\n },\n {\n title: t('create_version_command.version_type_question_major', {\n version: inc(version, 'major'),\n }),\n value: VersionType.MAJOR,\n },\n ]}\n onSubmit={({ value }) => onSubmit(value)}\n />\n );\n};\n","import { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { ARMClient } from '@wix/arm-client';\nimport type { HttpClient } from '@wix/cli-http-client';\nimport { isHttpError } from '@wix/cli-http-client';\nimport type { VersionType } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\nimport type { BiLogger } from '@wix/cli-telemetry';\nimport { BackendDeploymentClient } from '../../backend-deployment/client.js';\n\nexport const promoteVersion = async ({\n appId,\n tag,\n versionType,\n arm,\n biLogger,\n httpClient,\n backendServerUrl,\n}: {\n appId: string;\n tag: string;\n versionType: VersionType;\n arm: ARMClient;\n biLogger: BiLogger;\n httpClient: HttpClient;\n backendServerUrl?: string;\n}) => {\n try {\n const { newVersion } = await arm.promoteToDevCenter(\n appId,\n tag,\n versionType\n );\n\n if (backendServerUrl) {\n const deployment = new BackendDeploymentClient(biLogger, httpClient);\n await deployment.makrDeploymentAsPermanent(\n appId,\n BackendDeploymentClient.DeploymentUrToDeploymentId(backendServerUrl)\n );\n }\n\n return newVersion;\n } catch (e) {\n if (isHttpError(e) && e.response?.status === 428) {\n throw new CliError({\n code: CliErrorCode.FailedToCreateVersionForSubmittedApp(),\n cause: e,\n });\n }\n\n throw new CliError({\n code: CliErrorCode.FailedToCreateVersion(),\n cause: e,\n });\n }\n};\n","import { useDevCenterClient } from '@wix/dev-center-client';\nimport { Alert, Link, Spinner, useAsync } from '@wix/cli-ui-kit';\nimport React, { type FC } from 'react';\nimport { match } from 'variant';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\n\nconst VersionValidationStatus: FC<{\n appId: string;\n version: string;\n}> = ({ appId, version }) => {\n const { t } = useTranslation();\n const { getAppValidationFailuresCount } = useDevCenterClient();\n\n const { status } = useAsync(async () => {\n return getAppValidationFailuresCount(appId, version);\n }, []);\n\n return match(status, {\n NotRequested: () => null,\n Error: () => null,\n Loading: () => (\n <Spinner text={t('create_version_command.checking_validation_status')} />\n ),\n Success: ({ result: validationFailuresCount }) => (\n <>\n {validationFailuresCount === 0 ? (\n <Trans\n i18nKey=\"create_version_command.version_validation_ok\"\n components={[\n <Link\n url={`https://dev.wix.com/dc3/my-apps/${appId}/versions`}\n />,\n ]}\n />\n ) : (\n <Alert type=\"warning\">\n <Trans\n i18nKey={'create_version_command.version_validation_has_failures'}\n components={[\n <Link\n url={`https://dev.wix.com/dc3/my-apps/${appId}/dashboard?open-blockers-panel`}\n />,\n ]}\n ></Trans>\n </Alert>\n )}\n </>\n ),\n });\n};\n\nexport { VersionValidationStatus };\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","ConfirmVersionCreation","onSubmit","t","useTranslation","cancelled","setCancelled","React","ConfirmInput","confirmation","Text","init_esm_shims","import_react","import_semver","SelectVersionType","version","onSubmit","t","useTranslation","React","SelectInput","VersionType","value","init_esm_shims","promoteVersion","appId","tag","versionType","arm","biLogger","httpClient","backendServerUrl","newVersion","BackendDeploymentClient","e","isHttpError","CliError","CliErrorCode","init_esm_shims","import_react","import_variant","VersionValidationStatus","appId","version","t","useTranslation","getAppValidationFailuresCount","useDevCenterClient","status","useAsync","React","Spinner","validationFailuresCount","Trans","Link","Alert","CreateVersionCommand","baseUrl","siteIdOverride","preApprovePreview","versionType","t","useTranslation","model","useProjectModel","backendComponentsByType","useBackendComponents","arm","useARMClient","getAppSnapshot","useDevCenterClient","tag","setTag","versionCreationApproved","setVersionCreationApproved","httpClient","useHttpClient","biLogger","useBiLogger","status","useAsync","assertBuildOutputExists","latestVersion","promoteVersionAction","useAsyncCallback","_","backendServerUrl","promoteVersion","setTagAndMaybePromote","React","Spinner","Text","PreviewCommand","Box_default","Alert","ConfirmVersionCreation","SelectVersionType","version","VersionValidationStatus"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/CreateVersionCommand/index.ts","../src/components/CreateVersionCommand/CreateVersionCommand.tsx","../src/components/CreateVersionCommand/ConfirmVersionCreation.tsx","../src/components/CreateVersionCommand/SelectVersionType.tsx","../src/components/CreateVersionCommand/promoteVersion.ts","../src/components/CreateVersionCommand/VersionValidationStatus.tsx"],"sourcesContent":["export { CreateVersionCommand } from './CreateVersionCommand.js';\n","import type { FC } from 'react';\nimport React, { useState } from 'react';\nimport { useARMClient } from '@wix/arm-client';\nimport {\n Alert,\n Box,\n Spinner,\n useAsync,\n useAsyncCallback,\n} from '@wix/cli-ui-kit';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport type { VersionType } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\nimport { Text } from '@wix/cli-ui-kit';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport { useProjectModel } from '../../model.js';\nimport { PreviewCommand } from '../PreviewCommand/index.js';\nimport { assertBuildOutputExists } from '../../files/assert-build-output-exists.js';\nimport { ConfirmVersionCreation } from './ConfirmVersionCreation.js';\nimport { SelectVersionType } from './SelectVersionType.js';\nimport { promoteVersion } from './promoteVersion.js';\nimport { VersionValidationStatus } from './VersionValidationStatus.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\nexport const CreateVersionCommand: FC<{\n baseUrl?: string;\n siteIdOverride?: string;\n preApprovePreview: boolean;\n versionType?: VersionType;\n}> = ({ baseUrl, siteIdOverride, preApprovePreview, versionType }) => {\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const { backendComponentsByType } = useBackendComponents();\n const arm = useARMClient();\n const { getAppSnapshot } = useDevCenterClient();\n const [tag, setTag] = useState<string>();\n const [versionCreationApproved, setVersionCreationApproved] =\n useState(preApprovePreview);\n const httpClient = useHttpClient({ type: 'backoffice' });\n const biLogger = useBiLogger();\n\n const { status } = useAsync(async () => {\n await assertBuildOutputExists(model.projectFolder);\n const { latestVersion } = await getAppSnapshot({\n appId: model.config.appId,\n });\n\n return latestVersion;\n }, []);\n\n const promoteVersionAction = useAsyncCallback(\n (_, versionType: VersionType, tag: string, backendServerUrl?: string) => {\n return promoteVersion({\n appId: model.config.appId,\n tag,\n versionType,\n arm,\n biLogger,\n httpClient,\n backendServerUrl,\n });\n }\n );\n\n function setTagAndMaybePromote(tag: string, backendServerUrl?: string) {\n setTag(tag);\n if (versionCreationApproved && versionType) {\n promoteVersionAction.execute(versionType, tag, backendServerUrl);\n }\n }\n\n return match(status, {\n Loading: () => <Spinner />,\n Error: () => null,\n Success: ({ result: latestVersion }) => (\n <>\n <Text>\n {t('create_version_command.check_preview_before_version_release')}\n </Text>\n <PreviewCommand\n baseUrl={baseUrl}\n siteIdOverride={siteIdOverride}\n onPreviewCreated={setTagAndMaybePromote}\n />\n {tag && backendComponentsByType.Event.length > 0 && (\n <Box marginBottom={1}>\n <Alert type=\"warning\">\n <Text>\n {t('create_version_command.confirm_version_events_warning')}\n </Text>\n </Alert>\n </Box>\n )}\n {tag && !preApprovePreview && (\n <ConfirmVersionCreation onSubmit={setVersionCreationApproved} />\n )}\n\n {tag && versionCreationApproved && (\n <>\n <Text>\n {t('create_version_command.current_version', {\n version: latestVersion,\n })}\n </Text>\n\n {!versionType && (\n <SelectVersionType\n version={latestVersion}\n onSubmit={(versionType) =>\n promoteVersionAction.execute(versionType, tag)\n }\n />\n )}\n\n {match(promoteVersionAction.status, {\n NotRequested: () => null,\n Error: () => null,\n Loading: () => (\n <Spinner text={t('create_version_command.creating_version')} />\n ),\n Success: ({ result: version }) => (\n <>\n <Alert type=\"success\">\n {t('create_version_command.creating_version_success', {\n version,\n })}\n </Alert>\n <VersionValidationStatus\n appId={model.config.appId}\n version={version}\n />\n </>\n ),\n })}\n </>\n )}\n </>\n ),\n });\n};\n","import type { FC } from 'react';\nimport React, { useState } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { ConfirmInput, Text } from '@wix/cli-ui-kit';\n\nexport const ConfirmVersionCreation: FC<{\n onSubmit: (value: boolean) => void;\n}> = ({ onSubmit }) => {\n const { t } = useTranslation();\n const [cancelled, setCancelled] = useState<boolean>(false);\n\n return (\n <>\n <ConfirmInput\n label={t('create_version_command.confirm_version_creation')}\n initialValue={true}\n onSubmit={(confirmation) => {\n if (confirmation) {\n onSubmit(true);\n } else {\n setCancelled(true);\n onSubmit(false);\n }\n }}\n />\n {cancelled && (\n <Text>\n {t('create_version_command.confirm_version_creation_aborted')}\n </Text>\n )}\n </>\n );\n};\n","import type { FC } from 'react';\nimport React from 'react';\nimport { inc } from 'semver';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { SelectInput } from '@wix/cli-ui-kit';\nimport { VersionType } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\n\nexport const SelectVersionType: FC<{\n version: string;\n onSubmit: (versionType: VersionType) => void;\n}> = ({ version, onSubmit }) => {\n const { t } = useTranslation();\n\n return (\n <SelectInput\n label={t('create_version_command.version_type_question')}\n options={[\n {\n title: t('create_version_command.version_type_question_minor', {\n version: inc(version, 'minor'),\n }),\n value: VersionType.MINOR,\n },\n {\n title: t('create_version_command.version_type_question_major', {\n version: inc(version, 'major'),\n }),\n value: VersionType.MAJOR,\n },\n ]}\n onSubmit={({ value }) => onSubmit(value)}\n />\n );\n};\n","import { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { ARMClient } from '@wix/arm-client';\nimport type { HttpClient } from '@wix/cli-http-client';\nimport { isHttpError } from '@wix/cli-http-client';\nimport type { VersionType } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\nimport type { BiLogger } from '@wix/cli-telemetry';\nimport { BackendDeploymentClient } from '../../backend-deployment/client.js';\n\nexport const promoteVersion = async ({\n appId,\n tag,\n versionType,\n arm,\n biLogger,\n httpClient,\n backendServerUrl,\n}: {\n appId: string;\n tag: string;\n versionType: VersionType;\n arm: ARMClient;\n biLogger: BiLogger;\n httpClient: HttpClient;\n backendServerUrl?: string;\n}) => {\n try {\n const { newVersion } = await arm.promoteToDevCenter(\n appId,\n tag,\n versionType\n );\n\n if (backendServerUrl) {\n const deployment = new BackendDeploymentClient(biLogger, httpClient);\n await deployment.makrDeploymentAsPermanent(\n appId,\n BackendDeploymentClient.DeploymentUrToDeploymentId(backendServerUrl)\n );\n }\n\n return newVersion;\n } catch (e) {\n if (isHttpError(e) && e.response?.status === 428) {\n throw new CliError({\n code: CliErrorCode.FailedToCreateVersionForSubmittedApp(),\n cause: e,\n });\n }\n\n throw new CliError({\n code: CliErrorCode.FailedToCreateVersion(),\n cause: e,\n });\n }\n};\n","import { useDevCenterClient } from '@wix/dev-center-client';\nimport { Alert, Link, Spinner, useAsync } from '@wix/cli-ui-kit';\nimport React, { type FC } from 'react';\nimport { match } from 'variant';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\n\nconst VersionValidationStatus: FC<{\n appId: string;\n version: string;\n}> = ({ appId, version }) => {\n const { t } = useTranslation();\n const { getAppValidationFailuresCount } = useDevCenterClient();\n\n const { status } = useAsync(async () => {\n return getAppValidationFailuresCount(appId, version);\n }, []);\n\n return match(status, {\n NotRequested: () => null,\n Error: () => null,\n Loading: () => (\n <Spinner text={t('create_version_command.checking_validation_status')} />\n ),\n Success: ({ result: validationFailuresCount }) => (\n <>\n {validationFailuresCount === 0 ? (\n <Trans\n i18nKey=\"create_version_command.version_validation_ok\"\n components={[\n <Link\n url={`https://dev.wix.com/dc3/my-apps/${appId}/versions`}\n />,\n ]}\n />\n ) : (\n <Alert type=\"warning\">\n <Trans\n i18nKey={'create_version_command.version_validation_has_failures'}\n components={[\n <Link\n url={`https://dev.wix.com/dc3/my-apps/${appId}/dashboard?open-blockers-panel`}\n />,\n ]}\n ></Trans>\n </Alert>\n )}\n </>\n ),\n });\n};\n\nexport { VersionValidationStatus };\n"],"mappings":";;4nBAAAA,ICAAC,IACA,IAAAC,EAAgC,SAUhC,IAAAC,EAAsB,SCXtBC,IACA,IAAAC,EAAgC,SAIzB,IAAMC,EAER,CAAC,CAAE,SAAAC,CAAS,IAAM,CACrB,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvB,CAACC,EAAWC,CAAY,KAAI,YAAkB,EAAK,EAEzD,OACE,EAAAC,QAAA,gBAAAA,QAAA,cACE,EAAAA,QAAA,cAACC,EAAA,CACC,MAAOL,EAAE,iDAAiD,EAC1D,aAAc,GACd,SAAWM,GAAiB,CACtBA,EACFP,EAAS,EAAI,GAEbI,EAAa,EAAI,EACjBJ,EAAS,EAAK,EAElB,EACF,EACCG,GACC,EAAAE,QAAA,cAACG,EAAA,KACEP,EAAE,yDAAyD,CAC9D,CAEJ,CAEJ,EChCAQ,IACA,IAAAC,EAAkB,SAClBC,EAAoB,UAKb,IAAMC,EAGR,CAAC,CAAE,QAAAC,EAAS,SAAAC,CAAS,IAAM,CAC9B,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EAE7B,OACE,EAAAC,QAAA,cAACC,EAAA,CACC,MAAOH,EAAE,8CAA8C,EACvD,QAAS,CACP,CACE,MAAOA,EAAE,qDAAsD,CAC7D,WAAS,OAAIF,EAAS,OAAO,CAC/B,CAAC,EACD,MAAOM,EAAY,KACrB,EACA,CACE,MAAOJ,EAAE,qDAAsD,CAC7D,WAAS,OAAIF,EAAS,OAAO,CAC/B,CAAC,EACD,MAAOM,EAAY,KACrB,CACF,EACA,SAAU,CAAC,CAAE,MAAAC,CAAM,IAAMN,EAASM,CAAK,EACzC,CAEJ,ECjCAC,IAQO,IAAMC,EAAiB,MAAO,CACnC,MAAAC,EACA,IAAAC,EACA,YAAAC,EACA,IAAAC,EACA,SAAAC,EACA,WAAAC,EACA,iBAAAC,CACF,IAQM,CACJ,GAAI,CACF,GAAM,CAAE,WAAAC,CAAW,EAAI,MAAMJ,EAAI,mBAC/BH,EACAC,EACAC,CACF,EAEA,OAAII,GAEF,MADmB,IAAIE,EAAwBJ,EAAUC,CAAU,EAClD,0BACfL,EACAQ,EAAwB,2BAA2BF,CAAgB,CACrE,EAGKC,CACT,OAASE,EAAG,CACV,MAAIC,EAAYD,CAAC,GAAKA,EAAE,UAAU,SAAW,IACrC,IAAIE,EAAS,CACjB,KAAMC,EAAa,qCAAqC,EACxD,MAAOH,CACT,CAAC,EAGG,IAAIE,EAAS,CACjB,KAAMC,EAAa,sBAAsB,EACzC,MAAOH,CACT,CAAC,CACH,CACF,ECtDAI,IAEA,IAAAC,EAA+B,SAC/BC,EAAsB,SAGtB,IAAMC,GAGD,CAAC,CAAE,MAAAC,EAAO,QAAAC,CAAQ,IAAM,CAC3B,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvB,CAAE,8BAAAC,CAA8B,EAAIC,EAAmB,EAEvD,CAAE,OAAAC,CAAO,EAAIC,EAAS,SACnBH,EAA8BJ,EAAOC,CAAO,EAClD,CAAC,CAAC,EAEL,SAAO,SAAMK,EAAQ,CACnB,aAAc,IAAM,KACpB,MAAO,IAAM,KACb,QAAS,IACP,EAAAE,QAAA,cAACC,EAAA,CAAQ,KAAMP,EAAE,mDAAmD,EAAG,EAEzE,QAAS,CAAC,CAAE,OAAQQ,CAAwB,IAC1C,EAAAF,QAAA,gBAAAA,QAAA,cACGE,IAA4B,EAC3B,EAAAF,QAAA,cAACG,EAAA,CACC,QAAQ,+CACR,WAAY,CACV,EAAAH,QAAA,cAACI,EAAA,CACC,IAAK,mCAAmCZ,CAAK,YAC/C,CACF,EACF,EAEA,EAAAQ,QAAA,cAACK,EAAA,CAAM,KAAK,WACV,EAAAL,QAAA,cAACG,EAAA,CACC,QAAS,yDACT,WAAY,CACV,EAAAH,QAAA,cAACI,EAAA,CACC,IAAK,mCAAmCZ,CAAK,iCAC/C,CACF,EACD,CACH,CAEJ,CAEJ,CAAC,CACH,EJvBO,IAAMc,GAKR,CAAC,CAAE,QAAAC,EAAS,eAAAC,EAAgB,kBAAAC,EAAmB,YAAAC,CAAY,IAAM,CACpE,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvB,CAAE,MAAAC,CAAM,EAAIC,EAAgB,EAC5B,CAAE,wBAAAC,CAAwB,EAAIC,EAAqB,EACnDC,EAAMC,EAAa,EACnB,CAAE,eAAAC,CAAe,EAAIC,EAAmB,EACxC,CAACC,EAAKC,EAAM,KAAI,YAAiB,EACjC,CAACC,EAAyBC,EAA0B,KACxD,YAASf,CAAiB,EACtBgB,GAAaC,EAAc,CAAE,KAAM,YAAa,CAAC,EACjDC,GAAWC,EAAY,EAEvB,CAAE,OAAAC,EAAO,EAAIC,EAAS,SAAY,CACtC,MAAMC,EAAwBlB,EAAM,aAAa,EACjD,GAAM,CAAE,cAAAmB,CAAc,EAAI,MAAMb,EAAe,CAC7C,MAAON,EAAM,OAAO,KACtB,CAAC,EAED,OAAOmB,CACT,EAAG,CAAC,CAAC,EAECC,EAAuBC,EAC3B,CAACC,EAAGzB,EAA0BW,GAAae,KAClCC,EAAe,CACpB,MAAOxB,EAAM,OAAO,MACpB,IAAAQ,GACA,YAAAX,EACA,IAAAO,EACA,SAAAU,GACA,WAAAF,GACA,iBAAAW,EACF,CAAC,CAEL,EAEA,SAASE,GAAsBjB,EAAae,EAA2B,CACrEd,GAAOD,CAAG,EACNE,GAA2Bb,GAC7BuB,EAAqB,QAAQvB,EAAaW,EAAKe,CAAgB,CAEnE,CAEA,SAAO,SAAMP,GAAQ,CACnB,QAAS,IAAM,EAAAU,QAAA,cAACC,EAAA,IAAQ,EACxB,MAAO,IAAM,KACb,QAAS,CAAC,CAAE,OAAQR,CAAc,IAChC,EAAAO,QAAA,gBAAAA,QAAA,cACE,EAAAA,QAAA,cAACE,EAAA,KACE9B,EAAE,6DAA6D,CAClE,EACA,EAAA4B,QAAA,cAACG,EAAA,CACC,QAASnC,EACT,eAAgBC,EAChB,iBAAkB8B,GACpB,EACCjB,GAAON,EAAwB,MAAM,OAAS,GAC7C,EAAAwB,QAAA,cAACI,EAAA,CAAI,aAAc,GACjB,EAAAJ,QAAA,cAACK,EAAA,CAAM,KAAK,WACV,EAAAL,QAAA,cAACE,EAAA,KACE9B,EAAE,uDAAuD,CAC5D,CACF,CACF,EAEDU,GAAO,CAACZ,GACP,EAAA8B,QAAA,cAACM,EAAA,CAAuB,SAAUrB,GAA4B,EAG/DH,GAAOE,GACN,EAAAgB,QAAA,gBAAAA,QAAA,cACE,EAAAA,QAAA,cAACE,EAAA,KACE9B,EAAE,yCAA0C,CAC3C,QAASqB,CACX,CAAC,CACH,EAEC,CAACtB,GACA,EAAA6B,QAAA,cAACO,EAAA,CACC,QAASd,EACT,SAAWtB,GACTuB,EAAqB,QAAQvB,EAAaW,CAAG,EAEjD,KAGD,SAAMY,EAAqB,OAAQ,CAClC,aAAc,IAAM,KACpB,MAAO,IAAM,KACb,QAAS,IACP,EAAAM,QAAA,cAACC,EAAA,CAAQ,KAAM7B,EAAE,yCAAyC,EAAG,EAE/D,QAAS,CAAC,CAAE,OAAQoC,CAAQ,IAC1B,EAAAR,QAAA,gBAAAA,QAAA,cACE,EAAAA,QAAA,cAACK,EAAA,CAAM,KAAK,WACTjC,EAAE,kDAAmD,CACpD,QAAAoC,CACF,CAAC,CACH,EACA,EAAAR,QAAA,cAACS,GAAA,CACC,MAAOnC,EAAM,OAAO,MACpB,QAASkC,EACX,CACF,CAEJ,CAAC,CACH,CAEJ,CAEJ,CAAC,CACH","names":["init_esm_shims","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","ConfirmVersionCreation","onSubmit","t","useTranslation","cancelled","setCancelled","React","ConfirmInput","confirmation","Text","init_esm_shims","import_react","import_semver","SelectVersionType","version","onSubmit","t","useTranslation","React","SelectInput","VersionType","value","init_esm_shims","promoteVersion","appId","tag","versionType","arm","biLogger","httpClient","backendServerUrl","newVersion","BackendDeploymentClient","e","isHttpError","CliError","CliErrorCode","init_esm_shims","import_react","import_variant","VersionValidationStatus","appId","version","t","useTranslation","getAppValidationFailuresCount","useDevCenterClient","status","useAsync","React","Spinner","validationFailuresCount","Trans","Link","Alert","CreateVersionCommand","baseUrl","siteIdOverride","preApprovePreview","versionType","t","useTranslation","model","useProjectModel","backendComponentsByType","useBackendComponents","arm","useARMClient","getAppSnapshot","useDevCenterClient","tag","setTag","versionCreationApproved","setVersionCreationApproved","httpClient","useHttpClient","biLogger","useBiLogger","status","useAsync","assertBuildOutputExists","latestVersion","promoteVersionAction","useAsyncCallback","_","backendServerUrl","promoteVersion","setTagAndMaybePromote","React","Spinner","Text","PreviewCommand","Box_default","Alert","ConfirmVersionCreation","SelectVersionType","version","VersionValidationStatus"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as _createRequire } from 'node:module';
|
|
2
|
+
const require = _createRequire(import.meta.url);
|
|
3
|
+
import{a as U}from"./chunk-JKG4PFVP.js";import{a as Oo}from"./chunk-FBYP5GID.js";import{b as Mo,c as Ao,d as Io}from"./chunk-HTO6ALNX.js";import{a as ko,b as Bo,c as To}from"./chunk-ROZV4SHP.js";import{a as No,b as Vo,c as Uo,d as ze,e as He}from"./chunk-35SQ77PW.js";import{a as J}from"./chunk-E6MYDYCH.js";import{a as ne}from"./chunk-COIDN4V4.js";import{b as Fe}from"./chunk-JAY5356K.js";import{g as qe,h as Fo,i as Ce,j as jo,k as ie,l as Ko,m as Wo,n as Se,o as de}from"./chunk-QTYWYBN3.js";import{b as Lo}from"./chunk-F55KYUXJ.js";import{A as he,Aa as je,Ba as Ke,E as bo,F as wo,Fa as Po,Ga as We,H as Do,S as ke,ab as Ge,db as A,ea as _o,ga as W,h as po,k as co,l as lo,m as uo,ma as Eo,u as xo,x as Oe,y as Ue}from"./chunk-F4YTZ6XA.js";import{A as fo,B as Ae,C as Ie,D as go,F as vo,H as Ne,K as ho,L as $,M,N as Ve,O as le,P as Co,R as ve,S as So,U as yo,V as C,W as x,a as w,b as F,d as so,e as ao,m as mo,w as c,y as L,z as v}from"./chunk-MB65UVFQ.js";import{e as u,h as s}from"./chunk-V4TR6DCM.js";s();s();var _e=u(w(),1);s();var te=u(w(),1),Ze=u(F(),1);s();var qo=u(w(),1),Ho=u(F(),1);var Go=async(e,o,t)=>{let n=await Ao({appId:e.config.appId,components:e.components,componentSourceBuilder:Io({model:e,clientDevServerUrl:o,backendDevServerUrl:t?.localUrl})});return Lo(n,o,t?.tunnelUrl)};function Xo(){let{model:e}=A(),o=Fe(),{createAppRelease:t,updateAppRelease:n}=qe();return(0,qo.useCallback)(async({backendServerUrl:r,devServerUrl:i,projectModelWatcher:l,onChange:d,onError:m})=>{let{projectId:p}=e.config,a=await Go(e,i,r),h=await je(e.projectFolder,o),V=await(async b=>{if(b){let B=await n(a,b);return(0,Ho.match)(B,{TagUpdated:()=>b,TagNotFound:({cause:T})=>(o(T),t(a,p))})}return t(a,p)})(h?.devArmTag);return V!==h?.devArmTag&&await Ke(e.projectFolder,{devArmTag:V}).catch(b=>o(b)),l.onChange(async(b,B)=>{try{if(B==="model-updated"){if(b.components.length===0)return;let T=await Go(b,i,r);Ge(a,T)||await n(T,V)}d(B)}catch(T){m(T)}}).onError(m),V},[t,e,n,o])}s();var ye=u(w(),1);import{createServer as br}from"vite";s();function Ye({onLog:e}){let o=new WeakSet,t=new Set,n={hasWarned:!1,info(r){e("info",r)},warn(r){n.hasWarned=!0,e("warning",r)},warnOnce(r){t.has(r)||(n.hasWarned=!0,e("warning",r),t.add(r))},error(r,i){n.hasWarned=!0,e("error",r),i?.error&&o.add(i.error)},clearScreen(){},hasErrorLogged(r){return o.has(r)}};return n}function $o({createConfig:e}){let o=(0,ye.useRef)();return(0,ye.useEffect)(()=>()=>{o.current?.close()},[]),(0,ye.useCallback)(async t=>{let n=await e(t),r=await br(n);return o.current=r,await r.listen(),{devServerUrl:ko(r),devServer:r}},[e])}function Jo({https:e}){let{model:o}=A();return $o({createConfig:({onLog:n,projectModelWatcher:r,baseBackendUrl:i})=>Bo(o,{type:"dev",https:e,projectModelWatcher:r,customLogger:Ye({onLog:n})},{baseBackendUrl:i})})}function Qo({https:e}){let{model:o}=A(),{getAppSecret:t}=We();return $o({createConfig:async({onLog:r,projectModelWatcher:i})=>{let l=await t({appId:o.config.appId});return To(o,{type:"dev",https:e,projectModelWatcher:i,customLogger:Ye({onLog:r})},l)}})}s();var P=u(w(),1);s();import{EOL as wr}from"node:os";import{createWriteStream as Dr}from"node:fs";var Xe=class{constructor(o,t){this.opts=t;this.stream=Dr(_o(o),{flags:"w"}),this.stream.on("error",this.opts.onError)}drain=!1;stream;write=o=>{if(this.drain){this.stream.once("drain",()=>{this.drain=!1,this.write(o)});return}this.stream.write(o.concat(wr),n=>{n&&this.opts.onError(n)})||(this.drain=!0,this.stream.once("drain",()=>{this.drain=!1}))};close=()=>{this.stream.close()}};s();var re=u(w(),1);var xe=({type:e,msg:o,error:t,prefix:n="app",timestamp:r})=>re.default.createElement(c,{columnGap:1},re.default.createElement(c,{flexShrink:0},re.default.createElement(v,{skin:"secondary"},r.toLocaleTimeString())),re.default.createElement(c,{flexShrink:0},re.default.createElement(v,{skin:e,bold:!0},"[",n,"]")),re.default.createElement(c,null,e==="error"&&t?re.default.createElement(Ue,{error:t}):typeof o=="string"?re.default.createElement(v,null,o):o));var _r=()=>P.default.createElement(c,{flexDirection:"column"},P.default.createElement($,{type:"error"},P.default.createElement(C,{i18nKey:"general.write_dev_log_failure.message",components:[P.default.createElement(v,{bold:!0})],values:{path:ke}})),P.default.createElement(c,{paddingTop:1},P.default.createElement($,{type:"insight"},P.default.createElement(C,{i18nKey:"general.write_dev_log_failure.hint"}))));function Er(e){return!!/Port \d{1,5} is in use, trying another one/.test(e)}function zo(){let{model:e}=A(),[o,t]=(0,P.useState)([]),n=(0,P.useCallback)(m=>{let p={...m,timestamp:new Date};return t(a=>[...a,p]),p},[]),{renderer:r,stream:i}=(0,P.useMemo)(()=>({renderer:yo(),stream:new Xe(e.projectFolder,{onError(){n({type:"error",msg:P.default.createElement(_r,null)})}})}),[n,e.projectFolder]),l=(0,P.useCallback)(m=>{if(m.msg&&Er(m.msg.toString()))return;let p=n(m),a=r.render(P.default.createElement(xe,{...p}));i.write(a)},[n,r,i]),d=(0,P.useCallback)(()=>{t([])},[]);return(0,P.useEffect)(()=>()=>{r.unmount(),i.close()},[r,i]),{logs:o,writeLog:l,clearLogs:d}}s();var Yo=u(w(),1);function Zo(){let{model:e}=A(),{site:o}=Ce(),t=Fe(),{createOverride:n}=Uo();return(0,Yo.useCallback)(async({projectModelWatcher:r})=>{let{appId:i}=e.config,l=await je(e.projectFolder,t),d=ze(e)??{},{id:m}=await n({appId:i,siteId:o.id,overrides:d,siteOverrideId:l?.devSiteOverrideId});return r.onChange(async(p,a)=>{if(a==="model-updated"){let h=ze(p)??{};Ge(d,h)||(await n({appId:i,siteId:o.id,overrides:h,siteOverrideId:m}),d=h)}}),m!==l?.devSiteOverrideId&&await Ke(e.projectFolder,{devSiteOverrideId:m}).catch(p=>t(p)),m},[n,e,o.id,t])}var Ro=(0,te.createContext)(null),Re=({https:e,children:o})=>{let{t}=x(),{reportError:n}=he(),{backendComponents:r,backendComponentsByType:i}=J(),l=Jo({https:e}),d=Qo({https:e}),m=Oo(),p=Xo(),a=Zo(),{logs:h,writeLog:g,clearLogs:V}=zo(),{watcher:b}=A(),{status:B}=ve(async()=>{let T;r.length>0&&(T=await d({projectModelWatcher:b,onLog(K,oe){g({type:K,msg:oe,prefix:"backend"})}}).then(async({devServerUrl:K})=>{let oe;if(i.Event.length>0){let{url:Me}=await m(Number(new URL(K).port));oe=Me}return{localUrl:K,tunnelUrl:oe}}));let{devServerUrl:D,devServer:R}=await l({baseBackendUrl:T?.localUrl,projectModelWatcher:b,onLog(K,oe){g({type:K,msg:oe,prefix:"vite"})}}),j=await p({backendServerUrl:T,devServerUrl:D,projectModelWatcher:b,onChange(K){(0,Ze.match)(K,{"change-received":()=>{g({type:"info",msg:t("dev_command.config_change")})},"model-did-not-change":()=>{g({type:"info",msg:t("dev_command.config_didnt_update")})},"model-updated":()=>{R.ws.send({type:"full-reload"}),g({type:"info",msg:t("dev_command.config_update")})}})},onError(K){n(K),g({type:"error",error:K}),g({type:"info",msg:t("dev_command.config_didnt_update")})}}),ee=await a({projectModelWatcher:b});return{clientDevServerUrl:D,armTag:j,siteOverrideId:ee,https:e}},[]);return(0,Ze.match)(B,{Error:()=>null,Loading:()=>te.default.createElement(le,{text:t("dev_command.dev_environment.loading")}),Success:({result:{clientDevServerUrl:T,https:D,armTag:R,siteOverrideId:j}})=>te.default.createElement(Ro.Provider,{value:{clientDevServerUrl:T,https:D,logs:h,writeLog:g,clearLogs:V}},te.default.createElement(jo,{siteOverrideId:j},te.default.createElement(Fo,{armTag:R},o)))})};function H(){let e=(0,te.useContext)(Ro);if(e===null)throw new Error("useDevEnvironment() cannot be used without an <DevEnvironmentProvider>");return e}s();var me=u(w(),1),fr=u(F(),1);s();var f=u(w(),1);var sr=u(F(),1);s();var Be=u(F(),1),I=(0,Be.variant)({Home:{},SiteSelector:{},DashboardScreen:(0,Be.fields)(),BackendScreen:(0,Be.fields)(),DevEnvLogsViewerScreen:{}});s();var Q=u(w(),1);var er=({onViewServerLogsSelection:e})=>{let{t:o}=x(),{logs:t}=H(),n=(0,Q.useMemo)(()=>t.slice(-5),[t]);return L(async r=>{r==="l"&&e()}),Q.default.createElement(c,{flexDirection:"column",gap:1},Q.default.createElement(c,{flexDirection:"column"},Q.default.createElement(C,{i18nKey:"dev_command.dev_env_logs.title",values:{path:ke}}),!n.length&&Q.default.createElement(v,{skin:"secondary"},o("dev_command.dev_env_logs.empty")),n.map((r,i)=>Q.default.createElement(xe,{key:i,...r}))),Q.default.createElement(C,{i18nKey:"dev_command.dev_env_backend_logs.title",components:[Q.default.createElement(M,{value:"L"})],values:{path:ke}}))};s();var k=u(w(),1);var eo=({label:e,inputKey:o,suffix:t,disabled:n})=>{let r=()=>n?"secondary":"standard";return k.default.createElement(c,null,k.default.createElement(c,{marginRight:1},k.default.createElement(c,{marginRight:1},k.default.createElement(v,{skin:r()},k.default.createElement(Ie,null)," ",k.default.createElement(M,{value:o})," -")),k.default.createElement(c,{gap:1},k.default.createElement(v,{skin:r()},e))),k.default.createElement(v,{skin:r()},t))},or=({onMultipleDashboardExtensionSelection:e})=>{let{t:o}=x(),t=U(),{writeLog:n}=H(),{isPlatformExists:r}=He(),{dashboardExtensions:i}=ne(),l=ie(),d=(0,k.useCallback)(p=>{de({title:p.type,url:Wo({envConfig:l,platformType:p})},n)},[l,n]);L(p=>{p==="d"&&r(W.Dashboard())&&(t.cliAction({question:o("general.view_changes"),action:o("general.platform.dashboard"),key:p}),i.length===1?de({title:"Dashboard",url:Se({envConfig:l,extension:i[0]})},n):e()),p==="e"&&r(W.Editor())&&(t.cliAction({question:o("general.view_changes"),action:o("general.platform.editor"),key:p}),d(W.Editor())),p==="s"&&l.site.viewUrl&&r(W.Site())&&(t.cliAction({question:o("general.view_changes"),action:o("general.platform.site"),key:p}),d(W.Site()))});let m=(0,k.useMemo)(()=>i.length===0?null:i.length===1?k.default.createElement(v,{skin:"secondary"}," - ",i[0].route):k.default.createElement(v,null,String.fromCodePoint(9660)),[i]);return k.default.createElement(c,{paddingLeft:2,flexDirection:"column"},r(W.Site())&&k.default.createElement(eo,{inputKey:"S",label:l.site.viewUrl?o("general.platform.site"):o("general.platform.unpublished_site"),disabled:!l.site.viewUrl}),r(W.Editor())&&k.default.createElement(eo,{inputKey:"E",label:o("general.platform.editor")}),r(W.Dashboard())&&k.default.createElement(eo,{inputKey:"D",label:o("general.platform.dashboard"),suffix:m}))};s();var Y=u(w(),1);var Te=u(F(),1);s();var $e=u(w(),1);var G=({onClose:e})=>{let{t:o}=x(),t=U();return L((n,r)=>{r.escape&&(t.cliAction({question:o("general.close_screen"),action:"close",key:"esc"}),e())}),$e.default.createElement(v,{skin:"secondary"},$e.default.createElement(C,{i18nKey:"general.close_screen",components:[$e.default.createElement(M,{value:"esc"})]}))};s();var ue=u(w(),1),be=u(F(),1);s();var se=u(w(),1);var Je=u(F(),1);var rr=({dashboardExtension:e,onClose:o,onSelect:t})=>{let{t:n}=x(),{writeLog:r}=H(),{getExtensions:i}=ne(),l=ie(),d=U(),m=(0,se.useCallback)(()=>(0,Je.match)(e,(0,Je.lookup)({DashboardPlugin:"dev_command.dashboard_page_plugin_screen.select_label",DashboardMenuPlugin:"dev_command.dashboard_menu_plugin_screen.select_label",DashboardPage:"dev_command.dashboard_pages_screen.select_label",DashboardModal:"dev_command.dashboard_modal_screen.select_label"})),[e]),p=(0,se.useCallback)(a=>{let h=Se({envConfig:l,extension:a});d.cliAction({question:n(m()),action:a.title,key:"enter"}),de({url:h,title:a.title},r),t?.(a)},[l,d,n,m,r,t]);return se.default.createElement(c,{flexDirection:"column",gap:1},se.default.createElement(c,{flexDirection:"column"},se.default.createElement(Ne,{label:n(m()),options:i(e).map(a=>({key:a.id,title:a.title,description:a.route,value:a})),onSubmit:({value:a})=>p(a)})),se.default.createElement(G,{onClose:o}))};var oo=(0,be.variant)({Arrow:(0,be.fields)(),Numeric:{}}),tr=({onClose:e,onSelect:o,initialSelectorType:t=oo.Numeric()})=>{let[n,r]=(0,ue.useState)(t);return ue.default.createElement(ue.default.Fragment,null,(0,be.match)(n,{Arrow:({dashboardExtension:i})=>ue.default.createElement(rr,{dashboardExtension:i,onSelect:o,onClose:e}),Numeric:()=>ue.default.createElement(Qe,{onViewMore:r,onSelect:o,onClose:e})}))};s();s();var q=u(w(),1);var z=u(F(),1),Pr=({itemNumber:e,children:o})=>{let t=`${e}`;return q.default.createElement(c,{flexDirection:"row",gap:1},q.default.createElement(v,null,q.default.createElement(Ie,null)," ",q.default.createElement(M,{value:t})," -"),o)},X=(0,z.variant)((0,z.onTerms)(({I:e,V:o})=>({Item:(0,z.fields)(),ViewMore:(0,z.payload)(o)})));function ae({startIndex:e,titleKey:o,items:t}){return q.default.createElement(c,{flexDirection:"column"},q.default.createElement(C,{i18nKey:o}),q.default.createElement(c,{paddingLeft:2,flexDirection:"column"},t.map((n,r)=>q.default.createElement(Pr,{key:e+r+1,itemNumber:e+r+1},(0,z.match)(n,{Item:({title:i,description:l})=>q.default.createElement(c,{flexDirection:"row",gap:1},q.default.createElement(v,null,i),l&&q.default.createElement(v,{skin:"secondary"},"(",l,")")),ViewMore:()=>q.default.createElement(C,{i18nKey:"general.numeric_viewer.show_more"})})))))}var nr=9,ir=3,kr=3,Br=3,Qe=({onViewMore:e,onSelect:o,onClose:t})=>{let{t:n}=x(),{getExtensions:r}=ne(),{writeLog:i}=H(),l=ie(),d=U(),m=(0,Y.useMemo)(()=>({dashboardPages:r("DashboardPage"),dashboardMenuPlugins:r("DashboardMenuPlugin"),dashboardPlugins:r("DashboardPlugin")}),[r]),p=m.dashboardPages.slice(0,m.dashboardPages.length>ir?ir-1:m.dashboardPages.length),a=m.dashboardPages.length>p.length?p.length+1:void 0,h=Math.max(p.length,a||0),g=Math.min(Br,Math.floor((nr-h)/2)),V=m.dashboardMenuPlugins.slice(0,m.dashboardMenuPlugins.length>g?g-1:m.dashboardMenuPlugins.length),b=m.dashboardMenuPlugins.length>V.length?V.length+h+1:void 0,B=Math.max(V.length+h,b||0),T=Math.min(kr,nr-B),D=m.dashboardPlugins.slice(0,m.dashboardPlugins.length>T?T-1:m.dashboardPlugins.length),R=m.dashboardPlugins.length>D.length?D.length+B+1:void 0,j=[...p.map(_=>X.Item({title:_.title,description:_.route,value:_})),...a?[X.ViewMore("DashboardPage")]:[],...V.map(_=>X.Item({title:_.title,description:_.route,value:_})),...b?[X.ViewMore("DashboardMenuPlugin")]:[],...D.map(_=>X.Item({title:_.title,description:_.route,value:_})),...R?[X.ViewMore("DashboardPlugin")]:[]],ee=_=>(0,Te.match)(_,(0,Te.lookup)({DashboardPage:"general.dashboard_pages_viewer.title",DashboardMenuPlugin:"general.dashboard_menu_plugins_viewer.title",DashboardPlugin:"general.dashboard_plugins_viewer.title",DashboardModal:""}));L(_=>{let Ee=Number(_);if(Ee>0&&Ee<=j.length){let xr=Ee-1,io=j.at(xr);io&&(0,Te.match)(io,{Item:Pe=>{d.cliAction({question:n(ee(Pe.value)),action:Pe.title,key:_}),K(Pe.value)},ViewMore:Pe=>{d.cliAction({question:n("general.numeric_viewer.show_more"),action:"view_more",key:_}),e(oo.Arrow({dashboardExtension:Pe.payload}))}})}});let K=(0,Y.useCallback)(async _=>{let Ee=Se({envConfig:l,extension:_});await de({url:Ee,title:_.title},i),o?.(_)},[o,i,l]),oe=j.slice(0,h),Me=j.slice(h,B),no=j.slice(B,j.length);return Y.default.createElement(c,{flexDirection:"column",gap:1},oe.length>0&&Y.default.createElement(ae,{startIndex:0,titleKey:"general.dashboard_pages_viewer.title",items:oe}),Me.length>0&&Y.default.createElement(ae,{startIndex:h,titleKey:"general.dashboard_menu_plugins_viewer.title",items:Me}),no.length>0&&Y.default.createElement(ae,{startIndex:B,titleKey:"general.dashboard_plugins_viewer.title",items:no}),t&&Y.default.createElement(G,{onClose:t}))};var ar=({onScreenChange:e})=>{let{t:o}=x(),{site:t}=Ce(),n=U(),{clientDevServerUrl:r,https:i,writeLog:l}=H(),{hasSinglePlatform:d}=He(),{hasExtensions:m,dashboardExtensions:p}=ne(),{backendComponents:a}=J(),h=async()=>{try{await Oe(r)}catch{l({type:"error",prefix:"app",msg:f.default.createElement($,{type:"error"},f.default.createElement(C,{i18nKey:"dev_command.dev_environment.https_url.failed_to_open",components:[f.default.createElement(Ve,{url:r})]}))})}};return L(async g=>{g==="c"&&(n.cliAction({question:o("dev_command.dev_site.change"),action:"change_site",key:g}),e(I.SiteSelector())),g==="a"&&i&&(n.cliAction({question:o("dev_command.dev_environment.https_url.open_info"),action:"dev_server",key:g}),await h())}),f.default.createElement(f.default.Fragment,null,f.default.createElement(c,{gap:1},f.default.createElement(v,{skin:"success"},f.default.createElement(go,null)),f.default.createElement(C,{i18nKey:"dev_command.dev_environment.started"})),f.default.createElement(c,{gap:1},f.default.createElement(fo,null),f.default.createElement(C,{i18nKey:"dev_command.dev_environment.url",components:[f.default.createElement(Ve,{url:r})]})),i&&f.default.createElement(c,{paddingLeft:2},f.default.createElement(v,{skin:"secondary"},f.default.createElement(C,{components:[f.default.createElement(M,{value:"A"})],i18nKey:"dev_command.dev_environment.https_url.open_info"}))),f.default.createElement(c,{gap:1},f.default.createElement(Ae,null),f.default.createElement(C,{i18nKey:"general.dev_site.current",values:{name:t.displayName}})),f.default.createElement(c,{paddingLeft:2},f.default.createElement(v,{skin:"secondary"},f.default.createElement(C,{i18nKey:"dev_command.dev_site.change",components:[f.default.createElement(M,{value:"C"})]}))),f.default.createElement(c,{paddingTop:1,paddingBottom:1,flexDirection:"column"},m()?f.default.createElement(f.default.Fragment,null,d(W.Dashboard())&&a.length===0&&p.some(g=>!(0,sr.isType)(g,"DashboardModal"))?f.default.createElement(Qe,{onViewMore:g=>e(I.DashboardScreen({selectorType:g}))}):f.default.createElement(f.default.Fragment,null,f.default.createElement(C,{i18nKey:"general.view_changes",components:[f.default.createElement(v,{skin:"secondary"})]}),f.default.createElement(or,{onMultipleDashboardExtensionSelection:()=>e(I.DashboardScreen()),onMultipleBackendComponentSelection:()=>e(I.BackendScreen())}))):f.default.createElement(C,{i18nKey:"general.platform.none",components:[f.default.createElement(Ve,{url:"https://wix.to/b7o4Ml0"})]})),f.default.createElement(er,{onViewServerLogsSelection:()=>e(I.DevEnvLogsViewerScreen())}))};s();var O=u(w(),1);s();var mr=({onScreenChange:e})=>{let{t:o}=x(),{model:t}=A(),n=xo(),{site:r,setSite:i}=Ce(),{reportError:l}=he(),[d,m]=(0,O.useState)(null),p=(0,O.useCallback)(h=>{l(h),m(h)},[l,m]),a=(0,O.useCallback)(async h=>{try{await i(h),e(I.Home())}catch(g){p(g)}},[i,e,p]);return O.default.createElement(c,{flexDirection:"column",gap:1},O.default.createElement(c,{gap:1},O.default.createElement(Ae,null),O.default.createElement(C,{i18nKey:"general.dev_site.current",values:{name:r.displayName}})),O.default.createElement(c,{flexDirection:"column"},O.default.createElement(No,{appId:t.config.appId,biLogger:n,onSubmit:a,onError:p}),d?O.default.createElement(Ue,{error:d,systemErrorOverride:O.default.createElement($,{type:"error"},o("dev_command.site_selector.error"))}):null),O.default.createElement(G,{onClose:()=>e(I.Home())}))};s();var ge=u(w(),1),De=u(F(),1);s();var fe=u(w(),1);var Le=u(F(),1);var Tr=9,pr=4,Lr=5,cr=({onViewMore:e,onSelect:o,onClose:t})=>{let{t:n}=x(),r=U(),{backendComponentsByType:i}=J(),l=i.ServicePlugin.slice(0,i.ServicePlugin.length>pr?pr-1:i.ServicePlugin.length),d=i.ServicePlugin.length>l.length?l.length+1:void 0,m=Math.max(l.length,d??0),p=Math.min(Lr,Tr-m),a=i.Event.slice(0,i.Event.length>p?p-1:i.Event.length),h=i.Event.length>a.length?a.length+m+1:void 0,g=[...l.map(D=>X.Item({title:D.componentName,value:D})),...d?[X.ViewMore("ServicePlugin")]:[],...a.map(D=>X.Item({title:D.title,value:D})),...h?[X.ViewMore("Event")]:[]],V=D=>(0,Le.match)(D,(0,Le.lookup)({Api:"general.backend_api_viewer.title",Event:"general.backend_events_viewer.title",ServicePlugin:"general.backend_plugin_viewer.title"}));L(D=>{let R=Number(D);if(R>0&&R<=g.length){let j=g.at(R-1);j&&(0,Le.match)(j,{Item:ee=>{r.cliAction({question:n(V(ee.value)),action:ee.title,key:D}),b(ee.value)},ViewMore:ee=>{r.cliAction({question:n("general.numeric_viewer.show_more"),action:"view_more",key:D}),e(ro.Arrow({backendComponentName:ee.payload}))}})}});let b=(0,fe.useCallback)(async D=>{o?.(D)},[o]),B=g.slice(0,m),T=g.slice(m,g.length);return fe.default.createElement(c,{flexDirection:"column",gap:1},B.length>0&&fe.default.createElement(ae,{startIndex:0,titleKey:"general.backend_plugin_viewer.title",items:B}),T.length>0&&fe.default.createElement(ae,{startIndex:m,titleKey:"general.backend_events_viewer.title",items:T}),t&&fe.default.createElement(G,{onClose:t}))};s();var Z=u(w(),1);var we=u(F(),1);var lr=({backendComponentName:e,onClose:o,onSelect:t})=>{let{t:n}=x(),r=U(),{backendComponentsByType:i}=J(),l=(0,Z.useCallback)(()=>(0,we.match)(e,(0,we.lookup)({Api:"dev_command.backend_apis_screen.select_label",Event:"dev_command.backend_events_screen.select_label",ServicePlugin:"dev_command.backend_plugins_screen.select_label"})),[e]),d=a=>(0,we.isType)(a,"ServicePlugin")?a.componentName:a.title,m=(0,Z.useCallback)(a=>{r.cliAction({question:n(l()),action:d(a),key:"enter"}),t?.(a)},[r,l,t,n]),p=(0,Z.useMemo)(()=>i[e].map((a,h)=>({key:h.toString(),title:d(a),value:a})),[i,e]);return Z.default.createElement(c,{flexDirection:"column",gap:1},Z.default.createElement(c,{flexDirection:"column"},Z.default.createElement(Ne,{label:n(l()),options:p,onSubmit:({value:a})=>m(a)})),Z.default.createElement(G,{onClose:o}))};var ro=(0,De.variant)({Arrow:(0,De.fields)(),Numeric:{}}),dr=({onClose:e,onSelect:o,initialSelectorType:t=ro.Numeric()})=>{let[n,r]=(0,ge.useState)(t);return ge.default.createElement(ge.default.Fragment,null,(0,De.match)(n,{Arrow:({backendComponentName:i})=>ge.default.createElement(lr,{backendComponentName:i,onSelect:o,onClose:e}),Numeric:()=>ge.default.createElement(cr,{onViewMore:r,onClose:e})}))};s();var N=u(w(),1);var ur=({onClose:e})=>{let{t:o}=x(),{logs:t,clearLogs:n}=H();return L(r=>{r==="c"&&n()}),N.default.createElement(c,{flexDirection:"column",justifyContent:"space-between",gap:1},N.default.createElement(ho,{height:12},t.map((r,i)=>N.default.createElement(xe,{key:`${r.timestamp.getTime()}-${i}`,...r}))),N.default.createElement(c,{flexDirection:"column"},N.default.createElement(c,{justifyContent:"space-between"},N.default.createElement(c,{gap:1},N.default.createElement(le,null),N.default.createElement(v,null,o("dev_command.dev_env_logs.listening_to_logs"))),N.default.createElement(v,{skin:"info"},o("dev_command.dev_env_logs.scroll_explain"))),N.default.createElement(c,{gap:1},N.default.createElement(G,{onClose:e}),N.default.createElement(v,null,"/"),N.default.createElement(v,{skin:"secondary"},N.default.createElement(C,{i18nKey:"logs.backend.clear",components:[N.default.createElement(M,{value:"C"})]})))))};var gr=()=>{let[e,o]=(0,me.useState)(I.Home());return(0,fr.match)(e,{Home:()=>me.default.createElement(ar,{onScreenChange:o}),SiteSelector:()=>me.default.createElement(mr,{onScreenChange:o}),DashboardScreen:({selectorType:t})=>me.default.createElement(tr,{initialSelectorType:t,onSelect:()=>o(I.Home()),onClose:()=>o(I.Home())}),BackendScreen:({selectorType:t})=>me.default.createElement(dr,{initialSelectorType:t,onSelect:()=>o(I.Home()),onClose:()=>o(I.Home())}),DevEnvLogsViewerScreen:()=>me.default.createElement(ur,{onClose:()=>o(I.Home())})})};s();var pe=u(w(),1);s();import{join as Mr}from"node:path";function vr(){return Mr(po(),bo)}async function to(){let e=vr(),t=await uo(e)?await lo(e):{};return wo.parse(t)}async function hr(e){let t={...await to(),...e},n=vr();await co(n,t)}var Cr=u(F(),1);var Sr=({children:e})=>{let o=Co(),{t}=x(),{backendComponents:n}=J(),[r,i]=(0,pe.useState)(),{status:l}=ve(async()=>{let d=await to();return d.tunneling&&i(!0),d},[]);return n.length===0||r?e:pe.default.createElement(pe.default.Fragment,null,(0,Cr.match)(l,{Success:()=>pe.default.createElement(vo,{label:t("dev_command.tunneling.confirm"),initialValue:!0,onSubmit:d=>{hr({tunneling:d}),i(d),d||o()}}),Error:()=>null,Loading:()=>null}),r===!1&&pe.default.createElement(v,{skin:"error"},pe.default.createElement(C,{i18nKey:"dev_command.tunneling.abort_dev"})))};s();var E=u(w(),1),ce=u(F(),1);import{setTimeout as Ar}from"node:timers/promises";var Ir=({children:e,newCustomElements:o})=>{let{model:t}=A(),{reportError:n}=he(),{createComponents:r}=qe(),i=Po({type:"backoffice"}),{site:l,tag:d}=ie(),[m,p]=(0,E.useState)(!1),a=So(async()=>{let h=o.map(B=>Mo(B));await r(t.config.appId,h,t.config.projectId);let{customElementsCreationDelay:g}=mo(),[{data:V}]=await Promise.all([i.post("/_serverless/app-market-json-web-token/json-web-token",{data:{data:JSON.stringify({appDefId:t.config.appId,version:"latest"})}}).catch(B=>{throw new so({code:ao.FailedToGenerateAppMarketQueryParam(),cause:B})}),Ar(g??5e3)]),b=new URL(`https://wix.com/editor/${l.id}`);b.searchParams.append("openPanel","appMarket"),b.searchParams.append("preferAppManager","true"),b.searchParams.append("appMarketParams",V),b.searchParams.append("apps-override",d),await Oe(Ko(b,W.Editor()).toString())},{onError:h=>{n(h)}});return L((0,E.useCallback)((h,g)=>{g.return&&a.execute()},[a]),{isActive:(0,ce.isType)(a.status,"NotRequested")}),L((0,E.useCallback)((h,g)=>{g.return&&p(!0)},[p]),{isActive:!m&&((0,ce.isType)(a.status,"Success")||(0,ce.isType)(a.status,"Error"))}),m?e:(0,ce.match)(a.status,{Loading:()=>E.default.createElement(le,null),Success:()=>E.default.createElement($,{type:"warning"},E.default.createElement(v,null,E.default.createElement(C,{i18nKey:"dev_command.new_custom_element.confirm_reinstall",components:[E.default.createElement(M,{value:"enter"})]}))),Error:()=>E.default.createElement($,{type:"error"},E.default.createElement(v,null,E.default.createElement(C,{i18nKey:"dev_command.new_custom_element.reinstall_error",components:[E.default.createElement(M,{value:"enter"})]}))),NotRequested:()=>E.default.createElement($,{type:"warning"},E.default.createElement(v,null,E.default.createElement(C,{i18nKey:"dev_command.new_custom_element.warning",components:[E.default.createElement(M,{value:"enter"})]})))})},yr=({children:e})=>{let{getAppSnapshot:o}=We(),{model:t}=A(),{t:n}=x(),r=ve(async()=>{let i=t.components.filter(p=>(0,ce.isType)(p,Eo.CustomElement));if(!i.length)return[];let{components:l}=await o({appId:t.config.appId}),d=l.filter(p=>p.compType===Do.CUSTOM_ELEMENT_WIDGET);return i.filter(p=>!d.find(a=>a.compId===p.id))},[]);return(0,ce.match)(r.status,{Error:()=>null,Loading:()=>E.default.createElement(le,{text:n("dev_command.custom_elements_migration.loading")}),Success:({result:i})=>i.length?E.default.createElement(Ir,{newCustomElements:i},e):e})};var Nr=({https:e})=>_e.default.createElement(Vo,null,_e.default.createElement(Sr,null,_e.default.createElement(Re,{https:e},_e.default.createElement(yr,null,_e.default.createElement(gr,null)))));export{Nr as DevCommand,Re as DevEnvironmentProvider};
|
|
4
|
+
//# sourceMappingURL=DevCommand-B7WYY2UQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/DevCommand/index.ts","../src/components/DevCommand/DevCommand.tsx","../src/components/DevCommand/DevEnvironment.tsx","../src/components/DevCommand/useArmUpdater.ts","../src/components/DevCommand/useDevServer.ts","../src/vite/custom-logger.ts","../src/components/DevCommand/devEnvLogs/useDevEnvLogs.tsx","../src/files/dev.log.ts","../src/components/DevCommand/devEnvLogs/DevEnvLogLine.tsx","../src/components/DevCommand/useSiteOverrideUpdater.ts","../src/components/DevCommand/DevCommandScreens.tsx","../src/components/DevCommand/HomeScreen.tsx","../src/components/DevCommand/screen-state.ts","../src/components/DevCommand/DevEnvLogsViewer.tsx","../src/components/Platform/PlatformSelector.tsx","../src/components/DevCommand/DashboardNumericViewer.tsx","../src/components/CloseScreen/CloseScreen.tsx","../src/components/DevCommand/DashboardScreen.tsx","../src/components/DevCommand/DashboardArrowViewer.tsx","../src/components/NumericViewer/index.ts","../src/components/NumericViewer/NumericViewer.tsx","../src/components/DevCommand/SiteSelectorScreen.tsx","../src/components/CloseScreen/index.tsx","../src/components/DevCommand/BackendScreen.tsx","../src/components/DevCommand/BackendNumericViewer.tsx","../src/components/DevCommand/BackendArrowViewer.tsx","../src/components/DevCommand/DevEnvLogsViewerScreen.tsx","../src/components/DevCommand/TunnelingConsent.tsx","../../cli-user-config/src/user-config.ts","../src/components/DevCommand/CustomElementsMigration.tsx"],"sourcesContent":["export { DevCommand } from './DevCommand.js';\nexport { DevEnvironmentProvider } from './DevEnvironment.js';\n","import React, { type FC } from 'react';\nimport { SiteIdProvider } from '../../site-id/SiteIdProvider.js';\nimport { DevEnvironmentProvider } from './DevEnvironment.js';\nimport { DevCommandScreens } from './DevCommandScreens.js';\nimport { TunnelingConsent } from './TunnelingConsent.js';\nimport { CustomElementsMigration } from './CustomElementsMigration.js';\n\nexport const DevCommand: FC<{ https: boolean }> = ({ https }) => {\n return (\n <SiteIdProvider>\n <TunnelingConsent>\n <DevEnvironmentProvider https={https}>\n <CustomElementsMigration>\n <DevCommandScreens />\n </CustomElementsMigration>\n </DevEnvironmentProvider>\n </TunnelingConsent>\n </SiteIdProvider>\n );\n};\n","import React, {\n type FC,\n type ReactNode,\n createContext,\n useContext,\n} from 'react';\nimport { match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { Spinner, useAsync } from '@wix/cli-ui-kit';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { useTunnel } from '@wix/cli-tunnel';\nimport { useProjectModel } from '../../model.js';\nimport { useArmUpdater, type BackendUrls } from './useArmUpdater.js';\nimport { useClientDevServer, useBackendDevServer } from './useDevServer.js';\nimport {\n useDevEnvLogs,\n type DevEnvLog,\n type WriteLogFn,\n} from './devEnvLogs/useDevEnvLogs.js';\nimport { ArmTagProvider } from '../../context/armTag.js';\nimport { useSiteOverrideUpdater } from './useSiteOverrideUpdater.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport { SiteOverrideProvider } from '../../context/siteOverride.js';\n\ntype DevEnvironment = {\n https: boolean;\n clientDevServerUrl: string;\n backendDevServerUrl?: string;\n logs: DevEnvLog[];\n clearLogs: () => void;\n writeLog: WriteLogFn;\n};\n\nconst DevEnvironmentContext = createContext<DevEnvironment | null>(null);\n\nexport const DevEnvironmentProvider: FC<{\n https: boolean;\n children: ReactNode;\n}> = ({ https, children }) => {\n const { t } = useTranslation();\n const { reportError } = useErrorReporter();\n const { backendComponents, backendComponentsByType } = useBackendComponents();\n const createClientDevServer = useClientDevServer({ https });\n const createBackendDevServer = useBackendDevServer({ https });\n const startTunnel = useTunnel();\n const createArmUpdater = useArmUpdater();\n const createSiteOverrideUpdater = useSiteOverrideUpdater();\n const { logs, writeLog, clearLogs } = useDevEnvLogs();\n const { watcher: projectModelWatcher } = useProjectModel();\n\n const { status } = useAsync(async () => {\n let backendDevServerUrl: BackendUrls | undefined = undefined;\n\n if (backendComponents.length > 0) {\n backendDevServerUrl = await createBackendDevServer({\n projectModelWatcher,\n onLog(type, msg) {\n writeLog({ type, msg, prefix: 'backend' });\n },\n }).then(async ({ devServerUrl }) => {\n let tunnelUrl: string | undefined = undefined;\n if (backendComponentsByType.Event.length > 0) {\n const { url } = await startTunnel(Number(new URL(devServerUrl).port));\n tunnelUrl = url;\n }\n return { localUrl: devServerUrl, tunnelUrl };\n });\n }\n\n const { devServerUrl: clientDevServerUrl, devServer: clientDevServer } =\n await createClientDevServer({\n baseBackendUrl: backendDevServerUrl?.localUrl,\n projectModelWatcher,\n onLog(type, msg) {\n writeLog({ type, msg, prefix: 'vite' });\n },\n });\n\n const armTag = await createArmUpdater({\n backendServerUrl: backendDevServerUrl,\n devServerUrl: clientDevServerUrl,\n projectModelWatcher,\n onChange(changeType) {\n match(changeType, {\n 'change-received': () => {\n writeLog({ type: 'info', msg: t('dev_command.config_change') });\n },\n 'model-did-not-change': () => {\n writeLog({\n type: 'info',\n msg: t('dev_command.config_didnt_update'),\n });\n },\n 'model-updated': () => {\n clientDevServer.ws.send({ type: 'full-reload' });\n writeLog({ type: 'info', msg: t('dev_command.config_update') });\n },\n });\n },\n onError(error) {\n reportError(error);\n writeLog({ type: 'error', error });\n writeLog({ type: 'info', msg: t('dev_command.config_didnt_update') });\n },\n });\n\n const siteOverrideId = await createSiteOverrideUpdater({\n projectModelWatcher,\n });\n\n return {\n clientDevServerUrl,\n armTag,\n siteOverrideId,\n https,\n };\n }, []);\n\n return match(status, {\n Error: () => null,\n Loading: () => <Spinner text={t('dev_command.dev_environment.loading')} />,\n Success: ({\n result: { clientDevServerUrl, https, armTag, siteOverrideId },\n }) => (\n <DevEnvironmentContext.Provider\n value={{\n clientDevServerUrl,\n https,\n logs,\n writeLog,\n clearLogs,\n }}\n >\n <SiteOverrideProvider siteOverrideId={siteOverrideId}>\n <ArmTagProvider armTag={armTag}>{children}</ArmTagProvider>\n </SiteOverrideProvider>\n </DevEnvironmentContext.Provider>\n ),\n });\n};\n\nexport function useDevEnvironment(): DevEnvironment {\n const context = useContext(DevEnvironmentContext);\n if (context === null) {\n throw new Error(\n 'useDevEnvironment() cannot be used without an <DevEnvironmentProvider>'\n );\n }\n return context;\n}\n","import { useCallback } from 'react';\nimport { match } from 'variant';\nimport { deepEqual } from 'fast-equals';\nimport { updateAppManifestWithBaseUrl } from '@wix/cli-app-manifest';\nimport { useARMClient } from '@wix/arm-client';\nimport { useDebugLog } from '@wix/cli-debug-log';\nimport { createAppManifest } from '../../app-manifest/create.js';\nimport { getComponentSourceBuilder } from '../../app-manifest/component-source.js';\nimport type {\n ChangeType,\n ProjectModelWatcher,\n} from '../../app-manifest/project-model-watcher.js';\nimport { readAppConfig, saveAppConfig } from '../../files/app.config.js';\nimport { useProjectModel, type ProjectModel } from '../../model.js';\n\nexport type BackendUrls = { tunnelUrl?: string; localUrl: string };\n\nconst createAppManifestWithBaseUrl = async (\n model: ProjectModel,\n clientDevServerUrl: string,\n backendServerUrl?: BackendUrls\n) => {\n const manifest = await createAppManifest({\n appId: model.config.appId,\n components: model.components,\n componentSourceBuilder: getComponentSourceBuilder({\n model,\n clientDevServerUrl,\n backendDevServerUrl: backendServerUrl?.localUrl,\n }),\n });\n\n return updateAppManifestWithBaseUrl(\n manifest,\n clientDevServerUrl,\n backendServerUrl?.tunnelUrl\n );\n};\n\ninterface CreateOptions {\n devServerUrl: string;\n backendServerUrl?: BackendUrls;\n projectModelWatcher: ProjectModelWatcher;\n onChange: (changeType: ChangeType) => void;\n onError: (e: unknown) => void;\n}\n\nexport function useArmUpdater() {\n const { model } = useProjectModel();\n const writeDebugLog = useDebugLog();\n const { createAppRelease, updateAppRelease } = useARMClient();\n\n return useCallback(\n async ({\n backendServerUrl,\n devServerUrl,\n projectModelWatcher,\n onChange,\n onError,\n }: CreateOptions) => {\n const { projectId } = model.config;\n\n const appManifest = await createAppManifestWithBaseUrl(\n model,\n devServerUrl,\n backendServerUrl\n );\n\n const appConfig = await readAppConfig(model.projectFolder, writeDebugLog);\n\n const createOrUpdateAppRelease = async (tag?: string) => {\n if (tag) {\n const updateState = await updateAppRelease(appManifest, tag);\n return match(updateState, {\n TagUpdated: () => tag,\n TagNotFound: ({ cause }) => {\n writeDebugLog(cause);\n return createAppRelease(appManifest, projectId);\n },\n });\n }\n return createAppRelease(appManifest, projectId);\n };\n\n const armTag = await createOrUpdateAppRelease(appConfig?.devArmTag);\n\n if (armTag !== appConfig?.devArmTag) {\n await saveAppConfig(model.projectFolder, { devArmTag: armTag }).catch(\n (error) => writeDebugLog(error)\n );\n }\n\n projectModelWatcher\n .onChange(async (newModel, changeType) => {\n try {\n if (changeType === 'model-updated') {\n if (newModel.components.length === 0) {\n return;\n }\n\n const updatedAppManifest = await createAppManifestWithBaseUrl(\n newModel,\n devServerUrl,\n backendServerUrl\n );\n\n if (!deepEqual(appManifest, updatedAppManifest)) {\n await updateAppRelease(updatedAppManifest, armTag);\n }\n }\n onChange(changeType);\n } catch (e) {\n onError(e);\n }\n })\n .onError(onError);\n\n return armTag;\n },\n [createAppRelease, model, updateAppRelease, writeDebugLog]\n );\n}\n","import { useRef, useCallback, useEffect } from 'react';\nimport type { InlineConfig } from 'vite';\nimport { createServer, type ViteDevServer } from 'vite';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport type { ClientViteConfigOptions } from '../../vite/index.js';\nimport { getClientViteConfig, getBackendViteConfig } from '../../vite/index.js';\nimport { getViteServerUrl } from '../../vite/vite-server-url.js';\nimport {\n createCustomLogger,\n type CustomLoggerOptions,\n} from '../../vite/custom-logger.js';\nimport type { ProjectModelWatcher } from '../../app-manifest/project-model-watcher.js';\nimport { useProjectModel } from '../../model.js';\nimport { ConfigType } from '../../vite/vite-config-options.js';\n\ninterface Options {\n projectModelWatcher: ProjectModelWatcher;\n onLog: CustomLoggerOptions['onLog'];\n}\n\nexport function useViteDevServer<T>({\n createConfig,\n}: {\n createConfig: (options: T) => Promise<InlineConfig>;\n}) {\n const devServerRef = useRef<ViteDevServer>();\n\n useEffect(() => {\n return () => {\n devServerRef.current?.close();\n };\n }, []);\n\n return useCallback(\n async (options: T) => {\n const config = await createConfig(options);\n const devServer = await createServer(config);\n\n devServerRef.current = devServer;\n\n await devServer.listen();\n\n return { devServerUrl: getViteServerUrl(devServer), devServer };\n },\n [createConfig]\n );\n}\n\nexport function useClientDevServer({ https }: { https: boolean }) {\n const { model } = useProjectModel();\n\n const createDevServer = useViteDevServer<Options & ClientViteConfigOptions>({\n createConfig: ({ onLog, projectModelWatcher, baseBackendUrl }) => {\n return getClientViteConfig(\n model,\n {\n type: ConfigType.dev,\n https,\n projectModelWatcher,\n customLogger: createCustomLogger({ onLog }),\n },\n { baseBackendUrl }\n );\n },\n });\n\n return createDevServer;\n}\n\nexport function useBackendDevServer({ https }: { https: boolean }) {\n const { model } = useProjectModel();\n const { getAppSecret } = useDevCenterClient();\n\n const createDevServer = useViteDevServer<Options>({\n createConfig: async ({ onLog, projectModelWatcher }) => {\n const appSecret = await getAppSecret({\n appId: model.config.appId,\n });\n\n return getBackendViteConfig(\n model,\n {\n type: ConfigType.dev,\n https,\n projectModelWatcher,\n customLogger: createCustomLogger({ onLog }),\n },\n appSecret\n );\n },\n });\n\n return createDevServer;\n}\n","import type { Logger, Rollup } from 'vite';\n\nexport type LogType = 'error' | 'warning' | 'info';\n\nexport interface CustomLoggerOptions {\n onLog: (type: LogType, msg: string) => void;\n}\n\nexport function createCustomLogger({ onLog }: CustomLoggerOptions): Logger {\n const loggedErrors = new WeakSet<Error | Rollup.RollupError>();\n const warnedMessages = new Set<string>();\n\n const logger: Logger = {\n hasWarned: false,\n info(msg) {\n onLog('info', msg);\n },\n warn(msg) {\n logger.hasWarned = true;\n onLog('warning', msg);\n },\n warnOnce(msg) {\n if (warnedMessages.has(msg)) return;\n logger.hasWarned = true;\n onLog('warning', msg);\n warnedMessages.add(msg);\n },\n error(msg, opts) {\n logger.hasWarned = true;\n onLog('error', msg);\n if (opts?.error) {\n loggedErrors.add(opts.error);\n }\n },\n clearScreen() {},\n hasErrorLogged(error) {\n return loggedErrors.has(error);\n },\n };\n\n return logger;\n}\n","import React, {\n useCallback,\n useEffect,\n useState,\n useMemo,\n type ReactNode,\n type FC,\n} from 'react';\nimport { DEV_LOG_PATH } from '@wix/cli-app-definitions';\nimport { Trans } from '@wix/cli-i18n';\nimport { createRendererToString, Alert, Box, Text } from '@wix/cli-ui-kit';\nimport { DevLogStream } from '../../../files/dev.log.js';\nimport { useProjectModel } from '../../../model.js';\nimport type { LogType } from '../../../vite/custom-logger.js';\nimport { DevEnvLogLine } from './DevEnvLogLine.js';\n\ntype GenericLog = (\n | {\n type: LogType;\n msg: ReactNode;\n error?: never;\n }\n | {\n type: 'error';\n msg?: never;\n error: unknown;\n }\n) & { prefix?: LogPrefix };\n\ntype LogPrefix = 'app' | 'vite' | 'backend';\n\nexport type WriteLogFn = (log: GenericLog) => void;\n\nexport type DevEnvLog = GenericLog & {\n timestamp: Date;\n};\n\nconst ErrorMsg: FC = () => (\n <Box flexDirection=\"column\">\n <Alert type=\"error\">\n <Trans\n i18nKey=\"general.write_dev_log_failure.message\"\n components={[<Text bold />]}\n values={{ path: DEV_LOG_PATH }}\n />\n </Alert>\n <Box paddingTop={1}>\n <Alert type=\"insight\">\n <Trans i18nKey=\"general.write_dev_log_failure.hint\" />\n </Alert>\n </Box>\n </Box>\n);\n\nfunction isMessageFiltered(message: string) {\n if (/Port \\d{1,5} is in use, trying another one/.test(message)) {\n return true;\n }\n\n return false;\n}\n\nexport function useDevEnvLogs() {\n const { model } = useProjectModel();\n const [logs, setLogs] = useState<DevEnvLog[]>([]);\n\n const insertLog = useCallback((genericLog: GenericLog) => {\n const log = { ...genericLog, timestamp: new Date() };\n\n setLogs((logs) => {\n const newLogs = [...logs, log];\n return newLogs;\n });\n\n return log;\n }, []);\n\n const { renderer, stream } = useMemo(() => {\n return {\n renderer: createRendererToString(),\n stream: new DevLogStream(model.projectFolder, {\n onError() {\n insertLog({ type: 'error', msg: <ErrorMsg /> });\n },\n }),\n };\n }, [insertLog, model.projectFolder]);\n\n const writeLog = useCallback<WriteLogFn>(\n (genericLog) => {\n if (genericLog.msg && isMessageFiltered(genericLog.msg.toString())) {\n return;\n }\n\n const log = insertLog(genericLog);\n const content = renderer.render(<DevEnvLogLine {...log} />);\n\n stream.write(content);\n },\n [insertLog, renderer, stream]\n );\n\n const clearLogs = useCallback(() => {\n setLogs([]);\n }, []);\n\n useEffect(() => {\n return () => {\n renderer.unmount();\n stream.close();\n };\n }, [renderer, stream]);\n\n return { logs, writeLog, clearLogs };\n}\n","import { EOL } from 'node:os';\nimport { createWriteStream, type WriteStream } from 'node:fs';\nimport { getDevLogPath } from '@wix/cli-app-definitions';\n\nexport class DevLogStream {\n private drain = false;\n private readonly stream: WriteStream;\n\n constructor(\n projectFolder: string,\n private readonly opts: { onError: (err: Error) => void }\n ) {\n this.stream = createWriteStream(getDevLogPath(projectFolder), {\n flags: 'w',\n });\n\n this.stream.on('error', this.opts.onError);\n }\n\n write = (content: string) => {\n if (this.drain) {\n this.stream.once('drain', () => {\n this.drain = false;\n this.write(content);\n });\n return;\n }\n\n const written = this.stream.write(content.concat(EOL), (err) => {\n if (err) {\n this.opts.onError(err);\n }\n });\n if (!written) {\n this.drain = true;\n this.stream.once('drain', () => {\n this.drain = false;\n });\n }\n };\n\n close = () => {\n this.stream.close();\n };\n}\n","import React, { type FC } from 'react';\nimport { Box, Text } from '@wix/cli-ui-kit';\nimport { ErrorViewer } from '@wix/cli-error-reporting';\nimport type { DevEnvLog } from './useDevEnvLogs.js';\n\nexport const DevEnvLogLine: FC<DevEnvLog> = ({\n type,\n msg,\n error,\n prefix = 'app',\n timestamp,\n}) => {\n return (\n <Box columnGap={1}>\n <Box flexShrink={0}>\n <Text skin=\"secondary\">{timestamp.toLocaleTimeString()}</Text>\n </Box>\n <Box flexShrink={0}>\n <Text skin={type} bold>\n [{prefix}]\n </Text>\n </Box>\n <Box>\n {type === 'error' && error ? (\n <ErrorViewer error={error} />\n ) : typeof msg === 'string' ? (\n <Text>{msg}</Text>\n ) : (\n msg\n )}\n </Box>\n </Box>\n );\n};\n","import { useCallback } from 'react';\nimport { deepEqual } from 'fast-equals';\nimport { useSiteOverrideClient } from '@wix/site-override-client';\nimport { useDebugLog } from '@wix/cli-debug-log';\nimport type { ProjectModelWatcher } from '../../app-manifest/project-model-watcher.js';\nimport { useProjectModel } from '../../model.js';\nimport { createSiteOverrides } from '../../site-override/createSiteOverrides.js';\nimport { useSiteId } from '../../site-id/useSiteId.js';\nimport { readAppConfig, saveAppConfig } from '../../files/app.config.js';\n\nexport function useSiteOverrideUpdater() {\n const { model } = useProjectModel();\n const { site } = useSiteId();\n const writeDebugLog = useDebugLog();\n const { createOverride } = useSiteOverrideClient();\n\n return useCallback(\n async ({\n projectModelWatcher,\n }: {\n projectModelWatcher: ProjectModelWatcher;\n }) => {\n const { appId } = model.config;\n const appConfig = await readAppConfig(model.projectFolder, writeDebugLog);\n let overrides = createSiteOverrides(model) ?? {};\n\n const { id: siteOverrideId } = await createOverride({\n appId,\n siteId: site.id,\n overrides,\n siteOverrideId: appConfig?.devSiteOverrideId,\n });\n\n projectModelWatcher.onChange(async (newModel, changeType) => {\n if (changeType === 'model-updated') {\n const updatedOverrides = createSiteOverrides(newModel) ?? {};\n\n if (!deepEqual(overrides, updatedOverrides)) {\n await createOverride({\n appId,\n siteId: site.id,\n overrides: updatedOverrides,\n siteOverrideId,\n });\n overrides = updatedOverrides;\n }\n }\n });\n\n if (siteOverrideId !== appConfig?.devSiteOverrideId) {\n await saveAppConfig(model.projectFolder, {\n devSiteOverrideId: siteOverrideId,\n }).catch((error) => writeDebugLog(error));\n }\n\n return siteOverrideId;\n },\n [createOverride, model, site.id, writeDebugLog]\n );\n}\n","import React, { type FC, useState } from 'react';\nimport { match } from 'variant';\nimport { HomeScreen } from './HomeScreen.js';\nimport { SiteSelectorScreen } from './SiteSelectorScreen.js';\nimport { ScreenState } from './screen-state.js';\nimport { DashboardScreen } from './DashboardScreen.js';\nimport { BackendScreen } from './BackendScreen.js';\nimport { DevEnvLogsViewerScreen } from './DevEnvLogsViewerScreen.js';\n\nexport const DevCommandScreens: FC = () => {\n const [screen, setScreen] = useState<ScreenState>(ScreenState.Home());\n\n return match(screen, {\n Home: () => <HomeScreen onScreenChange={setScreen} />,\n SiteSelector: () => <SiteSelectorScreen onScreenChange={setScreen} />,\n DashboardScreen: ({ selectorType }) => (\n <DashboardScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n BackendScreen: ({ selectorType }) => (\n <BackendScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n DevEnvLogsViewerScreen: () => (\n <DevEnvLogsViewerScreen onClose={() => setScreen(ScreenState.Home())} />\n ),\n });\n};\n","import React, { type FC } from 'react';\nimport {\n Key,\n Box,\n Text,\n SuccessIcon,\n InfoIcon,\n PointerIcon,\n Link,\n useInput,\n Alert,\n} from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { openBrowser } from '@wix/user-browser';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { isType } from 'variant';\nimport { useSiteId } from '../../site-id/index.js';\nimport { ScreenState } from './screen-state.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport { DevEnvLogsViewer } from './DevEnvLogsViewer.js';\nimport { PlatformSelector } from '../Platform/PlatformSelector.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport { useWixCliAppBi } from '../../bi';\nimport { usePlatform } from '../Platform/usePlatform.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const HomeScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { site } = useSiteId();\n const bi = useWixCliAppBi();\n const { clientDevServerUrl, https, writeLog } = useDevEnvironment();\n const { hasSinglePlatform } = usePlatform();\n const { hasExtensions, dashboardExtensions } = useExtensions();\n const { backendComponents } = useBackendComponents();\n\n const openDevServerInBrowser = async () => {\n try {\n await openBrowser(clientDevServerUrl);\n } catch (error) {\n writeLog({\n type: 'error',\n prefix: 'app',\n msg: (\n <Alert type=\"error\">\n <Trans\n i18nKey=\"dev_command.dev_environment.https_url.failed_to_open\"\n components={[<Link url={clientDevServerUrl} />]}\n />\n </Alert>\n ),\n });\n }\n };\n\n useInput(async (input) => {\n if (input === 'c') {\n bi.cliAction({\n question: t('dev_command.dev_site.change'),\n action: 'change_site',\n key: input,\n });\n onScreenChange(ScreenState.SiteSelector());\n }\n if (input === 'a' && https) {\n bi.cliAction({\n question: t('dev_command.dev_environment.https_url.open_info'),\n action: 'dev_server',\n key: input,\n });\n await openDevServerInBrowser();\n }\n });\n\n return (\n <>\n <Box gap={1}>\n <Text skin=\"success\">\n <SuccessIcon />\n </Text>\n <Trans i18nKey=\"dev_command.dev_environment.started\" />\n </Box>\n <Box gap={1}>\n <InfoIcon />\n <Trans\n i18nKey=\"dev_command.dev_environment.url\"\n components={[<Link url={clientDevServerUrl} />]}\n />\n </Box>\n {https && (\n <Box paddingLeft={2}>\n <Text skin=\"secondary\">\n <Trans\n components={[<Key value=\"A\" />]}\n i18nKey=\"dev_command.dev_environment.https_url.open_info\"\n />\n </Text>\n </Box>\n )}\n <Box gap={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box paddingLeft={2}>\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"dev_command.dev_site.change\"\n components={[<Key value=\"C\" />]}\n />\n </Text>\n </Box>\n <Box paddingTop={1} paddingBottom={1} flexDirection=\"column\">\n {!hasExtensions() ? (\n <Trans\n i18nKey=\"general.platform.none\"\n // Original link is:\n // https://dev.wix.com/docs/build-apps/developer-tools/cli/get-started/about-the-wix-cli-for-apps\n components={[<Link url=\"https://wix.to/b7o4Ml0\" />]}\n />\n ) : (\n <>\n {hasSinglePlatform(PlatformType.Dashboard()) &&\n backendComponents.length === 0 &&\n dashboardExtensions.some(\n (dashboardExtension) =>\n !isType(dashboardExtension, 'DashboardModal')\n ) ? (\n <DashboardNumericViewer\n onViewMore={(selectorType) =>\n onScreenChange(\n ScreenState.DashboardScreen({\n selectorType,\n })\n )\n }\n />\n ) : (\n <>\n <Trans\n i18nKey=\"general.view_changes\"\n components={[<Text skin=\"secondary\" />]}\n />\n <PlatformSelector\n onMultipleDashboardExtensionSelection={() =>\n onScreenChange(ScreenState.DashboardScreen())\n }\n onMultipleBackendComponentSelection={() =>\n onScreenChange(ScreenState.BackendScreen())\n }\n />\n </>\n )}\n </>\n )}\n </Box>\n <DevEnvLogsViewer\n onViewServerLogsSelection={() =>\n onScreenChange(ScreenState.DevEnvLogsViewerScreen())\n }\n />\n </>\n );\n};\n","import { fields, variant, type VariantOf } from 'variant';\nimport type { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { BackendScreenSelector } from './BackendScreen.js';\n\nexport const ScreenState = variant({\n Home: {},\n SiteSelector: {},\n DashboardScreen: fields<{ selectorType?: DashboardScreenSelector }>(),\n BackendScreen: fields<{ selectorType?: BackendScreenSelector }>(),\n DevEnvLogsViewerScreen: {},\n});\n\nexport type ScreenState = VariantOf<typeof ScreenState>;\n","import React, { useMemo, type FC } from 'react';\nimport { Text, Box, Key, useInput } from '@wix/cli-ui-kit';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { DEV_LOG_PATH } from '@wix/cli-app-definitions';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport { DevEnvLogLine } from './devEnvLogs/DevEnvLogLine.js';\n\ntype DevEnvLogsViewerProps = {\n onViewServerLogsSelection: () => void;\n};\n\nexport const DevEnvLogsViewer: FC<DevEnvLogsViewerProps> = ({\n onViewServerLogsSelection,\n}) => {\n const { t } = useTranslation();\n const { logs } = useDevEnvironment();\n\n const limitedLogs = useMemo(() => logs.slice(-5), [logs]);\n\n useInput(async (input) => {\n if (input === 'l') {\n onViewServerLogsSelection();\n }\n });\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <Trans\n i18nKey=\"dev_command.dev_env_logs.title\"\n values={{ path: DEV_LOG_PATH }}\n />\n {!limitedLogs.length && (\n <Text skin=\"secondary\">{t('dev_command.dev_env_logs.empty')}</Text>\n )}\n {limitedLogs.map((log, index) => (\n <DevEnvLogLine key={index} {...log} />\n ))}\n </Box>\n <Trans\n i18nKey=\"dev_command.dev_env_backend_logs.title\"\n components={[<Key value=\"L\" />]}\n values={{ path: DEV_LOG_PATH }}\n />\n </Box>\n );\n};\n","import React, { useCallback, type FC, useMemo } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { PointerSmallIcon, Key, useInput, Text, Box } from '@wix/cli-ui-kit';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport {\n openPage,\n resolveDashboardExtensionUrl,\n resolvePlatformUrl,\n useEnvConfig,\n} from '../extensions/utils.js';\nimport { useDevEnvironment } from '../DevCommand/DevEnvironment.js';\nimport { useWixCliAppBi } from '../../bi';\nimport { usePlatform } from './usePlatform.js';\n\ntype PlatformOptionProps = {\n inputKey: string;\n label: string;\n suffix?: React.ReactNode;\n disabled?: boolean;\n};\n\nconst PlatformOption: FC<PlatformOptionProps> = ({\n label,\n inputKey,\n suffix,\n disabled,\n}) => {\n const getTextSkin = () => (disabled ? 'secondary' : 'standard');\n\n return (\n <Box>\n <Box marginRight={1}>\n <Box marginRight={1}>\n <Text skin={getTextSkin()}>\n <PointerSmallIcon /> <Key value={inputKey} /> -\n </Text>\n </Box>\n <Box gap={1}>\n <Text skin={getTextSkin()}>{label}</Text>\n </Box>\n </Box>\n <Text skin={getTextSkin()}>{suffix}</Text>\n </Box>\n );\n};\n\ninterface PlatformSelector {\n onMultipleDashboardExtensionSelection: () => void;\n onMultipleBackendComponentSelection: () => void;\n}\n\nexport const PlatformSelector: FC<PlatformSelector> = ({\n onMultipleDashboardExtensionSelection,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { writeLog } = useDevEnvironment();\n const { isPlatformExists } = usePlatform();\n const { dashboardExtensions } = useExtensions();\n const envConfig = useEnvConfig();\n\n const openPlatform = useCallback(\n (platformType: PlatformType) => {\n openPage(\n {\n title: platformType.type,\n url: resolvePlatformUrl({\n envConfig,\n platformType,\n }),\n },\n writeLog\n );\n },\n [envConfig, writeLog]\n );\n\n useInput((input) => {\n if (input === 'd' && isPlatformExists(PlatformType.Dashboard())) {\n bi.cliAction({\n question: t('general.view_changes'),\n action: t('general.platform.dashboard'),\n key: input,\n });\n if (dashboardExtensions.length === 1) {\n openPage(\n {\n title: 'Dashboard',\n url: resolveDashboardExtensionUrl({\n envConfig,\n extension: dashboardExtensions[0],\n }),\n },\n writeLog\n );\n } else {\n onMultipleDashboardExtensionSelection();\n }\n }\n if (input === 'e' && isPlatformExists(PlatformType.Editor())) {\n bi.cliAction({\n question: t('general.view_changes'),\n action: t('general.platform.editor'),\n key: input,\n });\n openPlatform(PlatformType.Editor());\n }\n if (\n input === 's' &&\n envConfig.site.viewUrl &&\n isPlatformExists(PlatformType.Site())\n ) {\n bi.cliAction({\n question: t('general.view_changes'),\n action: t('general.platform.site'),\n key: input,\n });\n openPlatform(PlatformType.Site());\n }\n // TODO: Uncomment once https://jira.wixpress.com/browse/FEDINF-12234 is done\n // if (input === 'b' && model.backendComponents.length > 0) {\n // bi.cliAction({\n // question: t('general.view_changes'),\n // action: t('general.platform.backend'),\n // key: input,\n // });\n // onMultipleBackendComponentSelection();\n // }\n });\n\n const dashboardOptionSuffix = useMemo(() => {\n if (dashboardExtensions.length === 0) {\n return null;\n }\n if (dashboardExtensions.length === 1) {\n return <Text skin=\"secondary\"> - {dashboardExtensions[0].route}</Text>;\n }\n return <Text>{String.fromCodePoint(0x25bc)}</Text>; // ▼\n }, [dashboardExtensions]);\n\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n {isPlatformExists(PlatformType.Site()) && (\n <PlatformOption\n inputKey=\"S\"\n label={\n envConfig.site.viewUrl\n ? t('general.platform.site')\n : t('general.platform.unpublished_site')\n }\n disabled={!envConfig.site.viewUrl}\n />\n )}\n {isPlatformExists(PlatformType.Editor()) && (\n <PlatformOption inputKey=\"E\" label={t('general.platform.editor')} />\n )}\n {isPlatformExists(PlatformType.Dashboard()) && (\n <PlatformOption\n inputKey=\"D\"\n label={t('general.platform.dashboard')}\n suffix={dashboardOptionSuffix}\n />\n )}\n {/*\n // TODO: Uncomment once https://jira.wixpress.com/browse/FEDINF-12234 is done\n {(hasComponentByType('Event') || hasComponentByType('ServicePlugin')) && (\n <PlatformOption\n inputKey=\"B\"\n label={t('general.platform.backend')}\n suffix={<Text>{String.fromCodePoint(0x25bc)}</Text>} // ▼\n />\n )} */}\n </Box>\n );\n};\n","import React, { type FC, useMemo, useCallback } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { lookup, match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport {\n openPage,\n resolveDashboardExtensionUrl,\n useEnvConfig,\n} from '../extensions/utils.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { NumericViewer } from '../NumericViewer/index.js';\nimport { NumericOption } from '../NumericViewer/NumericViewer.js';\nimport { useWixCliAppBi } from '../../bi';\n\nconst MAX_EXTENSIONS = 9;\nconst MAX_DASHBOARD_PAGES = 3;\nconst MAX_PAGE_PLUGINS = 3;\nconst MAX_MENU_PLUGINS = 3;\n\ninterface Props {\n onViewMore: (dashboardScreenSelector: DashboardScreenSelector) => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose?: () => void;\n}\n\nexport const DashboardNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const { getExtensions } = useExtensions();\n const { writeLog } = useDevEnvironment();\n const envConfig = useEnvConfig();\n const bi = useWixCliAppBi();\n\n const dashboardExtensions = useMemo(\n () => ({\n dashboardPages: getExtensions('DashboardPage'),\n dashboardMenuPlugins: getExtensions('DashboardMenuPlugin'),\n dashboardPlugins: getExtensions('DashboardPlugin'),\n }),\n [getExtensions]\n );\n\n const dashboardPagesData = dashboardExtensions.dashboardPages.slice(\n 0,\n dashboardExtensions.dashboardPages.length > MAX_DASHBOARD_PAGES\n ? MAX_DASHBOARD_PAGES - 1\n : dashboardExtensions.dashboardPages.length\n );\n\n const dashboardPagesShowMoreIndex =\n dashboardExtensions.dashboardPages.length > dashboardPagesData.length\n ? dashboardPagesData.length + 1\n : undefined;\n\n const dashboardPagesCount = Math.max(\n dashboardPagesData.length,\n dashboardPagesShowMoreIndex || 0\n );\n\n const maxMenuPlugins = Math.min(\n MAX_MENU_PLUGINS,\n Math.floor((MAX_EXTENSIONS - dashboardPagesCount) / 2)\n );\n\n const dashboardMenuPluginsData =\n dashboardExtensions.dashboardMenuPlugins.slice(\n 0,\n dashboardExtensions.dashboardMenuPlugins.length > maxMenuPlugins\n ? maxMenuPlugins - 1\n : dashboardExtensions.dashboardMenuPlugins.length\n );\n\n const dashboardMenuPluginsShowMoreIndex =\n dashboardExtensions.dashboardMenuPlugins.length >\n dashboardMenuPluginsData.length\n ? dashboardMenuPluginsData.length + dashboardPagesCount + 1\n : undefined;\n\n const dashboardMenuPluginsCount = Math.max(\n dashboardMenuPluginsData.length + dashboardPagesCount,\n dashboardMenuPluginsShowMoreIndex || 0\n );\n\n const maxPagePlugins = Math.min(\n MAX_PAGE_PLUGINS,\n MAX_EXTENSIONS - dashboardMenuPluginsCount\n );\n\n const dashboardPluginsData = dashboardExtensions.dashboardPlugins.slice(\n 0,\n dashboardExtensions.dashboardPlugins.length > maxPagePlugins\n ? maxPagePlugins - 1\n : dashboardExtensions.dashboardPlugins.length\n );\n\n const dashboardPluginsShowMoreIndex =\n dashboardExtensions.dashboardPlugins.length > dashboardPluginsData.length\n ? dashboardPluginsData.length + dashboardMenuPluginsCount + 1\n : undefined;\n\n const visibleItems: NumericOption<\n DevCenterComponent<DashboardExtension>,\n DashboardExtension\n >[] = [\n ...dashboardPagesData.map((page) =>\n NumericOption.Item({\n title: page.title,\n description: page.route,\n value: page,\n })\n ),\n ...(dashboardPagesShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPage' as DashboardExtension)]\n : []),\n ...dashboardMenuPluginsData.map((menuPlugin) =>\n NumericOption.Item({\n title: menuPlugin.title,\n description: menuPlugin.route,\n value: menuPlugin,\n })\n ),\n ...(dashboardMenuPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardMenuPlugin' as DashboardExtension)]\n : []),\n ...dashboardPluginsData.map((pagePlugin) =>\n NumericOption.Item({\n title: pagePlugin.title,\n description: pagePlugin.route,\n value: pagePlugin,\n })\n ),\n ...(dashboardPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPlugin' as DashboardExtension)]\n : []),\n ];\n\n const getLabelKey = (\n dashboardExtension: DevCenterComponent<DashboardExtension>\n ) => {\n return match(\n dashboardExtension,\n lookup({\n DashboardPage: 'general.dashboard_pages_viewer.title',\n DashboardMenuPlugin: 'general.dashboard_menu_plugins_viewer.title',\n DashboardPlugin: 'general.dashboard_plugins_viewer.title',\n DashboardModal: '', // NOTE: No key for this type\n })\n );\n };\n\n useInput((input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const itemIndex = inputNumber - 1;\n const item = visibleItems.at(itemIndex);\n if (item) {\n match(item, {\n Item: (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n action: item.title,\n key: input,\n });\n handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n action: 'view_more',\n key: input,\n });\n onViewMore(\n DashboardScreenSelector.Arrow({\n dashboardExtension: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n async (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl({\n envConfig,\n extension: dashboardExtension,\n });\n await openPage({ url, title: dashboardExtension.title }, writeLog);\n onSelect?.(dashboardExtension);\n },\n [onSelect, writeLog, envConfig]\n );\n\n const dashboardPages = visibleItems.slice(0, dashboardPagesCount);\n const dashboardMenuPlugins = visibleItems.slice(\n dashboardPagesCount,\n dashboardMenuPluginsCount\n );\n const dashboardPlugins = visibleItems.slice(\n dashboardMenuPluginsCount,\n visibleItems.length\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {dashboardPages.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.dashboard_pages_viewer.title\"\n items={dashboardPages}\n />\n )}\n {dashboardMenuPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardPagesCount}\n titleKey=\"general.dashboard_menu_plugins_viewer.title\"\n items={dashboardMenuPlugins}\n />\n )}\n {dashboardPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardMenuPluginsCount}\n titleKey=\"general.dashboard_plugins_viewer.title\"\n items={dashboardPlugins}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React, { type FC } from 'react';\nimport { Key, Text, useInput } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { useWixCliAppBi } from '../../bi';\n\ninterface Props {\n onClose: () => void;\n}\n\nexport const CloseScreen: FC<Props> = ({ onClose }) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n\n useInput((_, key) => {\n if (key.escape) {\n bi.cliAction({\n question: t('general.close_screen'),\n action: 'close',\n key: 'esc',\n });\n onClose();\n }\n });\n\n return (\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"general.close_screen\"\n components={[<Key value=\"esc\" />]}\n />\n </Text>\n );\n};\n","import React, { useState, type FC } from 'react';\nimport { fields, match, variant, type VariantOf } from 'variant';\nimport { DashboardArrowViewer } from './DashboardArrowViewer.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\n\nexport const DashboardScreenSelector = variant({\n Arrow: fields<{\n dashboardExtension: DashboardExtension;\n }>(),\n Numeric: {},\n});\n\nexport type DashboardScreenSelector = VariantOf<typeof DashboardScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n initialSelectorType?: DashboardScreenSelector;\n}\n\nexport const DashboardScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = DashboardScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<DashboardScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ dashboardExtension }) => (\n <DashboardArrowViewer\n dashboardExtension={dashboardExtension}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <DashboardNumericViewer\n onViewMore={setSelectorType}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { useCallback, type FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { match, lookup } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport {\n openPage,\n resolveDashboardExtensionUrl,\n useEnvConfig,\n} from '../extensions/utils.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport {\n useExtensions,\n type DashboardExtension,\n} from '../extensions/useExtensions.js';\nimport { useWixCliAppBi } from '../../bi';\n\ninterface Props {\n dashboardExtension: DashboardExtension;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose: () => void;\n}\n\nexport const DashboardArrowViewer: FC<Props> = ({\n dashboardExtension,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const { writeLog } = useDevEnvironment();\n const { getExtensions } = useExtensions();\n const envConfig = useEnvConfig();\n const bi = useWixCliAppBi();\n\n const getLabelKey = useCallback(\n () =>\n match(\n dashboardExtension,\n lookup({\n DashboardPlugin:\n 'dev_command.dashboard_page_plugin_screen.select_label',\n DashboardMenuPlugin:\n 'dev_command.dashboard_menu_plugin_screen.select_label',\n DashboardPage: 'dev_command.dashboard_pages_screen.select_label',\n DashboardModal: 'dev_command.dashboard_modal_screen.select_label',\n })\n ),\n [dashboardExtension]\n );\n\n const handleSubmit = useCallback(\n (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl({\n envConfig,\n extension: dashboardExtension,\n });\n bi.cliAction({\n question: t(getLabelKey()),\n action: dashboardExtension.title,\n key: 'enter',\n });\n openPage({ url, title: dashboardExtension.title }, writeLog);\n onSelect?.(dashboardExtension);\n },\n [envConfig, bi, t, getLabelKey, writeLog, onSelect]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<DevCenterComponent<DashboardExtension>>\n label={t(getLabelKey())}\n options={getExtensions(dashboardExtension).map(\n (dashboardExtensionInstance) => ({\n key: dashboardExtensionInstance.id,\n title: dashboardExtensionInstance.title,\n description: dashboardExtensionInstance.route,\n value: dashboardExtensionInstance,\n })\n )}\n onSubmit={({ value: dashboardExtensionInstance }) =>\n handleSubmit(dashboardExtensionInstance)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","export { NumericViewer, type NumericOption } from './NumericViewer.js';\n","import React, { type FC, type ReactNode } from 'react';\nimport { Box, Text, Key, PointerSmallIcon } from '@wix/cli-ui-kit';\nimport { Trans } from '@wix/cli-i18n';\nimport { variant, onTerms, fields, match, payload } from 'variant';\nimport type { TypeNames, GVariantOf } from 'variant';\n\nconst ListItem: FC<{\n itemNumber: number;\n children: ReactNode;\n}> = ({ itemNumber, children }) => {\n const keyValue = `${itemNumber}`;\n return (\n <Box flexDirection=\"row\" gap={1}>\n <Text>\n <PointerSmallIcon /> <Key value={keyValue} /> -\n </Text>\n {children}\n </Box>\n );\n};\n\nexport const NumericOption = variant(\n onTerms(({ I, V }) => ({\n Item: fields<{ title: string; description?: string; value: typeof I }>(),\n ViewMore: payload(V),\n }))\n);\n\nexport type NumericOption<\n I,\n V,\n TType extends TypeNames<typeof NumericOption> = undefined\n> = GVariantOf<typeof NumericOption, TType, { I: I; V: V }>;\n\ninterface Props<I, V> {\n startIndex: number;\n titleKey: string;\n items: NumericOption<I, V>[];\n}\n\nexport function NumericViewer<I, V>({\n startIndex,\n titleKey,\n items,\n}: Props<I, V>) {\n return (\n <Box flexDirection=\"column\">\n <Trans i18nKey={titleKey} />\n <Box paddingLeft={2} flexDirection=\"column\">\n {items.map((item, index) => (\n <ListItem\n key={startIndex + index + 1}\n itemNumber={startIndex + index + 1}\n >\n {match(item, {\n Item: ({ title, description }) => (\n <Box flexDirection=\"row\" gap={1}>\n <Text>{title}</Text>\n {description && <Text skin=\"secondary\">({description})</Text>}\n </Box>\n ),\n ViewMore: () => (\n <Trans i18nKey=\"general.numeric_viewer.show_more\" />\n ),\n })}\n </ListItem>\n ))}\n </Box>\n </Box>\n );\n}\n","import React, { type FC, useState, useCallback } from 'react';\nimport { Alert, Box, PointerIcon } from '@wix/cli-ui-kit';\nimport { ErrorViewer, useErrorReporter } from '@wix/cli-error-reporting';\nimport type { Site } from '@wix/site-list-client';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { SiteSelector } from '@wix/cli-site-selector';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport { useProjectModel } from '../../model.js';\nimport { useSiteId } from '../../site-id/index.js';\nimport { CloseScreen } from '../CloseScreen';\nimport { ScreenState } from './screen-state.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const SiteSelectorScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const biLogger = useBiLogger();\n const { site, setSite } = useSiteId();\n const { reportError } = useErrorReporter();\n const [error, setError] = useState<unknown>(null);\n\n const handleError = useCallback(\n (error: unknown) => {\n reportError(error);\n setError(error);\n },\n [reportError, setError]\n );\n\n const handleSubmit = useCallback(\n async (site: Site) => {\n try {\n await setSite(site);\n onScreenChange(ScreenState.Home());\n } catch (e) {\n handleError(e);\n }\n },\n [setSite, onScreenChange, handleError]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box gap={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box flexDirection=\"column\">\n <SiteSelector\n appId={model.config.appId}\n biLogger={biLogger}\n onSubmit={handleSubmit}\n onError={handleError}\n />\n {error ? (\n <ErrorViewer\n error={error}\n systemErrorOverride={\n <Alert type=\"error\">{t('dev_command.site_selector.error')}</Alert>\n }\n />\n ) : null}\n </Box>\n <CloseScreen onClose={() => onScreenChange(ScreenState.Home())} />\n </Box>\n );\n};\n","export { CloseScreen } from './CloseScreen.js';\n","import React, { useState, type FC } from 'react';\nimport { fields, match, variant, type VariantOf } from 'variant';\nimport { BackendNumericViewer } from './BackendNumericViewer.js';\nimport { BackendArrowViewer } from './BackendArrowViewer.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../dev-center/components/dev-center-component.js';\n\nexport const BackendScreenSelector = variant({\n Arrow: fields<{\n backendComponentName: BackendComponentNames;\n }>(),\n Numeric: {},\n});\n\nexport type BackendScreenSelector = VariantOf<typeof BackendScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n initialSelectorType?: BackendScreenSelector;\n}\n\nexport const BackendScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = BackendScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<BackendScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ backendComponentName }) => (\n <BackendArrowViewer\n backendComponentName={backendComponentName}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <BackendNumericViewer\n onViewMore={setSelectorType}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { type FC, useCallback } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { match, lookup } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport {\n NumericOption,\n NumericViewer,\n} from '../NumericViewer/NumericViewer.js';\nimport { BackendScreenSelector } from './BackendScreen.js';\nimport { useWixCliAppBi } from '../../bi';\nimport type {\n BackendComponent,\n BackendComponentNames,\n DevCenterComponent,\n} from '../../dev-center/components/dev-center-component.js';\n\nconst MAX_BACKEND_COMPONENT = 9;\nconst MAX_SERVICE_PLUGINS = 4;\nconst MAX_EVENTS = 5;\n\ninterface Props {\n onViewMore: (backendScreen: BackendScreenSelector) => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose?: () => void;\n}\n\nexport const BackendNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { backendComponentsByType } = useBackendComponents();\n\n const servicePluginsData = backendComponentsByType.ServicePlugin.slice(\n 0,\n backendComponentsByType.ServicePlugin.length > MAX_SERVICE_PLUGINS\n ? MAX_SERVICE_PLUGINS - 1\n : backendComponentsByType.ServicePlugin.length\n );\n\n const servicePluginsShowMoreIndex =\n backendComponentsByType.ServicePlugin.length > servicePluginsData.length\n ? servicePluginsData.length + 1\n : undefined;\n\n const servicePluginsCount = Math.max(\n servicePluginsData.length,\n servicePluginsShowMoreIndex ?? 0\n );\n\n const maxBackendEvents = Math.min(\n MAX_EVENTS,\n MAX_BACKEND_COMPONENT - servicePluginsCount\n );\n\n const backendEventsData = backendComponentsByType.Event.slice(\n 0,\n backendComponentsByType.Event.length > maxBackendEvents\n ? maxBackendEvents - 1\n : backendComponentsByType.Event.length\n );\n\n const backendEventsShowMoreIndex =\n backendComponentsByType.Event.length > backendEventsData.length\n ? backendEventsData.length + servicePluginsCount + 1\n : undefined;\n\n const visibleItems: NumericOption<BackendComponent, BackendComponentNames>[] =\n [\n ...servicePluginsData.map(\n (servicePlugin: DevCenterComponent<'ServicePlugin'>) =>\n NumericOption.Item({\n title: servicePlugin.componentName,\n value: servicePlugin,\n })\n ),\n ...(servicePluginsShowMoreIndex\n ? [NumericOption.ViewMore('ServicePlugin' as BackendComponentNames)]\n : []),\n ...backendEventsData.map((event: DevCenterComponent<'Event'>) =>\n NumericOption.Item({\n title: event.title,\n value: event,\n })\n ),\n ...(backendEventsShowMoreIndex\n ? [NumericOption.ViewMore('Event' as BackendComponentNames)]\n : []),\n ];\n\n const getLabelKey = (backendComponent: BackendComponent) => {\n return match(\n backendComponent,\n lookup({\n Api: 'general.backend_api_viewer.title',\n Event: 'general.backend_events_viewer.title',\n ServicePlugin: 'general.backend_plugin_viewer.title',\n })\n );\n };\n\n useInput((input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const item = visibleItems.at(inputNumber - 1);\n if (item) {\n match(item, {\n Item: (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n action: item.title,\n key: input,\n });\n handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n action: 'view_more',\n key: input,\n });\n onViewMore(\n BackendScreenSelector.Arrow({\n backendComponentName: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n async (backendComponent: BackendComponent) => {\n onSelect?.(backendComponent);\n },\n [onSelect]\n );\n\n const backendPlugins = visibleItems.slice(0, servicePluginsCount);\n const backendEvents = visibleItems.slice(\n servicePluginsCount,\n visibleItems.length\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {backendPlugins.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.backend_plugin_viewer.title\"\n items={backendPlugins}\n />\n )}\n {backendEvents.length > 0 && (\n <NumericViewer\n startIndex={servicePluginsCount}\n titleKey=\"general.backend_events_viewer.title\"\n items={backendEvents}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React, { useCallback, useMemo, type FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { isType, lookup, match } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport { useWixCliAppBi } from '../../bi';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../dev-center/components/dev-center-component.js';\n\ninterface Props {\n backendComponentName: BackendComponentNames;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose: () => void;\n}\n\nexport const BackendArrowViewer: FC<Props> = ({\n backendComponentName,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { backendComponentsByType } = useBackendComponents();\n\n const getLabelKey = useCallback(\n () =>\n match(\n backendComponentName,\n lookup({\n Api: 'dev_command.backend_apis_screen.select_label',\n Event: 'dev_command.backend_events_screen.select_label',\n ServicePlugin: 'dev_command.backend_plugins_screen.select_label',\n })\n ),\n [backendComponentName]\n );\n\n const getBackendComponentName = (backendComponent: BackendComponent) =>\n isType(backendComponent, 'ServicePlugin')\n ? backendComponent.componentName\n : backendComponent.title;\n\n const handleSubmit = useCallback(\n (backendComponent: BackendComponent) => {\n bi.cliAction({\n question: t(getLabelKey()),\n action: getBackendComponentName(backendComponent),\n key: 'enter',\n });\n onSelect?.(backendComponent);\n },\n [bi, getLabelKey, onSelect, t]\n );\n\n const options = useMemo(() => {\n return backendComponentsByType[backendComponentName].map(\n (backendComponent, index) => ({\n key: index.toString(),\n title: getBackendComponentName(backendComponent),\n value: backendComponent,\n })\n );\n }, [backendComponentsByType, backendComponentName]);\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<BackendComponent>\n label={t(getLabelKey())}\n options={options}\n onSubmit={({ value: backendComponent }) =>\n handleSubmit(backendComponent)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","import React, { type FC } from 'react';\nimport { Text, Box, Key, useInput, Spinner, ScrollArea } from '@wix/cli-ui-kit';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { useDevEnvironment } from './DevEnvironment.js';\nimport { DevEnvLogLine } from './devEnvLogs/DevEnvLogLine.js';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\n\ntype DevEnvLogsViewerScreen = {\n onClose: () => void;\n};\n\nexport const DevEnvLogsViewerScreen: FC<DevEnvLogsViewerScreen> = ({\n onClose,\n}) => {\n const { t } = useTranslation();\n const { logs, clearLogs } = useDevEnvironment();\n\n useInput((input) => {\n if (input === 'c') {\n clearLogs();\n }\n });\n\n return (\n <Box flexDirection=\"column\" justifyContent=\"space-between\" gap={1}>\n <ScrollArea height={12}>\n {logs.map((log, index) => (\n <DevEnvLogLine key={`${log.timestamp.getTime()}-${index}`} {...log} />\n ))}\n </ScrollArea>\n <Box flexDirection=\"column\">\n <Box justifyContent=\"space-between\">\n <Box gap={1}>\n <Spinner />\n <Text>{t('dev_command.dev_env_logs.listening_to_logs')}</Text>\n </Box>\n <Text skin=\"info\">\n {t('dev_command.dev_env_logs.scroll_explain')}\n </Text>\n </Box>\n <Box gap={1}>\n <CloseScreen onClose={onClose} />\n <Text>/</Text>\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"logs.backend.clear\"\n components={[<Key value=\"C\" />]}\n />\n </Text>\n </Box>\n </Box>\n </Box>\n );\n};\n","import React, { useState, type FC, type ReactNode } from 'react';\nimport { ConfirmInput, Text, useAsync, useExit } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { readUserConfig, updateUserConfig } from '@wix/cli-user-config';\nimport { match } from 'variant';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\ninterface Props {\n children: ReactNode;\n}\n\nexport const TunnelingConsent: FC<Props> = ({ children }) => {\n const exit = useExit();\n const { t } = useTranslation();\n const { backendComponents } = useBackendComponents();\n const [approved, setApproved] = useState<boolean>();\n\n const { status } = useAsync(async () => {\n const config = await readUserConfig();\n\n if (config.tunneling) {\n setApproved(true);\n }\n\n return config;\n }, []);\n\n if (backendComponents.length === 0 || approved) {\n return children;\n }\n\n return (\n <>\n {match(status, {\n Success: () => (\n <ConfirmInput\n label={t('dev_command.tunneling.confirm')}\n initialValue={true}\n onSubmit={(approved) => {\n updateUserConfig({ tunneling: approved });\n setApproved(approved);\n if (!approved) {\n exit();\n }\n }}\n />\n ),\n Error: () => null,\n Loading: () => null,\n })}\n {approved === false && (\n <Text skin=\"error\">\n <Trans i18nKey=\"dev_command.tunneling.abort_dev\" />\n </Text>\n )}\n </>\n );\n};\n","import { join } from 'node:path';\nimport { getDataDirPath } from '@wix/cli-data-dir';\nimport { pathExists, readJson, writeJson } from '@wix/cli-fs';\nimport {\n userConfigSchema,\n CONFIG_FILE_NAME,\n type UserConfig,\n} from '@wix/cli-core-definitions';\n\nfunction getUserConfigPath() {\n return join(getDataDirPath(), CONFIG_FILE_NAME);\n}\n\nexport async function readUserConfig() {\n const configPath = getUserConfigPath();\n const isConfigExist = await pathExists(configPath);\n const json = isConfigExist ? await readJson(configPath) : {};\n return userConfigSchema.parse(json);\n}\n\nexport async function updateUserConfig(config: Partial<UserConfig>) {\n const currentConfig = await readUserConfig();\n const newConfig = {\n ...currentConfig,\n ...config,\n };\n\n const configPath = getUserConfigPath();\n await writeJson(configPath, newConfig);\n}\n","import { setTimeout } from 'node:timers/promises';\nimport React, { type FC, type ReactNode, useCallback, useState } from 'react';\nimport { match, isType } from 'variant';\nimport { openBrowser } from '@wix/user-browser';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { ComponentType } from '@wix/ambassador-devcenter-components-v1-component/types';\nimport {\n useAsync,\n Spinner,\n useAsyncCallback,\n useInput,\n Text,\n Key,\n Alert,\n} from '@wix/cli-ui-kit';\nimport { Trans } from '@wix/cli-i18n';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useARMClient } from '@wix/arm-client';\nimport type { ComponentConfig } from '@wix/ambassador-ctp-gradual-rollout-v1-app-config/types';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { useProjectModel } from '../../model.js';\nimport { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { createCustomElementConfig } from '../../app-manifest/create.js';\nimport { CSMv2Workaround, useEnvConfig } from '../extensions/utils.js';\n\nconst AppUpdater: FC<{\n children: ReactNode;\n newCustomElements: DevCenterComponent<'CustomElement'>[];\n}> = ({ children, newCustomElements }) => {\n const { model } = useProjectModel();\n const { reportError } = useErrorReporter();\n const { createComponents } = useARMClient();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const { site, tag } = useEnvConfig();\n const [isAppReinstalled, setAppReinstalledFlag] = useState(false);\n\n const prepareNewElements = useAsyncCallback(\n async () => {\n const componentConfigs = newCustomElements.map<ComponentConfig>(\n (customElement) => createCustomElementConfig(customElement)\n );\n\n await createComponents(\n model.config.appId,\n componentConfigs,\n model.config.projectId\n );\n const { customElementsCreationDelay } = getTestOverrides();\n const [{ data: signedAppMarketParams }] = await Promise.all([\n httpClient\n .post<string>(\n '/_serverless/app-market-json-web-token/json-web-token',\n {\n data: {\n data: JSON.stringify({\n appDefId: model.config.appId,\n version: 'latest',\n }),\n },\n }\n )\n .catch((e) => {\n throw new CliError({\n code: CliErrorCode.FailedToGenerateAppMarketQueryParam(),\n cause: e,\n });\n }),\n setTimeout(customElementsCreationDelay ?? 5000),\n ]);\n const url = new URL(`https://wix.com/editor/${site.id}`);\n url.searchParams.append('openPanel', 'appMarket');\n url.searchParams.append('preferAppManager', 'true');\n url.searchParams.append('appMarketParams', signedAppMarketParams);\n url.searchParams.append('apps-override', tag);\n\n await openBrowser(CSMv2Workaround(url, PlatformType.Editor()).toString());\n },\n {\n onError: (error) => {\n reportError(error);\n },\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n prepareNewElements.execute();\n }\n },\n [prepareNewElements]\n ),\n {\n isActive: isType(prepareNewElements.status, 'NotRequested'),\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n setAppReinstalledFlag(true);\n }\n },\n [setAppReinstalledFlag]\n ),\n {\n isActive:\n !isAppReinstalled &&\n (isType(prepareNewElements.status, 'Success') ||\n isType(prepareNewElements.status, 'Error')),\n }\n );\n\n if (isAppReinstalled) {\n return children;\n }\n\n return match(prepareNewElements.status, {\n Loading: () => <Spinner />,\n Success: () => {\n return (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.confirm_reinstall\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n );\n },\n Error: () => (\n <Alert type=\"error\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.reinstall_error\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n NotRequested: () => (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.warning\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n });\n};\n\nexport const CustomElementsMigration: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { getAppSnapshot } = useDevCenterClient();\n const { model } = useProjectModel();\n const { t } = useTranslation();\n\n const customElementsCheck = useAsync(async () => {\n const localCustomElements = model.components.filter((component) =>\n isType(component, DevCenterComponent.CustomElement)\n ) as DevCenterComponent<'CustomElement'>[];\n\n if (!localCustomElements.length) {\n return [];\n }\n\n const { components } = await getAppSnapshot({\n appId: model.config.appId,\n });\n\n const existingCustomElements = components.filter(\n (component) => component.compType === ComponentType.CUSTOM_ELEMENT_WIDGET\n );\n\n const newCustomElements = localCustomElements.filter(\n (localCustomElement) =>\n !existingCustomElements.find(\n (customElement) => customElement.compId === localCustomElement.id\n )\n );\n\n return newCustomElements;\n }, []);\n\n return match(customElementsCheck.status, {\n Error: () => null,\n Loading: () => (\n <Spinner text={t('dev_command.custom_elements_migration.loading')} />\n ),\n Success: ({ result: newCustomElements }) =>\n newCustomElements.length ? (\n <AppUpdater newCustomElements={newCustomElements}>\n {children}\n </AppUpdater>\n ) : (\n children\n ),\n });\n};\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","import_react","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","createAppManifestWithBaseUrl","model","clientDevServerUrl","backendServerUrl","manifest","createAppManifest","getComponentSourceBuilder","updateAppManifestWithBaseUrl","useArmUpdater","useProjectModel","writeDebugLog","useDebugLog","createAppRelease","updateAppRelease","useARMClient","devServerUrl","projectModelWatcher","onChange","onError","projectId","appManifest","appConfig","readAppConfig","armTag","tag","updateState","cause","saveAppConfig","error","newModel","changeType","updatedAppManifest","deepEqual","e","init_esm_shims","import_react","createServer","init_esm_shims","createCustomLogger","onLog","loggedErrors","warnedMessages","logger","msg","opts","error","useViteDevServer","createConfig","devServerRef","options","config","devServer","createServer","getViteServerUrl","useClientDevServer","https","model","useProjectModel","onLog","projectModelWatcher","baseBackendUrl","getViteConfig","createCustomLogger","useBackendDevServer","getAppSecret","useDevCenterClient","appSecret","init_esm_shims","import_react","init_esm_shims","EOL","createWriteStream","DevLogStream","projectFolder","opts","createWriteStream","getDevLogPath","content","EOL","err","init_esm_shims","import_react","DevEnvLogLine","type","msg","error","prefix","timestamp","React","Box_default","Text","ErrorViewer","ErrorMsg","React","Box_default","Alert","Trans","Text","DEV_LOG_PATH","isMessageFiltered","message","useDevEnvLogs","model","useProjectModel","logs","setLogs","insertLog","genericLog","log","renderer","stream","createRendererToString","DevLogStream","writeLog","content","DevEnvLogLine","clearLogs","init_esm_shims","import_react","useSiteOverrideUpdater","model","useProjectModel","site","useSiteId","writeDebugLog","useDebugLog","createOverride","useSiteOverrideClient","projectModelWatcher","appId","appConfig","readAppConfig","overrides","createSiteOverrides","siteOverrideId","newModel","changeType","updatedOverrides","deepEqual","saveAppConfig","error","DevEnvironmentContext","DevEnvironmentProvider","https","children","useTranslation","reportError","useErrorReporter","backendComponents","backendComponentsByType","useBackendComponents","createClientDevServer","useClientDevServer","createBackendDevServer","useBackendDevServer","startTunnel","useTunnel","createArmUpdater","useArmUpdater","createSiteOverrideUpdater","useSiteOverrideUpdater","logs","writeLog","clearLogs","useDevEnvLogs","projectModelWatcher","useProjectModel","status","useAsync","backendDevServerUrl","type","msg","devServerUrl","tunnelUrl","url","clientDevServerUrl","clientDevServer","armTag","changeType","error","siteOverrideId","React","Spinner","SiteOverrideProvider","ArmTagProvider","useDevEnvironment","context","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","init_esm_shims","import_variant","ScreenState","init_esm_shims","import_react","DevEnvLogsViewer","onViewServerLogsSelection","t","useTranslation","logs","useDevEnvironment","limitedLogs","use_input_default","input","React","Box_default","Trans","DEV_LOG_PATH","Text","log","index","DevEnvLogLine","Key","init_esm_shims","import_react","PlatformOption","label","inputKey","suffix","disabled","getTextSkin","React","Box_default","Text","PointerSmallIcon","Key","PlatformSelector","onMultipleDashboardExtensionSelection","t","useTranslation","bi","useWixCliAppBi","writeLog","useDevEnvironment","isPlatformExists","usePlatform","dashboardExtensions","useExtensions","envConfig","useEnvConfig","openPlatform","platformType","openPage","resolvePlatformUrl","use_input_default","input","PlatformType","resolveDashboardExtensionUrl","dashboardOptionSuffix","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","CloseScreen","onClose","t","useTranslation","bi","useWixCliAppBi","use_input_default","_","key","React","Text","Trans","Key","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","DashboardArrowViewer","dashboardExtension","onClose","onSelect","t","useTranslation","writeLog","useDevEnvironment","getExtensions","useExtensions","envConfig","useEnvConfig","bi","useWixCliAppBi","getLabelKey","handleSubmit","url","resolveDashboardExtensionUrl","openPage","React","Box_default","SelectInput","dashboardExtensionInstance","CloseScreen","DashboardScreenSelector","DashboardScreen","onClose","onSelect","initialSelectorType","selectorType","setSelectorType","React","dashboardExtension","DashboardArrowViewer","DashboardNumericViewer","init_esm_shims","init_esm_shims","import_react","import_variant","ListItem","itemNumber","children","keyValue","React","Box_default","Text","PointerSmallIcon","Key","NumericOption","I","V","NumericViewer","startIndex","titleKey","items","Trans","item","index","title","description","MAX_EXTENSIONS","MAX_DASHBOARD_PAGES","MAX_PAGE_PLUGINS","MAX_MENU_PLUGINS","DashboardNumericViewer","onViewMore","onSelect","onClose","t","useTranslation","getExtensions","useExtensions","writeLog","useDevEnvironment","envConfig","useEnvConfig","bi","useWixCliAppBi","dashboardExtensions","dashboardPagesData","dashboardPagesShowMoreIndex","dashboardPagesCount","maxMenuPlugins","dashboardMenuPluginsData","dashboardMenuPluginsShowMoreIndex","dashboardMenuPluginsCount","maxPagePlugins","dashboardPluginsData","dashboardPluginsShowMoreIndex","visibleItems","page","NumericOption","menuPlugin","pagePlugin","getLabelKey","dashboardExtension","use_input_default","input","inputNumber","itemIndex","item","handleSelect","viewMore","DashboardScreenSelector","url","resolveDashboardExtensionUrl","openPage","dashboardPages","dashboardMenuPlugins","dashboardPlugins","React","Box_default","NumericViewer","CloseScreen","HomeScreen","onScreenChange","t","useTranslation","site","useSiteId","bi","useWixCliAppBi","clientDevServerUrl","https","writeLog","useDevEnvironment","hasSinglePlatform","usePlatform","hasExtensions","dashboardExtensions","useExtensions","backendComponents","useBackendComponents","openDevServerInBrowser","openBrowser","React","Alert","Trans","Link","use_input_default","input","ScreenState","Box_default","Text","SuccessIcon","InfoIcon","Key","PointerIcon","PlatformType","dashboardExtension","DashboardNumericViewer","selectorType","PlatformSelector","DevEnvLogsViewer","init_esm_shims","import_react","init_esm_shims","SiteSelectorScreen","onScreenChange","t","useTranslation","model","useProjectModel","biLogger","useBiLogger","site","setSite","useSiteId","reportError","useErrorReporter","error","setError","handleError","handleSubmit","ScreenState","e","React","Box_default","PointerIcon","Trans","SiteSelector","ErrorViewer","Alert","CloseScreen","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","MAX_BACKEND_COMPONENT","MAX_SERVICE_PLUGINS","MAX_EVENTS","BackendNumericViewer","onViewMore","onSelect","onClose","t","useTranslation","bi","useWixCliAppBi","backendComponentsByType","useBackendComponents","servicePluginsData","servicePluginsShowMoreIndex","servicePluginsCount","maxBackendEvents","backendEventsData","backendEventsShowMoreIndex","visibleItems","servicePlugin","NumericOption","event","getLabelKey","backendComponent","use_input_default","input","inputNumber","item","handleSelect","viewMore","BackendScreenSelector","backendPlugins","backendEvents","React","Box_default","NumericViewer","CloseScreen","init_esm_shims","import_react","import_variant","BackendArrowViewer","backendComponentName","onClose","onSelect","t","useTranslation","bi","useWixCliAppBi","backendComponentsByType","useBackendComponents","getLabelKey","getBackendComponentName","backendComponent","handleSubmit","options","index","React","Box_default","SelectInput","CloseScreen","BackendScreenSelector","BackendScreen","onClose","onSelect","initialSelectorType","selectorType","setSelectorType","React","backendComponentName","BackendArrowViewer","BackendNumericViewer","init_esm_shims","import_react","DevEnvLogsViewerScreen","onClose","t","useTranslation","logs","clearLogs","useDevEnvironment","use_input_default","input","React","Box_default","ScrollArea","log","index","DevEnvLogLine","Spinner","Text","CloseScreen","Trans","Key","DevCommandScreens","screen","setScreen","ScreenState","React","HomeScreen","SiteSelectorScreen","selectorType","DashboardScreen","BackendScreen","DevEnvLogsViewerScreen","init_esm_shims","import_react","init_esm_shims","join","getUserConfigPath","join","getDataDirPath","CONFIG_FILE_NAME","readUserConfig","configPath","json","pathExists","readJson","userConfigSchema","updateUserConfig","config","newConfig","writeJson","import_variant","TunnelingConsent","children","exit","useExit","useTranslation","backendComponents","useBackendComponents","approved","setApproved","status","useAsync","config","readUserConfig","React","ConfirmInput","updateUserConfig","Text","Trans","init_esm_shims","import_react","import_variant","setTimeout","AppUpdater","children","newCustomElements","model","useProjectModel","reportError","useErrorReporter","createComponents","useARMClient","httpClient","useHttpClient","site","tag","useEnvConfig","isAppReinstalled","setAppReinstalledFlag","prepareNewElements","useAsyncCallback","componentConfigs","customElement","createCustomElementConfig","customElementsCreationDelay","getTestOverrides","signedAppMarketParams","e","CliError","CliErrorCode","setTimeout","url","openBrowser","CSMv2Workaround","PlatformType","error","use_input_default","input","key","React","Spinner","Alert","Text","Trans","Key","CustomElementsMigration","getAppSnapshot","useDevCenterClient","t","useTranslation","customElementsCheck","useAsync","localCustomElements","component","DevCenterComponent","components","existingCustomElements","ComponentType","localCustomElement","DevCommand","https","React","SiteIdProvider","TunnelingConsent","DevEnvironmentProvider","CustomElementsMigration","DevCommandScreens"]}
|