@wix/cli-app 1.1.26 → 1.1.28

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.
Files changed (116) hide show
  1. package/build/CreateVersionCommand-HYIOMYPS.js +4 -0
  2. package/build/CreateVersionCommand-HYIOMYPS.js.map +1 -0
  3. package/build/DevCommand-NXVNR5O7.js +4 -0
  4. package/build/DevCommand-NXVNR5O7.js.map +1 -0
  5. package/build/GenerateCommand-QZE7QTNX.js +99 -0
  6. package/build/GenerateCommand-QZE7QTNX.js.map +1 -0
  7. package/build/LogsCommand-EQAEPQSZ.js +4 -0
  8. package/build/LogsCommand-EQAEPQSZ.js.map +1 -0
  9. package/build/PreviewCommand-DCQC2ZG7.js +4 -0
  10. package/build/ServeCommand-CERFKHB5.js +4 -0
  11. package/build/{ServeCommand-CSWUIFSC.js.map → ServeCommand-CERFKHB5.js.map} +1 -1
  12. package/build/{build-2XPZSAZ7.js → build-NH7ZWZTO.js} +2 -2
  13. package/build/chunk-2V3FQGOH.js +4 -0
  14. package/build/chunk-2V3FQGOH.js.map +1 -0
  15. package/build/chunk-3ZWMQHFG.js +11 -0
  16. package/build/chunk-3ZWMQHFG.js.map +1 -0
  17. package/build/{chunk-525O5S55.js → chunk-4VHD7OBV.js} +2 -2
  18. package/build/chunk-5IJKDSHA.js +4 -0
  19. package/build/chunk-AHUF5IOW.js +4 -0
  20. package/build/chunk-AHUF5IOW.js.map +1 -0
  21. package/build/chunk-BSR2JA4S.js +4 -0
  22. package/build/chunk-BSR2JA4S.js.map +1 -0
  23. package/build/chunk-CGSGJIBN.js +10 -0
  24. package/build/chunk-CGSGJIBN.js.map +1 -0
  25. package/build/{chunk-G7WNPT3Z.js → chunk-CU75PFHB.js} +2 -2
  26. package/build/chunk-EUCZHHS6.js +4 -0
  27. package/build/chunk-EUCZHHS6.js.map +1 -0
  28. package/build/{chunk-D6OKUNFD.js → chunk-FKNQBY7X.js} +2 -2
  29. package/build/chunk-HAYBGBEA.js +6 -0
  30. package/build/chunk-HAYBGBEA.js.map +1 -0
  31. package/build/{chunk-QC3E3TYM.js → chunk-KSQU6TME.js} +2 -2
  32. package/build/chunk-ME4U7FVN.js +4 -0
  33. package/build/chunk-ME4U7FVN.js.map +1 -0
  34. package/build/{chunk-CXPTPJQJ.js → chunk-PDISMWAG.js} +2 -2
  35. package/build/{chunk-ENEPC5FX.js → chunk-QVFKOTXV.js} +2 -2
  36. package/build/{chunk-WCHELYSO.js → chunk-RXKVYQVC.js} +2 -2
  37. package/build/{chunk-WCHELYSO.js.map → chunk-RXKVYQVC.js.map} +1 -1
  38. package/build/chunk-SEGEUJOD.js +99 -0
  39. package/build/chunk-SEGEUJOD.js.map +1 -0
  40. package/build/{chunk-K7BVAIAQ.js → chunk-VDBUFPPQ.js} +2 -2
  41. package/build/{chunk-BC3CFR7E.js → chunk-VZGLJSBQ.js} +2 -2
  42. package/build/{chunk-BC3CFR7E.js.map → chunk-VZGLJSBQ.js.map} +1 -1
  43. package/build/{chunk-NXXHIYUZ.js → chunk-XKB57U76.js} +2 -2
  44. package/build/chunk-XT25CBJM.js +21 -0
  45. package/build/chunk-XT25CBJM.js.map +1 -0
  46. package/build/{chunk-AT7VWBG3.js → chunk-YF675DKE.js} +2 -2
  47. package/build/chunk-ZF4WFDE4.js +4 -0
  48. package/build/chunk-ZF4WFDE4.js.map +1 -0
  49. package/build/{chunk-OB3TKXBE.js → chunk-ZTBNOJP4.js} +2 -2
  50. package/build/index.js +15 -15
  51. package/build/index.js.map +1 -1
  52. package/build/{preview-3KC2IIEU.js → preview-EV2USTXM.js} +2 -2
  53. package/build/render-command-QZNKMGV3.js +4 -0
  54. package/build/render-command-QZNKMGV3.js.map +1 -0
  55. package/client.d.ts +21 -0
  56. package/package.json +3 -3
  57. package/schemas/custom-element.json +1 -1
  58. package/templates/api/files/api.ts.ejs +32 -0
  59. package/templates/custom-element/dependencies.json +14 -0
  60. package/templates/dashboard-modal/dependencies.json +10 -0
  61. package/templates/dashboard-page/dependencies.json +9 -0
  62. package/templates/dashboard-plugin/dependencies.json +10 -0
  63. package/templates/event/files/event.ts.ejs +19 -0
  64. package/build/CreateVersionCommand-6BIMP4EZ.js +0 -4
  65. package/build/CreateVersionCommand-6BIMP4EZ.js.map +0 -1
  66. package/build/DevCommand-QXDEU4WS.js +0 -10
  67. package/build/DevCommand-QXDEU4WS.js.map +0 -1
  68. package/build/GenerateCommand-HUGYYCGG.js +0 -99
  69. package/build/GenerateCommand-HUGYYCGG.js.map +0 -1
  70. package/build/PreviewCommand-T4I3YVQW.js +0 -4
  71. package/build/ServeCommand-CSWUIFSC.js +0 -4
  72. package/build/chunk-3FSVQOPK.js +0 -4
  73. package/build/chunk-3FSVQOPK.js.map +0 -1
  74. package/build/chunk-5DONBW64.js +0 -4
  75. package/build/chunk-ALTUU536.js +0 -17
  76. package/build/chunk-ALTUU536.js.map +0 -1
  77. package/build/chunk-DWN6ZOOC.js +0 -11
  78. package/build/chunk-DWN6ZOOC.js.map +0 -1
  79. package/build/chunk-KPG5JCIB.js +0 -4
  80. package/build/chunk-KPG5JCIB.js.map +0 -1
  81. package/build/chunk-PONHDOS3.js +0 -98
  82. package/build/chunk-PONHDOS3.js.map +0 -1
  83. package/build/chunk-SOO7TNTX.js +0 -6
  84. package/build/chunk-SOO7TNTX.js.map +0 -1
  85. package/build/chunk-YISAQNQ7.js +0 -4
  86. package/build/chunk-YISAQNQ7.js.map +0 -1
  87. package/build/render-command-CUTF4M37.js +0 -4
  88. package/build/render-command-CUTF4M37.js.map +0 -1
  89. /package/build/{PreviewCommand-T4I3YVQW.js.map → PreviewCommand-DCQC2ZG7.js.map} +0 -0
  90. /package/build/{build-2XPZSAZ7.js.map → build-NH7ZWZTO.js.map} +0 -0
  91. /package/build/{chunk-525O5S55.js.map → chunk-4VHD7OBV.js.map} +0 -0
  92. /package/build/{chunk-5DONBW64.js.map → chunk-5IJKDSHA.js.map} +0 -0
  93. /package/build/{chunk-G7WNPT3Z.js.map → chunk-CU75PFHB.js.map} +0 -0
  94. /package/build/{chunk-D6OKUNFD.js.map → chunk-FKNQBY7X.js.map} +0 -0
  95. /package/build/{chunk-QC3E3TYM.js.map → chunk-KSQU6TME.js.map} +0 -0
  96. /package/build/{chunk-CXPTPJQJ.js.map → chunk-PDISMWAG.js.map} +0 -0
  97. /package/build/{chunk-ENEPC5FX.js.map → chunk-QVFKOTXV.js.map} +0 -0
  98. /package/build/{chunk-K7BVAIAQ.js.map → chunk-VDBUFPPQ.js.map} +0 -0
  99. /package/build/{chunk-NXXHIYUZ.js.map → chunk-XKB57U76.js.map} +0 -0
  100. /package/build/{chunk-AT7VWBG3.js.map → chunk-YF675DKE.js.map} +0 -0
  101. /package/build/{chunk-OB3TKXBE.js.map → chunk-ZTBNOJP4.js.map} +0 -0
  102. /package/build/{preview-3KC2IIEU.js.map → preview-EV2USTXM.js.map} +0 -0
  103. /package/templates/custom-element/{element.json.ejs → files/element.json.ejs} +0 -0
  104. /package/templates/custom-element/{element.tsx.ejs → files/element.tsx.ejs} +0 -0
  105. /package/templates/custom-element/{panel.tsx.ejs → files/panel.tsx.ejs} +0 -0
  106. /package/templates/dashboard-menu-plugin/{menu.json.ejs → files/menu.json.ejs} +0 -0
  107. /package/templates/dashboard-modal/{modal.json.ejs → files/modal.json.ejs} +0 -0
  108. /package/templates/dashboard-modal/{modal.tsx.ejs → files/modal.tsx.ejs} +0 -0
  109. /package/templates/dashboard-page/{page.json.ejs → files/page.json.ejs} +0 -0
  110. /package/templates/dashboard-page/{page.tsx.ejs → files/page.tsx.ejs} +0 -0
  111. /package/templates/dashboard-plugin/{plugin.json.ejs → files/plugin.json.ejs} +0 -0
  112. /package/templates/dashboard-plugin/{plugin.tsx.ejs → files/plugin.tsx.ejs} +0 -0
  113. /package/templates/embedded-script/{embedded.html → files/embedded.html} +0 -0
  114. /package/templates/embedded-script/{embedded.json.ejs → files/embedded.json.ejs} +0 -0
  115. /package/templates/embedded-script/{logger.ts → files/logger.ts} +0 -0
  116. /package/templates/embedded-script/{params.dev.json → files/params.dev.json} +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 Q}from"./chunk-CGSGJIBN.js";import{a as Y}from"./chunk-EUCZHHS6.js";import{a as X}from"./chunk-PDISMWAG.js";import"./chunk-XT25CBJM.js";import{A as T,B as R,b as u,e as d,t as H,w as q}from"./chunk-QVFKOTXV.js";import{Ra as $,sa as U,xa as J,ya as K}from"./chunk-SEGEUJOD.js";import{a as k,c as h,d as f,n as o}from"./chunk-HAYBGBEA.js";import{e as I,h as c}from"./chunk-V4TR6DCM.js";c();c();import w,{useMemo as Le}from"react";var L=I(k(),1);c();var A=I(k(),1);import i,{useState as fe,useCallback as ye}from"react";c();var b=I(k(),1);import{useEffect as O,useMemo as ce,useState as B}from"react";import{createServer as le}from"node:http";c();var y=I(k(),1),ne=o.any(),se=o.enum(["info","error","warn","debug","log"]),ie=o.object({message:o.array(ne),level:se,timestamp:o.number()}),me=o.object({stack:o.string(),name:o.string(),message:o.string(),timestamp:o.number()}),ae=o.object({_type:o.literal("log"),exceptions:o.array(me),logs:o.array(ie)}).passthrough(),ge=o.object({_type:o.literal("session-timeout")}).passthrough(),pe=o.discriminatedUnion("_type",[ae,ge]),W=(0,y.variant)({Log:(0,y.fields)(),Exception:(0,y.fields)()}),P="/logs",Z=(e,t)=>{let r,a;if(e.method==="POST"&&e.url===P){let m="";e.on("data",s=>{m+=s.toString()}),e.on("end",()=>{let s;try{s=pe.parse(JSON.parse(m))}catch(g){return a(f.FailedToParseLog(),g,{body:m}),t.statusCode=400,t.end()}let n=[];s._type==="log"&&(n.push(...s.exceptions.map(g=>W.Exception(g))),n.push(...s.logs.map(g=>W.Log(g)))),(0,y.match)(s._type,{log:()=>{r(n)},"session-timeout":()=>{a(f.LogsConnectionTimeout(),{},{body:m}),t.statusCode=200,t.end()}}),t.statusCode=200,t.end()})}else t.statusCode=404,t.end("Not Found");let l={onLog:m=>(r=m,l),onError:m=>(a=m,l)};return l};var F=(0,b.variant)({Success:{},Connecting:{},Failure:{}}),ue=/([0-9a-f-]{36})/,ee=({onLog:e,version:t,appId:r})=>{let[a,l]=B(F.Connecting()),[m,s]=B(),[n,g]=B(),[x,D]=B(),{getAppByVersion:j}=Y(),N=Q(),M=X({type:"backoffice"}),S=ce(()=>le((p,v)=>{Z(p,v).onLog(e).onError((_,V,re)=>{throw S.close(),new h({code:_,cause:V,info:re})})}),[e]);O(()=>(S?.listen(0,async()=>{let p=S.address().port;s(p)}),()=>{S?.listening&&S.close()}),[S]),O(()=>{m&&N(m).then(({url:p})=>{D(p)}).catch(p=>{throw l(F.Failure()),new h({code:f.FailedToConnectToLogsService(),cause:p})})},[N,m]);let{status:z}=q(async()=>{let{data:p}=await j({appId:r,version:t});return p},[]);return O(()=>{(0,b.match)(z,{Success:({result:p})=>{let v=p.components.find(V=>V.compType===U.TOPOLOGY),_=ue.exec(v?.compData.topology.topology.backendApiUrl??"");if(_)g(_[1]);else throw new h({code:f.FailedToGetLogsTopology()})},Error:()=>null,Loading:()=>{}})},[z]),O(()=>{if(x&&n){let p={appId:r,deploymentId:n,destinationUrl:x+P};M.request(J(p)).then(()=>{l(F.Success())}).catch(v=>{throw l(F.Failure()),new h({code:f.FailedToConnectToLogsService(),cause:v})})}},[r,x,n,M]),O(()=>()=>{a.type==="Success"&&n&&M.request(K({appId:r,deploymentId:n}))},[a,n,r,M]),a};c();import de from"react";var G=({message:e,level:t})=>{let r="unknown";return typeof e=="object"?r=JSON.stringify(e):r=String(e),de.createElement(d,{skin:t==="error"?"error":"standard"},r)};var oe=({version:e,appId:t})=>{let{t:r}=R(),[a,l]=fe([]),m=ee({appId:t,version:e,onLog:ye(s=>{l(n=>[...n,...s])},[l])});return(0,A.match)(m,{Success:()=>i.createElement(u,{marginTop:1,marginBottom:1,flexDirection:"column"},i.createElement(u,{marginBottom:1,flexDirection:"column"},i.createElement(d,null,i.createElement(T,{i18nKey:"logs_command.listening_to_logs"})),i.createElement(d,null,i.createElement(T,{i18nKey:"logs_command.prod_env_logs",values:{version:e}}))),a.map((s,n)=>i.createElement(u,{key:n,flexDirection:"column"},i.createElement(u,{columnGap:1},i.createElement(u,{flexShrink:0},i.createElement(d,{skin:"secondary"},new Date(s.timestamp).toLocaleTimeString())),i.createElement(u,{columnGap:1},(0,A.match)(s,{Log:({message:g,level:x})=>g.map((D,j)=>i.createElement(G,{key:`${n}-${j}`,message:D,level:x})),Exception:({message:g})=>i.createElement(G,{key:n,message:g,level:"error"})}))),(0,A.match)(s,{Log:()=>null,Exception:({stack:g})=>i.createElement(d,{skin:"error"},g)})))),Connecting:()=>i.createElement(H,{text:r("logs_command.connecting")}),Failure:()=>null})};var te=(0,L.variant)({Valid:(0,L.fields)(),Error:(0,L.fields)()}),Se=({version:e})=>e?te.Valid({version:e}):te.Error({message:w.createElement(T,{i18nKey:"logs_command.logs_without_version"})}),xe=({version:e})=>{let{model:t}=$(),r=Le(()=>Se({version:e}),[e]);return(0,L.match)(r,{Valid:({version:a})=>w.createElement(oe,{version:a,appId:t.config.appId}),Error:({message:a})=>w.createElement(u,{rowGap:1,marginTop:1,marginBottom:1,flexDirection:"column"},w.createElement(u,{gap:1},w.createElement(d,{skin:"error"},a)))})};export{xe as LogsCommand};
4
+ //# sourceMappingURL=LogsCommand-EQAEPQSZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/LogsCommand/index.ts","../src/components/LogsCommand/LogsCommand.tsx","../src/components/LogsCommand/DisplayServerLogs.tsx","../src/components/LogsCommand/useLogsServer.ts","../src/components/LogsCommand/logsReqHandler.ts","../src/components/LogsCommand/ServerLogMessage.tsx"],"sourcesContent":["export { LogsCommand } from './LogsCommand.js';\n","import type { FC } from 'react';\nimport React, { useMemo } from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { Box, Text } from '@wix/cli-ui-kit';\nimport { fields, match, variant } from 'variant';\nimport { DisplayServerLogs } from './DisplayServerLogs.js';\nimport { useProjectModel } from '../../model.js';\n\nconst ValidationResult = variant({\n Valid: fields<{ version: string }>(),\n Error: fields<{ message: React.JSX.Element }>(),\n});\n\nconst validateInput = ({ version }: { version?: string }) => {\n if (!version) {\n return ValidationResult.Error({\n message: <Trans i18nKey=\"logs_command.logs_without_version\" />,\n });\n }\n return ValidationResult.Valid({ version });\n};\n\nexport const LogsCommand: FC<{\n version?: string;\n}> = ({ version }) => {\n const { model } = useProjectModel();\n\n const validationResult = useMemo(() => validateInput({ version }), [version]);\n\n return match(validationResult, {\n Valid: ({ version }) => (\n <DisplayServerLogs version={version} appId={model.config.appId} />\n ),\n Error: ({ message }) => (\n <Box rowGap={1} marginTop={1} marginBottom={1} flexDirection=\"column\">\n <Box gap={1}>\n <Text skin=\"error\">{message}</Text>\n </Box>\n </Box>\n ),\n });\n};\n","import type { FC } from 'react';\nimport React, { useState, useCallback } from 'react';\nimport { match } from 'variant';\nimport { Spinner, Box, Text } from '@wix/cli-ui-kit';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { useLogsServer } from './useLogsServer.js';\nimport type { AggregatedLog } from './logsReqHandler.js';\nimport { ServerLogMessage } from './ServerLogMessage.js';\n\nexport const DisplayServerLogs: FC<{\n version: string;\n appId: string;\n}> = ({ version, appId }) => {\n const { t } = useTranslation();\n const [logs, setLogs] = useState<AggregatedLog[]>([]);\n const serverResult = useLogsServer({\n appId,\n version,\n onLog: useCallback(\n (serverLogs) => {\n setLogs((prevLogs) => {\n return [...prevLogs, ...serverLogs];\n });\n },\n [setLogs]\n ),\n });\n\n return match(serverResult, {\n Success: () => (\n <Box marginTop={1} marginBottom={1} flexDirection=\"column\">\n <Box marginBottom={1} flexDirection=\"column\">\n <Text>\n <Trans i18nKey=\"logs_command.listening_to_logs\" />\n </Text>\n <Text>\n <Trans i18nKey=\"logs_command.prod_env_logs\" values={{ version }} />\n </Text>\n </Box>\n\n {logs.map((log, logIdx) => (\n <Box key={logIdx} flexDirection=\"column\">\n <Box columnGap={1}>\n <Box flexShrink={0}>\n <Text skin=\"secondary\">\n {new Date(log.timestamp).toLocaleTimeString()}\n </Text>\n </Box>\n <Box columnGap={1}>\n {match(log, {\n Log: ({ message, level }) =>\n message.map((msgItem, idx) => (\n <ServerLogMessage\n key={`${logIdx}-${idx}`}\n message={msgItem}\n level={level}\n />\n )),\n Exception: ({ message }) => (\n <ServerLogMessage\n key={logIdx}\n message={message}\n level=\"error\"\n />\n ),\n })}\n </Box>\n </Box>\n {match(log, {\n Log: () => null,\n Exception: ({ stack }) => <Text skin=\"error\">{stack}</Text>,\n })}\n </Box>\n ))}\n </Box>\n ),\n Connecting: () => <Spinner text={t('logs_command.connecting')} />,\n Failure: () => null,\n });\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { createServer } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport { variant, type VariantOf, match } from 'variant';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { useAsync } from '@wix/cli-ui-kit';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport {\n attachLogger,\n deattachLogger,\n} from '@wix/ambassador-ctp-app-cloud-backend-service-v1-app-cloud-backend-deployment/http';\nimport { useTunnel } from '@wix/cli-tunnel';\nimport {\n useDevCenterClient,\n ComponentType,\n type TopologyComponent,\n} from '@wix/dev-center-client';\nimport type { OnLog } from './logsReqHandler.js';\nimport { LOGS_ENDPOINT, logsReqHandler } from './logsReqHandler.js';\n\nconst ServerResult = variant({\n Success: {},\n Connecting: {},\n Failure: {},\n});\n\nconst deploymentIdRegex = /([0-9a-f-]{36})/;\n\nexport const useLogsServer = ({\n onLog,\n version,\n appId,\n}: {\n onLog: OnLog;\n version: string;\n appId: string;\n}) => {\n const [result, setResult] = useState<VariantOf<typeof ServerResult>>(\n ServerResult.Connecting()\n );\n const [localServerPort, setLocalServerPort] = useState<number>();\n const [deploymentId, setDeploymentId] = useState<string>();\n const [tunnelUrl, setTunnelUrl] = useState<string>();\n const { getAppByVersion } = useDevCenterClient();\n const createTunnelClient = useTunnel();\n const httpClient = useHttpClient({ type: 'backoffice' });\n\n const server = useMemo(() => {\n return createServer((req, res) => {\n logsReqHandler(req, res)\n .onLog(onLog)\n .onError((code, err, info) => {\n server.close();\n throw new CliError({ code, cause: err, info });\n });\n });\n }, [onLog]);\n\n useEffect(() => {\n server?.listen(0, async () => {\n const port = (server.address() as AddressInfo).port;\n setLocalServerPort(port);\n });\n return () => {\n if (server?.listening) {\n server.close();\n }\n };\n }, [server]);\n\n useEffect(() => {\n if (localServerPort) {\n createTunnelClient(localServerPort)\n .then(({ url }) => {\n setTunnelUrl(url);\n })\n .catch((err) => {\n setResult(ServerResult.Failure());\n throw new CliError({\n code: CliErrorCode.FailedToConnectToLogsService(),\n cause: err,\n });\n });\n }\n }, [createTunnelClient, localServerPort]);\n\n const { status } = useAsync(async () => {\n const { data } = await getAppByVersion({ appId, version });\n return data;\n }, []);\n\n useEffect(() => {\n match(status, {\n Success: ({ result }) => {\n const topologyComponent = result.components.find(\n (component): component is TopologyComponent => {\n return component.compType === ComponentType.TOPOLOGY;\n }\n );\n const match = deploymentIdRegex.exec(\n topologyComponent?.compData.topology.topology.backendApiUrl ?? ''\n );\n if (match) {\n setDeploymentId(match[1]);\n } else {\n throw new CliError({\n code: CliErrorCode.FailedToGetLogsTopology(),\n });\n }\n },\n Error: () => null,\n Loading: () => {},\n });\n }, [status]);\n\n useEffect(() => {\n if (tunnelUrl && deploymentId) {\n const loggerReq = {\n appId,\n deploymentId,\n destinationUrl: tunnelUrl + LOGS_ENDPOINT,\n };\n httpClient\n .request(attachLogger(loggerReq))\n .then(() => {\n setResult(ServerResult.Success());\n })\n .catch((err) => {\n setResult(ServerResult.Failure());\n throw new CliError({\n code: CliErrorCode.FailedToConnectToLogsService(),\n cause: err,\n });\n });\n }\n }, [appId, tunnelUrl, deploymentId, httpClient]);\n\n useEffect(() => {\n return () => {\n // Detach the logger depending on the `result` state.\n // This is why I place it in a separate `useEffect` from the one that attaches the logger.\n // Otherwise, it will cause a circular dependency.\n if (result.type === 'Success' && deploymentId) {\n httpClient.request(\n deattachLogger({\n appId,\n deploymentId,\n })\n );\n }\n };\n }, [result, deploymentId, appId, httpClient]);\n\n return result;\n};\n","import type { IncomingMessage, ServerResponse } from 'node:http';\nimport type { CliErrorCodeType } from '@wix/cli-error';\nimport { CliErrorCode } from '@wix/cli-error';\nimport { z } from 'zod';\nimport { variant, fields, match, type VariantOf } from 'variant';\n\nconst LogMessageSchema = z.any();\nexport type LogMessage = z.infer<typeof LogMessageSchema>;\n\nconst LogMessageLevelSchema = z.enum(['info', 'error', 'warn', 'debug', 'log']);\nexport type LogMessageLevel = z.infer<typeof LogMessageLevelSchema>;\n\nconst LogItemSchema = z.object({\n message: z.array(LogMessageSchema),\n level: LogMessageLevelSchema,\n timestamp: z.number(),\n});\n\ntype LogItem = z.infer<typeof LogItemSchema>;\n\nconst ExceptionItemSchema = z.object({\n stack: z.string(),\n name: z.string(),\n message: z.string(),\n timestamp: z.number(),\n});\n\ntype ExceptionItem = z.infer<typeof ExceptionItemSchema>;\n\nconst LogResponseSchema = z\n .object({\n _type: z.literal('log'),\n exceptions: z.array(ExceptionItemSchema),\n logs: z.array(LogItemSchema),\n })\n .passthrough();\n\nconst SessionTimeoutResponseSchema = z\n .object({\n _type: z.literal('session-timeout'),\n })\n .passthrough();\n\nconst ServerLogResponseSchema = z.discriminatedUnion('_type', [\n LogResponseSchema,\n SessionTimeoutResponseSchema,\n]);\n\ntype ServerLogResponse = z.infer<typeof ServerLogResponseSchema>;\n\nconst AggregatedLog = variant({\n Log: fields<LogItem>(),\n Exception: fields<ExceptionItem>(),\n});\nexport type AggregatedLog = VariantOf<typeof AggregatedLog>;\n\nexport type OnLog = (data: AggregatedLog[]) => void;\nexport type OnError = (\n errType: CliErrorCodeType,\n err: unknown,\n info?: Record<string, unknown>\n) => void;\n\nexport const LOGS_ENDPOINT = '/logs';\n\nexport const logsReqHandler = (req: IncomingMessage, res: ServerResponse) => {\n let onLog: OnLog;\n let onError: OnError;\n\n if (req.method === 'POST' && req.url === LOGS_ENDPOINT) {\n let body = '';\n\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n\n req.on('end', () => {\n let parsedBody: ServerLogResponse;\n try {\n parsedBody = ServerLogResponseSchema.parse(JSON.parse(body));\n } catch (err) {\n onError(CliErrorCode.FailedToParseLog(), err, { body });\n res.statusCode = 400;\n return res.end();\n }\n\n const resultLogs: AggregatedLog[] = [];\n\n if (parsedBody._type === 'log') {\n resultLogs.push(\n ...parsedBody.exceptions.map((exception) =>\n AggregatedLog.Exception(exception)\n )\n );\n resultLogs.push(\n ...parsedBody.logs.map((log) => AggregatedLog.Log(log))\n );\n }\n\n match(parsedBody._type, {\n log: () => {\n onLog(resultLogs);\n },\n 'session-timeout': () => {\n onError(CliErrorCode.LogsConnectionTimeout(), {}, { body });\n res.statusCode = 200;\n res.end();\n },\n });\n\n res.statusCode = 200;\n res.end();\n });\n } else {\n res.statusCode = 404;\n res.end('Not Found');\n }\n\n const api = {\n onLog: (callback: OnLog) => {\n onLog = callback;\n return api;\n },\n onError: (callback: OnError) => {\n onError = callback;\n return api;\n },\n };\n\n return api;\n};\n","import React, { type FC } from 'react';\nimport { Text } from '@wix/cli-ui-kit';\nimport type { LogMessage, LogMessageLevel } from './logsReqHandler.js';\n\nexport const ServerLogMessage: FC<{\n message: LogMessage;\n level: LogMessageLevel;\n}> = ({ message, level }) => {\n let content = 'unknown';\n\n if (typeof message === 'object') {\n content = JSON.stringify(message);\n } else {\n content = String(message);\n }\n\n return <Text skin={level === 'error' ? 'error' : 'standard'}>{content}</Text>;\n};\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","React","useMemo","import_variant","init_esm_shims","import_variant","React","useState","useCallback","init_esm_shims","import_variant","useEffect","useMemo","useState","createServer","init_esm_shims","import_variant","LogMessageSchema","z","LogMessageLevelSchema","LogItemSchema","ExceptionItemSchema","LogResponseSchema","SessionTimeoutResponseSchema","ServerLogResponseSchema","AggregatedLog","LOGS_ENDPOINT","logsReqHandler","req","res","onLog","onError","body","chunk","parsedBody","err","CliErrorCode","resultLogs","exception","log","api","callback","ServerResult","deploymentIdRegex","useLogsServer","onLog","version","appId","result","setResult","useState","localServerPort","setLocalServerPort","deploymentId","setDeploymentId","tunnelUrl","setTunnelUrl","getAppByVersion","useDevCenterClient","createTunnelClient","useTunnel","httpClient","useHttpClient","server","useMemo","createServer","req","res","logsReqHandler","code","err","info","CliError","useEffect","port","url","CliErrorCode","status","useAsync","data","topologyComponent","component","ComponentType","match","loggerReq","LOGS_ENDPOINT","attachLogger","deattachLogger","init_esm_shims","React","ServerLogMessage","message","level","content","React","Text","DisplayServerLogs","version","appId","t","useTranslation","logs","setLogs","useState","serverResult","useLogsServer","useCallback","serverLogs","prevLogs","React","Box_default","Text","Trans","log","logIdx","message","level","msgItem","idx","ServerLogMessage","stack","Spinner","ValidationResult","validateInput","version","React","Trans","LogsCommand","model","useProjectModel","validationResult","useMemo","DisplayServerLogs","message","Box_default","Text"]}
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a}from"./chunk-XKB57U76.js";import"./chunk-VDBUFPPQ.js";import"./chunk-QZS4ARDD.js";import"./chunk-2V3FQGOH.js";import"./chunk-AHUF5IOW.js";import"./chunk-EUCZHHS6.js";import"./chunk-CU75PFHB.js";import"./chunk-FKNQBY7X.js";import"./chunk-YF675DKE.js";import"./chunk-ZTBNOJP4.js";import"./chunk-PDISMWAG.js";import"./chunk-XT25CBJM.js";import"./chunk-QVFKOTXV.js";import"./chunk-4VHD7OBV.js";import"./chunk-SEGEUJOD.js";import"./chunk-HAYBGBEA.js";import"./chunk-V4TR6DCM.js";export{a as PreviewCommand};
4
+ //# sourceMappingURL=PreviewCommand-DCQC2ZG7.js.map
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a as T,b as B}from"./chunk-VZGLJSBQ.js";import{a as j,b as U}from"./chunk-VDBUFPPQ.js";import{b as A}from"./chunk-2V3FQGOH.js";import"./chunk-AHUF5IOW.js";import"./chunk-EUCZHHS6.js";import"./chunk-CU75PFHB.js";import{b as I}from"./chunk-YF675DKE.js";import{g as F,h,i as M}from"./chunk-ZTBNOJP4.js";import"./chunk-PDISMWAG.js";import"./chunk-XT25CBJM.js";import{A as s,B as y,b as t,e as S,f as x,g,i as P,s as w,t as E,w as C}from"./chunk-QVFKOTXV.js";import{b as _}from"./chunk-4VHD7OBV.js";import{Ra as v}from"./chunk-SEGEUJOD.js";import{a as q}from"./chunk-HAYBGBEA.js";import{e as W,h as r}from"./chunk-V4TR6DCM.js";r();r();import l from"react";r();var k=W(q(),1);import c,{createContext as Q,useContext as X}from"react";r();import{preview as z}from"vite";import{useCallback as G,useEffect as H,useRef as J}from"react";function b(){let o=J(),{model:n}=v();return H(()=>()=>{o.current?.httpServer.close()},[]),G(async()=>{let i=await z(await B(n,{type:"build"}));return o.current=i,T(i)},[n])}var K=Q(null),d=({children:o})=>{let{model:n}=v(),{t:i}=y(),V=F(),D=b(),{status:L}=C(async()=>{await j(n.projectFolder);let m=await D(),a=await I(n.projectFolder),O=_(a,m);return{armTag:await V.createAppRelease(O,n.config.projectId),serverUrl:m}},[]);return(0,k.match)(L,{Error:()=>null,Loading:()=>c.createElement(E,{text:i("serve_command.starting_serve_environment")}),Success:({result:{armTag:m,serverUrl:a}})=>c.createElement(K.Provider,{value:{serverUrl:a}},c.createElement(h,{armTag:m},o))})};function f(){let o=X(K);if(o===null)throw new Error("useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>");return o}r();import e from"react";function N(){let{site:o}=M(),{serverUrl:n}=f();return e.createElement(t,{flexDirection:"column"},e.createElement(t,{gap:1},e.createElement(S,{skin:"success"},e.createElement(P,null)),e.createElement(s,{i18nKey:"serve_command.starting_serve_environment_success",components:[e.createElement(w,{url:n})]})),e.createElement(t,{gap:1},e.createElement(x,null),e.createElement(s,{i18nKey:"serve_command.production_build"})),e.createElement(t,{gap:1,paddingTop:1,paddingBottom:1},e.createElement(g,null),e.createElement(s,{i18nKey:"general.dev_site.current",values:{name:o.displayName}})),e.createElement(t,{paddingBottom:1,flexDirection:"column"},e.createElement(U,null)))}var Y=()=>l.createElement(A,null,l.createElement(d,null,l.createElement(N,null)));export{Y as ServeCommand,d as ServeEnvironmentProvider,f as useServeEnvironment};
4
+ //# sourceMappingURL=ServeCommand-CERFKHB5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ServeCommand/index.ts","../src/components/ServeCommand/ServeCommand.tsx","../src/components/ServeCommand/ServeEnvironment.tsx","../src/components/ServeCommand/hooks/usePreviewServer.ts","../src/components/ServeCommand/ServeCommandScreen.tsx"],"sourcesContent":["export { ServeCommand } from './ServeCommand.js';\nexport {\n ServeEnvironmentProvider,\n useServeEnvironment,\n} from './ServeEnvironment.js';\n","import React, { type FC } from 'react';\nimport { SiteIdProvider } from '../../site-id/SiteIdProvider.js';\nimport { ServeEnvironmentProvider } from './ServeEnvironment.js';\nimport { ServeCommandScreen } from './ServeCommandScreen.js';\n\nexport const ServeCommand: FC = () => {\n return (\n <SiteIdProvider>\n <ServeEnvironmentProvider>\n <ServeCommandScreen />\n </ServeEnvironmentProvider>\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 { updateAppManifestWithBaseUrl } from '@wix/cli-app-manifest';\nimport { useARMClient } from '@wix/arm-client';\nimport { Spinner, useAsync } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { ArmTagProvider } from '../../context/armTag.js';\nimport { readAppManifestFile } from '../../app-manifest/file.js';\nimport { assertBuildOutputExists } from '../../files/assert-build-output-exists.js';\nimport { usePreviewServer } from './hooks/usePreviewServer.js';\nimport { useProjectModel } from '../../model.js';\n\ntype ServeEnvironment = {\n serverUrl: string;\n};\n\nconst ServeEnvironmentContext = createContext<ServeEnvironment | null>(null);\n\nexport const ServeEnvironmentProvider: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { model } = useProjectModel();\n const { t } = useTranslation();\n const arm = useARMClient();\n const createPreviewServer = usePreviewServer();\n\n const { status } = useAsync(async () => {\n await assertBuildOutputExists(model.projectFolder);\n const serverUrl = await createPreviewServer();\n\n const manifest = await readAppManifestFile(model.projectFolder);\n const updatedManifest = updateAppManifestWithBaseUrl(manifest, serverUrl);\n\n const armTag = await arm.createAppRelease(\n updatedManifest,\n model.config.projectId\n );\n\n return { armTag, serverUrl };\n }, []);\n\n return match(status, {\n Error: () => null,\n Loading: () => (\n <Spinner text={t('serve_command.starting_serve_environment')}></Spinner>\n ),\n Success: ({ result: { armTag, serverUrl } }) => (\n <ServeEnvironmentContext.Provider value={{ serverUrl }}>\n <ArmTagProvider armTag={armTag}>{children}</ArmTagProvider>\n </ServeEnvironmentContext.Provider>\n ),\n });\n};\n\nexport function useServeEnvironment(): ServeEnvironment {\n const context = useContext(ServeEnvironmentContext);\n if (context === null) {\n throw new Error(\n 'useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>'\n );\n }\n return context;\n}\n","import { preview, type PreviewServer } from 'vite';\nimport { useCallback, useEffect, useRef } from 'react';\nimport { useProjectModel } from '../../../model.js';\nimport { getClientViteConfig } from '../../../vite/index.js';\nimport { getViteServerUrl } from '../../../vite/vite-server-url.js';\nimport { ConfigType } from '../../../vite/vite-config-options.js';\n\nexport function usePreviewServer() {\n const previewServerRef = useRef<PreviewServer>();\n const { model } = useProjectModel();\n\n useEffect(() => {\n return () => {\n previewServerRef.current?.httpServer.close();\n };\n }, []);\n\n return useCallback(async () => {\n const previewServer = await preview(\n await getClientViteConfig(model, { type: ConfigType.build })\n );\n\n previewServerRef.current = previewServer;\n\n return getViteServerUrl(previewServer);\n }, [model]);\n}\n","import {\n Box,\n InfoIcon,\n Link,\n PointerIcon,\n SuccessIcon,\n Text,\n} from '@wix/cli-ui-kit';\nimport React from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { useSiteId } from '../../site-id/useSiteId.js';\nimport { useServeEnvironment } from './ServeEnvironment.js';\nimport { PlatformViewer } from '../Platform/PlatformViewer.js';\n\nexport function ServeCommandScreen() {\n const { site } = useSiteId();\n const { serverUrl } = useServeEnvironment();\n\n return (\n <Box flexDirection=\"column\">\n <Box gap={1}>\n <Text skin=\"success\">\n <SuccessIcon />\n </Text>\n <Trans\n i18nKey=\"serve_command.starting_serve_environment_success\"\n components={[<Link url={serverUrl} />]}\n />\n </Box>\n <Box gap={1}>\n <InfoIcon />\n <Trans i18nKey=\"serve_command.production_build\" />\n </Box>\n <Box gap={1} paddingTop={1} paddingBottom={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box paddingBottom={1} flexDirection=\"column\">\n <PlatformViewer />\n </Box>\n </Box>\n );\n}\n"],"mappings":";;ylBAAAA,ICAAC,IAAA,OAAOC,MAAwB,QCA/BC,IAMA,IAAAC,EAAsB,SANtB,OAAOC,GAGL,iBAAAC,EACA,cAAAC,MACK,QCLPC,IAAA,OAAS,WAAAC,MAAmC,OAC5C,OAAS,eAAAC,EAAa,aAAAC,EAAW,UAAAC,MAAc,QAMxC,SAASC,GAAmB,CACjC,IAAMC,EAAmBC,EAAsB,EACzC,CAAE,MAAAC,CAAM,EAAIC,EAAgB,EAElC,OAAAC,EAAU,IACD,IAAM,CACXJ,EAAiB,SAAS,WAAW,MAAM,CAC7C,EACC,CAAC,CAAC,EAEEK,EAAY,SAAY,CAC7B,IAAMC,EAAgB,MAAMC,EAC1B,MAAMC,EAAoBN,EAAO,CAAE,YAAuB,CAAC,CAC7D,EAEA,OAAAF,EAAiB,QAAUM,EAEpBG,EAAiBH,CAAa,CACvC,EAAG,CAACJ,CAAK,CAAC,CACZ,CDLA,IAAMQ,EAA0BC,EAAuC,IAAI,EAE9DC,EAER,CAAC,CAAE,SAAAC,CAAS,IAAM,CACrB,GAAM,CAAE,MAAAC,CAAM,EAAIC,EAAgB,EAC5B,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvBC,EAAMC,EAAa,EACnBC,EAAsBC,EAAiB,EAEvC,CAAE,OAAAC,CAAO,EAAIC,EAAS,SAAY,CACtC,MAAMC,EAAwBV,EAAM,aAAa,EACjD,IAAMW,EAAY,MAAML,EAAoB,EAEtCM,EAAW,MAAMC,EAAoBb,EAAM,aAAa,EACxDc,EAAkBC,EAA6BH,EAAUD,CAAS,EAOxE,MAAO,CAAE,OALM,MAAMP,EAAI,iBACvBU,EACAd,EAAM,OAAO,SACf,EAEiB,UAAAW,CAAU,CAC7B,EAAG,CAAC,CAAC,EAEL,SAAO,SAAMH,EAAQ,CACnB,MAAO,IAAM,KACb,QAAS,IACPQ,EAAA,cAACC,EAAA,CAAQ,KAAMf,EAAE,0CAA0C,EAAG,EAEhE,QAAS,CAAC,CAAE,OAAQ,CAAE,OAAAgB,EAAQ,UAAAP,CAAU,CAAE,IACxCK,EAAA,cAACpB,EAAwB,SAAxB,CAAiC,MAAO,CAAE,UAAAe,CAAU,GACnDK,EAAA,cAACG,EAAA,CAAe,OAAQD,GAASnB,CAAS,CAC5C,CAEJ,CAAC,CACH,EAEO,SAASqB,GAAwC,CACtD,IAAMC,EAAUC,EAAW1B,CAAuB,EAClD,GAAIyB,IAAY,KACd,MAAM,IAAI,MACR,4EACF,EAEF,OAAOA,CACT,CEnEAE,IAQA,OAAOC,MAAW,QAMX,SAASC,GAAqB,CACnC,GAAM,CAAE,KAAAC,CAAK,EAAIC,EAAU,EACrB,CAAE,UAAAC,CAAU,EAAIC,EAAoB,EAE1C,OACEC,EAAA,cAACC,EAAA,CAAI,cAAc,UACjBD,EAAA,cAACC,EAAA,CAAI,IAAK,GACRD,EAAA,cAACE,EAAA,CAAK,KAAK,WACTF,EAAA,cAACG,EAAA,IAAY,CACf,EACAH,EAAA,cAACI,EAAA,CACC,QAAQ,mDACR,WAAY,CAACJ,EAAA,cAACK,EAAA,CAAK,IAAKP,EAAW,CAAE,EACvC,CACF,EACAE,EAAA,cAACC,EAAA,CAAI,IAAK,GACRD,EAAA,cAACM,EAAA,IAAS,EACVN,EAAA,cAACI,EAAA,CAAM,QAAQ,iCAAiC,CAClD,EACAJ,EAAA,cAACC,EAAA,CAAI,IAAK,EAAG,WAAY,EAAG,cAAe,GACzCD,EAAA,cAACO,EAAA,IAAY,EACbP,EAAA,cAACI,EAAA,CACC,QAAQ,2BACR,OAAQ,CAAE,KAAMR,EAAK,WAAY,EACnC,CACF,EACAI,EAAA,cAACC,EAAA,CAAI,cAAe,EAAG,cAAc,UACnCD,EAAA,cAACQ,EAAA,IAAe,CAClB,CACF,CAEJ,CHxCO,IAAMC,EAAmB,IAE5BC,EAAA,cAACC,EAAA,KACCD,EAAA,cAACE,EAAA,KACCF,EAAA,cAACG,EAAA,IAAmB,CACtB,CACF","names":["init_esm_shims","init_esm_shims","React","init_esm_shims","import_variant","React","createContext","useContext","init_esm_shims","preview","useCallback","useEffect","useRef","usePreviewServer","previewServerRef","useRef","model","useProjectModel","useEffect","useCallback","previewServer","preview","getViteConfig","getViteServerUrl","ServeEnvironmentContext","createContext","ServeEnvironmentProvider","children","model","useProjectModel","t","useTranslation","arm","useARMClient","createPreviewServer","usePreviewServer","status","useAsync","assertBuildOutputExists","serverUrl","manifest","readAppManifestFile","updatedManifest","updateAppManifestWithBaseUrl","React","Spinner","armTag","ArmTagProvider","useServeEnvironment","context","useContext","init_esm_shims","React","ServeCommandScreen","site","useSiteId","serverUrl","useServeEnvironment","React","Box_default","Text","SuccessIcon","Trans","Link","InfoIcon","PointerIcon","PlatformViewer","ServeCommand","React","SiteIdProvider","ServeEnvironmentProvider","ServeCommandScreen"]}
1
+ {"version":3,"sources":["../src/components/ServeCommand/index.ts","../src/components/ServeCommand/ServeCommand.tsx","../src/components/ServeCommand/ServeEnvironment.tsx","../src/components/ServeCommand/hooks/usePreviewServer.ts","../src/components/ServeCommand/ServeCommandScreen.tsx"],"sourcesContent":["export { ServeCommand } from './ServeCommand.js';\nexport {\n ServeEnvironmentProvider,\n useServeEnvironment,\n} from './ServeEnvironment.js';\n","import React, { type FC } from 'react';\nimport { SiteIdProvider } from '../../site-id/SiteIdProvider.js';\nimport { ServeEnvironmentProvider } from './ServeEnvironment.js';\nimport { ServeCommandScreen } from './ServeCommandScreen.js';\n\nexport const ServeCommand: FC = () => {\n return (\n <SiteIdProvider>\n <ServeEnvironmentProvider>\n <ServeCommandScreen />\n </ServeEnvironmentProvider>\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 { updateAppManifestWithBaseUrl } from '@wix/cli-app-manifest';\nimport { useARMClient } from '@wix/arm-client';\nimport { Spinner, useAsync } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { ArmTagProvider } from '../../context/armTag.js';\nimport { readAppManifestFile } from '../../app-manifest/file.js';\nimport { assertBuildOutputExists } from '../../files/assert-build-output-exists.js';\nimport { usePreviewServer } from './hooks/usePreviewServer.js';\nimport { useProjectModel } from '../../model.js';\n\ntype ServeEnvironment = {\n serverUrl: string;\n};\n\nconst ServeEnvironmentContext = createContext<ServeEnvironment | null>(null);\n\nexport const ServeEnvironmentProvider: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { model } = useProjectModel();\n const { t } = useTranslation();\n const arm = useARMClient();\n const createPreviewServer = usePreviewServer();\n\n const { status } = useAsync(async () => {\n await assertBuildOutputExists(model.projectFolder);\n const serverUrl = await createPreviewServer();\n\n const manifest = await readAppManifestFile(model.projectFolder);\n const updatedManifest = updateAppManifestWithBaseUrl(manifest, serverUrl);\n\n const armTag = await arm.createAppRelease(\n updatedManifest,\n model.config.projectId\n );\n\n return { armTag, serverUrl };\n }, []);\n\n return match(status, {\n Error: () => null,\n Loading: () => (\n <Spinner text={t('serve_command.starting_serve_environment')}></Spinner>\n ),\n Success: ({ result: { armTag, serverUrl } }) => (\n <ServeEnvironmentContext.Provider value={{ serverUrl }}>\n <ArmTagProvider armTag={armTag}>{children}</ArmTagProvider>\n </ServeEnvironmentContext.Provider>\n ),\n });\n};\n\nexport function useServeEnvironment(): ServeEnvironment {\n const context = useContext(ServeEnvironmentContext);\n if (context === null) {\n throw new Error(\n 'useServeEnvironment() cannot be used without an <ServeEnvironmentProvider>'\n );\n }\n return context;\n}\n","import { preview, type PreviewServer } from 'vite';\nimport { useCallback, useEffect, useRef } from 'react';\nimport { useProjectModel } from '../../../model.js';\nimport { getClientViteConfig } from '../../../vite/index.js';\nimport { getViteServerUrl } from '../../../vite/vite-server-url.js';\nimport { ConfigType } from '../../../vite/vite-config-options.js';\n\nexport function usePreviewServer() {\n const previewServerRef = useRef<PreviewServer>();\n const { model } = useProjectModel();\n\n useEffect(() => {\n return () => {\n previewServerRef.current?.httpServer.close();\n };\n }, []);\n\n return useCallback(async () => {\n const previewServer = await preview(\n await getClientViteConfig(model, { type: ConfigType.build })\n );\n\n previewServerRef.current = previewServer;\n\n return getViteServerUrl(previewServer);\n }, [model]);\n}\n","import {\n Box,\n InfoIcon,\n Link,\n PointerIcon,\n SuccessIcon,\n Text,\n} from '@wix/cli-ui-kit';\nimport React from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { useSiteId } from '../../site-id/useSiteId.js';\nimport { useServeEnvironment } from './ServeEnvironment.js';\nimport { PlatformViewer } from '../Platform/PlatformViewer.js';\n\nexport function ServeCommandScreen() {\n const { site } = useSiteId();\n const { serverUrl } = useServeEnvironment();\n\n return (\n <Box flexDirection=\"column\">\n <Box gap={1}>\n <Text skin=\"success\">\n <SuccessIcon />\n </Text>\n <Trans\n i18nKey=\"serve_command.starting_serve_environment_success\"\n components={[<Link url={serverUrl} />]}\n />\n </Box>\n <Box gap={1}>\n <InfoIcon />\n <Trans i18nKey=\"serve_command.production_build\" />\n </Box>\n <Box gap={1} paddingTop={1} paddingBottom={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box paddingBottom={1} flexDirection=\"column\">\n <PlatformViewer />\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","React","init_esm_shims","import_variant","React","createContext","useContext","init_esm_shims","preview","useCallback","useEffect","useRef","usePreviewServer","previewServerRef","useRef","model","useProjectModel","useEffect","useCallback","previewServer","preview","getViteConfig","getViteServerUrl","ServeEnvironmentContext","createContext","ServeEnvironmentProvider","children","model","useProjectModel","t","useTranslation","arm","useARMClient","createPreviewServer","usePreviewServer","status","useAsync","assertBuildOutputExists","serverUrl","manifest","readAppManifestFile","updatedManifest","updateAppManifestWithBaseUrl","React","Spinner","armTag","ArmTagProvider","useServeEnvironment","context","useContext","init_esm_shims","React","ServeCommandScreen","site","useSiteId","serverUrl","useServeEnvironment","React","Box_default","Text","SuccessIcon","Trans","Link","InfoIcon","PointerIcon","PlatformViewer","ServeCommand","React","SiteIdProvider","ServeEnvironmentProvider","ServeCommandScreen"]}
@@ -1,4 +1,4 @@
1
1
  import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
- import{a as w,c as E,d as g}from"./chunk-YISAQNQ7.js";import{b as l,c as f}from"./chunk-BC3CFR7E.js";import{a as u}from"./chunk-AT7VWBG3.js";import"./chunk-525O5S55.js";import{Ga as s,Ha as d,P as a,V as m,ra as c}from"./chunk-PONHDOS3.js";import{a as A,c as t,d as i}from"./chunk-SOO7TNTX.js";import{e as y,h as p}from"./chunk-V4TR6DCM.js";p();import{cwd as F}from"node:process";import{build as B}from"vite";import{join as S}from"node:path";var C=y(A(),1);async function Y(){let e=await d(F());if(e.components.length===0)throw new t({code:i.NoExtensionsFound()});w(e.components);let r=[];if(e.backendComponents.length>0&&(await B(await f(e,{type:"build"},{appSecret:"__APP_SECRET__",webhooksPublicKey:"__WEBHOOKS_PUBLIC_KEY__"})).catch(o=>{throw new t({code:i.FailedToBuildApp({cause:o}),cause:o})}),e.backendComponents.some((0,C.isType)(s.Event)))){let o=a(e.projectFolder),{getBackendEventSlug:h}=new m;r=await import(S(o,"getRegisteredEvents.mjs")).then(async({getRegisteredEvents:k})=>{let v=await k();return Promise.all(v.map(h))})}let _=await B(await l(e,{type:"build"},{baseBackendUrl:c})).catch(n=>{throw new t({code:i.FailedToBuildApp({cause:n}),cause:n})}),b=await E({appId:e.config.appId,components:e.components,sentryDSN:e.config.sentryDSN,componentSourceBuilder:g({model:e,buildOutput:_}),registeredEvents:r});await u({projectFolder:e.projectFolder,manifest:b})}export{Y as build};
4
- //# sourceMappingURL=build-2XPZSAZ7.js.map
3
+ import{a as w,c as E,d as g}from"./chunk-ZF4WFDE4.js";import{b as l,c as f}from"./chunk-VZGLJSBQ.js";import{a as u}from"./chunk-YF675DKE.js";import"./chunk-4VHD7OBV.js";import{Oa as s,Pa as d,T as a,Z as m,za as c}from"./chunk-SEGEUJOD.js";import{a as A,c as t,d as i}from"./chunk-HAYBGBEA.js";import{e as y,h as p}from"./chunk-V4TR6DCM.js";p();import{cwd as F}from"node:process";import{build as B}from"vite";import{join as S}from"node:path";var C=y(A(),1);async function Y(){let e=await d(F());if(e.components.length===0)throw new t({code:i.NoExtensionsFound()});w(e.components);let r=[];if(e.backendComponents.length>0&&(await B(await f(e,{type:"build"},{appSecret:"__APP_SECRET__",webhooksPublicKey:"__WEBHOOKS_PUBLIC_KEY__"})).catch(o=>{throw new t({code:i.FailedToBuildApp({cause:o}),cause:o})}),e.backendComponents.some((0,C.isType)(s.Event)))){let o=a(e.projectFolder),{getBackendEventSlug:h}=new m;r=await import(S(o,"getRegisteredEvents.mjs")).then(async({getRegisteredEvents:k})=>{let v=await k();return Promise.all(v.map(h))})}let _=await B(await l(e,{type:"build"},{baseBackendUrl:c})).catch(n=>{throw new t({code:i.FailedToBuildApp({cause:n}),cause:n})}),b=await E({appId:e.config.appId,components:e.components,sentryDSN:e.config.sentryDSN,componentSourceBuilder:g({model:e,buildOutput:_}),registeredEvents:r});await u({projectFolder:e.projectFolder,manifest:b})}export{Y as build};
4
+ //# sourceMappingURL=build-NH7ZWZTO.js.map
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a as K}from"./chunk-EUCZHHS6.js";import{b as ne}from"./chunk-CU75PFHB.js";import{b as q,c as ue,d as de,e as Se}from"./chunk-ZTBNOJP4.js";import{a as ce}from"./chunk-PDISMWAG.js";import{c as oe,d as j,g as se}from"./chunk-XT25CBJM.js";import{A as g,B as S,D as re,d as ee,e as te,l as F,m as B,q as k,r as ie,t as y,u as N,w,x as O}from"./chunk-QVFKOTXV.js";import{F as pe,Ra as h,p as Z,pa as le,q as R,ua as ae,va as me}from"./chunk-SEGEUJOD.js";import{a as C,c as b,d as x,n as I,o as X}from"./chunk-HAYBGBEA.js";import{e as v,h as o}from"./chunk-V4TR6DCM.js";o();var Q=v(C(),1);import z,{useCallback as Pe}from"react";o();var $=v(C(),1);import M from"react";o();o();var Te=v(C(),1);import _,{useState as je}from"react";o();var ye=v(C(),1);import fe from"react";o();import{useMemo as ke}from"react";function Ee(e){return{cliAction:({question:s,action:r,key:t,additionalInfo:i})=>e.report(me({question:s,action:r,key:t,additionalInfo:JSON.stringify(i)})),cliFlowStepAnswered:({question:s,answer:r,additionalInfo:t})=>e.report(ae({question:s,answer:r,additionalInfo:JSON.stringify(t)}))}}function T(){let e=j();return ke(()=>Ee(e),[e])}var ge=({onSubmit:e,onError:s,sites:r})=>{let t=T(),{t:i}=S(),{getDevSitesCount:n,getDevSitesLimit:p}=K(),{status:f}=w(()=>Promise.all([n(),p()]),[],{onError:s}),m=d=>{t.cliFlowStepAnswered({question:i("site_type_select.label"),answer:d.title}),e(d.value)};return(0,ye.match)(f,{Error:()=>null,Loading:()=>fe.createElement(y,{text:i("general.loading")}),Success:({result:[d,a]})=>{let l=d>=a,Fe=r.length===0;return fe.createElement(B,{label:i("site_type_select.label"),options:[{availability:Fe?F.Disabled({reason:i("site_type_select.no_sites")}):F.Enabled(),title:i("site_type_select.pick_existing_site"),value:"select-existing-site"},{title:i("site_type_select.create_new_dev_site"),value:"create-dev-site",availability:l?F.Disabled({reason:i("site_type_select.create_new_dev_site.disabled",{limit:a})}):F.Enabled()}],onSubmit:m})}})};o();var Ce=v(C(),1);import A from"react";o();import J from"react";o();o();import{useMemo as Le}from"react";o();o();var _e=I.record(I.object({appDefinitionId:I.string().optional(),permissions:I.object({revoked:I.boolean()}).optional()}));var H=class{constructor(s){this.httpClient=s}isAppInstalled=async({metaSiteId:s,appId:r})=>{try{let{data:t}=await this.httpClient.request({url:`/_api/msm/v1/meta-site/editor-client-spec-map/${s}`}),i=_e.parse(t);return Object.values(i).some(p=>p.appDefinitionId===r&&!p.permissions?.revoked)}catch(t){throw new b({code:x.FailedToCheckIfAppInstalled(),cause:t})}}};function E(){let e=ce({type:"general"});return Le(()=>new H(e),[e])}var P=v(C(),1);o();import L from"react";var ve=({siteId:e,appId:s})=>{let{t:r}=S(),t=T();return ee(async(i,n)=>{n.return&&(t.cliAction({question:r("install_app_on_site.warning.instructions"),key:"enter",action:"install_app_on_site"}),await se(`https://manage.wix.com/installer/install?metaSiteId=${e}&appId=${s}&platform=cli&version=latest`))}),L.createElement(L.Fragment,null,L.createElement(g,{i18nKey:"install_app_on_site.warning"}),L.createElement(g,{i18nKey:"install_app_on_site.warning.instructions",components:[L.createElement(ie,{value:"enter"})]}))};var Y=(0,P.variant)({Success:{},Canceled:{}});function De(e){return e&&typeof e=="object"&&"name"in e&&e.name==="AbortError"}var W=({appId:e,site:s,onSubmit:r,onError:t})=>{let{isAppInstalled:i}=E(),{status:n}=w(async({signal:p})=>{let{appInstallationPollInterval:f}=X();try{return await R(()=>i({metaSiteId:s.id,appId:e}),{interval:f??2e3,timeout:{milliseconds:60*1e3*2,signal:p}}),Y.Success()}catch(m){if(m instanceof Z)throw new b({code:x.SiteSelectorTimedout(),cause:m});if(De(m))return Y.Canceled();throw m}},[],{onError:t,onSuccess:p=>{(0,P.isType)(p,Y.Success)&&r()}});return(0,P.match)(n,{Error:()=>null,Loading:()=>J.createElement(ve,{siteId:s.id,appId:e}),Success:()=>J.createElement(k,{type:"success"},J.createElement(g,{i18nKey:"install_app_on_site.finished_successfully"}))})};var we=({status:e,appId:s,onSubmit:r,onError:t})=>{let{t:i}=S();return(0,Ce.match)(e,{NotRequested:()=>null,Error:()=>null,Loading:()=>A.createElement(y,{text:i("create_dev_site.loading")}),Success:({result:n})=>A.createElement(A.Fragment,null,A.createElement(g,{i18nKey:"create_dev_site.success",components:[A.createElement(te,{skin:"success",bold:!0})],values:{name:n.displayName}}),A.createElement(W,{appId:s,site:n,onSubmit:()=>r(n),onError:t}))})};var be={"general.loading":"Loading...","site_type_select.label":"Select Development Site","site_type_select.create_new_dev_site":"Create a new Development Site","site_type_select.create_new_dev_site.disabled":"You have reached the maximum number of {limit} Development Sites","site_type_select.pick_existing_site":"Pick an existing site","site_type_select.no_sites":"No sites found","create_dev_site.loading":"Creating your new Development Site...","create_dev_site.success":"Development Site <0>{name}</0> created successfully! \u{1F680}","site_list_select.label":"Select Site","install_app_on_site.warning":"Your new application needs to be installed on the selected Development Site","install_app_on_site.warning.instructions":"Press <0/> to install the application in your browser","install_app_on_site.finished_successfully":"App installed on Development Site."};o();import D,{useState as Oe}from"react";var Ie=v(C(),1);o();import Be,{useCallback as Ne}from"react";var xe=({onSubmit:e,sites:s})=>{let{t:r}=S(),t=T(),i=Ne(n=>{t.cliFlowStepAnswered({question:r("site_list_select.label"),answer:n.title}),e(n.value)},[t,e,r]);return Be.createElement(B,{label:r("site_list_select.label"),options:s.map(n=>({key:n.id,title:n.displayName,description:n.viewUrl,value:n})),onSubmit:i})};var he=({sites:e,appId:s,onSubmit:r,onError:t})=>{let{t:i}=S(),{isAppInstalled:n}=E(),[p,f]=Oe(null),m=O((a,l)=>n({metaSiteId:l.id,appId:s}),{onError:t});async function d(a){await m.execute(a)?r(a):f(a)}return D.createElement(D.Fragment,null,D.createElement(xe,{onSubmit:d,sites:e}),(0,Ie.isType)(m.status,"Loading")&&D.createElement(y,{text:i("general.loading")}),p&&D.createElement(W,{appId:s,site:p,onSubmit:()=>r(p),onError:t}))};var G=({appId:e,biLogger:s,onSubmit:r,onError:t})=>{let[i,n]=je(null),{createDevSite:p}=K(),f=q(),{status:m}=w(()=>f.querySites({query:{cursorPaging:{limit:100}}}),[],{onError:t}),d=O(()=>p(),{onError:t});function a(l){n(l),l==="create-dev-site"&&d.execute()}return _.createElement(oe,{value:s},_.createElement(re,{messages:be},(0,Te.match)(m,{Error:()=>null,Loading:()=>_.createElement(y,{text:_.createElement(g,{i18nKey:"general.loading"})}),Success:({result:l})=>_.createElement(_.Fragment,null,_.createElement(ge,{onSubmit:a,onError:t,sites:l}),i==="create-dev-site"&&_.createElement(we,{status:d.status,appId:e,onSubmit:r,onError:t}),i==="select-existing-site"&&_.createElement(he,{sites:l,appId:e,onSubmit:r,onError:t}))})))};var U=({state:e,onSubmit:s})=>{let r=N(),{t}=S(),{model:i}=h(),n=j();return M.createElement(M.Fragment,null,(0,$.match)(e,{NotConfigured:(0,$.constant)(M.createElement(k,{type:"insight"},t("general.no_site_id_configured"))),NotFound:({id:p})=>M.createElement(k,{type:"error"},t("general.site_id_not_found",{id:p}))}),M.createElement(G,{appId:i.config.appId,biLogger:n,onSubmit:s,onError:r}))};var Ei=({children:e,siteId:s})=>{let r=N(),{model:{projectFolder:t}}=h(),i=ne(),n=q(),{status:p,merge:f}=w(async()=>Se({projectFolder:t,siteListClient:n,siteId:s,writeDebugLog:i}),[]),m=Pe(async a=>{try{await le(t,{siteId:a.id}),f({result:de.Resolved({site:a})})}catch{throw new b({code:x.FailedToSaveDevelopmentSite({path:pe})})}},[f,t]),d=Pe(a=>m(a).catch(r),[r,m]);return(0,Q.match)(p,{Error:()=>null,Loading:()=>z.createElement(y,null),Success:({result:a})=>(0,Q.match)(a,{NotConfigured:l=>z.createElement(U,{state:l,onSubmit:d}),NotFound:l=>z.createElement(U,{state:l,onSubmit:d}),Resolved:({site:l})=>z.createElement(ue.Provider,{value:{site:l,setSite:m}},typeof e=="function"?e(l):e)})})};o();var V=v(C(),1);import{useCallback as Ae}from"react";function Ni(){let{model:e}=h(),s=Ae(t=>e.components.some(i=>i.platforms.some((0,V.isType)(t.type))),[e.components]),r=Ae(t=>e.components.every(i=>i.platforms.some((0,V.isType)(t.type))||i.platforms.length===0),[e.components]);return{isPlatformExists:s,hasSinglePlatform:r}}export{G as a,Ei as b,Ni as c};
4
+ //# sourceMappingURL=chunk-2V3FQGOH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/site-id/SiteIdProvider.tsx","../src/site-id/ResolveSiteId.tsx","../../cli-site-selector/src/index.ts","../../cli-site-selector/src/SiteSelector.tsx","../../cli-site-selector/src/SiteTypeSelect.tsx","../../cli-site-selector/src/bi.ts","../../cli-site-selector/src/CreateDevSite.tsx","../../cli-site-selector/src/WaitForAppToBeInstalled.tsx","../../metasite-manager-client/src/index.ts","../../metasite-manager-client/src/useMetasiteManagerClient.ts","../../metasite-manager-client/src/metasite-manager-client.ts","../../metasite-manager-client/src/schemas.ts","../../cli-site-selector/src/OpenBrowser.tsx","../../cli-site-selector/src/messages.json","../../cli-site-selector/src/SelectExistingSite.tsx","../../cli-site-selector/src/SiteListSelect.tsx","../src/components/Platform/usePlatform.tsx"],"sourcesContent":["import React, { type FC, type ReactNode, useCallback } from 'react';\nimport { match } from 'variant';\nimport { useDebugLog } from '@wix/cli-debug-log';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { APP_CONFIG_PATH } from '@wix/cli-app-definitions';\nimport { useAsync, useExit, Spinner } from '@wix/cli-ui-kit';\nimport { type Site, useSiteListClient } from '@wix/site-list-client';\nimport { saveAppConfig } from '../files/app.config.js';\nimport { useProjectModel } from '../model.js';\nimport { ResolveSiteId } from './ResolveSiteId.js';\nimport { SiteIdContext } from './context.js';\nimport { SiteIdState } from './site-id-state.js';\nimport { resolveConfiguredSite } from './resolve-configured-site.js';\n\nexport const SiteIdProvider: FC<{\n siteId?: string;\n children: ReactNode | ((site: Site) => ReactNode);\n}> = ({ children, siteId }) => {\n const exit = useExit();\n const {\n model: { projectFolder },\n } = useProjectModel();\n const writeDebugLog = useDebugLog();\n const siteListClient = useSiteListClient();\n\n const { status, merge } = useAsync(\n async () =>\n resolveConfiguredSite({\n projectFolder,\n siteListClient,\n siteId,\n writeDebugLog,\n }),\n []\n );\n\n const setSite = useCallback(\n async (site: Site) => {\n try {\n await saveAppConfig(projectFolder, { siteId: site.id });\n merge({ result: SiteIdState.Resolved({ site }) });\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToSaveDevelopmentSite({\n path: APP_CONFIG_PATH,\n }),\n });\n }\n },\n [merge, projectFolder]\n );\n\n const handleResolveSiteId = useCallback(\n (site: Site) => setSite(site).catch(exit),\n [exit, setSite]\n );\n\n return match(status, {\n Error: () => null,\n Loading: () => <Spinner />,\n Success: ({ result: state }) => {\n return match(state, {\n NotConfigured: (variant) => (\n <ResolveSiteId state={variant} onSubmit={handleResolveSiteId} />\n ),\n NotFound: (variant) => (\n <ResolveSiteId state={variant} onSubmit={handleResolveSiteId} />\n ),\n Resolved: ({ site }) => (\n <SiteIdContext.Provider\n value={{\n site,\n setSite,\n }}\n >\n {typeof children === 'function' ? children(site) : children}\n </SiteIdContext.Provider>\n ),\n });\n },\n });\n};\n","import React, { type FC } from 'react';\nimport { match, constant } from 'variant';\nimport type { Site } from '@wix/site-list-client';\nimport { Alert, useExit } from '@wix/cli-ui-kit';\nimport { 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 type { SiteIdState } from './site-id-state.js';\n\ninterface Props {\n state: SiteIdState<'NotConfigured' | 'NotFound'>;\n onSubmit: (site: Site) => void;\n}\n\nexport const ResolveSiteId: FC<Props> = ({ state, onSubmit }) => {\n const exit = useExit();\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const biLogger = useBiLogger();\n\n return (\n <>\n {match(state, {\n NotConfigured: constant(\n <Alert type=\"insight\">{t('general.no_site_id_configured')}</Alert>\n ),\n NotFound: ({ id }) => (\n <Alert type=\"error\">{t('general.site_id_not_found', { id })}</Alert>\n ),\n })}\n <SiteSelector\n appId={model.config.appId}\n biLogger={biLogger}\n onSubmit={onSubmit}\n onError={exit}\n />\n </>\n );\n};\n","export { SiteSelector } from './SiteSelector.js';\n","import React, { type FC, useState } from 'react';\nimport { match } from 'variant';\nimport { I18nProvider, Trans } from '@wix/cli-i18n';\nimport type { Site } from '@wix/site-list-client';\nimport { Spinner, useAsync, useAsyncCallback } from '@wix/cli-ui-kit';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useSiteListClient } from '@wix/site-list-client';\nimport type { BiLogger } from '@wix/cli-telemetry';\nimport { BiProvider } from '@wix/cli-telemetry-react';\nimport { SiteTypeSelect, type SiteType } from './SiteTypeSelect.js';\nimport { CreateDevSite } from './CreateDevSite.js';\nimport messages from './messages.json';\nimport { SelectExistingSite } from './SelectExistingSite.js';\n\ninterface Props {\n appId: string;\n biLogger: BiLogger;\n onSubmit: (site: Site) => void;\n onError: (error: unknown) => void;\n}\n\nexport const SiteSelector: FC<Props> = ({\n appId,\n biLogger,\n onSubmit,\n onError,\n}) => {\n const [siteType, setSiteType] = useState<SiteType | null>(null);\n const { createDevSite } = useDevCenterClient();\n const siteListClient = useSiteListClient();\n\n const { status } = useAsync(\n () =>\n siteListClient.querySites({\n query: {\n cursorPaging: {\n limit: 100,\n },\n },\n }),\n [],\n {\n onError,\n }\n );\n\n const createSite = useAsyncCallback(() => createDevSite(), {\n onError,\n });\n\n function handleSelectSiteType(siteType: SiteType) {\n setSiteType(siteType);\n if (siteType === 'create-dev-site') {\n createSite.execute();\n }\n }\n\n return (\n <BiProvider value={biLogger}>\n <I18nProvider messages={messages}>\n {match(status, {\n Error: () => null,\n Loading: () => <Spinner text={<Trans i18nKey=\"general.loading\" />} />,\n Success: ({ result: sites }) => (\n <>\n <SiteTypeSelect\n onSubmit={handleSelectSiteType}\n onError={onError}\n sites={sites}\n />\n {siteType === 'create-dev-site' && (\n <CreateDevSite\n status={createSite.status}\n appId={appId}\n onSubmit={onSubmit}\n onError={onError}\n />\n )}\n {siteType === 'select-existing-site' && (\n <SelectExistingSite\n sites={sites}\n appId={appId}\n onSubmit={onSubmit}\n onError={onError}\n />\n )}\n </>\n ),\n })}\n </I18nProvider>\n </BiProvider>\n );\n};\n","import React, { type FC } from 'react';\nimport { match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport type { SelectOption } from '@wix/cli-ui-kit';\nimport {\n Spinner,\n SelectInput,\n useAsync,\n SelectOptionAvailability,\n} from '@wix/cli-ui-kit';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport type { Site } from '@wix/site-list-client';\nimport { useSiteSelectorBi } from './bi.js';\n\nexport type SiteType = 'create-dev-site' | 'select-existing-site';\ninterface Props {\n onSubmit: (siteType: SiteType) => void;\n onError: (error: unknown) => void;\n sites: Site[];\n}\n\nexport const SiteTypeSelect: FC<Props> = ({ onSubmit, onError, sites }) => {\n const bi = useSiteSelectorBi();\n const { t } = useTranslation();\n const { getDevSitesCount, getDevSitesLimit } = useDevCenterClient();\n const { status } = useAsync(\n () => Promise.all([getDevSitesCount(), getDevSitesLimit()]),\n [],\n { onError }\n );\n\n const handleSubmit = (option: SelectOption<SiteType>) => {\n bi.cliFlowStepAnswered({\n question: t('site_type_select.label'),\n answer: option.title,\n });\n onSubmit(option.value);\n };\n\n return match(status, {\n Error: () => null,\n Loading: () => <Spinner text={t('general.loading')} />,\n Success: ({ result: [devSitesCount, devSitesLimit] }) => {\n const isDevSitesLimitReached = devSitesCount >= devSitesLimit;\n const userHasNoSites = sites.length === 0;\n\n return (\n <SelectInput<SiteType>\n label={t('site_type_select.label')}\n options={[\n {\n availability: userHasNoSites\n ? SelectOptionAvailability.Disabled({\n reason: t('site_type_select.no_sites'),\n })\n : SelectOptionAvailability.Enabled(),\n title: t('site_type_select.pick_existing_site'),\n value: 'select-existing-site',\n },\n {\n title: t('site_type_select.create_new_dev_site'),\n value: 'create-dev-site',\n availability: isDevSitesLimitReached\n ? SelectOptionAvailability.Disabled({\n reason: t('site_type_select.create_new_dev_site.disabled', {\n limit: devSitesLimit,\n }),\n })\n : SelectOptionAvailability.Enabled(),\n },\n ]}\n onSubmit={handleSubmit}\n />\n );\n },\n });\n};\n","import { useMemo } from 'react';\nimport type { BiLogger } from '@wix/cli-telemetry';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport {\n wixCliAction,\n wixCliAppFlowStepsAnswers,\n} from '@wix/bi-logger-dev-tools-data/v2';\n\nexport function siteSelectorBiEvents(biLogger: BiLogger) {\n return {\n cliAction: ({\n question,\n action,\n key,\n additionalInfo,\n }: {\n question: string;\n action: string;\n key: string;\n additionalInfo?: Record<string, unknown>;\n }) =>\n biLogger.report(\n wixCliAction({\n question,\n action,\n key,\n additionalInfo: JSON.stringify(additionalInfo),\n })\n ),\n cliFlowStepAnswered: ({\n question,\n answer,\n additionalInfo,\n }: {\n question: string;\n answer: string;\n additionalInfo?: Record<string, unknown>;\n }) =>\n biLogger.report(\n wixCliAppFlowStepsAnswers({\n question,\n answer,\n additionalInfo: JSON.stringify(additionalInfo),\n })\n ),\n };\n}\n\nexport function useSiteSelectorBi() {\n const biLogger = useBiLogger();\n return useMemo(() => siteSelectorBiEvents(biLogger), [biLogger]);\n}\n","import React, { type FC } from 'react';\nimport { match } from 'variant';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport type { AsyncCallbackStatus } from '@wix/cli-ui-kit';\nimport { Text, Spinner } from '@wix/cli-ui-kit';\nimport type { Site } from '@wix/site-list-client';\nimport { WaitForAppToBeInstalled } from './WaitForAppToBeInstalled.js';\n\ninterface Props {\n status: AsyncCallbackStatus<Site>;\n appId: string;\n onSubmit: (site: Site) => void;\n onError: (error: unknown) => void;\n}\n\nexport const CreateDevSite: FC<Props> = ({\n status,\n appId,\n onSubmit,\n onError,\n}) => {\n const { t } = useTranslation();\n\n return match(status, {\n NotRequested: () => null,\n Error: () => null,\n Loading: () => <Spinner text={t('create_dev_site.loading')} />,\n Success: ({ result }) => (\n <>\n <Trans\n i18nKey=\"create_dev_site.success\"\n components={[<Text skin=\"success\" bold />]}\n values={{ name: result.displayName }}\n />\n <WaitForAppToBeInstalled\n appId={appId}\n site={result}\n onSubmit={() => onSubmit(result)}\n onError={onError}\n />\n </>\n ),\n });\n};\n","import pWaitFor, { TimeoutError } from 'p-wait-for';\nimport React, { type FC } from 'react';\nimport { Trans } from '@wix/cli-i18n';\nimport { Alert, useAsync } from '@wix/cli-ui-kit';\nimport { useMetasiteManagerClient } from '@wix/metasite-manager-client';\nimport { isType, match, variant } from 'variant';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { Site } from '@wix/site-list-client';\nimport { OpenBrowser } from './OpenBrowser.js';\n\ninterface Props {\n site: Site;\n appId: string;\n onSubmit: () => void;\n onError: (error: unknown) => void;\n}\n\nexport const AppInstallData = variant({\n Success: {},\n Canceled: {},\n});\n\nfunction isAbortError(error: unknown) {\n return (\n error &&\n typeof error === 'object' &&\n 'name' in error &&\n error.name === 'AbortError'\n );\n}\n\nexport const WaitForAppToBeInstalled: FC<Props> = ({\n appId,\n site,\n onSubmit,\n onError,\n}) => {\n const { isAppInstalled } = useMetasiteManagerClient();\n\n const { status } = useAsync(\n async ({ signal }) => {\n const { appInstallationPollInterval } = getTestOverrides();\n\n try {\n await pWaitFor(() => isAppInstalled({ metaSiteId: site.id, appId }), {\n interval: appInstallationPollInterval ?? 2000,\n timeout: {\n milliseconds: 60 * 1000 * 2,\n signal,\n },\n });\n\n return AppInstallData.Success();\n } catch (error) {\n if (error instanceof TimeoutError) {\n throw new CliError({\n code: CliErrorCode.SiteSelectorTimedout(),\n cause: error,\n });\n }\n\n if (isAbortError(error)) {\n return AppInstallData.Canceled();\n }\n\n throw error;\n }\n },\n [],\n {\n onError,\n onSuccess: (result) => {\n if (isType(result, AppInstallData.Success)) {\n onSubmit();\n }\n },\n }\n );\n\n return match(status, {\n Error: () => null,\n Loading: () => <OpenBrowser siteId={site.id} appId={appId} />,\n Success: () => (\n <Alert type=\"success\">\n <Trans i18nKey=\"install_app_on_site.finished_successfully\" />\n </Alert>\n ),\n });\n};\n","export { useMetasiteManagerClient } from './useMetasiteManagerClient.js';\n","import { useMemo } from 'react';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { MetasiteManagerClient } from './metasite-manager-client.js';\n\nexport function useMetasiteManagerClient(): MetasiteManagerClient {\n const httpClient = useHttpClient({ type: 'general' });\n return useMemo(() => new MetasiteManagerClient(httpClient), [httpClient]);\n}\n","import { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { HttpClient } from '@wix/cli-http-client';\nimport { clientSpecMapSchema } from './schemas.js';\n\nexport class MetasiteManagerClient {\n constructor(private readonly httpClient: HttpClient) {}\n\n public isAppInstalled = async ({\n metaSiteId,\n appId,\n }: {\n metaSiteId: string;\n appId: string;\n }) => {\n try {\n const { data } = await this.httpClient.request({\n url: `/_api/msm/v1/meta-site/editor-client-spec-map/${metaSiteId}`,\n });\n\n const clientSpecMap = clientSpecMapSchema.parse(data);\n\n const isInstalled = Object.values(clientSpecMap).some(\n (spec) => spec.appDefinitionId === appId && !spec.permissions?.revoked\n );\n\n return isInstalled;\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToCheckIfAppInstalled(),\n cause: e,\n });\n }\n };\n}\n","import { z } from 'zod';\n\nexport const clientSpecMapSchema = z.record(\n z.object({\n appDefinitionId: z.string().optional(),\n permissions: z.object({ revoked: z.boolean() }).optional(),\n })\n);\n\nexport type ClientSpecMap = z.TypeOf<typeof clientSpecMapSchema>;\n","import React, { type FC } from 'react';\nimport { Key, useInput } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { openBrowser } from '@wix/user-browser';\nimport { useSiteSelectorBi } from './bi.js';\n\ninterface Props {\n siteId: string;\n appId: string;\n}\n\nexport const OpenBrowser: FC<Props> = ({ siteId, appId }) => {\n const { t } = useTranslation();\n const bi = useSiteSelectorBi();\n\n useInput(async (input, key) => {\n if (key.return) {\n bi.cliAction({\n question: t('install_app_on_site.warning.instructions'),\n key: 'enter',\n action: 'install_app_on_site',\n });\n await openBrowser(\n `https://manage.wix.com/installer/install?metaSiteId=${siteId}&appId=${appId}&platform=cli&version=latest`\n );\n }\n });\n\n return (\n <>\n <Trans i18nKey=\"install_app_on_site.warning\" />\n <Trans\n i18nKey=\"install_app_on_site.warning.instructions\"\n components={[<Key value=\"enter\" />]}\n />\n </>\n );\n};\n","{\n \"general.loading\": \"Loading...\",\n \"site_type_select.label\": \"Select Development Site\",\n \"site_type_select.create_new_dev_site\": \"Create a new Development Site\",\n \"site_type_select.create_new_dev_site.disabled\": \"You have reached the maximum number of {limit} Development Sites\",\n \"site_type_select.pick_existing_site\": \"Pick an existing site\",\n \"site_type_select.no_sites\": \"No sites found\",\n \"create_dev_site.loading\": \"Creating your new Development Site...\",\n \"create_dev_site.success\": \"Development Site <0>{name}</0> created successfully! 🚀\",\n \"site_list_select.label\": \"Select Site\",\n \"install_app_on_site.warning\": \"Your new application needs to be installed on the selected Development Site\",\n \"install_app_on_site.warning.instructions\": \"Press <0/> to install the application in your browser\",\n \"install_app_on_site.finished_successfully\": \"App installed on Development Site.\"\n}\n","import React, { useState } from 'react';\nimport { Spinner, useAsyncCallback } from '@wix/cli-ui-kit';\nimport { useMetasiteManagerClient } from '@wix/metasite-manager-client';\nimport type { Site } from '@wix/site-list-client';\nimport { isType } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { WaitForAppToBeInstalled } from './WaitForAppToBeInstalled.js';\nimport { SiteListSelect } from './SiteListSelect.js';\n\ninterface Props {\n sites: Site[];\n appId: string;\n onSubmit: (site: Site) => void;\n onError: (error: unknown) => void;\n}\n\nexport const SelectExistingSite = ({\n sites,\n appId,\n onSubmit,\n onError,\n}: Props) => {\n const { t } = useTranslation();\n const { isAppInstalled } = useMetasiteManagerClient();\n const [siteToInstallAppOn, setSiteToInstallAppOn] = useState<Site | null>(\n null\n );\n const checkAppInstalled = useAsyncCallback(\n (_, site: Site) => isAppInstalled({ metaSiteId: site.id, appId }),\n {\n onError,\n }\n );\n\n async function handleSelectSite(site: Site) {\n const isInstalled = await checkAppInstalled.execute(site);\n if (isInstalled) {\n onSubmit(site);\n } else {\n setSiteToInstallAppOn(site);\n }\n }\n\n return (\n <>\n <SiteListSelect onSubmit={handleSelectSite} sites={sites} />\n {isType(checkAppInstalled.status, 'Loading') && (\n <Spinner text={t('general.loading')} />\n )}\n {siteToInstallAppOn && (\n <WaitForAppToBeInstalled\n appId={appId}\n site={siteToInstallAppOn}\n onSubmit={() => onSubmit(siteToInstallAppOn)}\n onError={onError}\n />\n )}\n </>\n );\n};\n","import React, { useCallback, type FC } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport type { SelectOption } from '@wix/cli-ui-kit';\nimport { SelectInput } from '@wix/cli-ui-kit';\nimport { type Site } from '@wix/site-list-client';\nimport { useSiteSelectorBi } from './bi.js';\n\ninterface Props {\n onSubmit: (site: Site) => void;\n sites: Site[];\n}\n\nexport const SiteListSelect: FC<Props> = ({ onSubmit, sites }) => {\n const { t } = useTranslation();\n const bi = useSiteSelectorBi();\n\n const handleSubmit = useCallback(\n (option: SelectOption<Site>) => {\n bi.cliFlowStepAnswered({\n question: t('site_list_select.label'),\n answer: option.title,\n });\n onSubmit(option.value);\n },\n [bi, onSubmit, t]\n );\n\n return (\n <SelectInput<Site>\n label={t('site_list_select.label')}\n options={sites.map((site) => ({\n key: site.id,\n title: site.displayName,\n description: site.viewUrl,\n value: site,\n }))}\n onSubmit={handleSubmit}\n />\n );\n};\n","import { useCallback } from 'react';\nimport { isType } from 'variant';\nimport type { PlatformType } from '@wix/cli-app-definitions';\nimport { useProjectModel } from '../../model.js';\n\nexport function usePlatform() {\n const { model } = useProjectModel();\n\n const isPlatformExists = useCallback(\n (platformType: PlatformType) =>\n model.components.some((component) =>\n component.platforms.some(isType(platformType.type))\n ),\n [model.components]\n );\n\n const hasSinglePlatform = useCallback(\n (platformType: PlatformType) =>\n model.components.every(\n (component) =>\n component.platforms.some(isType(platformType.type)) ||\n component.platforms.length === 0\n ),\n [model.components]\n );\n\n return {\n isPlatformExists,\n hasSinglePlatform,\n };\n}\n"],"mappings":";;0jBAAAA,IACA,IAAAC,EAAsB,SADtB,OAAOC,GAAkC,eAAAC,OAAmB,QCA5DC,IACA,IAAAC,EAAgC,SADhC,OAAOC,MAAwB,QCA/BC,ICAAC,IACA,IAAAC,GAAsB,SADtB,OAAOC,GAAkB,YAAAC,OAAgB,QCAzCC,IACA,IAAAC,GAAsB,SADtB,OAAOC,OAAwB,QCA/BC,IAAA,OAAS,WAAAC,OAAe,QAQjB,SAASC,GAAqBC,EAAoB,CACvD,MAAO,CACL,UAAW,CAAC,CACV,SAAAC,EACA,OAAAC,EACA,IAAAC,EACA,eAAAC,CACF,IAMEJ,EAAS,OACPK,GAAa,CACX,SAAAJ,EACA,OAAAC,EACA,IAAAC,EACA,eAAgB,KAAK,UAAUC,CAAc,CAC/C,CAAC,CACH,EACF,oBAAqB,CAAC,CACpB,SAAAH,EACA,OAAAK,EACA,eAAAF,CACF,IAKEJ,EAAS,OACPO,GAA0B,CACxB,SAAAN,EACA,OAAAK,EACA,eAAgB,KAAK,UAAUF,CAAc,CAC/C,CAAC,CACH,CACJ,CACF,CAEO,SAASI,GAAoB,CAClC,IAAMR,EAAWS,EAAY,EAC7B,OAAOC,GAAQ,IAAMX,GAAqBC,CAAQ,EAAG,CAACA,CAAQ,CAAC,CACjE,CD9BO,IAAMW,GAA4B,CAAC,CAAE,SAAAC,EAAU,QAAAC,EAAS,MAAAC,CAAM,IAAM,CACzE,IAAMC,EAAKC,EAAkB,EACvB,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvB,CAAE,iBAAAC,EAAkB,iBAAAC,CAAiB,EAAIC,EAAmB,EAC5D,CAAE,OAAAC,CAAO,EAAIC,EACjB,IAAM,QAAQ,IAAI,CAACJ,EAAiB,EAAGC,EAAiB,CAAC,CAAC,EAC1D,CAAC,EACD,CAAE,QAAAP,CAAQ,CACZ,EAEMW,EAAgBC,GAAmC,CACvDV,EAAG,oBAAoB,CACrB,SAAUE,EAAE,wBAAwB,EACpC,OAAQQ,EAAO,KACjB,CAAC,EACDb,EAASa,EAAO,KAAK,CACvB,EAEA,SAAO,UAAMH,EAAQ,CACnB,MAAO,IAAM,KACb,QAAS,IAAMI,GAAA,cAACC,EAAA,CAAQ,KAAMV,EAAE,iBAAiB,EAAG,EACpD,QAAS,CAAC,CAAE,OAAQ,CAACW,EAAeC,CAAa,CAAE,IAAM,CACvD,IAAMC,EAAyBF,GAAiBC,EAC1CE,GAAiBjB,EAAM,SAAW,EAExC,OACEY,GAAA,cAACM,EAAA,CACC,MAAOf,EAAE,wBAAwB,EACjC,QAAS,CACP,CACE,aAAcc,GACVE,EAAyB,SAAS,CAChC,OAAQhB,EAAE,2BAA2B,CACvC,CAAC,EACDgB,EAAyB,QAAQ,EACrC,MAAOhB,EAAE,qCAAqC,EAC9C,MAAO,sBACT,EACA,CACE,MAAOA,EAAE,sCAAsC,EAC/C,MAAO,kBACP,aAAca,EACVG,EAAyB,SAAS,CAChC,OAAQhB,EAAE,gDAAiD,CACzD,MAAOY,CACT,CAAC,CACH,CAAC,EACDI,EAAyB,QAAQ,CACvC,CACF,EACA,SAAUT,EACZ,CAEJ,CACF,CAAC,CACH,EE5EAU,IACA,IAAAC,GAAsB,SADtB,OAAOC,MAAwB,QCA/BC,IACA,OAAOC,MAAwB,QCD/BC,ICAAC,IAAA,OAAS,WAAAC,OAAe,QCAxBC,ICAAC,IAEO,IAAMC,GAAsBC,EAAE,OACnCA,EAAE,OAAO,CACP,gBAAiBA,EAAE,OAAO,EAAE,SAAS,EACrC,YAAaA,EAAE,OAAO,CAAE,QAASA,EAAE,QAAQ,CAAE,CAAC,EAAE,SAAS,CAC3D,CAAC,CACH,EDHO,IAAMC,EAAN,KAA4B,CACjC,YAA6BC,EAAwB,CAAxB,gBAAAA,CAAyB,CAE/C,eAAiB,MAAO,CAC7B,WAAAC,EACA,MAAAC,CACF,IAGM,CACJ,GAAI,CACF,GAAM,CAAE,KAAAC,CAAK,EAAI,MAAM,KAAK,WAAW,QAAQ,CAC7C,IAAK,iDAAiDF,CAAU,EAClE,CAAC,EAEKG,EAAgBC,GAAoB,MAAMF,CAAI,EAMpD,OAJoB,OAAO,OAAOC,CAAa,EAAE,KAC9CE,GAASA,EAAK,kBAAoBJ,GAAS,CAACI,EAAK,aAAa,OACjE,CAGF,OAASC,EAAG,CACV,MAAM,IAAIC,EAAS,CACjB,KAAMC,EAAa,4BAA4B,EAC/C,MAAOF,CACT,CAAC,CACH,CACF,CACF,ED7BO,SAASG,GAAkD,CAChE,IAAMC,EAAaC,GAAc,CAAE,KAAM,SAAU,CAAC,EACpD,OAAOC,GAAQ,IAAM,IAAIC,EAAsBH,CAAU,EAAG,CAACA,CAAU,CAAC,CAC1E,CFFA,IAAAI,EAAuC,SKLvCC,IAAA,OAAOC,MAAwB,QAWxB,IAAMC,GAAyB,CAAC,CAAE,OAAAC,EAAQ,MAAAC,CAAM,IAAM,CAC3D,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvBC,EAAKC,EAAkB,EAE7B,OAAAC,GAAS,MAAOC,EAAOC,IAAQ,CACzBA,EAAI,SACNJ,EAAG,UAAU,CACX,SAAUF,EAAE,0CAA0C,EACtD,IAAK,QACL,OAAQ,qBACV,CAAC,EACD,MAAMO,GACJ,uDAAuDT,CAAM,UAAUC,CAAK,8BAC9E,EAEJ,CAAC,EAGCS,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACC,EAAA,CAAM,QAAQ,8BAA8B,EAC7CD,EAAA,cAACC,EAAA,CACC,QAAQ,2CACR,WAAY,CAACD,EAAA,cAACE,GAAA,CAAI,MAAM,QAAQ,CAAE,EACpC,CACF,CAEJ,ELnBO,IAAMC,KAAiB,WAAQ,CACpC,QAAS,CAAC,EACV,SAAU,CAAC,CACb,CAAC,EAED,SAASC,GAAaC,EAAgB,CACpC,OACEA,GACA,OAAOA,GAAU,UACjB,SAAUA,GACVA,EAAM,OAAS,YAEnB,CAEO,IAAMC,EAAqC,CAAC,CACjD,MAAAC,EACA,KAAAC,EACA,SAAAC,EACA,QAAAC,CACF,IAAM,CACJ,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAyB,EAE9C,CAAE,OAAAC,CAAO,EAAIC,EACjB,MAAO,CAAE,OAAAC,CAAO,IAAM,CACpB,GAAM,CAAE,4BAAAC,CAA4B,EAAIC,EAAiB,EAEzD,GAAI,CACF,aAAMC,EAAS,IAAMP,EAAe,CAAE,WAAYH,EAAK,GAAI,MAAAD,CAAM,CAAC,EAAG,CACnE,SAAUS,GAA+B,IACzC,QAAS,CACP,aAAc,GAAK,IAAO,EAC1B,OAAAD,CACF,CACF,CAAC,EAEMZ,EAAe,QAAQ,CAChC,OAASE,EAAO,CACd,GAAIA,aAAiBc,EACnB,MAAM,IAAIC,EAAS,CACjB,KAAMC,EAAa,qBAAqB,EACxC,MAAOhB,CACT,CAAC,EAGH,GAAID,GAAaC,CAAK,EACpB,OAAOF,EAAe,SAAS,EAGjC,MAAME,CACR,CACF,EACA,CAAC,EACD,CACE,QAAAK,EACA,UAAYY,GAAW,IACjB,UAAOA,EAAQnB,EAAe,OAAO,GACvCM,EAAS,CAEb,CACF,CACF,EAEA,SAAO,SAAMI,EAAQ,CACnB,MAAO,IAAM,KACb,QAAS,IAAMU,EAAA,cAACC,GAAA,CAAY,OAAQhB,EAAK,GAAI,MAAOD,EAAO,EAC3D,QAAS,IACPgB,EAAA,cAACE,EAAA,CAAM,KAAK,WACVF,EAAA,cAACG,EAAA,CAAM,QAAQ,4CAA4C,CAC7D,CAEJ,CAAC,CACH,ED1EO,IAAMC,GAA2B,CAAC,CACvC,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,CACF,IAAM,CACJ,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EAE7B,SAAO,UAAML,EAAQ,CACnB,aAAc,IAAM,KACpB,MAAO,IAAM,KACb,QAAS,IAAMM,EAAA,cAACC,EAAA,CAAQ,KAAMH,EAAE,yBAAyB,EAAG,EAC5D,QAAS,CAAC,CAAE,OAAAI,CAAO,IACjBF,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACG,EAAA,CACC,QAAQ,0BACR,WAAY,CAACH,EAAA,cAACI,GAAA,CAAK,KAAK,UAAU,KAAI,GAAC,CAAE,EACzC,OAAQ,CAAE,KAAMF,EAAO,WAAY,EACrC,EACAF,EAAA,cAACK,EAAA,CACC,MAAOV,EACP,KAAMO,EACN,SAAU,IAAMN,EAASM,CAAM,EAC/B,QAASL,EACX,CACF,CAEJ,CAAC,CACH,EO3CA,IAAAS,GAAA,CACE,kBAAmB,aACnB,yBAA0B,0BAC1B,uCAAwC,gCACxC,gDAAiD,mEACjD,sCAAuC,wBACvC,4BAA6B,iBAC7B,0BAA2B,wCAC3B,0BAA2B,iEAC3B,yBAA0B,cAC1B,8BAA+B,8EAC/B,2CAA4C,wDAC5C,4CAA6C,oCAC/C,ECbAC,IAAA,OAAOC,GAAS,YAAAC,OAAgB,QAIhC,IAAAC,GAAuB,SCJvBC,IAAA,OAAOC,IAAS,eAAAC,OAA4B,QAYrC,IAAMC,GAA4B,CAAC,CAAE,SAAAC,EAAU,MAAAC,CAAM,IAAM,CAChE,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvBC,EAAKC,EAAkB,EAEvBC,EAAeC,GAClBC,GAA+B,CAC9BJ,EAAG,oBAAoB,CACrB,SAAUF,EAAE,wBAAwB,EACpC,OAAQM,EAAO,KACjB,CAAC,EACDR,EAASQ,EAAO,KAAK,CACvB,EACA,CAACJ,EAAIJ,EAAUE,CAAC,CAClB,EAEA,OACEO,GAAA,cAACC,EAAA,CACC,MAAOR,EAAE,wBAAwB,EACjC,QAASD,EAAM,IAAKU,IAAU,CAC5B,IAAKA,EAAK,GACV,MAAOA,EAAK,YACZ,YAAaA,EAAK,QAClB,MAAOA,CACT,EAAE,EACF,SAAUL,EACZ,CAEJ,EDvBO,IAAMM,GAAqB,CAAC,CACjC,MAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,CACF,IAAa,CACX,GAAM,CAAE,EAAAC,CAAE,EAAIC,EAAe,EACvB,CAAE,eAAAC,CAAe,EAAIC,EAAyB,EAC9C,CAACC,EAAoBC,CAAqB,EAAIC,GAClD,IACF,EACMC,EAAoBC,EACxB,CAACC,EAAGC,IAAeR,EAAe,CAAE,WAAYQ,EAAK,GAAI,MAAAb,CAAM,CAAC,EAChE,CACE,QAAAE,CACF,CACF,EAEA,eAAeY,EAAiBD,EAAY,CACtB,MAAMH,EAAkB,QAAQG,CAAI,EAEtDZ,EAASY,CAAI,EAEbL,EAAsBK,CAAI,CAE9B,CAEA,OACEE,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACC,GAAA,CAAe,SAAUF,EAAkB,MAAOf,EAAO,KACzD,WAAOW,EAAkB,OAAQ,SAAS,GACzCK,EAAA,cAACE,EAAA,CAAQ,KAAMd,EAAE,iBAAiB,EAAG,EAEtCI,GACCQ,EAAA,cAACG,EAAA,CACC,MAAOlB,EACP,KAAMO,EACN,SAAU,IAAMN,EAASM,CAAkB,EAC3C,QAASL,EACX,CAEJ,CAEJ,EXtCO,IAAMiB,EAA0B,CAAC,CACtC,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,QAAAC,CACF,IAAM,CACJ,GAAM,CAACC,EAAUC,CAAW,EAAIC,GAA0B,IAAI,EACxD,CAAE,cAAAC,CAAc,EAAIC,EAAmB,EACvCC,EAAiBC,EAAkB,EAEnC,CAAE,OAAAC,CAAO,EAAIC,EACjB,IACEH,EAAe,WAAW,CACxB,MAAO,CACL,aAAc,CACZ,MAAO,GACT,CACF,CACF,CAAC,EACH,CAAC,EACD,CACE,QAAAN,CACF,CACF,EAEMU,EAAaC,EAAiB,IAAMP,EAAc,EAAG,CACzD,QAAAJ,CACF,CAAC,EAED,SAASY,EAAqBX,EAAoB,CAChDC,EAAYD,CAAQ,EAChBA,IAAa,mBACfS,EAAW,QAAQ,CAEvB,CAEA,OACEG,EAAA,cAACC,GAAA,CAAW,MAAOhB,GACjBe,EAAA,cAACE,GAAA,CAAa,SAAUC,OACrB,UAAMR,EAAQ,CACb,MAAO,IAAM,KACb,QAAS,IAAMK,EAAA,cAACI,EAAA,CAAQ,KAAMJ,EAAA,cAACK,EAAA,CAAM,QAAQ,kBAAkB,EAAI,EACnE,QAAS,CAAC,CAAE,OAAQC,CAAM,IACxBN,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACO,GAAA,CACC,SAAUR,EACV,QAASZ,EACT,MAAOmB,EACT,EACClB,IAAa,mBACZY,EAAA,cAACQ,GAAA,CACC,OAAQX,EAAW,OACnB,MAAOb,EACP,SAAUE,EACV,QAASC,EACX,EAEDC,IAAa,wBACZY,EAAA,cAACS,GAAA,CACC,MAAOH,EACP,MAAOtB,EACP,SAAUE,EACV,QAASC,EACX,CAEJ,CAEJ,CAAC,CACH,CACF,CAEJ,EF7EO,IAAMuB,EAA2B,CAAC,CAAE,MAAAC,EAAO,SAAAC,CAAS,IAAM,CAC/D,IAAMC,EAAOC,EAAQ,EACf,CAAE,CAAE,EAAIC,EAAe,EACvB,CAAE,MAAAC,CAAM,EAAIC,EAAgB,EAC5BC,EAAWC,EAAY,EAE7B,OACEC,EAAA,cAAAA,EAAA,iBACG,SAAMT,EAAO,CACZ,iBAAe,YACbS,EAAA,cAACC,EAAA,CAAM,KAAK,WAAW,EAAE,+BAA+B,CAAE,CAC5D,EACA,SAAU,CAAC,CAAE,GAAAC,CAAG,IACdF,EAAA,cAACC,EAAA,CAAM,KAAK,SAAS,EAAE,4BAA6B,CAAE,GAAAC,CAAG,CAAC,CAAE,CAEhE,CAAC,EACDF,EAAA,cAACG,EAAA,CACC,MAAOP,EAAM,OAAO,MACpB,SAAUE,EACV,SAAUN,EACV,QAASC,EACX,CACF,CAEJ,EDzBO,IAAMW,GAGR,CAAC,CAAE,SAAAC,EAAU,OAAAC,CAAO,IAAM,CAC7B,IAAMC,EAAOC,EAAQ,EACf,CACJ,MAAO,CAAE,cAAAC,CAAc,CACzB,EAAIC,EAAgB,EACdC,EAAgBC,GAAY,EAC5BC,EAAiBC,EAAkB,EAEnC,CAAE,OAAAC,EAAQ,MAAAC,CAAM,EAAIC,EACxB,SACEC,GAAsB,CACpB,cAAAT,EACA,eAAAI,EACA,OAAAP,EACA,cAAAK,CACF,CAAC,EACH,CAAC,CACH,EAEMQ,EAAUC,GACd,MAAOC,GAAe,CACpB,GAAI,CACF,MAAMC,GAAcb,EAAe,CAAE,OAAQY,EAAK,EAAG,CAAC,EACtDL,EAAM,CAAE,OAAQO,GAAY,SAAS,CAAE,KAAAF,CAAK,CAAC,CAAE,CAAC,CAClD,MAAY,CACV,MAAM,IAAIG,EAAS,CACjB,KAAMC,EAAa,4BAA4B,CAC7C,KAAMC,EACR,CAAC,CACH,CAAC,CACH,CACF,EACA,CAACV,EAAOP,CAAa,CACvB,EAEMkB,EAAsBP,GACzBC,GAAeF,EAAQE,CAAI,EAAE,MAAMd,CAAI,EACxC,CAACA,EAAMY,CAAO,CAChB,EAEA,SAAO,SAAMJ,EAAQ,CACnB,MAAO,IAAM,KACb,QAAS,IAAMa,EAAA,cAACC,EAAA,IAAQ,EACxB,QAAS,CAAC,CAAE,OAAQC,CAAM,OACjB,SAAMA,EAAO,CAClB,cAAgBC,GACdH,EAAA,cAACI,EAAA,CAAc,MAAOD,EAAS,SAAUJ,EAAqB,EAEhE,SAAWI,GACTH,EAAA,cAACI,EAAA,CAAc,MAAOD,EAAS,SAAUJ,EAAqB,EAEhE,SAAU,CAAC,CAAE,KAAAN,CAAK,IAChBO,EAAA,cAACK,GAAc,SAAd,CACC,MAAO,CACL,KAAAZ,EACA,QAAAF,CACF,GAEC,OAAOd,GAAa,WAAaA,EAASgB,CAAI,EAAIhB,CACrD,CAEJ,CAAC,CAEL,CAAC,CACH,EgBjFA6B,IACA,IAAAC,EAAuB,SADvB,OAAS,eAAAC,OAAmB,QAKrB,SAASC,IAAc,CAC5B,GAAM,CAAE,MAAAC,CAAM,EAAIC,EAAgB,EAE5BC,EAAmBC,GACtBC,GACCJ,EAAM,WAAW,KAAMK,GACrBA,EAAU,UAAU,QAAK,UAAOD,EAAa,IAAI,CAAC,CACpD,EACF,CAACJ,EAAM,UAAU,CACnB,EAEMM,EAAoBH,GACvBC,GACCJ,EAAM,WAAW,MACdK,GACCA,EAAU,UAAU,QAAK,UAAOD,EAAa,IAAI,CAAC,GAClDC,EAAU,UAAU,SAAW,CACnC,EACF,CAACL,EAAM,UAAU,CACnB,EAEA,MAAO,CACL,iBAAAE,EACA,kBAAAI,CACF,CACF","names":["init_esm_shims","import_variant","React","useCallback","init_esm_shims","import_variant","React","init_esm_shims","init_esm_shims","import_variant","React","useState","init_esm_shims","import_variant","React","init_esm_shims","useMemo","siteSelectorBiEvents","biLogger","question","action","key","additionalInfo","wixCliAction","answer","wixCliAppFlowStepsAnswers","useSiteSelectorBi","useBiLogger","useMemo","SiteTypeSelect","onSubmit","onError","sites","bi","useSiteSelectorBi","t","useTranslation","getDevSitesCount","getDevSitesLimit","useDevCenterClient","status","useAsync","handleSubmit","option","React","Spinner","devSitesCount","devSitesLimit","isDevSitesLimitReached","userHasNoSites","SelectInput","SelectOptionAvailability","init_esm_shims","import_variant","React","init_esm_shims","React","init_esm_shims","init_esm_shims","useMemo","init_esm_shims","init_esm_shims","clientSpecMapSchema","z","MetasiteManagerClient","httpClient","metaSiteId","appId","data","clientSpecMap","clientSpecMapSchema","spec","e","CliError","CliErrorCode","useMetasiteManagerClient","httpClient","useHttpClient","useMemo","MetasiteManagerClient","import_variant","init_esm_shims","React","OpenBrowser","siteId","appId","t","useTranslation","bi","useSiteSelectorBi","use_input_default","input","key","openBrowser","React","Trans","Key","AppInstallData","isAbortError","error","WaitForAppToBeInstalled","appId","site","onSubmit","onError","isAppInstalled","useMetasiteManagerClient","status","useAsync","signal","appInstallationPollInterval","getTestOverrides","pWaitFor","TimeoutError","CliError","CliErrorCode","result","React","OpenBrowser","Alert","Trans","CreateDevSite","status","appId","onSubmit","onError","t","useTranslation","React","Spinner","result","Trans","Text","WaitForAppToBeInstalled","messages_default","init_esm_shims","React","useState","import_variant","init_esm_shims","React","useCallback","SiteListSelect","onSubmit","sites","t","useTranslation","bi","useSiteSelectorBi","handleSubmit","useCallback","option","React","SelectInput","site","SelectExistingSite","sites","appId","onSubmit","onError","t","useTranslation","isAppInstalled","useMetasiteManagerClient","siteToInstallAppOn","setSiteToInstallAppOn","useState","checkAppInstalled","useAsyncCallback","_","site","handleSelectSite","React","SiteListSelect","Spinner","WaitForAppToBeInstalled","SiteSelector","appId","biLogger","onSubmit","onError","siteType","setSiteType","useState","createDevSite","useDevCenterClient","siteListClient","useSiteListClient","status","useAsync","createSite","useAsyncCallback","handleSelectSiteType","React","BiProvider","I18nProvider","messages_default","Spinner","Trans","sites","SiteTypeSelect","CreateDevSite","SelectExistingSite","ResolveSiteId","state","onSubmit","exit","useExit","useTranslation","model","useProjectModel","biLogger","useBiLogger","React","Alert","id","SiteSelector","SiteIdProvider","children","siteId","exit","useExit","projectFolder","useProjectModel","writeDebugLog","useDebugLog","siteListClient","useSiteListClient","status","merge","useAsync","resolveConfiguredSite","setSite","useCallback","site","saveAppConfig","SiteIdState","CliError","CliErrorCode","APP_CONFIG_PATH","handleResolveSiteId","React","Spinner","state","variant","ResolveSiteId","SiteIdContext","init_esm_shims","import_variant","useCallback","usePlatform","model","useProjectModel","isPlatformExists","useCallback","platformType","component","hasSinglePlatform"]}
@@ -0,0 +1,11 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ var a={"create_version_command_def.option.version_type":"The type of version you would like to create","create_version_command_def.option.approve_preview":"Approve preview automatically","create_version_command_def.option.base_url":"The base url for when static files have been uploaded to an external cdn","create_version_command_def.option.site":"The site id to use for Application Preview urls, defaults to the current selected development site","dev_command_def.option.https":"Start local dev server on https","app_preview_command_def.option.site":"The site id to use for Application Preview urls, defaults to the current selected development site","app_preview_command_def.option.base_url":"The base url for when static files have been uploaded to an external cdn","app_preview_command_def.option.no_input":"Disable command interactivity","general.loading":"Loading...","general.no_site_id_configured":"You don't have a Development Site currently configured","general.site_id_not_found":`Your currently configured Development Site was not found ({id})
4
+ This may happen because the site was deleted or your access has been revoked.
5
+
6
+ Please select another Development Site to continue`,"general.dashboard_page_text":"<0>Click here</0> to open your application in the Wix Dashboard","general.dashboard_page_click_here":"Click here","general.close_screen":"Press <0/> to close","logs.backend.clear":"Press <0/> to clear","general.write_dev_log_failure.message":"Can not write logs to <0>{path}</0>","general.write_dev_log_failure.hint":"Make sure the file has proper permissions and is accessible","general.open_page_error":"Failed to open the browser for <0>{title}</0>, use the following URL to open it in your browser:","general.dashboard_pages_viewer.title":"Press a number key to open a dashboard page:","general.dashboard_plugins_viewer.title":"Press a number key to open a dashboard plugin:","general.dashboard_menu_plugins_viewer.title":"Press a number key to open a dashboard menu plugin:","general.backend_api_viewer.title":"Press a number key to trigger an api:","general.backend_plugin_viewer.title":"Press a number key to trigger an plugin:","general.backend_events_viewer.title":"Press a number key to trigger an event:","general.numeric_viewer.show_more":"View more...","general.platform.site":"Site","general.platform.unpublished_site":"Site (publish the site to enable site preview)","general.platform.editor":"Editor","general.platform.dashboard":"Dashboard","general.platform.backend":"Backend","general.platform.none":`Your project doesn't seem to have any extensions.
7
+
8
+ Extensions are the building blocks of your app.
9
+ Make sure it is configured properly, or read our <0>documentation</0> to start developing your first extension.`,"general.dev_site.current":"Current Development Site: {name}","general.view_changes":"View your local changes: <0>(Press a key to open)</0>","general.open_preview.title_single":"Open the preview on the","general.open_preview.title_multiple":"Open the preview on:","preview_command.creating_preview":"Creating a preview...","preview_command.creating_preview_success":"Preview created successfully!","preview_command.uploading_files":"Uploading your application files...","preview_command.uploading_files_success":"Uploaded successfully!","dev_command.dev_environment.loading":"Starting dev environment...","dev_command.dev_environment.started":"Local development environment ready.","dev_command.dev_environment.url":"Application served on <0/>","dev_command.dev_environment.backend_url":"Backend served on <0/>","dev_command.dev_environment.https_url.open_info":"Press <0/> to open & approve dev server","dev_command.dev_environment.https_url.failed_to_open":"Unable to open <0/> for approving selfsigned certificate. Please manually access the link.","dev_command.dev_site.change":"Press <0/> to change your current Development Site","dev_command.site_selector.error":"Failed to change Development Site!","dev_command.dashboard_pages_screen.select_label":"Select a dashboard page to open","dev_command.dashboard_menu_plugin_screen.select_label":"Select a dashboard menu plugin to open","dev_command.dashboard_page_plugin_screen.select_label":"Select a dashboard plugin to open","dev_command.dashboard_modal_screen.select_label":"Select a dashboard modal to open","dev_command.backend_apis_screen.select_label":"Select api to trigger","dev_command.backend_events_screen.select_label":"Select event to trigger","dev_command.backend_plugins_screen.select_label":"Select plugin to trigger","dev_command.dev_env_logs.title":"Dev Environment Logs:","dev_command.dev_env_backend_logs.title":"Press <0/> to view full logs from {path}","dev_command.dev_env_backend_logs_screen.title":"Server Environment Full Logs","dev_command.dev_env_logs.empty":"No logs to show","dev_command.dev_env_logs.listening_to_logs":"Listening to logs...","dev_command.dev_env_logs.scroll_explain":"Use the arrow keys to scroll","dev_command.config_change":"Loading App Manifest changes...","dev_command.config_update":"App Manifest updated. Refresh existing browser tabs to view the latest changes.","dev_command.config_didnt_update":"No App Manifest update occurred","dev_command.tunneling.confirm":"To proceed, we'll set up a secure tunnel from your machine for development purposes, press Y to continue","dev_command.tunneling.abort_dev":"Operation aborted. Tunneling is necessary to run your application.","dev_command.new_custom_element.warning":"New site widget detected. Press <0/> to open the Site Editor and complete the installation.","dev_command.new_custom_element.confirm_reinstall":"Press <0/> when you reinstalled app on your dev site","dev_command.new_custom_element.reinstall_error":"We had troubles with adding your new custom element. You can try to do it by yourself. Press <0/> to continue","serve_command.starting_serve_environment":"Starting serve environment...","serve_command.starting_serve_environment_success":"Serve environment started! <0/>","serve_command.production_build":"Application is using a production build","create_version_command.creating_version":"Creating a version...","create_version_command.creating_version_success":"Successfully created v{version}","create_version_command.current_version":"Your current version is: v{version}","create_version_command.confirm_version_events_warning":"Any configured events will be deployed to production and take effect once a new version of your app is created.","create_version_command.confirm_version_creation":"Continue with creating the new version?","create_version_command.confirm_version_creation_aborted":"Version creation aborted","create_version_command.version_type_question":"What type of version would you like to create?","create_version_command.version_type_question_minor":"Minor (v{version})","create_version_command.version_type_question_major":"Major (v{version})","create_version_command.check_preview_before_version_release":"Before creating a new version, let's create a preview of your app","create_version_command.checking_validation_status":"Checking if this version can be submitted\u2026","create_version_command.version_validation_ok":"This version can be submitted for review in the <0>Dev Center</0>","create_version_command.version_validation_has_failures":`This version has blockers preventing it from being submitted for review.
10
+ Please fix them and submit your app in the <0>Dev Center</0>.`,"embedded_script.type.essential":"Essential","embedded_script.type.essential.description":"Must load regardless of policy","embedded_script.type.functional":"Functional","embedded_script.type.functional.description":"Adds optional functionality to the site","embedded_script.type.analytics":"Analytics","embedded_script.type.analytics.description":"Adds analytics abilities to the site","embedded_script.type.advertising":"Advertising","embedded_script.type.advertising.description":"Adds advertising content or advertising tracking to the site","embedded_script.placement.head":"Head","embedded_script.placement.head.description":"In the document head","embedded_script.placement.body_start":"Body Start","embedded_script.placement.body_start.description":"Prepended in the body","embedded_script.placement.body_end":"Body End","embedded_script.placement.body_end.description":"Appended in the body","generate_command.description":"Add new extensions to your application","generate_command.flow.dashboard_category":"Dashboard","generate_command.flow.site_category":"Site","generate_command.flow.backend_category":"Backend","generate_command.flow.dashboard_page":"Dashboard Page","generate_command.flow.sidebar_category":"Sidebar Category","generate_command.flow.dashboard_plugin":"Dashboard Plugin","generate_command.flow.dashboard_menu_plugin":"Dashboard Menu Plugin","generate_command.flow.embedded_script":"Embedded Script","generate_command.flow.event":"Event","generate_command.flow.api.title":"API","generate_command.flow.dashboard_modal":"Dashboard Modal","generate_command.flow.custom_element":"Site Widget","generate_command.flow.choose_flow":"What kind of extension would you like to generate?","generate_command.generation.loading":"Generating {subject}...","generate_command.generation.done":"\u{1F680} The new {extensionType} has been generated successfully.","generate_command.generation.learn_more":"\u{1F4DA} Learn more about {extensionType}: <0/>","generate_command.generation.new_dependencies":"\u26A0\uFE0F New app dependencies have been added. Please run <0>npm install</0> before continuing to work.","generate_command.dashboard_page.choose_route":"Enter the route for the new page:","generate_command.dashboard_page.route_placeholder":"my-page","generate_command.dashboard_page.choose_title":"Page title:","generate_command.dashboard_page.title_placeholder":"My Page","generate_command.dashboard_page.add_to_category":"Add to a sidebar category?","generate_command.dashboard_page.choose_category":"Sidebar category:","generate_command.sidebar_category.choose_label":"Enter the label for the new category:","generate_command.sidebar_category.label_placeholder":"My App","generate_command.custom_element.validation.element_exists":"The custome element folder must be unique, please choose a name that has not been used yet in your application.","generate_command.custom_element.validation.element_invalid":"The custom element folder must be a valid path ([a-z-/]+) and must not start with a dot.","generate_command.custom_element.choose_folder":"Element folder (relative to src/site/widgets/custom-elements):","generate_command.custom_element.folder_placeholder":"my-widget","generate_command.custom_element.choose_name":"Element name:","generate_command.custom_element.name_placeholder":"Custom Element","generate_command.embedded_script.validation.script_exists":"The script folder must be unique, please choose a name that has not been used yet in your application.","generate_command.embedded_script.validation.script_invalid":"The script folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.","generate_command.embedded_script.choose_folder":"Script folder (relative to src/site/embedded-scripts):","generate_command.embedded_script.folder_placeholder":"my-script","generate_command.embedded_script.choose_name":"Script name:","generate_command.embedded_script.name_placeholder":"My Script","generate_command.embedded_script.choose_type":"Script type:","generate_command.embedded_script.type_info":"Will be used for GDPR and cookie consent purposes","generate_command.embedded_script.choose_placement":"Placement:","generate_command.embedded_script.placement_info":"Will determine where the script is embedded","generate_command.dashboard_modal.validation.folder_exists":"The modal folder must be unique, please choose a folder name that has not been used yet in your application.","generate_command.dashboard_modal.validation.folder_invalid":"The modal folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.","generate_command.dashboard_modal.choose_folder":"Enter the folder name for the new modal:","generate_command.dashboard_modal.folder_placeholder":"my-modal","generate_command.dashboard_modal.choose_title":"Modal title:","generate_command.dashboard_modal.title_placeholder":"My Modal","generate_command.dashboard_plugin.what_to_extend":"What would you like to extend?","generate_command.dashboard_plugin.what_to_extend.description":"Plugins let you extend Wix apps by embedding your UI inside dedicated slots within a dashboard page (<0>read more</0>)","generate_command.dashboard_plugin.what_to_extend.item_description":"<0>read more</0>","generate_command.dashboard_plugin.choose_folder":"Plugin folder (relative to src/dashboard/plugins)","generate_command.dashboard_plugin.folder_placeholder":"my-plugin","generate_command.dashboard_plugin.choose_title":"Plugin title","generate_command.dashboard_plugin.title_placeholder":"My Plugin","generate_command.required_app":"Would you like to set {appName} as a requirement for your app?","generate_command.required_app.description":"This means sites must have {appName} installed before installing your app (<0>read more</0>)","generate_command.dashboard_menu_plugin.what_to_extend":"What would you like to extend?","generate_command.dashboard_menu_plugin.what_to_extend.description":"Menu Plugins let you extend Wix apps by adding a menu item in a pre-defined slot in a menu on a dashboard page (<0>read more</0>)","generate_command.dashboard_menu_plugin.what_to_extend.item_description":"<0>read more</0>","generate_command.dashboard_menu_plugin.what_to_do":"What action will happen after clicking on the menu item?","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page":"Navigate to a page","generate_command.dashboard_menu_plugin.what_to_do.open_modal":"Open a modal","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page":"Choose a page the menu item will navigate to:","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.info":"Choose from a list of available pages in your project or manually add a page from a different app","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other":"Use a page from a different app","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.choose_page_id":"What is the unique id of the page?","generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.page_id_invalid":"Page id has to be in the format of a uuid","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component":"Choose the modal to open:","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.info":"Choose from a list of available modals in your project or manually add a modal from a different app","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other":"Use a modal from a different app","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.choose_component_id":"What is the unique id of the modal?","generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.component_id_invalid":"Modal id has to be in the format of a uuid","generate_command.dashboard_menu_plugin.choose_folder":"Menu Plugin folder (relative to src/dashboard/menu-plugins)","generate_command.dashboard_menu_plugin.folder_placeholder":"my-plugin","generate_command.dashboard_menu_plugin.choose_title":"Menu Plugin title","generate_command.dashboard_menu_plugin.title_placeholder":"My Plugin","generate_command.api.api_placeholder":"my-api","generate_command.api.choose_api_name":"How would you like to name your API?","generate_command.api.choose_folder":"API folder (relative to src/backend/api):","generate_command.api.choose_api_name.error":"API name must be unique, can not include special characters or spaces, and must be shorter than 20 characters","generate_command.api.choose_method":"Choose an API method","generate_command.event.choose_folder":"Event folder (relative to src/backend/events):","generate_command.event.folder_placeholder":"my-event","generate_command.event.choose_folder.error":"Event name must be unique, can not include special characters or spaces, and must be shorter than 20 characters","logs_command.logs_without_version":"Logs command without the version is not supported, add `--version {version}`","logs_command.connecting":"Connecting to the log server...","logs_command.listening_to_logs":"Listening to logs from the server.","logs_command.prod_env_logs":"Prod Environment logs for the version: {version}"};export{a};
11
+ //# sourceMappingURL=chunk-3ZWMQHFG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/messages.json"],"sourcesContent":["{\n \"create_version_command_def.option.version_type\": \"The type of version you would like to create\",\n \"create_version_command_def.option.approve_preview\": \"Approve preview automatically\",\n \"create_version_command_def.option.base_url\": \"The base url for when static files have been uploaded to an external cdn\",\n \"create_version_command_def.option.site\": \"The site id to use for Application Preview urls, defaults to the current selected development site\",\n \"dev_command_def.option.https\": \"Start local dev server on https\",\n \"app_preview_command_def.option.site\": \"The site id to use for Application Preview urls, defaults to the current selected development site\",\n \"app_preview_command_def.option.base_url\": \"The base url for when static files have been uploaded to an external cdn\",\n \"app_preview_command_def.option.no_input\": \"Disable command interactivity\",\n \"general.loading\": \"Loading...\",\n \"general.no_site_id_configured\": \"You don't have a Development Site currently configured\",\n \"general.site_id_not_found\": \"Your currently configured Development Site was not found ({id})\\nThis may happen because the site was deleted or your access has been revoked.\\n\\nPlease select another Development Site to continue\",\n \"general.dashboard_page_text\": \"<0>Click here</0> to open your application in the Wix Dashboard\",\n \"general.dashboard_page_click_here\": \"Click here\",\n \"general.close_screen\": \"Press <0/> to close\",\n \"logs.backend.clear\": \"Press <0/> to clear\",\n \"general.write_dev_log_failure.message\": \"Can not write logs to <0>{path}</0>\",\n \"general.write_dev_log_failure.hint\": \"Make sure the file has proper permissions and is accessible\",\n \"general.open_page_error\": \"Failed to open the browser for <0>{title}</0>, use the following URL to open it in your browser:\",\n \"general.dashboard_pages_viewer.title\": \"Press a number key to open a dashboard page:\",\n \"general.dashboard_plugins_viewer.title\": \"Press a number key to open a dashboard plugin:\",\n \"general.dashboard_menu_plugins_viewer.title\": \"Press a number key to open a dashboard menu plugin:\",\n \"general.backend_api_viewer.title\": \"Press a number key to trigger an api:\",\n \"general.backend_plugin_viewer.title\": \"Press a number key to trigger an plugin:\",\n \"general.backend_events_viewer.title\": \"Press a number key to trigger an event:\",\n \"general.numeric_viewer.show_more\": \"View more...\",\n \"general.platform.site\": \"Site\",\n \"general.platform.unpublished_site\": \"Site (publish the site to enable site preview)\",\n \"general.platform.editor\": \"Editor\",\n \"general.platform.dashboard\": \"Dashboard\",\n \"general.platform.backend\": \"Backend\",\n \"general.platform.none\": \"Your project doesn't seem to have any extensions.\\n\\nExtensions are the building blocks of your app.\\nMake sure it is configured properly, or read our <0>documentation</0> to start developing your first extension.\",\n \"general.dev_site.current\": \"Current Development Site: {name}\",\n \"general.view_changes\": \"View your local changes: <0>(Press a key to open)</0>\",\n \"general.open_preview.title_single\": \"Open the preview on the\",\n \"general.open_preview.title_multiple\": \"Open the preview on:\",\n \"preview_command.creating_preview\": \"Creating a preview...\",\n \"preview_command.creating_preview_success\": \"Preview created successfully!\",\n \"preview_command.uploading_files\": \"Uploading your application files...\",\n \"preview_command.uploading_files_success\": \"Uploaded successfully!\",\n \"dev_command.dev_environment.loading\": \"Starting dev environment...\",\n \"dev_command.dev_environment.started\": \"Local development environment ready.\",\n \"dev_command.dev_environment.url\": \"Application served on <0/>\",\n \"dev_command.dev_environment.backend_url\": \"Backend served on <0/>\",\n \"dev_command.dev_environment.https_url.open_info\": \"Press <0/> to open & approve dev server\",\n \"dev_command.dev_environment.https_url.failed_to_open\": \"Unable to open <0/> for approving selfsigned certificate. Please manually access the link.\",\n \"dev_command.dev_site.change\": \"Press <0/> to change your current Development Site\",\n \"dev_command.site_selector.error\": \"Failed to change Development Site!\",\n \"dev_command.dashboard_pages_screen.select_label\": \"Select a dashboard page to open\",\n \"dev_command.dashboard_menu_plugin_screen.select_label\": \"Select a dashboard menu plugin to open\",\n \"dev_command.dashboard_page_plugin_screen.select_label\": \"Select a dashboard plugin to open\",\n \"dev_command.dashboard_modal_screen.select_label\": \"Select a dashboard modal to open\",\n \"dev_command.backend_apis_screen.select_label\": \"Select api to trigger\",\n \"dev_command.backend_events_screen.select_label\": \"Select event to trigger\",\n \"dev_command.backend_plugins_screen.select_label\": \"Select plugin to trigger\",\n \"dev_command.dev_env_logs.title\": \"Dev Environment Logs:\",\n \"dev_command.dev_env_backend_logs.title\": \"Press <0/> to view full logs from {path}\",\n \"dev_command.dev_env_backend_logs_screen.title\": \"Server Environment Full Logs\",\n \"dev_command.dev_env_logs.empty\": \"No logs to show\",\n \"dev_command.dev_env_logs.listening_to_logs\": \"Listening to logs...\",\n \"dev_command.dev_env_logs.scroll_explain\": \"Use the arrow keys to scroll\",\n \"dev_command.config_change\": \"Loading App Manifest changes...\",\n \"dev_command.config_update\": \"App Manifest updated. Refresh existing browser tabs to view the latest changes.\",\n \"dev_command.config_didnt_update\": \"No App Manifest update occurred\",\n \"dev_command.tunneling.confirm\": \"To proceed, we'll set up a secure tunnel from your machine for development purposes, press Y to continue\",\n \"dev_command.tunneling.abort_dev\": \"Operation aborted. Tunneling is necessary to run your application.\",\n \"dev_command.new_custom_element.warning\": \"New site widget detected. Press <0/> to open the Site Editor and complete the installation.\",\n \"dev_command.new_custom_element.confirm_reinstall\": \"Press <0/> when you reinstalled app on your dev site\",\n \"dev_command.new_custom_element.reinstall_error\": \"We had troubles with adding your new custom element. You can try to do it by yourself. Press <0/> to continue\",\n \"serve_command.starting_serve_environment\": \"Starting serve environment...\",\n \"serve_command.starting_serve_environment_success\": \"Serve environment started! <0/>\",\n \"serve_command.production_build\": \"Application is using a production build\",\n \"create_version_command.creating_version\": \"Creating a version...\",\n \"create_version_command.creating_version_success\": \"Successfully created v{version}\",\n \"create_version_command.current_version\": \"Your current version is: v{version}\",\n \"create_version_command.confirm_version_events_warning\": \"Any configured events will be deployed to production and take effect once a new version of your app is created.\",\n \"create_version_command.confirm_version_creation\": \"Continue with creating the new version?\",\n \"create_version_command.confirm_version_creation_aborted\": \"Version creation aborted\",\n \"create_version_command.version_type_question\": \"What type of version would you like to create?\",\n \"create_version_command.version_type_question_minor\": \"Minor (v{version})\",\n \"create_version_command.version_type_question_major\": \"Major (v{version})\",\n \"create_version_command.check_preview_before_version_release\": \"Before creating a new version, let's create a preview of your app\",\n \"create_version_command.checking_validation_status\": \"Checking if this version can be submitted…\",\n \"create_version_command.version_validation_ok\": \"This version can be submitted for review in the <0>Dev Center</0>\",\n \"create_version_command.version_validation_has_failures\": \"This version has blockers preventing it from being submitted for review.\\nPlease fix them and submit your app in the <0>Dev Center</0>.\",\n \"embedded_script.type.essential\": \"Essential\",\n \"embedded_script.type.essential.description\": \"Must load regardless of policy\",\n \"embedded_script.type.functional\": \"Functional\",\n \"embedded_script.type.functional.description\": \"Adds optional functionality to the site\",\n \"embedded_script.type.analytics\": \"Analytics\",\n \"embedded_script.type.analytics.description\": \"Adds analytics abilities to the site\",\n \"embedded_script.type.advertising\": \"Advertising\",\n \"embedded_script.type.advertising.description\": \"Adds advertising content or advertising tracking to the site\",\n \"embedded_script.placement.head\": \"Head\",\n \"embedded_script.placement.head.description\": \"In the document head\",\n \"embedded_script.placement.body_start\": \"Body Start\",\n \"embedded_script.placement.body_start.description\": \"Prepended in the body\",\n \"embedded_script.placement.body_end\": \"Body End\",\n \"embedded_script.placement.body_end.description\": \"Appended in the body\",\n \"generate_command.description\": \"Add new extensions to your application\",\n \"generate_command.flow.dashboard_category\": \"Dashboard\",\n \"generate_command.flow.site_category\": \"Site\",\n \"generate_command.flow.backend_category\": \"Backend\",\n \"generate_command.flow.dashboard_page\": \"Dashboard Page\",\n \"generate_command.flow.sidebar_category\": \"Sidebar Category\",\n \"generate_command.flow.dashboard_plugin\": \"Dashboard Plugin\",\n \"generate_command.flow.dashboard_menu_plugin\": \"Dashboard Menu Plugin\",\n \"generate_command.flow.embedded_script\": \"Embedded Script\",\n \"generate_command.flow.event\": \"Event\",\n \"generate_command.flow.api.title\": \"API\",\n \"generate_command.flow.dashboard_modal\": \"Dashboard Modal\",\n \"generate_command.flow.custom_element\": \"Site Widget\",\n \"generate_command.flow.choose_flow\": \"What kind of extension would you like to generate?\",\n \"generate_command.generation.loading\": \"Generating {subject}...\",\n \"generate_command.generation.done\": \"🚀 The new {extensionType} has been generated successfully.\",\n \"generate_command.generation.learn_more\": \"📚 Learn more about {extensionType}: <0/>\",\n \"generate_command.generation.new_dependencies\": \"⚠️ New app dependencies have been added. Please run <0>npm install</0> before continuing to work.\",\n \"generate_command.dashboard_page.choose_route\": \"Enter the route for the new page:\",\n \"generate_command.dashboard_page.route_placeholder\": \"my-page\",\n \"generate_command.dashboard_page.choose_title\": \"Page title:\",\n \"generate_command.dashboard_page.title_placeholder\": \"My Page\",\n \"generate_command.dashboard_page.add_to_category\": \"Add to a sidebar category?\",\n \"generate_command.dashboard_page.choose_category\": \"Sidebar category:\",\n \"generate_command.sidebar_category.choose_label\": \"Enter the label for the new category:\",\n \"generate_command.sidebar_category.label_placeholder\": \"My App\",\n \"generate_command.custom_element.validation.element_exists\": \"The custome element folder must be unique, please choose a name that has not been used yet in your application.\",\n \"generate_command.custom_element.validation.element_invalid\": \"The custom element folder must be a valid path ([a-z-/]+) and must not start with a dot.\",\n \"generate_command.custom_element.choose_folder\": \"Element folder (relative to src/site/widgets/custom-elements):\",\n \"generate_command.custom_element.folder_placeholder\": \"my-widget\",\n \"generate_command.custom_element.choose_name\": \"Element name:\",\n \"generate_command.custom_element.name_placeholder\": \"Custom Element\",\n \"generate_command.embedded_script.validation.script_exists\": \"The script folder must be unique, please choose a name that has not been used yet in your application.\",\n \"generate_command.embedded_script.validation.script_invalid\": \"The script folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.\",\n \"generate_command.embedded_script.choose_folder\": \"Script folder (relative to src/site/embedded-scripts):\",\n \"generate_command.embedded_script.folder_placeholder\": \"my-script\",\n \"generate_command.embedded_script.choose_name\": \"Script name:\",\n \"generate_command.embedded_script.name_placeholder\": \"My Script\",\n \"generate_command.embedded_script.choose_type\": \"Script type:\",\n \"generate_command.embedded_script.type_info\": \"Will be used for GDPR and cookie consent purposes\",\n \"generate_command.embedded_script.choose_placement\": \"Placement:\",\n \"generate_command.embedded_script.placement_info\": \"Will determine where the script is embedded\",\n \"generate_command.dashboard_modal.validation.folder_exists\": \"The modal folder must be unique, please choose a folder name that has not been used yet in your application.\",\n \"generate_command.dashboard_modal.validation.folder_invalid\": \"The modal folder must be a valid path ([a-z0-9-/]+) and must not start with a dot.\",\n \"generate_command.dashboard_modal.choose_folder\": \"Enter the folder name for the new modal:\",\n \"generate_command.dashboard_modal.folder_placeholder\": \"my-modal\",\n \"generate_command.dashboard_modal.choose_title\": \"Modal title:\",\n \"generate_command.dashboard_modal.title_placeholder\": \"My Modal\",\n \"generate_command.dashboard_plugin.what_to_extend\": \"What would you like to extend?\",\n \"generate_command.dashboard_plugin.what_to_extend.description\": \"Plugins let you extend Wix apps by embedding your UI inside dedicated slots within a dashboard page (<0>read more</0>)\",\n \"generate_command.dashboard_plugin.what_to_extend.item_description\": \"<0>read more</0>\",\n \"generate_command.dashboard_plugin.choose_folder\": \"Plugin folder (relative to src/dashboard/plugins)\",\n \"generate_command.dashboard_plugin.folder_placeholder\": \"my-plugin\",\n \"generate_command.dashboard_plugin.choose_title\": \"Plugin title\",\n \"generate_command.dashboard_plugin.title_placeholder\": \"My Plugin\",\n \"generate_command.required_app\": \"Would you like to set {appName} as a requirement for your app?\",\n \"generate_command.required_app.description\": \"This means sites must have {appName} installed before installing your app (<0>read more</0>)\",\n \"generate_command.dashboard_menu_plugin.what_to_extend\": \"What would you like to extend?\",\n \"generate_command.dashboard_menu_plugin.what_to_extend.description\": \"Menu Plugins let you extend Wix apps by adding a menu item in a pre-defined slot in a menu on a dashboard page (<0>read more</0>)\",\n \"generate_command.dashboard_menu_plugin.what_to_extend.item_description\": \"<0>read more</0>\",\n \"generate_command.dashboard_menu_plugin.what_to_do\": \"What action will happen after clicking on the menu item?\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page\": \"Navigate to a page\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal\": \"Open a modal\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page\": \"Choose a page the menu item will navigate to:\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.info\": \"Choose from a list of available pages in your project or manually add a page from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other\": \"Use a page from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.choose_page_id\": \"What is the unique id of the page?\",\n \"generate_command.dashboard_menu_plugin.what_to_do.navigate_to_page.choose_page.other.page_id_invalid\": \"Page id has to be in the format of a uuid\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component\": \"Choose the modal to open:\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.info\": \"Choose from a list of available modals in your project or manually add a modal from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other\": \"Use a modal from a different app\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.choose_component_id\": \"What is the unique id of the modal?\",\n \"generate_command.dashboard_menu_plugin.what_to_do.open_modal.choose_component.other.component_id_invalid\": \"Modal id has to be in the format of a uuid\",\n \"generate_command.dashboard_menu_plugin.choose_folder\": \"Menu Plugin folder (relative to src/dashboard/menu-plugins)\",\n \"generate_command.dashboard_menu_plugin.folder_placeholder\": \"my-plugin\",\n \"generate_command.dashboard_menu_plugin.choose_title\": \"Menu Plugin title\",\n \"generate_command.dashboard_menu_plugin.title_placeholder\": \"My Plugin\",\n \"generate_command.api.api_placeholder\": \"my-api\",\n \"generate_command.api.choose_api_name\": \"How would you like to name your API?\",\n \"generate_command.api.choose_folder\": \"API folder (relative to src/backend/api):\",\n \"generate_command.api.choose_api_name.error\": \"API name must be unique, can not include special characters or spaces, and must be shorter than 20 characters\",\n \"generate_command.api.choose_method\": \"Choose an API method\",\n \"generate_command.event.choose_folder\": \"Event folder (relative to src/backend/events):\",\n \"generate_command.event.folder_placeholder\": \"my-event\",\n \"generate_command.event.choose_folder.error\": \"Event name must be unique, can not include special characters or spaces, and must be shorter than 20 characters\",\n \"logs_command.logs_without_version\": \"Logs command without the version is not supported, add `--version {version}`\",\n \"logs_command.connecting\": \"Connecting to the log server...\",\n \"logs_command.listening_to_logs\": \"Listening to logs from the server.\",\n \"logs_command.prod_env_logs\": \"Prod Environment logs for the version: {version}\"\n}\n"],"mappings":"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","names":["messages_default"]}
@@ -1,4 +1,4 @@
1
1
  import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
- import{B as f,C as E,t as o,u,v as h,w as m,x as p,y as N}from"./chunk-PONHDOS3.js";import{n as e}from"./chunk-SOO7TNTX.js";import{h as S}from"./chunk-V4TR6DCM.js";S();import C from"node:fs/promises";var g=e.object({errorReporting:e.object({url:e.string().optional(),artifact:e.object({fullArtifactId:e.string().max(255).min(1),version:e.string().max(255).min(1)}).optional()}).optional()}),d=e.object({iframeUrl:e.string().optional(),scriptAsset:e.object({exportedName:e.string(),containerId:e.string(),url:e.string(),scriptType:e.string().optional()}).optional()}),_=e.object({hostingPlatform:e.string(),fullPage:e.boolean().nullish(),hideInSidebar:e.boolean().nullish(),priority:e.number().nullish(),routePath:e.string().nullish(),title:e.string(),pageCategoryId:e.string().uuid().nullish(),activeSidebarPageId:e.string().nullish(),requiredPermission:e.string().nullish(),previousRoutePaths:e.array(e.string()).nullish()}).merge(g).merge(d).passthrough(),j=e.object({width:e.number().nullish(),height:e.number().nullish()}).merge(d).passthrough(),b=e.object({appId:e.string(),componentId:e.string().uuid(),spec:e.string().min(1),variantValue:e.string()}).passthrough().optional(),y=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_PAGE),compData:e.object({backOfficePage:_}),compName:e.string().optional(),experiment:b}).passthrough(),A=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION),compData:e.object({backOfficeExtension:e.object({hostingPlatform:e.string(),extends:e.string(),title:e.string().nullish(),extensionType:e.literal(N.BACK_OFFICE_EXTENSION_WIDGET),requiredPermission:e.string().nullish(),widget:j}).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),D=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_WIDGET),compData:e.object({backOfficeExtensionWidget:e.object({hostingPlatform:e.string(),extends:e.string(),title:e.string().nullish(),description:e.string().optional(),requiredPermission:e.string().nullish(),width:e.number().nullish(),height:e.number().nullish()}).merge(d).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),v=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_MENU_ITEM),compData:e.object({backOfficeExtensionMenuItem:e.object({id:e.string().uuid(),title:e.string().min(1),subtitle:e.string().max(200).optional(),iconKey:e.string().min(3).max(50).optional(),extends:e.string().uuid(),action:e.object({navigateToPage:e.object({pageId:e.string().uuid(),relativeUrl:e.string().optional()}),openModal:e.object({componentId:e.string().uuid(),componentParams:e.record(e.string().min(1),e.string().min(1)).optional()})}).partial().superRefine((r,i)=>{!r.navigateToPage&&!r.openModal&&i.addIssue({code:e.ZodIssueCode.custom,message:"action must have either navigateToPage or openModal"})}),sentryDSN:e.string().optional(),requiredPermission:e.string().optional()}).merge(d).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),k=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_MODAL),compData:e.object({backOfficeModal:e.object({hostingPlatform:e.string(),title:e.string().nullish(),requiredPermission:e.string().nullish(),width:e.number().nullish(),height:e.number().nullish()}).merge(d).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),P=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_SIDEBAR_CATEGORY),compData:e.object({backOfficeSidebarCategory:e.object({hostingPlatform:e.string(),title:e.string(),priority:e.number().nullish()})}),compName:e.string().optional()}).passthrough(),F=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_WIDGET),compName:e.string().optional()}).passthrough(),x=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_CONTAINER),compName:e.string().optional()}).passthrough(),T=e.object({packageName:e.string().min(2).max(100),version:e.number().int().min(0)}),M=e.object({template:e.string(),name:e.string(),pages:e.enum([h.NONE_PAGES,h.ONCE,h.SPECIFIC_PAGES]),placement:e.enum([m.HEAD,m.BODY_START,m.BODY_END,m.NONE_PLACEMENT]),connectArticleUrl:e.string(),embedCategory:e.enum([p.UNKNOWN,p.FUNCTIONAL,p.ESSENTIAL,p.ANALYTICS,p.ADVERTISING]),loadOnce:e.boolean(),allowedForFreeSite:e.boolean(),dependencies:e.array(T)}),W=e.object({compId:e.string(),compType:e.literal(o.EMBEDDED_SCRIPT),compName:e.string().optional(),compData:e.object({embeddedScriptComponentData:M})}).passthrough(),U=e.object({base:e.object({id:e.string().optional(),name:e.string()}),installation:e.object({base:e.object({autoAdd:e.boolean().optional(),essential:e.boolean().optional(),maxInstances:e.number().optional()}).optional(),widget:e.object({default_preset:e.object({desktop_preset_id:e.string().optional(),tablet_preset_id:e.string().optional(),mobile_preset_id:e.string().optional()}).optional(),region:e.enum([u.BODY,u.FOOTER,u.HEADER])}).optional()}).optional(),widgetData:e.object({tagName:e.string(),scriptUrl:e.string(),scriptType:e.enum([f.NONE,f.COMMON_JS,f.ES_MODULE])}),behaviors:e.object({settings:e.object({settingsUrl:e.string()}).optional(),dashboard:e.object({dashboardPageComponentId:e.string()}).optional()}),size:e.object({width:e.object({allowStretch:e.boolean().optional(),defaultWidth:e.number().optional(),stretchByDefault:e.boolean().optional()}),height:e.object({defaultHeight:e.number(),heightMode:e.enum([E.AUTO,E.FIXED,E.UNKNOWN]).optional()})}),dependencies:e.array(T)}),w=e.object({compId:e.string(),compType:e.literal(o.CUSTOM_ELEMENT_WIDGET),compName:e.string().optional(),compData:e.object({customElementWidget:U})}).passthrough(),B=e.object({compId:e.string().uuid(),compType:e.literal(o.WEBHOOK),compName:e.string().optional(),compData:e.object({webhook:e.object({webhookSlug:e.string(),callbackUrl:e.string()})})}).passthrough(),R=e.object({compType:e.literal(o.TOPOLOGY),compId:e.string(),compName:e.string().optional(),compData:e.object({topology:e.object({topology:e.object({backendApiUrl:e.string().url()})})})}).passthrough(),K=e.object({appId:e.string(),components:e.array(e.discriminatedUnion("compType",[y,A,D,v,k,P,F,x,W,w,B,R]))});async function $(r){try{let i=await C.readFile(r,"utf-8");return K.parse(JSON.parse(i))}catch(i){let n=i instanceof Error?i.toString():JSON.stringify(i);throw new Error(`Failed to read App Manifest at ${r}: ${n}`)}}var I=(r,i)=>new URL(r,i).href,O=(r,i)=>{let{scriptAsset:n,iframeUrl:s}=r;return n?{scriptAsset:{...n,url:I(n.url,i)}}:s?{iframeUrl:I(s,i)}:r},L=(r,i)=>({template:r.template.replaceAll("__STATICS_BASE_URL_PLACEHOLDER__",i)}),z=(r,i,n)=>{let s=JSON.parse(JSON.stringify(r)),a=i.endsWith("/")?i:`${i}/`;return s.components.forEach(l=>{let{compData:t,compType:c}=l;c===o.BACK_OFFICE_PAGE&&(t.backOfficePage={...t.backOfficePage,...O(t.backOfficePage,a)}),c===o.BACK_OFFICE_EXTENSION&&(t.backOfficeExtension.widget={...t.backOfficeExtension.widget,...O(t.backOfficeExtension.widget,a)}),c===o.BACK_OFFICE_EXTENSION_WIDGET&&(t.backOfficeExtensionWidget={...t.backOfficeExtensionWidget,...O(t.backOfficeExtensionWidget,a)}),c===o.BACK_OFFICE_MODAL&&(t.backOfficeModal={...t.backOfficeModal,...O(t.backOfficeModal,a)}),c===o.EMBEDDED_SCRIPT&&(t.embeddedScriptComponentData={...t.embeddedScriptComponentData,...L(t.embeddedScriptComponentData,a)}),c===o.CUSTOM_ELEMENT_WIDGET&&(t.customElementWidget={...t.customElementWidget,widgetData:{...t.customElementWidget.widgetData,scriptUrl:I(t.customElementWidget.widgetData.scriptUrl,a)},behaviors:{...t.customElementWidget.behaviors,...t.customElementWidget.behaviors.settings?{settings:{settingsUrl:I(t.customElementWidget.behaviors.settings.settingsUrl,a)}}:{}}}),c===o.WEBHOOK&&n&&(t.webhook={...t.webhook,callbackUrl:`${n}/webhooks`})}),s},Z=(r,i)=>{let{baseApiUrl:n,id:s}=i;if(!s&&!n)return r;let a=JSON.parse(JSON.stringify(r));return a.components.forEach(l=>{l.compType===o.TOPOLOGY&&(s&&(l.compId=s),n&&(l.compData.topology.topology.backendApiUrl=n))}),a};export{$ as a,z as b,Z as c};
4
- //# sourceMappingURL=chunk-525O5S55.js.map
3
+ import{A as N,D as f,E,v as o,w as u,x as h,y as m,z as p}from"./chunk-SEGEUJOD.js";import{n as e}from"./chunk-HAYBGBEA.js";import{h as S}from"./chunk-V4TR6DCM.js";S();import C from"node:fs/promises";var g=e.object({errorReporting:e.object({url:e.string().optional(),artifact:e.object({fullArtifactId:e.string().max(255).min(1),version:e.string().max(255).min(1)}).optional()}).optional()}),d=e.object({iframeUrl:e.string().optional(),scriptAsset:e.object({exportedName:e.string(),containerId:e.string(),url:e.string(),scriptType:e.string().optional()}).optional()}),_=e.object({hostingPlatform:e.string(),fullPage:e.boolean().nullish(),hideInSidebar:e.boolean().nullish(),priority:e.number().nullish(),routePath:e.string().nullish(),title:e.string(),pageCategoryId:e.string().uuid().nullish(),activeSidebarPageId:e.string().nullish(),requiredPermission:e.string().nullish(),previousRoutePaths:e.array(e.string()).nullish()}).merge(g).merge(d).passthrough(),j=e.object({width:e.number().nullish(),height:e.number().nullish()}).merge(d).passthrough(),b=e.object({appId:e.string(),componentId:e.string().uuid(),spec:e.string().min(1),variantValue:e.string()}).passthrough().optional(),y=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_PAGE),compData:e.object({backOfficePage:_}),compName:e.string().optional(),experiment:b}).passthrough(),A=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION),compData:e.object({backOfficeExtension:e.object({hostingPlatform:e.string(),extends:e.string(),title:e.string().nullish(),extensionType:e.literal(N.BACK_OFFICE_EXTENSION_WIDGET),requiredPermission:e.string().nullish(),widget:j}).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),D=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_WIDGET),compData:e.object({backOfficeExtensionWidget:e.object({hostingPlatform:e.string(),extends:e.string(),title:e.string().nullish(),description:e.string().optional(),requiredPermission:e.string().nullish(),width:e.number().nullish(),height:e.number().nullish()}).merge(d).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),v=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_MENU_ITEM),compData:e.object({backOfficeExtensionMenuItem:e.object({id:e.string().uuid(),title:e.string().min(1),subtitle:e.string().max(200).optional(),iconKey:e.string().min(3).max(50).optional(),extends:e.string().uuid(),action:e.object({navigateToPage:e.object({pageId:e.string().uuid(),relativeUrl:e.string().optional()}),openModal:e.object({componentId:e.string().uuid(),componentParams:e.record(e.string().min(1),e.string().min(1)).optional()})}).partial().superRefine((r,i)=>{!r.navigateToPage&&!r.openModal&&i.addIssue({code:e.ZodIssueCode.custom,message:"action must have either navigateToPage or openModal"})}),sentryDSN:e.string().optional(),requiredPermission:e.string().optional()}).merge(d).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),k=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_MODAL),compData:e.object({backOfficeModal:e.object({hostingPlatform:e.string(),title:e.string().nullish(),requiredPermission:e.string().nullish(),width:e.number().nullish(),height:e.number().nullish()}).merge(d).merge(g).passthrough()}),compName:e.string().optional(),experiment:b}).passthrough(),P=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_SIDEBAR_CATEGORY),compData:e.object({backOfficeSidebarCategory:e.object({hostingPlatform:e.string(),title:e.string(),priority:e.number().nullish()})}),compName:e.string().optional()}).passthrough(),F=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_WIDGET),compName:e.string().optional()}).passthrough(),x=e.object({compId:e.string(),compType:e.literal(o.BACK_OFFICE_EXTENSION_CONTAINER),compName:e.string().optional()}).passthrough(),T=e.object({packageName:e.string().min(2).max(100),version:e.number().int().min(0)}),M=e.object({template:e.string(),name:e.string(),pages:e.enum([h.NONE_PAGES,h.ONCE,h.SPECIFIC_PAGES]),placement:e.enum([m.HEAD,m.BODY_START,m.BODY_END,m.NONE_PLACEMENT]),connectArticleUrl:e.string(),embedCategory:e.enum([p.UNKNOWN,p.FUNCTIONAL,p.ESSENTIAL,p.ANALYTICS,p.ADVERTISING]),loadOnce:e.boolean(),allowedForFreeSite:e.boolean(),dependencies:e.array(T)}),W=e.object({compId:e.string(),compType:e.literal(o.EMBEDDED_SCRIPT),compName:e.string().optional(),compData:e.object({embeddedScriptComponentData:M})}).passthrough(),U=e.object({base:e.object({id:e.string().optional(),name:e.string()}),installation:e.object({base:e.object({autoAdd:e.boolean().optional(),essential:e.boolean().optional(),maxInstances:e.number().optional()}).optional(),widget:e.object({default_preset:e.object({desktop_preset_id:e.string().optional(),tablet_preset_id:e.string().optional(),mobile_preset_id:e.string().optional()}).optional(),region:e.enum([u.BODY,u.FOOTER,u.HEADER])}).optional()}).optional(),widgetData:e.object({tagName:e.string(),scriptUrl:e.string(),scriptType:e.enum([f.NONE,f.COMMON_JS,f.ES_MODULE])}),behaviors:e.object({settings:e.object({settingsUrl:e.string()}).optional(),dashboard:e.object({dashboardPageComponentId:e.string()}).optional()}),size:e.object({width:e.object({allowStretch:e.boolean().optional(),defaultWidth:e.number().optional(),stretchByDefault:e.boolean().optional()}),height:e.object({defaultHeight:e.number(),heightMode:e.enum([E.AUTO,E.FIXED,E.UNKNOWN]).optional()})}),dependencies:e.array(T)}),w=e.object({compId:e.string(),compType:e.literal(o.CUSTOM_ELEMENT_WIDGET),compName:e.string().optional(),compData:e.object({customElementWidget:U})}).passthrough(),B=e.object({compId:e.string().uuid(),compType:e.literal(o.WEBHOOK),compName:e.string().optional(),compData:e.object({webhook:e.object({webhookSlug:e.string(),callbackUrl:e.string()})})}).passthrough(),R=e.object({compType:e.literal(o.TOPOLOGY),compId:e.string(),compName:e.string().optional(),compData:e.object({topology:e.object({topology:e.object({backendApiUrl:e.string().url()})})})}).passthrough(),K=e.object({appId:e.string(),components:e.array(e.discriminatedUnion("compType",[y,A,D,v,k,P,F,x,W,w,B,R]))});async function $(r){try{let i=await C.readFile(r,"utf-8");return K.parse(JSON.parse(i))}catch(i){let n=i instanceof Error?i.toString():JSON.stringify(i);throw new Error(`Failed to read App Manifest at ${r}: ${n}`)}}var I=(r,i)=>new URL(r,i).href,O=(r,i)=>{let{scriptAsset:n,iframeUrl:s}=r;return n?{scriptAsset:{...n,url:I(n.url,i)}}:s?{iframeUrl:I(s,i)}:r},L=(r,i)=>({template:r.template.replaceAll("__STATICS_BASE_URL_PLACEHOLDER__",i)}),z=(r,i,n)=>{let s=JSON.parse(JSON.stringify(r)),a=i.endsWith("/")?i:`${i}/`;return s.components.forEach(l=>{let{compData:t,compType:c}=l;c===o.BACK_OFFICE_PAGE&&(t.backOfficePage={...t.backOfficePage,...O(t.backOfficePage,a)}),c===o.BACK_OFFICE_EXTENSION&&(t.backOfficeExtension.widget={...t.backOfficeExtension.widget,...O(t.backOfficeExtension.widget,a)}),c===o.BACK_OFFICE_EXTENSION_WIDGET&&(t.backOfficeExtensionWidget={...t.backOfficeExtensionWidget,...O(t.backOfficeExtensionWidget,a)}),c===o.BACK_OFFICE_MODAL&&(t.backOfficeModal={...t.backOfficeModal,...O(t.backOfficeModal,a)}),c===o.EMBEDDED_SCRIPT&&(t.embeddedScriptComponentData={...t.embeddedScriptComponentData,...L(t.embeddedScriptComponentData,a)}),c===o.CUSTOM_ELEMENT_WIDGET&&(t.customElementWidget={...t.customElementWidget,widgetData:{...t.customElementWidget.widgetData,scriptUrl:I(t.customElementWidget.widgetData.scriptUrl,a)},behaviors:{...t.customElementWidget.behaviors,...t.customElementWidget.behaviors.settings?{settings:{settingsUrl:I(t.customElementWidget.behaviors.settings.settingsUrl,a)}}:{}}}),c===o.WEBHOOK&&n&&(t.webhook={...t.webhook,callbackUrl:`${n}/webhooks`})}),s},Z=(r,i)=>{let{baseApiUrl:n,id:s}=i;if(!s&&!n)return r;let a=JSON.parse(JSON.stringify(r));return a.components.forEach(l=>{l.compType===o.TOPOLOGY&&(s&&(l.compId=s),n&&(l.compData.topology.topology.backendApiUrl=n))}),a};export{$ as a,z as b,Z as c};
4
+ //# sourceMappingURL=chunk-4VHD7OBV.js.map
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{a as n}from"./chunk-3ZWMQHFG.js";import{C as t}from"./chunk-QVFKOTXV.js";import{h as r}from"./chunk-V4TR6DCM.js";r();function s(){let e=t(n);return e.t.bind(e)}export{s as a};
4
+ //# sourceMappingURL=chunk-5IJKDSHA.js.map
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{$ as r,Ra as p}from"./chunk-SEGEUJOD.js";import{a as D}from"./chunk-HAYBGBEA.js";import{e as l,h as a}from"./chunk-V4TR6DCM.js";a();var u=l(D(),1);import{useCallback as d,useMemo as i}from"react";var E=(0,u.typeCatalog)(r);function P(){let{model:n}=p(),e=i(()=>{let o=n.components.reduce((s,t)=>(s[t.type].push(t),s),{DashboardPage:[],DashboardSidebarCategory:[],EmbeddedScript:[],CustomElement:[],DashboardPlugin:[],DashboardMenuPlugin:[],DashboardModal:[],Topology:[]});return o.DashboardPage=o.DashboardPage?.sort((s,t)=>s.route.localeCompare(t.route)),o},[n.components]),h=i(()=>[...e.DashboardPage,...e.DashboardMenuPlugin,...e.DashboardPlugin,...e.DashboardModal],[e]),m=d(o=>o?e[o].length>0:n.components.length>0,[e,n.components]),b=d(o=>e[o],[e]);return{dashboardExtensions:h,getExtensions:b,hasExtensions:m}}export{P as a};
4
+ //# sourceMappingURL=chunk-AHUF5IOW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/extensions/useExtensions.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { typeCatalog } from 'variant';\nimport { useProjectModel } from '../../model.js';\nimport { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\n\nconst DevCenterComponentTypes = typeCatalog(DevCenterComponent);\nexport type ExtensionType = keyof typeof DevCenterComponentTypes;\ntype ExtensionsMap = { [K in ExtensionType]: DevCenterComponent<K>[] };\n\nexport type DashboardExtension =\n | 'DashboardPage'\n | 'DashboardMenuPlugin'\n | 'DashboardPlugin'\n | 'DashboardModal';\n\nexport function useExtensions() {\n const { model } = useProjectModel();\n const extensionsByType = useMemo(() => {\n const extensionsMap = model.components.reduce<ExtensionsMap>(\n (acc, component) => {\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n acc[component.type].push(component as any);\n return acc;\n },\n {\n DashboardPage: [],\n DashboardSidebarCategory: [],\n EmbeddedScript: [],\n CustomElement: [],\n DashboardPlugin: [],\n DashboardMenuPlugin: [],\n DashboardModal: [],\n Topology: [],\n }\n );\n extensionsMap.DashboardPage = extensionsMap.DashboardPage?.sort((a, b) =>\n a.route.localeCompare(b.route)\n );\n return extensionsMap;\n }, [model.components]);\n\n const dashboardExtensions = useMemo(\n () => [\n ...extensionsByType.DashboardPage,\n ...extensionsByType.DashboardMenuPlugin,\n ...extensionsByType.DashboardPlugin,\n ...extensionsByType.DashboardModal,\n ],\n [extensionsByType]\n );\n\n const hasExtensions = useCallback(\n (extensionType?: ExtensionType) =>\n extensionType\n ? extensionsByType[extensionType].length > 0\n : model.components.length > 0,\n [extensionsByType, model.components]\n );\n\n const getExtensions = useCallback(\n <T extends ExtensionType>(extensionType: T) =>\n extensionsByType[extensionType],\n [extensionsByType]\n );\n\n return {\n dashboardExtensions,\n getExtensions,\n hasExtensions,\n };\n}\n"],"mappings":";;uIAAAA,IACA,IAAAC,EAA4B,SAD5B,OAAS,eAAAC,EAAa,WAAAC,MAAe,QAKrC,IAAMC,KAA0B,eAAYC,CAAkB,EAUvD,SAASC,GAAgB,CAC9B,GAAM,CAAE,MAAAC,CAAM,EAAIC,EAAgB,EAC5BC,EAAmBC,EAAQ,IAAM,CACrC,IAAMC,EAAgBJ,EAAM,WAAW,OACrC,CAACK,EAAKC,KAEJD,EAAIC,EAAU,IAAI,EAAE,KAAKA,CAAgB,EAClCD,GAET,CACE,cAAe,CAAC,EAChB,yBAA0B,CAAC,EAC3B,eAAgB,CAAC,EACjB,cAAe,CAAC,EAChB,gBAAiB,CAAC,EAClB,oBAAqB,CAAC,EACtB,eAAgB,CAAC,EACjB,SAAU,CAAC,CACb,CACF,EACA,OAAAD,EAAc,cAAgBA,EAAc,eAAe,KAAK,CAACG,EAAGC,IAClED,EAAE,MAAM,cAAcC,EAAE,KAAK,CAC/B,EACOJ,CACT,EAAG,CAACJ,EAAM,UAAU,CAAC,EAEfS,EAAsBN,EAC1B,IAAM,CACJ,GAAGD,EAAiB,cACpB,GAAGA,EAAiB,oBACpB,GAAGA,EAAiB,gBACpB,GAAGA,EAAiB,cACtB,EACA,CAACA,CAAgB,CACnB,EAEMQ,EAAgBC,EACnBC,GACCA,EACIV,EAAiBU,CAAa,EAAE,OAAS,EACzCZ,EAAM,WAAW,OAAS,EAChC,CAACE,EAAkBF,EAAM,UAAU,CACrC,EAEMa,EAAgBF,EACMC,GACxBV,EAAiBU,CAAa,EAChC,CAACV,CAAgB,CACnB,EAEA,MAAO,CACL,oBAAAO,EACA,cAAAI,EACA,cAAAH,CACF,CACF","names":["init_esm_shims","import_variant","useCallback","useMemo","DevCenterComponentTypes","DevCenterComponent","useExtensions","model","useProjectModel","extensionsByType","useMemo","extensionsMap","acc","component","a","b","dashboardExtensions","hasExtensions","useCallback","extensionType","getExtensions"]}
@@ -0,0 +1,4 @@
1
+ import { createRequire as _createRequire } from 'node:module';
2
+ const require = _createRequire(import.meta.url);
3
+ import{Oa as m,Ra as c}from"./chunk-SEGEUJOD.js";import{a as i}from"./chunk-HAYBGBEA.js";import{e as l,h as a}from"./chunk-V4TR6DCM.js";a();var r=l(i(),1);import{useCallback as s,useMemo as k}from"react";var g=(0,r.typeCatalog)(m);function b(){let{model:p}=c(),t=k(()=>{let e=p.backendComponents.reduce((n,o)=>(n[o.type].push(o),n),{Api:[],Event:[],ServicePlugin:[]});return e.Api=e.Api.sort((n,o)=>n.title.localeCompare(o.title)),e.Event=e.Event.sort((n,o)=>n.title.localeCompare(o.title)),e.ServicePlugin=e.ServicePlugin.sort((n,o)=>n.componentName.localeCompare(o.componentName)),e},[p.backendComponents]),C=s(e=>e?t[e].length>0:p.backendComponents.length>0,[t,p.backendComponents]),d=s(e=>t[e],[t]);return{backendComponentsByType:t,getBackendComponent:d,hasComponentByType:C}}export{b as a};
4
+ //# sourceMappingURL=chunk-BSR2JA4S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/backend/useBackendComponents.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { typeCatalog } from 'variant';\nimport { BackendComponent } from './definitions.js';\nimport { useProjectModel } from '../model.js';\n\nconst BackendComponentsTypes = typeCatalog(BackendComponent);\nexport type BackendComponentType = keyof typeof BackendComponentsTypes;\ntype BackendComponentMap = {\n [T in BackendComponentType]: BackendComponent<T>[];\n};\n\nexport function useBackendComponents() {\n const { model } = useProjectModel();\n\n const backendComponentsByType = useMemo(() => {\n const backendComponentsMap =\n model.backendComponents.reduce<BackendComponentMap>(\n (acc, backendComponent) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n acc[backendComponent.type].push(backendComponent as any);\n return acc;\n },\n {\n Api: [],\n Event: [],\n ServicePlugin: [],\n }\n );\n backendComponentsMap.Api = backendComponentsMap.Api.sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n backendComponentsMap.Event = backendComponentsMap.Event.sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n backendComponentsMap.ServicePlugin =\n backendComponentsMap.ServicePlugin.sort((a, b) =>\n a.componentName.localeCompare(b.componentName)\n );\n return backendComponentsMap;\n }, [model.backendComponents]);\n\n const hasComponentByType = useCallback(\n (componentType?: BackendComponentType) =>\n componentType\n ? backendComponentsByType[componentType].length > 0\n : model.backendComponents.length > 0,\n [backendComponentsByType, model.backendComponents]\n );\n\n const getBackendComponent = useCallback(\n <T extends BackendComponentType>(componentType: T) =>\n backendComponentsByType[componentType],\n [backendComponentsByType]\n );\n\n return {\n backendComponentsByType,\n getBackendComponent,\n hasComponentByType,\n };\n}\n"],"mappings":";;wIAAAA,IACA,IAAAC,EAA4B,SAD5B,OAAS,eAAAC,EAAa,WAAAC,MAAe,QAKrC,IAAMC,KAAyB,eAAYC,CAAgB,EAMpD,SAASC,GAAuB,CACrC,GAAM,CAAE,MAAAC,CAAM,EAAIC,EAAgB,EAE5BC,EAA0BC,EAAQ,IAAM,CAC5C,IAAMC,EACJJ,EAAM,kBAAkB,OACtB,CAACK,EAAKC,KAEJD,EAAIC,EAAiB,IAAI,EAAE,KAAKA,CAAuB,EAChDD,GAET,CACE,IAAK,CAAC,EACN,MAAO,CAAC,EACR,cAAe,CAAC,CAClB,CACF,EACF,OAAAD,EAAqB,IAAMA,EAAqB,IAAI,KAAK,CAACG,EAAGC,IAC3DD,EAAE,MAAM,cAAcC,EAAE,KAAK,CAC/B,EAEAJ,EAAqB,MAAQA,EAAqB,MAAM,KAAK,CAACG,EAAGC,IAC/DD,EAAE,MAAM,cAAcC,EAAE,KAAK,CAC/B,EAEAJ,EAAqB,cACnBA,EAAqB,cAAc,KAAK,CAACG,EAAGC,IAC1CD,EAAE,cAAc,cAAcC,EAAE,aAAa,CAC/C,EACKJ,CACT,EAAG,CAACJ,EAAM,iBAAiB,CAAC,EAEtBS,EAAqBC,EACxBC,GACCA,EACIT,EAAwBS,CAAa,EAAE,OAAS,EAChDX,EAAM,kBAAkB,OAAS,EACvC,CAACE,EAAyBF,EAAM,iBAAiB,CACnD,EAEMY,EAAsBF,EACOC,GAC/BT,EAAwBS,CAAa,EACvC,CAACT,CAAuB,CAC1B,EAEA,MAAO,CACL,wBAAAA,EACA,oBAAAU,EACA,mBAAAH,CACF,CACF","names":["init_esm_shims","import_variant","useCallback","useMemo","BackendComponentsTypes","BackendComponent","useBackendComponents","model","useProjectModel","backendComponentsByType","useMemo","backendComponentsMap","acc","backendComponent","a","b","hasComponentByType","useCallback","componentType","getBackendComponent"]}